@likable-hair/svelte 4.2.4 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/components/composed/buttons/ActivableButton.svelte +25 -7
  2. package/dist/components/composed/common/HeadersDrawer.svelte +66 -28
  3. package/dist/components/composed/common/HeadersDrawer.svelte.d.ts +22 -12
  4. package/dist/components/composed/common/MenuOrDrawer.svelte +40 -12
  5. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +51 -27
  6. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +15 -10
  7. package/dist/components/composed/common/QuickActions.css +5 -5
  8. package/dist/components/composed/common/QuickActions.svelte +76 -33
  9. package/dist/components/composed/common/ToolTip.svelte +51 -32
  10. package/dist/components/composed/dashboard/DashboardShaper.svelte +280 -147
  11. package/dist/components/composed/dashboard/DashboardShaper.svelte.d.ts +54 -45
  12. package/dist/components/composed/forms/AsyncAutocomplete.svelte +81 -30
  13. package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +17 -5
  14. package/dist/components/composed/forms/AvatarDropdown.svelte +146 -70
  15. package/dist/components/composed/forms/AvatarDropdown.svelte.d.ts +27 -22
  16. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte +65 -19
  17. package/dist/components/composed/forms/CountriesAutocomplete.svelte +33 -4
  18. package/dist/components/composed/forms/DatePickerTextField.svelte +266 -161
  19. package/dist/components/composed/forms/Dropdown.svelte +89 -22
  20. package/dist/components/composed/forms/Dropdown.svelte.d.ts +18 -13
  21. package/dist/components/composed/forms/IconsDropdown.svelte +85 -40
  22. package/dist/components/composed/forms/IconsDropdown.svelte.d.ts +15 -8
  23. package/dist/components/composed/forms/LabelAndSelect.svelte +46 -5
  24. package/dist/components/composed/forms/LabelAndTextField.svelte +56 -3
  25. package/dist/components/composed/forms/PeriodPicker.svelte +38 -18
  26. package/dist/components/composed/forms/PeriodPicker.svelte.d.ts +32 -7
  27. package/dist/components/composed/forms/PeriodSelector.svelte +427 -312
  28. package/dist/components/composed/forms/PeriodSelector.svelte.d.ts +20 -13
  29. package/dist/components/composed/forms/ToggleList.svelte +71 -37
  30. package/dist/components/composed/forms/ToggleList.svelte.d.ts +14 -7
  31. package/dist/components/composed/forms/YearPickerTextField.svelte +154 -82
  32. package/dist/components/composed/list/DynamicTable.svelte +1377 -808
  33. package/dist/components/composed/list/DynamicTable.svelte.d.ts +85 -70
  34. package/dist/components/composed/list/EnhancedPaginatedTable.svelte +75 -32
  35. package/dist/components/composed/list/EnhancedPaginatedTable.svelte.d.ts +16 -6
  36. package/dist/components/composed/list/PaginatedTable.svelte +325 -120
  37. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +26 -22
  38. package/dist/components/composed/progress/HorizontalStackedProgress.svelte +67 -29
  39. package/dist/components/composed/search/DynamicFilters.svelte +126 -91
  40. package/dist/components/composed/search/FilterEditor.svelte +178 -115
  41. package/dist/components/composed/search/Filters.svelte +441 -301
  42. package/dist/components/composed/search/GlobalSearchTextField.svelte +102 -42
  43. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +23 -20
  44. package/dist/components/composed/search/MobileFilterEditor.svelte +174 -120
  45. package/dist/components/composed/search/QuickFilters.svelte +133 -23
  46. package/dist/components/composed/search/SearchBar.svelte +42 -3
  47. package/dist/components/composed/search/SearchResults.svelte +48 -5
  48. package/dist/components/composed/search/SearchResults.svelte.d.ts +17 -17
  49. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +100 -24
  50. package/dist/components/layouts/StableDividedSideBarLayout.svelte +74 -24
  51. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +140 -57
  52. package/dist/components/simple/buttons/Button.svelte +86 -36
  53. package/dist/components/simple/buttons/LinkButton.svelte +81 -25
  54. package/dist/components/simple/charts/BarChart.svelte +137 -105
  55. package/dist/components/simple/charts/LineChart.svelte +124 -92
  56. package/dist/components/simple/charts/PieChart.svelte +51 -23
  57. package/dist/components/simple/common/CollapsibleDivider.svelte +58 -26
  58. package/dist/components/simple/common/Divider.svelte +2 -1
  59. package/dist/components/simple/common/InfiniteScroll.svelte +60 -34
  60. package/dist/components/simple/common/MediaQuery.svelte +28 -3
  61. package/dist/components/simple/common/Menu.svelte +516 -390
  62. package/dist/components/simple/common/NoData.svelte +18 -4
  63. package/dist/components/simple/common/VerticalDraggableList.svelte +52 -26
  64. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +20 -9
  65. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +28 -22
  66. package/dist/components/simple/dates/Calendar.svelte +142 -72
  67. package/dist/components/simple/dates/DatePicker.svelte +138 -71
  68. package/dist/components/simple/dates/MonthSelector.svelte +49 -13
  69. package/dist/components/simple/dates/YearSelector.svelte +73 -30
  70. package/dist/components/simple/dialogs/Dialog.svelte +109 -59
  71. package/dist/components/simple/forms/Autocomplete.css +3 -0
  72. package/dist/components/simple/forms/Autocomplete.svelte +366 -164
  73. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +31 -19
  74. package/dist/components/simple/forms/Checkbox.svelte +57 -29
  75. package/dist/components/simple/forms/FileInput.svelte +103 -58
  76. package/dist/components/simple/forms/FileInputList.svelte +115 -51
  77. package/dist/components/simple/forms/RadioButton.svelte +36 -3
  78. package/dist/components/simple/forms/Select.svelte +30 -3
  79. package/dist/components/simple/forms/SimpleTextField.svelte +94 -4
  80. package/dist/components/simple/forms/Switch.svelte +33 -11
  81. package/dist/components/simple/forms/Textarea.svelte +22 -5
  82. package/dist/components/simple/forms/VerticalSwitch.svelte +19 -2
  83. package/dist/components/simple/forms/VerticalTextSwitch.svelte +35 -3
  84. package/dist/components/simple/lists/BoxList.svelte +42 -11
  85. package/dist/components/simple/lists/ColorInvertedSelector.svelte +83 -25
  86. package/dist/components/simple/lists/HierarchyMenu.svelte +55 -20
  87. package/dist/components/simple/lists/Paginator.svelte +53 -34
  88. package/dist/components/simple/lists/SelectableMenuList.svelte +52 -16
  89. package/dist/components/simple/lists/SelectableVerticalList.svelte +169 -85
  90. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +21 -14
  91. package/dist/components/simple/lists/SidebarMenuList.svelte +127 -79
  92. package/dist/components/simple/lists/SimpleTable.svelte +449 -239
  93. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +31 -22
  94. package/dist/components/simple/loaders/CircularLoader.css +1 -1
  95. package/dist/components/simple/loaders/CircularLoader.svelte +11 -3
  96. package/dist/components/simple/loaders/Skeleton.svelte +3 -2
  97. package/dist/components/simple/media/Avatar.svelte +35 -15
  98. package/dist/components/simple/media/DescriptiveAvatar.svelte +30 -4
  99. package/dist/components/simple/media/FlagIcon.svelte +13 -3
  100. package/dist/components/simple/media/Icon.svelte +21 -6
  101. package/dist/components/simple/navigation/Breadcrumb.svelte +41 -9
  102. package/dist/components/simple/navigation/Chip.css +1 -1
  103. package/dist/components/simple/navigation/Chip.svelte +65 -36
  104. package/dist/components/simple/navigation/Drawer.svelte +132 -71
  105. package/dist/components/simple/navigation/HeaderMenu.svelte +69 -25
  106. package/dist/components/simple/navigation/Navigator.svelte +45 -11
  107. package/dist/components/simple/navigation/TabSwitcher.svelte +60 -19
  108. package/dist/components/simple/notifiers/AlertBanner.svelte +59 -11
  109. package/dist/components/simple/progress/ProgressBar.svelte +26 -10
  110. package/dist/components/simple/timeline/SimpleTimeLine.svelte +52 -5
  111. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +16 -9
  112. package/dist/components/simple/typography/Code.svelte +41 -12
  113. package/dist/stores/layouts/unstableSidebarOpened.d.ts +1 -1
  114. package/dist/stores/layouts/unstableSidebarOpened.js +1 -1
  115. package/dist/stores/theme.js +2 -2
  116. package/dist/utils/filters/builder.d.ts +2 -2
  117. package/dist/utils/filters/builder.js +7 -7
  118. package/dist/utils/filters/modifiers/where.d.ts +1 -1
  119. package/dist/utils/teleporter.js +4 -4
  120. package/package.json +39 -33
