Просмотр исходного кода

:construction: 工具表单footer优化;暗黑模式切换按钮功能优化;ajax json返回值处理优化

jqh 5 лет назад
Родитель
Сommit
362f72c88b

+ 0 - 41
resources/assets/dcat/js/bootstrappers/DataActions.js

@@ -125,47 +125,6 @@ let defaultActions = {
             .on('click', selector, toggle)
             .on('click', selector, fix);
     },
-
-    // 暗黑模式切换按钮
-    'dark-mode' (action, Dcat) {
-        var storage = localStorage || {setItem:function () {}, getItem: function () {}},
-            darkMode = Dcat.darkMode,
-            key = 'dcat-admin-theme-mode',
-            mode = storage.getItem(key),
-            icon = '.dark-mode-switcher i';
-
-        function switchMode(dark) {
-            if (dark) {
-                $(icon).addClass('icon-sun').removeClass('icon-moon');
-                darkMode.display(true);
-                return;
-            }
-
-            darkMode.display(false);
-            $(icon).removeClass('icon-sun').addClass('icon-moon');
-        }
-
-        if (mode === 'dark') {
-            switchMode(true);
-        } else if (mode === 'def') {
-            switchMode(false)
-        }
-
-        $document.off('click', action).on('click', action, function () {
-            $(icon).toggleClass('icon-sun icon-moon');
-
-            if ($(icon).hasClass('icon-moon')) {
-                switchMode(false);
-
-                storage.setItem(key, 'def');
-
-            } else {
-                storage.setItem(key, 'dark');
-
-                switchMode(true)
-            }
-        })
-    },
 };
 
 export default class DataActions {

+ 5 - 1
resources/assets/dcat/js/extensions/Ajax.js

@@ -101,8 +101,12 @@ export default class Ajax {
         let Dcat = this.dcat,
             data = response.data;
 
+        if (! response) {
+            return;
+        }
+
         if (typeof response !== 'object') {
-            return Dcat.error({type: 'error', title: 'Oops!'});
+            return Dcat.error('error', 'Oops!');
         }
 
         var then = function (then) {

+ 41 - 0
resources/assets/dcat/js/extensions/DarkMode.js

@@ -14,6 +14,47 @@ export default class DarkMode {
         Dcat.darkMode = this;
     }
 
+    // 暗黑模式切换按钮
+    initSwitcher (selector) {
+        var storage = localStorage || {setItem:function () {}, getItem: function () {}},
+            darkMode = this,
+            key = 'dcat-admin-theme-mode',
+            mode = storage.getItem(key),
+            icon = '.dark-mode-switcher i';
+
+        function switchMode(dark) {
+            if (dark) {
+                $(icon).addClass('icon-sun').removeClass('icon-moon');
+                darkMode.display(true);
+                return;
+            }
+
+            darkMode.display(false);
+            $(icon).removeClass('icon-sun').addClass('icon-moon');
+        }
+
+        if (mode === 'dark') {
+            switchMode(true);
+        } else if (mode === 'def') {
+            switchMode(false)
+        }
+
+        $(document).off('click', selector).on('click', selector, function () {
+            $(icon).toggleClass('icon-sun icon-moon');
+
+            if ($(icon).hasClass('icon-moon')) {
+                switchMode(false);
+
+                storage.setItem(key, 'def');
+
+            } else {
+                storage.setItem(key, 'dark');
+
+                switchMode(true)
+            }
+        })
+    }
+
     toggle() {
         if ($('body').hasClass(this.options.class.dark)) {
             this.display(false)

+ 2 - 2
resources/assets/dcat/sass/components/_table.scss

@@ -236,7 +236,7 @@ body:not(.dark-mode) {
     }
 
     table.custom-data-table thead th {
-      height: 40px;
+      height: 38px;
       vertical-align: middle;
     }
 
@@ -260,7 +260,7 @@ body:not(.dark-mode) {
 
     .table-wrap {
       table.custom-data-table thead th {
-        height: 21px;
+        height: 19px;
       }
     }
   }

+ 1 - 15
resources/views/widgets/form.blade.php

@@ -31,21 +31,7 @@
         @endif
     </div>
 
-    @if($buttons['submit'] || $buttons['reset'])
-    <div class="box-footer row" style="display: flex">
-        <div class="col-md-2"> &nbsp;</div>
-
-        <div class="col-md-8">
-            @if(! empty($buttons['reset']))
-                <button type="reset" class="btn btn-white pull-left"><i class="feather icon-rotate-ccw"></i> {{ trans('admin.reset') }}</button>
-            @endif
-
-            @if(! empty($buttons['submit']))
-                <button type="submit" class="btn btn-primary pull-right"><i class="feather icon-save"></i> {{ trans('admin.submit') }}</button>
-            @endif
-        </div>
-    </div>
-    @endif
+    {!! $footer !!}
 {!! $end !!}
 
 @if(! empty($ajax))

+ 6 - 4
src/Console/stubs/form.stub

@@ -3,7 +3,6 @@
 namespace DummyNamespace;
 
 use Dcat\Admin\Widgets\Form;
-use Symfony\Component\HttpFoundation\Response;
 
 class DummyClass extends Form
 {
@@ -12,15 +11,18 @@ class DummyClass extends Form
      *
      * @param array $input
      *
-     * @return Response
+     * @return mixed
      */
     public function handle(array $input)
     {
         // dump($input);
 
-        // return $this->error('Your error message.');
+        // return $this->response()->error('Your error message.');
 
-        return $this->success('Processed successfully.', '/');
+        return $this
+				->response()
+				->success('Processed successfully.')
+				->refresh();
     }
 
     /**

+ 17 - 17
src/Extend/ServiceProvider.php

@@ -257,23 +257,6 @@ abstract class ServiceProvider extends LaravelServiceProvider
         return Arr::get($this->config, $key, $default);
     }
 
-    /**
-     * 获取或保存配置.
-     *
-     * @param string $key
-     * @param string $value
-     *
-     * @return mixed
-     */
-    public static function setting($key = null, $value = null)
-    {
-        $extension = app(static::class);
-
-        if ($extension instanceof ServiceProvider) {
-            return $extension->config($key, $value);
-        }
-    }
-
     /**
      * 卸载扩展.
      */
@@ -376,6 +359,23 @@ abstract class ServiceProvider extends LaravelServiceProvider
         return $this;
     }
 
+    /**
+     * 获取或保存配置.
+     *
+     * @param string $key
+     * @param string $value
+     *
+     * @return mixed
+     */
+    public static function setting($key = null, $value = null)
+    {
+        $extension = app(static::class);
+
+        if ($extension && $extension instanceof ServiceProvider) {
+            return $extension->config($key, $value);
+        }
+    }
+
     /**
      * 注册别名.
      */

+ 1 - 1
src/Http/Forms/InstallFromLocal.php

@@ -62,7 +62,7 @@ class InstallFromLocal extends Form implements LazyRenderable
         $this->file('extension')
             ->required()
             ->disk($this->disk())
-            ->accept('zip,arc,rar,tar.gz', 'application/zip')
+            ->accept('zip', 'application/zip')
             ->autoUpload();
     }
 

+ 5 - 1
src/Widgets/DarkModeSwitcher.php

@@ -23,12 +23,16 @@ class DarkModeSwitcher implements Renderable
 <ul class="nav navbar-nav float-right">
     <li class="dropdown dropdown-user nav-item">
         <a class="dropdown-toggle nav-link">
-            <span class="dark-mode-switcher" data-action="dark-mode">
+            <span class="dark-mode-switcher">
                 <i class="feather {$icon}"></i>
             </span>
         </a>
     </li>
 </ul>
+
+<script>
+Dcat.darkMode.initSwitcher('.dark-mode-switcher');
+</script>
 HTML;
     }
 }

+ 52 - 1
src/Widgets/Form.php

@@ -592,14 +592,65 @@ class Form implements Renderable
             'end'       => $this->close(),
             'fields'    => $this->fields,
             'method'    => $this->getHtmlAttribute('method'),
-            'buttons'   => $this->buttons,
             'rows'      => $this->rows(),
             'layout'    => $this->layout(),
             'elementId' => $this->getElementId(),
             'ajax'      => $this->useAjaxSubmit,
+            'footer'    => $this->renderFooter(),
         ], $this->variables);
     }
 
