@salutejs/plasma-new-hope 0.163.0-canary.1466.11254522155.0 → 0.163.0-canary.1475.11258202491.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. package/cjs/components/DatePicker/RangeDate/RangeDate.js +62 -11
  2. package/cjs/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  3. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +8 -2
  4. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js.map +1 -1
  5. package/cjs/components/DatePicker/SingleDate/SingleDate.js +25 -7
  6. package/cjs/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  7. package/cjs/components/DatePicker/hooks/useDatePicker.js +20 -48
  8. package/cjs/components/DatePicker/hooks/useDatePicker.js.map +1 -1
  9. package/cjs/components/DatePicker/hooks/useKeyboardNavigation.js +11 -1
  10. package/cjs/components/DatePicker/hooks/useKeyboardNavigation.js.map +1 -1
  11. package/cjs/components/DatePicker/utils/dateHelper.js +31 -0
  12. package/cjs/components/DatePicker/utils/dateHelper.js.map +1 -1
  13. package/emotion/cjs/components/Badge/Badge.template-doc.mdx +1 -3
  14. package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.js +62 -11
  15. package/emotion/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +8 -2
  16. package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.js +25 -7
  17. package/emotion/cjs/components/DatePicker/hooks/useDatePicker.js +20 -48
  18. package/emotion/cjs/components/DatePicker/hooks/useKeyboardNavigation.js +11 -1
  19. package/emotion/cjs/components/DatePicker/utils/dateHelper.js +31 -1
  20. package/emotion/cjs/examples/plasma_b2c/components/Badge/Badge.config.js +13 -14
  21. package/emotion/cjs/examples/plasma_b2c/components/Badge/Badge.stories.tsx +1 -1
  22. package/emotion/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +2 -0
  23. package/emotion/cjs/examples/plasma_web/components/Badge/Badge.config.js +13 -14
  24. package/emotion/cjs/examples/plasma_web/components/Badge/Badge.stories.tsx +1 -1
  25. package/emotion/es/components/Badge/Badge.template-doc.mdx +1 -3
  26. package/emotion/es/components/DatePicker/RangeDate/RangeDate.js +64 -13
  27. package/emotion/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +8 -2
  28. package/emotion/es/components/DatePicker/SingleDate/SingleDate.js +26 -8
  29. package/emotion/es/components/DatePicker/hooks/useDatePicker.js +21 -49
  30. package/emotion/es/components/DatePicker/hooks/useKeyboardNavigation.js +11 -1
  31. package/emotion/es/components/DatePicker/utils/dateHelper.js +30 -0
  32. package/emotion/es/examples/plasma_b2c/components/Badge/Badge.config.js +13 -14
  33. package/emotion/es/examples/plasma_b2c/components/Badge/Badge.stories.tsx +1 -1
  34. package/emotion/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +2 -0
  35. package/emotion/es/examples/plasma_web/components/Badge/Badge.config.js +13 -14
  36. package/emotion/es/examples/plasma_web/components/Badge/Badge.stories.tsx +1 -1
  37. package/es/components/DatePicker/RangeDate/RangeDate.js +64 -13
  38. package/es/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  39. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +8 -2
  40. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js.map +1 -1
  41. package/es/components/DatePicker/SingleDate/SingleDate.js +26 -8
  42. package/es/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  43. package/es/components/DatePicker/hooks/useDatePicker.js +21 -49
  44. package/es/components/DatePicker/hooks/useDatePicker.js.map +1 -1
  45. package/es/components/DatePicker/hooks/useKeyboardNavigation.js +11 -1
  46. package/es/components/DatePicker/hooks/useKeyboardNavigation.js.map +1 -1
  47. package/es/components/DatePicker/utils/dateHelper.js +31 -1
  48. package/es/components/DatePicker/utils/dateHelper.js.map +1 -1
  49. package/package.json +2 -2
  50. package/styled-components/cjs/components/Badge/Badge.template-doc.mdx +1 -3
  51. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDate.js +62 -11
  52. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +8 -2
  53. package/styled-components/cjs/components/DatePicker/SingleDate/SingleDate.js +25 -7
  54. package/styled-components/cjs/components/DatePicker/hooks/useDatePicker.js +20 -48
  55. package/styled-components/cjs/components/DatePicker/hooks/useKeyboardNavigation.js +11 -1
  56. package/styled-components/cjs/components/DatePicker/utils/dateHelper.js +31 -1
  57. package/styled-components/cjs/examples/plasma_b2c/components/Badge/Badge.config.js +1 -2
  58. package/styled-components/cjs/examples/plasma_b2c/components/Badge/Badge.stories.tsx +1 -1
  59. package/styled-components/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +2 -0
  60. package/styled-components/cjs/examples/plasma_web/components/Badge/Badge.config.js +1 -2
  61. package/styled-components/cjs/examples/plasma_web/components/Badge/Badge.stories.tsx +1 -1
  62. package/styled-components/es/components/Badge/Badge.template-doc.mdx +1 -3
  63. package/styled-components/es/components/DatePicker/RangeDate/RangeDate.js +64 -13
  64. package/styled-components/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js +8 -2
  65. package/styled-components/es/components/DatePicker/SingleDate/SingleDate.js +26 -8
  66. package/styled-components/es/components/DatePicker/hooks/useDatePicker.js +21 -49
  67. package/styled-components/es/components/DatePicker/hooks/useKeyboardNavigation.js +11 -1
  68. package/styled-components/es/components/DatePicker/utils/dateHelper.js +30 -0
  69. package/styled-components/es/examples/plasma_b2c/components/Badge/Badge.config.js +1 -2
  70. package/styled-components/es/examples/plasma_b2c/components/Badge/Badge.stories.tsx +1 -1
  71. package/styled-components/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +2 -0
  72. package/styled-components/es/examples/plasma_web/components/Badge/Badge.config.js +1 -2
  73. package/styled-components/es/examples/plasma_web/components/Badge/Badge.stories.tsx +1 -1
  74. package/types/components/DatePicker/DatePickerBase.types.d.ts +7 -5
  75. package/types/components/DatePicker/DatePickerBase.types.d.ts.map +1 -1
  76. package/types/components/DatePicker/RangeDate/RangeDate.d.ts +8 -8
  77. package/types/components/DatePicker/RangeDate/RangeDate.d.ts.map +1 -1
  78. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts +14 -4
  79. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts.map +1 -1
  80. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.d.ts +1 -1
  81. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.d.ts.map +1 -1
  82. package/types/components/DatePicker/SingleDate/SingleDate.d.ts.map +1 -1
  83. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts +12 -2
  84. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts.map +1 -1
  85. package/types/components/DatePicker/hooks/useDatePicker.d.ts +2 -3
  86. package/types/components/DatePicker/hooks/useDatePicker.d.ts.map +1 -1
  87. package/types/components/DatePicker/hooks/useKeyboardNavigation.d.ts +3 -1
  88. package/types/components/DatePicker/hooks/useKeyboardNavigation.d.ts.map +1 -1
  89. package/types/components/DatePicker/utils/dateHelper.d.ts +10 -0
  90. package/types/components/DatePicker/utils/dateHelper.d.ts.map +1 -1
  91. package/types/components/Popover/Popover.types.d.ts +1 -1
  92. package/types/examples/plasma_b2c/components/Badge/Badge.config.d.ts +0 -1
  93. package/types/examples/plasma_b2c/components/Badge/Badge.config.d.ts.map +1 -1
  94. package/types/examples/plasma_b2c/components/Badge/Badge.d.ts +0 -1
  95. package/types/examples/plasma_b2c/components/Badge/Badge.d.ts.map +1 -1
  96. package/types/examples/plasma_b2c/components/DatePicker/DatePicker.d.ts +4 -4
  97. package/types/examples/plasma_web/components/Badge/Badge.config.d.ts +0 -1
  98. package/types/examples/plasma_web/components/Badge/Badge.config.d.ts.map +1 -1
  99. package/types/examples/plasma_web/components/Badge/Badge.d.ts +0 -1
  100. package/types/examples/plasma_web/components/Badge/Badge.d.ts.map +1 -1
  101. package/types/examples/plasma_web/components/DatePicker/DatePicker.d.ts +4 -4
