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

Merge branch '2.0' into gitee2

jqh 4 лет назад
Родитель
Сommit
6b703e95a6

+ 1 - 1
.travis.yml

@@ -49,7 +49,7 @@ install:
   - php artisan admin:publish --force
   - php artisan admin:install
   - php artisan migrate:rollback
-  - php artisan dusk:chrome-driver 87
+  - php artisan dusk:chrome-driver 89
 #  - php artisan dusk:update 79
   - cp -f ./tests/routes.php ./app/Admin/
   - cp -rf ./tests/resources/config ./config/

+ 19 - 11
resources/assets/dcat/extra/select-table.js

@@ -19,6 +19,7 @@
 
         self.options = options;
         self.$input = $(options.input);
+        self.selected = {}; // 保存临时选中的ID
 
         self.init();
     }
@@ -52,6 +53,9 @@
                     self.render(selected[0]);
 
                     self.$dialog.trigger('dialog:close');
+
+                    // 重置已选中数据
+                    self.resetSelected();
                 });
 
                 self.$cancel.on('click', function () {
@@ -59,13 +63,17 @@
                 });
 
                 self.bind();
+
+                // 重置已选中数据
+                self.resetSelected();
             });
 
             self.render(values);
         },
 
         bind() {
-            let self = this, options = self.options;
+            let self = this,
+                options = self.options;
 
             // 表格加载完成事件
             self.$dialog.find(options.table).on('table:loaded', function () {
@@ -76,12 +84,10 @@
                     $(this).find('.checkbox-grid-header').remove();
                 }
 
-                // 重置已选中数据
-                self.resetSelected();
-
                 checkbox.on('change', function () {
-                    let id = $(this).data('id'),
-                        label = $(this).data('label');
+                    let $this = $(this),
+                        id = $this.data('id'),
+                        label = $this.data('label');
 
                     if (this.checked) {
                         if (! options.multiple) {
@@ -91,7 +97,7 @@
 
                         // 多选
                         if (options.max && (self.getSelectedRows()[0].length > options.max)) {
-                            $(this).prop('checked', false);
+                            $this.prop('checked', false);
                             delete self.selected[id];
 
                             return Dcat.warning(self.options.lang.exceed_max_item);
@@ -104,9 +110,11 @@
                         if (this.checked) {
                             // 单选效果
                             checkbox.each(function () {
-                                if ($(this).data('id') != id) {
-                                    $(this).prop('checked', false);
-                                    $(this).parents('tr').css('background-color', '');
+                                let $this = $(this);
+
+                                if ($this.data('id') != id) {
+                                    $this.prop('checked', false);
+                                    $this.parents('tr').css('background-color', '');
                                 }
                             });
                         }
@@ -139,7 +147,7 @@
             let self = this,
                 keys = self.getKeys();
 
-            self.selected = [];
+            self.selected = {};
 
             for (let i in keys) {
                 self.selected[keys[i]] = {id: keys[i], label: self.labels[keys[i]]};

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/adminlte/adminlte.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/adminlte/adminlte.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/adminlte/adminlte.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/action.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/grid-extend.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/select-table.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/select-table.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/upload.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/upload.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/js/dcat-app.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/js/dcat-app.js.map


+ 0 - 0
resources/views/filter/tile-container.blade.php → resources/views/filter/simple-container.blade.php


+ 18 - 2
src/Admin.php

@@ -30,7 +30,7 @@ class Admin
     use HasAssets;
     use HasHtml;
 
-    const VERSION = '2.0.19-beta';
+    const VERSION = '2.0.20-beta';
 
     const SECTION = [
         // 往 <head> 标签内输入内容
@@ -158,15 +158,31 @@ class Admin
         return $navbar;
     }
 
+    /**
+     * 启用或禁用Pjax
+     *
+     * @param bool $value
+     *
+     * @return void
+     */
+    public function pjax(bool $value = true)
+    {
+        static::context()->pjaxContainerId = $value ? static::$defaultPjaxContainerId : false;
+    }
+
     /**
      * 禁用pjax.
+     *
+     * @return void
      */
     public static function disablePjax()
     {
-        static::context()->pjaxContainerId = false;
+        static::pjax(false);
     }
 
     /**
+     * 获取pjax ID.
+     *
      * @return string|void
      */
     public static function getPjaxContainerId()

+ 29 - 1
src/Form/Field/SelectTable.php

@@ -18,6 +18,10 @@ class SelectTable extends Field
 
     protected $style = 'primary';
 
+    protected $visibleColumn;
+
+    protected $key;
+
     public function __construct($column, $arguments = [])
     {
         parent::__construct($column, $arguments);
@@ -71,6 +75,22 @@ class SelectTable extends Field
         return $this;
     }
 
+    /**
+     * 设置选中的key以及标题字段.
+     *
+     * @param $visibleColumn
+     * @param $key
+     *
+     * @return $this
+     */
+    public function pluck(?string $visibleColumn, ?string $key = 'id')
+    {
+        $this->visibleColumn = $visibleColumn;
+        $this->key = $key;
+
+        return $this;
+    }
+
     /**
      * @param array $options
      *
@@ -94,7 +114,7 @@ class SelectTable extends Field
      */
     public function model(string $model, string $id = 'id', string $text = 'title')
     {
-        return $this->options(function ($v) use ($model, $id, $text) {
+        return $this->pluck($text, $id)->options(function ($v) use ($model, $id, $text) {
             if (! $v) {
                 return [];
             }
@@ -129,6 +149,14 @@ class SelectTable extends Field
         $this->dialog
             ->footer($this->renderFooter())
             ->button($this->renderButton());
+
+        // 设置选中的字段和待显示的标题字段
+        $this->dialog
+            ->getTable()
+            ->getRenderable()
+            ->payload([
+                LazyRenderable::ROW_SELECTOR_COLUMN_NAME => [$this->key, $this->visibleColumn],
+            ]);
     }
 
     public function render()

+ 1 - 1
src/Form/Field/Tags.php

@@ -57,7 +57,7 @@ class Tags extends Field
      *
      * @return $this
      */
-    public function pluck($visibleColumn, $key)
+    public function pluck($visibleColumn, $key = 'id')
     {
         if (! empty($visibleColumn) && ! empty($key)) {
             $this->keyAsValue = true;

+ 0 - 1
src/Grid/Actions/Delete.php

@@ -3,7 +3,6 @@
 namespace Dcat\Admin\Grid\Actions;
 
 use Dcat\Admin\Grid\RowAction;
-use Dcat\Admin\Support\Helper;
 
 class Delete extends RowAction
 {

+ 1 - 2
src/Grid/Concerns/HasTree.php

@@ -10,9 +10,8 @@ use Dcat\Admin\Support\Helper;
 use Illuminate\Support\Collection;
 
 /**
- * Trait HasTree
+ * Trait HasTree.
  *
- * @package Dcat\Admin\Grid\Concerns
  *
  * @method \Dcat\Admin\Grid grid()
  */

+ 29 - 1
src/Grid/Filter/Presenter/SelectTable.php

@@ -27,6 +27,10 @@ class SelectTable extends Presenter
 
     protected $placeholder;
 
+    protected $visibleColumn;
+
+    protected $key;
+
     public function __construct(LazyRenderable $table)
     {
         $this->dialog = DialogTable::make($table);
@@ -58,7 +62,7 @@ class SelectTable extends Presenter
      */
     public function model(string $model, string $id = 'id', string $text = 'title')
     {
-        return $this->options(function ($v) use ($model, $id, $text) {
+        return $this->pluck($text, $id)->options(function ($v) use ($model, $id, $text) {
             if (! $v) {
                 return [];
             }
@@ -67,6 +71,22 @@ class SelectTable extends Presenter
         });
     }
 
+    /**
+     * 设置选中的key以及标题字段.
+     *
+     * @param $visibleColumn
+     * @param $key
+     *
+     * @return $this
+     */
+    public function pluck(?string $visibleColumn, ?string $key = 'id')
+    {
+        $this->visibleColumn = $visibleColumn;
+        $this->key = $key;
+
+        return $this;
+    }
+
     /**
      * 设置弹窗宽度.
      *
@@ -120,6 +140,14 @@ class SelectTable extends Presenter
         $this->dialog
             ->footer($this->renderFooter())
             ->button($this->renderButton());
+
+        // 设置选中的字段和待显示的标题字段
+        $this->dialog
+            ->getTable()
+            ->getRenderable()
+            ->payload([
+                LazyRenderable::ROW_SELECTOR_COLUMN_NAME => [$this->key, $this->visibleColumn],
+            ]);
     }
 
     protected function formatOptions()

+ 14 - 2
src/Grid/LazyRenderable.php

@@ -8,6 +8,10 @@ use Dcat\Admin\Support\LazyRenderable as Renderable;
 
 abstract class LazyRenderable extends Renderable
 {
+    const SIMPLE_NAME = '_simple_';
+
+    const ROW_SELECTOR_COLUMN_NAME = '_row_columns_';
+
     /**
      * 是否启用简化模式.
      *
@@ -50,7 +54,7 @@ HTML;
      */
     public function simple(bool $value = true)
     {
-        return $this->payload(['_simple_' => $value]);
+        return $this->payload([static::SIMPLE_NAME => $value]);
     }
 
     /**
@@ -72,11 +76,19 @@ HTML;
 
             $grid->filter()
                 ->panel()
-                ->view('admin::filter.tile-container');
+                ->view('admin::filter.simple-container');
 
             $grid->rowSelector()->click();
         }
 
+        if (! empty($this->payload[static::ROW_SELECTOR_COLUMN_NAME])) {
+            [$key, $visibleColumn] = $this->payload[static::ROW_SELECTOR_COLUMN_NAME];
+
+            $key && $grid->rowSelector()->idColumn($key);
+
+            $visibleColumn && $grid->rowSelector()->titleColumn($visibleColumn);
+        }
+
         return $grid;
     }
 

+ 4 - 4
src/Support/helpers.php

@@ -418,7 +418,7 @@ if (! function_exists('admin_asset')) {
      */
     function admin_asset($path)
     {
-        return Dcat\Admin\Admin::asset()->url($path);
+        return Admin::asset()->url($path);
     }
 }
 
@@ -434,7 +434,7 @@ if (! function_exists('admin_route')) {
      */
     function admin_route(?string $route, array $params = [], $absolute = true)
     {
-        return Dcat\Admin\Admin::app()->getRoute($route, $params, $absolute);
+        return Admin::app()->getRoute($route, $params, $absolute);
     }
 }
 
@@ -448,7 +448,7 @@ if (! function_exists('admin_route_name')) {
      */
     function admin_route_name(?string $route)
     {
-        return Dcat\Admin\Admin::app()->getRoutePrefix().$route;
+        return Admin::app()->getRoutePrefix().$route;
     }
 }
 
@@ -462,7 +462,7 @@ if (! function_exists('admin_api_route_name')) {
      */
     function admin_api_route_name(?string $route = '')
     {
-        return Dcat\Admin\Admin::app()->getCurrentApiRoutePrefix().$route;
+        return Admin::app()->getCurrentApiRoutePrefix().$route;
     }
 }
 

+ 1 - 0
src/Tree.php

@@ -317,6 +317,7 @@ class Tree implements Renderable
     {
         return $this->disableSaveButton(! $value);
     }
+
     /**
      * Disable refresh.
      *

+ 8 - 0
src/Widgets/LazyTable.php

@@ -61,6 +61,14 @@ class LazyTable extends Widget
         return $this;
     }
 
+    /**
+     * @return LazyRenderable
+     */
+    public function getRenderable()
+    {
+        return $this->renderable;
+    }
+
     /**
      * 设置是否自动加载.
      *

Некоторые файлы не были показаны из-за большого количества измененных файлов