From a1ba5af532261772bfd8b0b2c8267f65e814f997 Mon Sep 17 00:00:00 2001 From: Shinichi Okada <147320+shinokada@users.noreply.github.com> Date: Mon, 30 Sep 2024 08:48:53 +0200 Subject: [PATCH] chore: add todo list --- .changeset/metal-trees-camp.md | 8 +++ Todos.md | 3 ++ src/lib/avatar/Avatar.svelte | 3 +- src/lib/bottom-navigation/BottomNav.svelte | 2 + .../bottom-navigation/BottomNavItem.svelte | 31 ++++++----- src/lib/buttons/Button.svelte | 32 +++++------ src/lib/buttons/GradientButton.svelte | 5 +- src/lib/forms/CheckboxButton.svelte | 4 +- src/lib/forms/RadioButton.svelte | 2 +- src/lib/list-group/Listgroup.svelte | 1 - src/lib/modal/Modal.svelte | 38 ++++++------- src/lib/navbar/Menu.svelte | 16 ++++-- src/lib/navbar/NavBrand.svelte | 8 ++- src/lib/navbar/NavContainer.svelte | 2 +- src/lib/navbar/NavHamburger.svelte | 10 +++- src/lib/navbar/NavLi.svelte | 17 ++++-- src/lib/navbar/NavUl.svelte | 28 ++++++---- src/lib/navbar/Navbar.svelte | 2 +- src/lib/pagination/Pagination.svelte | 27 +++++++--- src/lib/pagination/PaginationItem.svelte | 23 ++++++-- src/lib/progress/Progressbar.svelte | 40 +++++++++----- src/lib/rating/Heart.svelte | 26 ++++++--- src/lib/rating/Rating.svelte | 4 +- src/lib/rating/RatingComment.svelte | 43 ++++++++------- src/lib/rating/Review.svelte | 21 +++++--- src/lib/rating/ScoreRating.svelte | 40 +++++++++----- src/lib/rating/Star.svelte | 25 ++++++--- src/lib/rating/Thumbup.svelte | 26 ++++++--- src/lib/sidebar/Sidebar.svelte | 20 ++++--- src/lib/sidebar/SidebarBrand.svelte | 16 ++++-- src/lib/sidebar/SidebarCta.svelte | 16 ++++-- src/lib/sidebar/SidebarDropdownItem.svelte | 19 +++++-- src/lib/sidebar/SidebarDropdownWrapper.svelte | 26 ++++++--- src/lib/sidebar/SidebarGroup.svelte | 13 +++-- src/lib/sidebar/SidebarItem.svelte | 26 ++++++--- src/lib/sidebar/SidebarWrapper.svelte | 7 ++- src/lib/skeleton/CardPlaceholder.svelte | 9 +++- src/lib/skeleton/ImagePlaceholder.svelte | 13 +++-- src/lib/skeleton/ListPlaceholder.svelte | 7 ++- src/lib/skeleton/Skeleton.svelte | 9 +++- .../skeleton/TestimonialPlaceholder.svelte | 7 ++- src/lib/skeleton/TextPlaceholder.svelte | 9 +++- src/lib/skeleton/VideoPlaceholder.svelte | 9 +++- src/lib/skeleton/WidgetPlaceholder.svelte | 7 ++- src/lib/speed-dial/SpeedDial.svelte | 39 ++++++++++---- src/lib/speed-dial/SpeedDialButton.svelte | 27 +++++++--- src/lib/spinner/Spinner.svelte | 22 +++++--- src/lib/steps/StepIndicator.svelte | 28 +++++++--- src/lib/table/Table.svelte | 53 +++++++++++++------ src/lib/table/TableBody.svelte | 9 +++- src/lib/table/TableBodyCell.svelte | 9 +++- src/lib/table/TableBodyRow.svelte | 7 ++- src/lib/table/TableHead.svelte | 10 +++- src/lib/table/TableHeadCell.svelte | 19 +++++-- src/lib/table/TableSearch.svelte | 40 +++++++++----- src/lib/tabs/TabItem.svelte | 22 +++++--- src/lib/tabs/Tabs.svelte | 24 ++++++--- src/lib/timeline/Activity.svelte | 9 +++- src/lib/timeline/ActivityItem.svelte | 30 +++++++---- src/lib/timeline/Group.svelte | 20 +++++-- src/lib/timeline/GroupItem.svelte | 25 ++++++--- src/lib/timeline/Timeline.svelte | 10 +++- src/lib/timeline/TimelineItem.svelte | 13 +++-- src/lib/toast/Toast.svelte | 44 ++++++++------- src/lib/toolbar/ToolbarButton.svelte | 30 ++++++++--- src/routes/layouts/ComponentsLayout.svelte | 4 +- 66 files changed, 836 insertions(+), 358 deletions(-) create mode 100644 .changeset/metal-trees-camp.md create mode 100644 Todos.md diff --git a/.changeset/metal-trees-camp.md b/.changeset/metal-trees-camp.md new file mode 100644 index 000000000..faba6ba1f --- /dev/null +++ b/.changeset/metal-trees-camp.md @@ -0,0 +1,8 @@ +--- +'flowbite-svelte': patch +--- + +types: component type updates +types: Button and ToolbarButton update for using anchor and button, HTMLAnchorAttributes, HTMLButtonAttributes +types: GradientButton uses import ButtonProps from "./Button.svelte" instead of using ComponentProps that does not work. + diff --git a/Todos.md b/Todos.md new file mode 100644 index 000000000..75e9e5a39 --- /dev/null +++ b/Todos.md @@ -0,0 +1,3 @@ +# TODO + +- type ElementType = 'a' | 'div'; type update for Avatar, DropdownItem, NavLi, PaginationItem. See Button, GradientButton and ToolbarButton \ No newline at end of file diff --git a/src/lib/avatar/Avatar.svelte b/src/lib/avatar/Avatar.svelte index c2238d568..e385762f5 100644 --- a/src/lib/avatar/Avatar.svelte +++ b/src/lib/avatar/Avatar.svelte @@ -1,12 +1,11 @@ diff --git a/src/lib/bottom-navigation/BottomNavItem.svelte b/src/lib/bottom-navigation/BottomNavItem.svelte index 3390ae0e4..d86974dba 100644 --- a/src/lib/bottom-navigation/BottomNavItem.svelte +++ b/src/lib/bottom-navigation/BottomNavItem.svelte @@ -3,25 +3,30 @@ import type { ButtonClassesTypes } from '../types'; import type { BottomNavType } from './BottomNav.svelte'; import { twMerge } from 'tailwind-merge'; - import type { HTMLAttributes } from 'svelte/elements'; + import type { HTMLButtonAttributes, HTMLAnchorAttributes } from 'svelte/elements'; - type ElementType = 'a' | 'button'; - - type DynamicElementProps = HTMLAttributes - - interface $$Props extends DynamicElementProps { + type CommonProps = { btnName?: string; appBtnPosition?: 'left' | 'middle' | 'right'; activeClass?: string; - href?: string; exact?: boolean; spanClass?: string; } + type AnchorProps = CommonProps & Omit & { + href?: string | undefined; + }; + + type ButtonProps = CommonProps & HTMLButtonAttributes & { + disabled?: HTMLButtonAttributes['disabled']; + }; + + type $$Props = AnchorProps | ButtonProps; + export let btnName: $$Props['btnName'] = ''; export let appBtnPosition: NonNullable<$$Props['appBtnPosition']> = 'middle'; export let activeClass: $$Props['activeClass'] = undefined; - export let href: NonNullable<$$Props['href']> = ''; + export let href: string = ''; export let exact: $$Props['exact'] = true; export let spanClass: $$Props['spanClass'] = ''; @@ -37,12 +42,12 @@ $: active = navUrl && exact ? href === navUrl : navUrl ? navUrl.startsWith(href) : false; const btnClasses: ButtonClassesTypes = { - default: 'inline-flex flex-col items-center justify-center px-5 hover:bg-gray-50 dark:hover:bg-gray-800 group', - border: 'inline-flex flex-col items-center justify-center px-5 border-gray-200 border-x hover:bg-gray-50 dark:hover:bg-gray-800 group dark:border-gray-600', + default: 'inline-flex flex-col items-center justify-center px-5 text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 group', + border: 'inline-flex flex-col items-center justify-center px-5 border-gray-200 border-x text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 group dark:border-gray-600', application: '', - pagination: 'inline-flex flex-col items-center justify-center px-5 hover:bg-gray-50 dark:hover:bg-gray-800 group', - group: 'inline-flex flex-col items-center justify-center p-4 hover:bg-gray-50 dark:hover:bg-gray-800 group', - card: 'inline-flex flex-col items-center justify-center px-5 hover:bg-gray-50 dark:hover:bg-gray-800 group', + pagination: 'inline-flex flex-col items-center justify-center px-5 text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 group', + group: 'inline-flex flex-col items-center justify-center p-4 text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 group', + card: 'inline-flex flex-col items-center justify-center px-5 text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 group', meeting: '', video: '' }; diff --git a/src/lib/buttons/Button.svelte b/src/lib/buttons/Button.svelte index cbc6ec24c..b5cadf5bd 100644 --- a/src/lib/buttons/Button.svelte +++ b/src/lib/buttons/Button.svelte @@ -2,40 +2,42 @@ import { twMerge } from 'tailwind-merge'; import { getContext } from 'svelte'; import type { SizeType } from '$lib/types'; - import type { HTMLButtonAttributes, HTMLAttributes } from 'svelte/elements'; + import type { HTMLButtonAttributes, HTMLAnchorAttributes } from 'svelte/elements'; - type ElementType = 'a' | 'button'; type ButtonColor = keyof typeof colorClasses; - type DynamicElementProps = HTMLAttributes - - interface $$Props extends DynamicElementProps { + type CommonProps = { pill?: boolean; outline?: boolean; size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; - href?: string; - type?: HTMLButtonAttributes['type']; color?: ButtonColor; shadow?: boolean; - tag?: string; + tag?: 'a' | 'button'; checked?: boolean; - disabled?: boolean; - target?: string; - rel?: string; - name?: string; } + type AnchorProps = CommonProps & Omit & { + href?: string | undefined; + }; + + type ButtonProps = CommonProps & HTMLButtonAttributes & { + disabled?: HTMLButtonAttributes['disabled']; + type?: HTMLButtonAttributes['type']; + }; + + type $$Props = AnchorProps | ButtonProps; + const group: SizeType = getContext('group'); export let pill: $$Props['pill'] = false; export let outline: $$Props['outline'] = false; export let size: NonNullable<$$Props['size']> = group ? 'sm' : 'md'; - export let href: $$Props['href'] = undefined; - export let type: $$Props['type'] = 'button'; + export let href: string | undefined = undefined; + export let type: HTMLButtonAttributes['type'] = 'button'; export let color: NonNullable<$$Props['color']> = group ? (outline ? 'dark' : 'alternative') : 'primary'; export let shadow: $$Props['shadow'] = false; export let tag: $$Props['tag'] = 'button'; export let checked: $$Props['checked'] = undefined; - export let disabled: $$Props['disabled'] = false; + export let disabled: HTMLButtonAttributes['disabled'] = false; const colorClasses = { alternative: 'text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 dark:bg-gray-800 dark:text-gray-400 hover:text-primary-700 focus-within:text-primary-700 dark:focus-within:text-white dark:hover:text-white dark:hover:bg-gray-700', diff --git a/src/lib/buttons/GradientButton.svelte b/src/lib/buttons/GradientButton.svelte index dca0ed1f9..0f033680e 100644 --- a/src/lib/buttons/GradientButton.svelte +++ b/src/lib/buttons/GradientButton.svelte @@ -1,14 +1,13 @@ -