@cloudparker/moldex.js 4.1.7 → 4.1.8

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 (220) hide show
  1. package/dist/actions/badge.d.ts +12 -0
  2. package/dist/actions/badge.js +22 -0
  3. package/dist/actions/index.d.ts +3 -0
  4. package/dist/actions/index.js +3 -0
  5. package/dist/actions/no-context-menu.d.ts +3 -0
  6. package/dist/actions/no-context-menu.js +11 -0
  7. package/dist/actions/ripple.css +29 -0
  8. package/dist/actions/ripple.d.ts +7 -0
  9. package/dist/actions/ripple.js +74 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.js +3 -0
  12. package/dist/services/date/date-service.d.ts +52 -0
  13. package/dist/services/date/date-service.js +206 -0
  14. package/dist/services/dialog/dialog-service.d.ts +96 -0
  15. package/dist/services/dialog/dialog-service.js +350 -0
  16. package/dist/services/index.d.ts +12 -0
  17. package/dist/services/index.js +12 -0
  18. package/dist/services/navigation/navigation-service.d.ts +39 -0
  19. package/dist/services/navigation/navigation-service.js +100 -0
  20. package/dist/services/screen/screen-service.d.ts +17 -0
  21. package/dist/services/screen/screen-service.js +39 -0
  22. package/dist/services/toast/toast-service.d.ts +5 -0
  23. package/dist/services/toast/toast-service.js +26 -0
  24. package/dist/services/utils/color-service.d.ts +46 -0
  25. package/dist/services/utils/color-service.js +73 -0
  26. package/dist/services/utils/currency-service.d.ts +91 -0
  27. package/dist/services/utils/currency-service.js +140 -0
  28. package/dist/services/utils/download-service.d.ts +91 -0
  29. package/dist/services/utils/download-service.js +159 -0
  30. package/dist/services/utils/file-service.d.ts +140 -0
  31. package/dist/services/utils/file-service.js +301 -0
  32. package/dist/services/utils/http-service.d.ts +77 -0
  33. package/dist/services/utils/http-service.js +158 -0
  34. package/dist/services/utils/image-service.d.ts +107 -0
  35. package/dist/services/utils/image-service.js +260 -0
  36. package/dist/services/utils/melody-service.d.ts +5 -0
  37. package/dist/services/utils/melody-service.js +41 -0
  38. package/dist/services/utils/utils-service.d.ts +260 -0
  39. package/dist/services/utils/utils-service.js +413 -0
  40. package/dist/stores/referrer-store/referrer-store.svelte.d.ts +3 -0
  41. package/dist/stores/referrer-store/referrer-store.svelte.js +11 -0
  42. package/dist/stores/screen-size/screen-size-store.svelte.d.ts +18 -0
  43. package/dist/stores/screen-size/screen-size-store.svelte.js +41 -0
  44. package/dist/types.d.ts +6 -0
  45. package/dist/types.js +7 -0
  46. package/dist/views/core/button/components/button/button.svelte +161 -0
  47. package/dist/views/core/button/components/button/button.svelte.d.ts +4 -0
  48. package/dist/views/core/button/components/button-back/button-back.svelte +46 -0
  49. package/dist/views/core/button/components/button-back/button-back.svelte.d.ts +11 -0
  50. package/dist/views/core/button/components/button-close/button-close.svelte +8 -0
  51. package/dist/views/core/button/components/button-close/button-close.svelte.d.ts +4 -0
  52. package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte +47 -0
  53. package/dist/views/core/button/components/button-close-icon/button-close-icon.svelte.d.ts +11 -0
  54. package/dist/views/core/button/components/button-dropdown/button-dropdown.svelte +149 -0
  55. package/dist/views/core/button/components/button-dropdown/button-dropdown.svelte.d.ts +24 -0
  56. package/dist/views/core/button/components/button-list-item/button-list-item.svelte +136 -0
  57. package/dist/views/core/button/components/button-list-item/button-list-item.svelte.d.ts +4 -0
  58. package/dist/views/core/button/components/button-menu/button-menu.svelte +105 -0
  59. package/dist/views/core/button/components/button-menu/button-menu.svelte.d.ts +21 -0
  60. package/dist/views/core/button/components/button-ok/button-ok.svelte +9 -0
  61. package/dist/views/core/button/components/button-ok/button-ok.svelte.d.ts +4 -0
  62. package/dist/views/core/button/components/button-search/button-search.svelte +72 -0
  63. package/dist/views/core/button/components/button-search/button-search.svelte.d.ts +21 -0
  64. package/dist/views/core/button/components/switch/switch.svelte +62 -0
  65. package/dist/views/core/button/components/switch/switch.svelte.d.ts +4 -0
  66. package/dist/views/core/button/index.d.ts +12 -0
  67. package/dist/views/core/button/index.js +12 -0
  68. package/dist/views/core/button/types.d.ts +100 -0
  69. package/dist/views/core/button/types.js +1 -0
  70. package/dist/views/core/common/components/content-area/content-area.svelte +47 -0
  71. package/dist/views/core/common/components/content-area/content-area.svelte.d.ts +12 -0
  72. package/dist/views/core/common/components/loading/loading.svelte +14 -0
  73. package/dist/views/core/common/components/loading/loading.svelte.d.ts +7 -0
  74. package/dist/views/core/common/components/virtual-scrolling/virtual-scrolling-list.svelte +60 -0
  75. package/dist/views/core/common/components/virtual-scrolling/virtual-scrolling-list.svelte.d.ts +11 -0
  76. package/dist/views/core/common/index.js +9 -0
  77. package/dist/views/core/dialog/components/cropper-dialog/cropper-dialog.svelte +51 -0
  78. package/dist/views/core/dialog/components/cropper-dialog/cropper-dialog.svelte.d.ts +5 -0
  79. package/dist/views/core/dialog/components/dialog/dialog.svelte +370 -0
  80. package/dist/views/core/dialog/components/dialog/dialog.svelte.d.ts +19 -0
  81. package/dist/views/core/dialog/components/loading-dialog/loading-dialog.svelte +42 -0
  82. package/dist/views/core/dialog/components/loading-dialog/loading-dialog.svelte.d.ts +12 -0
  83. package/dist/views/core/dialog/components/msg-dialog/msg-dialog.svelte +22 -0
  84. package/dist/views/core/dialog/components/msg-dialog/msg-dialog.svelte.d.ts +9 -0
  85. package/dist/views/core/dialog/components/number-field-dialog/number-field-dialog.svelte +57 -0
  86. package/dist/views/core/dialog/components/number-field-dialog/number-field-dialog.svelte.d.ts +14 -0
  87. package/dist/views/core/dialog/components/picker-dialog/picker-dialog.svelte +181 -0
  88. package/dist/views/core/dialog/components/picker-dialog/picker-dialog.svelte.d.ts +5 -0
  89. package/dist/views/core/dialog/components/text-field-dialog/text-field-dialog.svelte +56 -0
  90. package/dist/views/core/dialog/components/text-field-dialog/text-field-dialog.svelte.d.ts +15 -0
  91. package/dist/views/core/dialog/components/textarea-field-dialog/textarea-field-dialog.svelte +56 -0
  92. package/dist/views/core/dialog/components/textarea-field-dialog/textarea-field-dialog.svelte.d.ts +15 -0
  93. package/dist/views/core/dialog/index.d.ts +9 -0
  94. package/dist/views/core/dialog/index.js +9 -0
  95. package/dist/views/core/dialog/types.d.ts +105 -0
  96. package/dist/views/core/dialog/types.js +1 -0
  97. package/dist/views/core/drawer/components/drawer/drawer.svelte +110 -0
  98. package/dist/views/core/drawer/components/drawer/drawer.svelte.d.ts +19 -0
  99. package/dist/views/core/drawer/index.d.ts +2 -0
  100. package/dist/views/core/drawer/index.js +2 -0
  101. package/dist/views/core/icon/components/icon/icon.svelte +27 -0
  102. package/dist/views/core/icon/components/icon/icon.svelte.d.ts +12 -0
  103. package/dist/views/core/icon/components/icon-circle/icon-circle.svelte +17 -0
  104. package/dist/views/core/icon/components/icon-circle/icon-circle.svelte.d.ts +8 -0
  105. package/dist/views/core/icon/index.d.ts +4 -0
  106. package/dist/views/core/icon/index.js +4 -0
  107. package/dist/views/core/icon/services/icon-path-service.d.ts +23 -0
  108. package/dist/views/core/icon/services/icon-path-service.js +24 -0
  109. package/dist/views/core/index.d.ts +16 -0
  110. package/dist/views/core/index.js +16 -0
  111. package/dist/views/core/input/components/checkbox-field/checkbox-field.svelte +83 -0
  112. package/dist/views/core/input/components/checkbox-field/checkbox-field.svelte.d.ts +19 -0
  113. package/dist/views/core/input/components/color-field/color-field.svelte +135 -0
  114. package/dist/views/core/input/components/color-field/color-field.svelte.d.ts +11 -0
  115. package/dist/views/core/input/components/combobox-field/combobox-field.svelte +492 -0
  116. package/dist/views/core/input/components/combobox-field/combobox-field.svelte.d.ts +7 -0
  117. package/dist/views/core/input/components/date-field/date-field.svelte +40 -0
  118. package/dist/views/core/input/components/date-field/date-field.svelte.d.ts +11 -0
  119. package/dist/views/core/input/components/datetime-field/datetime-field.svelte +22 -0
  120. package/dist/views/core/input/components/datetime-field/datetime-field.svelte.d.ts +8 -0
  121. package/dist/views/core/input/components/email-field/email-field.svelte +27 -0
  122. package/dist/views/core/input/components/email-field/email-field.svelte.d.ts +8 -0
  123. package/dist/views/core/input/components/file-field/file-field.svelte +106 -0
  124. package/dist/views/core/input/components/file-field/file-field.svelte.d.ts +13 -0
  125. package/dist/views/core/input/components/input-field/input-field.svelte +336 -0
  126. package/dist/views/core/input/components/input-field/input-field.svelte.d.ts +9 -0
  127. package/dist/views/core/input/components/label/label.svelte +48 -0
  128. package/dist/views/core/input/components/label/label.svelte.d.ts +14 -0
  129. package/dist/views/core/input/components/number-field/number-field.svelte +22 -0
  130. package/dist/views/core/input/components/number-field/number-field.svelte.d.ts +8 -0
  131. package/dist/views/core/input/components/password-field/password-field.svelte +100 -0
  132. package/dist/views/core/input/components/password-field/password-field.svelte.d.ts +12 -0
  133. package/dist/views/core/input/components/phone-field/phone-field.svelte +187 -0
  134. package/dist/views/core/input/components/phone-field/phone-field.svelte.d.ts +12 -0
  135. package/dist/views/core/input/components/radio-field/radio-field.svelte +127 -0
  136. package/dist/views/core/input/components/radio-field/radio-field.svelte.d.ts +4 -0
  137. package/dist/views/core/input/components/range-field/range-field.svelte +120 -0
  138. package/dist/views/core/input/components/range-field/range-field.svelte.d.ts +23 -0
  139. package/dist/views/core/input/components/search-field/search-field.svelte +80 -0
  140. package/dist/views/core/input/components/search-field/search-field.svelte.d.ts +12 -0
  141. package/dist/views/core/input/components/text-field/text-field.svelte +31 -0
  142. package/dist/views/core/input/components/text-field/text-field.svelte.d.ts +11 -0
  143. package/dist/views/core/input/components/textarea-field/textarea-field.svelte +27 -0
  144. package/dist/views/core/input/components/textarea-field/textarea-field.svelte.d.ts +8 -0
  145. package/dist/views/core/input/components/time-field/time-field.svelte +21 -0
  146. package/dist/views/core/input/components/time-field/time-field.svelte.d.ts +8 -0
  147. package/dist/views/core/input/index.d.ts +20 -0
  148. package/dist/views/core/input/index.js +20 -0
  149. package/dist/views/core/input/types.d.ts +159 -0
  150. package/dist/views/core/input/types.js +1 -0
  151. package/dist/views/core/navbar/components/navbar/navbar.svelte +133 -0
  152. package/dist/views/core/navbar/components/navbar/navbar.svelte.d.ts +4 -0
  153. package/dist/views/core/navbar/index.d.ts +2 -0
  154. package/dist/views/core/navbar/index.js +2 -0
  155. package/dist/views/core/navbar/types.d.ts +35 -0
  156. package/dist/views/core/navbar/types.js +1 -0
  157. package/dist/views/core/no-data/components/no-data/no-data.svelte +47 -0
  158. package/dist/views/core/no-data/components/no-data/no-data.svelte.d.ts +13 -0
  159. package/dist/views/core/no-data/index.d.ts +2 -0
  160. package/dist/views/core/no-data/index.js +2 -0
  161. package/dist/views/core/pagination/components/pagination/pagination.svelte +151 -0
  162. package/dist/views/core/pagination/components/pagination/pagination.svelte.d.ts +16 -0
  163. package/dist/views/core/pagination/index.d.ts +2 -0
  164. package/dist/views/core/pagination/index.js +2 -0
  165. package/dist/views/core/progressbar/components/progressbar/progressbar.svelte +55 -0
  166. package/dist/views/core/progressbar/components/progressbar/progressbar.svelte.d.ts +11 -0
  167. package/dist/views/core/progressbar/index.d.ts +2 -0
  168. package/dist/views/core/progressbar/index.js +2 -0
  169. package/dist/views/core/ruler/components/vertical-ruler/verticcal-ruler.svelte +8 -0
  170. package/dist/views/core/ruler/components/vertical-ruler/verticcal-ruler.svelte.d.ts +6 -0
  171. package/dist/views/core/ruler/index.d.ts +2 -0
  172. package/dist/views/core/ruler/index.js +2 -0
  173. package/dist/views/core/screen-detector/components/screen-detector.svelte +17 -0
  174. package/dist/views/core/screen-detector/components/screen-detector.svelte.d.ts +3 -0
  175. package/dist/views/core/screen-detector/index.d.ts +2 -0
  176. package/dist/views/core/screen-detector/index.js +2 -0
  177. package/dist/views/core/sidebar/components/sidebar.svelte +49 -0
  178. package/dist/views/core/sidebar/components/sidebar.svelte.d.ts +12 -0
  179. package/dist/views/core/sidebar/index.js +5 -0
  180. package/dist/views/core/spinner/components/spinner/spinner.svelte +21 -0
  181. package/dist/views/core/spinner/components/spinner/spinner.svelte.d.ts +6 -0
  182. package/dist/views/core/spinner/index.d.ts +2 -0
  183. package/dist/views/core/spinner/index.js +2 -0
  184. package/dist/views/core/text/components/text-await/text-await.svelte +23 -0
  185. package/dist/views/core/text/components/text-await/text-await.svelte.d.ts +10 -0
  186. package/dist/views/core/text/components/text-copy/text-copy.svelte +40 -0
  187. package/dist/views/core/text/components/text-copy/text-copy.svelte.d.ts +10 -0
  188. package/dist/views/core/text/components/text-currency/text-currency.svelte +24 -0
  189. package/dist/views/core/text/components/text-currency/text-currency.svelte.d.ts +11 -0
  190. package/dist/views/core/text/components/text-date/text-date.svelte +40 -0
  191. package/dist/views/core/text/components/text-date/text-date.svelte.d.ts +10 -0
  192. package/dist/views/core/text/components/text-email/text-email.svelte +22 -0
  193. package/dist/views/core/text/components/text-email/text-email.svelte.d.ts +9 -0
  194. package/dist/views/core/text/components/text-html/text-html.svelte +7 -0
  195. package/dist/views/core/text/components/text-html/text-html.svelte.d.ts +6 -0
  196. package/dist/views/core/text/components/text-phone/text-phone.svelte +25 -0
  197. package/dist/views/core/text/components/text-phone/text-phone.svelte.d.ts +9 -0
  198. package/dist/views/core/text/index.d.ts +8 -0
  199. package/dist/views/core/text/index.js +8 -0
  200. package/dist/views/core/toast/components/toast/toast.svelte +46 -0
  201. package/dist/views/core/toast/components/toast/toast.svelte.d.ts +7 -0
  202. package/dist/views/core/toast/index.d.ts +3 -0
  203. package/dist/views/core/toast/index.js +3 -0
  204. package/dist/views/core/toast/types.d.ts +8 -0
  205. package/dist/views/core/toast/types.js +1 -0
  206. package/dist/views/extra/fields/country-combobox-field.svelte +42 -0
  207. package/dist/views/extra/fields/country-combobox-field.svelte.d.ts +8 -0
  208. package/dist/views/extra/index.d.ts +6 -0
  209. package/dist/views/extra/index.js +6 -0
  210. package/dist/views/extra/loaders/country-loader.svelte +38 -0
  211. package/dist/views/extra/loaders/country-loader.svelte.d.ts +12 -0
  212. package/dist/views/extra/texts/text-country-state.svelte +48 -0
  213. package/dist/views/extra/texts/text-country-state.svelte.d.ts +6 -0
  214. package/dist/views/extra/texts/text-country.svelte +22 -0
  215. package/dist/views/extra/texts/text-country.svelte.d.ts +6 -0
  216. package/dist/views/extra/types.d.ts +5 -0
  217. package/dist/views/extra/types.js +1 -0
  218. package/dist/views/index.d.ts +2 -0
  219. package/dist/views/index.js +2 -0
  220. package/package.json +2 -1
