Skip to content

Commit b5b2cce

Browse files
committed
[example] Fix actions application
1 parent c303125 commit b5b2cce

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

examples/optional-data-controls/src/routes/+page.svelte

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
<script lang="ts">
22
import { chain, fromFactories } from "@sjsf/form/lib/resolver";
33
import { getSimpleSchemaType } from "@sjsf/form/core";
4-
import { createForm, BasicForm, type Schema, type Config } from "@sjsf/form";
4+
import {
5+
createForm,
6+
BasicForm,
7+
type Schema,
8+
type Config,
9+
type ActionField,
10+
} from "@sjsf/form";
511
import OptionalObjectTemplate from "@sjsf/form/templates/extra/optional-object.svelte";
612
import OptionalArrayTemplate from "@sjsf/form/templates/extra/optional-array.svelte";
13+
import OptionalMultiFieldTemplate from "@sjsf/form/templates/extra/optional-multi-field.svelte";
714
import { clearEdit } from "@sjsf/form/fields/actions/clear-edit.svelte";
815
916
import * as defaults from "$lib/form-defaults";
@@ -158,19 +165,35 @@
158165
const theme = chain(
159166
fromFactories({
160167
objectTemplate: (cfg: Config) =>
161-
!cfg.required ? OptionalObjectTemplate : undefined,
168+
!cfg.required && cfg.schema.properties
169+
? OptionalObjectTemplate
170+
: undefined,
162171
arrayTemplate: (cfg: Config) =>
163172
!cfg.required ? OptionalArrayTemplate : undefined,
173+
multiFieldTemplate: (cfg: Config) =>
174+
!cfg.required ? OptionalMultiFieldTemplate : undefined,
164175
}),
165176
defaults.theme
166177
);
167178
168179
const extraUiOptions = fromFactories({
169-
action: (cfg: Config) => {
170-
if (!cfg.required) {
171-
const type = getSimpleSchemaType(cfg.schema);
172-
if (type === "array" || type === "object") {
173-
return clearEdit;
180+
actions: ({ required, schema }: Config) => {
181+
if (!required) {
182+
let key: ActionField | undefined;
183+
if (schema.oneOf) {
184+
key = "oneOfField";
185+
} else if (schema.anyOf) {
186+
key = "anyOfField";
187+
} else {
188+
const type = getSimpleSchemaType(schema);
189+
if (type === "array") {
190+
key = "arrayField";
191+
} else if (type === "object" && schema.properties) {
192+
key = "objectField";
193+
}
194+
}
195+
if (key) {
196+
return { [key]: clearEdit };
174197
}
175198
}
176199
return undefined;

0 commit comments

Comments
 (0)