@likable-hair/svelte 3.3.20 → 3.3.21

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 (197) hide show
  1. package/dist/components/composed/buttons/ActivableButton.svelte +2 -6
  2. package/dist/components/composed/buttons/ActivableButton.svelte.d.ts +32 -36
  3. package/dist/components/composed/common/MenuOrDrawer.svelte +5 -21
  4. package/dist/components/composed/common/MenuOrDrawer.svelte.d.ts +36 -50
  5. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +13 -29
  6. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +30 -34
  7. package/dist/components/composed/common/QuickActions.svelte +20 -52
  8. package/dist/components/composed/common/QuickActions.svelte.d.ts +20 -24
  9. package/dist/components/composed/common/ToolTip.svelte +22 -31
  10. package/dist/components/composed/common/ToolTip.svelte.d.ts +43 -32
  11. package/dist/components/composed/forms/AsyncAutocomplete.svelte +23 -44
  12. package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +39 -44
  13. package/dist/components/composed/forms/AvatarDropdown.svelte +27 -57
  14. package/dist/components/composed/forms/AvatarDropdown.svelte.d.ts +41 -45
  15. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte +17 -35
  16. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte.d.ts +37 -41
  17. package/dist/components/composed/forms/CountriesAutocomplete.svelte +7 -16
  18. package/dist/components/composed/forms/CountriesAutocomplete.svelte.d.ts +60 -31
  19. package/dist/components/composed/forms/DatePickerTextField.svelte +114 -166
  20. package/dist/components/composed/forms/DatePickerTextField.svelte.d.ts +63 -67
  21. package/dist/components/composed/forms/Dropdown.svelte +21 -51
  22. package/dist/components/composed/forms/Dropdown.svelte.d.ts +43 -48
  23. package/dist/components/composed/forms/IconsDropdown.svelte +33 -61
  24. package/dist/components/composed/forms/IconsDropdown.svelte.d.ts +26 -30
  25. package/dist/components/composed/forms/LabelAndSelect.svelte +7 -32
  26. package/dist/components/composed/forms/LabelAndSelect.svelte.d.ts +31 -35
  27. package/dist/components/composed/forms/LabelAndTextField.svelte +5 -30
  28. package/dist/components/composed/forms/LabelAndTextField.svelte.d.ts +42 -46
  29. package/dist/components/composed/forms/ToggleList.svelte +33 -59
  30. package/dist/components/composed/forms/ToggleList.svelte.d.ts +17 -21
  31. package/dist/components/composed/forms/YearPickerTextField.svelte +74 -114
  32. package/dist/components/composed/forms/YearPickerTextField.svelte.d.ts +49 -53
  33. package/dist/components/composed/list/DynamicTable.svelte +707 -1102
  34. package/dist/components/composed/list/DynamicTable.svelte.d.ts +365 -369
  35. package/dist/components/composed/list/PaginatedTable.svelte +76 -139
  36. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +108 -108
  37. package/dist/components/composed/progress/HorizontalStackedProgress.svelte +30 -58
  38. package/dist/components/composed/progress/HorizontalStackedProgress.svelte.d.ts +21 -25
  39. package/dist/components/composed/search/DynamicFilters.svelte +82 -103
  40. package/dist/components/composed/search/DynamicFilters.svelte.d.ts +27 -31
  41. package/dist/components/composed/search/FilterEditor.svelte +77 -106
  42. package/dist/components/composed/search/FilterEditor.svelte.d.ts +33 -37
  43. package/dist/components/composed/search/Filters.svelte +292 -361
  44. package/dist/components/composed/search/Filters.svelte.d.ts +51 -55
  45. package/dist/components/composed/search/GlobalSearchTextField.svelte +41 -79
  46. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +39 -43
  47. package/dist/components/composed/search/MobileFilterEditor.svelte +93 -135
  48. package/dist/components/composed/search/MobileFilterEditor.svelte.d.ts +35 -39
  49. package/dist/components/composed/search/SearchBar.svelte +5 -28
  50. package/dist/components/composed/search/SearchBar.svelte.d.ts +30 -34
  51. package/dist/components/composed/search/SearchResults.svelte +7 -42
  52. package/dist/components/composed/search/SearchResults.svelte.d.ts +36 -40
  53. package/dist/components/composed/shop/ProductCard.svelte +4 -18
  54. package/dist/components/composed/shop/ProductCard.svelte.d.ts +28 -32
  55. package/dist/components/composed/shop/ProductsGrid.svelte +2 -22
  56. package/dist/components/composed/shop/ProductsGrid.svelte.d.ts +40 -44
  57. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +38 -77
  58. package/dist/components/layouts/CollapsibleSideBarLayout.svelte.d.ts +69 -109
  59. package/dist/components/layouts/StableDividedSideBarLayout.svelte +17 -47
  60. package/dist/components/layouts/StableDividedSideBarLayout.svelte.d.ts +32 -50
  61. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +30 -53
  62. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte.d.ts +63 -103
  63. package/dist/components/simple/buttons/Button.svelte +32 -78
  64. package/dist/components/simple/buttons/Button.svelte.d.ts +35 -47
  65. package/dist/components/simple/buttons/LinkButton.svelte +22 -54
  66. package/dist/components/simple/buttons/LinkButton.svelte.d.ts +33 -50
  67. package/dist/components/simple/charts/GanymedeBarChart.svelte +134 -172
  68. package/dist/components/simple/charts/GanymedeBarChart.svelte.d.ts +46 -50
  69. package/dist/components/simple/charts/GanymedeLineChart.svelte +115 -157
  70. package/dist/components/simple/charts/GanymedeLineChart.svelte.d.ts +47 -51
  71. package/dist/components/simple/charts/GanymedePieChart.svelte +39 -62
  72. package/dist/components/simple/charts/GanymedePieChart.svelte.d.ts +33 -37
  73. package/dist/components/simple/common/Card.svelte +1 -20
  74. package/dist/components/simple/common/Card.svelte.d.ts +38 -51
  75. package/dist/components/simple/common/CollapsibleDivider.svelte +11 -23
  76. package/dist/components/simple/common/CollapsibleDivider.svelte.d.ts +25 -29
  77. package/dist/components/simple/common/Divider.svelte +2 -8
  78. package/dist/components/simple/common/Divider.svelte.d.ts +19 -23
  79. package/dist/components/simple/common/Gesture.svelte +46 -64
  80. package/dist/components/simple/common/Gesture.svelte.d.ts +17 -21
  81. package/dist/components/simple/common/InfiniteScroll.svelte +29 -52
  82. package/dist/components/simple/common/InfiniteScroll.svelte.d.ts +20 -24
  83. package/dist/components/simple/common/IntersectionObserver.svelte +32 -45
  84. package/dist/components/simple/common/IntersectionObserver.svelte.d.ts +21 -34
  85. package/dist/components/simple/common/MediaQuery.svelte +21 -30
  86. package/dist/components/simple/common/MediaQuery.svelte.d.ts +30 -34
  87. package/dist/components/simple/common/Menu.svelte +201 -290
  88. package/dist/components/simple/common/Menu.svelte.d.ts +40 -51
  89. package/dist/components/simple/common/Playground.svelte +17 -18
  90. package/dist/components/simple/common/Playground.svelte.d.ts +15 -19
  91. package/dist/components/simple/common/VerticalDraggableList.svelte +16 -35
  92. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +29 -33
  93. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +26 -32
  94. package/dist/components/simple/dashboards/DashboardGridShaper.svelte.d.ts +12 -16
  95. package/dist/components/simple/dates/Calendar.svelte +28 -52
  96. package/dist/components/simple/dates/Calendar.svelte.d.ts +41 -45
  97. package/dist/components/simple/dates/DatePicker.svelte +60 -90
  98. package/dist/components/simple/dates/DatePicker.svelte.d.ts +40 -44
  99. package/dist/components/simple/dates/MonthSelector.svelte +15 -37
  100. package/dist/components/simple/dates/MonthSelector.svelte.d.ts +31 -35
  101. package/dist/components/simple/dates/TimePicker.svelte +31 -45
  102. package/dist/components/simple/dates/TimePicker.svelte.d.ts +20 -24
  103. package/dist/components/simple/dates/TimePickerTextField.svelte +35 -56
  104. package/dist/components/simple/dates/TimePickerTextField.svelte.d.ts +24 -28
  105. package/dist/components/simple/dates/YearSelector.svelte +29 -54
  106. package/dist/components/simple/dates/YearSelector.svelte.d.ts +31 -35
  107. package/dist/components/simple/dialogs/Dialog.svelte +62 -92
  108. package/dist/components/simple/dialogs/Dialog.svelte.d.ts +28 -42
  109. package/dist/components/simple/forms/Autocomplete.svelte +142 -201
  110. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +79 -83
  111. package/dist/components/simple/forms/Checkbox.svelte +24 -40
  112. package/dist/components/simple/forms/Checkbox.svelte.d.ts +21 -25
  113. package/dist/components/simple/forms/FileInput.svelte +48 -88
  114. package/dist/components/simple/forms/FileInput.svelte.d.ts +33 -37
  115. package/dist/components/simple/forms/FileInputList.svelte +34 -52
  116. package/dist/components/simple/forms/FileInputList.svelte.d.ts +39 -43
  117. package/dist/components/simple/forms/RadioButton.svelte +3 -11
  118. package/dist/components/simple/forms/RadioButton.svelte.d.ts +27 -31
  119. package/dist/components/simple/forms/Select.svelte +3 -16
  120. package/dist/components/simple/forms/Select.svelte.d.ts +20 -24
  121. package/dist/components/simple/forms/SimpleTextField.svelte +6 -53
  122. package/dist/components/simple/forms/SimpleTextField.svelte.d.ts +60 -64
  123. package/dist/components/simple/forms/Switch.svelte +16 -30
  124. package/dist/components/simple/forms/Switch.svelte.d.ts +21 -25
  125. package/dist/components/simple/forms/Textarea.svelte +2 -27
  126. package/dist/components/simple/forms/Textarea.svelte.d.ts +37 -41
  127. package/dist/components/simple/forms/Textfield.svelte +18 -56
  128. package/dist/components/simple/forms/Textfield.svelte.d.ts +51 -55
  129. package/dist/components/simple/forms/TreeEditor.svelte +95 -141
  130. package/dist/components/simple/forms/TreeEditor.svelte.d.ts +38 -42
  131. package/dist/components/simple/forms/TreeEditorItem.svelte +42 -77
  132. package/dist/components/simple/forms/TreeEditorItem.svelte.d.ts +50 -54
  133. package/dist/components/simple/forms/VerticalSwitch.svelte +1 -11
  134. package/dist/components/simple/forms/VerticalSwitch.svelte.d.ts +28 -32
  135. package/dist/components/simple/forms/VerticalTextSwitch.svelte +3 -15
  136. package/dist/components/simple/forms/VerticalTextSwitch.svelte.d.ts +26 -30
  137. package/dist/components/simple/lists/ColorInvertedSelector.svelte +23 -53
  138. package/dist/components/simple/lists/ColorInvertedSelector.svelte.d.ts +42 -46
  139. package/dist/components/simple/lists/HierarchyMenu.svelte +19 -38
  140. package/dist/components/simple/lists/HierarchyMenu.svelte.d.ts +30 -34
  141. package/dist/components/simple/lists/Paginator.svelte +41 -50
  142. package/dist/components/simple/lists/Paginator.svelte.d.ts +19 -23
  143. package/dist/components/simple/lists/SelectableMenuList.svelte +15 -43
  144. package/dist/components/simple/lists/SelectableMenuList.svelte.d.ts +20 -24
  145. package/dist/components/simple/lists/SelectableVerticalList.svelte +57 -99
  146. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +47 -51
  147. package/dist/components/simple/lists/SidebarMenuList.svelte +70 -115
  148. package/dist/components/simple/lists/SidebarMenuList.svelte.d.ts +22 -26
  149. package/dist/components/simple/lists/SimpleTable.svelte +154 -264
  150. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +66 -70
  151. package/dist/components/simple/loaders/CircularLoader.svelte +5 -16
  152. package/dist/components/simple/loaders/CircularLoader.svelte.d.ts +15 -19
  153. package/dist/components/simple/loaders/Skeleton.svelte +2 -3
  154. package/dist/components/simple/loaders/Skeleton.svelte.d.ts +12 -16
  155. package/dist/components/simple/media/AttachmentDownloader.svelte +3 -17
  156. package/dist/components/simple/media/AttachmentDownloader.svelte.d.ts +28 -32
  157. package/dist/components/simple/media/Avatar.svelte +12 -18
  158. package/dist/components/simple/media/Avatar.svelte.d.ts +20 -31
  159. package/dist/components/simple/media/Carousel.svelte +11 -29
  160. package/dist/components/simple/media/Carousel.svelte.d.ts +24 -28
  161. package/dist/components/simple/media/DescriptiveAvatar.svelte +4 -12
  162. package/dist/components/simple/media/DescriptiveAvatar.svelte.d.ts +28 -44
  163. package/dist/components/simple/media/FlagIcon.svelte +5 -8
  164. package/dist/components/simple/media/FlagIcon.svelte.d.ts +15 -19
  165. package/dist/components/simple/media/Gallery.svelte +29 -49
  166. package/dist/components/simple/media/Gallery.svelte.d.ts +23 -27
  167. package/dist/components/simple/media/Icon.svelte +4 -9
  168. package/dist/components/simple/media/Icon.svelte.d.ts +20 -24
  169. package/dist/components/simple/media/Image.svelte +20 -42
  170. package/dist/components/simple/media/Image.svelte.d.ts +33 -44
  171. package/dist/components/simple/media/ImageGrid.svelte +12 -37
  172. package/dist/components/simple/media/ImageGrid.svelte.d.ts +28 -32
  173. package/dist/components/simple/navigation/Breadcrumb.svelte +10 -28
  174. package/dist/components/simple/navigation/Breadcrumb.svelte.d.ts +22 -26
  175. package/dist/components/simple/navigation/Chip.svelte +23 -44
  176. package/dist/components/simple/navigation/Chip.svelte.d.ts +31 -42
  177. package/dist/components/simple/navigation/Drawer.svelte +65 -107
  178. package/dist/components/simple/navigation/Drawer.svelte.d.ts +37 -50
  179. package/dist/components/simple/navigation/HeaderMenu.svelte +23 -40
  180. package/dist/components/simple/navigation/HeaderMenu.svelte.d.ts +35 -39
  181. package/dist/components/simple/navigation/Navigator.svelte +8 -30
  182. package/dist/components/simple/navigation/Navigator.svelte.d.ts +24 -28
  183. package/dist/components/simple/navigation/TabSwitcher.svelte +47 -83
  184. package/dist/components/simple/navigation/TabSwitcher.svelte.d.ts +34 -38
  185. package/dist/components/simple/notifiers/AlertBanner.svelte +15 -43
  186. package/dist/components/simple/notifiers/AlertBanner.svelte.d.ts +37 -41
  187. package/dist/components/simple/progress/ProgressBar.svelte +13 -20
  188. package/dist/components/simple/progress/ProgressBar.svelte.d.ts +17 -21
  189. package/dist/components/simple/timeline/SimpleTimeLine.svelte +5 -19
  190. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +35 -39
  191. package/dist/components/simple/typography/Code.svelte +12 -27
  192. package/dist/components/simple/typography/Code.svelte.d.ts +24 -28
  193. package/dist/stores/debounce.d.ts +1 -0
  194. package/dist/stores/layouts/unstableSidebarOpened.d.ts +1 -0
  195. package/dist/stores/mediaQuery.d.ts +1 -0
  196. package/dist/stores/theme.d.ts +1 -0
  197. package/package.json +1 -1
