@likable-hair/svelte 3.3.24 → 3.3.26

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 +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 +21 -43
  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 +836 -1227
  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 +149 -159
  40. package/dist/components/composed/search/DynamicFilters.svelte.d.ts +27 -31
  41. package/dist/components/composed/search/FilterEditor.svelte +78 -106
  42. package/dist/components/composed/search/FilterEditor.svelte.d.ts +33 -37
  43. package/dist/components/composed/search/Filters.css +2 -1
  44. package/dist/components/composed/search/Filters.svelte +300 -362
  45. package/dist/components/composed/search/Filters.svelte.d.ts +52 -55
  46. package/dist/components/composed/search/GlobalSearchTextField.svelte +41 -79
  47. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +39 -43
  48. package/dist/components/composed/search/MobileFilterEditor.svelte +93 -135
  49. package/dist/components/composed/search/MobileFilterEditor.svelte.d.ts +35 -39
  50. package/dist/components/composed/search/SearchBar.svelte +5 -28
  51. package/dist/components/composed/search/SearchBar.svelte.d.ts +30 -34
  52. package/dist/components/composed/search/SearchResults.svelte +7 -42
  53. package/dist/components/composed/search/SearchResults.svelte.d.ts +36 -40
  54. package/dist/components/composed/shop/ProductCard.svelte +4 -18
  55. package/dist/components/composed/shop/ProductCard.svelte.d.ts +28 -32
  56. package/dist/components/composed/shop/ProductsGrid.svelte +2 -22
  57. package/dist/components/composed/shop/ProductsGrid.svelte.d.ts +40 -44
  58. package/dist/components/layouts/CollapsibleSideBarLayout.css +6 -9
  59. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +67 -140
  60. package/dist/components/layouts/CollapsibleSideBarLayout.svelte.d.ts +54 -110
  61. package/dist/components/layouts/StableDividedSideBarLayout.svelte +17 -47
  62. package/dist/components/layouts/StableDividedSideBarLayout.svelte.d.ts +32 -50
  63. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +30 -53
  64. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte.d.ts +63 -103
  65. package/dist/components/simple/buttons/Button.svelte +32 -78
  66. package/dist/components/simple/buttons/Button.svelte.d.ts +35 -47
  67. package/dist/components/simple/buttons/LinkButton.svelte +22 -54
  68. package/dist/components/simple/buttons/LinkButton.svelte.d.ts +33 -50
  69. package/dist/components/simple/charts/GanymedeBarChart.svelte +134 -172
  70. package/dist/components/simple/charts/GanymedeBarChart.svelte.d.ts +46 -50
  71. package/dist/components/simple/charts/GanymedeLineChart.svelte +115 -157
  72. package/dist/components/simple/charts/GanymedeLineChart.svelte.d.ts +47 -51
  73. package/dist/components/simple/charts/GanymedePieChart.svelte +39 -62
  74. package/dist/components/simple/charts/GanymedePieChart.svelte.d.ts +33 -37
  75. package/dist/components/simple/common/Card.svelte +1 -20
  76. package/dist/components/simple/common/Card.svelte.d.ts +38 -51
  77. package/dist/components/simple/common/CollapsibleDivider.svelte +11 -23
  78. package/dist/components/simple/common/CollapsibleDivider.svelte.d.ts +25 -29
  79. package/dist/components/simple/common/Divider.svelte +2 -8
  80. package/dist/components/simple/common/Divider.svelte.d.ts +19 -23
  81. package/dist/components/simple/common/Gesture.svelte +46 -64
  82. package/dist/components/simple/common/Gesture.svelte.d.ts +17 -21
  83. package/dist/components/simple/common/InfiniteScroll.svelte +29 -52
  84. package/dist/components/simple/common/InfiniteScroll.svelte.d.ts +20 -24
  85. package/dist/components/simple/common/IntersectionObserver.svelte +32 -45
  86. package/dist/components/simple/common/IntersectionObserver.svelte.d.ts +21 -34
  87. package/dist/components/simple/common/MediaQuery.svelte +21 -30
  88. package/dist/components/simple/common/MediaQuery.svelte.d.ts +30 -34
  89. package/dist/components/simple/common/Menu.svelte +201 -290
  90. package/dist/components/simple/common/Menu.svelte.d.ts +40 -51
  91. package/dist/components/simple/common/Playground.svelte +17 -18
  92. package/dist/components/simple/common/Playground.svelte.d.ts +15 -19
  93. package/dist/components/simple/common/VerticalDraggableList.svelte +16 -35
  94. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +29 -33
  95. package/dist/components/simple/common/materialDesign.css +1 -1
  96. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +26 -32
  97. package/dist/components/simple/dashboards/DashboardGridShaper.svelte.d.ts +12 -16
  98. package/dist/components/simple/dates/Calendar.svelte +28 -52
  99. package/dist/components/simple/dates/Calendar.svelte.d.ts +41 -45
  100. package/dist/components/simple/dates/DatePicker.svelte +60 -90
  101. package/dist/components/simple/dates/DatePicker.svelte.d.ts +40 -44
  102. package/dist/components/simple/dates/MonthSelector.svelte +15 -37
  103. package/dist/components/simple/dates/MonthSelector.svelte.d.ts +31 -35
  104. package/dist/components/simple/dates/TimePicker.svelte +31 -45
  105. package/dist/components/simple/dates/TimePicker.svelte.d.ts +20 -24
  106. package/dist/components/simple/dates/TimePickerTextField.svelte +35 -56
  107. package/dist/components/simple/dates/TimePickerTextField.svelte.d.ts +24 -28
  108. package/dist/components/simple/dates/YearSelector.svelte +29 -54
  109. package/dist/components/simple/dates/YearSelector.svelte.d.ts +31 -35
  110. package/dist/components/simple/dialogs/Dialog.svelte +62 -92
  111. package/dist/components/simple/dialogs/Dialog.svelte.d.ts +28 -42
  112. package/dist/components/simple/forms/Autocomplete.svelte +142 -201
  113. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +79 -83
  114. package/dist/components/simple/forms/Checkbox.svelte +27 -41
  115. package/dist/components/simple/forms/Checkbox.svelte.d.ts +21 -25
  116. package/dist/components/simple/forms/FileInput.svelte +48 -88
  117. package/dist/components/simple/forms/FileInput.svelte.d.ts +33 -37
  118. package/dist/components/simple/forms/FileInputList.svelte +242 -110
  119. package/dist/components/simple/forms/FileInputList.svelte.d.ts +36 -43
  120. package/dist/components/simple/forms/RadioButton.svelte +3 -11
  121. package/dist/components/simple/forms/RadioButton.svelte.d.ts +27 -31
  122. package/dist/components/simple/forms/Select.svelte +3 -16
  123. package/dist/components/simple/forms/Select.svelte.d.ts +20 -24
  124. package/dist/components/simple/forms/SimpleTextField.svelte +6 -53
  125. package/dist/components/simple/forms/SimpleTextField.svelte.d.ts +60 -64
  126. package/dist/components/simple/forms/Switch.svelte +16 -30
  127. package/dist/components/simple/forms/Switch.svelte.d.ts +21 -25
  128. package/dist/components/simple/forms/Textarea.svelte +2 -27
  129. package/dist/components/simple/forms/Textarea.svelte.d.ts +37 -41
  130. package/dist/components/simple/forms/Textfield.svelte +18 -56
  131. package/dist/components/simple/forms/Textfield.svelte.d.ts +51 -55
  132. package/dist/components/simple/forms/TreeEditor.svelte +95 -141
  133. package/dist/components/simple/forms/TreeEditor.svelte.d.ts +38 -42
  134. package/dist/components/simple/forms/TreeEditorItem.svelte +42 -77
  135. package/dist/components/simple/forms/TreeEditorItem.svelte.d.ts +50 -54
  136. package/dist/components/simple/forms/VerticalSwitch.svelte +1 -11
  137. package/dist/components/simple/forms/VerticalSwitch.svelte.d.ts +28 -32
  138. package/dist/components/simple/forms/VerticalTextSwitch.svelte +3 -15
  139. package/dist/components/simple/forms/VerticalTextSwitch.svelte.d.ts +26 -30
  140. package/dist/components/simple/lists/ColorInvertedSelector.svelte +23 -53
  141. package/dist/components/simple/lists/ColorInvertedSelector.svelte.d.ts +42 -46
  142. package/dist/components/simple/lists/HierarchyMenu.svelte +19 -38
  143. package/dist/components/simple/lists/HierarchyMenu.svelte.d.ts +30 -34
  144. package/dist/components/simple/lists/Paginator.svelte +41 -50
  145. package/dist/components/simple/lists/Paginator.svelte.d.ts +19 -23
  146. package/dist/components/simple/lists/SelectableMenuList.svelte +15 -43
  147. package/dist/components/simple/lists/SelectableMenuList.svelte.d.ts +20 -24
  148. package/dist/components/simple/lists/SelectableVerticalList.svelte +57 -99
  149. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +47 -51
  150. package/dist/components/simple/lists/SidebarMenuList.svelte +71 -116
  151. package/dist/components/simple/lists/SidebarMenuList.svelte.d.ts +22 -26
  152. package/dist/components/simple/lists/SimpleTable.svelte +154 -264
  153. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +66 -70
  154. package/dist/components/simple/loaders/CircularLoader.svelte +5 -16
  155. package/dist/components/simple/loaders/CircularLoader.svelte.d.ts +15 -19
  156. package/dist/components/simple/loaders/Skeleton.svelte +2 -3
  157. package/dist/components/simple/loaders/Skeleton.svelte.d.ts +12 -16
  158. package/dist/components/simple/media/AttachmentDownloader.svelte +3 -17
  159. package/dist/components/simple/media/AttachmentDownloader.svelte.d.ts +28 -32
  160. package/dist/components/simple/media/Avatar.svelte +12 -18
  161. package/dist/components/simple/media/Avatar.svelte.d.ts +20 -31
  162. package/dist/components/simple/media/Carousel.svelte +11 -29
  163. package/dist/components/simple/media/Carousel.svelte.d.ts +24 -28
  164. package/dist/components/simple/media/DescriptiveAvatar.svelte +4 -12
  165. package/dist/components/simple/media/DescriptiveAvatar.svelte.d.ts +28 -44
  166. package/dist/components/simple/media/FlagIcon.svelte +5 -8
  167. package/dist/components/simple/media/FlagIcon.svelte.d.ts +15 -19
  168. package/dist/components/simple/media/Gallery.svelte +29 -49
  169. package/dist/components/simple/media/Gallery.svelte.d.ts +23 -27
  170. package/dist/components/simple/media/Icon.svelte +4 -9
  171. package/dist/components/simple/media/Icon.svelte.d.ts +20 -24
  172. package/dist/components/simple/media/Image.svelte +20 -42
  173. package/dist/components/simple/media/Image.svelte.d.ts +33 -44
  174. package/dist/components/simple/media/ImageGrid.svelte +12 -37
  175. package/dist/components/simple/media/ImageGrid.svelte.d.ts +28 -32
  176. package/dist/components/simple/navigation/Breadcrumb.svelte +10 -28
  177. package/dist/components/simple/navigation/Breadcrumb.svelte.d.ts +22 -26
  178. package/dist/components/simple/navigation/Chip.svelte +23 -44
  179. package/dist/components/simple/navigation/Chip.svelte.d.ts +31 -42
  180. package/dist/components/simple/navigation/Drawer.svelte +65 -107
  181. package/dist/components/simple/navigation/Drawer.svelte.d.ts +37 -50
  182. package/dist/components/simple/navigation/HeaderMenu.svelte +23 -40
  183. package/dist/components/simple/navigation/HeaderMenu.svelte.d.ts +35 -39
  184. package/dist/components/simple/navigation/Navigator.svelte +8 -30
  185. package/dist/components/simple/navigation/Navigator.svelte.d.ts +24 -28
  186. package/dist/components/simple/navigation/TabSwitcher.svelte +47 -83
  187. package/dist/components/simple/navigation/TabSwitcher.svelte.d.ts +34 -38
  188. package/dist/components/simple/notifiers/AlertBanner.svelte +15 -43
  189. package/dist/components/simple/notifiers/AlertBanner.svelte.d.ts +37 -41
  190. package/dist/components/simple/progress/ProgressBar.svelte +13 -20
  191. package/dist/components/simple/progress/ProgressBar.svelte.d.ts +17 -21
  192. package/dist/components/simple/timeline/SimpleTimeLine.svelte +5 -19
  193. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +35 -39
  194. package/dist/components/simple/typography/Code.svelte +12 -27
  195. package/dist/components/simple/typography/Code.svelte.d.ts +24 -28
  196. package/dist/stores/debounce.d.ts +1 -0
  197. package/dist/stores/layouts/unstableSidebarOpened.d.ts +1 -0
  198. package/dist/stores/mediaQuery.d.ts +1 -0
  199. package/dist/stores/theme.d.ts +1 -0
  200. package/package.json +1 -1
