Hide field layout settings for normal field components, and only show them when editing from within a form block

This commit is contained in:
Andrew Kingston 2023-10-27 11:42:01 +01:00
parent e2c2f5e2a6
commit b1f2337849
3 changed files with 35 additions and 5 deletions

View File

@ -134,6 +134,7 @@
<span>{field.field}</span>
</div>
<ComponentSettingsSection
includeHidden
componentInstance={pseudoComponentInstance}
componentDefinition={parsedComponentDef}
isScreen={false}

View File

@ -16,10 +16,16 @@
export let isScreen = false
export let onUpdateSetting
export let showSectionTitle = true
export let includeHidden = false
$: sections = getSections(componentInstance, componentDefinition, isScreen)
$: sections = getSections(
componentInstance,
componentDefinition,
isScreen,
includeHidden
)
const getSections = (instance, definition, isScreen) => {
const getSections = (instance, definition, isScreen, includeHidden) => {
const settings = definition?.settings ?? []
const generalSettings = settings.filter(setting => !setting.section)
const customSections = settings.filter(setting => setting.section)
@ -38,7 +44,12 @@
return
}
section.settings.forEach(setting => {
setting.visible = canRenderControl(instance, setting, isScreen)
setting.visible = canRenderControl(
instance,
setting,
isScreen,
includeHidden
)
})
section.visible =
section.name === "General" ||
@ -108,16 +119,20 @@
})
}
const canRenderControl = (instance, setting, isScreen) => {
const canRenderControl = (instance, setting, isScreen, includeHidden) => {
// Prevent rendering on click setting for screens
if (setting?.type === "event" && isScreen) {
return false
}
// Check we have a component to render for this setting
const control = getComponentForSetting(setting)
if (!control) {
return false
}
// Check if setting is hidden
if (setting.hidden && !includeHidden) {
return false
}
return shouldDisplay(instance, setting)
}
</script>

View File

@ -2603,6 +2603,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -2688,6 +2689,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -2768,6 +2770,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -2853,6 +2856,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3049,6 +3053,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3239,6 +3244,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3347,6 +3353,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3454,6 +3461,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3563,6 +3571,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3692,6 +3701,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3896,6 +3906,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -3992,6 +4003,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -4072,6 +4084,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [
@ -6094,6 +6107,7 @@
"label": "Layout",
"key": "span",
"defaultValue": 6,
"hidden": true,
"showInBar": true,
"barStyle": "buttons",
"options": [