flowbite-svelte 0.44.17 → 0.44.19

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.
Files changed (71) hide show
  1. package/dist/alert/Alert.svelte +1 -1
  2. package/dist/buttons/Button.svelte +79 -17
  3. package/dist/buttons/Button.svelte.d.ts +7 -3
  4. package/dist/buttons/Button.svelte.d.ts.map +1 -1
  5. package/dist/carousel/Carousel.svelte +65 -20
  6. package/dist/carousel/Carousel.svelte.d.ts +10 -3
  7. package/dist/carousel/Carousel.svelte.d.ts.map +1 -1
  8. package/dist/carousel/CarouselSlide.d.ts +6 -0
  9. package/dist/carousel/CarouselSlide.d.ts.map +1 -0
  10. package/dist/carousel/CarouselSlide.js +7 -0
  11. package/dist/carousel/Controls.svelte +28 -7
  12. package/dist/carousel/Controls.svelte.d.ts +1 -1
  13. package/dist/carousel/Controls.svelte.d.ts.map +1 -1
  14. package/dist/carousel/Slide.svelte +29 -9
  15. package/dist/carousel/Slide.svelte.d.ts +2 -2
  16. package/dist/carousel/Slide.svelte.d.ts.map +1 -1
  17. package/dist/carousel/Thumbnails.svelte +19 -3
  18. package/dist/carousel/Thumbnails.svelte.d.ts +5 -0
  19. package/dist/carousel/Thumbnails.svelte.d.ts.map +1 -1
  20. package/dist/datepicker/Datepicker.svelte +3 -0
  21. package/dist/datepicker/Datepicker.svelte.d.ts +11 -0
  22. package/dist/datepicker/Datepicker.svelte.d.ts.map +1 -1
  23. package/dist/footer/Footer.svelte +2 -2
  24. package/dist/footer/Footer.svelte.d.ts +2 -2
  25. package/dist/footer/Footer.svelte.d.ts.map +1 -1
  26. package/dist/forms/CheckboxButton.svelte +84 -0
  27. package/dist/forms/CheckboxButton.svelte.d.ts +54 -0
  28. package/dist/forms/CheckboxButton.svelte.d.ts.map +1 -0
  29. package/dist/forms/FloatingLabelInput.svelte +1 -3
  30. package/dist/forms/FloatingLabelInput.svelte.d.ts +3 -3
  31. package/dist/forms/FloatingLabelInput.svelte.d.ts.map +1 -1
  32. package/dist/forms/RadioButton.svelte +49 -0
  33. package/dist/forms/RadioButton.svelte.d.ts +52 -0
  34. package/dist/forms/RadioButton.svelte.d.ts.map +1 -0
  35. package/dist/index.d.ts +2 -3
  36. package/dist/index.js +2 -3
  37. package/dist/indicators/Indicator.svelte +1 -1
  38. package/dist/indicators/Indicator.svelte.d.ts +3 -3
  39. package/dist/indicators/Indicator.svelte.d.ts.map +1 -1
  40. package/dist/modal/Modal.svelte +3 -3
  41. package/dist/modal/Modal.svelte.d.ts +6 -1
  42. package/dist/modal/Modal.svelte.d.ts.map +1 -1
  43. package/dist/navbar/NavContainer.svelte +14 -0
  44. package/dist/navbar/NavContainer.svelte.d.ts +25 -0
  45. package/dist/navbar/NavContainer.svelte.d.ts.map +1 -0
  46. package/dist/navbar/NavHamburger.svelte +9 -4
  47. package/dist/navbar/NavHamburger.svelte.d.ts +2 -4
  48. package/dist/navbar/NavHamburger.svelte.d.ts.map +1 -1
  49. package/dist/navbar/NavUl.svelte +11 -8
  50. package/dist/navbar/NavUl.svelte.d.ts +1 -1
  51. package/dist/navbar/NavUl.svelte.d.ts.map +1 -1
  52. package/dist/navbar/Navbar.svelte +11 -13
  53. package/dist/navbar/Navbar.svelte.d.ts +2 -5
  54. package/dist/navbar/Navbar.svelte.d.ts.map +1 -1
  55. package/dist/timeline/TimelineItem.svelte +17 -59
  56. package/dist/timeline/TimelineItem.svelte.d.ts +1 -1
  57. package/dist/timeline/TimelineItem.svelte.d.ts.map +1 -1
  58. package/dist/toolbar/Toolbar.svelte +1 -1
  59. package/dist/types.d.ts +0 -19
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/utils/focusTrap.d.ts.map +1 -1
  62. package/package.json +32 -32
  63. package/dist/timeline/TimelineHorizontal.svelte +0 -15
  64. package/dist/timeline/TimelineHorizontal.svelte.d.ts +0 -25
  65. package/dist/timeline/TimelineHorizontal.svelte.d.ts.map +0 -1
  66. package/dist/timeline/TimelineItemHorizontal.svelte +0 -71
  67. package/dist/timeline/TimelineItemHorizontal.svelte.d.ts +0 -46
  68. package/dist/timeline/TimelineItemHorizontal.svelte.d.ts.map +0 -1
  69. package/dist/timeline/TimelineItemVertical.svelte +0 -42
  70. package/dist/timeline/TimelineItemVertical.svelte.d.ts +0 -36
  71. package/dist/timeline/TimelineItemVertical.svelte.d.ts.map +0 -1
