includio-cms 0.5.2 → 0.5.5
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 +60 -0
- package/ROADMAP.md +29 -0
- package/dist/admin/api/rest/handler.d.ts +7 -0
- package/dist/admin/api/rest/handler.js +116 -0
- package/dist/admin/api/rest/middleware/apiKey.d.ts +6 -0
- package/dist/admin/api/rest/middleware/apiKey.js +45 -0
- package/dist/admin/api/rest/routes/collections.d.ts +5 -0
- package/dist/admin/api/rest/routes/collections.js +104 -0
- package/dist/admin/api/rest/routes/entries.d.ts +2 -0
- package/dist/admin/api/rest/routes/entries.js +37 -0
- package/dist/admin/api/rest/routes/languages.d.ts +1 -0
- package/dist/admin/api/rest/routes/languages.js +5 -0
- package/dist/admin/api/rest/routes/schema.d.ts +2 -0
- package/dist/admin/api/rest/routes/schema.js +78 -0
- package/dist/admin/api/rest/routes/singletons.d.ts +3 -0
- package/dist/admin/api/rest/routes/singletons.js +60 -0
- package/dist/admin/auth-client.d.ts +7 -7
- package/dist/admin/client/collection/collection-entries.svelte +56 -5
- package/dist/admin/client/collection/data-table.svelte +127 -18
- package/dist/admin/client/collection/data-table.svelte.d.ts +2 -0
- package/dist/admin/client/entry/entry-form.svelte +1 -0
- package/dist/admin/client/entry/entry.svelte +130 -123
- package/dist/admin/client/entry/hybrid/hybrid-preview.svelte +92 -9
- package/dist/admin/components/fields/blocks-field.svelte +142 -112
- package/dist/admin/components/fields/blocks-field.svelte.d.ts +10 -30
- package/dist/admin/components/fields/boolean-field.svelte +28 -38
- package/dist/admin/components/fields/boolean-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/checkboxes-field.svelte +12 -24
- package/dist/admin/components/fields/checkboxes-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/content-field.svelte +4 -17
- package/dist/admin/components/fields/content-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/date-field.svelte +8 -21
- package/dist/admin/components/fields/date-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/datetime-field.svelte +8 -21
- package/dist/admin/components/fields/datetime-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/field-renderer.svelte +32 -19
- package/dist/admin/components/fields/field-renderer.svelte.d.ts +1 -1
- package/dist/admin/components/fields/field-value-bridge.svelte +21 -0
- package/dist/admin/components/fields/field-value-bridge.svelte.d.ts +31 -0
- package/dist/admin/components/fields/fields-form.svelte +13 -10
- package/dist/admin/components/fields/file-field.svelte +12 -27
- package/dist/admin/components/fields/file-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/image-field.svelte +13 -28
- package/dist/admin/components/fields/image-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/media-field.svelte +15 -30
- package/dist/admin/components/fields/media-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/number-field.svelte +6 -20
- package/dist/admin/components/fields/number-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/object-field.svelte +26 -29
- package/dist/admin/components/fields/object-field.svelte.d.ts +11 -31
- package/dist/admin/components/fields/radio-field.svelte +8 -20
- package/dist/admin/components/fields/radio-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/relation-field.svelte +28 -40
- package/dist/admin/components/fields/relation-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/richtext-field.svelte +4 -17
- package/dist/admin/components/fields/richtext-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/select-field.svelte +14 -28
- package/dist/admin/components/fields/select-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/seo-field.svelte +5 -12
- package/dist/admin/components/fields/seo-field.svelte.d.ts +8 -28
- package/dist/admin/components/fields/simple-array-field.svelte +29 -42
- package/dist/admin/components/fields/simple-array-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/slug-field.svelte +6 -11
- package/dist/admin/components/fields/slug-field.svelte.d.ts +6 -26
- package/dist/admin/components/fields/text-field-wrapper.svelte +22 -40
- package/dist/admin/components/fields/text-field.svelte +7 -19
- package/dist/admin/components/fields/text-field.svelte.d.ts +5 -27
- package/dist/admin/components/fields/url-field-wrapper.svelte +8 -3
- package/dist/admin/components/fields/url-field.svelte +294 -128
- package/dist/admin/components/fields/url-field.svelte.d.ts +5 -27
- package/dist/admin/components/layout/layout-renderer.svelte +8 -6
- package/dist/admin/components/layout/nav-collections.svelte +2 -1
- package/dist/admin/components/layout/nav-forms.svelte +2 -1
- package/dist/admin/components/layout/nav-singletons.svelte +2 -1
- package/dist/admin/components/tiptap/InlineBlockNodeView.svelte +221 -31
- package/dist/admin/components/tiptap/content-editor.svelte +13 -2
- package/dist/admin/components/tiptap/inline-block-node.d.ts +1 -0
- package/dist/admin/components/tiptap/inline-block-node.js +18 -1
- package/dist/admin/components/tiptap/slash-command.js +2 -3
- package/dist/admin/components/tiptap/standalone-form.d.ts +7 -0
- package/dist/admin/components/tiptap/standalone-form.js +31 -0
- package/dist/admin/components/tiptap/tiptap-editor.svelte +7 -0
- package/dist/admin/remote/entry.remote.d.ts +9 -1
- package/dist/admin/remote/entry.remote.js +30 -2
- package/dist/admin/styles/admin.css +10 -0
- package/dist/admin/utils/fieldCondition.d.ts +6 -0
- package/dist/admin/utils/fieldCondition.js +20 -0
- package/dist/cli/scaffold/admin.js +8 -0
- package/dist/components/ui/switch/index.d.ts +2 -0
- package/dist/components/ui/switch/index.js +4 -0
- package/dist/components/ui/switch/switch.svelte +26 -0
- package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
- package/dist/core/cms.d.ts +2 -1
- package/dist/core/cms.js +2 -0
- package/dist/core/fields/fieldSchemaToTs.js +15 -3
- package/dist/core/fields/formFieldSchemaToTs.js +22 -6
- package/dist/core/fields/urlUtils.d.ts +14 -0
- package/dist/core/fields/urlUtils.js +21 -0
- package/dist/core/server/entries/operations/get.js +2 -1
- package/dist/core/server/entries/operations/update.d.ts +1 -0
- package/dist/core/server/entries/operations/update.js +5 -1
- package/dist/core/server/fields/populateEntry.js +43 -0
- package/dist/core/server/fields/resolveImageFields.js +33 -1
- package/dist/core/server/fields/resolveRelationFields.js +46 -0
- package/dist/core/server/fields/resolveRichtextLinks.js +15 -1
- package/dist/core/server/fields/resolveUrlFields.js +65 -0
- package/dist/core/server/generator/formFieldSchemaToString.js +40 -9
- package/dist/core/server/generator/formFields.js +2 -0
- package/dist/core/server/generator/generator.js +25 -1
- package/dist/db-postgres/schema/entry.d.ts +17 -0
- package/dist/db-postgres/schema/entry.js +4 -2
- package/dist/schemas/field/url.d.ts +2 -0
- package/dist/schemas/field/url.js +4 -2
- package/dist/server/auth.d.ts +6 -6
- package/dist/sveltekit/server/handle.js +1 -0
- package/dist/types/cms.d.ts +7 -0
- package/dist/types/collections.d.ts +2 -0
- package/dist/types/entries.d.ts +7 -1
- package/dist/types/fields.d.ts +9 -0
- package/dist/types/formFields.d.ts +15 -2
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +1 -0
- package/dist/updates/0.5.3/index.d.ts +2 -0
- package/dist/updates/0.5.3/index.js +19 -0
- package/dist/updates/0.5.4/index.d.ts +2 -0
- package/dist/updates/0.5.4/index.js +15 -0
- package/dist/updates/0.5.5/index.d.ts +2 -0
- package/dist/updates/0.5.5/index.js +20 -0
- package/dist/updates/index.js +4 -1
- package/package.json +7 -1
- package/dist/admin/components/fields/standalone-field-renderer.svelte +0 -148
- package/dist/admin/components/fields/standalone-field-renderer.svelte.d.ts +0 -9
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
|
|
2
1
|
import type { FileField } from '../../../types/fields.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
form: SuperForm<T>;
|
|
7
|
-
path: FormPathLeaves<T, string | string[] | undefined>;
|
|
8
|
-
};
|
|
9
|
-
exports: {};
|
|
10
|
-
bindings: "";
|
|
11
|
-
slots: {};
|
|
12
|
-
events: {};
|
|
2
|
+
type Props = {
|
|
3
|
+
field: FileField;
|
|
4
|
+
value: string | string[] | undefined;
|
|
13
5
|
};
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
17
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
18
|
-
bindings(): "";
|
|
19
|
-
exports(): {};
|
|
20
|
-
}
|
|
21
|
-
interface $$IsomorphicComponent {
|
|
22
|
-
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
-
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
-
}
|
|
28
|
-
declare const FileField: $$IsomorphicComponent;
|
|
29
|
-
type FileField<T extends Record<string, unknown>> = InstanceType<typeof FileField<T>>;
|
|
6
|
+
declare const FileField: import("svelte").Component<Props, {}, "value">;
|
|
7
|
+
type FileField = ReturnType<typeof FileField>;
|
|
30
8
|
export default FileField;
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
type T = Record<string, unknown>;
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
1
|
+
<script lang="ts">
|
|
6
2
|
import * as Dialog from '../../../components/ui/dialog/index.js';
|
|
7
|
-
import {
|
|
8
|
-
formFieldProxy,
|
|
9
|
-
type FormFieldProxy,
|
|
10
|
-
type FormPathLeaves,
|
|
11
|
-
type SuperForm
|
|
12
|
-
} from 'sveltekit-superforms';
|
|
13
3
|
import { onMount } from 'svelte';
|
|
14
4
|
import Button from '../../../components/ui/button/button.svelte';
|
|
15
5
|
import type { ImageField } from '../../../types/fields.js';
|
|
@@ -42,31 +32,26 @@
|
|
|
42
32
|
|
|
43
33
|
type Props = {
|
|
44
34
|
field: ImageField;
|
|
45
|
-
|
|
46
|
-
path: FormPathLeaves<T, string | string[] | undefined>;
|
|
35
|
+
value: string | string[] | undefined;
|
|
47
36
|
};
|
|
48
37
|
|
|
49
|
-
let { field,
|
|
50
|
-
|
|
51
|
-
const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<
|
|
52
|
-
string | string[] | undefined
|
|
53
|
-
>;
|
|
38
|
+
let { field, value = $bindable(), ...props }: Props = $props();
|
|
54
39
|
|
|
55
40
|
onMount(() => {
|
|
56
|
-
if (
|
|
57
|
-
|
|
41
|
+
if (value === undefined) {
|
|
42
|
+
value = field.multiple ? [] : '';
|
|
58
43
|
}
|
|
59
44
|
});
|
|
60
45
|
</script>
|
|
61
46
|
|
|
62
|
-
{#if
|
|
47
|
+
{#if value !== undefined}
|
|
63
48
|
<Dialog.Root>
|
|
64
49
|
<Dialog.Trigger>
|
|
65
50
|
{#snippet child({ props })}
|
|
66
|
-
{#if
|
|
51
|
+
{#if value && ((typeof value === 'string' && value !== '') || (Array.isArray(value) && value.length > 0))}
|
|
67
52
|
<div class="group/dialog-trigger relative aspect-square max-w-64 overflow-hidden rounded-2xl border">
|
|
68
|
-
{#if typeof
|
|
69
|
-
{#await remotes.getFileById(
|
|
53
|
+
{#if typeof value === 'string'}
|
|
54
|
+
{#await remotes.getFileById(value)}
|
|
70
55
|
<div class="animate-pulse bg-muted w-full h-full rounded-xl"></div>
|
|
71
56
|
{:then file}
|
|
72
57
|
{#if file}
|
|
@@ -83,8 +68,8 @@
|
|
|
83
68
|
</button>
|
|
84
69
|
{/if}
|
|
85
70
|
{/await}
|
|
86
|
-
{:else if Array.isArray(
|
|
87
|
-
{@const valueArr =
|
|
71
|
+
{:else if Array.isArray(value) && value.length > 0}
|
|
72
|
+
{@const valueArr = value}
|
|
88
73
|
{#await remotes.getMediaFiles({ data: { ids: valueArr } })}
|
|
89
74
|
<div class="animate-pulse bg-muted w-full h-full rounded-xl"></div>
|
|
90
75
|
{:then files}
|
|
@@ -151,7 +136,7 @@
|
|
|
151
136
|
class="h-8"
|
|
152
137
|
onclick={(e) => {
|
|
153
138
|
e.stopPropagation();
|
|
154
|
-
|
|
139
|
+
value = field.multiple ? [] : '';
|
|
155
140
|
}}
|
|
156
141
|
>
|
|
157
142
|
<X class="h-4 w-4" />
|
|
@@ -176,7 +161,7 @@
|
|
|
176
161
|
{/snippet}
|
|
177
162
|
</Dialog.Trigger>
|
|
178
163
|
<Dialog.Content class="h-[85vh] w-full max-w-6xl! sm:max-w-6xl! overflow-hidden p-0 flex flex-col">
|
|
179
|
-
<MediaSelector bind:selected={
|
|
164
|
+
<MediaSelector bind:selected={value} multiple={field.multiple} accept="image/*" />
|
|
180
165
|
</Dialog.Content>
|
|
181
166
|
</Dialog.Root>
|
|
182
167
|
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
|
|
2
1
|
import type { ImageField } from '../../../types/fields.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
form: SuperForm<T>;
|
|
7
|
-
path: FormPathLeaves<T, string | string[] | undefined>;
|
|
8
|
-
};
|
|
9
|
-
exports: {};
|
|
10
|
-
bindings: "";
|
|
11
|
-
slots: {};
|
|
12
|
-
events: {};
|
|
2
|
+
type Props = {
|
|
3
|
+
field: ImageField;
|
|
4
|
+
value: string | string[] | undefined;
|
|
13
5
|
};
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
17
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
18
|
-
bindings(): "";
|
|
19
|
-
exports(): {};
|
|
20
|
-
}
|
|
21
|
-
interface $$IsomorphicComponent {
|
|
22
|
-
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
-
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
-
}
|
|
28
|
-
declare const ImageField: $$IsomorphicComponent;
|
|
29
|
-
type ImageField<T extends Record<string, unknown>> = InstanceType<typeof ImageField<T>>;
|
|
6
|
+
declare const ImageField: import("svelte").Component<Props, {}, "value">;
|
|
7
|
+
type ImageField = ReturnType<typeof ImageField>;
|
|
30
8
|
export default ImageField;
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
type T = Record<string, unknown>;
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
1
|
+
<script lang="ts">
|
|
6
2
|
import * as Dialog from '../../../components/ui/dialog/index.js';
|
|
7
|
-
import {
|
|
8
|
-
formFieldProxy,
|
|
9
|
-
type FormFieldProxy,
|
|
10
|
-
type FormPathLeaves,
|
|
11
|
-
type SuperForm
|
|
12
|
-
} from 'sveltekit-superforms';
|
|
13
3
|
import { onMount } from 'svelte';
|
|
14
4
|
import Button from '../../../components/ui/button/button.svelte';
|
|
15
5
|
import type { MediaField } from '../../../types/fields.js';
|
|
@@ -110,19 +100,14 @@
|
|
|
110
100
|
|
|
111
101
|
type Props = {
|
|
112
102
|
field: MediaField;
|
|
113
|
-
|
|
114
|
-
path: FormPathLeaves<T, string | string[] | undefined>;
|
|
103
|
+
value: string | string[] | undefined;
|
|
115
104
|
};
|
|
116
105
|
|
|
117
|
-
let { field,
|
|
118
|
-
|
|
119
|
-
const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<
|
|
120
|
-
string | string[] | undefined
|
|
121
|
-
>;
|
|
106
|
+
let { field, value = $bindable(), ...props }: Props = $props();
|
|
122
107
|
|
|
123
108
|
onMount(() => {
|
|
124
|
-
if (
|
|
125
|
-
|
|
109
|
+
if (value === undefined) {
|
|
110
|
+
value = field.multiple ? [] : '';
|
|
126
111
|
}
|
|
127
112
|
});
|
|
128
113
|
</script>
|
|
@@ -203,14 +188,14 @@
|
|
|
203
188
|
{/if}
|
|
204
189
|
{/snippet}
|
|
205
190
|
|
|
206
|
-
{#if
|
|
191
|
+
{#if value !== undefined}
|
|
207
192
|
<Dialog.Root>
|
|
208
193
|
<Dialog.Trigger>
|
|
209
194
|
{#snippet child({ props })}
|
|
210
|
-
{#if
|
|
195
|
+
{#if value && ((typeof value === 'string' && value !== '') || (Array.isArray(value) && value.length > 0))}
|
|
211
196
|
<div class="max-w-96">
|
|
212
|
-
{#if typeof
|
|
213
|
-
{#await remotes.getFileById(
|
|
197
|
+
{#if typeof value === 'string'}
|
|
198
|
+
{#await remotes.getFileById(value)}
|
|
214
199
|
<div class="animate-pulse bg-muted w-full aspect-video rounded-xl"></div>
|
|
215
200
|
{:then file}
|
|
216
201
|
{#if file}
|
|
@@ -223,7 +208,7 @@
|
|
|
223
208
|
{lang[interfaceLanguage.current].change}
|
|
224
209
|
</Button>
|
|
225
210
|
{#if !field.required}
|
|
226
|
-
<Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation();
|
|
211
|
+
<Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); value = ''; }}>
|
|
227
212
|
<X class="h-4 w-4" />
|
|
228
213
|
{lang[interfaceLanguage.current].remove}
|
|
229
214
|
</Button>
|
|
@@ -246,7 +231,7 @@
|
|
|
246
231
|
{lang[interfaceLanguage.current].change}
|
|
247
232
|
</Button>
|
|
248
233
|
{#if !field.required}
|
|
249
|
-
<Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation();
|
|
234
|
+
<Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); value = ''; }}>
|
|
250
235
|
<X class="h-4 w-4" />
|
|
251
236
|
{lang[interfaceLanguage.current].remove}
|
|
252
237
|
</Button>
|
|
@@ -256,8 +241,8 @@
|
|
|
256
241
|
{/if}
|
|
257
242
|
{/if}
|
|
258
243
|
{/await}
|
|
259
|
-
{:else if Array.isArray(
|
|
260
|
-
{@const valueArr =
|
|
244
|
+
{:else if Array.isArray(value) && value.length > 0}
|
|
245
|
+
{@const valueArr = value}
|
|
261
246
|
{#await remotes.getMediaFiles({ data: { ids: valueArr } })}
|
|
262
247
|
<div class="animate-pulse bg-muted w-full aspect-video rounded-xl"></div>
|
|
263
248
|
{:then files}
|
|
@@ -304,7 +289,7 @@
|
|
|
304
289
|
{lang[interfaceLanguage.current].change}
|
|
305
290
|
</Button>
|
|
306
291
|
{#if !field.required}
|
|
307
|
-
<Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation();
|
|
292
|
+
<Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); value = field.multiple ? [] : ''; }}>
|
|
308
293
|
<X class="h-4 w-4" />
|
|
309
294
|
{lang[interfaceLanguage.current].remove}
|
|
310
295
|
</Button>
|
|
@@ -331,7 +316,7 @@
|
|
|
331
316
|
{/snippet}
|
|
332
317
|
</Dialog.Trigger>
|
|
333
318
|
<Dialog.Content class="h-[85vh] w-full max-w-6xl! sm:max-w-6xl! overflow-hidden p-0 flex flex-col">
|
|
334
|
-
<MediaSelector bind:selected={
|
|
319
|
+
<MediaSelector bind:selected={value} multiple={field.multiple} accept={field.accept} />
|
|
335
320
|
</Dialog.Content>
|
|
336
321
|
</Dialog.Root>
|
|
337
322
|
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
|
|
2
1
|
import type { MediaField } from '../../../types/fields.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
form: SuperForm<T>;
|
|
7
|
-
path: FormPathLeaves<T, string | string[] | undefined>;
|
|
8
|
-
};
|
|
9
|
-
exports: {};
|
|
10
|
-
bindings: "";
|
|
11
|
-
slots: {};
|
|
12
|
-
events: {};
|
|
2
|
+
type Props = {
|
|
3
|
+
field: MediaField;
|
|
4
|
+
value: string | string[] | undefined;
|
|
13
5
|
};
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
17
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
18
|
-
bindings(): "";
|
|
19
|
-
exports(): {};
|
|
20
|
-
}
|
|
21
|
-
interface $$IsomorphicComponent {
|
|
22
|
-
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
-
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
-
}
|
|
28
|
-
declare const MediaField: $$IsomorphicComponent;
|
|
29
|
-
type MediaField<T extends Record<string, unknown>> = InstanceType<typeof MediaField<T>>;
|
|
6
|
+
declare const MediaField: import("svelte").Component<Props, {}, "value">;
|
|
7
|
+
type MediaField = ReturnType<typeof MediaField>;
|
|
30
8
|
export default MediaField;
|
|
@@ -1,34 +1,20 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
type T = Record<string, unknown>;
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
1
|
+
<script lang="ts">
|
|
6
2
|
import Input from '../../../components/ui/input/input.svelte';
|
|
7
|
-
import Textarea from '../../../components/ui/textarea/textarea.svelte';
|
|
8
3
|
import type { NumberField } from '../../../types/fields.js';
|
|
9
4
|
import { onMount } from 'svelte';
|
|
10
|
-
import {
|
|
11
|
-
formFieldProxy,
|
|
12
|
-
type FormFieldProxy,
|
|
13
|
-
type FormPathLeaves,
|
|
14
|
-
type SuperForm
|
|
15
|
-
} from 'sveltekit-superforms';
|
|
16
5
|
|
|
17
6
|
type Props = {
|
|
18
7
|
field: NumberField;
|
|
19
|
-
|
|
20
|
-
path: FormPathLeaves<T, number | undefined>;
|
|
8
|
+
value: number | undefined;
|
|
21
9
|
};
|
|
22
10
|
|
|
23
|
-
let { field,
|
|
24
|
-
|
|
25
|
-
const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<number | undefined>;
|
|
11
|
+
let { field, value = $bindable(), ...props }: Props = $props();
|
|
26
12
|
|
|
27
13
|
onMount(() => {
|
|
28
|
-
if (
|
|
29
|
-
|
|
14
|
+
if (value === undefined && field.defaultValue !== undefined) {
|
|
15
|
+
value = field.defaultValue;
|
|
30
16
|
}
|
|
31
17
|
});
|
|
32
18
|
</script>
|
|
33
19
|
|
|
34
|
-
<Input {...props} bind:value
|
|
20
|
+
<Input {...props} bind:value type="number" min={field.min} max={field.max} step={field.step} />
|
|
@@ -1,30 +1,8 @@
|
|
|
1
1
|
import type { NumberField } from '../../../types/fields.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
field: NumberField;
|
|
6
|
-
form: SuperForm<T>;
|
|
7
|
-
path: FormPathLeaves<T, number | undefined>;
|
|
8
|
-
};
|
|
9
|
-
exports: {};
|
|
10
|
-
bindings: "";
|
|
11
|
-
slots: {};
|
|
12
|
-
events: {};
|
|
2
|
+
type Props = {
|
|
3
|
+
field: NumberField;
|
|
4
|
+
value: number | undefined;
|
|
13
5
|
};
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
17
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
18
|
-
bindings(): "";
|
|
19
|
-
exports(): {};
|
|
20
|
-
}
|
|
21
|
-
interface $$IsomorphicComponent {
|
|
22
|
-
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
-
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
-
}
|
|
28
|
-
declare const NumberField: $$IsomorphicComponent;
|
|
29
|
-
type NumberField<T extends Record<string, unknown>> = InstanceType<typeof NumberField<T>>;
|
|
6
|
+
declare const NumberField: import("svelte").Component<Props, {}, "value">;
|
|
7
|
+
type NumberField = ReturnType<typeof NumberField>;
|
|
30
8
|
export default NumberField;
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
type T = Record<string, unknown>;
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
1
|
+
<script lang="ts">
|
|
6
2
|
import {
|
|
7
3
|
formFieldProxy,
|
|
8
|
-
type FormFieldProxy,
|
|
9
4
|
type FormPathLeaves,
|
|
10
5
|
type SuperForm
|
|
11
6
|
} from 'sveltekit-superforms';
|
|
12
7
|
import FieldRenderer from './field-renderer.svelte';
|
|
13
8
|
import { joinPath, normalizePath } from '../../utils/objectPath.js';
|
|
14
9
|
import type { ObjectField, ObjectFieldData } from '../../../types/fields.js';
|
|
10
|
+
import { evaluateCondition } from '../../utils/fieldCondition.js';
|
|
15
11
|
import { onMount } from 'svelte';
|
|
16
12
|
import * as Item from '../../../components/ui/item/index.js';
|
|
17
13
|
import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
|
|
@@ -21,8 +17,8 @@
|
|
|
21
17
|
type Props = {
|
|
22
18
|
objectFieldType?: 'default' | 'inline';
|
|
23
19
|
field: ObjectField;
|
|
24
|
-
form: SuperForm<
|
|
25
|
-
path: FormPathLeaves<
|
|
20
|
+
form: SuperForm<Record<string, unknown>>;
|
|
21
|
+
path: FormPathLeaves<Record<string, unknown>>;
|
|
26
22
|
focusedPath?: string | null;
|
|
27
23
|
flashingPath?: string | null;
|
|
28
24
|
depth?: number;
|
|
@@ -31,9 +27,8 @@
|
|
|
31
27
|
let { field, form, path, objectFieldType = 'default', focusedPath = null, flashingPath = null, depth = 0, ...props }: Props = $props();
|
|
32
28
|
|
|
33
29
|
const interfaceLanguage = useInterfaceLanguage();
|
|
34
|
-
const {
|
|
35
|
-
|
|
36
|
-
>;
|
|
30
|
+
const { form: formData } = form;
|
|
31
|
+
const { value } = formFieldProxy(form, path) as { value: import('svelte/store').Writable<ObjectFieldData | undefined> };
|
|
37
32
|
|
|
38
33
|
onMount(() => {
|
|
39
34
|
if (!$value) {
|
|
@@ -64,24 +59,26 @@
|
|
|
64
59
|
{#snippet content()}
|
|
65
60
|
<div class="space-y-4">
|
|
66
61
|
{#each field.fields as f}
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
62
|
+
{#if evaluateCondition(f.showWhen, (slug) => $value?.data?.[slug] ?? $formData[slug])}
|
|
63
|
+
{@const fieldPath = joinPath(path, 'data', f.slug)}
|
|
64
|
+
{@const showFlash = isFlashing(fieldPath)}
|
|
65
|
+
<div
|
|
66
|
+
data-field-path={fieldPath}
|
|
67
|
+
class={cn(
|
|
68
|
+
'rounded-lg transition-all duration-500',
|
|
69
|
+
showFlash && 'ring-2 ring-primary ring-offset-2 bg-primary/5'
|
|
70
|
+
)}
|
|
71
|
+
>
|
|
72
|
+
<FieldRenderer
|
|
73
|
+
field={f}
|
|
74
|
+
{form}
|
|
75
|
+
path={fieldPath}
|
|
76
|
+
{focusedPath}
|
|
77
|
+
{flashingPath}
|
|
78
|
+
depth={depth + 1}
|
|
79
|
+
/>
|
|
80
|
+
</div>
|
|
81
|
+
{/if}
|
|
85
82
|
{/each}
|
|
86
83
|
</div>
|
|
87
84
|
{/snippet}
|
|
@@ -1,34 +1,14 @@
|
|
|
1
1
|
import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
|
|
2
|
-
import type { ObjectField
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
depth?: number;
|
|
12
|
-
};
|
|
13
|
-
exports: {};
|
|
14
|
-
bindings: "";
|
|
15
|
-
slots: {};
|
|
16
|
-
events: {};
|
|
2
|
+
import type { ObjectField } from '../../../types/fields.js';
|
|
3
|
+
type Props = {
|
|
4
|
+
objectFieldType?: 'default' | 'inline';
|
|
5
|
+
field: ObjectField;
|
|
6
|
+
form: SuperForm<Record<string, unknown>>;
|
|
7
|
+
path: FormPathLeaves<Record<string, unknown>>;
|
|
8
|
+
focusedPath?: string | null;
|
|
9
|
+
flashingPath?: string | null;
|
|
10
|
+
depth?: number;
|
|
17
11
|
};
|
|
18
|
-
declare
|
|
19
|
-
|
|
20
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
21
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
22
|
-
bindings(): "";
|
|
23
|
-
exports(): {};
|
|
24
|
-
}
|
|
25
|
-
interface $$IsomorphicComponent {
|
|
26
|
-
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
27
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
28
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
29
|
-
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
30
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
31
|
-
}
|
|
32
|
-
declare const ObjectField: $$IsomorphicComponent;
|
|
33
|
-
type ObjectField<T extends Record<string, unknown>> = InstanceType<typeof ObjectField<T>>;
|
|
12
|
+
declare const ObjectField: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type ObjectField = ReturnType<typeof ObjectField>;
|
|
34
14
|
export default ObjectField;
|
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
type T = Record<string, unknown>;
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
6
|
-
import {
|
|
7
|
-
formFieldProxy,
|
|
8
|
-
type FormFieldProxy,
|
|
9
|
-
type FormPathLeaves,
|
|
10
|
-
type SuperForm
|
|
11
|
-
} from 'sveltekit-superforms';
|
|
1
|
+
<script lang="ts">
|
|
12
2
|
import { onMount } from 'svelte';
|
|
13
|
-
import type {
|
|
3
|
+
import type { RadioField } from '../../../types/fields.js';
|
|
14
4
|
import * as Form from '../../../components/ui/form/index.js';
|
|
15
5
|
import * as RadioGroup from '../../../components/ui/radio-group/index.js';
|
|
16
6
|
import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
|
|
@@ -18,24 +8,22 @@
|
|
|
18
8
|
|
|
19
9
|
type Props = {
|
|
20
10
|
field: RadioField;
|
|
21
|
-
|
|
22
|
-
path: FormPathLeaves<T, string | undefined>;
|
|
11
|
+
value: string | undefined;
|
|
23
12
|
};
|
|
24
13
|
|
|
25
|
-
let { field,
|
|
14
|
+
let { field, value = $bindable(), ...props }: Props = $props();
|
|
26
15
|
|
|
27
16
|
const interfaceLanguage = useInterfaceLanguage();
|
|
28
|
-
const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<string | undefined>;
|
|
29
17
|
|
|
30
18
|
onMount(() => {
|
|
31
|
-
if (
|
|
32
|
-
|
|
19
|
+
if (value === undefined) {
|
|
20
|
+
value = field.defaultValue ?? '';
|
|
33
21
|
}
|
|
34
22
|
});
|
|
35
23
|
</script>
|
|
36
24
|
|
|
37
|
-
{#if
|
|
38
|
-
<RadioGroup.Root bind:value
|
|
25
|
+
{#if value !== undefined}
|
|
26
|
+
<RadioGroup.Root bind:value class="flex flex-col space-y-1">
|
|
39
27
|
{#each field.options as option}
|
|
40
28
|
<div class="flex items-center space-y-0 space-x-3">
|
|
41
29
|
<Form.Control>
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
|
|
2
1
|
import type { RadioField } from '../../../types/fields.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
form: SuperForm<T>;
|
|
7
|
-
path: FormPathLeaves<T, string | undefined>;
|
|
8
|
-
};
|
|
9
|
-
exports: {};
|
|
10
|
-
bindings: "";
|
|
11
|
-
slots: {};
|
|
12
|
-
events: {};
|
|
2
|
+
type Props = {
|
|
3
|
+
field: RadioField;
|
|
4
|
+
value: string | undefined;
|
|
13
5
|
};
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
17
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
18
|
-
bindings(): "";
|
|
19
|
-
exports(): {};
|
|
20
|
-
}
|
|
21
|
-
interface $$IsomorphicComponent {
|
|
22
|
-
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
-
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
-
}
|
|
28
|
-
declare const RadioField: $$IsomorphicComponent;
|
|
29
|
-
type RadioField<T extends Record<string, unknown>> = InstanceType<typeof RadioField<T>>;
|
|
6
|
+
declare const RadioField: import("svelte").Component<Props, {}, "value">;
|
|
7
|
+
type RadioField = ReturnType<typeof RadioField>;
|
|
30
8
|
export default RadioField;
|