@hitachivantara/uikit-react-core 5.82.4 → 5.83.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 (227) hide show
  1. package/dist/cjs/BaseInput/BaseInput.cjs +4 -7
  2. package/dist/cjs/ButtonBase/ButtonBase.styles.cjs +6 -5
  3. package/dist/cjs/Calendar/Calendar.cjs +2 -2
  4. package/dist/cjs/Calendar/CalendarHeader/CalendarHeader.cjs +12 -28
  5. package/dist/cjs/Calendar/SingleCalendar/SingleCalendar.cjs +2 -1
  6. package/dist/cjs/Calendar/utils.cjs +53 -21
  7. package/dist/cjs/CheckBoxGroup/CheckBoxGroup.cjs +1 -0
  8. package/dist/cjs/CheckBoxGroup/CheckBoxGroup.styles.cjs +1 -1
  9. package/dist/cjs/ColorPicker/ColorPicker.cjs +12 -9
  10. package/dist/cjs/ColorPicker/ColorPicker.styles.cjs +15 -12
  11. package/dist/cjs/ColorPicker/Fields/Fields.cjs +6 -3
  12. package/dist/cjs/DatePicker/DatePicker.cjs +2 -2
  13. package/dist/cjs/DatePicker/DatePicker.styles.cjs +1 -4
  14. package/dist/cjs/DatePicker/utils.cjs +2 -2
  15. package/dist/cjs/Dropdown/Dropdown.cjs +1 -0
  16. package/dist/cjs/Dropdown/Dropdown.styles.cjs +1 -1
  17. package/dist/cjs/FileUploader/DropZone/DropZone.cjs +1 -0
  18. package/dist/cjs/FileUploader/DropZone/DropZone.styles.cjs +1 -3
  19. package/dist/cjs/FilterGroup/FilterGroup.cjs +1 -0
  20. package/dist/cjs/FilterGroup/FilterGroup.styles.cjs +1 -4
  21. package/dist/cjs/FormElement/Label/Label.cjs +3 -2
  22. package/dist/cjs/FormElement/Label/Label.styles.cjs +1 -1
  23. package/dist/cjs/Input/Input.cjs +10 -8
  24. package/dist/cjs/Input/Input.styles.cjs +1 -1
  25. package/dist/cjs/RadioGroup/RadioGroup.cjs +1 -0
  26. package/dist/cjs/RadioGroup/RadioGroup.styles.cjs +1 -1
  27. package/dist/cjs/Select/Option.cjs +1 -2
  28. package/dist/cjs/Select/Select.cjs +7 -1
  29. package/dist/cjs/Select/Select.styles.cjs +1 -4
  30. package/dist/cjs/SelectionList/SelectionList.cjs +1 -0
  31. package/dist/cjs/SelectionList/SelectionList.styles.cjs +1 -1
  32. package/dist/cjs/Slider/utils.cjs +3 -3
  33. package/dist/cjs/Switch/Switch.cjs +1 -0
  34. package/dist/cjs/Switch/Switch.styles.cjs +1 -1
  35. package/dist/cjs/Table/TableRow/TableRow.styles.cjs +20 -5
  36. package/dist/cjs/Table/hooks/{useBulkActions.cjs → useHvBulkActions.cjs} +6 -7
  37. package/dist/cjs/Table/hooks/{useFilters.cjs → useHvFilters.cjs} +2 -2
  38. package/dist/cjs/Table/hooks/{useGlobalFilter.cjs → useHvGlobalFilter.cjs} +2 -2
  39. package/dist/cjs/Table/hooks/{useHeaderGroups.cjs → useHvHeaderGroups.cjs} +4 -4
  40. package/dist/cjs/Table/hooks/{usePagination.cjs → useHvPagination.cjs} +4 -4
  41. package/dist/cjs/Table/hooks/{useResizeColumns.cjs → useHvResizeColumns.cjs} +4 -4
  42. package/dist/cjs/Table/hooks/{useRowExpand.cjs → useHvRowExpand.cjs} +6 -5
  43. package/dist/cjs/Table/hooks/{useRowSelection.cjs → useHvRowSelection.cjs} +4 -8
  44. package/dist/cjs/Table/hooks/{useRowState.cjs → useHvRowState.cjs} +2 -2
  45. package/dist/cjs/Table/hooks/{useSortBy.cjs → useHvSortBy.cjs} +4 -4
  46. package/dist/cjs/Table/hooks/{useSticky.cjs → useHvSticky.cjs} +4 -6
  47. package/dist/cjs/Table/hooks/{useTable.cjs → useHvTable.cjs} +6 -4
  48. package/dist/cjs/Table/hooks/{useTableStyles.cjs → useHvTableStyles.cjs} +4 -5
  49. package/dist/cjs/Table/renderers/{DateColumnCell/DateColumnCell.cjs → DateColumnCell.cjs} +1 -1
  50. package/dist/cjs/Table/renderers/DefaultCell.cjs +21 -0
  51. package/dist/cjs/Table/renderers/{DropdownColumnCell/DropdownColumnCell.cjs → DropdownColumnCell.cjs} +1 -1
  52. package/dist/cjs/Table/renderers/{ProgressColumnCell/ProgressColumnCell.cjs → ProgressColumnCell.cjs} +20 -2
  53. package/dist/cjs/Table/renderers/{SwitchColumnCell/SwitchColumnCell.cjs → SwitchColumnCell.cjs} +13 -4
  54. package/dist/cjs/Table/renderers/renderers.cjs +21 -8
  55. package/dist/cjs/Tag/Tag.cjs +67 -49
  56. package/dist/cjs/Tag/Tag.styles.cjs +50 -64
  57. package/dist/cjs/TagsInput/TagsInput.cjs +2 -4
  58. package/dist/cjs/TagsInput/TagsInput.styles.cjs +2 -5
  59. package/dist/cjs/TextArea/TextArea.cjs +5 -4
  60. package/dist/cjs/TextArea/TextArea.styles.cjs +1 -1
  61. package/dist/cjs/TimeAgo/TimeAgo.cjs +2 -1
  62. package/dist/cjs/TimePicker/TimePicker.cjs +3 -1
  63. package/dist/cjs/TimePicker/TimePicker.styles.cjs +1 -4
  64. package/dist/cjs/index.cjs +40 -50
  65. package/dist/cjs/utils/keyboardUtils.cjs +4 -0
  66. package/dist/esm/BaseInput/BaseInput.js +3 -6
  67. package/dist/esm/BaseInput/BaseInput.js.map +1 -1
  68. package/dist/esm/ButtonBase/ButtonBase.styles.js +6 -5
  69. package/dist/esm/ButtonBase/ButtonBase.styles.js.map +1 -1
  70. package/dist/esm/Calendar/Calendar.js +3 -3
  71. package/dist/esm/Calendar/Calendar.js.map +1 -1
  72. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js +13 -24
  73. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  74. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js +3 -2
  75. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
  76. package/dist/esm/Calendar/utils.js +54 -20
  77. package/dist/esm/Calendar/utils.js.map +1 -1
  78. package/dist/esm/CheckBoxGroup/CheckBoxGroup.js +1 -0
  79. package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  80. package/dist/esm/CheckBoxGroup/CheckBoxGroup.styles.js +1 -1
  81. package/dist/esm/CheckBoxGroup/CheckBoxGroup.styles.js.map +1 -1
  82. package/dist/esm/ColorPicker/ColorPicker.js +13 -10
  83. package/dist/esm/ColorPicker/ColorPicker.js.map +1 -1
  84. package/dist/esm/ColorPicker/ColorPicker.styles.js +15 -12
  85. package/dist/esm/ColorPicker/ColorPicker.styles.js.map +1 -1
  86. package/dist/esm/ColorPicker/Fields/Fields.js +6 -3
  87. package/dist/esm/ColorPicker/Fields/Fields.js.map +1 -1
  88. package/dist/esm/Controls/Controls.js.map +1 -1
  89. package/dist/esm/DatePicker/DatePicker.js +3 -3
  90. package/dist/esm/DatePicker/DatePicker.js.map +1 -1
  91. package/dist/esm/DatePicker/DatePicker.styles.js +1 -4
  92. package/dist/esm/DatePicker/DatePicker.styles.js.map +1 -1
  93. package/dist/esm/DatePicker/utils.js +2 -2
  94. package/dist/esm/DatePicker/utils.js.map +1 -1
  95. package/dist/esm/Dropdown/Dropdown.js +1 -0
  96. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  97. package/dist/esm/Dropdown/Dropdown.styles.js +1 -1
  98. package/dist/esm/Dropdown/Dropdown.styles.js.map +1 -1
  99. package/dist/esm/FileUploader/DropZone/DropZone.js +1 -0
  100. package/dist/esm/FileUploader/DropZone/DropZone.js.map +1 -1
  101. package/dist/esm/FileUploader/DropZone/DropZone.styles.js +1 -3
  102. package/dist/esm/FileUploader/DropZone/DropZone.styles.js.map +1 -1
  103. package/dist/esm/FilterGroup/FilterGroup.js +1 -0
  104. package/dist/esm/FilterGroup/FilterGroup.js.map +1 -1
  105. package/dist/esm/FilterGroup/FilterGroup.styles.js +1 -4
  106. package/dist/esm/FilterGroup/FilterGroup.styles.js.map +1 -1
  107. package/dist/esm/FormElement/Label/Label.js +3 -2
  108. package/dist/esm/FormElement/Label/Label.js.map +1 -1
  109. package/dist/esm/FormElement/Label/Label.styles.js +1 -1
  110. package/dist/esm/FormElement/Label/Label.styles.js.map +1 -1
  111. package/dist/esm/Input/Input.js +11 -9
  112. package/dist/esm/Input/Input.js.map +1 -1
  113. package/dist/esm/Input/Input.styles.js +1 -1
  114. package/dist/esm/Input/Input.styles.js.map +1 -1
  115. package/dist/esm/RadioGroup/RadioGroup.js +1 -0
  116. package/dist/esm/RadioGroup/RadioGroup.js.map +1 -1
  117. package/dist/esm/RadioGroup/RadioGroup.styles.js +1 -1
  118. package/dist/esm/RadioGroup/RadioGroup.styles.js.map +1 -1
  119. package/dist/esm/Select/Option.js +1 -2
  120. package/dist/esm/Select/Option.js.map +1 -1
  121. package/dist/esm/Select/Select.js +7 -1
  122. package/dist/esm/Select/Select.js.map +1 -1
  123. package/dist/esm/Select/Select.styles.js +1 -4
  124. package/dist/esm/Select/Select.styles.js.map +1 -1
  125. package/dist/esm/SelectionList/SelectionList.js +1 -0
  126. package/dist/esm/SelectionList/SelectionList.js.map +1 -1
  127. package/dist/esm/SelectionList/SelectionList.styles.js +1 -1
  128. package/dist/esm/SelectionList/SelectionList.styles.js.map +1 -1
  129. package/dist/esm/Slider/utils.js +3 -3
  130. package/dist/esm/Slider/utils.js.map +1 -1
  131. package/dist/esm/Switch/Switch.js +1 -0
  132. package/dist/esm/Switch/Switch.js.map +1 -1
  133. package/dist/esm/Switch/Switch.styles.js +1 -1
  134. package/dist/esm/Switch/Switch.styles.js.map +1 -1
  135. package/dist/esm/Table/TableRow/TableRow.styles.js +16 -1
  136. package/dist/esm/Table/TableRow/TableRow.styles.js.map +1 -1
  137. package/dist/esm/Table/hooks/{useBulkActions.js → useHvBulkActions.js} +5 -6
  138. package/dist/esm/Table/hooks/useHvBulkActions.js.map +1 -0
  139. package/dist/esm/Table/hooks/{useFilters.js → useHvFilters.js} +1 -1
  140. package/dist/esm/Table/hooks/useHvFilters.js.map +1 -0
  141. package/dist/esm/Table/hooks/{useGlobalFilter.js → useHvGlobalFilter.js} +1 -1
  142. package/dist/esm/Table/hooks/useHvGlobalFilter.js.map +1 -0
  143. package/dist/esm/Table/hooks/{useHeaderGroups.js → useHvHeaderGroups.js} +3 -3
  144. package/dist/esm/Table/hooks/useHvHeaderGroups.js.map +1 -0
  145. package/dist/esm/Table/hooks/{usePagination.js → useHvPagination.js} +4 -4
  146. package/dist/esm/Table/hooks/useHvPagination.js.map +1 -0
  147. package/dist/esm/Table/hooks/{useResizeColumns.js → useHvResizeColumns.js} +3 -3
  148. package/dist/esm/Table/hooks/useHvResizeColumns.js.map +1 -0
  149. package/dist/esm/Table/hooks/{useRowExpand.js → useHvRowExpand.js} +5 -4
  150. package/dist/esm/Table/hooks/useHvRowExpand.js.map +1 -0
  151. package/dist/esm/Table/hooks/{useRowSelection.js → useHvRowSelection.js} +3 -7
  152. package/dist/esm/Table/hooks/useHvRowSelection.js.map +1 -0
  153. package/dist/esm/Table/hooks/{useRowState.js → useHvRowState.js} +1 -1
  154. package/dist/esm/Table/hooks/useHvRowState.js.map +1 -0
  155. package/dist/esm/Table/hooks/{useSortBy.js → useHvSortBy.js} +3 -3
  156. package/dist/esm/Table/hooks/useHvSortBy.js.map +1 -0
  157. package/dist/esm/Table/hooks/{useSticky.js → useHvSticky.js} +3 -5
  158. package/dist/esm/Table/hooks/useHvSticky.js.map +1 -0
  159. package/dist/esm/Table/hooks/{useTable.js → useHvTable.js} +5 -3
  160. package/dist/esm/Table/hooks/useHvTable.js.map +1 -0
  161. package/dist/esm/Table/hooks/{useTableStyles.js → useHvTableStyles.js} +3 -4
  162. package/dist/esm/Table/hooks/useHvTableStyles.js.map +1 -0
  163. package/dist/esm/Table/renderers/{DateColumnCell/DateColumnCell.js → DateColumnCell.js} +1 -1
  164. package/dist/esm/Table/renderers/DateColumnCell.js.map +1 -0
  165. package/dist/esm/Table/renderers/DefaultCell.js +21 -0
  166. package/dist/esm/Table/renderers/DefaultCell.js.map +1 -0
  167. package/dist/esm/Table/renderers/{DropdownColumnCell/DropdownColumnCell.js → DropdownColumnCell.js} +1 -1
  168. package/dist/esm/Table/renderers/DropdownColumnCell.js.map +1 -0
  169. package/dist/esm/Table/renderers/{ProgressColumnCell/ProgressColumnCell.js → ProgressColumnCell.js} +19 -1
  170. package/dist/esm/Table/renderers/ProgressColumnCell.js.map +1 -0
  171. package/dist/esm/Table/renderers/{SwitchColumnCell/SwitchColumnCell.js → SwitchColumnCell.js} +12 -3
  172. package/dist/esm/Table/renderers/SwitchColumnCell.js.map +1 -0
  173. package/dist/esm/Table/renderers/renderers.js +18 -5
  174. package/dist/esm/Table/renderers/renderers.js.map +1 -1
  175. package/dist/esm/Tag/Tag.js +71 -51
  176. package/dist/esm/Tag/Tag.js.map +1 -1
  177. package/dist/esm/Tag/Tag.styles.js +50 -64
  178. package/dist/esm/Tag/Tag.styles.js.map +1 -1
  179. package/dist/esm/TagsInput/TagsInput.js +2 -4
  180. package/dist/esm/TagsInput/TagsInput.js.map +1 -1
  181. package/dist/esm/TagsInput/TagsInput.styles.js +2 -5
  182. package/dist/esm/TagsInput/TagsInput.styles.js.map +1 -1
  183. package/dist/esm/TextArea/TextArea.js +5 -4
  184. package/dist/esm/TextArea/TextArea.js.map +1 -1
  185. package/dist/esm/TextArea/TextArea.styles.js +1 -1
  186. package/dist/esm/TextArea/TextArea.styles.js.map +1 -1
  187. package/dist/esm/TimeAgo/TimeAgo.js +2 -1
  188. package/dist/esm/TimeAgo/TimeAgo.js.map +1 -1
  189. package/dist/esm/TimePicker/TimePicker.js +3 -1
  190. package/dist/esm/TimePicker/TimePicker.js.map +1 -1
  191. package/dist/esm/TimePicker/TimePicker.styles.js +1 -4
  192. package/dist/esm/TimePicker/TimePicker.styles.js.map +1 -1
  193. package/dist/esm/index.js +34 -44
  194. package/dist/esm/index.js.map +1 -1
  195. package/dist/esm/utils/keyboardUtils.js +4 -0
  196. package/dist/esm/utils/keyboardUtils.js.map +1 -1
  197. package/dist/types/index.d.ts +369 -395
  198. package/package.json +6 -6
  199. package/dist/cjs/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.cjs +0 -26
  200. package/dist/cjs/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.cjs +0 -21
  201. package/dist/cjs/Table/utils/fallbacks.cjs +0 -16
  202. package/dist/cjs/Table/utils/utils.cjs +0 -19
  203. package/dist/esm/Table/hooks/useBulkActions.js.map +0 -1
  204. package/dist/esm/Table/hooks/useFilters.js.map +0 -1
  205. package/dist/esm/Table/hooks/useGlobalFilter.js.map +0 -1
  206. package/dist/esm/Table/hooks/useHeaderGroups.js.map +0 -1
  207. package/dist/esm/Table/hooks/usePagination.js.map +0 -1
  208. package/dist/esm/Table/hooks/useResizeColumns.js.map +0 -1
  209. package/dist/esm/Table/hooks/useRowExpand.js.map +0 -1
  210. package/dist/esm/Table/hooks/useRowSelection.js.map +0 -1
  211. package/dist/esm/Table/hooks/useRowState.js.map +0 -1
  212. package/dist/esm/Table/hooks/useSortBy.js.map +0 -1
  213. package/dist/esm/Table/hooks/useSticky.js.map +0 -1
  214. package/dist/esm/Table/hooks/useTable.js.map +0 -1
  215. package/dist/esm/Table/hooks/useTableStyles.js.map +0 -1
  216. package/dist/esm/Table/renderers/DateColumnCell/DateColumnCell.js.map +0 -1
  217. package/dist/esm/Table/renderers/DropdownColumnCell/DropdownColumnCell.js.map +0 -1
  218. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.js.map +0 -1
  219. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js +0 -26
  220. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js.map +0 -1
  221. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.js.map +0 -1
  222. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.js +0 -21
  223. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.js.map +0 -1
  224. package/dist/esm/Table/utils/fallbacks.js +0 -16
  225. package/dist/esm/Table/utils/fallbacks.js.map +0 -1
  226. package/dist/esm/Table/utils/utils.js +0 -19
  227. package/dist/esm/Table/utils/utils.js.map +0 -1
