@agnos-ui/svelte-bootstrap 0.4.4 → 0.5.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.
Files changed (103) hide show
  1. package/README.md +2 -2
  2. package/components/accordion/Accordion.svelte +20 -18
  3. package/components/accordion/Accordion.svelte.d.ts +8 -23
  4. package/components/accordion/Item.svelte +40 -44
  5. package/components/accordion/Item.svelte.d.ts +5 -20
  6. package/components/accordion/ItemDefaultStructure.svelte +17 -27
  7. package/components/accordion/ItemDefaultStructure.svelte.d.ts +3 -17
  8. package/components/accordion/accordion.d.ts +11 -6
  9. package/components/accordion/accordion.gen.d.ts +37 -9
  10. package/components/accordion/accordion.js +10 -0
  11. package/components/alert/Alert.svelte +36 -40
  12. package/components/alert/Alert.svelte.d.ts +5 -21
  13. package/components/alert/AlertDefaultStructure.svelte +8 -12
  14. package/components/alert/AlertDefaultStructure.svelte.d.ts +3 -17
  15. package/components/alert/alert.gen.d.ts +21 -2
  16. package/components/alert/index.d.ts +1 -1
  17. package/components/alert/index.js +1 -1
  18. package/components/collapse/Collapse.svelte +33 -0
  19. package/components/collapse/Collapse.svelte.d.ts +8 -0
  20. package/components/collapse/collapse.gen.d.ts +146 -0
  21. package/components/collapse/collapse.gen.js +14 -0
  22. package/components/collapse/index.d.ts +3 -0
  23. package/components/collapse/index.js +3 -0
  24. package/components/modal/Modal.svelte +45 -47
  25. package/components/modal/Modal.svelte.d.ts +16 -14
  26. package/components/modal/ModalDefaultHeader.svelte +10 -17
  27. package/components/modal/ModalDefaultHeader.svelte.d.ts +15 -12
  28. package/components/modal/ModalDefaultStructure.svelte +10 -36
  29. package/components/modal/ModalDefaultStructure.svelte.d.ts +15 -12
  30. package/components/modal/index.d.ts +1 -1
  31. package/components/modal/index.js +1 -1
  32. package/components/modal/modal.gen.d.ts +35 -18
  33. package/components/modal/modalService.d.ts +19 -1
  34. package/components/modal/modalService.js +21 -2
  35. package/components/pagination/Pagination.svelte +39 -47
  36. package/components/pagination/Pagination.svelte.d.ts +3 -21
  37. package/components/pagination/PaginationDefaultPages.svelte +13 -43
  38. package/components/pagination/PaginationDefaultPages.svelte.d.ts +3 -17
  39. package/components/pagination/PaginationDefaultStructure.svelte +18 -89
  40. package/components/pagination/PaginationDefaultStructure.svelte.d.ts +3 -17
  41. package/components/pagination/index.d.ts +1 -1
  42. package/components/pagination/index.js +1 -1
  43. package/components/pagination/pagination.gen.d.ts +49 -29
  44. package/components/progressbar/Progressbar.svelte +28 -31
  45. package/components/progressbar/Progressbar.svelte.d.ts +3 -21
  46. package/components/progressbar/ProgressbarDefaultStructure.svelte +6 -11
  47. package/components/progressbar/ProgressbarDefaultStructure.svelte.d.ts +3 -17
  48. package/components/progressbar/index.d.ts +1 -1
  49. package/components/progressbar/index.js +1 -1
  50. package/components/progressbar/progressbar.gen.d.ts +21 -4
  51. package/components/rating/Rating.svelte +33 -27
  52. package/components/rating/Rating.svelte.d.ts +3 -18
  53. package/components/rating/index.d.ts +1 -1
  54. package/components/rating/index.js +1 -1
  55. package/components/rating/rating.gen.d.ts +25 -17
  56. package/components/select/Select.svelte +57 -81
  57. package/components/select/Select.svelte.d.ts +16 -14
  58. package/components/select/index.d.ts +1 -1
  59. package/components/select/index.js +1 -1
  60. package/components/select/select.gen.d.ts +41 -25
  61. package/components/slider/Slider.svelte +39 -40
  62. package/components/slider/Slider.svelte.d.ts +3 -21
  63. package/components/slider/SliderDefaultHandle.svelte +7 -4
  64. package/components/slider/SliderDefaultHandle.svelte.d.ts +3 -17
  65. package/components/slider/SliderDefaultStructure.svelte +21 -75
  66. package/components/slider/SliderDefaultStructure.svelte.d.ts +3 -17
  67. package/components/slider/index.d.ts +1 -1
  68. package/components/slider/index.js +1 -1
  69. package/components/slider/slider.gen.d.ts +54 -33
  70. package/components/toast/Toast.svelte +43 -40
  71. package/components/toast/Toast.svelte.d.ts +5 -21
  72. package/components/toast/ToastDefaultStructure.svelte +13 -23
  73. package/components/toast/ToastDefaultStructure.svelte.d.ts +3 -17
  74. package/components/toast/index.d.ts +1 -1
  75. package/components/toast/index.js +1 -1
  76. package/components/toast/toast.gen.d.ts +22 -2
  77. package/config.d.ts +1 -12
  78. package/config.gen.d.ts +5 -0
  79. package/generated/index.d.ts +1 -1
  80. package/generated/index.js +1 -1
  81. package/generated/utils/widget.svelte.d.ts +1 -0
  82. package/generated/utils/widget.svelte.js +1 -0
  83. package/index.d.ts +1 -0
  84. package/index.js +1 -0
  85. package/package.json +8 -7
  86. package/components/alert/alert.d.ts +0 -5
  87. package/components/alert/alert.js +0 -1
  88. package/components/modal/modal.d.ts +0 -5
  89. package/components/modal/modal.js +0 -1
  90. package/components/pagination/pagination.d.ts +0 -5
  91. package/components/pagination/pagination.js +0 -1
  92. package/components/progressbar/progressbar.d.ts +0 -5
  93. package/components/progressbar/progressbar.js +0 -1
  94. package/components/rating/rating.d.ts +0 -5
  95. package/components/rating/rating.js +0 -1
  96. package/components/select/select.d.ts +0 -5
  97. package/components/select/select.js +0 -1
  98. package/components/slider/slider.d.ts +0 -5
  99. package/components/slider/slider.js +0 -1
  100. package/components/toast/toast.d.ts +0 -5
  101. package/components/toast/toast.js +0 -1
  102. package/generated/utils/widget.d.ts +0 -1
  103. package/generated/utils/widget.js +0 -1
