@hitachivantara/uikit-react-core 5.82.3 → 5.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/dist/cjs/BaseDropdown/BaseDropdown.cjs +1 -1
  2. package/dist/cjs/BaseInput/BaseInput.cjs +4 -7
  3. package/dist/cjs/ButtonBase/ButtonBase.styles.cjs +6 -5
  4. package/dist/cjs/Calendar/Calendar.cjs +2 -2
  5. package/dist/cjs/Calendar/CalendarHeader/CalendarHeader.cjs +12 -28
  6. package/dist/cjs/Calendar/SingleCalendar/SingleCalendar.cjs +2 -1
  7. package/dist/cjs/Calendar/utils.cjs +53 -21
  8. package/dist/cjs/Card/Card.cjs +1 -1
  9. package/dist/cjs/ColorPicker/ColorPicker.cjs +11 -9
  10. package/dist/cjs/ColorPicker/ColorPicker.styles.cjs +14 -7
  11. package/dist/cjs/ColorPicker/Fields/Fields.cjs +10 -7
  12. package/dist/cjs/ColorPicker/Picker/Picker.cjs +11 -3
  13. package/dist/cjs/ColorPicker/Picker/Picker.styles.cjs +6 -1
  14. package/dist/cjs/Controls/context/ControlsContext.cjs +1 -3
  15. package/dist/cjs/DatePicker/DatePicker.cjs +1 -2
  16. package/dist/cjs/DatePicker/utils.cjs +2 -2
  17. package/dist/cjs/DropDownMenu/DropDownMenu.cjs +1 -1
  18. package/dist/cjs/FormElement/Adornment/Adornment.cjs +1 -1
  19. package/dist/cjs/FormElement/Suggestions/Suggestions.cjs +1 -1
  20. package/dist/cjs/Grid/Grid.cjs +1 -1
  21. package/dist/cjs/Input/Input.cjs +9 -8
  22. package/dist/cjs/ListContainer/ListContext/ListContext.cjs +1 -3
  23. package/dist/cjs/Select/Option.cjs +1 -2
  24. package/dist/cjs/Select/Select.cjs +7 -4
  25. package/dist/cjs/Slider/Slider.cjs +2 -2
  26. package/dist/cjs/Snackbar/SnackbarContent/SnackbarContent.cjs +1 -1
  27. package/dist/cjs/SnackbarProvider/SnackbarProvider.cjs +1 -1
  28. package/dist/cjs/Table/TableBody/TableBody.cjs +10 -8
  29. package/dist/cjs/Table/TableCell/TableCell.cjs +2 -2
  30. package/dist/cjs/Table/TableContainer/TableContainer.cjs +9 -2
  31. package/dist/cjs/Table/TableHead/TableHead.cjs +10 -2
  32. package/dist/cjs/Table/TableHeader/TableHeader.cjs +2 -2
  33. package/dist/cjs/Table/TableRow/TableRow.cjs +2 -2
  34. package/dist/cjs/Table/TableRow/TableRow.styles.cjs +20 -5
  35. package/dist/cjs/Table/hooks/{useBulkActions.cjs → useHvBulkActions.cjs} +6 -7
  36. package/dist/cjs/Table/hooks/{useFilters.cjs → useHvFilters.cjs} +2 -2
  37. package/dist/cjs/Table/hooks/{useGlobalFilter.cjs → useHvGlobalFilter.cjs} +2 -2
  38. package/dist/cjs/Table/hooks/{useHeaderGroups.cjs → useHvHeaderGroups.cjs} +4 -4
  39. package/dist/cjs/Table/hooks/{usePagination.cjs → useHvPagination.cjs} +4 -4
  40. package/dist/cjs/Table/hooks/{useResizeColumns.cjs → useHvResizeColumns.cjs} +4 -4
  41. package/dist/cjs/Table/hooks/{useRowExpand.cjs → useHvRowExpand.cjs} +6 -5
  42. package/dist/cjs/Table/hooks/{useRowSelection.cjs → useHvRowSelection.cjs} +4 -8
  43. package/dist/cjs/Table/hooks/{useRowState.cjs → useHvRowState.cjs} +2 -2
  44. package/dist/cjs/Table/hooks/{useSortBy.cjs → useHvSortBy.cjs} +4 -4
  45. package/dist/cjs/Table/hooks/{useSticky.cjs → useHvSticky.cjs} +4 -6
  46. package/dist/cjs/Table/hooks/{useTable.cjs → useHvTable.cjs} +6 -4
  47. package/dist/cjs/Table/hooks/{useTableStyles.cjs → useHvTableStyles.cjs} +4 -5
  48. package/dist/cjs/Table/renderers/{DateColumnCell/DateColumnCell.cjs → DateColumnCell.cjs} +1 -1
  49. package/dist/cjs/Table/renderers/DefaultCell.cjs +21 -0
  50. package/dist/cjs/Table/renderers/{DropdownColumnCell/DropdownColumnCell.cjs → DropdownColumnCell.cjs} +1 -1
  51. package/dist/cjs/Table/renderers/{ProgressColumnCell/ProgressColumnCell.cjs → ProgressColumnCell.cjs} +20 -2
  52. package/dist/cjs/Table/renderers/{SwitchColumnCell/SwitchColumnCell.cjs → SwitchColumnCell.cjs} +13 -4
  53. package/dist/cjs/Table/renderers/renderers.cjs +21 -8
  54. package/dist/cjs/TableSection/TableSection.styles.cjs +6 -2
  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 +1 -4
  58. package/dist/cjs/TagsInput/TagsInput.styles.cjs +1 -4
  59. package/dist/cjs/TextArea/TextArea.cjs +4 -4
  60. package/dist/cjs/TimeAgo/TimeAgo.cjs +2 -1
  61. package/dist/cjs/TimePicker/TimePicker.cjs +2 -1
  62. package/dist/cjs/VerticalNavigation/TreeView/TreeViewItem.cjs +1 -1
  63. package/dist/cjs/hocs/withTooltip.cjs +40 -37
  64. package/dist/cjs/hooks/useIsMounted.cjs +2 -4
  65. package/dist/cjs/index.cjs +40 -50
  66. package/dist/cjs/utils/keyboardUtils.cjs +4 -0
  67. package/dist/esm/BaseDropdown/BaseDropdown.js +1 -1
  68. package/dist/esm/BaseDropdown/BaseDropdown.js.map +1 -1
  69. package/dist/esm/BaseInput/BaseInput.js +3 -6
  70. package/dist/esm/BaseInput/BaseInput.js.map +1 -1
  71. package/dist/esm/ButtonBase/ButtonBase.styles.js +6 -5
  72. package/dist/esm/ButtonBase/ButtonBase.styles.js.map +1 -1
  73. package/dist/esm/Calendar/Calendar.js +3 -3
  74. package/dist/esm/Calendar/Calendar.js.map +1 -1
  75. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js +13 -24
  76. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  77. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js +3 -2
  78. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
  79. package/dist/esm/Calendar/utils.js +54 -20
  80. package/dist/esm/Calendar/utils.js.map +1 -1
  81. package/dist/esm/Card/Card.js +1 -1
  82. package/dist/esm/Card/Card.js.map +1 -1
  83. package/dist/esm/ColorPicker/ColorPicker.js +12 -10
  84. package/dist/esm/ColorPicker/ColorPicker.js.map +1 -1
  85. package/dist/esm/ColorPicker/ColorPicker.styles.js +14 -7
  86. package/dist/esm/ColorPicker/ColorPicker.styles.js.map +1 -1
  87. package/dist/esm/ColorPicker/Fields/Fields.js +10 -7
  88. package/dist/esm/ColorPicker/Fields/Fields.js.map +1 -1
  89. package/dist/esm/ColorPicker/Picker/Picker.js +11 -3
  90. package/dist/esm/ColorPicker/Picker/Picker.js.map +1 -1
  91. package/dist/esm/ColorPicker/Picker/Picker.styles.js +6 -1
  92. package/dist/esm/ColorPicker/Picker/Picker.styles.js.map +1 -1
  93. package/dist/esm/Controls/Controls.js.map +1 -1
  94. package/dist/esm/Controls/context/ControlsContext.js +2 -2
  95. package/dist/esm/Controls/context/ControlsContext.js.map +1 -1
  96. package/dist/esm/DatePicker/DatePicker.js +2 -3
  97. package/dist/esm/DatePicker/DatePicker.js.map +1 -1
  98. package/dist/esm/DatePicker/utils.js +2 -2
  99. package/dist/esm/DatePicker/utils.js.map +1 -1
  100. package/dist/esm/Dialog/Dialog.js.map +1 -1
  101. package/dist/esm/DropDownMenu/DropDownMenu.js +1 -1
  102. package/dist/esm/DropDownMenu/DropDownMenu.js.map +1 -1
  103. package/dist/esm/EmptyState/EmptyState.js.map +1 -1
  104. package/dist/esm/FormElement/Adornment/Adornment.js +1 -1
  105. package/dist/esm/FormElement/Adornment/Adornment.js.map +1 -1
  106. package/dist/esm/FormElement/Suggestions/Suggestions.js +1 -1
  107. package/dist/esm/FormElement/Suggestions/Suggestions.js.map +1 -1
  108. package/dist/esm/GlobalActions/GlobalActions.js.map +1 -1
  109. package/dist/esm/Grid/Grid.js +1 -1
  110. package/dist/esm/Grid/Grid.js.map +1 -1
  111. package/dist/esm/InlineEditor/InlineEditor.js.map +1 -1
  112. package/dist/esm/Input/Input.js +10 -9
  113. package/dist/esm/Input/Input.js.map +1 -1
  114. package/dist/esm/List/List.js.map +1 -1
  115. package/dist/esm/ListContainer/ListContext/ListContext.js +2 -2
  116. package/dist/esm/ListContainer/ListContext/ListContext.js.map +1 -1
  117. package/dist/esm/Pagination/Pagination.js.map +1 -1
  118. package/dist/esm/Select/Option.js +1 -2
  119. package/dist/esm/Select/Option.js.map +1 -1
  120. package/dist/esm/Select/Select.js +7 -2
  121. package/dist/esm/Select/Select.js.map +1 -1
  122. package/dist/esm/Slider/Slider.js +2 -2
  123. package/dist/esm/Slider/Slider.js.map +1 -1
  124. package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.js +1 -1
  125. package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.js.map +1 -1
  126. package/dist/esm/SnackbarProvider/SnackbarProvider.js +1 -1
  127. package/dist/esm/SnackbarProvider/SnackbarProvider.js.map +1 -1
  128. package/dist/esm/Table/TableBody/TableBody.js +10 -8
  129. package/dist/esm/Table/TableBody/TableBody.js.map +1 -1
  130. package/dist/esm/Table/TableCell/TableCell.js +2 -2
  131. package/dist/esm/Table/TableCell/TableCell.js.map +1 -1
  132. package/dist/esm/Table/TableContainer/TableContainer.js +9 -2
  133. package/dist/esm/Table/TableContainer/TableContainer.js.map +1 -1
  134. package/dist/esm/Table/TableHead/TableHead.js +10 -2
  135. package/dist/esm/Table/TableHead/TableHead.js.map +1 -1
  136. package/dist/esm/Table/TableHeader/TableHeader.js +2 -2
  137. package/dist/esm/Table/TableHeader/TableHeader.js.map +1 -1
  138. package/dist/esm/Table/TableRow/TableRow.js +2 -2
  139. package/dist/esm/Table/TableRow/TableRow.js.map +1 -1
  140. package/dist/esm/Table/TableRow/TableRow.styles.js +16 -1
  141. package/dist/esm/Table/TableRow/TableRow.styles.js.map +1 -1
  142. package/dist/esm/Table/hooks/{useBulkActions.js → useHvBulkActions.js} +5 -6
  143. package/dist/esm/Table/hooks/useHvBulkActions.js.map +1 -0
  144. package/dist/esm/Table/hooks/{useFilters.js → useHvFilters.js} +1 -1
  145. package/dist/esm/Table/hooks/useHvFilters.js.map +1 -0
  146. package/dist/esm/Table/hooks/{useGlobalFilter.js → useHvGlobalFilter.js} +1 -1
  147. package/dist/esm/Table/hooks/useHvGlobalFilter.js.map +1 -0
  148. package/dist/esm/Table/hooks/{useHeaderGroups.js → useHvHeaderGroups.js} +3 -3
  149. package/dist/esm/Table/hooks/useHvHeaderGroups.js.map +1 -0
  150. package/dist/esm/Table/hooks/{usePagination.js → useHvPagination.js} +4 -4
  151. package/dist/esm/Table/hooks/useHvPagination.js.map +1 -0
  152. package/dist/esm/Table/hooks/{useResizeColumns.js → useHvResizeColumns.js} +3 -3
  153. package/dist/esm/Table/hooks/useHvResizeColumns.js.map +1 -0
  154. package/dist/esm/Table/hooks/{useRowExpand.js → useHvRowExpand.js} +5 -4
  155. package/dist/esm/Table/hooks/useHvRowExpand.js.map +1 -0
  156. package/dist/esm/Table/hooks/{useRowSelection.js → useHvRowSelection.js} +3 -7
  157. package/dist/esm/Table/hooks/useHvRowSelection.js.map +1 -0
  158. package/dist/esm/Table/hooks/{useRowState.js → useHvRowState.js} +1 -1
  159. package/dist/esm/Table/hooks/useHvRowState.js.map +1 -0
  160. package/dist/esm/Table/hooks/{useSortBy.js → useHvSortBy.js} +3 -3
  161. package/dist/esm/Table/hooks/useHvSortBy.js.map +1 -0
  162. package/dist/esm/Table/hooks/{useSticky.js → useHvSticky.js} +3 -5
  163. package/dist/esm/Table/hooks/useHvSticky.js.map +1 -0
  164. package/dist/esm/Table/hooks/{useTable.js → useHvTable.js} +5 -3
  165. package/dist/esm/Table/hooks/useHvTable.js.map +1 -0
  166. package/dist/esm/Table/hooks/{useTableStyles.js → useHvTableStyles.js} +3 -4
  167. package/dist/esm/Table/hooks/useHvTableStyles.js.map +1 -0
  168. package/dist/esm/Table/renderers/{DateColumnCell/DateColumnCell.js → DateColumnCell.js} +1 -1
  169. package/dist/esm/Table/renderers/DateColumnCell.js.map +1 -0
  170. package/dist/esm/Table/renderers/DefaultCell.js +21 -0
  171. package/dist/esm/Table/renderers/DefaultCell.js.map +1 -0
  172. package/dist/esm/Table/renderers/{DropdownColumnCell/DropdownColumnCell.js → DropdownColumnCell.js} +1 -1
  173. package/dist/esm/Table/renderers/DropdownColumnCell.js.map +1 -0
  174. package/dist/esm/Table/renderers/{ProgressColumnCell/ProgressColumnCell.js → ProgressColumnCell.js} +19 -1
  175. package/dist/esm/Table/renderers/ProgressColumnCell.js.map +1 -0
  176. package/dist/esm/Table/renderers/{SwitchColumnCell/SwitchColumnCell.js → SwitchColumnCell.js} +12 -3
  177. package/dist/esm/Table/renderers/SwitchColumnCell.js.map +1 -0
  178. package/dist/esm/Table/renderers/renderers.js +18 -5
  179. package/dist/esm/Table/renderers/renderers.js.map +1 -1
  180. package/dist/esm/TableSection/TableSection.styles.js +6 -2
  181. package/dist/esm/TableSection/TableSection.styles.js.map +1 -1
  182. package/dist/esm/Tag/Tag.js +71 -51
  183. package/dist/esm/Tag/Tag.js.map +1 -1
  184. package/dist/esm/Tag/Tag.styles.js +50 -64
  185. package/dist/esm/Tag/Tag.styles.js.map +1 -1
  186. package/dist/esm/TagsInput/TagsInput.js +1 -4
  187. package/dist/esm/TagsInput/TagsInput.js.map +1 -1
  188. package/dist/esm/TagsInput/TagsInput.styles.js +1 -4
  189. package/dist/esm/TagsInput/TagsInput.styles.js.map +1 -1
  190. package/dist/esm/TextArea/TextArea.js +4 -4
  191. package/dist/esm/TextArea/TextArea.js.map +1 -1
  192. package/dist/esm/TimeAgo/TimeAgo.js +2 -1
  193. package/dist/esm/TimeAgo/TimeAgo.js.map +1 -1
  194. package/dist/esm/TimePicker/TimePicker.js +2 -1
  195. package/dist/esm/TimePicker/TimePicker.js.map +1 -1
  196. package/dist/esm/TreeView/internals/utils/EventManager.js.map +1 -1
  197. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js +1 -1
  198. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  199. package/dist/esm/hocs/withTooltip.js +40 -37
  200. package/dist/esm/hocs/withTooltip.js.map +1 -1
  201. package/dist/esm/hooks/useIsMounted.js +3 -3
  202. package/dist/esm/hooks/useIsMounted.js.map +1 -1
  203. package/dist/esm/index.js +34 -44
  204. package/dist/esm/index.js.map +1 -1
  205. package/dist/esm/utils/deepMerge.js.map +1 -1
  206. package/dist/esm/utils/keyboardUtils.js +4 -0
  207. package/dist/esm/utils/keyboardUtils.js.map +1 -1
  208. package/dist/types/index.d.ts +397 -425
  209. package/package.json +6 -6
  210. package/dist/cjs/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.cjs +0 -26
  211. package/dist/cjs/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.cjs +0 -21
  212. package/dist/cjs/Table/utils/fallbacks.cjs +0 -16
  213. package/dist/cjs/Table/utils/utils.cjs +0 -19
  214. package/dist/esm/Table/hooks/useBulkActions.js.map +0 -1
  215. package/dist/esm/Table/hooks/useFilters.js.map +0 -1
  216. package/dist/esm/Table/hooks/useGlobalFilter.js.map +0 -1
  217. package/dist/esm/Table/hooks/useHeaderGroups.js.map +0 -1
  218. package/dist/esm/Table/hooks/usePagination.js.map +0 -1
  219. package/dist/esm/Table/hooks/useResizeColumns.js.map +0 -1
  220. package/dist/esm/Table/hooks/useRowExpand.js.map +0 -1
  221. package/dist/esm/Table/hooks/useRowSelection.js.map +0 -1
  222. package/dist/esm/Table/hooks/useRowState.js.map +0 -1
  223. package/dist/esm/Table/hooks/useSortBy.js.map +0 -1
  224. package/dist/esm/Table/hooks/useSticky.js.map +0 -1
  225. package/dist/esm/Table/hooks/useTable.js.map +0 -1
  226. package/dist/esm/Table/hooks/useTableStyles.js.map +0 -1
  227. package/dist/esm/Table/renderers/DateColumnCell/DateColumnCell.js.map +0 -1
  228. package/dist/esm/Table/renderers/DropdownColumnCell/DropdownColumnCell.js.map +0 -1
  229. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.js.map +0 -1
  230. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js +0 -26
  231. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js.map +0 -1
  232. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.js.map +0 -1
  233. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.js +0 -21
  234. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.js.map +0 -1
  235. package/dist/esm/Table/utils/fallbacks.js +0 -16
  236. package/dist/esm/Table/utils/fallbacks.js.map +0 -1
  237. package/dist/esm/Table/utils/utils.js +0 -19
  238. package/dist/esm/Table/utils/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHvSticky.js","sources":["../../../../src/Table/hooks/useHvSticky.ts"],"sourcesContent":["import {\n Hooks,\n makePropGetter,\n PropGetter,\n TableCommonProps,\n useGetLatest,\n} from \"react-table\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\n// #region ##### TYPES #####\n\nexport interface UseHvTableStickyTableHeadProps extends TableCommonProps {\n stickyHeader?: boolean;\n}\n\nexport type HvTableHeadPropGetter<D extends object> = PropGetter<\n D,\n UseHvTableStickyTableHeadProps\n>;\n\nexport type UseHvTableStickyTableOptions = {\n stickyHeader?: boolean;\n stickyColumns?: boolean;\n};\n\nexport interface UseHvTableStickyHooks<D extends object> {\n getTableHeadProps: Array<HvTableHeadPropGetter<D>>;\n}\n\nexport interface UseHvTableStickyTableInstance<D extends object> {\n getTableHeadProps: (\n propGetter?: HvTableHeadPropGetter<D>,\n ) => UseHvTableStickyTableHeadProps;\n\n totalRight?: number;\n hasStickyColumns?: boolean;\n}\n\n// props target: <table>\nexport interface UseHvTableStickyTableProps {\n stickyHeader?: boolean;\n stickyColumns?: boolean;\n}\n\n// props target: <table><thead><tr><th>\nexport interface UseHvTableStickyColumnProps {\n stickyColumn?: boolean;\n stickyColumnMostLeft?: boolean;\n stickyColumnLeastRight?: boolean;\n}\n\n// props target: <table><tbody><tr><td>\nexport interface UseHvTableStickyCellProps {\n stickyColumn?: boolean;\n stickyColumnMostLeft?: boolean;\n stickyColumnLeastRight?: boolean;\n}\n\nexport type UseHvTableSticky = (<D extends object = Record<string, unknown>>(\n hooks: Hooks<D>,\n) => void) & { pluginName: string };\n\n// #endregion ##### TYPES #####\n\nconst isSticky = (value: any) => /left|right/i.test(value);\n\nconst getStickyValue = ({ sticky, parent }: any) => {\n if (isSticky(sticky)) {\n return sticky;\n }\n\n if (parent != null) {\n // check if parent is sticky\n sticky = getStickyValue(parent);\n if (isSticky(sticky)) {\n return sticky;\n }\n\n const { columns } = parent;\n // check if any column in the same group is sticky\n if (columns?.length > 0) {\n sticky = columns?.find((col: any) => col.sticky != null)?.sticky;\n if (isSticky(sticky)) {\n return sticky;\n }\n }\n }\n\n return undefined;\n};\n\nconst updateColumnAndParent = (column: any, props: any) => {\n Object.assign(column, props);\n\n if (column.parent != null) {\n updateColumnAndParent(column.parent, props);\n }\n};\n\nconst visibleColumnsHook = (columns: any, { instance }: any) => {\n const toTheLeft: any[] = [];\n const toTheRight: any[] = [];\n const others: any[] = [];\n\n columns.forEach((column: any) => {\n const sticky = getStickyValue(column)?.toLowerCase();\n\n updateColumnAndParent(column, { sticky });\n\n if (sticky === \"left\") {\n toTheLeft.push(column);\n } else if (sticky === \"right\") {\n toTheRight.push(column);\n } else {\n others.push(column);\n }\n });\n\n if (others.length > 0) {\n const [firstNotSticky] = others;\n updateColumnAndParent(firstNotSticky, { isFirstNotSticky: true });\n\n const lastNotSticky = others[others.length - 1];\n updateColumnAndParent(lastNotSticky, { isLastNotSticky: true });\n }\n\n const hasLeftSticky = toTheLeft.length > 0;\n if (hasLeftSticky) {\n const lastLeftSticky = toTheLeft[toTheLeft.length - 1];\n\n updateColumnAndParent(lastLeftSticky, { isLastLeftSticky: true });\n }\n\n const hasRightSticky = toTheRight.length > 0;\n if (hasRightSticky) {\n const [firstRightSticky] = toTheRight;\n\n updateColumnAndParent(firstRightSticky, { isFirstRightSticky: true });\n }\n\n instance.hasStickyColumns = hasLeftSticky || hasRightSticky;\n\n return [...toTheLeft, ...others, ...toTheRight];\n};\n\nconst calculateHeaderWidthsToTheRight = (headers: any, right = 0) => {\n if (!headers?.length) {\n return;\n }\n\n for (let i = headers.length - 1; i !== -1; i -= 1) {\n const header = headers[i];\n\n header.totalRight = right;\n\n const { headers: subHeaders } = header;\n if (subHeaders?.length > 0) {\n calculateHeaderWidthsToTheRight(subHeaders, right);\n }\n\n if (header.isVisible) {\n right += header.totalWidth;\n }\n }\n};\n\nconst useInstanceHook = (instance: any) => {\n calculateHeaderWidthsToTheRight(instance.headers);\n\n const getInstance = useGetLatest(instance);\n instance.getTableHeadProps = makePropGetter(\n instance.getHooks().getTableHeadProps,\n {\n instance: getInstance(),\n },\n );\n};\n\nconst getRowProps = () => ({\n style: {\n display: \"flex\",\n flex: \"1 0 auto\",\n },\n});\n\nconst getCellProps = (header: any, isHeaderCell: boolean) => {\n const props: UseHvTableStickyCellProps & { style: React.CSSProperties } = {\n style: {\n display: \"inline-flex\",\n flex: `${header.totalWidth} ${header.totalMinWidth} auto`,\n alignItems: isHeaderCell ? \"start\" : \"center\",\n justifyContent: header.align,\n\n width: `${header.totalWidth}px`,\n minWidth: `${header.totalMinWidth}px`,\n ...(isHeaderCell && { backgroundColor: theme.colors.atmo2 }),\n },\n };\n\n if (header.sticky != null) {\n props.stickyColumn = true;\n\n const margin =\n header.sticky === \"left\" ? header.totalLeft : header.totalRight;\n\n // @ts-ignore\n props.style[header.sticky] = `${margin}px`;\n\n if (header.isLastLeftSticky) {\n props.stickyColumnMostLeft = true;\n }\n\n if (header.isFirstRightSticky) {\n props.stickyColumnLeastRight = true;\n }\n } else {\n if (header.isFirstNotSticky) {\n props.style.borderLeft = 0;\n }\n\n if (header.isLastNotSticky) {\n props.style.borderRight = 0;\n }\n }\n\n return props;\n};\n\n/*\n * STICKY POSITION MANAGEMENT\n * <thead>: sticky if stickyHeader: true\n * <tr>: never sticky\n * <th>: sticky only if that particular column is sticky (left or right)\n */\n\n/*\n * We need to hide the last non sticky column right border, to avoid issues with double borders.\n *\n * This could be done with css, using the `:has()` selector:\n * - \".not-sticky:has(+ .first-right-sticky)\": { border-right: 0 }\n *\n * Until the `:has()` selector is supported by modern browsers,\n * that at the moment is just a proposal https://developer.mozilla.org/en-US/docs/Web/CSS/:has,\n * we need to override the last not sticky column \"borderRight\" here.\n */\n\n// props target: <table>\nconst getTablePropsHook = (props: any, { instance }: any) => {\n const nextProps: UseHvTableStickyTableProps = {\n stickyHeader: instance.stickyHeader,\n stickyColumns: instance.hasStickyColumns,\n };\n\n return [props, nextProps];\n};\n\n// props target: <table><thead>\nconst getTableHeadPropsHook = (props: any, { instance }: any) => {\n const nextProps = {\n stickyHeader: instance.stickyHeader,\n };\n\n return [props, nextProps];\n};\n\n// props target: <table><thead><tr>\nconst getHeaderGroupPropsHook = (props: any, { instance }: any) => {\n const nextProps = instance.hasStickyColumns ? getRowProps() : {};\n\n return [props, nextProps];\n};\n\n// props target: <table><thead><tr><th>\nconst getHeaderPropsHook = (props: any, { instance, column }: any) => {\n const nextProps = instance.hasStickyColumns ? getCellProps(column, true) : {};\n\n return [props, nextProps];\n};\n\n// props target: <table><tbody><tr>\nconst getRowPropsHook = (props: any, { instance }: any) => {\n const nextProps = instance.hasStickyColumns ? getRowProps() : {};\n\n return [props, nextProps];\n};\n\n// props target: <table><tbody><tr><td>\nconst getCellPropsHook = (props: any, { instance, cell }: any) => {\n const nextProps: UseHvTableStickyCellProps = instance.hasStickyColumns\n ? getCellProps(cell.column, false)\n : {};\n\n return [props, nextProps];\n};\n\nexport const useHvTableSticky: UseHvTableSticky = (hooks) => {\n hooks.visibleColumns.push(visibleColumnsHook);\n hooks.useInstance.push(useInstanceHook);\n\n // props target: <table>\n hooks.getTableProps.push(getTablePropsHook);\n // props target: <table><thead>\n hooks.getTableHeadProps = [getTableHeadPropsHook];\n // props target: <table><thead><tr>\n hooks.getHeaderGroupProps.push(getHeaderGroupPropsHook);\n // props target: <table><thead><tr><th>\n hooks.getHeaderProps.push(getHeaderPropsHook);\n // props target: <table><tbody><tr>\n hooks.getRowProps.push(getRowPropsHook);\n // props target: <table><tbody><tr><td>\n hooks.getCellProps.push(getCellPropsHook);\n};\n\nuseHvTableSticky.pluginName = \"useHvTableSticky\";\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { useMemo } from "react";
