From f49b5ab4b812e2ea99c455bcf35adc0b5dc3358e Mon Sep 17 00:00:00 2001 From: Ben Thomson Date: Mon, 8 Apr 2019 23:40:41 +0800 Subject: [PATCH] Add callback for handling sorted repeater items --- modules/backend/formwidgets/Repeater.php | 5 +++++ .../formwidgets/repeater/assets/js/repeater.js | 12 ++++++++++-- .../formwidgets/repeater/partials/_repeater.htm | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/backend/formwidgets/Repeater.php b/modules/backend/formwidgets/Repeater.php index f2adcda28..ffa9a3bed 100644 --- a/modules/backend/formwidgets/Repeater.php +++ b/modules/backend/formwidgets/Repeater.php @@ -322,6 +322,11 @@ class Repeater extends FormWidgetBase return $widget->onRefresh(); } + public function onReorder() + { + // Handle reordering of repeater items + } + // // Group mode // diff --git a/modules/backend/formwidgets/repeater/assets/js/repeater.js b/modules/backend/formwidgets/repeater/assets/js/repeater.js index e3d5cfc0e..c436b220f 100644 --- a/modules/backend/formwidgets/repeater/assets/js/repeater.js +++ b/modules/backend/formwidgets/repeater/assets/js/repeater.js @@ -35,6 +35,7 @@ Repeater.DEFAULTS = { sortableHandle: '.repeater-item-handle', + sortableHandler: null, sortableContainer: 'ul.field-repeater-items', titleFrom: null, minItems: null, @@ -232,13 +233,20 @@ Repeater.prototype.onSortStart = function($item, container, callback, event) { this.sortingStartIndex = $item.index() - callback($item, container, callback, event); + callback($item, container, callback, event) } Repeater.prototype.onSortStop = function($item, container, callback, event) { var endIndex = $item.index() - callback($item, container, callback, event); + this.$el.request(this.options.sortableHandler, { + data: { + _repeater_index: this.sortingStartIndex, + _repeater_new_index: endIndex + } + }) + + callback($item, container, callback, event) } // FIELD REPEATER PLUGIN DEFINITION diff --git a/modules/backend/formwidgets/repeater/partials/_repeater.htm b/modules/backend/formwidgets/repeater/partials/_repeater.htm index 995c42cd8..2647b6ae5 100644 --- a/modules/backend/formwidgets/repeater/partials/_repeater.htm +++ b/modules/backend/formwidgets/repeater/partials/_repeater.htm @@ -3,6 +3,7 @@ + data-sortable-handler="getEventHandler('onReorder') ?>" data-sortable-container="#getId('items') ?>" data-sortable-handle=".getId('items') ?>-handle">