@@ -1,96 +1,72 @@
1
- <script context="module">
1
+ <script lang="ts" generics="Item">
2
2
  import {ssrAttributes as __AgnosUISveltePreprocess__ssrAttributes, classDirective as __AgnosUISveltePreprocess__classDirective} from '@agnos-ui/svelte-headless/utils/directive';
3
3
  import {BROWSER as __AgnosUISveltePreprocess__BROWSER} from 'esm-env';
4
- import { Slot } from "@agnos-ui/svelte-headless/slot";
5
- import { callWidgetFactory } from "../../config";
6
- import { createSelect } from "./select";
7
- </script>
8
4
 
9
- <script>export let open = false;
10
- export let filterText = void 0;
11
- export let selected = void 0;
12
- const widget = callWidgetFactory({
13
- factory: createSelect,
14
- widgetName: "select",
15
- $$slots,
16
- $$props,
17
- events: {
18
- onOpenChange: function(isOpen) {
19
- open = isOpen;
20
- },
21
- onSelectedChange: (newSelection) => {
22
- selected = newSelection;
23
- },
24
- onFilterTextChange: (value) => {
25
- filterText = value;
26
- }
27
- }
28
- });
29
- export const api = widget.api;
30
- const {
31
- stores: { id$, ariaLabel$, highlighted$, open$, selectedContexts$, badgeLabel$, itemLabel$, visibleItems$, className$, filterText$ },
32
- state$,
33
- actions: { onInput, onInputKeydown },
34
- directives: {
35
- floatingDirective,
36
- hasFocusDirective,
37
- referenceDirective,
38
- inputContainerDirective,
39
- badgeAttributesDirective,
40
- menuAttributesDirective,
41
- itemAttributesDirective
42
- }
43
- } = widget;
44
- $: widget.patchChangedProps($$props);
5
+ import {Slot} from '@agnos-ui/svelte-headless/slot';
6
+ import {callWidgetFactory} from '../../config';
7
+ import type {SelectApi, SelectItemContext, SelectProps, SelectWidget} from './select.gen';
8
+ import {createSelect} from './select.gen';
9
+
10
+ let {open = $bindable(false), filterText = $bindable(), selected = $bindable(), ...props}: Partial<SelectProps<Item>> = $props();
11
+
12
+ const widget = callWidgetFactory<SelectWidget<Item>>({
13
+ factory: createSelect,
14
+ widgetName: 'select',
15
+ get props() {
16
+ return {...props, open, filterText, selected};
17
+ },
18
+ enablePatchChanged: true,
19
+ defaultConfig: {badgeLabel, itemLabel},
20
+ events: {
21
+ onOpenChange: function (isOpen: boolean): void {
22
+ open = isOpen;
23
+ },
24
+ onSelectedChange: (newSelection) => {
25
+ selected = newSelection;
26
+ },
27
+ onFilterTextChange: (value) => {
28
+ filterText = value;
29
+ },
30
+ },
31
+ });
32
+ export const api: SelectApi<Item> = widget.api;
33
+ const {
34
+ state,
35
+ directives: {
36
+ floatingDirective,
37
+ hasFocusDirective,
38
+ referenceDirective,
39
+ inputContainerDirective,
40
+ badgeAttributesDirective,
41
+ menuAttributesDirective,
42
+ itemAttributesDirective,
43
+ inputDirective,
44
+ },
45
+ } = widget;
45
46
  </script>
