Browse Source

Merge pull request #11 from jqhph/master

拉取最新的代码
yxx 5 years ago
parent
commit
816f051c6a

+ 1 - 1
resources/assets/dcat/js/dcat-app.js

@@ -10,7 +10,7 @@
 
 import Dcat from './Dcat'
 
-import NProgress from './nprogress/NProgress.min'
+import NProgress from './NProgress/NProgress.min'
 import Ajax from './extensions/Ajax'
 import Toastr from './extensions/Toastr'
 import SweetAlert2 from './extensions/SweetAlert2'

+ 4 - 0
resources/assets/dcat/sass/dcat-app.scss

@@ -35,6 +35,10 @@ body, .header-navbar, .navigation, .breadcrumb, h1, h2, h3, h4, h5, h6, .h1, .h2
   font-family: $font-family-sans-serif;
 }
 
+li {
+  list-style-type: none;
+}
+
 // 颜色class定义
 @import "./colors";
 // 常用class定义

File diff suppressed because it is too large
+ 0 - 0
resources/dist/adminlte/adminlte.js.map


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/css/dcat-app-blue-dark.css


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/css/dcat-app-blue-light.css


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/css/dcat-app-blue.css


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/css/dcat-app-green.css


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/css/dcat-app.css


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/extra/action.js.map


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/extra/resource-selector.js.map


File diff suppressed because it is too large
+ 0 - 0
resources/dist/dcat/js/dcat-app.js.map


+ 1 - 1
resources/views/form/hasmany.blade.php

@@ -52,7 +52,7 @@
     <div class="form-group row">
         <label class="{{$viewClass['label']}} control-label"></label>
         <div class="{{$viewClass['field']}}">
-            <div class="add btn btn-success btn-sm"><i class="feather icon-save"></i>&nbsp;{{ trans('admin.new') }}</div>
+            <div class="add btn btn-success btn-sm"><i class="feather icon-plus"></i>&nbsp;{{ trans('admin.new') }}</div>
         </div>
     </div>
     @endif

+ 14 - 15
resources/views/form/hasmanytab.blade.php

@@ -5,30 +5,29 @@
     .close-tab {
         position: absolute;
         font-size: 10px;
-        top: 2px;
-        right: 5px;
-        color: #94A6B0;
+        top: 20px;
+        right: 0;
         cursor: pointer;
         display: none;
     }
 </style>
 <div id="has-many-{{$column}}" class="nav-tabs-custom has-many-{{$column}}">
     <div class="row header">
-        <div class="col-md-{{$viewClass['label']}}"><h4 class="pull-right">{!! $label !!}</h4></div>
-        <div class="col-md-{{$viewClass['field']}}">
-            <button type="button" class="btn btn-white btn-sm add"><i class="fa fa-plus-circle" style="font-size: large;"></i></button>
+        <div class="{{$viewClass['label']}}"><h4 class="pull-right">{!! $label !!}</h4></div>
+        <div class="{{$viewClass['field']}}">
+            <div class="add btn btn-white btn-sm"><i class="feather icon-plus"></i>&nbsp;{{ trans('admin.new') }}</div>
         </div>
     </div>
 
-    <hr style="margin-top: 0px;">
+    <hr class="mb-0 mt-0">
 
     <ul class="nav nav-tabs">
         @foreach($forms as $pk => $form)
-            <li class="@if ($form == reset($forms)) active @endif ">
-                <a href="#{{ $relationName . '_' . $pk }}" data-toggle="tab">
-                    {{ $pk }} <i class="fa fa-exclamation-circle text-red hide"></i>
+            <li class="nav-item ">
+                <a href="#{{ $relationName . '_' . $pk }}" class="nav-link @if ($form == reset($forms)) active @endif " data-toggle="tab">
+                    {{ $pk }} <i class="feather icon-alert-circle text-red d-none"></i>
                 </a>
-                <i class="close-tab fa fa-times" ></i>
+                <i class="close-tab feather icon-trash text-red"></i>
             </li>
         @endforeach
 
@@ -46,11 +45,11 @@
     </div>
 
     <template class="nav-tab-tpl">
-        <li class="new">
-            <a href="#{{ $relationName . '_new_' . \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}" data-toggle="tab">
-                &nbsp;New {{ \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }} <i class="fa fa-exclamation-circle text-red hide"></i>
+        <li class="new nav-item">
+            <a href="#{{ $relationName . '_new_' . \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}" class="nav-link" data-toggle="tab">
+                &nbsp;New {{ \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }} <i class="feather icon-alert-circle text-red d-none"></i>
             </a>
