83 lines
2.2 KiB
JavaScript
Executable File
83 lines
2.2 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
/**
|
|
* @deprecated since version 2.2.0
|
|
*/
|
|
define([
|
|
'jquery',
|
|
'jquery-ui-modules/widget'
|
|
], function ($) {
|
|
'use strict';
|
|
|
|
/**
|
|
* This widget is used to tag a DOM element as deletable. By default, it will use the click event on the item with a
|
|
* data role of delete to trigger the deletion.
|
|
*/
|
|
$.widget('mage.deletableItem', {
|
|
options: {
|
|
deleteEvent: 'click',
|
|
deleteSelector: '[data-role="delete"]',
|
|
hiddenClass: 'no-display'
|
|
},
|
|
|
|
/**
|
|
* This method binds elements found in this widget.
|
|
*/
|
|
_bind: function () {
|
|
var handlers = {};
|
|
|
|
// since the first handler is dynamic, generate the object using array notation
|
|
handlers[this.options.deleteEvent + ' ' + this.options.deleteSelector] = '_onDeleteClicked';
|
|
handlers.hideDelete = '_onHideDelete';
|
|
handlers.showDelete = '_onShowDelete';
|
|
|
|
this._on(handlers);
|
|
},
|
|
|
|
/**
|
|
* This method constructs a new widget.
|
|
*/
|
|
_create: function () {
|
|
this._bind();
|
|
},
|
|
|
|
/**
|
|
* This method is to initialize the control
|
|
* @private
|
|
*/
|
|
_init: function () {
|
|
this._onHideDelete(); // by default, hide the control
|
|
},
|
|
|
|
/**
|
|
* This method removes the entity from the DOM.
|
|
* @private
|
|
*/
|
|
_onDeleteClicked: function (e) {
|
|
e.stopPropagation();
|
|
this.element.trigger('deleteItem');
|
|
},
|
|
|
|
/**
|
|
* This method hides the delete capability of this item (i.e. making it not deletable)
|
|
* @private
|
|
*/
|
|
_onHideDelete: function () {
|
|
this.element.find(this.options.deleteSelector).addClass(this.options.hiddenClass);
|
|
},
|
|
|
|
/**
|
|
* This method shows the delete capability of this item (i.e. making it deletable)
|
|
* @private
|
|
*/
|
|
_onShowDelete: function () {
|
|
this.element.find(this.options.deleteSelector).removeClass(this.options.hiddenClass);
|
|
}
|
|
});
|
|
|
|
return $.mage.deletableItem;
|
|
});
|