46
47
 
47
- <div use:referenceDirective use:__AgnosUISveltePreprocess__classDirective={"au-select dropdown border border-1 p-1 mb-3 d-block "+($className$)} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(referenceDirective, [__AgnosUISveltePreprocess__classDirective, "au-select dropdown border border-1 p-1 mb-3 d-block "+($className$)])}>
48
+ {#snippet badgeLabel({itemContext}: SelectItemContext<Item>)}
49
+ {itemContext.item}
50
+ {/snippet}
51
+ {#snippet itemLabel({itemContext}: SelectItemContext<Item>)}
52
+ {itemContext.item}
53
+ {/snippet}
54
+
55
+ <div use:referenceDirective use:__AgnosUISveltePreprocess__classDirective={"au-select dropdown border border-1 p-1 mb-3 d-block "+(state.className)} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(referenceDirective, [__AgnosUISveltePreprocess__classDirective, "au-select dropdown border border-1 p-1 mb-3 d-block "+(state.className)])}>
48
56
  <div use:hasFocusDirective use:inputContainerDirective use:__AgnosUISveltePreprocess__classDirective={"d-flex align-items-center flex-wrap gap-1"} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(hasFocusDirective, inputContainerDirective, [__AgnosUISveltePreprocess__classDirective, "d-flex align-items-center flex-wrap gap-1"])}>
49
- {#each $selectedContexts$ as itemContext (itemContext.id)}
57
+ {#each state.selectedContexts as itemContext (itemContext.id)}
50
58
  <div use:badgeAttributesDirective={itemContext} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([badgeAttributesDirective, itemContext])}>
51
- <Slot slotContent={$badgeLabel$} props={{state: $state$, widget, itemContext}} let:component let:props>
52
- <svelte:fragment slot="slot" let:props><slot name="badgeLabel" {...props} /></svelte:fragment>
53
- <svelte:component this={component} {...props}>
54
- <svelte:fragment slot="badgeLabel" let:itemContext let:state let:widget
55
- ><slot name="badgeLabel" {itemContext} {state} {widget} /></svelte:fragment
56
- >
57
- <svelte:fragment slot="itemLabel" let:itemContext let:state let:widget
58
- ><slot name="itemLabel" {itemContext} {state} {widget} /></svelte:fragment
59
- >
60
- </svelte:component>
61
- </Slot>
59
+ <Slot content={state.badgeLabel} props={{state, directives: widget.directives, api: widget.api, itemContext}} />
62
60
  </div>
63
61
  {/each}
64
- <input
65
- id={$id$}
66
- aria-label={$ariaLabel$}
67
- type="text"
68
- class="au-select-input flex-grow-1 border-0"
69
- value={$filterText$}
70
- aria-autocomplete="list"
71
- autoCorrect="off"
72
- autoCapitalize="none"
73
- autoComplete="off"
74
- on:input={onInput}
75
- on:keydown={onInputKeydown}
76
- />
62
+ <input value={state.filterText} use:inputDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(inputDirective)} />
77
63
  </div>