@@ -37,7 +37,7 @@ $: {
37
37
 
38
38
  {#if dismissable}
39
39
  <slot name="close-button" {close}>
40
- <CloseButton class="-mx-1.5 -my-1.5 dark:hover:bg-gray-700" color={$$restProps.color} on:click={close} on:click on:change on:keydown on:keyup on:focus on:blur on:mouseenter on:mouseleave />
40
+ <CloseButton class="ml-auto -mr-1.5 -my-1.5 dark:hover:bg-gray-700" color={$$restProps.color} on:click={close} on:click on:change on:keydown on:keyup on:focus on:blur on:mouseenter on:mouseleave />
41
41
  </slot>
42
42
  {/if}
43
43
  </Frame>
@@ -8,8 +8,10 @@ export let href = undefined;
8
8
  export let type = 'button';
9
9
  export let color = group ? (outline ? 'dark' : 'alternative') : 'primary';
10
10
  export let shadow = false;
11
+ export let tag = 'button';
12
+ export let checked = undefined;
11
13
  const colorClasses = {
12
- 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:text-primary-700 dark:focus:text-white dark:hover:text-white',
14
+ 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',
13
15
  blue: 'text-white bg-blue-700 hover:bg-blue-800 dark:bg-blue-600 dark:hover:bg-blue-700',
14
16
  dark: 'text-white bg-gray-800 hover:bg-gray-900 dark:bg-gray-800 dark:hover:bg-gray-700',
15
17
  green: 'text-white bg-green-700 hover:bg-green-800 dark:bg-green-600 dark:hover:bg-green-700',
@@ -20,16 +22,28 @@ const colorClasses = {
20
22
  yellow: 'text-white bg-yellow-400 hover:bg-yellow-500 ',
21
23
  none: ''
22
24
  };
25
+ const colorCheckedClasses = {
26
+ alternative: 'text-primary-700 border dark:text-primary-500 bg-gray-100 dark:bg-gray-700 border-gray-300 shadow-gray-300 dark:shadow-gray-800 shadow-inner',
27
+ blue: 'text-blue-900 bg-blue-400 dark:bg-blue-500 shadow-blue-700 dark:shadow-blue-800 shadow-inner',
28
+ dark: 'text-white bg-gray-500 dark:bg-gray-600 shadow-gray-800 dark:shadow-gray-900 shadow-inner',
29
+ green: 'text-green-900 bg-green-400 dark:bg-green-500 shadow-green-700 dark:shadow-green-800 shadow-inner',
30
+ light: 'text-gray-900 bg-gray-100 border border-gray-300 dark:bg-gray-500 dark:text-gray-900 dark:border-gray-700 shadow-gray-300 dark:shadow-gray-700 shadow-inner',
31
+ primary: 'text-primary-900 bg-primary-400 dark:bg-primary-500 shadow-primary-700 dark:shadow-primary-800 shadow-inner',
32
+ purple: 'text-purple-900 bg-purple-400 dark:bg-purple-500 shadow-purple-700 dark:shadow-purple-800 shadow-inner',
33
+ red: 'text-red-900 bg-red-400 dark:bg-red-500 shadow-red-700 dark:shadow-red-800 shadow-inner',
34
+ yellow: 'text-yellow-900 bg-yellow-300 dark:bg-yellow-400 shadow-yellow-500 dark:shadow-yellow-700 shadow-inner',
35
+ none: ''
36
+ };
23
37
  const coloredFocusClasses = {
24
- alternative: 'focus:ring-gray-200 dark:focus:ring-gray-700',
25
- blue: 'focus:ring-blue-300 dark:focus:ring-blue-800',
26
- dark: 'focus:ring-gray-300 dark:focus:ring-gray-700',
27
- green: 'focus:ring-green-300 dark:focus:ring-green-800',
28
- light: 'focus:ring-gray-200 dark:focus:ring-gray-700',
29
- primary: 'focus:ring-primary-300 dark:focus:ring-primary-800',
30
- purple: 'focus:ring-purple-300 dark:focus:ring-purple-900',
31
- red: 'focus:ring-red-300 dark:focus:ring-red-900',
32
- yellow: 'focus:ring-yellow-300 dark:focus:ring-yellow-900',
38
+ alternative: 'focus-within:ring-gray-200 dark:focus-within:ring-gray-700',
39
+ blue: 'focus-within:ring-blue-300 dark:focus-within:ring-blue-800',
40
+ dark: 'focus-within:ring-gray-300 dark:focus-within:ring-gray-700',
41
+ green: 'focus-within:ring-green-300 dark:focus-within:ring-green-800',
42
+ light: 'focus-within:ring-gray-200 dark:focus-within:ring-gray-700',
43
+ primary: 'focus-within:ring-primary-300 dark:focus-within:ring-primary-800',
44
+ purple: 'focus-within:ring-purple-300 dark:focus-within:ring-purple-900',
45
+ red: 'focus-within:ring-red-300 dark:focus-within:ring-red-900',
46
+ yellow: 'focus-within:ring-yellow-300 dark:focus-within:ring-yellow-900',
33
47
  none: ''
34
48
  };
35
49
  const coloredShadowClasses = {
@@ -45,9 +59,9 @@ const coloredShadowClasses = {
45
59
  none: ''
46
60
  };
47
61
  const outlineClasses = {
48
- alternative: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:bg-gray-900 focus:text-white focus:ring-gray-300 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-800',
62
+ alternative: 'text-gray-900 dark:text-gray-400 hover:text-white border border-gray-800 hover:bg-gray-900 focus-within:bg-gray-900 focus-within:text-white focus-within:ring-gray-300 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600 dark:focus-within:ring-gray-800',
49
63
  blue: 'text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-600',
50
- dark: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:bg-gray-900 focus:text-white dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600',
64
+ dark: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus-within:bg-gray-900 focus-within:text-white dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600',
51
65
  green: 'text-green-700 hover:text-white border border-green-700 hover:bg-green-800 dark:border-green-500 dark:text-green-500 dark:hover:text-white dark:hover:bg-green-600',
52
66
  light: 'text-gray-500 hover:text-gray-900 bg-white border border-gray-200 dark:border-gray-600 dark:hover:text-white dark:text-gray-400 hover:bg-gray-50 dark:bg-gray-700 dark:hover:bg-gray-600',
53
67
  primary: 'text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-700 dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-600',
@@ -65,12 +79,58 @@ const sizeClasses = {
65
79
  };
66
80
  const hasBorder = () => outline || color === 'alternative' || color === 'light';
67
81
  let buttonClass;
68
- $: buttonClass = twMerge('text-center font-medium', group ? 'focus:ring-2' : 'focus:ring-4', group && 'focus:z-10', group || 'focus:outline-none', 'inline-flex items-center justify-center ' + sizeClasses[size], outline ? outlineClasses[color] : colorClasses[color], color === 'alternative' && (group ? 'dark:bg-gray-700 dark:text-white dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-600' : 'dark:bg-transparent dark:border-gray-600 dark:hover:border-gray-700'), outline && color === 'dark' && (group ? 'dark:text-white dark:border-white' : 'dark:text-gray-400 dark:border-gray-700'), coloredFocusClasses[color], hasBorder() && group && 'border-l-0 first:border-l', group ? (pill && 'first:rounded-l-full last:rounded-r-full') || 'first:rounded-l-lg last:rounded-r-lg' : (pill && 'rounded-full') || 'rounded-lg', shadow && 'shadow-lg', shadow && coloredShadowClasses[color], $$props.disabled && 'cursor-not-allowed opacity-50', $$props.class);
82
+ $: buttonClass = twMerge('text-center font-medium', group ? 'focus-within:ring-2' : 'focus-within:ring-4', group && 'focus-within:z-10', group || 'focus-within:outline-none', 'inline-flex items-center justify-center ' + sizeClasses[size], outline && checked && 'border dark:border-gray-900', outline && checked && colorCheckedClasses[color], outline && !checked && outlineClasses[color], !outline && checked && colorCheckedClasses[color], !outline && !checked && colorClasses[color], color === 'alternative' &&
83
+ (group && !checked
84
+ ? 'dark:bg-gray-700 dark:text-white dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-600'
85
+ : 'dark:bg-transparent dark:border-gray-600 dark:hover:border-gray-700'), outline &&
86
+ color === 'dark' &&
87
+ (group
88
+ ? checked
89
+ ? 'bg-gray-900 border-gray-800 dark:border-white dark:bg-gray-600'
90
+ : 'dark:text-white border-gray-800 dark:border-white'
91
+ : 'dark:text-gray-400 dark:border-gray-700'), coloredFocusClasses[color], hasBorder() && group && 'border-l-0 first:border-l', group
92
+ ? (pill && 'first:rounded-l-full last:rounded-r-full') || 'first:rounded-l-lg last:rounded-r-lg'
93
+ : (pill && 'rounded-full') || 'rounded-lg', shadow && 'shadow-lg', shadow && coloredShadowClasses[color], $$props.disabled && 'cursor-not-allowed opacity-50', $$props.class);
69
94
  </script>
70
95
 
71
- <svelte:element this={href ? 'a' : 'button'} type={href ? undefined : type} {href} role={href ? 'link' : 'button'} {...$$restProps} class={buttonClass} on:click on:change on:keydown on:keyup on:touchstart|passive on:touchend on:touchcancel on:mouseenter on:mouseleave>
72
- <slot />
73
- </svelte:element>
96
+ {#if href}
97
+ <a
98
+ {href}
99
+ {...$$restProps}
100
+ class={buttonClass}
101
+ role="button"
102
+ on:click
103
+ on:change
104
+ on:keydown
105
+ on:keyup
106
+ on:touchstart|passive
107
+ on:touchend
108
+ on:touchcancel
109
+ on:mouseenter
110
+ on:mouseleave>
111
+ <slot />
112
+ </a>
113
+ {:else if tag === 'button'}
114
+ <button
115
+ {type}
116
+ {...$$restProps}
117
+ class={buttonClass}
118
+ on:click
119
+ on:change
120
+ on:keydown
121
+ on:keyup
122
+ on:touchstart|passive
123
+ on:touchend
124
+ on:touchcancel
125
+ on:mouseenter
126
+ on:mouseleave>
127
+ <slot />
128
+ </button>
129
+ {:else}
130
+ <svelte:element this={tag} {...$$restProps} class={buttonClass}>
131
+ <slot />
132
+ </svelte:element>
133
+ {/if}
74
134
 
75
135
  <!--
76
136
  @component
@@ -80,7 +140,9 @@ $: buttonClass = twMerge('text-center font-medium', group ? 'focus:ring-2' : 'fo
80
140
  @prop export let outline: boolean = false;
81
141
  @prop export let size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = group ? 'sm' : 'md';
82
142
  @prop export let href: string | undefined = undefined;
83
- @prop export let type: ButtonType = 'button';
143
+ @prop export let type: HTMLButtonAttributes['type'] = 'button';
84
144
  @prop export let color: ButtonColor = group ? (outline ? 'dark' : 'alternative') : 'primary';
85
145
  @prop export let shadow: boolean = false;
146
+ @prop export let tag: string = 'button';
147
+ @prop export let checked: boolean | undefined = undefined;
86
148
  -->
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { ButtonType } from '../types';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
@@ -7,9 +7,11 @@ declare const __propDef: {
7
7
  outline?: boolean | undefined;
8
8
  size?: "xs" | "sm" | "lg" | "xl" | "md" | undefined;
9
9
  href?: string | undefined;
10
- type?: ButtonType | undefined;
10
+ type?: HTMLButtonAttributes['type'];
11
11
  color?: "red" | "yellow" | "green" | "purple" | "blue" | "light" | "dark" | "primary" | "none" | "alternative" | undefined;
12
12
  shadow?: boolean | undefined;
13
+ tag?: string | undefined;
14
+ checked?: boolean | undefined;
13
15
  };
14
16
  events: {
15
17
  click: MouseEvent;
@@ -38,9 +40,11 @@ export type ButtonSlots = typeof __propDef.slots;
38
40
  * @prop export let outline: boolean = false;
39
41
  * @prop export let size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = group ? 'sm' : 'md';
40
42
  * @prop export let href: string | undefined = undefined;
41
- * @prop export let type: ButtonType = 'button';
43
+ * @prop export let type: HTMLButtonAttributes['type'] = 'button';
42
44
  * @prop export let color: ButtonColor = group ? (outline ? 'dark' : 'alternative') : 'primary';
43
45
  * @prop export let shadow: boolean = false;
46
+ * @prop export let tag: string = 'button';
47
+ * @prop export let checked: boolean | undefined = undefined;
44
48
  */
45
49
  export default class Button extends SvelteComponent<ButtonProps, ButtonEvents, ButtonSlots> {
46
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/buttons/Button.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAGD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA+F3C,QAAA,MAAM,SAAS;;;;;;eAD+L,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;CAClJ,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;CAC1F"}
1
+ {"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/buttons/Button.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAID,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAgK5D,QAAA,MAAM,SAAS;;;;;;eAD6N,MAAM,GAAG,SAAS;eAAS,oBAAoB,CAAC,MAAM,CAAC;;;;kBAAiE,OAAO,GAAG,SAAS;;;;;;;;;;;;;;;;;;CACzS,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;CAC1F"}
@@ -2,32 +2,63 @@
2
2
  </script>
3
3
 
4
4
  <script>import { createEventDispatcher, onMount, setContext } from 'svelte';
5
- import { quintOut } from 'svelte/easing';
6
5
  import { writable } from 'svelte/store';
7
- import { fade } from 'svelte/transition';
8
6
  import { twMerge } from 'tailwind-merge';
9
7
  import Controls from './Controls.svelte';
10
8
  import Indicators from './Indicators.svelte';
11
9
  import Slide from './Slide.svelte';
10
+ import { canChangeSlide } from './CarouselSlide';
11
+ const SLIDE_DURATION_RATIO = 0.25; // TODO: Expose one day?
12
12
  export let images;
13
13
  export let index = 0;
14
- export let transition = (x) => fade(x, { duration: 700, easing: quintOut });
14
+ export let slideDuration = 1000;
15
+ export let transition;
15
16
  export let duration = 0;
16
17
  export let ariaLabel = 'Draggable Carousel';
17
18
  // Carousel
18
- let divClass = 'overflow-hidden relative rounded-lg h-56 sm:h-64 xl:h-80 2xl:h-96';
19
+ let divClass = 'grid overflow-hidden relative rounded-lg h-56 sm:h-64 xl:h-80 2xl:h-96';
20
+ export let imgClass = '';
19
21
  const dispatch = createEventDispatcher();
20
- const { set, subscribe, update } = writable({ images, index });
21
- const state = { set: (s) => set({ index: ((s.index % images.length) + images.length) % images.length, images: s.images }), subscribe, update };
22
+ const { set, subscribe, update } = writable({ images, index, forward: true, slideDuration, lastSlideChange: new Date() });
23
+ const state = { set: (_state) => set({ index: _state.index, images: _state.images, lastSlideChange: new Date(), slideDuration, forward }), subscribe, update };
24
+ let forward = true;
22
25
  setContext('state', state);
23
- subscribe((s) => {
24
- index = s.index;
26
+ subscribe((_state) => {
27
+ index = _state.index;
28
+ forward = _state.forward;
25
29
  dispatch('change', images[index]);
26
30
  });
27
- onMount(() => dispatch('change', images[index]));
28
- $: state.set({ images, index });
29
- const nextSlide = () => (index += 1);
30
- const prevSlide = () => (index -= 1);
31
+ onMount(() => {
32
+ dispatch('change', images[index]);
33
+ });
34
+ let prevIndex = index;
35
+ $: {
36
+ if (!prevIndex || prevIndex < index) {
37
+ update((_state) => ({ ..._state, forward: true, index }));
38
+ }
39
+ else {
40
+ update((_state) => ({ ..._state, forward: false, index }));
41
+ }
42
+ prevIndex = index;
43
+ }
44
+ const nextSlide = () => {
45
+ update((_state) => {
46
+ if (!canChangeSlide({ lastSlideChange: _state.lastSlideChange, slideDuration, slideDurationRatio: SLIDE_DURATION_RATIO }))
47
+ return _state;
48
+ _state.index = _state.index >= images.length - 1 ? 0 : _state.index + 1;
49
+ _state.lastSlideChange = new Date();
50
+ return { ..._state };
51
+ });
52
+ };
53
+ const prevSlide = () => {
54
+ update((_state) => {
55
+ if (!canChangeSlide({ lastSlideChange: _state.lastSlideChange, slideDuration, slideDurationRatio: SLIDE_DURATION_RATIO }))
56
+ return _state;
57
+ _state.index = _state.index <= 0 ? images.length - 1 : _state.index - 1;
58
+ _state.lastSlideChange = new Date();
59
+ return { ..._state };
60
+ });
61
+ };
31
62
  const loop = (node, duration) => {
32
63
  carouselDiv = node; // used by DragStart
33
64
  // loop timer
@@ -58,7 +89,7 @@ const getPositionFromEvent = (evt) => {
58
89
  };
59
90
  const onDragStart = (evt) => {
60
91
  touchEvent = evt;
61
- evt.preventDefault();
92
+ evt.cancelable && evt.preventDefault();
62
93
  const start = getPositionFromEvent(evt);
63
94
  const width = carouselDiv.getBoundingClientRect().width;
64
95
  if (start === undefined || width === undefined)
@@ -104,10 +135,13 @@ $: onDragStop =
104
135
  else if (percentOffset < -DRAG_MIN_PERCENT)
105
136
  nextSlide();
106
137
  else {
107
- // The gesture is a tap not drag, so manually issue a click event to trigger tap click gestures lost via preventDefault
108
- touchEvent?.target?.dispatchEvent(new Event('click', {
109
- bubbles: true
110
- }));
138
+ // Only issue click event for touches
139
+ if (touchEvent?.constructor.name === 'TouchEvent') {
140
+ // The gesture is a tap not drag, so manually issue a click event to trigger tap click gestures lost via preventDefault
141
+ touchEvent?.target?.dispatchEvent(new Event('click', {
142
+ bubbles: true
143
+ }));
144
+ }
111
145
  }
112
146
  }
113
147
  percentOffset = 0;
@@ -116,12 +150,21 @@ $: onDragStop =
116
150
  };
117
151
  </script>
118
152
 
153
+ <!-- Preload all Carousel images for improved responsivity -->
154
+ <svelte:head>
155
+ {#if images.length > 0}
156
+ {#each images as image}
157
+ <link rel="preload" href={image.src} as="image" />
158
+ {/each}
159
+ {/if}
160
+ </svelte:head>
161
+
119
162
  <!-- The move listeners go here, so things keep working if the touch strays out of the element. -->
120
163
  <svelte:document on:mousemove={onDragMove} on:mouseup={onDragStop} on:touchmove={onDragMove} on:touchend={onDragStop} />
121
- <div bind:this={carouselDiv} class="relative" on:mousedown={onDragStart} on:touchstart|passive={onDragStart} role="button" aria-label={ariaLabel} tabindex="0">
164
+ <div bind:this={carouselDiv} class="relative" on:mousedown|nonpassive={onDragStart} on:touchstart|nonpassive={onDragStart} on:mousemove={onDragMove} on:mouseup={onDragStop} on:touchmove={onDragMove} on:touchend={onDragStop} role="button" aria-label={ariaLabel} tabindex="0">
122
165
  <div {...$$restProps} class={twMerge(divClass, activeDragGesture === undefined ? 'transition-transform' : '', $$props.class)} use:loop={duration}>
123
166
  <slot name="slide" {Slide} {index}>
124
- <Slide image={images[index]} {transition} />
167
+ <Slide image={images[index]} class={imgClass} {transition} />
125
168
  </slot>
126
169
  </div>
127
170
  <slot {index} {Controls} {Indicators} />
@@ -133,7 +176,9 @@ $: onDragStop =
133
176
  ## Props
134
177
  @prop export let images: HTMLImgAttributes[];
135
178
  @prop export let index: number = 0;
136
- @prop export let transition: TransitionFunc = (x) => fade(x, { duration: 700, easing: quintOut });
179
+ @prop export let slideDuration: number = 1000;
180
+ @prop export let transition: TransitionFunc | null;
137
181
  @prop export let duration: number = 0;
138
182
  @prop export let ariaLabel: string = 'Draggable Carousel';
183
+ @prop export let imgClass: string = '';
139
184
  -->
@@ -2,9 +2,12 @@ import { SvelteComponent } from "svelte";
2
2
  export type State = {
3
3
  images: HTMLImgAttributes[];
4
4
  index: number;
5
+ lastSlideChange: Date;
6
+ slideDuration: number;
7
+ forward: boolean;
5
8
  };
6
9
  import type { HTMLImgAttributes } from 'svelte/elements';
7
- import { type TransitionConfig } from 'svelte/transition';
10
+ import type { TransitionConfig } from 'svelte/transition';
8
11
  import Controls from './Controls.svelte';
9
12
  import Indicators from './Indicators.svelte';
10
13
  import Slide from './Slide.svelte';
@@ -13,9 +16,11 @@ declare const __propDef: {
13
16
  [x: string]: any;
14
17
  images: HTMLImgAttributes[];
15
18
  index?: number | undefined;
16
- transition?: ((node: HTMLElement, params: any) => TransitionConfig) | undefined;
19
+ slideDuration?: number | undefined;
20
+ transition: ((node: HTMLElement, params: any) => TransitionConfig) | null;
17
21
  duration?: number | undefined;
18
22
  ariaLabel?: string | undefined;
23
+ imgClass?: string | undefined;
19
24
  };
20
25
  events: {
21
26
  change: CustomEvent<any>;
@@ -42,9 +47,11 @@ export type CarouselSlots = typeof __propDef.slots;
42
47
  * ## Props
43
48
  * @prop export let images: HTMLImgAttributes[];
44
49
  * @prop export let index: number = 0;
45
- * @prop export let transition: TransitionFunc = (x) => fade(x, { duration: 700, easing: quintOut });
50
+ * @prop export let slideDuration: number = 1000;
51
+ * @prop export let transition: TransitionFunc | null;
46
52
  * @prop export let duration: number = 0;
47
53
  * @prop export let ariaLabel: string = 'Draggable Carousel';
54
+ * @prop export let imgClass: string = '';
48
55
  */
49
56
  export default class Carousel extends SvelteComponent<CarouselProps, CarouselEvents, CarouselSlots> {
50
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Carousel.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AACC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAKJ,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAQ,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAgKnC,QAAA,MAAM,SAAS;;;gBADkH,iBAAiB,EAAE;;6BAlJrH,WAAW,UAAU,GAAG,KAAK,gBAAgB;;;;;;;;;;;;;;;;;;;;CAmJE,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,eAAe,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;CAClG"}
1
+ {"version":3,"file":"Carousel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Carousel.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AACC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAIJ,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,gBAAgB,CAAC;AA+MnC,QAAA,MAAM,SAAS;;;gBADsK,iBAAiB,EAAE;;;4BAhMzK,WAAW,UAAU,GAAG,KAAK,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAiME,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,eAAe,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;CAClG"}
@@ -0,0 +1,6 @@
1
+ export declare const canChangeSlide: ({ lastSlideChange, slideDuration, slideDurationRatio }: {
2
+ lastSlideChange: Date;
3
+ slideDuration: number;
4
+ slideDurationRatio?: number | undefined;
5
+ }) => boolean;
6
+ //# sourceMappingURL=CarouselSlide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CarouselSlide.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/CarouselSlide.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;qBAKR,IAAI;mBACN,MAAM;;aAStB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const canChangeSlide = ({ lastSlideChange, slideDuration, slideDurationRatio = 1 }) => {
2
+ if (lastSlideChange && new Date().getTime() - lastSlideChange.getTime() < slideDuration * slideDurationRatio) {
3
+ console.warn("Can't change slide yet, too soon");
4
+ return false;
5
+ }
6
+ return true;
7
+ };
@@ -1,17 +1,38 @@
1
1
  <script>import { getContext } from 'svelte';
2
2
  import ControlButton from './ControlButton.svelte';
3
- import { twJoin } from 'tailwind-merge';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { canChangeSlide } from './CarouselSlide';
4
5
  const state = getContext('state');
6
+ const { update } = state;
5
7
  function changeSlide(forward) {
6
- return function (ev) {
7
- if (ev.isTrusted)
8
- $state.index = forward ? $state.index + 1 : $state.index - 1;
9
- };
8
+ if (!canChangeSlide({
9
+ lastSlideChange: $state.lastSlideChange,
10
+ slideDuration: $state.slideDuration,
11
+ slideDurationRatio: 0.75
12
+ })) {
13
+ return;
14
+ }
15
+ if (forward) {
16
+ update((_state) => {
17
+ _state.forward = true;
18
+ _state.index = _state.index >= _state.images.length - 1 ? 0 : _state.index + 1;
19
+ _state.lastSlideChange = new Date();
20
+ return { ..._state };
21
+ });
22
+ }
23
+ else {
24
+ update((_state) => {
25
+ _state.forward = false;
26
+ _state.index = _state.index <= 0 ? _state.images.length - 1 : _state.index - 1;
27
+ _state.lastSlideChange = new Date();
28
+ return { ..._state };
29
+ });
30
+ }
10
31
  }
11
32
  </script>
12
33
 
13
34
  <!-- Slider controls -->
14
35
  <slot {ControlButton} {changeSlide}>
15
- <ControlButton name="Previous" forward={false} on:click={changeSlide(false)} class={twJoin($$props.class)} />
16
- <ControlButton name="Next" forward={true} on:click={changeSlide(true)} class={twJoin($$props.class)} />
36
+ <ControlButton name="Previous" forward={false} on:click={() => changeSlide(false)} class={twMerge($$props.class)} />
37
+ <ControlButton name="Next" forward={true} on:click={() => changeSlide(true)} class={twMerge($$props.class)} />
17
38
  </slot>
@@ -10,7 +10,7 @@ declare const __propDef: {
10
10
  slots: {
11
11
  default: {
12
12
  ControlButton: typeof ControlButton;
13
- changeSlide: (forward: boolean) => (ev: Event) => void;
13
+ changeSlide: (forward: boolean) => void;
14
14
  };
15
15
  };
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Controls.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Controls.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAID,OAAO,aAAa,MAAM,wBAAwB,CAAC;AA2BnD,QAAA,MAAM,SAAS;;;;;;;;;;mCAfiB,OAAO,UACd,KAAK;;;CAcgD,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,eAAe,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;CAClG"}
1
+ {"version":3,"file":"Controls.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Controls.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAID,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAoDnD,QAAA,MAAM,SAAS;;;;;;;;;;mCArCiB,OAAO;;;CAqCuC,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,eAAe,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;CAClG"}
@@ -1,20 +1,40 @@
1
- <script>import { quintOut } from 'svelte/easing';
2
- import { fade } from 'svelte/transition';
1
+ <script>import { fly } from 'svelte/transition';
3
2
  import { twMerge } from 'tailwind-merge';
3
+ import { getContext } from 'svelte';
4
+ const state = getContext('state');
4
5
  export let image;
5
- export let transition = (x) => fade(x, { duration: 700, easing: quintOut });
6
- let imgClass;
7
- $: imgClass = twMerge('absolute block w-full -translate-x-1/2 -translate-y-1/2 top-1/2 left-1/2 object-cover', $$props.class);
6
+ export let transition = null; // Optional transition function, overrides default slide transition
7
+ $: transitionSlideIn = {
8
+ x: $state.forward ? '100%' : '-100%',
9
+ opacity: 1,
10
+ width: '100%',
11
+ height: '100%',
12
+ duration: $state.slideDuration
13
+ };
14
+ $: transitionSlideOut = {
15
+ x: $state.forward ? '-100%' : '100%',
16
+ opacity: 0.9,
17
+ width: '100%',
18
+ height: '100%',
19
+ duration: $state.slideDuration
20
+ };
21
+ $: imgClass = twMerge('absolute block !w-full h-full object-cover', $$props.class);
8
22
  </script>
9
23
 
10
- {#key image}
11
- <img alt="..." {...image} transition:transition={{}} {...$$restProps} class={imgClass} />
12
- {/key}
24
+ {#if transition}
25
+ {#key image}
26
+ <img alt="..." {...image} transition:transition={{}} {...$$restProps} class={imgClass} />
27
+ {/key}
28
+ {:else}
29
+ {#key image}
30
+ <img alt="..." {...image} {...$$restProps} out:fly={transitionSlideOut} in:fly={transitionSlideIn} class={imgClass} />
31
+ {/key}
32
+ {/if}
13
33
 
14
34
  <!--
15
35
  @component
16
36
  [Go to docs](https://flowbite-svelte.com/)
17
37
  ## Props
18
38
  @prop export let image: HTMLImgAttributes;
19
- @prop export let transition: TransitionFunc = (x) => fade(x, { duration: 700, easing: quintOut });
39
+ @prop export let transition: TransitionFunc | null = null;
20
40
  -->
@@ -5,7 +5,7 @@ declare const __propDef: {
5
5
  props: {
6
6
  [x: string]: any;
7
7
  image: HTMLImgAttributes;
8
- transition?: ((node: HTMLElement, params: any) => TransitionConfig) | undefined;
8
+ transition?: ((node: HTMLElement, params: any) => TransitionConfig) | null | undefined;
9
9
  };
10
10
  events: {
11
11
  [evt: string]: CustomEvent<any>;
@@ -19,7 +19,7 @@ export type SlideSlots = typeof __propDef.slots;
19
19
  * [Go to docs](https://flowbite-svelte.com/)
20
20
  * ## Props
21
21
  * @prop export let image: HTMLImgAttributes;
22
- * @prop export let transition: TransitionFunc = (x) => fade(x, { duration: 700, easing: quintOut });
22
+ * @prop export let transition: TransitionFunc | null = null;
23
23
  */
24
24
  export default class Slide extends SvelteComponent<SlideProps, SlideEvents, SlideSlots> {
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Slide.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Slide.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AAED,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAQ,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA0BhE,QAAA,MAAM,SAAS;;;eADoD,iBAAiB;6BAhBrD,WAAW,UAAU,GAAG,KAAK,gBAAgB;;;;;;CAiBE,CAAC;AAC/E,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;CACtF"}
1
+ {"version":3,"file":"Slide.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Slide.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AACD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAO,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAsD/D,QAAA,MAAM,SAAS;;;eADoD,iBAAiB;6BArCrD,WAAW,UAAU,GAAG,KAAK,gBAAgB;;;;;;CAsCE,CAAC;AAC/E,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;CACtF"}
@@ -3,6 +3,20 @@ import Thumbnail from './Thumbnail.svelte';
3
3
  export let images = [];
4
4
  export let index = 0;
5
5
  export let ariaLabel = 'Click to view image';
6
+ export let imgClass = '';
7
+ export let throttleDelay = 650; // ms
8
+ let lastClickedAt = new Date();
9
+ const btnClick = (idx) => {
10
+ if (new Date().getTime() - lastClickedAt.getTime() < throttleDelay) {
11
+ console.warn('Thumbnail action throttled');
12
+ return;
13
+ }
14
+ if (idx === index) {
15
+ return;
16
+ }
17
+ index = idx;
18
+ lastClickedAt = new Date();
19
+ };
6
20
  $: index = (index + images.length) % images.length;
7
21
  </script>
8
22
 
@@ -10,9 +24,9 @@ $: index = (index + images.length) % images.length;
10
24
  {#each images as image, idx}
11
25
  {@const selected = index === idx}
12
26
  <!-- svelte-ignore a11y-click-events-have-key-events -->
13
- <button on:click={() => (index = idx)} aria-label={ariaLabel}>
14
- <slot {Thumbnail} {image} {selected}>
15
- <Thumbnail {...image} {selected} />
27
+ <button on:click={() => btnClick(idx)} aria-label={ariaLabel}>
28
+ <slot {Thumbnail} {image} {selected} {imgClass}>
29
+ <Thumbnail {...image} {selected} class={imgClass} />
16
30
  </slot>
17
31
  </button>
18
32
  {/each}
@@ -25,4 +39,6 @@ $: index = (index + images.length) % images.length;
25
39
  @prop export let images: HTMLImgAttributes[] = [];
26
40
  @prop export let index: number = 0;
27
41
  @prop export let ariaLabel: string = 'Click to view image';
42
+ @prop export let imgClass: string = '';
43
+ @prop export let throttleDelay: number = 650;
28
44
  -->
@@ -7,6 +7,8 @@ declare const __propDef: {
7
7
  images?: HTMLImgAttributes[] | undefined;
8
8
  index?: number | undefined;
9
9
  ariaLabel?: string | undefined;
10
+ imgClass?: string | undefined;
11
+ throttleDelay?: number | undefined;
10
12
  };
11
13
  events: {
12
14
  [evt: string]: CustomEvent<any>;
@@ -16,6 +18,7 @@ declare const __propDef: {
16
18
  Thumbnail: typeof Thumbnail;
17
19
  image: HTMLImgAttributes;
18
20
  selected: any;
21
+ imgClass: string;
19
22
  };
20
23
  };
21
24
  };
@@ -28,6 +31,8 @@ export type ThumbnailsSlots = typeof __propDef.slots;
28
31
  * @prop export let images: HTMLImgAttributes[] = [];
29
32
  * @prop export let index: number = 0;
30
33
  * @prop export let ariaLabel: string = 'Click to view image';
34
+ * @prop export let imgClass: string = '';
35
+ * @prop export let throttleDelay: number = 650;
31
36
  */
32
37
  export default class Thumbnails extends SvelteComponent<ThumbnailsProps, ThumbnailsEvents, ThumbnailsSlots> {
33
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Thumbnails.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Thumbnails.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AACD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,SAAS,MAAM,oBAAoB,CAAC;AA8B3C,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;CAA+D,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAe,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC;CAC1G"}
1
+ {"version":3,"file":"Thumbnails.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/carousel/Thumbnails.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AACD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,SAAS,MAAM,oBAAoB,CAAC;AA+C3C,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CAA+D,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAe,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC;CAC1G"}
@@ -1,3 +1,6 @@
1
+ <script context="module">"use strict";
2
+ </script>
3
+
1
4
  <script>import Calendar from './Calender.svelte';
2
5
  export let range = false;
3
6
  // autoHide not working
@@ -1,4 +1,15 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ declare module 'svelte/elements' {
3
+ interface HTMLAttributes<T> {
4
+ [x: `data-${string}`]: any;
5
+ 'date-rangepicker'?: boolean;
6
+ datepicker?: boolean;
7
+ 'datepicker-buttons'?: boolean;
8
+ 'datepicker-format'?: string;
9
+ 'datepicker-orientation'?: string;
10
+ 'datepicker-title'?: string;
11
+ }
12
+ }
2
13
  declare const __propDef: {
3
14
  props: {
4
15
  [x: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"Datepicker.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/datepicker/Datepicker.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AA8DD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;CAA+D,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAe,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC;CAC1G"}
1
+ {"version":3,"file":"Datepicker.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/datepicker/Datepicker.svelte"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAEvC;AACC,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,cAAc,CAAC,CAAC;QACxB,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC;QAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;CACF;AAkEH,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;CAA+D,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAe,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC;CAC1G"}