@geotab/zenith 3.1.1-beta.6 → 3.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/README.md +20 -0
  2. package/dist/advancedGroupsFilter/advancedGroupsFilter.js +136 -30
  3. package/dist/advancedGroupsFilter/advancedGroupsFilterForm.js +139 -34
  4. package/dist/advancedGroupsFilter/advancedGroupsFilterFormSection.js +352 -87
  5. package/dist/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.d.ts +0 -1
  6. package/dist/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +83 -9
  7. package/dist/alertRaw/alertRaw.js +175 -54
  8. package/dist/banner/bannerMultipLine.js +131 -23
  9. package/dist/banner/bannerSingleLine.js +110 -16
  10. package/dist/betaPill/betaPill.js +111 -20
  11. package/dist/bookmark/bookmark.js +95 -28
  12. package/dist/bulkEditControl/bulkEditControl.js +167 -34
  13. package/dist/calendar/calendar.js +943 -273
  14. package/dist/calendar/calendarUtils.js +157 -85
  15. package/dist/card/card.js +268 -123
  16. package/dist/chart/accessibleChart/accessibleChartNarrative.js +648 -555
  17. package/dist/chart/accessibleChart/accessibleChartTable.js +245 -86
  18. package/dist/chart/chart.js +36 -21
  19. package/dist/chart/chartAxis/chartAxis.js +85 -7
  20. package/dist/checkboxListWithAction/checkboxListWithAction.js +224 -69
  21. package/dist/chip/chip.js +195 -91
  22. package/dist/columnsSelector/columnsSelector.js +97 -12
  23. package/dist/columnsSelector/columnsTab/columnsTab.js +59 -15
  24. package/dist/columnsSelector/columnsTabGroup/columnsTabGroup.js +81 -34
  25. package/dist/comboboxSelected/comboboxSelected.js +1 -3
  26. package/dist/dataFeed/feedExpandControl/feedExpandControl.js +25 -10
  27. package/dist/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +92 -11
  28. package/dist/dataGrid/dataGrid.js +227 -117
  29. package/dist/dataGrid/emptySearchList/emptySearchList.js +56 -9
  30. package/dist/dataGrid/entitiesListActions/actions/columnsListButton.js +51 -7
  31. package/dist/dataGrid/entitiesListActions/actions/fullscreenButton.js +64 -18
  32. package/dist/dataGrid/withFlexibleColumns/components/columnSettings.js +84 -10
  33. package/dist/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +48 -16
  34. package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +223 -32
  35. package/dist/dataGrid/withSelectableRows/withSelectableRows.js +286 -213
  36. package/dist/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +178 -95
  37. package/dist/dateInputInner/dateInputInner.js +791 -476
  38. package/dist/dateInputInner/dateInputInnerControlBlock.js +125 -22
  39. package/dist/dateInputRaw/dateInputRaw.js +315 -104
  40. package/dist/dateInputRaw/utils/getLabel.js +38 -7
  41. package/dist/dateRangeInner/dateRangeInner.js +173 -59
  42. package/dist/dateRangeRaw/dateRangeRaw.js +601 -239
  43. package/dist/dateRangeRaw/utils/dateRangeUtils.js +629 -241
  44. package/dist/dateSelectionWrapper/dateSelectionWrapper.js +152 -14
  45. package/dist/dialog/dialogContent.js +123 -40
  46. package/dist/dropdownRaw/dropdownHelper.d.ts +2 -2
  47. package/dist/dropdownRaw/dropdownHelper.js +9 -9
  48. package/dist/dropdownRaw/dropdownList.js +447 -78
  49. package/dist/dropdownRaw/dropdownPopup.js +218 -20
  50. package/dist/dropdownRaw/dropdownRaw.js +866 -506
  51. package/dist/dropdownRaw/dropdownSearchableTrigger.js +223 -46
  52. package/dist/dropdownRaw/stateReducer/stateAction.d.ts +5 -1
  53. package/dist/dropdownRaw/stateReducer/stateActionType.d.ts +2 -1
  54. package/dist/dropdownRaw/stateReducer/stateActionType.js +1 -0
  55. package/dist/dropdownRaw/stateReducer/stateReducer.d.ts +6 -1
  56. package/dist/dropdownRaw/stateReducer/stateReducer.js +24 -12
  57. package/dist/dropdownRaw/stateReducer/stateReducerHelper.d.ts +2 -0
  58. package/dist/dropdownRaw/stateReducer/stateReducerHelper.js +20 -1
  59. package/dist/dropdownRaw/stateReducer/stateReducerTestData.d.ts +39 -0
  60. package/dist/dropdownRaw/stateReducer/stateReducerTestData.js +74 -0
  61. package/dist/dropdownRaw/types.d.ts +1 -0
  62. package/dist/favoriteButton/favoriteButton.js +59 -10
  63. package/dist/filters/components/filtersContainer.js +151 -64
  64. package/dist/filters/components/filtersEmptySelectedList.js +30 -4
  65. package/dist/filters/components/filtersSaveModal.js +140 -42
  66. package/dist/filters/components/filtersSavedChipComponent.js +318 -108
  67. package/dist/filters/components/filtersSearchItemData.js +127 -47
  68. package/dist/filters/components/filtersSearchList.js +381 -179
  69. package/dist/filters/components/filtersSelect.js +128 -61
  70. package/dist/filters/components/filtersSelectListItem.js +125 -13
  71. package/dist/filters/components/filtersSidePanel.js +510 -178
  72. package/dist/filters/components/filtersSidePanelDropdown.js +2 -2
  73. package/dist/filters/filters.js +445 -268
  74. package/dist/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +729 -272
  75. package/dist/filtersBar/components/resetComponentButton.js +45 -5
  76. package/dist/filtersBar/filtersBarActions/filtersBarActions.js +126 -15
  77. package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRadioGroup/filtersBarSidePanelRadioGroup.js +2 -2
  78. package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +155 -49
  79. package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +360 -104
  80. package/dist/filtersBar/filtersContainer/filtersContainer.js +204 -134
  81. package/dist/formField/components/formFieldWithLabel.d.ts +2 -1
  82. package/dist/formField/components/formFieldWithLabel.js +3 -2
  83. package/dist/formField/components/formFieldWithoutLabel.d.ts +2 -1
  84. package/dist/formField/components/formFieldWithoutLabel.js +3 -3
  85. package/dist/formField/components/trailingComponent.d.ts +8 -0
  86. package/dist/formField/components/trailingComponent.js +11 -0
  87. package/dist/formField/formField.js +26 -11
  88. package/dist/formField/hooks/useError.js +100 -36
  89. package/dist/formGroup/components/reviewListToggle/reviewListToggle.js +72 -7
  90. package/dist/formGroup/hooks/useToggle.js +37 -11
  91. package/dist/formGroup/utils/getControls.js +8 -7
  92. package/dist/formLayout/hooks/useError.js +55 -15
  93. package/dist/formLayout/hooks/useFormButtons.js +128 -27
  94. package/dist/formSection/components/formSectionModal.js +1 -1
  95. package/dist/formSection/formSection.js +1 -1
  96. package/dist/formSection/hooks/useError.js +70 -22
  97. package/dist/formStepper/components/formStep.js +65 -10
  98. package/dist/formStepper/formStepper.js +129 -33
  99. package/dist/formStepperButtons/formStepperButtons.js +184 -38
  100. package/dist/groupsFilter/groupsHelper.d.ts +1 -1
  101. package/dist/groupsFilterRaw/groupsFilterAdjustmentState.js +162 -17
  102. package/dist/groupsFilterRaw/groupsFilterBox.js +137 -32
  103. package/dist/groupsFilterRaw/groupsFilterCommon.js +75 -8
  104. package/dist/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +184 -25
  105. package/dist/groupsFilterRaw/groupsFilterHelper.d.ts +2 -1
  106. package/dist/groupsFilterRaw/groupsFilterHelper.js +284 -168
  107. package/dist/groupsFilterRaw/groupsFilterInitialState.js +266 -18
  108. package/dist/groupsFilterRaw/groupsFilterMenu.js +124 -9
  109. package/dist/groupsFilterRaw/groupsFilterRaw.d.ts +1 -0
  110. package/dist/groupsFilterRaw/groupsFilterRaw.js +816 -308
  111. package/dist/groupsFilterRaw/groupsFilterTestData.d.ts +155 -2
  112. package/dist/groupsFilterRaw/groupsFilterTestData.js +153 -58
  113. package/dist/groupsFilterRaw/groupsFilterTrigger.js +139 -35
  114. package/dist/groupsFilterRaw/groupsHelper.js +739 -208
  115. package/dist/groupsFilterRaw/stateReducer/stateReducerHelper.js +3 -1
  116. package/dist/groupsFilterRaw/types.d.ts +1 -0
  117. package/dist/header/components/collapsedItemsControl/collapsedItemsControl.js +107 -52
  118. package/dist/header/components/mobileFilterControl/mobileFilterControl.js +62 -9
  119. package/dist/header/components/mobileSearchControl/mobileSearchControl.js +119 -14
  120. package/dist/header/headerBack.js +64 -20
  121. package/dist/index.css +116 -74
  122. package/dist/index.d.ts +1 -0
  123. package/dist/index.js +4 -1
  124. package/dist/list/itemData/itemDataInternal.js +216 -51
  125. package/dist/list/listItem/listItem.js +168 -55
  126. package/dist/menu/components/menuErrorItem.js +33 -5
  127. package/dist/mobileSheet/mobileSheet.js +195 -69
  128. package/dist/modal/modal.js +300 -142
  129. package/dist/nav/nav.js +1 -1
  130. package/dist/nav/navFooter/navFooter.js +82 -39
  131. package/dist/nav/navFooter/navFooterAction/navFooterAction.js +52 -13
  132. package/dist/nav/navHeader/navHeader.js +86 -36
  133. package/dist/nav/navHeader/navHeaderSearch/navHeaderSearch.js +88 -29
  134. package/dist/nav/navItem/navItem.d.ts +3 -3
  135. package/dist/nav/navItem/navItem.js +35 -33
  136. package/dist/nav/navMobileBar/navMobileBar.js +67 -21
  137. package/dist/notification/notification.js +124 -21
  138. package/dist/pagination/paginationArrow.js +81 -11
  139. package/dist/pagination/paginationText/paginationText.js +45 -11
  140. package/dist/pill/components/pillNonActionable/pillNonActionable.js +93 -24
  141. package/dist/pillBox/components/pillBoxItem.js +52 -9
  142. package/dist/pillBox/pillBox.js +121 -20
  143. package/dist/pillExpandable/pillExpandable.js +333 -139
  144. package/dist/rangeRaw/rangeRaw.js +486 -141
  145. package/dist/rangeRaw/utils/rangeHelper.js +209 -39
  146. package/dist/searchInputRaw/searchInputRaw.js +180 -65
  147. package/dist/skeleton/skeleton.js +51 -6
  148. package/dist/sortControl/sortControl.js +152 -42
  149. package/dist/stepperRaw/stepperRaw.js +116 -42
  150. package/dist/summary/summary.js +94 -8
  151. package/dist/table/actions/actionsMenu.js +171 -78
  152. package/dist/table/flexible/columnSettings.js +80 -10
  153. package/dist/table/flexible/columnsList.js +110 -43
  154. package/dist/table/flexible/columnsPopup.js +77 -20
  155. package/dist/table/nested/useNestedRows.js +167 -77
  156. package/dist/table/selectable/selectableHeader.js +180 -41
  157. package/dist/table/selectable/useSelectableRows.js +270 -191
  158. package/dist/table/sortable/sortableHeader.js +153 -75
  159. package/dist/tabs/tabs.js +227 -118
  160. package/dist/timePickerRaw/timePickerRaw.js +278 -58
  161. package/dist/toastRaw/toastRaw.js +138 -32
  162. package/dist/toggleButton/toggleButton.d.ts +0 -1
  163. package/dist/toggleButtonRaw/toggleButtonRaw.d.ts +1 -0
  164. package/dist/toggleButtonRaw/toggleButtonRaw.js +146 -40
  165. package/dist/utils/formatDate.js +1001 -117
  166. package/{esm/utils/localization/translations/cs-json.js → dist/utils/localization/translations/cs.json} +11 -12
  167. package/{esm/utils/localization/translations/da-DK-json.js → dist/utils/localization/translations/da-DK.json} +31 -23
  168. package/{esm/utils/localization/translations/de-json.js → dist/utils/localization/translations/de.json} +12 -13
  169. package/dist/utils/localization/translations/en.json +308 -0
  170. package/{esm/utils/localization/translations/es-json.js → dist/utils/localization/translations/es.json} +11 -12
  171. package/{esm/utils/localization/translations/fi-FI-json.js → dist/utils/localization/translations/fi-FI.json} +31 -23
  172. package/{esm/utils/localization/translations/fr-FR-json.js → dist/utils/localization/translations/fr-FR.json} +12 -12
  173. package/{esm/utils/localization/translations/fr-json.js → dist/utils/localization/translations/fr.json} +11 -12
  174. package/{esm/utils/localization/translations/hu-HU-json.js → dist/utils/localization/translations/hu-HU.json} +31 -23
  175. package/{esm/utils/localization/translations/id-json.js → dist/utils/localization/translations/id.json} +11 -13
  176. package/{esm/utils/localization/translations/it-json.js → dist/utils/localization/translations/it.json} +11 -12
  177. package/{esm/utils/localization/translations/ja-json.js → dist/utils/localization/translations/ja.json} +11 -12
  178. package/{esm/utils/localization/translations/ko-KR-json.js → dist/utils/localization/translations/ko-KR.json} +24 -23
  179. package/{esm/utils/localization/translations/ms-json.js → dist/utils/localization/translations/ms.json} +11 -12
  180. package/{esm/utils/localization/translations/nb-NO-json.js → dist/utils/localization/translations/nb-NO.json} +31 -23
  181. package/{esm/utils/localization/translations/nl-json.js → dist/utils/localization/translations/nl.json} +11 -12
  182. package/{esm/utils/localization/translations/pl-json.js → dist/utils/localization/translations/pl.json} +11 -12
  183. package/{esm/utils/localization/translations/pt-BR-json.js → dist/utils/localization/translations/pt-BR.json} +11 -12
  184. package/{esm/utils/localization/translations/sk-SK-json.js → dist/utils/localization/translations/sk-SK.json} +31 -23
  185. package/{esm/utils/localization/translations/sv-json.js → dist/utils/localization/translations/sv.json} +11 -12
  186. package/{esm/utils/localization/translations/th-json.js → dist/utils/localization/translations/th.json} +11 -12
  187. package/{esm/utils/localization/translations/tr-json.js → dist/utils/localization/translations/tr.json} +11 -12
  188. package/{esm/utils/localization/translations/zh-Hans-json.js → dist/utils/localization/translations/zh-Hans.json} +11 -12
  189. package/{esm/utils/localization/translations/zh-TW-json.js → dist/utils/localization/translations/zh-TW.json} +11 -23
  190. package/dist/utils/localization/translationsDictionary.d.ts +2 -0
  191. package/dist/utils/localization/translationsDictionary.js +63 -0
  192. package/dist/utils/localization/useLanguage.js +2 -74
  193. package/esm/advancedGroupsFilter/advancedGroupsFilter.js +130 -29
  194. package/esm/advancedGroupsFilter/advancedGroupsFilterForm.js +133 -33
  195. package/esm/advancedGroupsFilter/advancedGroupsFilterFormSection.js +317 -65
  196. package/esm/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.d.ts +0 -1
  197. package/esm/advancedGroupsFilter/advancedGroupsFilterSectionTooltip.js +77 -8
  198. package/esm/alertRaw/alertRaw.js +165 -51
  199. package/esm/banner/bannerMultipLine.js +121 -20
  200. package/esm/banner/bannerSingleLine.js +100 -13
  201. package/esm/betaPill/betaPill.js +105 -19
  202. package/esm/bookmark/bookmark.js +89 -27
  203. package/esm/bulkEditControl/bulkEditControl.js +161 -33
  204. package/esm/calendar/calendar.js +937 -272
  205. package/esm/calendar/calendarUtils.js +151 -84
  206. package/esm/card/card.js +233 -101
  207. package/esm/chart/accessibleChart/accessibleChartNarrative.js +642 -554
  208. package/esm/chart/accessibleChart/accessibleChartTable.js +239 -85
  209. package/esm/chart/chart.js +30 -20
  210. package/esm/chart/chartAxis/chartAxis.js +79 -6
  211. package/esm/checkboxListWithAction/checkboxListWithAction.js +218 -68
  212. package/esm/chip/chip.js +189 -90
  213. package/esm/columnsSelector/columnsSelector.js +91 -11
  214. package/esm/columnsSelector/columnsTab/columnsTab.js +53 -14
  215. package/esm/columnsSelector/columnsTabGroup/columnsTabGroup.js +75 -33
  216. package/esm/comboboxSelected/comboboxSelected.js +1 -3
  217. package/esm/dataFeed/feedExpandControl/feedExpandControl.js +21 -9
  218. package/esm/dataGrid/columns/checkboxColumn/checkboxHeaderCell.js +86 -10
  219. package/esm/dataGrid/dataGrid.js +221 -116
  220. package/esm/dataGrid/emptySearchList/emptySearchList.js +50 -8
  221. package/esm/dataGrid/entitiesListActions/actions/columnsListButton.js +45 -6
  222. package/esm/dataGrid/entitiesListActions/actions/fullscreenButton.js +58 -17
  223. package/esm/dataGrid/withFlexibleColumns/components/columnSettings.js +78 -9
  224. package/esm/dataGrid/withFlexibleColumns/components/columnSettingsSidePanel.js +44 -15
  225. package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +217 -31
  226. package/esm/dataGrid/withSelectableRows/withSelectableRows.js +280 -212
  227. package/esm/dataGrid/withSortableColumns/columns/sortableColumnWrapper.js +172 -94
  228. package/esm/dateInputInner/dateInputInner.js +785 -475
  229. package/esm/dateInputInner/dateInputInnerControlBlock.js +119 -21
  230. package/esm/dateInputRaw/dateInputRaw.js +309 -103
  231. package/esm/dateInputRaw/utils/getLabel.js +32 -6
  232. package/esm/dateRangeInner/dateRangeInner.js +167 -58
  233. package/esm/dateRangeRaw/dateRangeRaw.js +595 -238
  234. package/esm/dateRangeRaw/utils/dateRangeUtils.js +622 -239
  235. package/esm/dateSelectionWrapper/dateSelectionWrapper.js +146 -13
  236. package/esm/dialog/dialogContent.js +117 -39
  237. package/esm/dropdownRaw/dropdownHelper.d.ts +2 -2
  238. package/esm/dropdownRaw/dropdownHelper.js +10 -10
  239. package/esm/dropdownRaw/dropdownList.js +412 -56
  240. package/esm/dropdownRaw/dropdownPopup.js +212 -19
  241. package/esm/dropdownRaw/dropdownRaw.js +862 -507
  242. package/esm/dropdownRaw/dropdownSearchableTrigger.js +217 -45
  243. package/esm/dropdownRaw/stateReducer/stateAction.d.ts +5 -1
  244. package/esm/dropdownRaw/stateReducer/stateActionType.d.ts +2 -1
  245. package/esm/dropdownRaw/stateReducer/stateActionType.js +1 -0
  246. package/esm/dropdownRaw/stateReducer/stateReducer.d.ts +6 -1
  247. package/esm/dropdownRaw/stateReducer/stateReducer.js +24 -12
  248. package/esm/dropdownRaw/stateReducer/stateReducerHelper.d.ts +2 -0
  249. package/esm/dropdownRaw/stateReducer/stateReducerHelper.js +18 -0
  250. package/esm/dropdownRaw/stateReducer/stateReducerTestData.d.ts +39 -0
  251. package/esm/dropdownRaw/stateReducer/stateReducerTestData.js +71 -0
  252. package/esm/dropdownRaw/types.d.ts +1 -0
  253. package/esm/favoriteButton/favoriteButton.js +53 -9
  254. package/esm/filters/components/filtersContainer.js +141 -61
  255. package/esm/filters/components/filtersEmptySelectedList.js +24 -3
  256. package/esm/filters/components/filtersSaveModal.js +134 -41
  257. package/esm/filters/components/filtersSavedChipComponent.js +312 -107
  258. package/esm/filters/components/filtersSearchItemData.js +121 -46
  259. package/esm/filters/components/filtersSearchList.js +375 -178
  260. package/esm/filters/components/filtersSelect.js +122 -60
  261. package/esm/filters/components/filtersSelectListItem.js +119 -12
  262. package/esm/filters/components/filtersSidePanel.js +504 -177
  263. package/esm/filters/components/filtersSidePanelDropdown.js +2 -2
  264. package/esm/filters/filters.js +435 -265
  265. package/esm/filtersBar/components/filtersBarPeriodPicker/getRangeOption.js +722 -270
  266. package/esm/filtersBar/components/resetComponentButton.js +39 -4
  267. package/esm/filtersBar/filtersBarActions/filtersBarActions.js +120 -14
  268. package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRadioGroup/filtersBarSidePanelRadioGroup.js +2 -2
  269. package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +149 -48
  270. package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +354 -103
  271. package/esm/filtersBar/filtersContainer/filtersContainer.js +198 -133
  272. package/esm/formField/components/formFieldWithLabel.d.ts +2 -1
  273. package/esm/formField/components/formFieldWithLabel.js +3 -2
  274. package/esm/formField/components/formFieldWithoutLabel.d.ts +2 -1
  275. package/esm/formField/components/formFieldWithoutLabel.js +3 -3
  276. package/esm/formField/components/trailingComponent.d.ts +8 -0
  277. package/esm/formField/components/trailingComponent.js +7 -0
  278. package/esm/formField/formField.js +27 -12
  279. package/esm/formField/hooks/useError.js +94 -35
  280. package/esm/formGroup/components/reviewListToggle/reviewListToggle.js +66 -6
  281. package/esm/formGroup/hooks/useToggle.js +31 -10
  282. package/esm/formGroup/utils/getControls.js +8 -7
  283. package/esm/formLayout/hooks/useError.js +49 -14
  284. package/esm/formLayout/hooks/useFormButtons.js +122 -26
  285. package/esm/formSection/components/formSectionModal.js +1 -1
  286. package/esm/formSection/formSection.js +1 -1
  287. package/esm/formSection/hooks/useError.js +64 -21
  288. package/esm/formStepper/components/formStep.js +59 -9
  289. package/esm/formStepper/formStepper.js +123 -32
  290. package/esm/formStepperButtons/formStepperButtons.js +178 -37
  291. package/esm/groupsFilter/groupsHelper.d.ts +1 -1
  292. package/esm/groupsFilterRaw/groupsFilterAdjustmentState.js +152 -14
  293. package/esm/groupsFilterRaw/groupsFilterBox.js +131 -31
  294. package/esm/groupsFilterRaw/groupsFilterCommon.js +69 -7
  295. package/esm/groupsFilterRaw/groupsFilterCurrentlySelectedState.js +178 -24
  296. package/esm/groupsFilterRaw/groupsFilterHelper.d.ts +2 -1
  297. package/esm/groupsFilterRaw/groupsFilterHelper.js +279 -168
  298. package/esm/groupsFilterRaw/groupsFilterInitialState.js +260 -17
  299. package/esm/groupsFilterRaw/groupsFilterMenu.js +118 -8
  300. package/esm/groupsFilterRaw/groupsFilterRaw.d.ts +1 -0
  301. package/esm/groupsFilterRaw/groupsFilterRaw.js +811 -308
  302. package/esm/groupsFilterRaw/groupsFilterTestData.d.ts +155 -2
  303. package/esm/groupsFilterRaw/groupsFilterTestData.js +152 -57
  304. package/esm/groupsFilterRaw/groupsFilterTrigger.js +133 -34
  305. package/esm/groupsFilterRaw/groupsHelper.js +733 -207
  306. package/esm/groupsFilterRaw/stateReducer/stateReducerHelper.js +3 -1
  307. package/esm/groupsFilterRaw/types.d.ts +1 -0
  308. package/esm/header/components/collapsedItemsControl/collapsedItemsControl.js +101 -51
  309. package/esm/header/components/mobileFilterControl/mobileFilterControl.js +56 -8
  310. package/esm/header/components/mobileSearchControl/mobileSearchControl.js +113 -13
  311. package/esm/header/headerBack.js +58 -19
  312. package/esm/index.d.ts +1 -0
  313. package/esm/index.js +1 -0
  314. package/esm/list/itemData/itemDataInternal.js +210 -50
  315. package/esm/list/listItem/listItem.js +162 -54
  316. package/esm/menu/components/menuErrorItem.js +27 -4
  317. package/esm/mobileSheet/mobileSheet.js +189 -68
  318. package/esm/modal/modal.js +265 -120
  319. package/esm/nav/nav.js +1 -1
  320. package/esm/nav/navFooter/navFooter.js +76 -38
  321. package/esm/nav/navFooter/navFooterAction/navFooterAction.js +46 -12
  322. package/esm/nav/navHeader/navHeader.js +80 -35
  323. package/esm/nav/navHeader/navHeaderSearch/navHeaderSearch.js +82 -28
  324. package/esm/nav/navItem/navItem.d.ts +3 -3
  325. package/esm/nav/navItem/navItem.js +35 -33
  326. package/esm/nav/navMobileBar/navMobileBar.js +61 -20
  327. package/esm/notification/notification.js +114 -18
  328. package/esm/pagination/paginationArrow.js +75 -10
  329. package/esm/pagination/paginationText/paginationText.js +39 -10
  330. package/esm/pill/components/pillNonActionable/pillNonActionable.js +87 -23
  331. package/esm/pillBox/components/pillBoxItem.js +46 -8
  332. package/esm/pillBox/pillBox.js +115 -19
  333. package/esm/pillExpandable/pillExpandable.js +327 -138
  334. package/esm/rangeRaw/rangeRaw.js +480 -140
  335. package/esm/rangeRaw/utils/rangeHelper.js +203 -38
  336. package/esm/searchInputRaw/searchInputRaw.js +145 -43
  337. package/esm/skeleton/skeleton.js +45 -5
  338. package/esm/sortControl/sortControl.js +146 -41
  339. package/esm/stepperRaw/stepperRaw.js +112 -41
  340. package/esm/storybookHelpers/dataGridWithDifferentCellOptions/components/EntitiesListAction.js +178 -19
  341. package/esm/summary/summary.js +88 -7
  342. package/esm/table/actions/actionsMenu.js +165 -77
  343. package/esm/table/flexible/columnSettings.js +74 -9
  344. package/esm/table/flexible/columnsList.js +104 -42
  345. package/esm/table/flexible/columnsPopup.js +71 -19
  346. package/esm/table/nested/useNestedRows.js +161 -76
  347. package/esm/table/selectable/selectableHeader.js +174 -40
  348. package/esm/table/selectable/useSelectableRows.js +264 -190
  349. package/esm/table/sortable/sortableHeader.js +147 -74
  350. package/esm/tabs/tabs.js +221 -117
  351. package/esm/timePickerRaw/timePickerRaw.js +272 -57
  352. package/esm/toastRaw/toastRaw.js +132 -31
  353. package/esm/toggleButton/toggleButton.d.ts +0 -1
  354. package/esm/toggleButtonRaw/toggleButtonRaw.d.ts +1 -0
  355. package/esm/toggleButtonRaw/toggleButtonRaw.js +111 -18
  356. package/esm/utils/formatDate.js +995 -116
  357. package/{dist/utils/localization/translations/cs-json.js → esm/utils/localization/translations/cs.json} +11 -15
  358. package/{dist/utils/localization/translations/da-DK-json.js → esm/utils/localization/translations/da-DK.json} +31 -26
  359. package/{dist/utils/localization/translations/de-json.js → esm/utils/localization/translations/de.json} +12 -16
  360. package/esm/utils/localization/translations/en.json +308 -0
  361. package/{dist/utils/localization/translations/es-json.js → esm/utils/localization/translations/es.json} +11 -15
  362. package/{dist/utils/localization/translations/fi-FI-json.js → esm/utils/localization/translations/fi-FI.json} +31 -26
  363. package/{dist/utils/localization/translations/fr-FR-json.js → esm/utils/localization/translations/fr-FR.json} +12 -15
  364. package/{dist/utils/localization/translations/fr-json.js → esm/utils/localization/translations/fr.json} +11 -15
  365. package/{dist/utils/localization/translations/hu-HU-json.js → esm/utils/localization/translations/hu-HU.json} +31 -26
  366. package/{dist/utils/localization/translations/id-json.js → esm/utils/localization/translations/id.json} +11 -16
  367. package/{dist/utils/localization/translations/it-json.js → esm/utils/localization/translations/it.json} +11 -15
  368. package/{dist/utils/localization/translations/ja-json.js → esm/utils/localization/translations/ja.json} +11 -15
  369. package/{dist/utils/localization/translations/ko-KR-json.js → esm/utils/localization/translations/ko-KR.json} +24 -26
  370. package/{dist/utils/localization/translations/ms-json.js → esm/utils/localization/translations/ms.json} +11 -15
  371. package/{dist/utils/localization/translations/nb-NO-json.js → esm/utils/localization/translations/nb-NO.json} +31 -26
  372. package/{dist/utils/localization/translations/nl-json.js → esm/utils/localization/translations/nl.json} +11 -15
  373. package/{dist/utils/localization/translations/pl-json.js → esm/utils/localization/translations/pl.json} +11 -15
  374. package/{dist/utils/localization/translations/pt-BR-json.js → esm/utils/localization/translations/pt-BR.json} +11 -15
  375. package/{dist/utils/localization/translations/sk-SK-json.js → esm/utils/localization/translations/sk-SK.json} +31 -26
  376. package/{dist/utils/localization/translations/sv-json.js → esm/utils/localization/translations/sv.json} +11 -15
  377. package/{dist/utils/localization/translations/th-json.js → esm/utils/localization/translations/th.json} +11 -15
  378. package/{dist/utils/localization/translations/tr-json.js → esm/utils/localization/translations/tr.json} +11 -15
  379. package/{dist/utils/localization/translations/zh-Hans-json.js → esm/utils/localization/translations/zh-Hans.json} +11 -15
  380. package/{dist/utils/localization/translations/zh-TW-json.js → esm/utils/localization/translations/zh-TW.json} +11 -26
  381. package/esm/utils/localization/translationsDictionary.d.ts +2 -0
  382. package/esm/utils/localization/translationsDictionary.js +59 -0
  383. package/esm/utils/localization/useLanguage.js +1 -50
  384. package/package.json +19 -12
  385. package/dist/utils/localization/translations/cs-json.d.ts +0 -251
  386. package/dist/utils/localization/translations/da-DK-json.d.ts +0 -252
  387. package/dist/utils/localization/translations/de-json.d.ts +0 -251
  388. package/dist/utils/localization/translations/en-json.d.ts +0 -314
  389. package/dist/utils/localization/translations/en-json.js +0 -317
  390. package/dist/utils/localization/translations/es-json.d.ts +0 -251
  391. package/dist/utils/localization/translations/fi-FI-json.d.ts +0 -252
  392. package/dist/utils/localization/translations/fr-FR-json.d.ts +0 -250
  393. package/dist/utils/localization/translations/fr-json.d.ts +0 -251
  394. package/dist/utils/localization/translations/hu-HU-json.d.ts +0 -252
  395. package/dist/utils/localization/translations/id-json.d.ts +0 -252
  396. package/dist/utils/localization/translations/it-json.d.ts +0 -251
  397. package/dist/utils/localization/translations/ja-json.d.ts +0 -251
  398. package/dist/utils/localization/translations/ko-KR-json.d.ts +0 -258
  399. package/dist/utils/localization/translations/ms-json.d.ts +0 -251
  400. package/dist/utils/localization/translations/nb-NO-json.d.ts +0 -252
  401. package/dist/utils/localization/translations/nl-json.d.ts +0 -251
  402. package/dist/utils/localization/translations/pl-json.d.ts +0 -251
  403. package/dist/utils/localization/translations/pt-BR-json.d.ts +0 -251
  404. package/dist/utils/localization/translations/sk-SK-json.d.ts +0 -251
  405. package/dist/utils/localization/translations/sv-json.d.ts +0 -251
  406. package/dist/utils/localization/translations/th-json.d.ts +0 -251
  407. package/dist/utils/localization/translations/tr-json.d.ts +0 -251
  408. package/dist/utils/localization/translations/zh-Hans-json.d.ts +0 -251
  409. package/dist/utils/localization/translations/zh-TW-json.d.ts +0 -271
  410. package/esm/utils/localization/translations/cs-json.d.ts +0 -251
  411. package/esm/utils/localization/translations/da-DK-json.d.ts +0 -252
  412. package/esm/utils/localization/translations/de-json.d.ts +0 -251
  413. package/esm/utils/localization/translations/en-json.d.ts +0 -314
  414. package/esm/utils/localization/translations/en-json.js +0 -314
  415. package/esm/utils/localization/translations/es-json.d.ts +0 -251
  416. package/esm/utils/localization/translations/fi-FI-json.d.ts +0 -252
  417. package/esm/utils/localization/translations/fr-FR-json.d.ts +0 -250
  418. package/esm/utils/localization/translations/fr-json.d.ts +0 -251
  419. package/esm/utils/localization/translations/hu-HU-json.d.ts +0 -252
  420. package/esm/utils/localization/translations/id-json.d.ts +0 -252
  421. package/esm/utils/localization/translations/it-json.d.ts +0 -251
  422. package/esm/utils/localization/translations/ja-json.d.ts +0 -251
  423. package/esm/utils/localization/translations/ko-KR-json.d.ts +0 -258
  424. package/esm/utils/localization/translations/ms-json.d.ts +0 -251
  425. package/esm/utils/localization/translations/nb-NO-json.d.ts +0 -252
  426. package/esm/utils/localization/translations/nl-json.d.ts +0 -251
  427. package/esm/utils/localization/translations/pl-json.d.ts +0 -251
  428. package/esm/utils/localization/translations/pt-BR-json.d.ts +0 -251
  429. package/esm/utils/localization/translations/sk-SK-json.d.ts +0 -251
  430. package/esm/utils/localization/translations/sv-json.d.ts +0 -251
  431. package/esm/utils/localization/translations/th-json.d.ts +0 -251
  432. package/esm/utils/localization/translations/tr-json.d.ts +0 -251
  433. package/esm/utils/localization/translations/zh-Hans-json.d.ts +0 -251
  434. package/esm/utils/localization/translations/zh-TW-json.d.ts +0 -271