78
- {#if $open$ && $visibleItems$.length > 0}
64
+ {#if state.open && state.visibleItems.length > 0}
79
65
  <ul use:hasFocusDirective use:floatingDirective use:menuAttributesDirective use:__AgnosUISveltePreprocess__classDirective={"dropdown-menu show"} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(hasFocusDirective, floatingDirective, menuAttributesDirective, [__AgnosUISveltePreprocess__classDirective, "dropdown-menu show"])}>
80
- {#each $visibleItems$ as itemContext (itemContext.id)}
81
- {@const isHighlighted = itemContext === $highlighted$}
66
+ {#each state.visibleItems as itemContext (itemContext.id)}
67
+ {@const isHighlighted = itemContext === state.highlighted}
82
68
  <li use:__AgnosUISveltePreprocess__classDirective={"dropdown-item position-relative"} class:text-bg-primary={isHighlighted} use:itemAttributesDirective={itemContext} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([itemAttributesDirective, itemContext], [__AgnosUISveltePreprocess__classDirective, "dropdown-item position-relative"])}>
83
- <Slot slotContent={$itemLabel$} props={{state: $state$, widget, itemContext}} let:component let:props>
84
- <svelte:fragment slot="slot" let:props><slot name="itemLabel" {...props} /></svelte:fragment>
85
- <svelte:component this={component} {...props}>
86
- <svelte:fragment slot="badgeLabel" let:itemContext let:state let:widget
87
- ><slot name="badgeLabel" {itemContext} {state} {widget} /></svelte:fragment
88
- >
89
- <svelte:fragment slot="itemLabel" let:itemContext let:state let:widget
90
- ><slot name="itemLabel" {itemContext} {state} {widget} /></svelte:fragment
91
- >
92
- </svelte:component>
93
- </Slot>
69
+ <Slot content={state.itemLabel} props={{state, directives: widget.directives, api: widget.api, itemContext}} />
94
70
  </li>
95
71
  {/each}
96
72
  </ul>
@@ -1,18 +1,20 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { SelectApi, SelectProps, SelectSlots } from './select';
1
+ import type { SelectApi, SelectProps } from './select.gen';
3
2
  declare class __sveltets_Render<Item> {
4
- props(): {
5
- api?: SelectApi<Item> | undefined;
6
- } & Partial<SelectProps<Item>>;
7
- events(): {} & {
8
- [evt: string]: CustomEvent<any>;
3
+ props(): Partial<SelectProps<Item>>;
4
+ events(): {};
5
+ slots(): {};
6
+ bindings(): "open" | "selected" | "filterText";
7
+ exports(): {
8
+ api: SelectApi<Item>;
9
9
  };
10
- slots(): SelectSlots<Item>;
11
10
  }
12
- export type SelectProps_<Item> = ReturnType<__sveltets_Render<Item>['props']>;
13
- export type SelectEvents<Item> = ReturnType<__sveltets_Render<Item>['events']>;
14
- export type SelectSlots_<Item> = ReturnType<__sveltets_Render<Item>['slots']>;
15
- export default class Select<Item> extends SvelteComponent<SelectProps_<Item>, SelectEvents<Item>, SelectSlots_<Item>> {
16
- get api(): SelectApi<Item>;
11
+ interface $$IsomorphicComponent {
12
+ new <Item>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Item>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Item>['props']>, ReturnType<__sveltets_Render<Item>['events']>, ReturnType<__sveltets_Render<Item>['slots']>> & {
13
+ $$bindings?: ReturnType<__sveltets_Render<Item>['bindings']>;
14
+ } & ReturnType<__sveltets_Render<Item>['exports']>;
15
+ <Item>(internal: unknown, props: ReturnType<__sveltets_Render<Item>['props']> & {}): ReturnType<__sveltets_Render<Item>['exports']>;
16
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
17
17
  }
18
- export {};
18
+ declare const Select: $$IsomorphicComponent;
19
+ type Select<Item> = InstanceType<typeof Select<Item>>;
20
+ export default Select;
@@ -1,3 +1,3 @@
1
1
  import Select from './Select.svelte';
2
- export * from './select';
2
+ export * from './select.gen';
3
3
  export { Select };
@@ -1,3 +1,3 @@
1
1
  import Select from './Select.svelte';
2
- export * from './select';
2
+ export * from './select.gen';
3
3
  export { Select };
@@ -9,15 +9,28 @@ import type { FloatingUI } from '@agnos-ui/svelte-headless/services/floatingUI';
9
9
  declare const export_getSelectDefaultConfig: () => SelectProps<any>;
10
10
  export { export_getSelectDefaultConfig as getSelectDefaultConfig };
11
11
  /**
12
- * A type for the slot context of the pagination widget
12
+ * Interface for the slot context of the pagination widget
13
+ * @template Item - The type of the items in the Select component.
13
14
  */
14
- export type SelectContext<Item> = WidgetSlotContext<SelectWidget<Item>>;
15
- export type SelectItemContext<Item> = SelectContext<Item> & {
15
+ export interface SelectContext<Item> extends WidgetSlotContext<SelectWidget<Item>> {
16
+ }
17
+ /**
18
+ * Represents the context for a select item, extending the base `SelectContext` with additional
19
+ * contextual data specific to an item.
20
+ *
21
+ * @template Item - The type of the item within the select context.
22
+ */
23
+ export interface SelectItemContext<Item> extends SelectContext<Item> {
16
24
  /**
17
25
  * Contextual data related to an item
18
26
  */
19
27
  itemContext: ItemContext<Item>;
20
- };
28
+ }
29
+ /**
30
+ * Represents the state of a Select component.
31
+ *
32
+ * @template Item - The type of the items in the select component.
33
+ */
21
34
  export interface SelectState<Item> {
22
35
  /**
23
36
  * List of item contexts, to be displayed in the menu
@@ -121,6 +134,11 @@ export interface SelectState<Item> {
121
134
  */
122
135
  itemLabel: SlotContent<SelectItemContext<Item>>;
123
136
  }
137
+ /**
138
+ * Represents the properties for the Select component.
139
+ *
140
+ * @template Item - The type of the items in the select component.
141
+ */
124
142
  export interface SelectProps<Item> {
125
143
  /**
126
144
  * List of available items for the dropdown
@@ -273,7 +291,12 @@ export interface SelectProps<Item> {
273
291
  */
274
292
  itemLabel: SlotContent<SelectItemContext<Item>>;
275
293
  }
276
- export type SelectWidget<Item> = Widget<SelectProps<Item>, SelectState<Item>, SelectApi<Item>, SelectActions<Item>, SelectDirectives<Item>>;
294
+ /**
295
+ * Represents a Select widget component.
296
+ *
297
+ * @template Item - The type of the items that the select widget will handle.
298
+ */
299
+ export type SelectWidget<Item> = Widget<SelectProps<Item>, SelectState<Item>, SelectApi<Item>, SelectDirectives<Item>>;
277
300
  /**
278
301
  * Creates a new select widget instance.
279
302
  * @param config - config of the modal, either as a store or as an object containing values or stores.
@@ -281,6 +304,9 @@ export type SelectWidget<Item> = Widget<SelectProps<Item>, SelectState<Item>, Se
281
304
  */
282
305
  declare const export_createSelect: <Item>(config?: PropsConfig<SelectProps<Item>>) => SelectWidget<Item>;
283
306
  export { export_createSelect as createSelect };
307
+ /**
308
+ * Item representation built from the items provided in parameters
309
+ */
284
310
  export interface ItemContext<T> {
285
311
  /**
286
312
  * Original item given in the parameters
@@ -295,6 +321,9 @@ export interface ItemContext<T> {
295
321
  */
296
322
  selected: boolean;
297
323
  }
324
+ /**
325
+ * Interface representing the API for a Select component.
326
+ */
298
327
  export interface SelectApi<Item> {
299
328
  /**
300
329
  * Clear all the selected items
@@ -357,6 +386,9 @@ export interface SelectApi<Item> {
357
386
  */
358
387
  toggle(isOpen?: boolean): void;
359
388
  }
389
+ /**
390
+ * Interface representing the directives used in the Select component.
391
+ */
360
392
  export interface SelectDirectives<Item> {
361
393
  /**
362
394
  * Directive to be used in the input group and the menu containers
@@ -386,28 +418,12 @@ export interface SelectDirectives<Item> {
386
418
  * A directive that applies all the necessary attributes to the dropdown item
387
419
  */
388
420
  itemAttributesDirective: Directive<ItemContext<Item>>;
389
- }
390
- export interface SelectActions<Item> {
391
421
  /**
392
- * Method to be plugged to on the 'input' event. The input text will be used as the filter text.
422
+ * A directive to be applied to the input
393
423
  */
394
- onInput: (e: {
395
- target: any;
396
- }) => void;
424
+ inputDirective: Directive;
397
425
  /**
398
- * Method to be attached to the node element to close a badge on click.
399
- */
400
- onRemoveBadgeClick: (event: MouseEvent, item: Item) => void;
401
- /**
402
- * Method to be plugged to on an keydown event of the main input, in order to control the keyboard interactions with the highlighted item.
403
- * It manages arrow keys to move the highlighted item, or enter to toggle the item.
404
- */
405
- onInputKeydown: (event: KeyboardEvent) => void;
406
- /**
407
- * Method to be plugged to on an keydown event of a badge container, in order to manage main actions on badges.
408
- *
409
- * @param event - keyboard event
410
- * @param item - corresponding item
426
+ * A directive to be applied to a button that closes a badge
411
427
  */
412
- onBadgeKeydown: (event: KeyboardEvent, item: Item) => void;
428
+ badgeCloseButtonDirective: Directive<ItemContext<Item>>;
413
429
  }
@@ -1,48 +1,47 @@
1
- <script context="module">
1
+ <script lang="ts">
2
2
  import {ssrAttributes as __AgnosUISveltePreprocess__ssrAttributes} from '@agnos-ui/svelte-headless/utils/directive';
3
3
  import {BROWSER as __AgnosUISveltePreprocess__BROWSER} from 'esm-env';
4
- import { createSlider } from "./slider";
5
- import { Slot } from "@agnos-ui/svelte-headless/slot";
6
- import { callWidgetFactory } from "../../config";
7
- import SliderDefaultStructure from "./SliderDefaultStructure.svelte";
8
- import SliderDefaultHandle from "./SliderDefaultHandle.svelte";
9
- const defaultConfig = {
10
- structure: SliderDefaultStructure,
11
- handle: SliderDefaultHandle
12
- };
13
- </script>
14
4
 
15
- <script>export let values = void 0;
16
- const widget = callWidgetFactory({
17
- factory: createSlider,
18
- widgetName: "slider",
19
- $$slots,
20
- $$props,
21
- defaultConfig,
22
- events: {
23
- onValuesChange: function(newValues) {
24
- values = newValues;
25
- }
26
- }
27
- });
28
- export const api = widget.api;
29
- const {
30
- stores: { structure$ },
31
- directives: { sliderDirective },
32
- state$
33
- } = widget;
34
- $: widget.patchChangedProps($$props);
35
- $: slotContext = { widget, state: $state$ };
5
+ import type {SliderContext, SliderProps, SliderSlotHandleContext, SliderSlotLabelContext} from './slider.gen';
6
+ import {createSlider} from './slider.gen';
7
+ import {Slot} from '@agnos-ui/svelte-headless/slot';
8
+ import {callWidgetFactory} from '../../config';
9
+ import SliderDefaultStructure from './SliderDefaultStructure.svelte';
10
+ import SliderDefaultHandle from './SliderDefaultHandle.svelte';
11
+
12
+ let {values = $bindable(), ...props}: Partial<SliderProps> = $props();
13
+
14
+ const widget = callWidgetFactory({
15
+ factory: createSlider,
16
+ widgetName: 'slider',
17
+ get props() {
18
+ return {...props, values};
19
+ },
20
+ enablePatchChanged: true,
21
+ defaultConfig: {structure, handle, label},
22
+ events: {
23
+ onValuesChange: function (newValues: number[]): void {
24
+ values = newValues;
25
+ },
26
+ },
27
+ });
28
+ const {
29
+ directives: {sliderDirective},
30
+ state,
31
+ } = widget;
36
32
  </script>
37
33
 
34
+ {#snippet structure(props: SliderContext)}
35
+ <SliderDefaultStructure {...props} />
36
+ {/snippet}
37
+ {#snippet handle(props: SliderSlotHandleContext)}
38
+ <SliderDefaultHandle {...props} />
39
+ {/snippet}
40
+ {#snippet label({value}: SliderSlotLabelContext)}
41
+ {value}
42
+ {/snippet}
43
+
38
44
  <!-- on:blur={onTouched} ?? -->
39
45
  <div use:sliderDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(sliderDirective)}>
40
- <Slot slotContent={$structure$} props={slotContext} let:component let:props>
41
- <svelte:fragment slot="slot" let:props><slot name="structure" {...props} /></svelte:fragment>
42
- <svelte:component this={component} {...props}>
43
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
44
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
45
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
46
- </svelte:component>
47
- </Slot>
46
+ <Slot content={state.structure} props={widget} />
48
47
  </div>
@@ -1,21 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { SliderApi, SliderProps, SliderSlots } from './slider';
3
- declare const __propDef: {
4
- props: {
5
- api?: SliderApi;
6
- } & Partial<SliderProps>;
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: SliderSlots;
11
- exports?: {} | undefined;
12
- bindings?: string | undefined;
13
- };
14
- type SliderProps_ = typeof __propDef.props;
15
- export { SliderProps_ as SliderProps };
16
- export type SliderEvents = typeof __propDef.events;
17
- type SliderSlots_ = typeof __propDef.slots;
18
- export { SliderSlots_ as SliderSlots };
19
- export default class Slider extends SvelteComponent<SliderProps_, SliderEvents, SliderSlots_> {
20
- get api(): SliderApi;
21
- }
1
+ import type { SliderProps } from './slider.gen';
2
+ declare const Slider: import("svelte").Component<Partial<SliderProps>, {}, "values">;
3
+ export default Slider;
@@ -1,8 +1,11 @@
1
- <script>
1
+ <script lang="ts">
2
2
  import {ssrAttributes as __AgnosUISveltePreprocess__ssrAttributes} from '@agnos-ui/svelte-headless/utils/directive';
3
3
  import {BROWSER as __AgnosUISveltePreprocess__BROWSER} from 'esm-env';
4
- export let item;
5
- export let widget;
4
+
5
+ import type {SliderSlotHandleContext} from './slider.gen';
6
+
7
+ let {item, directives}: SliderSlotHandleContext = $props();
6
8
  </script>
7
9
 
8
- <button use:widget.directives.handleDirective={{item}} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([widget.directives.handleDirective, {item}])}> &nbsp; </button>
10
+ <!-- svelte-ignore a11y_consider_explicit_label -->
11
+ <button use:directives.handleDirective={{item}} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([directives.handleDirective, {item}])}> &nbsp; </button>
@@ -1,17 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { SliderSlots } from './slider';
3
- declare const __propDef: {
4
- props: any;
5
- events: {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots: SliderSlots;
9
- exports?: {} | undefined;
10
- bindings?: string | undefined;
11
- };
12
- export type SliderDefaultHandleProps = typeof __propDef.props;
13
- export type SliderDefaultHandleEvents = typeof __propDef.events;
14
- export type SliderDefaultHandleSlots = typeof __propDef.slots;
15
- export default class SliderDefaultHandle extends SvelteComponent<SliderDefaultHandleProps, SliderDefaultHandleEvents, SliderDefaultHandleSlots> {
16
- }
17
- export {};
1
+ import type { SliderSlotHandleContext } from './slider.gen';
2
+ declare const SliderDefaultHandle: import("svelte").Component<SliderSlotHandleContext, {}, "">;
3
+ export default SliderDefaultHandle;
@@ -1,96 +1,42 @@
1
- <script>
1
+ <script lang="ts">
2
2
  import {ssrAttributes as __AgnosUISveltePreprocess__ssrAttributes} from '@agnos-ui/svelte-headless/utils/directive';
3
3
  import {BROWSER as __AgnosUISveltePreprocess__BROWSER} from 'esm-env';
4
- import { Slot } from "@agnos-ui/svelte-headless/slot";
5
- export let state;
6
- export let widget;
7
- $: slotContext = { widget, state };
4
+
5
+ import type {SliderContext} from './slider.gen';
6
+ import {Slot} from '@agnos-ui/svelte-headless/slot';
7
+
8
+ let widget: SliderContext = $props();
9
+ let {state, directives} = widget;
8
10
  </script>
9
11
 
10
12
  {#each state.progressDisplayOptions as option}
11
- <div use:widget.directives.progressDisplayDirective={{option}} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([widget.directives.progressDisplayDirective, {option}])} />
13
+ <div use:directives.progressDisplayDirective={{option}} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([directives.progressDisplayDirective, {option}])}></div>
12
14
  {/each}
13
- <div use:widget.directives.clickableAreaDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(widget.directives.clickableAreaDirective)} />
15
+ <div use:directives.clickableAreaDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(directives.clickableAreaDirective)}></div>
14
16
  {#if state.showMinMaxLabels}
15
- <div use:widget.directives.minLabelDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(widget.directives.minLabelDirective)}>
16
- <Slot slotContent={state.label} props={{value: state.min, ...slotContext}} let:component let:props>
17
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
18
- <svelte:component this={component} {...props}>
19
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
20
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
21
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
22
- </svelte:component>
23
- </Slot>
17
+ <div use:directives.minLabelDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(directives.minLabelDirective)}>
18
+ <Slot content={state.label} props={{value: state.min, ...widget}} />
24
19
  </div>
25
- <div use:widget.directives.maxLabelDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(widget.directives.maxLabelDirective)}>
26
- <Slot slotContent={state.label} props={{value: state.max, ...slotContext}} let:component let:props>
27
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
28
- <svelte:component this={component} {...props}>
29
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
30
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
31
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
32
- </svelte:component>
33
- </Slot>
20
+ <div use:directives.maxLabelDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(directives.maxLabelDirective)}>
21
+ <Slot content={state.label} props={{value: state.max, ...widget}} />
34
22
  </div>
