UNPKG

@enact/sandstone

Version:

Large-screen/TV support library for Enact, containing a variety of UI components.

161 lines (153 loc) 6.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.Panel = exports.Header = exports.FixedPopupPanelsDecorator = exports.FixedPopupPanelsBase = exports.FixedPopupPanels = void 0; var _handle = require("@enact/core/handle"); var _useHandlers = _interopRequireDefault(require("@enact/core/useHandlers")); var _I18nDecorator = require("@enact/i18n/I18nDecorator"); var _spotlight = _interopRequireDefault(require("@enact/spotlight")); var _target = require("@enact/spotlight/src/target"); var _compose = _interopRequireDefault(require("ramda/src/compose")); var _Panels = require("../internal/Panels"); var _Panel = _interopRequireDefault(require("../Panels/Panel")); var _Header = _interopRequireDefault(require("../Panels/Header")); var _FixedPopupPanelsModule = _interopRequireDefault(require("./FixedPopupPanels.module.css")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * Provides Sandstone styled fixed-width, popup-styled Panels component. * * @module sandstone/FixedPopupPanels * @exports FixedPopupPanels * @exports FixedPopupPanelsBase * @exports FixedPopupPanelsDecorator * @exports Panel * @exports Header */ /** * Adds popup functionality and `rtl` prop to {@link sandstone/FixedPopupPanels|FixedPopupPanels}. * * @class FixedPopupPanelsDecorator * @memberof sandstone/FixedPopupPanels * @hoc * @public */ var FixedPopupPanelsDecorator = exports.FixedPopupPanelsDecorator = (0, _compose["default"])((0, _I18nDecorator.I18nContextDecorator)({ rtlProp: 'rtl' }), (0, _Panels.PopupDecorator)({ className: 'fixedPopupPanels', css: _FixedPopupPanelsModule["default"], noAlertRole: true, noOutline: true, panelArranger: _Panels.BasicArranger, panelType: 'fixedPopup' })); var fixedPopupPanelsHandlers = { onKeyDown: (0, _handle.handle)((0, _handle.forward)('onKeyDown'), function (_ref) { var target = _ref.target; return target.tagName !== 'INPUT'; }, (0, _handle.forProp)('rtl', false), (0, _handle.forKey)('left'), function (ev, _ref2) { var index = _ref2.index; return index > 0; }, function (_ref3) { var target = _ref3.target; return document.querySelector("section.".concat(_FixedPopupPanelsModule["default"].body)).contains(target); }, function (_ref4) { var target = _ref4.target; return (0, _target.getTargetByDirectionFromElement)('left', target) === null; }, (0, _handle.forwardCustom)('onBack'), function () { _spotlight["default"].setPointerMode(false); return true; }, _handle.preventDefault, _handle.stop) }; /** * A base panels component for {@link sandstone/FixedPopupPanels|FixedPopupPanels} that has * left key handler to navigate panels. * * @class FixedPopupPanelsBase * @memberof sandstone/FixedPopupPanels * @ui * @public */ var FixedPopupPanelsBase = exports.FixedPopupPanelsBase = function FixedPopupPanelsBase(props) { var handlers = (0, _useHandlers["default"])(fixedPopupPanelsHandlers, props); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panels.Viewport, _objectSpread(_objectSpread({}, props), handlers)); }; /** * An instance of {@link sandstone/Panels.Panels|Panels} which restricts the `Panel` to the right * or left side of the screen inside a popup. Typically used for overlaying panels over other * content. * * @class FixedPopupPanels * @memberof sandstone/FixedPopupPanels * @extends sandstone/FixedPopupPanels.FixedPopupPanelsBase * @mixes sandstone/FixedPopupPanels.FixedPopupPanelsDecorator * @ui * @public */ var FixedPopupPanels = exports.FixedPopupPanels = FixedPopupPanelsDecorator(FixedPopupPanelsBase); /** * Size of the popup. * * @memberof sandstone/FixedPopupPanels.FixedPopupPanels.prototype * @name width * @type {('narrow'|'half')} * @default 'narrow' * @public */ /** * The standard view container used inside a * {@link sandstone/FixedPopupPanels.FixedPopupPanels|FixedPopupPanels} view manager instance. * * @class Panel * @extends sandstone/Panels.Panel * @memberof sandstone/FixedPopupPanels * @ui * @public */ var Panel = exports.Panel = function Panel(props) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], _objectSpread(_objectSpread({}, props), {}, { css: _FixedPopupPanelsModule["default"], hideChildren: false })); }; /** * A shortcut to access {@link sandstone/FixedPopupPanels.Panel} * * @name Panel * @static * @memberof sandstone/FixedPopupPanels.FixedPopupPanels */ FixedPopupPanels.Panel = Panel; /** * A header component for a Panel with a `title` and `subtitle`, supporting several configurable * {@link ui/Slottable.Slottable|`slots`} for components. * * @class Header * @extends sandstone/Panels.Header * @memberof sandstone/FixedPopupPanels * @ui * @public */ var Header = exports.Header = function Header(props) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], _objectSpread(_objectSpread({ type: "compact" }, props), {}, { css: _FixedPopupPanelsModule["default"] })); }; // Relay the defaultSlot property to our version of Header Header.defaultSlot = _Header["default"].defaultSlot; /** * A shortcut to access {@link sandstone/FixedPopupPanels.Header} * * @name Header * @static * @memberof sandstone/FixedPopupPanels.FixedPopupPanels */ FixedPopupPanels.Header = Header; var _default = exports["default"] = FixedPopupPanels;