@cloudparker/moldex.js 4.1.6 → 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 -209
  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,7 +0,0 @@
1
- type Props = {
2
- spinnerClassName?: string;
3
- className?: string;
4
- };
5
- declare const Loading: import("svelte").Component<Props, {}, "">;
6
- type Loading = ReturnType<typeof Loading>;
7
- export default Loading;
@@ -1,60 +0,0 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
-
4
- type Props = {
5
- items: any[];
6
- itemHeight: number;
7
- containerHeight: number;
8
- itemSnippet: Snippet<[item: any, index: number]>;
9
- buffer?: number;
10
- };
11
-
12
- let {
13
- items = [],
14
- itemHeight,
15
- containerHeight,
16
- buffer = 2,
17
- itemSnippet,
18
- ...rest
19
- }: Props = $props();
20
-
21
- let scrollTop = $state(0);
22
-
23
- let totalHeight = $derived.by(() => items.length * itemHeight);
24
-
25
- let visibleStart = $derived.by(() => Math.max(Math.floor(scrollTop / itemHeight) - buffer, 0));
26
- let visibleEnd = $derived.by(() =>
27
- Math.min(Math.ceil((scrollTop + containerHeight) / itemHeight) + buffer, items.length)
28
- );
29
-
30
- let paddingTop = $derived.by(() => visibleStart * itemHeight);
31
- let paddingBottom = $derived.by(() => (items.length - visibleEnd) * itemHeight);
32
-
33
- let visibleItems = $derived.by(() => items.slice(visibleStart, visibleEnd));
34
-
35
- function handleScroll(event: Event) {
36
- scrollTop = (event.currentTarget as HTMLElement).scrollTop;
37
- }
38
- </script>
39
-
40
- <div
41
- {...rest}
42
- class="virtual-list"
43
- style="height: {containerHeight}px; overflow-y: auto; position: relative;"
44
- onscroll={handleScroll}
45
- >
46
- <div style="padding-top: {paddingTop}px; padding-bottom: {paddingBottom}px;">
47
- {#each visibleItems as item, idx (visibleStart + idx)}
48
- <div class="virtual-item" style="height: {itemHeight}px;">
49
- {@render itemSnippet?.(item, visibleStart + idx)}
50
- </div>
51
- {/each}
52
- </div>
53
- </div>
54
-
55
- <style>
56
- .virtual-item {
57
- width: 100%;
58
- box-sizing: border-box;
59
- }
60
- </style>
@@ -1,11 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- type Props = {
3
- items: any[];
4
- itemHeight: number;
5
- containerHeight: number;
6
- itemSnippet: Snippet<[item: any, index: number]>;
7
- buffer?: number;
8
- };
9
- declare const VirtualScrollingList: import("svelte").Component<Props, {}, "">;
10
- type VirtualScrollingList = ReturnType<typeof VirtualScrollingList>;
11
- export default VirtualScrollingList;
@@ -1,4 +0,0 @@
1
- import ContentArea from './components/content-area/content-area.svelte';
2
- import Loading from './components/loading/loading.svelte';
3
- import VirtualScrolling from './components/virtual-scrolling/virtual-scrolling-list.svelte';
4
- export { ContentArea, Loading, VirtualScrolling };
@@ -1,9 +0,0 @@
1
- import ContentArea from './components/content-area/content-area.svelte'
2
- import Loading from './components/loading/loading.svelte';
3
- import VirtualScrolling from './components/virtual-scrolling/virtual-scrolling-list.svelte';
4
-
5
- export {
6
- ContentArea,
7
- Loading,
8
- VirtualScrolling
9
- }
@@ -1,63 +0,0 @@
1
- <script module lang="ts">
2
- export type CropperDialogPropsType = {
3
- outputAspectRatio?: number;
4
- outputWidth?: number;
5
- outputFormat?: OutputImageFormats;
6
- outputQuality?: number;
7
- outputType?: 'file' | 'base64';
8
- inputImageFile?: File | null;
9
- className?: string;
10
- };
11
- </script>
12
-
13
- <script lang="ts">
14
- import EasyCropperjs from '@cloudparker/easy-cropperjs-svelte';
15
- import type { DialogExports } from '../dialog/dialog.svelte';
16
- import { OutputImageFormatEnum, type OutputImageFormats } from '../../../../../services';
17
-
18
- let {
19
- outputWidth,
20
- outputFormat = OutputImageFormatEnum.WEBP,
21
- outputQuality = 0.8,
22
- outputType = 'file',
23
- inputImageFile,
24
- outputAspectRatio,
25
- className,
26
- setOnOkClick,
27
- setResult,
28
- closeDialog,
29
- setOnData,
30
- ...props
31
- }: CropperDialogPropsType & DialogExports = $props();
32
-
33
- let easyCropperjsRef: EasyCropperjs | null = $state(null);
34
-
35
- setOnOkClick(async () => {
36
- console.log('setOnOkClick', easyCropperjsRef);
37
- if (easyCropperjsRef) {
38
- let targetOutoutImageFormat: any = outputFormat.split('/')[1] || 'webp';
39
- let res = await easyCropperjsRef.crop({
40
- outputWidth,
41
- outputFormat: targetOutoutImageFormat,
42
- outputQuality,
43
- outputType
44
- });
45
- console.log('res', res);
46
- }
47
- });
48
-
49
- function handleCropped(result: any) {
50
- console.log('handleCropped', result);
51
- setResult(result);
52
- closeDialog();
53
- }
54
- </script>
55
-
56
- <div class="h-full w-full overflow-hidden {className}">
57
- <EasyCropperjs
58
- bind:this={easyCropperjsRef}
59
- {inputImageFile}
60
- onCrop={handleCropped}
61
- {outputAspectRatio}
62
- />
63
- </div>
@@ -1,15 +0,0 @@
1
- export type CropperDialogPropsType = {
2
- outputAspectRatio?: number;
3
- outputWidth?: number;
4
- outputFormat?: OutputImageFormats;
5
- outputQuality?: number;
6
- outputType?: 'file' | 'base64';
7
- inputImageFile?: File | null;
8
- className?: string;
9
- };
10
- import type { DialogExports } from '../dialog/dialog.svelte';
11
- import { type OutputImageFormats } from '../../../../../services';
12
- type $$ComponentProps = CropperDialogPropsType & DialogExports;
13
- declare const CropperDialog: import("svelte").Component<$$ComponentProps, {}, "">;
14
- type CropperDialog = ReturnType<typeof CropperDialog>;
15
- export default CropperDialog;
@@ -1,455 +0,0 @@
1
- <script module lang="ts">
2
- import ButtonBack from '../../../button/components/button-back/button-back.svelte';
3
- import ButtonClose from '../../../button/components/button-close-icon/button-close-icon.svelte';
4
-
5
- /**
6
- * Return a Promise<boolean> value, whic=h will indiacate dialog to close or not.
7
- * false -> Dont close Dialog
8
- * true -> Close dialog
9
- */
10
- type DialogCloseButtonClickFunction = (ev: MouseEvent | TouchEvent) => Promise<boolean>;
11
-
12
- export type DialogSize =
13
- | DialogSizeEnum.XS
14
- | DialogSizeEnum.SM
15
- | DialogSizeEnum.MD
16
- | DialogSizeEnum.LG
17
- | DialogSizeEnum.XL
18
- | DialogSizeEnum.FULL;
19
-
20
- export type DialogProps = {
21
- backdropClassName?: string;
22
- bodyClassName?: string;
23
- bodyComponent?: any;
24
- cancelable?: boolean;
25
- scrollable?: boolean;
26
- children?: Snippet;
27
- className?: string;
28
- component?: any;
29
- containerClassName?: string;
30
- footerClassName?: string;
31
- footerCloseButtonClassName?: string;
32
- footerCloseButtonLabel?: string;
33
- footerOkButtonClassName?: string;
34
- footerOkButtonEnabled?: boolean;
35
- footerOkButtonSpinner?: boolean;
36
- footerOkButtonType?: 'button' | 'submit' | 'reset';
37
- footerOkButtonLabel?: string;
38
- hasFooter?: boolean;
39
- hasFooterCloseButton?: boolean;
40
- hasFooterOkButton?: boolean;
41
- hasFooterShadow?: boolean;
42
- hasHeader?: boolean;
43
- hasHeaderBack?: boolean;
44
- hasHeaderClose?: boolean;
45
- hasHeaderShadow?: boolean;
46
- hasSubtitle?: boolean;
47
- hasTitle?: boolean;
48
- hasHeaderOkButton?: boolean;
49
- headerBackButtonClassName?: string;
50
- headerBackIconClassName?: string;
51
- headerBackIconPath?: string;
52
- headerClassName?: string;
53
- headerCloseButtonClassName?: string;
54
- headerCloseIconClassName?: string;
55
- headerCloseIconPath?: string;
56
- headerOkButtonClassName?: string;
57
- headerOkButtonLabel?: string;
58
- headerOkButtonIconPath?: string;
59
- headerOkButtonIconClassName?: string;
60
- id?: string;
61
- onClose?: () => void;
62
- onCloseClick?: DialogCloseButtonClickFunction;
63
- onOkClick?: (ev: MouseEvent | TouchEvent, options: DialogExports) => void;
64
- onResult?: (value: any) => void;
65
- onData?: (data: any) => void;
66
- props?: any;
67
- size?: DialogSize;
68
- targetFormId?: string;
69
- subtitle?: string;
70
- subtitleClassName?: string;
71
- title?: string;
72
- titleClassName?: string;
73
- };
74
-
75
- export type DialogExports = {
76
- closeDialog: (result?: any) => void;
77
- setResult: (result: any) => void;
78
- setOkSpinner: (enable: boolean) => void;
79
- setOkEnabled: (enable: boolean) => void;
80
- setOnOkClick: (onclick: (ev: MouseEvent | TouchEvent) => void) => void;
81
- setOnCloseClick: (onclick: DialogCloseButtonClickFunction) => void;
82
- setOnData: (listener: (data: any) => void) => void;
83
- setHeaderSnippet: (snippet: Snippet) => void;
84
- setFooterSnippet: (snippet: Snippet) => void;
85
- setDialogTitle: (title: string) => void;
86
- };
87
- </script>
88
-
89
- <script lang="ts">
90
- import Button from '../../../button/components/button/button.svelte';
91
- import { type Component as ComponetType, type Snippet } from 'svelte';
92
- import { mdiArrowLeft, mdiClose } from '../../../icon';
93
- import { DialogSizeEnum, isMobileScreen } from '../../../../../services';
94
-
95
- let {
96
- backdropClassName = '',
97
- bodyClassName = '',
98
- bodyComponent,
99
- cancelable = true,
100
- scrollable = true,
101
- children,
102
- className = '',
103
- component,
104
- containerClassName = '',
105
- footerClassName = '',
106
- footerCloseButtonClassName = '',
107
- footerCloseButtonLabel = 'Close',
108
- footerOkButtonClassName = '',
109
- footerOkButtonEnabled = true,
110
- footerOkButtonSpinner = false,
111
- footerOkButtonType = 'button',
112
- footerOkButtonLabel = 'Save',
113
- hasFooter = false,
114
- hasFooterCloseButton = false,
115
- hasFooterOkButton = false,
116
- hasFooterShadow = false,
117
- hasHeader = false,
118
- hasHeaderOkButton = false,
119
-
120
- hasHeaderShadow = false,
121
- hasSubtitle = false,
122
- hasTitle = false,
123
- headerOkButtonClassName = '',
124
- headerOkButtonLabel = '',
125
- headerOkButtonIconPath = '',
126
- headerOkButtonIconClassName = '',
127
- headerBackButtonClassName = '',
128
- headerBackIconClassName = '',
129
- headerBackIconPath = mdiArrowLeft,
130
- headerClassName = '',
131
- headerCloseButtonClassName = '',
132
- headerCloseIconClassName = '',
133
- headerCloseIconPath = mdiClose,
134
- hasHeaderBack = isMobileScreen(),
135
- hasHeaderClose = !isMobileScreen(),
136
- size = isMobileScreen() ? DialogSizeEnum.FULL : DialogSizeEnum.SM,
137
- id = '',
138
- onClose,
139
- onCloseClick,
140
- onOkClick,
141
- onResult,
142
- onData,
143
- props = {},
144
- targetFormId = undefined,
145
- subtitle = '',
146
- subtitleClassName = '',
147
- title = '',
148
- titleClassName = ''
149
- }: DialogProps = $props();
150
-
151
- let dialogExports: DialogExports = {
152
- closeDialog,
153
- setResult,
154
- setOkSpinner,
155
- setOkEnabled,
156
- setOnCloseClick,
157
- setOnOkClick,
158
- setOnData,
159
- setHeaderSnippet,
160
- setFooterSnippet,
161
- setDialogTitle
162
- };
163
-
164
- let isPlaced: boolean = $state(false);
165
- let isOpened: boolean = $state(false);
166
-
167
- let headerSnippet: Snippet | null = $state(null);
168
- let footerSnippet: Snippet | null = $state(null);
169
-
170
- let CustomComponent: ComponetType | null = $derived(component);
171
-
172
- let BodyComponent: ComponetType | null = $derived(bodyComponent);
173
-
174
- let result: any;
175
-
176
- let xsSizeClassName = 'w-64';
177
- let smSizeClassName = 'w-96';
178
- let mdSizeClassName = 'w-1/3';
179
- let lgSizeClassName = 'w-1/2';
180
- let xlSizeClassName = 'w-7/10';
181
- let fullSizeClassName = 'fixed inset-0 w-screen h-screen ';
182
-
183
- let screenSizeClassNameMap: { [key: string]: string } = {
184
- xs: xsSizeClassName,
185
- sm: smSizeClassName,
186
- md: mdSizeClassName,
187
- lg: lgSizeClassName,
188
- xl: xlSizeClassName,
189
- full: fullSizeClassName
190
- };
191
-
192
- let customTitle: string = $state('');
193
-
194
- export function toggleDialog() {
195
- if (isOpened) {
196
- closeDialog();
197
- } else {
198
- openDialog();
199
- }
200
- }
201
-
202
- export function openDialog() {
203
- isPlaced = true;
204
-
205
- // Disable background scroll
206
- document.body.style.overflow = 'hidden';
207
-
208
- setTimeout(() => {
209
- isOpened = true;
210
- }, 0);
211
- }
212
-
213
- export function closeDialog(value?: any): Promise<any> {
214
- return new Promise((resolve) => {
215
- isOpened = false;
216
-
217
- // Re-enable background scroll
218
- document.body.style.overflow = '';
219
-
220
- setTimeout(() => {
221
- isPlaced = false;
222
- onClose && onClose();
223
- onResult && onResult(result || value);
224
- resolve(result);
225
- }, 300);
226
- });
227
- }
228
-
229
- export function setResult(value: any) {
230
- result = value;
231
- }
232
-
233
- export function setOkEnabled(value: boolean) {
234
- footerOkButtonEnabled = value;
235
- }
236
-
237
- export function setOkSpinner(value: boolean) {
238
- footerOkButtonSpinner = value;
239
- }
240
-
241
- export function setOnData(listener: (data: any) => void) {
242
- onData = listener;
243
- }
244
-
245
- export function setOnOkClick(
246
- onclick: (event: MouseEvent | TouchEvent, options: DialogExports) => void
247
- ) {
248
- onOkClick = onclick;
249
- }
250
-
251
- export function setOnCloseClick(onclick: DialogCloseButtonClickFunction) {
252
- onCloseClick = onclick;
253
- }
254
-
255
- export function postData(data: any) {
256
- onData && onData(data);
257
- }
258
-
259
- export function setHeaderSnippet(snippet: Snippet) {
260
- headerSnippet = snippet;
261
- }
262
-
263
- export function setFooterSnippet(snippet: Snippet) {
264
- footerSnippet = snippet;
265
- }
266
-
267
- export function setDialogTitle(dialogTitle: string) {
268
- customTitle = dialogTitle;
269
- }
270
-
271
- function handleBackdropClick() {
272
- if (cancelable) {
273
- closeDialog();
274
- }
275
- }
276
-
277
- async function handleClose(ev: MouseEvent | TouchEvent) {
278
- if (onCloseClick) {
279
- if (await onCloseClick(ev)) {
280
- closeDialog();
281
- }
282
- } else {
283
- closeDialog();
284
- }
285
- }
286
-
287
- function handleKeyDown(event: KeyboardEvent) {
288
- if (event.key === 'Escape' || event.key === 'Esc') {
289
- if (cancelable) {
290
- event.stopPropagation();
291
- closeDialog();
292
- }
293
- }
294
- }
295
-
296
- function handleOkClick(event: MouseEvent | TouchEvent) {
297
- if (onOkClick) {
298
- onOkClick(event, dialogExports);
299
- }
300
- }
301
- </script>
302
-
303
- {#snippet dialogContent()}
304
- <!-- svelte-ignore a11y_click_events_have_key_events -->
305
- <!-- svelte-ignore a11y_no_static_element_interactions -->
306
- <div
307
- tabindex="-1"
308
- class="relative flex flex-col transform overflow-hidden bg-neutral-50 dark:bg-neutral-800 text-left transition-all outline-none {size ==
309
- DialogSizeEnum.FULL
310
- ? 'max-h-dvh max-w-dvw'
311
- : 'max-h-[90dvh] max-w-[90dvw]'} {screenSizeClassNameMap[size]} {isOpened
312
- ? 'ease-out duration-300 opacity-100 translate-y-0 sm:scale-100'
313
- : 'ease-in duration-200 opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95'} {size ==
314
- DialogSizeEnum.FULL
315
- ? ''
316
- : 'rounded-lg shadow-xl dark:shadow-black'} {className}"
317
- onclick={(ev: MouseEvent) => ev.stopPropagation()}
318
- >
319
- {#if CustomComponent?.length == 2}
320
- <CustomComponent {...{ ...props }} {...{ ...dialogExports }} />
321
- {:else}
322
- {#if hasHeader}
323
- <div
324
- class="flex items-center gap-4 w-full cursor-default py-2 {hasHeaderShadow
325
- ? 'border-b shadow-sm'
326
- : ''} {headerClassName}"
327
- >
328
- <div>
329
- {#if hasHeaderBack}
330
- <ButtonBack
331
- iconPath={headerBackIconPath}
332
- iconClassName={headerBackIconClassName}
333
- className={headerBackButtonClassName}
334
- onClick={handleClose}
335
- />
336
- {/if}
337
- </div>
338
- <div class="py-2 flex-grow">
339
- {#if hasTitle}
340
- <div class="text-xl text-neutral-800 dark:text-neutral-300 {titleClassName}">
341
- {@html customTitle || title || ''}
342
- </div>
343
- {/if}
344
- {#if hasSubtitle}
345
- <div class="text-sm text-gray-500 dark:text-neutral-500 {subtitleClassName}">
346
- {subtitle || ''}
347
- </div>
348
- {/if}
349
- </div>
350
- {#if headerSnippet}
351
- {@render headerSnippet()}
352
- {/if}
353
- {#if hasHeaderOkButton}
354
- <Button
355
- appearance="border"
356
- className=" {headerOkButtonClassName}"
357
- iconPath={headerOkButtonIconPath}
358
- iconClassName=" text-primary {headerOkButtonIconClassName}"
359
- onClick={handleClose}
360
- />
361
- {/if}
362
- {#if hasHeaderClose}
363
- <ButtonClose
364
- className={headerCloseButtonClassName}
365
- iconPath={headerCloseIconPath}
366
- iconClassName={headerCloseIconClassName}
367
- onClick={handleClose}
368
- />
369
- {/if}
370
- </div>
371
- {/if}
372
-
373
- <div class="flex-grow {scrollable ? 'overflow-y-auto' : ''} {bodyClassName}">
374
- {#if children}
375
- {@render children()}
376
- {:else if BodyComponent?.length == 2}
377
- <BodyComponent {...{ ...props }} {...{ ...dialogExports }} />
378
- {/if}
379
- </div>
380
-
381
- {#if hasFooter}
382
- <div
383
- class="flex items-center justify-end p-4 gap-4 {hasFooterShadow
384
- ? 'border-t'
385
- : ''} {footerClassName}"
386
- >
387
- <div class="flex-grow"></div>
388
- <div>
389
- {#if footerSnippet}
390
- {@render footerSnippet()}
391
- {/if}
392
- </div>
393
- {#if hasFooterOkButton}
394
- <Button
395
- id="btn-ok"
396
- form={targetFormId}
397
- type={targetFormId ? 'submit' : footerOkButtonType}
398
- appearance="primary"
399
- className=" {footerOkButtonClassName}"
400
- label={footerOkButtonLabel}
401
- disabled={!footerOkButtonEnabled}
402
- spinner={footerOkButtonSpinner}
403
- spinnerClassName="text-white w-4 h-4"
404
- onClick={handleOkClick}
405
- />
406
- {/if}
407
- {#if hasFooterCloseButton}
408
- <Button
409
- id="btn-close"
410
- type="button"
411
- appearance="base"
412
- className=" {footerCloseButtonClassName}"
413
- label={footerCloseButtonLabel}
414
- onClick={handleClose}
415
- />
416
- {/if}
417
- </div>
418
- {/if}
419
- {/if}
420
- </div>
421
- {/snippet}
422
-
423
- {#snippet dialog()}
424
- <div
425
- {id}
426
- class="relative z-20 {containerClassName}"
427
- aria-labelledby="modal-title"
428
- role="dialog"
429
- aria-modal="true"
430
- >
431
- <div
432
- id="backdrop"
433
- class="fixed inset-0 bg-gray-500/20 dark:bg-gray-900/30 transition-opacity backdrop-blur-sm {isOpened
434
- ? 'ease-out duration-300 opacity-100'
435
- : 'ease-in duration-200 opacity-0'} {backdropClassName}"
436
- aria-hidden="true"
437
- ></div>
438
-
439
- <!-- svelte-ignore a11y_no_static_element_interactions -->
440
- <!-- svelte-ignore a11y_click_events_have_key_events -->
441
- <div
442
- class="fixed inset-0 z-20 w-screen cursor-auto"
443
- onclick={handleBackdropClick}
444
- onkeydown={handleKeyDown}
445
- >
446
- <div class="flex min-h-full justify-center items-center">
447
- {@render dialogContent()}
448
- </div>
449
- </div>
450
- </div>
451
- {/snippet}
452
-
453
- {#if isPlaced}
454
- {@render dialog()}
455
- {/if}