2
2
  import { useTable, usePagination, useExpanded, useSortBy, useResizeColumns } from "react-table";
3
- import useTableStyles from "./useTableStyles.js";
3
+ import { DefaultCell } from "../renderers/DefaultCell.js";
4
+ import { useHvTableStyles } from "./useHvTableStyles.js";
4
5
  const toTitleCase = (str) => {
5
6
  return str.replace(/([^A-Z])([A-Z])/g, "$1 $2").replace(/[_-]+/g, " ").toLowerCase().replace(/(^\w|\b\w)/g, (m) => m.toUpperCase()).replace(/\s+/g, " ").trim();
6
7
  };
@@ -61,12 +62,13 @@ function useHvTable(options, ...plugins) {
61
62
  (plugin) => plugin.pluginName === "useHvTableStyles"
62
63
  );
63
64
  if (indexOfHvTableStylesPlugin === -1) {
64
- plugins.push(useTableStyles);
65
+ plugins.push(useHvTableStyles);
65
66
  }
66
67
  return useTable(
67
68
  {
68
69
  data,
69
70
  columns,
71
+ defaultColumn: { Cell: DefaultCell },
70
72
  ...others
71
73
  },
72
74
  useHvTableSetup,
@@ -74,5 +76,5 @@ function useHvTable(options, ...plugins) {
74
76
  );
75
77
  }