@@ -1,174 +1,160 @@
1
- <script lang="ts">
2
- import { FilterEditor, Icon } from "../../..";
3
- import type { DateMode, Filter, NumberMode, SelectMode, StringMode } from "../../../utils/filters/filters";
4
- import { createEventDispatcher } from "svelte"
5
-
6
-
7
- export let filters: Filter[] = [],
8
- lang: "it" | "en" = "en",
9
- mAndDown: boolean = false,
10
- updateMultiFilterValues: (filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) => void;
11
-
12
- let selectedFilter: Filter | undefined;
13
- let tmpFilters: { [filterName: string]: Filter } = filters.reduce((acc, f) => {
14
- if (f.active) {
15
- acc[f.name] = f;
16
- }
17
- return acc;
18
- }, {} as { [filterName: string]: Filter });
19
-
20
- const dispatch = createEventDispatcher<{
21
- 'change': { filter: Filter }
22
- }>()
23
-
24
- type LabelMapper = {
25
- [label: string]: { extended?: string; short: string };
26
- };
27
-
28
- let labelsMapper: LabelMapper = lang == 'en' ? {
29
- equal: { extended: "equal to", short: "equal" },
30
- like: { short: "includes" },
31
- ilike: { short: "includes" },
32
- contains: { short: "contains" },
33
- greater: { short: "greater", extended: "greater than" },
34
- lower: { short: "lower", extended: "lower than" },
35
- between: { short: "between", extended: "is between" },
36
- different: { short: "different", extended: "different from" },
37
- } : {
38
- equal: { extended: "uguale a", short: "uguale" },
39
- like: { short: "include" },
40
- ilike: { short: "include" },
41
- contains: { short: "contiene" },
42
- greater: { short: "maggiore", extended: "maggiore di" },
43
- lower: { short: "minore", extended: "minore di" },
44
- between: { short: "compreso", extended: "è compreso tra" },
45
- different: { short: "diverso", extended: "diverso da" },
46
- };
47
-
48
- function selectFilter(filter: Filter) {
49
- selectedFilter = filter === selectedFilter ? undefined : filter;
50
- }
51
-
52
- function handleKeyPress(event: any, filter: Filter) {
53
- if (event.key === "Enter" || event.key === " ") {
54
- selectFilter(filter);
55
- }
56
- }
57
-
58
- function handleFilterChange() {
59
- if(!!selectedFilter){
60
- dispatch('change', { filter: tmpFilters[selectedFilter.name] })
61
- filters = filters.map(f => {
62
- if (f.name === selectedFilter?.name) {
63
- return tmpFilters[selectedFilter.name]
64
- }
65
- return f
66
- })
67
- }
68
- }
69
-
70
- function isActiveFilter(filter: Filter) {
71
- let newValue: any = {},
72
- newValid: boolean = false
73
- if(filter.type == 'select') {
74
- newValue = filter.values
75
- if(!!newValue && newValue.length > 0) {
76
- newValid = true
77
- }
78
- } else if('mode' in filter && filter.mode == 'between') {
79
- newValue.to = filter.to
80
- newValue.from = filter.from
81
- if(!!newValue.from || !!newValue.to) {
82
- newValid = true
83
- }
84
- } else if (filter.type == 'custom') {
85
- newValue = filter.value
86
- if ((Array.isArray(newValue) && newValue.length > 0) || (!Array.isArray(newValue) && !!newValue)) {
87
- newValid = true;
88
- }
89
- } else {
90
- newValue = filter.value
91
- if(!!newValue) {
92
- newValid = true
1
+ <script>import { FilterEditor, Icon } from "../../..";
2
+ import MediaQuery from "../../simple/common/MediaQuery.svelte";
3
+ import { createEventDispatcher } from "svelte";
4
+ export let filters = [], lang = "en", mAndDown = false, updateMultiFilterValues;
5
+ let selectedFilter;
6
+ let tmpFilters = filters.reduce((acc, f) => {
7
+ if (f.active) {
8
+ acc[f.name] = f;
9
+ }
10
+ return acc;
11
+ }, {});
12
+ const dispatch = createEventDispatcher();
13
+ let labelsMapper = lang == "en" ? {
14
+ equal: { extended: "equal to", short: "equal" },
15
+ like: { short: "includes" },
16
+ ilike: { short: "includes" },
17
+ contains: { short: "contains" },
18
+ greater: { short: "greater", extended: "greater than" },
19
+ lower: { short: "lower", extended: "lower than" },
20
+ between: { short: "between", extended: "is between" },
21
+ different: { short: "different", extended: "different from" }
22
+ } : {
23
+ equal: { extended: "uguale a", short: "uguale" },
24
+ like: { short: "include" },
25
+ ilike: { short: "include" },
26
+ contains: { short: "contiene" },
27
+ greater: { short: "maggiore", extended: "maggiore di" },
28
+ lower: { short: "minore", extended: "minore di" },
29
+ between: { short: "compreso", extended: "\xE8 compreso tra" },
30
+ different: { short: "diverso", extended: "diverso da" }
31
+ };
32
+ function selectFilter(filter) {
33
+ selectedFilter = filter === selectedFilter ? void 0 : filter;
34
+ }
35
+ function handleKeyPress(event, filter) {
36
+ if (event.key === "Enter" || event.key === " ") {
37
+ selectFilter(filter);
38
+ }
39
+ }
40
+ function handleFilterChange() {
41
+ if (!!selectedFilter) {
42
+ dispatch("change", { filter: tmpFilters[selectedFilter.name] });
43
+ filters = filters.map((f) => {
44
+ if (f.name === selectedFilter?.name) {
45
+ return tmpFilters[selectedFilter.name];
93
46
  }
94
- }
95
-
96
- return newValid
47
+ return f;
48
+ });
97
49
  }
98
-
99
- function updateCustomFilterValues(filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) {
100
- let filter = filters.find(f => f.name === filterName)
101
- if(!filter) throw new Error('cannot find filter with name ' + filterName)
102
- if(filter.type != 'custom') throw new Error('filter is not custom')
103
- filter.value = newValue
104
- filter.active = newValid
105
- updateMultiFilterValues(filterName, newValue, newValid, mode)
50
+ }
51
+ function isActiveFilter(filter) {
52
+ let newValue = {}, newValid = false;
53
+ if (filter.type == "select") {
54
+ newValue = filter.values;
55
+ if (!!newValue && newValue.length > 0) {
56
+ newValid = true;
57
+ }
58
+ } else if ("mode" in filter && filter.mode == "between") {
59
+ newValue.to = filter.to;
60
+ newValue.from = filter.from;
61
+ if (!!newValue.from || !!newValue.to) {
62
+ newValid = true;
63
+ }
64
+ } else if (filter.type == "custom") {
65
+ newValue = filter.value;
66
+ if (Array.isArray(newValue) && newValue.length > 0 || !Array.isArray(newValue) && !!newValue) {
67
+ newValid = true;
68
+ }
69
+ } else {
70
+ newValue = filter.value;
71
+ if (!!newValue) {
72
+ newValid = true;
73
+ }
106
74
  }
75
+ return newValid;
76
+ }
77
+ function updateCustomFilterValues(filterName, newValue, newValid, mode) {
78
+ let filter = filters.find((f) => f.name === filterName);
79
+ if (!filter)
80
+ throw new Error("cannot find filter with name " + filterName);
81
+ if (filter.type != "custom")
82
+ throw new Error("filter is not custom");
83
+ filter.value = newValue;
84
+ filter.active = newValid;
85
+ updateMultiFilterValues(filterName, newValue, newValid, mode);
86
+ }
107
87
  </script>
108
88
 
109
- <div class="custom-filters-container" class:yscroll={mAndDown}>
110
- <div class="filters-selection">
111
- {#each filters as filter}
112
- <div
113
- tabindex="0"
114
- role="button"
115
- class="filters-selection-item"
116
- class:selected={filter.name === selectedFilter?.name || isActiveFilter(filter)}
117
- on:click={() => selectFilter(filter)}
118
- on:keydown={(event) => handleKeyPress(event, filter)}
119
- aria-pressed={filter.name === selectedFilter?.name}
120
- >
121
- <div class="filters-selection-title">
122
- <div class="filters-selection-title-label">{filter.label}</div>
123
- <Icon name="mdi-chevron-right-circle-outline" />
89
+ <MediaQuery let:mAndDown={internalMAndDown}>
90
+ <div class="custom-filters-container {internalMAndDown ? 'mobile' : 'desktop'}" class:yscroll={mAndDown}>
91
+ <div class="filters-selection">
92
+ {#each filters as filter}
93
+ <div
94
+ tabindex="0"
95
+ role="button"
96
+ class="filters-selection-item"
97
+ class:selected={filter.name === selectedFilter?.name || isActiveFilter(filter)}
98
+ on:click={() => selectFilter(filter)}
99
+ on:keydown={(event) => handleKeyPress(event, filter)}
100
+ aria-pressed={filter.name === selectedFilter?.name}
101
+ >
102
+ <div class="filters-selection-title">
103
+ <div class="filters-selection-title-label">{filter.label}</div>
104
+ <Icon name="mdi-chevron-right-circle-outline" />
105
+ </div>
124
106
  </div>
125
- </div>
126
- {/each}
127
- </div>
128
-
129
- <div class="filters-content">
130
- {#if selectedFilter}
131
- <div class="filters-content-box">
132
- <h2>{selectedFilter.label}</h2>
133
- {#key selectedFilter.label}
134
- <FilterEditor
135
- bind:filter={selectedFilter}
136
- {lang}
137
- {labelsMapper}
138
- editFilterMode="one-edit"
139
- bind:tmpFilter={tmpFilters[selectedFilter?.name || '']}
140
- mobile={mAndDown}
141
- on:change={handleFilterChange}
142
- --simple-textfield-border-radius= 0.5rem
143
- --simple-textfield-background-color= transparent
144
- --simple-textfield-box-shadow= 'inset 0 0 0 1px rgb(var(--global-color-background-500))'
145
- --simple-textfield-focus-box-shadow='inset 0 0 0 2px rgb(var(--global-color-primary-500))'
146
- --chip-default-color="rgb(var(--global-color-primary-foreground))"
147
- --autocomplete-border-radius= 0.5rem
148
- --autocomplete-border="1px solid rgb(var(--global-color-background-500))"
149
- --autocomplete-focus-box-shadow="0 0 0 2px rgb(var(--global-color-primary-500))"
150
- --autocomplete-padding="9.6px 16px"
151
- --autocomplete-background-color="transparent"
152
- >
153
- <svelte:fragment slot="custom" let:filter>
154
- <slot name="custom" {filter} {mAndDown} {updateCustomFilterValues}></slot>
155
- </svelte:fragment>
156
- </FilterEditor>
157
- {/key}
158
- </div>
159
- {:else}
160
- <div class="filters-content-box">
161
- <p>{lang == 'en' ? 'Please select a filter to display content.' : 'Seleziona un filtro per mostrarne il contenuto.'}</p>
162
- </div>
163
- {/if}
107
+ {/each}
108
+ </div>
109
+
110
+ <div class="filters-content">
111
+ {#if selectedFilter}
112
+ <div class="filters-content-box {internalMAndDown ? 'mobile' : 'desktop'}">
113
+ <h2>{selectedFilter.label}</h2>
114
+ {#key selectedFilter.label}
115
+ <FilterEditor
116
+ bind:filter={selectedFilter}
117
+ {lang}
118
+ {labelsMapper}
119
+ editFilterMode="one-edit"
120
+ bind:tmpFilter={tmpFilters[selectedFilter?.name || '']}
121
+ mobile={mAndDown}
122
+ on:change={handleFilterChange}
123
+ --simple-textfield-border-radius= 0.5rem
124
+ --simple-textfield-background-color= transparent
125
+ --simple-textfield-box-shadow= 'inset 0 0 0 1px rgb(var(--global-color-background-500))'
126
+ --simple-textfield-focus-box-shadow='inset 0 0 0 2px rgb(var(--global-color-primary-500))'
127
+ --chip-default-color="rgb(var(--global-color-primary-foreground))"
128
+ --autocomplete-border-radius= 0.5rem
129
+ --autocomplete-border="1px solid rgb(var(--global-color-background-500))"
130
+ --autocomplete-focus-box-shadow="0 0 0 2px rgb(var(--global-color-primary-500))"
131
+ --autocomplete-padding="9.6px 16px"
132
+ --autocomplete-background-color="transparent"
133
+ >
134
+ <svelte:fragment slot="custom" let:filter>
135
+ <slot name="custom" {filter} {mAndDown} {updateCustomFilterValues}></slot>
136
+ </svelte:fragment>
137
+ </FilterEditor>
138
+ {/key}
139
+ </div>
140
+ {:else}
141
+ <div class="filters-content-box">
142
+ <p>{lang == 'en' ? 'Please select a filter to display content.' : 'Seleziona un filtro per mostrarne il contenuto.'}</p>
143
+ </div>
144
+ {/if}
145
+ </div>
164
146
  </div>
165
- </div>
147
+ </MediaQuery>
166
148
  <style>
167
- .custom-filters-container {
149
+ .custom-filters-container {
168
150
  display: flex;
169
151
  height: 70vh;
170
152
  }
171
153
 
154
+ .custom-filters-container.mobile {
155
+ max-height: 29rem;
156
+ }
157
+
172
158
  .yscroll {
173
159
  overflow-y: auto;
174
160
  }
@@ -212,6 +198,10 @@
212
198
  padding: 1rem;
213
199
  }
214
200
 
201
+ .filters-content-box.mobile {
202
+ padding: 0;
203
+ }
204
+
215
205
  .filters-content-box>h2 {
216
206
  font-size: larger;
217
207
  text-align: center;
@@ -1,34 +1,30 @@
1
+ import { SvelteComponent } from "svelte";
1
2
  import type { DateMode, Filter, NumberMode, SelectMode, StringMode } from "../../../utils/filters/filters";
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;
3
+ declare const __propDef: {
4
+ props: {
5
+ filters?: Filter[] | undefined;
6
+ lang?: "it" | "en" | undefined;
7
+ mAndDown?: boolean | undefined;
8
+ updateMultiFilterValues: (filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) => void;
12
9
  };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const DynamicFilters: $$__sveltets_2_IsomorphicComponent<{
16
- filters?: Filter[];
17
- lang?: "it" | "en";
18
- mAndDown?: boolean;
19
- updateMultiFilterValues: (filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) => void;
20
- }, {
21
- change: CustomEvent<{
22
- filter: Filter;
23
- }>;
24
- } & {
25
- [evt: string]: CustomEvent<any>;
26
- }, {
27
- custom: {
28
- filter: Filter | undefined;
29
- mAndDown: boolean;
30
- updateCustomFilterValues: (filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) => void;
10
+ events: {
11
+ change: CustomEvent<{
12
+ filter: Filter;
13
+ }>;
14
+ } & {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {
18
+ custom: {
19
+ filter: Filter | undefined;
20
+ mAndDown: boolean;
21
+ updateCustomFilterValues: (filterName: string, newValue: any, newValid: boolean, mode?: NumberMode | StringMode | SelectMode | DateMode) => void;
22
+ };
31
23
  };
32
- }, {}, string>;
33
- type DynamicFilters = InstanceType<typeof DynamicFilters>;
34
- export default DynamicFilters;
24
+ };
25
+ export type DynamicFiltersProps = typeof __propDef.props;
26
+ export type DynamicFiltersEvents = typeof __propDef.events;
27
+ export type DynamicFiltersSlots = typeof __propDef.slots;
28
+ export default class DynamicFilters extends SvelteComponent<DynamicFiltersProps, DynamicFiltersEvents, DynamicFiltersSlots> {
29
+ }
30
+ export {};
@@ -1,124 +1,95 @@
1
- <script lang="ts">
2
- import type { Filter, NumberMode, SelectMode, StringMode } from "../../../utils/filters/filters";
3
- import Dropdown, { type Item } from "../forms/Dropdown.svelte";
4
- import { GENERIC_MODES, SELECT_MODES, STRING_MODES } from '../../../utils/filters/filters';
5
- import type { DateMode } from "../../../utils/filters/filters";
6
- import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
7
- import DatePickerTextField from "../forms/DatePickerTextField.svelte";
8
- import Validator from "../../../utils/filters/validator";
9
- import Autocomplete from "../../simple/forms/Autocomplete.svelte";
10
- import Checkbox from "../../simple/forms/Checkbox.svelte";
11
- import type { LabelMapper } from "./Filters.svelte";
12
- import Icon from "../../simple/media/Icon.svelte";
13
- import ToggleList from "../forms/ToggleList.svelte";
14
- import { createEventDispatcher } from "svelte";
15
-
16
- export let filter: Filter | undefined = undefined,
17
- lang: 'en' | 'it' = 'en',
18
- betweenFromLabel: string = lang == 'en' ? "From" : "Da",
19
- betweenToLabel: string = lang == 'en' ? "To" : "A",
20
- labelsMapper: LabelMapper,
21
- forceApplyValid: boolean = false,
22
- editFilterMode: 'one-edit' | 'multi-edit' = 'one-edit',
23
- tmpFilter: Filter | undefined = undefined,
24
- mobile: boolean = false;
25
-
26
- let advancedModeOptions: Item[],
27
- advancedModeSelectedOptions: Item[] | undefined
28
-
29
- function initTmpFilter() {
30
- tmpFilter = filter === undefined ? undefined : {...filter}
31
- if(!!tmpFilter && ['string', 'number', 'date', 'select'].includes(tmpFilter.type) && Object.keys(tmpFilter).includes('mode')) {
32
- //@ts-ignore
33
- if((tmpFilter.mode == 'between' && tmpFilter.from !== undefined && tmpFilter.to !== undefined) || tmpFilter.value !== undefined || (tmpFilter.type == 'select' && tmpFilter.values !== undefined && tmpFilter.values.length > 0)) {
34
- advancedModeSelectedOptions = [{
35
- //@ts-ignore
36
- value: tmpFilter.mode, label: labelsMapper[tmpFilter.mode].short || tmpFilter.mode
37
- }]
38
- }
1
+ <script>import Dropdown, {} from "../forms/Dropdown.svelte";
2
+ import { GENERIC_MODES, SELECT_MODES, STRING_MODES } from "../../../utils/filters/filters";
3
+ import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
4
+ import DatePickerTextField from "../forms/DatePickerTextField.svelte";
5
+ import Validator from "../../../utils/filters/validator";
6
+ import Autocomplete from "../../simple/forms/Autocomplete.svelte";
7
+ import Checkbox from "../../simple/forms/Checkbox.svelte";
8
+ import Icon from "../../simple/media/Icon.svelte";
9
+ import ToggleList from "../forms/ToggleList.svelte";
10
+ import { createEventDispatcher } from "svelte";
11
+ export let filter = void 0, lang = "en", betweenFromLabel = lang == "en" ? "From" : "Da", betweenToLabel = lang == "en" ? "To" : "A", labelsMapper, forceApplyValid = false, editFilterMode = "one-edit", tmpFilter = void 0, mobile = false;
12
+ let advancedModeOptions, advancedModeSelectedOptions;
13
+ function initTmpFilter() {
14
+ tmpFilter = filter === void 0 ? void 0 : { ...filter };
15
+ if (!!tmpFilter && ["string", "number", "date", "select"].includes(tmpFilter.type) && Object.keys(tmpFilter).includes("mode")) {
16
+ if (tmpFilter.mode == "between" && tmpFilter.from !== void 0 && tmpFilter.to !== void 0 || tmpFilter.value !== void 0 || tmpFilter.type == "select" && tmpFilter.values !== void 0 && tmpFilter.values.length > 0) {
17
+ advancedModeSelectedOptions = [{
18
+ //@ts-ignore
19
+ value: tmpFilter.mode,
20
+ label: labelsMapper[tmpFilter.mode].short || tmpFilter.mode
21
+ }];
39
22
  }
40
23
  }
41
-
42
-
43
- function closeDropDown() {
44
- dropdownOpened = false
24
+ }
25
+ function closeDropDown() {
26
+ dropdownOpened = false;
27
+ }
28
+ $:
29
+ if (!!filter) {
30
+ initTmpFilter();
31
+ closeDropDown();
45
32
  }
46
-
47
- $: if(!!filter) {
48
- initTmpFilter()
49
- closeDropDown()
50
- }
51
-
52
- $: if(!!tmpFilter) {
53
- let modes
54
- if(tmpFilter.type == 'string') {
55
- modes = STRING_MODES
56
- } else if(tmpFilter.type == 'date') {
57
- modes = GENERIC_MODES
58
- } else if(tmpFilter.type == 'number') {
59
- modes = GENERIC_MODES
60
- } else if(tmpFilter.type == 'select') {
61
- modes = SELECT_MODES
62
- } else if(tmpFilter.type == 'bool') {
63
- modes = undefined
33
+ $:
34
+ if (!!tmpFilter) {
35
+ let modes;
36
+ if (tmpFilter.type == "string") {
37
+ modes = STRING_MODES;
38
+ } else if (tmpFilter.type == "date") {
39
+ modes = GENERIC_MODES;
40
+ } else if (tmpFilter.type == "number") {
41
+ modes = GENERIC_MODES;
42
+ } else if (tmpFilter.type == "select") {
43
+ modes = SELECT_MODES;
44
+ } else if (tmpFilter.type == "bool") {
45
+ modes = void 0;
64
46
  }
65
-
66
- if(!!modes) {
67
- advancedModeOptions = modes.map(mode => {
47
+ if (!!modes) {
48
+ advancedModeOptions = modes.map((mode) => {
68
49
  return {
69
50
  value: mode,
70
51
  label: labelsMapper[mode].short || mode
71
- }
72
- })
52
+ };
53
+ });
73
54
  }
74
55
  }
75
-
76
- $: if(!tmpFilter?.advanced) {
77
- advancedModeSelectedOptions = undefined
56
+ $:
57
+ if (!tmpFilter?.advanced) {
58
+ advancedModeSelectedOptions = void 0;
78
59
  }
79
-
80
- let dropdownOpened: boolean = false,
81
- calendarOpened: boolean = false,
82
- calendarOpened2: boolean = false
83
-
84
- // TODO I don't like that there is a singlo dropdow to handle all filter advance mode.
85
- // In some case would be necessary to handle more than one selection and this code
86
- // could become non sense
87
- function handleAdvancedModeSelection() {
88
- if(!!advancedModeSelectedOptions && advancedModeSelectedOptions.length > 0 && !!tmpFilter) {
89
- if(tmpFilter.type == 'date') tmpFilter.mode = advancedModeSelectedOptions[0].value as DateMode
90
- else if(tmpFilter.type == 'number') tmpFilter.mode = advancedModeSelectedOptions[0].value as NumberMode
91
- else if(tmpFilter.type == 'string') tmpFilter.mode = advancedModeSelectedOptions[0].value as StringMode
92
- else if(tmpFilter.type == 'select') tmpFilter.mode = advancedModeSelectedOptions[0].value as SelectMode
93
- }
94
-
95
- dropdownOpened = false;
96
- handleChangeValue()
60
+ let dropdownOpened = false, calendarOpened = false, calendarOpened2 = false;
61
+ function handleAdvancedModeSelection() {
62
+ if (!!advancedModeSelectedOptions && advancedModeSelectedOptions.length > 0 && !!tmpFilter) {
63
+ if (tmpFilter.type == "date")
64
+ tmpFilter.mode = advancedModeSelectedOptions[0].value;
65
+ else if (tmpFilter.type == "number")
66
+ tmpFilter.mode = advancedModeSelectedOptions[0].value;
67
+ else if (tmpFilter.type == "string")
68
+ tmpFilter.mode = advancedModeSelectedOptions[0].value;
69
+ else if (tmpFilter.type == "select")
70
+ tmpFilter.mode = advancedModeSelectedOptions[0].value;
97
71
  }
98
-
99
- $: applyFilterDisabled = !Validator.isValid(tmpFilter) && !forceApplyValid
100
-
101
- $: if(!!tmpFilter && tmpFilter.type == 'bool') {
102
- if(tmpFilter.value === undefined) {
103
- tmpFilter.value = false
72
+ dropdownOpened = false;
73
+ handleChangeValue();
74
+ }
75
+ $:
76
+ applyFilterDisabled = !Validator.isValid(tmpFilter) && !forceApplyValid;
77
+ $:
78
+ if (!!tmpFilter && tmpFilter.type == "bool") {
79
+ if (tmpFilter.value === void 0) {
80
+ tmpFilter.value = false;
104
81
  }
105
82
  }
106
-
107
- $: if(!!tmpFilter && tmpFilter.type == 'select') {
108
- if(tmpFilter.values === undefined) {
109
- tmpFilter.values = []
83
+ $:
84
+ if (!!tmpFilter && tmpFilter.type == "select") {
85
+ if (tmpFilter.values === void 0) {
86
+ tmpFilter.values = [];
110
87
  }
111
88
  }
112
-
113
- const dispatch = createEventDispatcher<{
114
- change: Filter | undefined
115
- }>()
116
-
117
- function handleChangeValue() {
118
- dispatch('change', tmpFilter)
119
- }
120
-
121
-
89
+ const dispatch = createEventDispatcher();
90
+ function handleChangeValue() {
91
+ dispatch("change", tmpFilter);
92
+ }
122
93
  </script>
123
94
 
124
95
 
@@ -201,6 +172,7 @@
201
172
  --simple-text-field-margin-left="0px"
202
173
  mobileDrawer={mobile}
203
174
  placeholder={editFilterMode == 'one-edit' ? tmpFilter?.label : undefined}
175
+ minWidth={''}
204
176
  on:change={handleChangeValue}
205
177
  ></Autocomplete>
206
178
  </div>