jqh 5 tahun lalu
induk
melakukan
d77f0e5c68

+ 1 - 1
resources/assets/adminlte/scss/_variables.scss

@@ -146,7 +146,7 @@ $sidebar-dark-header-color: hsla(0,0%,100%,.8) !default;
 // Light sidebar
 $sidebar-light-bg: $white !default;
 $sidebar-light-hover-bg: transparent !default;
-$sidebar-light-color: lighten($font-color, 8%) !default;
+$sidebar-light-color: #666 !default;
 $sidebar-light-hover-color: $gray-900 !default;
 $sidebar-light-active-color: $white !default;
 $sidebar-light-submenu-bg: transparent !default;

+ 2 - 0
resources/assets/dcat/extra/grid-extend.js

@@ -330,6 +330,8 @@
 
             box.find('.filter-box .reset').on('click', loadLink);
 
+            box.find('.grid-selector a').on('click', loadLink);
+
             Dcat.ready(function () {
                 setTimeout(function () {
                     box.find('.grid-refresh').off('click').on('click', function () {

+ 6 - 4
resources/assets/dcat/js/extensions/RowSelector.js

@@ -25,23 +25,25 @@ export default class RowSelector {
             $document = $(document),
             selectAll = options.selectAllSelector;
 
-        $document.on('change', selectAll, function() {
+        $(selectAll).on('change', function() {
             $(this).parents(options.container).find(checkboxSelector).prop('checked', this.checked).trigger('change');
         });
         if (options.clickRow) {
-            $document.on('click', checkboxSelector, function (e) {
+            $document.off('click', checkboxSelector).on('click', checkboxSelector, function (e) {
                 if (typeof e.cancelBubble != "undefined") {
                     e.cancelBubble = true;
                 }
                 if (typeof e.stopPropagation != "undefined") {
                     e.stopPropagation();
                 }
-            }).parents('tr').click(function (e) {
+            });
+
+            $document.off('click', options.container+' tr').on('click', options.container+' tr', function () {
                 $(this).find(checkboxSelector).click();
             });
         }
 
-        $document.on('change', checkboxSelector, function () {
+        $document.off('change', checkboxSelector).on('change', checkboxSelector, function () {
             var tr = $(this).closest('tr');
             if (this.checked) {
                 tr.css('background-color', options.background);

+ 15 - 4
resources/assets/dcat/sass/components/_grid-selector.scss

@@ -1,18 +1,19 @@
 .grid-selector {
   //margin: -1rem;
   width: 100%;
+  margin-top: 1rem;
 }
 .grid-selector .wrap {
   position: relative;
   line-height: 40px;
   border-bottom: 1px dashed #eee;
-  padding: 0 30px;
+  padding: 0 25px;
   font-size: 13px;
   overflow:auto;
 }
-.grid-selector .wrap:last-child {
-  border-bottom: none;
-}
+//.grid-selector .wrap:last-child {
+//  border-bottom: none;
+//}
 .grid-selector .select-label {
   float: left;
   width: 100px;
@@ -65,4 +66,14 @@
       margin: 7px 0;
     }
   }
+}
+
+.simple-grid {
+  .grid-selector {
+    .wrap {
+      box-shadow: none;
+      border-radius: 0;
+      border-bottom: 1px dashed $table-border-color;
+    }
+  }
 }

+ 15 - 0
resources/assets/dcat/sass/components/_grid.scss

@@ -31,10 +31,21 @@
 }
 
 .dcat-box.card {
+  margin-bottom: 0;
+
   .card-header {
     border-bottom: 0;
     padding: 1.3rem 1.5rem
   }
+
+  .card-body {
+    padding: 1rem 0 0;
+  }
+
+  .box-footer {
+    border:0;
+    padding: 1rem 1.5rem 1.3rem;
+  }
 }
 
 // 过滤器滑动面板
@@ -84,6 +95,10 @@
     .card-header {
       padding: .8rem 0
     }
+
+    .box-footer {
+      padding: 1rem 1.5rem 0;
+    }
   }
 }
 

+ 4 - 0
resources/views/filter/datetime.blade.php

@@ -20,3 +20,7 @@
     </div>
     <input class="form-control" id="{{$id}}" autocomplete="off" placeholder="{{$label}}" name="{{$name}}" value="{{ request($name, $value) }}">
 </div>
+
+<script require="@moment,@bootstrap-datetimepicker">
+    $('#{{ $id }}').datetimepicker({!! json_encode($options) !!});
+</script>

+ 1 - 1
resources/views/filter/select.blade.php

@@ -24,7 +24,7 @@
     $.ajax({!! $remote['ajaxOptions'] !!}).done(function(data) {
         $("{{ $selector }}").select2($.extend({!! json_encode($configs) !!}, {
             data: data,
-        })).val({!! $values !!}).trigger("change");
+        })).val({!! $remote['values'] !!}).trigger("change");
     });
     @else
     $("{!! $selector !!}").select2(configs);

+ 2 - 2
resources/views/grid/table-pagination.blade.php

@@ -1,9 +1,9 @@
 @if ($paginator = $grid->paginator())
-    <div class="box-footer d-block clearfix " style="border:0;padding: 1rem 1.5rem 1.3rem;">
+    <div class="box-footer d-block clearfix ">
         {!! $paginator->render() !!}
     </div>
 @else
-    <div class="box-footer d-block clearfix text-80 " style="border:0;padding: 1rem 1.5rem 1.3rem;height:48px;line-height:25px;">
+    <div class="box-footer d-block clearfix text-80 " style="height:48px;line-height:25px;">
         @if ($grid->rows()->isEmpty())
             {!! trans('admin.pagination.range', ['first' => '<b>0</b>', 'last' => '<b>'.$grid->rows()->count().'</b>', 'total' => '<b>'.$grid->rows()->count().'</b>',]) !!}
         @else

+ 1 - 1
resources/views/grid/table.blade.php

@@ -10,7 +10,7 @@
 
     {!! $grid->renderHeader() !!}
 
-    <div class="card-body table-responsive table-wrapper complex-container table-middle" style="padding: 1.5rem 0 0;">
+    <div class="card-body table-responsive table-wrapper complex-container table-middle">
         <table class="{{ $grid->formatTableClass() }}" id="{{ $tableId }}" >
             <thead>
             @if ($headers = $grid->getComplexHeaders())

+ 1 - 1
resources/views/scripts/select.blade.php

@@ -43,7 +43,7 @@
 
         $(document).off('change', selector);
         $(document).on('change', selector, function () {
-            var target = $(this).closest('.{{ $load['group'] ?? 'fields-group' }}').find(".{{ $load['class'] }}");
+            var target = $(this).closest('{{ $load['group'] ?? '.fields-group' }}').find(".{{ $load['class'] }}");
 
             if (String(this.value) !== '0' && ! this.value) {
                 return;

+ 11 - 1
src/Grid/Filter/AbstractFilter.php

@@ -501,10 +501,20 @@ abstract class AbstractFilter
      * @return string
      */
     public function column()
+    {
+        return $this->formatColumnClass($this->column);
+    }
+
+    /**
+     * @param string $column
+     *
+     * @return string
+     */
+    public function formatColumnClass($column)
     {
         $parenName = $this->parent->getName();
 
-        return $parenName ? "{$parenName}_{$this->column}" : $this->column;
+        return $parenName ? "{$parenName}_{$column}" : $column;
     }
 
     /**

+ 2 - 19
src/Grid/Filter/Presenter/DateTime.php

@@ -7,15 +7,6 @@ use Illuminate\Support\Arr;
 
 class DateTime extends Presenter
 {
-    public static $js = [
-        '@moment',
-        '@bootstrap-datetimepicker',
-    ];
-
-    public static $css = [
-        '@bootstrap-datetimepicker',
-    ];
-
     /**
      * @var array
      */
@@ -49,19 +40,11 @@ class DateTime extends Presenter
         return $options;
     }
 
-    protected function prepare()
-    {
-        $script = "$('#{$this->filter->getId()}').datetimepicker(".json_encode($this->options).');';
-
-        Admin::script($script);
-    }
-
     public function variables(): array
     {
-        $this->prepare();
-
         return [
-            'group' => $this->filter->group,
+            'group'   => $this->filter->group,
+            'options' => $this->options,
         ];
     }
 }

+ 3 - 3
src/Grid/Filter/Presenter/MultipleSelect.php

@@ -18,11 +18,11 @@ class MultipleSelect extends Select
      */
     public function loadMore($target, $resourceUrl, $idField = 'id', $textField = 'text'): self
     {
-        $column = $this->filter->column();
+        $class = $this->filter->formatColumnClass($target);
 
         $script = <<<JS
-$(document).on('change', ".{$this->getClass($column)}", function () {
-    var target = $(this).closest('form').find(".{$this->getClass($target)}");
+$(document).on('change', ".{$this->getElementClass()}", function () {
+    var target = $(this).closest('form').find(".{$class}");
     var ids = $(this).find("option:selected").map(function(index,elem) {
             return $(elem).val();
         }).get().join(',');

+ 4 - 3
src/Grid/Filter/Presenter/Select.php

@@ -2,6 +2,7 @@
 
 namespace Dcat\Admin\Grid\Filter\Presenter;
 
+use Dcat\Admin\Support\Helper;
 use Illuminate\Contracts\Support\Arrayable;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Arr;
@@ -159,7 +160,7 @@ class Select extends Presenter
     protected function loadRemoteOptions(string $url, array $parameters = [], array $options = [])
     {
         $ajaxOptions = [
-            'url' => admin_url($url.'?'.http_build_query($parameters)),
+            'url' => Helper::urlWithQuery(admin_url($url), $parameters),
         ];
         $this->addDefaultConfig([
             'allowClear'  => true,
@@ -176,7 +177,7 @@ class Select extends Presenter
         $values = json_encode($values);
 
         return $this->addVariables([
-            'remote' => compact('ajaxOptions', 'values')
+            'remote' => compact('ajaxOptions', 'values'),
         ]);
     }
 
@@ -283,7 +284,7 @@ class Select extends Presenter
      */
     public function load($target, string $resourceUrl, string $idField = 'id', string $textField = 'text'): self
     {
-        $class = $this->getClass($target);
+        $class = $this->filter->formatColumnClass($target);
 
         $url = admin_url($resourceUrl);