@@ -33,19 +33,6 @@ const theme = require("./utils/theme.cjs");
33
33
  const useSavedState = require("./utils/useSavedState.cjs");
34
34
  const wrapperTooltip = require("./utils/wrapperTooltip.cjs");
35
35
  const helpers = require("./utils/helpers.cjs");
36
- const useTable = require("./Table/hooks/useTable.cjs");
37
- const useTableStyles = require("./Table/hooks/useTableStyles.cjs");
38
- const useSortBy = require("./Table/hooks/useSortBy.cjs");
39
- const useSticky = require("./Table/hooks/useSticky.cjs");
40
- const usePagination = require("./Table/hooks/usePagination.cjs");
41
- const useRowSelection = require("./Table/hooks/useRowSelection.cjs");
42
- const useBulkActions = require("./Table/hooks/useBulkActions.cjs");
43
- const useRowExpand = require("./Table/hooks/useRowExpand.cjs");
44
- const useHeaderGroups = require("./Table/hooks/useHeaderGroups.cjs");
45
- const useResizeColumns = require("./Table/hooks/useResizeColumns.cjs");
46
- const useGlobalFilter = require("./Table/hooks/useGlobalFilter.cjs");
47
- const useFilters = require("./Table/hooks/useFilters.cjs");
48
- const useRowState = require("./Table/hooks/useRowState.cjs");
49
36
  const utils = require("./Typography/utils.cjs");
50
37
  const Typography_styles = require("./Typography/Typography.styles.cjs");
51
38
  const Typography = require("./Typography/Typography.cjs");
@@ -245,6 +232,7 @@ const Switch_styles = require("./Switch/Switch.styles.cjs");
245
232
  const Switch = require("./Switch/Switch.cjs");
246
233
  const Tab_styles = require("./Tab/Tab.styles.cjs");
247
234
  const Tab = require("./Tab/Tab.cjs");
235
+ const useHvTable = require("./Table/hooks/useHvTable.cjs");
248
236
  const Table_styles = require("./Table/Table.styles.cjs");
249
237
  const Table = require("./Table/Table.cjs");
250
238
  const TableContainer_styles = require("./Table/TableContainer/TableContainer.styles.cjs");
@@ -259,13 +247,23 @@ const TableRow_styles = require("./Table/TableRow/TableRow.styles.cjs");
259
247
  const TableRow = require("./Table/TableRow/TableRow.cjs");
260
248
  const TableCell_styles = require("./Table/TableCell/TableCell.styles.cjs");
261
249
  const TableCell = require("./Table/TableCell/TableCell.cjs");
250
+ const useHvTableStyles = require("./Table/hooks/useHvTableStyles.cjs");
251
+ const useHvSortBy = require("./Table/hooks/useHvSortBy.cjs");
252
+ const useHvSticky = require("./Table/hooks/useHvSticky.cjs");
253
+ const useHvPagination = require("./Table/hooks/useHvPagination.cjs");
254
+ const useHvRowSelection = require("./Table/hooks/useHvRowSelection.cjs");
255
+ const useHvBulkActions = require("./Table/hooks/useHvBulkActions.cjs");
256
+ const useHvRowExpand = require("./Table/hooks/useHvRowExpand.cjs");
257
+ const useHvHeaderGroups = require("./Table/hooks/useHvHeaderGroups.cjs");
258
+ const useHvResizeColumns = require("./Table/hooks/useHvResizeColumns.cjs");
259
+ const useHvGlobalFilter = require("./Table/hooks/useHvGlobalFilter.cjs");
260
+ const useHvFilters = require("./Table/hooks/useHvFilters.cjs");
261
+ const useHvRowState = require("./Table/hooks/useHvRowState.cjs");
262
262
  const renderers = require("./Table/renderers/renderers.cjs");
263
- const DateColumnCell = require("./Table/renderers/DateColumnCell/DateColumnCell.cjs");
264
- const DropdownColumnCell = require("./Table/renderers/DropdownColumnCell/DropdownColumnCell.cjs");
265
- const ProgressColumnCell = require("./Table/renderers/ProgressColumnCell/ProgressColumnCell.cjs");
266
- const SwitchColumnCell = require("./Table/renderers/SwitchColumnCell/SwitchColumnCell.cjs");
267
- const fallbacks = require("./Table/utils/fallbacks.cjs");
268
- const utils$1 = require("./Table/utils/utils.cjs");
263
+ const DateColumnCell = require("./Table/renderers/DateColumnCell.cjs");
264
+ const DropdownColumnCell = require("./Table/renderers/DropdownColumnCell.cjs");
265
+ const ProgressColumnCell = require("./Table/renderers/ProgressColumnCell.cjs");
266
+ const SwitchColumnCell = require("./Table/renderers/SwitchColumnCell.cjs");
269
267
  const Tabs_styles = require("./Tabs/Tabs.styles.cjs");
270
268
  const Tabs = require("./Tabs/Tabs.cjs");
271
269
  const Tag_styles = require("./Tag/Tag.styles.cjs");
@@ -369,6 +367,7 @@ exports.outlineStyles = focusUtils.outlineStyles;
369
367
  exports.getComponentName = getComponentName.getComponentName;
