@salutejs/plasma-new-hope 0.322.0-canary.1939.14642328722.0 → 0.322.0-canary.1941.14638918350.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 (219) hide show
  1. package/cjs/components/Calendar/Calendar.types.js.map +1 -1
  2. package/cjs/components/Calendar/CalendarBase/CalendarBase.js +6 -3
  3. package/cjs/components/Calendar/CalendarBase/CalendarBase.js.map +1 -1
  4. package/cjs/components/Calendar/CalendarDouble/CalendarDouble.js +6 -3
  5. package/cjs/components/Calendar/CalendarDouble/CalendarDouble.js.map +1 -1
  6. package/cjs/components/Calendar/hoc/withRange.js.map +1 -1
  7. package/cjs/components/Calendar/store/reducer.js.map +1 -1
  8. package/cjs/components/Calendar/utils/calendarGridHelper.js.map +1 -1
  9. package/cjs/components/Calendar/utils/calendarRangeHelper.js.map +1 -1
  10. package/cjs/components/DatePicker/DatePicker.tokens.js +1 -2
  11. package/cjs/components/DatePicker/DatePicker.tokens.js.map +1 -1
  12. package/cjs/components/DatePicker/DatePickerBase.styles.js +1 -1
  13. package/cjs/components/DatePicker/DatePickerBase.styles.js.map +1 -1
  14. package/cjs/components/DatePicker/DatePickerBase.styles_1jm7rc0.css +2 -0
  15. package/cjs/components/DatePicker/RangeDate/RangeDate.css +4 -4
  16. package/cjs/components/DatePicker/RangeDate/RangeDate.js +82 -158
  17. package/cjs/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  18. package/cjs/components/DatePicker/RangeDate/RangeDate.styles.js.map +1 -1
  19. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.css +2 -2
  20. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js.map +1 -1
  21. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js +1 -1
  22. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js.map +1 -1
  23. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles_r5ataz.css +2 -0
  24. package/cjs/components/DatePicker/SingleDate/SingleDate.css +2 -2
  25. package/cjs/components/DatePicker/SingleDate/SingleDate.js +33 -68
  26. package/cjs/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  27. package/cjs/components/DatePicker/SingleDate/SingleDate.styles.js.map +1 -1
  28. package/cjs/components/DatePicker/hooks/useDatePicker.js +76 -133
  29. package/cjs/components/DatePicker/hooks/useDatePicker.js.map +1 -1
  30. package/cjs/components/DatePicker/hooks/useKeyboardNavigation.js +0 -9
  31. package/cjs/components/DatePicker/hooks/useKeyboardNavigation.js.map +1 -1
  32. package/cjs/components/DatePicker/utils/dateHelper.js +108 -3
  33. package/cjs/components/DatePicker/utils/dateHelper.js.map +1 -1
  34. package/cjs/index.css +4 -4
  35. package/emotion/cjs/components/Calendar/CalendarBase/CalendarBase.js +6 -3
  36. package/emotion/cjs/components/Calendar/CalendarDouble/CalendarDouble.js +6 -3
  37. package/emotion/cjs/components/CodeField/CodeField.types.js +5 -0
  38. package/emotion/cjs/components/DatePicker/DatePicker.tokens.js +1 -2
  39. package/emotion/cjs/components/DatePicker/DatePickerBase.styles.js +4 -4
  40. package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.js +82 -158
  41. package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.styles.js +4 -4
  42. package/emotion/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js +3 -3
  43. package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.js +33 -68
  44. package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.styles.js +4 -4
  45. package/emotion/cjs/components/DatePicker/hooks/useDatePicker.js +76 -132
  46. package/emotion/cjs/components/DatePicker/hooks/useKeyboardNavigation.js +0 -8
  47. package/emotion/cjs/components/DatePicker/utils/dateHelper.js +103 -3
  48. package/emotion/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.config.js +7 -7
  49. package/emotion/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +19 -20
  50. package/emotion/cjs/examples/plasma_web/components/DatePicker/DatePicker.config.js +7 -7
  51. package/emotion/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +12 -17
  52. package/emotion/es/components/Calendar/CalendarBase/CalendarBase.js +6 -3
  53. package/emotion/es/components/Calendar/CalendarDouble/CalendarDouble.js +6 -3
  54. package/emotion/es/components/CodeField/CodeField.types.js +1 -0
  55. package/emotion/es/components/DatePicker/DatePicker.tokens.js +1 -2
  56. package/emotion/es/components/DatePicker/DatePickerBase.styles.js +4 -4
  57. package/emotion/es/components/DatePicker/RangeDate/RangeDate.js +83 -159
  58. package/emotion/es/components/DatePicker/RangeDate/RangeDate.styles.js +4 -4
  59. package/emotion/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js +3 -3
  60. package/emotion/es/components/DatePicker/SingleDate/SingleDate.js +34 -69
  61. package/emotion/es/components/DatePicker/SingleDate/SingleDate.styles.js +4 -4
  62. package/emotion/es/components/DatePicker/hooks/useDatePicker.js +75 -131
  63. package/emotion/es/components/DatePicker/hooks/useKeyboardNavigation.js +0 -8
  64. package/emotion/es/components/DatePicker/utils/dateHelper.js +102 -2
  65. package/emotion/es/examples/plasma_b2c/components/DatePicker/DatePicker.config.js +7 -7
  66. package/emotion/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +19 -20
  67. package/emotion/es/examples/plasma_web/components/DatePicker/DatePicker.config.js +7 -7
  68. package/emotion/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +12 -17
  69. package/es/components/Calendar/Calendar.types.js.map +1 -1
  70. package/es/components/Calendar/CalendarBase/CalendarBase.js +6 -3
  71. package/es/components/Calendar/CalendarBase/CalendarBase.js.map +1 -1
  72. package/es/components/Calendar/CalendarDouble/CalendarDouble.js +6 -3
  73. package/es/components/Calendar/CalendarDouble/CalendarDouble.js.map +1 -1
  74. package/es/components/Calendar/hoc/withRange.js.map +1 -1
  75. package/es/components/Calendar/store/reducer.js.map +1 -1
  76. package/es/components/Calendar/utils/calendarGridHelper.js.map +1 -1
  77. package/es/components/Calendar/utils/calendarRangeHelper.js.map +1 -1
  78. package/es/components/DatePicker/DatePicker.tokens.js +1 -2
  79. package/es/components/DatePicker/DatePicker.tokens.js.map +1 -1
  80. package/es/components/DatePicker/DatePickerBase.styles.js +1 -1
  81. package/es/components/DatePicker/DatePickerBase.styles.js.map +1 -1
  82. package/es/components/DatePicker/DatePickerBase.styles_1jm7rc0.css +2 -0
  83. package/es/components/DatePicker/RangeDate/RangeDate.css +4 -4
  84. package/es/components/DatePicker/RangeDate/RangeDate.js +84 -160
  85. package/es/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  86. package/es/components/DatePicker/RangeDate/RangeDate.styles.js.map +1 -1
  87. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.css +2 -2
  88. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.js.map +1 -1
  89. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js +1 -1
  90. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js.map +1 -1
  91. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles_r5ataz.css +2 -0
  92. package/es/components/DatePicker/SingleDate/SingleDate.css +2 -2
  93. package/es/components/DatePicker/SingleDate/SingleDate.js +35 -70
  94. package/es/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  95. package/es/components/DatePicker/SingleDate/SingleDate.styles.js.map +1 -1
  96. package/es/components/DatePicker/hooks/useDatePicker.js +75 -132
  97. package/es/components/DatePicker/hooks/useDatePicker.js.map +1 -1
  98. package/es/components/DatePicker/hooks/useKeyboardNavigation.js +0 -9
  99. package/es/components/DatePicker/hooks/useKeyboardNavigation.js.map +1 -1
  100. package/es/components/DatePicker/utils/dateHelper.js +104 -3
  101. package/es/components/DatePicker/utils/dateHelper.js.map +1 -1
  102. package/es/index.css +4 -4
  103. package/package.json +4 -4
  104. package/styled-components/cjs/components/Calendar/CalendarBase/CalendarBase.js +6 -3
  105. package/styled-components/cjs/components/Calendar/CalendarDouble/CalendarDouble.js +6 -3
  106. package/styled-components/cjs/components/CodeField/CodeField.types.js +5 -0
  107. package/styled-components/cjs/components/DatePicker/DatePicker.tokens.js +1 -2
  108. package/styled-components/cjs/components/DatePicker/DatePickerBase.styles.js +2 -2
  109. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDate.js +82 -158
  110. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js +1 -1
  111. package/styled-components/cjs/components/DatePicker/SingleDate/SingleDate.js +33 -68
  112. package/styled-components/cjs/components/DatePicker/hooks/useDatePicker.js +76 -132
  113. package/styled-components/cjs/components/DatePicker/hooks/useKeyboardNavigation.js +0 -8
  114. package/styled-components/cjs/components/DatePicker/utils/dateHelper.js +103 -3
  115. package/styled-components/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.config.js +1 -1
  116. package/styled-components/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +19 -20
  117. package/styled-components/cjs/examples/plasma_web/components/DatePicker/DatePicker.config.js +1 -1
  118. package/styled-components/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +12 -17
  119. package/styled-components/es/components/Calendar/CalendarBase/CalendarBase.js +6 -3
  120. package/styled-components/es/components/Calendar/CalendarDouble/CalendarDouble.js +6 -3
  121. package/styled-components/es/components/CodeField/CodeField.types.js +1 -0
  122. package/styled-components/es/components/DatePicker/DatePicker.tokens.js +1 -2
  123. package/styled-components/es/components/DatePicker/DatePickerBase.styles.js +2 -2
  124. package/styled-components/es/components/DatePicker/RangeDate/RangeDate.js +83 -159
  125. package/styled-components/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.js +1 -1
  126. package/styled-components/es/components/DatePicker/SingleDate/SingleDate.js +34 -69
  127. package/styled-components/es/components/DatePicker/hooks/useDatePicker.js +75 -131
  128. package/styled-components/es/components/DatePicker/hooks/useKeyboardNavigation.js +0 -8
  129. package/styled-components/es/components/DatePicker/utils/dateHelper.js +102 -2
  130. package/styled-components/es/examples/plasma_b2c/components/DatePicker/DatePicker.config.js +1 -1
  131. package/styled-components/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +19 -20
  132. package/styled-components/es/examples/plasma_web/components/DatePicker/DatePicker.config.js +1 -1
  133. package/styled-components/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +12 -17
  134. package/types/components/Calendar/Calendar.types.d.ts +3 -4
  135. package/types/components/Calendar/Calendar.types.d.ts.map +1 -1
  136. package/types/components/Calendar/CalendarBase/CalendarBase.d.ts.map +1 -1
  137. package/types/components/Calendar/CalendarDouble/CalendarDouble.d.ts.map +1 -1
  138. package/types/components/Calendar/hoc/withRange.d.ts.map +1 -1
  139. package/types/components/Calendar/store/reducer.d.ts +1 -2
  140. package/types/components/Calendar/store/reducer.d.ts.map +1 -1
  141. package/types/components/Calendar/utils/calendarGridHelper.d.ts +4 -4
  142. package/types/components/Calendar/utils/calendarGridHelper.d.ts.map +1 -1
  143. package/types/components/Calendar/utils/calendarRangeHelper.d.ts +4 -4
  144. package/types/components/Calendar/utils/calendarRangeHelper.d.ts.map +1 -1
  145. package/types/components/CodeField/CodeField.types.d.ts +56 -0
  146. package/types/components/CodeField/CodeField.types.d.ts.map +1 -0
  147. package/types/components/DatePicker/DatePicker.tokens.d.ts +0 -1
  148. package/types/components/DatePicker/DatePicker.tokens.d.ts.map +1 -1
  149. package/types/components/DatePicker/DatePickerBase.styles.d.ts.map +1 -1
  150. package/types/components/DatePicker/DatePickerBase.types.d.ts +6 -16
  151. package/types/components/DatePicker/DatePickerBase.types.d.ts.map +1 -1
  152. package/types/components/DatePicker/RangeDate/RangeDate.d.ts +2 -3
  153. package/types/components/DatePicker/RangeDate/RangeDate.d.ts.map +1 -1
  154. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts +4 -4
  155. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts.map +1 -1
  156. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.d.ts +1 -1
  157. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles.d.ts.map +1 -1
  158. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.types.d.ts +3 -3
  159. package/types/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.types.d.ts.map +1 -1
  160. package/types/components/DatePicker/SingleDate/SingleDate.d.ts +6 -11
  161. package/types/components/DatePicker/SingleDate/SingleDate.d.ts.map +1 -1
  162. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts +7 -9
  163. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts.map +1 -1
  164. package/types/components/DatePicker/hooks/useDatePicker.d.ts +4 -5
  165. package/types/components/DatePicker/hooks/useDatePicker.d.ts.map +1 -1
  166. package/types/components/DatePicker/hooks/useKeyboardNavigation.d.ts +1 -4
  167. package/types/components/DatePicker/hooks/useKeyboardNavigation.d.ts.map +1 -1
  168. package/types/components/DatePicker/utils/dateHelper.d.ts +27 -1
  169. package/types/components/DatePicker/utils/dateHelper.d.ts.map +1 -1
  170. package/cjs/components/DatePicker/DatePickerBase.styles_1a5ddg3.css +0 -2
  171. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles_1fhuiqs.css +0 -2
  172. package/cjs/components/DatePicker/utils/getFormattedDates.js +0 -46
  173. package/cjs/components/DatePicker/utils/getFormattedDates.js.map +0 -1
  174. package/cjs/components/DatePicker/utils/getMaskedDateOnInput.js +0 -29
  175. package/cjs/components/DatePicker/utils/getMaskedDateOnInput.js.map +0 -1
  176. package/cjs/components/DatePicker/utils/getOriginalDates.js +0 -38
  177. package/cjs/components/DatePicker/utils/getOriginalDates.js.map +0 -1
  178. package/cjs/components/DatePicker/utils/normalizeDates.js +0 -36
  179. package/cjs/components/DatePicker/utils/normalizeDates.js.map +0 -1
  180. package/emotion/cjs/components/DatePicker/utils/getFormattedDates.js +0 -44
  181. package/emotion/cjs/components/DatePicker/utils/getMaskedDateOnInput.js +0 -27
  182. package/emotion/cjs/components/DatePicker/utils/getOriginalDates.js +0 -36
  183. package/emotion/cjs/components/DatePicker/utils/index.js +0 -33
  184. package/emotion/cjs/components/DatePicker/utils/normalizeDates.js +0 -34
  185. package/emotion/es/components/DatePicker/utils/getFormattedDates.js +0 -38
  186. package/emotion/es/components/DatePicker/utils/getMaskedDateOnInput.js +0 -21
  187. package/emotion/es/components/DatePicker/utils/getOriginalDates.js +0 -30
  188. package/emotion/es/components/DatePicker/utils/index.js +0 -4
  189. package/emotion/es/components/DatePicker/utils/normalizeDates.js +0 -28
  190. package/es/components/DatePicker/DatePickerBase.styles_1a5ddg3.css +0 -2
  191. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.styles_1fhuiqs.css +0 -2
  192. package/es/components/DatePicker/utils/getFormattedDates.js +0 -42
  193. package/es/components/DatePicker/utils/getFormattedDates.js.map +0 -1
  194. package/es/components/DatePicker/utils/getMaskedDateOnInput.js +0 -25
  195. package/es/components/DatePicker/utils/getMaskedDateOnInput.js.map +0 -1
  196. package/es/components/DatePicker/utils/getOriginalDates.js +0 -34
  197. package/es/components/DatePicker/utils/getOriginalDates.js.map +0 -1
  198. package/es/components/DatePicker/utils/normalizeDates.js +0 -32
  199. package/es/components/DatePicker/utils/normalizeDates.js.map +0 -1
  200. package/styled-components/cjs/components/DatePicker/utils/getFormattedDates.js +0 -44
  201. package/styled-components/cjs/components/DatePicker/utils/getMaskedDateOnInput.js +0 -27
  202. package/styled-components/cjs/components/DatePicker/utils/getOriginalDates.js +0 -36
  203. package/styled-components/cjs/components/DatePicker/utils/index.js +0 -33
  204. package/styled-components/cjs/components/DatePicker/utils/normalizeDates.js +0 -34
  205. package/styled-components/es/components/DatePicker/utils/getFormattedDates.js +0 -38
  206. package/styled-components/es/components/DatePicker/utils/getMaskedDateOnInput.js +0 -21
  207. package/styled-components/es/components/DatePicker/utils/getOriginalDates.js +0 -30
  208. package/styled-components/es/components/DatePicker/utils/index.js +0 -4
  209. package/styled-components/es/components/DatePicker/utils/normalizeDates.js +0 -28
  210. package/types/components/DatePicker/utils/getFormattedDates.d.ts +0 -21
  211. package/types/components/DatePicker/utils/getFormattedDates.d.ts.map +0 -1
  212. package/types/components/DatePicker/utils/getMaskedDateOnInput.d.ts +0 -2
  213. package/types/components/DatePicker/utils/getMaskedDateOnInput.d.ts.map +0 -1
  214. package/types/components/DatePicker/utils/getOriginalDates.d.ts +0 -10
  215. package/types/components/DatePicker/utils/getOriginalDates.d.ts.map +0 -1
  216. package/types/components/DatePicker/utils/index.d.ts +0 -5
  217. package/types/components/DatePicker/utils/index.d.ts.map +0 -1
  218. package/types/components/DatePicker/utils/normalizeDates.d.ts +0 -15
  219. package/types/components/DatePicker/utils/normalizeDates.d.ts.map +0 -1
