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.
- package/CHANGELOG.md +65 -0
- package/esm/SqlDatabase/FF_LogToConsole.js +9 -14
- package/esm/carbone/CarboneController.js +2 -1
- package/esm/changeLog/index.d.ts +0 -10
- package/esm/{internals → core}/BaseEnum.d.ts +1 -1
- package/esm/core/FF_Entity.js +5 -0
- package/esm/core/helper.d.ts +2 -0
- package/esm/core/helper.js +3 -0
- package/esm/core/index.d.ts +0 -0
- package/esm/core/index.js +5 -0
- package/esm/core/tailwind.d.ts +21 -0
- package/esm/core/tailwind.js +22 -0
- package/esm/core/tryCatch.d.ts +44 -0
- package/esm/core/tryCatch.js +34 -0
- package/esm/cron/server/index.js +1 -1
- package/esm/feedback/FeedbackController.js +3 -2
- package/esm/feedback/index.d.ts +7 -2
- package/esm/feedback/index.js +1 -2
- package/esm/feedback/server/index.d.ts +0 -5
- package/esm/feedback/server/index.js +1 -1
- package/esm/formats/strings.js +2 -2
- package/esm/index.d.ts +16 -0
- package/esm/index.js +13 -0
- package/esm/svelte/FF_Repo.svelte.d.ts +9 -2
- package/esm/svelte/FF_Repo.svelte.js +40 -17
- package/esm/svelte/class/SP.svelte.js +14 -2
- package/esm/svelte/helpers/debounce.js +1 -1
- package/esm/svelte/index.d.ts +2 -24
- package/esm/svelte/index.js +2 -22
- package/esm/{ui → svelte/ui}/Icon.svelte +1 -1
- package/esm/virtual/StateDemoEnum.d.ts +3 -3
- package/esm/virtual/StateDemoEnum.js +3 -3
- package/esm/virtual/UIEntity.js +1 -2
- package/package.json +8 -39
- package/esm/auth/AuthController.d.ts +0 -58
- package/esm/auth/AuthController.js +0 -114
- package/esm/auth/Entities.d.ts +0 -47
- package/esm/auth/Entities.js +0 -182
- package/esm/auth/README.md +0 -3
- package/esm/auth/index.d.ts +0 -5
- package/esm/auth/index.js +0 -5
- package/esm/auth/server/AuthController.server.d.ts +0 -58
- package/esm/auth/server/AuthController.server.js +0 -518
- package/esm/auth/server/handleAuth.d.ts +0 -4
- package/esm/auth/server/handleAuth.js +0 -142
- package/esm/auth/server/handleGuard.d.ts +0 -22
- package/esm/auth/server/handleGuard.js +0 -34
- package/esm/auth/server/helperDb.d.ts +0 -10
- package/esm/auth/server/helperDb.js +0 -56
- package/esm/auth/server/helperFirstly.d.ts +0 -1
- package/esm/auth/server/helperFirstly.js +0 -9
- package/esm/auth/server/helperOslo.d.ts +0 -7
- package/esm/auth/server/helperOslo.js +0 -24
- package/esm/auth/server/helperRemultServer.d.ts +0 -5
- package/esm/auth/server/helperRemultServer.js +0 -44
- package/esm/auth/server/helperRole.d.ts +0 -19
- package/esm/auth/server/helperRole.js +0 -57
- package/esm/auth/server/index.d.ts +0 -8
- package/esm/auth/server/index.js +0 -8
- package/esm/auth/server/module.d.ts +0 -300
- package/esm/auth/server/module.js +0 -230
- package/esm/auth/server/providers/github.d.ts +0 -33
- package/esm/auth/server/providers/github.js +0 -87
- package/esm/auth/server/providers/helperProvider.d.ts +0 -1
- package/esm/auth/server/providers/helperProvider.js +0 -25
- package/esm/auth/static/assets/Page-BHW08QWz.css +0 -1
- package/esm/auth/static/assets/Page-BRNWcY5Z.d.ts +0 -2
- package/esm/auth/static/assets/Page-BRNWcY5Z.js +0 -1
- package/esm/auth/static/assets/Page-CFcEsGK8.d.ts +0 -2
- package/esm/auth/static/assets/Page-CFcEsGK8.js +0 -7
- package/esm/auth/static/assets/Page-tLVs5slF.d.ts +0 -2
- package/esm/auth/static/assets/Page-tLVs5slF.js +0 -1
- package/esm/auth/static/assets/index-D38rqu4x.d.ts +0 -201
- package/esm/auth/static/assets/index-D38rqu4x.js +0 -2
- package/esm/auth/static/assets/index-DKWpA6v7.css +0 -4
- package/esm/auth/static/favicon.svg +0 -79
- package/esm/auth/static/index.html +0 -13
- package/esm/auth/types.d.ts +0 -73
- package/esm/bin/cmd.d.ts +0 -1
- package/esm/bin/cmd.js +0 -793
- package/esm/feedback/ui/DialogIssue.svelte +0 -149
- package/esm/feedback/ui/DialogIssue.svelte.d.ts +0 -22
- package/esm/feedback/ui/DialogIssues.svelte +0 -114
- package/esm/feedback/ui/DialogIssues.svelte.d.ts +0 -22
- package/esm/feedback/ui/DialogMilestones.svelte +0 -43
- package/esm/feedback/ui/DialogMilestones.svelte.d.ts +0 -20
- package/esm/feedback/ui/Feedback.svelte +0 -16
- package/esm/feedback/ui/Feedback.svelte.d.ts +0 -18
- package/esm/internals/FF_Entity.d.ts +0 -2
- package/esm/internals/FF_Entity.js +0 -21
- package/esm/internals/FF_Fields.d.ts +0 -11
- package/esm/internals/FF_Fields.js +0 -144
- package/esm/internals/cellsBuildor.d.ts +0 -47
- package/esm/internals/cellsBuildor.js +0 -140
- package/esm/internals/helper.d.ts +0 -49
- package/esm/internals/helper.js +0 -162
- package/esm/internals/index.d.ts +0 -82
- package/esm/internals/index.js +0 -45
- package/esm/internals/storeItem.d.ts +0 -28
- package/esm/internals/storeItem.js +0 -176
- package/esm/internals/storeList.d.ts +0 -34
- package/esm/internals/storeList.js +0 -108
- package/esm/internals/theme.d.ts +0 -4
- package/esm/internals/theme.js +0 -4
- package/esm/server/index.d.ts +0 -52
- package/esm/server/index.js +0 -87
- package/esm/svelte/FF_Cell.svelte +0 -103
- package/esm/svelte/FF_Cell.svelte.d.ts +0 -33
- package/esm/svelte/FF_Cell_Caption.svelte +0 -20
- package/esm/svelte/FF_Cell_Caption.svelte.d.ts +0 -31
- package/esm/svelte/FF_Cell_Display.svelte +0 -61
- package/esm/svelte/FF_Cell_Display.svelte.d.ts +0 -29
- package/esm/svelte/FF_Cell_Edit.svelte +0 -104
- package/esm/svelte/FF_Cell_Edit.svelte.d.ts +0 -32
- package/esm/svelte/FF_Cell_Error.svelte +0 -20
- package/esm/svelte/FF_Cell_Error.svelte.d.ts +0 -31
- package/esm/svelte/FF_Cell_Hint.svelte +0 -20
- package/esm/svelte/FF_Cell_Hint.svelte.d.ts +0 -31
- package/esm/svelte/FF_Config.svelte +0 -29
- package/esm/svelte/FF_Config.svelte.d.ts +0 -9
- package/esm/svelte/FF_Form.svelte +0 -155
- package/esm/svelte/FF_Form.svelte.d.ts +0 -37
- package/esm/svelte/FF_Grid.svelte +0 -257
- package/esm/svelte/FF_Grid.svelte.d.ts +0 -37
- package/esm/svelte/FF_Layout.svelte +0 -62
- package/esm/svelte/FF_Layout.svelte.d.ts +0 -31
- package/esm/svelte/actions/intersection.d.ts +0 -6
- package/esm/svelte/actions/intersection.js +0 -17
- package/esm/svelte/customField.d.ts +0 -69
- package/esm/svelte/customField.js +0 -4
- package/esm/svelte/dialog/DialogManagement.svelte +0 -98
- package/esm/svelte/dialog/DialogManagement.svelte.d.ts +0 -18
- package/esm/svelte/dialog/DialogPrimitive.svelte +0 -156
- package/esm/svelte/dialog/DialogPrimitive.svelte.d.ts +0 -38
- package/esm/svelte/dialog/dialog.d.ts +0 -58
- package/esm/svelte/dialog/dialog.js +0 -130
- package/esm/svelte/ff_Config.svelte.d.ts +0 -91
- package/esm/svelte/ff_Config.svelte.js +0 -111
- package/esm/svelte/firstly.css +0 -14
- package/esm/svelte/helpers.d.ts +0 -30
- package/esm/svelte/helpers.js +0 -38
- package/esm/svelte/tryCatch.d.ts +0 -12
- package/esm/svelte/tryCatch.js +0 -18
- package/esm/sveltekit/server/index.d.ts +0 -5
- package/esm/sveltekit/server/index.js +0 -24
- package/esm/ui/Button.svelte +0 -138
- package/esm/ui/Button.svelte.d.ts +0 -13
- package/esm/ui/Clipboardable.svelte +0 -25
- package/esm/ui/Clipboardable.svelte.d.ts +0 -12
- package/esm/ui/Field.svelte +0 -382
- package/esm/ui/Field.svelte.d.ts +0 -40
- package/esm/ui/FieldGroup.svelte +0 -117
- package/esm/ui/FieldGroup.svelte.d.ts +0 -44
- package/esm/ui/Grid.svelte +0 -265
- package/esm/ui/Grid.svelte.d.ts +0 -57
- package/esm/ui/Grid2.svelte +0 -293
- package/esm/ui/Grid2.svelte.d.ts +0 -57
- package/esm/ui/GridLoading.svelte +0 -58
- package/esm/ui/GridLoading.svelte.d.ts +0 -23
- package/esm/ui/GridPaginate.svelte +0 -69
- package/esm/ui/GridPaginate.svelte.d.ts +0 -23
- package/esm/ui/GridPaginate2.svelte +0 -25
- package/esm/ui/GridPaginate2.svelte.d.ts +0 -7
- package/esm/ui/Loading.svelte +0 -16
- package/esm/ui/Loading.svelte.d.ts +0 -31
- package/esm/ui/Tooltip.svelte +0 -45
- package/esm/ui/Tooltip.svelte.d.ts +0 -32
- package/esm/ui/dialog/DialogForm.svelte +0 -76
- package/esm/ui/dialog/DialogForm.svelte.d.ts +0 -21
- package/esm/ui/dialog/DialogManagement.svelte +0 -96
- package/esm/ui/dialog/DialogManagement.svelte.d.ts +0 -26
- package/esm/ui/dialog/DialogPrimitive.svelte +0 -90
- package/esm/ui/dialog/DialogPrimitive.svelte.d.ts +0 -38
- package/esm/ui/dialog/FormEditAction.svelte +0 -62
- package/esm/ui/dialog/FormEditAction.svelte.d.ts +0 -31
- package/esm/ui/dialog/dialog.d.ts +0 -60
- package/esm/ui/dialog/dialog.js +0 -100
- package/esm/ui/index.d.ts +0 -6
- package/esm/ui/index.js +0 -20
- package/esm/ui/internals/FieldContainer.svelte +0 -39
- package/esm/ui/internals/FieldContainer.svelte.d.ts +0 -18
- package/esm/ui/internals/Input.svelte +0 -143
- package/esm/ui/internals/Input.svelte.d.ts +0 -37
- package/esm/ui/internals/Textarea.svelte +0 -66
- package/esm/ui/internals/Textarea.svelte.d.ts +0 -33
- package/esm/ui/internals/select/MultiSelectMelt.svelte +0 -260
- package/esm/ui/internals/select/MultiSelectMelt.svelte.d.ts +0 -32
- package/esm/ui/internals/select/Select2.svelte +0 -88
- package/esm/ui/internals/select/Select2.svelte.d.ts +0 -12
- package/esm/ui/internals/select/SelectMelt.svelte +0 -280
- package/esm/ui/internals/select/SelectMelt.svelte.d.ts +0 -40
- package/esm/ui/internals/select/SelectRadio.svelte +0 -43
- package/esm/ui/internals/select/SelectRadio.svelte.d.ts +0 -27
- package/esm/ui/link/Link.svelte +0 -33
- package/esm/ui/link/Link.svelte.d.ts +0 -33
- package/esm/ui/link/LinkPlus.svelte +0 -63
- package/esm/ui/link/LinkPlus.svelte.d.ts +0 -9
- package/esm/utils/tailwind.d.ts +0 -2
- package/esm/utils/tailwind.js +0 -3
- package/esm/utils/transition.d.ts +0 -9
- package/esm/utils/transition.js +0 -33
- package/esm/utils/types.js +0 -1
- /package/esm/{internals → core}/BaseEnum.js +0 -0
- /package/esm/{internals → core}/common.d.ts +0 -0
- /package/esm/{internals → core}/common.js +0 -0
- /package/esm/{utils → core}/types.d.ts +0 -0
- /package/esm/{auth → core}/types.js +0 -0
- /package/esm/{ui → svelte/ui}/Icon.svelte.d.ts +0 -0
- /package/esm/{ui → svelte/ui}/LibIcon.d.ts +0 -0
- /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,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,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 {};
|