@gravity-ui/date-components 2.0.1 → 2.2.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 (80) hide show
  1. package/dist/cjs/components/CalendarView/hooks/useCalendarProps.js +17 -0
  2. package/dist/cjs/components/CalendarView/i18n/en.json +4 -1
  3. package/dist/cjs/components/CalendarView/i18n/index.d.ts +1 -1
  4. package/dist/cjs/components/CalendarView/i18n/ru.json +4 -1
  5. package/dist/cjs/components/DateField/hooks/useBaseDateFieldState.d.ts +2 -2
  6. package/dist/cjs/components/DateField/hooks/useDateFieldProps.d.ts +2 -2
  7. package/dist/cjs/components/DateField/hooks/useDateFieldState.d.ts +1 -2
  8. package/dist/cjs/components/DateField/utils.js +2 -1
  9. package/dist/cjs/components/DatePicker/DatePicker.d.ts +3 -2
  10. package/dist/cjs/components/DatePicker/DatePicker.js +3 -1
  11. package/dist/cjs/components/DatePicker/MobileCalendar.css +1 -26
  12. package/dist/cjs/components/DatePicker/MobileCalendar.d.ts +0 -5
  13. package/dist/cjs/components/DatePicker/MobileCalendar.js +2 -9
  14. package/dist/cjs/components/DatePicker/StubButton.css +26 -0
  15. package/dist/cjs/components/DatePicker/StubButton.d.ts +8 -0
  16. package/dist/cjs/components/DatePicker/StubButton.js +12 -0
  17. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.d.ts +49 -0
  18. package/dist/cjs/components/DatePicker/hooks/datePickerStateFactory.js +121 -0
  19. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.d.ts +9 -5
  20. package/dist/cjs/components/DatePicker/hooks/useDatePickerProps.js +4 -2
  21. package/dist/cjs/components/DatePicker/hooks/useDatePickerState.d.ts +2 -41
  22. package/dist/cjs/components/DatePicker/hooks/useDatePickerState.js +11 -131
  23. package/dist/cjs/components/DatePicker/{utils.js → utils/cn.js} +1 -1
  24. package/dist/cjs/components/DatePicker/utils/getDateTimeValue.d.ts +3 -0
  25. package/dist/cjs/components/DatePicker/utils/getDateTimeValue.js +10 -0
  26. package/dist/cjs/components/DatePicker/utils/index.d.ts +2 -0
  27. package/dist/cjs/components/DatePicker/utils/index.js +5 -0
  28. package/dist/cjs/components/RangeCalendar/RangeCalendar.d.ts +5 -10
  29. package/dist/cjs/components/RangeDateField/hooks/useRangeDateFieldState.d.ts +2 -2
  30. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.css +22 -0
  31. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.d.ts +6 -0
  32. package/dist/cjs/components/RangeDatePicker/RangeDatePicker.js +25 -0
  33. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +7 -0
  34. package/dist/cjs/components/RangeDatePicker/hooks/useRangeDatePickerState.js +28 -0
  35. package/dist/cjs/components/RangeDatePicker/index.d.ts +2 -0
  36. package/dist/cjs/components/RangeDatePicker/index.js +5 -0
  37. package/dist/cjs/components/RelativeDatePicker/RelativeDatePicker.js +4 -2
  38. package/dist/cjs/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.js +3 -3
  39. package/dist/esm/components/CalendarView/hooks/useCalendarProps.js +17 -0
  40. package/dist/esm/components/CalendarView/i18n/en.json +4 -1
  41. package/dist/esm/components/CalendarView/i18n/index.d.ts +1 -1
  42. package/dist/esm/components/CalendarView/i18n/ru.json +4 -1
  43. package/dist/esm/components/DateField/hooks/useBaseDateFieldState.d.ts +2 -2
  44. package/dist/esm/components/DateField/hooks/useDateFieldProps.d.ts +2 -2
  45. package/dist/esm/components/DateField/hooks/useDateFieldState.d.ts +1 -2
  46. package/dist/esm/components/DateField/utils.js +2 -1
  47. package/dist/esm/components/DatePicker/DatePicker.d.ts +3 -2
  48. package/dist/esm/components/DatePicker/DatePicker.js +5 -3
  49. package/dist/esm/components/DatePicker/MobileCalendar.css +1 -26
  50. package/dist/esm/components/DatePicker/MobileCalendar.d.ts +0 -5
  51. package/dist/esm/components/DatePicker/MobileCalendar.js +1 -7
  52. package/dist/esm/components/DatePicker/StubButton.css +26 -0
  53. package/dist/esm/components/DatePicker/StubButton.d.ts +8 -0
  54. package/dist/esm/components/DatePicker/StubButton.js +8 -0
  55. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.d.ts +49 -0
  56. package/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js +116 -0
  57. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.d.ts +9 -5
  58. package/dist/esm/components/DatePicker/hooks/useDatePickerProps.js +4 -2
  59. package/dist/esm/components/DatePicker/hooks/useDatePickerState.d.ts +2 -41
  60. package/dist/esm/components/DatePicker/hooks/useDatePickerState.js +11 -129
  61. package/dist/esm/components/DatePicker/utils/cn.js +2 -0
  62. package/dist/esm/components/DatePicker/utils/getDateTimeValue.d.ts +3 -0
  63. package/dist/esm/components/DatePicker/utils/getDateTimeValue.js +6 -0
  64. package/dist/esm/components/DatePicker/utils/index.d.ts +2 -0
  65. package/dist/esm/components/DatePicker/utils/index.js +2 -0
  66. package/dist/esm/components/RangeCalendar/RangeCalendar.d.ts +5 -10
  67. package/dist/esm/components/RangeDateField/hooks/useRangeDateFieldState.d.ts +2 -2
  68. package/dist/esm/components/RangeDatePicker/RangeDatePicker.css +22 -0
  69. package/dist/esm/components/RangeDatePicker/RangeDatePicker.d.ts +6 -0
  70. package/dist/esm/components/RangeDatePicker/RangeDatePicker.js +21 -0
  71. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.d.ts +7 -0
  72. package/dist/esm/components/RangeDatePicker/hooks/useRangeDatePickerState.js +25 -0
  73. package/dist/esm/components/RangeDatePicker/index.d.ts +2 -0
  74. package/dist/esm/components/RangeDatePicker/index.js +2 -0
  75. package/dist/esm/components/RelativeDatePicker/RelativeDatePicker.js +6 -4
  76. package/dist/esm/components/RelativeRangeDatePicker/components/Presets/PresetsDoc.js +3 -3
  77. package/package.json +2 -2
  78. package/dist/esm/components/DatePicker/utils.js +0 -2
  79. /package/dist/cjs/components/DatePicker/{utils.d.ts → utils/cn.d.ts} +0 -0
  80. /package/dist/esm/components/DatePicker/{utils.d.ts → utils/cn.d.ts} +0 -0
