UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

177 lines (173 loc) 5.81 kB
import dayjs from 'dayjs'; import { useI18nContext } from '@razorpay/i18nify-react'; import { convertIntlToDayjsLocale } from './utils.js'; import '../Box/index.js'; import '../Button/index.js'; import '../Typography/index.js'; import '../Icons/index.js'; import '../Link/index.js'; import { jsx, jsxs, Fragment } from 'react/jsx-runtime'; import Link from '../Link/Link/Link.js'; import ChevronDownIcon from '../Icons/ChevronDownIcon/ChevronDownIcon.js'; import { Text } from '../Typography/Text/Text.js'; import { Box } from '../Box/Box.js'; import Button from '../Button/Button/Button.js'; import ChevronLeftIcon from '../Icons/ChevronLeftIcon/ChevronLeftIcon.js'; import ChevronRightIcon from '../Icons/ChevronRightIcon/ChevronRightIcon.js'; /* eslint-disable @typescript-eslint/explicit-function-return-type */ var CalendarLevelIndicator = function CalendarLevelIndicator(_ref) { var onClick = _ref.onClick, showLevelChangeLink = _ref.showLevelChangeLink, accessibilityLabel = _ref.accessibilityLabel, text = _ref.text; return showLevelChangeLink ? /*#__PURE__*/jsx(Link, { onClick: onClick, size: "large", variant: "button", color: "neutral", iconPosition: "right", icon: ChevronDownIcon, accessibilityLabel: accessibilityLabel, children: text }) : /*#__PURE__*/jsx(Text, { size: "large", weight: "medium", color: "interactive.text.neutral.normal", children: text }); }; var CalendarHeader = function CalendarHeader(_ref2) { var _i18nState$locale; var isRange = _ref2.isRange, date = _ref2.date, pickerType = _ref2.pickerType, onNextMonth = _ref2.onNextMonth, onNextYear = _ref2.onNextYear, onNextDecade = _ref2.onNextDecade, onPreviousMonth = _ref2.onPreviousMonth, onPreviousYear = _ref2.onPreviousYear, onPreviousDecade = _ref2.onPreviousDecade, onLevelChange = _ref2.onLevelChange, showLevelChangeLink = _ref2.showLevelChangeLink; var _useI18nContext = useI18nContext(), i18nState = _useI18nContext.i18nState; var locale = convertIntlToDayjsLocale((_i18nState$locale = i18nState === null || i18nState === void 0 ? void 0 : i18nState.locale) !== null && _i18nState$locale !== void 0 ? _i18nState$locale : 'en-IN'); var month = dayjs(date).locale(locale).format('MMMM'); var year = dayjs(date).locale(locale).format('YYYY'); var currentYear = dayjs(date).year(); var startYearOfDecade = Math.floor(currentYear / 10) * 10; var endYearOfDecade = startYearOfDecade + 9; var nextMonth = dayjs(date).locale(locale).add(1, 'month').format('MMMM'); var nextYear = dayjs(date).locale(locale).add(1, 'month').format('YYYY'); var handleNext = function handleNext() { switch (pickerType) { case 'day': onNextMonth(); break; case 'month': onNextYear(); break; case 'year': onNextDecade(); break; default: throw new Error('Invalid picker type'); } }; var handlePrevious = function handlePrevious() { switch (pickerType) { case 'day': onPreviousMonth(); break; case 'month': onPreviousYear(); break; case 'year': onPreviousDecade(); break; default: throw new Error('Invalid picker type'); } }; return /*#__PURE__*/jsxs(Box, { display: isRange ? 'grid' : 'flex', gridTemplateColumns: { base: 'auto 1fr auto', m: 'auto 1fr 1fr auto' }, justifyContent: "space-between", alignItems: "center", children: [/*#__PURE__*/jsx(Button, { justifySelf: "start", size: "small", variant: "tertiary", onClick: handlePrevious, accessibilityLabel: "Previous", icon: ChevronLeftIcon }), isRange ? /*#__PURE__*/jsxs(Fragment, { children: [/*#__PURE__*/jsxs(Text, { display: { base: 'none', m: 'block' }, size: "large", weight: "medium", marginRight: "spacing.7", justifySelf: "center", children: [month, " ", year] }), /*#__PURE__*/jsxs(Text, { display: { base: 'none', m: 'block' }, size: "large", weight: "medium", marginLeft: "spacing.7", justifySelf: "center", children: [nextMonth, " ", nextYear] }), /*#__PURE__*/jsxs(Text, { display: { base: 'block', m: 'none' }, size: "large", weight: "medium", justifySelf: "center", children: [month, " ", year] })] }) : /*#__PURE__*/jsxs(Box, { display: "flex", gap: "spacing.5", alignItems: "center", children: [pickerType === 'day' && /*#__PURE__*/jsx(CalendarLevelIndicator, { onClick: function onClick() { return onLevelChange('year'); }, showLevelChangeLink: showLevelChangeLink, accessibilityLabel: "Change month", text: "".concat(month, " ").concat(year) }), pickerType === 'month' && /*#__PURE__*/jsx(CalendarLevelIndicator, { onClick: function onClick() { return onLevelChange('decade'); }, showLevelChangeLink: showLevelChangeLink, accessibilityLabel: "Change decade", text: year }), pickerType === 'year' && /*#__PURE__*/jsxs(Text, { size: "large", weight: "medium", color: "interactive.text.neutral.normal", children: [startYearOfDecade, " - ", endYearOfDecade] })] }), /*#__PURE__*/jsx(Button, { justifySelf: "end", size: "small", variant: "tertiary", onClick: handleNext, accessibilityLabel: "Next", icon: ChevronRightIcon })] }); }; export { CalendarHeader }; //# sourceMappingURL=CalendarHeader.web.js.map