From 8c7d326eb6d3c57645c5f971656a2a041bf7f86a Mon Sep 17 00:00:00 2001 From: nidjo Date: Fri, 30 Dec 2022 14:09:06 +0100 Subject: [PATCH] group actions confirm dialog --- assets/datagrid.js | 5 +++++ src/DataGrid.php | 13 +++++++++++++ src/GroupAction/GroupActionCollection.php | 9 ++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/datagrid.js b/assets/datagrid.js index 46505e7a..b7d9c459 100644 --- a/assets/datagrid.js +++ b/assets/datagrid.js @@ -116,6 +116,11 @@ var datagridFilterMultiSelect, datagridGroupActionMultiSelect, datagridShiftGrou indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; $(document).on('click', '[data-datagrid-confirm]:not(.ajax)', function(e) { + var data = $(e.target).data(); + + if (data['groupAction'] === true) { + return; + } if (!confirm($(e.target).closest('a').attr('data-datagrid-confirm'))) { e.stopPropagation(); return e.preventDefault(); diff --git a/src/DataGrid.php b/src/DataGrid.php index f2ef5b18..6f7b3fae 100644 --- a/src/DataGrid.php +++ b/src/DataGrid.php @@ -258,6 +258,8 @@ class DataGrid extends Control protected bool $showSelectedRowsCount = true; + protected ?string $groupActionsConfirmDialog; + private ?string $customPaginatorTemplate = null; private ?string $componentFullName = null; @@ -2854,6 +2856,17 @@ public function setCustomPaginatorTemplate(string $templateFile): void $this->customPaginatorTemplate = $templateFile; } + + public function setGroupActionsConfirmDialog(string $confirmDialog): void + { + $this->groupActionsConfirmDialog = $confirmDialog; + } + + public function getGroupActionsConfirmDialog(): ?string + { + return $this->groupActionsConfirmDialog; + } + protected function createSorting(array $sort, ?callable $sortCallback = null): Sorting { foreach ($sort as $key => $order) { diff --git a/src/GroupAction/GroupActionCollection.php b/src/GroupAction/GroupActionCollection.php index 9721dc95..3efa1969 100644 --- a/src/GroupAction/GroupActionCollection.php +++ b/src/GroupAction/GroupActionCollection.php @@ -7,6 +7,7 @@ use Nette\Forms\Controls\SelectBox; use Nette\Forms\Controls\SubmitButton; use Nette\Forms\Form as NetteForm; +use Ublaboo\DataGrid\Column\Action; use Ublaboo\DataGrid\DataGrid; use Ublaboo\DataGrid\Exception\DataGridGroupActionException; use UnexpectedValueException; @@ -129,12 +130,18 @@ public function addToFormContainer(Container $container): void strtolower($this->datagrid->getFullName()) . 'group_action_submit' ); - $container->addSubmit('submit', 'ublaboo_datagrid.execute') + $submit = $container->addSubmit('submit', 'ublaboo_datagrid.execute') ->setValidationScope([$container]) ->setHtmlAttribute( 'id', strtolower($this->datagrid->getFullName()) . 'group_action_submit' ); + + $confirmationDialog = $this->datagrid->getGroupActionsConfirmDialog(); + if ($confirmationDialog !== null && $confirmationDialog !== '') { + $submit->setHtmlAttribute('data-' . Action::$dataConfirmAttributeName, $confirmationDialog); + $submit->setHtmlAttribute('data-group-action', 'true'); + } } else { unset($container['group_action']); }