firstly 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/esm/SqlDatabase/FF_LogToConsole.js +9 -14
  3. package/esm/carbone/CarboneController.js +2 -1
  4. package/esm/changeLog/index.d.ts +0 -5
  5. package/esm/core/helper.d.ts +2 -0
  6. package/esm/core/helper.js +3 -0
  7. package/esm/core/index.d.ts +0 -0
  8. package/esm/core/index.js +5 -0
  9. package/esm/core/tailwind.d.ts +21 -0
  10. package/esm/core/tailwind.js +22 -0
  11. package/esm/core/tryCatch.d.ts +44 -0
  12. package/esm/core/tryCatch.js +34 -0
  13. package/esm/cron/server/index.js +1 -1
  14. package/esm/feedback/FeedbackController.js +3 -2
  15. package/esm/feedback/index.d.ts +7 -2
  16. package/esm/feedback/index.js +1 -2
  17. package/esm/feedback/server/index.d.ts +0 -5
  18. package/esm/feedback/server/index.js +1 -1
  19. package/esm/formats/strings.js +2 -2
  20. package/esm/index.d.ts +16 -0
  21. package/esm/index.js +13 -0
  22. package/esm/svelte/FF_Repo.svelte.d.ts +0 -2
  23. package/esm/svelte/FF_Repo.svelte.js +1 -17
  24. package/esm/svelte/helpers/debounce.js +1 -1
  25. package/esm/svelte/index.d.ts +2 -24
  26. package/esm/svelte/index.js +2 -22
  27. package/esm/{ui → svelte/ui}/Icon.svelte +1 -1
  28. package/esm/virtual/StateDemoEnum.d.ts +3 -3
  29. package/esm/virtual/StateDemoEnum.js +3 -3
  30. package/esm/virtual/UIEntity.js +1 -2
  31. package/package.json +6 -24
  32. package/esm/bin/cmd.d.ts +0 -1
  33. package/esm/bin/cmd.js +0 -638
  34. package/esm/feedback/ui/DialogIssue.svelte +0 -149
  35. package/esm/feedback/ui/DialogIssue.svelte.d.ts +0 -22
  36. package/esm/feedback/ui/DialogIssues.svelte +0 -114
  37. package/esm/feedback/ui/DialogIssues.svelte.d.ts +0 -22
  38. package/esm/feedback/ui/DialogMilestones.svelte +0 -43
  39. package/esm/feedback/ui/DialogMilestones.svelte.d.ts +0 -20
  40. package/esm/feedback/ui/Feedback.svelte +0 -16
  41. package/esm/feedback/ui/Feedback.svelte.d.ts +0 -18
  42. package/esm/internals/FF_Entity.d.ts +0 -2
  43. package/esm/internals/FF_Fields.d.ts +0 -11
  44. package/esm/internals/FF_Fields.js +0 -144
  45. package/esm/internals/cellsBuildor.d.ts +0 -47
  46. package/esm/internals/cellsBuildor.js +0 -141
  47. package/esm/internals/helper.d.ts +0 -49
  48. package/esm/internals/helper.js +0 -162
  49. package/esm/internals/index.d.ts +0 -78
  50. package/esm/internals/index.js +0 -45
  51. package/esm/internals/storeItem.d.ts +0 -19
  52. package/esm/internals/storeItem.js +0 -190
  53. package/esm/internals/storeList.d.ts +0 -34
  54. package/esm/internals/storeList.js +0 -108
  55. package/esm/internals/theme.d.ts +0 -4
  56. package/esm/internals/theme.js +0 -4
  57. package/esm/server/index.d.ts +0 -52
  58. package/esm/server/index.js +0 -87
  59. package/esm/svelte/FF_Cell.svelte +0 -103
  60. package/esm/svelte/FF_Cell.svelte.d.ts +0 -33
  61. package/esm/svelte/FF_Cell_Caption.svelte +0 -20
  62. package/esm/svelte/FF_Cell_Caption.svelte.d.ts +0 -31
  63. package/esm/svelte/FF_Cell_Display.svelte +0 -61
  64. package/esm/svelte/FF_Cell_Display.svelte.d.ts +0 -29
  65. package/esm/svelte/FF_Cell_Edit.svelte +0 -104
  66. package/esm/svelte/FF_Cell_Edit.svelte.d.ts +0 -32
  67. package/esm/svelte/FF_Cell_Error.svelte +0 -20
  68. package/esm/svelte/FF_Cell_Error.svelte.d.ts +0 -31
  69. package/esm/svelte/FF_Cell_Hint.svelte +0 -20
  70. package/esm/svelte/FF_Cell_Hint.svelte.d.ts +0 -31
  71. package/esm/svelte/FF_Config.svelte +0 -29
  72. package/esm/svelte/FF_Config.svelte.d.ts +0 -9
  73. package/esm/svelte/FF_Form.svelte +0 -155
  74. package/esm/svelte/FF_Form.svelte.d.ts +0 -37
  75. package/esm/svelte/FF_Grid.svelte +0 -257
  76. package/esm/svelte/FF_Grid.svelte.d.ts +0 -37
  77. package/esm/svelte/FF_Layout.svelte +0 -62
  78. package/esm/svelte/FF_Layout.svelte.d.ts +0 -31
  79. package/esm/svelte/actions/intersection.d.ts +0 -6
  80. package/esm/svelte/actions/intersection.js +0 -17
  81. package/esm/svelte/customField.d.ts +0 -69
  82. package/esm/svelte/customField.js +0 -4
  83. package/esm/svelte/dialog/DialogManagement.svelte +0 -98
  84. package/esm/svelte/dialog/DialogManagement.svelte.d.ts +0 -18
  85. package/esm/svelte/dialog/DialogPrimitive.svelte +0 -156
  86. package/esm/svelte/dialog/DialogPrimitive.svelte.d.ts +0 -38
  87. package/esm/svelte/dialog/dialog.d.ts +0 -58
  88. package/esm/svelte/dialog/dialog.js +0 -130
  89. package/esm/svelte/ff_Config.svelte.d.ts +0 -91
  90. package/esm/svelte/ff_Config.svelte.js +0 -111
  91. package/esm/svelte/firstly.css +0 -14
  92. package/esm/svelte/helpers.d.ts +0 -30
  93. package/esm/svelte/helpers.js +0 -38
  94. package/esm/svelte/tryCatch.d.ts +0 -12
  95. package/esm/svelte/tryCatch.js +0 -18
  96. package/esm/sveltekit/server/index.d.ts +0 -5
  97. package/esm/sveltekit/server/index.js +0 -24
  98. package/esm/ui/Button.svelte +0 -90
  99. package/esm/ui/Button.svelte.d.ts +0 -11
  100. package/esm/ui/Clipboardable.svelte +0 -25
  101. package/esm/ui/Clipboardable.svelte.d.ts +0 -12
  102. package/esm/ui/Field.svelte +0 -391
  103. package/esm/ui/Field.svelte.d.ts +0 -40
  104. package/esm/ui/FieldGroup.svelte +0 -117
  105. package/esm/ui/FieldGroup.svelte.d.ts +0 -44
  106. package/esm/ui/Grid.svelte +0 -262
  107. package/esm/ui/Grid.svelte.d.ts +0 -57
  108. package/esm/ui/Grid2.svelte +0 -290
  109. package/esm/ui/Grid2.svelte.d.ts +0 -57
  110. package/esm/ui/GridLoading.svelte +0 -58
  111. package/esm/ui/GridLoading.svelte.d.ts +0 -23
  112. package/esm/ui/GridPaginate.svelte +0 -69
  113. package/esm/ui/GridPaginate.svelte.d.ts +0 -23
  114. package/esm/ui/GridPaginate2.svelte +0 -25
  115. package/esm/ui/GridPaginate2.svelte.d.ts +0 -7
  116. package/esm/ui/Loading.svelte +0 -16
  117. package/esm/ui/Loading.svelte.d.ts +0 -31
  118. package/esm/ui/Tooltip.svelte +0 -45
  119. package/esm/ui/Tooltip.svelte.d.ts +0 -32
  120. package/esm/ui/dialog/DialogForm.svelte +0 -76
  121. package/esm/ui/dialog/DialogForm.svelte.d.ts +0 -21
  122. package/esm/ui/dialog/DialogManagement.svelte +0 -96
  123. package/esm/ui/dialog/DialogManagement.svelte.d.ts +0 -26
  124. package/esm/ui/dialog/DialogPrimitive.svelte +0 -90
  125. package/esm/ui/dialog/DialogPrimitive.svelte.d.ts +0 -38
  126. package/esm/ui/dialog/FormEditAction.svelte +0 -62
  127. package/esm/ui/dialog/FormEditAction.svelte.d.ts +0 -31
  128. package/esm/ui/dialog/dialog.d.ts +0 -60
  129. package/esm/ui/dialog/dialog.js +0 -100
  130. package/esm/ui/index.d.ts +0 -6
  131. package/esm/ui/index.js +0 -20
  132. package/esm/ui/internals/FieldContainer.svelte +0 -39
  133. package/esm/ui/internals/FieldContainer.svelte.d.ts +0 -18
  134. package/esm/ui/internals/Input.svelte +0 -143
  135. package/esm/ui/internals/Input.svelte.d.ts +0 -37
  136. package/esm/ui/internals/Textarea.svelte +0 -66
  137. package/esm/ui/internals/Textarea.svelte.d.ts +0 -33
  138. package/esm/ui/internals/select/MultiSelectMelt.svelte +0 -260
  139. package/esm/ui/internals/select/MultiSelectMelt.svelte.d.ts +0 -32
  140. package/esm/ui/internals/select/Select2.svelte +0 -88
  141. package/esm/ui/internals/select/Select2.svelte.d.ts +0 -12
  142. package/esm/ui/internals/select/SelectMelt.svelte +0 -289
  143. package/esm/ui/internals/select/SelectMelt.svelte.d.ts +0 -40
  144. package/esm/ui/internals/select/SelectRadio.svelte +0 -43
  145. package/esm/ui/internals/select/SelectRadio.svelte.d.ts +0 -27
  146. package/esm/ui/link/Link.svelte +0 -33
  147. package/esm/ui/link/Link.svelte.d.ts +0 -33
  148. package/esm/ui/link/LinkPlus.svelte +0 -63
  149. package/esm/ui/link/LinkPlus.svelte.d.ts +0 -9
  150. package/esm/utils/tailwind.d.ts +0 -2
  151. package/esm/utils/tailwind.js +0 -3
  152. package/esm/utils/transition.d.ts +0 -9
  153. package/esm/utils/transition.js +0 -33
  154. /package/esm/{internals → core}/BaseEnum.d.ts +0 -0
  155. /package/esm/{internals → core}/BaseEnum.js +0 -0
  156. /package/esm/{internals → core}/FF_Entity.js +0 -0
  157. /package/esm/{internals → core}/common.d.ts +0 -0
  158. /package/esm/{internals → core}/common.js +0 -0
  159. /package/esm/{utils → core}/types.d.ts +0 -0
  160. /package/esm/{utils → core}/types.js +0 -0
  161. /package/esm/{ui → svelte/ui}/Icon.svelte.d.ts +0 -0
  162. /package/esm/{ui → svelte/ui}/LibIcon.d.ts +0 -0
  163. /package/esm/{ui → svelte/ui}/LibIcon.js +0 -0
