@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
91 lines (73 loc) • 3.74 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _Datepicker = require("./Datepicker.constants");
var _Datepicker2 = require("./Datepicker.utils");
var _Icon = _interopRequireDefault(require("../Icon"));
var _VisuallyHidden = _interopRequireDefault(require("../VisuallyHidden"));
var _Datepicker3 = require("./Datepicker.css");
var _jsxRuntime = require("react/jsx-runtime");
function noop() {}
function Navigator(_ref) {
var _ref$canNavigateForwa = _ref.canNavigateForward,
canNavigateForward = _ref$canNavigateForwa === void 0 ? true : _ref$canNavigateForwa,
_ref$goPrevious = _ref.goPrevious,
goPrevious = _ref$goPrevious === void 0 ? noop : _ref$goPrevious,
_ref$goNext = _ref.goNext,
goNext = _ref$goNext === void 0 ? noop : _ref$goNext,
_ref$navigationLevel = _ref.navigationLevel,
navigationLevel = _ref$navigationLevel === void 0 ? 'MONTH_BY_MONTH' : _ref$navigationLevel,
label = _ref.label,
_ref$onDeepNavigation = _ref.onDeepNavigationClick,
onDeepNavigationClick = _ref$onDeepNavigation === void 0 ? noop : _ref$onDeepNavigation;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Datepicker3.NavigatorUI, {
className: (0, _classnames.default)('c-DatepickerNavigator', navigationLevel === _Datepicker.NAVIGATION_LEVELS.YEAR_RANGES && 'is-at-top-level'),
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Datepicker3.SequentialNavButtonUI, {
className: "SequentialNavButton go-previous",
"aria-label": (0, _Datepicker2.getNavigatorButtonLabel)(navigationLevel, 'previous'),
onClick: goPrevious,
type: "button",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
name: "arrow-left-single-large"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_VisuallyHidden.default, {
children: (0, _Datepicker2.getNavigatorButtonLabel)(navigationLevel, 'previous')
})]
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Datepicker3.DeepNavigatorButtonUI, {
className: "DeepNavigatorButton",
onClick: onDeepNavigationClick,
disabled: navigationLevel === _Datepicker.NAVIGATION_LEVELS.YEAR_RANGES,
"aria-live": "polite",
type: "button",
children: label
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Datepicker3.SequentialNavButtonUI, {
className: "SequentialNavButton go-next",
onClick: goNext,
disabled: !canNavigateForward,
"aria-label": (0, _Datepicker2.getNavigatorButtonLabel)(navigationLevel, 'next'),
type: "button",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
name: "arrow-right-single-large"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_VisuallyHidden.default, {
children: (0, _Datepicker2.getNavigatorButtonLabel)(navigationLevel, 'next')
})]
})]
});
}
Navigator.propTypes = {
/** Whether is possible to pick a date in the future */
canNavigateForward: _propTypes.default.bool,
/** Callback to navigate to the previous period */
goPrevious: _propTypes.default.func,
/** Callback to navigate to the next period */
goNext: _propTypes.default.func,
/** Whether we are currently at the highest possible level of navigation */
navigationLevel: _propTypes.default.oneOf(['MONTH_BY_MONTH', 'YEAR_BY_YEAR', 'YEAR_RANGES']),
/** Callback to navigate to the next level of navigation */
onDeepNavigationClick: _propTypes.default.func
};
var _default = Navigator;
exports.default = _default;