-            <i class="close-tab fa fa-times" ></i>
+            <i class="close-tab feather icon-trash text-red" ></i>
         </li>
     </template>
     <template class="pane-tpl">

+ 3 - 3
resources/views/form/hasmanytable.blade.php

@@ -42,7 +42,7 @@
                         @if($options['allowDelete'])
                             <td class="form-group">
                                 <div>
-                                    <div class="remove btn btn-white btn-sm pull-right"><i class="feather icon-trash">&nbsp;</i>{{ trans('admin.remove') }}</div>
+                                    <div class="remove btn btn-white btn-sm pull-right"><i class="feather icon-trash"></i></div>
                                 </div>
                             </td>
                         @endif
@@ -58,7 +58,7 @@
 
                     <td class="form-group">
                         <div>
-                            <div class="remove btn btn-white btn-sm pull-right"><i class="feather icon-trash">&nbsp;</i>{{ trans('admin.remove') }}</div>
+                            <div class="remove btn btn-white btn-sm pull-right"><i class="feather icon-trash"></i></div>
                         </div>
                     </td>
                 </tr>
@@ -67,7 +67,7 @@
             @if($options['allowCreate'])
                 <div class="form-group row m-t-10">
                     <div class="{{$viewClass['field']}}" style="margin-top: 8px">
-                        <div class="add btn btn-success btn-sm"><i class="feather icon-save"></i>&nbsp;{{ trans('admin.new') }}</div>
+                        <div class="add btn btn-success btn-sm"><i class="feather icon-plus"></i>&nbsp;{{ trans('admin.new') }}</div>
                     </div>
                 </div>
             @endif

+ 1 - 1
src/Admin.php

@@ -35,7 +35,7 @@ class Admin
      *
      * @var string
      */
