From 0713da12d1f5f3a48404f5620f8726301d67a55b Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 11:50:53 -0400 Subject: [PATCH 01/22] Add icon picker to CP nav item editor. --- resources/js/components/nav/Builder.vue | 6 ++++++ resources/js/components/nav/ItemEditor.vue | 8 ++++++++ resources/views/nav/edit.blade.php | 1 + .../CP/Preferences/Nav/Concerns/HasNavBuilder.php | 12 ++++++++++++ 4 files changed, 27 insertions(+) diff --git a/resources/js/components/nav/Builder.vue b/resources/js/components/nav/Builder.vue index b417a30078..500627373a 100644 --- a/resources/js/components/nav/Builder.vue +++ b/resources/js/components/nav/Builder.vue @@ -172,6 +172,7 @@ @@ -179,6 +180,7 @@ @@ -261,6 +263,10 @@ export default { type: Array, default: () => [], }, + iconFieldtypeMeta: { + type: Object, + default: () => {}, + }, }, data() { diff --git a/resources/js/components/nav/ItemEditor.vue b/resources/js/components/nav/ItemEditor.vue index 83007ec544..634311fb8a 100644 --- a/resources/js/components/nav/ItemEditor.vue +++ b/resources/js/components/nav/ItemEditor.vue @@ -35,6 +35,13 @@ +
+
+ + +
+
+ @@ -61,6 +68,7 @@ export default { props: { creating: false, item: {}, + iconFieldtypeMeta: {}, }, data() { diff --git a/resources/views/nav/edit.blade.php b/resources/views/nav/edit.blade.php index 2fac0edbc9..0b8c7c7908 100644 --- a/resources/views/nav/edit.blade.php +++ b/resources/views/nav/edit.blade.php @@ -8,6 +8,7 @@ update-url="{{ $updateUrl }}" destroy-url="{{ $destroyUrl }}" :save-as-options="{{ json_encode($saveAsOptions) }}" + :icon-fieldtype-meta="{{ json_encode($iconFieldtypeMeta) }}" :nav="{{ json_encode($nav) }}" > diff --git a/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php b/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php index dfda409d3b..891ac0f0c3 100644 --- a/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php +++ b/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php @@ -7,6 +7,7 @@ use Statamic\Facades\CP\Nav; use Statamic\Facades\Role; use Statamic\Facades\User; +use Statamic\Fields\Field; use Statamic\Http\Resources\CP\Nav\Nav as NavResource; use Statamic\Statamic; @@ -20,6 +21,7 @@ protected function navBuilder($nav = null, $props = []) 'destroyUrl' => cp_route('preferences.nav.user.destroy'), 'saveAsOptions' => $this->getSaveAsOptions()->values()->all(), 'nav' => NavResource::make($nav ?? Nav::build(true, true)), + 'iconFieldtypeMeta' => $this->getIconFieldtypeMeta(), ], $props)); } @@ -64,4 +66,14 @@ protected function getSaveAsOptions() return $options; } + + protected function getIconFieldtypeMeta() + { + $field = new Field('icon', [ + 'type' => 'icon', + 'folder' => 'light', + ]); + + return $field->meta(); + } } From 8b1c419d31d0f8b9921f3f5c35012c2c9dc99159 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 15:56:45 -0400 Subject: [PATCH 02/22] Revert "Add icon picker to CP nav item editor." This reverts commit 0713da12d1f5f3a48404f5620f8726301d67a55b. --- resources/js/components/nav/Builder.vue | 6 ------ resources/js/components/nav/ItemEditor.vue | 8 -------- resources/views/nav/edit.blade.php | 1 - .../CP/Preferences/Nav/Concerns/HasNavBuilder.php | 12 ------------ 4 files changed, 27 deletions(-) diff --git a/resources/js/components/nav/Builder.vue b/resources/js/components/nav/Builder.vue index 500627373a..b417a30078 100644 --- a/resources/js/components/nav/Builder.vue +++ b/resources/js/components/nav/Builder.vue @@ -172,7 +172,6 @@ @@ -180,7 +179,6 @@ @@ -263,10 +261,6 @@ export default { type: Array, default: () => [], }, - iconFieldtypeMeta: { - type: Object, - default: () => {}, - }, }, data() { diff --git a/resources/js/components/nav/ItemEditor.vue b/resources/js/components/nav/ItemEditor.vue index 634311fb8a..83007ec544 100644 --- a/resources/js/components/nav/ItemEditor.vue +++ b/resources/js/components/nav/ItemEditor.vue @@ -35,13 +35,6 @@ -
-
- - -
-
- @@ -68,7 +61,6 @@ export default { props: { creating: false, item: {}, - iconFieldtypeMeta: {}, }, data() { diff --git a/resources/views/nav/edit.blade.php b/resources/views/nav/edit.blade.php index 0b8c7c7908..2fac0edbc9 100644 --- a/resources/views/nav/edit.blade.php +++ b/resources/views/nav/edit.blade.php @@ -8,7 +8,6 @@ update-url="{{ $updateUrl }}" destroy-url="{{ $destroyUrl }}" :save-as-options="{{ json_encode($saveAsOptions) }}" - :icon-fieldtype-meta="{{ json_encode($iconFieldtypeMeta) }}" :nav="{{ json_encode($nav) }}" > diff --git a/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php b/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php index 891ac0f0c3..dfda409d3b 100644 --- a/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php +++ b/src/Http/Controllers/CP/Preferences/Nav/Concerns/HasNavBuilder.php @@ -7,7 +7,6 @@ use Statamic\Facades\CP\Nav; use Statamic\Facades\Role; use Statamic\Facades\User; -use Statamic\Fields\Field; use Statamic\Http\Resources\CP\Nav\Nav as NavResource; use Statamic\Statamic; @@ -21,7 +20,6 @@ protected function navBuilder($nav = null, $props = []) 'destroyUrl' => cp_route('preferences.nav.user.destroy'), 'saveAsOptions' => $this->getSaveAsOptions()->values()->all(), 'nav' => NavResource::make($nav ?? Nav::build(true, true)), - 'iconFieldtypeMeta' => $this->getIconFieldtypeMeta(), ], $props)); } @@ -66,14 +64,4 @@ protected function getSaveAsOptions() return $options; } - - protected function getIconFieldtypeMeta() - { - $field = new Field('icon', [ - 'type' => 'icon', - 'folder' => 'light', - ]); - - return $field->meta(); - } } From 009eada722eef98bac29845560a3998430662888 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:07:37 -0400 Subject: [PATCH 03/22] Re-add icon picker to item editor. --- resources/js/components/nav/ItemEditor.vue | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/resources/js/components/nav/ItemEditor.vue b/resources/js/components/nav/ItemEditor.vue index 83007ec544..21fa6e6b83 100644 --- a/resources/js/components/nav/ItemEditor.vue +++ b/resources/js/components/nav/ItemEditor.vue @@ -35,6 +35,19 @@ +
+
+ + + + +
+
+ From b0497f2bcf5a6e9db78dd9a7aa1a2859d91d4b89 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:08:02 -0400 Subject: [PATCH 04/22] =?UTF-8?q?Clone=20config=20so=20that=20it=20doesn?= =?UTF-8?q?=E2=80=99t=20get=20changed=20in=20tree=20until=20event=20is=20e?= =?UTF-8?q?mitted.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/js/components/nav/ItemEditor.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/components/nav/ItemEditor.vue b/resources/js/components/nav/ItemEditor.vue index 21fa6e6b83..68b312bb97 100644 --- a/resources/js/components/nav/ItemEditor.vue +++ b/resources/js/components/nav/ItemEditor.vue @@ -78,7 +78,7 @@ export default { data() { return { - config: data_get(this.item, 'config', this.createNewItem()), + config: clone(data_get(this.item, 'config', this.createNewItem())), saveKeyBinding: null, validateDisplay: false, validateUrl: false, From ba7cd84ae1e104b14669622c7456ba1579dae333 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:08:50 -0400 Subject: [PATCH 05/22] Ensure custom icon is shown in tree and saved in item manipulations. --- resources/js/components/nav/Builder.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/js/components/nav/Builder.vue b/resources/js/components/nav/Builder.vue index b417a30078..ab731b4432 100644 --- a/resources/js/components/nav/Builder.vue +++ b/resources/js/components/nav/Builder.vue @@ -483,6 +483,7 @@ export default { action: '@create', display: createdConfig.display, url: createdConfig.url, + icon: createdConfig.icon, }; this.targetDataArray.push(item); @@ -512,9 +513,11 @@ export default { itemUpdated(updatedConfig, item) { item.text = updatedConfig.display; + item.config.icon = updatedConfig.icon; this.updateItemManipulation(item, 'display', updatedConfig.display); this.updateItemManipulation(item, 'url', updatedConfig.url); + this.updateItemManipulation(item, 'icon', updatedConfig.icon); this.updateItemAction(item); this.resetItemEditor(); From c91618a3d279bfe0ff27288f48242b0550eba859 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:09:46 -0400 Subject: [PATCH 06/22] Fix `` references in nav item branches. --- resources/js/components/nav/Branch.vue | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/js/components/nav/Branch.vue b/resources/js/components/nav/Branch.vue index 22ab98bc96..7433fba247 100644 --- a/resources/js/components/nav/Branch.vue +++ b/resources/js/components/nav/Branch.vue @@ -6,7 +6,7 @@
- - - - - - - + + + + + + + Date: Fri, 28 Apr 2023 16:25:30 -0400 Subject: [PATCH 07/22] =?UTF-8?q?These=20slashes=20aren=E2=80=99t=20needed?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CP/Navigation/CoreNav.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/CP/Navigation/CoreNav.php b/src/CP/Navigation/CoreNav.php index 0cfd637c44..902fe5368d 100644 --- a/src/CP/Navigation/CoreNav.php +++ b/src/CP/Navigation/CoreNav.php @@ -48,7 +48,7 @@ protected function makeTopLevel() if (count(config('statamic.cp.widgets')) > 0 || config('statamic.cp.start_page') === 'dashboard') { Nav::topLevel('Dashboard') ->route('dashboard') - ->icon('/charts'); + ->icon('charts'); } return $this; @@ -63,7 +63,7 @@ protected function makeContentSection() { Nav::content('Collections') ->route('collections.index') - ->icon('/content-writing') + ->icon('content-writing') ->can('index', Collection::class) ->children(function () { return CollectionAPI::all()->sortBy->title()->map(function ($collection) { @@ -75,7 +75,7 @@ protected function makeContentSection() Nav::content('Navigation') ->route('navigation.index') - ->icon('/hierarchy-files') + ->icon('hierarchy-files') ->can('index', NavContract::class) ->children(function () { return NavAPI::all()->sortBy->title()->map(function ($nav) { @@ -87,7 +87,7 @@ protected function makeContentSection() Nav::content('Taxonomies') ->route('taxonomies.index') - ->icon('/tags') + ->icon('tags') ->can('index', Taxonomy::class) ->children(function () { return TaxonomyAPI::all()->sortBy->title()->map(function ($taxonomy) { @@ -99,7 +99,7 @@ protected function makeContentSection() Nav::content('Assets') ->route('assets.index') - ->icon('/assets') + ->icon('assets') ->can('index', AssetContainer::class) ->children(function () { return AssetContainerAPI::all()->sortBy->title()->map(function ($assetContainer) { @@ -111,7 +111,7 @@ protected function makeContentSection() Nav::content('Globals') ->route('globals.index') - ->icon('/earth') + ->icon('earth') ->can('index', GlobalSet::class) ->children(function () { return GlobalSetAPI::all()->sortBy->title()->map(function ($globalSet) { @@ -139,12 +139,12 @@ protected function makeFieldsSection() { Nav::fields('Blueprints') ->route('blueprints.index') - ->icon('/blueprint') + ->icon('blueprint') ->can('configure fields'); Nav::fields('Fieldsets') ->route('fieldsets.index') - ->icon('/fieldsets') + ->icon('fieldsets') ->can('configure fields'); return $this; @@ -159,7 +159,7 @@ protected function makeToolsSection() { Nav::tools('Forms') ->route('forms.index') - ->icon('/drawer-file') + ->icon('drawer-file') ->can('index', Form::class) ->children(function () { return FormAPI::all()->sortBy->title()->map(function ($form) { @@ -171,19 +171,19 @@ protected function makeToolsSection() Nav::tools('Updates') ->route('updater') - ->icon('/loading-bar') + ->icon('loading-bar') ->view('statamic::nav.updates') ->can('view updates'); Nav::tools('Addons') ->route('addons.index') - ->icon('/addons') + ->icon('addons') ->can('configure addons'); if (Stache::duplicates()->isNotEmpty()) { Nav::tools('Duplicate IDs') ->route('duplicates') - ->icon('/duplicate-ids') + ->icon('duplicate-ids') ->view('statamic::nav.duplicates') ->can('resolve duplicate ids'); } @@ -193,7 +193,7 @@ protected function makeToolsSection() if (config('statamic.graphql.enabled') && Statamic::pro()) { Nav::tools('GraphQL') ->route('graphql.index') - ->icon('/array') + ->icon('array') ->attributes(['target' => '_blank']) ->can('view graphql'); } @@ -210,7 +210,7 @@ protected function makeUtilitiesSection() if (count($utilities)) { Nav::tools('Utilities') ->route('utilities.index') - ->icon('/settings-slider') + ->icon('settings-slider') ->children($utilities); } @@ -230,12 +230,12 @@ protected function makeUsersSection() Nav::users('Users') ->route('users.index') - ->icon('/users-box') + ->icon('users-box') ->can('index', UserContract::class); Nav::users('Groups') ->route('user-groups.index') - ->icon('/users-multiple') + ->icon('users-multiple') ->can('edit user groups') ->children(function () { return UserGroupAPI::all()->sortBy->title()->map(function ($userGroup) { @@ -246,7 +246,7 @@ protected function makeUsersSection() Nav::users('Permissions') ->route('roles.index') - ->icon('/shield-key') + ->icon('shield-key') ->can('edit roles') ->children(function () { return RoleAPI::all()->sortBy->title()->map(function ($role) { From 1491e10eb73efb14ae2f0cf6f817894c4e2c5315 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:27:04 -0400 Subject: [PATCH 08/22] Extract renderable svg logic in `NavItem` to `svg()` method. --- src/CP/Navigation/NavItem.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/CP/Navigation/NavItem.php b/src/CP/Navigation/NavItem.php index 787977bda1..7162615fa3 100644 --- a/src/CP/Navigation/NavItem.php +++ b/src/CP/Navigation/NavItem.php @@ -158,14 +158,23 @@ public function icon($icon = null) return $this ->fluentlyGetOrSet('icon') ->getter(function ($value) { - return $value ?? Statamic::svg('entries'); - }) - ->setter(function ($value) { - return Str::startsWith($value, 'args(func_get_args()); } + /** + * Get icon as resolved renderable SVG. + * + * @return string + */ + public function svg() + { + $value = $this->icon(); + + return Str::startsWith($value, ' Date: Fri, 28 Apr 2023 16:28:11 -0400 Subject: [PATCH 09/22] Use new `svg()` method for rendering nav icons. --- resources/views/partials/nav-main.blade.php | 2 +- resources/views/partials/nav-mobile.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/partials/nav-main.blade.php b/resources/views/partials/nav-main.blade.php index 2940190062..ea3c0f9bdf 100644 --- a/resources/views/partials/nav-main.blade.php +++ b/resources/views/partials/nav-main.blade.php @@ -12,7 +12,7 @@ @unless ($item->view())
  • attributes() }}> - {!! $item->icon() !!}{{ __($item->name()) }} + {!! $item->svg() !!}{{ __($item->name()) }} @if ($item->children() && $item->isActive())
      diff --git a/resources/views/partials/nav-mobile.blade.php b/resources/views/partials/nav-mobile.blade.php index 047a90e77d..5b2ddb72fa 100644 --- a/resources/views/partials/nav-mobile.blade.php +++ b/resources/views/partials/nav-mobile.blade.php @@ -11,7 +11,7 @@ @unless ($item->view())
    • - {!! $item->icon() !!}{{ __($item->name()) }} + {!! $item->svg() !!}{{ __($item->name()) }} @if ($item->children() && $item->isActive())
        From 69fd257fd74d0b3b68827aa8e06c8658b52f95ca Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:28:37 -0400 Subject: [PATCH 10/22] Use new `svg()` icon in custom `Updates` nav item view. --- resources/views/nav/updates.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/nav/updates.blade.php b/resources/views/nav/updates.blade.php index e09b99e867..9449664857 100644 --- a/resources/views/nav/updates.blade.php +++ b/resources/views/nav/updates.blade.php @@ -1,6 +1,6 @@
      • - {!! $item->icon() !!}{{ __($item->name()) }} + {!! $item->svg() !!}{{ __($item->name()) }}
      • From 4f584a58ca7aa51dbabf31e01397cbf855f88341 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Fri, 28 Apr 2023 16:48:16 -0400 Subject: [PATCH 11/22] Test the newly updated `icon()` and `svg()` methods on `NavItem`. --- tests/CP/Navigation/NavTest.php | 39 +++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/tests/CP/Navigation/NavTest.php b/tests/CP/Navigation/NavTest.php index 460fea2d5e..796b7817a8 100644 --- a/tests/CP/Navigation/NavTest.php +++ b/tests/CP/Navigation/NavTest.php @@ -117,9 +117,22 @@ public function it_can_create_a_nav_item_with_a_more_custom_config() } /** @test */ - public function it_can_create_a_nav_item_with_a_bundled_svg_icon() + public function it_can_create_a_nav_item_which_uses_default_entries_icon() { - File::put($svg = statamic_path('resources/svg/icons/light/test.svg'), 'the totally real svg'); + $this->actingAs(tap(User::make()->makeSuper())->save()); + + Nav::utilities('Test'); + + $item = $this->build()->get('Utilities')->last(); + + $this->assertEquals('entries', $item->icon()); + $this->assertEquals(\Statamic\Statamic::svg('icons/light/entries'), $item->svg()); + } + + /** @test */ + public function it_can_create_a_nav_item_with_references_to_a_bundled_light_svg_icon() + { + File::put($svg = statamic_path('resources/svg/icons/light/test.svg'), 'the totally real svg'); $this->actingAs(tap(User::make()->makeSuper())->save()); @@ -127,13 +140,14 @@ public function it_can_create_a_nav_item_with_a_bundled_svg_icon() $item = $this->build()->get('Utilities')->last(); - $this->assertEquals('the totally real svg', $item->icon()); + $this->assertEquals('test', $item->icon()); + $this->assertEquals('the totally real svg', $item->svg()); File::delete($svg); } /** @test */ - public function it_can_create_a_nav_item_with_a_custom_svg_icon() + public function it_can_create_a_nav_item_with_a_custom_inline_svg_icon() { $this->actingAs(tap(User::make()->makeSuper())->save()); @@ -142,7 +156,10 @@ public function it_can_create_a_nav_item_with_a_custom_svg_icon() $item = $this->build()->get('Utilities')->last(); - $this->assertEquals('', $item->icon()); + $expected = ''; + + $this->assertEquals($expected, $item->icon()); + $this->assertEquals($expected, $item->svg()); } /** @test */ @@ -229,10 +246,14 @@ public function it_sets_parent_icon_on_children() $item = $this->build()->get('Droids')->first(); - $this->assertEquals('droid', $item->icon()); - $this->assertEquals('droid', $item->children()->get(0)->icon()); - $this->assertEquals('droid', $item->children()->get(1)->icon()); - $this->assertEquals('droid', $item->children()->get(2)->icon()); + $this->assertEquals('droid', $item->icon()); + $this->assertEquals('droid', $item->svg()); + $this->assertEquals('droid', $item->children()->get(0)->icon()); + $this->assertEquals('droid', $item->children()->get(0)->svg()); + $this->assertEquals('droid', $item->children()->get(1)->icon()); + $this->assertEquals('droid', $item->children()->get(1)->svg()); + $this->assertEquals('droid', $item->children()->get(2)->icon()); + $this->assertEquals('droid', $item->children()->get(2)->svg()); File::delete($svg); } From 6f5d6ededae8e99ff3c95cbceae77a7754470ab5 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Wed, 3 May 2023 11:04:19 -0400 Subject: [PATCH 12/22] Fix reactivity issue on newly created nav items. --- resources/js/components/nav/ItemEditor.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/js/components/nav/ItemEditor.vue b/resources/js/components/nav/ItemEditor.vue index 68b312bb97..f37399d054 100644 --- a/resources/js/components/nav/ItemEditor.vue +++ b/resources/js/components/nav/ItemEditor.vue @@ -102,6 +102,7 @@ export default { return { display: '', url: '', + icon: null, }; }, From 8c12e450cc91f4436b41e9e4eb621bb738779310 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Wed, 3 May 2023 11:53:32 -0400 Subject: [PATCH 13/22] Show original icon when necessary. --- resources/js/components/nav/Branch.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/js/components/nav/Branch.vue b/resources/js/components/nav/Branch.vue index 7433fba247..05600ac145 100644 --- a/resources/js/components/nav/Branch.vue +++ b/resources/js/components/nav/Branch.vue @@ -96,7 +96,9 @@ export default { }, icon() { - return data_get(this.item.config, 'icon') || 'entries'; + return data_get(this.item, 'config.icon') + || data_get(this.item, 'original.icon') + || 'entries'; }, isAlreadySvg() { From 18e7ba06e7ec20b4c600e93edcb86cbaed730919 Mon Sep 17 00:00:00 2001 From: Jesse Leite Date: Wed, 3 May 2023 19:20:23 -0400 Subject: [PATCH 14/22] =?UTF-8?q?Don=E2=80=99t=20show=20icons=20on=20child?= =?UTF-8?q?=20items.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/js/components/nav/Branch.vue | 3 ++- resources/js/components/nav/Builder.vue | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/resources/js/components/nav/Branch.vue b/resources/js/components/nav/Branch.vue index 05600ac145..739fbd1a11 100644 --- a/resources/js/components/nav/Branch.vue +++ b/resources/js/components/nav/Branch.vue @@ -4,7 +4,7 @@
        -