@@ -1,62 +0,0 @@
1
- <script lang="ts" generics="entityType = unknown">
2
- import { untrack } from 'svelte'
3
-
4
- import { FF_Form, FF_Grid } from './'
5
- import type { FF_Repo } from './'
6
- import type { Layout } from './customField'
7
-
8
- interface Props<entityType = unknown> {
9
- r: FF_Repo<entityType>
10
- layout?: Layout<entityType>
11
- classes_goups?: string // TODO: Make a themeLayout
12
- }
13
-
14
- let { r, layout, classes_goups }: Props<entityType> = $props()
15
-
16
- const layoutToUse: Layout<entityType> = $derived(layout ?? r.getLayout())
17
-
18
- let selectedThing: string | undefined = $state(undefined)
19
- $effect(() => {
20
- untrack(() => {
21
- selectedThing = layoutToUse.groups?.[0]?.key
22
- })
23
- })
24
- </script>
25
-
26
- {#if layoutToUse.type === 'detail'}
27
- <FF_Form {r} groups={layoutToUse.groups} classes={{ groups: classes_goups }}></FF_Form>
28
- {:else if layoutToUse.type === 'grid'}
29
- <FF_Grid {r}></FF_Grid>
30
- {:else if layoutToUse.type === 'tab'}
31
- <div role="tablist" class="tabs-lift tabs">
32
- {#each layoutToUse.groups ?? [] as group (group.key)}
33
- <input
34
- type="radio"
35
- name="my-tabs"
36
- role="tab"
37
- class="tab"
38
- checked={selectedThing === group.key}
39
- onchange={() => (selectedThing = group.key)}
40
- aria-label={group.caption}
41
- />
42
- <div role="tabpanel" class="tab-content border-base-300 bg-base-100 p-6">
43
- <FF_Form {r} groups={[group]} show={{ title: false }}></FF_Form>
44
- </div>
45
- {/each}
46
- </div>
47
- {:else if layoutToUse.type === 'accordion'}
48
- {#each layoutToUse.groups ?? [] as group (group.key)}
49
- <div class="collapse-arrow collapse bg-base-100">
50
- <input
51
- type="radio"
52
- name="my-accordion"
53
- checked={selectedThing === group.key}
54
- onchange={() => selectedThing === group.key}
55
- />
56
- <div class="collapse-title text-xl font-medium">{group.caption}</div>
57
- <div class="collapse-content">
58
- <FF_Form {r} groups={[group]} show={{ title: false }}></FF_Form>
59
- </div>
60
- </div>
61
- {/each}
62
- {/if}
@@ -1,31 +0,0 @@
1
- import type { FF_Repo } from './';
2
- import type { Layout } from './customField';
3
- interface Props<entityType = unknown> {
4
- r: FF_Repo<entityType>;
5
- layout?: Layout<entityType>;
6
- classes_goups?: string;
7
- }
8
- declare function $$render<entityType = unknown>(): {
9
- props: Props<entityType>;
10
- exports: {};
11
- bindings: "";
12
- slots: {};
13
- events: {};
14
- };
15
- declare class __sveltets_Render<entityType = unknown> {
16
- props(): ReturnType<typeof $$render<entityType>>['props'];
17
- events(): ReturnType<typeof $$render<entityType>>['events'];
18
- slots(): ReturnType<typeof $$render<entityType>>['slots'];
19
- bindings(): "";
20
- exports(): {};
21
- }
22
- interface $$IsomorphicComponent {
23
- new <entityType = unknown>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<entityType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<entityType>['props']>, ReturnType<__sveltets_Render<entityType>['events']>, ReturnType<__sveltets_Render<entityType>['slots']>> & {
24
- $$bindings?: ReturnType<__sveltets_Render<entityType>['bindings']>;
25
- } & ReturnType<__sveltets_Render<entityType>['exports']>;
26
- <entityType = unknown>(internal: unknown, props: ReturnType<__sveltets_Render<entityType>['props']> & {}): ReturnType<__sveltets_Render<entityType>['exports']>;
27
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
28
- }
29
- declare const FfLayout: $$IsomorphicComponent;
30
- type FfLayout<entityType = unknown> = InstanceType<typeof FfLayout<entityType>>;
31
- export default FfLayout;
@@ -1,6 +0,0 @@
1
- import type { Action } from 'svelte/action';
2
- interface Attributes {
3
- onintersecting: (e: CustomEvent<IntersectionObserverEntry>) => void;
4
- }
5
- export declare const intersection: Action<HTMLElement, IntersectionObserverInit | undefined, Attributes>;
6
- export {};
@@ -1,17 +0,0 @@
1
- import { getScrollParent } from '@layerstack/utils';
2
- // to bring back to https://github.com/techniq/layerstack/blob/main/packages/svelte-actions/src/lib/observer.ts to have correct typing in Svelte 5
3
- export const intersection = (node, options = {}) => {
4
- const scrollParent = getScrollParent(node);
5
- // Use viewport (null) if scrollParent = `<body>`
6
- const root = scrollParent === document.body ? null : scrollParent;
7
- const observer = new IntersectionObserver((entries, observer) => {
8
- const entry = entries[0];
9
- node.dispatchEvent(new CustomEvent('intersecting', { detail: entry }));
10
- }, { root, ...options });
11
- observer.observe(node);
12
- return {
13
- destroy() {
14
- observer.disconnect();
15
- },
16
- };
17
- };
@@ -1,69 +0,0 @@
1
- import type { Component } from 'svelte';
2
- import type { FieldMetadata } from 'remult';
3
- export type FieldMode = 'edit' | 'display';
4
- export type CustomFieldDefaultProps<valueType = unknown, entityType = unknown> = {
5
- uid?: string;
6
- field: FieldMetadata<valueType, entityType>;
7
- value: valueType;
8
- error?: string;
9
- };
10
- type ComponentObject<valueType = unknown, entityType = unknown> = {
11
- component: Component<CustomFieldDefaultProps<valueType, entityType>>;
12
- props?: Record<string, unknown>;
13
- };
14
- export type CustomFieldComponent<valueType = unknown, entityType = unknown> = ComponentObject<valueType, entityType>['component'] | ComponentObject<valueType, entityType>;
15
- export declare function isComponentObject<valueType = unknown, entityType = unknown>(value: CustomFieldComponent<valueType, entityType>): value is ComponentObject<valueType, entityType>;
16
- type DynamicFieldDefaultProps<valueType = unknown, entityType = unknown> = CustomFieldDefaultProps<valueType, entityType> & {
17
- mode: FieldMode;
18
- };
19
- export type DynamicCustomField = <valueType = unknown, entityType = unknown>(infos: DynamicFieldDefaultProps<valueType, entityType>) => CustomFieldComponent<valueType, entityType> | undefined;
20
- export type getLayout<entityType = unknown> = (o?: {
21
- key?: string;
22
- type?: Layout['type'];
23
- }) => Layout<entityType> | undefined;
24
- export type getLayoutStrict<entityType = unknown> = (o?: {
25
- key?: string;
26
- type?: Layout['type'];
27
- }) => Layout<entityType>;
28
- export type Layout<entityType = unknown> = {
29
- key: string;
30
- type: 'grid' | 'detail' | 'tab' | 'accordion';
31
- groups: FieldGroup<entityType>[];
32
- };
33
- export type FieldGroup<entityType = unknown> = {
34
- key: string;
35
- fields: FieldMetadata<unknown, entityType>[];
36
- caption?: string;
37
- hint?: string;
38
- class?: string;
39
- };
40
- export type CellMetadata<valueType = unknown, entityType = unknown> = {
41
- key?: string;
42
- caption?: string;
43
- /** if nothing, it's just a "group" */
44
- type?: 'form';
45
- mode?: 'display' | 'edit';
46
- field?: FieldMetadata<valueType, entityType>;
47
- value?: valueType;
48
- ui?: {
49
- component?: {
50
- caption?: 'show' | 'hide' | 'remove';
51
- label?: 'show' | 'hide' | 'remove';
52
- error?: 'show' | 'hide' | 'remove';
53
- edit?: CustomFieldComponent<valueType, entityType>;
54
- hint?: 'show' | 'hide' | 'remove';
55
- display?: CustomFieldComponent<valueType, entityType>;
56
- };
57
- placeholder?: string;
58
- step?: string | number | undefined;
59
- hint?: string;
60
- mobile?: Style;
61
- } & Style;
62
- cells?: CellMetadata<valueType, entityType>[];
63
- };
64
- type Style = {
65
- width?: number;
66
- marginLeft?: number;
67
- marginRight?: number;
68
- };
69
- export {};
@@ -1,4 +0,0 @@
1
- import { isOfType } from './helpers';
2
- export function isComponentObject(value) {
3
- return isOfType(value, 'component');
4
- }
@@ -1,98 +0,0 @@
1
- <script lang="ts">
2
- import { FF_Form } from '../'
3
- import Button from '../../ui/Button.svelte'
4
- import { dialog } from './dialog'
5
- import DialogPrimitive from './DialogPrimitive.svelte'
6
-
7
- $: dialogSorted = $dialog.sort((a, b) => a.id - b.id)
8
- </script>
9
-
10
- {#each dialogSorted as toShow}
11
- {#if toShow.type === 'confirm'}
12
- <DialogPrimitive
13
- detail={toShow.detail}
14
- open
15
- on:change={() => dialog.close(toShow.id, { success: false })}
16
- >
17
- {@html toShow.children}
18
- <svelte:fragment slot="actions">
19
- <Button class="text-white" onclick={() => dialog.close(toShow.id, { success: true })}
20
- >Confirmer</Button
21
- >
22
- </svelte:fragment>
23
- </DialogPrimitive>
24
- {:else if toShow.type === 'confirmDelete'}
25
- <DialogPrimitive
26
- detail={toShow.detail}
27
- open
28
- on:change={() => dialog.close(toShow.id, { success: false })}
29
- >
30
- {@html toShow.children}
31
- <svelte:fragment slot="actions">
32
- <Button class="btn-error" onclick={() => dialog.close(toShow.id, { success: true })}>
33
- Confirmer
34
- </Button>
35
- </svelte:fragment>
36
- </DialogPrimitive>
37
- <!-- {:else if toShow.type === 'insert' || toShow.type === 'update' || toShow.type === 'view'}
38
- <DialogForm {toShow}></DialogForm> -->
39
- {:else if toShow.type === 'fform'}
40
- <DialogPrimitive
41
- detail={toShow.detail}
42
- open
43
- classes={{ root: toShow.classes?.root }}
44
- on:change={() => dialog.close(toShow.id, { success: false })}
45
- >
46
- <FF_Form
47
- r={toShow.r!}
48
- show={{ title: false }}
49
- defaults={toShow.defaults}
50
- onSaved={(item) => dialog.close(toShow.id, { success: true, item })}
51
- ></FF_Form>
52
- </DialogPrimitive>
53
- {:else if toShow.component && toShow.children}
54
- <DialogPrimitive
55
- detail={toShow.detail}
56
- open
57
- on:change={() => dialog.close(toShow.id, { success: false })}
58
- >
59
- <svelte:component this={toShow.component} {...toShow.props} dialogId={toShow.id}>
60
- {#if toShow.children}
61
- {@html toShow.children}
62
- {/if}
63
- </svelte:component>
64
- </DialogPrimitive>
65
- {:else if toShow.component}
66
- <DialogPrimitive
67
- detail={toShow.detail}
68
- open
69
- classes={{ root: toShow.classes?.root }}
70
- on:change={() => dialog.close(toShow.id, { success: false })}
71
- >
72
- <svelte:component this={toShow.component} {...toShow.props} dialogId={toShow.id}
73
- ></svelte:component>
74
- </DialogPrimitive>
75
- {:else}
76
- <DialogPrimitive
77
- detail={toShow.detail}
78
- open
79
- on:change={() => dialog.close(toShow.id, { success: false })}
80
- >
81
- <div class="grid gap-2">
82
- <p>Hey 🫵 developer, you are missing a few things 🤡!</p>
83
- <p>Or use use one of the custom built in dialog like</p>
84
-
85
- <pre class="mt-2 bg-base-300 p-2 text-xs">await dialog.confirmDelete('The Car')</pre>
86
-
87
- <p>Or pass you own component</p>
88
- <pre class="mt-2 bg-base-300 p-2 text-xs">{`await dialog.show({
89
- detail: { caption: 'Interlocuteur' },
90
- component: CreateCarForm,
91
- props: { isEdit: false },
92
- })`}</pre>
93
-
94
- <p>Good luck 🚀</p>
95
- </div>
96
- </DialogPrimitive>
97
- {/if}
98
- {/each}
@@ -1,18 +0,0 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const DialogManagement: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
- [evt: string]: CustomEvent<any>;
16
- }, {}, {}, string>;
17
- type DialogManagement = InstanceType<typeof DialogManagement>;
18
- export default DialogManagement;
@@ -1,156 +0,0 @@
1
- <script lang="ts">
2
- import { createDialog } from '@melt-ui/svelte'
3
- import { createEventDispatcher } from 'svelte'
4
- import { fade } from 'svelte/transition'
5
-
6
- import { LibIcon_Cross, type BaseItemLight } from '../../internals'
7
- import Icon from '../../ui/Icon.svelte'
8
- import LinkPlus from '../../ui/link/LinkPlus.svelte'
9
- import { flyAndScale } from '../../utils/transition'
10
-
11
- export let detail: BaseItemLight | undefined = undefined
12
- export let open: boolean = false
13
- export let classes: { root?: string } = {}
14
-
15
- const {
16
- elements: { trigger, overlay, content, title: localTitle, description, close, portalled },
17
- states: { open: localOpen },
18
- } = createDialog({
19
- forceVisible: true,
20
- defaultOpen: open,
21
- closeOnOutsideClick: false,
22
- onOpenChange: (open) => {
23
- dispatchChange('yop there')
24
- return open.next
25
- },
26
- })
27
-
28
- const dispatch = createEventDispatcher()
29
-
30
- function dispatchChange(_data: any) {
31
- dispatch('change', _data)
32
- }
33
- </script>
34
-
35
- <div {...$portalled} use:$portalled.action data-ff-dialog-root class={classes.root}>
36
- {#if $localOpen}
37
- <div
38
- {...$overlay}
39
- use:$overlay.action
40
- data-ff-dialog-overlay
41
- transition:fade={{ duration: 150 }}
42
- ></div>
43
- <div
44
- data-ff-dialog-content
45
- transition:flyAndScale={{
46
- duration: 150,
47
- y: 8,
48
- start: 0.96,
49
- }}
50
- {...$content}
51
- use:$content.action
52
- >
53
- <div data-ff-dialog-header>
54
- <h2 {...$localTitle} use:$localTitle.action data-ff-dialog-title>
55
- <div data-ff-dialog-header-content>
56
- <LinkPlus item={detail}></LinkPlus>
57
- <button {...$close} use:$close.action aria-label="close" data-ff-dialog-close>
58
- <Icon data={LibIcon_Cross}></Icon>
59
- </button>
60
- </div>
61
- </h2>
62
- </div>
63
-
64
- <div data-ff-dialog-body>
65
- <slot />
66
-
67
- {#if $$slots.actions}
68
- <div data-ff-dialog-actions>
69
- <slot name="actions" />
70
- </div>
71
- {/if}
72
- </div>
73
- </div>
74
- {/if}
75
- </div>
76
-
77
- <style>
78
- [data-ff-dialog-root] {
79
- position: fixed;
80
- top: 0;
81
- z-index: 50;
82
- display: flex;
83
- height: 100%;
84
- width: 100%;
85
- align-items: center;
86
- justify-content: center;
87
- }
88
-
89
- [data-ff-dialog-overlay] {
90
- position: fixed;
91
- inset: 0;
92
- z-index: 40;
93
- background-color: var(--ff-dialog-overlay);
94
- backdrop-filter: blur(2px);
95
- }
96
-
97
- [data-ff-dialog-content] {
98
- position: relative;
99
- z-index: 40;
100
- max-height: 90vh;
101
- overflow: auto;
102
- border-radius: 0.75rem;
103
- border: 1px solid rgb(20 20 20 / 0.6);
104
- background-color: var(--ff-dialog-content);
105
- padding: 1.5rem;
106
- box-shadow:
107
- 0 10px 15px -3px rgb(0 0 0 / 0.1),
108
- 0 4px 6px -4px rgb(0 0 0 / 0.1);
109
- }
110
-
111
- [data-ff-dialog-header] {
112
- width: 100%;
113
- margin-bottom: 1rem;
114
- }
115
-
116
- [data-ff-dialog-title] {
117
- margin: 0;
118
- font-size: 1.125rem;
119
- line-height: 1.75rem;
120
- font-weight: 500;
121
- }
122
-
123
- [data-ff-dialog-header-content] {
124
- display: flex;
125
- align-items: center;
126
- justify-content: space-between;
127
- gap: 1rem;
128
- }
129
-
130
- [data-ff-dialog-close] {
131
- display: inline-flex;
132
- align-items: center;
133
- justify-content: center;
134
- height: 2.5rem;
135
- width: 2.5rem;
136
- min-height: 0;
137
- border-radius: 9999px;
138
- border: none;
139
- background-color: transparent;
140
- }
141
-
142
- [data-ff-dialog-body] {
143
- display: flex;
144
- height: 100%;
145
- min-width: 25rem;
146
- flex-direction: column;
147
- gap: 1rem;
148
- }
149
-
150
- [data-ff-dialog-actions] {
151
- margin-top: 0.5rem;
152
- display: flex;
153
- align-items: flex-end;
154
- justify-content: flex-end;
155
- }
156
- </style>
@@ -1,38 +0,0 @@
1
- import { type BaseItemLight } from '../../internals';
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
16
- default: any;
17
- } ? Props extends Record<string, never> ? any : {
18
- children?: any;
19
- } : {});
20
- declare const DialogPrimitive: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
21
- detail?: BaseItemLight | undefined;
22
- open?: boolean;
23
- classes?: {
24
- root?: string;
25
- };
26
- }, {
27
- default: {};
28
- actions: {};
29
- }>, {
30
- change: CustomEvent<any>;
31
- } & {
32
- [evt: string]: CustomEvent<any>;
33
- }, {
34
- default: {};
35
- actions: {};
36
- }, {}, string>;
37
- type DialogPrimitive = InstanceType<typeof DialogPrimitive>;
38
- export default DialogPrimitive;
@@ -1,58 +0,0 @@
1
- import type { SvelteComponent } from 'svelte';
2
- import { type Repository } from 'remult';
3
- import { type BaseItemLight, type CellsInput, type StoreItem } from '../../internals';
4
- import type { FF_Repo } from '../../svelte';
5
- export type DialogClasses = {
6
- /**
7
- * for example `overflow-auto` to have a scrollbar in the dialog
8
- */
9
- root?: string;
10
- formGrid?: FormGrid;
11
- };
12
- export type FormGrid = 'grid-cols-1' | 'grid-cols-2' | 'grid-cols-3' | 'grid-cols-4' | 'grid-cols-1 lg:grid-cols-4';
13
- export type DialogMetaData<entityType = any> = {
14
- detail?: BaseItemLight;
15
- repo?: Repository<entityType>;
16
- store?: StoreItem<entityType>;
17
- cells?: CellsInput<entityType>;
18
- defaults?: Partial<entityType>;
19
- classes?: DialogClasses;
20
- component?: new (...args: any[]) => SvelteComponent;
21
- props?: any;
22
- children?: any;
23
- reThrow?: boolean;
24
- wDelete?: boolean;
25
- focusKey?: string;
26
- topicPrefixText?: string;
27
- r?: FF_Repo<entityType>;
28
- };
29
- type ResultClose<entityType = any> = {
30
- success: boolean;
31
- item?: entityType;
32
- };
33
- export type DialogType = 'custom' | 'confirm' | 'confirmDelete' | 'fform';
34
- export type DialogFormType<entityType> = {
35
- cells?: CellsInput<entityType>;
36
- defaults?: Partial<entityType>;
37
- classes?: DialogClasses;
38
- reThrow?: boolean;
39
- wDelete?: boolean;
40
- topicPrefixText?: string;
41
- focusKey?: string;
42
- };
43
- export type DialogMetaDataInternal<entityType = any> = DialogMetaData<entityType> & {
44
- id: number;
45
- type: DialogType;
46
- resolve: (result: ResultClose) => void;
47
- };
48
- export declare const dialog: {
49
- confirm: (topic: string, text: string, icon?: string) => Promise<ResultClose<any>>;
50
- confirmDelete: (topic: string) => Promise<ResultClose<any>>;
51
- form: <entityType>(type: "insert" | "update" | "view", topic: string, repo: Repository<entityType>, settings: DialogFormType<entityType>) => Promise<ResultClose<any>>;
52
- fform: <entityType>(r: FF_Repo<entityType>, settings: DialogFormType<entityType>) => Promise<ResultClose<any>>;
53
- show: (dialog: DialogMetaData) => Promise<ResultClose<any>>;
54
- close: (id: number, result: ResultClose) => void;
55
- closeAll: () => void;
56
- subscribe: (this: void, run: import("svelte/store").Subscriber<DialogMetaDataInternal<any>[]>, invalidate?: () => void) => import("svelte/store").Unsubscriber;
57
- };
58
- export {};