@@ -0,0 +1,181 @@
1
+ <script lang="ts">
2
+ import { showToast } from '../../../../../services/index.js';
3
+ import ButtonListItem from '../../../button/components/button-list-item/button-list-item.svelte';
4
+ import ButtonSearch from '../../../button/components/button-search/button-search.svelte';
5
+ import VirtualScrollingList from '../../../common/components/virtual-scrolling/virtual-scrolling-list.svelte';
6
+ import Icon from '../../../icon/components/icon/icon.svelte';
7
+ import {
8
+ mdiCheckCircle,
9
+ mdiCheckCircleOutline,
10
+ mdiChevronRight
11
+ } from '../../../icon/index.js';
12
+ import { onMount } from 'svelte';
13
+ import { SvelteSet } from 'svelte/reactivity';
14
+ import type { DialogExports, PickerDialogProps } from '../../types';
15
+
16
+ let {
17
+ value,
18
+ items = [],
19
+ multiple = false,
20
+ identityFieldName = '_id',
21
+ titleFieldName = 'name',
22
+ subtitleFieldName,
23
+ searchFieldName = 'name',
24
+ hasCheckbox,
25
+ hasArrow,
26
+ maxlength = 0,
27
+ maxlengthMsg = 'Selection limit reached!',
28
+ checkboxIconPath = mdiCheckCircle,
29
+ uncheckboxIconPath = mdiCheckCircleOutline,
30
+ arrowIconPath = mdiChevronRight,
31
+ checkboxIconClassName = '',
32
+ uncheckboxIconClassName = '',
33
+ arrowClassName = '',
34
+ checkboxClassName = '',
35
+ isCircularIcon,
36
+ hasIcon,
37
+ iconClassName,
38
+ circularIconClassName,
39
+ iconPath,
40
+ itemTileSnippet,
41
+ closeDialog,
42
+ setResult,
43
+ setOnOkClick,
44
+ setHeaderSnippet,
45
+ setDialogTitle
46
+ }: DialogExports & PickerDialogProps = $props();
47
+
48
+ let containerHeight: number = $state(0);
49
+
50
+ // Reactive store for selected items
51
+ let selectedSet: SvelteSet<any> = $state(
52
+ value ? new SvelteSet(Array.isArray(value) ? value : [value]) : new SvelteSet()
53
+ );
54
+
55
+ let searchText: string = $state('');
56
+
57
+ let records: any[] = $derived.by(() => {
58
+ if (items && typeof items[0] == 'string') {
59
+ return items.map((name) => {
60
+ return {
61
+ [identityFieldName]: name,
62
+ [titleFieldName]: name
63
+ };
64
+ });
65
+ }
66
+
67
+ return [...items];
68
+ });
69
+
70
+ let filteredRecords: any[] = $derived.by(() => {
71
+ if (searchText) {
72
+ return records.filter((item) => {
73
+ return (item[searchFieldName] || '').toLowerCase().indexOf(searchText) >= 0;
74
+ });
75
+ }
76
+ return records;
77
+ });
78
+
79
+ // Handle item selection
80
+ function handleItemClick(ev: Event, item: any, index: number) {
81
+ let itemId = item[identityFieldName];
82
+ // console.log('handleItemClick', { itemId, multiple });
83
+ if (!multiple) {
84
+ if (selectedSet.has(itemId)) {
85
+ selectedSet.delete(itemId);
86
+ setResult(undefined);
87
+ } else {
88
+ selectedSet.add(itemId);
89
+ setResult(itemId);
90
+ }
91
+ closeDialog();
92
+ } else {
93
+ // Multiple selection: add/remove item
94
+ if (selectedSet.has(itemId)) {
95
+ selectedSet.delete(itemId);
96
+ } else {
97
+ if (selectedSet.size >= maxlength) {
98
+ showToast({ msg: maxlengthMsg });
99
+ } else {
100
+ selectedSet.add(itemId);
101
+ }
102
+ }
103
+ if (selectedSet.size) {
104
+ setDialogTitle(`Selected (${selectedSet.size})`);
105
+ } else {
106
+ setDialogTitle('');
107
+ }
108
+ }
109
+ }
110
+
111
+ function handleOkClick(ev: MouseEvent | TouchEvent) {
112
+ if (multiple) {
113
+ closeDialog(Array.from(selectedSet));
114
+ }
115
+ }
116
+
117
+ function handleSearch(txt: string) {
118
+ searchText = txt;
119
+ }
120
+
121
+ onMount(() => {
122
+ setOnOkClick(handleOkClick);
123
+ setHeaderSnippet(headerSnippet);
124
+ });
125
+ </script>
126
+
127
+ {#snippet headerSnippet()}
128
+ <ButtonSearch className="rounded-full !p-3 " onSearch={handleSearch} />
129
+ {/snippet}
130
+
131
+ <div class="mb-4 h-full min-h-96" bind:clientHeight={containerHeight}>
132
+ <VirtualScrollingList items={filteredRecords} {containerHeight} itemHeight={56}>
133
+ {#snippet itemSnippet(item: any, index: number)}
134
+ {@const isSelected = selectedSet.has(item[identityFieldName])}
135
+
136
+ {#if itemTileSnippet}
137
+ <ButtonListItem onClick={(ev) => handleItemClick(ev, item, index)}>
138
+ {@render itemTileSnippet(item, index)}
139
+ {#if hasCheckbox}
140
+ <div>
141
+ <Icon
142
+ path={isSelected ? checkboxIconPath : uncheckboxIconPath}
143
+ className="w-5 h-5 {checkboxClassName} {isSelected
144
+ ? `text-primary ${checkboxIconClassName}`
145
+ : `text-neutral-400 ${uncheckboxIconClassName}`}"
146
+ />
147
+ </div>
148
+ {/if}
149
+
150
+ {#if hasArrow}
151
+ <div>
152
+ <Icon path={arrowIconPath} className="w-5 h-5 text-neutral-500 {arrowClassName} " />
153
+ </div>
154
+ {/if}
155
+ </ButtonListItem>
156
+ {:else}
157
+ <ButtonListItem
158
+ className="h-full"
159
+ onClick={(ev) => handleItemClick(ev, item, index)}
160
+ title={item[titleFieldName]}
161
+ subtitle={item[subtitleFieldName || ''] || ''}
162
+ {hasCheckbox}
163
+ {hasArrow}
164
+ isChecked={isSelected}
165
+ {checkboxIconPath}
166
+ {uncheckboxIconPath}
167
+ {checkboxIconClassName}
168
+ {uncheckboxIconClassName}
169
+ {checkboxClassName}
170
+ {arrowIconPath}
171
+ {arrowClassName}
172
+ {hasIcon}
173
+ {isCircularIcon}
174
+ {circularIconClassName}
175
+ {iconClassName}
176
+ {iconPath}
177
+ />
178
+ {/if}
179
+ {/snippet}
180
+ </VirtualScrollingList>
181
+ </div>
@@ -0,0 +1,5 @@
1
+ import type { DialogExports, PickerDialogProps } from '../../types';
2
+ type $$ComponentProps = DialogExports & PickerDialogProps;
3
+ declare const PickerDialog: import("svelte").Component<$$ComponentProps, {}, "">;
4
+ type PickerDialog = ReturnType<typeof PickerDialog>;
5
+ export default PickerDialog;
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import { showToast } from '../../../../../services/index.js';
3
+ import type { InputValue } from '../../../input';
4
+ import TextField from '../../../input/components/text-field/text-field.svelte';
5
+ import type { DialogExports } from '../../types';
6
+
7
+ type PropsType = {
8
+ value?: InputValue;
9
+ label?: string;
10
+ name?: string;
11
+ maxlength?: number;
12
+ className?: string;
13
+ autofocus?: boolean;
14
+ required?: boolean;
15
+ };
16
+
17
+ let {
18
+ value = $bindable(''),
19
+ label,
20
+ name,
21
+ maxlength,
22
+ className,
23
+ autofocus,
24
+ required,
25
+ setOnOkClick,
26
+ setResult,
27
+ closeDialog,
28
+ ...props
29
+ }: PropsType & DialogExports = $props();
30
+
31
+ function handleSubmit(ev: SubmitEvent) {
32
+ ev?.preventDefault();
33
+ value = ((value as string) || '').trim();
34
+ if (required && !value) {
35
+ showToast({ msg: 'This is a required field!' });
36
+ } else {
37
+ setResult(value);
38
+ closeDialog();
39
+ }
40
+ }
41
+ </script>
42
+
43
+ <div class="p-6">
44
+ <form id="text-field-dialog-form" onsubmit={handleSubmit}>
45
+ <TextField
46
+ {...props}
47
+ {label}
48
+ {name}
49
+ {maxlength}
50
+ {className}
51
+ {autofocus}
52
+ {required}
53
+ bind:value
54
+ />
55
+ </form>
56
+ </div>
@@ -0,0 +1,15 @@
1
+ import type { InputValue } from '../../../input';
2
+ import type { DialogExports } from '../../types';
3
+ type PropsType = {
4
+ value?: InputValue;
5
+ label?: string;
6
+ name?: string;
7
+ maxlength?: number;
8
+ className?: string;
9
+ autofocus?: boolean;
10
+ required?: boolean;
11
+ };
12
+ type $$ComponentProps = PropsType & DialogExports;
13
+ declare const TextFieldDialog: import("svelte").Component<$$ComponentProps, {}, "value">;
14
+ type TextFieldDialog = ReturnType<typeof TextFieldDialog>;
15
+ export default TextFieldDialog;
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import { showToast } from '../../../../../services/index.js';
3
+ import type { InputValue } from '../../../input';
4
+ import TextareaField from '../../../input/components/textarea-field/textarea-field.svelte';
5
+ import type { DialogExports } from '../../types';
6
+
7
+ type PropsType = {
8
+ value?: InputValue;
9
+ label?: string;
10
+ name?: string;
11
+ maxlength?: number;
12
+ className?: string;
13
+ autofocus?: boolean;
14
+ required?: boolean;
15
+ };
16
+
17
+ let {
18
+ value = $bindable(''),
19
+ label,
20
+ name,
21
+ maxlength,
22
+ className,
23
+ autofocus,
24
+ required,
25
+ setOnOkClick,
26
+ setResult,
27
+ closeDialog,
28
+ ...props
29
+ }: PropsType & DialogExports = $props();
30
+
31
+ function handleSubmit(ev: SubmitEvent) {
32
+ ev?.preventDefault();
33
+ value = ((value as string) || '').trim();
34
+ if (required && !value) {
35
+ showToast({ msg: 'This is a required field!' });
36
+ } else {
37
+ setResult(value);
38
+ closeDialog();
39
+ }
40
+ }
41
+ </script>
42
+
43
+ <div class="p-6">
44
+ <form id="textarea-field-dialog-form" onsubmit={handleSubmit}>
45
+ <TextareaField
46
+ {...props}
47
+ {label}
48
+ {name}
49
+ {maxlength}
50
+ {className}
51
+ {autofocus}
52
+ {required}
53
+ bind:value
54
+ />
55
+ </form>
56
+ </div>
@@ -0,0 +1,15 @@
1
+ import type { InputValue } from '../../../input';
2
+ import type { DialogExports } from '../../types';
3
+ type PropsType = {
4
+ value?: InputValue;
5
+ label?: string;
6
+ name?: string;
7
+ maxlength?: number;
8
+ className?: string;
9
+ autofocus?: boolean;
10
+ required?: boolean;
11
+ };
12
+ type $$ComponentProps = PropsType & DialogExports;
13
+ declare const TextareaFieldDialog: import("svelte").Component<$$ComponentProps, {}, "value">;
14
+ type TextareaFieldDialog = ReturnType<typeof TextareaFieldDialog>;
15
+ export default TextareaFieldDialog;
@@ -0,0 +1,9 @@
1
+ export { default as CropperDialog } from './components/cropper-dialog/cropper-dialog.svelte';
2
+ export { default as Dialog } from './components/dialog/dialog.svelte';
3
+ export { default as LoadingDialog } from './components/loading-dialog/loading-dialog.svelte';
4
+ export { default as MsgDialog } from './components/msg-dialog/msg-dialog.svelte';
5
+ export { default as NumberFieldDialog } from './components/number-field-dialog/number-field-dialog.svelte';
6
+ export { default as PickerDialog } from './components/picker-dialog/picker-dialog.svelte';
7
+ export { default as TextFieldDialog } from './components/text-field-dialog/text-field-dialog.svelte';
8
+ export { default as TextareaFieldDialog } from './components/textarea-field-dialog/textarea-field-dialog.svelte';
9
+ export * from './types';
@@ -0,0 +1,9 @@
1
+ export { default as CropperDialog } from './components/cropper-dialog/cropper-dialog.svelte';
2
+ export { default as Dialog } from './components/dialog/dialog.svelte';
3
+ export { default as LoadingDialog } from './components/loading-dialog/loading-dialog.svelte';
4
+ export { default as MsgDialog } from './components/msg-dialog/msg-dialog.svelte';
5
+ export { default as NumberFieldDialog } from './components/number-field-dialog/number-field-dialog.svelte';
6
+ export { default as PickerDialog } from './components/picker-dialog/picker-dialog.svelte';
7
+ export { default as TextFieldDialog } from './components/text-field-dialog/text-field-dialog.svelte';
8
+ export { default as TextareaFieldDialog } from './components/textarea-field-dialog/textarea-field-dialog.svelte';
9
+ export * from './types';
@@ -0,0 +1,105 @@
1
+ import type { DialogSizeEnum, OutputImageFormats } from "../../../services";
2
+ import type { Snippet } from "svelte";
3
+ export type CropperDialogProps = {
4
+ outputAspectRatio?: number;
5
+ outputWidth?: number;
6
+ outputFormat?: OutputImageFormats;
7
+ outputQuality?: number;
8
+ outputType?: 'file' | 'base64';
9
+ inputImageFile?: File | null;
10
+ className?: string;
11
+ };
12
+ export type DialogCloseButtonClickFunction = (ev: MouseEvent | TouchEvent) => Promise<boolean>;
13
+ export type DialogSize = DialogSizeEnum.XS | DialogSizeEnum.SM | DialogSizeEnum.MD | DialogSizeEnum.LG | DialogSizeEnum.XL | DialogSizeEnum.FULL;
14
+ export type DialogProps = {
15
+ backdropClassName?: string;
16
+ bodyClassName?: string;
17
+ bodyComponent?: any;
18
+ cancelable?: boolean;
19
+ scrollable?: boolean;
20
+ children?: Snippet;
21
+ className?: string;
22
+ component?: any;
23
+ containerClassName?: string;
24
+ footerClassName?: string;
25
+ footerCloseButtonClassName?: string;
26
+ footerCloseButtonLabel?: string;
27
+ footerOkButtonClassName?: string;
28
+ footerOkButtonEnabled?: boolean;
29
+ footerOkButtonSpinner?: boolean;
30
+ footerOkButtonType?: 'button' | 'submit' | 'reset';
31
+ footerOkButtonLabel?: string;
32
+ hasFooter?: boolean;
33
+ hasFooterCloseButton?: boolean;
34
+ hasFooterOkButton?: boolean;
35
+ hasFooterShadow?: boolean;
36
+ hasHeader?: boolean;
37
+ hasHeaderBack?: boolean;
38
+ hasHeaderClose?: boolean;
39
+ hasHeaderShadow?: boolean;
40
+ hasSubtitle?: boolean;
41
+ hasTitle?: boolean;
42
+ hasHeaderOkButton?: boolean;
43
+ headerBackButtonClassName?: string;
44
+ headerBackIconClassName?: string;
45
+ headerBackIconPath?: string;
46
+ headerClassName?: string;
47
+ headerCloseButtonClassName?: string;
48
+ headerCloseIconClassName?: string;
49
+ headerCloseIconPath?: string;
50
+ headerOkButtonClassName?: string;
51
+ headerOkButtonLabel?: string;
52
+ headerOkButtonIconPath?: string;
53
+ headerOkButtonIconClassName?: string;
54
+ id?: string;
55
+ onClose?: () => void;
56
+ onCloseClick?: DialogCloseButtonClickFunction;
57
+ onOkClick?: (ev: MouseEvent | TouchEvent, options: DialogExports) => void;
58
+ onResult?: (value: any) => void;
59
+ onData?: (data: any) => void;
60
+ props?: any;
61
+ size?: DialogSize;
62
+ targetFormId?: string;
63
+ subtitle?: string;
64
+ subtitleClassName?: string;
65
+ title?: string;
66
+ titleClassName?: string;
67
+ };
68
+ export type DialogExports = {
69
+ closeDialog: (result?: any) => void;
70
+ setResult: (result: any) => void;
71
+ setOkSpinner: (enable: boolean) => void;
72
+ setOkEnabled: (enable: boolean) => void;
73
+ setOnOkClick: (onclick: (ev: MouseEvent | TouchEvent) => void) => void;
74
+ setOnCloseClick: (onclick: DialogCloseButtonClickFunction) => void;
75
+ setOnData: (listener: (data: any) => void) => void;
76
+ setHeaderSnippet: (snippet: Snippet) => void;
77
+ setFooterSnippet: (snippet: Snippet) => void;
78
+ setDialogTitle: (title: string) => void;
79
+ };
80
+ export type PickerDialogProps = {
81
+ items?: string[] | any[];
82
+ multiple?: boolean;
83
+ value?: any;
84
+ identityFieldName?: string;
85
+ titleFieldName?: string;
86
+ searchFieldName?: string;
87
+ subtitleFieldName?: string;
88
+ hasCheckbox?: boolean;
89
+ hasArrow?: boolean;
90
+ maxlength?: number;
91
+ maxlengthMsg?: string;
92
+ checkboxIconPath?: string;
93
+ uncheckboxIconPath?: string;
94
+ checkboxIconClassName?: string;
95
+ uncheckboxIconClassName?: string;
96
+ checkboxClassName?: string;
97
+ arrowIconPath?: string;
98
+ arrowClassName?: string;
99
+ hasIcon?: boolean;
100
+ iconPath?: string;
101
+ iconClassName?: string;
102
+ isCircularIcon?: boolean;
103
+ circularIconClassName?: string;
104
+ itemTileSnippet?: Snippet<[item: any, index: number]>;
105
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,110 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ type PositionType = 'left' | 'right' | 'top' | 'bottom';
5
+
6
+ type PropsType = {
7
+ backdropClassName?: string;
8
+ children?: Snippet;
9
+ className?: string;
10
+ containerClassName?: string;
11
+ drawerClassName?: string;
12
+ floatingSnippet?: Snippet;
13
+ id?: string;
14
+ position?: PositionType;
15
+ };
16
+
17
+ let {
18
+ backdropClassName = '',
19
+ children,
20
+ className = '',
21
+ containerClassName = '',
22
+ drawerClassName = '',
23
+ floatingSnippet,
24
+ id = '',
25
+ position = 'left'
26
+ }: PropsType = $props();
27
+
28
+ let isPlaced: boolean = $state(false);
29
+ let isOpened: boolean = $state(false);
30
+
31
+ function handelBackdropClick() {
32
+ toggleDrawer();
33
+ }
34
+
35
+ export function toggleDrawer() {
36
+ if (!isPlaced) {
37
+ openDrawer();
38
+ } else {
39
+ closeDrawer();
40
+ }
41
+ }
42
+
43
+ export function openDrawer() {
44
+ isPlaced = true;
45
+ setTimeout(() => {
46
+ isOpened = true;
47
+ }, 0);
48
+ }
49
+
50
+ export function closeDrawer() {
51
+ isOpened = false;
52
+ setTimeout(() => {
53
+ isPlaced = false;
54
+ }, 300);
55
+ }
56
+ </script>
57
+
58
+ {#if isPlaced}
59
+ <div {id} class="relative z-30 {containerClassName}" role="dialog" aria-modal="true">
60
+ <!-- Backdrop -->
61
+ <div
62
+ class="fixed inset-0 bg-neutral-900/10 bg-neutral-50/10 transition-opacity ease-linear duration-300 {isOpened
63
+ ? 'opacity-100'
64
+ : 'opacity-0'} {backdropClassName}"
65
+ aria-hidden="true"
66
+ ></div>
67
+ <!-- Drawer -->
68
+ <div
69
+ class="fixed inset-0 flex
70
+ {position === 'right' ? 'flex-row' : ''}
71
+ {position === 'right' ? 'flex-row-reverse' : ''}
72
+ {position === 'top' ? 'flex-col' : ''}
73
+ {position === 'bottom' ? 'flex-col-reverse' : ''}"
74
+ >
75
+ <div
76
+ class="relative flex transition ease-in-out duration-300 transform
77
+ {position === 'right' ? 'flex-row' : ''}
78
+ {position === 'right' ? 'flex-row-reverse' : ''}
79
+ {position === 'top' ? 'flex-col' : ''}
80
+ {position === 'bottom' ? 'flex-col-reverse' : ''}
81
+ {position === 'left' ? (isOpened ? 'translate-x-0' : '-translate-x-full') : ''}
82
+ {position === 'right' ? (isOpened ? 'translate-x-0' : 'translate-x-full') : ''}
83
+ {position === 'top' ? (isOpened ? 'translate-y-0' : '-translate-y-full') : ''}
84
+ {position === 'bottom' ? (isOpened ? 'translate-y-0' : 'translate-y-full') : ''}
85
+ {drawerClassName} "
86
+ >
87
+ <div
88
+ class="grow w-72 bg-white dark:bg-neutral-800 text-neutral-800 dark:text-neutral-200 border-neutral-100 dark:border-neutral-700 {className}"
89
+ >
90
+ {#if children}
91
+ {@render children()}
92
+ {/if}
93
+ </div>
94
+ <div class=" ">
95
+ {#if floatingSnippet}
96
+ {@render floatingSnippet()}
97
+ {/if}
98
+ </div>
99
+ </div>
100
+
101
+ <button
102
+ class="flex-grow cursor-auto"
103
+ type="button"
104
+ onclick={handelBackdropClick}
105
+ aria-label="Close drawer"
106
+ title="Close drawer"
107
+ ></button>
108
+ </div>
109
+ </div>
110
+ {/if}
@@ -0,0 +1,19 @@
1
+ import type { Snippet } from 'svelte';
2
+ type PositionType = 'left' | 'right' | 'top' | 'bottom';
3
+ type PropsType = {
4
+ backdropClassName?: string;
5
+ children?: Snippet;
6
+ className?: string;
7
+ containerClassName?: string;
8
+ drawerClassName?: string;
9
+ floatingSnippet?: Snippet;
10
+ id?: string;
11
+ position?: PositionType;
12
+ };
13
+ declare const Drawer: import("svelte").Component<PropsType, {
14
+ toggleDrawer: () => void;
15
+ openDrawer: () => void;
16
+ closeDrawer: () => void;
17
+ }, "">;
18
+ type Drawer = ReturnType<typeof Drawer>;
19
+ export default Drawer;
@@ -0,0 +1,2 @@
1
+ import Drawer from "./components/drawer/drawer.svelte";
2
+ export { Drawer };
@@ -0,0 +1,2 @@
1
+ import Drawer, {} from "./components/drawer/drawer.svelte";
2
+ export { Drawer };
@@ -0,0 +1,27 @@
1
+ <script lang="ts">
2
+ type IconPropsType = {
3
+ path: string;
4
+ className?: string;
5
+ sizeClassName?: string;
6
+ size?: number;
7
+ fill?: string;
8
+ viewBox?: string;
9
+ color?: string;
10
+ };
11
+
12
+ let {
13
+ path,
14
+ className = '',
15
+ size = 24,
16
+ fill = 'currentColor',
17
+ viewBox = '',
18
+ color,
19
+ sizeClassName = 'w-6 h-6'
20
+ }: IconPropsType = $props();
21
+
22
+ let viewBoxDerived = $derived(viewBox || `0 0 ${size} ${size}`);
23
+ </script>
24
+
25
+ <svg class="align-middle {sizeClassName} {className}" viewBox={viewBoxDerived} fill={color || fill}>
26
+ <path d={path} />
27
+ </svg>
@@ -0,0 +1,12 @@
1
+ type IconPropsType = {
2
+ path: string;
3
+ className?: string;
4
+ sizeClassName?: string;
5
+ size?: number;
6
+ fill?: string;
7
+ viewBox?: string;
8
+ color?: string;
9
+ };
10
+ declare const Icon: import("svelte").Component<IconPropsType, {}, "">;
11
+ type Icon = ReturnType<typeof Icon>;
12
+ export default Icon;
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import Icon from '../icon/icon.svelte';
3
+
4
+ type Props = {
5
+ iconPath?: string;
6
+ iconClassName?: string;
7
+ circleClassName?: string;
8
+ };
9
+
10
+ let { circleClassName, iconPath, iconClassName = 'w-5 h-5 text-primary' }: Props = $props();
11
+ </script>
12
+
13
+ <div
14
+ class="aspect-square bg-primary-100 rounded-full w-10 h-10 flex items-center justify-center {circleClassName}"
15
+ >
16
+ <Icon path={iconPath!} className=" text-primary {iconClassName}" />
17
+ </div>
@@ -0,0 +1,8 @@
1
+ type Props = {
2
+ iconPath?: string;
3
+ iconClassName?: string;
4
+ circleClassName?: string;
5
+ };
6
+ declare const IconCircle: import("svelte").Component<Props, {}, "">;
7
+ type IconCircle = ReturnType<typeof IconCircle>;
8
+ export default IconCircle;
@@ -0,0 +1,4 @@
1
+ import Icon from './components/icon/icon.svelte';
2
+ import IconCircle from './components/icon-circle/icon-circle.svelte';
3
+ export * from './services/icon-path-service.js';
4
+ export { Icon, IconCircle, };
@@ -0,0 +1,4 @@
1
+ import Icon from './components/icon/icon.svelte';
2
+ import IconCircle from './components/icon-circle/icon-circle.svelte';
3
+ export * from './services/icon-path-service.js';
4
+ export { Icon, IconCircle, };