+    /**
+     * 表单底部内容.
+     *
+     * @return string
+     */
+    protected function renderFooter()
+    {
+        if (empty($this->buttons['reset']) && empty($this->buttons['submit'])) {
+            return;
+        }
+
+        $buttons = '';
+
+        if (! empty($this->buttons['reset'])) {
+            $reset = trans('admin.reset');
+
+            $buttons .= "<button type=\"reset\" class=\"btn btn-white pull-left\"><i class=\"feather icon-rotate-ccw\"></i> {$reset}</button>";
+        }
+
+        if(! empty($this->buttons['submit'])) {
+            $submit = $this->getSubmitButtonLabel();
+
+            $buttons .= "<button type=\"submit\" class=\"btn btn-primary pull-right\"><i class=\"feather icon-save\"></i> {$submit}</button>";
+        }
+
+        return <<<HTML
+<div class="box-footer row d-flex">
+    <div class="col-md-2"> &nbsp;</div>
+
+    <div class="col-md-8">{$buttons}</div>
+</div>
+HTML;
+    }
+
+    /**
+     * 提交按钮文本.
+     *
+     * @return string
+     */
+    protected function getSubmitButtonLabel()
+    {
+        return trans('admin.submit');
+    }
+
+    /**
+     * 设置视图变量.
+     *
+     * @param array $variables
+     *
+     * @return $this
+     */
     public function addVariables(array $variables)
     {
         $this->variables = array_merge($this->variables, $variables);