@@ -1,392 +1,323 @@
1
- <script lang="ts" context="module">
2
- export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
3
-
4
- export type LabelMapper = {
5
- [label: string]: {extended?: string, short: string}
6
- }
7
- </script>
8
-
9
- <script lang="ts">
10
- import './Filters.css'
11
- import '../../../css/main.css'
12
- import Drawer from '../../simple/navigation/Drawer.svelte';
13
- import Menu from '../../simple/common/Menu.svelte';
14
- import MediaQuery from '../../simple/common/MediaQuery.svelte';
15
- import Button from '../../simple/buttons/Button.svelte';
16
- import Icon from '../../simple/media/Icon.svelte';
17
- import { createEventDispatcher, type ComponentProps } from 'svelte';
18
- import { isDateMode, isSelectMode, isStringMode, type DateMode, type Filter, type NumberMode, type SelectMode, type StringMode } from '../../../utils/filters/filters';
19
- import SelectableVerticalList from '../../simple/lists/SelectableVerticalList.svelte';
20
- import Chip from '../../simple/navigation/Chip.svelte';
21
- import type { Locale } from '../../simple/dates/utils';
22
- import FilterEditor from './FilterEditor.svelte';
23
- import MobileFilterEditor from './MobileFilterEditor.svelte';
24
- import { fly } from 'svelte/transition';
25
- import Dialog from '../../simple/dialogs/Dialog.svelte';
26
- import Validator from '../../../utils/filters/validator';
27
- import ToolTip from '../common/ToolTip.svelte';
28
- import { DateTime } from 'luxon';
29
-
30
- export let
31
- filters: Filter[] = [],
32
- lang: 'it' | 'en' = 'en',
33
- addFilterLabel: string = lang == 'en' ? "Filters" : "Filtri",
34
- cancelFilterLabel : string = lang == 'en' ? "Cancel" : "Annulla",
35
- applyFilterLabel : string = lang == 'en' ? "Apply filter" : "Applica filtro",
36
- showActiveFilters: boolean = true,
37
- filterTitleLabel: string = lang == 'en' ? "Filter by" : "Filtra per",
38
- dateLocale: Locale = lang == 'en' ? 'en' : 'it',
39
- betweenSeparator: string = lang == 'en' ? "and" : "e",
40
- trueString: string = lang == 'en' ? "true" : "vero",
41
- falseString: string = lang == 'en' ? "false" : "falso",
42
- editFilterMode: 'one-edit' | 'multi-edit' = 'one-edit',
43
- // TODO create global translation mechanism
44
- labelsMapper: LabelMapper = lang == 'en' ? {
45
- 'equal': {
46
- extended: 'equal to',
47
- short: 'equal'
48
- },
49
- 'like': {
50
- short: 'includes'
51
- },
52
- 'ilike': {
53
- short: 'includes'
54
- },
55
- 'contains': {
56
- short: 'contains'
57
- },
58
- 'greater': {
59
- short: 'greater',
60
- extended: 'greater than'
61
- },
62
- 'lower': {
63
- short: 'lower',
64
- extended: 'lower than'
65
- },
66
- 'between': {
67
- short: 'between',
68
- extended: 'is between'
69
- },
70
- 'different': {
71
- short: 'different',
72
- extended: 'different from'
73
- }
74
- } : {
75
- 'equal': {
76
- extended: 'uguale a',
77
- short: 'uguale'
78
- },
79
- 'like': {
80
- short: 'include'
81
- },
82
- 'ilike': {
83
- short: 'include'
84
- },
85
- 'contains': {
86
- short: 'contiene'
87
- },
88
- 'greater': {
89
- short: 'maggiore',
90
- extended: 'maggiore di'
91
- },
92
- 'lower': {
93
- short: 'minore',
94
- extended: 'minore di'
95
- },
96
- 'between': {
97
- short: 'compreso',
98
- extended: 'è compreso tra'
99
- },
100
- 'different': {
101
- short: 'diverso',
102
- extended: 'diverso da'
103
- }
104
- }
105
-
106
-
107
- let dispatch = createEventDispatcher<{
108
- 'addFilterClick': undefined,
109
- 'applyFilter': undefined,
110
- 'removeFilter': {
111
- filter: Filter
112
- },
113
- 'removeAllFilters': undefined
114
- }>()
115
-
116
- let open: boolean = false,
117
- mobileOpen: boolean = false,
118
- activator: HTMLElement
119
-
120
- function handleAddFilterClick() {
121
- dispatch('addFilterClick')
122
- open = true
123
- mobileOpen = true
124
- }
125
-
126
- $: filterOptions = filters.map((f) => {
1
+ <script context="module"></script>
2
+
3
+ <script>import "./Filters.css";
4
+ import "../../../css/main.css";
5
+ import Drawer from "../../simple/navigation/Drawer.svelte";
6
+ import Menu from "../../simple/common/Menu.svelte";
7
+ import MediaQuery from "../../simple/common/MediaQuery.svelte";
8
+ import Button from "../../simple/buttons/Button.svelte";
9
+ import Icon from "../../simple/media/Icon.svelte";
10
+ import { createEventDispatcher } from "svelte";
11
+ import { isDateMode, isSelectMode, isStringMode } from "../../../utils/filters/filters";
12
+ import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
13
+ import Chip from "../../simple/navigation/Chip.svelte";
14
+ import FilterEditor from "./FilterEditor.svelte";
15
+ import MobileFilterEditor from "./MobileFilterEditor.svelte";
16
+ import { fly } from "svelte/transition";
17
+ import Dialog from "../../simple/dialogs/Dialog.svelte";
18
+ import Validator from "../../../utils/filters/validator";
19
+ import ToolTip from "../common/ToolTip.svelte";
20
+ import { DateTime } from "luxon";
21
+ export let filters = [], lang = "en", addFilterLabel = lang == "en" ? "Filters" : "Filtri", cancelFilterLabel = lang == "en" ? "Cancel" : "Annulla", applyFilterLabel = lang == "en" ? "Apply filter" : "Applica filtro", showActiveFilters = true, filterTitleLabel = lang == "en" ? "Filter by" : "Filtra per", dateLocale = lang == "en" ? "en" : "it", betweenSeparator = lang == "en" ? "and" : "e", trueString = lang == "en" ? "true" : "vero", falseString = lang == "en" ? "false" : "falso", editFilterMode = "one-edit", labelsMapper = lang == "en" ? {
22
+ "equal": {
23
+ extended: "equal to",
24
+ short: "equal"
25
+ },
26
+ "like": {
27
+ short: "includes"
28
+ },
29
+ "ilike": {
30
+ short: "includes"
31
+ },
32
+ "contains": {
33
+ short: "contains"
34
+ },
35
+ "greater": {
36
+ short: "greater",
37
+ extended: "greater than"
38
+ },
39
+ "lower": {
40
+ short: "lower",
41
+ extended: "lower than"
42
+ },
43
+ "between": {
44
+ short: "between",
45
+ extended: "is between"
46
+ },
47
+ "different": {
48
+ short: "different",
49
+ extended: "different from"
50
+ }
51
+ } : {
52
+ "equal": {
53
+ extended: "uguale a",
54
+ short: "uguale"
55
+ },
56
+ "like": {
57
+ short: "include"
58
+ },
59
+ "ilike": {
60
+ short: "include"
61
+ },
62
+ "contains": {
63
+ short: "contiene"
64
+ },
65
+ "greater": {
66
+ short: "maggiore",
67
+ extended: "maggiore di"
68
+ },
69
+ "lower": {
70
+ short: "minore",
71
+ extended: "minore di"
72
+ },
73
+ "between": {
74
+ short: "compreso",
75
+ extended: "\xE8 compreso tra"
76
+ },
77
+ "different": {
78
+ short: "diverso",
79
+ extended: "diverso da"
80
+ }
81
+ };
82
+ let dispatch = createEventDispatcher();
83
+ let open = false, mobileOpen = false, activator;
84
+ function handleAddFilterClick() {
85
+ dispatch("addFilterClick");
86
+ open = true;
87
+ mobileOpen = true;
88
+ }
89
+ $:
90
+ filterOptions = filters.map((f) => {
127
91
  return {
128
92
  title: f.label,
129
93
  name: f.name
130
- }
131
- })
132
-
133
- $: deletableFilterOptions = filters.map((f) => {
94
+ };
95
+ });
96
+ $:
97
+ deletableFilterOptions = filters.map((f) => {
134
98
  return {
135
99
  title: f.label,
136
100
  name: f.name,
137
- appendIcon: f.active ? 'mdi-delete' : undefined
101
+ appendIcon: f.active ? "mdi-delete" : void 0
102
+ };
103
+ });
104
+ let selected;
105
+ let focused;
106
+ $:
107
+ if (!!focused && !open)
108
+ focused = void 0;
109
+ let filterOpened = "new";
110
+ let filterOptionsListActivator;
111
+ let singleFilterActivator;
112
+ let singleFilterMenuAnchor = "right-center";
113
+ let singleFilterMenuOpened = false;
114
+ let selectedFilter = void 0;
115
+ $:
116
+ selectedFilterIndex = filters.findIndex((f) => {
117
+ return f.name === selected;
118
+ });
119
+ $:
120
+ selectedFilter = selected === void 0 ? void 0 : filters[selectedFilterIndex];
121
+ function handleFilterSelection(e, mobile = false) {
122
+ if (mobile) {
123
+ selected = e.detail.element.name;
124
+ singleFilterMenuOpened = true;
125
+ } else {
126
+ singleFilterActivator = filterOptionsListActivator;
127
+ singleFilterMenuAnchor = "right-center";
128
+ singleFilterMenuOpened = true;
129
+ selected = e.detail.element.name;
130
+ filterOpened = "new";
131
+ }
132
+ let filter = filters.find((f) => f.name === e.detail.element.name);
133
+ if (!!filter) {
134
+ if (filter.type === "custom") {
135
+ customFilterApplyDisabled = filter.active === void 0 || filter.active === false;
138
136
  }
139
- })
140
-
141
- let selected: ArrayElement<NonNullable<ComponentProps<SelectableVerticalList>['elements']>>['name'] | undefined
142
- let focused: ArrayElement<NonNullable<ComponentProps<SelectableVerticalList>['elements']>>['name'] | undefined
143
- $: if(!!focused && !open) focused = undefined
144
-
145
- let filterOpened: 'edit' | 'new' = 'new'
146
-
147
-
148
- let filterOptionsListActivator: HTMLElement | undefined
149
- let singleFilterActivator: HTMLElement | undefined
150
- let singleFilterMenuAnchor: 'right-center' | 'bottom-center' = 'right-center'
151
- let singleFilterMenuOpened: boolean = false
152
-
153
- let selectedFilter : Filter | undefined = undefined
154
- $: selectedFilterIndex = filters.findIndex((f) => { return f.name === selected })
155
- $: selectedFilter = selected === undefined ? undefined : filters[selectedFilterIndex]
156
-
157
-
158
- function handleFilterSelection(e: CustomEvent, mobile: boolean = false) {
159
- if(mobile) {
160
- selected = e.detail.element.name
161
- singleFilterMenuOpened = true;
162
- } else {
163
- singleFilterActivator = filterOptionsListActivator
164
- singleFilterMenuAnchor = 'right-center'
165
- singleFilterMenuOpened = true;
166
- selected = e.detail.element.name
167
- filterOpened = 'new'
137
+ }
138
+ }
139
+ function handleCancelFilterClick() {
140
+ open = false;
141
+ mobileOpen = false;
142
+ singleFilterMenuOpened = false;
143
+ }
144
+ function handleApplyFilterClick() {
145
+ if (!!selectedFilter && !!selectedTmpFilter) {
146
+ selectedFilter = { ...selectedTmpFilter };
147
+ selectedFilter.active = true;
148
+ filters[selectedFilterIndex] = selectedFilter;
149
+ open = false;
150
+ mobileOpen = false;
151
+ singleFilterMenuOpened = false;
152
+ dispatch("applyFilter");
153
+ }
154
+ }
155
+ $:
156
+ activeFilters = filters.filter((f) => f.active);
157
+ function handleRemoveFilter(filter) {
158
+ let filterIndex = filters.findIndex((f) => f.name === filter.name);
159
+ let filterName = filter.name;
160
+ filters[filterIndex].active = false;
161
+ tmpFilters[filterName].active = false;
162
+ if (Object.keys(filters[filterIndex]).includes("value")) {
163
+ filters[filterIndex].value = void 0;
164
+ if (!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes("value")) {
165
+ tmpFilters[filterName].value = void 0;
168
166
  }
169
-
170
- let filter = filters.find(f => f.name === e.detail.element.name)
171
- if(!!filter) {
172
- if(filter.type === 'custom') {
173
- customFilterApplyDisabled = filter.active === undefined || filter.active === false
174
- }
167
+ }
168
+ if (Object.keys(filters[filterIndex]).includes("from")) {
169
+ filters[filterIndex].from = void 0;
170
+ if (!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes("from")) {
171
+ tmpFilters[filterName].from = void 0;
175
172
  }
176
173
  }
177
-
178
- function handleCancelFilterClick() {
179
- open = false
180
- mobileOpen = false
181
- singleFilterMenuOpened = false;
174
+ if (Object.keys(filters[filterIndex]).includes("to")) {
175
+ filters[filterIndex].to = void 0;
176
+ if (!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes("to")) {
177
+ tmpFilters[filterName].to = void 0;
178
+ }
182
179
  }
183
-
184
- function handleApplyFilterClick() {
185
- if(!!selectedFilter && !!selectedTmpFilter) {
186
- selectedFilter = {...selectedTmpFilter}
187
- selectedFilter.active = true
188
- filters[selectedFilterIndex] = selectedFilter
189
- open = false
190
- mobileOpen = false
191
- singleFilterMenuOpened = false;
192
- dispatch('applyFilter')
180
+ if (Object.keys(filters[filterIndex]).includes("values")) {
181
+ filters[filterIndex].values = void 0;
182
+ if (!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes("values")) {
183
+ tmpFilters[filterName].values = void 0;
193
184
  }
194
185
  }
195
-
196
- $: activeFilters = filters.filter((f) => f.active)
197
-
198
- function handleRemoveFilter(filter: { name: string }) {
199
- let filterIndex = filters.findIndex((f) => f.name === filter.name)
200
- let filterName = filter.name
201
- filters[filterIndex].active = false
202
- tmpFilters[filterName].active = false
203
- if(Object.keys(filters[filterIndex]).includes('value')) {
204
- //@ts-ignore
205
- filters[filterIndex].value = undefined
206
- if(!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes('value')) {
207
- //@ts-ignore
208
- tmpFilters[filterName].value = undefined
209
- }
186
+ singleFilterMenuOpened = false;
187
+ dispatch("removeFilter", { filter: filters[filterIndex] });
188
+ }
189
+ let activeFiltersActivators = {};
190
+ function handleActiveFilterClick(filter) {
191
+ singleFilterActivator = activeFiltersActivators[filter.name];
192
+ singleFilterMenuAnchor = "bottom-center";
193
+ singleFilterMenuOpened = true;
194
+ mobileOpen = true;
195
+ selected = filter.name;
196
+ filterOpened = "edit";
197
+ if (filter.type === "custom") {
198
+ customFilterApplyDisabled = false;
199
+ }
200
+ }
201
+ function handleMobileBackTap() {
202
+ closeFilterMenu(0);
203
+ }
204
+ function closeFilterMenu(delay) {
205
+ setTimeout(() => {
206
+ singleFilterMenuOpened = false;
207
+ }, delay);
208
+ }
209
+ function handleDeleteIconClick(e) {
210
+ let filterIndex = e.detail.index;
211
+ let name = filters[filterIndex].name;
212
+ handleRemoveFilter({ name });
213
+ }
214
+ function handleRemoveAllFilters(e) {
215
+ if (!!e)
216
+ e.stopPropagation();
217
+ for (let i = 0; i < filters.length; i += 1) {
218
+ filters[i].active = false;
219
+ if (Object.keys(filters[i]).includes("value")) {
220
+ filters[i].value = void 0;
210
221
  }
211
- if(Object.keys(filters[filterIndex]).includes('from')) {
212
- //@ts-ignore
213
- filters[filterIndex].from = undefined
214
- if(!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes('from')) {
215
- //@ts-ignore
216
- tmpFilters[filterName].from = undefined
217
- }
222
+ if (Object.keys(filters[i]).includes("from")) {
223
+ filters[i].from = void 0;
218
224
  }
219
- if(Object.keys(filters[filterIndex]).includes('to')) {
220
- //@ts-ignore
221
- filters[filterIndex].to = undefined
222
- if(!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes('to')) {
223
- //@ts-ignore
224
- tmpFilters[filterName].to = undefined
225
- }
225
+ if (Object.keys(filters[i]).includes("to")) {
226
+ filters[i].to = void 0;
226
227
  }
227
- if(Object.keys(filters[filterIndex]).includes('values')) {
228
- //@ts-ignore
229
- filters[filterIndex].values = undefined
230
- if(!!tmpFilters[filterName] && Object.keys(tmpFilters[filterName]).includes('values')) {
231
- //@ts-ignore
232
- tmpFilters[filterName].values = undefined
233
- }
228
+ if (Object.keys(filters[i]).includes("values")) {
229
+ filters[i].values = void 0;
234
230
  }
235
- singleFilterMenuOpened = false
236
- dispatch('removeFilter', { filter: filters[filterIndex] })
231
+ singleFilterMenuOpened = false;
237
232
  }
238
-
239
- let activeFiltersActivators: Record<string, HTMLElement> = {}
240
- function handleActiveFilterClick(filter: { name: string, type: 'custom' | string }) {
241
- singleFilterActivator = activeFiltersActivators[filter.name]
242
- singleFilterMenuAnchor = 'bottom-center'
243
- singleFilterMenuOpened = true;
244
- mobileOpen=true
245
- selected = filter.name
246
- filterOpened = 'edit'
247
-
248
- if(filter.type === 'custom') {
249
- customFilterApplyDisabled = false
233
+ filters = filters;
234
+ tmpFilters = {};
235
+ customToBeInitialized = false;
236
+ dispatch("removeAllFilters");
237
+ }
238
+ function handleMultiEditApplyClick() {
239
+ open = false;
240
+ mobileOpen = false;
241
+ dispatch("applyFilter");
242
+ }
243
+ function handleMultiEditRemoveClick() {
244
+ handleRemoveAllFilters();
245
+ open = false;
246
+ mobileOpen = false;
247
+ }
248
+ let selectedTmpFilter = void 0;
249
+ let tmpFilters = {};
250
+ function handleApplyMultiFilterClick() {
251
+ for (let i = 0; i < filters.length; i += 1) {
252
+ if (!!filters[i] && !!tmpFilters[filters[i].name]) {
253
+ filters[i] = { ...tmpFilters[filters[i].name] };
254
+ filters[i].active = filters[i].type !== "custom" ? Validator.isValid(tmpFilters[filters[i].name]) : tmpFilters[filters[i].name].active;
250
255
  }
251
256
  }
252
-
253
- function handleMobileBackTap() {
254
- closeFilterMenu(0)
255
- }
256
-
257
- function closeFilterMenu(delay: number) {
258
- setTimeout(() => {
259
- singleFilterMenuOpened = false
260
- }, delay)
261
- }
262
-
263
- function handleDeleteIconClick(e: CustomEvent) {
264
- let filterIndex = e.detail.index
265
- let name = filters[filterIndex].name
266
- handleRemoveFilter({name})
267
- }
268
-
269
- function handleRemoveAllFilters(e?: MouseEvent) {
270
- if(!!e) e.stopPropagation()
271
- for(let i = 0; i < filters.length; i += 1) {
272
- filters[i].active = false
273
- if(Object.keys(filters[i]).includes('value')) {
274
- //@ts-ignore
275
- filters[i].value = undefined
276
- }
277
- if(Object.keys(filters[i]).includes('from')) {
278
- //@ts-ignore
279
- filters[i].from = undefined
280
- }
281
- if(Object.keys(filters[i]).includes('to')) {
282
- //@ts-ignore
283
- filters[i].to = undefined
284
- }
285
- if(Object.keys(filters[i]).includes('values')) {
286
- //@ts-ignore
287
- filters[i].values = undefined
288
- }
289
- singleFilterMenuOpened = false
257
+ filters = filters;
258
+ handleMultiEditApplyClick();
259
+ }
260
+ function updateMultiFilterValues(filterName, newValue, newValid, mode) {
261
+ let filter = filters.find((f) => f.name === filterName);
262
+ if (!filter)
263
+ throw new Error("cannot find filter with name " + filterName);
264
+ if (!tmpFilters[filterName])
265
+ tmpFilters[filterName] = { ...filter };
266
+ let tmpFilter = tmpFilters[filterName];
267
+ if ("mode" in tmpFilter && !!mode) {
268
+ if (tmpFilter.type == "date" && isDateMode(mode)) {
269
+ tmpFilter.mode = mode;
270
+ } else if (tmpFilter.type == "number" && isDateMode(mode)) {
271
+ tmpFilter.mode = mode;
272
+ } else if (tmpFilter.type == "string" && isStringMode(mode)) {
273
+ tmpFilter.mode = mode;
274
+ } else if (tmpFilter.type == "select" && isSelectMode(mode)) {
275
+ tmpFilter.mode = mode;
290
276
  }
291
- filters = filters
292
- tmpFilters = {}
293
- customToBeInitialized = false
294
- dispatch('removeAllFilters')
295
- }
296
-
297
- function handleMultiEditApplyClick() {
298
- open = false
299
- mobileOpen = false
300
- dispatch('applyFilter')
301
- }
302
-
303
- function handleMultiEditRemoveClick() {
304
- handleRemoveAllFilters()
305
- open = false
306
- mobileOpen = false
307
277
  }
308
-
309
- let selectedTmpFilter: Filter | undefined = undefined
310
-
311
- let tmpFilters: {[filterName: string]: Filter} = {}
312
-
313
- function handleApplyMultiFilterClick() {
314
- for(let i = 0; i < filters.length; i += 1) {
315
- if(!!filters[i] && !!tmpFilters[filters[i].name]) {
316
- filters[i] = {...tmpFilters[filters[i].name]}
317
- filters[i].active = filters[i].type !== 'custom' ? Validator.isValid(tmpFilters[filters[i].name]) : tmpFilters[filters[i].name].active
318
- }
319
- }
320
- filters = filters
321
- handleMultiEditApplyClick()
322
- }
323
-
324
- function updateMultiFilterValues(filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) {
325
- let filter = filters.find(f => f.name === filterName)
326
- if(!filter) throw new Error('cannot find filter with name ' + filterName)
327
- if(!tmpFilters[filterName]) tmpFilters[filterName] = {...filter}
328
- let tmpFilter = tmpFilters[filterName]
329
- if('mode' in tmpFilter && !!mode) {
330
- if(tmpFilter.type == 'date' && isDateMode(mode)){
331
- tmpFilter.mode = mode
332
- }
333
- else if(tmpFilter.type == 'number' && isDateMode(mode)){
334
- tmpFilter.mode = mode
335
- }
336
- else if(tmpFilter.type == 'string' && isStringMode(mode)){
337
- tmpFilter.mode = mode
338
- }
339
- else if(tmpFilter.type == 'select' && isSelectMode(mode)){
340
- tmpFilter.mode = mode
341
- }
342
- }
343
- if(tmpFilter.type == 'select') {
344
- tmpFilter.values = newValue
345
- } else if('mode' in tmpFilter && tmpFilter.mode == 'between') {
346
- if(tmpFilter.type == 'date'){
347
- if(newValue.from){
348
- tmpFilter.from = DateTime.fromJSDate(newValue.from).setLocale('it-IT').startOf('day').toJSDate()
349
- }
350
- if(newValue.to){
351
- tmpFilter.to = DateTime.fromJSDate(newValue.to).setLocale('it-IT').endOf('day').toJSDate()
352
- }
278
+ if (tmpFilter.type == "select") {
279
+ tmpFilter.values = newValue;
280
+ } else if ("mode" in tmpFilter && tmpFilter.mode == "between") {
281
+ if (tmpFilter.type == "date") {
282
+ if (newValue.from) {
283
+ tmpFilter.from = DateTime.fromJSDate(newValue.from).setLocale("it-IT").startOf("day").toJSDate();
353
284
  }
354
- else {
355
- tmpFilter.from = newValue.from
356
- tmpFilter.to = newValue.to
285
+ if (newValue.to) {
286
+ tmpFilter.to = DateTime.fromJSDate(newValue.to).setLocale("it-IT").endOf("day").toJSDate();
357
287
  }
358
288
  } else {
359
- tmpFilter.value = newValue
360
- }
361
- tmpFilter.active = newValid
362
- }
363
-
364
- let customToBeInitialized = true
365
- $: if(customToBeInitialized && !!tmpFilters) initCustomTmpFilters()
366
-
367
- function initCustomTmpFilters() {
368
- let customFilters = filters.filter(f => f.type === 'custom')
369
- for(const customFilter of customFilters) {
370
- if(!tmpFilters[customFilter.name]) {
371
- tmpFilters[customFilter.name] = { ...customFilter }
372
- }
289
+ tmpFilter.from = newValue.from;
290
+ tmpFilter.to = newValue.to;
373
291
  }
374
- customToBeInitialized = false
375
- }
376
-
377
- let customFilterApplyDisabled: boolean = true
378
- function updateFunction(filterName: string, newValue: any, newValid: boolean) {
379
- let tmpFilter = tmpFilters[filterName]
380
- if(!!tmpFilter && tmpFilter.type == 'custom') {
381
- tmpFilter.value = newValue
382
- tmpFilter.active = newValid
383
- selectedTmpFilter = {...tmpFilter}
384
- customFilterApplyDisabled = !newValid
292
+ } else {
293
+ tmpFilter.value = newValue;
294
+ }
295
+ tmpFilter.active = newValid;
296
+ }
297
+ let customToBeInitialized = true;
298
+ $:
299
+ if (customToBeInitialized && !!tmpFilters)
300
+ initCustomTmpFilters();
301
+ function initCustomTmpFilters() {
302
+ let customFilters = filters.filter((f) => f.type === "custom");
303
+ for (const customFilter of customFilters) {
304
+ if (!tmpFilters[customFilter.name]) {
305
+ tmpFilters[customFilter.name] = { ...customFilter };
385
306
  }
386
307
  }
387
-
388
- let moreItemsActivator: HTMLElement
389
-
308
+ customToBeInitialized = false;
309
+ }
310
+ let customFilterApplyDisabled = true;
311
+ function updateFunction(filterName, newValue, newValid) {
312
+ let tmpFilter = tmpFilters[filterName];
313
+ if (!!tmpFilter && tmpFilter.type == "custom") {
314
+ tmpFilter.value = newValue;
315
+ tmpFilter.active = newValid;
316
+ selectedTmpFilter = { ...tmpFilter };
317
+ customFilterApplyDisabled = !newValid;
318
+ }
319
+ }
320
+ let moreItemsActivator;
390
321
  </script>
391
322
 
392
323
  <MediaQuery let:mAndDown>