Skip to content

Commit 0e19f0e

Browse files
committed
fix(dynamic-forms): change behavior viewSpec order for object forms
1 parent 5bbf2a2 commit 0e19f0e

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

src/lib/kit/components/Inputs/MultiOneOf/MultiOneOf.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,14 @@ export const MultiOneOf: React.FC<MultiOneOfProps> = (props) => {
5959
[spec.properties],
6060
);
6161

62+
const propertiesOrder = React.useMemo(
63+
() => (spec.viewSpec.order?.length ? spec.viewSpec.order : Object.keys(specProperties)),
64+
[spec.viewSpec.order, specProperties],
65+
);
66+
6267
const options = React.useMemo(
6368
() =>
64-
(spec.viewSpec.order || Object.keys(specProperties)).map((value) => {
69+
propertiesOrder.map((value) => {
6570
const title =
6671
spec.description?.[value] ||
6772
specProperties[value]?.viewSpec.layoutTitle ||
@@ -74,7 +79,7 @@ export const MultiOneOf: React.FC<MultiOneOfProps> = (props) => {
7479
content: title,
7580
};
7681
}),
77-
[spec.description, spec.viewSpec.order, specProperties],
82+
[propertiesOrder, spec.description, specProperties],
7883
);
7984

8085
const filterable = React.useMemo(() => (options.length || 0) > 9, [options.length]);

src/lib/kit/components/Inputs/ObjectBase/ObjectBase.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@ export const ObjectBase: React.FC<ObjectBaseProps> = ({
8282
: spec.properties;
8383

8484
const delimiter = spec.viewSpec.delimiter;
85-
const orderProperties = spec.viewSpec.order || Object.keys(specProperties);
85+
const orderProperties = spec.viewSpec.order?.length
86+
? spec.viewSpec.order
87+
: Object.keys(specProperties);
8688

8789
return (
8890
<div className={b('content', {inline})}>

src/lib/kit/components/Views/ObjectBaseView/ObjectBaseView.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ export const ObjectBaseView: React.FC<ObjectBaseViewProps> = ({
3131
: spec.properties;
3232

3333
const delimiter = spec.viewSpec.delimiter;
34-
const orderProperties = spec.viewSpec.order || Object.keys(specProperties);
34+
const orderProperties = spec.viewSpec.order?.length
35+
? spec.viewSpec.order
36+
: Object.keys(specProperties);
3537

3638
return (
3739
<div className={b('content', {inline})}>

src/lib/kit/hooks/useOneOf/useOneOf.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,14 @@ export const useOneOf = ({props, onTogglerChange}: UseOneOfParams) => {
8181
return undefined;
8282
}, [oneOfValue, specBooleanMap]);
8383

84+
const propertiesOrder = React.useMemo(
85+
() => (spec.viewSpec.order?.length ? spec.viewSpec.order : Object.keys(specProperties)),
86+
[spec.viewSpec.order, specProperties],
87+
);
88+
8489
const options = React.useMemo(
8590
() =>
86-
(spec.viewSpec.order || Object.keys(specProperties)).map((value) => {
91+
propertiesOrder.map((value) => {
8792
const title =
8893
spec.description?.[value] ||
8994
specProperties[value]?.viewSpec.layoutTitle ||
@@ -96,7 +101,7 @@ export const useOneOf = ({props, onTogglerChange}: UseOneOfParams) => {
96101
content: title,
97102
};
98103
}),
99-
[spec.description, spec.viewSpec.order, specProperties],
104+
[propertiesOrder, spec.description, specProperties],
100105
);
101106

102107
const togglerType = React.useMemo(() => {

0 commit comments

Comments
 (0)