@gravity-ui/date-components 1.1.0 → 1.1.1

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 (37) hide show
  1. package/dist/cjs/components/Calendar/hooks/useRangeCalendarState.js +10 -5
  2. package/dist/cjs/components/DateField/hooks/useDateFieldProps.js +21 -14
  3. package/dist/cjs/components/DateField/hooks/useDateFieldState.js +16 -160
  4. package/dist/cjs/components/DateField/utils.d.ts +13 -1
  5. package/dist/cjs/components/DateField/utils.js +168 -1
  6. package/dist/cjs/components/DatePicker/DatePicker.css +6 -0
  7. package/dist/cjs/components/DatePicker/DatePicker.d.ts +2 -2
  8. package/dist/cjs/components/DatePicker/DatePicker.js +6 -33
  9. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +20 -0
  10. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +134 -0
  11. package/dist/cjs/components/DatePicker/hooks/useDatePickerState.d.ts +4 -5
  12. package/dist/cjs/components/DatePicker/hooks/useDatePickerState.js +15 -0
  13. package/dist/cjs/components/DatePicker/index.d.ts +1 -0
  14. package/dist/cjs/components/DatePicker/index.js +1 -0
  15. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.css +1 -0
  16. package/dist/cjs/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +29 -27
  17. package/dist/esm/components/Calendar/hooks/useRangeCalendarState.js +10 -5
  18. package/dist/esm/components/DateField/hooks/useDateFieldProps.js +21 -14
  19. package/dist/esm/components/DateField/hooks/useDateFieldState.js +14 -158
  20. package/dist/esm/components/DateField/utils.d.ts +13 -1
  21. package/dist/esm/components/DateField/utils.js +162 -0
  22. package/dist/esm/components/DatePicker/DatePicker.css +6 -0
  23. package/dist/esm/components/DatePicker/DatePicker.d.ts +2 -2
  24. package/dist/esm/components/DatePicker/DatePicker.js +8 -35
  25. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +20 -0
  26. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +127 -0
  27. package/dist/esm/components/DatePicker/hooks/useDatePickerState.d.ts +4 -5
  28. package/dist/esm/components/DatePicker/hooks/useDatePickerState.js +15 -0
  29. package/dist/esm/components/DatePicker/index.d.ts +1 -0
  30. package/dist/esm/components/DatePicker/index.js +1 -0
  31. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.css +1 -0
  32. package/dist/esm/components/RelativeDatePicker/hooks/useRelativeDatePickerProps.js +29 -27
  33. package/package.json +8 -7
  34. package/dist/cjs/components/DatePicker/DesktopCalendar.d.ts +0 -17
  35. package/dist/cjs/components/DatePicker/DesktopCalendar.js +0 -65
  36. package/dist/esm/components/DatePicker/DesktopCalendar.d.ts +0 -17
  37. package/dist/esm/components/DatePicker/DesktopCalendar.js +0 -57
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { type CalendarProps } from '../Calendar';
3
- import type { DatePickerProps } from './DatePicker';
4
- import type { DatePickerState } from './hooks/useDatePickerState';
5
- interface DesktopCalendarProps {
6
- anchorRef: React.RefObject<HTMLElement>;
7
- props: DatePickerProps;
8
- state: DatePickerState;
9
- renderCalendar?: (props: CalendarProps) => React.ReactNode;
10
- }
11
- export declare function DesktopCalendar({ anchorRef, props, state, renderCalendar }: DesktopCalendarProps): import("react/jsx-runtime").JSX.Element | null;
12
- interface DesktopCalendarButtonProps {
13
- props: DatePickerProps;
14
- state: DatePickerState;
15
- }
16
- export declare function DesktopCalendarButton({ props, state }: DesktopCalendarButtonProps): import("react/jsx-runtime").JSX.Element | null;
17
- export {};
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DesktopCalendarButton = exports.DesktopCalendar = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const react_1 = __importDefault(require("react"));
9
- const icons_1 = require("@gravity-ui/icons");
10
- const uikit_1 = require("@gravity-ui/uikit");
11
- const Calendar_1 = require("../Calendar");
12
- const DateField_1 = require("../DateField");
13
- const getButtonSizeForInput_1 = require("../utils/getButtonSizeForInput");
14
- const i18n_1 = require("./i18n");
15
- const utils_1 = require("./utils");
16
- function DesktopCalendar({ anchorRef, props, state, renderCalendar }) {
17
- var _a;
18
- const { focusWithinProps } = (0, uikit_1.useFocusWithin)({
19
- isDisabled: !state.isOpen,
20
- onBlurWithin: () => {
21
- state.setOpen(false);
22
- },
23
- });
24
- if (!state.hasDate) {
25
- return null;
26
- }
27
- const calendarProps = {
28
- autoFocus: true,
29
- size: props.size === 's' ? 'm' : props.size,
30
- disabled: props.disabled,
31
- readOnly: props.readOnly,
32
- onUpdate: (d) => {
33
- state.setDateValue(d);
34
- },
35
- defaultFocusedValue: (_a = state.dateValue) !== null && _a !== void 0 ? _a : undefined,
36
- value: state.dateValue,
37
- minValue: props.minValue,
38
- maxValue: props.maxValue,
39
- isDateUnavailable: props.isDateUnavailable,
40
- timeZone: props.timeZone,
41
- };
42
- return ((0, jsx_runtime_1.jsx)(uikit_1.Popup, { open: state.isOpen, anchorRef: anchorRef, onClose: () => {
43
- state.setOpen(false);
44
- }, restoreFocus: true, children: (0, jsx_runtime_1.jsxs)("div", Object.assign({}, focusWithinProps, { className: (0, utils_1.b)('popup-content'), tabIndex: -1, children: [typeof renderCalendar === 'function' ? (renderCalendar(calendarProps)) : ((0, jsx_runtime_1.jsx)(Calendar_1.Calendar, Object.assign({}, calendarProps))), state.hasTime && ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.b)('time-field-wrapper'), children: (0, jsx_runtime_1.jsx)(DateField_1.DateField, { className: (0, utils_1.b)('time-field'), size: props.size, readOnly: props.readOnly, value: state.timeValue, onUpdate: state.setTimeValue, placeholderValue: props.placeholderValue, minValue: props.minValue, maxValue: props.maxValue, timeZone: props.timeZone, format: state.timeFormat }) }))] })) }));
45
- }
46
- exports.DesktopCalendar = DesktopCalendar;
47
- function DesktopCalendarButton({ props, state }) {
48
- const wasOpenBeforeClickRef = react_1.default.useRef(false);
49
- if (!state.hasDate) {
50
- return null;
51
- }
52
- return ((0, jsx_runtime_1.jsx)(uikit_1.Button, { view: "flat", size: (0, getButtonSizeForInput_1.getButtonSizeForInput)(props.size), disabled: props.disabled, extraProps: {
53
- 'aria-label': (0, i18n_1.i18n)('Calendar'),
54
- 'aria-haspopup': 'dialog',
55
- 'aria-expanded': state.isOpen,
56
- }, onFocus: () => {
57
- wasOpenBeforeClickRef.current = state.isOpen;
58
- }, onClick: () => {
59
- if (!wasOpenBeforeClickRef.current) {
60
- state.setOpen(true);
61
- }
62
- wasOpenBeforeClickRef.current = false;
63
- }, children: (0, jsx_runtime_1.jsx)(uikit_1.Icon, { data: icons_1.Calendar }) }));
64
- }
65
- exports.DesktopCalendarButton = DesktopCalendarButton;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { type CalendarProps } from '../Calendar';
3
- import type { DatePickerProps } from './DatePicker';
4
- import type { DatePickerState } from './hooks/useDatePickerState';
5
- interface DesktopCalendarProps {
6
- anchorRef: React.RefObject<HTMLElement>;
7
- props: DatePickerProps;
8
- state: DatePickerState;
9
- renderCalendar?: (props: CalendarProps) => React.ReactNode;
10
- }
11
- export declare function DesktopCalendar({ anchorRef, props, state, renderCalendar }: DesktopCalendarProps): import("react/jsx-runtime").JSX.Element | null;
12
- interface DesktopCalendarButtonProps {
13
- props: DatePickerProps;
14
- state: DatePickerState;
15
- }
16
- export declare function DesktopCalendarButton({ props, state }: DesktopCalendarButtonProps): import("react/jsx-runtime").JSX.Element | null;
17
- export {};
@@ -1,57 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from 'react';
3
- import { Calendar as CalendarIcon } from '@gravity-ui/icons';
4
- import { Button, Icon, Popup, useFocusWithin } from '@gravity-ui/uikit';
5
- import { Calendar } from '../Calendar';
6
- import { DateField } from '../DateField';
7
- import { getButtonSizeForInput } from '../utils/getButtonSizeForInput';
8
- import { i18n } from './i18n';
9
- import { b } from './utils';
10
- export function DesktopCalendar({ anchorRef, props, state, renderCalendar }) {
11
- var _a;
12
- const { focusWithinProps } = useFocusWithin({
13
- isDisabled: !state.isOpen,
14
- onBlurWithin: () => {
15
- state.setOpen(false);
16
- },
17
- });
18
- if (!state.hasDate) {
19
- return null;
20
- }
21
- const calendarProps = {
22
- autoFocus: true,
23
- size: props.size === 's' ? 'm' : props.size,
24
- disabled: props.disabled,
25
- readOnly: props.readOnly,
26
- onUpdate: (d) => {
27
- state.setDateValue(d);
28
- },
29
- defaultFocusedValue: (_a = state.dateValue) !== null && _a !== void 0 ? _a : undefined,
30
- value: state.dateValue,
31
- minValue: props.minValue,
32
- maxValue: props.maxValue,
33
- isDateUnavailable: props.isDateUnavailable,
34
- timeZone: props.timeZone,
35
- };
36
- return (_jsx(Popup, { open: state.isOpen, anchorRef: anchorRef, onClose: () => {
37
- state.setOpen(false);
38
- }, restoreFocus: true, children: _jsxs("div", Object.assign({}, focusWithinProps, { className: b('popup-content'), tabIndex: -1, children: [typeof renderCalendar === 'function' ? (renderCalendar(calendarProps)) : (_jsx(Calendar, Object.assign({}, calendarProps))), state.hasTime && (_jsx("div", { className: b('time-field-wrapper'), children: _jsx(DateField, { className: b('time-field'), size: props.size, readOnly: props.readOnly, value: state.timeValue, onUpdate: state.setTimeValue, placeholderValue: props.placeholderValue, minValue: props.minValue, maxValue: props.maxValue, timeZone: props.timeZone, format: state.timeFormat }) }))] })) }));
39
- }
40
- export function DesktopCalendarButton({ props, state }) {
41
- const wasOpenBeforeClickRef = React.useRef(false);
42
- if (!state.hasDate) {
43
- return null;
44
- }
45
- return (_jsx(Button, { view: "flat", size: getButtonSizeForInput(props.size), disabled: props.disabled, extraProps: {
46
- 'aria-label': i18n('Calendar'),
47
- 'aria-haspopup': 'dialog',
48
- 'aria-expanded': state.isOpen,
49
- }, onFocus: () => {
50
- wasOpenBeforeClickRef.current = state.isOpen;
51
- }, onClick: () => {
52
- if (!wasOpenBeforeClickRef.current) {
53
- state.setOpen(true);
54
- }
55
- wasOpenBeforeClickRef.current = false;
56
- }, children: _jsx(Icon, { data: CalendarIcon }) }));
57
- }