@cloudparker/moldex.js 4.1.5 → 4.1.7

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 (210) hide show
  1. package/package.json +6 -5
  2. package/dist/actions/badge.d.ts +0 -12
  3. package/dist/actions/badge.js +0 -22
  4. package/dist/actions/index.d.ts +0 -3
  5. package/dist/actions/index.js +0 -3
  6. package/dist/actions/no-context-menu.d.ts +0 -3
  7. package/dist/actions/no-context-menu.js +0 -11
  8. package/dist/actions/ripple.css +0 -29
  9. package/dist/actions/ripple.d.ts +0 -7
  10. package/dist/actions/ripple.js +0 -74
  11. package/dist/index.d.ts +0 -3
  12. package/dist/index.js +0 -3
  13. package/dist/services/date/date-service.d.ts +0 -52
  14. package/dist/services/date/date-service.js +0 -206
  15. package/dist/services/dialog/dialog-service.d.ts +0 -112
  16. package/dist/services/dialog/dialog-service.js +0 -357
  17. package/dist/services/index.d.ts +0 -12
  18. package/dist/services/index.js +0 -12
  19. package/dist/services/navigation/navigation-service.d.ts +0 -39
  20. package/dist/services/navigation/navigation-service.js +0 -100
  21. package/dist/services/screen/screen-service.d.ts +0 -17
  22. package/dist/services/screen/screen-service.js +0 -39
  23. package/dist/services/toast/toast-service.d.ts +0 -5
  24. package/dist/services/toast/toast-service.js +0 -26
  25. package/dist/services/utils/color-service.d.ts +0 -46
  26. package/dist/services/utils/color-service.js +0 -73
  27. package/dist/services/utils/currency-service.d.ts +0 -91
  28. package/dist/services/utils/currency-service.js +0 -140
  29. package/dist/services/utils/download-service.d.ts +0 -91
  30. package/dist/services/utils/download-service.js +0 -159
  31. package/dist/services/utils/file-service.d.ts +0 -140
  32. package/dist/services/utils/file-service.js +0 -301
  33. package/dist/services/utils/http-service.d.ts +0 -77
  34. package/dist/services/utils/http-service.js +0 -158
  35. package/dist/services/utils/image-service.d.ts +0 -107
  36. package/dist/services/utils/image-service.js +0 -260
  37. package/dist/services/utils/melody-service.d.ts +0 -5
  38. package/dist/services/utils/melody-service.js +0 -41
  39. package/dist/services/utils/utils-service.d.ts +0 -260
  40. package/dist/services/utils/utils-service.js +0 -413
  41. package/dist/stores/referrer-store/referrer-store.svelte.d.ts +0 -3
  42. package/dist/stores/referrer-store/referrer-store.svelte.js +0 -11
  43. package/dist/stores/screen-size/screen-size-store.svelte.d.ts +0 -18
  44. package/dist/stores/screen-size/screen-size-store.svelte.js +0 -41
  45. package/dist/types.d.ts +0 -6
  46. package/dist/types.js +0 -7
  47. package/dist/views/core/button/components/button/button.svelte +0 -208
  48. package/dist/views/core/button/components/button/button.svelte.d.ts +0 -42
  49. package/dist/views/core/button/components/button-back/button-back.svelte +0 -46
  50. package/dist/views/core/button/components/button-back/button-back.svelte.d.ts +0 -11
  51. package/dist/views/core/button/components/button-close/button-close.svelte +0 -7
  52. package/dist/views/core/button/components/button-close/button-close.svelte.d.ts +0 -4
  53. package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte +0 -47
  54. package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte.d.ts +0 -11
  55. package/dist/views/core/button/components/button-dropdown/button-dropdown.svelte +0 -152
  56. package/dist/views/core/button/components/button-dropdown/button-dropdown.svelte.d.ts +0 -24
  57. package/dist/views/core/button/components/button-list-item/button-list-item.svelte +0 -184
  58. package/dist/views/core/button/components/button-list-item/button-list-item.svelte.d.ts +0 -48
  59. package/dist/views/core/button/components/button-menu/button-menu.svelte +0 -122
  60. package/dist/views/core/button/components/button-menu/button-menu.svelte.d.ts +0 -32
  61. package/dist/views/core/button/components/button-ok/button-ok.svelte +0 -7
  62. package/dist/views/core/button/components/button-ok/button-ok.svelte.d.ts +0 -4
  63. package/dist/views/core/button/components/button-search/button-search.svelte +0 -75
  64. package/dist/views/core/button/components/button-search/button-search.svelte.d.ts +0 -20
  65. package/dist/views/core/button/components/switch/switch.svelte +0 -70
  66. package/dist/views/core/button/components/switch/switch.svelte.d.ts +0 -11
  67. package/dist/views/core/button/index.d.ts +0 -16
  68. package/dist/views/core/button/index.js +0 -11
  69. package/dist/views/core/common/components/content-area/content-area.svelte +0 -47
  70. package/dist/views/core/common/components/content-area/content-area.svelte.d.ts +0 -12
  71. package/dist/views/core/common/components/loading/loading.svelte +0 -14
  72. package/dist/views/core/common/components/loading/loading.svelte.d.ts +0 -7
  73. package/dist/views/core/common/components/virtual-scrolling/virtual-scrolling-list.svelte +0 -60
  74. package/dist/views/core/common/components/virtual-scrolling/virtual-scrolling-list.svelte.d.ts +0 -11
  75. package/dist/views/core/common/index.d.ts +0 -4
  76. package/dist/views/core/common/index.js +0 -9
  77. package/dist/views/core/dialog/components/cropper-dialog/cropper-dialog.svelte +0 -63
  78. package/dist/views/core/dialog/components/cropper-dialog/cropper-dialog.svelte.d.ts +0 -15
  79. package/dist/views/core/dialog/components/dialog/dialog.svelte +0 -455
  80. package/dist/views/core/dialog/components/dialog/dialog.svelte.d.ts +0 -92
  81. package/dist/views/core/dialog/components/loading-dialog/loading-dialog.svelte +0 -42
  82. package/dist/views/core/dialog/components/loading-dialog/loading-dialog.svelte.d.ts +0 -12
  83. package/dist/views/core/dialog/components/msg-dialog/msg-dialog.svelte +0 -22
  84. package/dist/views/core/dialog/components/msg-dialog/msg-dialog.svelte.d.ts +0 -9
  85. package/dist/views/core/dialog/components/number-field-dialog/number-field-dialog.svelte +0 -57
  86. package/dist/views/core/dialog/components/number-field-dialog/number-field-dialog.svelte.d.ts +0 -14
  87. package/dist/views/core/dialog/components/picker-dialog/picker-dialog.svelte +0 -207
  88. package/dist/views/core/dialog/components/picker-dialog/picker-dialog.svelte.d.ts +0 -32
  89. package/dist/views/core/dialog/components/text-field-dialog/text-field-dialog.svelte +0 -56
  90. package/dist/views/core/dialog/components/text-field-dialog/text-field-dialog.svelte.d.ts +0 -15
  91. package/dist/views/core/dialog/components/textarea-field-dialog/textarea-field-dialog.svelte +0 -56
  92. package/dist/views/core/dialog/components/textarea-field-dialog/textarea-field-dialog.svelte.d.ts +0 -15
  93. package/dist/views/core/dialog/index.d.ts +0 -4
  94. package/dist/views/core/dialog/index.js +0 -2
  95. package/dist/views/core/drawer/components/drawer/drawer.svelte +0 -110
  96. package/dist/views/core/drawer/components/drawer/drawer.svelte.d.ts +0 -19
  97. package/dist/views/core/drawer/index.d.ts +0 -2
  98. package/dist/views/core/drawer/index.js +0 -2
  99. package/dist/views/core/icon/components/icon/icon.svelte +0 -27
  100. package/dist/views/core/icon/components/icon/icon.svelte.d.ts +0 -12
  101. package/dist/views/core/icon/components/icon-circle/icon-circle.svelte +0 -17
  102. package/dist/views/core/icon/components/icon-circle/icon-circle.svelte.d.ts +0 -8
  103. package/dist/views/core/icon/index.d.ts +0 -4
  104. package/dist/views/core/icon/index.js +0 -4
  105. package/dist/views/core/icon/services/icon-path-service.d.ts +0 -23
  106. package/dist/views/core/icon/services/icon-path-service.js +0 -24
  107. package/dist/views/core/index.d.ts +0 -16
  108. package/dist/views/core/index.js +0 -16
  109. package/dist/views/core/input/components/checkbox-field/checkbox-field.svelte +0 -83
  110. package/dist/views/core/input/components/checkbox-field/checkbox-field.svelte.d.ts +0 -19
  111. package/dist/views/core/input/components/color-field/color-field.svelte +0 -136
  112. package/dist/views/core/input/components/color-field/color-field.svelte.d.ts +0 -11
  113. package/dist/views/core/input/components/combobox-field/combobox-field.svelte +0 -542
  114. package/dist/views/core/input/components/combobox-field/combobox-field.svelte.d.ts +0 -56
  115. package/dist/views/core/input/components/date-field/date-field.svelte +0 -43
  116. package/dist/views/core/input/components/date-field/date-field.svelte.d.ts +0 -11
  117. package/dist/views/core/input/components/datetime-field/datetime-field.svelte +0 -21
  118. package/dist/views/core/input/components/datetime-field/datetime-field.svelte.d.ts +0 -8
  119. package/dist/views/core/input/components/email-field/email-field.svelte +0 -26
  120. package/dist/views/core/input/components/email-field/email-field.svelte.d.ts +0 -8
  121. package/dist/views/core/input/components/file-field/file-field.svelte +0 -105
  122. package/dist/views/core/input/components/file-field/file-field.svelte.d.ts +0 -13
  123. package/dist/views/core/input/components/input-field/input-field.svelte +0 -416
  124. package/dist/views/core/input/components/input-field/input-field.svelte.d.ts +0 -69
  125. package/dist/views/core/input/components/label/label.svelte +0 -48
  126. package/dist/views/core/input/components/label/label.svelte.d.ts +0 -14
  127. package/dist/views/core/input/components/number-field/number-field.svelte +0 -21
  128. package/dist/views/core/input/components/number-field/number-field.svelte.d.ts +0 -8
  129. package/dist/views/core/input/components/password-field/password-field.svelte +0 -103
  130. package/dist/views/core/input/components/password-field/password-field.svelte.d.ts +0 -12
  131. package/dist/views/core/input/components/phone-field/phone-field.svelte +0 -207
  132. package/dist/views/core/input/components/phone-field/phone-field.svelte.d.ts +0 -33
  133. package/dist/views/core/input/components/radio-field/radio-field.svelte +0 -151
  134. package/dist/views/core/input/components/radio-field/radio-field.svelte.d.ts +0 -32
  135. package/dist/views/core/input/components/range-field/range-field.svelte +0 -119
  136. package/dist/views/core/input/components/range-field/range-field.svelte.d.ts +0 -23
  137. package/dist/views/core/input/components/search-field/search-field.svelte +0 -79
  138. package/dist/views/core/input/components/search-field/search-field.svelte.d.ts +0 -12
  139. package/dist/views/core/input/components/text-field/text-field.svelte +0 -30
  140. package/dist/views/core/input/components/text-field/text-field.svelte.d.ts +0 -11
  141. package/dist/views/core/input/components/textarea-field/textarea-field.svelte +0 -26
  142. package/dist/views/core/input/components/textarea-field/textarea-field.svelte.d.ts +0 -8
  143. package/dist/views/core/input/components/time-field/time-field.svelte +0 -20
  144. package/dist/views/core/input/components/time-field/time-field.svelte.d.ts +0 -8
  145. package/dist/views/core/input/index.d.ts +0 -23
  146. package/dist/views/core/input/index.js +0 -20
  147. package/dist/views/core/navbar/components/navbar/navbar.svelte +0 -170
  148. package/dist/views/core/navbar/components/navbar/navbar.svelte.d.ts +0 -38
  149. package/dist/views/core/navbar/index.d.ts +0 -4
  150. package/dist/views/core/navbar/index.js +0 -3
  151. package/dist/views/core/no-data/components/no-data/no-data.svelte +0 -47
  152. package/dist/views/core/no-data/components/no-data/no-data.svelte.d.ts +0 -13
  153. package/dist/views/core/no-data/index.d.ts +0 -2
  154. package/dist/views/core/no-data/index.js +0 -2
  155. package/dist/views/core/pagination/components/pagination/pagination.svelte +0 -151
  156. package/dist/views/core/pagination/components/pagination/pagination.svelte.d.ts +0 -16
  157. package/dist/views/core/pagination/index.d.ts +0 -2
  158. package/dist/views/core/pagination/index.js +0 -2
  159. package/dist/views/core/progressbar/components/progressbar/progressbar.svelte +0 -55
  160. package/dist/views/core/progressbar/components/progressbar/progressbar.svelte.d.ts +0 -11
  161. package/dist/views/core/progressbar/index.d.ts +0 -2
  162. package/dist/views/core/progressbar/index.js +0 -2
  163. package/dist/views/core/ruler/components/vertical-ruler/verticcal-ruler.svelte +0 -8
  164. package/dist/views/core/ruler/components/vertical-ruler/verticcal-ruler.svelte.d.ts +0 -6
  165. package/dist/views/core/ruler/index.d.ts +0 -2
  166. package/dist/views/core/ruler/index.js +0 -2
  167. package/dist/views/core/screen-detector/components/screen-detector.svelte +0 -17
  168. package/dist/views/core/screen-detector/components/screen-detector.svelte.d.ts +0 -3
  169. package/dist/views/core/screen-detector/index.d.ts +0 -2
  170. package/dist/views/core/screen-detector/index.js +0 -2
  171. package/dist/views/core/sidebar/components/sidebar.svelte +0 -49
  172. package/dist/views/core/sidebar/components/sidebar.svelte.d.ts +0 -12
  173. package/dist/views/core/sidebar/index.d.ts +0 -2
  174. package/dist/views/core/sidebar/index.js +0 -5
  175. package/dist/views/core/spinner/components/spinner/spinner.svelte +0 -21
  176. package/dist/views/core/spinner/components/spinner/spinner.svelte.d.ts +0 -6
  177. package/dist/views/core/spinner/index.d.ts +0 -2
  178. package/dist/views/core/spinner/index.js +0 -2
  179. package/dist/views/core/text/components/text-await/text-await.svelte +0 -23
  180. package/dist/views/core/text/components/text-await/text-await.svelte.d.ts +0 -10
  181. package/dist/views/core/text/components/text-copy/text-copy.svelte +0 -40
  182. package/dist/views/core/text/components/text-copy/text-copy.svelte.d.ts +0 -10
  183. package/dist/views/core/text/components/text-currency/text-currency.svelte +0 -24
  184. package/dist/views/core/text/components/text-currency/text-currency.svelte.d.ts +0 -11
  185. package/dist/views/core/text/components/text-date/text-date.svelte +0 -40
  186. package/dist/views/core/text/components/text-date/text-date.svelte.d.ts +0 -10
  187. package/dist/views/core/text/components/text-email/text-email.svelte +0 -22
  188. package/dist/views/core/text/components/text-email/text-email.svelte.d.ts +0 -9
  189. package/dist/views/core/text/components/text-html/text-html.svelte +0 -7
  190. package/dist/views/core/text/components/text-html/text-html.svelte.d.ts +0 -6
  191. package/dist/views/core/text/components/text-phone/text-phone.svelte +0 -25
  192. package/dist/views/core/text/components/text-phone/text-phone.svelte.d.ts +0 -9
  193. package/dist/views/core/text/index.d.ts +0 -8
  194. package/dist/views/core/text/index.js +0 -8
  195. package/dist/views/core/toast/components/toast/toast.svelte +0 -64
  196. package/dist/views/core/toast/components/toast/toast.svelte.d.ts +0 -14
  197. package/dist/views/core/toast/index.d.ts +0 -2
  198. package/dist/views/core/toast/index.js +0 -1
  199. package/dist/views/extra/fields/country-combobox-field.svelte +0 -42
  200. package/dist/views/extra/fields/country-combobox-field.svelte.d.ts +0 -8
  201. package/dist/views/extra/index.d.ts +0 -6
  202. package/dist/views/extra/index.js +0 -5
  203. package/dist/views/extra/loaders/country-loader.svelte +0 -44
  204. package/dist/views/extra/loaders/country-loader.svelte.d.ts +0 -16
  205. package/dist/views/extra/texts/text-country-state.svelte +0 -48
  206. package/dist/views/extra/texts/text-country-state.svelte.d.ts +0 -6
  207. package/dist/views/extra/texts/text-country.svelte +0 -21
  208. package/dist/views/extra/texts/text-country.svelte.d.ts +0 -6
  209. package/dist/views/index.d.ts +0 -2
  210. package/dist/views/index.js +0 -2