76
78
  export {
77
- useHvTable as default
79
+ useHvTable
78
80
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHvTable.js","sources":["../../../../src/Table/hooks/useHvTable.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport type {\n ActionType,\n Cell,\n ColumnInstance,\n ColumnInterface,\n Hooks,\n PluginHook,\n ReducerTableState,\n Renderer,\n Row,\n TableCellProps,\n TableFooterProps,\n TableHeaderProps,\n TableInstance,\n TableOptions,\n TableProps,\n TableRowProps,\n TableState,\n UseColumnOrderInstanceProps,\n UseColumnOrderState,\n UseExpandedHooks,\n UseExpandedInstanceProps,\n UseExpandedOptions,\n UseExpandedState,\n UseFiltersColumnOptions,\n UseFiltersColumnProps,\n UseFiltersInstanceProps,\n UseFiltersOptions,\n UseFiltersState,\n UseGlobalFiltersColumnOptions,\n UseGlobalFiltersInstanceProps,\n UseGlobalFiltersOptions,\n UseGlobalFiltersState,\n UseGroupByCellProps,\n UseGroupByColumnOptions,\n UseGroupByColumnProps,\n UseGroupByHooks,\n UseGroupByInstanceProps,\n UseGroupByOptions,\n UseGroupByRowProps,\n UseGroupByState,\n UsePaginationInstanceProps,\n UsePaginationOptions,\n UsePaginationState,\n UseResizeColumnsColumnOptions,\n UseResizeColumnsColumnProps,\n UseResizeColumnsOptions,\n UseResizeColumnsState,\n UseRowStateInstanceProps,\n UseRowStateOptions,\n UseRowStateRowProps,\n UseRowStateState,\n UseSortByColumnOptions,\n UseSortByColumnProps,\n UseSortByHooks,\n UseSortByInstanceProps,\n UseSortByOptions,\n UseSortByState,\n UseTableHeaderGroupProps,\n} from \"react-table\";\nimport {\n useExpanded,\n usePagination,\n useResizeColumns,\n useSortBy,\n useTable,\n} from \"react-table\";\n\nimport { DefaultCell } from \"../renderers/DefaultCell\";\nimport type { HvTableProps } from \"../Table\";\nimport type { HvTableCellProps } from \"../TableCell\";\nimport type { HvTableHeaderProps } from \"../TableHeader\";\nimport type { HvTableRowProps } from \"../TableRow\";\nimport type {\n UseHvBulkActionsHooks,\n UseHvBulkActionsTableInstanceProps,\n UseHvBulkActionsTableOptions,\n} from \"./useHvBulkActions\";\nimport type {\n UseHvHeaderGroupsCellProps,\n UseHvHeaderGroupsColumnProps,\n UseHvHeaderGroupsInstance,\n} from \"./useHvHeaderGroups\";\nimport type {\n UseHvPaginationHooks,\n UseHvPaginationTableInstance,\n} from \"./useHvPagination\";\nimport type {\n UseHvResizeColumnProps,\n UseHvResizeTableCellProps,\n} from \"./useHvResizeColumns\";\nimport type {\n UseHvRowExpandRowInstance,\n UseHvRowExpandTableOptions,\n UseHvRowExpandTableRowProps,\n} from \"./useHvRowExpand\";\nimport type {\n UseHvRowSelectionHooks,\n UseHvRowSelectionRowInstance,\n UseHvRowSelectionState,\n UseHvRowSelectionTableInstance,\n UseHvRowSelectionTableOptions,\n UseHvRowSelectionTableRowProps,\n} from \"./useHvRowSelection\";\nimport type {\n UseHvSortByColumnProps,\n UseHvSortByTableCellProps,\n} from \"./useHvSortBy\";\nimport type {\n UseHvTableStickyCellProps,\n UseHvTableStickyColumnProps,\n UseHvTableStickyHooks,\n UseHvTableStickyTableInstance,\n UseHvTableStickyTableOptions,\n UseHvTableStickyTableProps,\n} from \"./useHvSticky\";\nimport type {\n UseHvTableStylesColumnOptions,\n UseHvTableStylesTableCellProps,\n UseHvTableStylesTableOptions,\n UseHvTableStylesTableRowProps,\n} from \"./useHvTableStyles\";\nimport { useHvTableStyles } from \"./useHvTableStyles\";\n\n// #region ##### TYPES #####\n\ntype Accessor<D extends object> = (\n originalRow: D,\n index: number,\n sub: {\n subRows: D[];\n depth: number;\n data: D[];\n },\n) => CellValue;\n\ntype ValueOf<T> = T[keyof T];\ntype StringKey<D> = Extract<keyof D, string>;\ntype IdType<D> = StringKey<D> | string;\ntype CellValue<V = any> = V;\n\ntype HvHeaderProps<D extends object = Record<string, unknown>> =\n HvTableInstance<D> & {\n column: HvColumnInstance<D>;\n };\n\ninterface HvMetaBase<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> {\n instance: HvTableInstance<D, H>;\n userProps: any;\n}\n\nexport type HvMeta<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n Extension = never,\n M = HvMetaBase<D, H>,\n> = [Extension] extends [never] ? M : M & Extension;\n\nexport type HvPropGetter<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n Props extends object = Record<string, unknown>,\n T extends object = never,\n P = Partial<Props>,\n> = ((props: P, meta: HvMeta<D, H, T>) => P | P[]) | P | P[];\n\nexport type HvTableHeaderRenderer<D extends object = Record<string, unknown>> =\n Renderer<HvHeaderProps<D>>;\n\ntype HvFooterProps<D extends object = Record<string, unknown>> =\n HvTableInstance<D> & {\n column: HvColumnInstance<D>;\n };\n\ninterface HvHeaderGroup<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends HvColumnInstance<D, H>,\n Omit<UseTableHeaderGroupProps<D>, \"headers\"> {\n headers: Array<HvHeaderGroup<D, H>>;\n}\n\ntype HvRowPropGetter<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvPropGetter<D, H, HvUseTableRowProps, { row: HvRowInstance<D, H> }>;\n\ntype HvTablePropGetter<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvPropGetter<D, H, HvUseTableProps>;\n\ntype HvCellPropGetter<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvPropGetter<D, H, HvUseTableCellProps, { cell: HvCellInstance<D, H> }>;\n\ntype HvHeaderPropGetter<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvPropGetter<D, H, HvUseTableHeaderProps, { column: HvHeaderGroup<D, H> }>;\n\ntype HvFooterPropGetter<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvPropGetter<D, H, HvUseTableFooterProps, { column: HvHeaderGroup<D, H> }>;\n\nexport interface HvCellProps<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n V = any,\n> extends HvTableInstance<D, H> {\n column: HvColumnInstance<D, H>;\n row: HvRowInstance<D, H>;\n cell: HvCellInstance<D, H, V>;\n value: CellValue<V>;\n}\n\nexport type HvTableDefinitionConfig<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvTableOptions<D, H>;\n\ninterface HvColumnInterfaceBasedOnValue<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n V = any,\n> {\n Cell?: Renderer<HvCellProps<D, H, V>>;\n}\n\ninterface HvColumnGroupInterface<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> {\n columns: Array<HvTableColumnConfig<D, H>>;\n}\n\ntype HvColumnGroup<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvTableColumnOptions<D, H> &\n HvColumnGroupInterface<D, H> &\n (\n | { Header: H }\n | ({ id: IdType<D> } & {\n Header: H;\n })\n ) & { accessor?: Accessor<D> };\n\ntype HvColumnWithStrictAccessor<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvTableColumnOptions<D, H> &\n ValueOf<{\n [K in keyof D]: {\n accessor: K;\n } & HvColumnInterfaceBasedOnValue<D, H, D[K]>;\n }>;\n\ntype HvColumnWithLooseAccessor<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> = HvTableColumnOptions<D, H> &\n HvColumnInterfaceBasedOnValue<D, H> &\n (\n | { Header: H }\n | { id: IdType<D> }\n | { accessor: keyof D extends never ? IdType<D> : never }\n ) & {\n accessor?: keyof D extends never ? IdType<D> | Accessor<D> : Accessor<D>;\n };\n\nexport type HvTableColumnConfig<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> =\n | HvColumnGroup<D, H>\n | HvColumnWithLooseAccessor<D, H>\n | HvColumnWithStrictAccessor<D, H>;\n\n// #region HOOKS\nexport interface HvHooks<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends Omit<Hooks<D>, \"useOptions\">,\n Partial<UseExpandedHooks<D>>,\n Partial<UseGroupByHooks<D>>,\n Partial<UseSortByHooks<D>>,\n Partial<UseHvRowSelectionHooks<D>>,\n Partial<UseHvTableStickyHooks<D>>,\n Partial<UseHvPaginationHooks<D>>,\n Partial<UseHvBulkActionsHooks<D>> {\n useOptions: Array<\n (\n options: HvTableOptions<D, H>,\n args: HvTableOptions<D, H>,\n ) => HvTableOptions<D, H>\n >;\n stateReducers: Array<\n (\n newState: HvTableState<D>,\n action: ActionType,\n previousState?: HvTableState<D>,\n instance?: HvTableState<D>,\n ) => ReducerTableState<D> | undefined\n >;\n columns: Array<\n (\n columns: Array<HvTableColumnConfig<D, H>>,\n meta: HvMeta<D, H>,\n ) => Array<HvTableColumnConfig<D, H>>\n >;\n allColumns: Array<\n (\n allColumns: Array<HvColumnInstance<D, H>>,\n meta: HvMeta<D, H>,\n ) => Array<HvTableColumnConfig<D, H>>\n >;\n visibleColumns: Array<\n (\n allColumns: Array<HvColumnInstance<D, H>>,\n meta: HvMeta<D, H>,\n ) => Array<HvTableColumnConfig<D, H>>\n >;\n headerGroups: Array<\n (\n allColumns: Array<HvHeaderGroup<D, H>>,\n meta: HvMeta<D, H>,\n ) => Array<HvHeaderGroup<D, H>>\n >;\n useInstanceBeforeDimensions: Array<(instance: HvTableInstance<D, H>) => void>;\n useInstance: Array<(instance: HvTableInstance<D, H>) => void>;\n useControlledState: Array<\n (state: HvTableState<D>, meta: HvMeta<D, H>) => HvTableState<D>\n >;\n getTableProps: Array<HvTablePropGetter<D, H>>;\n getHeaderProps: Array<HvHeaderPropGetter<D>>;\n getFooterProps: Array<HvFooterPropGetter<D>>;\n getRowProps: Array<HvRowPropGetter<D>>;\n getCellProps: Array<HvCellPropGetter<D>>;\n useFinalInstance: Array<(instance: HvTableInstance<D, H>) => void>;\n}\n// #endregion\n\n// #region STATE\nexport interface HvTableState<D extends object = Record<string, unknown>>\n extends TableState<D>,\n Partial<UseColumnOrderState<D>>,\n Partial<UseExpandedState<D>>,\n Partial<UseFiltersState<D>>,\n Partial<UseGlobalFiltersState<D>>,\n Partial<UseGroupByState<D>>,\n Partial<UsePaginationState<D>>,\n Partial<UseResizeColumnsState<D>>,\n Partial<UseSortByState<D>>,\n Partial<UseRowStateState<D>>,\n Partial<UseHvRowSelectionState<D>> {\n rowCount: number;\n}\n// #endregion\n\n// #region OPTIONS\nexport interface HvTableOptions<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends Omit<\n TableOptions<D>,\n | \"columns\"\n | \"data\"\n | \"defaultColumn\"\n | \"stateReducer\"\n | \"useControlledState\"\n | \"getRowId\"\n >,\n Partial<UseExpandedOptions<D>>,\n Partial<UseFiltersOptions<D>>,\n Partial<UseGlobalFiltersOptions<D>>,\n Partial<UseGroupByOptions<D>>,\n Partial<UsePaginationOptions<D>>,\n Partial<UseResizeColumnsOptions<D>>,\n Partial<UseSortByOptions<D>>,\n Partial<UseRowStateOptions<D>>,\n Partial<UseHvTableStylesTableOptions>,\n Partial<UseHvRowSelectionTableOptions>,\n Partial<UseHvTableStickyTableOptions>,\n Partial<UseHvBulkActionsTableOptions>,\n Partial<UseHvRowExpandTableOptions> {\n columns?: Array<HvTableColumnConfig<D, H>>;\n data?: D[];\n initialState?: Partial<HvTableState<D>>;\n labels?: Record<string, string>;\n defaultColumn?: Partial<HvTableColumnConfig<D, H>>;\n stateReducer?: (\n newState: HvTableState<D>,\n action: ActionType,\n previousState: HvTableState<D>,\n instance?: HvTableInstance<D, H>,\n ) => HvTableState<D>;\n useControlledState?: (\n state: HvTableState<D>,\n meta: HvMeta<D, H>,\n ) => HvTableState<D>;\n getRowId?: (\n originalRow: D,\n relativeIndex: number,\n parent?: HvRowInstance<D, H>,\n ) => string;\n}\n\nexport interface HvTableColumnOptions<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends Omit<ColumnInterface<D>, \"Header\" | \"Footer\">,\n Partial<UseFiltersColumnOptions<D>>,\n Partial<UseGroupByColumnOptions<D>>,\n Partial<UseResizeColumnsColumnOptions<D>>,\n Partial<UseSortByColumnOptions<D>>,\n Partial<UseGlobalFiltersColumnOptions<D>>,\n Partial<UseHvTableStylesColumnOptions> {\n Header?: H;\n Footer?: Renderer<HvFooterProps<D>>;\n originalId?: IdType<D>;\n}\n// #endregion\n\n// #region INSTANCE\nexport interface HvTableInstance<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends Omit<\n TableInstance<D>,\n | \"pageCount\"\n | \"data\"\n | \"columns\"\n | \"rows\"\n | \"allColumns\"\n | \"visibleColumns\"\n | \"headers\"\n | \"flatHeaders\"\n | \"rowsById\"\n | \"prepareRow\"\n | \"flatRows\"\n | \"headerGroups\"\n | \"footerGroups\"\n | \"defaultColumn\"\n | \"stateReducer\"\n | \"useControlledState\"\n | \"getRowId\"\n | \"getHooks\"\n | \"getTableProps\"\n >,\n Omit<HvTableOptions<D, H>, \"pageCount\" | \"columns\">,\n Partial<UseColumnOrderInstanceProps<D>>,\n Partial<Omit<UseExpandedInstanceProps<D>, \"rows\">>,\n Partial<Omit<UseFiltersInstanceProps<D>, \"rows\" | \"rowsById\" | \"flatRows\">>,\n Partial<\n Omit<UseGlobalFiltersInstanceProps<D>, \"rows\" | \"rowsById\" | \"flatRows\">\n >,\n Partial<Omit<UseGroupByInstanceProps<D>, \"rows\" | \"rowsById\" | \"flatRows\">>,\n Partial<Omit<UsePaginationInstanceProps<D>, \"page\">>,\n Partial<Omit<UseSortByInstanceProps<D>, \"rows\">>,\n Partial<UseRowStateInstanceProps<D>>,\n Partial<Omit<UseHvRowSelectionTableInstance<D>, \"selectedFlatRows\">>,\n Partial<UseHvTableStickyTableInstance<D>>,\n Partial<UseHvHeaderGroupsInstance>,\n Partial<UseHvPaginationTableInstance<D>>,\n Partial<UseHvBulkActionsTableInstanceProps<D>> {\n initialState: Partial<HvTableState<D>>;\n state: HvTableState<D>;\n columns: Array<HvColumnInstance<D, H>>;\n allColumns: Array<HvColumnInstance<D, H>>;\n visibleColumns: Array<HvColumnInstance<D, H>>;\n headers: Array<HvColumnInstance<D, H>>;\n flatHeaders: Array<HvColumnInstance<D, H>>;\n rows: Array<HvRowInstance<D, H>>;\n page: Array<HvRowInstance<D, H>>;\n rowsById: Record<string, HvRowInstance<D, H>>;\n flatRows: Array<HvRowInstance<D, H>>;\n getHooks: () => HvHooks<D>;\n getTableProps: (propGetter?: HvTablePropGetter<D, H>) => HvUseTableProps;\n prepareRow: (row: HvRowInstance<D, H>) => void;\n selectedFlatRows: Array<HvRowInstance<D, H>>;\n initialRows: Array<HvRowInstance<D, H>>;\n initialRowsById: Record<string, HvRowInstance<D, H>>;\n labels: Record<string, string>;\n headerGroups: Array<HvHeaderGroup<D, H>>;\n footerGroups: Array<HvHeaderGroup<D, H>>;\n}\n\nexport interface HvColumnInstance<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends Omit<\n ColumnInstance<D>,\n | \"Cell\"\n | \"columns\"\n | \"parent\"\n | \"placeholderOf\"\n | \"id\"\n | \"Header\"\n | \"getHeaderProps\"\n | \"getFooterProps\"\n | \"Footer\"\n >,\n HvTableColumnOptions<D, H>,\n Partial<UseFiltersColumnProps<D>>,\n Partial<UseGroupByColumnProps<D>>,\n Partial<UseResizeColumnsColumnProps<D>>,\n Partial<UseSortByColumnProps<D>> {\n Cell?: Renderer<HvCellProps<D, H>>;\n columns: Array<HvColumnInstance<D, H>>;\n parent: HvColumnInstance<D, H>;\n placeholderOf?: HvColumnInstance<D, H>;\n getHeaderProps: (\n propGetter?: HvHeaderPropGetter<D, H>,\n ) => HvUseTableHeaderProps;\n getFooterProps: (\n propGetter?: HvFooterPropGetter<D, H>,\n ) => HvUseTableFooterProps;\n}\n\nexport interface HvRowInstance<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n> extends Omit<Row<D>, \"cells\" | \"allCells\" | \"subRows\" | \"getRowProps\">,\n Partial<Omit<UseGroupByRowProps<D>, \"subRows\" | \"values\">>,\n Partial<UseRowStateRowProps<D>>,\n Partial<Omit<UseHvRowExpandRowInstance<D>, \"subRows\">>,\n Partial<UseHvRowSelectionRowInstance> {\n cells: Array<HvCellInstance<D, H>>;\n allCells: Array<HvCellInstance<D, H>>;\n getRowProps: (propGetter?: HvRowPropGetter<D, H>) => HvUseTableRowProps;\n index: number;\n original: D;\n id: string;\n subRows: Array<HvRowInstance<D, H>>;\n}\n\nexport interface HvCellInstance<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n V = any,\n> extends Omit<Cell<D, V>, \"column\" | \"row\" | \"getCellProps\">,\n Partial<UseGroupByCellProps<D>> {\n column: HvColumnInstance<D, H>;\n row: HvRowInstance<D, H>;\n getCellProps: (propGetter?: HvCellPropGetter<D, H>) => HvUseTableCellProps;\n}\n// #endregion\n\n// #region PROPS\nexport interface HvUseTableProps\n extends Omit<TableProps, \"role\">,\n UseHvTableStickyTableProps,\n HvTableProps {}\n\nexport interface HvUseTableHeaderProps\n extends Omit<TableHeaderProps, \"role\">,\n Omit<UseHvTableStylesTableCellProps, \"classes\">,\n UseHvTableStickyColumnProps,\n UseHvHeaderGroupsColumnProps,\n UseHvResizeColumnProps,\n Omit<UseHvSortByColumnProps, \"sortDirection\">,\n HvTableHeaderProps {}\n\nexport interface HvUseTableFooterProps\n extends TableFooterProps,\n UseHvTableStylesTableCellProps {}\n\nexport interface HvUseTableRowProps\n extends Omit<TableRowProps, \"role\">,\n UseHvTableStylesTableRowProps,\n UseHvRowSelectionTableRowProps,\n UseHvRowExpandTableRowProps,\n HvTableRowProps {}\n\nexport interface HvUseTableCellProps\n extends Omit<TableCellProps, \"role\">,\n Omit<UseHvTableStylesTableCellProps, \"variant\" | \"classes\">,\n UseHvTableStickyCellProps,\n UseHvHeaderGroupsCellProps,\n UseHvResizeTableCellProps,\n UseHvSortByTableCellProps,\n HvTableCellProps {}\n\n// #endregion\n\nexport type UseHvTableProps = <\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n options: HvTableOptions<D, H>,\n ...plugins: Array<PluginHook<D>>\n) => HvTableInstance<D, H>;\n\nexport type { PluginHook as HvTablePluginHook };\n\n// #endregion ##### TYPES #####\n\nconst toTitleCase = (str: string) => {\n return str\n .replace(/([^A-Z])([A-Z])/g, \"$1 $2\") // split cameCase\n .replace(/[_-]+/g, \" \") // split snake_case and lisp-case\n .toLowerCase()\n .replace(/(^\\w|\\b\\w)/g, (m) => m.toUpperCase()) // title case words\n .replace(/\\s+/g, \" \") // collapse repeated whitespace\n .trim(); // remove leading/trailing whitespace\n};\n\nfunction useDefaultData<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(data?: HvTableOptions<D, H>[\"data\"]) {\n return useMemo(() => {\n return data || [];\n }, [data]);\n}\n\nfunction useDefaultColumns<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n data: NonNullable<HvTableOptions<D, H>[\"data\"]>,\n columns?: HvTableOptions<D, H>[\"columns\"],\n) {\n return useMemo(() => {\n if (columns != null) {\n return columns;\n }\n\n const uniqueKeys = Object.keys(Object.assign({}, ...data));\n\n return uniqueKeys\n .filter((key) => ![\"subRows\", \"subComponent\"].includes(key))\n .map((key) => ({\n accessor: key,\n Header: toTitleCase(key),\n }));\n }, [columns, data]);\n}\n\nfunction ensureCorePluginInstallation<\n D extends object = Record<string, unknown>,\n>(\n plugins: PluginHook<D>[],\n hvPluginName: string,\n corePluginToInstall: PluginHook<D>,\n) {\n const indexOfCorePlugin = plugins.findIndex(\n (plugin) => plugin.pluginName === corePluginToInstall.pluginName,\n );\n const indexOfHvPlugin = plugins.findIndex(\n (plugin) => plugin.pluginName === hvPluginName,\n );\n\n if (\n indexOfHvPlugin !== -1 &&\n (indexOfCorePlugin === -1 || indexOfCorePlugin > indexOfHvPlugin)\n ) {\n if (indexOfCorePlugin > -1) {\n plugins.splice(indexOfCorePlugin, 1);\n }\n\n plugins.splice(indexOfHvPlugin, 0, corePluginToInstall);\n }\n}\n\nfunction useInstanceHook<D extends object = Record<string, unknown>>(\n instance: TableInstance<D>,\n) {\n const { rowsById } = instance;\n\n Object.assign(instance, {\n initialRowsById: rowsById,\n });\n}\n\nfunction useHvTableSetup<D extends object = Record<string, unknown>>(\n hooks: Hooks<D>,\n) {\n hooks.useInstance.push(useInstanceHook);\n}\nuseHvTableSetup.pluginName = \"useHvTableSetup\";\n\nexport function useHvTable<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n options: HvTableOptions<D, H>,\n ...plugins: PluginHook<D>[]\n): HvTableInstance<D, H> {\n const { data: dataProp, columns: columnsProp, ...others } = options;\n\n const data = useDefaultData<D, H>(dataProp);\n const columns = useDefaultColumns<D, H>(data, columnsProp);\n\n ensureCorePluginInstallation<D>(plugins, \"useHvPagination\", usePagination);\n ensureCorePluginInstallation<D>(plugins, \"useHvRowExpand\", useExpanded);\n ensureCorePluginInstallation<D>(plugins, \"useHvSortBy\", useSortBy);\n ensureCorePluginInstallation<D>(\n plugins,\n \"useHvResizeColumns\",\n useResizeColumns,\n );\n\n const indexOfHvTableStylesPlugin = plugins.findIndex(\n (plugin) => plugin.pluginName === \"useHvTableStyles\",\n );\n if (indexOfHvTableStylesPlugin === -1) {\n plugins.push(useHvTableStyles);\n }\n\n // Main hook call\n return useTable<D>(\n {\n data,\n columns,\n defaultColumn: { Cell: DefaultCell },\n ...others,\n } as any,\n useHvTableSetup,\n ...plugins,\n ) as any;\n}\n"],"names":[],"mappings":";;;;AA4lBA,MAAM,cAAc,CAAC,QAAgB;AAC5B,SAAA,IACJ,QAAQ,oBAAoB,OAAO,EACnC,QAAQ,UAAU,GAAG,EACrB,YAAY,EACZ,QAAQ,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7C,QAAQ,QAAQ,GAAG,EACnB,KAAK;AACV;AAEA,SAAS,eAGP,MAAqC;AACrC,SAAO,QAAQ,MAAM;AACnB,WAAO,QAAQ,CAAC;AAAA,EAAA,GACf,CAAC,IAAI,CAAC;AACX;AAEA,SAAS,kBAIP,MACA,SACA;AACA,SAAO,QAAQ,MAAM;AACnB,QAAI,WAAW,MAAM;AACZ,aAAA;AAAA,IAAA;AAGH,UAAA,aAAa,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;AAEzD,WAAO,WACJ,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,cAAc,EAAE,SAAS,GAAG,CAAC,EAC1D,IAAI,CAAC,SAAS;AAAA,MACb,UAAU;AAAA,MACV,QAAQ,YAAY,GAAG;AAAA,IAAA,EACvB;AAAA,EAAA,GACH,CAAC,SAAS,IAAI,CAAC;AACpB;AAEA,SAAS,6BAGP,SACA,cACA,qBACA;AACA,QAAM,oBAAoB,QAAQ;AAAA,IAChC,CAAC,WAAW,OAAO,eAAe,oBAAoB;AAAA,EACxD;AACA,QAAM,kBAAkB,QAAQ;AAAA,IAC9B,CAAC,WAAW,OAAO,eAAe;AAAA,EACpC;AAEA,MACE,oBAAoB,OACnB,sBAAsB,MAAM,oBAAoB,kBACjD;AACA,QAAI,oBAAoB,IAAI;AAClB,cAAA,OAAO,mBAAmB,CAAC;AAAA,IAAA;AAG7B,YAAA,OAAO,iBAAiB,GAAG,mBAAmB;AAAA,EAAA;AAE1D;AAEA,SAAS,gBACP,UACA;AACM,QAAA,EAAE,aAAa;AAErB,SAAO,OAAO,UAAU;AAAA,IACtB,iBAAiB;AAAA,EAAA,CAClB;AACH;AAEA,SAAS,gBACP,OACA;AACM,QAAA,YAAY,KAAK,eAAe;AACxC;AACA,gBAAgB,aAAa;AAEb,SAAA,WAId,YACG,SACoB;AACvB,QAAM,EAAE,MAAM,UAAU,SAAS,aAAa,GAAG,WAAW;AAEtD,QAAA,OAAO,eAAqB,QAAQ;AACpC,QAAA,UAAU,kBAAwB,MAAM,WAAW;AAEzB,+BAAA,SAAS,mBAAmB,aAAa;AACzC,+BAAA,SAAS,kBAAkB,WAAW;AACtC,+BAAA,SAAS,eAAe,SAAS;AACjE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,6BAA6B,QAAQ;AAAA,IACzC,CAAC,WAAW,OAAO,eAAe;AAAA,EACpC;AACA,MAAI,+BAA+B,IAAI;AACrC,YAAQ,KAAK,gBAAgB;AAAA,EAAA;AAIxB,SAAA;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA,eAAe,EAAE,MAAM,YAAY;AAAA,MACnC,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL;AACF;"}
@@ -76,15 +76,14 @@ const getCellPropsHook = (props, { cell }) => {
76
76
  }