@@ -1,7 +1,117 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ const {
4
+ injectString
5
+ } = require("../utils/localization/translationsDictionary");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
3
9
  exports.TRANSLATIONS = exports.DateInputInner = void 0;
4
10
  const jsx_runtime_1 = require("react/jsx-runtime");
11
+ injectString("da-DK", "Start date has been adjusted.", "Startdatoen er blevet justeret.");
12
+ injectString("en", "Start date has been adjusted.", "Start date has been adjusted.");
13
+ injectString("fi-FI", "Start date has been adjusted.", "Aloitusp\xE4iv\xE4\xE4 on mukautettu.");
14
+ injectString("hu-HU", "Start date has been adjusted.", "A kezd\u0151 d\xE1tumot m\xF3dos\xEDtottuk.");
15
+ injectString("ko-KR", "Start date has been adjusted.", "\uC2DC\uC791 \uB0A0\uC9DC\uAC00 \uC870\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
16
+ injectString("nb-NO", "Start date has been adjusted.", "Startdatoen er justert.");
17
+ injectString("sk-SK", "Start date has been adjusted.", "D\xE1tum za\u010Diatku bol upraven\xFD.");
18
+ injectString("zh-TW", "Start date has been adjusted.", "\u5DF2\u8ABF\u6574\u958B\u59CB\u65E5\u671F\u3002");
19
+ injectString("da-DK", "End date has been adjusted.", "Slutdatoen er blevet justeret.");
20
+ injectString("en", "End date has been adjusted.", "End date has been adjusted.");
21
+ injectString("fi-FI", "End date has been adjusted.", "Lopetusp\xE4iv\xE4m\xE4\xE4r\xE4 on mukautettu.");
22
+ injectString("hu-HU", "End date has been adjusted.", "A z\xE1r\xF3 d\xE1tumot m\xF3dos\xEDtottuk.");
23
+ injectString("ko-KR", "End date has been adjusted.", "\uC885\uB8CC \uB0A0\uC9DC\uAC00 \uC870\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
24
+ injectString("nb-NO", "End date has been adjusted.", "Endedatoen er justert.");
25
+ injectString("sk-SK", "End date has been adjusted.", "D\xE1tum ukon\u010Denia bol upraven\xFD.");
26
+ injectString("zh-TW", "End date has been adjusted.", "\u5DF2\u8ABF\u6574\u7D50\u675F\u65E5\u671F\u3002");
27
+ injectString("da-DK", "Start time has been adjusted.", "Starttidspunktet er blevet justeret.");
28
+ injectString("en", "Start time has been adjusted.", "Start time has been adjusted.");
29
+ injectString("fi-FI", "Start time has been adjusted.", "Aloitusaika on s\xE4\xE4detty.");
30
+ injectString("hu-HU", "Start time has been adjusted.", "A kezd\u0151 id\u0151pontot m\xF3dos\xEDtottuk.");
31
+ injectString("ko-KR", "Start time has been adjusted.", "\uC2DC\uC791 \uC2DC\uAC04\uC774 \uC870\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
32
+ injectString("nb-NO", "Start time has been adjusted.", "Starttiden er justert.");
33
+ injectString("sk-SK", "Start time has been adjusted.", "\u010Cas za\u010Datia bol upraven\xFD.");
34
+ injectString("zh-TW", "Start time has been adjusted.", "\u5DF2\u8ABF\u6574\u958B\u59CB\u6642\u9593\u3002");
35
+ injectString("da-DK", "End time has been adjusted.", "Sluttidspunktet er blevet justeret.");
36
+ injectString("en", "End time has been adjusted.", "End time has been adjusted.");
37
+ injectString("fi-FI", "End time has been adjusted.", "Loppuaika on s\xE4\xE4detty.");
38
+ injectString("hu-HU", "End time has been adjusted.", "A z\xE1r\xF3 id\u0151pontot m\xF3dos\xEDtottuk.");
39
+ injectString("ko-KR", "End time has been adjusted.", "\uC885\uB8CC \uC2DC\uAC04\uC774 \uC870\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
40
+ injectString("nb-NO", "End time has been adjusted.", "Endetiden er justert.");
41
+ injectString("sk-SK", "End time has been adjusted.", "\u010Cas ukon\u010Denia bol upraven\xFD.");
42
+ injectString("zh-TW", "End time has been adjusted.", "\u5DF2\u8ABF\u6574\u7D50\u675F\u6642\u9593\u3002");
43
+ injectString("cs", "Start date", "Datum za\u010D\xE1tku");
44
+ injectString("da-DK", "Start date", "Startdato");
45
+ injectString("de", "Start date", "Startdatum");
46
+ injectString("en", "Start date", "Start date");
47
+ injectString("es", "Start date", "Fecha de inicio");
48
+ injectString("fi-FI", "Start date", "Aloitusp\xE4iv\xE4m\xE4\xE4r\xE4");
49
+ injectString("fr", "Start date", "Date de d\xE9but");
50
+ injectString("fr-FR", "Start date", "Date de d\xE9but");
51
+ injectString("hu-HU", "Start date", "Kezd\u0151d\xE1tum");
52
+ injectString("id", "Start date", "Tanggal mulai");
53
+ injectString("it", "Start date", "Data di inizio");
54
+ injectString("ja", "Start date", "\u958B\u59CB\u65E5");
55
+ injectString("ko-KR", "Start date", "\uC2DC\uC791 \uB0A0\uC9DC");
56
+ injectString("ms", "Start date", "Tarikh mula");
57
+ injectString("nb-NO", "Start date", "Startdato");
58
+ injectString("nl", "Start date", "Startdatum");
59
+ injectString("pl", "Start date", "Data rozpocz\u0119cia");
60
+ injectString("pt-BR", "Start date", "Data de in\xEDcio");
61
+ injectString("sk-SK", "Start date", "D\xE1tum za\u010Diatku");
62
+ injectString("sv", "Start date", "Startdatum");
63
+ injectString("th", "Start date", "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19");
64
+ injectString("tr", "Start date", "Ba\u015Flang\u0131\xE7 tarihi");
65
+ injectString("zh-Hans", "Start date", "\u8D77\u59CB\u65E5\u671F");
66
+ injectString("zh-TW", "Start date", "\u958B\u59CB\u65E5\u671F");
67
+ injectString("cs", "Pick a date", "Vyberte datum");
68
+ injectString("da-DK", "Pick a date", "V\xE6lg en dato");
69
+ injectString("de", "Pick a date", "Datum ausw\xE4hlen");
70
+ injectString("en", "Pick a date", "Pick a date");
71
+ injectString("es", "Pick a date", "Elegir una fecha");
72
+ injectString("fi-FI", "Pick a date", "Valitse p\xE4iv\xE4m\xE4\xE4r\xE4");
73
+ injectString("fr", "Pick a date", "Choisir une date");
74
+ injectString("fr-FR", "Pick a date", "S\xE9lectionner une date");
75
+ injectString("hu-HU", "Pick a date", "V\xE1lassz d\xE1tumot");
76
+ injectString("id", "Pick a date", "Pilih tanggal");
77
+ injectString("it", "Pick a date", "Scegliere una data");
78
+ injectString("ja", "Pick a date", "\u65E5\u4ED8\u3092\u9078\u629E");
79
+ injectString("ko-KR", "Pick a date", "\uB0A0\uC9DC \uC120\uD0DD");
80
+ injectString("ms", "Pick a date", "Pilih tarikh");
81
+ injectString("nb-NO", "Pick a date", "Velg en dato");
82
+ injectString("nl", "Pick a date", "Kies een datum");
83
+ injectString("pl", "Pick a date", "Wybierz dat\u0119");
84
+ injectString("pt-BR", "Pick a date", "Escolha uma data");
85
+ injectString("sk-SK", "Pick a date", "Vyber d\xE1tum");
86
+ injectString("sv", "Pick a date", "V\xE4lj ett datum");
87
+ injectString("th", "Pick a date", "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48");
88
+ injectString("tr", "Pick a date", "Bir tarih se\xE7in");
89
+ injectString("zh-Hans", "Pick a date", "\u9009\u62E9\u65E5\u671F");
90
+ injectString("zh-TW", "Pick a date", "\u9078\u64C7\u65E5\u671F");
91
+ injectString("cs", "End date", "Datum konce");
92
+ injectString("da-DK", "End date", "Slutdato");
93
+ injectString("de", "End date", "Enddatum");
94
+ injectString("en", "End date", "End date");
95
+ injectString("es", "End date", "Fecha de desactivaci\xF3n");
96
+ injectString("fi-FI", "End date", "Lopetusp\xE4iv\xE4m\xE4\xE4r\xE4");
97
+ injectString("fr", "End date", "Date de fin");
98
+ injectString("fr-FR", "End date", "Date de fin");
99
+ injectString("hu-HU", "End date", "Z\xE1r\xF3d\xE1tum");
100
+ injectString("id", "End date", "Tanggal akhir");
101
+ injectString("it", "End date", "Data finale");
102
+ injectString("ja", "End date", "\u7D42\u4E86\u65E5");
103
+ injectString("ko-KR", "End date", "\uC885\uB8CC \uB0A0\uC9DC");
104
+ injectString("ms", "End date", "Tarikh tamat");
105
+ injectString("nb-NO", "End date", "Endedato");
106
+ injectString("nl", "End date", "Einddatum");
107
+ injectString("pl", "End date", "Data zako\u0144czenia");
108
+ injectString("pt-BR", "End date", "Data final");
109
+ injectString("sk-SK", "End date", "D\xE1tum ukon\u010Denia");
110
+ injectString("sv", "End date", "Slutdatum");
111
+ injectString("th", "End date", "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14");
112
+ injectString("tr", "End date", "Biti\u015F tarihi");
113
+ injectString("zh-Hans", "End date", "\u7ED3\u675F\u65E5\u671F");
114
+ injectString("zh-TW", "End date", "\u7D50\u675F\u65E5\u671F");
5
115
  const react_1 = require("react");
6
116
  const calendar_1 = require("../calendar/calendar");
7
117
  const dateUtils_1 = require("../calendar/dateUtils");
@@ -12,483 +122,688 @@ const dateInputInnerControlBlock_1 = require("./dateInputInnerControlBlock");
12
122
  const userFormatContext_1 = require("../utils/userFormat/userFormatContext");
13
123
  const dateInputInnerReducer_1 = require("./dateInputInnerReducer");
14
124
  const useTodayButton_1 = require("../utils/dateInputUtils/useTodayButton");
15
- const DateInputInner = ({ id, value, dateFormatter, dateDeformatter, dateFormat, onChange, dateRangeMode, selectTime, disableFutureDates, disablePastDates, disableDatesAfter, disableDatesBefore, startDayOfWeek, yearRange, title, isMobileView, requireSelection = false }) => {
16
- var _a;
17
- const { translate } = (0, useLanguage_1.useLanguage)();
18
- const { toLocalDateTime, toReverseOffsetDateTime } = (0, react_1.useContext)(userFormatContext_1.userFormatContext);
19
- const { isTodayDisabled, todayFrom, todayTo } = (0, useTodayButton_1.useTodayButton)(dateRangeMode, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
20
- const driveClassName = (0, useDriveClassName_1.useDriveClassName)("zen-date-input-inner");
21
- const [state, dispatchState] = (0, react_1.useReducer)(dateInputInnerReducer_1.dateInputInnerReducer, (0, dateInputInnerReducer_1.getInitialDateInputInnerState)(id, value.from ? dateFormatter(value.from) : "", value.to ? dateFormatter(value.to) : "", dateRangeMode));
22
- const currentDateValuesRef = (0, react_1.useRef)({ from: value.from, to: value.to });
23
- const currentSelectedFieldRef = (0, react_1.useRef)(undefined);
24
- const startInputRef = (0, react_1.useRef)(null);
25
- const endInputRef = (0, react_1.useRef)(null);
26
- (0, react_1.useEffect)(() => {
27
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartDateText, payload: value.from ? dateFormatter(value.from) : "" });
28
- }, [value.from, dateFormatter]);
29
- (0, react_1.useEffect)(() => {
30
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndDateText, payload: value.to ? dateFormatter(value.to) : "" });
31
- }, [value.to, dateFormatter]);
32
- (0, react_1.useEffect)(() => {
33
- var _a, _b;
34
- if (value.from !== currentDateValuesRef.current.from || value.to !== currentDateValuesRef.current.to) {
35
- currentDateValuesRef.current = { from: value.from, to: value.to };
36
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField, payload: "start" });
37
- currentSelectedFieldRef.current = undefined;
38
- (_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
39
- (_b = startInputRef.current) === null || _b === void 0 ? void 0 : _b.select();
40
- }
41
- }, [value.from, value.to, currentDateValuesRef]);
42
- (0, react_1.useEffect)(() => {
43
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeDateRangeMode, payload: dateRangeMode || false });
44
- }, [dateRangeMode]);
45
- (0, react_1.useEffect)(() => {
46
- if (startInputRef.current) {
47
- startInputRef.current.focus();
48
- startInputRef.current.select();
49
- }
50
- }, [startInputRef]);
51
- const getAssistiveText = (0, react_1.useCallback)((txtKey, isStart) => {
52
- if (txtKey === dateInputInnerReducer_1.AssistiveText.DateAdjusted) {
53
- return translate(isStart ? "Start date has been adjusted." : "End date has been adjusted.");
54
- }
55
- if (txtKey === dateInputInnerReducer_1.AssistiveText.TimeAdjusted) {
56
- return translate(isStart ? "Start time has been adjusted." : "End time has been adjusted.");
57
- }
58
- return undefined;
59
- }, [translate]);
60
- const calendarValue = (0, react_1.useMemo)(() => ({ from: value.from ? toLocalDateTime(value.from).toISOString() : undefined, to: value.to ? toLocalDateTime(value.to).toISOString() : undefined }), [toLocalDateTime, value.from, value.to]);
61
- const disableDatesBeforeValue = (0, react_1.useMemo)(() => disableDatesBefore ? toLocalDateTime(disableDatesBefore).toISOString() : undefined, [toLocalDateTime, disableDatesBefore]);
62
- const disableDatesAfterValue = (0, react_1.useMemo)(() => disableDatesAfter ? toLocalDateTime(disableDatesAfter).toISOString() : undefined, [toLocalDateTime, disableDatesAfter]);
63
- const timePickerValueFrom = (0, react_1.useMemo)(() => value.from ? toLocalDateTime(value.from) : undefined, [toLocalDateTime, value.from]);
64
- const [timePickerValueFromPrev, setTimePickerValueFromPrev] = (0, react_1.useState)(timePickerValueFrom);
65
- (0, react_1.useEffect)(() => {
66
- if (timePickerValueFrom) {
67
- setTimePickerValueFromPrev(timePickerValueFrom);
68
- }
69
- }, [timePickerValueFrom]);
70
- const timePickerValueTo = (0, react_1.useMemo)(() => value.to ? toLocalDateTime(value.to) : undefined, [toLocalDateTime, value.to]);
71
- const [timePickerValueToPrev, setTimePickerValueToPrev] = (0, react_1.useState)(timePickerValueTo);
72
- (0, react_1.useEffect)(() => {
73
- if (timePickerValueTo) {
74
- setTimePickerValueToPrev(timePickerValueTo);
75
- }
76
- }, [timePickerValueTo]);
77
- const resetStartDateChanges = (0, react_1.useCallback)((resetKeydownBehavior = false) => {
78
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartDateText, payload: value.from ? dateFormatter(value.from) : "" });
79
- resetKeydownBehavior && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior, payload: undefined });
80
- }, [dateFormatter, value.from]);
81
- const adjustTime = (0, react_1.useCallback)((dDate, dateLike) => {
82
- if (!dateLike) {
83
- return dDate;
84
- }
85
- // const dateLike = toLocalDateTime(prevVal);
86
- dDate.setHours(dateLike.getHours());
87
- dDate.setMinutes(dateLike.getMinutes());
88
- dDate.setSeconds(dateLike.getSeconds());
89
- return dDate;
90
- }, []);
91
- const startDateChangeHandler = (0, react_1.useCallback)((e, isBlur = false) => {
92
- const newValue = e.target.value;
125
+ const DateInputInner = ({
126
+ id,
127
+ value,
128
+ dateFormatter,
129
+ dateDeformatter,
130
+ dateFormat,
131
+ onChange,
132
+ dateRangeMode,
133
+ selectTime,
134
+ disableFutureDates,
135
+ disablePastDates,
136
+ disableDatesAfter,
137
+ disableDatesBefore,
138
+ startDayOfWeek,
139
+ yearRange,
140
+ title,
141
+ isMobileView,
142
+ requireSelection = false
143
+ }) => {
144
+ var _a;
145
+ const {
146
+ translate
147
+ } = (0, useLanguage_1.useLanguage)();
148
+ const {
149
+ toLocalDateTime,
150
+ toReverseOffsetDateTime
151
+ } = (0, react_1.useContext)(userFormatContext_1.userFormatContext);
152
+ const {
153
+ isTodayDisabled,
154
+ todayFrom,
155
+ todayTo
156
+ } = (0, useTodayButton_1.useTodayButton)(dateRangeMode, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
157
+ const driveClassName = (0, useDriveClassName_1.useDriveClassName)("zen-date-input-inner");
158
+ const [state, dispatchState] = (0, react_1.useReducer)(dateInputInnerReducer_1.dateInputInnerReducer, (0, dateInputInnerReducer_1.getInitialDateInputInnerState)(id, value.from ? dateFormatter(value.from) : "", value.to ? dateFormatter(value.to) : "", dateRangeMode));
159
+ const currentDateValuesRef = (0, react_1.useRef)({
160
+ from: value.from,
161
+ to: value.to
162
+ });
163
+ const currentSelectedFieldRef = (0, react_1.useRef)(undefined);
164
+ const startInputRef = (0, react_1.useRef)(null);
165
+ const endInputRef = (0, react_1.useRef)(null);
166
+ (0, react_1.useEffect)(() => {
167
+ dispatchState({
168
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartDateText,
169
+ payload: value.from ? dateFormatter(value.from) : ""
170
+ });
171
+ }, [value.from, dateFormatter]);
172
+ (0, react_1.useEffect)(() => {
173
+ dispatchState({
174
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndDateText,
175
+ payload: value.to ? dateFormatter(value.to) : ""
176
+ });
177
+ }, [value.to, dateFormatter]);
178
+ (0, react_1.useEffect)(() => {
179
+ var _a, _b;
180
+ if (value.from !== currentDateValuesRef.current.from || value.to !== currentDateValuesRef.current.to) {
181
+ currentDateValuesRef.current = {
182
+ from: value.from,
183
+ to: value.to
184
+ };
185
+ dispatchState({
186
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField,
187
+ payload: "start"
188
+ });
189
+ currentSelectedFieldRef.current = undefined;
190
+ (_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
191
+ (_b = startInputRef.current) === null || _b === void 0 ? void 0 : _b.select();
192
+ }
193
+ }, [value.from, value.to, currentDateValuesRef]);
194
+ (0, react_1.useEffect)(() => {
195
+ dispatchState({
196
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeDateRangeMode,
197
+ payload: dateRangeMode || false
198
+ });
199
+ }, [dateRangeMode]);
200
+ (0, react_1.useEffect)(() => {
201
+ if (startInputRef.current) {
202
+ startInputRef.current.focus();
203
+ startInputRef.current.select();
204
+ }
205
+ }, [startInputRef]);
206
+ const getAssistiveText = (0, react_1.useCallback)((txtKey, isStart) => {
207
+ if (txtKey === dateInputInnerReducer_1.AssistiveText.DateAdjusted) {
208
+ return isStart ? translate("Start date has been adjusted.") : translate("End date has been adjusted.");
209
+ }
210
+ if (txtKey === dateInputInnerReducer_1.AssistiveText.TimeAdjusted) {
211
+ return isStart ? translate("Start time has been adjusted.") : translate("End time has been adjusted.");
212
+ }
213
+ return undefined;
214
+ }, [translate]);
215
+ const calendarValue = (0, react_1.useMemo)(() => ({
216
+ from: value.from ? toLocalDateTime(value.from).toISOString() : undefined,
217
+ to: value.to ? toLocalDateTime(value.to).toISOString() : undefined
218
+ }), [toLocalDateTime, value.from, value.to]);
219
+ const disableDatesBeforeValue = (0, react_1.useMemo)(() => disableDatesBefore ? toLocalDateTime(disableDatesBefore).toISOString() : undefined, [toLocalDateTime, disableDatesBefore]);
220
+ const disableDatesAfterValue = (0, react_1.useMemo)(() => disableDatesAfter ? toLocalDateTime(disableDatesAfter).toISOString() : undefined, [toLocalDateTime, disableDatesAfter]);
221
+ const timePickerValueFrom = (0, react_1.useMemo)(() => value.from ? toLocalDateTime(value.from) : undefined, [toLocalDateTime, value.from]);
222
+ const [timePickerValueFromPrev, setTimePickerValueFromPrev] = (0, react_1.useState)(timePickerValueFrom);
223
+ (0, react_1.useEffect)(() => {
224
+ if (timePickerValueFrom) {
225
+ setTimePickerValueFromPrev(timePickerValueFrom);
226
+ }
227
+ }, [timePickerValueFrom]);
228
+ const timePickerValueTo = (0, react_1.useMemo)(() => value.to ? toLocalDateTime(value.to) : undefined, [toLocalDateTime, value.to]);
229
+ const [timePickerValueToPrev, setTimePickerValueToPrev] = (0, react_1.useState)(timePickerValueTo);
230
+ (0, react_1.useEffect)(() => {
231
+ if (timePickerValueTo) {
232
+ setTimePickerValueToPrev(timePickerValueTo);
233
+ }
234
+ }, [timePickerValueTo]);
235
+ const resetStartDateChanges = (0, react_1.useCallback)((resetKeydownBehavior = false) => {
236
+ dispatchState({
237
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartDateText,
238
+ payload: value.from ? dateFormatter(value.from) : ""
239
+ });
240
+ resetKeydownBehavior && dispatchState({
241
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior,
242
+ payload: undefined
243
+ });
244
+ }, [dateFormatter, value.from]);
245
+ const adjustTime = (0, react_1.useCallback)((dDate, dateLike) => {
246
+ if (!dateLike) {
247
+ return dDate;
248
+ }
249
+ // const dateLike = toLocalDateTime(prevVal);
250
+ dDate.setHours(dateLike.getHours());
251
+ dDate.setMinutes(dateLike.getMinutes());
252
+ dDate.setSeconds(dateLike.getSeconds());
253
+ return dDate;
254
+ }, []);
255
+ const startDateChangeHandler = (0, react_1.useCallback)((e, isBlur = false) => {
256
+ const newValue = e.target.value;
257
+ currentSelectedFieldRef.current = undefined;
258
+ let deformattedDate = dateDeformatter(newValue);
259
+ if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
260
+ resetStartDateChanges(true);
261
+ return;
262
+ }
263
+ deformattedDate = adjustTime(deformattedDate, value.from ? toLocalDateTime(value.from) : undefined);
264
+ if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
265
+ // if date is invalid, do not update the state
266
+ resetStartDateChanges(true);
267
+ return;
268
+ }
269
+ const newValidDates = (0, dateUtils_1.getValidDatesForStart)(toReverseOffsetDateTime, deformattedDate, value.to ? toLocalDateTime(value.to) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
270
+ const newStateValue = {
271
+ start: dateFormatter(toReverseOffsetDateTime(newValidDates.start)),
272
+ end: dateRangeMode ? newValidDates.end ? dateFormatter(toReverseOffsetDateTime(newValidDates.end)) : "" : value.to || "",
273
+ startAssistiveText: isBlur && state.currentActiveField === "start" ? dateInputInnerReducer_1.AssistiveText.None : undefined,
274
+ endAssistiveText: isBlur && state.currentActiveField === "start" ? value.to && newValidDates.end && newValidDates.end.getTime() !== new Date(toLocalDateTime(value.to)).getTime() ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None : undefined
275
+ };
276
+ const startDateToPass = toReverseOffsetDateTime(newValidDates.start).toISOString();
277
+ const endDateToPass = dateRangeMode ? newValidDates.end ? toReverseOffsetDateTime(newValidDates.end).toISOString() : undefined : value.to;
278
+ currentDateValuesRef.current = {
279
+ from: startDateToPass,
280
+ to: endDateToPass
281
+ };
282
+ dispatchState({
283
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
284
+ payload: newStateValue
285
+ });
286
+ const isDateChanged = value.from !== startDateToPass || value.to !== endDateToPass;
287
+ isDateChanged && onChange({
288
+ from: startDateToPass,
289
+ to: endDateToPass
290
+ });
291
+ }, [dateDeformatter, adjustTime, value.from, value.to, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, toLocalDateTime, dateFormatter, dateRangeMode, state.currentActiveField, onChange, resetStartDateChanges]);
292
+ const startDateChangeOnArrow = (0, react_1.useCallback)((oldValue, delta) => {
293
+ let deformattedDate = dateDeformatter(oldValue);
294
+ deformattedDate.setDate(deformattedDate.getDate() + delta);
295
+ if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
296
+ resetStartDateChanges();
297
+ return;
298
+ }
299
+ deformattedDate = adjustTime(deformattedDate, value.from ? toLocalDateTime(value.from) : undefined);
300
+ if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
301
+ // if date is invalid, do not update the state
302
+ resetStartDateChanges();
303
+ return;
304
+ }
305
+ const newValidDates = (0, dateUtils_1.getValidDatesForStart)(toReverseOffsetDateTime, deformattedDate, value.to ? toLocalDateTime(value.to) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
306
+ const newStateValue = {
307
+ emittedBy: "start",
308
+ start: dateFormatter(toReverseOffsetDateTime(newValidDates.start)),
309
+ end: dateRangeMode ? newValidDates.end ? dateFormatter(toReverseOffsetDateTime(newValidDates.end)) : "" : value.to || "",
310
+ startAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
311
+ endAssistiveText: value.to && newValidDates.end && newValidDates.end.getTime() !== new Date(toLocalDateTime(value.to)).getTime() ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None,
312
+ inputKeyDownBehavior: "start"
313
+ };
314
+ const startDateToPass = toReverseOffsetDateTime(newValidDates.start).toISOString();
315
+ const endDateToPass = dateRangeMode ? newValidDates.end ? toReverseOffsetDateTime(newValidDates.end).toISOString() : undefined : value.to;
316
+ currentDateValuesRef.current = {
317
+ from: startDateToPass,
318
+ to: endDateToPass
319
+ };
320
+ dispatchState({
321
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
322
+ payload: newStateValue
323
+ });
324
+ onChange({
325
+ from: startDateToPass,
326
+ to: endDateToPass
327
+ });
328
+ currentSelectedFieldRef.current = startInputRef.current || undefined;
329
+ }, [dateDeformatter, adjustTime, value.from, value.to, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, toLocalDateTime, dateFormatter, dateRangeMode, onChange, resetStartDateChanges]);
330
+ const startTimeChangeHandler = (0, react_1.useCallback)(time => {
331
+ currentSelectedFieldRef.current = undefined;
332
+ const startDateToCopyTime = time;
333
+ let newValueFrom = value.from ? toLocalDateTime(value.from) : startDateToCopyTime;
334
+ newValueFrom = adjustTime(newValueFrom, startDateToCopyTime);
335
+ if (!(0, dateUtils_1.isValidDate)(newValueFrom)) {
336
+ resetStartDateChanges();
337
+ return;
338
+ }
339
+ if ((0, dateUtils_1.isValidationDateError)(newValueFrom, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
340
+ const newValidDate = (0, dateUtils_1.getValidTime)(newValueFrom, value.from, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
341
+ if (!newValidDate) {
342
+ resetStartDateChanges();
343
+ return;
344
+ }
345
+ newValueFrom = newValidDate;
346
+ }
347
+ const startEndOrderValid = !dateRangeMode || !value.to ? true : toReverseOffsetDateTime(newValueFrom) <= new Date(value.to);
348
+ const newStateValue = {
349
+ start: dateFormatter(toReverseOffsetDateTime(newValueFrom)),
350
+ end: startEndOrderValid ? dateRangeMode ? value.to ? dateFormatter(value.to) : "" : value.to || "" : dateFormatter(toReverseOffsetDateTime(newValueFrom)),
351
+ startAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
352
+ endAssistiveText: startEndOrderValid ? dateInputInnerReducer_1.AssistiveText.None : dateInputInnerReducer_1.AssistiveText.TimeAdjusted,
353
+ nextActiveField: startEndOrderValid ? undefined : "end"
354
+ };
355
+ const startDateToPass = toReverseOffsetDateTime(newValueFrom).toISOString();
356
+ const endDateToPass = startEndOrderValid ? value.to : toReverseOffsetDateTime(newValueFrom).toISOString();
357
+ currentDateValuesRef.current = {
358
+ from: startDateToPass,
359
+ to: endDateToPass
360
+ };
361
+ dispatchState({
362
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
363
+ payload: newStateValue
364
+ });
365
+ dispatchState({
366
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartAssistiveText,
367
+ payload: dateInputInnerReducer_1.AssistiveText.None
368
+ });
369
+ onChange({
370
+ from: startDateToPass,
371
+ to: endDateToPass
372
+ });
373
+ }, [value.from, value.to, toLocalDateTime, adjustTime, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, dateRangeMode, dateFormatter, onChange, resetStartDateChanges]);
374
+ const resetEndDateChanges = (0, react_1.useCallback)((resetKeydownBehavior = false) => {
375
+ dispatchState({
376
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndDateText,
377
+ payload: value.to ? dateFormatter(value.to) : ""
378
+ });
379
+ resetKeydownBehavior && dispatchState({
380
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior,
381
+ payload: undefined
382
+ });
383
+ }, [dateFormatter, value.to]);
384
+ const endDateChangeHandler = (0, react_1.useCallback)((e, isBlur = false) => {
385
+ const newValue = e.target.value;
386
+ currentSelectedFieldRef.current = undefined;
387
+ let deformattedDate = dateDeformatter(newValue);
388
+ if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
389
+ resetEndDateChanges(true);
390
+ return;
391
+ }
392
+ deformattedDate = adjustTime(deformattedDate, value.to ? toLocalDateTime(value.to) : undefined);
393
+ if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
394
+ // if date is invalid, do not update the state
395
+ resetEndDateChanges(true);
396
+ return;
397
+ }
398
+ const newValidDates = (0, dateUtils_1.getValidDatesForEnd)(toReverseOffsetDateTime, deformattedDate, value.from ? toLocalDateTime(value.from) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
399
+ const newStateValue = {
400
+ start: newValidDates.start ? dateFormatter(toReverseOffsetDateTime(newValidDates.start)) : "",
401
+ end: dateFormatter(toReverseOffsetDateTime(newValidDates.end)),
402
+ startAssistiveText: isBlur && state.currentActiveField === "end" ? value.from && newValidDates.start && newValidDates.start.getTime() !== new Date(toLocalDateTime(value.from)).getTime() ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None : undefined,
403
+ endAssistiveText: isBlur && state.currentActiveField === "end" ? dateInputInnerReducer_1.AssistiveText.None : undefined
404
+ };
405
+ const startDateToPass = newValidDates.start ? toReverseOffsetDateTime(newValidDates.start).toISOString() : undefined;
406
+ const endDateToPass = toReverseOffsetDateTime(newValidDates.end).toISOString();
407
+ currentDateValuesRef.current = {
408
+ from: startDateToPass,
409
+ to: endDateToPass
410
+ };
411
+ dispatchState({
412
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
413
+ payload: newStateValue
414
+ });
415
+ const isDateChanged = value.from !== startDateToPass || value.to !== endDateToPass;
416
+ isDateChanged && onChange({
417
+ from: startDateToPass,
418
+ to: endDateToPass
419
+ });
420
+ }, [dateDeformatter, adjustTime, value.to, value.from, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, toLocalDateTime, dateFormatter, state.currentActiveField, onChange, resetEndDateChanges]);
421
+ const endDateChangeOnArrow = (0, react_1.useCallback)((oldValue, delta) => {
422
+ let deformattedDate = dateDeformatter(oldValue);
423
+ deformattedDate.setDate(deformattedDate.getDate() + delta);
424
+ if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
425
+ resetEndDateChanges();
426
+ return;
427
+ }
428
+ deformattedDate = adjustTime(deformattedDate, value.to ? toLocalDateTime(value.to) : undefined);
429
+ if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
430
+ // if date is invalid, do not update the state
431
+ resetEndDateChanges();
432
+ return;
433
+ }
434
+ const newValidDates = (0, dateUtils_1.getValidDatesForEnd)(toReverseOffsetDateTime, deformattedDate, value.from ? toLocalDateTime(value.from) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
435
+ const newStateValue = {
436
+ emittedBy: "end",
437
+ start: newValidDates.start ? dateFormatter(toReverseOffsetDateTime(newValidDates.start)) : "",
438
+ end: dateFormatter(toReverseOffsetDateTime(newValidDates.end)),
439
+ startAssistiveText: value.from && newValidDates.start && newValidDates.start.getTime() !== new Date(toLocalDateTime(value.from)).getTime() ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None,
440
+ endAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
441
+ inputKeyDownBehavior: "end"
442
+ };
443
+ const startDateToPass = newValidDates.start ? toReverseOffsetDateTime(newValidDates.start).toISOString() : undefined;
444
+ const endDateToPass = toReverseOffsetDateTime(newValidDates.end).toISOString();
445
+ currentDateValuesRef.current = {
446
+ from: startDateToPass,
447
+ to: endDateToPass
448
+ };
449
+ dispatchState({
450
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
451
+ payload: newStateValue
452
+ });
453
+ onChange({
454
+ from: startDateToPass,
455
+ to: endDateToPass
456
+ });
457
+ currentSelectedFieldRef.current = endInputRef.current || undefined;
458
+ }, [dateDeformatter, adjustTime, value.to, value.from, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, toLocalDateTime, dateFormatter, onChange, resetEndDateChanges]);
459
+ const endTimeChangeHandler = (0, react_1.useCallback)(time => {
460
+ const endDateToCopyTime = time;
461
+ currentSelectedFieldRef.current = undefined;
462
+ let newValueTo = value.to ? toLocalDateTime(value.to) : endDateToCopyTime;
463
+ newValueTo = adjustTime(newValueTo, endDateToCopyTime);
464
+ if (!(0, dateUtils_1.isValidDate)(newValueTo)) {
465
+ resetEndDateChanges();
466
+ return;
467
+ }
468
+ if ((0, dateUtils_1.isValidationDateError)(newValueTo, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
469
+ const newValidDate = (0, dateUtils_1.getValidTime)(newValueTo, value.to, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
470
+ if (!newValidDate) {
471
+ resetEndDateChanges();
472
+ return;
473
+ }
474
+ newValueTo = newValidDate;
475
+ return;
476
+ }
477
+ const startEndOrderValid = !dateRangeMode || !value.from ? true : new Date(value.from) <= toReverseOffsetDateTime(newValueTo);
478
+ const newStateValue = {
479
+ start: startEndOrderValid ? value.from ? dateFormatter(toReverseOffsetDateTime(value.from)) : "" : dateFormatter(toReverseOffsetDateTime(newValueTo)),
480
+ end: dateFormatter(toReverseOffsetDateTime(newValueTo)),
481
+ startAssistiveText: startEndOrderValid ? dateInputInnerReducer_1.AssistiveText.None : dateInputInnerReducer_1.AssistiveText.TimeAdjusted,
482
+ endAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
483
+ nextActiveField: startEndOrderValid ? undefined : "start"
484
+ };
485
+ const startDateToPass = startEndOrderValid ? value.from : toReverseOffsetDateTime(newValueTo).toISOString();
486
+ const endDateToPass = toReverseOffsetDateTime(newValueTo).toISOString();
487
+ currentDateValuesRef.current = {
488
+ from: startDateToPass,
489
+ to: endDateToPass
490
+ };
491
+ dispatchState({
492
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
493
+ payload: newStateValue
494
+ });
495
+ dispatchState({
496
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndAssistiveText,
497
+ payload: dateInputInnerReducer_1.AssistiveText.None
498
+ });
499
+ onChange({
500
+ from: startDateToPass,
501
+ to: endDateToPass
502
+ });
503
+ }, [value.to, value.from, toLocalDateTime, adjustTime, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, dateRangeMode, dateFormatter, onChange, resetEndDateChanges]);
504
+ const getCurrentActiveField = (0, react_1.useCallback)(() => state.currentActiveField, [state.currentActiveField]);
505
+ // eslint-disable-next-line complexity
506
+ const calendarChangeHandler = (0, react_1.useCallback)((range, currentActiveField) => {
507
+ currentSelectedFieldRef.current = dateRangeMode ? undefined : startInputRef.current || undefined;
508
+ let currentStartDate = range.from && new Date(range.from);
509
+ const startDateToCopyTime = value.from ? toLocalDateTime(value.from) : timePickerValueFromPrev || new Date((0, dateUtils_1.toDayStart)(toLocalDateTime(new Date()).toISOString()));
510
+ let currentEndDate = range.to && new Date(range.to);
511
+ const endDateToCopyTime = value.to ? toLocalDateTime(value.to) : timePickerValueToPrev || new Date((0, dateUtils_1.toDayStart)(toLocalDateTime(new Date()).toISOString()));
512
+ let rangeFrom = range.from;
513
+ let rangeTo = range.to;
514
+ if (currentStartDate) {
515
+ currentStartDate = adjustTime(currentStartDate, startDateToCopyTime);
516
+ const isValidationError = (0, dateUtils_1.isValidationDateError)(currentStartDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
517
+ rangeFrom = toReverseOffsetDateTime(isValidationError ? new Date(range.from) : currentStartDate).toISOString();
518
+ }
519
+ if (currentEndDate) {
520
+ currentEndDate = adjustTime(currentEndDate, endDateToCopyTime);
521
+ const isValidationError = (0, dateUtils_1.isValidationDateError)(currentEndDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
522
+ rangeTo = toReverseOffsetDateTime(isValidationError ? new Date(range.to) : currentEndDate).toISOString();
523
+ }
524
+ if (rangeFrom && rangeTo && new Date(rangeFrom) > new Date(rangeTo)) {
525
+ range.from = !currentActiveField || currentActiveField === "start" ? rangeFrom : rangeTo;
526
+ range.to = currentActiveField && currentActiveField === "end" ? rangeTo : rangeFrom;
527
+ } else {
528
+ range.from = rangeFrom || (dateRangeMode ? rangeTo : undefined);
529
+ range.to = rangeTo || (dateRangeMode ? rangeFrom : undefined);
530
+ }
531
+ const newStateValue = {
532
+ start: range.from ? dateFormatter(range.from) : "",
533
+ end: range.to ? dateFormatter(range.to) : "",
534
+ hasAssistiveText: currentActiveField === "start" ? range.to !== value.to : range.from !== value.from
535
+ };
536
+ currentDateValuesRef.current = Object.assign({}, range);
537
+ dispatchState({
538
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeCalendarValue,
539
+ payload: newStateValue
540
+ });
541
+ onChange(range);
542
+ }, [dateRangeMode, value.from, value.to, toLocalDateTime, timePickerValueFromPrev, timePickerValueToPrev, dateFormatter, onChange, adjustTime, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter]);
543
+ const handleSetStartDateText = (0, react_1.useCallback)(e => {
544
+ dispatchState({
545
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartDateText,
546
+ payload: e.target.value
547
+ });
548
+ }, []);
549
+ const handleSetEndDateText = (0, react_1.useCallback)(e => {
550
+ dispatchState({
551
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndDateText,
552
+ payload: e.target.value
553
+ });
554
+ }, []);
555
+ // eslint-disable-next-line complexity
556
+ const handleOnClick = (0, react_1.useCallback)(e => {
557
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
558
+ state.currentActiveField === "end" && dispatchState({
559
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField,
560
+ payload: "start"
561
+ });
562
+ state.currentActiveField === "start" && dispatchState({
563
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior,
564
+ payload: undefined
565
+ });
566
+ }
567
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
568
+ state.currentActiveField === "start" && dispatchState({
569
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField,
570
+ payload: "end"
571
+ });
572
+ state.currentActiveField === "end" && dispatchState({
573
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior,
574
+ payload: undefined
575
+ });
576
+ }
577
+ let targetEl = e.target === e.currentTarget ? undefined : e.target;
578
+ while (targetEl) {
579
+ if (targetEl instanceof HTMLElement && targetEl.tagName === "BUTTON" && targetEl.getAttribute("data-time") === state.startDateId) {
580
+ targetEl = undefined;
581
+ }
582
+ if (targetEl instanceof HTMLElement && targetEl.tagName === "BUTTON" && targetEl.getAttribute("data-time") === state.endDateId) {
583
+ targetEl = undefined;
584
+ }
585
+ targetEl = !targetEl || targetEl.parentNode === e.currentTarget ? undefined : targetEl.parentNode;
586
+ }
587
+ }, [state.currentActiveField, state.endDateId, state.startDateId]);
588
+ // eslint-disable-next-line complexity
589
+ const handleOnKeyDown = (0, react_1.useCallback)(e => {
590
+ if (e.key === "Enter") {
591
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
592
+ state.currentActiveField === "start" && startDateChangeHandler(e, true);
593
+ dispatchState({
594
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ToggleActiveField
595
+ });
596
+ }
597
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
598
+ state.currentActiveField === "end" && endDateChangeHandler(e, true);
599
+ dispatchState({
600
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ToggleActiveField
601
+ });
602
+ }
603
+ }
604
+ if (e.key === "Tab") {
605
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
93
606
  currentSelectedFieldRef.current = undefined;
94
- let deformattedDate = dateDeformatter(newValue);
95
- if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
96
- resetStartDateChanges(true);
97
- return;
98
- }
99
- deformattedDate = adjustTime(deformattedDate, value.from ? toLocalDateTime(value.from) : undefined);
100
- if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
101
- // if date is invalid, do not update the state
102
- resetStartDateChanges(true);
103
- return;
104
- }
105
- const newValidDates = (0, dateUtils_1.getValidDatesForStart)(toReverseOffsetDateTime, deformattedDate, value.to ? toLocalDateTime(value.to) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
106
- const newStateValue = {
107
- start: dateFormatter(toReverseOffsetDateTime(newValidDates.start)),
108
- end: dateRangeMode ? (newValidDates.end ? dateFormatter(toReverseOffsetDateTime(newValidDates.end)) : "") : value.to || "",
109
- startAssistiveText: isBlur && state.currentActiveField === "start" ? dateInputInnerReducer_1.AssistiveText.None : undefined,
110
- endAssistiveText: isBlur && state.currentActiveField === "start"
111
- ? (value.to && newValidDates.end && (newValidDates.end.getTime() !== new Date(toLocalDateTime(value.to)).getTime()) ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None)
112
- : undefined
113
- };
114
- const startDateToPass = toReverseOffsetDateTime(newValidDates.start).toISOString();
115
- const endDateToPass = dateRangeMode ? (newValidDates.end ? toReverseOffsetDateTime(newValidDates.end).toISOString() : undefined) : value.to;
116
- currentDateValuesRef.current = { from: startDateToPass, to: endDateToPass };
117
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
118
- const isDateChanged = value.from !== startDateToPass || value.to !== endDateToPass;
119
- isDateChanged && onChange({ from: startDateToPass, to: endDateToPass });
120
- }, [dateDeformatter, adjustTime, value.from, value.to, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter,
121
- toLocalDateTime, dateFormatter, dateRangeMode, state.currentActiveField, onChange, resetStartDateChanges]);
122
- const startDateChangeOnArrow = (0, react_1.useCallback)((oldValue, delta) => {
123
- let deformattedDate = dateDeformatter(oldValue);
124
- deformattedDate.setDate(deformattedDate.getDate() + delta);
125
- if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
126
- resetStartDateChanges();
127
- return;
128
- }
129
- deformattedDate = adjustTime(deformattedDate, value.from ? toLocalDateTime(value.from) : undefined);
130
- if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
131
- // if date is invalid, do not update the state
132
- resetStartDateChanges();
133
- return;
134
- }
135
- const newValidDates = (0, dateUtils_1.getValidDatesForStart)(toReverseOffsetDateTime, deformattedDate, value.to ? toLocalDateTime(value.to) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
136
- const newStateValue = {
137
- emittedBy: "start",
138
- start: dateFormatter(toReverseOffsetDateTime(newValidDates.start)),
139
- end: dateRangeMode ? (newValidDates.end ? dateFormatter(toReverseOffsetDateTime(newValidDates.end)) : "") : value.to || "",
140
- startAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
141
- endAssistiveText: (value.to && newValidDates.end && (newValidDates.end.getTime() !== new Date(toLocalDateTime(value.to)).getTime()) ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None),
142
- inputKeyDownBehavior: "start"
143
- };
144
- const startDateToPass = toReverseOffsetDateTime(newValidDates.start).toISOString();
145
- const endDateToPass = dateRangeMode ? (newValidDates.end ? toReverseOffsetDateTime(newValidDates.end).toISOString() : undefined) : value.to;
146
- currentDateValuesRef.current = { from: startDateToPass, to: endDateToPass };
147
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
148
- onChange({ from: startDateToPass, to: endDateToPass });
149
- currentSelectedFieldRef.current = startInputRef.current || undefined;
150
- }, [dateDeformatter, adjustTime, value.from, value.to, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, toLocalDateTime, dateFormatter,
151
- dateRangeMode, onChange, resetStartDateChanges]);
152
- const startTimeChangeHandler = (0, react_1.useCallback)((time) => {
607
+ state.currentActiveField === "start" && dispatchState({
608
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartAssistiveText,
609
+ payload: dateInputInnerReducer_1.AssistiveText.None
610
+ });
611
+ state.currentActiveField === "start" && dispatchState({
612
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior,
613
+ payload: undefined
614
+ });
615
+ }
616
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
153
617
  currentSelectedFieldRef.current = undefined;
154
- const startDateToCopyTime = time;
155
- let newValueFrom = value.from ? toLocalDateTime(value.from) : startDateToCopyTime;
156
- newValueFrom = adjustTime(newValueFrom, startDateToCopyTime);
157
- if (!(0, dateUtils_1.isValidDate)(newValueFrom)) {
158
- resetStartDateChanges();
159
- return;
160
- }
161
- if ((0, dateUtils_1.isValidationDateError)(newValueFrom, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
162
- const newValidDate = (0, dateUtils_1.getValidTime)(newValueFrom, value.from, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
163
- if (!newValidDate) {
164
- resetStartDateChanges();
165
- return;
166
- }
167
- newValueFrom = newValidDate;
168
- }
169
- const startEndOrderValid = !dateRangeMode || !value.to ? true : toReverseOffsetDateTime(newValueFrom) <= new Date(value.to);
170
- const newStateValue = {
171
- start: dateFormatter(toReverseOffsetDateTime(newValueFrom)),
172
- end: startEndOrderValid ? (dateRangeMode ? (value.to ? dateFormatter(value.to) : "") : value.to || "") : dateFormatter(toReverseOffsetDateTime(newValueFrom)),
173
- startAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
174
- endAssistiveText: startEndOrderValid ? dateInputInnerReducer_1.AssistiveText.None : dateInputInnerReducer_1.AssistiveText.TimeAdjusted,
175
- nextActiveField: startEndOrderValid ? undefined : "end"
176
- };
177
- const startDateToPass = toReverseOffsetDateTime(newValueFrom).toISOString();
178
- const endDateToPass = startEndOrderValid ? value.to : toReverseOffsetDateTime(newValueFrom).toISOString();
179
- currentDateValuesRef.current = { from: startDateToPass, to: endDateToPass };
180
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
181
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartAssistiveText, payload: dateInputInnerReducer_1.AssistiveText.None });
182
- onChange({ from: startDateToPass, to: endDateToPass });
183
- }, [value.from, value.to, toLocalDateTime, adjustTime, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, dateRangeMode,
184
- dateFormatter, onChange, resetStartDateChanges]);
185
- const resetEndDateChanges = (0, react_1.useCallback)((resetKeydownBehavior = false) => {
186
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndDateText, payload: value.to ? dateFormatter(value.to) : "" });
187
- resetKeydownBehavior && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior, payload: undefined });
188
- }, [dateFormatter, value.to]);
189
- const endDateChangeHandler = (0, react_1.useCallback)((e, isBlur = false) => {
618
+ state.currentActiveField === "end" && dispatchState({
619
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndAssistiveText,
620
+ payload: dateInputInnerReducer_1.AssistiveText.None
621
+ });
622
+ state.currentActiveField === "end" && dispatchState({
623
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior,
624
+ payload: undefined
625
+ });
626
+ }
627
+ }
628
+ if (e.key === "Backspace" && e.target instanceof HTMLElement && e.target.tagName === "INPUT") {
629
+ currentSelectedFieldRef.current = undefined;
630
+ }
631
+ if (e.key === "ArrowDown" && state.inputKeyDownBehavior) {
632
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
190
633
  const newValue = e.target.value;
191
- currentSelectedFieldRef.current = undefined;
192
- let deformattedDate = dateDeformatter(newValue);
193
- if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
194
- resetEndDateChanges(true);
195
- return;
196
- }
197
- deformattedDate = adjustTime(deformattedDate, value.to ? toLocalDateTime(value.to) : undefined);
198
- if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
199
- // if date is invalid, do not update the state
200
- resetEndDateChanges(true);
201
- return;
202
- }
203
- const newValidDates = (0, dateUtils_1.getValidDatesForEnd)(toReverseOffsetDateTime, deformattedDate, value.from ? toLocalDateTime(value.from) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
204
- const newStateValue = {
205
- start: newValidDates.start ? dateFormatter(toReverseOffsetDateTime(newValidDates.start)) : "",
206
- end: dateFormatter(toReverseOffsetDateTime(newValidDates.end)),
207
- startAssistiveText: isBlur && state.currentActiveField === "end"
208
- ? (value.from && newValidDates.start && (newValidDates.start.getTime() !== new Date(toLocalDateTime(value.from)).getTime()) ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None)
209
- : undefined,
210
- endAssistiveText: isBlur && state.currentActiveField === "end" ? dateInputInnerReducer_1.AssistiveText.None : undefined
211
- };
212
- const startDateToPass = newValidDates.start ? toReverseOffsetDateTime(newValidDates.start).toISOString() : undefined;
213
- const endDateToPass = toReverseOffsetDateTime(newValidDates.end).toISOString();
214
- currentDateValuesRef.current = { from: startDateToPass, to: endDateToPass };
215
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
216
- const isDateChanged = value.from !== startDateToPass || value.to !== endDateToPass;
217
- isDateChanged && onChange({ from: startDateToPass, to: endDateToPass });
218
- }, [dateDeformatter, adjustTime, value.to, value.from, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, toLocalDateTime, dateFormatter,
219
- state.currentActiveField, onChange, resetEndDateChanges]);
220
- const endDateChangeOnArrow = (0, react_1.useCallback)((oldValue, delta) => {
221
- let deformattedDate = dateDeformatter(oldValue);
222
- deformattedDate.setDate(deformattedDate.getDate() + delta);
223
- if (!(0, dateUtils_1.isValidDate)(deformattedDate)) {
224
- resetEndDateChanges();
225
- return;
226
- }
227
- deformattedDate = adjustTime(deformattedDate, value.to ? toLocalDateTime(value.to) : undefined);
228
- if ((0, dateUtils_1.isValidationDateError)(deformattedDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
229
- // if date is invalid, do not update the state
230
- resetEndDateChanges();
231
- return;
232
- }
233
- const newValidDates = (0, dateUtils_1.getValidDatesForEnd)(toReverseOffsetDateTime, deformattedDate, value.from ? toLocalDateTime(value.from) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
234
- const newStateValue = {
235
- emittedBy: "end",
236
- start: newValidDates.start ? dateFormatter(toReverseOffsetDateTime(newValidDates.start)) : "",
237
- end: dateFormatter(toReverseOffsetDateTime(newValidDates.end)),
238
- startAssistiveText: value.from && newValidDates.start && (newValidDates.start.getTime() !== new Date(toLocalDateTime(value.from)).getTime())
239
- ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None,
240
- endAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
241
- inputKeyDownBehavior: "end"
242
- };
243
- const startDateToPass = newValidDates.start ? toReverseOffsetDateTime(newValidDates.start).toISOString() : undefined;
244
- const endDateToPass = toReverseOffsetDateTime(newValidDates.end).toISOString();
245
- currentDateValuesRef.current = { from: startDateToPass, to: endDateToPass };
246
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
247
- onChange({ from: startDateToPass, to: endDateToPass });
248
- currentSelectedFieldRef.current = endInputRef.current || undefined;
249
- }, [dateDeformatter, adjustTime, value.to, value.from, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter,
250
- toLocalDateTime, dateFormatter, onChange, resetEndDateChanges]);
251
- const endTimeChangeHandler = (0, react_1.useCallback)((time) => {
252
- const endDateToCopyTime = time;
253
- currentSelectedFieldRef.current = undefined;
254
- let newValueTo = value.to ? toLocalDateTime(value.to) : endDateToCopyTime;
255
- newValueTo = adjustTime(newValueTo, endDateToCopyTime);
256
- if (!(0, dateUtils_1.isValidDate)(newValueTo)) {
257
- resetEndDateChanges();
258
- return;
259
- }
260
- if ((0, dateUtils_1.isValidationDateError)(newValueTo, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter)) {
261
- const newValidDate = (0, dateUtils_1.getValidTime)(newValueTo, value.to, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
262
- if (!newValidDate) {
263
- resetEndDateChanges();
264
- return;
265
- }
266
- newValueTo = newValidDate;
267
- return;
268
- }
269
- const startEndOrderValid = !dateRangeMode || !value.from ? true : new Date(value.from) <= toReverseOffsetDateTime(newValueTo);
270
- const newStateValue = {
271
- start: startEndOrderValid ? (value.from ? dateFormatter(toReverseOffsetDateTime(value.from)) : "") : dateFormatter(toReverseOffsetDateTime(newValueTo)),
272
- end: dateFormatter(toReverseOffsetDateTime(newValueTo)),
273
- startAssistiveText: startEndOrderValid ? dateInputInnerReducer_1.AssistiveText.None : dateInputInnerReducer_1.AssistiveText.TimeAdjusted,
274
- endAssistiveText: dateInputInnerReducer_1.AssistiveText.None,
275
- nextActiveField: startEndOrderValid ? undefined : "start"
276
- };
277
- const startDateToPass = startEndOrderValid ? value.from : toReverseOffsetDateTime(newValueTo).toISOString();
278
- const endDateToPass = toReverseOffsetDateTime(newValueTo).toISOString();
279
- currentDateValuesRef.current = { from: startDateToPass, to: endDateToPass };
280
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
281
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndAssistiveText, payload: dateInputInnerReducer_1.AssistiveText.None });
282
- onChange({ from: startDateToPass, to: endDateToPass });
283
- }, [value.to, value.from, toLocalDateTime, adjustTime, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter, dateRangeMode,
284
- dateFormatter, onChange, resetEndDateChanges]);
285
- const getCurrentActiveField = (0, react_1.useCallback)(() => state.currentActiveField, [state.currentActiveField]);
286
- // eslint-disable-next-line complexity
287
- const calendarChangeHandler = (0, react_1.useCallback)((range, currentActiveField) => {
288
- currentSelectedFieldRef.current = dateRangeMode ? undefined : startInputRef.current || undefined;
289
- let currentStartDate = range.from && new Date(range.from);
290
- const startDateToCopyTime = value.from ? toLocalDateTime(value.from) : (timePickerValueFromPrev || new Date((0, dateUtils_1.toDayStart)(toLocalDateTime(new Date()).toISOString())));
291
- let currentEndDate = range.to && new Date(range.to);
292
- const endDateToCopyTime = value.to ? toLocalDateTime(value.to) : (timePickerValueToPrev || new Date((0, dateUtils_1.toDayStart)(toLocalDateTime(new Date()).toISOString())));
293
- let rangeFrom = range.from;
294
- let rangeTo = range.to;
295
- if (currentStartDate) {
296
- currentStartDate = adjustTime(currentStartDate, startDateToCopyTime);
297
- const isValidationError = (0, dateUtils_1.isValidationDateError)(currentStartDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
298
- rangeFrom = toReverseOffsetDateTime(isValidationError ? new Date(range.from) : currentStartDate).toISOString();
299
- }
300
- if (currentEndDate) {
301
- currentEndDate = adjustTime(currentEndDate, endDateToCopyTime);
302
- const isValidationError = (0, dateUtils_1.isValidationDateError)(currentEndDate, toReverseOffsetDateTime, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
303
- rangeTo = toReverseOffsetDateTime(isValidationError ? new Date(range.to) : currentEndDate).toISOString();
304
- }
305
- if (rangeFrom && rangeTo && new Date(rangeFrom) > new Date(rangeTo)) {
306
- range.from = !currentActiveField || currentActiveField === "start" ? rangeFrom : rangeTo;
307
- range.to = currentActiveField && currentActiveField === "end" ? rangeTo : rangeFrom;
308
- }
309
- else {
310
- range.from = rangeFrom || (dateRangeMode ? rangeTo : undefined);
311
- range.to = rangeTo || (dateRangeMode ? rangeFrom : undefined);
312
- }
313
- const newStateValue = {
314
- start: range.from ? dateFormatter(range.from) : "",
315
- end: range.to ? dateFormatter(range.to) : "",
316
- hasAssistiveText: currentActiveField === "start" ? range.to !== value.to : range.from !== value.from
317
- };
318
- currentDateValuesRef.current = Object.assign({}, range);
319
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeCalendarValue, payload: newStateValue });
320
- onChange(range);
321
- }, [dateRangeMode, value.from, value.to, toLocalDateTime, timePickerValueFromPrev, timePickerValueToPrev, dateFormatter, onChange, adjustTime, toReverseOffsetDateTime,
322
- disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter]);
323
- const handleSetStartDateText = (0, react_1.useCallback)((e) => {
324
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartDateText, payload: e.target.value });
325
- }, []);
326
- const handleSetEndDateText = (0, react_1.useCallback)((e) => {
327
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndDateText, payload: e.target.value });
328
- }, []);
329
- // eslint-disable-next-line complexity
330
- const handleOnClick = (0, react_1.useCallback)((e) => {
331
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
332
- state.currentActiveField === "end" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField, payload: "start" });
333
- state.currentActiveField === "start" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior, payload: undefined });
334
- }
335
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
336
- state.currentActiveField === "start" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField, payload: "end" });
337
- state.currentActiveField === "end" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior, payload: undefined });
338
- }
339
- let targetEl = e.target === e.currentTarget ? undefined : e.target;
340
- while (targetEl) {
341
- if (targetEl instanceof HTMLElement && targetEl.tagName === "BUTTON" && targetEl.getAttribute("data-time") === state.startDateId) {
342
- targetEl = undefined;
343
- }
344
- if (targetEl instanceof HTMLElement && targetEl.tagName === "BUTTON" && targetEl.getAttribute("data-time") === state.endDateId) {
345
- targetEl = undefined;
346
- }
347
- targetEl = !targetEl || targetEl.parentNode === e.currentTarget ? undefined : targetEl.parentNode;
348
- }
349
- }, [state.currentActiveField, state.endDateId, state.startDateId]);
350
- // eslint-disable-next-line complexity
351
- const handleOnKeyDown = (0, react_1.useCallback)((e) => {
352
- if (e.key === "Enter") {
353
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
354
- state.currentActiveField === "start" && startDateChangeHandler(e, true);
355
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ToggleActiveField });
356
- }
357
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
358
- state.currentActiveField === "end" && endDateChangeHandler(e, true);
359
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ToggleActiveField });
360
- }
361
- }
362
- if (e.key === "Tab") {
363
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
364
- currentSelectedFieldRef.current = undefined;
365
- state.currentActiveField === "start" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeStartAssistiveText, payload: dateInputInnerReducer_1.AssistiveText.None });
366
- state.currentActiveField === "start" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior, payload: undefined });
367
- }
368
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
369
- currentSelectedFieldRef.current = undefined;
370
- state.currentActiveField === "end" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeEndAssistiveText, payload: dateInputInnerReducer_1.AssistiveText.None });
371
- state.currentActiveField === "end" && dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeInputKeydownBehavior, payload: undefined });
372
- }
373
- }
374
- if (e.key === "Backspace" && e.target instanceof HTMLElement && e.target.tagName === "INPUT") {
375
- currentSelectedFieldRef.current = undefined;
376
- }
377
- if (e.key === "ArrowDown" && state.inputKeyDownBehavior) {
378
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
379
- const newValue = e.target.value;
380
- startDateChangeOnArrow(newValue, 7);
381
- }
382
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
383
- const newValue = e.target.value;
384
- endDateChangeOnArrow(newValue, 7);
385
- }
386
- }
387
- if (e.key === "ArrowUp" && state.inputKeyDownBehavior) {
388
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
389
- const newValue = e.target.value;
390
- startDateChangeOnArrow(newValue, -7);
391
- }
392
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
393
- const newValue = e.target.value;
394
- endDateChangeOnArrow(newValue, -7);
395
- }
396
- }
397
- if (e.key === "ArrowRight" && state.inputKeyDownBehavior) {
398
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
399
- const newValue = e.target.value;
400
- startDateChangeOnArrow(newValue, 1);
401
- }
402
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
403
- const newValue = e.target.value;
404
- endDateChangeOnArrow(newValue, 1);
405
- }
406
- }
407
- if (e.key === "ArrowLeft" && state.inputKeyDownBehavior) {
408
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
409
- const newValue = e.target.value;
410
- startDateChangeOnArrow(newValue, -1);
411
- }
412
- if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
413
- const newValue = e.target.value;
414
- endDateChangeOnArrow(newValue, -1);
415
- }
416
- }
417
- }, [state.startDateId, state.endDateId, state.currentActiveField, state.inputKeyDownBehavior, startDateChangeHandler, endDateChangeHandler, startDateChangeOnArrow, endDateChangeOnArrow]);
418
- const rangeArgs = (0, react_1.useMemo)(() => ({
419
- onClick: handleOnClick,
420
- onKeyDown: handleOnKeyDown
421
- }), [handleOnClick, handleOnKeyDown]);
422
- (0, react_1.useEffect)(() => {
423
- var _a, _b, _c, _d;
424
- if (state.currentActiveField === "start") {
425
- (_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
426
- state.inputKeyDownBehavior === "start" && ((_b = startInputRef.current) === null || _b === void 0 ? void 0 : _b.select());
427
- }
428
- if (state.currentActiveField === "end") {
429
- (_c = endInputRef.current) === null || _c === void 0 ? void 0 : _c.focus();
430
- state.inputKeyDownBehavior === "end" && ((_d = endInputRef.current) === null || _d === void 0 ? void 0 : _d.select());
431
- }
432
- }, [state.currentActiveField, state.inputKeyDownBehavior]);
433
- (0, react_1.useEffect)(() => {
434
- var _a, _b;
435
- if (state.inputKeyDownBehavior === "start") {
436
- (_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.select();
437
- }
438
- if (state.inputKeyDownBehavior === "end") {
439
- (_b = endInputRef.current) === null || _b === void 0 ? void 0 : _b.select();
440
- }
441
- }, [state.inputKeyDownBehavior]);
442
- const handleBlurStart = (0, react_1.useCallback)((e) => {
443
- currentSelectedFieldRef.current = undefined;
444
- startDateChangeHandler(e, true);
445
- }, [startDateChangeHandler]);
446
- const handleBlurEnd = (0, react_1.useCallback)((e) => {
447
- currentSelectedFieldRef.current = undefined;
448
- endDateChangeHandler(e, true);
449
- }, [endDateChangeHandler]);
450
- const handleTodayButtonClick = (0, react_1.useCallback)((e) => {
451
- const currentActiveField = getCurrentActiveField();
452
- let newValidDates;
453
- if (currentActiveField === "start") {
454
- const todayFromWithTime = adjustTime(toLocalDateTime(todayFrom), value.from ? toLocalDateTime(value.from) : undefined);
455
- newValidDates = (0, dateUtils_1.getValidDatesForStart)(toReverseOffsetDateTime, todayFromWithTime, value.to ? toLocalDateTime(value.to) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
456
- }
457
- else {
458
- const todayToWithTime = adjustTime(toLocalDateTime(todayTo), value.to ? toLocalDateTime(value.to) : undefined);
459
- newValidDates = (0, dateUtils_1.getValidDatesForEnd)(toReverseOffsetDateTime, todayToWithTime, value.from ? toLocalDateTime(value.from) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
460
- }
461
- const startDateToPass = newValidDates.start ? toReverseOffsetDateTime(newValidDates.start).toISOString() : undefined;
462
- const endDateToPass = newValidDates.end ? toReverseOffsetDateTime(newValidDates.end).toISOString() : undefined;
463
- const newStateValue = {
464
- start: newValidDates.start ? dateFormatter(toReverseOffsetDateTime(newValidDates.start)) : "",
465
- end: newValidDates.end ? dateFormatter(toReverseOffsetDateTime(newValidDates.end)) : "",
466
- startAssistiveText: currentActiveField === "end" && startDateToPass !== value.from ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None,
467
- endAssistiveText: currentActiveField === "start" && endDateToPass !== value.to ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None
468
- };
469
- currentSelectedFieldRef.current = dateRangeMode ? undefined : startInputRef.current || undefined;
470
- e.target.blur();
471
- currentDateValuesRef.current = { from: startDateToPass, to: dateRangeMode ? endDateToPass : value.to };
472
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod, payload: newStateValue });
473
- dispatchState({ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField, payload: currentActiveField === "start" ? "end" : "start" });
474
- onChange({ from: startDateToPass, to: dateRangeMode ? endDateToPass : value.to });
475
- }, [adjustTime, dateFormatter, dateRangeMode, disableDatesAfter, disableDatesBefore, disableFutureDates, disablePastDates, getCurrentActiveField, onChange, toLocalDateTime,
476
- toReverseOffsetDateTime, todayFrom, todayTo, value.from, value.to]);
477
- const memoizedStartInputComponent = (0, react_1.useMemo)(() => (0, jsx_runtime_1.jsx)(dateInputInnerControlBlock_1.DateInputInnerControlBlock, { className: "zen-date-input-inner__control-start", title: title || title === undefined ? title || translate(dateRangeMode ? "Start date" : "Pick a date") : undefined, id: state.startDateId, ref: startInputRef, dateText: state.startDateText, placeholder: dateFormat, handleSetDateText: handleSetStartDateText, onBlurDateChangeHandler: handleBlurStart, requireSelection: requireSelection, selectTime: selectTime, timePickerValue: timePickerValueFrom || timePickerValueFromPrev, isMobileView: isMobileView, timeChangeHandler: startTimeChangeHandler, isActiveField: dateRangeMode ? state.currentActiveField === "start" : false, assistiveText: dateRangeMode ? getAssistiveText(state.startAssistiveText, true) : undefined, isSelected: state.currentActiveField === "start" && state.inputKeyDownBehavior === "start" }), [title, translate, dateRangeMode, state.startDateId, state.startDateText, state.currentActiveField, state.startAssistiveText, state.inputKeyDownBehavior, dateFormat,
478
- handleSetStartDateText, handleBlurStart, requireSelection, selectTime, timePickerValueFrom, timePickerValueFromPrev, isMobileView, startTimeChangeHandler, getAssistiveText]);
479
- const memoizedEndInputComponent = (0, react_1.useMemo)(() => dateRangeMode
480
- ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "zen-date-input-inner__separator" }), (0, jsx_runtime_1.jsx)(dateInputInnerControlBlock_1.DateInputInnerControlBlock, { className: "zen-date-input-inner__control-end", title: translate("End date"), id: state.endDateId, ref: endInputRef, dateText: state.endDateText, placeholder: dateFormat, handleSetDateText: handleSetEndDateText, onBlurDateChangeHandler: handleBlurEnd, requireSelection: requireSelection, selectTime: selectTime, timePickerValue: timePickerValueTo || timePickerValueToPrev, isMobileView: isMobileView, timeChangeHandler: endTimeChangeHandler, isActiveField: state.currentActiveField === "end", assistiveText: getAssistiveText(state.endAssistiveText, false), isSelected: state.currentActiveField === "end" && state.inputKeyDownBehavior === "end" })] }) : null, [dateRangeMode, translate, state.endDateId, state.endDateText, state.currentActiveField, state.endAssistiveText, state.inputKeyDownBehavior, dateFormat, handleSetEndDateText, handleBlurEnd,
481
- requireSelection, selectTime, timePickerValueTo, timePickerValueToPrev, isMobileView, endTimeChangeHandler, getAssistiveText]);
482
- (_a = currentSelectedFieldRef.current) === null || _a === void 0 ? void 0 : _a.select();
483
- return (0, jsx_runtime_1.jsxs)("div", { className: (0, classNames_1.classNames)(["zen-date-input-inner", driveClassName || "", isMobileView ? "zen-date-input-inner--mobile-view" : ""]), children: [(0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "zen-date-input-inner__controls-block" }, rangeArgs, { children: [memoizedStartInputComponent, memoizedEndInputComponent] })), (0, jsx_runtime_1.jsx)("div", { className: "zen-date-input-inner__calendar", children: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, { id: id, value: calendarValue, onChange: calendarChangeHandler, dateRangeMode: dateRangeMode, disableFutureDates: disableFutureDates, disablePastDates: disablePastDates, disableDatesAfter: disableDatesAfterValue, disableDatesBefore: disableDatesBeforeValue, startDayOfWeek: startDayOfWeek, yearRange: yearRange, isMobileView: isMobileView, getCurrentActiveField: dateRangeMode ? getCurrentActiveField : undefined, onTodayButtonClick: isTodayDisabled ? undefined : handleTodayButtonClick }) })] });
634
+ startDateChangeOnArrow(newValue, 7);
635
+ }
636
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
637
+ const newValue = e.target.value;
638
+ endDateChangeOnArrow(newValue, 7);
639
+ }
640
+ }
641
+ if (e.key === "ArrowUp" && state.inputKeyDownBehavior) {
642
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
643
+ const newValue = e.target.value;
644
+ startDateChangeOnArrow(newValue, -7);
645
+ }
646
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
647
+ const newValue = e.target.value;
648
+ endDateChangeOnArrow(newValue, -7);
649
+ }
650
+ }
651
+ if (e.key === "ArrowRight" && state.inputKeyDownBehavior) {
652
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
653
+ const newValue = e.target.value;
654
+ startDateChangeOnArrow(newValue, 1);
655
+ }
656
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
657
+ const newValue = e.target.value;
658
+ endDateChangeOnArrow(newValue, 1);
659
+ }
660
+ }
661
+ if (e.key === "ArrowLeft" && state.inputKeyDownBehavior) {
662
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.startDateId) {
663
+ const newValue = e.target.value;
664
+ startDateChangeOnArrow(newValue, -1);
665
+ }
666
+ if (e.target instanceof HTMLElement && e.target.tagName === "INPUT" && e.target.getAttribute("id") === state.endDateId) {
667
+ const newValue = e.target.value;
668
+ endDateChangeOnArrow(newValue, -1);
669
+ }
670
+ }
671
+ }, [state.startDateId, state.endDateId, state.currentActiveField, state.inputKeyDownBehavior, startDateChangeHandler, endDateChangeHandler, startDateChangeOnArrow, endDateChangeOnArrow]);
672
+ const rangeArgs = (0, react_1.useMemo)(() => ({
673
+ onClick: handleOnClick,
674
+ onKeyDown: handleOnKeyDown
675
+ }), [handleOnClick, handleOnKeyDown]);
676
+ (0, react_1.useEffect)(() => {
677
+ var _a, _b, _c, _d;
678
+ if (state.currentActiveField === "start") {
679
+ (_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
680
+ state.inputKeyDownBehavior === "start" && ((_b = startInputRef.current) === null || _b === void 0 ? void 0 : _b.select());
681
+ }
682
+ if (state.currentActiveField === "end") {
683
+ (_c = endInputRef.current) === null || _c === void 0 ? void 0 : _c.focus();
684
+ state.inputKeyDownBehavior === "end" && ((_d = endInputRef.current) === null || _d === void 0 ? void 0 : _d.select());
685
+ }
686
+ }, [state.currentActiveField, state.inputKeyDownBehavior]);
687
+ (0, react_1.useEffect)(() => {
688
+ var _a, _b;
689
+ if (state.inputKeyDownBehavior === "start") {
690
+ (_a = startInputRef.current) === null || _a === void 0 ? void 0 : _a.select();
691
+ }
692
+ if (state.inputKeyDownBehavior === "end") {
693
+ (_b = endInputRef.current) === null || _b === void 0 ? void 0 : _b.select();
694
+ }
695
+ }, [state.inputKeyDownBehavior]);
696
+ const handleBlurStart = (0, react_1.useCallback)(e => {
697
+ currentSelectedFieldRef.current = undefined;
698
+ startDateChangeHandler(e, true);
699
+ }, [startDateChangeHandler]);
700
+ const handleBlurEnd = (0, react_1.useCallback)(e => {
701
+ currentSelectedFieldRef.current = undefined;
702
+ endDateChangeHandler(e, true);
703
+ }, [endDateChangeHandler]);
704
+ const handleTodayButtonClick = (0, react_1.useCallback)(e => {
705
+ const currentActiveField = getCurrentActiveField();
706
+ let newValidDates;
707
+ if (currentActiveField === "start") {
708
+ const todayFromWithTime = adjustTime(toLocalDateTime(todayFrom), value.from ? toLocalDateTime(value.from) : undefined);
709
+ newValidDates = (0, dateUtils_1.getValidDatesForStart)(toReverseOffsetDateTime, todayFromWithTime, value.to ? toLocalDateTime(value.to) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
710
+ } else {
711
+ const todayToWithTime = adjustTime(toLocalDateTime(todayTo), value.to ? toLocalDateTime(value.to) : undefined);
712
+ newValidDates = (0, dateUtils_1.getValidDatesForEnd)(toReverseOffsetDateTime, todayToWithTime, value.from ? toLocalDateTime(value.from) : undefined, disableFutureDates, disablePastDates, disableDatesBefore, disableDatesAfter);
713
+ }
714
+ const startDateToPass = newValidDates.start ? toReverseOffsetDateTime(newValidDates.start).toISOString() : undefined;
715
+ const endDateToPass = newValidDates.end ? toReverseOffsetDateTime(newValidDates.end).toISOString() : undefined;
716
+ const newStateValue = {
717
+ start: newValidDates.start ? dateFormatter(toReverseOffsetDateTime(newValidDates.start)) : "",
718
+ end: newValidDates.end ? dateFormatter(toReverseOffsetDateTime(newValidDates.end)) : "",
719
+ startAssistiveText: currentActiveField === "end" && startDateToPass !== value.from ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None,
720
+ endAssistiveText: currentActiveField === "start" && endDateToPass !== value.to ? dateInputInnerReducer_1.AssistiveText.DateAdjusted : dateInputInnerReducer_1.AssistiveText.None
721
+ };
722
+ currentSelectedFieldRef.current = dateRangeMode ? undefined : startInputRef.current || undefined;
723
+ e.target.blur();
724
+ currentDateValuesRef.current = {
725
+ from: startDateToPass,
726
+ to: dateRangeMode ? endDateToPass : value.to
727
+ };
728
+ dispatchState({
729
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangePeriod,
730
+ payload: newStateValue
731
+ });
732
+ dispatchState({
733
+ type: dateInputInnerReducer_1.DateInputInnerStateActionType.ChangeActiveField,
734
+ payload: currentActiveField === "start" ? "end" : "start"
735
+ });
736
+ onChange({
737
+ from: startDateToPass,
738
+ to: dateRangeMode ? endDateToPass : value.to
739
+ });
740
+ }, [adjustTime, dateFormatter, dateRangeMode, disableDatesAfter, disableDatesBefore, disableFutureDates, disablePastDates, getCurrentActiveField, onChange, toLocalDateTime, toReverseOffsetDateTime, todayFrom, todayTo, value.from, value.to]);
741
+ const memoizedStartInputComponent = (0, react_1.useMemo)(() => (0, jsx_runtime_1.jsx)(dateInputInnerControlBlock_1.DateInputInnerControlBlock, {
742
+ className: "zen-date-input-inner__control-start",
743
+ title: title || title === undefined ? title || (dateRangeMode ? translate("Start date") : translate("Pick a date")) : undefined,
744
+ id: state.startDateId,
745
+ ref: startInputRef,
746
+ dateText: state.startDateText,
747
+ placeholder: dateFormat,
748
+ handleSetDateText: handleSetStartDateText,
749
+ onBlurDateChangeHandler: handleBlurStart,
750
+ requireSelection: requireSelection,
751
+ selectTime: selectTime,
752
+ timePickerValue: timePickerValueFrom || timePickerValueFromPrev,
753
+ isMobileView: isMobileView,
754
+ timeChangeHandler: startTimeChangeHandler,
755
+ isActiveField: dateRangeMode ? state.currentActiveField === "start" : false,
756
+ assistiveText: dateRangeMode ? getAssistiveText(state.startAssistiveText, true) : undefined,
757
+ isSelected: state.currentActiveField === "start" && state.inputKeyDownBehavior === "start"
758
+ }), [title, translate, dateRangeMode, state.startDateId, state.startDateText, state.currentActiveField, state.startAssistiveText, state.inputKeyDownBehavior, dateFormat, handleSetStartDateText, handleBlurStart, requireSelection, selectTime, timePickerValueFrom, timePickerValueFromPrev, isMobileView, startTimeChangeHandler, getAssistiveText]);
759
+ const memoizedEndInputComponent = (0, react_1.useMemo)(() => dateRangeMode ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
760
+ children: [(0, jsx_runtime_1.jsx)("div", {
761
+ className: "zen-date-input-inner__separator"
762
+ }), (0, jsx_runtime_1.jsx)(dateInputInnerControlBlock_1.DateInputInnerControlBlock, {
763
+ className: "zen-date-input-inner__control-end",
764
+ title: translate("End date"),
765
+ id: state.endDateId,
766
+ ref: endInputRef,
767
+ dateText: state.endDateText,
768
+ placeholder: dateFormat,
769
+ handleSetDateText: handleSetEndDateText,
770
+ onBlurDateChangeHandler: handleBlurEnd,
771
+ requireSelection: requireSelection,
772
+ selectTime: selectTime,
773
+ timePickerValue: timePickerValueTo || timePickerValueToPrev,
774
+ isMobileView: isMobileView,
775
+ timeChangeHandler: endTimeChangeHandler,
776
+ isActiveField: state.currentActiveField === "end",
777
+ assistiveText: getAssistiveText(state.endAssistiveText, false),
778
+ isSelected: state.currentActiveField === "end" && state.inputKeyDownBehavior === "end"
779
+ })]
780
+ }) : null, [dateRangeMode, translate, state.endDateId, state.endDateText, state.currentActiveField, state.endAssistiveText, state.inputKeyDownBehavior, dateFormat, handleSetEndDateText, handleBlurEnd, requireSelection, selectTime, timePickerValueTo, timePickerValueToPrev, isMobileView, endTimeChangeHandler, getAssistiveText]);
781
+ (_a = currentSelectedFieldRef.current) === null || _a === void 0 ? void 0 : _a.select();
782
+ return (0, jsx_runtime_1.jsxs)("div", {
783
+ className: (0, classNames_1.classNames)(["zen-date-input-inner", driveClassName || "", isMobileView ? "zen-date-input-inner--mobile-view" : ""]),
784
+ children: [(0, jsx_runtime_1.jsxs)("div", Object.assign({
785
+ className: "zen-date-input-inner__controls-block"
786
+ }, rangeArgs, {
787
+ children: [memoizedStartInputComponent, memoizedEndInputComponent]
788
+ })), (0, jsx_runtime_1.jsx)("div", {
789
+ className: "zen-date-input-inner__calendar",
790
+ children: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, {
791
+ id: id,
792
+ value: calendarValue,
793
+ onChange: calendarChangeHandler,
794
+ dateRangeMode: dateRangeMode,
795
+ disableFutureDates: disableFutureDates,
796
+ disablePastDates: disablePastDates,
797
+ disableDatesAfter: disableDatesAfterValue,
798
+ disableDatesBefore: disableDatesBeforeValue,
799
+ startDayOfWeek: startDayOfWeek,
800
+ yearRange: yearRange,
801
+ isMobileView: isMobileView,
802
+ getCurrentActiveField: dateRangeMode ? getCurrentActiveField : undefined,
803
+ onTodayButtonClick: isTodayDisabled ? undefined : handleTodayButtonClick
804
+ })
805
+ })]
806
+ });
484
807
  };
485
808
  exports.DateInputInner = DateInputInner;
486
- exports.TRANSLATIONS = [
487
- "Pick a date",
488
- "Start date",
489
- "End date",
490
- "Start date has been adjusted.",
491
- "End date has been adjusted.",
492
- "Start time has been adjusted.",
493
- "End time has been adjusted."
494
- ];
809
+ exports.TRANSLATIONS = ["Pick a date", "Start date", "End date", "Start date has been adjusted.", "End date has been adjusted.", "Start time has been adjusted.", "End time has been adjusted."];