diff --git a/lang/en/validation.php b/lang/en/validation.php index 9e46026ccab..9a2e37b4051 100644 --- a/lang/en/validation.php +++ b/lang/en/validation.php @@ -174,6 +174,7 @@ 'email_available' => 'A user with this email already exists.', 'fieldset_imported_recursively' => 'Fieldset :handle is being imported recursively.', 'one_site_without_origin' => 'At least one site must not have an origin.', + 'at_least_one_site_enabled' => 'At least one site must be enabled.', 'options_require_keys' => 'All options must have keys.', 'origin_cannot_be_disabled' => 'Cannot select a disabled origin.', 'parent_cannot_be_itself' => 'Cannot be its own parent.', diff --git a/resources/js/components/collections/OneOrManySitesField.vue b/resources/js/components/collections/OneOrManySitesField.vue index 97f191069cd..de8d2e518e1 100644 --- a/resources/js/components/collections/OneOrManySitesField.vue +++ b/resources/js/components/collections/OneOrManySitesField.vue @@ -60,9 +60,20 @@ export default { }, sites() { - if (!this.publishContainer.values.value.sites) return []; + const sites = this.publishContainer.values.value.sites; - return this.publishContainer.values.value.sites.map((handle, i) => { + if (!sites?.length) return []; + + if (typeof sites[0] === 'object') { + return sites + .filter((site) => site.enabled) + .map((site) => ({ + handle: site.handle, + name: site.name, + })); + } + + return sites.map((handle, i) => { return { handle, name: this.publishContainer.meta.value.sites.data[i].title, diff --git a/resources/js/components/globals/Sites.vue b/resources/js/components/globals/Sites.vue index aef75dad70b..94eac2f1d4c 100644 --- a/resources/js/components/globals/Sites.vue +++ b/resources/js/components/globals/Sites.vue @@ -1,6 +1,9 @@