@ozen-ui/kit 0.46.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/Calendar/package.json +5 -0
  2. package/__inner__/cjs/components/Calendar/Calendar.css +43 -0
  3. package/__inner__/cjs/components/Calendar/Calendar.d.ts +4 -0
  4. package/__inner__/cjs/components/Calendar/Calendar.js +90 -0
  5. package/__inner__/cjs/components/Calendar/CalendarContext.d.ts +14 -0
  6. package/__inner__/cjs/components/Calendar/CalendarContext.js +8 -0
  7. package/__inner__/cjs/components/Calendar/components/CalendarAdditionalControls/CalendarAdditionalControls.css +3 -0
  8. package/__inner__/cjs/components/Calendar/components/CalendarAdditionalControls/CalendarAdditionalControls.d.ts +9 -0
  9. package/__inner__/cjs/components/Calendar/components/CalendarAdditionalControls/CalendarAdditionalControls.js +25 -0
  10. package/__inner__/cjs/components/Calendar/components/CalendarAdditionalControls/index.d.ts +1 -0
  11. package/__inner__/cjs/components/Calendar/components/CalendarAdditionalControls/index.js +4 -0
  12. package/__inner__/cjs/components/Calendar/components/CalendarGrid/CalendarGrid.css +44 -0
  13. package/__inner__/cjs/components/Calendar/components/CalendarGrid/CalendarGrid.d.ts +7 -0
  14. package/__inner__/cjs/components/Calendar/components/CalendarGrid/CalendarGrid.js +48 -0
  15. package/__inner__/cjs/components/Calendar/components/CalendarGrid/index.d.ts +1 -0
  16. package/__inner__/cjs/components/Calendar/components/CalendarGrid/index.js +4 -0
  17. package/__inner__/cjs/components/Calendar/components/CalendarGrid/utils.d.ts +2 -0
  18. package/__inner__/cjs/components/Calendar/components/CalendarGrid/utils.js +21 -0
  19. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItem.d.ts +13 -0
  20. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItem.js +19 -0
  21. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendatItem.css +55 -0
  22. package/__inner__/cjs/components/Calendar/components/CalendarItem/index.d.ts +1 -0
  23. package/__inner__/cjs/components/Calendar/components/CalendarItem/index.js +4 -0
  24. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.css +25 -0
  25. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.d.ts +10 -0
  26. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.js +54 -0
  27. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/index.d.ts +1 -0
  28. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/index.js +4 -0
  29. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/utils.d.ts +2 -0
  30. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/utils.js +13 -0
  31. package/__inner__/cjs/components/Calendar/components/index.d.ts +4 -0
  32. package/__inner__/cjs/components/Calendar/components/index.js +7 -0
  33. package/__inner__/cjs/components/Calendar/constants.d.ts +4 -0
  34. package/__inner__/cjs/components/Calendar/constants.js +7 -0
  35. package/__inner__/cjs/components/Calendar/index.d.ts +2 -0
  36. package/__inner__/cjs/components/Calendar/index.js +5 -0
  37. package/__inner__/cjs/components/Calendar/types.d.ts +54 -0
  38. package/__inner__/cjs/components/Calendar/types.js +5 -0
  39. package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
  40. package/__inner__/cjs/locale/locale.js +43 -0
  41. package/__inner__/esm/components/Calendar/Calendar.css +43 -0
  42. package/__inner__/esm/components/Calendar/Calendar.d.ts +4 -0
  43. package/__inner__/esm/components/Calendar/Calendar.js +87 -0
  44. package/__inner__/esm/components/Calendar/CalendarContext.d.ts +14 -0
  45. package/__inner__/esm/components/Calendar/CalendarContext.js +4 -0
  46. package/__inner__/esm/components/Calendar/components/CalendarAdditionalControls/CalendarAdditionalControls.css +3 -0
  47. package/__inner__/esm/components/Calendar/components/CalendarAdditionalControls/CalendarAdditionalControls.d.ts +9 -0
  48. package/__inner__/esm/components/Calendar/components/CalendarAdditionalControls/CalendarAdditionalControls.js +20 -0
  49. package/__inner__/esm/components/Calendar/components/CalendarAdditionalControls/index.d.ts +1 -0
  50. package/__inner__/esm/components/Calendar/components/CalendarAdditionalControls/index.js +1 -0
  51. package/__inner__/esm/components/Calendar/components/CalendarGrid/CalendarGrid.css +44 -0
  52. package/__inner__/esm/components/Calendar/components/CalendarGrid/CalendarGrid.d.ts +7 -0
  53. package/__inner__/esm/components/Calendar/components/CalendarGrid/CalendarGrid.js +44 -0
  54. package/__inner__/esm/components/Calendar/components/CalendarGrid/index.d.ts +1 -0
  55. package/__inner__/esm/components/Calendar/components/CalendarGrid/index.js +1 -0
  56. package/__inner__/esm/components/Calendar/components/CalendarGrid/utils.d.ts +2 -0
  57. package/__inner__/esm/components/Calendar/components/CalendarGrid/utils.js +16 -0
  58. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItem.d.ts +13 -0
  59. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItem.js +16 -0
  60. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendatItem.css +55 -0
  61. package/__inner__/esm/components/Calendar/components/CalendarItem/index.d.ts +1 -0
  62. package/__inner__/esm/components/Calendar/components/CalendarItem/index.js +1 -0
  63. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.css +25 -0
  64. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.d.ts +10 -0
  65. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.js +51 -0
  66. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/index.d.ts +1 -0
  67. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/index.js +1 -0
  68. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/utils.d.ts +2 -0
  69. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/utils.js +9 -0
  70. package/__inner__/esm/components/Calendar/components/index.d.ts +4 -0
  71. package/__inner__/esm/components/Calendar/components/index.js +4 -0
  72. package/__inner__/esm/components/Calendar/constants.d.ts +4 -0
  73. package/__inner__/esm/components/Calendar/constants.js +4 -0
  74. package/__inner__/esm/components/Calendar/index.d.ts +2 -0
  75. package/__inner__/esm/components/Calendar/index.js +2 -0
  76. package/__inner__/esm/components/Calendar/types.d.ts +54 -0
  77. package/__inner__/esm/components/Calendar/types.js +2 -0
  78. package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
  79. package/__inner__/esm/locale/locale.js +43 -0
  80. package/package.json +5 -4
  81. package/DatePicker/package.json +0 -5
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/components/Calendar/index.js",
3
+ "module": "../__inner__/esm/components/Calendar/index.js",
4
+ "types": "../__inner__/esm/components/Calendar/index.d.ts"
5
+ }
@@ -0,0 +1,43 @@
1
+ /* stylelint-disable */
2
+ .Calendar {
3
+ --calendar-grid-gap: var(--spacing-4xs);
4
+ --calendar-grid-margin: var(--spacing-2xs);
5
+ display: inline-flex;
6
+ flex-direction: column;
7
+ }
8
+ .Calendar_size_s {
9
+ --calendar-grid-size: 236px;
10
+ --calendar-switcher-height: var(--control-height-s);
11
+ --calendar-switcher-margin: 0 var(--spacing-xs);
12
+ --calendar-switcher-padding: 0 var(--control-padding-2xs);
13
+
14
+ font: var(--typography-text-s-font);
15
+
16
+ letter-spacing: var(--typography-text-s-letter_spacing, 0);
17
+
18
+ text-transform: var(--typography-text-s-text_transform, none);
19
+ }
20
+ .Calendar_size_m {
21
+ --calendar-grid-size: 292px;
22
+ --calendar-switcher-height: var(--control-height-m);
23
+ --calendar-switcher-margin: 0 var(--spacing-xs);
24
+ --calendar-switcher-padding: 0 var(--control-padding-xs);
25
+
26
+ font: var(--typography-text-m-font);
27
+
28
+ letter-spacing: var(--typography-text-m-letter_spacing, 0);
29
+
30
+ text-transform: var(--typography-text-m-text_transform, none);
31
+ }
32
+ .Calendar_size_l {
33
+ --calendar-grid-size: 348px;
34
+ --calendar-switcher-height: var(--control-height-l);
35
+ --calendar-switcher-margin: 0 var(--spacing-xs);
36
+ --calendar-switcher-padding: 0 var(--control-padding-s);
37
+
38
+ font: var(--typography-text-l-font);
39
+
40
+ letter-spacing: var(--typography-text-l-letter_spacing, 0);
41
+
42
+ text-transform: var(--typography-text-l-text_transform, none);
43
+ }
@@ -0,0 +1,4 @@
1
+ import './Calendar.css';
2
+ import type { CalendarBaseProps } from './types';
3
+ export declare const cnCalendar: import("@bem-react/classname").ClassNameFormatter;
4
+ export declare const Calendar: import("../../utils/polymorphicComponentWithRef").PolymorphicComponentWithRef<CalendarBaseProps, "div">;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Calendar = exports.cnCalendar = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./Calendar.css");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var datepicker_1 = require("@rehookify/datepicker");
8
+ var useControlled_1 = require("../../hooks/useControlled");
9
+ var useThemeProps_1 = require("../../hooks/useThemeProps");
10
+ var classname_1 = require("../../utils/classname");
11
+ var polymorphicComponentWithRef_1 = require("../../utils/polymorphicComponentWithRef");
12
+ var Divider_1 = require("../Divider");
13
+ var CalendarContext_1 = require("./CalendarContext");
14
+ var components_1 = require("./components");
15
+ var constants_1 = require("./constants");
16
+ exports.cnCalendar = (0, classname_1.cn)('Calendar');
17
+ exports.Calendar = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
18
+ var props = (0, useThemeProps_1.useThemeProps)({
19
+ props: inProps,
20
+ name: 'Calendar',
21
+ });
22
+ var _a = props.size, size = _a === void 0 ? constants_1.CALENDAR_DEFAULT_SIZE : _a, _b = props.startDay, startDay = _b === void 0 ? constants_1.CALENDAR_DEFAULT_START_DAY : _b, _c = props.as, Tag = _c === void 0 ? constants_1.CALENDAR_DEFAULT_AS : _c, renderAdditionalControls = props.renderAdditionalControls, locale = props.locale, onChangeProp = props.onChange, onOffsetDateChangeProp = props.onOffsetDateChange, onMonthClick = props.onMonthClick, onDayClick = props.onDayClick, onYearClick = props.onYearClick, valueProp = props.value, defaultValue = props.defaultValue, offsetDateProp = props.offsetDate, defaultOffsetDate = props.defaultOffsetDate, exclude = props.exclude, minDate = props.minDate, maxDate = props.maxDate, className = props.className, calendarSwitcherProps = props.calendarSwitcherProps, other = tslib_1.__rest(props, ["size", "startDay", "as", "renderAdditionalControls", "locale", "onChange", "onOffsetDateChange", "onMonthClick", "onDayClick", "onYearClick", "value", "defaultValue", "offsetDate", "defaultOffsetDate", "exclude", "minDate", "maxDate", "className", "calendarSwitcherProps"]);
23
+ var _d = tslib_1.__read((0, react_1.useState)('days'), 2), step = _d[0], setStep = _d[1];
24
+ var _e = tslib_1.__read((0, useControlled_1.useControlled)({
25
+ value: valueProp,
26
+ defaultValue: defaultValue,
27
+ name: 'Calendar',
28
+ state: 'value',
29
+ }), 2), valueState = _e[0], setValueState = _e[1];
30
+ var _f = tslib_1.__read((0, useControlled_1.useControlled)({
31
+ value: offsetDateProp,
32
+ defaultValue: defaultOffsetDate,
33
+ name: 'Calendar',
34
+ state: 'offsetDate',
35
+ }), 2), offsetDateState = _f[0], setOffsetDateState = _f[1];
36
+ var onChange = function (data) {
37
+ var value = data[0];
38
+ if (value) {
39
+ setValueState(value);
40
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(value);
41
+ }
42
+ };
43
+ var onOffsetDateChange = function (date) {
44
+ setOffsetDateState(date);
45
+ onOffsetDateChangeProp === null || onOffsetDateChangeProp === void 0 ? void 0 : onOffsetDateChangeProp(date);
46
+ };
47
+ (0, react_1.useEffect)(function () {
48
+ if (valueState)
49
+ onOffsetDateChange(valueState);
50
+ }, [valueState]);
51
+ var config = {
52
+ calendar: {
53
+ startDay: startDay,
54
+ },
55
+ locale: {
56
+ locale: locale,
57
+ weekday: 'short',
58
+ day: 'numeric',
59
+ },
60
+ exclude: exclude,
61
+ onDatesChange: onChange,
62
+ years: { numberOfYears: 15 },
63
+ onOffsetChange: onOffsetDateChange,
64
+ offsetDate: offsetDateState || new Date(),
65
+ dates: { minDate: minDate, maxDate: maxDate },
66
+ selectedDates: valueState ? [valueState] : [],
67
+ };
68
+ // Управление представлениями календаря
69
+ var goStep = function (step) {
70
+ setStep(step);
71
+ };
72
+ return (react_1.default.createElement(datepicker_1.DatePickerProvider, { config: config },
73
+ react_1.default.createElement(CalendarContext_1.CalendarContext.Provider, { value: {
74
+ size: size,
75
+ step: step,
76
+ goStep: goStep,
77
+ minDate: minDate,
78
+ maxDate: maxDate,
79
+ onMonthClick: onMonthClick,
80
+ onDayClick: onDayClick,
81
+ onYearClick: onYearClick,
82
+ onOffsetChange: setOffsetDateState,
83
+ } },
84
+ react_1.default.createElement(Tag, tslib_1.__assign({ className: (0, exports.cnCalendar)({ size: size }, [className]) }, other, { ref: ref }),
85
+ react_1.default.createElement(components_1.CalendarSwitcher, tslib_1.__assign({}, calendarSwitcherProps)),
86
+ react_1.default.createElement(Divider_1.Divider, { color: "secondary" }),
87
+ react_1.default.createElement(components_1.CalendarGrid, null),
88
+ react_1.default.createElement(components_1.CalendarAdditionalControls, { renderAdditionalControls: renderAdditionalControls })))));
89
+ });
90
+ exports.Calendar.displayName = 'Calendar';
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { CalendarStepVariant, CalendarSizeVariant, CalendarBaseProps } from './types';
3
+ export interface CalendarContextValue {
4
+ size?: CalendarSizeVariant;
5
+ step: CalendarStepVariant;
6
+ goStep?: (step: CalendarStepVariant) => void;
7
+ onMonthClick?: CalendarBaseProps['onMonthClick'];
8
+ onDayClick?: CalendarBaseProps['onDayClick'];
9
+ onYearClick?: CalendarBaseProps['onYearClick'];
10
+ minDate?: Date;
11
+ maxDate?: Date;
12
+ onOffsetChange?(d: Date): void;
13
+ }
14
+ export declare const CalendarContext: React.Context<CalendarContextValue>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalendarContext = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ exports.CalendarContext = react_1.default.createContext({
7
+ step: 'days',
8
+ });
@@ -0,0 +1,3 @@
1
+ .CalendarAdditionalControls {
2
+ margin: var(--calendar-grid-margin);
3
+ }
@@ -0,0 +1,9 @@
1
+ import './CalendarAdditionalControls.css';
2
+ import type { FC } from 'react';
3
+ import type { CalendarBaseProps } from '../../index';
4
+ export declare const cnCalendarAdditionalControls: import("@bem-react/classname").ClassNameFormatter;
5
+ type CalendarAdditionalControlsProps = {
6
+ renderAdditionalControls?: CalendarBaseProps['renderAdditionalControls'];
7
+ };
8
+ export declare const CalendarAdditionalControls: FC<CalendarAdditionalControlsProps>;
9
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalendarAdditionalControls = exports.cnCalendarAdditionalControls = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./CalendarAdditionalControls.css");
6
+ var react_1 = tslib_1.__importDefault(require("react"));
7
+ var datepicker_1 = require("@rehookify/datepicker");
8
+ var classname_1 = require("../../../../utils/classname");
9
+ var renderContent_1 = require("../../../../utils/renderContent");
10
+ var Divider_1 = require("../../../Divider");
11
+ exports.cnCalendarAdditionalControls = (0, classname_1.cn)('CalendarAdditionalControls');
12
+ var CalendarAdditionalControls = function (_a) {
13
+ var renderAdditionalControls = _a.renderAdditionalControls;
14
+ var selectedDates = (0, datepicker_1.useDatePickerContext)().data.selectedDates;
15
+ if (!renderAdditionalControls) {
16
+ return null;
17
+ }
18
+ return (react_1.default.createElement(react_1.default.Fragment, null,
19
+ react_1.default.createElement(Divider_1.Divider, { color: "secondary" }),
20
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarAdditionalControls)() }, (0, renderContent_1.renderContent)({
21
+ content: renderAdditionalControls,
22
+ props: { date: selectedDates[0] },
23
+ }))));
24
+ };
25
+ exports.CalendarAdditionalControls = CalendarAdditionalControls;
@@ -0,0 +1 @@
1
+ export * from './CalendarAdditionalControls';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./CalendarAdditionalControls"), exports);
@@ -0,0 +1,44 @@
1
+ .CalendarGrid {
2
+ display: grid;
3
+ justify-content: start;
4
+ gap: var(--calendar-grid-gap);
5
+ block-size: var(--calendar-grid-size);
6
+ inline-size: var(--calendar-grid-size);
7
+ margin: var(--calendar-grid-margin);
8
+ }
9
+
10
+ .CalendarGrid > * {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ }
15
+
16
+ .CalendarDays {
17
+ grid-template-columns: repeat(7, 1fr);
18
+ }
19
+
20
+ .CalendarDays > * {
21
+ inline-size: calc(
22
+ (var(--calendar-grid-size) - var(--calendar-grid-gap) * 6) / 7
23
+ );
24
+ }
25
+
26
+ .CalendarMonths {
27
+ grid-template-columns: repeat(3, 1fr);
28
+ }
29
+
30
+ .CalendarMonths > * {
31
+ block-size: calc(
32
+ (var(--calendar-grid-size) - var(--calendar-grid-gap) * 3) / 4
33
+ );
34
+ }
35
+
36
+ .CalendarYears {
37
+ grid-template-columns: repeat(3, 1fr);
38
+ }
39
+
40
+ .CalendarYears > * {
41
+ block-size: calc(
42
+ (var(--calendar-grid-size) - var(--calendar-grid-gap) * 4) / 5
43
+ );
44
+ }
@@ -0,0 +1,7 @@
1
+ import './CalendarGrid.css';
2
+ import React from 'react';
3
+ export declare const cnCalendarGrid: import("@bem-react/classname").ClassNameFormatter;
4
+ export declare const cnCalendarDays: import("@bem-react/classname").ClassNameFormatter;
5
+ export declare const cnCalendarMoths: import("@bem-react/classname").ClassNameFormatter;
6
+ export declare const cnCalendarYears: import("@bem-react/classname").ClassNameFormatter;
7
+ export declare const CalendarGrid: () => React.JSX.Element;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalendarGrid = exports.cnCalendarYears = exports.cnCalendarMoths = exports.cnCalendarDays = exports.cnCalendarGrid = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./CalendarGrid.css");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var classnames_1 = require("@bem-react/classnames");
8
+ var datepicker_1 = require("@rehookify/datepicker");
9
+ var capitalizeFirstLetter_1 = require("../../../../utils/capitalizeFirstLetter");
10
+ var classname_1 = require("../../../../utils/classname");
11
+ var Typography_1 = require("../../../Typography");
12
+ var CalendarContext_1 = require("../../CalendarContext");
13
+ var CalendarItem_1 = require("../CalendarItem");
14
+ exports.cnCalendarGrid = (0, classname_1.cn)('CalendarGrid');
15
+ exports.cnCalendarDays = (0, classname_1.cn)('CalendarDays');
16
+ exports.cnCalendarMoths = (0, classname_1.cn)('CalendarMonths');
17
+ exports.cnCalendarYears = (0, classname_1.cn)('CalendarYears');
18
+ var CalendarGrid = function () {
19
+ var _a = (0, react_1.useContext)(CalendarContext_1.CalendarContext), step = _a.step, goStep = _a.goStep, size = _a.size, onYearClick = _a.onYearClick, onDayClick = _a.onDayClick, onMonthClick = _a.onMonthClick;
20
+ var _b = (0, datepicker_1.useDatePickerContext)(), _c = _b.data, weekDays = _c.weekDays, calendars = _c.calendars, years = _c.years, months = _c.months, _d = _b.propGetters, dayButton = _d.dayButton, monthButton = _d.monthButton, yearButton = _d.yearButton;
21
+ var _e = calendars[0] || {}, days = _e.days, month = _e.month, year = _e.year;
22
+ var handleClickOnDay = function (e, date) {
23
+ onDayClick === null || onDayClick === void 0 ? void 0 : onDayClick(e, date);
24
+ };
25
+ var handleClickOnMonth = function (e, date) {
26
+ goStep === null || goStep === void 0 ? void 0 : goStep('days');
27
+ onMonthClick === null || onMonthClick === void 0 ? void 0 : onMonthClick(e, date);
28
+ };
29
+ var handleClickOnYear = function (e, date) {
30
+ goStep === null || goStep === void 0 ? void 0 : goStep('months');
31
+ onYearClick === null || onYearClick === void 0 ? void 0 : onYearClick(e, date);
32
+ };
33
+ return (react_1.default.createElement(react_1.default.Fragment, null,
34
+ step === 'days' && (react_1.default.createElement("div", { className: (0, classnames_1.classnames)((0, exports.cnCalendarGrid)(), (0, exports.cnCalendarDays)()) },
35
+ weekDays.map(function (day) { return (react_1.default.createElement(Typography_1.Typography, tslib_1.__assign({ key: "".concat(month, "-").concat(day), color: "tertiary" }, (size && { variant: "text-".concat(size) })), day && (0, capitalizeFirstLetter_1.capitalizeFirstLetter)(day))); }), days === null || days === void 0 ? void 0 :
36
+ days.map(function (dpDay) { return (react_1.default.createElement(CalendarItem_1.CalendarItem, tslib_1.__assign({ size: size, current: dpDay.now, selected: dpDay.selected, key: dpDay.$date.toDateString() }, dayButton(dpDay, {
37
+ onClick: handleClickOnDay,
38
+ disabled: dpDay.disabled || !dpDay.inCurrentMonth,
39
+ }), { tabIndex: dpDay.disabled || !dpDay.inCurrentMonth ? -1 : 0 }), dpDay.day)); }))),
40
+ step === 'months' && (react_1.default.createElement("div", { className: (0, classnames_1.classnames)((0, exports.cnCalendarGrid)(), (0, exports.cnCalendarMoths)()) }, months === null || months === void 0 ? void 0 : months.map(function (dpMonth) { return (react_1.default.createElement(CalendarItem_1.CalendarItem, tslib_1.__assign({ size: size, current: dpMonth.now, key: dpMonth.$date.toDateString(), selected: (dpMonth.selected && dpMonth.active) ||
41
+ (dpMonth.active && !dpMonth.selected) }, monthButton(dpMonth, {
42
+ onClick: handleClickOnMonth,
43
+ }), { tabIndex: dpMonth.disabled ? -1 : 0 }), dpMonth.month && (0, capitalizeFirstLetter_1.capitalizeFirstLetter)(dpMonth.month))); }))),
44
+ step === 'years' && (react_1.default.createElement("div", { className: (0, classnames_1.classnames)((0, exports.cnCalendarGrid)(), (0, exports.cnCalendarYears)()) }, years === null || years === void 0 ? void 0 : years.map(function (dpYear) { return (react_1.default.createElement(CalendarItem_1.CalendarItem, tslib_1.__assign({ key: dpYear.$date.toDateString(), current: dpYear.now, selected: String(dpYear.year) === year, size: size }, yearButton(dpYear, {
45
+ onClick: handleClickOnYear,
46
+ }), { tabIndex: dpYear.disabled ? -1 : 0 }), dpYear.year)); })))));
47
+ };
48
+ exports.CalendarGrid = CalendarGrid;
@@ -0,0 +1 @@
1
+ export * from './CalendarGrid';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./CalendarGrid"), exports);
@@ -0,0 +1,2 @@
1
+ export declare const isBeforeMinMonth: (month: Date, minDate: Date | undefined) => boolean;
2
+ export declare const isAfterMaxMonth: (month: Date, maxDate: Date | undefined) => boolean;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAfterMaxMonth = exports.isBeforeMinMonth = void 0;
4
+ var isBeforeMinMonth = function (month, minDate) {
5
+ var _a;
6
+ if (!minDate) {
7
+ return false;
8
+ }
9
+ return (month.getTime() <
10
+ ((_a = new Date(minDate === null || minDate === void 0 ? void 0 : minDate.getFullYear(), minDate === null || minDate === void 0 ? void 0 : minDate.getMonth(), 1)) === null || _a === void 0 ? void 0 : _a.getTime()));
11
+ };
12
+ exports.isBeforeMinMonth = isBeforeMinMonth;
13
+ var isAfterMaxMonth = function (month, maxDate) {
14
+ var _a;
15
+ if (!maxDate) {
16
+ return false;
17
+ }
18
+ return (month.getTime() >
19
+ ((_a = new Date(maxDate === null || maxDate === void 0 ? void 0 : maxDate.getFullYear(), maxDate === null || maxDate === void 0 ? void 0 : maxDate.getMonth(), 1)) === null || _a === void 0 ? void 0 : _a.getTime()));
20
+ };
21
+ exports.isAfterMaxMonth = isAfterMaxMonth;
@@ -0,0 +1,13 @@
1
+ import './CalendatItem.css';
2
+ import type { ComponentPropsWithRef } from 'react';
3
+ import React from 'react';
4
+ import type { CALENDAR_ITEM_DEFAULT_TAG } from '../../constants';
5
+ import type { CalendarSizeVariant } from '../../index';
6
+ export declare const cnCalendarItem: import("@bem-react/classname").ClassNameFormatter;
7
+ export type CalendarItemProps = Omit<ComponentPropsWithRef<typeof CALENDAR_ITEM_DEFAULT_TAG>, 'size'> & {
8
+ current?: boolean;
9
+ selected?: boolean;
10
+ disabled?: boolean;
11
+ size?: CalendarSizeVariant;
12
+ };
13
+ export declare const CalendarItem: React.ForwardRefExoticComponent<Omit<CalendarItemProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalendarItem = exports.cnCalendarItem = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./CalendatItem.css");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var classname_1 = require("../../../../utils/classname");
8
+ var ButtonBase_1 = require("../../../ButtonBase");
9
+ exports.cnCalendarItem = (0, classname_1.cn)('CalendarItem');
10
+ exports.CalendarItem = (0, react_1.forwardRef)(function (_a, ref) {
11
+ var current = _a.current, selected = _a.selected, disabled = _a.disabled, className = _a.className, size = _a.size, children = _a.children, other = tslib_1.__rest(_a, ["current", "selected", "disabled", "className", "size", "children"]);
12
+ return (react_1.default.createElement(ButtonBase_1.ButtonBase, tslib_1.__assign({ className: (0, exports.cnCalendarItem)({
13
+ size: size,
14
+ current: current,
15
+ selected: selected,
16
+ disabled: disabled,
17
+ }, [className]), disabled: disabled }, other, { ref: ref }), children));
18
+ });
19
+ exports.CalendarItem.displayName = 'CalendarItem';
@@ -0,0 +1,55 @@
1
+ /* stylelint-disable */
2
+ .CalendarItem {
3
+ border: none;
4
+ color: var(--color-content-primary);
5
+ background-color: inherit;
6
+ cursor: pointer;
7
+ transition:
8
+ background-color var(--transition-default),
9
+ border-color var(--transition-default),
10
+ box-shadow var(--transition-default),
11
+ opacity var(--transition-default);
12
+ }
13
+ .CalendarItem_current {
14
+ color: var(--color-content-action);
15
+ }
16
+ .CalendarItem_size_s {
17
+ font: var(--typography-text-s-font);
18
+ letter-spacing: var(--typography-text-s-letter_spacing, 0);
19
+ text-transform: var(--typography-text-s-text_transform, none);
20
+ border-radius: var(--border-radius-m);
21
+ }
22
+ .CalendarItem_size_m {
23
+ font: var(--typography-text-m-font);
24
+ letter-spacing: var(--typography-text-m-letter_spacing, 0);
25
+ text-transform: var(--typography-text-m-text_transform, none);
26
+ border-radius: var(--border-radius-m);
27
+ }
28
+ .CalendarItem_size_l {
29
+ font: var(--typography-text-l-font);
30
+ letter-spacing: var(--typography-text-l-letter_spacing, 0);
31
+ text-transform: var(--typography-text-l-text_transform, none);
32
+ border-radius: var(--border-radius-m);
33
+ }
34
+ .CalendarItem:hover:not(.CalendarItem_selected) {
35
+ background-color: var(--color-background-main-hover);
36
+ }
37
+ .CalendarItem:active:not(.CalendarItem_selected) {
38
+ background-color: var(--color-background-main-pressed);
39
+ }
40
+ .CalendarItem_selected {
41
+ color: var(--color-content-action-on);
42
+ background-color: var(--color-background-action);
43
+ }
44
+ .CalendarItem_disabled {
45
+ pointer-events: none;
46
+ background-color: inherit;
47
+ color: var(--color-content-tertiary);
48
+ }
49
+ .CalendarItem:focus:not(:focus-visible) {
50
+ box-shadow: none;
51
+ }
52
+ .CalendarItem:focus {
53
+ outline: 0;
54
+ box-shadow: var(--shadow-outline-focused);
55
+ }
@@ -0,0 +1 @@
1
+ export * from './CalendarItem';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./CalendarItem"), exports);
@@ -0,0 +1,25 @@
1
+ .CalendarSwitcher {
2
+ block-size: var(--calendar-switcher-height);
3
+ margin: var(--calendar-switcher-margin);
4
+ padding: var(--calendar-switcher-padding);
5
+
6
+ display: flex;
7
+ align-items: center;
8
+ flex-shrink: 0;
9
+ justify-content: space-between;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ .CalendarSwitcher-StartActions,
14
+ .CalendarSwitcher-EndActions {
15
+ display: flex;
16
+ align-items: center;
17
+ }
18
+
19
+ .CalendarSwitcher-StartActions {
20
+ gap: var(--spacing-2xs);
21
+ }
22
+
23
+ .CalendarSwitcher-EndActions {
24
+ gap: var(--spacing-m);
25
+ }
@@ -0,0 +1,10 @@
1
+ import './CalendarSwitcher.css';
2
+ import type { ComponentPropsWithRef, ComponentRef } from 'react';
3
+ import React from 'react';
4
+ import type { CalendarStepVariant } from '../../index';
5
+ export declare const cnCalendarSwitcher: import("@bem-react/classname").ClassNameFormatter;
6
+ export type CalendarSwitcherProps = {
7
+ getPeriodSwitchAriaLabel?: (step: CalendarStepVariant) => [string, string];
8
+ } & ComponentPropsWithRef<'div'>;
9
+ export type CalendarSwitcherRef = ComponentRef<'div'>;
10
+ export declare const CalendarSwitcher: React.ForwardRefExoticComponent<Omit<CalendarSwitcherProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalendarSwitcher = exports.cnCalendarSwitcher = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./CalendarSwitcher.css");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var icons_1 = require("@ozen-ui/icons");
8
+ var datepicker_1 = require("@rehookify/datepicker");
9
+ var capitalizeFirstLetter_1 = require("../../../../utils/capitalizeFirstLetter");
10
+ var classname_1 = require("../../../../utils/classname");
11
+ var ButtonNext_1 = require("../../../ButtonNext");
12
+ var IconButtonNext_1 = require("../../../IconButtonNext");
13
+ var Typography_1 = require("../../../Typography");
14
+ var CalendarContext_1 = require("../../CalendarContext");
15
+ var utils_1 = require("./utils");
16
+ exports.cnCalendarSwitcher = (0, classname_1.cn)('CalendarSwitcher');
17
+ exports.CalendarSwitcher = (0, react_1.forwardRef)(function (_a, ref) {
18
+ var _b, _c;
19
+ var className = _a.className, _d = _a.getPeriodSwitchAriaLabel, getPeriodSwitchAriaLabel = _d === void 0 ? utils_1.getPeriodSwitchAriaLabel : _d, other = tslib_1.__rest(_a, ["className", "getPeriodSwitchAriaLabel"]);
20
+ var _e = (0, react_1.useContext)(CalendarContext_1.CalendarContext), step = _e.step, goStep = _e.goStep, size = _e.size;
21
+ var _f = (0, datepicker_1.useDatePickerContext)(), _g = _f.data, calendars = _g.calendars, years = _g.years, _h = _f.propGetters, subtractOffset = _h.subtractOffset, addOffset = _h.addOffset, nextYearsButton = _h.nextYearsButton, previousYearsButton = _h.previousYearsButton;
22
+ var _j = calendars[0] || {}, year = _j.year, month = _j.month;
23
+ var handleClickOnMonths = function () {
24
+ goStep === null || goStep === void 0 ? void 0 : goStep('months');
25
+ };
26
+ var handleClickOnYears = function () {
27
+ goStep === null || goStep === void 0 ? void 0 : goStep('years');
28
+ };
29
+ var _k = tslib_1.__read(getPeriodSwitchAriaLabel(step), 2), PREVIOUS = _k[0], NEXT = _k[1];
30
+ return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, exports.cnCalendarSwitcher)({ size: size }, [className]) }, other, { ref: ref }),
31
+ step === 'days' && (react_1.default.createElement(react_1.default.Fragment, null,
32
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarSwitcher)('StartActions') },
33
+ react_1.default.createElement(ButtonNext_1.Button, { variant: "function", type: "button", color: "primary", onClick: handleClickOnMonths, size: size }, month && (0, capitalizeFirstLetter_1.capitalizeFirstLetter)(month)),
34
+ react_1.default.createElement(ButtonNext_1.Button, { variant: "function", type: "button", color: "primary", onClick: handleClickOnYears, size: size }, year)),
35
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarSwitcher)('EndActions') },
36
+ react_1.default.createElement(IconButtonNext_1.IconButton, tslib_1.__assign({ variant: "function", type: "button", color: "primary", icon: icons_1.ChevronLeftIcon, size: size, "aria-label": PREVIOUS, title: PREVIOUS }, subtractOffset({ months: 1 }))),
37
+ react_1.default.createElement(IconButtonNext_1.IconButton, tslib_1.__assign({ variant: "function", color: "primary", icon: icons_1.ChevronRightIcon, size: size, "aria-label": NEXT, title: NEXT }, addOffset({ months: 1 })))))),
38
+ step === 'months' && (react_1.default.createElement(react_1.default.Fragment, null,
39
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarSwitcher)('StartActions') },
40
+ react_1.default.createElement(ButtonNext_1.Button, { variant: "function", type: "button", color: "primary", onClick: handleClickOnYears, size: size }, year)),
41
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarSwitcher)('EndActions') },
42
+ react_1.default.createElement(IconButtonNext_1.IconButton, tslib_1.__assign({ variant: "function", type: "button", color: "primary", icon: icons_1.ChevronLeftIcon, size: size, "aria-label": PREVIOUS, title: PREVIOUS }, subtractOffset({ years: 1 }))),
43
+ react_1.default.createElement(IconButtonNext_1.IconButton, tslib_1.__assign({ variant: "function", type: "button", color: "primary", icon: icons_1.ChevronRightIcon, size: size, "aria-label": NEXT, title: NEXT }, addOffset({ years: 1 })))))),
44
+ step === 'years' && (react_1.default.createElement(react_1.default.Fragment, null,
45
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarSwitcher)('StartActions') },
46
+ react_1.default.createElement(Typography_1.Typography, tslib_1.__assign({ color: "primary" }, (size && { variant: "text-".concat(size) })), (_b = years === null || years === void 0 ? void 0 : years[0]) === null || _b === void 0 ? void 0 :
47
+ _b.year,
48
+ " - ", (_c = years === null || years === void 0 ? void 0 : years[years.length - 1]) === null || _c === void 0 ? void 0 :
49
+ _c.year)),
50
+ react_1.default.createElement("div", { className: (0, exports.cnCalendarSwitcher)('EndActions') },
51
+ react_1.default.createElement(IconButtonNext_1.IconButton, tslib_1.__assign({ variant: "function", type: "button", color: "primary", icon: icons_1.ChevronLeftIcon, size: size, "aria-label": PREVIOUS, title: PREVIOUS }, previousYearsButton())),
52
+ react_1.default.createElement(IconButtonNext_1.IconButton, tslib_1.__assign({ variant: "function", type: "button", color: "primary", icon: icons_1.ChevronRightIcon, size: size, "aria-label": NEXT, title: NEXT }, nextYearsButton())))))));
53
+ });
54
+ exports.CalendarSwitcher.displayName = 'CalendarSwitcher';
@@ -0,0 +1 @@
1
+ export * from './CalendarSwitcher';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./CalendarSwitcher"), exports);
@@ -0,0 +1,2 @@
1
+ import type { CalendarStepVariant } from '../../index';
2
+ export declare const getPeriodSwitchAriaLabel: (step: CalendarStepVariant) => string[];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPeriodSwitchAriaLabel = void 0;
4
+ var getPeriodSwitchAriaLabel = function (step) {
5
+ if (step === 'days') {
6
+ return ['Previous month', 'Next month'];
7
+ }
8
+ if (step === 'months') {
9
+ return ['Previous year', 'Next year'];
10
+ }
11
+ return ['Previous period', 'Next period'];
12
+ };
13
+ exports.getPeriodSwitchAriaLabel = getPeriodSwitchAriaLabel;
@@ -0,0 +1,4 @@
1
+ export * from './CalendarItem';
2
+ export * from './CalendarSwitcher';
3
+ export * from './CalendarGrid';
4
+ export * from './CalendarAdditionalControls';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./CalendarItem"), exports);
5
+ tslib_1.__exportStar(require("./CalendarSwitcher"), exports);
6
+ tslib_1.__exportStar(require("./CalendarGrid"), exports);
7
+ tslib_1.__exportStar(require("./CalendarAdditionalControls"), exports);
@@ -0,0 +1,4 @@
1
+ export declare const CALENDAR_DEFAULT_AS = "div";
2
+ export declare const CALENDAR_DEFAULT_START_DAY = 1;
3
+ export declare const CALENDAR_ITEM_DEFAULT_TAG = "button";
4
+ export declare const CALENDAR_DEFAULT_SIZE = "m";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CALENDAR_DEFAULT_SIZE = exports.CALENDAR_ITEM_DEFAULT_TAG = exports.CALENDAR_DEFAULT_START_DAY = exports.CALENDAR_DEFAULT_AS = void 0;
4
+ exports.CALENDAR_DEFAULT_AS = 'div';
5
+ exports.CALENDAR_DEFAULT_START_DAY = 1;
6
+ exports.CALENDAR_ITEM_DEFAULT_TAG = 'button';
7
+ exports.CALENDAR_DEFAULT_SIZE = 'm';
@@ -0,0 +1,2 @@
1
+ export * from './Calendar';
2
+ export * from './types';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Calendar"), exports);
5
+ tslib_1.__exportStar(require("./types"), exports);