UNPKG

@ozen-ui/kit

Version:

React component library

48 lines (47 loc) 3.22 kB
import { __assign, __rest } from "tslib"; import './Calendar.css'; import React, { forwardRef } from 'react'; import { logger } from '@ozen-ui/logger'; import { useDevEffect } from '../../hooks/useDevEffect'; import { useThemeProps } from '../../hooks/useThemeProps'; import { getByMap } from '../../utils/getByMap'; import { CalendarModeRange, CalendarModeSingle } from './components'; import { CALENDAR_DEFAULT_CALENDARS, CALENDAR_DEFAULT_MODE, CALENDAR_DEFAULT_SIZE, CALENDAR_DEFAULT_START_DAY, CALENDAR_DEFAULT_STEPS, CALENDAR_DEFAULT_INITIAL_STEP, } from './constants'; import { getPeriodSwitchAriaLabel as createPeriodSwitchAriaLabel } from './utils'; var typeMap = { range: CalendarModeRange, single: CalendarModeSingle, }; export var Calendar = forwardRef(function (inProps, ref) { var props = useThemeProps({ props: inProps, name: 'Calendar', }); var _a = props.size, size = _a === void 0 ? CALENDAR_DEFAULT_SIZE : _a, _b = props.mode, mode = _b === void 0 ? CALENDAR_DEFAULT_MODE : _b, _c = props.startDay, startDay = _c === void 0 ? CALENDAR_DEFAULT_START_DAY : _c, _d = props.calendars, calendars = _d === void 0 ? CALENDAR_DEFAULT_CALENDARS : _d, getPeriodSwitchAriaLabelProp = props.getPeriodSwitchAriaLabel, stepsProp = props.steps, initialStepProp = props.initialStep, other = __rest(props, ["size", "mode", "startDay", "calendars", "getPeriodSwitchAriaLabel", "steps", "initialStep"]); var initialStep = (function () { if (initialStepProp) { return initialStepProp; } if (stepsProp !== undefined && initialStepProp === undefined) { return stepsProp[0]; } return CALENDAR_DEFAULT_INITIAL_STEP; })(); var steps = stepsProp !== null && stepsProp !== void 0 ? stepsProp : CALENDAR_DEFAULT_STEPS; var getPeriodSwitchAriaLabel = getPeriodSwitchAriaLabelProp || createPeriodSwitchAriaLabel; var Component = getByMap(typeMap, mode); useDevEffect(function () { if (steps.length === 0) { logger.error('steps не может быть пустым массивом.'); return; } if (!steps.includes(initialStep)) { logger.error("initialStep \"".concat(initialStep, "\" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D \u0432 steps [").concat(steps.map(function (step) { return "\"".concat(step, "\""); }).join(', '), "].")); } if (steps.length !== new Set(steps).size) { logger.error("\u0412 steps [".concat(steps.map(function (step) { return "\"".concat(step, "\""); }).join(', '), "] \u0435\u0441\u0442\u044C \u0434\u0443\u0431\u043B\u0438\u0440\u0443\u044E\u0449\u0438\u0435 \u0448\u0430\u0433\u0438, \u043F\u0435\u0440\u0435\u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435.")); } }, [steps, initialStep]); return (React.createElement(Component, __assign({ size: size, startDay: startDay, calendars: calendars, getPeriodSwitchAriaLabel: getPeriodSwitchAriaLabel, steps: steps, initialStep: initialStep }, other, { ref: ref }))); }); Calendar.displayName = 'Calendar';