-    const VERSION = '1.3.4';
+    const VERSION = '1.3.5';
 
     /**
      * @var array

+ 2 - 0
src/Form/Field/HasMany.php

@@ -708,6 +708,8 @@ JS;
         // specify a view to render.
         $this->view = $this->views[$this->viewMode];
 
+        Admin::style('.table-has-many .input-group{flex-wrap: nowrap!important}');
+
         return parent::render()->with([
             'headers'      => $headers,
             'forms'        => $this->buildRelatedForms(),

+ 2 - 2
src/Form/Field/Number.php

@@ -14,8 +14,8 @@ class Number extends Text
 $('{$this->getElementClassSelector()}:not(.initialized)')
     .addClass('initialized')
     .bootstrapNumber({
-        upClass: 'success',
-        downClass: 'primary',
+        upClass: 'primary',
+        downClass: 'white',
         center: true
     });
 JS;

+ 28 - 1
src/Grid/Column.php

@@ -5,6 +5,7 @@ namespace Dcat\Admin\Grid;
 use Closure;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Grid\Displayers\AbstractDisplayer;
+use Dcat\Admin\Grid\Displayers\Editable;
 use Dcat\Admin\Grid\Displayers\Orderable;
 use Dcat\Admin\Traits\HasBuilderEvents;
 use Dcat\Admin\Traits\HasDefinitions;
@@ -71,7 +72,6 @@ class Column
      * @var array
      */
     protected static $displayers = [
-        'editable'         => Displayers\Editable::class,
         'switch'           => Displayers\SwitchDisplay::class,
         'switchGroup'      => Displayers\SwitchGroup::class,
         'select'           => Displayers\Select::class,
@@ -92,6 +92,7 @@ class Column
         'copyable'         => Displayers\Copyable::class,
         'orderable'        => Displayers\Orderable::class,
         'limit'            => Displayers\Limit::class,
+        'editable'         => Displayers\Editable::class,
     ];
 
     /**
@@ -460,6 +461,32 @@ class Column
         return $this;
     }
 
+    /**
+     * Display column using a grid row action.
+     *
+     * @param string $action
+     *
+     * @return $this
+     */
+    public function action($action)
+    {
+        if (! is_subclass_of($action, RowAction::class)) {
+            throw new \InvalidArgumentException("Action class [$action] must be sub-class of [Dcat\Admin\Grid\RowAction]");
+        }
+
+        $grid = $this->grid;
+
+        return $this->display(function ($_, $column) use ($action, $grid) {
+            /** @var RowAction $action */
+            $action = $action::make();
+
+            return $action
+                ->setGrid($grid)
+                ->setColumn($column)
+                ->setRow($this);
+        });
+    }
+
     /**
      * If has display callbacks.
      *

+ 1 - 1
src/Grid/Column/ValueFilter.php

@@ -70,7 +70,7 @@ class ValueFilter
     protected function wrap($value)
     {
         if (! preg_match('/<[^>]+>(.*)<\/[^>]+>/', $value)) {
-            return "<span class='dashed'>{$value}</span>";
+            return "<span>{$value}</span>";
         }
 
         return $value;

+ 60 - 40
src/Grid/Displayers/Editable.php

@@ -6,62 +6,82 @@ use Dcat\Admin\Admin;
 
 class Editable extends AbstractDisplayer
 {
-
-    protected $class = "grid-editable";
+    protected $selector = 'grid-editable';
 
     public function display()
     {
-        $id = $this->getKey();
-        $name = $this->column->getName();
-        $resource = $this->resource() . "/" . $id;
-        $this->setupScript();
-        return "<span class=\"{$this->class}\" style=\"border-bottom:dashed 1px #0088cc\" data-value=\"{$this->value}\"  data-name=\"{$name}\" data-id=\"{$id}\" data-url=\"{$resource}\" >{$this->value}</span>";
+        $this->addScript();
+        $this->addStyle();
+
+        return <<<HTML
+<div class="{$this->selector}">
+    <span data-value="{$this->value}" data-name="{$this->column->getName()}" data-id="{$this->getKey()}" data-url="{$this->getUrl()}" >
+        {$this->value}
+    </span>
+</div>
+HTML;
+    }
+
+    protected function getUrl()
+    {
+        return $this->resource().'/'.$this->getKey();
+    }
+
+    protected function addStyle()
+    {
+        $color = Admin::color()->link();
+
+        Admin::style(
+            <<<CSS
+.grid-editable{border-bottom:dashed 1px $color;color: $color;display: inline-block}
+CSS
+        );
     }
 
-    protected function setupScript()
+    protected function addScript()
     {
         $script = <<<JS
-            $(".{$this->class}").on("click",function() {
+            $(".{$this->selector} span").on("click",function() {
                 $(this).attr('contenteditable', true);
-            })
-            $(".{$this->class}").on("blur",function() {
+            }).on("blur",function() {
                 var obj = $(this);
                 var url = obj.attr('data-url').trim();
                 var name = obj.attr('data-name').trim();
                 var old_value = obj.attr('data-value').trim();
                 var value = obj.html().trim();
-                if (value != old_value) {
-                    var data = {
-                        _token: Dcat.token,
-                        _method: 'PUT'
-                    };
-                    data[name] = value;
-                    Dcat.NP.start();
-                    $.ajax({
-                        url: url,
-                        type: "POST",
-                        data: data,
-                        success: function (data) {
-                            Dcat.NP.done();
-                            if (data.status) {
-                                obj.attr('data-value',value)
-                                Dcat.success(data.message);
-                            } else {
-                                obj.html(old_value)
-                                Dcat.error(data.message);
-                            }
-                        },
-                        error:function(a,b,c) {
-                          Dcat.NP.done();
-                          obj.html(old_value)
-                          Dcat.handleAjaxError(a, b, c);
-                        }
-                    });
+                if (value == old_value) {
+                    return;
                 }
+                
+                var data = {
+                    _token: Dcat.token,
+                    _method: 'PUT'
+                };
+                data[name] = value;
+                Dcat.NP.start();
+                $.ajax({
+                    url: url,
+                    type: "POST",
+                    data: data,
+                    success: function (data) {
+                        Dcat.NP.done();
+                        if (data.status) {
+                            obj.attr('data-value',value);
+                            Dcat.success(data.message);
+                        } else {
+                            obj.html(old_value);
+                            Dcat.error(data.message);
+                        }
+                    },
+                    error:function(a,b,c) {
+                      Dcat.NP.done();
+                      obj.html(old_value);
+                      Dcat.handleAjaxError(a, b, c);
+                    }
+                });
             })
-            
 JS;
+
         Admin::script($script);
     }
-
 }

+ 2 - 1
src/Grid/Tools/RowSelector.php

@@ -4,6 +4,7 @@ namespace Dcat\Admin\Grid\Tools;
 
 use Dcat\Admin\Admin;
 use Dcat\Admin\Grid;
+use Illuminate\Support\Arr;
 
 class RowSelector
 {
@@ -93,7 +94,7 @@ JS
     protected function getTitle($row, $id)
     {
         if ($key = $this->titleColumn) {
-            $label = $row->{$key};
+            $label = Arr::get($row->toArray(), $key);
             if ($label !== null && $label !== '') {
                 return $label;
             }

Some files were not shown because too many files changed in this diff