From 13cdab50719252765fbe4cbc84d370a4700a9bb9 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Fri, 6 Feb 2026 09:43:53 -0600 Subject: [PATCH] add ui option to remove inner cards --- .../theme/fields/DetectorHardwareField.tsx | 18 +++++++---- .../theme/templates/ObjectFieldTemplate.tsx | 32 +++++++++++++++++++ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/web/src/components/config-form/theme/fields/DetectorHardwareField.tsx b/web/src/components/config-form/theme/fields/DetectorHardwareField.tsx index 3eab4fdb3..1e097c691 100644 --- a/web/src/components/config-form/theme/fields/DetectorHardwareField.tsx +++ b/web/src/components/config-form/theme/fields/DetectorHardwareField.tsx @@ -532,10 +532,19 @@ export function DetectorHardwareField(props: FieldProps) { const globalHidden = buildHiddenUiSchema(globalHiddenFields); const hiddenOverrides = buildHiddenUiSchema(hiddenByType[type] ?? []); const typeHidden = { type: { "ui:widget": "hidden" } } as UiSchema; + const nestedOverrides = { + "ui:options": { + disableNestedCard: true, + }, + } as UiSchema; const withGlobalHidden = mergeUiSchema(baseUiSchema, globalHidden); const withTypeHidden = mergeUiSchema(withGlobalHidden, hiddenOverrides); - return mergeUiSchema(withTypeHidden, typeHidden); + const withTypeHiddenAndOptions = mergeUiSchema( + withTypeHidden, + typeHidden, + ); + return mergeUiSchema(withTypeHiddenAndOptions, nestedOverrides); }, [globalHiddenFields, hiddenByType, uiSchema?.additionalProperties], ); @@ -785,12 +794,7 @@ export function DetectorHardwareField(props: FieldProps) { -
+
{renderInstanceForm(key, value)}
diff --git a/web/src/components/config-form/theme/templates/ObjectFieldTemplate.tsx b/web/src/components/config-form/theme/templates/ObjectFieldTemplate.tsx index bd06e4a29..7551c5733 100644 --- a/web/src/components/config-form/theme/templates/ObjectFieldTemplate.tsx +++ b/web/src/components/config-form/theme/templates/ObjectFieldTemplate.tsx @@ -56,6 +56,8 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) { const groupDefinitions = (uiSchema?.["ui:groups"] as Record | undefined) || {}; + const disableNestedCard = + uiSchema?.["ui:options"]?.disableNestedCard === true; const isHiddenProp = (prop: (typeof properties)[number]) => prop.content.props.uiSchema?.["ui:widget"] === "hidden"; @@ -250,6 +252,36 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) { ); } + if (disableNestedCard) { + return ( +
+ {hasCustomChildren ? ( + children + ) : ( + <> + {renderGroupedFields(regularProps)} + + + + {renderGroupedFields(advancedProps)} + + + )} +
+ ); + } + // Nested objects render as collapsible cards return (