@@ -1,203 +1,147 @@
1
- import { customDayjs } from "../../../utils/datejs";
2
- import { QUARTER_NAMES } from "../../Calendar/utils";
3
1
  import { classes } from "../DatePicker.tokens";
4
- import { getFormattedDates, getMaskedDateOnInput } from "../utils";
2
+ import { formatCalendarValue, formatInputValue, getDateFromFormat, getMaskedDateOnInput, validateDateWithFullMonth } from "../utils/dateHelper";
5
3
  export var useDatePicker = function useDatePicker(_ref) {
6
4
  var currentValue = _ref.currentValue,
5
+ setInputValue = _ref.setInputValue,
6
+ setCalendarValue = _ref.setCalendarValue,
7
+ dateFormatDelimiter = _ref.dateFormatDelimiter,
7
8
  format = _ref.format,
8
9
  _ref$lang = _ref.lang,
9
10
  lang = _ref$lang === void 0 ? 'ru' : _ref$lang,
10
11
  disabled = _ref.disabled,
11
12
  readOnly = _ref.readOnly,
13
+ maskWithFormat = _ref.maskWithFormat,
12
14
  valueError = _ref.valueError,
13
15
  valueSuccess = _ref.valueSuccess,
14
16
  name = _ref.name,
15
- type = _ref.type,
16
- min = _ref.min,
17
- max = _ref.max,
18
- includeEdgeDates = _ref.includeEdgeDates,
19
- maskWithFormat = _ref.maskWithFormat,
20
- setCorrectDates = _ref.setCorrectDates,
21
- setInputValue = _ref.setInputValue,
22
- setCalendarValue = _ref.setCalendarValue,
23
- dateFormatDelimiter = _ref.dateFormatDelimiter,
24
17
  onChangeValue = _ref.onChangeValue,
25
18
  onCommitDate = _ref.onCommitDate,
26
19
  onChange = _ref.onChange;
27
20
  var datePickerErrorClass = valueError ? classes.datePickerError : undefined;
28
21
  var datePickerSuccessClass = valueSuccess ? classes.datePickerSuccess : undefined;
29
- var getQuarterInfo = function getQuarterInfo(originalDate) {
30
- if (type !== 'Quarters') {
31
- return;
32
- }
33
- var endQuarter = new Date(originalDate);
34
- endQuarter.setMonth(originalDate.getMonth() + 3);
35
- endQuarter.setDate(0);
36
- customDayjs.locale(lang);
37
- var quarterIndex = customDayjs(originalDate).quarter() - 1;
38
- return {
39
- name: QUARTER_NAMES[quarterIndex],
40
- fullValue: [originalDate, endQuarter]
41
- };
42
- };
43
22
  var handleChangeValue = function handleChangeValue(event) {
44
23
  if (disabled || readOnly) {
45
24
  return;
46
25
  }
47
26
  var value = event.target.value;
48
27
  var newValue = maskWithFormat ? getMaskedDateOnInput(value, format, dateFormatDelimiter(), currentValue) : value;
49
- var _getFormattedDates = getFormattedDates({
28
+ if (!format) {
29
+ setCalendarValue(formatCalendarValue(newValue));
30
+ setInputValue(formatInputValue({
50
31
  value: newValue,
51
- lang: lang,
52
- delimiter: dateFormatDelimiter(),
53
32
  format: format,
54
- includeEdgeDates: includeEdgeDates,
55
- min: min,
56
- max: max
57
- }),
58
- formattedDate = _getFormattedDates.formattedDate,
59
- isoDate = _getFormattedDates.isoDate,
60
- originalDate = _getFormattedDates.originalDate;
61
- if (originalDate) {
62
- setCorrectDates({
63
- calendar: originalDate,
64
- input: formattedDate
65
- });
66
- var dateInfo = getQuarterInfo(originalDate);
67
- onCommitDate === null || onCommitDate === void 0 || onCommitDate(formattedDate, false, true, dateInfo, originalDate, isoDate);
68
- setCalendarValue(originalDate);
69
- setInputValue(formattedDate);
70
- onChangeValue === null || onChangeValue === void 0 || onChangeValue(event, formattedDate, originalDate, isoDate);
33
+ lang: lang
34
+ }));
35
+ onChangeValue === null || onChangeValue === void 0 || onChangeValue(event, newValue);
71
36
  onChange === null || onChange === void 0 || onChange({
72
37
  target: {
73
- value: formattedDate,
74
- originalDate: originalDate,
75
- isoDate: isoDate,
38
+ value: newValue,
76
39
  name: name
77
40
  }
78
41
  });
79
42
  return;
80
43
  }
81
- if (formattedDate === '') {
82
- setCorrectDates({
83
- calendar: undefined,
84
- input: ''
85
- });
44
+ var _validateDateWithFull = validateDateWithFullMonth({
45
+ currentValue: newValue,
46
+ format: format,
47
+ lang: lang
48
+ }),
49
+ hasMonthFullName = _validateDateWithFull.hasMonthFullName,
50
+ isValidMonth = _validateDateWithFull.isValidMonth,
51
+ isLengthEqual = _validateDateWithFull.isLengthEqual;
52
+ if (!hasMonthFullName && (newValue === null || newValue === void 0 ? void 0 : newValue.length) === (format === null || format === void 0 ? void 0 : format.length) || isValidMonth && isLengthEqual) {
53
+ setCalendarValue(formatCalendarValue(newValue, format, lang));
86
54
  }
87
- setCalendarValue(originalDate);
88
- setInputValue(formattedDate);
89
- onChangeValue === null || onChangeValue === void 0 || onChangeValue(event, formattedDate, originalDate, isoDate);
55
+ setInputValue(formatInputValue({
56
+ value: newValue,
57
+ format: format,
58
+ lang: lang,
59
+ hasMonthFullName: hasMonthFullName,
60
+ isValidMonth: isValidMonth,
61
+ isLengthEqual: isLengthEqual
62
+ }));
63
+ onChangeValue === null || onChangeValue === void 0 || onChangeValue(event, newValue);
90
64
  onChange === null || onChange === void 0 || onChange({
91
65
  target: {
92
- value: formattedDate,
93
- originalDate: originalDate,
94
- isoDate: isoDate,
66
+ value: newValue,
95
67
  name: name
96
68
  }
97
69
  });
98
70
  };
99
- var handleSearch = function handleSearch(date) {
71
+ var handleCommitDate = function handleCommitDate(date, applyFormat, isCalendarValue, dateInfo) {
100
72
  if (disabled || readOnly) {
101
73
  return;
102
74
  }
103
75
  if (!date) {
104
76
  setCalendarValue(undefined);
105
77
  setInputValue('');
106
- return onCommitDate === null || onCommitDate === void 0 ? void 0 : onCommitDate('', false, true, undefined, undefined, '');
78
+ return onCommitDate === null || onCommitDate === void 0 ? void 0 : onCommitDate('', false, true);
107
79
  }
108
- var _getFormattedDates2 = getFormattedDates({
80
+ if (isCalendarValue) {
81
+ var _formattedInputValue = formatInputValue({
109
82
  value: date,
110
- lang: lang,
111
- delimiter: dateFormatDelimiter(),
112
83
  format: format,
113
- includeEdgeDates: includeEdgeDates,
114
- min: min,
115
- max: max
116
- }),
117
- formattedDate = _getFormattedDates2.formattedDate,
118
- isoDate = _getFormattedDates2.isoDate,
119
- originalDate = _getFormattedDates2.originalDate;
120
- if (originalDate) {
121
- var dateInfo = getQuarterInfo(originalDate);
122
- onCommitDate === null || onCommitDate === void 0 || onCommitDate(formattedDate, false, true, dateInfo, originalDate, isoDate);
123
- }
124
- };
125
- var handleCalendarPick = function handleCalendarPick(date, dateInfo) {
126
- if (disabled || readOnly) {
127
- return;
128
- }
129
- if (!date) {
130
- setInputValue('');
131
- setCalendarValue(date);
132
- setCorrectDates({
133
- calendar: date || undefined,
134
- input: ''
84
+ lang: lang
135
85
  });
136
- onChangeValue === null || onChangeValue === void 0 || onChangeValue(null, '', date, '');
86
+ setCalendarValue(formatCalendarValue(date, format, lang));
87
+ setInputValue(_formattedInputValue);
88
+ onCommitDate === null || onCommitDate === void 0 || onCommitDate(date, false, true, dateInfo);
89
+ onChangeValue === null || onChangeValue === void 0 || onChangeValue(null, _formattedInputValue);
137
90
  onChange === null || onChange === void 0 || onChange({
138
91
  target: {
139
- value: '',
140
- originalDate: date,
141
- isoDate: '',
92
+ value: _formattedInputValue,
142
93
  name: name
143
94
  }
144
95
  });
145
- onCommitDate === null || onCommitDate === void 0 || onCommitDate('', false, true, dateInfo, date || undefined, '');
146
96
  return;
147
97
  }
148
- customDayjs.locale(lang);
149
- var formattedDate = customDayjs(date).format(format);
150
- var isoDate = date.toISOString();
151
- setCalendarValue(date);
152
- setInputValue(formattedDate);
153
- setCorrectDates({
154
- calendar: date,
155
- input: formattedDate
98
+ var formatString = applyFormat ? format : undefined;
99
+ var _getDateFromFormat = getDateFromFormat(date, formatString, lang),
100
+ newDate = _getDateFromFormat.value,
101
+ isError = _getDateFromFormat.isError,
102
+ isSuccess = _getDateFromFormat.isSuccess;
103
+ var formattedInputValue = formatInputValue({
104
+ value: newDate,
105
+ format: format,
106
+ lang: lang
156
107
  });
157
- onChangeValue === null || onChangeValue === void 0 || onChangeValue(null, formattedDate, date, isoDate);
108
+ setCalendarValue(formatCalendarValue(newDate, format, lang));
109
+ setInputValue(formattedInputValue);
110
+ onCommitDate === null || onCommitDate === void 0 || onCommitDate(newDate, isError, isSuccess);
111
+ onChangeValue === null || onChangeValue === void 0 || onChangeValue(null, formattedInputValue);
158
112
  onChange === null || onChange === void 0 || onChange({
159
113
  target: {
160
- value: formattedDate,
161
- originalDate: date,
162
- isoDate: isoDate,
114
+ value: formattedInputValue,
163
115
  name: name
164
116
  }
165
117
  });
166
- onCommitDate === null || onCommitDate === void 0 || onCommitDate(formattedDate, false, true, dateInfo, date, isoDate);
167
118
  };
168
- var updateExternalDate = function updateExternalDate(externalDate) {
169
- var _getFormattedDates3 = getFormattedDates({
170
- value: externalDate || null,
171
- lang: lang,
172
- delimiter: dateFormatDelimiter(),
173
- format: format,
174
- includeEdgeDates: includeEdgeDates,
175
- min: min,
176
- max: max
177
- }),
178
- formattedDate = _getFormattedDates3.formattedDate,
179
- originalDate = _getFormattedDates3.originalDate;
180
- setInputValue(formattedDate);
181
- setCalendarValue(originalDate);
182
- if (originalDate) {
183
- setCorrectDates({
184
- calendar: originalDate,
185
- input: formattedDate
186
- });
119
+ var updateExternalDate = function updateExternalDate(externalDate, inputSetter, calendarSetter) {
120
+ inputSetter(formatInputValue({
121
+ value: externalDate,
122
+ format: format,
123
+ lang: lang
124
+ }));
125
+ if (!format) {
126
+ calendarSetter(formatCalendarValue(externalDate, undefined, lang));
127
+ return;
187
128
  }
188
- if (formattedDate === '') {
189
- setCorrectDates({
190
- calendar: undefined,
191
- input: ''
192
- });
129
+ if (!externalDate) {
130
+ calendarSetter(undefined);
131
+ return;
132
+ }
133
+ var _getDateFromFormat2 = getDateFromFormat(externalDate, undefined, lang),
134
+ newDate = _getDateFromFormat2.value,
135
+ isError = _getDateFromFormat2.isError;
136
+ if (!isError) {
137
+ calendarSetter(formatCalendarValue(newDate, format, lang));
193
138
  }
194
139
  };
195
140
  return {
196
141
  datePickerErrorClass: datePickerErrorClass,
197
142
  datePickerSuccessClass: datePickerSuccessClass,
198
143
  handleChangeValue: handleChangeValue,
199
- handleSearch: handleSearch,
200
- handleCalendarPick: handleCalendarPick,
144
+ handleCommitDate: handleCommitDate,
201
145
  updateExternalDate: updateExternalDate
202
146
  };
203
147
  };
@@ -1,4 +1,3 @@
1
- import { needFullMonth } from "../utils/dateHelper";
2
1
  export var keys = {
3
2
  Space: 'Space',
4
3
  Escape: 'Escape'
@@ -6,15 +5,8 @@ export var keys = {
6
5
  export var useKeyNavigation = function useKeyNavigation(_ref) {
7
6
  var isCalendarOpen = _ref.isCalendarOpen,
8
7
  closeOnEsc = _ref.closeOnEsc,
9
- format = _ref.format,
10
- maskWithFormat = _ref.maskWithFormat,
11
- delimiter = _ref.delimiter,
12
8
  onToggle = _ref.onToggle;
13
9
  var onKeyDown = function onKeyDown(event) {
14
- if (event.key === delimiter && maskWithFormat && format && !needFullMonth(format)) {
15
- event.preventDefault();
16
- return;
17
- }
18
10
  switch (event.code) {
19
11
  case keys.Space:
20
12
  {
@@ -1,5 +1,57 @@
1
- export var needFullMonth = function needFullMonth(format) {
2
- return /M{3,4}/g.test(format);
1
+ import { customDayjs } from "../../../utils/datejs";
2
+ export var formatInputValue = function formatInputValue(_ref) {
3
+ var value = _ref.value,
4
+ format = _ref.format,
5
+ lang = _ref.lang,
6
+ hasMonthFullName = _ref.hasMonthFullName,
7
+ isValidMonth = _ref.isValidMonth,
8
+ isLengthEqual = _ref.isLengthEqual;
9
+ if (!value || !lang) {
10
+ return '';
11
+ }
12
+ if (hasMonthFullName && (!isValidMonth || !isLengthEqual)) {
13
+ return String(value);
14
+ }
15
+ if (format && customDayjs(value, format, true).isValid()) {
16
+ return customDayjs(value, format).locale(lang).format(format);
17
+ }
18
+ if (format && String(value).length >= 10 && String(new Date(value)) !== 'Invalid Date') {
19
+ return customDayjs(value).locale(lang).format(format);
20
+ }
21
+ return String(value);
22
+ };
23
+ export var formatCalendarValue = function formatCalendarValue(value, format, lang) {
24
+ if (!value || !lang) {
25
+ return undefined;
26
+ }
27
+ if (format && customDayjs(value, format, true).isValid()) {
28
+ return customDayjs(value, format, true).locale(lang).toDate();
29
+ }
30
+ if (String(new Date(value)) !== 'Invalid Date') {
31
+ return customDayjs(value).locale(lang).toDate();
32
+ }
33
+ return undefined;
34
+ };
35
+ export var getDateFromFormat = function getDateFromFormat(value, format, lang) {
36
+ if (format && customDayjs(value, format, true).isValid() && lang) {
37
+ return {
38
+ value: customDayjs(value, format, true).locale(lang).toDate(),
39
+ isError: false,
40
+ isSuccess: true
41
+ };
42
+ }
43
+ if (!format && String(new Date(value)) !== 'Invalid Date' && lang) {
44
+ return {
45
+ value: customDayjs(value).locale(lang).toDate(),
46
+ isError: false,
47
+ isSuccess: true
48
+ };
49
+ }
50
+ return {
51
+ value: value,
52
+ isError: true,
53
+ isSuccess: false
54
+ };
3
55
  };
4
56
  export var getDateFormatDelimiter = function getDateFormatDelimiter(format) {
5
57
  var _format$match;
@@ -8,4 +60,52 @@ export var getDateFormatDelimiter = function getDateFormatDelimiter(format) {
8
60
  }
9
61
  var delimiter = (_format$match = format.match(/[^a-zA-Z0-9]/)) === null || _format$match === void 0 ? void 0 : _format$match[0];
10
62
  return delimiter !== null && delimiter !== void 0 ? delimiter : '';
63
+ };
64
+ export var getMaskedDateOnInput = function getMaskedDateOnInput(value, format, delimiter, prevValue) {
65
+ if (!value) {
66
+ return '';
67
+ }
68
+ if (!format || !delimiter || /M{3,4}/g.test(format)) {
69
+ return value;
70
+ }
71
+ if (value.length >= format.length) {
72
+ return value.slice(0, format.length);
73
+ }
74
+ if (prevValue && value.length < prevValue.length && (prevValue === null || prevValue === void 0 ? void 0 : prevValue[value.length]) === delimiter) {
75
+ return value.slice(0, -1);
76
+ }
77
+ if ((format === null || format === void 0 ? void 0 : format[value.length]) === delimiter) {
78
+ return value + delimiter;
79
+ }
80
+ return value;
81
+ };
82
+ export var validateDateWithFullMonth = function validateDateWithFullMonth(_ref2) {
83
+ var currentValue = _ref2.currentValue,
84
+ format = _ref2.format,
85
+ lang = _ref2.lang;
86
+ /**
87
+ * NOTE: если в формате даты есть месяц в полном названии или сокращенном,
88
+ * нужно дополнительно проводить валидацию на полноту введенной даты.
89
+ * Иначе dayjs циклически будет пытаться отформатировать некорректную дату.
90
+ */
91
+ var hasMonthFullName = /M{3,4}/g.test(format);
92
+ if (!hasMonthFullName) {
93
+ return {
94
+ hasMonthFullName: hasMonthFullName,
95
+ isValidMonth: false,
96
+ isLengthEqual: false
97
+ };
98
+ }
99
+ customDayjs.locale(lang);
100
+ var firstIndexOfMonth = format.indexOf('M');
101
+ var lastIndexOfMonth = currentValue.indexOf(getDateFormatDelimiter(format), firstIndexOfMonth);
102
+ var fullMonthName = !lastIndexOfMonth ? currentValue.slice(firstIndexOfMonth) : currentValue.slice(firstIndexOfMonth, lastIndexOfMonth);
103
+ var monthFormatting = format.replace(/[^M]/g, '');
104
+ var isValidMonth = customDayjs("01 ".concat(fullMonthName, " 1970"), "DD ".concat(monthFormatting, " YYYY"), true).isValid();
105
+ var isLengthEqual = format.length - monthFormatting.length === currentValue.length - fullMonthName.length;
106
+ return {
107
+ hasMonthFullName: hasMonthFullName,
108
+ isValidMonth: isValidMonth,
109
+ isLengthEqual: isLengthEqual
110
+ };
11
111
  };