flowbite-svelte 2.0.0-next.0 → 2.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion/theme.js +1 -1
- package/dist/command-palette/CommandPalette.svelte +1 -1
- package/dist/command-palette/CommandPalette.svelte.d.ts +1 -1
- package/dist/context.d.ts +3 -1
- package/dist/context.js +3 -0
- package/dist/datepicker/Datepicker.svelte +6 -2
- package/dist/datepicker/theme.js +5 -5
- package/dist/footer/theme.js +1 -1
- package/dist/forms/floating-label/FloatingLabelInput.svelte +6 -3
- package/dist/forms/input-addon/InputAddon.svelte +1 -1
- package/dist/forms/input-addon/InputAddon.svelte.d.ts +1 -1
- package/dist/forms/input-field/Input.svelte +14 -33
- package/dist/forms/label/Label.svelte +1 -1
- package/dist/forms/label/Label.svelte.d.ts +1 -1
- package/dist/forms/radio/Radio.svelte +4 -15
- package/dist/forms/range/Range.svelte +1 -1
- package/dist/forms/range/Range.svelte.d.ts +1 -1
- package/dist/forms/search/Search.svelte +8 -21
- package/dist/forms/search/Search.svelte.d.ts +1 -4
- package/dist/forms/select/MultiSelect.svelte +4 -11
- package/dist/forms/select/Select.svelte +4 -14
- package/dist/forms/tags/Tags.svelte +13 -32
- package/dist/forms/tags/Tags.svelte.d.ts +2 -4
- package/dist/forms/textarea/Textarea.svelte +12 -46
- package/dist/forms/textarea/Textarea.svelte.d.ts +1 -9
- package/dist/forms/timepicker/Timepicker.svelte +4 -4
- package/dist/forms/timepicker/Timepicker.svelte.d.ts +1 -1
- package/dist/forms/toggle/Toggle.svelte +6 -15
- package/dist/forms/toggle/Toggle.svelte.d.ts +1 -3
- package/dist/gallery/Gallery.svelte +5 -13
- package/dist/gallery/Gallery.svelte.d.ts +1 -2
- package/dist/gallery/theme.js +1 -1
- package/dist/indicator/Indicator.svelte +1 -1
- package/dist/indicator/Indicator.svelte.d.ts +1 -1
- package/dist/kanban/KanbanCard.svelte +1 -1
- package/dist/kanban/KanbanCard.svelte.d.ts +1 -1
- package/dist/kbd/Kbd.svelte +1 -1
- package/dist/kbd/Kbd.svelte.d.ts +1 -1
- package/dist/list-group/Listgroup.svelte +20 -8
- package/dist/list-group/Listgroup.svelte.d.ts +2 -3
- package/dist/list-group/ListgroupItem.svelte +14 -10
- package/dist/list-group/ListgroupItem.svelte.d.ts +4 -2
- package/dist/list-group/theme.d.ts +87 -29
- package/dist/list-group/theme.js +17 -18
- package/dist/mega-menu/MegaMenu.svelte +7 -16
- package/dist/mega-menu/MegaMenu.svelte.d.ts +1 -3
- package/dist/modal/Modal.svelte +7 -22
- package/dist/modal/Modal.svelte.d.ts +1 -5
- package/dist/modal/theme.d.ts +1 -0
- package/dist/modal/theme.js +2 -1
- package/dist/navbar/Menu.svelte +3 -4
- package/dist/navbar/Menu.svelte.d.ts +1 -2
- package/dist/navbar/NavBrand.svelte +1 -1
- package/dist/navbar/NavBrand.svelte.d.ts +1 -1
- package/dist/navbar/NavContainer.svelte +1 -1
- package/dist/navbar/NavContainer.svelte.d.ts +1 -1
- package/dist/navbar/NavHamburger.svelte +10 -16
- package/dist/navbar/NavHamburger.svelte.d.ts +1 -3
- package/dist/navbar/NavLi.svelte +8 -4
- package/dist/navbar/NavLi.svelte.d.ts +1 -1
- package/dist/navbar/NavUl.svelte +14 -31
- package/dist/navbar/NavUl.svelte.d.ts +1 -4
- package/dist/navbar/Navbar.svelte +9 -5
- package/dist/navbar/Navbar.svelte.d.ts +2 -2
- package/dist/navbar/index.d.ts +1 -0
- package/dist/navbar/index.js +1 -0
- package/dist/navbar/theme.d.ts +32 -1
- package/dist/navbar/theme.js +4 -1
- package/dist/pagination/Pagination.svelte +1 -1
- package/dist/pagination/Pagination.svelte.d.ts +1 -1
- package/dist/pagination/PaginationButton.svelte +1 -1
- package/dist/pagination/PaginationButton.svelte.d.ts +1 -1
- package/dist/pagination/PaginationItem.svelte +1 -1
- package/dist/pagination/PaginationItem.svelte.d.ts +1 -1
- package/dist/pagination/PaginationNav.svelte +10 -25
- package/dist/pagination/PaginationNav.svelte.d.ts +1 -5
- package/dist/popover/Popover.svelte +6 -15
- package/dist/popover/Popover.svelte.d.ts +1 -2
- package/dist/progress/Progressbar.svelte +1 -1
- package/dist/progress/Progressbar.svelte.d.ts +1 -1
- package/dist/progress/Progressradial.svelte +1 -1
- package/dist/progress/Progressradial.svelte.d.ts +1 -1
- package/dist/rating/AdvancedRating.svelte +8 -27
- package/dist/rating/AdvancedRating.svelte.d.ts +1 -6
- package/dist/rating/CustomIcon.svelte +4 -4
- package/dist/rating/CustomIcon.svelte.d.ts +2 -2
- package/dist/rating/Heart.svelte +4 -4
- package/dist/rating/Heart.svelte.d.ts +2 -2
- package/dist/rating/Rating.svelte +5 -13
- package/dist/rating/Rating.svelte.d.ts +1 -2
- package/dist/rating/RatingComment.svelte +1 -1
- package/dist/rating/RatingComment.svelte.d.ts +1 -1
- package/dist/rating/Review.svelte +13 -37
- package/dist/rating/Review.svelte.d.ts +1 -8
- package/dist/rating/ScoreRating.svelte +9 -8
- package/dist/rating/ScoreRating.svelte.d.ts +1 -1
- package/dist/rating/Star.svelte +4 -4
- package/dist/rating/Star.svelte.d.ts +2 -2
- package/dist/rating/Thumbup.svelte +4 -4
- package/dist/rating/Thumbup.svelte.d.ts +2 -2
- package/dist/scroll-spy/ScrollSpy.svelte +1 -1
- package/dist/scroll-spy/ScrollSpy.svelte.d.ts +1 -1
- package/dist/sidebar/Sidebar.svelte +9 -31
- package/dist/sidebar/Sidebar.svelte.d.ts +1 -5
- package/dist/sidebar/SidebarBrand.svelte +6 -20
- package/dist/sidebar/SidebarBrand.svelte.d.ts +1 -3
- package/dist/sidebar/SidebarButton.svelte +3 -2
- package/dist/sidebar/SidebarButton.svelte.d.ts +1 -1
- package/dist/sidebar/SidebarCta.svelte +6 -20
- package/dist/sidebar/SidebarCta.svelte.d.ts +1 -3
- package/dist/sidebar/SidebarDropdownWrapper.svelte +9 -44
- package/dist/sidebar/SidebarDropdownWrapper.svelte.d.ts +1 -5
- package/dist/sidebar/SidebarGroup.svelte +3 -4
- package/dist/sidebar/SidebarGroup.svelte.d.ts +1 -2
- package/dist/sidebar/SidebarItem.svelte +12 -10
- package/dist/sidebar/SidebarItem.svelte.d.ts +2 -5
- package/dist/sidebar/index.d.ts +1 -1
- package/dist/sidebar/index.js +1 -1
- package/dist/sidebar/theme.d.ts +41 -0
- package/dist/sidebar/theme.js +23 -3
- package/dist/skeleton/CardPlaceholder.svelte +1 -1
- package/dist/skeleton/CardPlaceholder.svelte.d.ts +1 -1
- package/dist/skeleton/ImagePlaceholder.svelte +1 -1
- package/dist/skeleton/ImagePlaceholder.svelte.d.ts +1 -1
- package/dist/skeleton/ListPlaceholder.svelte +1 -1
- package/dist/skeleton/ListPlaceholder.svelte.d.ts +1 -1
- package/dist/skeleton/Skeleton.svelte +1 -1
- package/dist/skeleton/Skeleton.svelte.d.ts +1 -1
- package/dist/skeleton/TestimonialPlaceholder.svelte +1 -1
- package/dist/skeleton/TestimonialPlaceholder.svelte.d.ts +1 -1
- package/dist/skeleton/TextPlaceholder.svelte +1 -1
- package/dist/skeleton/TextPlaceholder.svelte.d.ts +1 -1
- package/dist/skeleton/VideoPlaceholder.svelte +1 -1
- package/dist/skeleton/VideoPlaceholder.svelte.d.ts +1 -1
- package/dist/skeleton/WidgetPlaceholder.svelte +1 -1
- package/dist/skeleton/WidgetPlaceholder.svelte.d.ts +1 -1
- package/dist/speed-dial/SpeedDial.svelte +7 -19
- package/dist/speed-dial/SpeedDial.svelte.d.ts +1 -2
- package/dist/speed-dial/SpeedDialButton.svelte +12 -24
- package/dist/speed-dial/SpeedDialButton.svelte.d.ts +3 -4
- package/dist/speed-dial/SpeedDialTrigger.svelte +1 -1
- package/dist/speed-dial/SpeedDialTrigger.svelte.d.ts +1 -1
- package/dist/spinner/Spinner.svelte +1 -1
- package/dist/spinner/Spinner.svelte.d.ts +1 -1
- package/dist/split-pane/Divider.svelte +1 -1
- package/dist/split-pane/Divider.svelte.d.ts +1 -1
- package/dist/split-pane/Pane.svelte +1 -1
- package/dist/split-pane/Pane.svelte.d.ts +1 -1
- package/dist/split-pane/SplitPane.svelte +1 -1
- package/dist/split-pane/SplitPane.svelte.d.ts +1 -1
- package/dist/step-indicator/StepIndicator.svelte +1 -1
- package/dist/step-indicator/StepIndicator.svelte.d.ts +1 -1
- package/dist/stepper/BreadcrumbStepper.svelte +1 -1
- package/dist/stepper/BreadcrumbStepper.svelte.d.ts +1 -1
- package/dist/stepper/DetailedStepper.svelte +1 -1
- package/dist/stepper/DetailedStepper.svelte.d.ts +1 -1
- package/dist/stepper/ProgressStepper.svelte +1 -1
- package/dist/stepper/ProgressStepper.svelte.d.ts +1 -1
- package/dist/stepper/Stepper.svelte +1 -1
- package/dist/stepper/Stepper.svelte.d.ts +1 -1
- package/dist/stepper/TimelineStepper.svelte +1 -1
- package/dist/stepper/TimelineStepper.svelte.d.ts +1 -1
- package/dist/stepper/VerticalStepper.svelte +1 -1
- package/dist/stepper/VerticalStepper.svelte.d.ts +1 -1
- package/dist/table/Table.svelte +6 -17
- package/dist/table/Table.svelte.d.ts +1 -2
- package/dist/table/TableBody.svelte +1 -1
- package/dist/table/TableBody.svelte.d.ts +1 -1
- package/dist/table/TableBodyCell.svelte +1 -1
- package/dist/table/TableBodyCell.svelte.d.ts +1 -1
- package/dist/table/TableBodyRow.svelte +1 -1
- package/dist/table/TableBodyRow.svelte.d.ts +1 -1
- package/dist/table/TableHead.svelte +1 -1
- package/dist/table/TableHead.svelte.d.ts +1 -1
- package/dist/table/TableHeadCell.svelte +1 -1
- package/dist/table/TableHeadCell.svelte.d.ts +1 -1
- package/dist/table/TableSearch.svelte +10 -41
- package/dist/table/TableSearch.svelte.d.ts +1 -8
- package/dist/tabs/TabItem.svelte +1 -1
- package/dist/tabs/TabItem.svelte.d.ts +1 -1
- package/dist/tabs/Tabs.svelte +8 -15
- package/dist/tabs/Tabs.svelte.d.ts +1 -3
- package/dist/theme/themeUtils.d.ts +0 -10
- package/dist/theme/themeUtils.js +0 -67
- package/dist/theme/themes.d.ts +1 -1
- package/dist/theme/themes.js +1 -1
- package/dist/timeline/Activity.svelte +1 -1
- package/dist/timeline/Activity.svelte.d.ts +1 -1
- package/dist/timeline/ActivityItem.svelte +12 -46
- package/dist/timeline/ActivityItem.svelte.d.ts +1 -9
- package/dist/timeline/Group.svelte +7 -24
- package/dist/timeline/Group.svelte.d.ts +1 -4
- package/dist/timeline/GroupItem.svelte +11 -36
- package/dist/timeline/GroupItem.svelte.d.ts +1 -6
- package/dist/timeline/Timeline.svelte +1 -1
- package/dist/timeline/Timeline.svelte.d.ts +1 -1
- package/dist/timeline/TimelineItem.svelte +13 -60
- package/dist/timeline/TimelineItem.svelte.d.ts +1 -8
- package/dist/toast/Toast.svelte +6 -25
- package/dist/toast/Toast.svelte.d.ts +1 -3
- package/dist/toast/ToastContainer.svelte +1 -1
- package/dist/toast/ToastContainer.svelte.d.ts +1 -1
- package/dist/toolbar/Toolbar.svelte +1 -1
- package/dist/toolbar/Toolbar.svelte.d.ts +1 -1
- package/dist/toolbar/ToolbarButton.svelte +5 -4
- package/dist/toolbar/ToolbarButton.svelte.d.ts +2 -1
- package/dist/toolbar/ToolbarGroup.svelte +1 -1
- package/dist/toolbar/ToolbarGroup.svelte.d.ts +1 -1
- package/dist/toolbar/theme.js +1 -1
- package/dist/tooltip/Tooltip.svelte +1 -1
- package/dist/tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/types.d.ts +9 -144
- package/dist/typography/a/A.svelte +1 -1
- package/dist/typography/a/A.svelte.d.ts +1 -1
- package/dist/typography/blockquote/Blockquote.svelte +1 -1
- package/dist/typography/blockquote/Blockquote.svelte.d.ts +1 -1
- package/dist/typography/descriptionlist/DescriptionList.svelte +1 -1
- package/dist/typography/descriptionlist/DescriptionList.svelte.d.ts +1 -1
- package/dist/typography/heading/Heading.svelte +1 -1
- package/dist/typography/heading/Heading.svelte.d.ts +1 -1
- package/dist/typography/hr/Hr.svelte +11 -29
- package/dist/typography/hr/Hr.svelte.d.ts +2 -3
- package/dist/typography/img/Img.svelte +6 -21
- package/dist/typography/img/Img.svelte.d.ts +1 -3
- package/dist/typography/layout/Layout.svelte +1 -1
- package/dist/typography/layout/Layout.svelte.d.ts +1 -1
- package/dist/typography/list/Li.svelte +1 -1
- package/dist/typography/list/Li.svelte.d.ts +1 -1
- package/dist/typography/list/List.svelte +1 -1
- package/dist/typography/list/List.svelte.d.ts +1 -1
- package/dist/typography/mark/Mark.svelte +1 -1
- package/dist/typography/mark/Mark.svelte.d.ts +1 -1
- package/dist/typography/paragraph/P.svelte +1 -1
- package/dist/typography/paragraph/P.svelte.d.ts +1 -1
- package/dist/typography/secondary/Secondary.svelte +1 -1
- package/dist/typography/secondary/Secondary.svelte.d.ts +1 -1
- package/dist/typography/span/Span.svelte +1 -1
- package/dist/typography/span/Span.svelte.d.ts +1 -1
- package/dist/utils/Arrow.svelte +1 -1
- package/dist/utils/Arrow.svelte.d.ts +1 -1
- package/dist/utils/Popper.svelte +33 -4
- package/dist/utils/Popper.svelte.d.ts +1 -1
- package/dist/video/Video.svelte +1 -1
- package/dist/video/Video.svelte.d.ts +1 -1
- package/package.json +9 -7
package/dist/accordion/theme.js
CHANGED
|
@@ -39,7 +39,7 @@ export const accordionItem = tv({
|
|
|
39
39
|
content: "py-5 border-b border-default text-body"
|
|
40
40
|
},
|
|
41
41
|
false: {
|
|
42
|
-
button: "
|
|
42
|
+
button: "hover:text-heading hover:bg-neutral-secondary-medium",
|
|
43
43
|
contentWrapper: "border border-s-0 border-e-0 border-t-0 border-b-default",
|
|
44
44
|
content: "p-4 md:p-5"
|
|
45
45
|
}
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
@component
|
|
195
195
|
[Go to docs](https://flowbite-svelte.com/)
|
|
196
196
|
## Type
|
|
197
|
-
[CommandPaletteProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
197
|
+
[CommandPaletteProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L2119)
|
|
198
198
|
## Props
|
|
199
199
|
@prop open = $bindable(false)
|
|
200
200
|
@prop items = []
|
|
@@ -2,7 +2,7 @@ import type { CommandPaletteProps } from "../types";
|
|
|
2
2
|
/**
|
|
3
3
|
* [Go to docs](https://flowbite-svelte.com/)
|
|
4
4
|
* ## Type
|
|
5
|
-
* [CommandPaletteProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
5
|
+
* [CommandPaletteProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L2119)
|
|
6
6
|
* ## Props
|
|
7
7
|
* @prop open = $bindable(false)
|
|
8
8
|
* @prop items = []
|
package/dist/context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AccordionContextType, BottomNavContextType, CarouselContextType, DrawerContextType, DropdownContextType, PaginationContextType, ButtonToggleContextType, ListContextType, ToolbarContextType, ListGroupContextType, ButtonGroupContextType, NavbarState, NavbarBreakpoint, SidebarContextType, TableContextType, TabsContextType } from "./types";
|
|
1
|
+
import type { AccordionContextType, BottomNavContextType, CarouselContextType, DrawerContextType, DropdownContextType, PaginationContextType, ButtonToggleContextType, ListContextType, ToolbarContextType, ListGroupContextType, ButtonGroupContextType, NavbarState, NavbarBreakpoint, SidebarContextType, TableContextType, TabsContextType, SpeedCtxType } from "./types";
|
|
2
2
|
import type { SplitPaneContext } from "./types";
|
|
3
3
|
import type { ThemeConfig } from "./theme";
|
|
4
4
|
declare const getAccordionContext: () => AccordionContextType | undefined, setAccordionContext: (context: AccordionContextType) => AccordionContextType;
|
|
@@ -48,3 +48,5 @@ declare const getSplitPaneContext: () => SplitPaneContext | undefined, setSplitP
|
|
|
48
48
|
export { getSplitPaneContext, setSplitPaneContext };
|
|
49
49
|
declare const getTabsContext: () => TabsContextType | undefined, setTabsContext: (context: TabsContextType) => TabsContextType;
|
|
50
50
|
export { getTabsContext, setTabsContext };
|
|
51
|
+
declare const getSpeedDialContext: () => SpeedCtxType | undefined, setSpeedDialContext: (context: SpeedCtxType) => SpeedCtxType;
|
|
52
|
+
export { getSpeedDialContext, setSpeedDialContext };
|
package/dist/context.js
CHANGED
|
@@ -69,3 +69,6 @@ export { getSplitPaneContext, setSplitPaneContext };
|
|
|
69
69
|
// Tabs
|
|
70
70
|
const [getTabsContext, setTabsContext] = createSafeContext();
|
|
71
71
|
export { getTabsContext, setTabsContext };
|
|
72
|
+
// SpeedDial
|
|
73
|
+
const [getSpeedDialContext, setSpeedDialContext] = createSafeContext();
|
|
74
|
+
export { getSpeedDialContext, setSpeedDialContext };
|
|
@@ -438,9 +438,13 @@
|
|
|
438
438
|
{disabled}
|
|
439
439
|
aria-label={isOpen ? "Close date picker" : "Open date picker"}
|
|
440
440
|
>
|
|
441
|
-
<svg class="h-4 w-4
|
|
441
|
+
<svg class="text-body h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
|
442
442
|
<path
|
|
443
|
-
|
|
443
|
+
stroke="currentColor"
|
|
444
|
+
stroke-linecap="round"
|
|
445
|
+
stroke-linejoin="round"
|
|
446
|
+
stroke-width="2"
|
|
447
|
+
d="M4 10h16m-8-3V4M7 7V4m10 3V4M5 20h14a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1Zm3-7h.01v.01H8V13Zm4 0h.01v.01H12V13Zm4 0h.01v.01H16V13Zm-8 4h.01v.01H8V17Zm4 0h.01v.01H12V17Zm4 0h.01v.01H16V17Z"
|
|
444
448
|
></path>
|
|
445
449
|
</svg>
|
|
446
450
|
</button>
|
package/dist/datepicker/theme.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { tv } from "tailwind-variants";
|
|
2
2
|
export const datepicker = tv({
|
|
3
3
|
slots: {
|
|
4
|
-
base: "inline-block rounded-
|
|
5
|
-
input: "w-full rounded-
|
|
4
|
+
base: "inline-block rounded-base bg-white dark:bg-gray-700 shadow-lg p-4",
|
|
5
|
+
input: "w-full rounded-base border px-4 py-2 text-sm focus:ring-2 focus:outline-none outline-none dark:border-gray-600 dark:bg-gray-700 dark:text-white disabled:cursor-not-allowed disabled:opacity-50 border-gray-300 bg-gray-50 text-gray-900",
|
|
6
6
|
titleVariant: "mb-2 text-lg font-semibold text-gray-900 dark:text-white",
|
|
7
|
-
polite: "text-sm rounded-
|
|
7
|
+
polite: "text-sm rounded-base text-gray-900 dark:text-white bg-white dark:bg-gray-700 font-semibold py-2.5 px-5 hover:bg-gray-100 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-200",
|
|
8
8
|
button: "absolute inset-y-0 right-0 flex items-center px-3 text-gray-500 focus:outline-hidden dark:text-gray-400",
|
|
9
9
|
actionButtons: "mt-4 flex justify-between",
|
|
10
10
|
columnHeader: "text-center text-sm font-medium text-gray-500 dark:text-gray-400",
|
|
11
11
|
grid: "grid grid-cols-7 gap-1 w-64",
|
|
12
12
|
nav: "mb-4 flex items-center justify-between",
|
|
13
|
-
dayButton: "h-8 w-full block flex-1 leading-9 border-0 rounded-
|
|
14
|
-
monthButton: "rounded-
|
|
13
|
+
dayButton: "h-8 w-full block flex-1 leading-9 border-0 rounded-base cursor-pointer text-center font-semibold text-sm day p-0",
|
|
14
|
+
monthButton: "rounded-base px-3 py-2 text-sm hover:bg-gray-100 focus:ring-2 focus:ring-blue-500 dark:hover:bg-gray-700",
|
|
15
15
|
actionSlot: "",
|
|
16
16
|
monthBtnSelected: "bg-brand text-white",
|
|
17
17
|
monthBtn: "text-gray-700 dark:text-gray-300"
|
package/dist/footer/theme.js
CHANGED
|
@@ -3,7 +3,7 @@ export const footer = tv({
|
|
|
3
3
|
base: "bg-white dark:bg-gray-800",
|
|
4
4
|
variants: {
|
|
5
5
|
footerType: {
|
|
6
|
-
default: "p-4 rounded-
|
|
6
|
+
default: "p-4 rounded-base shadow md:flex md:items-center md:justify-between md:p-6",
|
|
7
7
|
sitemap: "bg-white dark:bg-gray-900",
|
|
8
8
|
socialmedia: "p-4 sm:p-6",
|
|
9
9
|
logo: "p-4 rounded-lg shadow md:px-6 md:py-8",
|
|
@@ -35,7 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
const { base, input, label, close, combo } = $derived(floatingLabelInput({ variant, size, validation, disabled, withIcon }));
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
// Track if clear button should be shown
|
|
39
|
+
const showClearButton = $derived(clearable && value !== undefined && value !== "");
|
|
40
|
+
|
|
41
|
+
const clearAll = (_event?: MouseEvent) => {
|
|
39
42
|
if (elementRef) {
|
|
40
43
|
elementRef.value = "";
|
|
41
44
|
value = "";
|
|
@@ -177,8 +180,8 @@
|
|
|
177
180
|
onblur={handleBlur}
|
|
178
181
|
onkeydown={handleKeydown}
|
|
179
182
|
/>
|
|
180
|
-
{#if
|
|
181
|
-
<CloseButton class={close({ class: clsx(theme?.close, styling?.close) })} color={clearableColor}
|
|
183
|
+
{#if showClearButton}
|
|
184
|
+
<CloseButton class={close({ class: clsx(theme?.close, styling?.close) })} color={clearableColor} ariaLabel="Clear search value" svgClass={clsx(styling?.svg)} />
|
|
182
185
|
{/if}
|
|
183
186
|
<label for={id} class={label({ class: clsx(theme?.label, styling?.label) })}>
|
|
184
187
|
{@render children()}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
@component
|
|
41
41
|
[Go to docs](https://flowbite-svelte.com/)
|
|
42
42
|
## Type
|
|
43
|
-
[InputAddonProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
43
|
+
[InputAddonProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L815)
|
|
44
44
|
## Props
|
|
45
45
|
@prop children
|
|
46
46
|
@prop class: className
|
|
@@ -2,7 +2,7 @@ import type { InputAddonProps } from "../..";
|
|
|
2
2
|
/**
|
|
3
3
|
* [Go to docs](https://flowbite-svelte.com/)
|
|
4
4
|
* ## Type
|
|
5
|
-
* [InputAddonProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
5
|
+
* [InputAddonProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L815)
|
|
6
6
|
* ## Props
|
|
7
7
|
* @prop children
|
|
8
8
|
* @prop class: className
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
import CloseButton from "../../utils/CloseButton.svelte";
|
|
7
7
|
import { input } from "./theme";
|
|
8
8
|
import { clampSize } from "./index";
|
|
9
|
-
import { getTheme
|
|
9
|
+
import { getTheme } from "../../theme/themeUtils";
|
|
10
10
|
import { createDismissableContext } from "../../utils/dismissable";
|
|
11
|
-
import { untrack } from "svelte";
|
|
12
11
|
|
|
13
12
|
let {
|
|
14
13
|
children,
|
|
@@ -21,23 +20,11 @@
|
|
|
21
20
|
color = "default",
|
|
22
21
|
class: className,
|
|
23
22
|
classes,
|
|
24
|
-
wrapperClass,
|
|
25
|
-
leftClass,
|
|
26
|
-
rightClass,
|
|
27
|
-
divClass,
|
|
28
|
-
clearableSvgClass,
|
|
29
23
|
clearableColor = "none",
|
|
30
|
-
clearableClass,
|
|
31
24
|
clearableOnClick,
|
|
32
25
|
data = [],
|
|
33
26
|
maxSuggestions = 5,
|
|
34
27
|
onSelect,
|
|
35
|
-
comboClass,
|
|
36
|
-
comboItemClass,
|
|
37
|
-
onInput,
|
|
38
|
-
onFocus,
|
|
39
|
-
onBlur,
|
|
40
|
-
onKeydown,
|
|
41
28
|
oninput,
|
|
42
29
|
onfocus,
|
|
43
30
|
onblur,
|
|
@@ -45,22 +32,16 @@
|
|
|
45
32
|
...restProps
|
|
46
33
|
}: InputProps<InputValue> = $props();
|
|
47
34
|
|
|
48
|
-
|
|
49
|
-
"Input",
|
|
50
|
-
untrack(() => ({ wrapperClass, leftClass, rightClass, divClass, clearableSvgClass, clearableClass, comboClass })),
|
|
51
|
-
{ wrapperClass: "wrapper", leftClass: "left", rightClass: "right", divClass: "div", clearableSvgClass: "svg", clearableClass: "close", comboClass: "comboItem" }
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
const styling = $derived(classes ?? { left: leftClass, right: rightClass, div: divClass, svg: clearableSvgClass, close: clearableClass, combo: comboClass, comboItem: comboItemClass });
|
|
35
|
+
const styling = $derived(classes);
|
|
55
36
|
|
|
56
37
|
const theme = $derived(getTheme("input"));
|
|
57
38
|
|
|
58
39
|
// onSelect is a custom combobox selection handler that takes a string
|
|
59
|
-
//
|
|
60
|
-
const resolvedOnInput = $derived(oninput
|
|
61
|
-
const resolvedOnFocus = $derived(onfocus
|
|
62
|
-
const resolvedOnBlur = $derived(onblur
|
|
63
|
-
const resolvedOnKeydown = $derived(onkeydown
|
|
40
|
+
// Derive event handler props (using lowercase DOM event names: oninput, onfocus, onblur, onkeydown)
|
|
41
|
+
const resolvedOnInput = $derived(oninput);
|
|
42
|
+
const resolvedOnFocus = $derived(onfocus);
|
|
43
|
+
const resolvedOnBlur = $derived(onblur);
|
|
44
|
+
const resolvedOnKeydown = $derived(onkeydown);
|
|
64
45
|
|
|
65
46
|
// Automatically enable combobox when data is provided
|
|
66
47
|
const isCombobox = $derived(Array.isArray(data) && data.length > 0);
|
|
@@ -256,21 +237,21 @@
|
|
|
256
237
|
{/if}
|
|
257
238
|
|
|
258
239
|
{#if isCombobox || right || left || clearable}
|
|
259
|
-
<div class={base({ class: clsx(theme?.base, styling
|
|
240
|
+
<div class={base({ class: clsx(theme?.base, styling?.div) })}>
|
|
260
241
|
{#if left}
|
|
261
|
-
<div class={leftCls({ class: clsx(theme?.left, styling
|
|
242
|
+
<div class={leftCls({ class: clsx(theme?.left, styling?.left) })}>
|
|
262
243
|
{@render left()}
|
|
263
244
|
</div>
|
|
264
245
|
{/if}
|
|
265
246
|
{@render inputContent(true)}
|
|
266
247
|
{#if right}
|
|
267
|
-
<div class={rightCls({ class: clsx(theme?.right, styling
|
|
248
|
+
<div class={rightCls({ class: clsx(theme?.right, styling?.right) })}>
|
|
268
249
|
{@render right()}
|
|
269
250
|
</div>
|
|
270
251
|
{/if}
|
|
271
252
|
|
|
272
253
|
{#if isCombobox && isFocused && filteredSuggestions.length > 0}
|
|
273
|
-
<div class={combo({ class: clsx(theme?.combo, styling
|
|
254
|
+
<div class={combo({ class: clsx(theme?.combo, styling?.combo) })}>
|
|
274
255
|
{#each filteredSuggestions as item, i (item)}
|
|
275
256
|
<button
|
|
276
257
|
type="button"
|
|
@@ -278,7 +259,7 @@
|
|
|
278
259
|
onclick={() => selectItem(item)}
|
|
279
260
|
onmouseenter={() => (selectedIndex = i)}
|
|
280
261
|
>
|
|
281
|
-
<p class={comboItem({ class: clsx(theme?.comboItem, styling
|
|
262
|
+
<p class={comboItem({ class: clsx(theme?.comboItem, styling?.comboItem) })}>{item}</p>
|
|
282
263
|
</button>
|
|
283
264
|
{/each}
|
|
284
265
|
</div>
|
|
@@ -300,10 +281,10 @@
|
|
|
300
281
|
onfocus={handleFocus}
|
|
301
282
|
onblur={handleBlur}
|
|
302
283
|
onkeydown={handleKeydown}
|
|
303
|
-
class={
|
|
284
|
+
class={clsx(!wrapped && base(), inputCls({ class: clsx(theme?.input, className) }))}
|
|
304
285
|
/>
|
|
305
286
|
{#if value !== undefined && value !== "" && clearable}
|
|
306
|
-
<CloseButton class={close({ class: clsx(theme?.close, styling
|
|
287
|
+
<CloseButton class={close({ class: clsx(theme?.close, styling?.close) })} color={clearableColor} aria-label="Clear search value" svgClass={clsx(styling?.svg)} />
|
|
307
288
|
{/if}
|
|
308
289
|
{/if}
|
|
309
290
|
{/snippet}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
@component
|
|
24
24
|
[Go to docs](https://flowbite-svelte.com/)
|
|
25
25
|
## Type
|
|
26
|
-
[LabelProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
26
|
+
[LabelProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L830)
|
|
27
27
|
## Props
|
|
28
28
|
@prop children
|
|
29
29
|
@prop color = "gray"
|
|
@@ -2,7 +2,7 @@ import type { LabelProps } from "../..";
|
|
|
2
2
|
/**
|
|
3
3
|
* [Go to docs](https://flowbite-svelte.com/)
|
|
4
4
|
* ## Type
|
|
5
|
-
* [LabelProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
5
|
+
* [LabelProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L830)
|
|
6
6
|
* ## Props
|
|
7
7
|
* @prop children
|
|
8
8
|
* @prop color = "gray"
|
|
@@ -4,40 +4,29 @@
|
|
|
4
4
|
import clsx from "clsx";
|
|
5
5
|
import type { RadioProps } from "../..";
|
|
6
6
|
import Label from "../label/Label.svelte";
|
|
7
|
-
import { getTheme
|
|
8
|
-
import { untrack } from "svelte";
|
|
7
|
+
import { getTheme } from "../../theme/themeUtils";
|
|
9
8
|
|
|
10
|
-
// remove inputClass in next major version
|
|
11
9
|
let {
|
|
12
10
|
children,
|
|
13
11
|
"aria-describedby": ariaDescribedby,
|
|
14
12
|
inline = false,
|
|
15
|
-
labelClass,
|
|
16
13
|
color = "brand",
|
|
17
14
|
custom = false,
|
|
18
15
|
group = $bindable<T>(),
|
|
19
16
|
value = $bindable<T>(),
|
|
20
|
-
class: className,
|
|
21
|
-
inputClass,
|
|
22
17
|
classes,
|
|
23
18
|
...restProps
|
|
24
19
|
}: RadioProps<T> = $props();
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
"Radio",
|
|
28
|
-
untrack(() => ({ inputClass, labelClass })),
|
|
29
|
-
{ inputClass: "class", labelClass: "label" }
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
const styling = $derived(classes ?? { label: labelClass });
|
|
21
|
+
const styling = $derived(classes);
|
|
33
22
|
|
|
34
23
|
const theme = $derived(getTheme("radio"));
|
|
35
24
|
|
|
36
25
|
const { input, label } = $derived(radio({ color, tinted: !!getContext("background"), custom, inline }));
|
|
37
26
|
</script>
|
|
38
27
|
|
|
39
|
-
<Label class={label({ class: clsx(theme?.label, styling
|
|
40
|
-
<input type="radio" bind:group {value} aria-describedby={ariaDescribedby} {...restProps} class={input({ class: clsx(theme?.input,
|
|
28
|
+
<Label class={label({ class: clsx(theme?.label, styling?.label) })}>
|
|
29
|
+
<input type="radio" bind:group {value} aria-describedby={ariaDescribedby} {...restProps} class={input({ class: clsx(theme?.input, styling?.input) })} />
|
|
41
30
|
{@render children?.()}
|
|
42
31
|
</Label>
|
|
43
32
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
@component
|
|
18
18
|
[Go to docs](https://flowbite-svelte.com/)
|
|
19
19
|
## Type
|
|
20
|
-
[RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
20
|
+
[RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L856)
|
|
21
21
|
## Props
|
|
22
22
|
@prop value = $bindable()
|
|
23
23
|
@prop appearance = "none"
|
|
@@ -2,7 +2,7 @@ import type { RangeProps } from "../..";
|
|
|
2
2
|
/**
|
|
3
3
|
* [Go to docs](https://flowbite-svelte.com/)
|
|
4
4
|
* ## Type
|
|
5
|
-
* [RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
5
|
+
* [RangeProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L856)
|
|
6
6
|
* ## Props
|
|
7
7
|
* @prop value = $bindable()
|
|
8
8
|
* @prop appearance = "none"
|
|
@@ -3,34 +3,24 @@
|
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import type { SearchProps } from "../..";
|
|
5
5
|
import CloseButton from "../../utils/CloseButton.svelte";
|
|
6
|
-
import { getTheme
|
|
6
|
+
import { getTheme } from "../../theme/themeUtils";
|
|
7
7
|
import { createDismissableContext } from "../../utils/dismissable";
|
|
8
|
-
import { untrack } from "svelte";
|
|
9
8
|
|
|
10
9
|
let {
|
|
11
10
|
children,
|
|
12
|
-
inputClass,
|
|
13
11
|
size,
|
|
14
12
|
placeholder = "Search",
|
|
15
13
|
value = $bindable(),
|
|
16
14
|
elementRef = $bindable(),
|
|
17
15
|
clearable = false,
|
|
18
|
-
clearableSvgClass,
|
|
19
16
|
clearableColor = "none",
|
|
20
|
-
clearableClass,
|
|
21
17
|
clearableOnClick,
|
|
22
18
|
class: className,
|
|
23
19
|
classes,
|
|
24
20
|
...restProps
|
|
25
21
|
}: SearchProps = $props();
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
"Search",
|
|
29
|
-
untrack(() => ({ inputClass, clearableSvgClass, clearableClass })),
|
|
30
|
-
{ inputClass: "input", clearableSvgClass: "svg", clearableClass: "close" }
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
const styling = $derived(classes ?? { input: inputClass, svg: clearableSvgClass, close: clearableClass });
|
|
23
|
+
const styling = $derived(classes);
|
|
34
24
|
|
|
35
25
|
const theme = $derived(getTheme("search"));
|
|
36
26
|
|
|
@@ -48,19 +38,19 @@
|
|
|
48
38
|
</script>
|
|
49
39
|
|
|
50
40
|
<div class={base({ class: clsx(theme?.base, className) })}>
|
|
51
|
-
<div class={left({ class: clsx(theme?.left,
|
|
52
|
-
<svg class={icon({ class: clsx(theme?.icon,
|
|
41
|
+
<div class={left({ class: clsx(theme?.left, styling?.left) })}>
|
|
42
|
+
<svg class={icon({ class: clsx(theme?.icon, styling?.icon) })} aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
|
|
53
43
|
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z" />
|
|
54
44
|
</svg>
|
|
55
45
|
</div>
|
|
56
|
-
<input type="search" bind:value bind:this={elementRef} class={inputCls({ class: clsx(theme?.input, styling
|
|
46
|
+
<input type="search" bind:value bind:this={elementRef} class={inputCls({ class: clsx(theme?.input, styling?.input) })} {placeholder} required {...restProps} />
|
|
57
47
|
{#if children}
|
|
58
|
-
<div class={content({ class: clsx(theme?.content,
|
|
48
|
+
<div class={content({ class: clsx(theme?.content, styling?.content) })}>
|
|
59
49
|
{@render children()}
|
|
60
50
|
</div>
|
|
61
51
|
{/if}
|
|
62
52
|
{#if value !== undefined && value !== "" && clearable}
|
|
63
|
-
<CloseButton class={close({ class: clsx(theme?.close, styling
|
|
53
|
+
<CloseButton class={close({ class: clsx(theme?.close, styling?.close) })} color={clearableColor} aria-label="Clear search value" svgClass={clsx(styling?.svg)} />
|
|
64
54
|
{/if}
|
|
65
55
|
</div>
|
|
66
56
|
|
|
@@ -68,18 +58,15 @@
|
|
|
68
58
|
@component
|
|
69
59
|
[Go to docs](https://flowbite-svelte.com/)
|
|
70
60
|
## Type
|
|
71
|
-
[SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
61
|
+
[SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L862)
|
|
72
62
|
## Props
|
|
73
63
|
@prop children
|
|
74
|
-
@prop inputClass
|
|
75
64
|
@prop size
|
|
76
65
|
@prop placeholder = "Search"
|
|
77
66
|
@prop value = $bindable()
|
|
78
67
|
@prop elementRef = $bindable()
|
|
79
68
|
@prop clearable = false
|
|
80
|
-
@prop clearableSvgClass
|
|
81
69
|
@prop clearableColor = "none"
|
|
82
|
-
@prop clearableClass
|
|
83
70
|
@prop clearableOnClick
|
|
84
71
|
@prop class: className
|
|
85
72
|
@prop classes
|
|
@@ -2,18 +2,15 @@ import type { SearchProps } from "../..";
|
|
|
2
2
|
/**
|
|
3
3
|
* [Go to docs](https://flowbite-svelte.com/)
|
|
4
4
|
* ## Type
|
|
5
|
-
* [SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#
|
|
5
|
+
* [SearchProps](https://github.com/themesberg/flowbite-svelte/blob/main/src/lib/types.ts#L862)
|
|
6
6
|
* ## Props
|
|
7
7
|
* @prop children
|
|
8
|
-
* @prop inputClass
|
|
9
8
|
* @prop size
|
|
10
9
|
* @prop placeholder = "Search"
|
|
11
10
|
* @prop value = $bindable()
|
|
12
11
|
* @prop elementRef = $bindable()
|
|
13
12
|
* @prop clearable = false
|
|
14
|
-
* @prop clearableSvgClass
|
|
15
13
|
* @prop clearableColor = "none"
|
|
16
|
-
* @prop clearableClass
|
|
17
14
|
* @prop clearableOnClick
|
|
18
15
|
* @prop class: className
|
|
19
16
|
* @prop classes
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
import Badge from "../../badge/Badge.svelte";
|
|
5
5
|
import CloseButton from "../../utils/CloseButton.svelte";
|
|
6
6
|
import { multiSelect } from "./theme";
|
|
7
|
-
import { getTheme
|
|
8
|
-
import { onMount
|
|
7
|
+
import { getTheme } from "../../theme/themeUtils";
|
|
8
|
+
import { onMount } from "svelte";
|
|
9
9
|
import { createDismissableContext } from "../../utils/dismissable";
|
|
10
10
|
import { getButtonGroupContext } from "../../context";
|
|
11
11
|
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
items = [],
|
|
17
17
|
value = $bindable(),
|
|
18
18
|
size = "md",
|
|
19
|
-
dropdownClass = "",
|
|
20
19
|
placeholder = "",
|
|
21
20
|
disabled = false,
|
|
22
21
|
onchange,
|
|
@@ -31,13 +30,7 @@
|
|
|
31
30
|
...restProps
|
|
32
31
|
}: MultiSelectProps<T> = $props();
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
"MultiSelect",
|
|
36
|
-
untrack(() => ({ dropdownClass })),
|
|
37
|
-
{ dropdownClass: "dropdown" }
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
const styling = $derived(classes ?? { dropdown: dropdownClass });
|
|
33
|
+
const styling = $derived(classes);
|
|
41
34
|
|
|
42
35
|
const theme = $derived(getTheme("multiSelect"));
|
|
43
36
|
|
|
@@ -247,7 +240,7 @@
|
|
|
247
240
|
</div>
|
|
248
241
|
|
|
249
242
|
{#if show}
|
|
250
|
-
<div role="presentation" class={dropdown({ class: clsx(styling
|
|
243
|
+
<div role="presentation" class={dropdown({ class: clsx(styling?.dropdown) })}>
|
|
251
244
|
{#each items as item (item.value)}
|
|
252
245
|
{@const isSelected = selectItems.includes(item)}
|
|
253
246
|
{@const isActive = activeItem === item}
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import type { SelectProps } from "../..";
|
|
5
5
|
import CloseButton from "../../utils/CloseButton.svelte";
|
|
6
|
-
import { getTheme
|
|
6
|
+
import { getTheme } from "../../theme/themeUtils";
|
|
7
7
|
import { createDismissableContext } from "../../utils/dismissable";
|
|
8
8
|
import { getButtonGroupContext } from "../../context";
|
|
9
|
-
import { untrack } from "svelte";
|
|
10
9
|
|
|
11
10
|
let {
|
|
12
11
|
children,
|
|
@@ -21,21 +20,12 @@
|
|
|
21
20
|
clearableColor = "none",
|
|
22
21
|
clearableOnClick,
|
|
23
22
|
onClear,
|
|
24
|
-
clearableSvgClass,
|
|
25
|
-
clearableClass,
|
|
26
|
-
selectClass,
|
|
27
23
|
class: className,
|
|
28
24
|
classes,
|
|
29
25
|
...restProps
|
|
30
26
|
}: SelectProps<T> = $props();
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
"Select",
|
|
34
|
-
untrack(() => ({ selectClass, clearableSvgClass, clearableClass })),
|
|
35
|
-
{ selectClass: "select", clearableSvgClass: "svg", clearableClass: "close" }
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
const styling = $derived(classes ?? { select: selectClass, svg: clearableSvgClass, close: clearableClass });
|
|
28
|
+
const styling = $derived(classes);
|
|
39
29
|
|
|
40
30
|
const theme = $derived(getTheme("select"));
|
|
41
31
|
const group = getButtonGroupContext();
|
|
@@ -61,7 +51,7 @@
|
|
|
61
51
|
</script>
|
|
62
52
|
|
|
63
53
|
<div class={base({ class: clsx(theme?.base, className) })}>
|
|
64
|
-
<select {disabled} {...restProps} bind:value bind:this={elementRef} class={select({ class: clsx(theme?.select, styling
|
|
54
|
+
<select {disabled} {...restProps} bind:value bind:this={elementRef} class={select({ class: clsx(theme?.select, styling?.select) })}>
|
|
65
55
|
{#if placeholder}
|
|
66
56
|
<option disabled selected={value === "" || value === undefined} value="">{placeholder}</option>
|
|
67
57
|
{/if}
|
|
@@ -77,6 +67,6 @@
|
|
|
77
67
|
{/if}
|
|
78
68
|
</select>
|
|
79
69
|
{#if value !== undefined && value !== "" && clearable}
|
|
80
|
-
<CloseButton class={close({ class: clsx(theme?.close, styling
|
|
70
|
+
<CloseButton class={close({ class: clsx(theme?.close, styling?.close) })} color={clearableColor} aria-label="Clear search value" svgClass={clsx(styling?.svg)} {disabled} />
|
|
81
71
|
{/if}
|
|
82
72
|
</div>
|
|
@@ -4,19 +4,15 @@
|
|
|
4
4
|
import P from "../../typography/paragraph/P.svelte";
|
|
5
5
|
import CloseButton from "../../utils/CloseButton.svelte";
|
|
6
6
|
import { tags } from "./theme";
|
|
7
|
-
import { getTheme
|
|
7
|
+
import { getTheme } from "../../theme/themeUtils";
|
|
8
8
|
import { computePosition, offset, flip, shift, autoUpdate } from "@floating-ui/dom";
|
|
9
|
-
import { onDestroy
|
|
9
|
+
import { onDestroy } from "svelte";
|
|
10
10
|
|
|
11
11
|
let {
|
|
12
12
|
value = $bindable([]),
|
|
13
13
|
placeholder = "Enter tags",
|
|
14
14
|
class: className,
|
|
15
15
|
classes,
|
|
16
|
-
itemClass,
|
|
17
|
-
spanClass,
|
|
18
|
-
closeClass,
|
|
19
|
-
inputClass,
|
|
20
16
|
closeBtnSize = "xs",
|
|
21
17
|
unique = false,
|
|
22
18
|
availableTags = [],
|
|
@@ -28,20 +24,7 @@
|
|
|
28
24
|
...restProps
|
|
29
25
|
}: TagsProps = $props();
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
"Tags",
|
|
33
|
-
untrack(() => ({ itemClass, spanClass, closeClass, inputClass })),
|
|
34
|
-
{ itemClass: "tag", spanClass: "span", closeClass: "close", inputClass: "input" }
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
const styling = $derived(
|
|
38
|
-
classes ?? {
|
|
39
|
-
tag: itemClass,
|
|
40
|
-
span: spanClass,
|
|
41
|
-
close: closeClass,
|
|
42
|
-
input: inputClass
|
|
43
|
-
}
|
|
44
|
-
);
|
|
27
|
+
const styling = $derived(classes);
|
|
45
28
|
|
|
46
29
|
const theme = $derived(getTheme("tags"));
|
|
47
30
|
|
|
@@ -153,19 +136,19 @@
|
|
|
153
136
|
<svelte:window />
|
|
154
137
|
|
|
155
138
|
{#if showAvailableTags && availableTags.length > 0}
|
|
156
|
-
<P class={clsx(info(),
|
|
139
|
+
<P class={clsx(info(), styling?.info)}>Available tags: {availableTags.join(", ")}</P>
|
|
157
140
|
{/if}
|
|
158
141
|
|
|
159
142
|
{#if showHelper && contents.trim().length > 0}
|
|
160
143
|
{#if unique && value.some((tag) => tag.toLowerCase() === contents.trim().toLowerCase())}
|
|
161
|
-
<P class={clsx(warning(),
|
|
144
|
+
<P class={clsx(warning(), styling?.warning)}>"{contents.trim()}" is already added.</P>
|
|
162
145
|
{:else if availableTags.length > 0 && !allowNewTags && !availableTags.some((tag) => tag.toLowerCase() === contents.trim().toLowerCase())}
|
|
163
|
-
<P class={clsx(error(),
|
|
146
|
+
<P class={clsx(error(), styling?.error)}>"{contents.trim()}" is not in the available tags.</P>
|
|
164
147
|
{/if}
|
|
165
148
|
{/if}
|
|
166
149
|
|
|
167
150
|
{#if errorMessage}
|
|
168
|
-
<P class={clsx(error(),
|
|
151
|
+
<P class={clsx(error(), styling?.error)}>{errorMessage}</P>
|
|
169
152
|
{/if}
|
|
170
153
|
|
|
171
154
|
<div
|
|
@@ -175,11 +158,11 @@
|
|
|
175
158
|
})}
|
|
176
159
|
>
|
|
177
160
|
{#each value as tag, index (index)}
|
|
178
|
-
<div class={tagCls({ class: clsx(theme?.tag, styling
|
|
179
|
-
<span class={spanCls({ class: clsx(theme?.span, styling
|
|
161
|
+
<div class={tagCls({ class: clsx(theme?.tag, styling?.tag) })}>
|
|
162
|
+
<span class={spanCls({ class: clsx(theme?.span, styling?.span) })}>
|
|
180
163
|
{tag}
|
|
181
164
|
</span>
|
|
182
|
-
<CloseButton {disabled} size={closeBtnSize} class={close({ class: clsx(theme?.close, styling
|
|
165
|
+
<CloseButton {disabled} size={closeBtnSize} class={close({ class: clsx(theme?.close, styling?.close) })} onclick={() => deleteField(index)} />
|
|
183
166
|
</div>
|
|
184
167
|
{/each}
|
|
185
168
|
<div class="relative w-full" bind:this={inputContainer}>
|
|
@@ -192,7 +175,7 @@
|
|
|
192
175
|
placeholder={value.length === 0 ? placeholder : ""}
|
|
193
176
|
type="text"
|
|
194
177
|
autocomplete="off"
|
|
195
|
-
class={inputCls({ class: clsx(styling
|
|
178
|
+
class={inputCls({ class: clsx(styling?.input) })}
|
|
196
179
|
/>
|
|
197
180
|
{#if availableTags.length > 0 && contents.trim() !== ""}
|
|
198
181
|
{@const filteredSuggestions = availableTags.filter((tag) => tag.toLowerCase().includes(contents.trim().toLowerCase()) && (!unique || !value.some((t) => t.toLowerCase() === tag.toLowerCase())))}
|
|
@@ -231,15 +214,13 @@
|
|
|
231
214
|
@prop placeholder = "Enter tags"
|
|
232
215
|
@prop class: className
|
|
233
216
|
@prop classes
|
|
234
|
-
@prop itemClass
|
|
235
|
-
@prop spanClass
|
|
236
|
-
@prop closeClass
|
|
237
|
-
@prop inputClass
|
|
238
217
|
@prop closeBtnSize = "xs"
|
|
239
218
|
@prop unique = false
|
|
240
219
|
@prop availableTags = []
|
|
241
220
|
@prop showHelper = false
|
|
242
221
|
@prop showAvailableTags = false
|
|
243
222
|
@prop allowNewTags = true
|
|
223
|
+
@prop inputProps = {}
|
|
224
|
+
@prop disabled
|
|
244
225
|
@prop ...restProps
|
|
245
226
|
-->
|