35
23
  {/if}
36
24
  {#if state.showValueLabels && state.combinedLabelDisplay}
37
- <div use:widget.directives.combinedHandleLabelDisplayDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(widget.directives.combinedHandleLabelDisplayDirective)}>
25
+ <div use:directives.combinedHandleLabelDisplayDirective {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes(directives.combinedHandleLabelDisplayDirective)}>
38
26
  {#if state.rtl}
39
- <Slot slotContent={state.label} props={{value: state.sortedValues[1], ...slotContext}} let:component let:props>
40
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
41
- <svelte:component this={component} {...props}>
42
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
43
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
44
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
45
- </svelte:component>
46
- </Slot> -
47
- <Slot slotContent={state.label} props={{value: state.sortedValues[0], ...slotContext}} let:component let:props>
48
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
49
- <svelte:component this={component} {...props}>
50
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
51
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
52
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
53
- </svelte:component>
54
- </Slot>
27
+ <Slot content={state.label} props={{value: state.sortedValues[1], ...widget}} /> -
28
+ <Slot content={state.label} props={{value: state.sortedValues[0], ...widget}} />
55
29
  {:else}
56
- <Slot slotContent={state.label} props={{value: state.sortedValues[0], ...slotContext}} let:component let:props>
57
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
58
- <svelte:component this={component} {...props}>
59
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
60
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
61
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
62
- </svelte:component>
63
- </Slot> -
64
- <Slot slotContent={state.label} props={{value: state.sortedValues[1], ...slotContext}} let:component let:props>
65
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
66
- <svelte:component this={component} {...props}>
67
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
68
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
69
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
70
- </svelte:component>
71
- </Slot>
30
+ <Slot content={state.label} props={{value: state.sortedValues[0], ...widget}} /> -
31
+ <Slot content={state.label} props={{value: state.sortedValues[1], ...widget}} />
72
32
  {/if}
73
33
  </div>
74
34
  {/if}
75
35
  {#each state.sortedHandles as item, i (item.id)}
76
- <Slot slotContent={state.handle} props={{item, ...slotContext}} let:component let:props>
77
- <svelte:fragment slot="slot" let:props><slot name="handle" {...props} /></svelte:fragment>
78
- <svelte:component this={component} {...props}>
79
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
80
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
81
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
82
- </svelte:component>
83
- </Slot>
36
+ <Slot content={state.handle} props={{item, ...widget}} />
84
37
  {#if state.showValueLabels && !state.combinedLabelDisplay}
85
- <div use:widget.directives.handleLabelDisplayDirective={{index: i}} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([widget.directives.handleLabelDisplayDirective, {index: i}])}>
86
- <Slot slotContent={state.label} props={{value: state.values[i], ...slotContext}} let:component let:props>
87
- <svelte:fragment slot="slot" let:props><slot name="label" {...props} /></svelte:fragment>
88
- <svelte:component this={component} {...props}>
89
- <svelte:fragment slot="handle" let:item let:state let:widget><slot name="handle" {item} {state} {widget} /></svelte:fragment>
90
- <svelte:fragment slot="label" let:state let:value let:widget><slot name="label" {state} {value} {widget} /></svelte:fragment>
91
- <svelte:fragment slot="structure" let:state let:widget><slot name="structure" {state} {widget} /></svelte:fragment>
92
- </svelte:component>
93
- </Slot>
38
+ <div use:directives.handleLabelDisplayDirective={{index: i}} {...__AgnosUISveltePreprocess__BROWSER ? {} : __AgnosUISveltePreprocess__ssrAttributes([directives.handleLabelDisplayDirective, {index: i}])}>
39
+ <Slot content={state.label} props={{value: state.values[i], ...widget}} />
94
40
  </div>
95
41
  {/if}
96
42
  {/each}
@@ -1,17 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { SliderSlots } from './slider';
3
- declare const __propDef: {
4
- props: WidgetSlotContext<Widget<import("./slider.gen").SliderProps, import("./slider.gen").SliderState, import("./slider.gen").SliderApi, import("./slider.gen").SliderActions, import("./slider.gen").SliderDirectives>>;
5
- events: {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots: SliderSlots;
9
- exports?: {} | undefined;
10
- bindings?: string | undefined;
11
- };
12
- export type SliderDefaultStructureProps = typeof __propDef.props;
13
- export type SliderDefaultStructureEvents = typeof __propDef.events;
14
- export type SliderDefaultStructureSlots = typeof __propDef.slots;
15
- export default class SliderDefaultStructure extends SvelteComponent<SliderDefaultStructureProps, SliderDefaultStructureEvents, SliderDefaultStructureSlots> {
16
- }
17
- export {};
1
+ import type { SliderContext } from './slider.gen';
2
+ declare const SliderDefaultStructure: import("svelte").Component<SliderContext, {}, "">;
3
+ export default SliderDefaultStructure;
@@ -1,3 +1,3 @@
1
1
  import Slider from './Slider.svelte';
2
- export * from './slider';
2
+ export * from './slider.gen';
3
3
  export { Slider };
@@ -1,3 +1,3 @@
1
1
  import Slider from './Slider.svelte';
2
- export * from './slider';
2
+ export * from './slider.gen';
3
3
  export { Slider };