@likable-hair/svelte 3.3.21 → 3.3.22

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 (200) hide show
  1. package/dist/components/composed/buttons/ActivableButton.svelte +6 -2
  2. package/dist/components/composed/buttons/ActivableButton.svelte.d.ts +36 -32
  3. package/dist/components/composed/common/MenuOrDrawer.svelte +21 -5
  4. package/dist/components/composed/common/MenuOrDrawer.svelte.d.ts +50 -36
  5. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +29 -13
  6. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +34 -30
  7. package/dist/components/composed/common/QuickActions.svelte +52 -20
  8. package/dist/components/composed/common/QuickActions.svelte.d.ts +24 -20
  9. package/dist/components/composed/common/ToolTip.svelte +31 -22
  10. package/dist/components/composed/common/ToolTip.svelte.d.ts +32 -43
  11. package/dist/components/composed/forms/AsyncAutocomplete.svelte +44 -23
  12. package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +44 -39
  13. package/dist/components/composed/forms/AvatarDropdown.svelte +57 -27
  14. package/dist/components/composed/forms/AvatarDropdown.svelte.d.ts +45 -41
  15. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte +35 -17
  16. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte.d.ts +41 -37
  17. package/dist/components/composed/forms/CountriesAutocomplete.svelte +16 -7
  18. package/dist/components/composed/forms/CountriesAutocomplete.svelte.d.ts +31 -60
  19. package/dist/components/composed/forms/DatePickerTextField.svelte +166 -114
  20. package/dist/components/composed/forms/DatePickerTextField.svelte.d.ts +67 -63
  21. package/dist/components/composed/forms/Dropdown.svelte +51 -21
  22. package/dist/components/composed/forms/Dropdown.svelte.d.ts +48 -43
  23. package/dist/components/composed/forms/IconsDropdown.svelte +61 -33
  24. package/dist/components/composed/forms/IconsDropdown.svelte.d.ts +30 -26
  25. package/dist/components/composed/forms/LabelAndSelect.svelte +32 -7
  26. package/dist/components/composed/forms/LabelAndSelect.svelte.d.ts +35 -31
  27. package/dist/components/composed/forms/LabelAndTextField.svelte +30 -5
  28. package/dist/components/composed/forms/LabelAndTextField.svelte.d.ts +46 -42
  29. package/dist/components/composed/forms/ToggleList.svelte +59 -33
  30. package/dist/components/composed/forms/ToggleList.svelte.d.ts +21 -17
  31. package/dist/components/composed/forms/YearPickerTextField.svelte +114 -74
  32. package/dist/components/composed/forms/YearPickerTextField.svelte.d.ts +53 -49
  33. package/dist/components/composed/list/DynamicTable.svelte +1102 -707
  34. package/dist/components/composed/list/DynamicTable.svelte.d.ts +369 -365
  35. package/dist/components/composed/list/PaginatedTable.svelte +139 -76
  36. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +108 -108
  37. package/dist/components/composed/progress/HorizontalStackedProgress.svelte +58 -30
  38. package/dist/components/composed/progress/HorizontalStackedProgress.svelte.d.ts +25 -21
  39. package/dist/components/composed/search/DynamicFilters.svelte +103 -82
  40. package/dist/components/composed/search/DynamicFilters.svelte.d.ts +31 -27
  41. package/dist/components/composed/search/FilterEditor.svelte +106 -77
  42. package/dist/components/composed/search/FilterEditor.svelte.d.ts +37 -33
  43. package/dist/components/composed/search/Filters.svelte +361 -292
  44. package/dist/components/composed/search/Filters.svelte.d.ts +55 -51
  45. package/dist/components/composed/search/GlobalSearchTextField.svelte +79 -41
  46. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +43 -39
  47. package/dist/components/composed/search/MobileFilterEditor.svelte +135 -93
  48. package/dist/components/composed/search/MobileFilterEditor.svelte.d.ts +39 -35
  49. package/dist/components/composed/search/SearchBar.svelte +28 -5
  50. package/dist/components/composed/search/SearchBar.svelte.d.ts +34 -30
  51. package/dist/components/composed/search/SearchResults.svelte +42 -7
  52. package/dist/components/composed/search/SearchResults.svelte.d.ts +40 -36
  53. package/dist/components/composed/shop/ProductCard.svelte +18 -4
  54. package/dist/components/composed/shop/ProductCard.svelte.d.ts +32 -28
  55. package/dist/components/composed/shop/ProductsGrid.svelte +22 -2
  56. package/dist/components/composed/shop/ProductsGrid.svelte.d.ts +44 -40
  57. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +77 -38
  58. package/dist/components/layouts/CollapsibleSideBarLayout.svelte.d.ts +109 -69
  59. package/dist/components/layouts/StableDividedSideBarLayout.svelte +47 -17
  60. package/dist/components/layouts/StableDividedSideBarLayout.svelte.d.ts +50 -32
  61. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +53 -30
  62. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte.d.ts +103 -63
  63. package/dist/components/simple/buttons/Button.svelte +78 -32
  64. package/dist/components/simple/buttons/Button.svelte.d.ts +47 -35
  65. package/dist/components/simple/buttons/LinkButton.svelte +54 -22
  66. package/dist/components/simple/buttons/LinkButton.svelte.d.ts +50 -33
  67. package/dist/components/simple/charts/GanymedeBarChart.svelte +172 -134
  68. package/dist/components/simple/charts/GanymedeBarChart.svelte.d.ts +50 -46
  69. package/dist/components/simple/charts/GanymedeLineChart.svelte +157 -115
  70. package/dist/components/simple/charts/GanymedeLineChart.svelte.d.ts +51 -47
  71. package/dist/components/simple/charts/GanymedePieChart.svelte +62 -39
  72. package/dist/components/simple/charts/GanymedePieChart.svelte.d.ts +37 -33
  73. package/dist/components/simple/common/Card.svelte +20 -1
  74. package/dist/components/simple/common/Card.svelte.d.ts +51 -38
  75. package/dist/components/simple/common/CollapsibleDivider.svelte +23 -11
  76. package/dist/components/simple/common/CollapsibleDivider.svelte.d.ts +29 -25
  77. package/dist/components/simple/common/Divider.svelte +8 -2
  78. package/dist/components/simple/common/Divider.svelte.d.ts +23 -19
  79. package/dist/components/simple/common/Gesture.svelte +64 -46
  80. package/dist/components/simple/common/Gesture.svelte.d.ts +21 -17
  81. package/dist/components/simple/common/InfiniteScroll.svelte +52 -29
  82. package/dist/components/simple/common/InfiniteScroll.svelte.d.ts +24 -20
  83. package/dist/components/simple/common/IntersectionObserver.svelte +45 -32
  84. package/dist/components/simple/common/IntersectionObserver.svelte.d.ts +34 -21
  85. package/dist/components/simple/common/MediaQuery.svelte +30 -21
  86. package/dist/components/simple/common/MediaQuery.svelte.d.ts +34 -30
  87. package/dist/components/simple/common/Menu.svelte +290 -201
  88. package/dist/components/simple/common/Menu.svelte.d.ts +51 -40
  89. package/dist/components/simple/common/Playground.svelte +18 -17
  90. package/dist/components/simple/common/Playground.svelte.d.ts +19 -15
  91. package/dist/components/simple/common/VerticalDraggableList.svelte +35 -16
  92. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +33 -29
  93. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +32 -26
  94. package/dist/components/simple/dashboards/DashboardGridShaper.svelte.d.ts +16 -12
  95. package/dist/components/simple/dates/Calendar.svelte +52 -28
  96. package/dist/components/simple/dates/Calendar.svelte.d.ts +45 -41
  97. package/dist/components/simple/dates/DatePicker.svelte +90 -60
  98. package/dist/components/simple/dates/DatePicker.svelte.d.ts +44 -40
  99. package/dist/components/simple/dates/MonthSelector.svelte +37 -15
  100. package/dist/components/simple/dates/MonthSelector.svelte.d.ts +35 -31
  101. package/dist/components/simple/dates/TimePicker.svelte +45 -31
  102. package/dist/components/simple/dates/TimePicker.svelte.d.ts +24 -20
  103. package/dist/components/simple/dates/TimePickerTextField.svelte +56 -35
  104. package/dist/components/simple/dates/TimePickerTextField.svelte.d.ts +28 -24
  105. package/dist/components/simple/dates/YearSelector.svelte +54 -29
  106. package/dist/components/simple/dates/YearSelector.svelte.d.ts +35 -31
  107. package/dist/components/simple/dialogs/Dialog.svelte +92 -62
  108. package/dist/components/simple/dialogs/Dialog.svelte.d.ts +42 -28
  109. package/dist/components/simple/forms/Autocomplete.svelte +201 -142
  110. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +83 -79
  111. package/dist/components/simple/forms/Checkbox.svelte +40 -24
  112. package/dist/components/simple/forms/Checkbox.svelte.d.ts +25 -21
  113. package/dist/components/simple/forms/FileInput.svelte +88 -48
  114. package/dist/components/simple/forms/FileInput.svelte.d.ts +37 -33
  115. package/dist/components/simple/forms/FileInputList.svelte +52 -34
  116. package/dist/components/simple/forms/FileInputList.svelte.d.ts +43 -39
  117. package/dist/components/simple/forms/RadioButton.svelte +11 -3
  118. package/dist/components/simple/forms/RadioButton.svelte.d.ts +31 -27
  119. package/dist/components/simple/forms/Select.svelte +16 -3
  120. package/dist/components/simple/forms/Select.svelte.d.ts +24 -20
  121. package/dist/components/simple/forms/SimpleTextField.svelte +53 -6
  122. package/dist/components/simple/forms/SimpleTextField.svelte.d.ts +64 -60
  123. package/dist/components/simple/forms/Switch.svelte +30 -16
  124. package/dist/components/simple/forms/Switch.svelte.d.ts +25 -21
  125. package/dist/components/simple/forms/Textarea.svelte +27 -2
  126. package/dist/components/simple/forms/Textarea.svelte.d.ts +41 -37
  127. package/dist/components/simple/forms/Textfield.svelte +56 -18
  128. package/dist/components/simple/forms/Textfield.svelte.d.ts +55 -51
  129. package/dist/components/simple/forms/TreeEditor.svelte +141 -95
  130. package/dist/components/simple/forms/TreeEditor.svelte.d.ts +42 -38
  131. package/dist/components/simple/forms/TreeEditorItem.svelte +77 -42
  132. package/dist/components/simple/forms/TreeEditorItem.svelte.d.ts +54 -50
  133. package/dist/components/simple/forms/VerticalSwitch.svelte +11 -1
  134. package/dist/components/simple/forms/VerticalSwitch.svelte.d.ts +32 -28
  135. package/dist/components/simple/forms/VerticalTextSwitch.svelte +15 -3
  136. package/dist/components/simple/forms/VerticalTextSwitch.svelte.d.ts +30 -26
  137. package/dist/components/simple/lists/ColorInvertedSelector.svelte +53 -23
  138. package/dist/components/simple/lists/ColorInvertedSelector.svelte.d.ts +46 -42
  139. package/dist/components/simple/lists/HierarchyMenu.svelte +38 -19
  140. package/dist/components/simple/lists/HierarchyMenu.svelte.d.ts +34 -30
  141. package/dist/components/simple/lists/Paginator.svelte +50 -41
  142. package/dist/components/simple/lists/Paginator.svelte.d.ts +23 -19
  143. package/dist/components/simple/lists/SelectableMenuList.svelte +43 -15
  144. package/dist/components/simple/lists/SelectableMenuList.svelte.d.ts +24 -20
  145. package/dist/components/simple/lists/SelectableVerticalList.svelte +99 -57
  146. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +51 -47
  147. package/dist/components/simple/lists/SidebarMenuList.svelte +115 -70
  148. package/dist/components/simple/lists/SidebarMenuList.svelte.d.ts +26 -22
  149. package/dist/components/simple/lists/SimpleTable.svelte +264 -154
  150. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +70 -66
  151. package/dist/components/simple/loaders/CircularLoader.svelte +16 -5
  152. package/dist/components/simple/loaders/CircularLoader.svelte.d.ts +19 -15
  153. package/dist/components/simple/loaders/Skeleton.svelte +3 -2
  154. package/dist/components/simple/loaders/Skeleton.svelte.d.ts +16 -12
  155. package/dist/components/simple/media/AttachmentDownloader.svelte +17 -3
  156. package/dist/components/simple/media/AttachmentDownloader.svelte.d.ts +32 -28
  157. package/dist/components/simple/media/Avatar.svelte +18 -12
  158. package/dist/components/simple/media/Avatar.svelte.d.ts +31 -20
  159. package/dist/components/simple/media/Carousel.svelte +29 -11
  160. package/dist/components/simple/media/Carousel.svelte.d.ts +28 -24
  161. package/dist/components/simple/media/DescriptiveAvatar.svelte +12 -4
  162. package/dist/components/simple/media/DescriptiveAvatar.svelte.d.ts +44 -28
  163. package/dist/components/simple/media/FlagIcon.svelte +8 -5
  164. package/dist/components/simple/media/FlagIcon.svelte.d.ts +19 -15
  165. package/dist/components/simple/media/Gallery.svelte +49 -29
  166. package/dist/components/simple/media/Gallery.svelte.d.ts +27 -23
  167. package/dist/components/simple/media/Icon.svelte +9 -4
  168. package/dist/components/simple/media/Icon.svelte.d.ts +24 -20
  169. package/dist/components/simple/media/Image.svelte +42 -20
  170. package/dist/components/simple/media/Image.svelte.d.ts +44 -33
  171. package/dist/components/simple/media/ImageGrid.svelte +37 -12
  172. package/dist/components/simple/media/ImageGrid.svelte.d.ts +32 -28
  173. package/dist/components/simple/navigation/Breadcrumb.svelte +28 -10
  174. package/dist/components/simple/navigation/Breadcrumb.svelte.d.ts +26 -22
  175. package/dist/components/simple/navigation/Chip.svelte +44 -23
  176. package/dist/components/simple/navigation/Chip.svelte.d.ts +42 -31
  177. package/dist/components/simple/navigation/Drawer.svelte +107 -65
  178. package/dist/components/simple/navigation/Drawer.svelte.d.ts +50 -37
  179. package/dist/components/simple/navigation/HeaderMenu.svelte +40 -23
  180. package/dist/components/simple/navigation/HeaderMenu.svelte.d.ts +39 -35
  181. package/dist/components/simple/navigation/Navigator.svelte +30 -8
  182. package/dist/components/simple/navigation/Navigator.svelte.d.ts +28 -24
  183. package/dist/components/simple/navigation/TabSwitcher.svelte +83 -47
  184. package/dist/components/simple/navigation/TabSwitcher.svelte.d.ts +38 -34
  185. package/dist/components/simple/notifiers/AlertBanner.svelte +43 -15
  186. package/dist/components/simple/notifiers/AlertBanner.svelte.d.ts +41 -37
  187. package/dist/components/simple/progress/ProgressBar.svelte +20 -13
  188. package/dist/components/simple/progress/ProgressBar.svelte.d.ts +21 -17
  189. package/dist/components/simple/timeline/SimpleTimeLine.svelte +19 -5
  190. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +39 -35
  191. package/dist/components/simple/typography/Code.svelte +27 -12
  192. package/dist/components/simple/typography/Code.svelte.d.ts +28 -24
  193. package/dist/stores/debounce.d.ts +0 -1
  194. package/dist/stores/layouts/unstableSidebarOpened.d.ts +0 -1
  195. package/dist/stores/mediaQuery.d.ts +0 -1
  196. package/dist/stores/theme.d.ts +0 -1
  197. package/dist/utils/filters/builder.d.ts +2 -0
  198. package/dist/utils/filters/builder.js +20 -0
  199. package/dist/utils/filters/modifiers/where.d.ts +10 -3
  200. package/package.json +1 -1