@@ -1,11 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { Calendar as CalendarIcon, Function as FunctionIcon } from '@gravity-ui/icons';
3
+ import { Calendar as CalendarIcon, Clock as ClockIcon, Function as FunctionIcon, } from '@gravity-ui/icons';
4
4
  import { Button, Icon, Popup, TextInput, useMobile } from '@gravity-ui/uikit';
5
5
  import { block } from '../../utils/cn';
6
6
  import { Calendar } from '../Calendar';
7
7
  import { DateField } from '../DateField';
8
- import { MobileCalendar, MobileCalendarIcon } from '../DatePicker/MobileCalendar';
8
+ import { MobileCalendar } from '../DatePicker/MobileCalendar';
9
+ import { StubButton } from '../DatePicker/StubButton';
9
10
  import { useRelativeDatePickerProps } from './hooks/useRelativeDatePickerProps';
10
11
  import { useRelativeDatePickerState } from './hooks/useRelativeDatePickerState';
11
12
  import './RelativeDatePicker.css';
@@ -15,15 +16,16 @@ export function RelativeDatePicker(props) {
15
16
  const { groupProps, fieldProps, modeSwitcherProps, calendarButtonProps, popupProps, calendarProps, timeInputProps, } = useRelativeDatePickerProps(state, props);
16
17
  const anchorRef = React.useRef(null);
17
18
  const isMobile = useMobile();
19
+ const isOnlyTime = state.datePickerState.hasTime && !state.datePickerState.hasDate;
18
20
  return (_jsxs("div", Object.assign({ ref: anchorRef, className: b(null, props.className) }, groupProps, { children: [isMobile && state.mode === 'absolute' && (_jsx(MobileCalendar, { state: state.datePickerState, props: {
19
21
  id: props.id,
20
22
  disabled: props.disabled,
21
23
  readOnly: props.readOnly,
22
24
  placeholderValue: props.placeholderValue,
23
25
  timeZone: props.timeZone,
24
- } })), _jsx(TextInput, Object.assign({}, fieldProps, { controlProps: Object.assign(Object.assign({}, fieldProps.controlProps), { disabled: isMobile && state.mode === 'absolute', className: b('input', { mobile: isMobile && state.mode === 'absolute' }) }), hasClear: props.hasClear && !(isMobile && state.mode === 'absolute'), startContent: _jsx(Button, Object.assign({}, modeSwitcherProps, { children: _jsx(Icon, { data: FunctionIcon }) })), endContent: _jsxs(React.Fragment, { children: [!isMobile && (_jsx(Button, Object.assign({}, calendarButtonProps, { children: _jsx(Icon, { data: CalendarIcon }) }))), isMobile && state.mode === 'absolute' && (_jsx(MobileCalendarIcon, { state: state.datePickerState, props: { size: props.size } }))] }) })), _jsx("input", { type: "text", hidden: true, name: props.name, value: getNativeValue(state.value),
26
+ } })), _jsx(TextInput, Object.assign({}, fieldProps, { controlProps: Object.assign(Object.assign({}, fieldProps.controlProps), { disabled: isMobile && state.mode === 'absolute', className: b('input', { mobile: isMobile && state.mode === 'absolute' }) }), hasClear: props.hasClear && !(isMobile && state.mode === 'absolute'), startContent: _jsx(Button, Object.assign({}, modeSwitcherProps, { children: _jsx(Icon, { data: FunctionIcon }) })), endContent: _jsxs(React.Fragment, { children: [!isMobile && !isOnlyTime && (_jsx(Button, Object.assign({}, calendarButtonProps, { children: _jsx(Icon, { data: CalendarIcon }) }))), !isMobile && isOnlyTime && (_jsx(StubButton, { size: calendarButtonProps.size, icon: ClockIcon })), isMobile && state.mode === 'absolute' && (_jsx(StubButton, { size: calendarButtonProps.size, icon: isOnlyTime ? ClockIcon : CalendarIcon }))] }) })), _jsx("input", { type: "text", hidden: true, name: props.name, value: getNativeValue(state.value),
25
27
  // Ignore React warning
26
- onChange: () => { } }), !isMobile && (_jsx(Popup, Object.assign({}, popupProps, { anchorRef: anchorRef, children: _jsxs("div", { className: b('popup-content'), children: [typeof props.children === 'function' ? (props.children(calendarProps)) : (_jsx(Calendar, Object.assign({}, calendarProps))), state.datePickerState.hasTime && (_jsx("div", { className: b('time-field-wrapper'), children: _jsx(DateField, Object.assign({}, timeInputProps)) }))] }) })))] })));
28
+ onChange: () => { } }), !isMobile && !isOnlyTime && (_jsx(Popup, Object.assign({}, popupProps, { anchorRef: anchorRef, children: _jsxs("div", { className: b('popup-content'), children: [typeof props.children === 'function' ? (props.children(calendarProps)) : (_jsx(Calendar, Object.assign({}, calendarProps))), state.datePickerState.hasTime && (_jsx("div", { className: b('time-field-wrapper'), children: _jsx(DateField, Object.assign({}, timeInputProps)) }))] }) })))] })));
27
29
  }
28
30
  function getNativeValue(value) {
29
31
  if (!value) {
@@ -32,7 +32,7 @@ const data = [
32
32
  get title() {
33
33
  return i18n('Last 5 minutes');
34
34
  },
35
- from: 'now 5m',
35
+ from: 'now - 5m',
36
36
  to: 'now',
37
37
  },
38
38
  {
@@ -60,8 +60,8 @@ const data = [
60
60
  get title() {
61
61
  return i18n('Previous month');
62
62
  },
63
- from: 'now 1M/M',
64
- to: 'now 1M/M',
63
+ from: 'now - 1M/M',
64
+ to: 'now - 1M/M',
65
65
  },
66
66
  ];
67
67
  function PresetsExamples({ size }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/date-components",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "dist/cjs/index.js",
@@ -48,7 +48,7 @@
48
48
  "@bem-react/classname": "^1.6.0",
49
49
  "@gravity-ui/date-utils": "^2.0.1",
50
50
  "@gravity-ui/icons": "^2.2.0",
51
- "tslib": "2.6.2"
51
+ "tslib": "^2.6.2"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@babel/preset-env": "^7.22.9",
@@ -1,2 +0,0 @@
1
- import { block } from '../../utils/cn';
2
- export const b = block('date-picker');