hide restart-required fields when editing a profile section

fields that require a restart cannot take effect via profile switching,
so they are merged into hiddenFields when profileName is set
This commit is contained in:
Josh Hawkins 2026-03-12 10:56:08 -05:00
parent 611316906a
commit 0748766713

View File

@ -335,10 +335,20 @@ export function ConfigSection({
return rawSectionValue; return rawSectionValue;
}, [config, rawSectionValue]); }, [config, rawSectionValue]);
// When editing a profile, hide fields that require a restart since they
// cannot take effect via profile switching alone.
const effectiveHiddenFields = useMemo(() => {
if (!profileName || !sectionConfig.restartRequired?.length) {
return sectionConfig.hiddenFields;
}
const base = sectionConfig.hiddenFields ?? [];
return [...new Set([...base, ...sectionConfig.restartRequired])];
}, [profileName, sectionConfig.hiddenFields, sectionConfig.restartRequired]);
const sanitizeSectionData = useCallback( const sanitizeSectionData = useCallback(
(data: ConfigSectionData) => (data: ConfigSectionData) =>
sharedSanitizeSectionData(data, sectionConfig.hiddenFields), sharedSanitizeSectionData(data, effectiveHiddenFields),
[sectionConfig.hiddenFields], [effectiveHiddenFields],
); );
const formData = useMemo(() => { const formData = useMemo(() => {
@ -850,7 +860,7 @@ export function ConfigSection({
onValidationChange={setHasValidationErrors} onValidationChange={setHasValidationErrors}
fieldOrder={sectionConfig.fieldOrder} fieldOrder={sectionConfig.fieldOrder}
fieldGroups={sectionConfig.fieldGroups} fieldGroups={sectionConfig.fieldGroups}
hiddenFields={sectionConfig.hiddenFields} hiddenFields={effectiveHiddenFields}
advancedFields={sectionConfig.advancedFields} advancedFields={sectionConfig.advancedFields}
liveValidate={sectionConfig.liveValidate} liveValidate={sectionConfig.liveValidate}
uiSchema={sectionConfig.uiSchema} uiSchema={sectionConfig.uiSchema}
@ -889,7 +899,7 @@ export function ConfigSection({
renderers: wrappedRenderers, renderers: wrappedRenderers,
sectionDocs: sectionConfig.sectionDocs, sectionDocs: sectionConfig.sectionDocs,
fieldDocs: sectionConfig.fieldDocs, fieldDocs: sectionConfig.fieldDocs,
hiddenFields: sectionConfig.hiddenFields, hiddenFields: effectiveHiddenFields,
restartRequired: sectionConfig.restartRequired, restartRequired: sectionConfig.restartRequired,
requiresRestart, requiresRestart,
}} }}