@@ -1,23 +1,61 @@
1
- <script context="module"></script>
1
+ <script lang="ts" context="module">
2
+ export type VariantOptions = "outlined" | "boxed";
3
+ </script>
4
+
5
+ <script lang="ts">
6
+ export let label = "",
7
+ placeholder = "",
8
+ color: string | null = null,
9
+ value: string | number = "",
10
+ disabled = false,
11
+ variant: VariantOptions = "outlined",
12
+ width = "100%",
13
+ height = "50px",
14
+ maxWidth: string | undefined = undefined,
15
+ minWidth: string | undefined = undefined,
16
+ textColor = "black",
17
+ borderWeight = "2px",
18
+ borderRadius = "5px",
19
+ borderColor: string | null = null,
20
+ focusBorderColor: string | null = null,
21
+ focusedBoxShadow: string | undefined = undefined,
22
+ backgroundColor: string | null = null,
23
+ padding: string | undefined = undefined,
24
+ paddingLeft: string | undefined = undefined,
25
+ paddingRight: string | undefined = undefined,
26
+ paddingBottom: string | undefined = undefined,
27
+ paddingTop: string | undefined = undefined,
28
+ fontSize: string | undefined = undefined,
29
+ type: "text" | "password" | "number" = "text",
30
+ readonly = false,
31
+ inputElement: HTMLElement | undefined = undefined,
32
+ autocomplete = true;
33
+
34
+ import { createId } from '@paralleldrive/cuid2';
35
+ import { onMount } from "svelte";
36
+
37
+ let inputId: string = createId(),
38
+ focused = false,
39
+ legendWidth = 0,
40
+ labelElement: HTMLElement | undefined = undefined;
41
+
42
+ onMount(() => {
43
+ console.warn('TextField component is going to be depracated. Please use SimpleTextField instead.')
2
44
 
3
- <script>export let label = "", placeholder = "", color = null, value = "", disabled = false, variant = "outlined", width = "100%", height = "50px", maxWidth = void 0, minWidth = void 0, textColor = "black", borderWeight = "2px", borderRadius = "5px", borderColor = null, focusBorderColor = null, focusedBoxShadow = void 0, backgroundColor = null, padding = void 0, paddingLeft = void 0, paddingRight = void 0, paddingBottom = void 0, paddingTop = void 0, fontSize = void 0, type = "text", readonly = false, inputElement = void 0, autocomplete = true;
4
- import { createId } from "@paralleldrive/cuid2";
5
- import { onMount } from "svelte";
6
- let inputId = createId(), focused = false, legendWidth = 0, labelElement = void 0;
7
- onMount(() => {
8
- console.warn("TextField component is going to be depracated. Please use SimpleTextField instead.");
9
- if (labelElement) {
10
- legendWidth = labelElement.offsetWidth * 0.8 + 8;
45
+ if (labelElement) {
46
+ legendWidth = labelElement.offsetWidth * 0.8 + 8;
47
+ }
48
+ });
49
+
50
+ function handleFocus(): void {
51
+ focused = true;
52
+ }
53
+
54
+ function handleBlur(): void {
55
+ focused = false;
11
56
  }
12
- });
13
- function handleFocus() {
14
- focused = true;
15
- }
16
- function handleBlur() {
17
- focused = false;
18
- }
19
- $:
20
- if (labelElement) {
57
+
58
+ $: if (labelElement) {
21
59
  legendWidth = !value && !focused ? 0 : labelElement.offsetWidth * 0.8 + 8;
22
60
  }
23
61
  </script>
@@ -1,54 +1,58 @@
1
- import { SvelteComponent } from "svelte";
2
1
  export type VariantOptions = "outlined" | "boxed";
3
- declare const __propDef: {
4
- props: {
5
- label?: string | undefined;
6
- placeholder?: string | undefined;
7
- color?: string | null | undefined;
8
- value?: string | number | undefined;
9
- disabled?: boolean | undefined;
10
- variant?: VariantOptions | undefined;
11
- width?: string | undefined;
12
- height?: string | undefined;
13
- maxWidth?: string | undefined;
14
- minWidth?: string | undefined;
15
- textColor?: string | undefined;
16
- borderWeight?: string | undefined;
17
- borderRadius?: string | undefined;
18
- borderColor?: string | null | undefined;
19
- focusBorderColor?: string | null | undefined;
20
- focusedBoxShadow?: string | undefined;
21
- backgroundColor?: string | null | undefined;
22
- padding?: string | undefined;
23
- paddingLeft?: string | undefined;
24
- paddingRight?: string | undefined;
25
- paddingBottom?: string | undefined;
26
- paddingTop?: string | undefined;
27
- fontSize?: string | undefined;
28
- type?: "number" | "text" | "password" | undefined;
29
- readonly?: boolean | undefined;
30
- inputElement?: HTMLElement | undefined;
31
- autocomplete?: boolean | undefined;
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
32
12
  };
33
- events: {
34
- change: Event;
35
- input: Event;
36
- focus: FocusEvent;
37
- blur: FocusEvent;
38
- keydown: KeyboardEvent;
39
- keypress: KeyboardEvent;
40
- keyup: KeyboardEvent;
41
- } & {
42
- [evt: string]: CustomEvent<any>;
43
- };
44
- slots: {
45
- 'prepend-inner': {};
46
- 'append-inner': {};
47
- };
48
- };
49
- export type TextfieldProps = typeof __propDef.props;
50
- export type TextfieldEvents = typeof __propDef.events;
51
- export type TextfieldSlots = typeof __propDef.slots;
52
- export default class Textfield extends SvelteComponent<TextfieldProps, TextfieldEvents, TextfieldSlots> {
13
+ z_$$bindings?: Bindings;
53
14
  }
54
- export {};
15
+ declare const Textfield: $$__sveltets_2_IsomorphicComponent<{
16
+ label?: string;
17
+ placeholder?: string;
18
+ color?: string | null;
19
+ value?: string | number;
20
+ disabled?: boolean;
21
+ variant?: VariantOptions;
22
+ width?: string;
23
+ height?: string;
24
+ maxWidth?: string | undefined;
25
+ minWidth?: string | undefined;
26
+ textColor?: string;
27
+ borderWeight?: string;
28
+ borderRadius?: string;
29
+ borderColor?: string | null;
30
+ focusBorderColor?: string | null;
31
+ focusedBoxShadow?: string | undefined;
32
+ backgroundColor?: string | null;
33
+ padding?: string | undefined;
34
+ paddingLeft?: string | undefined;
35
+ paddingRight?: string | undefined;
36
+ paddingBottom?: string | undefined;
37
+ paddingTop?: string | undefined;
38
+ fontSize?: string | undefined;
39
+ type?: "text" | "password" | "number";
40
+ readonly?: boolean;
41
+ inputElement?: HTMLElement | undefined;
42
+ autocomplete?: boolean;
43
+ }, {
44
+ change: Event;
45
+ input: Event;
46
+ focus: FocusEvent;
47
+ blur: FocusEvent;
48
+ keydown: KeyboardEvent;
49
+ keypress: KeyboardEvent;
50
+ keyup: KeyboardEvent;
51
+ } & {
52
+ [evt: string]: CustomEvent<any>;
53
+ }, {
54
+ 'prepend-inner': {};
55
+ 'append-inner': {};
56
+ }, {}, string>;
57
+ type Textfield = InstanceType<typeof Textfield>;
58
+ export default Textfield;
@@ -1,104 +1,150 @@
1
- <script context="module"></script>
2
-
3
- <script>import Sortable from "sortablejs";
4
- import { onMount, createEventDispatcher } from "svelte";
5
- import TreeEditorItem from "./TreeEditorItem.svelte";
6
- import { createId } from "@paralleldrive/cuid2";
7
- import lodash from "lodash";
8
- let dispatch = createEventDispatcher();
9
- export let items = [], groupName = createId(), cleanItems = convertItemsInClean(items), collapsable = true, editable = true, updateItem = ({ item }) => {
10
- return item;
11
- };
12
- let itemList, sortable = void 0, rerender = true, mounted = false;
13
- onMount(() => {
14
- mounted = true;
15
- initSortable();
16
- });
17
- async function initSortable() {
18
- if (!mounted)
19
- return;
20
- sortable = Sortable.create(itemList, {
21
- handle: ".handle",
22
- group: groupName,
23
- animation: 150,
24
- ghostClass: "ghost-drag-element",
25
- onEnd(event) {
26
- sortTree();
27
- }
28
- });
29
- }
30
- $:
31
- if (!!items)
32
- initSortable();
33
- function handleEnd(event) {
34
- sortTree();
35
- }
36
- async function sortTree() {
37
- let clonedItems = lodash.cloneDeep(items);
38
- let sortedItems = sortSubTree(clonedItems, items, sortable, "main");
39
- dispatch("change", {
40
- items: sortedItems
41
- });
42
- items = sortedItems;
43
- rerender = !rerender;
44
- }
45
- function sortSubTree(totalItems, itemsToSort, parentSortable, parentId) {
46
- if (!parentSortable)
47
- throw new Error("Parent sortable could not be undefined");
48
- parentSortable.save();
49
- for (let i = 0; i < itemsToSort.length; i += 1) {
50
- let itemToSort = itemsToSort[i];
51
- if (!!itemToSort.children) {
52
- itemsToSort[i].children = sortSubTree(totalItems, itemToSort.children, itemToSort.sortable, itemToSort.id);
53
- }
1
+ <script lang="ts" context="module">
2
+ export type Item = {
3
+ id: number | string,
4
+ title: string,
5
+ expanded?: boolean,
6
+ sortable?: Sortable
7
+ children?: Item[],
8
+ data?: any
9
+ };
10
+
11
+ export type CleanItem = {
12
+ id: number | string,
13
+ title: string,
14
+ expanded?: boolean,
15
+ children?: CleanItem[],
16
+ data?: any
17
+ };
18
+ </script>
19
+
20
+ <script lang="ts">
21
+ import Sortable from 'sortablejs';
22
+ import { onMount, createEventDispatcher, type ComponentProps } from 'svelte';
23
+ import TreeEditorItem from './TreeEditorItem.svelte';
24
+ import { createId } from '@paralleldrive/cuid2';
25
+ import lodash from 'lodash';
26
+
27
+ let dispatch = createEventDispatcher<{
28
+ 'change': {
29
+ items: Item[]
30
+ },
31
+ 'input': {
32
+ item: Item,
33
+ items: Item[]
34
+ },
35
+ }>()
36
+
37
+ export let items: Item[] = [],
38
+ groupName: string = createId(),
39
+ cleanItems: CleanItem[] = convertItemsInClean(items),
40
+ collapsable: boolean = true,
41
+ editable: boolean = true,
42
+ updateItem: ComponentProps<TreeEditorItem>['updateItem'] = ({ item }) => { return item }
43
+
44
+ let itemList: HTMLElement,
45
+ sortable: Sortable | undefined = undefined,
46
+ rerender: boolean = true,
47
+ mounted: boolean = false
48
+
49
+ onMount(() => {
50
+ mounted = true
51
+ initSortable()
52
+ })
53
+
54
+ async function initSortable() {
55
+ if(!mounted) return
56
+
57
+ sortable = Sortable.create(itemList, {
58
+ handle: '.handle',
59
+ group: groupName,
60
+ animation: 150,
61
+ ghostClass: 'ghost-drag-element',
62
+ onEnd(event) {
63
+ sortTree()
64
+ }
65
+ })
54
66
  }
55
- let orderedIds = [];
56
- for (let k = 0; k < parentSortable.el.children.length; k += 1) {
57
- let id = parentSortable.el.children[k].getAttribute("data-sortable-id")?.toString();
58
- if (!id)
59
- throw new Error("All html element must have data-sortbale-id");
60
- orderedIds.push(id);
67
+
68
+ $: if(!!items) initSortable()
69
+
70
+ function handleEnd(event: CustomEvent<{ ev: Sortable.SortableEvent }>) {
71
+ sortTree()
61
72
  }
62
- let newItems = [];
63
- for (let j = 0; j < orderedIds.length; j += 1) {
64
- let id = orderedIds[j];
65
- let itemIndex = itemsToSort.findIndex((its) => its.id.toString() == id);
66
- if (itemIndex === -1) {
67
- let itemToAdd = findItem(totalItems, id);
68
- if (!itemToAdd)
69
- continue;
70
- newItems.push(itemToAdd);
71
- } else {
72
- newItems.push(itemsToSort[itemIndex]);
73
+
74
+ async function sortTree() {
75
+ let clonedItems = lodash.cloneDeep(items)
76
+ let sortedItems = sortSubTree(clonedItems, items, sortable, 'main')
77
+
78
+ dispatch('change', {
79
+ items: sortedItems
80
+ })
81
+
82
+ items = sortedItems
83
+ rerender = !rerender
84
+ }
85
+
86
+ function sortSubTree(totalItems: Item[], itemsToSort: Item[], parentSortable: Sortable | undefined, parentId?: Item['id']): Item[] {
87
+ if(!parentSortable) throw new Error('Parent sortable could not be undefined')
88
+ parentSortable.save()
89
+
90
+ for(let i = 0; i < itemsToSort.length; i += 1) {
91
+ let itemToSort = itemsToSort[i]
92
+
93
+ if(!!itemToSort.children) {
94
+ itemsToSort[i].children = sortSubTree(totalItems, itemToSort.children, itemToSort.sortable, itemToSort.id)
95
+ }
96
+ }
97
+
98
+ let orderedIds: Item['id'][] = []
99
+ for(let k = 0; k < parentSortable.el.children.length; k += 1) {
100
+ let id = parentSortable.el.children[k].getAttribute('data-sortable-id')?.toString()
101
+ if(!id) throw new Error('All html element must have data-sortbale-id')
102
+ orderedIds.push(id)
103
+ }
104
+
105
+ let newItems: Item[] = []
106
+ for(let j = 0; j < orderedIds.length; j += 1) {
107
+ let id = orderedIds[j]
108
+ let itemIndex = itemsToSort.findIndex((its) => its.id.toString() == id)
109
+ if(itemIndex === -1) {
110
+ let itemToAdd = findItem(totalItems, id)
111
+ if(!itemToAdd) continue
112
+
113
+ newItems.push(itemToAdd)
114
+ } else {
115
+ newItems.push(itemsToSort[itemIndex])
116
+ }
73
117
  }
118
+
119
+ return newItems
74
120
  }
75
- return newItems;
76
- }
77
- function findItem(itemsToSearch, id) {
78
- for (let i = 0; i < itemsToSearch.length; i += 1) {
79
- let item = itemsToSearch[i];
80
- if (item.id == id)
81
- return item;
82
- if (!!item.children) {
83
- let result = findItem(item.children, id);
84
- if (!!result)
85
- return result;
121
+
122
+ function findItem(itemsToSearch: Item[], id: Item['id']): Item | undefined {
123
+ for(let i = 0; i < itemsToSearch.length; i += 1) {
124
+ let item = itemsToSearch[i]
125
+
126
+ if(item.id == id) return item
127
+
128
+ if(!!item.children) {
129
+ let result = findItem(item.children, id)
130
+ if(!!result) return result
131
+ }
86
132
  }
87
133
  }
88
- }
89
- function convertItemsInClean(items2) {
90
- return items2.map((i) => {
91
- return {
92
- id: i.id,
93
- title: i.title,
94
- expanded: i.expanded,
95
- children: !!i.children ? convertItemsInClean(i.children) : [],
96
- data: i.data
97
- };
98
- });
99
- }
100
- $:
101
- cleanItems = convertItemsInClean(items);
134
+
135
+ function convertItemsInClean(items: Item[]): CleanItem[] {
136
+ return items.map((i) => {
137
+ return {
138
+ id: i.id,
139
+ title: i.title,
140
+ expanded: i.expanded,
141
+ children: !!i.children ? convertItemsInClean(i.children) : [],
142
+ data: i.data
143
+ }
144
+ })
145
+ }
146
+
147
+ $: cleanItems = convertItemsInClean(items)
102
148
  </script>
103
149
 
104
150
  {#key rerender}
@@ -1,4 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
1
  export type Item = {
3
2
  id: number | string;
4
3
  title: string;
@@ -17,43 +16,48 @@ export type CleanItem = {
17
16
  import Sortable from 'sortablejs';
18
17
  import { type ComponentProps } from 'svelte';
19
18
  import TreeEditorItem from './TreeEditorItem.svelte';
20
- declare const __propDef: {
21
- props: {
22
- items?: Item[] | undefined;
23
- groupName?: string | undefined;
24
- cleanItems?: CleanItem[] | undefined;
25
- collapsable?: boolean | undefined;
26
- editable?: boolean | undefined;
27
- updateItem?: ComponentProps<TreeEditorItem>['updateItem'];
19
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
20
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
21
+ $$bindings?: Bindings;
22
+ } & Exports;
23
+ (internal: unknown, props: Props & {
24
+ $$events?: Events;
25
+ $$slots?: Slots;
26
+ }): Exports & {
27
+ $set?: any;
28
+ $on?: any;
28
29
  };
29
- events: {
30
- click: CustomEvent<{
31
- item: Item;
32
- }>;
33
- change: CustomEvent<{
34
- items: Item[];
35
- }>;
36
- input: CustomEvent<{
37
- item: Item;
38
- items: Item[];
39
- }>;
40
- } & {
41
- [evt: string]: CustomEvent<any>;
30
+ z_$$bindings?: Bindings;
31
+ }
32
+ declare const TreeEditor: $$__sveltets_2_IsomorphicComponent<{
33
+ items?: Item[];
34
+ groupName?: string;
35
+ cleanItems?: CleanItem[];
36
+ collapsable?: boolean;
37
+ editable?: boolean;
38
+ updateItem?: ComponentProps<TreeEditorItem>["updateItem"];
39
+ }, {
40
+ click: CustomEvent<{
41
+ item: Item;
42
+ }>;
43
+ change: CustomEvent<{
44
+ items: Item[];
45
+ }>;
46
+ input: CustomEvent<{
47
+ item: Item;
48
+ items: Item[];
49
+ }>;
50
+ } & {
51
+ [evt: string]: CustomEvent<any>;
52
+ }, {
53
+ append: {
54
+ item: any;
55
+ doUpdateItem: any;
42
56
  };
43
- slots: {
44
- append: {
45
- item: any;
46
- doUpdateItem: any;
47
- };
48
- title: {
49
- item: any;
50
- doUpdateItem: any;
51
- };
57
+ title: {
58
+ item: any;
59
+ doUpdateItem: any;
52
60
  };
53
- };
54
- export type TreeEditorProps = typeof __propDef.props;
55
- export type TreeEditorEvents = typeof __propDef.events;
56
- export type TreeEditorSlots = typeof __propDef.slots;
57
- export default class TreeEditor extends SvelteComponent<TreeEditorProps, TreeEditorEvents, TreeEditorSlots> {
58
- }
59
- export {};
61
+ }, {}, string>;
62
+ type TreeEditor = InstanceType<typeof TreeEditor>;
63
+ export default TreeEditor;
@@ -1,54 +1,89 @@
1
- <script>import Sortable from "sortablejs";
2
- import { onMount } from "svelte";
3
- import Icon from "../media/Icon.svelte";
4
- import Button from "../buttons/Button.svelte";
5
- import { slide } from "svelte/transition";
6
- import { createEventDispatcher } from "svelte";
7
- let dispatch = createEventDispatcher();
8
- export let title, id, subtitle = void 0, group, animationDuration = 150, expanded = true, subItems = [], sortable = void 0, collapsable = true, editable = true, data = void 0, updateItem = void 0;
9
- let subItemList, mounted = false;
10
- onMount(() => {
11
- mounted = true;
12
- initSortable();
13
- });
14
- function initSortable() {
15
- if (!mounted)
16
- return;
17
- sortable = Sortable.create(subItemList, {
18
- group,
19
- handle: ".handle",
20
- animation: animationDuration,
21
- ghostClass: "ghost-drag-element",
22
- onEnd(ev) {
23
- dispatch("end", { ev });
1
+ <script lang="ts">
2
+ import Sortable from 'sortablejs';
3
+ import { onMount, type ComponentProps } from "svelte";
4
+ import type TreeEditor from './TreeEditor.svelte';
5
+ import Icon from '../media/Icon.svelte';
6
+ import Button from '../buttons/Button.svelte';
7
+ import { slide } from 'svelte/transition';
8
+ import { createEventDispatcher } from 'svelte';
9
+ import type { Item } from './TreeEditor.svelte';
10
+
11
+ let dispatch = createEventDispatcher<{
12
+ 'change': {
13
+ ev: Sortable.SortableEvent
14
+ },
15
+ 'end': {
16
+ ev: Sortable.SortableEvent
24
17
  },
25
- onChange(ev) {
26
- dispatch("change", { ev });
18
+ 'input': {
19
+ item: Item,
20
+ inputData?: any
27
21
  },
28
- onUpdate(ev) {
22
+ 'click': {
23
+ item: Item
29
24
  }
30
- });
31
- }
32
- let currentItem;
33
- $:
34
- currentItem = {
25
+ }>()
26
+
27
+ export let title: string,
28
+ id: number | string,
29
+ subtitle: string | undefined = undefined,
30
+ group: string,
31
+ animationDuration: number = 150,
32
+ expanded: boolean | undefined = true,
33
+ subItems: Item[] = [],
34
+ sortable: Sortable | undefined = undefined,
35
+ collapsable: boolean = true,
36
+ editable: boolean = true,
37
+ data: any = undefined,
38
+ updateItem: ((params: { item: Item, inputData?: any }) => Item) | undefined = undefined
39
+
40
+ let subItemList: HTMLElement,
41
+ mounted: boolean = false
42
+
43
+ onMount(() => {
44
+ mounted = true
45
+ initSortable()
46
+ })
47
+
48
+ function initSortable() {
49
+ if(!mounted) return
50
+
51
+ sortable = Sortable.create(subItemList, {
52
+ group: group,
53
+ handle: '.handle',
54
+ animation: animationDuration,
55
+ ghostClass: 'ghost-drag-element',
56
+ onEnd(ev) {
57
+ dispatch('end', { ev })
58
+ },
59
+ onChange(ev) {
60
+ dispatch('change', { ev })
61
+ },
62
+ onUpdate(ev) {
63
+ }
64
+ })
65
+ }
66
+
67
+ let currentItem: Item
68
+ $: currentItem = {
35
69
  id,
36
70
  title,
37
71
  expanded,
38
72
  sortable,
39
73
  children: subItems,
40
- data
41
- };
42
- $:
43
- if (!!subItems)
44
- initSortable();
45
- function doUpdateItem(item, inputData) {
46
- let newItem = item;
47
- if (!!updateItem) {
48
- newItem = updateItem({ item, inputData });
74
+ data: data
75
+ }
76
+
77
+ $: if(!!subItems) initSortable()
78
+
79
+ function doUpdateItem(item: Item, inputData: any) {
80
+ let newItem = item
81
+ if(!!updateItem) {
82
+ newItem = updateItem({ item, inputData })
83
+ }
84
+
85
+ dispatch('input', { item: newItem })
49
86
  }
50
- dispatch("input", { item: newItem });
51
- }
52
87
  </script>
53
88
 
54
89
  <li