@enact/sandstone
Version:
Large-screen/TV support library for Enact, containing a variety of UI components.
43 lines (42 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.CancelDecorator = void 0;
var _hoc = _interopRequireDefault(require("@enact/core/hoc"));
var _Cancelable = _interopRequireDefault(require("@enact/ui/Cancelable"));
var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
var _ViewportModule = _interopRequireDefault(require("./Viewport.module.css"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var defaultConfig = {
cancel: null,
shouldCancel: null
};
var CancelDecorator = exports.CancelDecorator = (0, _hoc["default"])(defaultConfig, function (config, Wrapped) {
var cancel = config.cancel,
shouldCancel = config.shouldCancel;
function handleCancel(ev, props) {
var index = props.index,
handler = props[cancel];
if (shouldCancel && !shouldCancel(ev, props)) {
return;
}
if (index > 0 && handler && !document.querySelector(".".concat(_ViewportModule["default"].transitioning))) {
// clear Spotlight focus
var current = _spotlight["default"].getCurrent();
if (current) {
current.blur();
}
handler({
type: cancel,
index: index - 1
});
ev.stopPropagation();
}
}
return (0, _Cancelable["default"])({
modal: true,
onCancel: handleCancel
}, Wrapped);
});
var _default = exports["default"] = CancelDecorator;