77
77
  return [props, nextProps];
78
78
  };
79
- const useTableStyles = (hooks) => {
79
+ const useHvTableStyles = (hooks) => {
80
80
  hooks.getTableProps.push(getTablePropsHook);
81
81
  hooks.getHeaderProps.push(getHeaderFooterPropsHook);
82
82
  hooks.getFooterProps.push(getHeaderFooterPropsHook);
83
83
  hooks.getRowProps.push(getRowPropsHook);
84
84
  hooks.getCellProps.push(getCellPropsHook);
85
85
  };
86
- useTableStyles.pluginName = "useHvTableStyles";
86
+ useHvTableStyles.pluginName = "useHvTableStyles";
87
87
  export {
88
- useTableStyles as default,
89
- getHeaderFooterPropsHook
88
+ useHvTableStyles
90
89
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHvTableStyles.js","sources":["../../../../src/Table/hooks/useHvTableStyles.ts"],"sourcesContent":["import { Hooks } from \"react-table\";\nimport { clsx } from \"clsx\";\n\n// #region ##### TYPES #####\n\nexport type UseHvTableStylesTableOptions = {\n style?: React.CSSProperties;\n className?: string;\n classes?: Record<string, string>;\n component?: any;\n};\n\n// column definition:\nexport interface UseHvTableStylesColumnOptions {\n variant?: \"checkbox\" | \"expand\" | \"actions\" | \"default\" | \"none\";\n align?: \"center\" | \"inherit\" | \"justify\" | \"left\" | \"right\";\n\n style?: React.CSSProperties;\n className?: string;\n classes?: Record<string, string>;\n\n headerStyle?: React.CSSProperties;\n headerClassName?: string;\n headerClasses?: Record<string, string>;\n\n cellStyle?: React.CSSProperties;\n cellClassName?: string;\n cellClasses?: Record<string, string>;\n}\n\n// PROPS:\nexport interface UseHvTableStylesTableRowProps {\n hover?: boolean;\n}\n\nexport interface UseHvTableStylesTableCellProps {\n style?: React.CSSProperties;\n className?: string;\n classes?: Record<string, string>;\n variant?: \"checkbox\" | \"expand\" | \"actions\" | \"default\" | \"none\";\n align?: \"center\" | \"inherit\" | \"justify\" | \"left\" | \"right\";\n}\n\nexport type UseTableStylesProps = (<D extends object = Record<string, unknown>>(\n hooks: Hooks<D>,\n) => void) & { pluginName: string };\n\n// #endregion ##### TYPES #####\n\n// props target: <table>\nconst getTablePropsHook = (props: any, { instance }: any) => {\n const nextProps: UseHvTableStylesTableOptions = {\n component: instance.tableComponent,\n };\n\n if (instance.style != null) {\n nextProps.style = instance.style;\n }\n\n if (instance.className != null) {\n nextProps.className = instance.className;\n }\n\n if (instance.classes != null) {\n nextProps.classes = instance.classes;\n }\n\n return [props, nextProps];\n};\n\n// props target: <table><thead><tr><th>\nconst getHeaderFooterPropsHook = (props: any, { column }: any) => {\n const nextProps: UseHvTableStylesColumnOptions = {\n variant: column.variant,\n align: column.align,\n };\n\n if (column.style != null || column.headerStyle != null) {\n nextProps.style = {\n ...props.style,\n ...column.style,\n ...column.headerStyle,\n };\n }\n\n if (column.className != null || column.headerClassName != null) {\n nextProps.className = clsx(\n props.className,\n column.className,\n column.headerClassName,\n );\n }\n\n if (column.classes != null || column.headerClasses) {\n nextProps.classes = {\n ...props.classes,\n ...column.classes,\n ...column.headerClasses,\n };\n }\n\n return [props, nextProps];\n};\n\n// props target: <table><tbody><tr>\nconst getRowPropsHook = (props: any) => {\n const nextProps: UseHvTableStylesTableRowProps = {\n hover: true,\n };\n\n return [props, nextProps];\n};\n\n// props target: <table><tbody><tr><td>\nconst getCellPropsHook = (props: any, { cell }: any) => {\n const nextProps: UseHvTableStylesTableCellProps = {\n variant: cell.column.variant,\n align: cell.column.align,\n };\n\n if (cell.column.style != null || cell.column.cellStyle != null) {\n nextProps.style = {\n ...props.style,\n ...cell.column.style,\n ...cell.column.cellStyle,\n };\n }\n\n if (cell.column.className != null || cell.column.cellClassName != null) {\n nextProps.className = clsx(\n props.className,\n cell.column.className,\n cell.column.cellClassName,\n );\n }\n\n if (cell.column.classes != null || cell.column.cellClasses) {\n nextProps.classes = {\n ...props.classes,\n ...cell.column.classes,\n ...cell.column.cellClasses,\n };\n }\n\n return [props, nextProps];\n};\n\nexport const useHvTableStyles: UseTableStylesProps = (hooks) => {\n // props target: <table>\n hooks.getTableProps.push(getTablePropsHook);\n // props target: <table><thead><tr><th>\n hooks.getHeaderProps.push(getHeaderFooterPropsHook);\n // props target: <table><tfoot><tr><td>\n hooks.getFooterProps.push(getHeaderFooterPropsHook);\n // props target: <table><tbody><tr>\n hooks.getRowProps.push(getRowPropsHook);\n // props target: <table><tbody><tr><td>\n hooks.getCellProps.push(getCellPropsHook);\n};\n\nuseHvTableStyles.pluginName = \"useHvTableStyles\";\n"],"names":[],"mappings":";AAkDA,MAAM,oBAAoB,CAAC,OAAY,EAAE,eAAoB;AAC3D,QAAM,YAA0C;AAAA,IAC9C,WAAW,SAAS;AAAA,EACtB;AAEI,MAAA,SAAS,SAAS,MAAM;AAC1B,cAAU,QAAQ,SAAS;AAAA,EAAA;AAGzB,MAAA,SAAS,aAAa,MAAM;AAC9B,cAAU,YAAY,SAAS;AAAA,EAAA;AAG7B,MAAA,SAAS,WAAW,MAAM;AAC5B,cAAU,UAAU,SAAS;AAAA,EAAA;AAGxB,SAAA,CAAC,OAAO,SAAS;AAC1B;AAGA,MAAM,2BAA2B,CAAC,OAAY,EAAE,aAAkB;AAChE,QAAM,YAA2C;AAAA,IAC/C,SAAS,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,EAChB;AAEA,MAAI,OAAO,SAAS,QAAQ,OAAO,eAAe,MAAM;AACtD,cAAU,QAAQ;AAAA,MAChB,GAAG,MAAM;AAAA,MACT,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EAAA;AAGF,MAAI,OAAO,aAAa,QAAQ,OAAO,mBAAmB,MAAM;AAC9D,cAAU,YAAY;AAAA,MACpB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EAAA;AAGF,MAAI,OAAO,WAAW,QAAQ,OAAO,eAAe;AAClD,cAAU,UAAU;AAAA,MAClB,GAAG,MAAM;AAAA,MACT,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EAAA;AAGK,SAAA,CAAC,OAAO,SAAS;AAC1B;AAGA,MAAM,kBAAkB,CAAC,UAAe;AACtC,QAAM,YAA2C;AAAA,IAC/C,OAAO;AAAA,EACT;AAEO,SAAA,CAAC,OAAO,SAAS;AAC1B;AAGA,MAAM,mBAAmB,CAAC,OAAY,EAAE,WAAgB;AACtD,QAAM,YAA4C;AAAA,IAChD,SAAS,KAAK,OAAO;AAAA,IACrB,OAAO,KAAK,OAAO;AAAA,EACrB;AAEA,MAAI,KAAK,OAAO,SAAS,QAAQ,KAAK,OAAO,aAAa,MAAM;AAC9D,cAAU,QAAQ;AAAA,MAChB,GAAG,MAAM;AAAA,MACT,GAAG,KAAK,OAAO;AAAA,MACf,GAAG,KAAK,OAAO;AAAA,IACjB;AAAA,EAAA;AAGF,MAAI,KAAK,OAAO,aAAa,QAAQ,KAAK,OAAO,iBAAiB,MAAM;AACtE,cAAU,YAAY;AAAA,MACpB,MAAM;AAAA,MACN,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,IACd;AAAA,EAAA;AAGF,MAAI,KAAK,OAAO,WAAW,QAAQ,KAAK,OAAO,aAAa;AAC1D,cAAU,UAAU;AAAA,MAClB,GAAG,MAAM;AAAA,MACT,GAAG,KAAK,OAAO;AAAA,MACf,GAAG,KAAK,OAAO;AAAA,IACjB;AAAA,EAAA;AAGK,SAAA,CAAC,OAAO,SAAS;AAC1B;AAEa,MAAA,mBAAwC,CAAC,UAAU;AAExD,QAAA,cAAc,KAAK,iBAAiB;AAEpC,QAAA,eAAe,KAAK,wBAAwB;AAE5C,QAAA,eAAe,KAAK,wBAAwB;AAE5C,QAAA,YAAY,KAAK,eAAe;AAEhC,QAAA,aAAa,KAAK,gBAAgB;AAC1C;AAEA,iBAAiB,aAAa;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
3
  import dayjs from "dayjs";
4
- import { HvOverflowTooltip } from "../../../OverflowTooltip/OverflowTooltip.js";
4
+ import { HvOverflowTooltip } from "../../OverflowTooltip/OverflowTooltip.js";
5
5
  const HvDateColumnCell = ({
6
6
  date,
7
7
  dateFormat
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateColumnCell.js","sources":["../../../../src/Table/renderers/DateColumnCell.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport dayjs from \"dayjs\";\n\nimport { HvOverflowTooltip } from \"../../OverflowTooltip\";\n\nexport interface HvDateColumnCellProp {\n /** The date's text representation format. */\n dateFormat?: string;\n /** Date to render. */\n date?: string;\n}\n\nexport const HvDateColumnCell = ({\n date,\n dateFormat,\n}: HvDateColumnCellProp): JSX.Element => {\n const formattedDate = useMemo(() => {\n if (date)\n return dayjs(date).format(\n dateFormat !== \"ISO8601\" ? dateFormat : undefined,\n );\n return \"—\";\n }, [date, dateFormat]);\n\n return <HvOverflowTooltip data={formattedDate} />;\n};\n"],"names":[],"mappings":";;;;AAYO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AACF,MAAyC;AACjC,QAAA,gBAAgB,QAAQ,MAAM;AAC9B,QAAA;AACK,aAAA,MAAM,IAAI,EAAE;AAAA,QACjB,eAAe,YAAY,aAAa;AAAA,MAC1C;AACK,WAAA;AAAA,EAAA,GACN,CAAC,MAAM,UAAU,CAAC;AAEd,SAAA,oBAAC,mBAAkB,EAAA,MAAM,cAAe,CAAA;AACjD;"}
@@ -0,0 +1,21 @@
1
+ const EM_DASH = "—";
2
+ const DefaultCell = ({
3
+ row,
4
+ value
5
+ }) => {
6
+ switch (true) {
7
+ case row.subRows.length > 0:
8
+ return value;
9
+ case value instanceof Date:
10
+ return value.toISOString().slice(0, 10);
11
+ case typeof value === "object":
12
+ return value;
13
+ case (value == null || value === ""):
14
+ return EM_DASH;
15
+ default:
16
+ return String(value);
17
+ }
18
+ };
19
+ export {
20
+ DefaultCell
21
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultCell.js","sources":["../../../../src/Table/renderers/DefaultCell.tsx"],"sourcesContent":["import type { HvCellProps } from \"../hooks/useHvTable\";\n\nconst EM_DASH = \"—\";\n\n/** Default cell renderer for `Table`. */\nexport const DefaultCell = <T extends object>({\n row,\n value,\n}: HvCellProps<T, any>) => {\n switch (true) {\n case row.subRows.length > 0:\n // do nothing if row has sub-rows\n return value;\n case value instanceof Date:\n // render date in ISO format\n return value.toISOString().slice(0, 10);\n case typeof value === \"object\":\n // render objects as-is\n return value;\n case value == null || value === \"\":\n // render EM_DASH for empty values\n return EM_DASH;\n default:\n // stringify boolean/bigint/number/etc.\n return String(value);\n }\n};\n"],"names":[],"mappings":"AAEA,MAAM,UAAU;AAGT,MAAM,cAAc,CAAmB;AAAA,EAC5C;AAAA,EACA;AACF,MAA2B;AACzB,UAAQ,MAAM;AAAA,IACZ,KAAK,IAAI,QAAQ,SAAS;AAEjB,aAAA;AAAA,IACT,KAAK,iBAAiB;AAEpB,aAAO,MAAM,YAAA,EAAc,MAAM,GAAG,EAAE;AAAA,IACxC,KAAK,OAAO,UAAU;AAEb,aAAA;AAAA,IACT,MAAK,SAAS,QAAQ,UAAU;AAEvB,aAAA;AAAA,IACT;AAEE,aAAO,OAAO,KAAK;AAAA,EAAA;AAEzB;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { HvDropdown } from "../../../Dropdown/Dropdown.js";
2
+ import { HvDropdown } from "../../Dropdown/Dropdown.js";
3
3
  const HvDropdownColumnCell = ({
4
4
  dropdownProps,
5
5
  ...others
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownColumnCell.js","sources":["../../../../src/Table/renderers/DropdownColumnCell.tsx"],"sourcesContent":["import { HvDropdown, HvDropdownProps } from \"../../Dropdown\";\n\nexport interface HvDropdownColumnCellProp extends HvDropdownProps<false> {\n /** Extra props to be passed onto the dropdown. @deprecated pass props directly */\n dropdownProps?: HvDropdownProps<false>;\n}\n\nexport const HvDropdownColumnCell = ({\n dropdownProps,\n ...others\n}: HvDropdownColumnCellProp) => {\n return <HvDropdown {...dropdownProps} {...others} />;\n};\n"],"names":[],"mappings":";;AAOO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA,GAAG;AACL,MAAgC;AAC9B,SAAQ,oBAAA,YAAA,EAAY,GAAG,eAAgB,GAAG,OAAQ,CAAA;AACpD;"}
@@ -1,6 +1,24 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import MuiLinearProgress from "@mui/material/LinearProgress";
3
- import { useClasses } from "./ProgressColumnCell.styles.js";
3
+ import { createClasses } from "@hitachivantara/uikit-react-utils";
4
+ import { theme } from "@hitachivantara/uikit-styles";
5
+ const { useClasses } = createClasses("HvProgressColumnCell", {
6
+ root: { display: "flex", width: "100%" },
7
+ linearProgressContainer: { width: "100%", margin: "auto" },
8
+ linearProgress: {
9
+ height: 8
10
+ },
11
+ linearProgressRoot: { backgroundColor: theme.colors.atmo4 },
12
+ linearProgressColorPrimary: {
13
+ backgroundColor: theme.colors.atmo4
14
+ },
15
+ linearProgressBarColorPrimary: {
16
+ backgroundColor: theme.colors.positive
17
+ },
18
+ linearProgressBarColorSecondary: {
19
+ backgroundColor: theme.colors.secondary
20
+ }
21
+ });
4
22
  const normalizeProgressBar = (value, max) => {
5
23
  return max > 0 ? Math.floor(value * 100 / max) : 0;
6
24
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressColumnCell.js","sources":["../../../../src/Table/renderers/ProgressColumnCell.tsx"],"sourcesContent":["import MuiLinearProgress from \"@mui/material/LinearProgress\";\nimport { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nconst { useClasses } = createClasses(\"HvProgressColumnCell\", {\n root: { display: \"flex\", width: \"100%\" },\n linearProgressContainer: { width: \"100%\", margin: \"auto\" },\n linearProgress: {\n height: 8,\n },\n linearProgressRoot: { backgroundColor: theme.colors.atmo4 },\n linearProgressColorPrimary: {\n backgroundColor: theme.colors.atmo4,\n },\n linearProgressBarColorPrimary: {\n backgroundColor: theme.colors.positive,\n },\n linearProgressBarColorSecondary: {\n backgroundColor: theme.colors.secondary,\n },\n});\n\nexport interface HvProgressColumnCellProp {\n /** Current value of the bar. */\n partial: number;\n /** Maximum value of the bar. */\n total: number;\n /** The color of the bar. */\n color?: \"primary\" | \"secondary\";\n \"aria-labelledby\"?: string;\n}\n\nexport const normalizeProgressBar = (value: number, max: number) => {\n return max > 0 ? Math.floor((value * 100) / max) : 0;\n};\n\nexport const HvProgressColumnCell = ({\n partial,\n total,\n color = \"primary\",\n \"aria-labelledby\": ariaLabelledBy,\n}: HvProgressColumnCellProp): JSX.Element => {\n const { classes } = useClasses();\n\n const percentage = normalizeProgressBar(partial, total);\n\n return (\n <div className={classes.root}>\n <div className={classes.linearProgressContainer}>\n <MuiLinearProgress\n className={classes.linearProgress}\n classes={{\n root: classes.linearProgressRoot,\n colorPrimary: classes.linearProgressColorPrimary,\n barColorPrimary: classes.linearProgressBarColorPrimary,\n barColorSecondary: classes.linearProgressBarColorSecondary,\n }}\n color={color}\n variant=\"determinate\"\n value={percentage}\n aria-labelledby={ariaLabelledBy}\n />\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;AAIA,MAAM,EAAE,WAAA,IAAe,cAAc,wBAAwB;AAAA,EAC3D,MAAM,EAAE,SAAS,QAAQ,OAAO,OAAO;AAAA,EACvC,yBAAyB,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,EACzD,gBAAgB;AAAA,IACd,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB,EAAE,iBAAiB,MAAM,OAAO,MAAM;AAAA,EAC1D,4BAA4B;AAAA,IAC1B,iBAAiB,MAAM,OAAO;AAAA,EAChC;AAAA,EACA,+BAA+B;AAAA,IAC7B,iBAAiB,MAAM,OAAO;AAAA,EAChC;AAAA,EACA,iCAAiC;AAAA,IAC/B,iBAAiB,MAAM,OAAO;AAAA,EAAA;AAElC,CAAC;AAYY,MAAA,uBAAuB,CAAC,OAAe,QAAgB;AAClE,SAAO,MAAM,IAAI,KAAK,MAAO,QAAQ,MAAO,GAAG,IAAI;AACrD;AAEO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,mBAAmB;AACrB,MAA6C;AACrC,QAAA,EAAE,QAAQ,IAAI,WAAW;AAEzB,QAAA,aAAa,qBAAqB,SAAS,KAAK;AAGpD,SAAA,oBAAC,SAAI,WAAW,QAAQ,MACtB,UAAC,oBAAA,OAAA,EAAI,WAAW,QAAQ,yBACtB,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,QAAQ;AAAA,MACnB,SAAS;AAAA,QACP,MAAM,QAAQ;AAAA,QACd,cAAc,QAAQ;AAAA,QACtB,iBAAiB,QAAQ;AAAA,QACzB,mBAAmB,QAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,OAAO;AAAA,MACP,mBAAiB;AAAA,IAAA;AAAA,KAErB,EACF,CAAA;AAEJ;"}
@@ -1,7 +1,16 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
- import { useClasses } from "./SwitchColumnCell.styles.js";
3
- import { HvTypography } from "../../../Typography/Typography.js";
4
- import { HvBaseSwitch } from "../../../BaseSwitch/BaseSwitch.js";
2
+ import { createClasses } from "@hitachivantara/uikit-react-utils";
3
+ import { HvTypography } from "../../Typography/Typography.js";
4
+ import { HvBaseSwitch } from "../../BaseSwitch/BaseSwitch.js";
5
+ const switchStyle = {
6
+ cursor: "pointer",
7
+ display: "inline-flex",
8
+ marginLeft: "10px"
9
+ };
10
+ const { useClasses } = createClasses("HvSwitchColumnCell", {
11
+ switchNo: switchStyle,
12
+ switchYes: switchStyle
13
+ });
5
14
  const HvSwitchColumnCell = ({
6
15
  checked,
7
16
  value,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitchColumnCell.js","sources":["../../../../src/Table/renderers/SwitchColumnCell.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseSwitch, HvBaseSwitchProps } from \"../../BaseSwitch\";\nimport { HvTypography } from \"../../Typography\";\n\nconst switchStyle = {\n cursor: \"pointer\",\n display: \"inline-flex\",\n marginLeft: \"10px\",\n};\n\nconst { useClasses } = createClasses(\"HvSwitchColumnCell\", {\n switchNo: switchStyle,\n switchYes: switchStyle,\n});\n\nexport interface HvSwitchColumnCellProp {\n /** Whether the switch is checked or not. */\n checked: boolean;\n /** The switch label. */\n value: number | string | undefined;\n /** The value of the switch. */\n switchLabel: string;\n /** The right switch label. */\n falseLabel?: string;\n /** The left switch label. */\n trueLabel?: string;\n /** Extra props to be passed to the switch. */\n switchProps?: HvBaseSwitchProps;\n}\n\nexport const HvSwitchColumnCell = ({\n checked,\n value,\n switchLabel,\n falseLabel,\n trueLabel,\n switchProps,\n}: HvSwitchColumnCellProp): JSX.Element => {\n const { classes } = useClasses();\n\n return (\n <>\n {falseLabel != null && (\n <HvTypography\n aria-hidden=\"true\"\n variant=\"body\"\n className={classes.switchNo}\n >\n {falseLabel}\n </HvTypography>\n )}\n <HvBaseSwitch\n checked={checked}\n value={value}\n {...switchProps}\n inputProps={{ \"aria-label\": switchLabel, ...switchProps?.inputProps }}\n />\n {trueLabel != null && (\n <HvTypography\n aria-hidden=\"true\"\n variant=\"body\"\n className={classes.switchYes}\n >\n {trueLabel}\n </HvTypography>\n )}\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAKA,MAAM,cAAc;AAAA,EAClB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AACd;AAEA,MAAM,EAAE,WAAA,IAAe,cAAc,sBAAsB;AAAA,EACzD,UAAU;AAAA,EACV,WAAW;AACb,CAAC;AAiBM,MAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA2C;AACnC,QAAA,EAAE,QAAQ,IAAI,WAAW;AAE/B,SAEK,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,cAAc,QACb;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,SAAQ;AAAA,QACR,WAAW,QAAQ;AAAA,QAElB,UAAA;AAAA,MAAA;AAAA,IACH;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACC,GAAG;AAAA,QACJ,YAAY,EAAE,cAAc,aAAa,GAAG,aAAa,WAAW;AAAA,MAAA;AAAA,IACtE;AAAA,IACC,aAAa,QACZ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,SAAQ;AAAA,QACR,WAAW,QAAQ;AAAA,QAElB,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAEJ;"}
@@ -2,15 +2,25 @@ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
2
  import { ClassNames } from "@emotion/react";
3
3
  import { DropUpXS, DropDownXS } from "@hitachivantara/uikit-react-icons";
4
4
  import { setId } from "../../utils/setId.js";
5
- import { hvStringFallback, hvNumberFallback } from "../utils/fallbacks.js";
6
- import { HvDateColumnCell } from "./DateColumnCell/DateColumnCell.js";
5
+ import { HvDateColumnCell } from "./DateColumnCell.js";
6
+ import { HvDropdownColumnCell } from "./DropdownColumnCell.js";
7
+ import { HvProgressColumnCell } from "./ProgressColumnCell.js";
8
+ import { HvSwitchColumnCell } from "./SwitchColumnCell.js";
7
9
  import { HvButton } from "../../Button/Button.js";
8
10
  import { HvTag } from "../../Tag/Tag.js";
9
- import { HvSwitchColumnCell } from "./SwitchColumnCell/SwitchColumnCell.js";
10
- import { HvDropdownColumnCell } from "./DropdownColumnCell/DropdownColumnCell.js";
11
- import { HvProgressColumnCell } from "./ProgressColumnCell/ProgressColumnCell.js";
12
11
  import { HvOverflowTooltip } from "../../OverflowTooltip/OverflowTooltip.js";
13
12
  import { HvTypography } from "../../Typography/Typography.js";
13
+ const EM_DASH = "—";
14
+ const hvStringFallback = (value) => {
15
+ return typeof value === "string" && value !== "" ? value : EM_DASH;
16
+ };
17
+ const hvNumberFallback = (value) => {
18
+ return typeof value === "number" ? value : EM_DASH;
19
+ };
20
+ const hvNodeFallback = (value) => {
21
+ if (!value) return EM_DASH;
22
+ return hvStringFallback(value?.toString()) === EM_DASH ? EM_DASH : value;
23
+ };
14
24
  function hvTextColumn(col, overflowTooltipProps = {}) {
15
25
  return {
16
26
  Cell: ({ value }) => /* @__PURE__ */ jsx(
@@ -183,8 +193,11 @@ export {
183
193
  hvDateColumn,
184
194
  hvDropdownColumn,
185
195
  hvExpandColumn,
196
+ hvNodeFallback,
186
197
  hvNumberColumn,
198
+ hvNumberFallback,
187
199
  hvProgressColumn,
200
+ hvStringFallback,
188
201
  hvSwitchColumn,
189
202
  hvTagColumn,
190
203
  hvTextColumn
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sources":["../../../../src/Table/renderers/renderers.tsx"],"sourcesContent":["import { ClassNames } from \"@emotion/react\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseSwitchProps } from \"../../BaseSwitch\";\nimport { HvButton } from \"../../Button\";\nimport { HvDropdownProps } from \"../../Dropdown\";\nimport { HvListValue } from \"../../List\";\nimport {\n HvOverflowTooltip,\n HvOverflowTooltipProps,\n} from \"../../OverflowTooltip\";\nimport { HvTag, HvTagProps } from \"../../Tag\";\nimport { HvTypography } from \"../../Typography\";\nimport { setId } from \"../../utils/setId\";\nimport {\n HvCellProps,\n HvRowInstance,\n HvTableColumnConfig,\n HvTableHeaderRenderer,\n} from \"../hooks/useTable\";\nimport { hvNumberFallback, hvStringFallback } from \"../utils\";\nimport { HvDateColumnCell } from \"./DateColumnCell\";\nimport { HvDropdownColumnCell } from \"./DropdownColumnCell\";\nimport { HvProgressColumnCell } from \"./ProgressColumnCell\";\nimport { HvSwitchColumnCell } from \"./SwitchColumnCell\";\n\nexport function hvTextColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n overflowTooltipProps: Omit<HvOverflowTooltipProps, \"data\"> = {},\n): HvTableColumnConfig<D, H> {\n return {\n Cell: ({ value }: HvCellProps<D, H>) => (\n <HvOverflowTooltip\n data={hvStringFallback(value)}\n {...overflowTooltipProps}\n />\n ),\n sortType: \"alphanumeric\",\n ...col,\n };\n}\n\nexport function hvNumberColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(col: HvTableColumnConfig<D, H>): HvTableColumnConfig<D, H> {\n return {\n Cell: ({ value }: HvCellProps<D, H>) => <>{hvNumberFallback(value)}</>,\n align: \"right\",\n sortType: \"number\",\n ...col,\n };\n}\n\nexport function hvDateColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n dateFormat?: string,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: ({ value }: HvCellProps<D, H>) => (\n <HvDateColumnCell date={value} dateFormat={dateFormat} />\n ),\n sortType: \"alphanumeric\",\n sortDescFirst: true,\n ...col,\n };\n}\n\nexport function hvExpandColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n expandRowButtonAriaLabel: string,\n collapseRowButtonAriaLabel: string,\n getCanRowExpand?: (row: HvRowInstance<D, H>) => boolean,\n ExpandedIcon: React.ReactNode = <DropUpXS />,\n CollapsedIcon: React.ReactNode = <DropDownXS />,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row } = cellProps;\n const expandedProps = row.getToggleRowExpandedProps?.();\n\n const hasContent = getCanRowExpand?.(row) ?? true;\n\n return (\n <ClassNames>\n {({ css }) => (\n <>\n {hasContent && (\n <HvButton\n icon\n aria-label={\n row.isExpanded\n ? collapseRowButtonAriaLabel\n : expandRowButtonAriaLabel\n }\n aria-expanded={row.isExpanded}\n onClick={expandedProps?.onClick}\n classes={{\n root: css({\n position: \"absolute\",\n left: 0,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n }),\n }}\n >\n {row.isExpanded ? ExpandedIcon : CollapsedIcon}\n </HvButton>\n )}\n\n <HvOverflowTooltip data={hvStringFallback(value)} />\n </>\n )}\n </ClassNames>\n );\n },\n sortType: \"alphanumeric\",\n cellStyle: {\n position: \"relative\",\n },\n ...col,\n };\n}\n\nexport function hvTagColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n A extends object = Record<string, unknown>,\n>(\n col: HvTableColumnConfig<D, H>,\n valueDataKey: keyof A,\n colorDataKey: keyof A,\n textColorDataKey: keyof A,\n fromRowData = false,\n tagProps?: HvTagProps,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row } = cellProps;\n if (!value) {\n return <>—</>;\n }\n\n const {\n [valueDataKey]: name,\n [colorDataKey]: color,\n [textColorDataKey]: textColor,\n } = fromRowData ? row.original : value;\n\n return (\n <HvTag\n label={<HvTypography variant=\"body\">{name}</HvTypography>}\n type=\"semantic\"\n color={color}\n style={textColor != null ? { color: textColor } : {}}\n tabIndex={-1}\n {...tagProps}\n />\n );\n },\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n\n// TODO - Review accessibility on the next renderers because they all differ\n\nexport function hvSwitchColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n switchLabel: string,\n falseLabel?: string,\n trueLabel?: string,\n switchProps?: HvBaseSwitchProps,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row } = cellProps;\n return (\n <HvSwitchColumnCell\n checked={value}\n value={row.id}\n switchLabel={switchLabel}\n falseLabel={falseLabel}\n trueLabel={trueLabel}\n switchProps={switchProps}\n />\n );\n },\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n\nexport function hvDropdownColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n id: string | undefined,\n placeholder: string,\n disabledPlaceholder: string,\n onChange?: (identifier: string, value: HvListValue) => void,\n dropdownProps?: HvDropdownProps<false>,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row, column } = cellProps;\n const disabled =\n !Array.isArray(value) || (Array.isArray(value) && value.length < 1);\n return (\n <HvDropdownColumnCell\n values={value}\n placeholder={disabled ? disabledPlaceholder : placeholder}\n onChange={(val) => onChange?.(row.id, val!)}\n disabled={disabled}\n aria-labelledby={setId(id, column.id) || column.id || id} // TODO - to be reviewed because it doesn't make much sense\n {...dropdownProps}\n />\n );\n },\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n\nexport function hvProgressColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n getPartial?: (row: HvRowInstance<D, H>) => number,\n getTotal?: (row: HvRowInstance<D, H>) => number,\n color?: \"primary\" | \"secondary\",\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { row, column } = cellProps;\n const partial = getPartial?.(row) || 0;\n const total = getTotal?.(row);\n\n if (total) {\n return (\n <HvProgressColumnCell\n partial={partial}\n total={total}\n color={color}\n aria-labelledby={column.id}\n />\n );\n }\n\n return <>—</>;\n },\n\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.js","sources":["../../../../src/Table/renderers/renderers.tsx"],"sourcesContent":["import { ClassNames } from \"@emotion/react\";\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseSwitchProps } from \"../../BaseSwitch\";\nimport { HvButton } from \"../../Button\";\nimport { HvDropdownProps } from \"../../Dropdown\";\nimport { HvListValue } from \"../../List\";\nimport {\n HvOverflowTooltip,\n HvOverflowTooltipProps,\n} from \"../../OverflowTooltip\";\nimport { HvTag, HvTagProps } from \"../../Tag\";\nimport { HvTypography } from \"../../Typography\";\nimport { setId } from \"../../utils/setId\";\nimport type {\n HvCellProps,\n HvRowInstance,\n HvTableColumnConfig,\n HvTableHeaderRenderer,\n} from \"../hooks/useHvTable\";\nimport { HvDateColumnCell } from \"./DateColumnCell\";\nimport { HvDropdownColumnCell } from \"./DropdownColumnCell\";\nimport { HvProgressColumnCell } from \"./ProgressColumnCell\";\nimport { HvSwitchColumnCell } from \"./SwitchColumnCell\";\n\nconst EM_DASH = \"—\";\n\nexport const hvStringFallback = (value: any) => {\n return typeof value === \"string\" && value !== \"\" ? value : EM_DASH;\n};\n\nexport const hvNumberFallback = (value: any) => {\n return typeof value === \"number\" ? value : EM_DASH;\n};\n\nexport const hvNodeFallback = (value: any) => {\n if (!value) return EM_DASH;\n return hvStringFallback(value?.toString()) === EM_DASH ? EM_DASH : value;\n};\n\nexport function hvTextColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n overflowTooltipProps: Omit<HvOverflowTooltipProps, \"data\"> = {},\n): HvTableColumnConfig<D, H> {\n return {\n Cell: ({ value }: HvCellProps<D, H>) => (\n <HvOverflowTooltip\n data={hvStringFallback(value)}\n {...overflowTooltipProps}\n />\n ),\n sortType: \"alphanumeric\",\n ...col,\n };\n}\n\nexport function hvNumberColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(col: HvTableColumnConfig<D, H>): HvTableColumnConfig<D, H> {\n return {\n Cell: ({ value }: HvCellProps<D, H>) => <>{hvNumberFallback(value)}</>,\n align: \"right\",\n sortType: \"number\",\n ...col,\n };\n}\n\nexport function hvDateColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n dateFormat?: string,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: ({ value }: HvCellProps<D, H>) => (\n <HvDateColumnCell date={value} dateFormat={dateFormat} />\n ),\n sortType: \"alphanumeric\",\n sortDescFirst: true,\n ...col,\n };\n}\n\nexport function hvExpandColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n expandRowButtonAriaLabel: string,\n collapseRowButtonAriaLabel: string,\n getCanRowExpand?: (row: HvRowInstance<D, H>) => boolean,\n ExpandedIcon: React.ReactNode = <DropUpXS />,\n CollapsedIcon: React.ReactNode = <DropDownXS />,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row } = cellProps;\n const expandedProps = row.getToggleRowExpandedProps?.();\n\n const hasContent = getCanRowExpand?.(row) ?? true;\n\n return (\n <ClassNames>\n {({ css }) => (\n <>\n {hasContent && (\n <HvButton\n icon\n aria-label={\n row.isExpanded\n ? collapseRowButtonAriaLabel\n : expandRowButtonAriaLabel\n }\n aria-expanded={row.isExpanded}\n onClick={expandedProps?.onClick}\n classes={{\n root: css({\n position: \"absolute\",\n left: 0,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n }),\n }}\n >\n {row.isExpanded ? ExpandedIcon : CollapsedIcon}\n </HvButton>\n )}\n\n <HvOverflowTooltip data={hvStringFallback(value)} />\n </>\n )}\n </ClassNames>\n );\n },\n sortType: \"alphanumeric\",\n cellStyle: {\n position: \"relative\",\n },\n ...col,\n };\n}\n\nexport function hvTagColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n A extends object = Record<string, unknown>,\n>(\n col: HvTableColumnConfig<D, H>,\n valueDataKey: keyof A,\n colorDataKey: keyof A,\n textColorDataKey: keyof A,\n fromRowData = false,\n tagProps?: HvTagProps,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row } = cellProps;\n if (!value) {\n return <>—</>;\n }\n\n const {\n [valueDataKey]: name,\n [colorDataKey]: color,\n [textColorDataKey]: textColor,\n } = fromRowData ? row.original : value;\n\n return (\n <HvTag\n label={<HvTypography variant=\"body\">{name}</HvTypography>}\n type=\"semantic\"\n color={color}\n style={textColor != null ? { color: textColor } : {}}\n tabIndex={-1}\n {...tagProps}\n />\n );\n },\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n\n// TODO - Review accessibility on the next renderers because they all differ\n\nexport function hvSwitchColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n switchLabel: string,\n falseLabel?: string,\n trueLabel?: string,\n switchProps?: HvBaseSwitchProps,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row } = cellProps;\n return (\n <HvSwitchColumnCell\n checked={value}\n value={row.id}\n switchLabel={switchLabel}\n falseLabel={falseLabel}\n trueLabel={trueLabel}\n switchProps={switchProps}\n />\n );\n },\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n\nexport function hvDropdownColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n id: string | undefined,\n placeholder: string,\n disabledPlaceholder: string,\n onChange?: (identifier: string, value: HvListValue) => void,\n dropdownProps?: HvDropdownProps<false>,\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { value, row, column } = cellProps;\n const disabled =\n !Array.isArray(value) || (Array.isArray(value) && value.length < 1);\n return (\n <HvDropdownColumnCell\n values={value}\n placeholder={disabled ? disabledPlaceholder : placeholder}\n onChange={(val) => onChange?.(row.id, val!)}\n disabled={disabled}\n aria-labelledby={setId(id, column.id) || column.id || id} // TODO - to be reviewed because it doesn't make much sense\n {...dropdownProps}\n />\n );\n },\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n\nexport function hvProgressColumn<\n D extends object = Record<string, unknown>,\n H extends HvTableHeaderRenderer | undefined = HvTableHeaderRenderer,\n>(\n col: HvTableColumnConfig<D, H>,\n getPartial?: (row: HvRowInstance<D, H>) => number,\n getTotal?: (row: HvRowInstance<D, H>) => number,\n color?: \"primary\" | \"secondary\",\n): HvTableColumnConfig<D, H> {\n return {\n Cell: (cellProps: HvCellProps<D, H>) => {\n const { row, column } = cellProps;\n const partial = getPartial?.(row) || 0;\n const total = getTotal?.(row);\n\n if (total) {\n return (\n <HvProgressColumnCell\n partial={partial}\n total={total}\n color={color}\n aria-labelledby={column.id}\n />\n );\n }\n\n return <>—</>;\n },\n\n cellStyle: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n ...col,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -38,7 +38,9 @@ const { staticClasses, useClasses } = createClasses("HvTableSection", {
38
38
  borderBottomRightRadius: "inherit"
39
39
  },
40
40
  [`& .${staticClasses$1.root}`]: {
41
- paddingBottom: 0
41
+ paddingBottom: 0,
42
+ borderTopLeftRadius: "inherit",
43
+ borderTopRightRadius: "inherit"
42
44
  },
43
45
  [`& .${staticClasses$2.head}`]: {
44
46
  backgroundColor: theme.colors.atmo2,
@@ -75,7 +77,9 @@ const { staticClasses, useClasses } = createClasses("HvTableSection", {
75
77
  margin: 0,
76
78
  backgroundColor: theme.colors.atmo2,
77
79
  padding: theme.space.xs,
78
- borderTop: `1px solid ${theme.colors.atmo3}`
80
+ borderTop: `1px solid ${theme.colors.atmo3}`,
81
+ borderBottomLeftRadius: "inherit",
82
+ borderBottomRightRadius: "inherit"
79
83
  },
80
84
  [`& .${staticClasses$6.pageSizeOptions}`]: {
81
85
  left: theme.space.sm
@@ -1 +1 @@
1
- {"version":3,"file":"TableSection.styles.js","sources":["../../../src/TableSection/TableSection.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { bulkActionsClasses } from \"../BulkActions\";\nimport { paginationClasses } from \"../Pagination\";\nimport { tableCellClasses } from \"../Table/TableCell\";\nimport { tableContainerClasses } from \"../Table/TableContainer\";\nimport { tableHeaderClasses } from \"../Table/TableHeader\";\nimport { tableRowClasses } from \"../Table/TableRow\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTableSection\", {\n root: {},\n header: {\n // Only apply the border to divide the header and content when both are displayed\n \"+ div\": {\n borderTop: `1px solid ${theme.colors.atmo3}`,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n },\n },\n actions: {},\n content: {\n marginTop: 0,\n padding: 0,\n\n // Apply border radius to the first child if there's not an header\n \"&:first-of-type\": {\n \"& > :first-of-type\": {\n borderTopLeftRadius: \"inherit\",\n borderTopRightRadius: \"inherit\",\n },\n },\n\n \"& > :last-child\": {\n borderBottomLeftRadius: \"inherit\",\n borderBottomRightRadius: \"inherit\",\n },\n\n [`& .${tableContainerClasses.root}`]: {\n paddingBottom: 0,\n },\n\n [`& .${tableHeaderClasses.head}`]: {\n backgroundColor: theme.colors.atmo2,\n borderBottomColor: theme.colors.atmo3,\n [`&.${tableHeaderClasses.variantCheckbox}`]: {\n borderRight: \"none\",\n },\n [`&.${tableHeaderClasses.variantActions}`]: {\n borderLeft: \"none\",\n },\n },\n\n // Remove border for the last table row\n [`& .${tableRowClasses.root}`]: {\n \"&:last-child\": {\n [`& .${tableCellClasses.root}`]: { borderBottom: \"none\" },\n },\n },\n\n [`& .${tableCellClasses.root}`]: {\n borderBottomColor: theme.colors.atmo3,\n },\n\n [`& .${tableCellClasses.variantCheckbox}`]: {\n borderRight: \"none\",\n },\n\n [`& .${tableCellClasses.variantActions}`]: {\n borderLeft: \"none\",\n },\n\n [`& .${bulkActionsClasses.root}`]: {\n marginBottom: 0,\n border: \"none\",\n borderBottom: `1px solid ${theme.colors.atmo3}`,\n padding: theme.spacing(\"xs\", \"sm\"),\n },\n\n [`& .${paginationClasses.root}`]: {\n margin: 0,\n backgroundColor: theme.colors.atmo2,\n padding: theme.space.xs,\n borderTop: `1px solid ${theme.colors.atmo3}`,\n },\n\n [`& .${paginationClasses.pageSizeOptions}`]: {\n left: theme.space.sm,\n },\n [`& .${paginationClasses.pageSizeHeader}`]: {\n border: \"none\",\n \"&:hover\": {\n border: \"none\",\n },\n },\n },\n hidden: {},\n raisedHeader: {\n \"& $content\": {\n paddingTop: 0,\n },\n },\n hasHeader: {},\n /** @deprecated use `hasHeader` instead */\n spaceTop: {},\n});\n"],"names":["tableContainerClasses","tableHeaderClasses","tableRowClasses","tableCellClasses","bulkActionsClasses","paginationClasses"],"mappings":";;;;;;;;;;;;;;AAUO,MAAM,EAAE,eAAe,eAAe,cAAc,kBAAkB;AAAA,EAC3E,MAAM,CAAC;AAAA,EACP,QAAQ;AAAA;AAAA,IAEN,SAAS;AAAA,MACP,WAAW,aAAa,MAAM,OAAO,KAAK;AAAA,MAC1C,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IAAA;AAAA,EAE1B;AAAA,EACA,SAAS,CAAC;AAAA,EACV,SAAS;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA;AAAA,IAGT,mBAAmB;AAAA,MACjB,sBAAsB;AAAA,QACpB,qBAAqB;AAAA,QACrB,sBAAsB;AAAA,MAAA;AAAA,IAE1B;AAAA,IAEA,mBAAmB;AAAA,MACjB,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAC3B;AAAA,IAEA,CAAC,MAAMA,gBAAsB,IAAI,EAAE,GAAG;AAAA,MACpC,eAAe;AAAA,IACjB;AAAA,IAEA,CAAC,MAAMC,gBAAmB,IAAI,EAAE,GAAG;AAAA,MACjC,iBAAiB,MAAM,OAAO;AAAA,MAC9B,mBAAmB,MAAM,OAAO;AAAA,MAChC,CAAC,KAAKA,gBAAmB,eAAe,EAAE,GAAG;AAAA,QAC3C,aAAa;AAAA,MACf;AAAA,MACA,CAAC,KAAKA,gBAAmB,cAAc,EAAE,GAAG;AAAA,QAC1C,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA;AAAA,IAGA,CAAC,MAAMC,gBAAgB,IAAI,EAAE,GAAG;AAAA,MAC9B,gBAAgB;AAAA,QACd,CAAC,MAAMC,gBAAiB,IAAI,EAAE,GAAG,EAAE,cAAc,OAAO;AAAA,MAAA;AAAA,IAE5D;AAAA,IAEA,CAAC,MAAMA,gBAAiB,IAAI,EAAE,GAAG;AAAA,MAC/B,mBAAmB,MAAM,OAAO;AAAA,IAClC;AAAA,IAEA,CAAC,MAAMA,gBAAiB,eAAe,EAAE,GAAG;AAAA,MAC1C,aAAa;AAAA,IACf;AAAA,IAEA,CAAC,MAAMA,gBAAiB,cAAc,EAAE,GAAG;AAAA,MACzC,YAAY;AAAA,IACd;AAAA,IAEA,CAAC,MAAMC,gBAAmB,IAAI,EAAE,GAAG;AAAA,MACjC,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,MAC7C,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,IACnC;AAAA,IAEA,CAAC,MAAMC,gBAAkB,IAAI,EAAE,GAAG;AAAA,MAChC,QAAQ;AAAA,MACR,iBAAiB,MAAM,OAAO;AAAA,MAC9B,SAAS,MAAM,MAAM;AAAA,MACrB,WAAW,aAAa,MAAM,OAAO,KAAK;AAAA,IAC5C;AAAA,IAEA,CAAC,MAAMA,gBAAkB,eAAe,EAAE,GAAG;AAAA,MAC3C,MAAM,MAAM,MAAM;AAAA,IACpB;AAAA,IACA,CAAC,MAAMA,gBAAkB,cAAc,EAAE,GAAG;AAAA,MAC1C,QAAQ;AAAA,MACR,WAAW;AAAA,QACT,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,EAEJ;AAAA,EACA,QAAQ,CAAC;AAAA,EACT,cAAc;AAAA,IACZ,cAAc;AAAA,MACZ,YAAY;AAAA,IAAA;AAAA,EAEhB;AAAA,EACA,WAAW,CAAC;AAAA;AAAA,EAEZ,UAAU,CAAA;AACZ,CAAC;"}
1
+ {"version":3,"file":"TableSection.styles.js","sources":["../../../src/TableSection/TableSection.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { bulkActionsClasses } from \"../BulkActions\";\nimport { paginationClasses } from \"../Pagination\";\nimport { tableCellClasses } from \"../Table/TableCell\";\nimport { tableContainerClasses } from \"../Table/TableContainer\";\nimport { tableHeaderClasses } from \"../Table/TableHeader\";\nimport { tableRowClasses } from \"../Table/TableRow\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTableSection\", {\n root: {},\n header: {\n // Only apply the border to divide the header and content when both are displayed\n \"+ div\": {\n borderTop: `1px solid ${theme.colors.atmo3}`,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n },\n },\n actions: {},\n content: {\n marginTop: 0,\n padding: 0,\n\n // Apply border radius to the first child if there's not an header\n \"&:first-of-type\": {\n \"& > :first-of-type\": {\n borderTopLeftRadius: \"inherit\",\n borderTopRightRadius: \"inherit\",\n },\n },\n\n \"& > :last-child\": {\n borderBottomLeftRadius: \"inherit\",\n borderBottomRightRadius: \"inherit\",\n },\n\n [`& .${tableContainerClasses.root}`]: {\n paddingBottom: 0,\n borderTopLeftRadius: \"inherit\",\n borderTopRightRadius: \"inherit\",\n },\n\n [`& .${tableHeaderClasses.head}`]: {\n backgroundColor: theme.colors.atmo2,\n borderBottomColor: theme.colors.atmo3,\n [`&.${tableHeaderClasses.variantCheckbox}`]: {\n borderRight: \"none\",\n },\n [`&.${tableHeaderClasses.variantActions}`]: {\n borderLeft: \"none\",\n },\n },\n\n // Remove border for the last table row\n [`& .${tableRowClasses.root}`]: {\n \"&:last-child\": {\n [`& .${tableCellClasses.root}`]: { borderBottom: \"none\" },\n },\n },\n\n [`& .${tableCellClasses.root}`]: {\n borderBottomColor: theme.colors.atmo3,\n },\n\n [`& .${tableCellClasses.variantCheckbox}`]: {\n borderRight: \"none\",\n },\n\n [`& .${tableCellClasses.variantActions}`]: {\n borderLeft: \"none\",\n },\n\n [`& .${bulkActionsClasses.root}`]: {\n marginBottom: 0,\n border: \"none\",\n borderBottom: `1px solid ${theme.colors.atmo3}`,\n padding: theme.spacing(\"xs\", \"sm\"),\n },\n\n [`& .${paginationClasses.root}`]: {\n margin: 0,\n backgroundColor: theme.colors.atmo2,\n padding: theme.space.xs,\n borderTop: `1px solid ${theme.colors.atmo3}`,\n borderBottomLeftRadius: \"inherit\",\n borderBottomRightRadius: \"inherit\",\n },\n\n [`& .${paginationClasses.pageSizeOptions}`]: {\n left: theme.space.sm,\n },\n [`& .${paginationClasses.pageSizeHeader}`]: {\n border: \"none\",\n \"&:hover\": {\n border: \"none\",\n },\n },\n },\n hidden: {},\n raisedHeader: {\n \"& $content\": {\n paddingTop: 0,\n },\n },\n hasHeader: {},\n /** @deprecated use `hasHeader` instead */\n spaceTop: {},\n});\n"],"names":["tableContainerClasses","tableHeaderClasses","tableRowClasses","tableCellClasses","bulkActionsClasses","paginationClasses"],"mappings":";;;;;;;;;;;;;;AAUO,MAAM,EAAE,eAAe,eAAe,cAAc,kBAAkB;AAAA,EAC3E,MAAM,CAAC;AAAA,EACP,QAAQ;AAAA;AAAA,IAEN,SAAS;AAAA,MACP,WAAW,aAAa,MAAM,OAAO,KAAK;AAAA,MAC1C,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IAAA;AAAA,EAE1B;AAAA,EACA,SAAS,CAAC;AAAA,EACV,SAAS;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA;AAAA,IAGT,mBAAmB;AAAA,MACjB,sBAAsB;AAAA,QACpB,qBAAqB;AAAA,QACrB,sBAAsB;AAAA,MAAA;AAAA,IAE1B;AAAA,IAEA,mBAAmB;AAAA,MACjB,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAC3B;AAAA,IAEA,CAAC,MAAMA,gBAAsB,IAAI,EAAE,GAAG;AAAA,MACpC,eAAe;AAAA,MACf,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,IACxB;AAAA,IAEA,CAAC,MAAMC,gBAAmB,IAAI,EAAE,GAAG;AAAA,MACjC,iBAAiB,MAAM,OAAO;AAAA,MAC9B,mBAAmB,MAAM,OAAO;AAAA,MAChC,CAAC,KAAKA,gBAAmB,eAAe,EAAE,GAAG;AAAA,QAC3C,aAAa;AAAA,MACf;AAAA,MACA,CAAC,KAAKA,gBAAmB,cAAc,EAAE,GAAG;AAAA,QAC1C,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA;AAAA,IAGA,CAAC,MAAMC,gBAAgB,IAAI,EAAE,GAAG;AAAA,MAC9B,gBAAgB;AAAA,QACd,CAAC,MAAMC,gBAAiB,IAAI,EAAE,GAAG,EAAE,cAAc,OAAO;AAAA,MAAA;AAAA,IAE5D;AAAA,IAEA,CAAC,MAAMA,gBAAiB,IAAI,EAAE,GAAG;AAAA,MAC/B,mBAAmB,MAAM,OAAO;AAAA,IAClC;AAAA,IAEA,CAAC,MAAMA,gBAAiB,eAAe,EAAE,GAAG;AAAA,MAC1C,aAAa;AAAA,IACf;AAAA,IAEA,CAAC,MAAMA,gBAAiB,cAAc,EAAE,GAAG;AAAA,MACzC,YAAY;AAAA,IACd;AAAA,IAEA,CAAC,MAAMC,gBAAmB,IAAI,EAAE,GAAG;AAAA,MACjC,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,MAC7C,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,IACnC;AAAA,IAEA,CAAC,MAAMC,gBAAkB,IAAI,EAAE,GAAG;AAAA,MAChC,QAAQ;AAAA,MACR,iBAAiB,MAAM,OAAO;AAAA,MAC9B,SAAS,MAAM,MAAM;AAAA,MACrB,WAAW,aAAa,MAAM,OAAO,KAAK;AAAA,MAC1C,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,IAC3B;AAAA,IAEA,CAAC,MAAMA,gBAAkB,eAAe,EAAE,GAAG;AAAA,MAC3C,MAAM,MAAM,MAAM;AAAA,IACpB;AAAA,IACA,CAAC,MAAMA,gBAAkB,cAAc,EAAE,GAAG;AAAA,MAC1C,QAAQ;AAAA,MACR,WAAW;AAAA,QACT,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,EAEJ;AAAA,EACA,QAAQ,CAAC;AAAA,EACT,cAAc;AAAA,IACZ,cAAc;AAAA,MACZ,YAAY;AAAA,IAAA;AAAA,EAEhB;AAAA,EACA,WAAW,CAAC;AAAA;AAAA,EAEZ,UAAU,CAAA;AACZ,CAAC;"}
@@ -1,19 +1,19 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { forwardRef } from "react";
3
- import Chip from "@mui/material/Chip";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { forwardRef, isValidElement, cloneElement } from "react";
4
3
  import { CloseXS, CheckboxCheck, Checkbox } from "@hitachivantara/uikit-react-icons";
5
- import { useDefaultProps, useTheme } from "@hitachivantara/uikit-react-utils";
6
- import { getColor } from "@hitachivantara/uikit-styles";
4
+ import { useDefaultProps, mergeStyles } from "@hitachivantara/uikit-react-utils";
5
+ import { getColor, theme } from "@hitachivantara/uikit-styles";
7
6
  import { useControlled } from "../hooks/useControlled.js";
7
+ import { isDeleteKey } from "../utils/keyboardUtils.js";
8
8
  import { useClasses } from "./Tag.styles.js";
9
9
  import { staticClasses } from "./Tag.styles.js";
10
- const getCategoricalColor = (customColor, colors) => {
11
- return customColor && colors?.[customColor] || customColor || colors?.cat1;
12
- };
10
+ import { HvButtonBase } from "../ButtonBase/ButtonBase.js";
11
+ import { HvTypography } from "../Typography/Typography.js";
13
12
  const HvTag = forwardRef(function HvTag2(props, ref) {
14
13
  const {
15
14
  classes: classesProp,
16
15
  className,
16
+ component,
17
17
  style,
18
18
  label,
19
19
  disabled,
@@ -22,75 +22,95 @@ const HvTag = forwardRef(function HvTag2(props, ref) {
22
22
  selected,
23
23
  defaultSelected = false,
24
24
  color,
25
- deleteIcon,
25
+ deleteIcon: deleteIconProp,
26
26
  onDelete,
27
27
  onClick,
28
+ onKeyDown,
29
+ onKeyUp,
28
30
  // TODO: remove from API
29
31
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
32
  deleteButtonArialLabel = "Delete tag",
31
33
  deleteButtonProps = {},
32
34
  ...others
33
35
  } = useDefaultProps("HvTag", props);
34
- const { colors } = useTheme();
35
- const { classes, cx, css } = useClasses(classesProp);
36
+ const { classes, cx } = useClasses(classesProp);
36
37
  const [isSelected, setIsSelected] = useControlled(
37
38
  selected,
38
39
  Boolean(defaultSelected)
39
40
  );
40
- const defaultDeleteIcon = /* @__PURE__ */ jsx(
41
+ const handleDeleteClick = (event) => {
42
+ event.stopPropagation();
43
+ onDelete?.(event);
44
+ };
45
+ const backgroundColor = type === "semantic" && getColor(color, "neutral_20") || type === "categorical" && theme.alpha(getColor(color, "cat1"), 0.2) || void 0;
46
+ const isClickable = !!(onClick || onDelete || selectable);
47
+ const CheckboxIcon = isSelected ? CheckboxCheck : Checkbox;
48
+ const deleteIcon = deleteIconProp && isValidElement(deleteIconProp) ? cloneElement(deleteIconProp, {
49
+ className: cx(classes.deleteIcon, {
50
+ [classes.disabledDeleteIcon]: disabled
51
+ }),
52
+ onClick: handleDeleteClick
53
+ }) : /* @__PURE__ */ jsx(
41
54
  CloseXS,
42
55
  {
43
- className: cx(classes.button, classes.tagButton),
44
- iconSize: "XS",
56
+ size: "XS",
57
+ onClick: handleDeleteClick,
58
+ className: cx(classes.deleteIcon, classes.button, classes.tagButton),
45
59
  ...deleteButtonProps
46
60
  }
47
61
  );
48
- const categoricalBackgroundColor = type === "categorical" ? getCategoricalColor(color, colors) : void 0;
49
- const backgroundColor = type === "semantic" && getColor(color, "neutral_20") || type === "categorical" && `${categoricalBackgroundColor}30` || void 0;
50
- const isClickable = !!(onClick || onDelete) && !disabled;
51
- const clickableClass = css({
52
- "&:hover": {
53
- boxShadow: `0 0 0 1pt ${categoricalBackgroundColor}`
54
- }
55
- });
56
- const colorOverride = disabled && ["atmo3", "secondary_60"] || void 0;
57
- const avatarIcon = isSelected ? /* @__PURE__ */ jsx(CheckboxCheck, { color: colorOverride, iconSize: "XS" }) : /* @__PURE__ */ jsx(Checkbox, { color: colorOverride, iconSize: "XS" });
58
- return /* @__PURE__ */ jsx(
59
- Chip,
62
+ return /* @__PURE__ */ jsxs(
63
+ HvButtonBase,
60
64
  {
61
65
  ref,
62
- label,
66
+ component: isClickable ? HvButtonBase : "div",
63
67
  disabled,
64
- className: cx({ [clickableClass]: isClickable }, className),
65
- style: {
66
- ...disabled ? null : { backgroundColor },
67
- ...style
68
+ "data-color": color,
69
+ style: mergeStyles(style, {
70
+ "--bgColor": backgroundColor
71
+ }),
72
+ className: cx(classes.root, classes.chipRoot, className, {
73
+ [classes.disabled]: disabled,
74
+ [classes.selected]: isSelected,
75
+ [classes.clickable]: isClickable && !disabled,
76
+ [classes.categorical]: type === "categorical",
77
+ [classes.categoricalFocus]: type === "categorical" && !disabled,
78
+ [classes.categoricalDisabled]: type === "categorical" && disabled
79
+ }),
80
+ onKeyUp: (event) => {
81
+ if (event.currentTarget === event.target && isDeleteKey(event)) {
82
+ onDelete?.(event);
83
+ }
84
+ onKeyUp?.(event);
68
85
  },
69
- classes: {
70
- root: cx(classes.root, classes.chipRoot, {
71
- [classes.disabled]: disabled,
72
- [classes.clickable]: isClickable,
73
- [classes.categorical]: type === "categorical",
74
- [classes.categoricalFocus]: type === "categorical" && !disabled,
75
- [classes.categoricalDisabled]: type === "categorical" && disabled
76
- }),
77
- label: classes.label,
78
- deleteIcon: cx(classes.deleteIcon, {
79
- [classes.disabledDeleteIcon]: disabled
80
- })
81
- },
82
- deleteIcon: deleteIcon || defaultDeleteIcon,
83
- onDelete: disabled ? void 0 : onDelete,
84
86
  onClick: (event) => {
85
87
  if (disabled) return;
86
88
  if (selectable) setIsSelected(!isSelected);
87
89
  onClick?.(event, !isSelected);
88
90
  },
89
- "aria-pressed": isSelected,
90
- ...selectable && type === "semantic" && {
91
- avatar: avatarIcon
92
- },
93
- ...others
91
+ selected: isClickable && isSelected,
92
+ ...others,
93
+ children: [
94
+ selectable && type === "semantic" && /* @__PURE__ */ jsx(
95
+ CheckboxIcon,
96
+ {
97
+ className: classes.icon,
98
+ color: disabled && ["atmo3", "secondary_60"] || void 0,
99
+ size: "XS"
100
+ }
101
+ ),
102
+ /* @__PURE__ */ jsx(
103
+ HvTypography,
104
+ {
105
+ noWrap: true,
106
+ variant: "caption2",
107
+ component: "span",
108
+ className: classes.label,
109
+ children: label
110
+ }
111
+ ),
112
+ onDelete && deleteIcon
113
+ ]
94
114
  }
95
115
  );
96
116
  });