@@ -4,13 +4,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var DatePicker_tokens = require('../DatePicker.tokens.js');
6
6
  var dateHelper = require('../utils/dateHelper.js');
7
- var datejs = require('../../../utils/datejs.js');
8
7
 
9
8
  var useDatePicker = function useDatePicker(_ref) {
10
9
  var currentValue = _ref.currentValue,
11
10
  setInputValue = _ref.setInputValue,
12
11
  setCalendarValue = _ref.setCalendarValue,
13
- setIsInnerOpen = _ref.setIsInnerOpen,
14
12
  dateFormatDelimiter = _ref.dateFormatDelimiter,
15
13
  format = _ref.format,
16
14
  _ref$lang = _ref.lang,
@@ -20,24 +18,12 @@ var useDatePicker = function useDatePicker(_ref) {
20
18
  maskWithFormat = _ref.maskWithFormat,
21
19
  valueError = _ref.valueError,
22
20
  valueSuccess = _ref.valueSuccess,
23
- inputRef = _ref.inputRef,
24
21
  name = _ref.name,
25
- onToggle = _ref.onToggle,
26
22
  onChangeValue = _ref.onChangeValue,
27
23
  onCommitDate = _ref.onCommitDate,
28
24
  onChange = _ref.onChange;
29
25
  var datePickerErrorClass = valueError ? DatePicker_tokens.classes.datePickerError : undefined;
30
26
  var datePickerSuccessClass = valueSuccess ? DatePicker_tokens.classes.datePickerSuccess : undefined;
31
- var handleToggle = function handleToggle(opened, event) {
32
- if (disabled || readOnly) {
33
- return;
34
- }
35
- var isCalendarOpen = event.target === (inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) ? true : opened;
36
- if (onToggle) {
37
- return onToggle(isCalendarOpen, event);
38
- }
39
- setIsInnerOpen(isCalendarOpen);
40
- };
41
27
  var handleChangeValue = function handleChangeValue(event) {
42
28
  if (disabled || readOnly) {
43
29
  return;
@@ -60,24 +46,14 @@ var useDatePicker = function useDatePicker(_ref) {
60
46
  });
61
47
  return;
62
48
  }
63
-
64
- /**
65
- * NOTE: если в формате даты есть месяц в полном названии или сокращенном,
66
- * нужно дополнительно проводить валидацию на полноту введенной даты.
67
- * Иначе dayjs циклически будет пытаться отформатировать некорректную дату.
68
- */
69
- var hasMonthFullName = /M{3,4}/g.test(format);
70
- var isValidMonth;
71
- var isLengthEqual;
72
- if (hasMonthFullName) {
73
- datejs.customDayjs.locale(lang);
74
- var firstIndexOfMonth = format.indexOf('M');
75
- var lastIndexOfMonth = newValue.indexOf(dateFormatDelimiter(), firstIndexOfMonth);
76
- var fullMonthName = !lastIndexOfMonth ? newValue.slice(firstIndexOfMonth) : newValue.slice(firstIndexOfMonth, lastIndexOfMonth);
77
- var monthFormatting = format.replace(/[^M]/g, '');
78
- isValidMonth = datejs.customDayjs("01 ".concat(fullMonthName, " 1970"), "DD ".concat(monthFormatting, " YYYY"), true).isValid();
79
- isLengthEqual = format.length - monthFormatting.length === newValue.length - fullMonthName.length;
80
- }
49
+ var _validateDateWithFull = dateHelper.validateDateWithFullMonth({
50
+ currentValue: newValue,
51
+ format: format,
52
+ lang: lang
53
+ }),
54
+ hasMonthFullName = _validateDateWithFull.hasMonthFullName,
55
+ isValidMonth = _validateDateWithFull.isValidMonth,
56
+ isLengthEqual = _validateDateWithFull.isLengthEqual;
81
57
  if (!hasMonthFullName && (newValue === null || newValue === void 0 ? void 0 : newValue.length) === (format === null || format === void 0 ? void 0 : format.length) || isValidMonth && isLengthEqual) {
82
58
  setCalendarValue(dateHelper.formatCalendarValue(newValue, format, lang));
83
59
  }
@@ -107,20 +83,18 @@ var useDatePicker = function useDatePicker(_ref) {
107
83
  return onCommitDate === null || onCommitDate === void 0 ? void 0 : onCommitDate('', false, true);
108
84
  }
109
85
  if (isCalendarValue) {
110
- setCalendarValue(dateHelper.formatCalendarValue(date, format, lang));
111
- setInputValue(dateHelper.formatInputValue({
86
+ var _formattedInputValue = dateHelper.formatInputValue({
112
87
  value: date,
113
88
  format: format,
114
89
  lang: lang
115
- }));
90
+ });
91
+ setCalendarValue(dateHelper.formatCalendarValue(date, format, lang));
92
+ setInputValue(_formattedInputValue);
116
93
  onCommitDate === null || onCommitDate === void 0 || onCommitDate(date, false, true, dateInfo);
94
+ onChangeValue === null || onChangeValue === void 0 || onChangeValue(null, _formattedInputValue);
117
95
  onChange === null || onChange === void 0 || onChange({
118
96
  target: {
119
- value: dateHelper.formatInputValue({
120
- value: date,
121
- format: format,
122
- lang: lang
123
- }),
97
+ value: _formattedInputValue,
124
98
  name: name
125
99
  }
126
100
  });
@@ -131,19 +105,18 @@ var useDatePicker = function useDatePicker(_ref) {
131
105
  newDate = _getDateFromFormat.value,
132
106
  isError = _getDateFromFormat.isError,
133
107
  isSuccess = _getDateFromFormat.isSuccess;
134
- setCalendarValue(dateHelper.formatCalendarValue(newDate, format, lang));
135
- setInputValue(dateHelper.formatInputValue({
108
+ var formattedInputValue = dateHelper.formatInputValue({
136
109
  value: newDate,
137
110
  format: format,
138
111
  lang: lang
139
- }));
112
+ });
113
+ setCalendarValue(dateHelper.formatCalendarValue(newDate, format, lang));
114
+ setInputValue(formattedInputValue);
140
115
  onCommitDate === null || onCommitDate === void 0 || onCommitDate(newDate, isError, isSuccess);
116
+ onChangeValue === null || onChangeValue === void 0 || onChangeValue(null, formattedInputValue);
141
117
  onChange === null || onChange === void 0 || onChange({
142
118
  target: {
143
- value: dateHelper.formatInputValue({
144
- value: date,
145
- format: format
146
- }),
119
+ value: formattedInputValue,
147
120
  name: name
148
121
  }
149
122
  });
@@ -151,7 +124,6 @@ var useDatePicker = function useDatePicker(_ref) {
151
124
  return {
152
125
  datePickerErrorClass: datePickerErrorClass,
153
126
  datePickerSuccessClass: datePickerSuccessClass,
154
- handleToggle: handleToggle,
155
127
  handleChangeValue: handleChangeValue,
156
128
  handleCommitDate: handleCommitDate
157
129
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useDatePicker.js","sources":["../../../../src/components/DatePicker/hooks/useDatePicker.ts"],"sourcesContent":["import { ChangeEvent, SyntheticEvent } from 'react';\n\nimport { classes } from '../DatePicker.tokens';\nimport type { UseDatePickerProps } from '../DatePickerBase.types';\nimport { formatCalendarValue, formatInputValue, getDateFromFormat, getMaskedDateOnInput } from '../utils/dateHelper';\nimport type { DateInfo } from '../../Calendar/Calendar.types';\nimport { customDayjs } from '../../../utils/datejs';\n\nexport const useDatePicker = ({\n currentValue,\n setInputValue,\n setCalendarValue,\n setIsInnerOpen,\n dateFormatDelimiter,\n format,\n lang = 'ru',\n disabled,\n readOnly,\n maskWithFormat,\n valueError,\n valueSuccess,\n inputRef,\n name,\n onToggle,\n onChangeValue,\n onCommitDate,\n onChange,\n}: UseDatePickerProps) => {\n const datePickerErrorClass = valueError ? classes.datePickerError : undefined;\n const datePickerSuccessClass = valueSuccess ? classes.datePickerSuccess : undefined;\n\n const handleToggle = (opened: boolean, event: SyntheticEvent | Event) => {\n if (disabled || readOnly) {\n return;\n }\n\n const isCalendarOpen = event.target === inputRef?.current ? true : opened;\n\n if (onToggle) {\n return onToggle(isCalendarOpen, event);\n }\n\n setIsInnerOpen(isCalendarOpen);\n };\n\n const handleChangeValue = (event: ChangeEvent<HTMLInputElement>) => {\n if (disabled || readOnly) {\n return;\n }\n const { value } = event.target;\n\n const newValue = maskWithFormat\n ? getMaskedDateOnInput(value, format, dateFormatDelimiter(), currentValue)\n : value;\n\n if (!format) {\n setCalendarValue(formatCalendarValue(newValue));\n setInputValue(formatInputValue({ value: newValue, format, lang }));\n onChangeValue?.(event, newValue);\n onChange?.({ target: { value: newValue, name } });\n\n return;\n }\n\n /**\n * NOTE: если в формате даты есть месяц в полном названии или сокращенном,\n * нужно дополнительно проводить валидацию на полноту введенной даты.\n * Иначе dayjs циклически будет пытаться отформатировать некорректную дату.\n */\n const hasMonthFullName = /M{3,4}/g.test(format);\n let isValidMonth;\n let isLengthEqual;\n\n if (hasMonthFullName) {\n customDayjs.locale(lang);\n\n const firstIndexOfMonth = format.indexOf('M');\n const lastIndexOfMonth = newValue.indexOf(dateFormatDelimiter(), firstIndexOfMonth);\n\n const fullMonthName = !lastIndexOfMonth\n ? newValue.slice(firstIndexOfMonth)\n : newValue.slice(firstIndexOfMonth, lastIndexOfMonth);\n\n const monthFormatting = format.replace(/[^M]/g, '');\n\n isValidMonth = customDayjs(`01 ${fullMonthName} 1970`, `DD ${monthFormatting} YYYY`, true).isValid();\n isLengthEqual = format.length - monthFormatting.length === newValue.length - fullMonthName.length;\n }\n\n if ((!hasMonthFullName && newValue?.length === format?.length) || (isValidMonth && isLengthEqual)) {\n setCalendarValue(formatCalendarValue(newValue, format, lang));\n }\n\n setInputValue(\n formatInputValue({ value: newValue, format, lang, hasMonthFullName, isValidMonth, isLengthEqual }),\n );\n\n onChangeValue?.(event, newValue);\n onChange?.({ target: { value: newValue, name } });\n };\n\n const handleCommitDate = (\n date?: Date | string,\n applyFormat?: boolean,\n isCalendarValue?: boolean,\n dateInfo?: DateInfo,\n ) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (!date) {\n setCalendarValue(undefined);\n setInputValue('');\n\n return onCommitDate?.('', false, true);\n }\n\n if (isCalendarValue) {\n setCalendarValue(formatCalendarValue(date, format, lang));\n setInputValue(formatInputValue({ value: date, format, lang }));\n onCommitDate?.(date, false, true, dateInfo);\n onChange?.({ target: { value: formatInputValue({ value: date, format, lang }), name } });\n\n return;\n }\n\n const formatString = applyFormat ? format : undefined;\n\n const { value: newDate, isError, isSuccess } = getDateFromFormat(date, formatString, lang);\n\n setCalendarValue(formatCalendarValue(newDate, format, lang));\n setInputValue(formatInputValue({ value: newDate, format, lang }));\n\n onCommitDate?.(newDate, isError, isSuccess);\n onChange?.({ target: { value: formatInputValue({ value: date, format }), name } });\n };\n\n return {\n datePickerErrorClass,\n datePickerSuccessClass,\n handleToggle,\n handleChangeValue,\n handleCommitDate,\n };\n};\n"],"names":["useDatePicker","_ref","currentValue","setInputValue","setCalendarValue","setIsInnerOpen","dateFormatDelimiter","format","_ref$lang","lang","disabled","readOnly","maskWithFormat","valueError","valueSuccess","inputRef","name","onToggle","onChangeValue","onCommitDate","onChange","datePickerErrorClass","classes","datePickerError","undefined","datePickerSuccessClass","datePickerSuccess","handleToggle","opened","event","isCalendarOpen","target","current","handleChangeValue","value","newValue","getMaskedDateOnInput","formatCalendarValue","formatInputValue","hasMonthFullName","test","isValidMonth","isLengthEqual","customDayjs","locale","firstIndexOfMonth","indexOf","lastIndexOfMonth","fullMonthName","slice","monthFormatting","replace","concat","isValid","length","handleCommitDate","date","applyFormat","isCalendarValue","dateInfo","formatString","_getDateFromFormat","getDateFromFormat","newDate","isError","isSuccess"],"mappings":"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"}
1
+ {"version":3,"file":"useDatePicker.js","sources":["../../../../src/components/DatePicker/hooks/useDatePicker.ts"],"sourcesContent":["import { ChangeEvent } from 'react';\n\nimport { classes } from '../DatePicker.tokens';\nimport type { UseDatePickerProps } from '../DatePickerBase.types';\nimport {\n formatCalendarValue,\n formatInputValue,\n getDateFromFormat,\n getMaskedDateOnInput,\n validateDateWithFullMonth,\n} from '../utils/dateHelper';\nimport type { DateInfo } from '../../Calendar/Calendar.types';\n\nexport const useDatePicker = ({\n currentValue,\n setInputValue,\n setCalendarValue,\n dateFormatDelimiter,\n format,\n lang = 'ru',\n disabled,\n readOnly,\n maskWithFormat,\n valueError,\n valueSuccess,\n name,\n onChangeValue,\n onCommitDate,\n onChange,\n}: UseDatePickerProps) => {\n const datePickerErrorClass = valueError ? classes.datePickerError : undefined;\n const datePickerSuccessClass = valueSuccess ? classes.datePickerSuccess : undefined;\n\n const handleChangeValue = (event: ChangeEvent<HTMLInputElement>) => {\n if (disabled || readOnly) {\n return;\n }\n const { value } = event.target;\n\n const newValue = maskWithFormat\n ? getMaskedDateOnInput(value, format, dateFormatDelimiter(), currentValue)\n : value;\n\n if (!format) {\n setCalendarValue(formatCalendarValue(newValue));\n setInputValue(formatInputValue({ value: newValue, format, lang }));\n onChangeValue?.(event, newValue);\n onChange?.({ target: { value: newValue, name } });\n\n return;\n }\n\n const { hasMonthFullName, isValidMonth, isLengthEqual } = validateDateWithFullMonth({\n currentValue: newValue,\n format,\n lang,\n });\n\n if ((!hasMonthFullName && newValue?.length === format?.length) || (isValidMonth && isLengthEqual)) {\n setCalendarValue(formatCalendarValue(newValue, format, lang));\n }\n\n setInputValue(\n formatInputValue({ value: newValue, format, lang, hasMonthFullName, isValidMonth, isLengthEqual }),\n );\n\n onChangeValue?.(event, newValue);\n onChange?.({ target: { value: newValue, name } });\n };\n\n const handleCommitDate = (\n date?: Date | string,\n applyFormat?: boolean,\n isCalendarValue?: boolean,\n dateInfo?: DateInfo,\n ) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (!date) {\n setCalendarValue(undefined);\n setInputValue('');\n\n return onCommitDate?.('', false, true);\n }\n\n if (isCalendarValue) {\n const formattedInputValue = formatInputValue({ value: date, format, lang });\n\n setCalendarValue(formatCalendarValue(date, format, lang));\n setInputValue(formattedInputValue);\n\n onCommitDate?.(date, false, true, dateInfo);\n onChangeValue?.(null, formattedInputValue);\n onChange?.({ target: { value: formattedInputValue, name } });\n\n return;\n }\n\n const formatString = applyFormat ? format : undefined;\n\n const { value: newDate, isError, isSuccess } = getDateFromFormat(date, formatString, lang);\n const formattedInputValue = formatInputValue({ value: newDate, format, lang });\n\n setCalendarValue(formatCalendarValue(newDate, format, lang));\n setInputValue(formattedInputValue);\n\n onCommitDate?.(newDate, isError, isSuccess);\n onChangeValue?.(null, formattedInputValue);\n onChange?.({ target: { value: formattedInputValue, name } });\n };\n\n return {\n datePickerErrorClass,\n datePickerSuccessClass,\n handleChangeValue,\n handleCommitDate,\n };\n};\n"],"names":["useDatePicker","_ref","currentValue","setInputValue","setCalendarValue","dateFormatDelimiter","format","_ref$lang","lang","disabled","readOnly","maskWithFormat","valueError","valueSuccess","name","onChangeValue","onCommitDate","onChange","datePickerErrorClass","classes","datePickerError","undefined","datePickerSuccessClass","datePickerSuccess","handleChangeValue","event","value","target","newValue","getMaskedDateOnInput","formatCalendarValue","formatInputValue","_validateDateWithFull","validateDateWithFullMonth","hasMonthFullName","isValidMonth","isLengthEqual","length","handleCommitDate","date","applyFormat","isCalendarValue","dateInfo","formattedInputValue","formatString","_getDateFromFormat","getDateFromFormat","newDate","isError","isSuccess"],"mappings":"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"}
@@ -3,10 +3,12 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var keys = {
6
- Space: 'Space'
6
+ Space: 'Space',
7
+ Escape: 'Escape'
7
8
  };
8
9
  var useKeyNavigation = function useKeyNavigation(_ref) {
9
10
  var isCalendarOpen = _ref.isCalendarOpen,
11
+ closeOnEsc = _ref.closeOnEsc,
10
12
  onToggle = _ref.onToggle;
11
13
  var onKeyDown = function onKeyDown(event) {
12
14
  switch (event.code) {
@@ -18,6 +20,14 @@ var useKeyNavigation = function useKeyNavigation(_ref) {
18
20
  }
19
21
  break;
20
22
  }
23
+ case keys.Escape:
24
+ {
25
+ if (isCalendarOpen && closeOnEsc) {
26
+ event.preventDefault();
27
+ onToggle(false, event);
28
+ }
29
+ break;
30
+ }
21
31
  }
22
32
  };
23
33
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardNavigation.js","sources":["../../../../src/components/DatePicker/hooks/useKeyboardNavigation.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEvent, SyntheticEvent } from 'react';\n\ninterface Props {\n isCalendarOpen: boolean;\n onToggle: (isOpen: boolean, event: SyntheticEvent | Event) => void;\n}\n\nexport const keys = {\n Space: 'Space',\n};\n\nexport const useKeyNavigation = ({ isCalendarOpen, onToggle }: Props) => {\n const onKeyDown = (event: ChangeEvent<HTMLInputElement> & KeyboardEvent<HTMLInputElement>) => {\n switch (event.code) {\n case keys.Space: {\n if (!isCalendarOpen) {\n event.preventDefault();\n onToggle(true, event);\n }\n break;\n }\n\n default: {\n break;\n }\n }\n };\n\n return { onKeyDown };\n};\n"],"names":["keys","Space","useKeyNavigation","_ref","isCalendarOpen","onToggle","onKeyDown","event","code","preventDefault"],"mappings":";;;;AAOO,IAAMA,IAAI,GAAG;AAChBC,EAAAA,KAAK,EAAE,OAAA;AACX,EAAC;IAEYC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAA4C;AAAA,EAAA,IAAtCC,cAAc,GAAAD,IAAA,CAAdC,cAAc;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ,CAAA;AACvD,EAAA,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAIC,KAAsE,EAAK;IAC1F,QAAQA,KAAK,CAACC,IAAI;MACd,KAAKR,IAAI,CAACC,KAAK;AAAE,QAAA;UACb,IAAI,CAACG,cAAc,EAAE;YACjBG,KAAK,CAACE,cAAc,EAAE,CAAA;AACtBJ,YAAAA,QAAQ,CAAC,IAAI,EAAEE,KAAK,CAAC,CAAA;AACzB,WAAA;AACA,UAAA,MAAA;AACJ,SAAA;AAKJ,KAAA;GACH,CAAA;EAED,OAAO;AAAED,IAAAA,SAAS,EAATA,SAAAA;GAAW,CAAA;AACxB;;;;;"}
1
+ {"version":3,"file":"useKeyboardNavigation.js","sources":["../../../../src/components/DatePicker/hooks/useKeyboardNavigation.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEvent, SyntheticEvent } from 'react';\n\ninterface Props {\n isCalendarOpen: boolean;\n closeOnEsc: boolean;\n onToggle: (isOpen: boolean, event: SyntheticEvent | Event) => void;\n}\n\nexport const keys = {\n Space: 'Space',\n Escape: 'Escape',\n};\n\nexport const useKeyNavigation = ({ isCalendarOpen, closeOnEsc, onToggle }: Props) => {\n const onKeyDown = (event: ChangeEvent<HTMLInputElement> & KeyboardEvent<HTMLInputElement>) => {\n switch (event.code) {\n case keys.Space: {\n if (!isCalendarOpen) {\n event.preventDefault();\n onToggle(true, event);\n }\n break;\n }\n case keys.Escape: {\n if (isCalendarOpen && closeOnEsc) {\n event.preventDefault();\n onToggle(false, event);\n }\n break;\n }\n\n default: {\n break;\n }\n }\n };\n\n return { onKeyDown };\n};\n"],"names":["keys","Space","Escape","useKeyNavigation","_ref","isCalendarOpen","closeOnEsc","onToggle","onKeyDown","event","code","preventDefault"],"mappings":";;;;AAQO,IAAMA,IAAI,GAAG;AAChBC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,MAAM,EAAE,QAAA;AACZ,EAAC;IAEYC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAAwD;AAAA,EAAA,IAAlDC,cAAc,GAAAD,IAAA,CAAdC,cAAc;IAAEC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IAAEC,QAAQ,GAAAH,IAAA,CAARG,QAAQ,CAAA;AACnE,EAAA,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAIC,KAAsE,EAAK;IAC1F,QAAQA,KAAK,CAACC,IAAI;MACd,KAAKV,IAAI,CAACC,KAAK;AAAE,QAAA;UACb,IAAI,CAACI,cAAc,EAAE;YACjBI,KAAK,CAACE,cAAc,EAAE,CAAA;AACtBJ,YAAAA,QAAQ,CAAC,IAAI,EAAEE,KAAK,CAAC,CAAA;AACzB,WAAA;AACA,UAAA,MAAA;AACJ,SAAA;MACA,KAAKT,IAAI,CAACE,MAAM;AAAE,QAAA;UACd,IAAIG,cAAc,IAAIC,UAAU,EAAE;YAC9BG,KAAK,CAACE,cAAc,EAAE,CAAA;AACtBJ,YAAAA,QAAQ,CAAC,KAAK,EAAEE,KAAK,CAAC,CAAA;AAC1B,WAAA;AACA,UAAA,MAAA;AACJ,SAAA;AAKJ,KAAA;GACH,CAAA;EAED,OAAO;AAAED,IAAAA,SAAS,EAATA,SAAAA;GAAW,CAAA;AACxB;;;;;"}
@@ -84,10 +84,41 @@ var getMaskedDateOnInput = function getMaskedDateOnInput(value, format, delimite
84
84
  }
85
85
  return value;
86
86
  };
87
+ var validateDateWithFullMonth = function validateDateWithFullMonth(_ref2) {
88
+ var currentValue = _ref2.currentValue,
89
+ format = _ref2.format,
90
+ lang = _ref2.lang;
91
+ /**
92
+ * NOTE: если в формате даты есть месяц в полном названии или сокращенном,
93
+ * нужно дополнительно проводить валидацию на полноту введенной даты.
94
+ * Иначе dayjs циклически будет пытаться отформатировать некорректную дату.
95
+ */
96
+ var hasMonthFullName = /M{3,4}/g.test(format);
97
+ if (!hasMonthFullName) {
98
+ return {
99
+ hasMonthFullName: hasMonthFullName,
100
+ isValidMonth: false,
101
+ isLengthEqual: false
102
+ };
103
+ }
104
+ datejs.customDayjs.locale(lang);
105
+ var firstIndexOfMonth = format.indexOf('M');
106
+ var lastIndexOfMonth = currentValue.indexOf(getDateFormatDelimiter(format), firstIndexOfMonth);
107
+ var fullMonthName = !lastIndexOfMonth ? currentValue.slice(firstIndexOfMonth) : currentValue.slice(firstIndexOfMonth, lastIndexOfMonth);
108
+ var monthFormatting = format.replace(/[^M]/g, '');
109
+ var isValidMonth = datejs.customDayjs("01 ".concat(fullMonthName, " 1970"), "DD ".concat(monthFormatting, " YYYY"), true).isValid();
110
+ var isLengthEqual = format.length - monthFormatting.length === currentValue.length - fullMonthName.length;
111
+ return {
112
+ hasMonthFullName: hasMonthFullName,
113
+ isValidMonth: isValidMonth,
114
+ isLengthEqual: isLengthEqual
115
+ };
116
+ };
87
117
 
88
118
  exports.formatCalendarValue = formatCalendarValue;
89
119
  exports.formatInputValue = formatInputValue;
90
120
  exports.getDateFormatDelimiter = getDateFormatDelimiter;
91
121
  exports.getDateFromFormat = getDateFromFormat;
92
122
  exports.getMaskedDateOnInput = getMaskedDateOnInput;
123
+ exports.validateDateWithFullMonth = validateDateWithFullMonth;
93
124
  //# sourceMappingURL=dateHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateHelper.js","sources":["../../../../src/components/DatePicker/utils/dateHelper.ts"],"sourcesContent":["import { customDayjs } from '../../../utils/datejs';\n\nexport type Langs = 'ru' | 'en';\n\ntype FormatInputValueArgs = {\n value?: Date | string;\n format?: string;\n lang?: Langs;\n hasMonthFullName?: boolean;\n isValidMonth?: boolean;\n isLengthEqual?: boolean;\n};\n\nexport const formatInputValue = ({\n value,\n format,\n lang,\n hasMonthFullName,\n isValidMonth,\n isLengthEqual,\n}: FormatInputValueArgs) => {\n if (!value || !lang) {\n return '';\n }\n\n if (hasMonthFullName && (!isValidMonth || !isLengthEqual)) {\n return String(value);\n }\n\n if (format && customDayjs(value, format, true).isValid()) {\n return customDayjs(value, format).locale(lang).format(format);\n }\n\n if (format && String(value).length >= 10 && String(new Date(value)) !== 'Invalid Date') {\n return customDayjs(value).locale(lang).format(format);\n }\n\n return String(value);\n};\n\nexport const formatCalendarValue = (value?: Date | string, format?: string, lang?: Langs) => {\n if (!value || !lang) {\n return undefined;\n }\n\n if (format && customDayjs(value, format, true).isValid()) {\n return customDayjs(value, format, true).locale(lang).toDate();\n }\n\n if (String(new Date(value)) !== 'Invalid Date') {\n return customDayjs(value).locale(lang).toDate();\n }\n\n return undefined;\n};\n\nexport const getDateFromFormat = (value: Date | string, format?: string, lang?: Langs) => {\n if (format && customDayjs(value, format, true).isValid() && lang) {\n return { value: customDayjs(value, format, true).locale(lang).toDate(), isError: false, isSuccess: true };\n }\n\n if (!format && String(new Date(value)) !== 'Invalid Date' && lang) {\n return { value: customDayjs(value).locale(lang).toDate(), isError: false, isSuccess: true };\n }\n\n return { value, isError: true, isSuccess: false };\n};\n\nexport const getDateFormatDelimiter = (format?: string) => {\n if (!format) {\n return '';\n }\n\n const delimiter = format.match(/[^a-zA-Z0-9]/)?.[0];\n\n return delimiter ?? '';\n};\n\nexport const getMaskedDateOnInput = (value?: string, format?: string, delimiter?: string, prevValue?: string) => {\n if (!value) {\n return '';\n }\n\n if (!format || !delimiter || /M{3,4}/g.test(format)) {\n return value;\n }\n\n if (value.length >= format.length) {\n return value.slice(0, format.length);\n }\n\n if (prevValue && value.length < prevValue.length && prevValue?.[value.length] === delimiter) {\n return value.slice(0, -1);\n }\n\n if (format?.[value.length] === delimiter) {\n return value + delimiter;\n }\n\n return value;\n};\n"],"names":["formatInputValue","_ref","value","format","lang","hasMonthFullName","isValidMonth","isLengthEqual","String","customDayjs","isValid","locale","length","Date","formatCalendarValue","undefined","toDate","getDateFromFormat","isError","isSuccess","getDateFormatDelimiter","_format$match","delimiter","match","getMaskedDateOnInput","prevValue","test","slice"],"mappings":"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"}
1
+ {"version":3,"file":"dateHelper.js","sources":["../../../../src/components/DatePicker/utils/dateHelper.ts"],"sourcesContent":["import { customDayjs } from '../../../utils/datejs';\nimport { ValidateDateArgs } from '../DatePickerBase.types';\n\nexport type Langs = 'ru' | 'en';\n\ntype FormatInputValueArgs = {\n value?: Date | string;\n format?: string;\n lang?: Langs;\n hasMonthFullName?: boolean;\n isValidMonth?: boolean;\n isLengthEqual?: boolean;\n};\n\nexport const formatInputValue = ({\n value,\n format,\n lang,\n hasMonthFullName,\n isValidMonth,\n isLengthEqual,\n}: FormatInputValueArgs) => {\n if (!value || !lang) {\n return '';\n }\n\n if (hasMonthFullName && (!isValidMonth || !isLengthEqual)) {\n return String(value);\n }\n\n if (format && customDayjs(value, format, true).isValid()) {\n return customDayjs(value, format).locale(lang).format(format);\n }\n\n if (format && String(value).length >= 10 && String(new Date(value)) !== 'Invalid Date') {\n return customDayjs(value).locale(lang).format(format);\n }\n\n return String(value);\n};\n\nexport const formatCalendarValue = (value?: Date | string, format?: string, lang?: Langs) => {\n if (!value || !lang) {\n return undefined;\n }\n\n if (format && customDayjs(value, format, true).isValid()) {\n return customDayjs(value, format, true).locale(lang).toDate();\n }\n\n if (String(new Date(value)) !== 'Invalid Date') {\n return customDayjs(value).locale(lang).toDate();\n }\n\n return undefined;\n};\n\nexport const getDateFromFormat = (value: Date | string, format?: string, lang?: Langs) => {\n if (format && customDayjs(value, format, true).isValid() && lang) {\n return { value: customDayjs(value, format, true).locale(lang).toDate(), isError: false, isSuccess: true };\n }\n\n if (!format && String(new Date(value)) !== 'Invalid Date' && lang) {\n return { value: customDayjs(value).locale(lang).toDate(), isError: false, isSuccess: true };\n }\n\n return { value, isError: true, isSuccess: false };\n};\n\nexport const getDateFormatDelimiter = (format?: string) => {\n if (!format) {\n return '';\n }\n\n const delimiter = format.match(/[^a-zA-Z0-9]/)?.[0];\n\n return delimiter ?? '';\n};\n\nexport const getMaskedDateOnInput = (value?: string, format?: string, delimiter?: string, prevValue?: string) => {\n if (!value) {\n return '';\n }\n\n if (!format || !delimiter || /M{3,4}/g.test(format)) {\n return value;\n }\n\n if (value.length >= format.length) {\n return value.slice(0, format.length);\n }\n\n if (prevValue && value.length < prevValue.length && prevValue?.[value.length] === delimiter) {\n return value.slice(0, -1);\n }\n\n if (format?.[value.length] === delimiter) {\n return value + delimiter;\n }\n\n return value;\n};\n\nexport const validateDateWithFullMonth = ({ currentValue, format, lang }: ValidateDateArgs) => {\n /**\n * NOTE: если в формате даты есть месяц в полном названии или сокращенном,\n * нужно дополнительно проводить валидацию на полноту введенной даты.\n * Иначе dayjs циклически будет пытаться отформатировать некорректную дату.\n */\n const hasMonthFullName = /M{3,4}/g.test(format);\n\n if (!hasMonthFullName) {\n return {\n hasMonthFullName,\n isValidMonth: false,\n isLengthEqual: false,\n };\n }\n\n customDayjs.locale(lang);\n\n const firstIndexOfMonth = format.indexOf('M');\n const lastIndexOfMonth = currentValue.indexOf(getDateFormatDelimiter(format), firstIndexOfMonth);\n\n const fullMonthName = !lastIndexOfMonth\n ? currentValue.slice(firstIndexOfMonth)\n : currentValue.slice(firstIndexOfMonth, lastIndexOfMonth);\n\n const monthFormatting = format.replace(/[^M]/g, '');\n\n const isValidMonth = customDayjs(`01 ${fullMonthName} 1970`, `DD ${monthFormatting} YYYY`, true).isValid();\n const isLengthEqual = format.length - monthFormatting.length === currentValue.length - fullMonthName.length;\n\n return {\n hasMonthFullName,\n isValidMonth,\n isLengthEqual,\n };\n};\n"],"names":["formatInputValue","_ref","value","format","lang","hasMonthFullName","isValidMonth","isLengthEqual","String","customDayjs","isValid","locale","length","Date","formatCalendarValue","undefined","toDate","getDateFromFormat","isError","isSuccess","getDateFormatDelimiter","_format$match","delimiter","match","getMaskedDateOnInput","prevValue","test","slice","validateDateWithFullMonth","_ref2","currentValue","firstIndexOfMonth","indexOf","lastIndexOfMonth","fullMonthName","monthFormatting","replace","concat"],"mappings":"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"}
@@ -14,7 +14,7 @@ import { PropsTable, Description } from '@site/src/components';
14
14
  ### Размер badge
15
15
  Размер задается с помощью свойства `size`.
16
16
 
17
- Возможные значения свойства: `l`, `m`, `s`, `xs`.
17
+ Возможные значения свойства: `"l"`, `"m"`, `"s"`.
18
18
 
19
19
  ```tsx live
20
20
  import React from 'react';
@@ -26,7 +26,6 @@ export function App() {
26
26
  <Badge text="Бейдж" size="l" />
27
27
  <Badge text="Бейдж" size="m" />
28
28
  <Badge text="Бейдж" size="s" />
29
- <Badge text="Бейдж" size="xs" />
30
29
  </div>
31
30
  );
32
31
  }
@@ -45,7 +44,6 @@ export function App() {
45
44
  <Badge text="Бейдж" size="l" pilled />
46
45
  <Badge text="Бейдж" size="m" pilled />
47
46
  <Badge text="Бейдж" size="s" pilled />
48
- <Badge text="Бейдж" size="xs" pilled />
49
47
  </div>
50
48
  );
51
49
  }
@@ -12,13 +12,14 @@ var _useDatePicker3 = /*#__PURE__*/require("../hooks/useDatePicker");
12
12
  var _DatePicker = /*#__PURE__*/require("../DatePicker.tokens");
13
13
  var _useKeyboardNavigation = /*#__PURE__*/require("../hooks/useKeyboardNavigation");
14
14
  var _DatePickerBase = /*#__PURE__*/require("../DatePickerBase.styles");
15
+ var _utils2 = /*#__PURE__*/require("../../Calendar/utils");
15
16
  var _base = /*#__PURE__*/require("./variations/_size/base");
16
17
  var _base2 = /*#__PURE__*/require("./variations/_view/base");
17
18
  var _base3 = /*#__PURE__*/require("./variations/_disabled/base");
18
19
  var _base4 = /*#__PURE__*/require("./variations/_readonly/base");
19
20
  var _RangeDate = /*#__PURE__*/require("./RangeDate.styles");
20
21
  var _RangeDatePopover = /*#__PURE__*/require("./RangeDatePopover/RangeDatePopover");
21
- var _excluded = ["className", "isDoubleCalendar", "opened", "label", "leftHelper", "contentLeft", "contentRight", "view", "size", "readOnly", "disabled", "name", "dividerVariant", "dividerIcon", "defaultFirstDate", "defaultSecondDate", "firstValueError", "secondValueError", "firstValueSuccess", "secondValueSuccess", "firstPlaceholder", "secondPlaceholder", "firstTextfieldContentLeft", "firstTextfieldContentRight", "secondTextfieldContentLeft", "secondTextfieldContentRight", "firstTextfieldTextBefore", "secondTextfieldTextBefore", "firstTextfieldTextAfter", "secondTextfieldTextAfter", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "placement", "closeOnOverlayClick", "closeOnEsc", "offset", "onToggle", "onChange", "onChangeFirstValue", "onChangeSecondValue", "onCommitFirstDate", "onCommitSecondDate", "onFocusFirstTextfield", "onFocusSecondTextfield", "onBlurFirstTextfield", "onBlurSecondTextfield"];
22
+ var _excluded = ["className", "isDoubleCalendar", "opened", "label", "leftHelper", "contentLeft", "contentRight", "view", "size", "readOnly", "disabled", "name", "dividerVariant", "dividerIcon", "defaultFirstDate", "defaultSecondDate", "firstValueError", "secondValueError", "firstValueSuccess", "secondValueSuccess", "firstPlaceholder", "secondPlaceholder", "firstTextfieldContentLeft", "firstTextfieldContentRight", "secondTextfieldContentLeft", "secondTextfieldContentRight", "firstTextfieldTextBefore", "secondTextfieldTextBefore", "firstTextfieldTextAfter", "secondTextfieldTextAfter", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "frame", "usePortal", "placement", "closeOnOverlayClick", "closeOnEsc", "offset", "onToggle", "onChange", "onChangeFirstValue", "onChangeSecondValue", "onCommitFirstDate", "onCommitSecondDate", "onFocusFirstTextfield", "onFocusSecondTextfield", "onBlurFirstTextfield", "onBlurSecondTextfield"];
22
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
23
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
24
25
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -89,6 +90,10 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
89
90
  disabledYearList = _ref.disabledYearList,
90
91
  _ref$type = _ref.type,
91
92
  type = _ref$type === void 0 ? 'Days' : _ref$type,
93
+ _ref$frame = _ref.frame,
94
+ frame = _ref$frame === void 0 ? 'document' : _ref$frame,
95
+ _ref$usePortal = _ref.usePortal,
96
+ usePortal = _ref$usePortal === void 0 ? false : _ref$usePortal,
92
97
  _ref$placement = _ref.placement,
93
98
  placement = _ref$placement === void 0 ? ['top', 'bottom'] : _ref$placement,
94
99
  _ref$closeOnOverlayCl = _ref.closeOnOverlayClick,
@@ -104,8 +109,8 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
104
109
  onCommitSecondDate = _ref.onCommitSecondDate,
105
110
  onFocusFirstTextfield = _ref.onFocusFirstTextfield,
106
111
  onFocusSecondTextfield = _ref.onFocusSecondTextfield,
107
- onBlurFirstTextfield = _ref.onBlurFirstTextfield,
108
- onBlurSecondTextfield = _ref.onBlurSecondTextfield,
112
+ _onBlurFirstTextfield = _ref.onBlurFirstTextfield,
113
+ _onBlurSecondTextfield = _ref.onBlurSecondTextfield,
109
114
  rest = _objectWithoutProperties(_ref, _excluded);
110
115
  var rangeRef = ref && 'current' in ref ? ref : /*#__PURE__*/(0, _react.createRef)();
111
116
  var rootRef = (0, _react.useRef)(null);
@@ -176,7 +181,6 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
176
181
  currentValue: inputFirstValue,
177
182
  setInputValue: setFirstInputValue,
178
183
  setCalendarValue: setCalendarFirstValue,
179
- setIsInnerOpen: setIsInnerOpen,
180
184
  dateFormatDelimiter: dateFormatDelimiter,
181
185
  format: format,
182
186
  lang: lang,
@@ -185,7 +189,6 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
185
189
  maskWithFormat: maskWithFormat,
186
190
  valueError: firstValueError,
187
191
  valueSuccess: firstValueSuccess,
188
- inputRef: firstInputRef,
189
192
  name: name,
190
193
  onChangeValue: onChangeFirstValue,
191
194
  onCommitDate: onCommitFirstDate
@@ -196,7 +199,6 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
196
199
  currentValue: inputSecondValue,
197
200
  setInputValue: setSecondInputValue,
198
201
  setCalendarValue: setCalendarSecondValue,
199
- setIsInnerOpen: setIsInnerOpen,
200
202
  dateFormatDelimiter: dateFormatDelimiter,
201
203
  format: format,
202
204
  lang: lang,
@@ -205,7 +207,6 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
205
207
  maskWithFormat: maskWithFormat,
206
208
  valueError: secondValueError,
207
209
  valueSuccess: secondValueSuccess,
208
- inputRef: secondInputRef,
209
210
  onChangeValue: onChangeSecondValue,
210
211
  onCommitDate: onCommitSecondDate
211
212
  }),
@@ -216,15 +217,59 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
216
217
  if (disabled || readOnly) {
217
218
  return;
218
219
  }
219
- var isCalendarOpen = firstInputRef !== null && firstInputRef !== void 0 && (_firstInputRef$curren = firstInputRef.current) !== null && _firstInputRef$curren !== void 0 && _firstInputRef$curren.contains(event.target || null) || secondInputRef !== null && secondInputRef !== void 0 && (_secondInputRef$curre = secondInputRef.current) !== null && _secondInputRef$curre !== void 0 && _secondInputRef$curre.contains(event.target || null) ? true : opened;
220
+ var isCalendarOpen = (firstInputRef !== null && firstInputRef !== void 0 && (_firstInputRef$curren = firstInputRef.current) !== null && _firstInputRef$curren !== void 0 && _firstInputRef$curren.contains(event.target || null) || secondInputRef !== null && secondInputRef !== void 0 && (_secondInputRef$curre = secondInputRef.current) !== null && _secondInputRef$curre !== void 0 && _secondInputRef$curre.contains(event.target || null)) && event.code !== _useKeyboardNavigation.keys.Escape ? true : opened;
221
+ if (!isCalendarOpen) {
222
+ if (calendarFirstValue && !calendarSecondValue) {
223
+ var _secondInputRef$curre2;
224
+ secondInputRef === null || secondInputRef === void 0 || (_secondInputRef$curre2 = secondInputRef.current) === null || _secondInputRef$curre2 === void 0 || _secondInputRef$curre2.focus();
225
+ }
226
+ if (calendarSecondValue || !calendarFirstValue) {
227
+ var _firstInputRef$curren2;
228
+ firstInputRef === null || firstInputRef === void 0 || (_firstInputRef$curren2 = firstInputRef.current) === null || _firstInputRef$curren2 === void 0 || _firstInputRef$curren2.focus();
229
+ }
230
+ }
220
231
  if (onToggle) {
221
232
  return onToggle(isCalendarOpen, event);
222
233
  }
223
234
  setIsInnerOpen(isCalendarOpen);
224
235
  };
236
+ var handleBlur = function handleBlur(event, outerHandler) {
237
+ if (!inputFirstValue || !inputSecondValue) {
238
+ outerHandler === null || outerHandler === void 0 || outerHandler(event);
239
+ return;
240
+ }
241
+ var _getDateFromFormat = (0, _dateHelper.getDateFromFormat)(inputFirstValue, format, lang),
242
+ firstDate = _getDateFromFormat.value,
243
+ firstIsSuccess = _getDateFromFormat.isSuccess;
244
+ var _getDateFromFormat2 = (0, _dateHelper.getDateFromFormat)(inputSecondValue, format, lang),
245
+ secondDate = _getDateFromFormat2.value,
246
+ secondIsSuccess = _getDateFromFormat2.isSuccess;
247
+ if (!firstIsSuccess || !secondIsSuccess) {
248
+ outerHandler === null || outerHandler === void 0 || outerHandler(event);
249
+ return;
250
+ }
251
+ var _getSortedValues = (0, _utils2.getSortedValues)([new Date(firstDate), new Date(secondDate)]),
252
+ _getSortedValues2 = _slicedToArray(_getSortedValues, 2),
253
+ startValue = _getSortedValues2[0],
254
+ endValue = _getSortedValues2[1];
255
+ setFirstInputValue((0, _dateHelper.formatInputValue)({
256
+ value: startValue,
257
+ format: format,
258
+ lang: lang
259
+ }));
260
+ setSecondInputValue((0, _dateHelper.formatInputValue)({
261
+ value: endValue,
262
+ format: format,
263
+ lang: lang
264
+ }));
265
+ setCalendarFirstValue((0, _dateHelper.formatCalendarValue)(startValue, format, lang));
266
+ setCalendarSecondValue((0, _dateHelper.formatCalendarValue)(endValue, format, lang));
267
+ outerHandler === null || outerHandler === void 0 || outerHandler(event);
268
+ };
225
269
  var _useKeyNavigation = (0, _useKeyboardNavigation.useKeyNavigation)({
226
270
  isCalendarOpen: isInnerOpen,
227
- onToggle: handleToggle
271
+ onToggle: handleToggle,
272
+ closeOnEsc: closeOnEsc
228
273
  }),
229
274
  onKeyDown = _useKeyNavigation.onKeyDown;
230
275
  var RangeComponent = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_RangeDate.StyledRange, {
@@ -270,8 +315,12 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
270
315
  },
271
316
  onFocusFirstTextfield: onFocusFirstTextfield,
272
317
  onFocusSecondTextfield: onFocusSecondTextfield,
273
- onBlurFirstTextfield: onBlurFirstTextfield,
274
- onBlurSecondTextfield: onBlurSecondTextfield,
318
+ onBlurFirstTextfield: function onBlurFirstTextfield(event) {
319
+ return handleBlur(event, _onBlurFirstTextfield);
320
+ },
321
+ onBlurSecondTextfield: function onBlurSecondTextfield(event) {
322
+ return handleBlur(event, _onBlurSecondTextfield);
323
+ },
275
324
  onKeyDown: onKeyDown
276
325
  }));
277
326
  (0, _react.useEffect)(function () {
@@ -336,6 +385,8 @@ var datePickerRangeRoot = exports.datePickerRangeRoot = function datePickerRange
336
385
  disabledYearList: disabledYearList,
337
386
  min: min,
338
387
  max: max,
388
+ frame: frame,
389
+ usePortal: usePortal,
339
390
  placement: placement,
340
391
  closeOnOverlayClick: closeOnOverlayClick,
341
392
  closeOnEsc: closeOnEsc,
@@ -26,6 +26,10 @@ var RangeDatePopover = exports.RangeDatePopover = function RangeDatePopover(_ref
26
26
  disabledQuarterList = _ref.disabledQuarterList,
27
27
  eventYearList = _ref.eventYearList,
28
28
  disabledYearList = _ref.disabledYearList,
29
+ _ref$frame = _ref.frame,
30
+ frame = _ref$frame === void 0 ? 'document' : _ref$frame,
31
+ _ref$usePortal = _ref.usePortal,
32
+ usePortal = _ref$usePortal === void 0 ? false : _ref$usePortal,
29
33
  _ref$placement = _ref.placement,
30
34
  placement = _ref$placement === void 0 ? ['top', 'bottom'] : _ref$placement,
31
35
  _ref$closeOnOverlayCl = _ref.closeOnOverlayClick,
@@ -43,7 +47,8 @@ var RangeDatePopover = exports.RangeDatePopover = function RangeDatePopover(_ref
43
47
  if (isDoubleCalendar) {
44
48
  return /*#__PURE__*/_react["default"].createElement(_RangeDate.StyledPopover, {
45
49
  opened: innerIsOpen,
46
- usePortal: false,
50
+ frame: frame,
51
+ usePortal: usePortal,
47
52
  onToggle: onToggle,
48
53
  offset: offset,
49
54
  placement: (0, _utils.getPlacements)(placement),
@@ -73,7 +78,8 @@ var RangeDatePopover = exports.RangeDatePopover = function RangeDatePopover(_ref
73
78
  }
74
79
  return /*#__PURE__*/_react["default"].createElement(_RangeDate.StyledPopover, {
75
80
  opened: innerIsOpen,
76
- usePortal: false,
81
+ frame: frame,
82
+ usePortal: usePortal,
77
83
  onToggle: onToggle,
78
84
  offset: offset,
79
85
  placement: (0, _utils.getPlacements)(placement),
@@ -17,7 +17,7 @@ var _base2 = /*#__PURE__*/require("./variations/_view/base");
17
17
  var _base3 = /*#__PURE__*/require("./variations/_disabled/base");
18
18
  var _base4 = /*#__PURE__*/require("./variations/_readonly/base");
19
19
  var _SingleDate = /*#__PURE__*/require("./SingleDate.styles");
20
- var _excluded = ["className", "opened", "label", "labelPlacement", "placeholder", "leftHelper", "contentLeft", "contentRight", "textBefore", "textAfter", "view", "size", "readOnly", "disabled", "name", "defaultDate", "valueError", "valueSuccess", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "placement", "closeOnOverlayClick", "offset", "onChangeValue", "onCommitDate", "onToggle", "onFocus", "onBlur", "onChange"];
20
+ var _excluded = ["className", "opened", "label", "labelPlacement", "placeholder", "leftHelper", "contentLeft", "contentRight", "textBefore", "textAfter", "view", "size", "readOnly", "disabled", "name", "defaultDate", "valueError", "valueSuccess", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "frame", "usePortal", "placement", "closeOnOverlayClick", "closeOnEsc", "offset", "onChangeValue", "onCommitDate", "onToggle", "onFocus", "onBlur", "onChange"];
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
22
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
23
23
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -73,10 +73,16 @@ var datePickerRoot = exports.datePickerRoot = function datePickerRoot(Root) {
73
73
  disabledYearList = _ref.disabledYearList,
74
74
  _ref$type = _ref.type,
75
75
  type = _ref$type === void 0 ? 'Days' : _ref$type,
76
+ _ref$frame = _ref.frame,
77
+ frame = _ref$frame === void 0 ? 'document' : _ref$frame,
78
+ _ref$usePortal = _ref.usePortal,
79
+ usePortal = _ref$usePortal === void 0 ? false : _ref$usePortal,
76
80
  _ref$placement = _ref.placement,
77
81
  placement = _ref$placement === void 0 ? ['top', 'bottom'] : _ref$placement,
78
82
  _ref$closeOnOverlayCl = _ref.closeOnOverlayClick,
79
83
  closeOnOverlayClick = _ref$closeOnOverlayCl === void 0 ? true : _ref$closeOnOverlayCl,
84
+ _ref$closeOnEsc = _ref.closeOnEsc,
85
+ closeOnEsc = _ref$closeOnEsc === void 0 ? true : _ref$closeOnEsc,
80
86
  offset = _ref.offset,
81
87
  onChangeValue = _ref.onChangeValue,
82
88
  onCommitDate = _ref.onCommitDate,
@@ -111,7 +117,6 @@ var datePickerRoot = exports.datePickerRoot = function datePickerRoot(Root) {
111
117
  currentValue: inputValue,
112
118
  setInputValue: setInputValue,
113
119
  setCalendarValue: setCalendarValue,
114
- setIsInnerOpen: setIsInnerOpen,
115
120
  dateFormatDelimiter: dateFormatDelimiter,
116
121
  format: format,
117
122
  lang: lang,
@@ -120,21 +125,33 @@ var datePickerRoot = exports.datePickerRoot = function datePickerRoot(Root) {
120
125
  maskWithFormat: maskWithFormat,
121
126
  valueError: valueError,
122
127
  valueSuccess: valueSuccess,
123
- inputRef: inputRef,
124
128
  name: name,
125
- onToggle: onToggle,
126
129
  onChangeValue: onChangeValue,
127
130
  onCommitDate: onCommitDate,
128
131
  onChange: onChange
129
132
  }),
130
133
  datePickerErrorClass = _useDatePicker.datePickerErrorClass,
131
134
  datePickerSuccessClass = _useDatePicker.datePickerSuccessClass,
132
- handleToggle = _useDatePicker.handleToggle,
133
135
  handleChangeValue = _useDatePicker.handleChangeValue,
134
136
  handleCommitDate = _useDatePicker.handleCommitDate;
137
+ var handleToggle = function handleToggle(opened, event) {
138
+ if (disabled || readOnly) {
139
+ return;
140
+ }
141
+ var isCalendarOpen = event.target === (inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) && event.code !== _useKeyboardNavigation.keys.Escape ? true : opened;
142
+ if (!isCalendarOpen && inputValue) {
143
+ var _inputRef$current;
144
+ inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
145
+ }
146
+ if (onToggle) {
147
+ return onToggle(isCalendarOpen, event);
148
+ }
149
+ setIsInnerOpen(isCalendarOpen);
150
+ };
135
151
  var _useKeyNavigation = (0, _useKeyboardNavigation.useKeyNavigation)({
136
152
  isCalendarOpen: isInnerOpen,
137
- onToggle: handleToggle
153
+ onToggle: handleToggle,
154
+ closeOnEsc: closeOnEsc
138
155
  }),
139
156
  onKeyDown = _useKeyNavigation.onKeyDown;
140
157
  var DatePickerInput = /*#__PURE__*/_react["default"].createElement(_SingleDate.StyledInput, _extends({
@@ -190,7 +207,8 @@ var datePickerRoot = exports.datePickerRoot = function datePickerRoot(Root) {
190
207
  ref: ref
191
208
  }, rest), !innerLabelPlacement && label && /*#__PURE__*/_react["default"].createElement(_SingleDate.StyledLabel, null, label), /*#__PURE__*/_react["default"].createElement(_SingleDate.StyledPopover, {
192
209
  opened: isInnerOpen,
193
- usePortal: false,
210
+ usePortal: usePortal,
211
+ frame: frame,
194
212
  onToggle: handleToggle,
195
213
  offset: offset,
196
214
  placement: (0, _utils.getPlacements)(placement),