@enact/ui
Version:
A collection of simplified unstyled cross-platform UI components for Enact
69 lines (65 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removeCancelHandler = exports.forCancel = exports.addCancelHandler = void 0;
var _handle = require("@enact/core/handle");
/**
* Array of cancel handlers. If any of these returns `false`, `forCancel` will return `false`;
*
* @type {Function[]}
* @private
*/
var cancelHandlers = [
// always support the Escape key
(0, _handle.forKey)('cancel')];
/**
* Event handler compatible with {@link core/handle} that allows the handler chain to
* continue for any cancel event. A cancel event is an Escape key press by default but can be
* extended adding additional handlers using
* {@link ui/Cancelable/cancelHandler.addCancelHandler}.
*
* @function
* @memberof ui/Cancelable
* @param {Object} ev Event object
* @returns {Boolean} `true` to stop the handler chain
* @private
*/
var forCancel = exports.forCancel = function forCancel(ev) {
var ok = false;
cancelHandlers.forEach(function (fn) {
// if any handler returns true, we don't need to call anymore
ok = ok || fn(ev);
});
return ok;
};
/**
* Adds an event handler to filter cancel events.
*
* @function
* @memberof ui/Cancelable
* @param {Function} handler Function that will receive the event and should return `true` if
* the event is a cancel event.
* @returns {undefined}
* @public
*/
var addCancelHandler = exports.addCancelHandler = function addCancelHandler(handler) {
if (cancelHandlers.indexOf(handler) < 0) {
cancelHandlers.push(handler);
}
};
/**
* Removes an event handler to filter cancel events
*
* @function
* @memberof ui/Cancelable
* @param {Function} handler A previously added filter function
* @returns {undefined}
* @public
*/
var removeCancelHandler = exports.removeCancelHandler = function removeCancelHandler(handler) {
var index = cancelHandlers.indexOf(handler);
if (index >= 0) {
cancelHandlers.splice(index, 1);
}
};