rimecms 0.29.0 → 0.30.1
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/dist/adapter-sqlite/area.server.js +8 -8
- package/dist/adapter-sqlite/generate-schema/column.server.d.ts +13 -0
- package/dist/adapter-sqlite/generate-schema/column.server.js +77 -0
- package/dist/adapter-sqlite/generate-schema/index.server.js +7 -12
- package/dist/adapter-sqlite/generate-schema/root.server.js +35 -39
- package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +12 -0
- package/dist/adapter-sqlite/generate-schema/templates.server.js +19 -0
- package/dist/adapter-sqlite/index.server.d.ts +1 -2
- package/dist/adapter-sqlite/index.server.js +0 -2
- package/dist/adapter-sqlite/relations.server.js +6 -1
- package/dist/adapter-sqlite/util.server.d.ts +1 -6
- package/dist/adapter-sqlite/util.server.js +6 -0
- package/dist/adapter-sqlite/where.server.js +17 -16
- package/dist/adapter-sqlite/with.server.js +9 -9
- package/dist/core/collections/auth/fields.d.ts +2 -182
- package/dist/core/collections/config/augment-auth.server.js +1 -1
- package/dist/core/collections/config/augment-nested.server.js +1 -1
- package/dist/core/collections/config/augment-upload.js +2 -2
- package/dist/core/collections/config/augment-upload.server.js +4 -1
- package/dist/core/collections/operations/duplicate.js +30 -11
- package/dist/core/collections/operations/updateById.js +6 -5
- package/dist/core/collections/rest/duplicate.server.js +7 -3
- package/dist/core/collections/upload/disk/delete.server.d.ts +1 -1
- package/dist/core/collections/upload/disk/delete.server.js +48 -1
- package/dist/core/collections/upload/hooks/clean-up-files.server.js +2 -2
- package/dist/core/collections/upload/hooks/extract-path.server.d.ts +1 -1
- package/dist/core/collections/upload/hooks/extract-path.server.js +1 -1
- package/dist/core/collections/upload/hooks/process-file-upload.server.js +3 -3
- package/dist/core/config/server/validate.server.js +50 -30
- package/dist/core/config/shared/find-thumbnail.js +12 -12
- package/dist/core/config/shared/find-title.js +13 -13
- package/dist/core/config/shared/upload-directories.js +1 -1
- package/dist/core/constant.server.d.ts +1 -0
- package/dist/core/constant.server.js +2 -0
- package/dist/core/dev/cache/index.server.js +9 -9
- package/dist/core/dev/cli/build/index.js +2 -2
- package/dist/core/dev/cli/clear/index.server.js +2 -1
- package/dist/core/dev/cli/generate/index.server.js +3 -2
- package/dist/core/dev/cli/init/index.server.js +1 -1
- package/dist/core/dev/generate/routes/index.server.js +2 -2
- package/dist/core/dev/generate/types/index.server.js +17 -17
- package/dist/core/dev/vite/index.server.js +21 -5
- package/dist/core/fields/builders/boolean-builder.d.ts +3 -1
- package/dist/core/fields/builders/boolean-builder.js +3 -0
- package/dist/core/fields/builders/field-builder.d.ts +35 -2
- package/dist/core/fields/builders/field-builder.js +33 -2
- package/dist/core/fields/builders/form-field-builder.d.ts +71 -12
- package/dist/core/fields/builders/form-field-builder.js +96 -6
- package/dist/core/fields/builders/select-builder.d.ts +4 -1
- package/dist/core/fields/builders/select-builder.js +3 -0
- package/dist/core/fields/util.d.ts +8 -16
- package/dist/core/fields/util.js +49 -83
- package/dist/core/handlers/routes.server.js +16 -3
- package/dist/core/naming.d.ts +34 -0
- package/dist/core/naming.js +39 -0
- package/dist/core/operations/blocks/diff.server.js +1 -1
- package/dist/core/operations/blocks/extract.server.js +1 -1
- package/dist/core/operations/configMap/buildTreeMap.d.ts +3 -2
- package/dist/core/operations/configMap/buildTreeMap.js +1 -1
- package/dist/core/operations/configMap/index.d.ts +2 -1
- package/dist/core/operations/configMap/index.js +13 -13
- package/dist/core/operations/configMap/types.d.ts +2 -2
- package/dist/core/operations/hooks/before-read/process-document-fields.server.js +14 -17
- package/dist/core/operations/hooks/before-upsert/data-config-map.server.js +1 -1
- package/dist/core/operations/hooks/before-upsert/original-config-map.server.js +1 -1
- package/dist/core/operations/hooks/before-upsert/set-default-values.server.d.ts +2 -4
- package/dist/core/operations/hooks/before-upsert/set-default-values.server.js +10 -15
- package/dist/core/operations/hooks/before-upsert/validate-fields.server.js +49 -31
- package/dist/core/operations/relations/extract.server.js +5 -5
- package/dist/core/operations/shared/fallback-data-from-original.js +2 -2
- package/dist/core/operations/tree/diff.server.js +1 -1
- package/dist/core/operations/tree/extract.server.js +1 -1
- package/dist/core/plugins/cache/cache.server.js +3 -3
- package/dist/fields/blocks/component/AddBlockButton.svelte +7 -7
- package/dist/fields/blocks/component/AddBlockButton.svelte.d.ts +2 -2
- package/dist/fields/blocks/component/Blocks.svelte +6 -7
- package/dist/fields/blocks/component/props.d.ts +2 -2
- package/dist/fields/blocks/index.d.ts +1 -1
- package/dist/fields/blocks/index.js +3 -3
- package/dist/fields/blocks/index.server.js +1 -1
- package/dist/fields/checkbox/component/Checkbox.svelte +2 -2
- package/dist/fields/checkbox/component/props.d.ts +2 -2
- package/dist/fields/checkbox/index.server.d.ts +1 -2
- package/dist/fields/checkbox/index.server.js +1 -10
- package/dist/fields/combobox/component/ComboBox.svelte +3 -3
- package/dist/fields/combobox/component/props.d.ts +2 -2
- package/dist/fields/combobox/index.server.d.ts +1 -2
- package/dist/fields/combobox/index.server.js +2 -11
- package/dist/fields/component/index.d.ts +1 -1
- package/dist/fields/date/component/Date.svelte +4 -4
- package/dist/fields/date/component/Date.svelte.d.ts +2 -2
- package/dist/fields/date/index.d.ts +3 -1
- package/dist/fields/date/index.js +3 -0
- package/dist/fields/date/index.server.d.ts +1 -2
- package/dist/fields/date/index.server.js +1 -10
- package/dist/fields/email/component/Email.svelte +5 -6
- package/dist/fields/email/component/props.d.ts +2 -3
- package/dist/fields/email/index.d.ts +3 -2
- package/dist/fields/email/index.js +4 -1
- package/dist/fields/email/index.server.d.ts +0 -3
- package/dist/fields/email/index.server.js +0 -9
- package/dist/fields/group/component/Group.svelte +9 -15
- package/dist/fields/group/component/Group.svelte.d.ts +2 -2
- package/dist/fields/group/index.d.ts +4 -2
- package/dist/fields/group/index.server.js +2 -2
- package/dist/fields/index.server.d.ts +1 -4
- package/dist/fields/index.server.js +17 -13
- package/dist/fields/link/component/Link.svelte +5 -5
- package/dist/fields/link/component/props.d.ts +2 -2
- package/dist/fields/link/index.d.ts +4 -1
- package/dist/fields/link/index.js +9 -10
- package/dist/fields/link/runtime.d.ts +2 -0
- package/dist/fields/link/runtime.js +1 -0
- package/dist/fields/link/{index.server.d.ts → runtime.server.d.ts} +1 -2
- package/dist/fields/link/{index.server.js → runtime.server.js} +2 -11
- package/dist/fields/number/component/Number.svelte +6 -6
- package/dist/fields/number/component/props.d.ts +2 -2
- package/dist/fields/number/index.d.ts +4 -10
- package/dist/fields/number/index.js +3 -4
- package/dist/fields/number/index.server.d.ts +1 -2
- package/dist/fields/number/index.server.js +1 -10
- package/dist/fields/radio/component/Radio.svelte +6 -7
- package/dist/fields/radio/component/props.d.ts +2 -2
- package/dist/fields/radio/index.server.d.ts +1 -2
- package/dist/fields/radio/index.server.js +2 -11
- package/dist/fields/relation/component/Relation.svelte +18 -14
- package/dist/fields/relation/component/Relation.svelte.d.ts +2 -2
- package/dist/fields/relation/index.d.ts +7 -4
- package/dist/fields/relation/index.js +8 -47
- package/dist/fields/relation/runtime.d.ts +5 -0
- package/dist/fields/relation/runtime.js +4 -0
- package/dist/fields/relation/runtime.server.d.ts +8 -0
- package/dist/fields/relation/runtime.server.js +49 -0
- package/dist/fields/rich-text/component/RichText.svelte +5 -5
- package/dist/fields/rich-text/component/props.d.ts +2 -2
- package/dist/fields/rich-text/core/features/fields/fields.svelte +2 -2
- package/dist/fields/rich-text/index.d.ts +2 -0
- package/dist/fields/rich-text/index.js +3 -0
- package/dist/fields/rich-text/index.server.d.ts +1 -2
- package/dist/fields/rich-text/index.server.js +1 -10
- package/dist/fields/select/component/Select.svelte +16 -16
- package/dist/fields/select/component/props.d.ts +2 -2
- package/dist/fields/select/index.d.ts +2 -0
- package/dist/fields/select/index.js +3 -0
- package/dist/fields/select/index.server.d.ts +1 -2
- package/dist/fields/select/index.server.js +2 -17
- package/dist/fields/slug/component/Slug.svelte +14 -10
- package/dist/fields/slug/component/Slug.svelte.d.ts +2 -2
- package/dist/fields/slug/index.d.ts +5 -2
- package/dist/fields/slug/index.js +3 -0
- package/dist/fields/slug/index.server.d.ts +1 -2
- package/dist/fields/slug/index.server.js +1 -10
- package/dist/fields/tabs/component/Tabs.svelte +15 -15
- package/dist/fields/tabs/component/Tabs.svelte.d.ts +2 -2
- package/dist/fields/tabs/index.d.ts +4 -16
- package/dist/fields/tabs/index.js +1 -8
- package/dist/fields/tabs/index.server.js +3 -3
- package/dist/fields/text/component/Text.svelte +5 -5
- package/dist/fields/text/component/props.d.ts +2 -3
- package/dist/fields/text/index.d.ts +4 -10
- package/dist/fields/text/index.js +3 -4
- package/dist/fields/text/index.server.d.ts +1 -2
- package/dist/fields/text/index.server.js +1 -10
- package/dist/fields/textarea/component/TextArea.svelte +3 -3
- package/dist/fields/textarea/component/props.d.ts +2 -2
- package/dist/fields/textarea/index.d.ts +4 -1
- package/dist/fields/textarea/index.js +3 -0
- package/dist/fields/textarea/index.server.d.ts +1 -2
- package/dist/fields/textarea/index.server.js +1 -10
- package/dist/fields/time/component/Time.svelte +5 -5
- package/dist/fields/time/component/Time.svelte.d.ts +1 -1
- package/dist/fields/time/component/props.d.ts +2 -2
- package/dist/fields/time/index.d.ts +2 -0
- package/dist/fields/time/index.js +3 -0
- package/dist/fields/time/index.server.d.ts +1 -2
- package/dist/fields/time/index.server.js +1 -10
- package/dist/fields/toggle/component/Toggle.svelte +3 -3
- package/dist/fields/toggle/component/Toggle.svelte.d.ts +1 -1
- package/dist/fields/toggle/component/props.d.ts +2 -2
- package/dist/fields/toggle/index.d.ts +2 -1
- package/dist/fields/toggle/index.server.d.ts +1 -2
- package/dist/fields/toggle/index.server.js +1 -10
- package/dist/fields/tree/component/AddItemButton.svelte +1 -2
- package/dist/fields/tree/component/Tree.svelte +6 -6
- package/dist/fields/tree/component/TreeBlock.svelte +5 -12
- package/dist/fields/tree/component/props.d.ts +3 -3
- package/dist/fields/tree/index.d.ts +3 -1
- package/dist/fields/tree/index.js +2 -2
- package/dist/fields/types.d.ts +11 -5
- package/dist/panel/components/fields/FieldsPreview.svelte +4 -5
- package/dist/panel/components/fields/Hint.svelte +5 -4
- package/dist/panel/components/fields/Hint.svelte.d.ts +3 -2
- package/dist/panel/components/fields/Label.svelte +6 -11
- package/dist/panel/components/fields/Label.svelte.d.ts +3 -2
- package/dist/panel/components/fields/LabelFor.svelte +4 -4
- package/dist/panel/components/fields/LabelFor.svelte.d.ts +2 -1
- package/dist/panel/components/fields/RenderFields.svelte +11 -16
- package/dist/panel/components/fields/{root.svelte.d.ts → fieldset.svelte.d.ts} +1 -1
- package/dist/panel/components/fields/{root.svelte.js → fieldset.svelte.js} +1 -1
- package/dist/panel/components/fields/index.d.ts +5 -5
- package/dist/panel/components/fields/index.js +2 -2
- package/dist/panel/components/sections/document/AuthFooter.svelte +2 -7
- package/dist/panel/components/sections/live/LiveEditPanel.svelte +2 -2
- package/dist/panel/context/collection.svelte.js +9 -9
- package/dist/panel/context/documentForm.svelte.d.ts +8 -21
- package/dist/panel/context/documentForm.svelte.js +45 -52
- package/dist/panel/context/form.svelte.d.ts +4 -3
- package/dist/panel/context/form.svelte.js +14 -16
- package/dist/panel/pages/auth/fields.d.ts +4 -4
- package/dist/panel/pages/auth/fields.js +6 -22
- package/dist/panel/pages/auth/reset-password/ResetPassword.svelte +3 -10
- package/dist/util/doc.js +15 -17
- package/package.json +3 -2
- package/dist/fields/relation/index.server.d.ts +0 -4
- package/dist/fields/relation/index.server.js +0 -13
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
import RenderFields from '../../../panel/components/fields/RenderFields.svelte';
|
|
5
5
|
import * as Tabs from '../../../panel/components/ui/tabs/index.js';
|
|
6
6
|
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
7
|
-
import type { TabBuilder,
|
|
7
|
+
import type { TabBuilder, TabsBuilder } from '../index.js';
|
|
8
8
|
|
|
9
|
-
type Props = { config:
|
|
9
|
+
type Props = { config: TabsBuilder; path: string; form: DocumentFormContext };
|
|
10
10
|
|
|
11
11
|
const { config, path: initialPath, form }: Props = $props();
|
|
12
12
|
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
const prependPath = $derived(initialPath === '' ? '' : `${initialPath}.`);
|
|
17
17
|
// Generate unique IDs for each tab to use as data attributes for error handling.
|
|
18
18
|
const tabIds = $derived(
|
|
19
|
-
config.tabs.map((tab) => `${tab.name}-${new Date().getTime().toString()}`)
|
|
19
|
+
config.get.tabs.map((tab) => `${tab.name}-${new Date().getTime().toString()}`)
|
|
20
20
|
);
|
|
21
21
|
|
|
22
22
|
// Retrieve active tab from localStorage, if not found use the first tab.
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
let activeTabName = $derived.by(() => {
|
|
25
25
|
let storedActiveTab = localStorage.getItem(storageActiveKey);
|
|
26
26
|
if (storedActiveTab && form.isLive) {
|
|
27
|
-
const activeTab = config.tabs.find((tab) => tab.name === storedActiveTab);
|
|
28
|
-
if (!activeTab || activeTab.
|
|
29
|
-
return config.tabs[0].name;
|
|
27
|
+
const activeTab = config.get.tabs.find((tab) => tab.name === storedActiveTab);
|
|
28
|
+
if (!activeTab || activeTab.get.live === false) {
|
|
29
|
+
return config.get.tabs[0].name;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
return storedActiveTab || config.tabs[0].name;
|
|
32
|
+
return storedActiveTab || config.get.tabs[0].name;
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
// On live mode only show tabs with live=true
|
|
36
36
|
function isTabVisible(tab: TabBuilder) {
|
|
37
|
-
return form.isLive ? tab.
|
|
37
|
+
return form.isLive ? tab.get.live === true : true;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
function onActiveTabChange(value: string): void {
|
|
@@ -61,33 +61,33 @@
|
|
|
61
61
|
<div class="rz-tabs">
|
|
62
62
|
<Tabs.Root onValueChange={onActiveTabChange} value={activeTabName}>
|
|
63
63
|
<Tabs.List>
|
|
64
|
-
{#each config.tabs as tab, index (index)}
|
|
64
|
+
{#each config.get.tabs as tab, index (index)}
|
|
65
65
|
{#if isTabVisible(tab)}
|
|
66
66
|
<Tabs.Trigger
|
|
67
67
|
data-error={errorTabs.includes(tabIds[index]) ? 'true' : null}
|
|
68
68
|
value={tab.name}
|
|
69
69
|
>
|
|
70
|
-
{tab.
|
|
70
|
+
{tab.get.label || tab.name}
|
|
71
71
|
</Tabs.Trigger>
|
|
72
72
|
{/if}
|
|
73
73
|
{/each}
|
|
74
74
|
</Tabs.List>
|
|
75
75
|
|
|
76
|
-
{#each config.tabs as tab, index (index)}
|
|
76
|
+
{#each config.get.tabs as tab, index (index)}
|
|
77
77
|
{#if isTabVisible(tab)}
|
|
78
78
|
<Tabs.Content data-tab-id={tabIds[index]} value={tab.name}>
|
|
79
79
|
<!-- If the first and only field is a rich text field, render it directly -->
|
|
80
|
-
{#if tab.fields.length === 1 && tab.
|
|
81
|
-
{@const firstField = tab.
|
|
80
|
+
{#if tab.get.fields.length === 1 && tab.get.fields[0].type === 'richText'}
|
|
81
|
+
{@const firstField = tab.get.fields[0] as RichTextFieldBuilder}
|
|
82
82
|
<RichText
|
|
83
83
|
standAlone={true}
|
|
84
84
|
path="{prependPath}{tab.name}.{firstField.name}"
|
|
85
|
-
config={firstField
|
|
85
|
+
config={firstField}
|
|
86
86
|
{form}
|
|
87
87
|
/>
|
|
88
88
|
{:else}
|
|
89
89
|
<!-- Otherwise, render the fields -->
|
|
90
|
-
<RenderFields fields={tab.
|
|
90
|
+
<RenderFields fields={tab.get.fields} path="{prependPath}{tab.name}" {form} />
|
|
91
91
|
{/if}
|
|
92
92
|
</Tabs.Content>
|
|
93
93
|
{/if}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as Tabs from '../../../panel/components/ui/tabs/index.js';
|
|
2
2
|
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TabsBuilder } from '../index.js';
|
|
4
4
|
type Props = {
|
|
5
|
-
config:
|
|
5
|
+
config: TabsBuilder;
|
|
6
6
|
path: string;
|
|
7
7
|
form: DocumentFormContext;
|
|
8
8
|
};
|
|
@@ -7,7 +7,7 @@ export declare class TabsBuilder extends FieldBuilder<TabsField> {
|
|
|
7
7
|
_metaUrl: string;
|
|
8
8
|
constructor(...tabs: TabBuilder[]);
|
|
9
9
|
get component(): import("svelte").Component<{
|
|
10
|
-
config:
|
|
10
|
+
config: TabsBuilder;
|
|
11
11
|
path: string;
|
|
12
12
|
form: import("../../panel").DocumentFormContext;
|
|
13
13
|
}, {}, "">;
|
|
@@ -19,13 +19,14 @@ export declare class TabsBuilder extends FieldBuilder<TabsField> {
|
|
|
19
19
|
fields: Field[];
|
|
20
20
|
}[];
|
|
21
21
|
component: import("svelte").Component<{
|
|
22
|
-
config:
|
|
22
|
+
config: TabsBuilder;
|
|
23
23
|
path: string;
|
|
24
24
|
form: import("../../panel").DocumentFormContext;
|
|
25
25
|
}, {}, "">;
|
|
26
26
|
cell: import("svelte").Component<{
|
|
27
27
|
value: any;
|
|
28
28
|
}, {}, string> | undefined;
|
|
29
|
+
name: string;
|
|
29
30
|
type: "tabs";
|
|
30
31
|
live?: boolean;
|
|
31
32
|
condition?: (doc: any, siblings: any) => boolean;
|
|
@@ -43,9 +44,8 @@ export declare class TabBuilder {
|
|
|
43
44
|
constructor(name: string);
|
|
44
45
|
label(label: string): this;
|
|
45
46
|
get name(): string;
|
|
46
|
-
get tab(): TabsFieldTab;
|
|
47
47
|
fields(...fields: FieldBuilder<Field>[]): this;
|
|
48
|
-
get
|
|
48
|
+
get get(): {
|
|
49
49
|
name: string;
|
|
50
50
|
label?: string;
|
|
51
51
|
live: boolean;
|
|
@@ -58,10 +58,6 @@ export declare class TabBuilder {
|
|
|
58
58
|
* Checks if a field is a tabs field.
|
|
59
59
|
*/
|
|
60
60
|
export declare const isTabsField: (field: Field) => field is TabsField;
|
|
61
|
-
/**
|
|
62
|
-
* Checks if a field is a tabs field (raw type).
|
|
63
|
-
*/
|
|
64
|
-
export declare const isTabsFieldRaw: (field: Field) => field is TabsFieldRaw;
|
|
65
61
|
/****************************************************/
|
|
66
62
|
export type TabsField = Field & {
|
|
67
63
|
type: 'tabs';
|
|
@@ -73,11 +69,3 @@ export type TabsFieldTab = {
|
|
|
73
69
|
live: boolean;
|
|
74
70
|
fields: FieldBuilder<Field>[];
|
|
75
71
|
};
|
|
76
|
-
export type TabsFieldRaw = Field & {
|
|
77
|
-
type: 'tabs';
|
|
78
|
-
name: string;
|
|
79
|
-
label?: string;
|
|
80
|
-
tabs: Array<Omit<TabsFieldTab, 'fields'> & {
|
|
81
|
-
fields: Field[];
|
|
82
|
-
}>;
|
|
83
|
-
};
|
|
@@ -36,14 +36,11 @@ export class TabBuilder {
|
|
|
36
36
|
get name() {
|
|
37
37
|
return this.#tab.name;
|
|
38
38
|
}
|
|
39
|
-
get tab() {
|
|
40
|
-
return this.#tab;
|
|
41
|
-
}
|
|
42
39
|
fields(...fields) {
|
|
43
40
|
this.#tab.fields = fields;
|
|
44
41
|
return this;
|
|
45
42
|
}
|
|
46
|
-
get
|
|
43
|
+
get get() {
|
|
47
44
|
return { ...this.#tab };
|
|
48
45
|
}
|
|
49
46
|
compile() {
|
|
@@ -58,7 +55,3 @@ export class TabBuilder {
|
|
|
58
55
|
* Checks if a field is a tabs field.
|
|
59
56
|
*/
|
|
60
57
|
export const isTabsField = (field) => field.type === 'tabs';
|
|
61
|
-
/**
|
|
62
|
-
* Checks if a field is a tabs field (raw type).
|
|
63
|
-
*/
|
|
64
|
-
export const isTabsFieldRaw = (field) => field.type === 'tabs';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getFieldPrivateModule } from '../index.server.js';
|
|
2
2
|
export const toType = async (field) => {
|
|
3
3
|
const types = [];
|
|
4
|
-
for (const tab of field.
|
|
4
|
+
for (const tab of field.get.tabs) {
|
|
5
5
|
const fieldsTypes = [];
|
|
6
|
-
for (const field of tab.
|
|
6
|
+
for (const field of tab.get.fields) {
|
|
7
7
|
const fieldServerMethods = await getFieldPrivateModule(field);
|
|
8
8
|
if (fieldServerMethods) {
|
|
9
9
|
const result = await Promise.resolve(fieldServerMethods.toType(field));
|
|
@@ -11,7 +11,7 @@ export const toType = async (field) => {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
if (fieldsTypes.length) {
|
|
14
|
-
types.push(`${tab.
|
|
14
|
+
types.push(`${tab.name}: {${fieldsTypes.join(',\n\t\t')}}`);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
return types.length ? types.join(',\n\t').replaceAll(',,', ',') : '';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
|
|
2
3
|
import { Field } from '../../../panel/components/fields/index.js';
|
|
3
|
-
import { root } from '../../../panel/components/fields/root.svelte.js';
|
|
4
4
|
import { Input } from '../../../panel/components/ui/input/index.js';
|
|
5
5
|
import { capitalize } from '../../../util/string.js';
|
|
6
6
|
import type { TextFieldProps } from './props.js';
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
16
|
<fieldset
|
|
17
|
-
class="rz-text-field {config.className || ''}"
|
|
17
|
+
class="rz-text-field {config.get.className || ''}"
|
|
18
18
|
class:rz-text-field--with-icon={!!Icon}
|
|
19
|
-
data-compact={config.layout === 'compact' ? '' : null}
|
|
20
|
-
use:
|
|
19
|
+
data-compact={config.get.layout === 'compact' ? '' : null}
|
|
20
|
+
use:fieldset={field}
|
|
21
21
|
>
|
|
22
22
|
<Field.Label {config} for={path || config.name} />
|
|
23
23
|
<div class="rz-text-field__input-wrapper">
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
icon={Icon}
|
|
27
27
|
autocomplete="off"
|
|
28
28
|
name={path || config.name}
|
|
29
|
-
placeholder={config.placeholder || capitalize(config.name)}
|
|
29
|
+
placeholder={config.get.placeholder || capitalize(config.get.name)}
|
|
30
30
|
data-error={field.error ? '' : null}
|
|
31
31
|
{type}
|
|
32
32
|
value={field.value}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { SimplerField } from '../../types.js';
|
|
2
1
|
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
3
2
|
import type { FormContext } from '../../../panel/context/form.svelte.js';
|
|
4
3
|
import type { IconProps } from '@lucide/svelte';
|
|
5
4
|
import type { Component } from 'svelte';
|
|
6
|
-
import type {
|
|
5
|
+
import type { TextFieldBuilder } from '../index.js';
|
|
7
6
|
export type TextFieldProps = {
|
|
8
7
|
path?: string;
|
|
9
|
-
config:
|
|
8
|
+
config: TextFieldBuilder;
|
|
10
9
|
type?: 'text' | 'password';
|
|
11
10
|
icon?: Component<IconProps>;
|
|
12
11
|
form: DocumentFormContext | FormContext;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DataType } from '../../core/fields/builders/form-field-builder.js';
|
|
1
2
|
import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
|
|
2
3
|
import type { DefaultValueFn, FormField } from '../types.js';
|
|
3
4
|
/****************************************************/
|
|
@@ -8,6 +9,7 @@ export declare class TextFieldBuilder extends FormFieldBuilder<TextField> {
|
|
|
8
9
|
get component(): import("svelte").Component<import("./component/props").TextFieldProps, {}, "">;
|
|
9
10
|
get cell(): null;
|
|
10
11
|
defaultValue(value: string | DefaultValueFn<string>): this;
|
|
12
|
+
get dataType(): DataType;
|
|
11
13
|
isTitle(): this;
|
|
12
14
|
placeholder(str: string): this;
|
|
13
15
|
layout(layout: 'compact'): this;
|
|
@@ -18,7 +20,7 @@ export declare class TextFieldBuilder extends FormFieldBuilder<TextField> {
|
|
|
18
20
|
isTitle?: true | undefined;
|
|
19
21
|
placeholder: string;
|
|
20
22
|
layout?: "compact" | undefined;
|
|
21
|
-
|
|
23
|
+
name: string;
|
|
22
24
|
live?: boolean | undefined;
|
|
23
25
|
condition?: ((doc: any, siblings: any) => boolean) | undefined;
|
|
24
26
|
width?: import("../types.js").FieldWidth | undefined;
|
|
@@ -30,7 +32,6 @@ export declare class TextFieldBuilder extends FormFieldBuilder<TextField> {
|
|
|
30
32
|
read: import("../types.js").FieldAccess;
|
|
31
33
|
update: import("../types.js").FieldAccess;
|
|
32
34
|
};
|
|
33
|
-
name: string;
|
|
34
35
|
hidden?: boolean | undefined;
|
|
35
36
|
validate?: import("../types.js").FieldValidationFunc<any> | undefined;
|
|
36
37
|
required?: boolean | undefined;
|
|
@@ -51,13 +52,13 @@ export declare class TextFieldBuilder extends FormFieldBuilder<TextField> {
|
|
|
51
52
|
onChange?: import("../types.js").FieldHookClient[] | undefined;
|
|
52
53
|
} | undefined;
|
|
53
54
|
isEmpty: (value: unknown) => boolean;
|
|
55
|
+
_root?: boolean | undefined;
|
|
54
56
|
} & {
|
|
55
57
|
component: import("svelte").Component<any>;
|
|
56
58
|
cell?: import("svelte").Component<{
|
|
57
59
|
value: any;
|
|
58
60
|
}> | null;
|
|
59
61
|
};
|
|
60
|
-
_root(): this;
|
|
61
62
|
}
|
|
62
63
|
export declare const text: (name: string) => TextFieldBuilder;
|
|
63
64
|
/****************************************************/
|
|
@@ -68,11 +69,4 @@ export type TextField = {
|
|
|
68
69
|
isTitle?: true;
|
|
69
70
|
placeholder: string;
|
|
70
71
|
layout?: 'compact';
|
|
71
|
-
/**
|
|
72
|
-
* Force the field to be on the root table
|
|
73
|
-
* usefull for fields that should not be versioned
|
|
74
|
-
* ex: _parent for nested structures should always be on the root table to prevent
|
|
75
|
-
* different versions to have different parents
|
|
76
|
-
*/
|
|
77
|
-
_root?: boolean;
|
|
78
72
|
} & FormField;
|
|
@@ -25,6 +25,9 @@ export class TextFieldBuilder extends FormFieldBuilder {
|
|
|
25
25
|
this.field.defaultValue = value;
|
|
26
26
|
return this;
|
|
27
27
|
}
|
|
28
|
+
get dataType() {
|
|
29
|
+
return 'text';
|
|
30
|
+
}
|
|
28
31
|
isTitle() {
|
|
29
32
|
this.field.isTitle = true;
|
|
30
33
|
return this;
|
|
@@ -48,9 +51,5 @@ export class TextFieldBuilder extends FormFieldBuilder {
|
|
|
48
51
|
}
|
|
49
52
|
return super.compile();
|
|
50
53
|
}
|
|
51
|
-
_root() {
|
|
52
|
-
this.field._root = true;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
54
|
}
|
|
56
55
|
export const text = (name) => new TextFieldBuilder(name);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToType } from '../index.server.js';
|
|
2
2
|
import type { TextFieldBuilder } from './index.js';
|
|
3
|
-
export declare const toSchema: ToSchema<TextFieldBuilder>;
|
|
4
3
|
export declare const toType: ToType<TextFieldBuilder>;
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
import { templateUniqueRequired } from '../../adapter-sqlite/generate-schema/templates.server.js';
|
|
2
|
-
import { getSchemaColumnNames } from '../../adapter-sqlite/generate-schema/util.server.js';
|
|
3
|
-
export const toSchema = (field, parentPath) => {
|
|
4
|
-
const { camel, snake } = getSchemaColumnNames({ name: field.name, parentPath });
|
|
5
|
-
const suffix = templateUniqueRequired({ unique: field.raw.unique, required: field.raw.required }, typeof field.raw.defaultValue === 'string' ? field.raw.defaultValue : '');
|
|
6
|
-
if (field._generateSchema)
|
|
7
|
-
return field._generateSchema({ camel, snake, suffix });
|
|
8
|
-
return `${camel}: text('${snake}')${suffix}`;
|
|
9
|
-
};
|
|
10
1
|
export const toType = (field) => {
|
|
11
|
-
return `${field.name}${field.
|
|
2
|
+
return `${field.name}${field.get.required ? '' : '?'}: string`;
|
|
12
3
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
|
|
2
3
|
import { Field } from '../../../panel/components/fields/index.js';
|
|
3
|
-
import { root } from '../../../panel/components/fields/root.svelte.js';
|
|
4
4
|
import { dataError } from '../../../panel/util/dataError.js';
|
|
5
5
|
import type { TextAreaFieldProps } from './props.js';
|
|
6
6
|
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
};
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
|
-
<fieldset use:
|
|
17
|
+
<fieldset use:fieldset={field} class="rz-textarea-field {config.get.className || ''}">
|
|
18
18
|
<Field.Label {config} for={path || config.name} />
|
|
19
19
|
<textarea
|
|
20
20
|
use:dataError={!!field.error}
|
|
21
21
|
id={path || config.name}
|
|
22
22
|
name={path || config.name}
|
|
23
|
-
placeholder={config.placeholder}
|
|
23
|
+
placeholder={config.get.placeholder}
|
|
24
24
|
value={field.value}
|
|
25
25
|
oninput={onInput}
|
|
26
26
|
></textarea>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
2
2
|
import type { FormContext } from '../../../panel/context/form.svelte.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TextAreaFieldBuilder } from '../index.js';
|
|
4
4
|
export type TextAreaFieldProps = {
|
|
5
5
|
path?: string;
|
|
6
|
-
config:
|
|
6
|
+
config: TextAreaFieldBuilder;
|
|
7
7
|
type?: 'text' | 'password';
|
|
8
8
|
form: DocumentFormContext | FormContext;
|
|
9
9
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DataType } from '../../core/fields/builders/form-field-builder.js';
|
|
1
2
|
import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
|
|
2
3
|
import type { DefaultValueFn, FormField } from '../types.js';
|
|
3
4
|
export declare const textarea: (name: string) => TextAreaFieldBuilder;
|
|
@@ -7,9 +8,11 @@ export declare class TextAreaFieldBuilder extends FormFieldBuilder<TextAreaField
|
|
|
7
8
|
get component(): import("svelte").Component<import("./component/props").TextAreaFieldProps, {}, "">;
|
|
8
9
|
get cell(): null;
|
|
9
10
|
defaultValue(value: string | DefaultValueFn<string>): this;
|
|
11
|
+
get dataType(): DataType;
|
|
10
12
|
isTitle(): this;
|
|
11
13
|
placeholder(str: string): this;
|
|
12
14
|
compile(): {
|
|
15
|
+
name: string;
|
|
13
16
|
type: "textarea";
|
|
14
17
|
live?: boolean | undefined;
|
|
15
18
|
condition?: ((doc: any, siblings: any) => boolean) | undefined;
|
|
@@ -22,7 +25,6 @@ export declare class TextAreaFieldBuilder extends FormFieldBuilder<TextAreaField
|
|
|
22
25
|
read: import("../types.js").FieldAccess;
|
|
23
26
|
update: import("../types.js").FieldAccess;
|
|
24
27
|
};
|
|
25
|
-
name: string;
|
|
26
28
|
hidden?: boolean | undefined;
|
|
27
29
|
validate?: import("../types.js").FieldValidationFunc<any> | undefined;
|
|
28
30
|
required?: boolean | undefined;
|
|
@@ -44,6 +46,7 @@ export declare class TextAreaFieldBuilder extends FormFieldBuilder<TextAreaField
|
|
|
44
46
|
} | undefined;
|
|
45
47
|
defaultValue?: string | DefaultValueFn<string> | undefined;
|
|
46
48
|
isEmpty: (value: unknown) => boolean;
|
|
49
|
+
_root?: boolean | undefined;
|
|
47
50
|
isTitle?: true | undefined;
|
|
48
51
|
placeholder: string;
|
|
49
52
|
} & {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToType } from '../index.server.js';
|
|
2
2
|
import type { TextAreaFieldBuilder } from './index.js';
|
|
3
|
-
export declare const toSchema: ToSchema<TextAreaFieldBuilder>;
|
|
4
3
|
export declare const toType: ToType<TextAreaFieldBuilder>;
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
import { templateUniqueRequired } from '../../adapter-sqlite/generate-schema/templates.server.js';
|
|
2
|
-
import { getSchemaColumnNames } from '../../adapter-sqlite/generate-schema/util.server.js';
|
|
3
|
-
export const toSchema = (field, parentPath) => {
|
|
4
|
-
const { camel, snake } = getSchemaColumnNames({ name: field.name, parentPath });
|
|
5
|
-
const suffix = templateUniqueRequired({ unique: false, required: field.raw.required }, typeof field.raw.defaultValue === 'string' ? field.raw.defaultValue : '');
|
|
6
|
-
if (field._generateSchema)
|
|
7
|
-
return field._generateSchema({ camel, snake, suffix });
|
|
8
|
-
return `${camel}: text('${snake}')${suffix}`;
|
|
9
|
-
};
|
|
10
1
|
export const toType = (field) => {
|
|
11
|
-
return `${field.name}${field.
|
|
2
|
+
return `${field.name}${field.get.required ? '' : '?'}: string`;
|
|
12
3
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
|
|
2
3
|
import { Field } from '../../../panel/components/fields/index.js';
|
|
3
|
-
import { root } from '../../../panel/components/fields/root.svelte.js';
|
|
4
4
|
import { Input } from '../../../panel/components/ui/input/index.js';
|
|
5
5
|
import { Clock } from '@lucide/svelte';
|
|
6
|
-
import type { TimeFieldProps } from './props';
|
|
6
|
+
import type { TimeFieldProps } from './props.js';
|
|
7
7
|
|
|
8
8
|
const { path, config, form }: TimeFieldProps = $props();
|
|
9
9
|
const field = $derived(form.useField(path || config.name, config));
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
};
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
|
-
<fieldset class="rz-time-field {config.className || ''}" use:
|
|
16
|
+
<fieldset class="rz-time-field {config.get.className || ''}" use:fieldset={field}>
|
|
17
17
|
<Field.Label {config} for={path || config.name} />
|
|
18
18
|
<div class="rz-time-field__input-wrapper">
|
|
19
19
|
<Input
|
|
20
20
|
type="time"
|
|
21
|
-
id={path}
|
|
22
|
-
name={path}
|
|
21
|
+
id={path || config.name}
|
|
22
|
+
name={path || config.name}
|
|
23
23
|
data-error={field.error ? '' : null}
|
|
24
24
|
value={field.value}
|
|
25
25
|
oninput={onInput}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TimeFieldBuilder } from '../index.js';
|
|
3
3
|
export type TimeFieldProps = {
|
|
4
4
|
path?: string;
|
|
5
|
-
config:
|
|
5
|
+
config: TimeFieldBuilder;
|
|
6
6
|
form: DocumentFormContext;
|
|
7
7
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DataType } from '../../core/fields/builders/form-field-builder.js';
|
|
1
2
|
import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
|
|
2
3
|
import type { DefaultValueFn, FormField } from '../types.js';
|
|
3
4
|
export declare const time: (name: string) => TimeFieldBuilder;
|
|
@@ -6,6 +7,7 @@ export declare class TimeFieldBuilder extends FormFieldBuilder<TimeField> {
|
|
|
6
7
|
constructor(name: string);
|
|
7
8
|
get component(): import("svelte").Component<import("./component/props").TimeFieldProps, {}, "">;
|
|
8
9
|
defaultValue(value: string | DefaultValueFn<string>): this;
|
|
10
|
+
get dataType(): DataType;
|
|
9
11
|
}
|
|
10
12
|
/****************************************************/
|
|
11
13
|
export type TimeField = FormField & {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToType } from '../index.server.js';
|
|
2
2
|
import type { TimeFieldBuilder } from './index.js';
|
|
3
|
-
export declare const toSchema: ToSchema<TimeFieldBuilder>;
|
|
4
3
|
export declare const toType: ToType<TimeFieldBuilder>;
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
import { templateUniqueRequired } from '../../adapter-sqlite/generate-schema/templates.server.js';
|
|
2
|
-
import { getSchemaColumnNames } from '../../adapter-sqlite/generate-schema/util.server.js';
|
|
3
|
-
export const toSchema = (field, parentPath) => {
|
|
4
|
-
const { camel, snake } = getSchemaColumnNames({ name: field.name, parentPath });
|
|
5
|
-
const suffix = templateUniqueRequired(field.raw, typeof field.raw.defaultValue === 'string' ? field.raw.defaultValue : '00:00');
|
|
6
|
-
if (field._generateSchema)
|
|
7
|
-
return field._generateSchema({ camel, snake, suffix });
|
|
8
|
-
return `${camel}: text('${snake}')${suffix}`;
|
|
9
|
-
};
|
|
10
1
|
export const toType = (field) => {
|
|
11
|
-
return `${field.name}${!field.
|
|
2
|
+
return `${field.name}${!field.get.required ? '?' : ''}: string`;
|
|
12
3
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
|
|
2
3
|
import { Field } from '../../../panel/components/fields/index.js';
|
|
3
|
-
import { root } from '../../../panel/components/fields/root.svelte.js';
|
|
4
4
|
import { Switch } from '../../../panel/components/ui/switch/index.js';
|
|
5
5
|
import { slugify } from '../../../util/string.js';
|
|
6
|
-
import type { ToggleProps } from './props';
|
|
6
|
+
import type { ToggleProps } from './props.js';
|
|
7
7
|
|
|
8
8
|
const { path, config, form }: ToggleProps = $props();
|
|
9
9
|
const field = $derived(form.useField<boolean>(path, config));
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
};
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
|
-
<fieldset class="rz-toggle-field {config.className || ''}" use:
|
|
17
|
+
<fieldset class="rz-toggle-field {config.get.className || ''}" use:fieldset={field}>
|
|
18
18
|
<div class="rz-toggle-field-wrap">
|
|
19
19
|
<Switch
|
|
20
20
|
data-error={field.error ? '' : null}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DocumentFormContext } from '../../../panel/context/documentForm.svelte.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ToggleFieldBuilder } from '../index.js';
|
|
3
3
|
export type ToggleProps = {
|
|
4
4
|
path: string;
|
|
5
|
-
config:
|
|
5
|
+
config: ToggleFieldBuilder;
|
|
6
6
|
form: DocumentFormContext;
|
|
7
7
|
};
|
|
@@ -11,6 +11,7 @@ export declare class ToggleFieldBuilder extends BooleanFieldBuilder<ToggleField>
|
|
|
11
11
|
compile(): {
|
|
12
12
|
type: "toggle";
|
|
13
13
|
defaultValue?: (boolean | DefaultValueFn<boolean>) | undefined;
|
|
14
|
+
name: string;
|
|
14
15
|
live?: boolean | undefined;
|
|
15
16
|
condition?: ((doc: any, siblings: any) => boolean) | undefined;
|
|
16
17
|
width?: import("../types.js").FieldWidth | undefined;
|
|
@@ -22,7 +23,6 @@ export declare class ToggleFieldBuilder extends BooleanFieldBuilder<ToggleField>
|
|
|
22
23
|
read: import("../types.js").FieldAccess;
|
|
23
24
|
update: import("../types.js").FieldAccess;
|
|
24
25
|
};
|
|
25
|
-
name: string;
|
|
26
26
|
hidden?: boolean | undefined;
|
|
27
27
|
validate?: import("../types.js").FieldValidationFunc<any> | undefined;
|
|
28
28
|
required?: boolean | undefined;
|
|
@@ -43,6 +43,7 @@ export declare class ToggleFieldBuilder extends BooleanFieldBuilder<ToggleField>
|
|
|
43
43
|
onChange?: import("../types.js").FieldHookClient[] | undefined;
|
|
44
44
|
} | undefined;
|
|
45
45
|
isEmpty: (value: unknown) => boolean;
|
|
46
|
+
_root?: boolean | undefined;
|
|
46
47
|
} & {
|
|
47
48
|
component: import("svelte").Component<any>;
|
|
48
49
|
cell?: import("svelte").Component<{
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToType } from '../index.server.js';
|
|
2
2
|
import type { ToggleFieldBuilder } from './index.js';
|
|
3
|
-
export declare const toSchema: ToSchema<ToggleFieldBuilder>;
|
|
4
3
|
export declare const toType: ToType<ToggleFieldBuilder>;
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
import { templateUniqueRequired } from '../../adapter-sqlite/generate-schema/templates.server.js';
|
|
2
|
-
import { getSchemaColumnNames } from '../../adapter-sqlite/generate-schema/util.server.js';
|
|
3
|
-
export const toSchema = (field, parentPath) => {
|
|
4
|
-
const { camel, snake } = getSchemaColumnNames({ name: field.name, parentPath });
|
|
5
|
-
const suffix = templateUniqueRequired(field.raw, typeof field.raw.defaultValue === 'boolean' ? field.raw.defaultValue : false);
|
|
6
|
-
if (field._generateSchema)
|
|
7
|
-
return field._generateSchema({ camel, snake, suffix });
|
|
8
|
-
return `${camel}: integer('${snake}', { mode: 'boolean' })${suffix}`;
|
|
9
|
-
};
|
|
10
1
|
export const toType = (field) => {
|
|
11
|
-
return `${field.name}${field.
|
|
2
|
+
return `${field.name}${field.get.required ? '?' : ''}: boolean`;
|
|
12
3
|
};
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import { emptyValuesFromFieldConfig, isFormField } from '../../../core/fields/util';
|
|
4
4
|
import type { Field } from '../../types.js';
|
|
5
5
|
import Button from '../../../panel/components/ui/button/button.svelte';
|
|
6
|
-
|
|
7
6
|
import type { Dic } from '../../../util/types';
|
|
8
7
|
import { Plus } from '@lucide/svelte';
|
|
9
8
|
import type { Snippet } from 'svelte';
|
|
@@ -19,7 +18,7 @@
|
|
|
19
18
|
const { class: className, fields, addItem, size, children }: Props = $props();
|
|
20
19
|
|
|
21
20
|
const add = () => {
|
|
22
|
-
const empty = emptyValuesFromFieldConfig(fields.
|
|
21
|
+
const empty = emptyValuesFromFieldConfig(fields.filter(isFormField));
|
|
23
22
|
addItem(empty);
|
|
24
23
|
};
|
|
25
24
|
</script>
|