From b22ab9d3c2f78bddfa69f703fa923f462e6330a4 Mon Sep 17 00:00:00 2001 From: Jay George Date: Fri, 14 Aug 2026 18:15:25 +0100 Subject: [PATCH 01/21] Configure table widths --- src/Sites/Sites.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Sites/Sites.php b/src/Sites/Sites.php index ac11c2af1b8..074e5609687 100644 --- a/src/Sites/Sites.php +++ b/src/Sites/Sites.php @@ -254,6 +254,15 @@ public function blueprint() // If multisite, nest fields in a grid if ($this->multiEnabled()) { + $tableWidths = [ + 'name' => 14, + 'handle' => 14, + 'url' => 14, + 'locale' => 12, + 'lang' => 16, + 'attributes' => 30, + ]; + $siteFields = [ [ 'handle' => 'sites', @@ -264,7 +273,11 @@ public function blueprint() 'fullscreen' => false, 'mode' => 'stacked', 'add_row' => __('Add Site'), - 'fields' => $siteFields, + 'fields' => collect($siteFields)->map(function ($field) use ($tableWidths) { + $field['field']['width'] = $tableWidths[$field['handle']] ?? 16; + + return $field; + })->all(), 'required' => true, ], ], From d55958b72421ad7dc2c781221f5707aec1f6d8ec Mon Sep 17 00:00:00 2001 From: Jay George Date: Fri, 14 Aug 2026 20:12:19 +0100 Subject: [PATCH 02/21] Tweak max-widths --- src/Sites/Sites.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Sites/Sites.php b/src/Sites/Sites.php index 074e5609687..6c49d665e09 100644 --- a/src/Sites/Sites.php +++ b/src/Sites/Sites.php @@ -258,8 +258,8 @@ public function blueprint() 'name' => 14, 'handle' => 14, 'url' => 14, - 'locale' => 12, - 'lang' => 16, + 'locale' => 14, + 'lang' => 14, 'attributes' => 30, ]; @@ -271,11 +271,20 @@ public function blueprint() 'hide_display' => true, 'actions' => false, 'fullscreen' => false, - 'mode' => 'stacked', + 'mode' => 'table', 'add_row' => __('Add Site'), 'fields' => collect($siteFields)->map(function ($field) use ($tableWidths) { $field['field']['width'] = $tableWidths[$field['handle']] ?? 16; + if ($field['handle'] === 'attributes') { + $field['field']['compact'] = true; + $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; + } + + if ($field['handle'] === 'lang') { + $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; + } + return $field; })->all(), 'required' => true, From 79771d6f3e830aa072c78d9695a8de9879ea75d9 Mon Sep 17 00:00:00 2001 From: Jay George Date: Fri, 14 Aug 2026 20:32:58 +0100 Subject: [PATCH 03/21] Adjust stack breakpoint for /sites --- resources/js/components/fieldtypes/grid/Grid.vue | 3 ++- src/Sites/Sites.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/js/components/fieldtypes/grid/Grid.vue b/resources/js/components/fieldtypes/grid/Grid.vue index b1b5ec93db3..1b1a8de1622 100644 --- a/resources/js/components/fieldtypes/grid/Grid.vue +++ b/resources/js/components/fieldtypes/grid/Grid.vue @@ -86,7 +86,8 @@ export default { computed: { component() { - const isNarrow = this.fields.length > 1 && this.containerWidth < 550; + const stackAt = this.config.stack_at ?? 550; + const isNarrow = this.fields.length > 1 && this.containerWidth < stackAt; return this.config.mode === 'stacked' || isNarrow ? 'GridStacked' : 'GridTable'; }, diff --git a/src/Sites/Sites.php b/src/Sites/Sites.php index 6c49d665e09..cf8d17f1eeb 100644 --- a/src/Sites/Sites.php +++ b/src/Sites/Sites.php @@ -272,6 +272,7 @@ public function blueprint() 'actions' => false, 'fullscreen' => false, 'mode' => 'table', + 'stack_at' => 925, 'add_row' => __('Add Site'), 'fields' => collect($siteFields)->map(function ($field) use ($tableWidths) { $field['field']['width'] = $tableWidths[$field['handle']] ?? 16; From b376454b3eb870833f30624d37b5406bad59e720 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 17 Aug 2026 14:19:56 +0100 Subject: [PATCH 04/21] Prevent all fields from blowing out --- src/Sites/Sites.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Sites/Sites.php b/src/Sites/Sites.php index cf8d17f1eeb..57a86c9346f 100644 --- a/src/Sites/Sites.php +++ b/src/Sites/Sites.php @@ -276,14 +276,10 @@ public function blueprint() 'add_row' => __('Add Site'), 'fields' => collect($siteFields)->map(function ($field) use ($tableWidths) { $field['field']['width'] = $tableWidths[$field['handle']] ?? 16; + $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; if ($field['handle'] === 'attributes') { $field['field']['compact'] = true; - $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; - } - - if ($field['handle'] === 'lang') { - $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; } return $field; From 56cd82b9d33be0065775a616ecb88d6b625c9879 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 17 Aug 2026 14:25:29 +0100 Subject: [PATCH 05/21] Improve --- src/Sites/Sites.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/Sites/Sites.php b/src/Sites/Sites.php index 57a86c9346f..1aa1d903743 100644 --- a/src/Sites/Sites.php +++ b/src/Sites/Sites.php @@ -255,11 +255,6 @@ public function blueprint() // If multisite, nest fields in a grid if ($this->multiEnabled()) { $tableWidths = [ - 'name' => 14, - 'handle' => 14, - 'url' => 14, - 'locale' => 14, - 'lang' => 14, 'attributes' => 30, ]; @@ -275,13 +270,8 @@ public function blueprint() 'stack_at' => 925, 'add_row' => __('Add Site'), 'fields' => collect($siteFields)->map(function ($field) use ($tableWidths) { - $field['field']['width'] = $tableWidths[$field['handle']] ?? 16; + $field['field']['width'] = $tableWidths[$field['handle']] ?? 14; $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; - - if ($field['handle'] === 'attributes') { - $field['field']['compact'] = true; - } - return $field; })->all(), 'required' => true, From 323fe1bf295d4ac0fada0eb3be8e44a9be6e8494 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 17 Aug 2026 14:43:57 +0100 Subject: [PATCH 06/21] Fix Pint formatting in Sites blueprint --- src/Sites/Sites.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Sites/Sites.php b/src/Sites/Sites.php index 1aa1d903743..d7fc9498b80 100644 --- a/src/Sites/Sites.php +++ b/src/Sites/Sites.php @@ -272,6 +272,7 @@ public function blueprint() 'fields' => collect($siteFields)->map(function ($field) use ($tableWidths) { $field['field']['width'] = $tableWidths[$field['handle']] ?? 14; $field['field']['classes'] = 'max-w-48 min-w-0 overflow-hidden'; + return $field; })->all(), 'required' => true, From 4f200c8e1c4f58a8e6e7f18c4f460e3dc01b49f2 Mon Sep 17 00:00:00 2001 From: Jay George Date: Fri, 14 Aug 2026 19:17:59 +0100 Subject: [PATCH 07/21] Prototype custom attribute popover --- .../components/fieldtypes/ArrayFieldtype.vue | 248 +++++++++++------- src/Sites/Sites.php | 4 + 2 files changed, 160 insertions(+), 92 deletions(-) diff --git a/resources/js/components/fieldtypes/ArrayFieldtype.vue b/resources/js/components/fieldtypes/ArrayFieldtype.vue index 5c4184576d1..4ca1ed04aaa 100644 --- a/resources/js/components/fieldtypes/ArrayFieldtype.vue +++ b/resources/js/components/fieldtypes/ArrayFieldtype.vue @@ -1,99 +1,119 @@ -
+