From 5fc983741b3d159e4aff45bfbc4bbcc81c558fa4 Mon Sep 17 00:00:00 2001 From: Emin Jasarevic Date: Tue, 8 Sep 2026 10:45:18 +0200 Subject: [PATCH] Allow addons to extend Replicator and Bard set configuration --- .../js/components/blueprints/Section.vue | 19 ++ .../fieldtypes/replicator/SetsFieldtype.vue | 23 ++- .../components/blueprints/Section.test.js | 64 ++++++ src/Fieldtypes/Sets.php | 112 +++++++++- tests/Fieldtypes/SetConfigTest.php | 195 ++++++++++++++++++ 5 files changed, 406 insertions(+), 7 deletions(-) create mode 100644 resources/js/tests/components/blueprints/Section.test.js create mode 100644 tests/Fieldtypes/SetConfigTest.php diff --git a/resources/js/components/blueprints/Section.vue b/resources/js/components/blueprints/Section.vue index 59f95fe09a4..720af64d3d8 100644 --- a/resources/js/components/blueprints/Section.vue +++ b/resources/js/components/blueprints/Section.vue @@ -124,6 +124,14 @@ +
@@ -144,6 +152,8 @@ export default { inject: { suggestableConditionFieldsProvider: { default: null }, + setConfig: { default: null }, + setConfigErrors: { default: null }, }, components: { @@ -173,6 +183,12 @@ export default { }, computed: { + setConfigBlueprint() { + return { + tabs: [{ handle: 'main', sections: [{ fields: this.setConfig?.fields || [] }] }], + }; + }, + suggestableConditionFields() { return this.suggestableConditionFieldsProvider?.suggestableFields(this) || []; }, @@ -271,6 +287,9 @@ export default { hide: this.section.hide, collapsible: this.section.collapsible, collapsed: this.section.collapsed, + ...(this.setConfig?.fields.length || this.section.extraConfig ? { + extraConfig: clone(this.section.extraConfig || this.setConfig.defaults), + } : {}), }; }, diff --git a/resources/js/components/fieldtypes/replicator/SetsFieldtype.vue b/resources/js/components/fieldtypes/replicator/SetsFieldtype.vue index 05e20973a46..fea9577bfa7 100644 --- a/resources/js/components/fieldtypes/replicator/SetsFieldtype.vue +++ b/resources/js/components/fieldtypes/replicator/SetsFieldtype.vue @@ -19,6 +19,7 @@