@@ -1,542 +0,0 @@
1
- <script module lang="ts">
2
- export type ComboboxFieldProps = {
3
- chipClassName?: string;
4
- comboboxIconClassName?: string;
5
- comboboxIconPath?: string;
6
- createButtonClassName?: string;
7
- createButtonLabel?: string;
8
- displayClassName?: string;
9
- displayFieldName?: string;
10
- displayItemsCount?: number;
11
- dropdownBodyClassName?: string;
12
- dropdownBodySnippet?: Snippet;
13
- dropdownClassName?: string;
14
- dropdownFooterClassName?: string;
15
- dropdownFooterSnippet?: Snippet;
16
- dropdownHeaderClassName?: string;
17
- dropdownHeaderSnippet?: Snippet;
18
- emptyMessage?: string;
19
- emptyMessageSnippet?: Snippet;
20
- hasComboboxIcon?: boolean;
21
- hasDropdownFooter?: boolean;
22
- hasDropdownFooterCreateButton?: boolean;
23
- hasDropdownHeader?: boolean;
24
- hasDropdownHeaderSearch?: boolean;
25
- hasCheckbox?: boolean;
26
- iconClassName?: string;
27
- iconPathFieldName?: string;
28
- identityFieldName?: string;
29
- itemClassName?: string;
30
- items?: any[];
31
- multiple?: boolean;
32
- onCreateButtonClick?: (ev: MouseEvent) => void;
33
- onSearch?: (value: string) => void;
34
- searchClassName?: string;
35
- searchFieldName?: string;
36
- searchPlaceholder?: string;
37
- showChip?: boolean;
38
- subtitleClassName?: string;
39
- subtitleFieldName?: string;
40
- titleClassName?: string;
41
- titleFieldName?: string;
42
- checkboxIconPath?: string;
43
- uncheckboxIconPath?: string;
44
- checkboxIconClassName?: string;
45
- uncheckboxIconClassName?: string;
46
- checkboxClassName?: string;
47
- dropPosition?: 'top' | 'bottom' | 'middle';
48
- itemTileSnippet?: Snippet<[item: any, index: any]>;
49
- };
50
- </script>
51
-
52
- <script lang="ts">
53
- import ButtonListItem from '../../../button/components/button-list-item/button-list-item.svelte';
54
- import Button from '../../../button/components/button/button.svelte';
55
-
56
- import Icon from '../../../icon/components/icon/icon.svelte';
57
- import NoData from '../../../no-data/components/no-data/no-data.svelte';
58
- import type { Snippet } from 'svelte';
59
- import InputField, { type InputFieldProps } from '../input-field/input-field.svelte';
60
- import SearchField from '../search-field/search-field.svelte';
61
- import { SvelteSet } from 'svelte/reactivity';
62
- import VirtualScrollingList from '../../../common/components/virtual-scrolling/virtual-scrolling-list.svelte';
63
- import { mdiCheckCircle, mdiCheckCircleOutline, mdiUnfoldMoreHorizontal } from '../../../icon/index.js';
64
-
65
- let {
66
- appearance,
67
- chipClassName,
68
- className,
69
- comboboxIconClassName,
70
- comboboxIconPath = mdiUnfoldMoreHorizontal,
71
- contentSnippet,
72
- createButtonClassName,
73
- createButtonLabel = 'Add',
74
- displayClassName,
75
- displayFieldName = 'name',
76
- displayItemsCount,
77
- dropdownBodyClassName,
78
- dropdownBodySnippet,
79
- dropdownClassName,
80
- dropdownFooterClassName,
81
- dropdownFooterSnippet,
82
- dropdownHeaderClassName,
83
- dropdownHeaderSnippet,
84
- emptyMessage = 'No items exists!',
85
- emptyMessageSnippet,
86
- hasComboboxIcon = true,
87
- hasDropdownFooter,
88
- hasDropdownFooterCreateButton,
89
- hasDropdownHeader,
90
- hasDropdownHeaderSearch,
91
- hasCheckbox,
92
- iconClassName,
93
- iconPathFieldName,
94
- id,
95
- identityFieldName = '_id',
96
- itemClassName,
97
- items,
98
- multiple,
99
- name,
100
- onCreateButtonClick,
101
- onSearch,
102
- searchClassName,
103
- searchFieldName = 'name',
104
- searchPlaceholder = 'Search...',
105
- showChip,
106
- size,
107
- subtitleClassName,
108
- subtitleFieldName,
109
- titleClassName,
110
- titleFieldName = 'name',
111
- value = $bindable(null),
112
- checkboxIconPath = mdiCheckCircle,
113
- uncheckboxIconPath = mdiCheckCircleOutline,
114
- checkboxIconClassName = '',
115
- uncheckboxIconClassName = '',
116
- checkboxClassName = '',
117
- dropPosition = 'bottom',
118
- itemTileSnippet,
119
- onChange,
120
- ...props
121
- }: InputFieldProps & ComboboxFieldProps = $props();
122
-
123
- let searchFieldRef: any | null = $state(null);
124
-
125
- let isPlaced = $state(false);
126
- let searchText: string = $state('');
127
- let dropdownHeight = $state(0);
128
- let windowScrollY = $state(0);
129
- let bodyHeight: number = $state(0);
130
-
131
- let placementClassName = $derived.by(() => {
132
- if (!isPlaced) return 'mt-1';
133
-
134
- const rect = inputFieldRef.getBoundingClientRect();
135
- const spaceBelow = window.innerHeight - rect.bottom;
136
- const spaceAbove = rect.top;
137
-
138
- let placement;
139
-
140
- switch (dropPosition) {
141
- case 'top':
142
- placement = 'bottom-full mb-1';
143
- break;
144
- case 'middle':
145
- placement = '-translate-y-1/2 top-1/2';
146
- break;
147
- default:
148
- placement = 'mt-1';
149
- }
150
-
151
- if (dropPosition === 'bottom' && spaceBelow < dropdownHeight && spaceAbove > dropdownHeight) {
152
- placement = 'bottom-full mb-1';
153
- } else if (
154
- dropPosition === 'top' &&
155
- spaceAbove < dropdownHeight &&
156
- spaceBelow > dropdownHeight
157
- ) {
158
- placement = 'mt-1';
159
- } else if (dropPosition === 'middle') {
160
- const spaceNeeded = dropdownHeight / 2;
161
- if (spaceAbove < spaceNeeded || spaceBelow < spaceNeeded) {
162
- placement = spaceAbove > spaceBelow ? 'bottom-full mb-1' : 'mt-1';
163
- }
164
- }
165
-
166
- return placement;
167
- });
168
-
169
- let selectedItemsSet: SvelteSet<any> = $derived(
170
- value ? new SvelteSet<any>(Array.isArray(value) ? value : [value]) : new SvelteSet<any>()
171
- );
172
-
173
- let comboboxIconSizeClassName = $derived.by(() => {
174
- if (size) {
175
- switch (size) {
176
- case 'lg':
177
- return '!h-7 !w-7';
178
- case 'md':
179
- return '!h-6 !w-6';
180
- case 'sm':
181
- return '!h-5 !w-5';
182
- case 'xs':
183
- return '!h-4 !w-4';
184
- }
185
- }
186
- });
187
-
188
- let hasPrimitiveItemsData = $derived.by(() => {
189
- if (items) {
190
- let firstItem = items[0];
191
- return (
192
- typeof firstItem == 'string' || typeof firstItem == 'number' || firstItem instanceof Date
193
- );
194
- }
195
- return false;
196
- });
197
-
198
- let _value = $derived.by(() => {
199
- return selectedItemsSet?.size ? '&nbsp;' : '';
200
- });
201
-
202
- let displayItems: string[] = $derived.by(() => {
203
- let array = Array.from(selectedItemsSet);
204
- let results = array.map((id) => {
205
- if (hasPrimitiveItemsData) {
206
- return id;
207
- } else {
208
- let item = itemsIdentityMap[id];
209
- if (item) {
210
- if (displayFieldName && item.hasOwnProperty(displayFieldName)) {
211
- return item[displayFieldName];
212
- }
213
- }
214
- }
215
- });
216
- return results;
217
- });
218
-
219
- let displayItemsTitle = $derived(displayItems.join(', '));
220
-
221
- let displayText: string = $derived.by(() => {
222
- let results: string[] = displayItems;
223
- if (!showChip) {
224
- if (results?.length) {
225
- if (multiple) {
226
- let res: string = results.join(', ');
227
- if (displayItemsCount != null && displayItemsCount > 1) {
228
- res = results.slice(0, displayItemsCount).join(', ');
229
- if (results.length > displayItemsCount) {
230
- res += `<span class="text-gray-400 px-2">+ ${results.length - displayItemsCount} </span>`;
231
- }
232
- }
233
- return res;
234
- } else {
235
- return results[0] || '';
236
- }
237
- }
238
- }
239
-
240
- return '';
241
- });
242
-
243
- let preparedItems = $derived.by(() => {
244
- return (items || []).map((item, index) => {
245
- let res: any = {};
246
- if (hasPrimitiveItemsData) {
247
- res[identityFieldName] = item;
248
- res[titleFieldName] = item;
249
- res[searchFieldName] = item;
250
- } else {
251
- res = item;
252
- }
253
- return res;
254
- });
255
- });
256
-
257
- let itemsIdentityMap: any = $derived.by(() => {
258
- return preparedItems.reduce((acc, val) => {
259
- acc[val[identityFieldName]] = val;
260
- return acc;
261
- }, {});
262
- });
263
-
264
- let filteredItems = $derived.by(() => {
265
- if (searchText) {
266
- return preparedItems.filter((item: any) => {
267
- return (item[searchFieldName] || '').toLowerCase().indexOf(searchText) >= 0;
268
- });
269
- } else {
270
- return [...preparedItems];
271
- }
272
- });
273
-
274
- let inputFieldRef: any | null = $state(null);
275
-
276
- export function focus() {
277
- inputFieldRef?.focus();
278
- }
279
-
280
- function toggleDropdown() {
281
- if (isPlaced) {
282
- closeDropdown();
283
- } else {
284
- openDropdown();
285
- }
286
- }
287
-
288
- function closeDropdown() {
289
- searchText = '';
290
- isPlaced = false;
291
- focus();
292
- }
293
-
294
- function openDropdown() {
295
- isPlaced = true;
296
- }
297
-
298
- function handleInputClick() {
299
- toggleDropdown();
300
- }
301
-
302
- function handleBackdropClick() {
303
- toggleDropdown();
304
- }
305
-
306
- function handleKeyDown(event: KeyboardEvent) {
307
- if (event.key === 'Escape') {
308
- closeDropdown();
309
- } else if (event.key === 'Enter' || event.key === ' ') {
310
- event.preventDefault(); // Prevent default action for spacebar to avoid scrolling
311
- toggleDropdown();
312
- } else if (/^[a-zA-Z0-9]$/.test(event.key)) {
313
- searchFieldRef && searchFieldRef.focus();
314
- } else if (event.key === 'Backspace' || event.key === 'Delete') {
315
- event.preventDefault(); // Prevent default action for these keys if necessary
316
- selectedItemsSet.clear();
317
- value = null;
318
- }
319
- }
320
-
321
- function handleDropdownKeyDown(event: KeyboardEvent) {
322
- if (event.key === 'Escape') {
323
- closeDropdown();
324
- }
325
- }
326
-
327
- function handleSearch(value: string) {
328
- searchText = value;
329
- }
330
-
331
- function handleItemClick(ev: MouseEvent, item: any, index: number) {
332
- let id = item[identityFieldName];
333
- if (multiple) {
334
- if (selectedItemsSet.has(id)) {
335
- selectedItemsSet.delete(id);
336
- } else {
337
- selectedItemsSet.add(id);
338
- }
339
- } else {
340
- selectedItemsSet.clear();
341
- selectedItemsSet.add(id);
342
- }
343
-
344
- items = [...(items || [])];
345
-
346
- let array = Array.from(selectedItemsSet);
347
- if (array.length) {
348
- value = multiple ? array : array[0];
349
- } else {
350
- value = null;
351
- }
352
-
353
- if (!multiple) {
354
- closeDropdown();
355
- }
356
-
357
- onChange && onChange(value);
358
-
359
- // console.log('handleItemClick', selectedItemsSet, value);
360
- }
361
- </script>
362
-
363
- {#snippet rightIcon()}
364
- <div class="px-1">
365
- {#if hasComboboxIcon}
366
- <Icon
367
- path={comboboxIconPath}
368
- className=" text-neutral-500 {comboboxIconSizeClassName} {comboboxIconClassName}"
369
- />
370
- {/if}
371
- </div>
372
- {/snippet}
373
-
374
- {#snippet comboboxContentSnippet()}
375
- {#if contentSnippet}
376
- {@render contentSnippet()}
377
- {:else if showChip}
378
- <div class="flex items-center {displayClassName}" title={displayItemsTitle}>
379
- {#each displayItems?.slice(0, displayItemsCount) as item, index}
380
- <div
381
- class="inline-flex items-center bg-neutral-200 text-neutral-700 text-sm font-medium px-2 mx-1 rounded-full text-nowrap {chipClassName}"
382
- >
383
- {item}
384
- </div>
385
- {/each}
386
- {#if displayItemsCount && displayItems?.length > (displayItemsCount || 1)}
387
- <div class="px-2 text-neutral-400">+ {displayItems?.length - (displayItemsCount || 1)}</div>
388
- {/if}
389
- </div>
390
- {:else}
391
- <div class="flex items-center {displayClassName}" title={displayItemsTitle}>
392
- {@html displayText}
393
- </div>
394
- {/if}
395
- {/snippet}
396
-
397
- <svelte:window bind:scrollY={windowScrollY} />
398
-
399
- <div class="relative">
400
- <InputField
401
- bind:this={inputFieldRef}
402
- {...props}
403
- value={_value}
404
- type="text"
405
- role="combobox"
406
- onClick={handleInputClick}
407
- className="pr-8 text-transparent {className}"
408
- rightSnippet={rightIcon}
409
- rightSnippetContainerClassName="pointer-events-none"
410
- readonly
411
- {id}
412
- {name}
413
- {size}
414
- {appearance}
415
- ariaControls="options"
416
- ariaExpanded={isPlaced}
417
- onKeyDown={handleKeyDown}
418
- contentSnippet={comboboxContentSnippet}
419
- title={displayItemsTitle || ''}
420
- />
421
- {#if isPlaced}
422
- <button
423
- id="backdrop"
424
- class="fixed inset-0 z-10"
425
- onclick={handleBackdropClick}
426
- tabindex="-1"
427
- aria-label="backdrop"
428
- ></button>
429
- <!-- svelte-ignore a11y_interactive_supports_focus -->
430
- <div
431
- bind:clientHeight={dropdownHeight}
432
- class="absolute z-10 {placementClassName} max-h-80 w-full flex flex-col rounded-md bg-white dark:bg-neutral-900 text-neutral-600 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm {hasDropdownHeader
433
- ? ''
434
- : 'pt-1'} {hasDropdownFooter ? '' : 'pb-1'} {dropdownClassName}"
435
- id="options"
436
- role="listbox"
437
- onkeydown={handleDropdownKeyDown}
438
- >
439
- {#if hasDropdownHeader}
440
- <div
441
- id="dropdown-header"
442
- class=" flex items-center p-2 px-3 my-1 w-full {dropdownHeaderClassName}"
443
- >
444
- {#if dropdownHeaderSnippet}
445
- {@render dropdownHeaderSnippet()}
446
- {:else if hasDropdownHeaderSearch}
447
- <SearchField
448
- bind:this={searchFieldRef}
449
- value={searchText}
450
- name="search"
451
- placeholder={searchPlaceholder}
452
- className="w-full {searchClassName}"
453
- onSearch={handleSearch}
454
- />
455
- {/if}
456
- </div>
457
- {/if}
458
- <div
459
- id="dropdown-body"
460
- class="flex-grow overflow-y-auto h-60 {dropdownBodyClassName}"
461
- bind:clientHeight={bodyHeight}
462
- >
463
- {#if dropdownBodySnippet}
464
- {@render dropdownBodySnippet()}
465
- {:else if filteredItems?.length}
466
- <ul>
467
- <VirtualScrollingList
468
- items={filteredItems}
469
- itemHeight={56}
470
- containerHeight={bodyHeight}
471
- >
472
- {#snippet itemSnippet(item, index)}
473
- {@const isSelected = selectedItemsSet.has(item[identityFieldName])}
474
- <li
475
- class="select-none h-full"
476
- id="item-{index}"
477
- role="option"
478
- tabindex="-1"
479
- aria-selected={item.isChecked}
480
- >
481
- {#if itemTileSnippet}
482
- <ButtonListItem
483
- onClick={(ev) => handleItemClick(ev, item, index)}
484
- className="h-full"
485
- >
486
- {@render itemTileSnippet(item, index)}
487
- {#if hasCheckbox}
488
- <div>
489
- <Icon
490
- path={isSelected ? checkboxIconPath : uncheckboxIconPath}
491
- className="w-5 h-5 {checkboxClassName} {isSelected
492
- ? `text-primary ${checkboxIconClassName}`
493
- : `text-neutral-400 ${uncheckboxIconClassName}`}"
494
- />
495
- </div>
496
- {/if}
497
- </ButtonListItem>
498
- {:else}
499
- <ButtonListItem
500
- title={item[titleFieldName] || ''}
501
- subtitle={item[subtitleFieldName || ''] || ''}
502
- {index}
503
- {hasCheckbox}
504
- className=" {itemClassName}"
505
- titleClassName=" {titleClassName}"
506
- subtitleClassName=" {subtitleClassName}"
507
- isChecked={isSelected}
508
- {checkboxIconPath}
509
- {uncheckboxIconPath}
510
- {checkboxIconClassName}
511
- {uncheckboxIconClassName}
512
- {checkboxClassName}
513
- onClick={(ev) => handleItemClick(ev, item, index)}
514
- />
515
- {/if}
516
- </li>
517
- {/snippet}
518
- </VirtualScrollingList>
519
- </ul>
520
- {:else if emptyMessageSnippet}
521
- {@render emptyMessageSnippet()}
522
- {:else}
523
- <NoData message={emptyMessage} />
524
- {/if}
525
- </div>
526
-
527
- {#if hasDropdownFooter}
528
- <div id="dropdown-footer" class="flex justify-end gap-3 p-2 px-3 {dropdownFooterClassName}">
529
- {#if dropdownFooterSnippet}
530
- {@render dropdownFooterSnippet()}
531
- {:else if hasDropdownFooterCreateButton}
532
- <Button
533
- label={createButtonLabel}
534
- className="px-3 py-1 {createButtonClassName}"
535
- onClick={onCreateButtonClick}
536
- />
537
- {/if}
538
- </div>
539
- {/if}
540
- </div>
541
- {/if}
542
- </div>
@@ -1,56 +0,0 @@
1
- export type ComboboxFieldProps = {
2
- chipClassName?: string;
3
- comboboxIconClassName?: string;
4
- comboboxIconPath?: string;
5
- createButtonClassName?: string;
6
- createButtonLabel?: string;
7
- displayClassName?: string;
8
- displayFieldName?: string;
9
- displayItemsCount?: number;
10
- dropdownBodyClassName?: string;
11
- dropdownBodySnippet?: Snippet;
12
- dropdownClassName?: string;
13
- dropdownFooterClassName?: string;
14
- dropdownFooterSnippet?: Snippet;
15
- dropdownHeaderClassName?: string;
16
- dropdownHeaderSnippet?: Snippet;
17
- emptyMessage?: string;
18
- emptyMessageSnippet?: Snippet;
19
- hasComboboxIcon?: boolean;
20
- hasDropdownFooter?: boolean;
21
- hasDropdownFooterCreateButton?: boolean;
22
- hasDropdownHeader?: boolean;
23
- hasDropdownHeaderSearch?: boolean;
24
- hasCheckbox?: boolean;
25
- iconClassName?: string;
26
- iconPathFieldName?: string;
27
- identityFieldName?: string;
28
- itemClassName?: string;
29
- items?: any[];
30
- multiple?: boolean;
31
- onCreateButtonClick?: (ev: MouseEvent) => void;
32
- onSearch?: (value: string) => void;
33
- searchClassName?: string;
34
- searchFieldName?: string;
35
- searchPlaceholder?: string;
36
- showChip?: boolean;
37
- subtitleClassName?: string;
38
- subtitleFieldName?: string;
39
- titleClassName?: string;
40
- titleFieldName?: string;
41
- checkboxIconPath?: string;
42
- uncheckboxIconPath?: string;
43
- checkboxIconClassName?: string;
44
- uncheckboxIconClassName?: string;
45
- checkboxClassName?: string;
46
- dropPosition?: 'top' | 'bottom' | 'middle';
47
- itemTileSnippet?: Snippet<[item: any, index: any]>;
48
- };
49
- import type { Snippet } from 'svelte';
50
- import { type InputFieldProps } from '../input-field/input-field.svelte';
51
- type $$ComponentProps = InputFieldProps & ComboboxFieldProps;
52
- declare const ComboboxField: import("svelte").Component<$$ComponentProps, {
53
- focus: () => void;
54
- }, "value">;
55
- type ComboboxField = ReturnType<typeof ComboboxField>;
56
- export default ComboboxField;
@@ -1,43 +0,0 @@
1
- <script lang="ts">
2
- import { dateFormat, toDate } from '../../../../../services/index.js';
3
-
4
-
5
- import InputField, { type InputFieldProps } from '../input-field/input-field.svelte';
6
-
7
- let {
8
- value = $bindable(null),
9
- ...props
10
- }: InputFieldProps & { value?: Date | string | number | null | undefined } = $props();
11
-
12
- let _value: string | undefined = $derived.by(() => {
13
- if (value) {
14
- return dateFormat(toDate(value)!, 'YYYY-MM-DD') as string;
15
- }
16
- });
17
-
18
-
19
-
20
- let inputFieldRef: any | null = $state(null);
21
-
22
- export function focus() {
23
- inputFieldRef?.focus();
24
- }
25
-
26
- export function getElement() {
27
- return inputFieldRef;
28
- }
29
-
30
- export function select() {
31
- inputFieldRef && inputFieldRef.select();
32
- }
33
-
34
- function handleInput(ev: Event) {
35
- let target: HTMLInputElement = ev?.target as HTMLInputElement;
36
- if (target?.value) {
37
- value = toDate(target?.value) as Date;
38
- console.log('handleInput value', value);
39
- }
40
- }
41
- </script>
42
-
43
- <InputField bind:this={inputFieldRef} {...props} type="date" value={_value} onInput={handleInput} />
@@ -1,11 +0,0 @@
1
- import { type InputFieldProps } from '../input-field/input-field.svelte';
2
- type $$ComponentProps = InputFieldProps & {
3
- value?: Date | string | number | null | undefined;
4
- };
5
- declare const DateField: import("svelte").Component<$$ComponentProps, {
6
- focus: () => void;
7
- getElement: () => any;
8
- select: () => void;
9
- }, "value">;
10
- type DateField = ReturnType<typeof DateField>;
11
- export default DateField;
@@ -1,21 +0,0 @@
1
- <script lang="ts">
2
- import InputField, { type InputFieldProps } from '../input-field/input-field.svelte';
3
-
4
- let { value = $bindable(), ...props }: InputFieldProps = $props();
5
-
6
- let inputFieldRef: any | null = $state(null);
7
-
8
- export function focus() {
9
- inputFieldRef?.focus();
10
- }
11
-
12
- export function getElement() {
13
- return inputFieldRef;
14
- }
15
-
16
- export function select() {
17
- inputFieldRef && inputFieldRef.select();
18
- }
19
- </script>
20
-
21
- <InputField bind:this={inputFieldRef} {...props} type="datetime-local" bind:value />
@@ -1,8 +0,0 @@
1
- import { type InputFieldProps } from '../input-field/input-field.svelte';
2
- declare const DatetimeField: import("svelte").Component<InputFieldProps, {
3
- focus: () => void;
4
- getElement: () => any;
5
- select: () => void;
6
- }, "value">;
7
- type DatetimeField = ReturnType<typeof DatetimeField>;
8
- export default DatetimeField;
@@ -1,26 +0,0 @@
1
- <script lang="ts">
2
- import InputField, { type InputFieldProps } from '../input-field/input-field.svelte';
3
-
4
- let { value = $bindable(''), ...props }: InputFieldProps = $props();
5
- let inputFieldRef: any | null = $state(null);
6
-
7
- export function focus() {
8
- inputFieldRef?.focus();
9
- }
10
-
11
- export function getElement() {
12
- return inputFieldRef;
13
- }
14
-
15
- export function select() {
16
- inputFieldRef && inputFieldRef.select();
17
- }
18
- </script>
19
-
20
- <InputField
21
- bind:this={inputFieldRef}
22
- {...props}
23
- type="email"
24
- maxlength={props?.maxlength || 80}
25
- bind:value
26
- />