firstly 0.2.1 → 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 (210) hide show
  1. package/CHANGELOG.md +65 -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 -10
  5. package/esm/{internals → core}/BaseEnum.d.ts +1 -1
  6. package/esm/core/FF_Entity.js +5 -0
  7. package/esm/core/helper.d.ts +2 -0
  8. package/esm/core/helper.js +3 -0
  9. package/esm/core/index.d.ts +0 -0
  10. package/esm/core/index.js +5 -0
  11. package/esm/core/tailwind.d.ts +21 -0
  12. package/esm/core/tailwind.js +22 -0
  13. package/esm/core/tryCatch.d.ts +44 -0
  14. package/esm/core/tryCatch.js +34 -0
  15. package/esm/cron/server/index.js +1 -1
  16. package/esm/feedback/FeedbackController.js +3 -2
  17. package/esm/feedback/index.d.ts +7 -2
  18. package/esm/feedback/index.js +1 -2
  19. package/esm/feedback/server/index.d.ts +0 -5
  20. package/esm/feedback/server/index.js +1 -1
  21. package/esm/formats/strings.js +2 -2
  22. package/esm/index.d.ts +16 -0
  23. package/esm/index.js +13 -0
  24. package/esm/svelte/FF_Repo.svelte.d.ts +9 -2
  25. package/esm/svelte/FF_Repo.svelte.js +40 -17
  26. package/esm/svelte/class/SP.svelte.js +14 -2
  27. package/esm/svelte/helpers/debounce.js +1 -1
  28. package/esm/svelte/index.d.ts +2 -24
  29. package/esm/svelte/index.js +2 -22
  30. package/esm/{ui → svelte/ui}/Icon.svelte +1 -1
  31. package/esm/virtual/StateDemoEnum.d.ts +3 -3
  32. package/esm/virtual/StateDemoEnum.js +3 -3
  33. package/esm/virtual/UIEntity.js +1 -2
  34. package/package.json +8 -39
  35. package/esm/auth/AuthController.d.ts +0 -58
  36. package/esm/auth/AuthController.js +0 -114
  37. package/esm/auth/Entities.d.ts +0 -47
  38. package/esm/auth/Entities.js +0 -182
  39. package/esm/auth/README.md +0 -3
  40. package/esm/auth/index.d.ts +0 -5
  41. package/esm/auth/index.js +0 -5
  42. package/esm/auth/server/AuthController.server.d.ts +0 -58
  43. package/esm/auth/server/AuthController.server.js +0 -518
  44. package/esm/auth/server/handleAuth.d.ts +0 -4
  45. package/esm/auth/server/handleAuth.js +0 -142
  46. package/esm/auth/server/handleGuard.d.ts +0 -22
  47. package/esm/auth/server/handleGuard.js +0 -34
  48. package/esm/auth/server/helperDb.d.ts +0 -10
  49. package/esm/auth/server/helperDb.js +0 -56
  50. package/esm/auth/server/helperFirstly.d.ts +0 -1
  51. package/esm/auth/server/helperFirstly.js +0 -9
  52. package/esm/auth/server/helperOslo.d.ts +0 -7
  53. package/esm/auth/server/helperOslo.js +0 -24
  54. package/esm/auth/server/helperRemultServer.d.ts +0 -5
  55. package/esm/auth/server/helperRemultServer.js +0 -44
  56. package/esm/auth/server/helperRole.d.ts +0 -19
  57. package/esm/auth/server/helperRole.js +0 -57
  58. package/esm/auth/server/index.d.ts +0 -8
  59. package/esm/auth/server/index.js +0 -8
  60. package/esm/auth/server/module.d.ts +0 -300
  61. package/esm/auth/server/module.js +0 -230
  62. package/esm/auth/server/providers/github.d.ts +0 -33
  63. package/esm/auth/server/providers/github.js +0 -87
  64. package/esm/auth/server/providers/helperProvider.d.ts +0 -1
  65. package/esm/auth/server/providers/helperProvider.js +0 -25
  66. package/esm/auth/static/assets/Page-BHW08QWz.css +0 -1
  67. package/esm/auth/static/assets/Page-BRNWcY5Z.d.ts +0 -2
  68. package/esm/auth/static/assets/Page-BRNWcY5Z.js +0 -1
  69. package/esm/auth/static/assets/Page-CFcEsGK8.d.ts +0 -2
  70. package/esm/auth/static/assets/Page-CFcEsGK8.js +0 -7
  71. package/esm/auth/static/assets/Page-tLVs5slF.d.ts +0 -2
  72. package/esm/auth/static/assets/Page-tLVs5slF.js +0 -1
  73. package/esm/auth/static/assets/index-D38rqu4x.d.ts +0 -201
  74. package/esm/auth/static/assets/index-D38rqu4x.js +0 -2
  75. package/esm/auth/static/assets/index-DKWpA6v7.css +0 -4
  76. package/esm/auth/static/favicon.svg +0 -79
  77. package/esm/auth/static/index.html +0 -13
  78. package/esm/auth/types.d.ts +0 -73
  79. package/esm/bin/cmd.d.ts +0 -1
  80. package/esm/bin/cmd.js +0 -793
  81. package/esm/feedback/ui/DialogIssue.svelte +0 -149
  82. package/esm/feedback/ui/DialogIssue.svelte.d.ts +0 -22
  83. package/esm/feedback/ui/DialogIssues.svelte +0 -114
  84. package/esm/feedback/ui/DialogIssues.svelte.d.ts +0 -22
  85. package/esm/feedback/ui/DialogMilestones.svelte +0 -43
  86. package/esm/feedback/ui/DialogMilestones.svelte.d.ts +0 -20
  87. package/esm/feedback/ui/Feedback.svelte +0 -16
  88. package/esm/feedback/ui/Feedback.svelte.d.ts +0 -18
  89. package/esm/internals/FF_Entity.d.ts +0 -2
  90. package/esm/internals/FF_Entity.js +0 -21
  91. package/esm/internals/FF_Fields.d.ts +0 -11
  92. package/esm/internals/FF_Fields.js +0 -144
  93. package/esm/internals/cellsBuildor.d.ts +0 -47
  94. package/esm/internals/cellsBuildor.js +0 -140
  95. package/esm/internals/helper.d.ts +0 -49
  96. package/esm/internals/helper.js +0 -162
  97. package/esm/internals/index.d.ts +0 -82
  98. package/esm/internals/index.js +0 -45
  99. package/esm/internals/storeItem.d.ts +0 -28
  100. package/esm/internals/storeItem.js +0 -176
  101. package/esm/internals/storeList.d.ts +0 -34
  102. package/esm/internals/storeList.js +0 -108
  103. package/esm/internals/theme.d.ts +0 -4
  104. package/esm/internals/theme.js +0 -4
  105. package/esm/server/index.d.ts +0 -52
  106. package/esm/server/index.js +0 -87
  107. package/esm/svelte/FF_Cell.svelte +0 -103
  108. package/esm/svelte/FF_Cell.svelte.d.ts +0 -33
  109. package/esm/svelte/FF_Cell_Caption.svelte +0 -20
  110. package/esm/svelte/FF_Cell_Caption.svelte.d.ts +0 -31
  111. package/esm/svelte/FF_Cell_Display.svelte +0 -61
  112. package/esm/svelte/FF_Cell_Display.svelte.d.ts +0 -29
  113. package/esm/svelte/FF_Cell_Edit.svelte +0 -104
  114. package/esm/svelte/FF_Cell_Edit.svelte.d.ts +0 -32
  115. package/esm/svelte/FF_Cell_Error.svelte +0 -20
  116. package/esm/svelte/FF_Cell_Error.svelte.d.ts +0 -31
  117. package/esm/svelte/FF_Cell_Hint.svelte +0 -20
  118. package/esm/svelte/FF_Cell_Hint.svelte.d.ts +0 -31
  119. package/esm/svelte/FF_Config.svelte +0 -29
  120. package/esm/svelte/FF_Config.svelte.d.ts +0 -9
  121. package/esm/svelte/FF_Form.svelte +0 -155
  122. package/esm/svelte/FF_Form.svelte.d.ts +0 -37
  123. package/esm/svelte/FF_Grid.svelte +0 -257
  124. package/esm/svelte/FF_Grid.svelte.d.ts +0 -37
  125. package/esm/svelte/FF_Layout.svelte +0 -62
  126. package/esm/svelte/FF_Layout.svelte.d.ts +0 -31
  127. package/esm/svelte/actions/intersection.d.ts +0 -6
  128. package/esm/svelte/actions/intersection.js +0 -17
  129. package/esm/svelte/customField.d.ts +0 -69
  130. package/esm/svelte/customField.js +0 -4
  131. package/esm/svelte/dialog/DialogManagement.svelte +0 -98
  132. package/esm/svelte/dialog/DialogManagement.svelte.d.ts +0 -18
  133. package/esm/svelte/dialog/DialogPrimitive.svelte +0 -156
  134. package/esm/svelte/dialog/DialogPrimitive.svelte.d.ts +0 -38
  135. package/esm/svelte/dialog/dialog.d.ts +0 -58
  136. package/esm/svelte/dialog/dialog.js +0 -130
  137. package/esm/svelte/ff_Config.svelte.d.ts +0 -91
  138. package/esm/svelte/ff_Config.svelte.js +0 -111
  139. package/esm/svelte/firstly.css +0 -14
  140. package/esm/svelte/helpers.d.ts +0 -30
  141. package/esm/svelte/helpers.js +0 -38
  142. package/esm/svelte/tryCatch.d.ts +0 -12
  143. package/esm/svelte/tryCatch.js +0 -18
  144. package/esm/sveltekit/server/index.d.ts +0 -5
  145. package/esm/sveltekit/server/index.js +0 -24
  146. package/esm/ui/Button.svelte +0 -138
  147. package/esm/ui/Button.svelte.d.ts +0 -13
  148. package/esm/ui/Clipboardable.svelte +0 -25
  149. package/esm/ui/Clipboardable.svelte.d.ts +0 -12
  150. package/esm/ui/Field.svelte +0 -382
  151. package/esm/ui/Field.svelte.d.ts +0 -40
  152. package/esm/ui/FieldGroup.svelte +0 -117
  153. package/esm/ui/FieldGroup.svelte.d.ts +0 -44
  154. package/esm/ui/Grid.svelte +0 -265
  155. package/esm/ui/Grid.svelte.d.ts +0 -57
  156. package/esm/ui/Grid2.svelte +0 -293
  157. package/esm/ui/Grid2.svelte.d.ts +0 -57
  158. package/esm/ui/GridLoading.svelte +0 -58
  159. package/esm/ui/GridLoading.svelte.d.ts +0 -23
  160. package/esm/ui/GridPaginate.svelte +0 -69
  161. package/esm/ui/GridPaginate.svelte.d.ts +0 -23
  162. package/esm/ui/GridPaginate2.svelte +0 -25
  163. package/esm/ui/GridPaginate2.svelte.d.ts +0 -7
  164. package/esm/ui/Loading.svelte +0 -16
  165. package/esm/ui/Loading.svelte.d.ts +0 -31
  166. package/esm/ui/Tooltip.svelte +0 -45
  167. package/esm/ui/Tooltip.svelte.d.ts +0 -32
  168. package/esm/ui/dialog/DialogForm.svelte +0 -76
  169. package/esm/ui/dialog/DialogForm.svelte.d.ts +0 -21
  170. package/esm/ui/dialog/DialogManagement.svelte +0 -96
  171. package/esm/ui/dialog/DialogManagement.svelte.d.ts +0 -26
  172. package/esm/ui/dialog/DialogPrimitive.svelte +0 -90
  173. package/esm/ui/dialog/DialogPrimitive.svelte.d.ts +0 -38
  174. package/esm/ui/dialog/FormEditAction.svelte +0 -62
  175. package/esm/ui/dialog/FormEditAction.svelte.d.ts +0 -31
  176. package/esm/ui/dialog/dialog.d.ts +0 -60
  177. package/esm/ui/dialog/dialog.js +0 -100
  178. package/esm/ui/index.d.ts +0 -6
  179. package/esm/ui/index.js +0 -20
  180. package/esm/ui/internals/FieldContainer.svelte +0 -39
  181. package/esm/ui/internals/FieldContainer.svelte.d.ts +0 -18
  182. package/esm/ui/internals/Input.svelte +0 -143
  183. package/esm/ui/internals/Input.svelte.d.ts +0 -37
  184. package/esm/ui/internals/Textarea.svelte +0 -66
  185. package/esm/ui/internals/Textarea.svelte.d.ts +0 -33
  186. package/esm/ui/internals/select/MultiSelectMelt.svelte +0 -260
  187. package/esm/ui/internals/select/MultiSelectMelt.svelte.d.ts +0 -32
  188. package/esm/ui/internals/select/Select2.svelte +0 -88
  189. package/esm/ui/internals/select/Select2.svelte.d.ts +0 -12
  190. package/esm/ui/internals/select/SelectMelt.svelte +0 -280
  191. package/esm/ui/internals/select/SelectMelt.svelte.d.ts +0 -40
  192. package/esm/ui/internals/select/SelectRadio.svelte +0 -43
  193. package/esm/ui/internals/select/SelectRadio.svelte.d.ts +0 -27
  194. package/esm/ui/link/Link.svelte +0 -33
  195. package/esm/ui/link/Link.svelte.d.ts +0 -33
  196. package/esm/ui/link/LinkPlus.svelte +0 -63
  197. package/esm/ui/link/LinkPlus.svelte.d.ts +0 -9
  198. package/esm/utils/tailwind.d.ts +0 -2
  199. package/esm/utils/tailwind.js +0 -3
  200. package/esm/utils/transition.d.ts +0 -9
  201. package/esm/utils/transition.js +0 -33
  202. package/esm/utils/types.js +0 -1
  203. /package/esm/{internals → core}/BaseEnum.js +0 -0
  204. /package/esm/{internals → core}/common.d.ts +0 -0
  205. /package/esm/{internals → core}/common.js +0 -0
  206. /package/esm/{utils → core}/types.d.ts +0 -0
  207. /package/esm/{auth → core}/types.js +0 -0
  208. /package/esm/{ui → svelte/ui}/Icon.svelte.d.ts +0 -0
  209. /package/esm/{ui → svelte/ui}/LibIcon.d.ts +0 -0
  210. /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 {};