Skip to content

Commit 4b67422

Browse files
author
Eugene Tupikov
committed
added event afterDropRow
1 parent 122c0ed commit 4b67422

File tree

5 files changed

+31
-3
lines changed

5 files changed

+31
-3
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Yii2 multiple input change log
77
- #228 added `iconMap` and `iconSource`property for MultipleInput and TabularInput
88
- #228 changed the following methods to support icon class:
99
BaseColumn->renderDragColumn(), TableRenderer->renderCellContent(), BaseRenderer->prepareButtons()
10+
- #194 added support of yii\base\DynamicModel
11+
- #186 added event `afterDropRow`
1012

1113
2.15.0
1214
=======================

examples/views/multiple-input.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
echo $form->field($model, 'schedule')->label(false)->widget(MultipleInput::className(), [
5050
'id' => 'examplemodel-schedule',
5151
'max' => 4,
52+
'sortable' => true,
5253
'allowEmptyList' => true,
5354
'rowOptions' => function($model) {
5455
$options = [];
@@ -170,6 +171,8 @@
170171
}).on('afterDeleteRow', function(e, item){
171172
console.log('calls on after remove row event');
172173
console.log('User_id:' + item.find('.list-cell__user_id').find('select').first().val());
174+
}).on('afterDropRow', function(e, item){
175+
console.log('calls on after drop row', item);
173176
});
174177
JS;
175178

src/assets/src/js/jquery.multipleInput.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,15 @@
5252
* where event is an Event object.
5353
*
5454
*/
55-
afterDeleteRow: 'afterDeleteRow'
55+
afterDeleteRow: 'afterDeleteRow',
56+
57+
/**
58+
* afterDropRow event is triggered after drop the row in sortable mode.
59+
* The signature of the event handler should be:
60+
* function (event, row)
61+
* where event is an Event object and row is html container of dragged row
62+
*/
63+
afterDropRow: 'afterDropRow'
5664
};
5765

5866
var defaultOptions = {

src/assets/src/js/jquery.multipleInput.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/renderers/BaseRenderer.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,22 @@ public function render()
395395

396396
if($this->sortable) {
397397
MultipleInputSortableAsset::register($view);
398-
$js .= "$('#{$this->id} table').sorting({containerSelector: 'table', itemPath: '> tbody', itemSelector: 'tr', placeholder: '<tr class=\"placeholder\"/>', handle:'.drag-handle'});";
398+
$js .= <<<JS
399+
$('#{$this->id} table').sorting({
400+
containerSelector: 'table',
401+
itemPath: '> tbody',
402+
itemSelector: 'tr',
403+
placeholder: '<tr class="placeholder">',
404+
handle:'.drag-handle',
405+
onDrop: function(item, container, _super, event) {
406+
_super(item, container, _super, event);
407+
408+
var wrapper = item.closest('.multiple-input').first();
409+
event = $.Event('afterDropRow');
410+
wrapper.trigger(event, [item]);
411+
}
412+
});
413+
JS;
399414
}
400415

401416
$view->registerJs($js);

0 commit comments

Comments
 (0)