UNPKG

@enact/sandstone

Version:

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

184 lines (179 loc) 7.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.DayPickerBase = exports.DayPicker = void 0; Object.defineProperty(exports, "getSelectedDayString", { enumerable: true, get: function get() { return _DaySelectorDecorator.getSelectedDayString; } }); var _kind = _interopRequireDefault(require("@enact/core/kind")); var _I18nDecorator = require("@enact/i18n/I18nDecorator"); var _Changeable = _interopRequireDefault(require("@enact/ui/Changeable")); var _Group = _interopRequireDefault(require("@enact/ui/Group")); var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure")); var _propTypes = _interopRequireDefault(require("prop-types")); var _compose = _interopRequireDefault(require("ramda/src/compose")); var _CheckboxItem = _interopRequireDefault(require("../CheckboxItem")); var _Skinnable = _interopRequireDefault(require("../Skinnable")); var _DaySelectorDecorator = require("./DaySelectorDecorator"); var _DayPickerModule = _interopRequireDefault(require("./DayPicker.module.css")); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["disabled"]; /** * Sandstone styled day picker components. * * @example * <DayPicker * selected={[2, 3]} * onSelect={console.log} * /> * * @module sandstone/DayPicker * @exports DayPicker * @exports DayPickerBase * @exports getSelectedDayString */ /** * A day of the week selection component. * * This component is most often not used directly but may be composed within another component as it * is within {@link sandstone/DayPicker.DayPicker|DayPicker}. * * @class DayPickerBase * @memberof sandstone/DayPicker * @extends ui/Group.Group * @omit children * @ui * @public */ 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); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var DayPickerBase = exports.DayPickerBase = (0, _kind["default"])({ name: 'DayPicker', propTypes: /** @lends sandstone/DayPicker.DayPicker.prototype */{ /** * Disables all days in this picker. * * @type {Boolean} * @public */ disabled: _propTypes["default"].bool, /** * Called when an day is selected or unselected. * * The event payload will be an object with the following members: * * `selected` - An array of numbers representing the selected days, 0 indexed where Sunday * is represented by 0 * * @type {Function} * @public */ onSelect: _propTypes["default"].func, /** * An array of numbers (0 indexed where Sunday is 0) representing the selected days of the * week. * * @type {Number|Number[]} * @public */ selected: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].arrayOf(_propTypes["default"].number)]) }, styles: { css: _DayPickerModule["default"], className: 'dayPicker' }, computed: { children: function children(_ref) { var _children = _ref.children; return _children.map(function (child) { return child['aria-label']; }); } }, render: function render(_ref2) { var disabled = _ref2.disabled, rest = _objectWithoutProperties(_ref2, _excluded); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Group["default"], _objectSpread(_objectSpread({}, rest), {}, { component: "div", childComponent: _CheckboxItem["default"], itemProps: { className: _DayPickerModule["default"].item, disabled: disabled }, role: null, select: "multiple", selectedProp: "selected" })); } }); var DayPickerDecorator = (0, _compose["default"])(_Pure["default"], (0, _Changeable["default"])({ change: 'onSelect', prop: 'selected' }), (0, _I18nDecorator.I18nContextDecorator)({ localeProp: 'locale' }), _DaySelectorDecorator.DaySelectorDecorator, _Skinnable["default"]); /** * A day of the week selection component, ready to use in Sandstone applications. * * By default, `DayPicker` maintains the state of its `selected` property. Supply the * `selected` property to control its initial value. If you wish to directly control updates * to the component, supply a value to `selected` at creation time and update it in response to * `onChange` events. * * Usage: * ``` * <DayPicker * selected={[2, 3]} * onSelect={handleSelect} * /> * ``` * * @class DayPicker * @memberof sandstone/DayPicker * @extends sandstone/DayPicker.DayPickerBase * @mixes ui/Changeable.Changeable * @omit onChange * @omit value * @omit defaultValue * @ui * @public */ var DayPicker = exports.DayPicker = DayPickerDecorator(DayPickerBase); /** * The "aria-label" for the component. * * By default, "aria-label" is set to the full names of the selected days or * the custom text when the weekend, week days, or all days is selected. * * @name aria-label * @type {String} * @memberof sandstone/DayPicker.DayPicker.prototype * @public */ /** * The initial value used when `selected` is not set. * * @name selected * @type {Number|Number[]} * @memberof sandstone/DayPicker.DayPicker.prototype * @public */ /** * Disables DayPicker and the control becomes non-interactive. * * @name disabled * @type {Boolean} * @default false * @memberof sandstone/DayPicker.DayPicker.prototype * @public */ var _default = exports["default"] = DayPicker;