370
368
  exports.hexToRgbA = hexToRgbA.hexToRgbA;
371
369
  exports.iconVariant = iconVariant.iconVariant;
370
+ exports.isDeleteKey = keyboardUtils.isDeleteKey;
372
371
  exports.isKey = keyboardUtils.isKey;
373
372
  exports.isOneOfKeys = keyboardUtils.isOneOfKeys;
374
373
  exports.multiSelectionEventHandler = multiSelectionEventHandler.multiSelectionEventHandler;
@@ -384,33 +383,6 @@ exports.setElementAttrs = theme.setElementAttrs;
384
383
  exports.useSavedState = useSavedState.useSavedState;
385
384
  exports.wrapperTooltip = wrapperTooltip.wrapperTooltip;
386
385
  exports.uniqueId = helpers.uniqueId;
387
- exports.useHvData = useTable.default;
388
- exports.useHvTable = useTable.default;
389
- exports.getHeaderFooterPropsHook = useTableStyles.getHeaderFooterPropsHook;
390
- exports.useHvTableStyles = useTableStyles.default;
391
- exports.useHvSortBy = useSortBy.default;
392
- exports.getHeaderGroupPropsHook = useSticky.getHeaderGroupPropsHook;
393
- exports.getTableHeadPropsHook = useSticky.getTableHeadPropsHook;
394
- exports.useHvTableSticky = useSticky.default;
395
- exports.defaultGetHvPaginationProps = usePagination.defaultGetHvPaginationProps;
396
- exports.useHvPagination = usePagination.default;
397
- exports.CellWithCheckBox = useRowSelection.CellWithCheckBox;
398
- exports.defaultGetToggleAllPageRowsSelectedProps = useRowSelection.defaultGetToggleAllPageRowsSelectedProps;
399
- exports.defaultGetToggleAllRowsSelectedProps = useRowSelection.defaultGetToggleAllRowsSelectedProps;
400
- exports.defaultGetToggleRowSelectedProps = useRowSelection.defaultGetToggleRowSelectedProps;
401
- exports.prepareRow = useRowSelection.prepareRow;
402
- exports.reducer = useRowSelection.reducer;
403
- exports.useHvRowSelection = useRowSelection.default;
404
- exports.useInstance = useRowSelection.useInstance;
405
- exports.defaultgetHvBulkActionsProps = useBulkActions.defaultgetHvBulkActionsProps;
406
- exports.useHvBulkActions = useBulkActions.default;
407
- exports.CellWithExpandButton = useRowExpand.CellWithExpandButton;
408
- exports.useHvRowExpand = useRowExpand.default;
409
- exports.useHvHeaderGroups = useHeaderGroups.default;
410
- exports.useHvResizeColumns = useResizeColumns.default;
411
- exports.useHvGlobalFilter = useGlobalFilter.default;
412
- exports.useHvFilters = useFilters.default;
413
- exports.useHvRowState = useRowState.default;
414
386
  exports.typographyVariants = utils.typographyVariants;
415
387
  exports.typographyClasses = Typography_styles.staticClasses;
416
388
  exports.HvTypography = Typography.HvTypography;
@@ -617,6 +589,8 @@ exports.switchClasses = Switch_styles.staticClasses;
617
589
  exports.HvSwitch = Switch.HvSwitch;
618
590
  exports.tabClasses = Tab_styles.staticClasses;
619
591
  exports.HvTab = Tab.HvTab;
592
+ exports.useHvData = useHvTable.useHvTable;
593
+ exports.useHvTable = useHvTable.useHvTable;
620
594
  exports.tableClasses = Table_styles.staticClasses;
621
595
  exports.HvTable = Table.HvTable;
622
596
  exports.tableContainerClasses = TableContainer_styles.staticClasses;
@@ -631,11 +605,31 @@ exports.tableRowClasses = TableRow_styles.staticClasses;
631
605
  exports.HvTableRow = TableRow.HvTableRow;
632
606
  exports.tableCellClasses = TableCell_styles.staticClasses;
633
607
  exports.HvTableCell = TableCell.HvTableCell;
608
+ exports.useHvTableStyles = useHvTableStyles.useHvTableStyles;
609
+ exports.useHvSortBy = useHvSortBy.useHvSortBy;
610
+ exports.useHvTableSticky = useHvSticky.useHvTableSticky;
611
+ exports.defaultGetHvPaginationProps = useHvPagination.defaultGetHvPaginationProps;
612
+ exports.useHvPagination = useHvPagination.useHvPagination;
613
+ exports.defaultGetToggleAllPageRowsSelectedProps = useHvRowSelection.defaultGetToggleAllPageRowsSelectedProps;
614
+ exports.defaultGetToggleAllRowsSelectedProps = useHvRowSelection.defaultGetToggleAllRowsSelectedProps;
615
+ exports.defaultGetToggleRowSelectedProps = useHvRowSelection.defaultGetToggleRowSelectedProps;
616
+ exports.useHvRowSelection = useHvRowSelection.useHvRowSelection;
617
+ exports.useHvBulkActions = useHvBulkActions.useHvBulkActions;
618
+ exports.CellWithExpandButton = useHvRowExpand.CellWithExpandButton;
619
+ exports.useHvRowExpand = useHvRowExpand.useHvRowExpand;
620
+ exports.useHvHeaderGroups = useHvHeaderGroups.useHvHeaderGroups;
621
+ exports.useHvResizeColumns = useHvResizeColumns.useHvResizeColumns;
622
+ exports.useHvGlobalFilter = useHvGlobalFilter.useHvGlobalFilter;
623
+ exports.useHvFilters = useHvFilters.useHvFilters;
624
+ exports.useHvRowState = useHvRowState.useHvRowState;
634
625
  exports.hvDateColumn = renderers.hvDateColumn;
635
626
  exports.hvDropdownColumn = renderers.hvDropdownColumn;
636
627
  exports.hvExpandColumn = renderers.hvExpandColumn;
628
+ exports.hvNodeFallback = renderers.hvNodeFallback;
637
629
  exports.hvNumberColumn = renderers.hvNumberColumn;
630
+ exports.hvNumberFallback = renderers.hvNumberFallback;
638
631
  exports.hvProgressColumn = renderers.hvProgressColumn;
632
+ exports.hvStringFallback = renderers.hvStringFallback;
639
633
  exports.hvSwitchColumn = renderers.hvSwitchColumn;
640
634
  exports.hvTagColumn = renderers.hvTagColumn;
641
635
  exports.hvTextColumn = renderers.hvTextColumn;
@@ -644,10 +638,6 @@ exports.HvDropdownColumnCell = DropdownColumnCell.HvDropdownColumnCell;
644
638
  exports.HvProgressColumnCell = ProgressColumnCell.HvProgressColumnCell;
645
639
  exports.normalizeProgressBar = ProgressColumnCell.normalizeProgressBar;
646
640
  exports.HvSwitchColumnCell = SwitchColumnCell.HvSwitchColumnCell;
647
- exports.hvNodeFallback = fallbacks.hvNodeFallback;
648
- exports.hvNumberFallback = fallbacks.hvNumberFallback;
649
- exports.hvStringFallback = fallbacks.hvStringFallback;
650
- exports.getBorderStyles = utils$1.getBorderStyles;
651
641
  exports.tabsClasses = Tabs_styles.staticClasses;
652
642
  exports.HvTabs = Tabs.HvTabs;
653
643
  exports.tagClasses = Tag_styles.staticClasses;
@@ -25,5 +25,9 @@ const isKey = (event, keyCode) => {
25
25
  const isOneOfKeys = (event, keys) => {
26
26
  return keys.some((key) => isKey(event, key));
27
27
  };
28
+ function isDeleteKey(event) {
29
+ return isOneOfKeys(event, ["Backspace", "Delete"]);
30
+ }
31
+ exports.isDeleteKey = isDeleteKey;
28
32
  exports.isKey = isKey;
29
33
  exports.isOneOfKeys = isOneOfKeys;
@@ -1,7 +1,7 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, useContext } from "react";
3
3
  import { css, Global } from "@emotion/react";
4
- import MuiInput from "@mui/material/Input";
4
+ import MuiInputBase from "@mui/material/InputBase";
5
5
  import { useForkRef } from "@mui/material/utils";
6
6
  import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
7
7
  import { theme } from "@hitachivantara/uikit-styles";
