Bug 40191: Handle resources without detail view in navigation options

Fixes an edge case where resources without a dedicated show/detail component
(like Record Sources) would show invalid navigation options.

- ResourceFormSave: Filter out "show" option when no_show is true
- RecordSourcesResource: Set no_show flag to hide inappropriate options

Ensures the split button menu only shows valid navigation targets.

Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Matt Blenkinsop 2025-10-21 10:20:13 +01:00 committed by Lucas Gass
parent 671ecb0731
commit ce6367fede
No known key found for this signature in database
GPG Key ID: 60B447398B0D36CA
2 changed files with 7 additions and 2 deletions

View File

@ -40,6 +40,7 @@ export default {
newLabel: $__("New record source"),
},
props,
navigationOnFormSave: "RecordSourcesList",
resourceAttrs: [
{
name: "record_source_id",
@ -96,7 +97,7 @@ export default {
baseResource.setMessage(
$__("Record source updated!")
);
return recordResource
return recordResource;
},
error => {}
);
@ -104,7 +105,7 @@ export default {
return baseResource.apiClient.create(recordSource).then(
recordResource => {
baseResource.setMessage($__("Record source created!"));
return recordResource
return recordResource;
},
error => {}
);

View File

@ -214,6 +214,7 @@ export default {
callback: () => {
saveOptionSelected.value = components.list;
if (
props.instancedResource.stickyToolbar &&
props.instancedResource.stickyToolbar.includes(
"Form"
)
@ -229,6 +230,7 @@ export default {
callback: () => {
saveOptionSelected.value = components.show;
if (
props.instancedResource.stickyToolbar &&
props.instancedResource.stickyToolbar.includes(
"Form"
)
@ -244,6 +246,7 @@ export default {
callback: () => {
saveOptionSelected.value = components.edit;
if (
props.instancedResource.stickyToolbar &&
props.instancedResource.stickyToolbar.includes(
"Form"
)
@ -254,6 +257,7 @@ export default {
},
};
return Object.keys(buttonOptions).reduce((acc, key) => {
if (!components[key]) return acc;
if (key === "show" && !navigationOnFormSave) return acc;
if (components[key] === navigationOnFormSave) return acc;
return [buttonOptions[key], ...acc];