Bläddra i källkod

增加 Admin::isDarkMode() 方法

jqh 4 år sedan
förälder
incheckning
69dff7add4

+ 1 - 1
config/admin.php

@@ -284,7 +284,7 @@ return [
         // default, blue, blue-light, green
         'color' => 'default',
 
-        'body_class' => '',
+        'body_class' => [],
 
         'sidebar_collapsed' => false,
 

+ 46 - 0
resources/views/layouts/container.blade.php

@@ -0,0 +1,46 @@
+<body
+        class="dcat-admin-body sidebar-mini layout-fixed {{ $configData['body_class']}} {{ $configData['sidebar_class'] }}
+        {{ $configData['navbar_class'] === 'fixed-top' ? 'navbar-fixed-top' : '' }} " >
+
+<script>
+    var Dcat = CreateDcat({!! Dcat\Admin\Admin::jsVariables() !!});
+</script>
+
+{!! admin_section(Dcat\Admin\Admin::SECTION['BODY_INNER_BEFORE']) !!}
+
+<div class="wrapper">
+    @include('admin::partials.sidebar')
+
+    @include('admin::partials.navbar')
+
+    <div class="app-content content">
+        <div class="content-wrapper" id="{{ $pjaxContainerId }}" style="top: 0;min-height: 900px;">
+            @yield('app')
+        </div>
+    </div>
+</div>
+
+<footer class="main-footer pt-1">
+    <p class="clearfix blue-grey lighten-2 mb-0 text-center">
+            <span class="text-center d-block d-md-inline-block mt-25">
+                Powered by
+                <a target="_blank" href="https://github.com/jqhph/dcat-admin">Dcat Admin</a>
+                <span>&nbsp;·&nbsp;</span>
+                v{{ Dcat\Admin\Admin::VERSION }}
+            </span>
+
+        <button class="btn btn-primary btn-icon scroll-top pull-right" style="position: fixed;bottom: 2%; right: 10px;display: none">
+            <i class="feather icon-arrow-up"></i>
+        </button>
+    </p>
+</footer>
+
+{!! admin_section(Dcat\Admin\Admin::SECTION['BODY_INNER_AFTER']) !!}
+
+{!! Dcat\Admin\Admin::asset()->jsToHtml() !!}
+
+<script>Dcat.boot();</script>
+
+</body>
+
+</html>

+ 1 - 1
resources/views/layouts/page.blade.php

@@ -25,4 +25,4 @@
     {!! Dcat\Admin\Admin::asset()->cssToHtml() !!}
 </head>
 
-@extends('admin::layouts.vertical')
+@extends('admin::layouts.container')

+ 0 - 46
resources/views/layouts/vertical.blade.php

@@ -1,46 +0,0 @@
-<body
-    class="dcat-admin-body sidebar-mini layout-fixed {{ $configData['body_class']}} {{ $configData['sidebar_class'] }}
-    {{ $configData['navbar_class'] === 'fixed-top' ? 'navbar-fixed-top' : '' }} " >
-
-    <script>
-        var Dcat = CreateDcat({!! Dcat\Admin\Admin::jsVariables() !!});
-    </script>
-
-    {!! admin_section(Dcat\Admin\Admin::SECTION['BODY_INNER_BEFORE']) !!}
-
-    <div class="wrapper">
-        @include('admin::partials.sidebar')
-
-        @include('admin::partials.navbar')
-
-        <div class="app-content content">
-            <div class="content-wrapper" id="{{ $pjaxContainerId }}" style="top: 0;min-height: 900px;">
-                @yield('app')
-            </div>
-        </div>
-    </div>
-
-    <footer class="main-footer pt-1">
-        <p class="clearfix blue-grey lighten-2 mb-0 text-center">
-            <span class="text-center d-block d-md-inline-block mt-25">
-                Powered by
-                <a target="_blank" href="https://github.com/jqhph/dcat-admin">Dcat Admin</a>
-                <span>&nbsp;·&nbsp;</span>
-                v{{ Dcat\Admin\Admin::VERSION }}
-            </span>
-
-            <button class="btn btn-primary btn-icon scroll-top pull-right" style="position: fixed;bottom: 2%; right: 10px;display: none">
-                <i class="feather icon-arrow-up"></i>
-            </button>
-        </p>
-    </footer>
-
-    {!! admin_section(Dcat\Admin\Admin::SECTION['BODY_INNER_AFTER']) !!}
-
-    {!! Dcat\Admin\Admin::asset()->jsToHtml() !!}
-
-    <script>Dcat.boot();</script>
-
-</body>
-
-</html>

+ 15 - 1
src/Admin.php

@@ -458,13 +458,27 @@ class Admin
         $jsVariables['token'] = csrf_token();
         $jsVariables['lang'] = __('admin.client') ?: [];
         $jsVariables['colors'] = static::color()->all();
-        $jsVariables['dark_mode'] = Str::contains(config('admin.layout.body_class'), 'dark-mode');
+        $jsVariables['dark_mode'] = static::isDarkMode();
         $jsVariables['sidebar_dark'] = config('admin.layout.sidebar_dark') || ($sidebarStyle === 'dark');
         $jsVariables['sidebar_light_style'] = in_array($sidebarStyle, ['dark', 'light'], true) ? 'sidebar-light-primary' : 'sidebar-primary';
 
         return admin_javascript_json($jsVariables);
     }
 