@@ -1,191 +1,296 @@
1
- <script lang="ts">import IMask, {} from 'imask';
2
- import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
3
- import DatePicker from "../../simple/dates/DatePicker.svelte";
4
- import Menu from "../../simple/common/Menu.svelte";
5
- import Icon from "../../simple/media/Icon.svelte";
6
- import { onMount, tick } from 'svelte';
7
- import { DateTime } from 'luxon';
8
- import MediaQuery from '../../simple/common/MediaQuery.svelte';
9
- import Dialog from '../../simple/dialogs/Dialog.svelte';
10
- let { menuOpened = $bindable(), openingId = $bindable(), pattern = "dd/MM/yyyy", selectedYear = $bindable(new Date().getFullYear()), selectedMonth = $bindable(new Date().getMonth()), selectedDate = $bindable(), selectedDateTo = $bindable(), type, visibleMonth = $bindable(selectedMonth), visibleYear = $bindable(selectedYear), placeholder, placeholderTo, mobileDialog = true, maxYearInRange = 2100, minYearInRange = 1970, disabled = false, flipOnOverflow = true, class: clazz = {}, ondayClick, oninput, activatorSnippet, appendInnerSnippet, appendSnippet, prependInnerSnippet: prependInnerInternalSnippet, prependSnippet, } = $props();
11
- let activator = $state(), refreshPosition = $state(false), menuElement = $state(), inputElement = $state(), inputElementTo = $state(), mask = $state({
12
- value: undefined
13
- }), maskTo = $state({
14
- value: undefined
15
- }), maskFactoryArgs = {
16
- mask: Date,
17
- pattern: pattern,
18
- format: function (date) {
19
- return DateTime.fromJSDate(date).toFormat(pattern);
20
- },
21
- parse: function (str) {
22
- return DateTime.fromFormat(str, pattern).toJSDate();
23
- },
24
- blocks: {
1
+ <script lang="ts">
2
+ import IMask, { type InputMask } from 'imask';
3
+ import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
4
+ import DatePicker from "../../simple/dates/DatePicker.svelte";
5
+ import Menu from "../../simple/common/Menu.svelte";
6
+ import Icon from "../../simple/media/Icon.svelte";
7
+ import { onMount, tick, type ComponentProps, type Snippet } from 'svelte';
8
+ import { DateTime } from 'luxon'
9
+ import type { DateStat } from '../../simple/dates/utils';
10
+ import MediaQuery from '../../simple/common/MediaQuery.svelte';
11
+ import Dialog from '../../simple/dialogs/Dialog.svelte';
12
+
13
+ interface Props {
14
+ menuOpened?: boolean;
15
+ openingId?: string;
16
+ pattern?: string;
17
+ selectedMonth?: number;
18
+ selectedYear?: number;
19
+ visibleMonth?: number;
20
+ visibleYear?: number;
21
+ selectedDate?: Date;
22
+ selectedDateTo?: Date;
23
+ type?: ComponentProps<typeof DatePicker>['type']
24
+ placeholder?: string;
25
+ placeholderTo?: string;
26
+ mobileDialog?: boolean;
27
+ maxYearInRange?: number;
28
+ minYearInRange?: number;
29
+ disabled?: boolean;
30
+ flipOnOverflow?: boolean;
31
+ class?: {
32
+ activator?: string,
33
+ textfield?: ComponentProps<typeof SimpleTextField>['class']
34
+ }
35
+ ondayClick?: (event: {
36
+ detail: {
37
+ dateStat: DateStat
38
+ }
39
+ }) => void
40
+ oninput?: (event: {
41
+ detail: {
42
+ datetime: Date | undefined,
43
+ type: 'from' | 'to'
44
+ }
45
+ }) => void
46
+ activatorSnippet?: Snippet<[{
47
+ mask: typeof mask
48
+ handleTextFieldFocus: typeof handleTextFieldFocus
49
+ handleInputChange: typeof handleInputChange
50
+ inputElement: HTMLElement | undefined
51
+ placeholder: string | undefined
52
+ disabled: boolean
53
+ }]>
54
+ appendSnippet?: ComponentProps<typeof SimpleTextField>['appendSnippet']
55
+ appendInnerSnippet?: ComponentProps<typeof SimpleTextField>['appendInnerSnippet']
56
+ prependSnippet?: ComponentProps<typeof SimpleTextField>['prependSnippet']
57
+ prependInnerSnippet?: ComponentProps<typeof SimpleTextField>['prependInnerSnippet']
58
+ }
59
+
60
+ let {
61
+ menuOpened = $bindable(),
62
+ openingId = $bindable(),
63
+ pattern = "dd/MM/yyyy",
64
+ selectedYear = $bindable(new Date().getFullYear()),
65
+ selectedMonth = $bindable(new Date().getMonth()),
66
+ selectedDate = $bindable(),
67
+ selectedDateTo = $bindable(),
68
+ type,
69
+ visibleMonth = $bindable(selectedMonth),
70
+ visibleYear = $bindable(selectedYear),
71
+ placeholder,
72
+ placeholderTo,
73
+ mobileDialog = true,
74
+ maxYearInRange = 2100,
75
+ minYearInRange = 1970,
76
+ disabled = false,
77
+ flipOnOverflow = true,
78
+ class: clazz = {},
79
+ ondayClick,
80
+ oninput,
81
+ activatorSnippet,
82
+ appendInnerSnippet,
83
+ appendSnippet,
84
+ prependInnerSnippet: prependInnerInternalSnippet,
85
+ prependSnippet,
86
+ }: Props = $props();
87
+
88
+
89
+ let activator: HTMLElement | undefined = $state(),
90
+ refreshPosition = $state(false),
91
+ menuElement: HTMLElement | undefined = $state(),
92
+ inputElement: HTMLElement | undefined = $state(),
93
+ inputElementTo: HTMLElement | undefined = $state(),
94
+ mask: InputMask<typeof maskFactoryArgs> | { value: string | undefined } = $state({
95
+ value: undefined
96
+ }),
97
+ maskTo: InputMask<typeof maskFactoryArgs> | { value: string | undefined } = $state({
98
+ value: undefined
99
+ }),
100
+ maskFactoryArgs = {
101
+ mask: Date,
102
+ pattern: pattern,
103
+ format: function (date: any): string {
104
+ return DateTime.fromJSDate(date).toFormat(pattern)
105
+ },
106
+ parse: function (str: string): Date {
107
+ return DateTime.fromFormat(str, pattern).toJSDate()
108
+ },
109
+ blocks: {
25
110
  yyyy: {
26
- mask: IMask.MaskedRange,
27
- from: minYearInRange,
28
- to: maxYearInRange
111
+ mask: IMask.MaskedRange,
112
+ from: minYearInRange,
113
+ to: maxYearInRange
29
114
  },
30
115
  MM: {
31
- mask: IMask.MaskedRange,
32
- from: 1,
33
- to: 12
116
+ mask: IMask.MaskedRange,
117
+ from: 1,
118
+ to: 12
34
119
  },
35
120
  dd: {
36
- mask: IMask.MaskedRange,
37
- from: 1,
38
- to: 31
121
+ mask: IMask.MaskedRange,
122
+ from: 1,
123
+ to: 31
39
124
  },
40
125
  HH: {
41
- mask: IMask.MaskedRange,
42
- from: 0,
43
- to: 23
126
+ mask: IMask.MaskedRange,
127
+ from: 0,
128
+ to: 23
44
129
  },
45
130
  mm: {
46
- mask: IMask.MaskedRange,
47
- from: 0,
48
- to: 59
131
+ mask: IMask.MaskedRange,
132
+ from: 0,
133
+ to: 59
49
134
  }
135
+ }
50
136
  }
51
- };
52
- let selectableYears = $derived.by(() => {
137
+
138
+ let selectableYears = $derived.by(() => {
53
139
  const range = maxYearInRange - minYearInRange + 1;
54
140
  return Array.from({ length: range }, (_, i) => minYearInRange + i);
55
- });
56
- function handleTextFieldFocus(mobile) {
57
- if (!mobile || !mobileDialog) {
58
- menuOpened = true;
141
+ });
142
+
143
+ function handleTextFieldFocus(mobile: boolean) {
144
+ if(!mobile || !mobileDialog) {
145
+ menuOpened = true
59
146
  }
60
- }
61
- onMount(() => {
62
- if (inputElement) {
63
- mask = IMask(inputElement, maskFactoryArgs);
147
+ }
148
+
149
+ onMount(() => {
150
+ if(inputElement){
151
+ mask = IMask(
152
+ inputElement, maskFactoryArgs
153
+ )
64
154
  }
65
- if (inputElementTo) {
66
- maskTo = IMask(inputElementTo, maskFactoryArgs);
155
+
156
+ if(inputElementTo){
157
+ maskTo = IMask(
158
+ inputElementTo, maskFactoryArgs
159
+ )
67
160
  }
68
- if (!!selectedDate) {
69
- mask.value = DateTime.fromJSDate(selectedDate).toFormat(pattern);
161
+
162
+ if(!!selectedDate) {
163
+ mask.value = DateTime.fromJSDate(selectedDate).toFormat(pattern)
70
164
  }
71
- if (!!selectedDateTo) {
72
- maskTo.value = DateTime.fromJSDate(selectedDateTo).toFormat(pattern);
165
+
166
+ if(!!selectedDateTo) {
167
+ maskTo.value = DateTime.fromJSDate(selectedDateTo).toFormat(pattern)
73
168
  }
74
- });
75
- $effect(() => {
76
- if (!selectedDate) {
77
- mask.value = "";
169
+ })
170
+
171
+ $effect(() => {
172
+ if(!selectedDate) {
173
+ mask.value = ""
78
174
  }
79
- });
80
- $effect(() => {
81
- if (!selectedDateTo) {
82
- maskTo.value = "";
175
+ })
176
+
177
+ $effect(() => {
178
+ if(!selectedDateTo) {
179
+ maskTo.value = ""
83
180
  }
84
- });
85
- function handleInputChange(e) {
181
+ })
182
+
183
+ function handleInputChange(e: Parameters<NonNullable<ComponentProps<typeof SimpleTextField>['onkeydown']>>[0]) {
86
184
  // @ts-ignore
87
- const id = e.target?.id;
185
+ const id = e.target?.id as string
88
186
  setTimeout(() => {
89
- // @ts-ignore
90
- const typedValue = e.target?.value;
91
- if (typedValue !== undefined && typedValue !== null) {
92
- // find day of month
93
- const dayOfMonthIndex = pattern.indexOf('dd');
94
- const dayOfMonth = typedValue.substring(dayOfMonthIndex, dayOfMonthIndex + 2);
95
- // find month
96
- const monthIndex = pattern.indexOf('MM');
97
- const oneBasedMonth = typedValue.substring(monthIndex, monthIndex + 2);
98
- if (oneBasedMonth.length == 2) {
99
- selectedMonth = Number(oneBasedMonth) - 1;
100
- visibleMonth = selectedMonth;
101
- }
102
- // find year
103
- const yearIndex = pattern.indexOf('yyyy');
104
- const year = typedValue.substring(yearIndex, yearIndex + 4);
105
- if (year.length == 4) {
106
- selectedYear = Number(year);
107
- visibleYear = selectedYear;
108
- }
109
- if (typedValue.length == pattern.length) {
110
- if (id == 'from') {
111
- selectedDate = DateTime.fromObject({
112
- day: Number(dayOfMonth),
113
- month: Number(oneBasedMonth),
114
- year: Number(year)
115
- }).toJSDate();
116
- }
117
- else if (id == 'to') {
118
- selectedDateTo = DateTime.fromObject({
119
- day: Number(dayOfMonth),
120
- month: Number(oneBasedMonth),
121
- year: Number(year)
122
- }).toJSDate();
123
- }
124
- }
125
- else {
126
- if (id == 'from') {
127
- if (selectedDate)
128
- selectedDate = undefined;
129
- }
130
- else if (id == 'to') {
131
- if (selectedDateTo)
132
- selectedDateTo = undefined;
133
- }
134
- }
135
- if (oninput && (id == 'to' || id == 'from')) {
136
- oninput({
137
- detail: {
138
- datetime: id == "to" ? selectedDateTo : selectedDate,
139
- type: id,
140
- }
141
- });
187
+ // @ts-ignore
188
+ const typedValue = e.target?.value as string
189
+
190
+ if(typedValue !== undefined && typedValue !== null) {
191
+ // find day of month
192
+ const dayOfMonthIndex = pattern.indexOf('dd')
193
+ const dayOfMonth = typedValue.substring(dayOfMonthIndex, dayOfMonthIndex + 2)
194
+
195
+ // find month
196
+ const monthIndex = pattern.indexOf('MM')
197
+ const oneBasedMonth = typedValue.substring(monthIndex, monthIndex + 2)
198
+ if(oneBasedMonth.length == 2) {
199
+ selectedMonth = Number(oneBasedMonth) - 1
200
+ visibleMonth = selectedMonth
201
+ }
202
+
203
+ // find year
204
+ const yearIndex = pattern.indexOf('yyyy')
205
+ const year = typedValue.substring(yearIndex, yearIndex + 4)
206
+ if(year.length == 4) {
207
+ selectedYear = Number(year)
208
+ visibleYear = selectedYear
209
+ }
210
+
211
+ if(typedValue.length == pattern.length) {
212
+ if(id == 'from') {
213
+ selectedDate = DateTime.fromObject({
214
+ day: Number(dayOfMonth),
215
+ month: Number(oneBasedMonth),
216
+ year: Number(year)
217
+ }).toJSDate()
218
+ } else if (id == 'to') {
219
+ selectedDateTo = DateTime.fromObject({
220
+ day: Number(dayOfMonth),
221
+ month: Number(oneBasedMonth),
222
+ year: Number(year)
223
+ }).toJSDate()
224
+ }
225
+ } else {
226
+ if(id == 'from') {
227
+ if(selectedDate) selectedDate = undefined
228
+ } else if (id == 'to') {
229
+ if(selectedDateTo) selectedDateTo = undefined
230
+ }
231
+ }
232
+
233
+ if(oninput && (id == 'to' || id == 'from')) {
234
+ oninput({
235
+ detail: {
236
+ datetime: id == "to" ? selectedDateTo : selectedDate,
237
+ type: id,
142
238
  }
239
+ })
143
240
  }
241
+ }
144
242
  }, 30);
145
- }
146
- function handleDateSelect(event) {
147
- if (!!selectedDate) {
148
- mask.value = DateTime.fromJSDate(selectedDate).toFormat(pattern);
243
+ }
244
+
245
+ function handleDateSelect(event: Parameters<NonNullable<ComponentProps<typeof DatePicker>['ondayClick']>>[0]) {
246
+ if(!!selectedDate) {
247
+ mask.value = DateTime.fromJSDate(selectedDate).toFormat(pattern)
149
248
  }
150
- if (!!selectedDateTo) {
151
- maskTo.value = DateTime.fromJSDate(selectedDateTo).toFormat(pattern);
249
+
250
+ if(!!selectedDateTo) {
251
+ maskTo.value = DateTime.fromJSDate(selectedDateTo).toFormat(pattern)
152
252
  }
153
- if (ondayClick) {
154
- ondayClick({
155
- detail: {
156
- dateStat: event.detail.dateStat
157
- }
158
- });
253
+
254
+ if(ondayClick) {
255
+ ondayClick({
256
+ detail: {
257
+ dateStat: event.detail.dateStat
258
+ }
259
+ })
159
260
  }
160
- }
161
- function handleYearSelect() {
162
- mask.value = '';
163
- maskTo.value = '';
164
- }
165
- function handleMonthSelect() {
166
- mask.value = '';
167
- maskTo.value = '';
168
- }
169
- $effect(() => {
170
- if (!!selectedDate) {
171
- setTimeout(async () => {
172
- if (!!selectedDate) {
173
- mask.value = DateTime.fromJSDate(selectedDate).toFormat(pattern);
174
- }
175
- await tick();
176
- }, 30);
261
+ }
262
+
263
+ function handleYearSelect() {
264
+ mask.value = ''
265
+ maskTo.value = ''
266
+ }
267
+
268
+ function handleMonthSelect() {
269
+ mask.value = ''
270
+ maskTo.value = ''
271
+ }
272
+
273
+ $effect(() => {
274
+ if(!!selectedDate) {
275
+ setTimeout(async () => {
276
+ if(!!selectedDate) {
277
+ mask.value = DateTime.fromJSDate(selectedDate).toFormat(pattern)
278
+ }
279
+ await tick()
280
+ }, 30);
177
281
  }
178
- });
179
- $effect(() => {
180
- if (!!selectedDateTo) {
181
- setTimeout(async () => {
182
- if (!!selectedDateTo) {
183
- maskTo.value = DateTime.fromJSDate(selectedDateTo).toFormat(pattern);
184
- }
185
- await tick();
186
- }, 30);
282
+ })
283
+
284
+ $effect(() => {
285
+ if(!!selectedDateTo) {
286
+ setTimeout(async () => {
287
+ if(!!selectedDateTo) {
288
+ maskTo.value = DateTime.fromJSDate(selectedDateTo).toFormat(pattern)
289
+ }
290
+ await tick()
291
+ }, 30);
187
292
  }
188
- });
293
+ })
189
294
  </script>
190
295
 
191
296
  <MediaQuery>
@@ -263,9 +368,9 @@ $effect(() => {
263
368
  {:else}
264
369
  <Menu
265
370
  {activator}
266
- _width={"300px"}
267
- _boxShadow={"rgb(var(--global-color-background-300), .5) 0px 2px 4px"}
268
- _borderRadius={"5px"}
371
+ _width="300px"
372
+ _boxShadow="rgb(var(--global-color-background-300), .5) 0px 2px 4px"
373
+ _borderRadius="5px"
269
374
  bind:open={menuOpened}
270
375
  anchor="bottom-center"
271
376
  closeOnClickOutside
@@ -1,26 +1,93 @@
1
- <script lang="ts" generics="Data">import lodash from "lodash";
2
- import Autocomplete, {} from "../../../components/simple/forms/Autocomplete.svelte";
3
- import Button from '../../simple/buttons/Button.svelte';
4
- import Icon from '../../simple/media/Icon.svelte';
5
- let { items = [], values = $bindable([]), multiple = false, lang = 'en', searchText = $bindable(), maxVisibleChips, placeholder = lang === 'en' ? "Select" : "Seleziona", clearable = true, mandatory = true, icon, menuOpened = $bindable(false), openingId = $bindable("autocomplete-menu"), width, height, minWidth = 'none', menuWidth = width, mobileDrawer = false, disabled = false, onchange, itemLabelSnippet, labelSnippet, } = $props();
6
- let generatedLabel = $derived(values.length == 1 ? values[0].label : `${values.length} Selezionati`);
7
- function handleCloseClick(event) {
8
- if (event) {
9
- event.preventDefault();
10
- event.stopPropagation();
1
+ <script lang="ts" generics="Data">
2
+ import lodash from "lodash";
3
+ import Autocomplete, { type Item } from "../../../components/simple/forms/Autocomplete.svelte";
4
+ import Button from '../../simple/buttons/Button.svelte'
5
+ import Icon from '../../simple/media/Icon.svelte'
6
+ import type { ComponentProps, Snippet } from "svelte";
7
+
8
+ type ItemData = Item<Data>
9
+ interface Props {
10
+ items?: ItemData[];
11
+ values?: ItemData[];
12
+ multiple?: boolean;
13
+ lang?: 'it' | 'en';
14
+ searchText?: string;
15
+ maxVisibleChips?: number;
16
+ placeholder?: string;
17
+ clearable?: boolean;
18
+ mandatory?: boolean;
19
+ icon?: string;
20
+ menuOpened?: boolean;
21
+ openingId?: string;
22
+ width?: string;
23
+ height?: string;
24
+ minWidth?: string;
25
+ menuWidth?: string;
26
+ mobileDrawer?: boolean;
27
+ disabled?: boolean;
28
+ onchange?: (event: {
29
+ detail: {
30
+ unselect: ItemData | undefined;
31
+ select: ItemData | undefined;
32
+ selection: ItemData[];
33
+ }
34
+ }) => void
35
+ itemLabelSnippet?: ComponentProps<typeof Autocomplete<Data>>['itemLabelSnippet']
36
+ labelSnippet?: Snippet<[{
37
+ values: typeof values,
38
+ items: typeof items,
39
+ searchText: typeof searchText,
40
+ generatedLabel: typeof generatedLabel,
41
+ placeholder: typeof placeholder,
42
+ clearable: typeof clearable,
43
+ handleCloseClick: typeof handleCloseClick,
44
+ }]>
45
+ }
46
+
47
+ let {
48
+ items = [],
49
+ values = $bindable([]),
50
+ multiple = false,
51
+ lang = 'en',
52
+ searchText = $bindable(),
53
+ maxVisibleChips,
54
+ placeholder = lang === 'en' ? "Select" : "Seleziona",
55
+ clearable = true,
56
+ mandatory = true,
57
+ icon,
58
+ menuOpened = $bindable(false),
59
+ openingId = $bindable("autocomplete-menu"),
60
+ width,
61
+ height,
62
+ minWidth = 'none',
63
+ menuWidth = width,
64
+ mobileDrawer = false,
65
+ disabled = false,
66
+ onchange,
67
+ itemLabelSnippet,
68
+ labelSnippet,
69
+ }: Props = $props();
70
+
71
+ let generatedLabel = $derived(values.length == 1 ? values[0].label : `${values.length} Selezionati`)
72
+
73
+ function handleCloseClick(event: Parameters<NonNullable<ComponentProps<typeof Icon>['onclick']>>[0]) {
74
+ if(event){
75
+ event.preventDefault()
76
+ event.stopPropagation()
11
77
  }
12
- let valuesBefore = lodash.cloneDeep(values);
13
- values = [];
14
- if (onchange) {
15
- onchange({
16
- detail: {
17
- unselect: valuesBefore[0],
18
- select: undefined,
19
- selection: []
20
- }
21
- });
78
+ let valuesBefore = lodash.cloneDeep(values)
79
+ values = []
80
+
81
+ if(onchange){
82
+ onchange({
83
+ detail: {
84
+ unselect: valuesBefore[0],
85
+ select: undefined,
86
+ selection: []
87
+ }
88
+ })
22
89
  }
23
- }
90
+ }
24
91
  </script>
25
92
 
26
93
  <Autocomplete
@@ -52,7 +119,7 @@ function handleCloseClick(event) {
52
119
  event.detail.nativeEvent.preventDefault()
53
120
  }
54
121
  }}
55
- --button-padding="var(--dropdown-button-padding, 10px 12px)"
122
+ --button-padding="var(--dropdown-button-padding, 6px 8px)"
56
123
  --button-border='var(--dropdown-button-border, none)'
57
124
  --button-background-color='var(--dropdown-button-background-color, rgb(var(--global-color-background-300), .6))'
58
125
  --button-hover-background-color='var(--dropdown-button-hover-color, rgb(var(--global-color-background-300), .6))'
@@ -1,10 +1,10 @@
1
- import { type Item } from "../../../components/simple/forms/Autocomplete.svelte";
1
+ import Autocomplete, { type Item } from "../../../components/simple/forms/Autocomplete.svelte";
2
2
  import Icon from '../../simple/media/Icon.svelte';
3
3
  import type { ComponentProps, Snippet } from "svelte";
4
- declare class __sveltets_Render<Data> {
5
- props(): {
6
- items?: Item<Data>[] | undefined;
7
- values?: Item<Data>[] | undefined;
4
+ declare function $$render<Data>(): {
5
+ props: {
6
+ items?: Item<Data>[];
7
+ values?: Item<Data>[];
8
8
  multiple?: boolean;
9
9
  lang?: "it" | "en";
10
10
  searchText?: string;
@@ -21,16 +21,14 @@ declare class __sveltets_Render<Data> {
21
21
  menuWidth?: string;
22
22
  mobileDrawer?: boolean;
23
23
  disabled?: boolean;
24
- onchange?: ((event: {
24
+ onchange?: (event: {
25
25
  detail: {
26
26
  unselect: Item<Data> | undefined;
27
27
  select: Item<Data> | undefined;
28
28
  selection: Item<Data>[];
29
29
  };
30
- }) => void) | undefined;
31
- itemLabelSnippet?: Snippet<[{
32
- item: Item<Data>;
33
- }]> | undefined;
30
+ }) => void;
31
+ itemLabelSnippet?: ComponentProps<typeof Autocomplete<Data>>["itemLabelSnippet"];
34
32
  labelSnippet?: Snippet<[{
35
33
  values: Item<Data>[];
36
34
  items: Item<Data>[];
@@ -39,10 +37,17 @@ declare class __sveltets_Render<Data> {
39
37
  placeholder: string;
40
38
  clearable: boolean;
41
39
  handleCloseClick: (event: Parameters<NonNullable<ComponentProps<typeof Icon>["onclick"]>>[0]) => void;
42
- }]> | undefined;
40
+ }]>;
43
41
  };
44
- events(): {};
45
- slots(): {};
42
+ exports: {};
43
+ bindings: "openingId" | "values" | "menuOpened" | "searchText";
44
+ slots: {};
45
+ events: {};
46
+ };
47
+ declare class __sveltets_Render<Data> {
48
+ props(): ReturnType<typeof $$render<Data>>['props'];
49
+ events(): ReturnType<typeof $$render<Data>>['events'];
50
+ slots(): ReturnType<typeof $$render<Data>>['slots'];
46
51
  bindings(): "openingId" | "values" | "menuOpened" | "searchText";
47
52
  exports(): {};
48
53
  }