UNPKG

@wix/design-system

Version:

@wix/design-system

251 lines (248 loc) 8.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.REVERSE_MONTH_YEAR_LANGUAGES = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _wixUiIconsCommon = require("@wix/wix-ui-icons-common"); var _YearDropdown = _interopRequireDefault(require("./YearDropdown")); var _MonthDropdown = _interopRequireDefault(require("./MonthDropdown")); var _DatePickerHeadSt = require("./DatePickerHead.st.css.js"); var _Text = _interopRequireDefault(require("../../Text")); var _IconButton = _interopRequireDefault(require("../../IconButton")); var _IconButton2 = require("../../IconButton/IconButton.constants"); var _DatePickerHead = _interopRequireDefault(require("./DatePickerHead.semanticClassNames")); var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/Calendar/DatePickerHead/DatePickerHead.tsx"; var getMonthName = (months, month) => months[month] || months[0]; // Reverse display order of month/year in certain languages var REVERSE_MONTH_YEAR_LANGUAGES = exports.REVERSE_MONTH_YEAR_LANGUAGES = ['ja', 'zh', 'ko']; var getShouldReverseOrder = locale => { return REVERSE_MONTH_YEAR_LANGUAGES.includes(locale); }; var getIconChildSize = size => Object.keys(_IconButton2.ICON_CHILD_SIZE).filter(key => _IconButton2.ICON_CHILD_SIZE[key] === size); var ChevronLeft = _ref => { var { size } = _ref; if (getIconChildSize(size).includes('small')) { return /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.ChevronLeftSmall, { className: _DatePickerHeadSt.classes.arrowIcon, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 45, columnNumber: 12 } }); } return /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.ChevronLeftLarge, { className: _DatePickerHeadSt.classes.arrowIcon, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 47, columnNumber: 10 } }); }; var ChevronRight = _ref2 => { var { size } = _ref2; if (getIconChildSize(size).includes('small')) { return /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.ChevronRightSmall, { className: _DatePickerHeadSt.classes.arrowIcon, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 52, columnNumber: 12 } }); } return /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.ChevronRightLarge, { className: _DatePickerHeadSt.classes.arrowIcon, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 54, columnNumber: 10 } }); }; var DatePickerHead = _ref3 => { var { className, date, locale, localeUtils, onChange, onLeftArrowClick, onRightArrowClick, showMonthDropdown, showYearDropdown, leftArrowAriaLabel, leftArrowAriaLabelledBy, rightArrowAriaLabel, rightArrowAriaLabelledBy, monthDropdownAriaLabel, monthDropdownAriaLabelledBy, yearDropdownAriaLabel, yearDropdownAriaLabelledBy, size } = _ref3; var renderMonth = () => showMonthDropdown ? /*#__PURE__*/_react.default.createElement(_MonthDropdown.default, { className: _DatePickerHeadSt.classes.monthDropdown, date: date, onChange: onChange, months: localeUtils.getMonths(), ariaLabel: monthDropdownAriaLabel, ariaLabelledBy: monthDropdownAriaLabelledBy, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 78, columnNumber: 7 } }) : /*#__PURE__*/_react.default.createElement(_Text.default, { weight: "normal", size: size, dataHook: "datepicker-month-caption", __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 87, columnNumber: 7 } }, getMonthName(localeUtils.getMonths(), date.getMonth())); var renderYear = () => showYearDropdown ? /*#__PURE__*/_react.default.createElement(_YearDropdown.default, { className: _DatePickerHeadSt.classes.yearDropdown, date: date, onChange: onChange, ariaLabel: yearDropdownAriaLabel, ariaLabelledBy: yearDropdownAriaLabelledBy, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 94, columnNumber: 7 } }) : /*#__PURE__*/_react.default.createElement(_Text.default, { weight: "normal", size: size, dataHook: "datepicker-year-caption", __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 102, columnNumber: 7 } }, localeUtils.formatYear(date)); var renderYearAndMonth = () => { var shouldReverseOrder = getShouldReverseOrder(locale); if (shouldReverseOrder) { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderYear(), renderMonth()); } return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderMonth(), renderYear()); }; var KEYS = { arrowUp: 'ArrowUp', arrowDown: 'ArrowDown', arrowLeft: 'ArrowLeft', arrowRight: 'ArrowRight' }; /* prevent the handleKeyDown method of the ReactDayPicker component to be executed when the focus is on one of the header elements */ var _handleKeyDown = event => { // stop arrow up, arrow down, arrow left and arrow right ReactDayPicker handlers from changing the year and month if (event && event.key && (event.key === KEYS.arrowUp || event.key === KEYS.arrowDown || event.key === KEYS.arrowLeft || event.key === KEYS.arrowRight)) { event.stopPropagation(); } }; return /*#__PURE__*/_react.default.createElement("div", { "data-hook": "datepicker-head", className: (0, _DatePickerHeadSt.st)(_DatePickerHeadSt.classes.root, { size }, className), onKeyDown: _handleKeyDown, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 148, columnNumber: 5 } }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { className: (0, _DatePickerHeadSt.st)(_DatePickerHeadSt.classes.arrowLeft, _DatePickerHead.default.leftArrow), dataHook: "datepicker-left-arrow", skin: "standard", priority: "secondary", size: size, tabIndex: 0, ariaLabel: leftArrowAriaLabel, ariaLabelledBy: leftArrowAriaLabelledBy, onClick: onLeftArrowClick, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 153, columnNumber: 7 } }, /*#__PURE__*/_react.default.createElement(ChevronLeft, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 165, columnNumber: 9 } })), /*#__PURE__*/_react.default.createElement("div", { className: _DatePickerHeadSt.classes.yearAndMonthWrapper, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 167, columnNumber: 7 } }, renderYearAndMonth()), /*#__PURE__*/_react.default.createElement(_IconButton.default, { className: (0, _DatePickerHeadSt.st)(_DatePickerHeadSt.classes.arrowRight, _DatePickerHead.default.rightArrow), dataHook: "datepicker-right-arrow", skin: "standard", priority: "secondary", size: size, tabIndex: 0, ariaLabel: rightArrowAriaLabel, ariaLabelledBy: rightArrowAriaLabelledBy, onClick: onRightArrowClick, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 168, columnNumber: 7 } }, /*#__PURE__*/_react.default.createElement(ChevronRight, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 180, columnNumber: 9 } }))); }; DatePickerHead.propTypes = { date: _propTypes.default.object.isRequired, locale: _propTypes.default.string.isRequired, localeUtils: _propTypes.default.object.isRequired, onChange: _propTypes.default.func.isRequired, onLeftArrowClick: _propTypes.default.func.isRequired, onRightArrowClick: _propTypes.default.func.isRequired, showMonthDropdown: _propTypes.default.bool, showYearDropdown: _propTypes.default.bool, leftArrowAriaLabel: _propTypes.default.string, leftArrowAriaLabelledBy: _propTypes.default.string, rightArrowAriaLabel: _propTypes.default.string, rightArrowAriaLabelledBy: _propTypes.default.string, monthDropdownAriaLabel: _propTypes.default.string, monthDropdownAriaLabelledBy: _propTypes.default.string, yearDropdownAriaLabel: _propTypes.default.string, yearDropdownAriaLabelledBy: _propTypes.default.string }; var _default = exports.default = DatePickerHead; //# sourceMappingURL=DatePickerHead.js.map