@@ -72,9 +72,6 @@ const HvBaseInput = forwardRef(function HvBaseInput2(props, ref) {
72
72
  localInvalid,
73
73
  id
74
74
  );
75
- const onChangeHandler = (event) => {
76
- onChange?.(event, event.target.value);
77
- };
78
75
  return /* @__PURE__ */ jsxs(Fragment, { children: [
79
76
  /* @__PURE__ */ jsx(Global, { styles: baseInputStyles }),
80
77
  /* @__PURE__ */ jsxs(
@@ -88,7 +85,7 @@ const HvBaseInput = forwardRef(function HvBaseInput2(props, ref) {
88
85
  }),
89
86
  children: [
90
87
  /* @__PURE__ */ jsx(
91
- MuiInput,
88
+ MuiInputBase,
92
89
  {
93
90
  id,
94
91
  name: formElementProps.name,
@@ -98,7 +95,7 @@ const HvBaseInput = forwardRef(function HvBaseInput2(props, ref) {
98
95
  placeholder,
99
96
  readOnly: !!formElementProps.readOnly,
100
97
  disabled: formElementProps.disabled,
101
- onChange: onChangeHandler,
98
+ onChange: (event) => onChange?.(event, event.target.value),
102
99
  className: cx({
103
100
  [classes.inputRootInvalid]: localInvalid,
104
101
  [classes.inputRootReadOnly]: formElementProps.readOnly
@@ -1 +1 @@
1
- {"version":3,"file":"BaseInput.js","sources":["../../../src/BaseInput/BaseInput.tsx"],"sourcesContent":["import { forwardRef, useContext } from \"react\";\nimport { css as emotionCss, Global } from \"@emotion/react\";\nimport MuiInput, { InputProps as MuiInputProps } from \"@mui/material/Input\";\nimport {\n InputBaseProps,\n InputBaseComponentProps as MuiInputBaseComponentProps,\n} from \"@mui/material/InputBase\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport {\n buildAriaPropsFromContext,\n buildFormElementPropsFromContext,\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n} from \"../FormElement\";\nimport { staticClasses, useClasses } from \"./BaseInput.styles\";\n\nexport { staticClasses as baseInputClasses };\n\nexport type HvBaseInputClasses = ExtractNames<typeof useClasses>;\n\n// Global styles for the base input.\nconst baseInputStyles = emotionCss({\n \"input:-webkit-autofill\": {\n WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.atmo1} inset`,\n WebkitTextFillColor: theme.colors.secondary,\n },\n\n // Clears number input up/down arrows in Chrome and Firefox\n \"input::-webkit-outer-spin-button,input::-webkit-inner-spin-button\": {\n WebkitAppearance: \"none\",\n margin: 0,\n },\n \"input[type=number]\": {\n MozAppearance: \"textfield\",\n },\n\n // Clears time input clock in Chrome\n \"input::-webkit-calendar-picker-indicator\": {\n display: \"none\",\n },\n\n // Clears search input clear button in Chrome\n \"input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration\":\n {\n display: \"none\",\n },\n});\n\nexport interface HvBaseInputProps\n extends Omit<MuiInputProps, \"onChange\" | \"classes\" | \"ref\"> {\n /** The input name. */\n name?: string;\n /** The value of the input, when controlled. */\n value?: string;\n /** The initial value of the input, when uncontrolled. */\n defaultValue?: string;\n /** If `true` the input is disabled. */\n disabled?: boolean;\n /** Indicates that the input is not editable. */\n readOnly?: boolean;\n /** If true, the input element will be required. */\n required?: boolean;\n /** The function that will be executed onChange, allows modification of the input,\n * it receives the value. If a new value should be presented it must returned it. */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n value: string,\n ) => void;\n /** The input type. */\n type?: string;\n /** Label inside the input used to help user. */\n placeholder?: string;\n /** If true, a textarea element will be rendered. */\n multiline?: boolean;\n /** If true and multiline is also true the textarea element will be resizable. */\n resizable?: boolean;\n /** Denotes if the input is in an invalid state. */\n invalid?: boolean;\n /** Attributes applied to the input element. */\n inputProps?: MuiInputBaseComponentProps;\n /** Allows passing a ref to the underlying input */\n inputRef?: InputBaseProps[\"inputRef\"];\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseInputClasses;\n}\n\n/**\n * An Input component that only posses the most basic functionalities.\n * It should be used alongside the other form elements to construct a proper accessible form.\n */\nexport const HvBaseInput = forwardRef<\n // no-indent\n unknown,\n HvBaseInputProps\n>(function HvBaseInput(props, ref) {\n const {\n classes: classesProp,\n className = \"\",\n id,\n name,\n value,\n defaultValue,\n required,\n readOnly,\n disabled,\n onChange,\n type = \"text\",\n placeholder,\n multiline,\n resizable,\n invalid,\n inputRef,\n inputProps = {},\n ...others\n } = useDefaultProps(\"HvBaseInput\", props);\n const { classes, cx } = useClasses(classesProp);\n const formElementContext = useContext(HvFormElementContext);\n const formElementProps = buildFormElementPropsFromContext(\n name,\n disabled,\n readOnly,\n required,\n formElementContext,\n );\n\n const forkedRef = useForkRef(ref, inputRef);\n\n const localInvalid = invalid || formElementProps.status === \"invalid\";\n\n const formElementDescriptorsContext = useContext(\n HvFormElementDescriptorsContext,\n );\n const ariaProps = buildAriaPropsFromContext(\n inputProps,\n formElementDescriptorsContext,\n localInvalid,\n id,\n );\n\n const onChangeHandler: MuiInputProps[\"onChange\"] = (event) => {\n onChange?.(event, event.target.value);\n };\n\n return (\n <>\n <Global styles={baseInputStyles} />\n <div\n className={cx(classes.root, className, {\n [classes.disabled]: formElementProps.disabled,\n [classes.invalid]: localInvalid,\n [classes.resizable]: multiline && resizable,\n [classes.readOnly]: formElementProps.readOnly,\n })}\n >\n <MuiInput\n id={id}\n name={formElementProps.name}\n value={value}\n defaultValue={defaultValue}\n type={type}\n placeholder={placeholder}\n readOnly={!!formElementProps.readOnly}\n disabled={formElementProps.disabled}\n onChange={onChangeHandler}\n className={cx({\n [classes.inputRootInvalid]: localInvalid,\n [classes.inputRootReadOnly]: formElementProps.readOnly,\n })}\n classes={{\n root: classes.inputRoot,\n focused: classes.inputRootFocused,\n disabled: classes.inputRootDisabled,\n multiline: classes.inputRootMultiline,\n input: cx(classes.input, {\n [classes.inputResizable]: !formElementProps.disabled && resizable,\n [classes.inputDisabled]: formElementProps.disabled,\n [classes.inputReadOnly]: formElementProps.readOnly,\n }),\n }}\n inputProps={{\n // Avoid the required attribute at the root node\n required: formElementProps.required,\n ...inputProps,\n ...ariaProps,\n }}\n inputRef={forkedRef}\n multiline={multiline}\n rows={10}\n {...others}\n />\n {!multiline && (\n <div role=\"presentation\" className={classes.inputBorderContainer} />\n )}\n </div>\n </>\n );\n});\n"],"names":["emotionCss","HvBaseInput"],"mappings":"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"}
1
+ {"version":3,"file":"BaseInput.js","sources":["../../../src/BaseInput/BaseInput.tsx"],"sourcesContent":["import { forwardRef, useContext } from \"react\";\nimport { css as emotionCss, Global } from \"@emotion/react\";\nimport MuiInputBase, { InputBaseProps } from \"@mui/material/InputBase\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport {\n buildAriaPropsFromContext,\n buildFormElementPropsFromContext,\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n} from \"../FormElement\";\nimport { staticClasses, useClasses } from \"./BaseInput.styles\";\n\nexport { staticClasses as baseInputClasses };\n\nexport type HvBaseInputClasses = ExtractNames<typeof useClasses>;\n\n// Global styles for the base input.\nconst baseInputStyles = emotionCss({\n \"input:-webkit-autofill\": {\n WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.atmo1} inset`,\n WebkitTextFillColor: theme.colors.secondary,\n },\n\n // Clears number input up/down arrows in Chrome and Firefox\n \"input::-webkit-outer-spin-button,input::-webkit-inner-spin-button\": {\n WebkitAppearance: \"none\",\n margin: 0,\n },\n \"input[type=number]\": {\n MozAppearance: \"textfield\",\n },\n\n // Clears time input clock in Chrome\n \"input::-webkit-calendar-picker-indicator\": {\n display: \"none\",\n },\n\n // Clears search input clear button in Chrome\n \"input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration\":\n {\n display: \"none\",\n },\n});\n\nexport interface HvBaseInputProps\n extends Omit<\n InputBaseProps,\n \"onChange\" | \"classes\" | \"ref\" | \"color\" | \"size\"\n > {\n /** The input name. */\n name?: string;\n /** The value of the input, when controlled. */\n value?: React.InputHTMLAttributes<HTMLInputElement>[\"value\"];\n /** The initial value of the input, when uncontrolled. */\n defaultValue?: React.InputHTMLAttributes<HTMLInputElement>[\"value\"];\n /** If `true` the input is disabled. */\n disabled?: boolean;\n /** Indicates that the input is not editable. */\n readOnly?: boolean;\n /** If true, the input element will be required. */\n required?: boolean;\n /** The function that will be executed onChange, allows modification of the input,\n * it receives the value. If a new value should be presented it must returned it. */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n value: string,\n ) => void;\n /** If true, a textarea element will be rendered. */\n multiline?: boolean;\n /** If true and multiline is also true the textarea element will be resizable. */\n resizable?: boolean;\n /** Denotes if the input is in an invalid state. */\n invalid?: boolean;\n /**\n * Allows passing a ref to the underlying input\n * @deprecated Use `ref` directly instead\n * */\n inputRef?: InputBaseProps[\"inputRef\"];\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseInputClasses;\n}\n\n/**\n * An Input component that only posses the most basic functionalities.\n * It should be used alongside the other form elements to construct a proper accessible form.\n */\nexport const HvBaseInput = forwardRef<\n // no-indent\n React.ElementRef<\"input\">,\n HvBaseInputProps\n>(function HvBaseInput(props, ref) {\n const {\n classes: classesProp,\n className = \"\",\n id,\n name,\n value,\n defaultValue,\n required,\n readOnly,\n disabled,\n onChange,\n type = \"text\",\n placeholder,\n multiline,\n resizable,\n invalid,\n inputRef,\n inputProps = {},\n ...others\n } = useDefaultProps(\"HvBaseInput\", props);\n const { classes, cx } = useClasses(classesProp);\n const formElementContext = useContext(HvFormElementContext);\n const formElementProps = buildFormElementPropsFromContext(\n name,\n disabled,\n readOnly,\n required,\n formElementContext,\n );\n\n const forkedRef = useForkRef(ref, inputRef);\n\n const localInvalid = invalid || formElementProps.status === \"invalid\";\n\n const formElementDescriptorsContext = useContext(\n HvFormElementDescriptorsContext,\n );\n const ariaProps = buildAriaPropsFromContext(\n inputProps,\n formElementDescriptorsContext,\n localInvalid,\n id,\n );\n\n return (\n <>\n <Global styles={baseInputStyles} />\n <div\n className={cx(classes.root, className, {\n [classes.disabled]: formElementProps.disabled,\n [classes.invalid]: localInvalid,\n [classes.resizable]: multiline && resizable,\n [classes.readOnly]: formElementProps.readOnly,\n })}\n >\n <MuiInputBase\n id={id}\n name={formElementProps.name}\n value={value}\n defaultValue={defaultValue}\n type={type}\n placeholder={placeholder}\n readOnly={!!formElementProps.readOnly}\n disabled={formElementProps.disabled}\n onChange={(event) => onChange?.(event, event.target.value)}\n className={cx({\n [classes.inputRootInvalid]: localInvalid,\n [classes.inputRootReadOnly]: formElementProps.readOnly,\n })}\n classes={{\n root: classes.inputRoot,\n focused: classes.inputRootFocused,\n disabled: classes.inputRootDisabled,\n multiline: classes.inputRootMultiline,\n input: cx(classes.input, {\n [classes.inputResizable]: !formElementProps.disabled && resizable,\n [classes.inputDisabled]: formElementProps.disabled,\n [classes.inputReadOnly]: formElementProps.readOnly,\n }),\n }}\n inputProps={{\n // Avoid the required attribute at the root node\n required: formElementProps.required,\n ...inputProps,\n ...ariaProps,\n }}\n inputRef={forkedRef}\n multiline={multiline}\n rows={10}\n {...others}\n />\n {!multiline && (\n <div role=\"presentation\" className={classes.inputBorderContainer} />\n )}\n </div>\n </>\n );\n});\n"],"names":["emotionCss","HvBaseInput"],"mappings":"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"}
@@ -8,12 +8,13 @@ const { staticClasses, useClasses } = createClasses("HvButtonBase", {
8
8
  background: "none",
9
9
  padding: 0,
10
10
  // Background color common for almost all variants
11
- "&:hover": {
12
- backgroundColor: theme.colors.containerBackgroundHover
11
+ ":where(:not($disabled))": {
12
+ ":hover, :focus-visible": {
13
+ backgroundColor: theme.colors.containerBackgroundHover
14
+ }
13
15
  },
14
- "&:focus-visible": {
15
- ...outlineStyles,
16
- backgroundColor: theme.colors.containerBackgroundHover
16
+ ":focus-visible": {
17
+ ...outlineStyles
17
18
  },
18
19
  // Default button - no size specified
19
20
  fontFamily: theme.fontFamily.body,
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonBase.styles.js","sources":["../../../src/ButtonBase/ButtonBase.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { outlineStyles } from \"../utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvButtonBase\", {\n root: {\n display: \"inline-flex\",\n cursor: \"pointer\",\n background: \"none\",\n padding: 0,\n\n // Background color common for almost all variants\n \"&:hover\": {\n backgroundColor: theme.colors.containerBackgroundHover,\n },\n \"&:focus-visible\": {\n ...outlineStyles,\n backgroundColor: theme.colors.containerBackgroundHover,\n },\n\n // Default button - no size specified\n fontFamily: theme.fontFamily.body,\n fontSize: \"inherit\",\n color: \"inherit\",\n },\n disabled: {\n cursor: \"not-allowed\",\n color: theme.colors.secondary_60,\n \"&:hover, &:focus-visible\": {\n backgroundColor: \"transparent\",\n },\n },\n});\n"],"names":[],"mappings":";;;AAKO,MAAM,EAAE,eAAe,eAAe,cAAc,gBAAgB;AAAA,EACzE,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA;AAAA,IAGT,WAAW;AAAA,MACT,iBAAiB,MAAM,OAAO;AAAA,IAChC;AAAA,IACA,mBAAmB;AAAA,MACjB,GAAG;AAAA,MACH,iBAAiB,MAAM,OAAO;AAAA,IAChC;AAAA;AAAA,IAGA,YAAY,MAAM,WAAW;AAAA,IAC7B,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO,MAAM,OAAO;AAAA,IACpB,4BAA4B;AAAA,MAC1B,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ,CAAC;"}
1
+ {"version":3,"file":"ButtonBase.styles.js","sources":["../../../src/ButtonBase/ButtonBase.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { outlineStyles } from \"../utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvButtonBase\", {\n root: {\n display: \"inline-flex\",\n cursor: \"pointer\",\n background: \"none\",\n padding: 0,\n\n // Background color common for almost all variants\n \":where(:not($disabled))\": {\n \":hover, :focus-visible\": {\n backgroundColor: theme.colors.containerBackgroundHover,\n },\n },\n \":focus-visible\": {\n ...outlineStyles,\n },\n\n // Default button - no size specified\n fontFamily: theme.fontFamily.body,\n fontSize: \"inherit\",\n color: \"inherit\",\n },\n disabled: {\n cursor: \"not-allowed\",\n color: theme.colors.secondary_60,\n \"&:hover, &:focus-visible\": {\n backgroundColor: \"transparent\",\n },\n },\n});\n"],"names":[],"mappings":";;;AAKO,MAAM,EAAE,eAAe,eAAe,cAAc,gBAAgB;AAAA,EACzE,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA;AAAA,IAGT,2BAA2B;AAAA,MACzB,0BAA0B;AAAA,QACxB,iBAAiB,MAAM,OAAO;AAAA,MAAA;AAAA,IAElC;AAAA,IACA,kBAAkB;AAAA,MAChB,GAAG;AAAA,IACL;AAAA;AAAA,IAGA,YAAY,MAAM,WAAW;AAAA,IAC7B,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO,MAAM,OAAO;AAAA,IACpB,4BAA4B;AAAA,MAC1B,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ,CAAC;"}
@@ -4,14 +4,14 @@ import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
4
4
  import { setId } from "../utils/setId.js";
5
5
  import { useClasses } from "./Calendar.styles.js";
6
6
  import { staticClasses } from "./Calendar.styles.js";
7
- import { isRange } from "./utils.js";
8
- import { HvSingleCalendar } from "./SingleCalendar/SingleCalendar.js";
7
+ import { DEFAULT_LOCALE, isRange } from "./utils.js";
9
8
  import { HvFormElementContext, HvFormElementValueContext } from "../FormElement/context.js";
9
+ import { HvSingleCalendar } from "./SingleCalendar/SingleCalendar.js";
10
10
  const HvCalendar = (props) => {
11
11
  const {
12
12
  classes: classesProp,
13
13
  id: idProp,
14
- locale = "en-US",
14
+ locale = DEFAULT_LOCALE,
15
15
  value: valueProp,
16
16
  visibleMonth,
17
17
  visibleYear,
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sources":["../../../src/Calendar/Calendar.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n HvFormElementContext,\n HvFormElementValueContext,\n} from \"../FormElement\";\nimport { setId } from \"../utils/setId\";\nimport { staticClasses, useClasses } from \"./Calendar.styles\";\nimport { HvSingleCalendar } from \"./SingleCalendar\";\nimport { DateRangeProp, VisibilitySelectorActions } from \"./types\";\nimport { isRange } from \"./utils\";\n\nexport { staticClasses as calendarClasses };\n\nexport type HvCalendarClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCalendarProps {\n /**\n * Styles applied from the theme.\n */\n classes?: HvCalendarClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * The calendar locale. If undefined, it defaults to en-US\n *\n */\n locale?: string;\n /**\n * Date that the calendar would show.\n * if using the object format the calendar enter in range mode showing two calendars\n */\n value?: DateRangeProp | Date;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth?: number;\n /**\n * Controls the visible year of the Calendar\n */\n visibleYear?: number;\n /**\n * Controls the visible month of the Calendar on the right side of the datepicker\n */\n rightVisibleMonth?: number;\n /**\n * Controls the visible year of the Calendar on the right side of the datepicker\n */\n rightVisibleYear?: number;\n /**\n * Callback function to be triggered when the selected date has changed.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp,\n ) => void;\n /**\n * Callback function to be triggered when the selected date input has changed.\n */\n onInputChange?: (\n event:\n | React.ChangeEvent<\n HTMLTextAreaElement | HTMLInputElement | HTMLButtonElement\n >\n | undefined,\n value: Date | DateRangeProp,\n position: \"left\" | \"right\",\n ) => void;\n /**\n * Callback function to be triggered when the user clicks on the month or year selector.\n * it receives the action that was pressed:\n * previous_month, next_month, previous_year, next_year,month\n */\n onVisibleDateChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n action: VisibilitySelectorActions,\n value?: Date | DateRangeProp | number,\n position?: \"left\" | \"right\",\n ) => void;\n /**\n * The maximum selectable date after this all values are disabled.\n */\n maximumDate?: Date;\n /**\n * The minimum selectable date before this all values are disabled.\n */\n minimumDate?: Date;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n\nexport const HvCalendar = (props: HvCalendarProps) => {\n const {\n classes: classesProp,\n id: idProp,\n locale = \"en-US\",\n value: valueProp,\n visibleMonth,\n visibleYear,\n rightVisibleMonth,\n rightVisibleYear,\n minimumDate,\n maximumDate,\n startAdornment,\n onChange,\n onInputChange,\n onVisibleDateChange,\n invalidDateLabel,\n ...others\n } = useDefaultProps(\"HvCalendar\", props);\n const { classes } = useClasses(classesProp);\n\n const context = useContext(HvFormElementContext);\n const elementValue = useContext(HvFormElementValueContext);\n const value = valueProp ?? elementValue;\n const id = idProp ?? setId(context.id, \"single-calendar\");\n const rangeMode = isRange(value);\n const rightCalendarId = setId(id, \"single-calendar-right\");\n const clampedMonth =\n visibleMonth && visibleMonth % 13 > 0 ? visibleMonth % 13 : 1;\n\n const singleCalendar = (\n <HvSingleCalendar\n id={id}\n locale={locale}\n value={value}\n visibleMonth={clampedMonth}\n visibleYear={visibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"left\");\n }}\n onVisibleDateChange={onVisibleDateChange}\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n );\n\n const rangeCalendar = (\n <div className={classes.rangeCalendarContainer}>\n <HvSingleCalendar\n className={classes.singleCalendar}\n id={id}\n locale={locale}\n value={value}\n visibleMonth={clampedMonth}\n visibleYear={visibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"left\");\n }}\n onVisibleDateChange={(event, action, index) =>\n onVisibleDateChange?.(event, action, index, \"left\")\n }\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n\n <HvSingleCalendar\n className={classes.singleCalendar}\n id={rightCalendarId}\n locale={locale}\n value={value}\n visibleMonth={rightVisibleMonth}\n visibleYear={rightVisibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"right\");\n }}\n onVisibleDateChange={(event, action, index) => {\n onVisibleDateChange?.(event, action, index, \"right\");\n }}\n showEndDate\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n </div>\n );\n\n return (\n <div className={classes.root}>\n {startAdornment}\n {rangeMode ? rangeCalendar : singleCalendar}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AA+Ga,MAAA,aAAa,CAAC,UAA2B;AAC9C,QAAA;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,cAAc,KAAK;AACvC,QAAM,EAAE,QAAA,IAAY,WAAW,WAAW;AAEpC,QAAA,UAAU,WAAW,oBAAoB;AACzC,QAAA,eAAe,WAAW,yBAAyB;AACzD,QAAM,QAAQ,aAAa;AAC3B,QAAM,KAAK,UAAU,MAAM,QAAQ,IAAI,iBAAiB;AAClD,QAAA,YAAY,QAAQ,KAAK;AACzB,QAAA,kBAAkB,MAAM,IAAI,uBAAuB;AACzD,QAAM,eACJ,gBAAgB,eAAe,KAAK,IAAI,eAAe,KAAK;AAE9D,QAAM,iBACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,CAAC,KAAK,SAAS;AACZ,wBAAA,KAAK,MAAM,MAAM;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAGF,QAAM,gBACJ,qBAAC,OAAI,EAAA,WAAW,QAAQ,wBACtB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,CAAC,KAAK,SAAS;AACZ,0BAAA,KAAK,MAAM,MAAM;AAAA,QACnC;AAAA,QACA,qBAAqB,CAAC,OAAO,QAAQ,UACnC,sBAAsB,OAAO,QAAQ,OAAO,MAAM;AAAA,QAEpD;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACN;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,CAAC,KAAK,SAAS;AACZ,0BAAA,KAAK,MAAM,OAAO;AAAA,QACpC;AAAA,QACA,qBAAqB,CAAC,OAAO,QAAQ,UAAU;AACvB,gCAAA,OAAO,QAAQ,OAAO,OAAO;AAAA,QACrD;AAAA,QACA,aAAW;AAAA,QACX;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GACF;AAGF,SACG,qBAAA,OAAA,EAAI,WAAW,QAAQ,MACrB,UAAA;AAAA,IAAA;AAAA,IACA,YAAY,gBAAgB;AAAA,EAAA,GAC/B;AAEJ;"}
1
+ {"version":3,"file":"Calendar.js","sources":["../../../src/Calendar/Calendar.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n HvFormElementContext,\n HvFormElementValueContext,\n} from \"../FormElement\";\nimport { setId } from \"../utils/setId\";\nimport { staticClasses, useClasses } from \"./Calendar.styles\";\nimport { HvSingleCalendar } from \"./SingleCalendar\";\nimport { DateRangeProp, VisibilitySelectorActions } from \"./types\";\nimport { DEFAULT_LOCALE, isRange } from \"./utils\";\n\nexport { staticClasses as calendarClasses };\n\nexport type HvCalendarClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCalendarProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Styles applied from the theme.\n */\n classes?: HvCalendarClasses;\n /**\n * The calendar locale.\n */\n locale?: string;\n /**\n * Date that the calendar would show.\n * if using the object format the calendar enter in range mode showing two calendars\n */\n value?: DateRangeProp | Date;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth?: number;\n /**\n * Controls the visible year of the Calendar\n */\n visibleYear?: number;\n /**\n * Controls the visible month of the Calendar on the right side of the datepicker\n */\n rightVisibleMonth?: number;\n /**\n * Controls the visible year of the Calendar on the right side of the datepicker\n */\n rightVisibleYear?: number;\n /**\n * Callback function to be triggered when the selected date has changed.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp,\n ) => void;\n /**\n * Callback function to be triggered when the selected date input has changed.\n */\n onInputChange?: (\n event:\n | React.ChangeEvent<\n HTMLTextAreaElement | HTMLInputElement | HTMLButtonElement\n >\n | undefined,\n value: Date | DateRangeProp,\n position: \"left\" | \"right\",\n ) => void;\n /**\n * Callback function to be triggered when the user clicks on the month or year selector.\n * it receives the action that was pressed:\n * previous_month, next_month, previous_year, next_year,month\n */\n onVisibleDateChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n action: VisibilitySelectorActions,\n value?: Date | DateRangeProp | number,\n position?: \"left\" | \"right\",\n ) => void;\n /**\n * The maximum selectable date after this all values are disabled.\n */\n maximumDate?: Date;\n /**\n * The minimum selectable date before this all values are disabled.\n */\n minimumDate?: Date;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n\nexport const HvCalendar = (props: HvCalendarProps) => {\n const {\n classes: classesProp,\n id: idProp,\n locale = DEFAULT_LOCALE,\n value: valueProp,\n visibleMonth,\n visibleYear,\n rightVisibleMonth,\n rightVisibleYear,\n minimumDate,\n maximumDate,\n startAdornment,\n onChange,\n onInputChange,\n onVisibleDateChange,\n invalidDateLabel,\n ...others\n } = useDefaultProps(\"HvCalendar\", props);\n const { classes } = useClasses(classesProp);\n\n const context = useContext(HvFormElementContext);\n const elementValue = useContext(HvFormElementValueContext);\n const value = valueProp ?? elementValue;\n const id = idProp ?? setId(context.id, \"single-calendar\");\n const rangeMode = isRange(value);\n const rightCalendarId = setId(id, \"single-calendar-right\");\n const clampedMonth =\n visibleMonth && visibleMonth % 13 > 0 ? visibleMonth % 13 : 1;\n\n const singleCalendar = (\n <HvSingleCalendar\n id={id}\n locale={locale}\n value={value}\n visibleMonth={clampedMonth}\n visibleYear={visibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"left\");\n }}\n onVisibleDateChange={onVisibleDateChange}\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n );\n\n const rangeCalendar = (\n <div className={classes.rangeCalendarContainer}>\n <HvSingleCalendar\n className={classes.singleCalendar}\n id={id}\n locale={locale}\n value={value}\n visibleMonth={clampedMonth}\n visibleYear={visibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"left\");\n }}\n onVisibleDateChange={(event, action, index) =>\n onVisibleDateChange?.(event, action, index, \"left\")\n }\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n\n <HvSingleCalendar\n className={classes.singleCalendar}\n id={rightCalendarId}\n locale={locale}\n value={value}\n visibleMonth={rightVisibleMonth}\n visibleYear={rightVisibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"right\");\n }}\n onVisibleDateChange={(event, action, index) => {\n onVisibleDateChange?.(event, action, index, \"right\");\n }}\n showEndDate\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n </div>\n );\n\n return (\n <div className={classes.root}>\n {startAdornment}\n {rangeMode ? rangeCalendar : singleCalendar}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AA2Ga,MAAA,aAAa,CAAC,UAA2B;AAC9C,QAAA;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,cAAc,KAAK;AACvC,QAAM,EAAE,QAAA,IAAY,WAAW,WAAW;AAEpC,QAAA,UAAU,WAAW,oBAAoB;AACzC,QAAA,eAAe,WAAW,yBAAyB;AACzD,QAAM,QAAQ,aAAa;AAC3B,QAAM,KAAK,UAAU,MAAM,QAAQ,IAAI,iBAAiB;AAClD,QAAA,YAAY,QAAQ,KAAK;AACzB,QAAA,kBAAkB,MAAM,IAAI,uBAAuB;AACzD,QAAM,eACJ,gBAAgB,eAAe,KAAK,IAAI,eAAe,KAAK;AAE9D,QAAM,iBACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,CAAC,KAAK,SAAS;AACZ,wBAAA,KAAK,MAAM,MAAM;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAGF,QAAM,gBACJ,qBAAC,OAAI,EAAA,WAAW,QAAQ,wBACtB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,CAAC,KAAK,SAAS;AACZ,0BAAA,KAAK,MAAM,MAAM;AAAA,QACnC;AAAA,QACA,qBAAqB,CAAC,OAAO,QAAQ,UACnC,sBAAsB,OAAO,QAAQ,OAAO,MAAM;AAAA,QAEpD;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACN;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,CAAC,KAAK,SAAS;AACZ,0BAAA,KAAK,MAAM,OAAO;AAAA,QACpC;AAAA,QACA,qBAAqB,CAAC,OAAO,QAAQ,UAAU;AACvB,gCAAA,OAAO,QAAQ,OAAO,OAAO;AAAA,QACrD;AAAA,QACA,aAAW;AAAA,QACX;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GACF;AAGF,SACG,qBAAA,OAAA,EAAI,WAAW,QAAQ,MACrB,UAAA;AAAA,IAAA;AAAA,IACA,YAAY,gBAAgB;AAAA,EAAA,GAC/B;AAEJ;"}
@@ -1,26 +1,19 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { useContext, useState, useEffect } from "react";
3
- import dayjs from "dayjs";
4
- import customParseFormat from "dayjs/plugin/customParseFormat";
5
- import localeData from "dayjs/plugin/localeData";
6
- import localizedFormat from "dayjs/plugin/localizedFormat";
7
3
  import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
8
4
  import { isKey } from "../../utils/keyboardUtils.js";
9
5
  import { setId } from "../../utils/setId.js";
10
- import { isRange, isDate, formatToLocale, isSameDay } from "../utils.js";
6
+ import { isRange, getLocaleDateFormat, isDate, getFormattedDate, DEFAULT_LOCALE, getStringFromDate, parseDateString, isSameDay } from "../utils.js";
11
7
  import { useClasses } from "./CalendarHeader.styles.js";
12
8
  import { staticClasses } from "./CalendarHeader.styles.js";
13
- import { HvFormElementContext, HvFormElementValueContext, HvFormElementDescriptorsContext } from "../../FormElement/context.js";
14
9
  import { HvInput } from "../../Input/Input.js";
10
+ import { HvFormElementContext, HvFormElementDescriptorsContext } from "../../FormElement/context.js";
15
11
  import { HvTypography } from "../../Typography/Typography.js";
16
- dayjs.extend(localeData);
17
- dayjs.extend(localizedFormat);
18
- dayjs.extend(customParseFormat);
19
12
  const HvCalendarHeader = (props) => {
20
13
  const {
21
14
  id: idProp,
22
- value,
23
- locale = "en-US",
15
+ value: valueProp,
16
+ locale = DEFAULT_LOCALE,
24
17
  classes: classesProp,
25
18
  onChange,
26
19
  showEndDate,
@@ -30,23 +23,19 @@ const HvCalendarHeader = (props) => {
30
23
  } = useDefaultProps("HvCalendarHeader", props);
31
24
  const { classes, cx } = useClasses(classesProp);
32
25
  const context = useContext(HvFormElementContext);
33
- const elementValue = useContext(HvFormElementValueContext);
34
26
  const { label } = useContext(HvFormElementDescriptorsContext);
35
- let localValue = value ?? elementValue ?? "";
36
- if (isRange(localValue)) {
37
- localValue = showEndDate ? localValue.endDate : localValue.startDate;
38
- }
27
+ const localValue = isRange(valueProp) ? showEndDate ? valueProp.endDate : valueProp.startDate : valueProp;
39
28
  const [dateValue, setDateValue] = useState(localValue);
40
29
  const [editedValue, setEditedValue] = useState(null);
41
30
  const [displayValue, setDisplayValue] = useState("");
42
31
  const [weekdayDisplay, setWeekdayDisplay] = useState("");
43
32
  const id = idProp ?? setId(context.id, "calendarHeader");
44
33
  const inputValue = editedValue ?? displayValue;
45
- const localeFormat = dayjs().locale(locale).localeData().longDateFormat("L");
34
+ const localeFormat = getLocaleDateFormat(locale);
46
35
  const [isValidValue, setIsValidValue] = useState(
47
- inputValue.length === 0 || !!inputValue && dayjs(localValue).isValid()
36
+ inputValue.length === 0 || inputValue && isDate(new Date(inputValue))
48
37
  );
49
- const validateInput = (incomingValid) => incomingValid === void 0 || dayjs(incomingValid).isValid();
38
+ const validateInput = (incomingValid) => incomingValid === void 0 || isDate(new Date(incomingValid));
50
39
  useEffect(() => {
51
40
  const valid = validateInput(localValue);
52
41
  setIsValidValue(valid);
@@ -60,15 +49,15 @@ const HvCalendarHeader = (props) => {
60
49
  const weekday = new Intl.DateTimeFormat(locale, {
61
50
  weekday: "short"
62
51
  }).format(isDate(localValue) ? localValue : 0);
63
- setDisplayValue(formatToLocale(localValue, locale));
52
+ setDisplayValue(getFormattedDate(localValue, locale));
64
53
  setEditedValue(null);
65
54
  setWeekdayDisplay(weekday);
66
55
  }
67
56
  }, [localValue, locale]);
68
57
  const handleNewDate = (event, date) => {
69
- const localeParsedDate = dayjs(date, localeFormat);
70
- const isValidInput = localeParsedDate.isValid();
71
- const dateParsed = isValidInput ? localeParsedDate.toDate() : dayjs(date).toDate();
58
+ const localeParsedDate = parseDateString(date, locale);
59
+ const isValidInput = isDate(localeParsedDate);
60
+ const dateParsed = isValidInput ? localeParsedDate : new Date(date);
72
61
  if (!isSameDay(dateParsed, dateValue)) {
73
62
  setDateValue(dateParsed);
74
63
  onChange?.(event, dateParsed);
@@ -95,7 +84,7 @@ const HvCalendarHeader = (props) => {
95
84
  };
96
85
  const onFocusHandler = (event) => {
97
86
  if (!localValue) return;
98
- const formattedDate = isValidValue && isDate(localValue) ? dayjs(localValue).locale(locale).format("L") : editedValue;
87
+ const formattedDate = isValidValue && isDate(localValue) ? getStringFromDate(localValue, locale) : editedValue;
99
88
  setEditedValue(formattedDate);
100
89
  onFocus?.(event, formattedDate);
101
90
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarHeader.js","sources":["../../../../src/Calendar/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import { useContext, useEffect, useState } from \"react\";\nimport dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport localizedFormat from \"dayjs/plugin/localizedFormat\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n HvFormElementValueContext,\n} from \"../../FormElement\";\nimport { HvInput, HvInputProps } from \"../../Input\";\nimport { HvTypography } from \"../../Typography\";\nimport { isKey } from \"../../utils/keyboardUtils\";\nimport { setId } from \"../../utils/setId\";\nimport { DateRangeProp } from \"../types\";\nimport { formatToLocale, isDate, isRange, isSameDay } from \"../utils\";\nimport { staticClasses, useClasses } from \"./CalendarHeader.styles\";\n\nexport { staticClasses as calendarHeaderClasses };\n\nexport type HvCalendarHeaderClasses = ExtractNames<typeof useClasses>;\n\ndayjs.extend(localeData);\ndayjs.extend(localizedFormat);\ndayjs.extend(customParseFormat);\n\nexport const HvCalendarHeader = (props: HvCalendarHeaderProps) => {\n const {\n id: idProp,\n value,\n locale = \"en-US\",\n classes: classesProp,\n onChange,\n showEndDate,\n showDayOfWeek = false,\n onFocus,\n invalidDateLabel = \"Invalid Date\",\n } = useDefaultProps(\"HvCalendarHeader\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const context = useContext(HvFormElementContext);\n const elementValue = useContext(HvFormElementValueContext);\n const { label } = useContext(HvFormElementDescriptorsContext);\n\n let localValue: string | Date | DateRangeProp | undefined =\n value ?? elementValue ?? \"\";\n if (isRange(localValue)) {\n localValue = showEndDate ? localValue.endDate : localValue.startDate;\n }\n\n const [dateValue, setDateValue] = useState<\n string | Date | DateRangeProp | undefined\n >(localValue);\n const [editedValue, setEditedValue] = useState<string | null>(null);\n const [displayValue, setDisplayValue] = useState(\"\");\n const [weekdayDisplay, setWeekdayDisplay] = useState(\"\");\n\n const id = idProp ?? setId(context.id, \"calendarHeader\");\n\n const inputValue = editedValue ?? displayValue;\n const localeFormat = dayjs().locale(locale).localeData().longDateFormat(\"L\");\n\n const [isValidValue, setIsValidValue] = useState(\n inputValue.length === 0 || (!!inputValue && dayjs(localValue).isValid()),\n );\n\n const validateInput = (incomingValid: any) =>\n incomingValid === undefined || dayjs(incomingValid).isValid();\n\n useEffect(() => {\n const valid = validateInput(localValue);\n setIsValidValue(valid);\n if (valid) {\n if (!localValue) {\n setDisplayValue(\"\");\n setEditedValue(null);\n setWeekdayDisplay(\"\");\n return;\n }\n const weekday = new Intl.DateTimeFormat(locale, {\n weekday: \"short\",\n }).format(isDate(localValue) ? localValue : 0);\n setDisplayValue(formatToLocale(localValue, locale));\n setEditedValue(null);\n setWeekdayDisplay(weekday);\n }\n }, [localValue, locale]);\n\n const handleNewDate = (event: any, date: string) => {\n // attempt to format in locale data, or fallback to default\n const localeParsedDate = dayjs(date, localeFormat);\n\n const isValidInput = localeParsedDate.isValid();\n const dateParsed = isValidInput\n ? localeParsedDate.toDate()\n : dayjs(date).toDate();\n // prevent extra updates\n if (!isSameDay(dateParsed, dateValue)) {\n setDateValue(dateParsed);\n onChange?.(event, dateParsed);\n }\n\n setIsValidValue(isValidInput);\n if (isValidInput) {\n setEditedValue(null);\n }\n };\n\n const onBlurHandler: HvInputProps[\"onBlur\"] = (event) => {\n if (editedValue == null) return;\n if (editedValue === \"\") {\n setIsValidValue(true);\n setEditedValue(null);\n return;\n }\n handleNewDate(event, editedValue);\n };\n\n const keyDownHandler: HvInputProps[\"onKeyDown\"] = (event) => {\n if (!isKey(event, \"Enter\") || editedValue == null || editedValue === \"\")\n return;\n event.preventDefault();\n\n handleNewDate(event, editedValue);\n };\n\n const onFocusHandler: HvInputProps[\"onFocus\"] = (event) => {\n if (!localValue) return;\n const formattedDate =\n isValidValue && isDate(localValue)\n ? dayjs(localValue).locale(locale).format(\"L\")\n : editedValue;\n setEditedValue(formattedDate);\n onFocus?.(event, formattedDate);\n };\n\n const onChangeHandler: HvInputProps[\"onChange\"] = (event, val) => {\n setEditedValue(val);\n };\n\n const isInvalid = !isValidValue && inputValue !== \"\";\n\n // This component needs to be further refactored\n // It's not possible to clear the date\n // In a new major there's no need for all these classes\n return (\n <div\n id={id}\n className={cx(classes.root, {\n [classes.invalid]: isInvalid,\n })}\n >\n {showDayOfWeek && (\n <HvTypography className={classes.headerDayOfWeek}>\n {weekdayDisplay || \"\\u00A0\"}\n </HvTypography>\n )}\n <HvInput\n type=\"text\"\n id={setId(id, \"header-input\")}\n className={classes.headerDate}\n classes={{\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n error: classes.invalidMessageStyling,\n }}\n placeholder={localeFormat}\n value={inputValue}\n aria-labelledby={label?.[0]?.id}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onKeyDown={keyDownHandler}\n status={isInvalid ? \"invalid\" : \"valid\"}\n statusMessage={invalidDateLabel}\n />\n </div>\n );\n};\n\n// TODO: refactor this out\nHvCalendarHeader.formElementType = \"HvCalendarHeader\";\n\nexport interface HvCalendarHeaderProps {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvCalendarHeaderClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * The text to be shown on the main part of the header.\n */\n value?: string | Date | DateRangeProp;\n /**\n * Locale to be used by the calendar.\n */\n locale?: string;\n /**\n * Callback to define the input date.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp,\n ) => void;\n /**\n * Callback to handle input onFocus.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n formattedDate: string | null,\n ) => void;\n /**\n * Indicates if header should display end date in a date range.\n */\n showEndDate?: boolean;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CalendarHeader.js","sources":["../../../../src/Calendar/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import { useContext, useEffect, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n} from \"../../FormElement\";\nimport { HvInput, HvInputProps } from \"../../Input\";\nimport { HvTypography } from \"../../Typography\";\nimport { isKey } from \"../../utils/keyboardUtils\";\nimport { setId } from \"../../utils/setId\";\nimport type { HvSingleCalendarProps } from \"../SingleCalendar\";\nimport {\n DEFAULT_LOCALE,\n getFormattedDate,\n getLocaleDateFormat,\n getStringFromDate,\n isDate,\n isRange,\n isSameDay,\n parseDateString,\n} from \"../utils\";\nimport { staticClasses, useClasses } from \"./CalendarHeader.styles\";\n\nexport { staticClasses as calendarHeaderClasses };\n\nexport type HvCalendarHeaderClasses = ExtractNames<typeof useClasses>;\n\nexport const HvCalendarHeader = (props: HvCalendarHeaderProps) => {\n const {\n id: idProp,\n value: valueProp,\n locale = DEFAULT_LOCALE,\n classes: classesProp,\n onChange,\n showEndDate,\n showDayOfWeek = false,\n onFocus,\n invalidDateLabel = \"Invalid Date\",\n } = useDefaultProps(\"HvCalendarHeader\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const context = useContext(HvFormElementContext);\n const { label } = useContext(HvFormElementDescriptorsContext);\n\n const localValue = isRange(valueProp)\n ? showEndDate\n ? valueProp.endDate!\n : valueProp.startDate\n : valueProp;\n\n const [dateValue, setDateValue] = useState(localValue);\n const [editedValue, setEditedValue] = useState<string | null>(null);\n const [displayValue, setDisplayValue] = useState(\"\");\n const [weekdayDisplay, setWeekdayDisplay] = useState(\"\");\n\n const id = idProp ?? setId(context.id, \"calendarHeader\");\n\n const inputValue = editedValue ?? displayValue;\n const localeFormat = getLocaleDateFormat(locale);\n\n const [isValidValue, setIsValidValue] = useState(\n inputValue.length === 0 || (inputValue && isDate(new Date(inputValue))),\n );\n\n const validateInput = (incomingValid: any) =>\n incomingValid === undefined || isDate(new Date(incomingValid));\n\n useEffect(() => {\n const valid = validateInput(localValue);\n setIsValidValue(valid);\n if (valid) {\n if (!localValue) {\n setDisplayValue(\"\");\n setEditedValue(null);\n setWeekdayDisplay(\"\");\n return;\n }\n const weekday = new Intl.DateTimeFormat(locale, {\n weekday: \"short\",\n }).format(isDate(localValue) ? localValue : 0);\n setDisplayValue(getFormattedDate(localValue, locale));\n setEditedValue(null);\n setWeekdayDisplay(weekday);\n }\n }, [localValue, locale]);\n\n const handleNewDate = (event: any, date: string) => {\n // attempt to format in locale data, or fallback to default\n const localeParsedDate = parseDateString(date, locale);\n\n const isValidInput = isDate(localeParsedDate);\n const dateParsed = isValidInput ? localeParsedDate : new Date(date);\n // prevent extra updates\n if (!isSameDay(dateParsed, dateValue)) {\n setDateValue(dateParsed);\n onChange?.(event, dateParsed);\n }\n\n setIsValidValue(isValidInput);\n if (isValidInput) {\n setEditedValue(null);\n }\n };\n\n const onBlurHandler: HvInputProps[\"onBlur\"] = (event) => {\n if (editedValue == null) return;\n if (editedValue === \"\") {\n setIsValidValue(true);\n setEditedValue(null);\n return;\n }\n handleNewDate(event, editedValue);\n };\n\n const keyDownHandler: HvInputProps[\"onKeyDown\"] = (event) => {\n if (!isKey(event, \"Enter\") || editedValue == null || editedValue === \"\")\n return;\n event.preventDefault();\n\n handleNewDate(event, editedValue);\n };\n\n const onFocusHandler: HvInputProps[\"onFocus\"] = (event) => {\n if (!localValue) return;\n const formattedDate =\n isValidValue && isDate(localValue)\n ? getStringFromDate(localValue, locale)\n : editedValue;\n setEditedValue(formattedDate);\n onFocus?.(event, formattedDate);\n };\n\n const onChangeHandler: HvInputProps[\"onChange\"] = (event, val) => {\n setEditedValue(val);\n };\n\n const isInvalid = !isValidValue && inputValue !== \"\";\n\n // This component needs to be further refactored\n // It's not possible to clear the date\n // In a new major there's no need for all these classes\n return (\n <div\n id={id}\n className={cx(classes.root, {\n [classes.invalid]: isInvalid,\n })}\n >\n {showDayOfWeek && (\n <HvTypography className={classes.headerDayOfWeek}>\n {weekdayDisplay || \"\\u00A0\"}\n </HvTypography>\n )}\n <HvInput\n type=\"text\"\n id={setId(id, \"header-input\")}\n className={classes.headerDate}\n classes={{\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n error: classes.invalidMessageStyling,\n }}\n placeholder={localeFormat}\n value={inputValue}\n aria-labelledby={label?.[0]?.id}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onKeyDown={keyDownHandler}\n status={isInvalid ? \"invalid\" : \"valid\"}\n statusMessage={invalidDateLabel}\n />\n </div>\n );\n};\n\n// TODO: refactor this out\nHvCalendarHeader.formElementType = \"HvCalendarHeader\";\n\nexport interface HvCalendarHeaderProps\n extends Pick<\n HvSingleCalendarProps,\n | \"id\"\n | \"value\"\n | \"locale\"\n | \"onChange\"\n | \"showEndDate\"\n | \"showDayOfWeek\"\n | \"invalidDateLabel\"\n > {\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvCalendarHeaderClasses;\n /**\n * Callback to handle input onFocus.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n formattedDate: string | null,\n ) => void;\n}\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { isKey } from "../../utils/keyboardUtils.js";
4
4
  import { setId } from "../../utils/setId.js";
5
5
  import { HvCalendarHeader } from "../CalendarHeader/CalendarHeader.js";
6
6
  import { generateCalendarModel } from "../model.js";
7
- import { isDate, getWeekdayNamesList, isRange } from "../utils.js";
7
+ import { isDate, getWeekdayNamesList, DEFAULT_LOCALE, isRange } from "../utils.js";
8
8
  import { HvCalendarCell } from "./CalendarCell.js";
9
9
  import { useClasses } from "./SingleCalendar.styles.js";
10
10
  import { staticClasses } from "./SingleCalendar.styles.js";
@@ -16,7 +16,7 @@ const HvSingleCalendar = ({
16
16
  classes: classesProp,
17
17
  className,
18
18
  id,
19
- locale = "en-US",
19
+ locale = DEFAULT_LOCALE,
20
20
  value,
21
21
  visibleMonth,
22
22
  visibleYear,
@@ -104,6 +104,7 @@ const HvSingleCalendar = ({
104
104
  {
105
105
  id: setId(id, "header"),
106
106
  locale,
107
+ value,
107
108
  onChange: handleInputChange,
108
109
  showEndDate: showEndDate && !isDateSelectionMode,
109
110
  showDayOfWeek,
@@ -1 +1 @@
1
- {"version":3,"file":"SingleCalendar.js","sources":["../../../../src/Calendar/SingleCalendar/SingleCalendar.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { type ExtractNames } from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvPanel } from \"../../Panel\";\nimport { HvTypography } from \"../../Typography\";\nimport { isKey } from \"../../utils/keyboardUtils\";\nimport { setId } from \"../../utils/setId\";\nimport { HvCalendarHeader } from \"../CalendarHeader/CalendarHeader\";\nimport { HvComposedNavigation, HvMonthSelector } from \"../CalendarNavigation\";\nimport { ViewMode } from \"../enums\";\nimport { generateCalendarModel } from \"../model\";\nimport { DateRangeProp, VisibilitySelectorActions } from \"../types\";\nimport { getWeekdayNamesList, isDate, isRange } from \"../utils\";\nimport { HvCalendarCell } from \"./CalendarCell\";\nimport { staticClasses, useClasses } from \"./SingleCalendar.styles\";\n\nexport { staticClasses as singleCalendarClasses };\n\nexport type HvSingleCalendarClasses = ExtractNames<typeof useClasses>;\n\nexport const HvSingleCalendar = ({\n classes: classesProp,\n className,\n id,\n locale = \"en-US\",\n value,\n visibleMonth,\n visibleYear,\n minimumDate,\n maximumDate,\n onChange,\n onInputChange,\n onVisibleDateChange,\n showEndDate,\n showDayOfWeek,\n invalidDateLabel,\n children,\n ...others\n}: HvSingleCalendarProps) => {\n // TODO: refactor this out\n // const { HvCalendarHeader } = useContext(HvFormElementDescriptorsContext);\n\n const { classes, cx } = useClasses(classesProp);\n\n const today = new Date();\n const localValue = value ?? today;\n\n const [calViewMode, setCalViewMode] = useState<ViewMode>(\"calendar\");\n\n const rangeMode = isRange(localValue);\n const isDateSelectionMode = rangeMode && !isDate(localValue.endDate);\n const calModel = rangeMode\n ? generateCalendarModel(localValue.startDate, visibleMonth, visibleYear)\n : generateCalendarModel(localValue, visibleMonth, visibleYear);\n const firstDayOfCurrentMonth = new Date(calModel.year, calModel.month - 1, 1);\n const firstDayOfCurrentMonthTime = firstDayOfCurrentMonth.getTime();\n\n const listWeekdayNames = useMemo(() => getWeekdayNamesList(locale), [locale]);\n\n const handleChange = (event: any, date: Date | DateRangeProp) => {\n event?.preventDefault();\n onChange?.(event, date);\n };\n\n const handleInputChange = (event: any, date: any) => {\n event?.preventDefault();\n onInputChange?.(event, date);\n };\n\n const getNavChild = (event: KeyboardEvent, siblings: any, i: number) => {\n if (isKey(event, \"ArrowLeft\")) return siblings[i - 1];\n if (isKey(event, \"ArrowRight\")) return siblings[i + 1];\n if (isKey(event, \"ArrowUp\")) return siblings[i - 7];\n if (isKey(event, \"ArrowDown\")) return siblings[i + 7];\n return undefined;\n };\n\n const handleKeyDown = (event: any) => {\n // This code is very brittle and should be managed with the focus wrapper\n const el = document?.activeElement;\n const parent = el?.parentElement?.parentElement;\n const siblings =\n parent != null\n ? Array.from(\n parent.getElementsByClassName(classes.cellContainer as string),\n )\n : [];\n const elIndex = el ? siblings.indexOf(el) : 0;\n\n if (isKey(event, \"Enter\")) {\n (el as HTMLElement).focus();\n return;\n }\n\n const child = getNavChild(event, siblings, elIndex);\n\n if (child) {\n const inMonth = child.getAttribute(\"data-in-month\");\n if (inMonth === \"true\") {\n event?.preventDefault();\n child?.focus();\n }\n }\n };\n\n const renderWeekLabel = (dayName: string, index: number) => (\n <HvTypography key={index} variant=\"label\" className={classes.calendarDay}>\n {dayName}\n </HvTypography>\n );\n\n /** Renders the element representing the received date. */\n const renderCalendarDate = (currentDate: Date) => {\n return (\n <HvCalendarCell\n classes={classes}\n key={currentDate.toString()}\n tabIndex={currentDate.getTime() === firstDayOfCurrentMonthTime ? 0 : -1}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n value={currentDate}\n today={today}\n calendarValue={localValue}\n rangeMode={rangeMode}\n isDateSelectionMode={isDateSelectionMode}\n locale={locale}\n firstDayOfCurrentMonth={firstDayOfCurrentMonth}\n maximumDate={maximumDate}\n minimumDate={minimumDate}\n />\n );\n };\n\n return (\n <HvPanel id={id} className={cx(classes.root, className)} {...others}>\n <HvCalendarHeader\n id={setId(id, \"header\")}\n locale={locale}\n onChange={handleInputChange}\n showEndDate={showEndDate && !isDateSelectionMode}\n showDayOfWeek={showDayOfWeek}\n invalidDateLabel={invalidDateLabel}\n />\n {calViewMode === \"calendar\" && (\n <>\n <HvComposedNavigation\n id={id}\n locale={locale}\n onChange={onVisibleDateChange}\n onViewModeChange={setCalViewMode}\n visibleYear={visibleYear || today.getFullYear()}\n visibleMonth={visibleMonth || today.getMonth() + 1}\n />\n <div\n className={classes.calendarGrid}\n // @ts-ignore TODO: review\n aria-controls={HvCalendarHeader?.[0]?.id}\n >\n {listWeekdayNames.map(renderWeekLabel)}\n {calModel.dates.map(renderCalendarDate)}\n </div>\n </>\n )}\n {calViewMode === \"monthly\" && (\n <HvMonthSelector\n id={id}\n locale={locale}\n onChange={onVisibleDateChange}\n onViewModeChange={setCalViewMode}\n visibleMonth={visibleMonth || today.getMonth() + 1}\n rangeMode={rangeMode}\n />\n )}\n </HvPanel>\n );\n};\n\nexport interface HvSingleCalendarProps {\n /**\n * Styles applied from the theme.\n */\n classes?: HvSingleCalendarClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * The class name to add at the root of the single calendar\n */\n className?: string;\n /**\n * The calendar locale.\n *\n */\n locale: string;\n /**\n * Date that the calendar would show.\n */\n value?: string | Date | DateRangeProp;\n /**\n * Date that will be used to know which month and year should be displayed on the calendar. The value of the day is\n * irrelevant.\n */\n visibleDate?: Date;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth?: number;\n /**\n * Controls the visible month of the Calendar\n */\n visibleYear?: number;\n /**\n * Callback function to be triggered when the selected date has changed.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp,\n ) => void;\n /**\n * Callback function to be triggered when the selected date input has changed.\n */\n onInputChange?: (\n event:\n | React.ChangeEvent<\n HTMLTextAreaElement | HTMLInputElement | HTMLButtonElement\n >\n | undefined,\n value: Date | DateRangeProp,\n position?: \"left\" | \"right\",\n ) => void;\n /**\n * Callback function to be triggered when visible date has changed.\n */\n onVisibleDateChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n action: VisibilitySelectorActions,\n value?: Date | DateRangeProp | number,\n ) => void;\n /**\n * The maximum selectable date after this all values are disabled.\n */\n maximumDate?: Date;\n /**\n * The minimum selectable date before this all values are disabled.\n */\n minimumDate?: Date;\n /**\n * Indicates if header should display end date in a date range.\n */\n showEndDate?: boolean;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Content on the upper part of the calendar.\n */\n children?: React.ReactNode;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SingleCalendar.js","sources":["../../../../src/Calendar/SingleCalendar/SingleCalendar.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { type ExtractNames } from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvPanel } from \"../../Panel\";\nimport { HvTypography } from \"../../Typography\";\nimport { isKey } from \"../../utils/keyboardUtils\";\nimport { setId } from \"../../utils/setId\";\nimport type { HvCalendarProps } from \"../Calendar\";\nimport { HvCalendarHeader } from \"../CalendarHeader/CalendarHeader\";\nimport { HvComposedNavigation, HvMonthSelector } from \"../CalendarNavigation\";\nimport { ViewMode } from \"../enums\";\nimport { generateCalendarModel } from \"../model\";\nimport type { DateRangeProp } from \"../types\";\nimport { DEFAULT_LOCALE, getWeekdayNamesList, isDate, isRange } from \"../utils\";\nimport { HvCalendarCell } from \"./CalendarCell\";\nimport { staticClasses, useClasses } from \"./SingleCalendar.styles\";\n\nexport { staticClasses as singleCalendarClasses };\n\nexport type HvSingleCalendarClasses = ExtractNames<typeof useClasses>;\n\nexport const HvSingleCalendar = ({\n classes: classesProp,\n className,\n id,\n locale = DEFAULT_LOCALE,\n value,\n visibleMonth,\n visibleYear,\n minimumDate,\n maximumDate,\n onChange,\n onInputChange,\n onVisibleDateChange,\n showEndDate,\n showDayOfWeek,\n invalidDateLabel,\n children,\n ...others\n}: HvSingleCalendarProps) => {\n // TODO: refactor this out\n // const { HvCalendarHeader } = useContext(HvFormElementDescriptorsContext);\n\n const { classes, cx } = useClasses(classesProp);\n\n const today = new Date();\n const localValue = value ?? today;\n\n const [calViewMode, setCalViewMode] = useState<ViewMode>(\"calendar\");\n\n const rangeMode = isRange(localValue);\n const isDateSelectionMode = rangeMode && !isDate(localValue.endDate);\n const calModel = rangeMode\n ? generateCalendarModel(localValue.startDate, visibleMonth, visibleYear)\n : generateCalendarModel(localValue, visibleMonth, visibleYear);\n const firstDayOfCurrentMonth = new Date(calModel.year, calModel.month - 1, 1);\n const firstDayOfCurrentMonthTime = firstDayOfCurrentMonth.getTime();\n\n const listWeekdayNames = useMemo(() => getWeekdayNamesList(locale), [locale]);\n\n const handleChange = (event: any, date: Date | DateRangeProp) => {\n event?.preventDefault();\n onChange?.(event, date);\n };\n\n const handleInputChange = (event: any, date: any) => {\n event?.preventDefault();\n onInputChange?.(event, date);\n };\n\n const getNavChild = (event: KeyboardEvent, siblings: any, i: number) => {\n if (isKey(event, \"ArrowLeft\")) return siblings[i - 1];\n if (isKey(event, \"ArrowRight\")) return siblings[i + 1];\n if (isKey(event, \"ArrowUp\")) return siblings[i - 7];\n if (isKey(event, \"ArrowDown\")) return siblings[i + 7];\n return undefined;\n };\n\n const handleKeyDown = (event: any) => {\n // This code is very brittle and should be managed with the focus wrapper\n const el = document?.activeElement;\n const parent = el?.parentElement?.parentElement;\n const siblings =\n parent != null\n ? Array.from(\n parent.getElementsByClassName(classes.cellContainer as string),\n )\n : [];\n const elIndex = el ? siblings.indexOf(el) : 0;\n\n if (isKey(event, \"Enter\")) {\n (el as HTMLElement).focus();\n return;\n }\n\n const child = getNavChild(event, siblings, elIndex);\n\n if (child) {\n const inMonth = child.getAttribute(\"data-in-month\");\n if (inMonth === \"true\") {\n event?.preventDefault();\n child?.focus();\n }\n }\n };\n\n const renderWeekLabel = (dayName: string, index: number) => (\n <HvTypography key={index} variant=\"label\" className={classes.calendarDay}>\n {dayName}\n </HvTypography>\n );\n\n /** Renders the element representing the received date. */\n const renderCalendarDate = (currentDate: Date) => {\n return (\n <HvCalendarCell\n classes={classes}\n key={currentDate.toString()}\n tabIndex={currentDate.getTime() === firstDayOfCurrentMonthTime ? 0 : -1}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n value={currentDate}\n today={today}\n calendarValue={localValue}\n rangeMode={rangeMode}\n isDateSelectionMode={isDateSelectionMode}\n locale={locale}\n firstDayOfCurrentMonth={firstDayOfCurrentMonth}\n maximumDate={maximumDate}\n minimumDate={minimumDate}\n />\n );\n };\n\n return (\n <HvPanel id={id} className={cx(classes.root, className)} {...others}>\n <HvCalendarHeader\n id={setId(id, \"header\")}\n locale={locale}\n value={value}\n onChange={handleInputChange}\n showEndDate={showEndDate && !isDateSelectionMode}\n showDayOfWeek={showDayOfWeek}\n invalidDateLabel={invalidDateLabel}\n />\n {calViewMode === \"calendar\" && (\n <>\n <HvComposedNavigation\n id={id}\n locale={locale}\n onChange={onVisibleDateChange}\n onViewModeChange={setCalViewMode}\n visibleYear={visibleYear || today.getFullYear()}\n visibleMonth={visibleMonth || today.getMonth() + 1}\n />\n <div\n className={classes.calendarGrid}\n // @ts-ignore TODO: review\n aria-controls={HvCalendarHeader?.[0]?.id}\n >\n {listWeekdayNames.map(renderWeekLabel)}\n {calModel.dates.map(renderCalendarDate)}\n </div>\n </>\n )}\n {calViewMode === \"monthly\" && (\n <HvMonthSelector\n id={id}\n locale={locale}\n onChange={onVisibleDateChange}\n onViewModeChange={setCalViewMode}\n visibleMonth={visibleMonth || today.getMonth() + 1}\n rangeMode={rangeMode}\n />\n )}\n </HvPanel>\n );\n};\n\nexport interface HvSingleCalendarProps\n extends Omit<HvCalendarProps, \"classes\"> {\n /**\n * Styles applied from the theme.\n */\n classes?: HvSingleCalendarClasses;\n /**\n * Callback function to be triggered when the selected date input has changed.\n */\n onInputChange?: (\n event:\n | React.ChangeEvent<\n HTMLTextAreaElement | HTMLInputElement | HTMLButtonElement\n >\n | undefined,\n value: Date | DateRangeProp,\n position?: \"left\" | \"right\",\n ) => void;\n /**\n * Indicates if header should display end date in a date range.\n */\n showEndDate?: boolean;\n /**\n * Content on the upper part of the calendar.\n */\n children?: React.ReactNode;\n}\n"],"names":[],"mappings":"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"}