+    /**
+     * @return bool
+     */
+    public static function isDarkMode()
+    {
+        $bodyClass = config('admin.layout.body_class');
+
+        return in_array(
+            'dark-mode',
+            is_array($bodyClass) ? $bodyClass : explode(' ', $bodyClass),
+            true
+        );
+    }
+
     /**
      * 注册路由.
      *

+ 1 - 1
src/Console/stubs/config.stub

@@ -281,7 +281,7 @@ return [
         // default, blue, blue-light, green
         'color' => 'default',
 
-        'body_class' => '',
+        'body_class' => [],
 
         'sidebar_collapsed' => false,
 

+ 8 - 4
src/Layout/Content.php

@@ -437,7 +437,7 @@ class Content implements Renderable
             'navbar_color'      => '',
             'navbar_class'      => 'sticky',
             'footer_type'       => '',
-            'body_class'        => '',
+            'body_class'        => [],
         ];
 
         $data = array_merge(
@@ -453,7 +453,7 @@ class Content implements Renderable
         $allOptions = [
             'theme'             => '',
             'footer_type'       => '',
-            'body_class'        => '',
+            'body_class'        => [],
             'sidebar_style'     => ['light' => 'sidebar-light-primary', 'primary' => 'sidebar-primary', 'dark' => 'sidebar-dark-white'],
             'sidebar_collapsed' => [],
             'navbar_color'      => [],
@@ -487,7 +487,11 @@ class Content implements Renderable
             }
         }
 
-        if ($data['body_class'] && Str::contains($data['body_class'], 'dark-mode')) {
+        if (! is_array($data['body_class'])) {
+            $data['body_class'] = explode(' ', (string) $data['body_class']);
+        }
+
+        if ($data['body_class'] && in_array('dark-mode', $data['body_class'], true)) {
             $data['sidebar_style'] = 'sidebar-dark-white';
         }
 
@@ -497,7 +501,7 @@ class Content implements Renderable
             'navbar_color'      => $data['navbar_color'],
             'navbar_class'      => $allOptions['navbar_class'][$data['navbar_class']],
             'sidebar_class'     => $data['sidebar_collapsed'] ? 'sidebar-collapse' : '',
-            'body_class'        => $data['body_class'],
+            'body_class'        => implode(' ', $data['body_class']),
             'sidebar_style'     => $data['sidebar_style'],
         ];
     }

+ 2 - 1
src/Widgets/DarkModeSwitcher.php

@@ -2,6 +2,7 @@
 
 namespace Dcat\Admin\Widgets;
 
+use Dcat\Admin\Admin;
 use Illuminate\Contracts\Support\Renderable;
 use Illuminate\Support\Str;
 
@@ -11,7 +12,7 @@ class DarkModeSwitcher implements Renderable
 
     public function __construct(?bool $defaultDarkMode = null)
     {
-        $this->defaultDarkMode = is_null($defaultDarkMode) ? Str::contains(config('admin.layout.body_class'), 'dark-mode') : $defaultDarkMode;
+        $this->defaultDarkMode = is_null($defaultDarkMode) ? Admin::isDarkMode() : $defaultDarkMode;
     }
 
     public function render()