@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
@@ -1 +1 @@
1
- {"version":3,"file":"TagsInput.styles.js","sources":["../../../src/TagsInput/TagsInput.styles.tsx"],"sourcesContent":["import { chipClasses } from \"@mui/material/Chip\";\nimport { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { baseInputClasses } from \"../BaseInput\";\nimport { suggestionsClasses } from \"../FormElement/Suggestions\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTagsInput\", {\n input: {\n width: \"100%\",\n ...theme.typography.caption1,\n },\n listItemGutters: { padding: \"0 5px\" },\n listItemRoot: {\n marginBottom: 2,\n height: 24,\n lineHeight: \"24px\",\n\n \"&:not(:last-child)\": {\n marginBottom: 2,\n },\n\n \"&$singleLine\": {\n display: \"table-cell\",\n paddingTop: \"2px\",\n },\n },\n root: { display: \"inline-block\", width: \"100%\" },\n chipRoot: {\n [`&.${chipClasses.root}`]: {\n maxWidth: \"none\",\n },\n },\n disabled: {\n \"& $tagsList\": {\n backgroundColor: theme.colors.atmo2,\n border: `1px solid ${theme.colors.atmo4}`,\n\n \"&:focus-within, &:hover\": {\n border: `1px solid ${theme.colors.atmo4}`,\n },\n },\n },\n readOnly: {\n \"& $tagsList\": {\n backgroundColor: theme.colors.atmo2,\n border: `1px solid ${theme.colors.secondary_60}`,\n\n \"&:hover\": {\n border: `1px solid ${theme.colors.secondary_60}`,\n },\n },\n },\n resizable: { width: \"auto\", resize: \"both\", overflow: \"auto\" },\n invalid: {},\n labelContainer: { float: \"left\", display: \"flex\", alignItems: \"flex-start\" },\n label: { display: \"block\", float: \"left\", paddingBottom: \"6px\" },\n description: { display: \"block\", float: \"left\" },\n characterCounter: {\n display: \"block\",\n float: \"right\",\n textAlign: \"right\",\n marginBottom: \"6px\",\n },\n tagsList: {\n display: \"flex\",\n alignContent: \"flex-start\",\n float: \"left\",\n clear: \"both\",\n width: \"100%\",\n maxWidth: \"100%\",\n height: \"32px\",\n padding: 5,\n overflow: \"auto\",\n position: \"relative\",\n\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n\n backgroundColor: theme.colors.atmo1,\n border: `1px solid ${theme.colors.secondary_80}`,\n borderRadius: theme.radii.base,\n\n \"&:hover\": {\n cursor: \"text\",\n border: `1px solid ${theme.colors.primary}`,\n },\n\n [`& .${baseInputClasses.inputRoot}`]: {\n border: \"none\",\n },\n\n \"&:focus, &:focus-within, &:focus-visible\": {\n outlineColor: \"#52A8EC\",\n outlineStyle: \"solid\",\n outlineWidth: \"0px\",\n outlineOffset: \"-1px\",\n boxShadow: \"0 0 0 1px #52A8EC, 0 0 0 4px rgba(29,155,209,.3)\",\n },\n\n \"&$singleLine\": {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n height: 32,\n display: \"table-row\",\n paddingTop: 0,\n },\n\n \"&$error\": {\n border: `1px solid ${theme.colors.negative_120}`,\n },\n\n \"&$invalid\": {\n border: `1px solid ${theme.colors.negative_120}`,\n },\n },\n tagInputContainerRoot: {\n display: \"flex\",\n flexGrow: 1,\n height: 24,\n lineHeight: \"24px\",\n\n \"&$singleLine\": {\n display: \"table-cell\",\n minWidth: 60,\n width: \"100%\",\n paddingTop: \"3px\",\n verticalAlign: \"middle\",\n },\n },\n tagInputRoot: {\n [`& .${baseInputClasses.root}`]: {\n width: \"100%\",\n border: \"none\",\n \"&:hover $tagInputBorderContainer\": {\n background: \"none\",\n },\n },\n [`&& .${baseInputClasses.inputRoot}`]: {\n marginLeft: 0,\n marginRight: 0,\n flex: \"1 1 auto\",\n height: 24,\n lineHeight: \"24px\",\n padding: 0,\n border: \"none\",\n },\n [`& .${baseInputClasses.inputBorderContainer}`]: {\n border: \"none\",\n background: \"none\",\n },\n [`& .${baseInputClasses.inputRootFocused}`]: {\n outline: \"none\",\n boxShadow: \"none\",\n },\n [`& .${baseInputClasses.root} .${baseInputClasses.inputRootReadOnly}`]: {\n backgroundColor: \"transparent\",\n border: \"none\",\n \"&:hover\": {\n border: \"none\",\n },\n },\n [`&& .${baseInputClasses.input}`]: {\n marginLeft: 0,\n },\n },\n tagSelected: {\n outlineColor: \"#52A8EC\",\n outlineStyle: \"solid\",\n outlineWidth: \"0px\",\n outlineOffset: \"-1px\",\n boxShadow: \"0 0 0 1px #52A8EC, 0 0 0 4px rgba(29,155,209,.3)\",\n },\n tagInputBorderContainer: {},\n tagInputRootFocused: {},\n tagInputRootEmpty: {},\n singleLine: {},\n error: { float: \"left\" },\n inputExtension: {},\n suggestionsContainer: {\n width: \"100%\",\n position: \"relative\",\n top: 59,\n [`& .${suggestionsClasses.root} .${suggestionsClasses.list} &`]: {\n width: \"100%\",\n },\n },\n suggestionList: {},\n});\n"],"names":["baseInputClasses","suggestionsClasses"],"mappings":"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"}
1
+ {"version":3,"file":"TagsInput.styles.js","sources":["../../../src/TagsInput/TagsInput.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { baseInputClasses } from \"../BaseInput\";\nimport { suggestionsClasses } from \"../FormElement/Suggestions\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTagsInput\", {\n input: {\n width: \"100%\",\n ...theme.typography.caption1,\n },\n listItemGutters: { padding: \"0 5px\" },\n listItemRoot: {\n marginBottom: 2,\n height: 24,\n lineHeight: \"24px\",\n\n \"&:not(:last-child)\": {\n marginBottom: 2,\n },\n\n \"&$singleLine\": {\n display: \"table-cell\",\n paddingTop: \"2px\",\n },\n },\n root: { display: \"inline-block\", width: \"100%\" },\n chipRoot: {\n maxWidth: \"none\",\n },\n disabled: {\n \"& $tagsList\": {\n backgroundColor: theme.colors.atmo2,\n border: `1px solid ${theme.colors.atmo4}`,\n\n \"&:focus-within, &:hover\": {\n border: `1px solid ${theme.colors.atmo4}`,\n },\n },\n },\n readOnly: {\n \"& $tagsList\": {\n backgroundColor: theme.colors.atmo2,\n border: `1px solid ${theme.colors.secondary_60}`,\n\n \"&:hover\": {\n border: `1px solid ${theme.colors.secondary_60}`,\n },\n },\n },\n resizable: { width: \"auto\", resize: \"both\", overflow: \"auto\" },\n invalid: {},\n labelContainer: { float: \"left\", display: \"flex\", alignItems: \"flex-start\" },\n label: {},\n description: { display: \"block\", float: \"left\" },\n characterCounter: {\n display: \"block\",\n float: \"right\",\n textAlign: \"right\",\n marginBottom: \"6px\",\n },\n tagsList: {\n display: \"flex\",\n alignContent: \"flex-start\",\n float: \"left\",\n clear: \"both\",\n width: \"100%\",\n maxWidth: \"100%\",\n height: \"32px\",\n padding: 5,\n overflow: \"auto\",\n position: \"relative\",\n\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n\n backgroundColor: theme.colors.atmo1,\n border: `1px solid ${theme.colors.secondary_80}`,\n borderRadius: theme.radii.base,\n\n \"&:hover\": {\n cursor: \"text\",\n border: `1px solid ${theme.colors.primary}`,\n },\n\n [`& .${baseInputClasses.inputRoot}`]: {\n border: \"none\",\n },\n\n \"&:focus, &:focus-within, &:focus-visible\": {\n outlineColor: \"#52A8EC\",\n outlineStyle: \"solid\",\n outlineWidth: \"0px\",\n outlineOffset: \"-1px\",\n boxShadow: \"0 0 0 1px #52A8EC, 0 0 0 4px rgba(29,155,209,.3)\",\n },\n\n \"&$singleLine\": {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n height: 32,\n display: \"table-row\",\n paddingTop: 0,\n },\n\n \"&$error\": {\n border: `1px solid ${theme.colors.negative_120}`,\n },\n\n \"&$invalid\": {\n border: `1px solid ${theme.colors.negative_120}`,\n },\n },\n tagInputContainerRoot: {\n display: \"flex\",\n flexGrow: 1,\n height: 24,\n lineHeight: \"24px\",\n\n \"&$singleLine\": {\n display: \"table-cell\",\n minWidth: 60,\n width: \"100%\",\n paddingTop: \"3px\",\n verticalAlign: \"middle\",\n },\n },\n tagInputRoot: {\n [`& .${baseInputClasses.root}`]: {\n width: \"100%\",\n border: \"none\",\n \"&:hover $tagInputBorderContainer\": {\n background: \"none\",\n },\n },\n [`&& .${baseInputClasses.inputRoot}`]: {\n marginLeft: 0,\n marginRight: 0,\n flex: \"1 1 auto\",\n height: 24,\n lineHeight: \"24px\",\n padding: 0,\n border: \"none\",\n },\n [`& .${baseInputClasses.inputBorderContainer}`]: {\n border: \"none\",\n background: \"none\",\n },\n [`& .${baseInputClasses.inputRootFocused}`]: {\n outline: \"none\",\n boxShadow: \"none\",\n },\n [`& .${baseInputClasses.root} .${baseInputClasses.inputRootReadOnly}`]: {\n backgroundColor: \"transparent\",\n border: \"none\",\n \"&:hover\": {\n border: \"none\",\n },\n },\n [`&& .${baseInputClasses.input}`]: {\n marginLeft: 0,\n },\n },\n tagSelected: {\n outlineColor: \"#52A8EC\",\n outlineStyle: \"solid\",\n outlineWidth: \"0px\",\n outlineOffset: \"-1px\",\n boxShadow: \"0 0 0 1px #52A8EC, 0 0 0 4px rgba(29,155,209,.3)\",\n },\n tagInputBorderContainer: {},\n tagInputRootFocused: {},\n tagInputRootEmpty: {},\n singleLine: {},\n error: { float: \"left\" },\n inputExtension: {},\n suggestionsContainer: {\n width: \"100%\",\n position: \"relative\",\n top: 59,\n [`& .${suggestionsClasses.root} .${suggestionsClasses.list} &`]: {\n width: \"100%\",\n },\n },\n suggestionList: {},\n});\n"],"names":["baseInputClasses","suggestionsClasses"],"mappings":";;;;AAMO,MAAM,EAAE,eAAe,eAAe,cAAc,eAAe;AAAA,EACxE,OAAO;AAAA,IACL,OAAO;AAAA,IACP,GAAG,MAAM,WAAW;AAAA,EACtB;AAAA,EACA,iBAAiB,EAAE,SAAS,QAAQ;AAAA,EACpC,cAAc;AAAA,IACZ,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,YAAY;AAAA,IAEZ,sBAAsB;AAAA,MACpB,cAAc;AAAA,IAChB;AAAA,IAEA,gBAAgB;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,IAAA;AAAA,EAEhB;AAAA,EACA,MAAM,EAAE,SAAS,gBAAgB,OAAO,OAAO;AAAA,EAC/C,UAAU;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AAAA,MACb,iBAAiB,MAAM,OAAO;AAAA,MAC9B,QAAQ,aAAa,MAAM,OAAO,KAAK;AAAA,MAEvC,2BAA2B;AAAA,QACzB,QAAQ,aAAa,MAAM,OAAO,KAAK;AAAA,MAAA;AAAA,IACzC;AAAA,EAEJ;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AAAA,MACb,iBAAiB,MAAM,OAAO;AAAA,MAC9B,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,MAE9C,WAAW;AAAA,QACT,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,MAAA;AAAA,IAChD;AAAA,EAEJ;AAAA,EACA,WAAW,EAAE,OAAO,QAAQ,QAAQ,QAAQ,UAAU,OAAO;AAAA,EAC7D,SAAS,CAAC;AAAA,EACV,gBAAgB,EAAE,OAAO,QAAQ,SAAS,QAAQ,YAAY,aAAa;AAAA,EAC3E,OAAO,CAAC;AAAA,EACR,aAAa,EAAE,SAAS,SAAS,OAAO,OAAO;AAAA,EAC/C,kBAAkB;AAAA,IAChB,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,IACT,cAAc;AAAA,IACd,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IAEV,eAAe;AAAA,IACf,UAAU;AAAA,IAEV,iBAAiB,MAAM,OAAO;AAAA,IAC9B,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAC9C,cAAc,MAAM,MAAM;AAAA,IAE1B,WAAW;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ,aAAa,MAAM,OAAO,OAAO;AAAA,IAC3C;AAAA,IAEA,CAAC,MAAMA,gBAAiB,SAAS,EAAE,GAAG;AAAA,MACpC,QAAQ;AAAA,IACV;AAAA,IAEA,4CAA4C;AAAA,MAC1C,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,WAAW;AAAA,IACb;AAAA,IAEA,gBAAgB;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,IAEA,WAAW;AAAA,MACT,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAChD;AAAA,IAEA,aAAa;AAAA,MACX,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAAA;AAAA,EAElD;AAAA,EACA,uBAAuB;AAAA,IACrB,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA,IAEZ,gBAAgB;AAAA,MACd,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,eAAe;AAAA,IAAA;AAAA,EAEnB;AAAA,EACA,cAAc;AAAA,IACZ,CAAC,MAAMA,gBAAiB,IAAI,EAAE,GAAG;AAAA,MAC/B,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,oCAAoC;AAAA,QAClC,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA,IACA,CAAC,OAAOA,gBAAiB,SAAS,EAAE,GAAG;AAAA,MACrC,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,CAAC,MAAMA,gBAAiB,oBAAoB,EAAE,GAAG;AAAA,MAC/C,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AAAA,IACA,CAAC,MAAMA,gBAAiB,gBAAgB,EAAE,GAAG;AAAA,MAC3C,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,CAAC,MAAMA,gBAAiB,IAAI,KAAKA,gBAAiB,iBAAiB,EAAE,GAAG;AAAA,MACtE,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,QACT,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAAA,IACA,CAAC,OAAOA,gBAAiB,KAAK,EAAE,GAAG;AAAA,MACjC,YAAY;AAAA,IAAA;AAAA,EAEhB;AAAA,EACA,aAAa;AAAA,IACX,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,eAAe;AAAA,IACf,WAAW;AAAA,EACb;AAAA,EACA,yBAAyB,CAAC;AAAA,EAC1B,qBAAqB,CAAC;AAAA,EACtB,mBAAmB,CAAC;AAAA,EACpB,YAAY,CAAC;AAAA,EACb,OAAO,EAAE,OAAO,OAAO;AAAA,EACvB,gBAAgB,CAAC;AAAA,EACjB,sBAAsB;AAAA,IACpB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,KAAK;AAAA,IACL,CAAC,MAAMC,gBAAmB,IAAI,KAAKA,gBAAmB,IAAI,IAAI,GAAG;AAAA,MAC/D,OAAO;AAAA,IAAA;AAAA,EAEX;AAAA,EACA,gBAAgB,CAAA;AAClB,CAAC;"}
@@ -82,7 +82,7 @@ const HvTextArea = forwardRef(function HvTextArea2(props, ref) {
82
82
  const performValidation = useCallback(() => {
83
83
  const inputValidity = validateInput(
84
84
  inputRef.current,
85
- value,
85
+ String(value),
86
86
  required,
87
87
  minCharQuantity,
88
88
  maxCharQuantity,
@@ -114,7 +114,7 @@ const HvTextArea = forwardRef(function HvTextArea2(props, ref) {
114
114
  const onContainerBlurHandler = (event) => {
115
115
  setFocused(false);
116
116
  const inputValidity = performValidation();
117
- onBlur?.(event, value, inputValidity);
117
+ onBlur?.(event, String(value), inputValidity);
118
118
  };
119
119
  const onChangeHandler = (event, currentValue) => {
120
120
  isDirty.current = true;
@@ -125,7 +125,7 @@ const HvTextArea = forwardRef(function HvTextArea2(props, ref) {
125
125
  const onFocusHandler = (event) => {
126
126
  setFocused(true);
127
127
  setValidationState(validationStates.standBy);
128
- onFocus?.(event, value);
128
+ onFocus?.(event, String(value));
129
129
  };
130
130
  const isScrolledDown = useCallback(() => {
131
131
  const el = inputRef.current;
@@ -199,6 +199,7 @@ const HvTextArea = forwardRef(function HvTextArea2(props, ref) {
199
199
  hasLabel && /* @__PURE__ */ jsx(
200
200
  HvLabel,
201
201
  {
202
+ showGutter: true,
202
203
  className: classes.label,
203
204
  id: setId(id, "label"),
204
205
  htmlFor: setId(elementId, "input"),
@@ -220,7 +221,7 @@ const HvTextArea = forwardRef(function HvTextArea2(props, ref) {
220
221
  id: setId(elementId, "charCounter"),
221
222
  className: classes.characterCounter,
222
223
  separator: middleCountLabel,
223
- currentCharQuantity: value.length,
224
+ currentCharQuantity: String(value).length,
224
225
  maxCharQuantity,
225
226
  ...countCharProps
226
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","sources":["../../../src/TextArea/TextArea.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseInput, HvBaseInputProps } from \"../BaseInput\";\nimport {\n computeValidationMessage,\n computeValidationState,\n DEFAULT_ERROR_MESSAGES,\n hasBuiltInValidations,\n HvInputValidity,\n validateInput,\n validationTypes,\n} from \"../BaseInput/validations\";\nimport {\n HvCharCounter,\n HvCharCounterProps,\n HvFormElement,\n HvFormElementProps,\n HvFormStatus,\n HvInfoMessage,\n HvLabel,\n HvWarningText,\n isInvalid,\n validationStates,\n} from \"../FormElement\";\nimport { useControlled } from \"../hooks/useControlled\";\nimport { useUniqueId } from \"../hooks/useUniqueId\";\nimport type { HvValidationMessages } from \"../Input\";\nimport { setId } from \"../utils/setId\";\nimport { staticClasses, useClasses } from \"./TextArea.styles\";\n\nexport { staticClasses as textAreaClasses };\n\nexport type HvTextAreaClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTextAreaProps\n extends Omit<\n HvBaseInputProps,\n \"onChange\" | \"onBlur\" | \"rows\" | \"classes\" | \"onFocus\" | \"placeholder\"\n > {\n /** The placeholder value of the text area. */\n placeholder?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when `status` is \"invalid\".\n */\n statusMessage?: React.ReactNode;\n /**\n * Text between the current char counter and max value.\n */\n middleCountLabel?: string;\n /**\n * An Object containing the various texts associated with the input.\n */\n validationMessages?: HvValidationMessages;\n /**\n * The custom validation function, it receives the value and must return\n * either `true` for valid or `false` for invalid, default validations would only\n * occur if this function is null or undefined\n */\n validation?: (value: string) => boolean;\n /**\n * The maximum allowed length of the characters, if this value is null no check\n * will be performed.\n */\n maxCharQuantity?: number;\n /**\n * The minimum allowed length of the characters, if this value is null no check\n * will be perform.\n */\n minCharQuantity?: number;\n /**\n * If `true` it should autofocus.\n */\n autoFocus?: boolean;\n /**\n * The number of rows of the text area\n */\n rows?: number;\n /**\n * If `true` the component is resizable.\n */\n resizable?: boolean;\n /**\n * Auto-scroll: automatically scroll to the end on value changes.\n * Will stop if the user scrolls up and resume if scrolled to the bottom.\n */\n autoScroll?: boolean;\n /**\n * If true it isn't possible to pass the `maxCharQuantity`\n */\n blockMax?: boolean;\n /**\n * If `true` the character counter isn't shown even if maxCharQuantity is set.\n */\n hideCounter?: boolean;\n /**\n * Props passed to the char count.\n */\n countCharProps?: Partial<HvCharCounterProps>;\n /**\n * Called back when the value is changed.\n */\n onChange?: (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n value: string,\n ) => void;\n /**\n * Called back when the value is changed.\n */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string,\n validationState: HvInputValidity,\n ) => void;\n /**\n * The function that will be executed onBlur, allows checking the value state,\n * it receives the value.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string,\n ) => void;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvTextAreaClasses;\n}\n\n/**\n * A text area is a multiline text input box, with an optional character counter when there is a length limit.\n */\nexport const HvTextArea = forwardRef<\n React.ComponentRef<\"textarea\">,\n HvTextAreaProps\n>(function HvTextArea(props, ref) {\n const {\n id,\n className,\n classes: classesProp,\n name,\n label,\n description,\n placeholder,\n status,\n statusMessage,\n validationMessages,\n maxCharQuantity,\n minCharQuantity,\n value: valueProp,\n inputRef: inputRefProp,\n rows = 1,\n defaultValue = \"\",\n middleCountLabel = \"/\",\n countCharProps = {},\n inputProps = {},\n required,\n readOnly,\n disabled,\n autoFocus,\n resizable,\n autoScroll,\n hideCounter,\n blockMax,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": ariaErrorMessage,\n validation,\n onChange,\n onBlur,\n onFocus,\n ...others\n } = useDefaultProps(\"HvTextArea\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const elementId = useUniqueId(id);\n\n // Signals that the user has manually edited the input value\n const isDirty = useRef<boolean>(false);\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const forkedRef = useForkRef(ref, inputRefProp, inputRef);\n\n const [focused, setFocused] = useState<boolean>(false);\n\n const [autoScrolling, setAutoScrolling] = useState(autoScroll);\n\n const [validationState, setValidationState] = useControlled(\n status,\n validationStates.standBy,\n );\n\n const [validationMessage, setValidationMessage] = useControlled(\n statusMessage,\n \"\",\n );\n\n const [value, setValue] = useControlled(valueProp, defaultValue);\n\n const isStateInvalid = isInvalid(validationState);\n\n const isEmptyValue = value == null || value === \"\";\n\n const hasLabel = label != null;\n\n const hasDescription = description != null;\n\n const hasCounter = maxCharQuantity != null && !hideCounter;\n\n // ValidationMessages reference tends to change, as users will not memorize/useState for it;\n // Dependencies must be more explicit so we set\n const errorMessages = useMemo(\n () => ({ ...DEFAULT_ERROR_MESSAGES, ...validationMessages }),\n [validationMessages],\n );\n\n // Validates the input, sets the status and the statusMessage accordingly (if uncontrolled)\n // and returns the validity state of the input.\n const performValidation = useCallback(() => {\n const inputValidity = validateInput(\n inputRef.current,\n value,\n required,\n minCharQuantity,\n maxCharQuantity,\n validationTypes.none,\n validation,\n );\n\n // This will only run if status is uncontrolled\n setValidationState(computeValidationState(inputValidity, isEmptyValue));\n\n // This will only run if statusMessage is uncontrolled\n setValidationMessage(\n computeValidationMessage(inputValidity, errorMessages),\n );\n\n return inputValidity;\n }, [\n errorMessages,\n inputRef,\n isEmptyValue,\n maxCharQuantity,\n minCharQuantity,\n required,\n setValidationMessage,\n setValidationState,\n validation,\n value,\n ]);\n\n /**\n * Limit the string to the maxCharQuantity length.\n */\n const limitValue = (currentValue: string) => {\n if (currentValue === undefined || !blockMax) return currentValue;\n const isOverflow =\n maxCharQuantity == null ? false : currentValue.length > maxCharQuantity;\n\n return !isOverflow\n ? currentValue\n : currentValue.substring(0, maxCharQuantity);\n };\n\n /**\n * Validates the text area updating the state and modifying the warning text, also executes\n * the user provided onBlur passing the current validation status and value.\n */\n const onContainerBlurHandler: HvFormElementProps[\"onBlur\"] = (event) => {\n setFocused(false);\n\n const inputValidity = performValidation();\n\n onBlur?.(event as any, value, inputValidity);\n };\n\n /**\n * Updates the length of the string while is being inputted, also executes the user onChange\n * allowing the customization of the input if required.\n */\n const onChangeHandler: HvBaseInputProps[\"onChange\"] = (\n event,\n currentValue,\n ) => {\n isDirty.current = true;\n\n const limitedValue = blockMax ? limitValue(currentValue) : currentValue;\n\n // Set the input value (only when value is uncontrolled)\n setValue(limitedValue);\n\n onChange?.(event as any, limitedValue);\n };\n\n /**\n * Updates the state putting again the value from the state because the input value is\n * not automatically manage, it also executes the onFocus function from the user passing the value\n */\n const onFocusHandler: HvBaseInputProps[\"onFocus\"] = (event) => {\n setFocused(true);\n\n // Reset validation status to standBy (only when status is uncontrolled)\n setValidationState(validationStates.standBy);\n\n onFocus?.(event as any, value);\n };\n\n const isScrolledDown = useCallback(() => {\n const el = inputRef.current;\n return el == null || el.offsetHeight + el.scrollTop >= el.scrollHeight;\n }, [inputRef]);\n\n const scrollDown = useCallback(() => {\n const el = inputRef.current;\n if (el != null) {\n el.scrollTop = el.scrollHeight - el.clientHeight;\n }\n }, [inputRef]);\n\n const addScrollListener = useCallback(() => {\n const scrollHandler = {\n handleEvent: () => {\n setAutoScrolling(isScrolledDown());\n },\n };\n inputRef.current?.addEventListener(\"scroll\", scrollHandler);\n }, [inputRef, isScrolledDown]);\n\n useEffect(() => {\n if (autoScroll) {\n addScrollListener();\n }\n }, [autoScroll, addScrollListener]);\n\n useEffect(() => {\n if (autoScrolling) {\n scrollDown();\n }\n }, [valueProp, autoScrolling, scrollDown]);\n\n // Run initial validation after first render\n // and also when any validation condition changes\n useEffect(() => {\n if (focused || (!isDirty.current && isEmptyValue)) {\n // Skip validation if currently focused or if empty and\n // the user never manually edited the input value\n return;\n }\n\n performValidation();\n }, [focused, isEmptyValue, performValidation]);\n\n // The error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and any of the built-in validations are active\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined &&\n hasBuiltInValidations(\n required,\n validationTypes.none,\n minCharQuantity,\n // If blockMax is true maxCharQuantity will never produce an error\n // unless the value is controlled, so we can't prevent it to overflow maxCharQuantity\n maxCharQuantity != null && (blockMax !== true || value != null)\n ? maxCharQuantity\n : null,\n validation,\n inputProps,\n )));\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n status={validationState}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n className={cx(\n classes.root,\n {\n [classes.resizable]: resizable,\n [classes.disabled]: disabled,\n [classes.invalid]: isStateInvalid,\n },\n className,\n )}\n onBlur={onContainerBlurHandler}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n className={classes.label}\n id={setId(id, \"label\")}\n htmlFor={setId(elementId, \"input\")}\n label={label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n className={classes.description}\n id={setId(elementId, \"description\")}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n {hasCounter && (\n <HvCharCounter\n id={setId(elementId, \"charCounter\")}\n className={classes.characterCounter}\n separator={middleCountLabel}\n currentCharQuantity={value.length}\n maxCharQuantity={maxCharQuantity}\n {...countCharProps}\n />\n )}\n\n <HvBaseInput\n classes={{\n root: classes.baseInput,\n input: classes.input,\n inputResizable: classes.inputResizable,\n }}\n id={hasLabel ? setId(elementId, \"input\") : setId(id, \"input\")}\n name={name}\n value={value}\n required={required}\n readOnly={readOnly}\n disabled={disabled}\n onChange={onChangeHandler}\n autoFocus={autoFocus}\n onFocus={onFocusHandler}\n placeholder={placeholder}\n invalid={isStateInvalid}\n resizable={resizable}\n multiline\n rows={rows}\n inputProps={{\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-invalid\": isStateInvalid ? true : undefined,\n \"aria-errormessage\": errorMessageId,\n \"aria-describedby\":\n ariaDescribedBy != null\n ? ariaDescribedBy\n : (description && setId(elementId, \"description\")) || undefined,\n \"aria-controls\": maxCharQuantity\n ? setId(elementId, \"charCounter\")\n : undefined,\n ...inputProps,\n }}\n inputRef={forkedRef}\n {...others}\n />\n\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n className={classes.error}\n disableBorder\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n});\n"],"names":["HvTextArea"],"mappings":"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"}
1
+ {"version":3,"file":"TextArea.js","sources":["../../../src/TextArea/TextArea.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseInput, HvBaseInputProps } from \"../BaseInput\";\nimport {\n computeValidationMessage,\n computeValidationState,\n DEFAULT_ERROR_MESSAGES,\n hasBuiltInValidations,\n HvInputValidity,\n validateInput,\n validationTypes,\n} from \"../BaseInput/validations\";\nimport {\n HvCharCounter,\n HvCharCounterProps,\n HvFormElement,\n HvFormElementProps,\n HvFormStatus,\n HvInfoMessage,\n HvLabel,\n HvWarningText,\n isInvalid,\n validationStates,\n} from \"../FormElement\";\nimport { useControlled } from \"../hooks/useControlled\";\nimport { useUniqueId } from \"../hooks/useUniqueId\";\nimport type { HvValidationMessages } from \"../Input\";\nimport { setId } from \"../utils/setId\";\nimport { staticClasses, useClasses } from \"./TextArea.styles\";\n\nexport { staticClasses as textAreaClasses };\n\nexport type HvTextAreaClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTextAreaProps\n extends Omit<\n HvBaseInputProps,\n \"onChange\" | \"onBlur\" | \"rows\" | \"classes\" | \"onFocus\" | \"placeholder\"\n > {\n /** The placeholder value of the text area. */\n placeholder?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when `status` is \"invalid\".\n */\n statusMessage?: React.ReactNode;\n /**\n * Text between the current char counter and max value.\n */\n middleCountLabel?: string;\n /**\n * An Object containing the various texts associated with the input.\n */\n validationMessages?: HvValidationMessages;\n /**\n * The custom validation function, it receives the value and must return\n * either `true` for valid or `false` for invalid, default validations would only\n * occur if this function is null or undefined\n */\n validation?: (value: string) => boolean;\n /**\n * The maximum allowed length of the characters, if this value is null no check\n * will be performed.\n */\n maxCharQuantity?: number;\n /**\n * The minimum allowed length of the characters, if this value is null no check\n * will be perform.\n */\n minCharQuantity?: number;\n /**\n * If `true` it should autofocus.\n */\n autoFocus?: boolean;\n /**\n * The number of rows of the text area\n */\n rows?: number;\n /**\n * If `true` the component is resizable.\n */\n resizable?: boolean;\n /**\n * Auto-scroll: automatically scroll to the end on value changes.\n * Will stop if the user scrolls up and resume if scrolled to the bottom.\n */\n autoScroll?: boolean;\n /**\n * If true it isn't possible to pass the `maxCharQuantity`\n */\n blockMax?: boolean;\n /**\n * If `true` the character counter isn't shown even if maxCharQuantity is set.\n */\n hideCounter?: boolean;\n /**\n * Props passed to the char count.\n */\n countCharProps?: Partial<HvCharCounterProps>;\n /**\n * Called back when the value is changed.\n */\n onChange?: (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n value: string,\n ) => void;\n /**\n * Called back when the value is changed.\n */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string,\n validationState: HvInputValidity,\n ) => void;\n /**\n * The function that will be executed onBlur, allows checking the value state,\n * it receives the value.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string,\n ) => void;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvTextAreaClasses;\n}\n\n/**\n * A text area is a multiline text input box, with an optional character counter when there is a length limit.\n */\nexport const HvTextArea = forwardRef<\n React.ComponentRef<\"textarea\">,\n HvTextAreaProps\n>(function HvTextArea(props, ref) {\n const {\n id,\n className,\n classes: classesProp,\n name,\n label,\n description,\n placeholder,\n status,\n statusMessage,\n validationMessages,\n maxCharQuantity,\n minCharQuantity,\n value: valueProp,\n inputRef: inputRefProp,\n rows = 1,\n defaultValue = \"\",\n middleCountLabel = \"/\",\n countCharProps = {},\n inputProps = {},\n required,\n readOnly,\n disabled,\n autoFocus,\n resizable,\n autoScroll,\n hideCounter,\n blockMax,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": ariaErrorMessage,\n validation,\n onChange,\n onBlur,\n onFocus,\n ...others\n } = useDefaultProps(\"HvTextArea\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const elementId = useUniqueId(id);\n\n // Signals that the user has manually edited the input value\n const isDirty = useRef<boolean>(false);\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const forkedRef = useForkRef(ref, inputRefProp, inputRef);\n\n const [focused, setFocused] = useState<boolean>(false);\n\n const [autoScrolling, setAutoScrolling] = useState(autoScroll);\n\n const [validationState, setValidationState] = useControlled(\n status,\n validationStates.standBy,\n );\n\n const [validationMessage, setValidationMessage] = useControlled(\n statusMessage,\n \"\",\n );\n\n const [value, setValue] = useControlled(valueProp, defaultValue);\n\n const isStateInvalid = isInvalid(validationState);\n\n const isEmptyValue = value == null || value === \"\";\n\n const hasLabel = label != null;\n\n const hasDescription = description != null;\n\n const hasCounter = maxCharQuantity != null && !hideCounter;\n\n // ValidationMessages reference tends to change, as users will not memorize/useState for it;\n // Dependencies must be more explicit so we set\n const errorMessages = useMemo(\n () => ({ ...DEFAULT_ERROR_MESSAGES, ...validationMessages }),\n [validationMessages],\n );\n\n // Validates the input, sets the status and the statusMessage accordingly (if uncontrolled)\n // and returns the validity state of the input.\n const performValidation = useCallback(() => {\n const inputValidity = validateInput(\n inputRef.current,\n String(value),\n required,\n minCharQuantity,\n maxCharQuantity,\n validationTypes.none,\n validation,\n );\n\n // This will only run if status is uncontrolled\n setValidationState(computeValidationState(inputValidity, isEmptyValue));\n\n // This will only run if statusMessage is uncontrolled\n setValidationMessage(\n computeValidationMessage(inputValidity, errorMessages),\n );\n\n return inputValidity;\n }, [\n errorMessages,\n inputRef,\n isEmptyValue,\n maxCharQuantity,\n minCharQuantity,\n required,\n setValidationMessage,\n setValidationState,\n validation,\n value,\n ]);\n\n /**\n * Limit the string to the maxCharQuantity length.\n */\n const limitValue = (currentValue: string) => {\n if (currentValue === undefined || !blockMax) return currentValue;\n const isOverflow =\n maxCharQuantity == null ? false : currentValue.length > maxCharQuantity;\n\n return !isOverflow\n ? currentValue\n : currentValue.substring(0, maxCharQuantity);\n };\n\n /**\n * Validates the text area updating the state and modifying the warning text, also executes\n * the user provided onBlur passing the current validation status and value.\n */\n const onContainerBlurHandler: HvFormElementProps[\"onBlur\"] = (event) => {\n setFocused(false);\n\n const inputValidity = performValidation();\n\n onBlur?.(event as any, String(value), inputValidity);\n };\n\n /**\n * Updates the length of the string while is being inputted, also executes the user onChange\n * allowing the customization of the input if required.\n */\n const onChangeHandler: HvBaseInputProps[\"onChange\"] = (\n event,\n currentValue,\n ) => {\n isDirty.current = true;\n\n const limitedValue = blockMax ? limitValue(currentValue) : currentValue;\n\n // Set the input value (only when value is uncontrolled)\n setValue(limitedValue);\n\n onChange?.(event as any, limitedValue);\n };\n\n /**\n * Updates the state putting again the value from the state because the input value is\n * not automatically manage, it also executes the onFocus function from the user passing the value\n */\n const onFocusHandler: HvBaseInputProps[\"onFocus\"] = (event) => {\n setFocused(true);\n\n // Reset validation status to standBy (only when status is uncontrolled)\n setValidationState(validationStates.standBy);\n\n onFocus?.(event as any, String(value));\n };\n\n const isScrolledDown = useCallback(() => {\n const el = inputRef.current;\n return el == null || el.offsetHeight + el.scrollTop >= el.scrollHeight;\n }, [inputRef]);\n\n const scrollDown = useCallback(() => {\n const el = inputRef.current;\n if (el != null) {\n el.scrollTop = el.scrollHeight - el.clientHeight;\n }\n }, [inputRef]);\n\n const addScrollListener = useCallback(() => {\n const scrollHandler = {\n handleEvent: () => {\n setAutoScrolling(isScrolledDown());\n },\n };\n inputRef.current?.addEventListener(\"scroll\", scrollHandler);\n }, [inputRef, isScrolledDown]);\n\n useEffect(() => {\n if (autoScroll) {\n addScrollListener();\n }\n }, [autoScroll, addScrollListener]);\n\n useEffect(() => {\n if (autoScrolling) {\n scrollDown();\n }\n }, [valueProp, autoScrolling, scrollDown]);\n\n // Run initial validation after first render\n // and also when any validation condition changes\n useEffect(() => {\n if (focused || (!isDirty.current && isEmptyValue)) {\n // Skip validation if currently focused or if empty and\n // the user never manually edited the input value\n return;\n }\n\n performValidation();\n }, [focused, isEmptyValue, performValidation]);\n\n // The error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and any of the built-in validations are active\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined &&\n hasBuiltInValidations(\n required,\n validationTypes.none,\n minCharQuantity,\n // If blockMax is true maxCharQuantity will never produce an error\n // unless the value is controlled, so we can't prevent it to overflow maxCharQuantity\n maxCharQuantity != null && (blockMax !== true || value != null)\n ? maxCharQuantity\n : null,\n validation,\n inputProps,\n )));\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n status={validationState}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n className={cx(\n classes.root,\n {\n [classes.resizable]: resizable,\n [classes.disabled]: disabled,\n [classes.invalid]: isStateInvalid,\n },\n className,\n )}\n onBlur={onContainerBlurHandler}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n showGutter\n className={classes.label}\n id={setId(id, \"label\")}\n htmlFor={setId(elementId, \"input\")}\n label={label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n className={classes.description}\n id={setId(elementId, \"description\")}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n {hasCounter && (\n <HvCharCounter\n id={setId(elementId, \"charCounter\")}\n className={classes.characterCounter}\n separator={middleCountLabel}\n currentCharQuantity={String(value).length}\n maxCharQuantity={maxCharQuantity}\n {...countCharProps}\n />\n )}\n\n <HvBaseInput\n classes={{\n root: classes.baseInput,\n input: classes.input,\n inputResizable: classes.inputResizable,\n }}\n id={hasLabel ? setId(elementId, \"input\") : setId(id, \"input\")}\n name={name}\n value={value}\n required={required}\n readOnly={readOnly}\n disabled={disabled}\n onChange={onChangeHandler}\n autoFocus={autoFocus}\n onFocus={onFocusHandler}\n placeholder={placeholder}\n invalid={isStateInvalid}\n resizable={resizable}\n multiline\n rows={rows}\n inputProps={{\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-invalid\": isStateInvalid ? true : undefined,\n \"aria-errormessage\": errorMessageId,\n \"aria-describedby\":\n ariaDescribedBy != null\n ? ariaDescribedBy\n : (description && setId(elementId, \"description\")) || undefined,\n \"aria-controls\": maxCharQuantity\n ? setId(elementId, \"charCounter\")\n : undefined,\n ...inputProps,\n }}\n inputRef={forkedRef}\n {...others}\n />\n\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n className={classes.error}\n disableBorder\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n});\n"],"names":["HvTextArea"],"mappings":"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"}
@@ -8,7 +8,7 @@ const { staticClasses, useClasses } = createClasses("HvTextArea", {
8
8
  input: {},
9
9
  inputResizable: { width: "100%", resize: "both" },
10
10
  labelContainer: { float: "left", display: "flex", alignItems: "flex-start" },
11
- label: { display: "block", float: "left", paddingBottom: "6px" },
11
+ label: {},
12
12
  description: { display: "block", float: "left" },
13
13
  characterCounter: {
14
14
  display: "block",
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.styles.js","sources":["../../../src/TextArea/TextArea.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTextArea\", {\n root: { display: \"inline-block\", width: \"100%\" },\n disabled: {},\n resizable: { width: \"fit-content\" },\n invalid: {},\n baseInput: { clear: \"both\", float: \"left\" },\n input: {},\n inputResizable: { width: \"100%\", resize: \"both\" },\n labelContainer: { float: \"left\", display: \"flex\", alignItems: \"flex-start\" },\n label: { display: \"block\", float: \"left\", paddingBottom: \"6px\" },\n description: { display: \"block\", float: \"left\" },\n characterCounter: {\n display: \"block\",\n float: \"right\",\n textAlign: \"right\",\n marginBottom: \"6px\",\n },\n error: { float: \"left\" },\n});\n"],"names":[],"mappings":";AAEO,MAAM,EAAE,eAAe,eAAe,cAAc,cAAc;AAAA,EACvE,MAAM,EAAE,SAAS,gBAAgB,OAAO,OAAO;AAAA,EAC/C,UAAU,CAAC;AAAA,EACX,WAAW,EAAE,OAAO,cAAc;AAAA,EAClC,SAAS,CAAC;AAAA,EACV,WAAW,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC1C,OAAO,CAAC;AAAA,EACR,gBAAgB,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,EAChD,gBAAgB,EAAE,OAAO,QAAQ,SAAS,QAAQ,YAAY,aAAa;AAAA,EAC3E,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ,eAAe,MAAM;AAAA,EAC/D,aAAa,EAAE,SAAS,SAAS,OAAO,OAAO;AAAA,EAC/C,kBAAkB;AAAA,IAChB,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,OAAO,EAAE,OAAO,OAAO;AACzB,CAAC;"}
1
+ {"version":3,"file":"TextArea.styles.js","sources":["../../../src/TextArea/TextArea.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTextArea\", {\n root: { display: \"inline-block\", width: \"100%\" },\n disabled: {},\n resizable: { width: \"fit-content\" },\n invalid: {},\n baseInput: { clear: \"both\", float: \"left\" },\n input: {},\n inputResizable: { width: \"100%\", resize: \"both\" },\n labelContainer: { float: \"left\", display: \"flex\", alignItems: \"flex-start\" },\n label: {},\n description: { display: \"block\", float: \"left\" },\n characterCounter: {\n display: \"block\",\n float: \"right\",\n textAlign: \"right\",\n marginBottom: \"6px\",\n },\n error: { float: \"left\" },\n});\n"],"names":[],"mappings":";AAEO,MAAM,EAAE,eAAe,eAAe,cAAc,cAAc;AAAA,EACvE,MAAM,EAAE,SAAS,gBAAgB,OAAO,OAAO;AAAA,EAC/C,UAAU,CAAC;AAAA,EACX,WAAW,EAAE,OAAO,cAAc;AAAA,EAClC,SAAS,CAAC;AAAA,EACV,WAAW,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC1C,OAAO,CAAC;AAAA,EACR,gBAAgB,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,EAChD,gBAAgB,EAAE,OAAO,QAAQ,SAAS,QAAQ,YAAY,aAAa;AAAA,EAC3E,OAAO,CAAC;AAAA,EACR,aAAa,EAAE,SAAS,SAAS,OAAO,OAAO;AAAA,EAC/C,kBAAkB;AAAA,IAChB,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AAAA,EACA,OAAO,EAAE,OAAO,OAAO;AACzB,CAAC;"}
@@ -1,5 +1,6 @@
1
1
  import { jsx, Fragment } from "react/jsx-runtime";
2
2
  import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
3
+ import { DEFAULT_LOCALE } from "../Calendar/utils.js";
3
4
  import { fixedForwardRef } from "../types/generic.js";
4
5
  import { useClasses } from "./TimeAgo.styles.js";
5
6
  import { staticClasses } from "./TimeAgo.styles.js";
@@ -10,7 +11,7 @@ const HvTimeAgo = fixedForwardRef(function HvTimeAgo2(props, ref) {
10
11
  classes: classesProp,
11
12
  className,
12
13
  timestamp,
13
- locale = "en",
14
+ locale = DEFAULT_LOCALE,
14
15
  component: Component = HvTypography,
15
16
  emptyElement = "—",
16
17
  disableRefresh = false,
@@ -1 +1 @@
1
- {"version":3,"file":"TimeAgo.js","sources":["../../../src/TimeAgo/TimeAgo.tsx"],"sourcesContent":["import {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n fixedForwardRef,\n PolymorphicComponentRef,\n PolymorphicRef,\n} from \"../types/generic\";\nimport { HvTypography } from \"../Typography\";\nimport { staticClasses, useClasses } from \"./TimeAgo.styles\";\nimport useTimeAgo from \"./useTimeAgo\";\n\nexport { staticClasses as timeAgoClasses };\n\nexport type HvTimeAgoClasses = ExtractNames<typeof useClasses>;\n\nexport type HvTimeAgoProps<C extends React.ElementType = \"p\"> =\n PolymorphicComponentRef<\n C,\n {\n /**\n * The timestamp to format, in seconds or milliseconds.\n * Defaults to `emptyElement` if value is null or 0\n */\n timestamp?: number;\n /**\n * The locale to be used. Should be on of the JS supported locales\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument\n */\n locale?: Intl.LocalesArgument;\n /**\n * The element to render when the timestamp is null or 0\n * Defaults to `—` (Em Dash)\n */\n emptyElement?: React.ReactNode;\n /** Disables periodic date refreshes */\n disableRefresh?: boolean;\n /** Whether to show seconds in the rendered time */\n showSeconds?: boolean;\n /**\n * Whether the component should render just the string\n * Consider using `useTimeAgo` instead\n */\n justText?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvTimeAgoClasses;\n }\n >;\n\n/**\n * The HvTimeAgo component implements the Design System relative time format guidelines.\n */\nexport const HvTimeAgo = fixedForwardRef(function HvTimeAgo<\n C extends React.ElementType = \"p\",\n>(props: HvTimeAgoProps<C>, ref: PolymorphicRef<C>) {\n const {\n classes: classesProp,\n className,\n timestamp,\n locale = \"en\",\n component: Component = HvTypography,\n emptyElement = \"—\",\n disableRefresh = false,\n showSeconds = false,\n justText = false,\n ...others\n } = useDefaultProps(\"HvTimeAgo\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const timeAgo = useTimeAgo(timestamp, {\n locale,\n disableRefresh,\n showSeconds,\n });\n\n if (justText && timestamp) return <>{timeAgo}</>;\n\n return (\n <Component ref={ref} className={cx(classes.root, className)} {...others}>\n {!timestamp ? emptyElement : timeAgo}\n </Component>\n );\n});\n"],"names":["HvTimeAgo"],"mappings":";;;;;;;AAsDO,MAAM,YAAY,gBAAgB,SAASA,WAEhD,OAA0B,KAAwB;AAC5C,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,WAAW,YAAY;AAAA,IACvB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,IACD,gBAAgB,aAAa,KAAK;AAEtC,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AACxC,QAAA,UAAU,WAAW,WAAW;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,MAAI,YAAY,UAAkB,QAAA,oBAAA,UAAA,EAAG,UAAQ,SAAA;AAE7C,SACG,oBAAA,WAAA,EAAU,KAAU,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,QAC9D,UAAC,CAAA,YAAY,eAAe,SAC/B;AAEJ,CAAC;"}
1
+ {"version":3,"file":"TimeAgo.js","sources":["../../../src/TimeAgo/TimeAgo.tsx"],"sourcesContent":["import {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { DEFAULT_LOCALE } from \"../Calendar/utils\";\nimport {\n fixedForwardRef,\n PolymorphicComponentRef,\n PolymorphicRef,\n} from \"../types/generic\";\nimport { HvTypography } from \"../Typography\";\nimport { staticClasses, useClasses } from \"./TimeAgo.styles\";\nimport useTimeAgo from \"./useTimeAgo\";\n\nexport { staticClasses as timeAgoClasses };\n\nexport type HvTimeAgoClasses = ExtractNames<typeof useClasses>;\n\nexport type HvTimeAgoProps<C extends React.ElementType = \"p\"> =\n PolymorphicComponentRef<\n C,\n {\n /**\n * The timestamp to format, in seconds or milliseconds.\n * Defaults to `emptyElement` if value is null or 0\n */\n timestamp?: number;\n /**\n * The locale to be used. Should be on of the JS supported locales\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument\n */\n locale?: Intl.LocalesArgument;\n /**\n * The element to render when the timestamp is null or 0\n * Defaults to `—` (Em Dash)\n */\n emptyElement?: React.ReactNode;\n /** Disables periodic date refreshes */\n disableRefresh?: boolean;\n /** Whether to show seconds in the rendered time */\n showSeconds?: boolean;\n /**\n * Whether the component should render just the string\n * Consider using `useTimeAgo` instead\n */\n justText?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvTimeAgoClasses;\n }\n >;\n\n/**\n * The HvTimeAgo component implements the Design System relative time format guidelines.\n */\nexport const HvTimeAgo = fixedForwardRef(function HvTimeAgo<\n C extends React.ElementType = \"p\",\n>(props: HvTimeAgoProps<C>, ref: PolymorphicRef<C>) {\n const {\n classes: classesProp,\n className,\n timestamp,\n locale = DEFAULT_LOCALE,\n component: Component = HvTypography,\n emptyElement = \"—\",\n disableRefresh = false,\n showSeconds = false,\n justText = false,\n ...others\n } = useDefaultProps(\"HvTimeAgo\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const timeAgo = useTimeAgo(timestamp, {\n locale,\n disableRefresh,\n showSeconds,\n });\n\n if (justText && timestamp) return <>{timeAgo}</>;\n\n return (\n <Component ref={ref} className={cx(classes.root, className)} {...others}>\n {!timestamp ? emptyElement : timeAgo}\n </Component>\n );\n});\n"],"names":["HvTimeAgo"],"mappings":";;;;;;;;AAuDO,MAAM,YAAY,gBAAgB,SAASA,WAEhD,OAA0B,KAAwB;AAC5C,QAAA;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,WAAW,YAAY;AAAA,IACvB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,IACD,gBAAgB,aAAa,KAAK;AAEtC,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AACxC,QAAA,UAAU,WAAW,WAAW;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,MAAI,YAAY,UAAkB,QAAA,oBAAA,UAAA,EAAG,UAAQ,SAAA;AAE7C,SACG,oBAAA,WAAA,EAAU,KAAU,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,QAC9D,UAAC,CAAA,YAAY,eAAe,SAC/B;AAEJ,CAAC;"}
@@ -6,6 +6,7 @@ import { useTimeField } from "@react-aria/datepicker";
6
6
  import { useTimeFieldState } from "@react-stately/datepicker";
7
7
  import { Time } from "@hitachivantara/uikit-react-icons";
8
8
  import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
9
+ import { DEFAULT_LOCALE } from "../Calendar/utils.js";
9
10
  import { useControlled } from "../hooks/useControlled.js";
10
11
  import { useUniqueId } from "../hooks/useUniqueId.js";
11
12
  import { setId } from "../utils/setId.js";
@@ -50,7 +51,7 @@ const HvTimePicker = forwardRef(
50
51
  timeFormat,
51
52
  showSeconds,
52
53
  disableExpand,
53
- locale = "en",
54
+ locale = DEFAULT_LOCALE,
54
55
  onToggle,
55
56
  onChange,
56
57
  // misc properties:
@@ -119,6 +120,7 @@ const HvTimePicker = forwardRef(
119
120
  label && /* @__PURE__ */ jsx(
120
121
  HvLabel,
121
122
  {
123
+ showGutter: true,
122
124
  label,
123
125
  className: classes.label,
124
126
  ...labelProps
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","sources":["../../../src/TimePicker/TimePicker.tsx"],"sourcesContent":["import { forwardRef, useMemo, useRef, useState } from \"react\";\nimport { Time } from \"@internationalized/date\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport { useTimeField } from \"@react-aria/datepicker\";\nimport {\n useTimeFieldState,\n type TimeFieldStateOptions,\n} from \"@react-stately/datepicker\";\nimport { Time as TimeIcon } from \"@hitachivantara/uikit-react-icons\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseDropdown, HvBaseDropdownProps } from \"../BaseDropdown\";\nimport {\n HvFormElement,\n HvFormElementProps,\n HvFormStatus,\n HvInfoMessage,\n HvLabel,\n HvWarningText,\n} from \"../FormElement\";\nimport { useControlled } from \"../hooks/useControlled\";\nimport { useUniqueId } from \"../hooks/useUniqueId\";\nimport { setId } from \"../utils/setId\";\nimport { Placeholder, PlaceholderProps } from \"./Placeholder\";\nimport { staticClasses, useClasses } from \"./TimePicker.styles\";\nimport { Unit } from \"./Unit\";\n\nconst toTime = (value?: HvTimePickerValue | null) => {\n if (!value) return value;\n const { hours, minutes, seconds } = value;\n return new Time(hours, minutes, seconds);\n};\n\nexport { staticClasses as timePickerClasses };\n\nexport type TimeFormat = \"12\" | \"24\";\n\nexport type HvTimePickerClasses = ExtractNames<typeof useClasses>;\n\nexport type HvTimePickerClassKey =\n | \"root\"\n | \"input\"\n | \"label\"\n | \"placeholder\"\n | \"timePopperContainer\"\n | \"separator\"\n | \"periodContainer\"\n | \"formElementRoot\"\n | \"dropdownPlaceholder\"\n | \"iconBaseRoot\"\n | \"error\"\n | \"labelContainer\"\n | \"description\"\n | \"dropdownHeaderInvalid\"\n | \"dropdownPlaceholderDisabled\"\n | \"dropdownHeaderOpen\";\n\nexport type HvTimePickerValue = {\n hours: number;\n minutes: number;\n seconds: number;\n};\n\nexport interface HvTimePickerProps\n extends Omit<\n HvFormElementProps,\n \"classes\" | \"value\" | \"defaultValue\" | \"onChange\"\n > {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvTimePickerClasses;\n /** Current value of the element when _controlled_. Follows the 24-hour format. */\n value?: HvTimePickerValue | null;\n /** Initial value of the element when _uncontrolled_. Follows the 24-hour format. */\n defaultValue?: HvTimePickerValue | null;\n /** The placeholder value when no time is selected. */\n placeholder?: string;\n /** The placeholder of the hours input. */\n hoursPlaceholder?: string;\n /** The placeholder of the minutes input. */\n minutesPlaceholder?: string;\n /** The placeholder of the seconds input. */\n secondsPlaceholder?: string;\n /**\n * Whether the time picker should show the AM/PM 12-hour clock or the 24-hour one.\n * If undefined, the component will use a format according to the passed locale.\n */\n timeFormat?: TimeFormat;\n /** Whether to visually show the seconds control */\n showSeconds?: boolean;\n /** Locale that will provide the time format(12 or 24 hour format). It is \"overwritten\" by `showAmPm` */\n locale?: string;\n /** Whether the dropdown is expandable. */\n disableExpand?: boolean;\n /**\n * Callback function to be triggered when the input value is changed.\n * It is invoked with a `{hours, minutes, seconds}` object, always in the 24h format\n */\n onChange?: (value: HvTimePickerValue) => void;\n /** Callback called when dropdown changes the expanded state. */\n onToggle?: (event: Event, isOpen: boolean) => void;\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n /** Sets if the calendar container should follow the date picker input out of the screen or stay visible. */\n escapeWithReference?: boolean;\n /** Extra properties to be passed to the TimePicker's dropdown. */\n dropdownProps?: Partial<HvBaseDropdownProps>;\n}\n\n/**\n * A Time Picker allows the user to choose a specific time or a time range.\n */\nexport const HvTimePicker = forwardRef<HTMLDivElement, HvTimePickerProps>(\n function HvTimePicker(props, ref) {\n const {\n classes: classesProp,\n className,\n\n id: idProp,\n name,\n required,\n disabled,\n readOnly,\n label,\n\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n hoursPlaceholder = \"hh\",\n minutesPlaceholder = \"mm\",\n secondsPlaceholder = \"ss\",\n\n value: valueProp,\n defaultValue: defaultValueProp,\n\n timeFormat,\n showSeconds,\n disableExpand,\n locale = \"en\",\n\n onToggle,\n onChange,\n\n // misc properties:\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps = {},\n ...others\n } = useDefaultProps(\"HvTimePicker\", props);\n\n const id = useUniqueId(idProp);\n\n const { classes, cx } = useClasses(classesProp);\n\n const timeFieldRef = useRef<HTMLDivElement>(null);\n\n const { ref: refProp, ...otherDropdownProps } = dropdownProps;\n const dropdownForkedRef = useForkRef(ref, refProp);\n\n const stateProps: TimeFieldStateOptions = {\n value: toTime(valueProp),\n defaultValue: toTime(defaultValueProp),\n label,\n locale,\n isRequired: required,\n isReadOnly: readOnly,\n isDisabled: disabled,\n granularity: showSeconds === false ? \"minute\" : \"second\",\n hourCycle: timeFormat === \"12\" ? 12 : 24,\n onChange: (value) => {\n const { hour: hours, minute: minutes, second: seconds } = value;\n onChange?.({ hours, minutes, seconds });\n },\n };\n const state = useTimeFieldState(stateProps);\n const { labelProps, fieldProps, descriptionProps } = useTimeField(\n {\n ...stateProps,\n id,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n },\n state,\n timeFieldRef,\n );\n\n const [open, setOpen] = useState(false);\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n const [validationState] = useControlled<HvFormStatus>(status, \"standBy\");\n\n const placeholders: PlaceholderProps[\"placeholders\"] = useMemo(\n () => ({\n hour: hoursPlaceholder,\n minute: minutesPlaceholder,\n second: secondsPlaceholder,\n }),\n [hoursPlaceholder, minutesPlaceholder, secondsPlaceholder],\n );\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = validationState === \"invalid\";\n const errorMessageId = isStateInvalid\n ? canShowError\n ? setId(id, \"error\")\n : ariaErrorMessage\n : undefined;\n\n return (\n <HvFormElement\n name={name}\n required={required}\n disabled={disabled}\n status={validationState}\n className={cx(classes.root, className)}\n {...others}\n >\n {(label || description) && (\n <div className={classes.labelContainer}>\n {label && (\n <HvLabel\n label={label}\n className={classes.label}\n {...labelProps}\n />\n )}\n {description && (\n <HvInfoMessage\n className={classes.description}\n {...descriptionProps}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n <HvBaseDropdown\n ref={dropdownForkedRef}\n role=\"combobox\"\n variableWidth\n disabled={disabled}\n readOnly={readOnly}\n placeholder={\n placeholder && !state.value ? (\n placeholder\n ) : (\n <Placeholder\n ref={timeFieldRef}\n name={name}\n state={state}\n placeholders={placeholders}\n className={cx(classes.placeholder, {\n [classes.placeholderDisabled]: disabled,\n })}\n {...fieldProps}\n />\n )\n }\n classes={{\n header: cx(classes.dropdownHeader, {\n [classes.dropdownHeaderInvalid]: isStateInvalid,\n }),\n panel: classes.dropdownPanel,\n headerOpen: classes.dropdownHeaderOpen,\n }}\n placement=\"right\"\n adornment={\n <TimeIcon\n color={disabled ? \"secondary_60\" : undefined}\n className={classes.icon}\n />\n }\n expanded={open}\n onToggle={(evt, newOpen) => {\n if (disableExpand) return;\n setOpen(newOpen);\n onToggle?.(evt, newOpen);\n }}\n onContainerCreation={(containerRef) => {\n containerRef?.getElementsByTagName(\"input\")[0]?.focus();\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={fieldProps[\"aria-labelledby\"]}\n aria-describedby={fieldProps[\"aria-describedby\"]}\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n disablePortal={disablePortal}\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n {...otherDropdownProps}\n >\n <div ref={timeFieldRef} className={classes.timePopperContainer}>\n {state.segments.map((segment, i) => (\n <Unit\n key={i}\n state={state}\n segment={segment}\n placeholder={placeholders[segment.type]}\n onAdd={() => state.increment(segment.type)}\n onSub={() => state.decrement(segment.type)}\n onChange={(evt, val) => {\n state.setSegment(segment.type, Number(val));\n }}\n />\n ))}\n </div>\n </HvBaseDropdown>\n\n {canShowError && (\n <HvWarningText\n id={setId(id, \"error\")}\n disableBorder\n className={classes.error}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n },\n);\n"],"names":["Time","HvTimePicker","TimeIcon"],"mappings":"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"}
1
+ {"version":3,"file":"TimePicker.js","sources":["../../../src/TimePicker/TimePicker.tsx"],"sourcesContent":["import { forwardRef, useMemo, useRef, useState } from \"react\";\nimport { Time } from \"@internationalized/date\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport { useTimeField } from \"@react-aria/datepicker\";\nimport {\n useTimeFieldState,\n type TimeFieldStateOptions,\n} from \"@react-stately/datepicker\";\nimport { Time as TimeIcon } from \"@hitachivantara/uikit-react-icons\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseDropdown, HvBaseDropdownProps } from \"../BaseDropdown\";\nimport { DEFAULT_LOCALE } from \"../Calendar/utils\";\nimport {\n HvFormElement,\n HvFormElementProps,\n HvFormStatus,\n HvInfoMessage,\n HvLabel,\n HvWarningText,\n} from \"../FormElement\";\nimport { useControlled } from \"../hooks/useControlled\";\nimport { useUniqueId } from \"../hooks/useUniqueId\";\nimport { setId } from \"../utils/setId\";\nimport { Placeholder, PlaceholderProps } from \"./Placeholder\";\nimport { staticClasses, useClasses } from \"./TimePicker.styles\";\nimport { Unit } from \"./Unit\";\n\nconst toTime = (value?: HvTimePickerValue | null) => {\n if (!value) return value;\n const { hours, minutes, seconds } = value;\n return new Time(hours, minutes, seconds);\n};\n\nexport { staticClasses as timePickerClasses };\n\nexport type TimeFormat = \"12\" | \"24\";\n\nexport type HvTimePickerClasses = ExtractNames<typeof useClasses>;\n\nexport type HvTimePickerClassKey =\n | \"root\"\n | \"input\"\n | \"label\"\n | \"placeholder\"\n | \"timePopperContainer\"\n | \"separator\"\n | \"periodContainer\"\n | \"formElementRoot\"\n | \"dropdownPlaceholder\"\n | \"iconBaseRoot\"\n | \"error\"\n | \"labelContainer\"\n | \"description\"\n | \"dropdownHeaderInvalid\"\n | \"dropdownPlaceholderDisabled\"\n | \"dropdownHeaderOpen\";\n\nexport type HvTimePickerValue = {\n hours: number;\n minutes: number;\n seconds: number;\n};\n\nexport interface HvTimePickerProps\n extends Omit<\n HvFormElementProps,\n \"classes\" | \"value\" | \"defaultValue\" | \"onChange\"\n > {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvTimePickerClasses;\n /** Current value of the element when _controlled_. Follows the 24-hour format. */\n value?: HvTimePickerValue | null;\n /** Initial value of the element when _uncontrolled_. Follows the 24-hour format. */\n defaultValue?: HvTimePickerValue | null;\n /** The placeholder value when no time is selected. */\n placeholder?: string;\n /** The placeholder of the hours input. */\n hoursPlaceholder?: string;\n /** The placeholder of the minutes input. */\n minutesPlaceholder?: string;\n /** The placeholder of the seconds input. */\n secondsPlaceholder?: string;\n /**\n * Whether the time picker should show the AM/PM 12-hour clock or the 24-hour one.\n * If undefined, the component will use a format according to the passed locale.\n */\n timeFormat?: TimeFormat;\n /** Whether to visually show the seconds control */\n showSeconds?: boolean;\n /** Locale that will provide the time format(12 or 24 hour format). It is \"overwritten\" by `showAmPm` */\n locale?: string;\n /** Whether the dropdown is expandable. */\n disableExpand?: boolean;\n /**\n * Callback function to be triggered when the input value is changed.\n * It is invoked with a `{hours, minutes, seconds}` object, always in the 24h format\n */\n onChange?: (value: HvTimePickerValue) => void;\n /** Callback called when dropdown changes the expanded state. */\n onToggle?: (event: Event, isOpen: boolean) => void;\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n /** Sets if the calendar container should follow the date picker input out of the screen or stay visible. */\n escapeWithReference?: boolean;\n /** Extra properties to be passed to the TimePicker's dropdown. */\n dropdownProps?: Partial<HvBaseDropdownProps>;\n}\n\n/**\n * A Time Picker allows the user to choose a specific time or a time range.\n */\nexport const HvTimePicker = forwardRef<HTMLDivElement, HvTimePickerProps>(\n function HvTimePicker(props, ref) {\n const {\n classes: classesProp,\n className,\n\n id: idProp,\n name,\n required,\n disabled,\n readOnly,\n label,\n\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n hoursPlaceholder = \"hh\",\n minutesPlaceholder = \"mm\",\n secondsPlaceholder = \"ss\",\n\n value: valueProp,\n defaultValue: defaultValueProp,\n\n timeFormat,\n showSeconds,\n disableExpand,\n locale = DEFAULT_LOCALE,\n\n onToggle,\n onChange,\n\n // misc properties:\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps = {},\n ...others\n } = useDefaultProps(\"HvTimePicker\", props);\n\n const id = useUniqueId(idProp);\n\n const { classes, cx } = useClasses(classesProp);\n\n const timeFieldRef = useRef<HTMLDivElement>(null);\n\n const { ref: refProp, ...otherDropdownProps } = dropdownProps;\n const dropdownForkedRef = useForkRef(ref, refProp);\n\n const stateProps: TimeFieldStateOptions = {\n value: toTime(valueProp),\n defaultValue: toTime(defaultValueProp),\n label,\n locale,\n isRequired: required,\n isReadOnly: readOnly,\n isDisabled: disabled,\n granularity: showSeconds === false ? \"minute\" : \"second\",\n hourCycle: timeFormat === \"12\" ? 12 : 24,\n onChange: (value) => {\n const { hour: hours, minute: minutes, second: seconds } = value;\n onChange?.({ hours, minutes, seconds });\n },\n };\n const state = useTimeFieldState(stateProps);\n const { labelProps, fieldProps, descriptionProps } = useTimeField(\n {\n ...stateProps,\n id,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n },\n state,\n timeFieldRef,\n );\n\n const [open, setOpen] = useState(false);\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n const [validationState] = useControlled<HvFormStatus>(status, \"standBy\");\n\n const placeholders: PlaceholderProps[\"placeholders\"] = useMemo(\n () => ({\n hour: hoursPlaceholder,\n minute: minutesPlaceholder,\n second: secondsPlaceholder,\n }),\n [hoursPlaceholder, minutesPlaceholder, secondsPlaceholder],\n );\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = validationState === \"invalid\";\n const errorMessageId = isStateInvalid\n ? canShowError\n ? setId(id, \"error\")\n : ariaErrorMessage\n : undefined;\n\n return (\n <HvFormElement\n name={name}\n required={required}\n disabled={disabled}\n status={validationState}\n className={cx(classes.root, className)}\n {...others}\n >\n {(label || description) && (\n <div className={classes.labelContainer}>\n {label && (\n <HvLabel\n showGutter\n label={label}\n className={classes.label}\n {...labelProps}\n />\n )}\n {description && (\n <HvInfoMessage\n className={classes.description}\n {...descriptionProps}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n <HvBaseDropdown\n ref={dropdownForkedRef}\n role=\"combobox\"\n variableWidth\n disabled={disabled}\n readOnly={readOnly}\n placeholder={\n placeholder && !state.value ? (\n placeholder\n ) : (\n <Placeholder\n ref={timeFieldRef}\n name={name}\n state={state}\n placeholders={placeholders}\n className={cx(classes.placeholder, {\n [classes.placeholderDisabled]: disabled,\n })}\n {...fieldProps}\n />\n )\n }\n classes={{\n header: cx(classes.dropdownHeader, {\n [classes.dropdownHeaderInvalid]: isStateInvalid,\n }),\n panel: classes.dropdownPanel,\n headerOpen: classes.dropdownHeaderOpen,\n }}\n placement=\"right\"\n adornment={\n <TimeIcon\n color={disabled ? \"secondary_60\" : undefined}\n className={classes.icon}\n />\n }\n expanded={open}\n onToggle={(evt, newOpen) => {\n if (disableExpand) return;\n setOpen(newOpen);\n onToggle?.(evt, newOpen);\n }}\n onContainerCreation={(containerRef) => {\n containerRef?.getElementsByTagName(\"input\")[0]?.focus();\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={fieldProps[\"aria-labelledby\"]}\n aria-describedby={fieldProps[\"aria-describedby\"]}\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n disablePortal={disablePortal}\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n {...otherDropdownProps}\n >\n <div ref={timeFieldRef} className={classes.timePopperContainer}>\n {state.segments.map((segment, i) => (\n <Unit\n key={i}\n state={state}\n segment={segment}\n placeholder={placeholders[segment.type]}\n onAdd={() => state.increment(segment.type)}\n onSub={() => state.decrement(segment.type)}\n onChange={(evt, val) => {\n state.setSegment(segment.type, Number(val));\n }}\n />\n ))}\n </div>\n </HvBaseDropdown>\n\n {canShowError && (\n <HvWarningText\n id={setId(id, \"error\")}\n disableBorder\n className={classes.error}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n },\n);\n"],"names":["Time","HvTimePicker","TimeIcon"],"mappings":"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"}
@@ -8,10 +8,7 @@ const { useClasses, staticClasses } = createClasses("HvTimePicker", {
8
8
  display: "flex",
9
9
  alignItems: "flex-start"
10
10
  },
11
- label: {
12
- marginBottom: 6,
13
- display: "block"
14
- },
11
+ label: {},
15
12
  description: {},
16
13
  placeholder: {
17
14
  display: "flex",
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.styles.js","sources":["../../../src/TimePicker/TimePicker.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvTimePicker\", {\n root: {\n position: \"relative\",\n },\n\n labelContainer: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n label: {\n marginBottom: 6,\n display: \"block\",\n },\n description: {},\n\n placeholder: {\n display: \"flex\",\n gap: 1,\n },\n placeholderDisabled: {\n color: theme.colors.secondary_60,\n },\n\n dropdownHeader: {},\n dropdownHeaderOpen: {},\n dropdownHeaderInvalid: {\n border: `1px solid ${theme.colors.negative_120}`,\n \"&:hover\": {\n border: `1px solid ${theme.colors.negative_120}`,\n },\n },\n dropdownPanel: {},\n\n icon: {},\n\n timePopperContainer: {\n zIndex: 10,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: theme.spacing(\"xs\", 0),\n userSelect: \"none\",\n minWidth: \"175px\",\n },\n\n error: {},\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,YAAY,kBAAkB,cAAc,gBAAgB;AAAA,EACzE,MAAM;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EAEA,gBAAgB;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AAAA,EACA,OAAO;AAAA,IACL,cAAc;AAAA,IACd,SAAS;AAAA,EACX;AAAA,EACA,aAAa,CAAC;AAAA,EAEd,aAAa;AAAA,IACX,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,MAAM,OAAO;AAAA,EACtB;AAAA,EAEA,gBAAgB,CAAC;AAAA,EACjB,oBAAoB,CAAC;AAAA,EACrB,uBAAuB;AAAA,IACrB,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAC9C,WAAW;AAAA,MACT,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAAA;AAAA,EAElD;AAAA,EACA,eAAe,CAAC;AAAA,EAEhB,MAAM,CAAC;AAAA,EAEP,qBAAqB;AAAA,IACnB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,MAAM,CAAC;AAAA,IAC9B,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EAEA,OAAO,CAAA;AACT,CAAC;"}
1
+ {"version":3,"file":"TimePicker.styles.js","sources":["../../../src/TimePicker/TimePicker.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvTimePicker\", {\n root: {\n position: \"relative\",\n },\n\n labelContainer: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n label: {},\n description: {},\n\n placeholder: {\n display: \"flex\",\n gap: 1,\n },\n placeholderDisabled: {\n color: theme.colors.secondary_60,\n },\n\n dropdownHeader: {},\n dropdownHeaderOpen: {},\n dropdownHeaderInvalid: {\n border: `1px solid ${theme.colors.negative_120}`,\n \"&:hover\": {\n border: `1px solid ${theme.colors.negative_120}`,\n },\n },\n dropdownPanel: {},\n\n icon: {},\n\n timePopperContainer: {\n zIndex: 10,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: theme.spacing(\"xs\", 0),\n userSelect: \"none\",\n minWidth: \"175px\",\n },\n\n error: {},\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,YAAY,kBAAkB,cAAc,gBAAgB;AAAA,EACzE,MAAM;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EAEA,gBAAgB;AAAA,IACd,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AAAA,EACA,OAAO,CAAC;AAAA,EACR,aAAa,CAAC;AAAA,EAEd,aAAa;AAAA,IACX,SAAS;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAO,MAAM,OAAO;AAAA,EACtB;AAAA,EAEA,gBAAgB,CAAC;AAAA,EACjB,oBAAoB,CAAC;AAAA,EACrB,uBAAuB;AAAA,IACrB,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAC9C,WAAW;AAAA,MACT,QAAQ,aAAa,MAAM,OAAO,YAAY;AAAA,IAAA;AAAA,EAElD;AAAA,EACA,eAAe,CAAC;AAAA,EAEhB,MAAM,CAAC;AAAA,EAEP,qBAAqB;AAAA,IACnB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,MAAM,CAAC;AAAA,IAC9B,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EAEA,OAAO,CAAA;AACT,CAAC;"}
package/dist/esm/index.js CHANGED
@@ -22,7 +22,7 @@ import { outlineStyles } from "./utils/focusUtils.js";
22
22
  import { getComponentName } from "./utils/getComponentName.js";
23
23
  import { hexToRgbA } from "./utils/hexToRgbA.js";
24
24
  import { iconVariant } from "./utils/iconVariant.js";
25
- import { isKey, isOneOfKeys } from "./utils/keyboardUtils.js";
25
+ import { isDeleteKey, isKey, isOneOfKeys } from "./utils/keyboardUtils.js";
26
26
  import { multiSelectionEventHandler } from "./utils/multiSelectionEventHandler.js";
27
27
  import { Random } from "./utils/Random.js";
28
28
  import { setId, setUid } from "./utils/setId.js";
@@ -31,19 +31,6 @@ import { createTheme, getVarValue, processThemes, setElementAttrs } from "./util
31
31
  import { useSavedState } from "./utils/useSavedState.js";
32
32
  import { wrapperTooltip } from "./utils/wrapperTooltip.js";
33
33
  import { uniqueId } from "./utils/helpers.js";
34
- import { default as default2, default as default3 } from "./Table/hooks/useTable.js";
35
- import { getHeaderFooterPropsHook, default as default4 } from "./Table/hooks/useTableStyles.js";
36
- import { default as default5 } from "./Table/hooks/useSortBy.js";
37
- import { getHeaderGroupPropsHook, getTableHeadPropsHook, default as default6 } from "./Table/hooks/useSticky.js";
38
- import { defaultGetHvPaginationProps, default as default7 } from "./Table/hooks/usePagination.js";
39
- import { CellWithCheckBox, defaultGetToggleAllPageRowsSelectedProps, defaultGetToggleAllRowsSelectedProps, defaultGetToggleRowSelectedProps, prepareRow, reducer, default as default8, useInstance } from "./Table/hooks/useRowSelection.js";
40
- import { defaultgetHvBulkActionsProps, default as default9 } from "./Table/hooks/useBulkActions.js";
41
- import { CellWithExpandButton, default as default10 } from "./Table/hooks/useRowExpand.js";
42
- import { default as default11 } from "./Table/hooks/useHeaderGroups.js";
43
- import { default as default12 } from "./Table/hooks/useResizeColumns.js";
44
- import { default as default13 } from "./Table/hooks/useGlobalFilter.js";
45
- import { default as default14 } from "./Table/hooks/useFilters.js";
46
- import { default as default15 } from "./Table/hooks/useRowState.js";
47
34
  import { typographyVariants } from "./Typography/utils.js";
48
35
  import { staticClasses } from "./Typography/Typography.styles.js";
49
36
  import { HvTypography } from "./Typography/Typography.js";
@@ -243,6 +230,7 @@ import { staticClasses as staticClasses94 } from "./Switch/Switch.styles.js";
243
230
  import { HvSwitch } from "./Switch/Switch.js";
244
231
  import { staticClasses as staticClasses95 } from "./Tab/Tab.styles.js";
245
232
  import { HvTab } from "./Tab/Tab.js";
233
+ import { useHvTable, useHvTable as useHvTable2 } from "./Table/hooks/useHvTable.js";
246
234
  import { staticClasses as staticClasses96 } from "./Table/Table.styles.js";
247
235
  import { HvTable } from "./Table/Table.js";
248
236
  import { staticClasses as staticClasses97 } from "./Table/TableContainer/TableContainer.styles.js";
@@ -257,13 +245,23 @@ import { staticClasses as staticClasses101 } from "./Table/TableRow/TableRow.sty
257
245
  import { HvTableRow } from "./Table/TableRow/TableRow.js";
258
246
  import { staticClasses as staticClasses102 } from "./Table/TableCell/TableCell.styles.js";
259
247
  import { HvTableCell } from "./Table/TableCell/TableCell.js";
260
- import { hvDateColumn, hvDropdownColumn, hvExpandColumn, hvNumberColumn, hvProgressColumn, hvSwitchColumn, hvTagColumn, hvTextColumn } from "./Table/renderers/renderers.js";
261
- import { HvDateColumnCell } from "./Table/renderers/DateColumnCell/DateColumnCell.js";
262
- import { HvDropdownColumnCell } from "./Table/renderers/DropdownColumnCell/DropdownColumnCell.js";
263
- import { HvProgressColumnCell, normalizeProgressBar } from "./Table/renderers/ProgressColumnCell/ProgressColumnCell.js";
264
- import { HvSwitchColumnCell } from "./Table/renderers/SwitchColumnCell/SwitchColumnCell.js";
265
- import { hvNodeFallback, hvNumberFallback, hvStringFallback } from "./Table/utils/fallbacks.js";
266
- import { getBorderStyles } from "./Table/utils/utils.js";
248
+ import { useHvTableStyles } from "./Table/hooks/useHvTableStyles.js";
249
+ import { useHvSortBy } from "./Table/hooks/useHvSortBy.js";
250
+ import { useHvTableSticky } from "./Table/hooks/useHvSticky.js";
251
+ import { defaultGetHvPaginationProps, useHvPagination } from "./Table/hooks/useHvPagination.js";
252
+ import { defaultGetToggleAllPageRowsSelectedProps, defaultGetToggleAllRowsSelectedProps, defaultGetToggleRowSelectedProps, useHvRowSelection } from "./Table/hooks/useHvRowSelection.js";
253
+ import { useHvBulkActions } from "./Table/hooks/useHvBulkActions.js";
254
+ import { CellWithExpandButton, useHvRowExpand } from "./Table/hooks/useHvRowExpand.js";
255
+ import { useHvHeaderGroups } from "./Table/hooks/useHvHeaderGroups.js";
256
+ import { useHvResizeColumns } from "./Table/hooks/useHvResizeColumns.js";
257
+ import { useHvGlobalFilter } from "./Table/hooks/useHvGlobalFilter.js";
258
+ import { useHvFilters } from "./Table/hooks/useHvFilters.js";
259
+ import { useHvRowState } from "./Table/hooks/useHvRowState.js";
260
+ import { hvDateColumn, hvDropdownColumn, hvExpandColumn, hvNodeFallback, hvNumberColumn, hvNumberFallback, hvProgressColumn, hvStringFallback, hvSwitchColumn, hvTagColumn, hvTextColumn } from "./Table/renderers/renderers.js";
261
+ import { HvDateColumnCell } from "./Table/renderers/DateColumnCell.js";
262
+ import { HvDropdownColumnCell } from "./Table/renderers/DropdownColumnCell.js";
263
+ import { HvProgressColumnCell, normalizeProgressBar } from "./Table/renderers/ProgressColumnCell.js";
264
+ import { HvSwitchColumnCell } from "./Table/renderers/SwitchColumnCell.js";
267
265
  import { staticClasses as staticClasses103 } from "./Tabs/Tabs.styles.js";
268
266
  import { HvTabs } from "./Tabs/Tabs.js";
269
267
  import { staticClasses as staticClasses104 } from "./Tag/Tag.styles.js";
@@ -308,7 +306,6 @@ import { staticClasses as staticClasses121 } from "./Skeleton/Skeleton.styles.js
308
306
  import { HvSkeleton } from "./Skeleton/Skeleton.js";
309
307
  import { EmotionContext, HvThemeContext, defaultCacheKey, defaultEmotionCache } from "@hitachivantara/uikit-react-shared";
310
308
  export {
311
- CellWithCheckBox,
312
309
  CellWithExpandButton,
313
310
  EmotionContext,
314
311
  HvAccordion,
@@ -496,7 +493,6 @@ export {
496
493
  defaultGetToggleAllPageRowsSelectedProps,
497
494
  defaultGetToggleAllRowsSelectedProps,
498
495
  defaultGetToggleRowSelectedProps,
499
- defaultgetHvBulkActionsProps,
500
496
  staticClasses50 as dialogActionClasses,
501
497
  staticClasses51 as dialogClasses,
502
498
  staticClasses49 as dialogContentClasses,
@@ -515,15 +511,11 @@ export {
515
511
  staticClasses3 as focusClasses,
516
512
  staticClasses60 as footerClasses,
517
513
  staticClasses8 as formElementClasses,
518
- getBorderStyles,
519
514
  getComponentName,
520
515
  getFirstAndLastFocus,
521
516
  getFocusableList,
522
- getHeaderFooterPropsHook,
523
- getHeaderGroupPropsHook,
524
517
  getPrevNextFocus,
525
518
  getSelectorIcons,
526
- getTableHeadPropsHook,
527
519
  getVarValue,
528
520
  staticClasses61 as globalActionsClasses,
529
521
  staticClasses62 as gridClasses,
@@ -553,6 +545,7 @@ export {
553
545
  staticClasses67 as inlineEditorClasses,
554
546
  staticClasses68 as inputClasses,
555
547
  isBrowser,
548
+ isDeleteKey,
556
549
  isKey,
557
550
  isOneOfKeys,
558
551
  staticClasses69 as kpiClasses,
@@ -575,13 +568,11 @@ export {
575
568
  staticClasses77 as paginationClasses,
576
569
  staticClasses78 as panelClasses,
577
570
  pentahoPlus,
578
- prepareRow,
579
571
  processThemes,
580
572
  staticClasses79 as progressBarClasses,
581
573
  staticClasses80 as queryBuilderClasses,
582
574
  staticClasses81 as radioClasses,
583
575
  staticClasses82 as radioGroupClasses,
584
- reducer,
585
576
  staticClasses46 as rightControlClasses,
586
577
  staticClasses86 as scrollToHorizontalClasses,
587
578
  staticClasses84 as scrollToVerticalClasses,
@@ -632,24 +623,23 @@ export {
632
623
  useDefaultProps,
633
624
  useEnhancedEffect,
634
625
  useForkRef,
635
- default9 as useHvBulkActions,
636
- default2 as useHvData,
637
- default14 as useHvFilters,
638
- default13 as useHvGlobalFilter,
639
- default11 as useHvHeaderGroups,
640
- default7 as useHvPagination,
641
- default12 as useHvResizeColumns,
642
- default10 as useHvRowExpand,
643
- default8 as useHvRowSelection,
644
- default15 as useHvRowState,
626
+ useHvBulkActions,
627
+ useHvTable as useHvData,
628
+ useHvFilters,
629
+ useHvGlobalFilter,
630
+ useHvHeaderGroups,
631
+ useHvPagination,
632
+ useHvResizeColumns,
633
+ useHvRowExpand,
634
+ useHvRowSelection,
635
+ useHvRowState,
645
636
  useHvSnackbar,
646
- default5 as useHvSortBy,
647
- default3 as useHvTable,
648
- default6 as useHvTableSticky,
649
- default4 as useHvTableStyles,
637
+ useHvSortBy,
638
+ useHvTable2 as useHvTable,
639
+ useHvTableSticky,
640
+ useHvTableStyles,
650
641
  useHvTreeItem,
651
642
  useImageLoaded,
652
- useInstance,
653
643
  useIsMounted,
654
644
  useLabels,
655
645
  useQueryBuilderContext,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -23,7 +23,11 @@ const isKey = (event, keyCode) => {
23
23
  const isOneOfKeys = (event, keys) => {
24
24
  return keys.some((key) => isKey(event, key));
25
25
  };
26
+ function isDeleteKey(event) {
27
+ return isOneOfKeys(event, ["Backspace", "Delete"]);
28
+ }
26
29
  export {
30
+ isDeleteKey,
27
31
  isKey,
28
32
  isOneOfKeys
29
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"keyboardUtils.js","sources":["../../../src/utils/keyboardUtils.ts"],"sourcesContent":["/** Map of keys to key `code` @see https://mdn.io/event/code */\nconst keyboardCodes = {\n Backspace: \"Backspace\",\n Tab: \"Tab\",\n Enter: \"Enter\",\n Shift: \"ShiftLeft\",\n Ctrl: \"ControlLeft\",\n Alt: \"AltLeft\",\n Delete: \"Delete\",\n Esc: \"Escape\",\n ArrowLeft: \"ArrowLeft\",\n ArrowUp: \"ArrowUp\",\n ArrowRight: \"ArrowRight\",\n ArrowDown: \"ArrowDown\",\n Space: \"Space\",\n PageUp: \"PageUp\",\n PageDown: \"PageDown\",\n Home: \"Home\",\n End: \"End\",\n} as const;\n\ntype Key = keyof typeof keyboardCodes;\n\n/** Check whether a keyboard `event` is pressing the `keyCode` key. */\nexport const isKey = (event: any, keyCode: Key) => {\n return event?.code === keyCode || event?.code === keyboardCodes[keyCode];\n};\n\nexport const isOneOfKeys = (event: any, keys: Key[]) => {\n return keys.some((key) => isKey(event, key));\n};\n"],"names":[],"mappings":"AACA,MAAM,gBAAgB;AAAA,EACpB,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,KAAK;AACP;AAKa,MAAA,QAAQ,CAAC,OAAY,YAAiB;AACjD,SAAO,OAAO,SAAS,WAAW,OAAO,SAAS,cAAc,OAAO;AACzE;AAEa,MAAA,cAAc,CAAC,OAAY,SAAgB;AACtD,SAAO,KAAK,KAAK,CAAC,QAAQ,MAAM,OAAO,GAAG,CAAC;AAC7C;"}
1
+ {"version":3,"file":"keyboardUtils.js","sources":["../../../src/utils/keyboardUtils.ts"],"sourcesContent":["/** Map of keys to key `code` @see https://mdn.io/event/code */\nconst keyboardCodes = {\n Backspace: \"Backspace\",\n Tab: \"Tab\",\n Enter: \"Enter\",\n Shift: \"ShiftLeft\",\n Ctrl: \"ControlLeft\",\n Alt: \"AltLeft\",\n Delete: \"Delete\",\n Esc: \"Escape\",\n ArrowLeft: \"ArrowLeft\",\n ArrowUp: \"ArrowUp\",\n ArrowRight: \"ArrowRight\",\n ArrowDown: \"ArrowDown\",\n Space: \"Space\",\n PageUp: \"PageUp\",\n PageDown: \"PageDown\",\n Home: \"Home\",\n End: \"End\",\n} as const;\n\ntype Key = keyof typeof keyboardCodes;\n\n/** Check whether a keyboard `event` is pressing the `keyCode` key. */\nexport const isKey = (event: any, keyCode: Key) => {\n return event?.code === keyCode || event?.code === keyboardCodes[keyCode];\n};\n\nexport const isOneOfKeys = (event: any, keys: Key[]) => {\n return keys.some((key) => isKey(event, key));\n};\n\nexport function isDeleteKey(event: React.KeyboardEvent) {\n return isOneOfKeys(event, [\"Backspace\", \"Delete\"]);\n}\n"],"names":[],"mappings":"AACA,MAAM,gBAAgB;AAAA,EACpB,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,KAAK;AACP;AAKa,MAAA,QAAQ,CAAC,OAAY,YAAiB;AACjD,SAAO,OAAO,SAAS,WAAW,OAAO,SAAS,cAAc,OAAO;AACzE;AAEa,MAAA,cAAc,CAAC,OAAY,SAAgB;AACtD,SAAO,KAAK,KAAK,CAAC,QAAQ,MAAM,OAAO,GAAG,CAAC;AAC7C;AAEO,SAAS,YAAY,OAA4B;AACtD,SAAO,YAAY,OAAO,CAAC,aAAa,QAAQ,CAAC;AACnD;"}