Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
stepanenko3 committed May 9, 2022
1 parent 3af55da commit 700d56d
Show file tree
Hide file tree
Showing 11 changed files with 111 additions and 83 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function tools()
{
return [
// ...
new \Stepanenko3\NovaMenuCollapsed\MenuCollapsedTool,
new \Stepanenko3\NovaMenuCollapsed\MenuCollapsed,
];
}
```
Expand Down
9 changes: 1 addition & 8 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,6 @@
"menu"
],
"license": "MIT",
"authors": [
{
"name": "Artem Stepanenko",
"email": "[email protected]",
"role": "Maintainer"
}
],
"require": {
"php": ">=8.0",
"laravel/nova": "^4.0"
Expand All @@ -32,7 +25,7 @@
"extra": {
"laravel": {
"providers": [
"Stepanenko3\\NovaMenuCollapsed\\MenuCollapsedServiceProvider"
"Stepanenko3\\NovaMenuCollapsed\\ToolServiceProvider"
]
}
},
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion dist/mix-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"/js/entry.js": "/js/entry.js"
"/js/tool.js": "/js/tool.js"
}
33 changes: 33 additions & 0 deletions nova.mix.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const mix = require('laravel-mix')
const webpack = require('webpack')
const path = require('path')

class NovaExtension {
name() {
return ''
}

register(name) {
this.name = name
}

webpackConfig(webpackConfig) {
webpackConfig.externals = {
vue: 'Vue',
}

webpackConfig.resolve.alias = {
...(webpackConfig.resolve.alias || {}),
'laravel-nova': path.join(
__dirname,
'vendor/laravel/nova/resources/js/mixins/packages.js'
),
}

webpackConfig.output = {
uniqueName: this.name,
}
}
}

mix.extend('nova', new NovaExtension())
32 changes: 11 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,20 @@
{
"private": true,
"scripts": {
"dev": "mix",
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "mix --production",
"format": "prettier --write 'resources/**/*.{css,js,vue}'"
"prod": "npm run production",
"production": "mix --production",
"nova:install": "npm --prefix='../../vendor/laravel/nova' ci"
},
"devDependencies": {
"@inertiajs/inertia": "^0.11.0",
"@vue/babel-plugin-jsx": "^1.1.1",
"axios": "^0.26.1",
"cross-env": "^7.0.3",
"form-backend-validation": "^2.4.0",
"laravel-mix": "^6.0.43",
"postcss": "^8.4.12",
"prettier": "^2.6.2",
"resolve-url-loader": "^5.0.0",
"sass": "^1.50.0",
"sass-loader": "^12.6.0",
"terser-webpack-plugin": "^5.3.1",
"vue-loader": "^17.0.0",
"vue-template-compiler": "^2.6.14",
"vuex": "^4.0.2"
"@vue/compiler-sfc": "^3.2.22",
"laravel-mix": "^6.0.41",
"postcss": "^8.3.11",
"vue-loader": "^16.8.3"
},
"dependencies": {
"vue": "^3.2.31"
}
"dependencies": {}
}
29 changes: 0 additions & 29 deletions resources/js/entry.js

This file was deleted.

29 changes: 29 additions & 0 deletions resources/js/tool.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
function setMenuItemCollapsed(menuItem, collapsed = true) {
const key = `nova.navigation.${menuItem.key}.collapsed`;

if (localStorage.getItem(key))
return;

localStorage.setItem(key, collapsed);
}

function collapseMenuRecursive(menu) {
menu
.filter(menuItem => menuItem.items && menuItem.items.length > 0)
.forEach(menuItem => {
setMenuItemCollapsed(menuItem);

if (menuItem.items.length > 0) {
collapseMenuRecursive(menuItem.items);
}
});
}

Nova.booting(function () {
if (!Nova.config('novaMenuCollapsed'))
return;

const menu = Nova.config('mainMenu');

collapseMenuRecursive(menu);
});
15 changes: 13 additions & 2 deletions src/MenuCollapsedTool.php → src/MenuCollapsed.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,28 @@
use Laravel\Nova\Nova;
use Laravel\Nova\Tool;

class MenuCollapsedTool extends Tool
class MenuCollapsed extends Tool
{
/**
* Perform any tasks that need to happen when the tool is booted.
*
* @return void
*/
public function boot()
{
Nova::provideToScript([
'novaMenuCollapsed' => config('nova-menu-collapsed.collapsed'),
]);

Nova::script('nova-menu-collapsed', __DIR__ . '/../dist/js/entry.js');
Nova::script('nova-menu-collapsed', __DIR__ . '/../dist/js/tool.js');
}

/**
* Build the menu that renders the navigation links for the tool.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function menu(Request $request)
{
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,30 @@

use Illuminate\Support\ServiceProvider;

class MenuCollapsedServiceProvider extends ServiceProvider
class ToolServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$this->publishes([__DIR__ . '/../config' => config_path()], 'nova-menu-collapsed-config');
}

public function register()
{
$this->mergeConfigFrom(
__DIR__ . '/../config/nova-menu-collapsed.php',
'nova-menu-collapsed',
);
}

/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
23 changes: 6 additions & 17 deletions webpack.mix.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
let mix = require('laravel-mix');
let path = require('path');
let mix = require('laravel-mix')

require('./nova.mix')

console.log(path.join(__dirname, 'vendor/laravel/nova/resources/js/mixins/packages.js'));
mix
.setPublicPath('dist')
.js('resources/js/entry.js', 'js')
.vue({ version: 3 })
.webpackConfig({
externals: {
vue: 'Vue',
},
output: {
uniqueName: 'stepanenko3/nova-menu-collapsed',
},
})
.alias({
'laravel-nova': path.join(__dirname, 'vendor/laravel/nova/resources/js/mixins/packages.js'),
});
.setPublicPath('dist')
.js('resources/js/tool.js', 'js')
.vue({ version: 3 })
.nova('stepanenko3/nova-menu-collpsed')

0 comments on commit 700d56d

Please sign in to comment.