From 14d7171dbecdfae81fe7a56dc511a3a14bef874c Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Fri, 3 Mar 2023 15:40:18 -0500 Subject: [PATCH 01/46] publish form wip --- resources/css/components/publish.css | 4 -- resources/css/components/tabs.css | 2 +- resources/js/bootstrap/components.js | 2 + resources/js/components/configure/Tabs.vue | 6 +-- resources/js/components/publish/Sections.vue | 44 ++++++++++++++++++++ resources/js/components/publish/Tabs.vue | 12 +++--- src/Fields/Section.php | 24 +++++++++++ src/Fields/Tab.php | 40 +++++++++++++++++- 8 files changed, 118 insertions(+), 16 deletions(-) create mode 100644 resources/js/components/publish/Sections.vue create mode 100644 src/Fields/Section.php diff --git a/resources/css/components/publish.css b/resources/css/components/publish.css index 52912c183b4..1748061c71f 100644 --- a/resources/css/components/publish.css +++ b/resources/css/components/publish.css @@ -99,7 +99,3 @@ code.parent-url { top: 0; z-index: 1000; } - -.publish-tab:not(:empty) { - @apply shadow bg-white rounded-md w-full; -} diff --git a/resources/css/components/tabs.css b/resources/css/components/tabs.css index 22c9b7f2ca4..3716e83495b 100644 --- a/resources/css/components/tabs.css +++ b/resources/css/components/tabs.css @@ -4,7 +4,7 @@ .tabs-container { - @apply relative; + @apply relative mb-5; &.offset-for-sidebar { width: calc(100% - 320px); diff --git a/resources/js/bootstrap/components.js b/resources/js/bootstrap/components.js index 470be73ed7d..01060e3d6a6 100644 --- a/resources/js/bootstrap/components.js +++ b/resources/js/bootstrap/components.js @@ -12,6 +12,7 @@ import Field from '../components/publish/Field.vue'; import FieldMeta from '../components/publish/FieldMeta.vue'; import ConfigureTabs from '../components/configure/Tabs.vue'; import PublishTabs from '../components/publish/Tabs.vue'; +import PublishSections from '../components/publish/Sections.vue'; import PublishValidationErrors from '../components/publish/ValidationErrors.vue'; import FormGroup from '../components/publish/FormGroup.vue'; import LivePreview from '../components/live-preview/LivePreview.vue'; @@ -79,6 +80,7 @@ Vue.component('publish-field', Field); Vue.component('publish-field-meta', FieldMeta); Vue.component('configure-tabs', ConfigureTabs); Vue.component('publish-tabs', PublishTabs); +Vue.component('publish-sections', PublishSections); Vue.component('publish-validation-errors', PublishValidationErrors); Vue.component('form-group', FormGroup); diff --git a/resources/js/components/configure/Tabs.vue b/resources/js/components/configure/Tabs.vue index 5ac015f6892..55e9bf5d13f 100644 --- a/resources/js/components/configure/Tabs.vue +++ b/resources/js/components/configure/Tabs.vue @@ -6,9 +6,9 @@

-

- + + +
+
+
+
+
+ +
+
+
+ + + + diff --git a/resources/js/components/publish/Tabs.vue b/resources/js/components/publish/Tabs.vue index 8050ca09bd6..baee5f6ad9f 100644 --- a/resources/js/components/publish/Tabs.vue +++ b/resources/js/components/publish/Tabs.vue @@ -63,7 +63,7 @@
-
-
+
- contents = $contents; + } + + public function toPublishArray() + { + return [ + 'display' => $this->contents['display'] ?? null, + 'instructions' => $this->contents['instructions'] ?? null, + 'fields' => (new Fields(Arr::get($this->contents, 'fields', [])))->toPublishArray(), + ]; + } +} diff --git a/src/Fields/Tab.php b/src/Fields/Tab.php index 5ac1b02e46f..c8c01201a37 100644 --- a/src/Fields/Tab.php +++ b/src/Fields/Tab.php @@ -34,7 +34,43 @@ public function contents(): array public function fields(): Fields { - return new Fields(Arr::get($this->contents, 'fields', [])); + $sections = Arr::get($this->contents, 'sections'); + + // Handle situation where there's only fields defined, and not nested under sections. + // Temporary? + if (! $sections) { + $sections = [ + [ + 'fields' => Arr::get($this->contents, 'fields', []), + ], + ]; + } + + $fields = collect($sections)->reduce(function ($carry, $section) { + return array_merge($carry, Arr::get($section, 'fields', [])); + }, []); + + return new Fields($fields); + } + + public function sections() + { + $sections = Arr::get($this->contents, 'sections'); + + // Handle situation where there's only fields defined, and not nested under sections. + // Temporary? + if (! $sections) { + $sections = [ + [ + 'fields' => Arr::get($this->contents, 'fields', []), + ], + ]; + } + + return collect($sections) + ->map(function ($section) { + return new Section($section); + }); } public function toPublishArray() @@ -43,7 +79,7 @@ public function toPublishArray() 'display' => $this->display(), 'instructions' => $this->instructions(), 'handle' => $this->handle, - 'fields' => $this->fields()->toPublishArray(), + 'sections' => $this->sections()->map->toPublishArray(), ]; } From 798012c23e9c2ef5daf38fc6231b33bca6aaa107 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Fri, 3 Mar 2023 17:30:07 -0500 Subject: [PATCH 02/46] remove sometimes-half-width logic --- resources/js/components/blueprints/Field.vue | 3 +-- resources/js/components/blueprints/Fields.vue | 2 -- .../js/components/blueprints/RegularField.vue | 2 -- resources/js/components/blueprints/Tab.vue | 20 +++---------------- .../js/components/fieldsets/EditForm.vue | 1 - 5 files changed, 4 insertions(+), 24 deletions(-) diff --git a/resources/js/components/blueprints/Field.vue b/resources/js/components/blueprints/Field.vue index 0f9789eaaca..ad1b97710f8 100644 --- a/resources/js/components/blueprints/Field.vue +++ b/resources/js/components/blueprints/Field.vue @@ -10,8 +10,7 @@ export default { type: Boolean, default: true }, - isEditing: Boolean, - isTabExpanded: Boolean + isEditing: Boolean } } diff --git a/resources/js/components/blueprints/Fields.vue b/resources/js/components/blueprints/Fields.vue index f32b8f13bbe..7a4a3f7a8d0 100644 --- a/resources/js/components/blueprints/Fields.vue +++ b/resources/js/components/blueprints/Fields.vue @@ -13,7 +13,6 @@ :key="field._id" :field="field" :is-editing="editingField === field._id" - :is-tab-expanded="isTabExpanded" :suggestable-condition-fields="suggestableConditionFields" :can-define-localizable="canDefineLocalizable" @edit="$emit('field-editing', field._id)" @@ -88,7 +87,6 @@ export default { props: { fields: Array, editingField: {}, - isTabExpanded: Boolean, suggestableConditionFields: Array, excludeFieldset: String, }, diff --git a/resources/js/components/blueprints/RegularField.vue b/resources/js/components/blueprints/RegularField.vue index 941493ee164..4efb08a973b 100644 --- a/resources/js/components/blueprints/RegularField.vue +++ b/resources/js/components/blueprints/RegularField.vue @@ -111,8 +111,6 @@ export default { }, widthClass() { - if (! this.isTabExpanded) return 'blueprint-tab-field-w-full'; - return `blueprint-tab-field-${tailwind_width_class(this.width)}`; }, diff --git a/resources/js/components/blueprints/Tab.vue b/resources/js/components/blueprints/Tab.vue index f8068b32d8c..88d88168586 100644 --- a/resources/js/components/blueprints/Tab.vue +++ b/resources/js/components/blueprints/Tab.vue @@ -1,14 +1,9 @@