flowbite-svelte 0.18.6 → 0.19.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [0.19.0](https://github.com/themesberg/flowbite-svelte/compare/v0.18.6...v0.19.0) (2022-06-24)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * Dropdown has a new structure
11
+
12
+ ### Bug Fixes
13
+
14
+ * Dropdown has a new structure ([2c5d7b0](https://github.com/themesberg/flowbite-svelte/commit/2c5d7b0a7ac6e93074d11c986835e1f24dd5e00e))
15
+ * update Dropdown components ([4dd3254](https://github.com/themesberg/flowbite-svelte/commit/4dd3254b037be1db5718c4a03662e7cf455a4ee6))
16
+ * update dropdown creating Dropdown, DropdownDivider, DropdownHeader, DropdownItem ([58db150](https://github.com/themesberg/flowbite-svelte/commit/58db150ee321f849ece954f43213e09a3634e191))
17
+
5
18
  ### [0.18.6](https://github.com/themesberg/flowbite-svelte/compare/v0.18.5...v0.18.6) (2022-06-24)
6
19
 
7
20
  ### [0.18.5](https://github.com/themesberg/flowbite-svelte/compare/v0.18.4...v0.18.5) (2022-06-24)
@@ -0,0 +1,57 @@
1
+ <script>import Tooltip from '../tooltips/Tooltip.svelte';
2
+ import Button from '../buttons/Button.svelte';
3
+ import classNames from 'classnames';
4
+ import { ChevronUp, ChevronRight, ChevronDown, ChevronLeft } from 'svelte-heros';
5
+ export let label = '';
6
+ export let inline = false;
7
+ export let tooltipArrow = false;
8
+ export let arrowIcon = true;
9
+ export let labelClass = 'flex items-center justify-between w-full py-2 pl-3 pr-4 font-medium text-gray-700 border-b border-gray-100 hover:bg-gray-50 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 md:w-auto dark:text-gray-400 dark:hover:text-white dark:focus:text-white dark:border-gray-700 dark:hover:bg-gray-700 md:dark:hover:bg-transparent';
10
+ export let placement = 'bottom';
11
+ const icons = {
12
+ top: ChevronUp,
13
+ right: ChevronRight,
14
+ bottom: ChevronDown,
15
+ left: ChevronLeft
16
+ };
17
+ // @ts-ignore
18
+ $: icon = icons[placement.split('-')[0]];
19
+ </script>
20
+
21
+ <Tooltip
22
+ class={classNames('w-44 !rounded !p-0', $$props.class)}
23
+ style="auto"
24
+ animation="duration-100"
25
+ {placement}
26
+ arrow={tooltipArrow}
27
+ trigger="click"
28
+ >
29
+ {#if inline}
30
+ <button class={labelClass}>
31
+ <slot name="label">{label}</slot>
32
+ {#if arrowIcon}
33
+ <svelte:component this={icon ?? ChevronDown} class="ml-2 h-4 w-4" />
34
+ {/if}
35
+ </button>
36
+ {:else}
37
+ <Button
38
+ pill={$$props.pill}
39
+ outline={$$props.outline}
40
+ color={$$props.color}
41
+ size={$$props.size}
42
+ icon={$$props.icon}
43
+ gradientDuoTone={$$props.gradientDuoTone}
44
+ gradientMonochrome={$$props.gradientMonochrome}
45
+ >
46
+ <slot name="label">{label}</slot>
47
+ {#if arrowIcon}
48
+ <svelte:component this={icon ?? ChevronDown} class="ml-2 h-4 w-4" />
49
+ {/if}
50
+ </Button>
51
+ {/if}
52
+ <div slot="content">
53
+ <ul class="py-1">
54
+ <slot />
55
+ </ul>
56
+ </div>
57
+ </Tooltip>
@@ -0,0 +1,26 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { Placement } from '@floating-ui/dom';
3
+ declare const __propDef: {
4
+ props: {
5
+ [x: string]: any;
6
+ label?: string;
7
+ inline?: boolean;
8
+ tooltipArrow?: boolean;
9
+ arrowIcon?: boolean;
10
+ labelClass?: string;
11
+ placement?: 'auto' | Placement;
12
+ };
13
+ events: {
14
+ [evt: string]: CustomEvent<any>;
15
+ };
16
+ slots: {
17
+ label: {};
18
+ default: {};
19
+ };
20
+ };
21
+ export declare type DropdownProps = typeof __propDef.props;
22
+ export declare type DropdownEvents = typeof __propDef.events;
23
+ export declare type DropdownSlots = typeof __propDef.slots;
24
+ export default class Dropdown extends SvelteComponentTyped<DropdownProps, DropdownEvents, DropdownSlots> {
25
+ }
26
+ export {};
@@ -0,0 +1,4 @@
1
+ <script>export let divClass = 'my-1 h-px bg-gray-100 dark:bg-gray-600';
2
+ </script>
3
+
4
+ <div class="{divClass} {$$props.class || ''}" {...$$restProps} />
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ divClass?: string;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export declare type DropdownDividerProps = typeof __propDef.props;
13
+ export declare type DropdownDividerEvents = typeof __propDef.events;
14
+ export declare type DropdownDividerSlots = typeof __propDef.slots;
15
+ export default class DropdownDivider extends SvelteComponentTyped<DropdownDividerProps, DropdownDividerEvents, DropdownDividerSlots> {
16
+ }
17
+ export {};
@@ -0,0 +1,8 @@
1
+ <script>import DropdownDivider from './DropdownDivider.svelte';
2
+ export let divClass = 'block py-2 px-4 text-sm text-gray-700 dark:text-gray-200';
3
+ </script>
4
+
5
+ <div class="{divClass} {$$props.class || ''}" {...$$restProps}>
6
+ <slot />
7
+ </div>
8
+ <DropdownDivider />
@@ -0,0 +1,19 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ divClass?: string;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {
11
+ default: {};
12
+ };
13
+ };
14
+ export declare type DropdownHeaderProps = typeof __propDef.props;
15
+ export declare type DropdownHeaderEvents = typeof __propDef.events;
16
+ export declare type DropdownHeaderSlots = typeof __propDef.slots;
17
+ export default class DropdownHeader extends SvelteComponentTyped<DropdownHeaderProps, DropdownHeaderEvents, DropdownHeaderSlots> {
18
+ }
19
+ export {};
@@ -0,0 +1,7 @@
1
+ <script>import classNames from 'classnames';
2
+ export let liClass = 'block cursor-pointer py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-gray-600 dark:hover:text-white';
3
+ </script>
4
+
5
+ <li {...$$restProps} class={classNames(liClass, $$props.class)} on:click>
6
+ <slot />
7
+ </li>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ liClass?: string;
6
+ };
7
+ events: {
8
+ click: MouseEvent;
9
+ } & {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {
13
+ default: {};
14
+ };
15
+ };
16
+ export declare type DropdownItemProps = typeof __propDef.props;
17
+ export declare type DropdownItemEvents = typeof __propDef.events;
18
+ export declare type DropdownItemSlots = typeof __propDef.slots;
19
+ export default class DropdownItem extends SvelteComponentTyped<DropdownItemProps, DropdownItemEvents, DropdownItemSlots> {
20
+ }
21
+ export {};
package/index.d.ts CHANGED
@@ -23,9 +23,10 @@ export { default as SignInCard } from './cards/SignInCard.svelte';
23
23
  export { default as Carousel } from './carousels/Carousel.svelte';
24
24
  export { default as CarouselTransition } from './carousels/CarouselTransition.svelte';
25
25
  export { default as DarkMode } from './darkmode/DarkMode.svelte';
26
- export { default as Dropdown } from './dropdowns/DropdownDefault.svelte';
27
- export { default as ImgDropdown } from './dropdowns/ImgDropdown.svelte';
28
- export { dropdownIdStore } from './dropdowns/dropdownStores.js';
26
+ export { default as Dropdown } from './dropdowns/Dropdown.svelte';
27
+ export { default as DropdownDivider } from './dropdowns/DropdownDivider.svelte';
28
+ export { default as DropdownHeader } from './dropdowns/DropdownHeader.svelte';
29
+ export { default as DropdownItem } from './dropdowns/DropdownItem.svelte';
29
30
  export { default as SimpleFooter } from './footer/SimpleFooter.svelte';
30
31
  export { default as LogoFooter } from './footer/LogoFooter.svelte';
31
32
  export { default as SocialMediaFooter } from './footer/SocialMediaFooter.svelte';
package/index.js CHANGED
@@ -34,9 +34,10 @@ export { default as CarouselTransition } from './carousels/CarouselTransition.sv
34
34
  // Dark mode
35
35
  export { default as DarkMode } from './darkmode/DarkMode.svelte';
36
36
  // Dropdown
37
- export { default as Dropdown } from './dropdowns/DropdownDefault.svelte';
38
- export { default as ImgDropdown } from './dropdowns/ImgDropdown.svelte';
39
- export { dropdownIdStore } from './dropdowns/dropdownStores.js';
37
+ export { default as Dropdown } from './dropdowns/Dropdown.svelte';
38
+ export { default as DropdownDivider } from './dropdowns/DropdownDivider.svelte';
39
+ export { default as DropdownHeader } from './dropdowns/DropdownHeader.svelte';
40
+ export { default as DropdownItem } from './dropdowns/DropdownItem.svelte';
40
41
  // Footers
41
42
  export { default as SimpleFooter } from './footer/SimpleFooter.svelte';
42
43
  export { default as LogoFooter } from './footer/LogoFooter.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowbite-svelte",
3
- "version": "0.18.6",
3
+ "version": "0.19.0",
4
4
  "description": "Flowbite components for Svelte",
5
5
  "main": "index.js",
6
6
  "author": {
@@ -122,9 +122,10 @@
122
122
  "./carousels/Slide.svelte": "./carousels/Slide.svelte",
123
123
  "./carousels/Thumbnail.svelte": "./carousels/Thumbnail.svelte",
124
124
  "./darkmode/DarkMode.svelte": "./darkmode/DarkMode.svelte",
125
- "./dropdowns/DropdownDefault.svelte": "./dropdowns/DropdownDefault.svelte",
126
- "./dropdowns/ImgDropdown.svelte": "./dropdowns/ImgDropdown.svelte",
127
- "./dropdowns/dropdownStores": "./dropdowns/dropdownStores.js",
125
+ "./dropdowns/Dropdown.svelte": "./dropdowns/Dropdown.svelte",
126
+ "./dropdowns/DropdownDivider.svelte": "./dropdowns/DropdownDivider.svelte",
127
+ "./dropdowns/DropdownHeader.svelte": "./dropdowns/DropdownHeader.svelte",
128
+ "./dropdowns/DropdownItem.svelte": "./dropdowns/DropdownItem.svelte",
128
129
  "./footer/LogoFooter.svelte": "./footer/LogoFooter.svelte",
129
130
  "./footer/SimpleFooter.svelte": "./footer/SimpleFooter.svelte",
130
131
  "./footer/SitemapFooter.svelte": "./footer/SitemapFooter.svelte",
@@ -1,109 +0,0 @@
1
- <script>import { dropdownIdStore } from './dropdownStores';
2
- import { get } from 'svelte/store';
3
- export let id = 'dropdown';
4
- export let label = 'Dropdown button';
5
- export let rounded = false;
6
- export let textSize = 'text-sm';
7
- export let color = 'blue';
8
- let showDropdownId;
9
- dropdownIdStore.subscribe((value) => {
10
- showDropdownId = value;
11
- });
12
- let paddings;
13
- if (textSize === 'text-xs') {
14
- paddings = 'py-2 px-3';
15
- }
16
- else if (textSize === 'text-sm') {
17
- paddings = 'py-2.5 px-5';
18
- }
19
- else if (textSize === 'text-base') {
20
- paddings = 'py-3 px-6';
21
- }
22
- else {
23
- paddings = 'py-2.5 px-5';
24
- }
25
- let round = rounded ? 'rounded-full' : 'rounded-lg';
26
- let buttonClass = `inline-flex z-10 items-center font-medium ${round} ${textSize} ${paddings} text-center `;
27
- export const openFn = (id) => {
28
- if (showDropdownId === id) {
29
- dropdownIdStore.update((n) => (n = null));
30
- }
31
- else {
32
- dropdownIdStore.update((n) => (n = id));
33
- }
34
- };
35
- const closeDropdown = () => {
36
- dropdownIdStore.update((n) => (n = null));
37
- };
38
- export let items;
39
- export let dropdownClass = 'absolute left-0 top-1 z-10 w-44 text-base list-none bg-white rounded divide-y divide-gray-100 shadow dark:bg-gray-700';
40
- export let headerClass = 'py-3 px-4 text-gray-900 dark:text-white';
41
- export let linkClass = 'block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white';
42
- if (color === 'blue-outline') {
43
- buttonClass += `text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-600 dark:focus:ring-blue-800`;
44
- }
45
- else if (color === 'dark') {
46
- buttonClass += `text-white bg-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-800 dark:border-gray-700`;
47
- }
48
- else if (color === 'dark-outline') {
49
- buttonClass += `text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:ring-4 focus:ring-gray-300 dark:border-gray-600 dark:text-gray-400 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-800`;
50
- }
51
- else if (color === 'light') {
52
- buttonClass += `text-gray-900 bg-white border border-gray-300 hover:bg-gray-100 focus:ring-4 focus:ring-blue-300 dark:bg-gray-600 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-700 dark:focus:ring-gray-800`;
53
- }
54
- else if (color === 'green') {
55
- buttonClass += `text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800`;
56
- }
57
- else if (color === 'green-outline') {
58
- buttonClass += `text-green-700 hover:text-white border border-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 dark:border-green-500 dark:text-green-500 dark:hover:text-white dark:hover:bg-green-600 dark:focus:ring-green-800`;
59
- }
60
- else if (color === 'red') {
61
- buttonClass += `text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900`;
62
- }
63
- else if (color === 'red-outline') {
64
- buttonClass += `text-red-700 hover:text-white border border-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:hover:bg-red-600 dark:focus:ring-red-900`;
65
- }
66
- else if (color === 'yellow') {
67
- buttonClass += `text-white bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 dark:focus:ring-yellow-900`;
68
- }
69
- else if (color === 'yellow-outline') {
70
- buttonClass += `text-yellow-400 hover:text-white border border-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 dark:border-yellow-300 dark:text-yellow-300 dark:hover:text-white dark:hover:bg-yellow-400 dark:focus:ring-yellow-900`;
71
- }
72
- else if (color === 'purple') {
73
- buttonClass += `text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300 mb-2 dark:bg-purple-600 dark:hover:bg-purple-700 dark:focus:ring-purple-900`;
74
- }
75
- else if (color === 'purple-outline') {
76
- buttonClass += `text-purple-700 hover:text-white border border-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300 dark:border-purple-400 dark:text-purple-400 dark:hover:text-white dark:hover:bg-purple-500 dark:focus:ring-purple-900`;
77
- }
78
- else {
79
- buttonClass += `text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800`;
80
- }
81
- </script>
82
-
83
- <button on:click={() => openFn(id)} class={buttonClass} type="button"
84
- >{label}
85
- <svg class="ml-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /> </svg>
86
- </button>
87
-
88
- <div class="relative">
89
- {#if showDropdownId === id}
90
- <div class={dropdownClass}>
91
- {#if $$slots.header}
92
- <div class={headerClass}>
93
- <slot name="header" />
94
- </div>
95
- {/if}
96
- <ul class="py-1" aria-labelledby="dropdownButton">
97
- {#each items as { href, name, divider }}
98
- <li class:border-b={divider} class:border-gray-100={divider} class:dark:border-gray-500={divider}>
99
- <a {href} class={linkClass}>{name}</a>
100
- </li>
101
- {/each}
102
- </ul>
103
- </div>
104
- {/if}
105
- </div>
106
-
107
- {#if $dropdownIdStore}
108
- <div on:click={closeDropdown} class="fixed w-full h-full z-0 inset-0" />
109
- {/if}
@@ -1,29 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { DropdownType, DropdownColorType } from '../types';
3
- declare const __propDef: {
4
- props: {
5
- id?: string;
6
- label?: string;
7
- rounded?: boolean;
8
- textSize?: string;
9
- color?: DropdownColorType;
10
- openFn?: (id: string) => void;
11
- items: DropdownType[];
12
- dropdownClass?: string;
13
- headerClass?: string;
14
- linkClass?: string;
15
- };
16
- events: {
17
- [evt: string]: CustomEvent<any>;
18
- };
19
- slots: {
20
- header: {};
21
- };
22
- };
23
- export declare type DropdownDefaultProps = typeof __propDef.props;
24
- export declare type DropdownDefaultEvents = typeof __propDef.events;
25
- export declare type DropdownDefaultSlots = typeof __propDef.slots;
26
- export default class DropdownDefault extends SvelteComponentTyped<DropdownDefaultProps, DropdownDefaultEvents, DropdownDefaultSlots> {
27
- get openFn(): (id: string) => void;
28
- }
29
- export {};
@@ -1,34 +0,0 @@
1
- <script>let imgDropdownToggle = true;
2
- const handleToggle = () => {
3
- imgDropdownToggle = !imgDropdownToggle;
4
- };
5
- export let items;
6
- export let divClass = 'relative';
7
- export let dropdownClass = 'hidden absolute -left-16 top-14 z-10 w-44 text-base list-none bg-white rounded divide-y divide-gray-100 shadow dark:bg-gray-700';
8
- export let headerClass = 'py-3 px-4 text-gray-900 dark:text-white';
9
- export let linkClass = 'block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white';
10
- </script>
11
-
12
- <div class={divClass}>
13
- <div on:click={handleToggle}>
14
- <slot />
15
- </div>
16
- <div class:hidden={imgDropdownToggle} class={dropdownClass}>
17
- {#if $$slots.header}
18
- <div class={headerClass}>
19
- <slot name="header" />
20
- </div>
21
- {/if}
22
- <ul class="py-1" aria-labelledby="dropdownButton">
23
- {#each items as { href, name, divider }}
24
- <li
25
- class:border-b={divider}
26
- class:border-gray-100={divider}
27
- class:dark:border-gray-500={divider}
28
- >
29
- <a {href} class={linkClass}>{name}</a>
30
- </li>
31
- {/each}
32
- </ul>
33
- </div>
34
- </div>
@@ -1,24 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { DropdownType } from '../types';
3
- declare const __propDef: {
4
- props: {
5
- items: DropdownType[];
6
- divClass?: string;
7
- dropdownClass?: string;
8
- headerClass?: string;
9
- linkClass?: string;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {
15
- default: {};
16
- header: {};
17
- };
18
- };
19
- export declare type ImgDropdownProps = typeof __propDef.props;
20
- export declare type ImgDropdownEvents = typeof __propDef.events;
21
- export declare type ImgDropdownSlots = typeof __propDef.slots;
22
- export default class ImgDropdown extends SvelteComponentTyped<ImgDropdownProps, ImgDropdownEvents, ImgDropdownSlots> {
23
- }
24
- export {};
@@ -1,3 +0,0 @@
1
- import { writable } from 'svelte/store';
2
-
3
- export const dropdownIdStore = writable('');