@centreon/ui 23.10.121 → 24.4.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 (374) hide show
  1. package/package.json +64 -45
  2. package/public/mockServiceWorker.js +2 -2
  3. package/src/ActionsList/ActionsList.styles.ts +40 -71
  4. package/src/Button/Icon/index.stories.tsx +1 -1
  5. package/src/Button/Icon/index.tsx +2 -2
  6. package/src/Button/Save/StartIcon.tsx +3 -3
  7. package/src/Button/Save/index.tsx +9 -5
  8. package/src/Checkbox/Checkbox.tsx +2 -2
  9. package/src/Checkbox/CheckboxGroup/index.tsx +2 -2
  10. package/src/Checkbox/fonts/roboto-bold-webfont.ttf +0 -0
  11. package/src/Checkbox/fonts/roboto-bold-webfont.woff +0 -0
  12. package/src/Checkbox/fonts/roboto-bold-webfont.woff2 +0 -0
  13. package/src/Checkbox/fonts/roboto-light-webfont.ttf +0 -0
  14. package/src/Checkbox/fonts/roboto-light-webfont.woff +0 -0
  15. package/src/Checkbox/fonts/roboto-light-webfont.woff2 +0 -0
  16. package/src/Checkbox/fonts/roboto-medium-webfont.ttf +0 -0
  17. package/src/Checkbox/fonts/roboto-medium-webfont.woff +0 -0
  18. package/src/Checkbox/fonts/roboto-medium-webfont.woff2 +0 -0
  19. package/src/Checkbox/fonts/roboto-regular-webfont.ttf +0 -0
  20. package/src/Checkbox/fonts/roboto-regular-webfont.woff +0 -0
  21. package/src/Checkbox/fonts/roboto-regular-webfont.woff2 +0 -0
  22. package/src/Dashboard/Dashboard.styles.ts +6 -5
  23. package/src/Dashboard/Item.tsx +1 -1
  24. package/src/Dashboard/Layout.tsx +2 -2
  25. package/src/Dashboard/utils.ts +1 -1
  26. package/src/Dialog/Confirm/index.tsx +10 -2
  27. package/src/Dialog/UnsavedChanges/index.tsx +21 -20
  28. package/src/Dialog/UnsavedChanges/translatedLabels.ts +4 -6
  29. package/src/Dialog/index.tsx +9 -2
  30. package/src/FallbackPage/FallbackPage.tsx +3 -3
  31. package/src/FileDropZone/index.tsx +3 -1
  32. package/src/Form/Form.cypress.spec.tsx +133 -0
  33. package/src/Form/Inputs/Grid.tsx +8 -4
  34. package/src/Form/Inputs/List/Content.tsx +62 -0
  35. package/src/Form/Inputs/List/List.styles.ts +29 -0
  36. package/src/Form/Inputs/List/List.tsx +58 -0
  37. package/src/Form/Inputs/List/useList.ts +81 -0
  38. package/src/Form/Inputs/Text.tsx +3 -1
  39. package/src/Form/Inputs/index.tsx +3 -1
  40. package/src/Form/Inputs/models.ts +23 -13
  41. package/src/Graph/BarStack/BarStack.cypress.spec.tsx +217 -0
  42. package/src/Graph/BarStack/BarStack.stories.tsx +125 -0
  43. package/src/Graph/BarStack/BarStack.styles.ts +66 -0
  44. package/src/Graph/BarStack/BarStack.tsx +14 -0
  45. package/src/Graph/BarStack/Graph.tsx +176 -0
  46. package/src/Graph/BarStack/GraphAndLegend.tsx +119 -0
  47. package/src/Graph/BarStack/ResponsiveBarStack.tsx +114 -0
  48. package/src/Graph/BarStack/constants.ts +5 -0
  49. package/src/Graph/BarStack/index.ts +1 -0
  50. package/src/Graph/BarStack/models.ts +19 -0
  51. package/src/Graph/BarStack/useGraphAndLegend.ts +86 -0
  52. package/src/Graph/BarStack/useResponsiveBarStack.ts +106 -0
  53. package/src/Graph/Gauge/Gauge.cypress.spec.tsx +102 -0
  54. package/src/Graph/Gauge/Gauge.tsx +1 -1
  55. package/src/Graph/HeatMap/HeatMap.cypress.spec.tsx +145 -0
  56. package/src/Graph/HeatMap/HeatMap.stories.tsx +0 -25
  57. package/src/Graph/HeatMap/HeatMap.styles.tsx +1 -0
  58. package/src/Graph/HeatMap/ResponsiveHeatMap.tsx +39 -12
  59. package/src/Graph/HeatMap/model.ts +6 -1
  60. package/src/Graph/Legend/Legend.styles.ts +10 -0
  61. package/src/Graph/Legend/Legend.tsx +26 -0
  62. package/src/Graph/Legend/index.ts +1 -0
  63. package/src/Graph/Legend/models.ts +11 -0
  64. package/src/Graph/LineChart/BasicComponents/Lines/RegularLines/index.tsx +2 -1
  65. package/src/Graph/LineChart/BasicComponents/Lines/StackedLines/index.tsx +3 -4
  66. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx +2 -2
  67. package/src/Graph/LineChart/BasicComponents/ThresholdLine.tsx +3 -1
  68. package/src/Graph/LineChart/BasicComponents/Thresholds.tsx +2 -2
  69. package/src/Graph/LineChart/BasicComponents/useFilterLines.ts +3 -5
  70. package/src/Graph/LineChart/Header/index.tsx +3 -31
  71. package/src/Graph/LineChart/Icons/Downtime.tsx +3 -3
  72. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx +2 -2
  73. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTickGraph.ts +9 -11
  74. package/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx +1 -1
  75. package/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/GraphValueTooltip.tsx +68 -0
  76. package/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltip.ts +27 -0
  77. package/src/Graph/LineChart/InteractiveComponents/GraphValueTooltip/useGraphValueTooltipStyles.ts +31 -0
  78. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/index.tsx +2 -1
  79. package/src/Graph/LineChart/InteractiveComponents/index.tsx +132 -17
  80. package/src/Graph/LineChart/InteractiveComponents/interactionWithGraphAtoms.ts +7 -27
  81. package/src/Graph/LineChart/Legend/Legend.styles.ts +85 -32
  82. package/src/Graph/LineChart/Legend/LegendContent.tsx +12 -6
  83. package/src/Graph/LineChart/Legend/LegendHeader.tsx +66 -27
  84. package/src/Graph/LineChart/Legend/index.tsx +43 -46
  85. package/src/Graph/LineChart/Legend/models.ts +5 -0
  86. package/src/Graph/LineChart/Legend/useLegend.ts +12 -13
  87. package/src/Graph/LineChart/LineChart.cypress.spec.tsx +144 -0
  88. package/src/Graph/LineChart/LineChart.styles.ts +8 -0
  89. package/src/Graph/LineChart/LineChart.tsx +125 -123
  90. package/src/Graph/LineChart/LoadingSkeleton.tsx +2 -2
  91. package/src/Graph/LineChart/helpers/doc.ts +16 -13
  92. package/src/Graph/LineChart/helpers/index.ts +1 -1
  93. package/src/Graph/LineChart/index.stories.tsx +17 -2
  94. package/src/Graph/LineChart/index.tsx +6 -7
  95. package/src/Graph/LineChart/mockedData/curvesWithSameColor.json +252 -0
  96. package/src/Graph/LineChart/mockedData/lastDayWithIncompleteValues.json +1320 -0
  97. package/src/Graph/LineChart/mockedData/lastDayWithNullValues.json +1314 -0
  98. package/src/Graph/LineChart/models.ts +12 -1
  99. package/src/Graph/LineChart/useLineChartData.ts +68 -18
  100. package/src/Graph/PieChart/PieChart.cypress.spec.tsx +154 -0
  101. package/src/Graph/PieChart/PieChart.stories.tsx +194 -0
  102. package/src/Graph/PieChart/PieChart.styles.ts +39 -0
  103. package/src/Graph/PieChart/PieChart.tsx +14 -0
  104. package/src/Graph/PieChart/ResponsivePie.tsx +245 -0
  105. package/src/Graph/PieChart/index.ts +1 -0
  106. package/src/Graph/PieChart/models.ts +20 -0
  107. package/src/Graph/PieChart/useResponsivePie.ts +81 -0
  108. package/src/Graph/SingleBar/SingleBar.cypress.spec.tsx +121 -0
  109. package/src/Graph/SingleBar/Thresholds.tsx +2 -2
  110. package/src/Graph/Text/Text.cypress.spec.tsx +101 -0
  111. package/src/Graph/Text/Text.stories.tsx +60 -4
  112. package/src/Graph/Text/Text.styles.ts +12 -1
  113. package/src/Graph/Text/Text.tsx +17 -12
  114. package/src/Graph/Tree/DescendantNodes.tsx +88 -0
  115. package/src/Graph/Tree/Links.tsx +64 -0
  116. package/src/Graph/Tree/StandaloneTree.tsx +32 -0
  117. package/src/Graph/Tree/Tree.cypress.spec.tsx +171 -0
  118. package/src/Graph/Tree/Tree.stories.tsx +144 -0
  119. package/src/Graph/Tree/Tree.tsx +116 -0
  120. package/src/Graph/Tree/constants.ts +2 -0
  121. package/src/Graph/Tree/index.ts +4 -0
  122. package/src/Graph/Tree/models.ts +52 -0
  123. package/src/Graph/Tree/stories/contents.tsx +164 -0
  124. package/src/Graph/Tree/stories/datas.ts +305 -0
  125. package/src/Graph/Tree/utils.ts +49 -0
  126. package/src/Graph/common/testUtils.ts +71 -0
  127. package/src/Graph/common/timeSeries/index.ts +53 -15
  128. package/src/Graph/common/utils.ts +69 -1
  129. package/src/Graph/index.ts +4 -0
  130. package/src/Icon/BaseIcon.tsx +32 -0
  131. package/src/Icon/DowntimeIcon.tsx +14 -0
  132. package/src/InputField/Number/Number.cypress.spec.tsx +85 -0
  133. package/src/InputField/Number/Number.stories.tsx +66 -0
  134. package/src/InputField/Number/Number.tsx +74 -0
  135. package/src/InputField/Search/index.tsx +2 -2
  136. package/src/InputField/Select/Autocomplete/Connected/Multi/index.test.tsx +22 -1
  137. package/src/InputField/Select/Autocomplete/Connected/index.test.tsx +3 -2
  138. package/src/InputField/Select/Autocomplete/Connected/index.tsx +35 -17
  139. package/src/InputField/Select/Autocomplete/Draggable/SortableList.tsx +1 -1
  140. package/src/InputField/Select/Autocomplete/Draggable/SortableListContent.tsx +1 -1
  141. package/src/InputField/Select/Autocomplete/Draggable/index.tsx +1 -1
  142. package/src/InputField/Select/Autocomplete/Multi/index.stories.tsx +19 -0
  143. package/src/InputField/Select/Autocomplete/Multi/index.tsx +12 -7
  144. package/src/InputField/Select/Autocomplete/index.tsx +129 -116
  145. package/src/InputField/Select/IconPopover/index.tsx +3 -3
  146. package/src/InputField/Select/index.tsx +15 -2
  147. package/src/InputField/Text/index.tsx +53 -46
  148. package/src/Listing/ActionBar/index.tsx +11 -10
  149. package/src/Listing/Cell/DataCell.styles.ts +3 -0
  150. package/src/Listing/Cell/DataCell.tsx +23 -5
  151. package/src/Listing/Header/ListingHeader.tsx +1 -1
  152. package/src/Listing/Listing.cypress.spec.tsx +218 -33
  153. package/src/Listing/Listing.styles.ts +4 -7
  154. package/src/Listing/Row/Row.tsx +7 -3
  155. package/src/Listing/index.stories.tsx +39 -5
  156. package/src/Listing/index.test.tsx +1 -1
  157. package/src/Listing/index.tsx +207 -149
  158. package/src/Listing/models.ts +1 -0
  159. package/src/Listing/useStyleTable.ts +1 -0
  160. package/src/Module/LicensedModule/LicenseCheck/index.tsx +24 -9
  161. package/src/Module/LicensedModule/index.tsx +7 -1
  162. package/src/Module/Module.cypress.spec.tsx +129 -0
  163. package/src/Module/index.tsx +2 -4
  164. package/src/Panel/index.tsx +1 -1
  165. package/src/PopoverMenu/index.tsx +9 -8
  166. package/src/RichTextEditor/ContentEditable.tsx +195 -195
  167. package/src/RichTextEditor/RichTextEditor.cypress.spec.tsx +100 -52
  168. package/src/RichTextEditor/RichTextEditor.tsx +21 -4
  169. package/src/RichTextEditor/plugins/ToolbarPlugin/AlignPicker.tsx +21 -20
  170. package/src/RichTextEditor/plugins/ToolbarPlugin/BlockButtons.tsx +35 -77
  171. package/src/RichTextEditor/plugins/ToolbarPlugin/FormatButtons.tsx +29 -83
  172. package/src/RichTextEditor/plugins/ToolbarPlugin/LinkButton.tsx +106 -0
  173. package/src/RichTextEditor/plugins/ToolbarPlugin/ListButton.tsx +155 -0
  174. package/src/RichTextEditor/plugins/ToolbarPlugin/MacrosButton.tsx +23 -39
  175. package/src/RichTextEditor/plugins/ToolbarPlugin/ToolbarPlugin.styles.ts +24 -14
  176. package/src/RichTextEditor/plugins/ToolbarPlugin/UndoRedoButtons.tsx +6 -0
  177. package/src/RichTextEditor/plugins/ToolbarPlugin/index.tsx +5 -10
  178. package/src/RichTextEditor/translatedLabels.ts +3 -0
  179. package/src/SortableItems/index.tsx +2 -7
  180. package/src/StoryBookThemeProvider/index.tsx +35 -36
  181. package/src/ThemeProvider/index.tsx +39 -12
  182. package/src/ThemeProvider/palettes.ts +15 -12
  183. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +6 -7
  184. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/PickersStartEndDate.tsx +10 -6
  185. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/models.ts +0 -2
  186. package/src/TimePeriods/DateTimePickerInput.tsx +59 -19
  187. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +12 -9
  188. package/src/TimePeriods/TimePeriods.cypress.spec.tsx +9 -33
  189. package/src/TimePeriods/helpers/index.ts +1 -1
  190. package/src/TimePeriods/index.stories.tsx +12 -4
  191. package/src/TimePeriods/index.tsx +2 -2
  192. package/src/TopCounterElements/TopCounterLayout.tsx +3 -0
  193. package/src/TopCounterElements/useCloseOnLegacyPage.tsx +42 -0
  194. package/src/Typography/FluidTypography/FluidTypography.cypress.spec.tsx +27 -0
  195. package/src/Typography/FluidTypography/index.stories.tsx +2 -2
  196. package/src/Typography/FluidTypography/index.tsx +21 -28
  197. package/src/Typography/Subtitle.tsx +55 -0
  198. package/src/api/QueryProvider.tsx +1 -1
  199. package/src/api/TestQueryProvider.tsx +1 -1
  200. package/src/api/buildListingEndpoint/getSearchQueryParameterValue.ts +7 -1
  201. package/src/api/buildListingEndpoint/models.ts +3 -1
  202. package/src/api/customFetch.ts +12 -3
  203. package/src/api/index.ts +3 -3
  204. package/src/api/useFetchQuery/index.ts +49 -28
  205. package/src/api/useGraphQuery/index.ts +26 -5
  206. package/src/api/useGraphQuery/models.ts +5 -0
  207. package/src/api/useMutationQuery/index.test.ts +4 -4
  208. package/src/api/useMutationQuery/index.ts +65 -20
  209. package/src/components/Button/Icon/IconButton.tsx +6 -2
  210. package/src/components/CollapsibleItem/CollapsibleItem.cypress.spec.tsx +76 -0
  211. package/src/components/CollapsibleItem/CollapsibleItem.stories.tsx +26 -0
  212. package/src/components/CollapsibleItem/CollapsibleItem.tsx +43 -14
  213. package/src/components/CollapsibleItem/useCollapsibleItemStyles.ts +24 -1
  214. package/src/components/DataTable/DataListing.tsx +6 -0
  215. package/src/components/DataTable/DataTable.cypress.spec.tsx +174 -0
  216. package/src/components/DataTable/DataTable.stories.tsx +40 -0
  217. package/src/components/DataTable/DataTable.styles.ts +3 -0
  218. package/src/components/DataTable/DataTable.tsx +3 -3
  219. package/src/components/DataTable/Item/DataTableItem.styles.ts +7 -2
  220. package/src/components/DataTable/Item/DataTableItem.tsx +4 -60
  221. package/src/components/DataTable/index.ts +3 -1
  222. package/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx +373 -0
  223. package/src/components/Form/AccessRights/AccessRights.stories.tsx +119 -0
  224. package/src/components/Form/AccessRights/AccessRights.styles.ts +10 -0
  225. package/src/components/Form/AccessRights/AccessRights.tsx +60 -0
  226. package/src/components/Form/AccessRights/Actions/Actions.styles.ts +14 -0
  227. package/src/components/Form/AccessRights/Actions/Actions.tsx +81 -0
  228. package/src/components/Form/AccessRights/Actions/useActions.ts +79 -0
  229. package/src/components/Form/AccessRights/List/Item.tsx +90 -0
  230. package/src/components/Form/AccessRights/List/List.styles.tsx +45 -0
  231. package/src/components/Form/AccessRights/List/List.tsx +52 -0
  232. package/src/components/Form/AccessRights/List/ListItemSkeleton.tsx +18 -0
  233. package/src/components/Form/AccessRights/List/ListSkeleton.tsx +22 -0
  234. package/src/components/Form/AccessRights/List/RemoveAccessRight.tsx +38 -0
  235. package/src/components/Form/AccessRights/List/StateChip.tsx +28 -0
  236. package/src/components/Form/AccessRights/List/useItem.ts +64 -0
  237. package/src/components/Form/AccessRights/Provider.tsx +15 -0
  238. package/src/components/Form/AccessRights/ShareInput/ContactSwitch.tsx +50 -0
  239. package/src/components/Form/AccessRights/ShareInput/ShareInput.styles.ts +17 -0
  240. package/src/components/Form/AccessRights/ShareInput/ShareInput.tsx +78 -0
  241. package/src/components/Form/AccessRights/ShareInput/useShareInput.tsx +113 -0
  242. package/src/components/Form/AccessRights/Stats/Stats.tsx +36 -0
  243. package/src/components/Form/AccessRights/atoms.ts +97 -0
  244. package/src/components/Form/AccessRights/common/RoleSelectField.styles.tsx +7 -0
  245. package/src/components/Form/AccessRights/common/RoleSelectField.tsx +45 -0
  246. package/src/components/Form/AccessRights/models.ts +55 -0
  247. package/src/components/Form/AccessRights/storiesData.ts +222 -0
  248. package/src/components/Form/AccessRights/useAccessRightsInitValues.ts +51 -0
  249. package/src/components/Form/Dashboard/DashboardDuplicationForm.tsx +85 -0
  250. package/src/components/Form/Dashboard/DashboardForm.tsx +15 -12
  251. package/src/components/Form/Dashboard/index.ts +1 -0
  252. package/src/components/Form/FormActions.tsx +7 -2
  253. package/src/components/Form/index.ts +2 -1
  254. package/src/components/ItemComposition/Item.tsx +1 -1
  255. package/src/components/ItemComposition/ItemComposition.cypress.spec.tsx +113 -0
  256. package/src/components/ItemComposition/ItemComposition.stories.tsx +14 -0
  257. package/src/components/ItemComposition/ItemComposition.styles.ts +36 -3
  258. package/src/components/ItemComposition/ItemComposition.tsx +41 -17
  259. package/src/components/Layout/PageLayout/PageLayout.tsx +1 -1
  260. package/src/components/Layout/PageLayout/PageLayoutActions.tsx +1 -0
  261. package/src/components/Layout/PageLayout/PageLayoutBody.tsx +1 -0
  262. package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +5 -1
  263. package/src/components/Layout/PageLayout/PageQuickAccess.tsx +76 -0
  264. package/src/components/Layout/PageLayout/index.ts +3 -1
  265. package/src/components/Layout/PageLayout.cypress.spec.tsx +66 -0
  266. package/src/components/List/Item/ListItem.styles.ts +6 -0
  267. package/src/components/List/Item/ListItem.tsx +6 -4
  268. package/src/components/List/Item/Text.tsx +5 -3
  269. package/src/components/Menu/Button/MenuButton.tsx +4 -2
  270. package/src/components/Menu/MenuItem.tsx +5 -3
  271. package/src/components/Menu/MenuItems.tsx +4 -3
  272. package/src/components/Modal/ConfirmationModal/ConfirmationModal.cypress.spec.tsx +168 -0
  273. package/src/components/Modal/ConfirmationModal/ConfirmationModal.stories.tsx +62 -0
  274. package/src/components/Modal/ConfirmationModal/ConfirmationModal.tsx +87 -0
  275. package/src/components/Modal/Modal.styles.ts +10 -2
  276. package/src/components/Modal/ModalActions.tsx +4 -2
  277. package/src/components/Modal/index.ts +2 -0
  278. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.stories.tsx +3 -3
  279. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.tsx +1 -1
  280. package/src/components/Tooltip/ConfirmationTooltip/models.ts +1 -1
  281. package/src/components/Zoom/Minimap.tsx +127 -0
  282. package/src/components/Zoom/Zoom.cypress.spec.tsx +246 -0
  283. package/src/components/Zoom/Zoom.stories.tsx +115 -0
  284. package/src/components/Zoom/Zoom.styles.tsx +68 -0
  285. package/src/components/Zoom/Zoom.tsx +61 -0
  286. package/src/components/Zoom/ZoomContent.tsx +167 -0
  287. package/src/components/Zoom/constants.ts +2 -0
  288. package/src/components/Zoom/localPoint.ts +51 -0
  289. package/src/components/Zoom/models.ts +25 -0
  290. package/src/components/Zoom/useMinimap.ts +156 -0
  291. package/src/components/Zoom/useZoom.ts +70 -0
  292. package/src/components/Zoom/utils.ts +55 -0
  293. package/src/components/index.ts +1 -0
  294. package/src/fonts/roboto-bold-webfont.ttf +0 -0
  295. package/src/fonts/roboto-bold-webfont.woff +0 -0
  296. package/src/fonts/roboto-bold-webfont.woff2 +0 -0
  297. package/src/fonts/roboto-light-webfont.ttf +0 -0
  298. package/src/fonts/roboto-light-webfont.woff +0 -0
  299. package/src/fonts/roboto-light-webfont.woff2 +0 -0
  300. package/src/fonts/roboto-medium-webfont.ttf +0 -0
  301. package/src/fonts/roboto-medium-webfont.woff +0 -0
  302. package/src/fonts/roboto-medium-webfont.woff2 +0 -0
  303. package/src/fonts/roboto-regular-webfont.ttf +0 -0
  304. package/src/fonts/roboto-regular-webfont.woff +0 -0
  305. package/src/fonts/roboto-regular-webfont.woff2 +0 -0
  306. package/src/index.ts +6 -0
  307. package/src/queryParameters/url/index.ts +5 -1
  308. package/src/utils/index.ts +25 -22
  309. package/src/utils/useFullscreen/Fullscreen.cypress.spec.tsx +133 -0
  310. package/src/utils/useFullscreen/atoms.ts +3 -0
  311. package/src/utils/useFullscreen/index.ts +2 -0
  312. package/src/utils/useFullscreen/translatedLabels.ts +1 -0
  313. package/src/utils/useFullscreen/useFullscreen.ts +73 -0
  314. package/src/utils/useFullscreen/useFullscreenListener.ts +62 -0
  315. package/src/utils/useInfiniteScrollListing.ts +31 -8
  316. package/src/utils/{useLicenseExpirationWarning.cypress.spec.tsx → useLicenseExpirationWarning.test.tsx} +48 -37
  317. package/src/utils/useLicenseExpirationWarning.ts +18 -18
  318. package/src/utils/useLocale/index.ts +10 -0
  319. package/src/utils/useLocale/useLocale.cypress.spec.tsx +40 -0
  320. package/src/utils/useLocaleDateTimeFormat/index.ts +8 -2
  321. package/src/utils/usePluralizedTranslation.ts +21 -0
  322. package/src/@assets/icons/downtime.icon.svg +0 -1
  323. package/src/Graph/LineChart/BasicComponents/LoadingProgress.tsx +0 -46
  324. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/TooltipAnchorPoint.tsx +0 -96
  325. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTooltipAnchorPoint.ts +0 -107
  326. package/src/Graph/LineChart/Legend/InteractiveValue.tsx +0 -22
  327. package/src/Graph/LineChart/Legend/Marker.tsx +0 -43
  328. package/src/Graph/LineChart/Legend/useInteractiveValues.ts +0 -99
  329. package/src/Typography/FluidTypography/useFluidResizeObserver.ts +0 -56
  330. package/src/components/Form/AccessRights/AccessRights.resource.ts +0 -45
  331. package/src/components/Form/AccessRights/AccessRightsForm.stories.tsx +0 -59
  332. package/src/components/Form/AccessRights/AccessRightsForm.styles.ts +0 -21
  333. package/src/components/Form/AccessRights/AccessRightsForm.tsx +0 -67
  334. package/src/components/Form/AccessRights/AccessRightsFormActions.tsx +0 -80
  335. package/src/components/Form/AccessRights/Input/AddAction.tsx +0 -31
  336. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.stories.tsx +0 -54
  337. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.tsx +0 -72
  338. package/src/components/Form/AccessRights/Input/ContactAccessRightsInput.styles.ts +0 -22
  339. package/src/components/Form/AccessRights/Input/ContactInputField.tsx +0 -105
  340. package/src/components/Form/AccessRights/Input/RoleInputField.tsx +0 -29
  341. package/src/components/Form/AccessRights/List/ContactAccessRightsList.stories.tsx +0 -97
  342. package/src/components/Form/AccessRights/List/ContactAccessRightsList.styles.ts +0 -71
  343. package/src/components/Form/AccessRights/List/ContactAccessRightsList.tsx +0 -51
  344. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.stories.tsx +0 -116
  345. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.tsx +0 -118
  346. package/src/components/Form/AccessRights/List/ContactAccessRightsListItemSkeleton.tsx +0 -26
  347. package/src/components/Form/AccessRights/List/ContactAccessRightsListSkeleton.tsx +0 -28
  348. package/src/components/Form/AccessRights/Stats/AccessRightsStats.styles.ts +0 -18
  349. package/src/components/Form/AccessRights/Stats/AccessRightsStats.tsx +0 -41
  350. package/src/components/Form/AccessRights/__fixtures__/contactAccessRight.mock.ts +0 -52
  351. package/src/components/Form/AccessRights/common/GroupLabel.styles.ts +0 -18
  352. package/src/components/Form/AccessRights/common/GroupLabel.tsx +0 -15
  353. package/src/components/Form/AccessRights/common/Input.styles.ts +0 -48
  354. package/src/components/Form/AccessRights/common/RoleInputSelect.styles.ts +0 -11
  355. package/src/components/Form/AccessRights/common/RoleInputSelect.tsx +0 -57
  356. package/src/components/Form/AccessRights/index.ts +0 -3
  357. package/src/components/Form/AccessRights/useAccessRightsForm.test.tsx +0 -531
  358. package/src/components/Form/AccessRights/useAccessRightsForm.tsx +0 -282
  359. package/src/components/Form/AccessRights/useAccessRightsForm.utils.ts +0 -41
  360. package/src/screens/dashboard/DashboardsDetail.stories.tsx +0 -108
  361. package/src/screens/dashboard/DashboardsOverview.stories.tsx +0 -281
  362. package/src/utils/useDateTimePickerAdapter.ts +0 -309
  363. /package/{public → src/Button}/fonts/roboto-bold-webfont.ttf +0 -0
  364. /package/{public → src/Button}/fonts/roboto-bold-webfont.woff +0 -0
  365. /package/{public → src/Button}/fonts/roboto-bold-webfont.woff2 +0 -0
  366. /package/{public → src/Button}/fonts/roboto-light-webfont.ttf +0 -0
  367. /package/{public → src/Button}/fonts/roboto-light-webfont.woff +0 -0
  368. /package/{public → src/Button}/fonts/roboto-light-webfont.woff2 +0 -0
  369. /package/{public → src/Button}/fonts/roboto-medium-webfont.ttf +0 -0
  370. /package/{public → src/Button}/fonts/roboto-medium-webfont.woff +0 -0
  371. /package/{public → src/Button}/fonts/roboto-medium-webfont.woff2 +0 -0
  372. /package/{public → src/Button}/fonts/roboto-regular-webfont.ttf +0 -0
  373. /package/{public → src/Button}/fonts/roboto-regular-webfont.woff +0 -0
  374. /package/{public → src/Button}/fonts/roboto-regular-webfont.woff2 +0 -0
@@ -40,7 +40,7 @@ const useStyles = makeStyles()((theme) => ({
40
40
  }));
41
41
 
42
42
  const ComponentColumn = ({ row, isSelected }): JSX.Element => (
43
- <>
43
+ <div style={{ display: 'flex', flexDirection: 'row', flexWrap: 'wrap' }}>
44
44
  <span>
45
45
  {'I am '}
46
46
  <b>{`${isSelected ? 'selected' : 'not selected'}`}</b>
@@ -50,7 +50,7 @@ const ComponentColumn = ({ row, isSelected }): JSX.Element => (
50
50
  {'I am '}
51
51
  <b>{`${row.active ? 'active' : 'not active'}`}</b>
52
52
  </span>
53
- </>
53
+ </div>
54
54
  );
55
55
 
56
56
  const ButtonColumn = ({ row }): JSX.Element => (
@@ -366,6 +366,16 @@ const columnsWithSubItems = [
366
366
  }
367
367
  ];
368
368
 
369
+ const TemplateSubItems = (args): JSX.Element => {
370
+ const { classes } = useStyles();
371
+
372
+ return (
373
+ <div className={classes.listing}>
374
+ <Listing {...args} />
375
+ </div>
376
+ );
377
+ };
378
+
369
379
  export const ListingWithSubItems = {
370
380
  args: {
371
381
  checkable: true,
@@ -377,10 +387,34 @@ export const ListingWithSubItems = {
377
387
  subItems: {
378
388
  canCheckSubItems: false,
379
389
  enable: true,
390
+ getRowProperty: () => 'subItems',
380
391
  labelCollapse: 'Collapse',
381
- labelExpand: 'Expand',
382
- rowProperty: 'subItems'
392
+ labelExpand: 'Expand'
383
393
  },
384
394
  totalRows: 10
385
- }
395
+ },
396
+ render: TemplateSubItems
397
+ };
398
+
399
+ export const ListingWithResponsive = {
400
+ args: {
401
+ checkable: true,
402
+ columns: [
403
+ ...defaultColumns,
404
+ {
405
+ Component: ComponentColumn,
406
+ id: '##',
407
+ label: 'Responsive',
408
+ type: ColumnType.component,
409
+ width: '140px'
410
+ }
411
+ ],
412
+ currentPage: 1,
413
+ isResponsive: true,
414
+ limit: 10,
415
+ loading: false,
416
+ rows: listingWithSubItems,
417
+ totalRows: 10
418
+ },
419
+ render: TemplateSubItems
386
420
  };
@@ -216,7 +216,7 @@ describe('Listing', () => {
216
216
  <Listing
217
217
  columnConfiguration={{
218
218
  selectedColumnIds: columns.map(prop('id')),
219
- sortable: false
219
+ sortable: true
220
220
  }}
221
221
  columns={columns}
222
222
  rows={rows}
@@ -18,7 +18,6 @@ import {
18
18
  map,
19
19
  not,
20
20
  pick,
21
- pluck,
22
21
  prop,
23
22
  propEq,
24
23
  reduce,
@@ -58,6 +57,8 @@ import { SkeletonLoader } from './Row/SkeletonLoaderRows';
58
57
  import { ListingHeader } from './Header';
59
58
  import { subItemsPivotsAtom } from './tableAtoms';
60
59
 
60
+ const subItemPrefixKey = 'listing';
61
+
61
62
  const getVisibleColumns = ({
62
63
  columnConfiguration,
63
64
  columns
@@ -69,7 +70,7 @@ const getVisibleColumns = ({
69
70
  }
70
71
 
71
72
  return selectedColumnIds.map((id) =>
72
- columns.find(propEq('id', id))
73
+ columns.find(propEq(id, 'id'))
73
74
  ) as Array<Column>;
74
75
  };
75
76
 
@@ -93,13 +94,16 @@ export interface Props<TRow> {
93
94
  columnConfiguration?: ColumnConfiguration;
94
95
  columns: Array<Column>;
95
96
  currentPage?: number;
97
+ customListingComponent?: JSX.Element;
96
98
  customPaginationClassName?: string;
97
99
  disableRowCheckCondition?: (row) => boolean;
98
100
  disableRowCondition?: (row) => boolean;
101
+ displayCustomListing?: boolean;
99
102
  getHighlightRowCondition?: (row: TRow) => boolean;
100
103
  getId?: (row: TRow) => RowId;
101
104
  headerMemoProps?: Array<unknown>;
102
105
  innerScrollDisabled?: boolean;
106
+ isResponsive?: boolean;
103
107
  limit?: number;
104
108
  listingVariant?: ListingVariant;
105
109
  loading?: boolean;
@@ -121,9 +125,9 @@ export interface Props<TRow> {
121
125
  subItems?: {
122
126
  canCheckSubItems: boolean;
123
127
  enable: boolean;
128
+ getRowProperty: (row?) => string;
124
129
  labelCollapse: string;
125
130
  labelExpand: string;
126
- rowProperty: string;
127
131
  };
128
132
  totalRows?: number;
129
133
  viewerModeConfiguration?: ViewerModeConfiguration;
@@ -137,12 +141,15 @@ const defaultColumnConfiguration = {
137
141
 
138
142
  export const performanceRowsLimit = 60;
139
143
 
140
- const Listing = <TRow extends { id: RowId }>({
144
+ const Listing = <TRow extends { id: RowId; internalListingParentId?: RowId }>({
145
+ customListingComponent,
146
+ displayCustomListing,
141
147
  limit = 10,
142
148
  visualizationActions,
143
149
  columns,
144
150
  columnConfiguration = defaultColumnConfiguration,
145
151
  customPaginationClassName,
152
+ isResponsive = false,
146
153
  onResetColumns,
147
154
  onSelectColumns,
148
155
  rows = [],
@@ -176,9 +183,9 @@ const Listing = <TRow extends { id: RowId }>({
176
183
  subItems = {
177
184
  canCheckSubItems: false,
178
185
  enable: false,
186
+ getRowProperty: () => '',
179
187
  labelCollapse: 'Collapse',
180
- labelExpand: 'Expand',
181
- rowProperty: ''
188
+ labelExpand: 'Expand'
182
189
  }
183
190
  }: Props<TRow>): JSX.Element => {
184
191
  const currentVisibleColumns = getVisibleColumns({
@@ -205,16 +212,38 @@ const Listing = <TRow extends { id: RowId }>({
205
212
 
206
213
  const subItemsPivots = useAtomValue(subItemsPivotsAtom);
207
214
 
215
+ const allSubItemIds = React.useMemo(
216
+ () =>
217
+ reduce<TRow | number, Array<string | number>>(
218
+ (acc, row) => [
219
+ ...acc,
220
+ ...(row[subItems?.getRowProperty() || ''] || []).map(
221
+ ({ id }) => `${subItemPrefixKey}_${getId(row)}_${id}`
222
+ )
223
+ ],
224
+ [],
225
+ rows
226
+ ),
227
+ [rows, subItems]
228
+ );
229
+
208
230
  const rowsToDisplay = React.useMemo(
209
231
  () =>
210
232
  subItems?.enable
211
233
  ? reduce<TRow, Array<TRow>>(
212
234
  (acc, row): Array<TRow> => {
213
235
  if (
214
- row[subItems.rowProperty] &&
236
+ row[subItems.getRowProperty()] &&
215
237
  subItemsPivots.includes(row.id)
216
238
  ) {
217
- return [...acc, row, ...row[subItems.rowProperty]];
239
+ return [
240
+ ...acc,
241
+ row,
242
+ ...row[subItems.getRowProperty()].map((subRow) => ({
243
+ ...subRow,
244
+ internalListingParentId: row.id
245
+ }))
246
+ ];
218
247
  }
219
248
 
220
249
  return [...acc, row];
@@ -226,11 +255,28 @@ const Listing = <TRow extends { id: RowId }>({
226
255
  [rows, subItemsPivots, subItems]
227
256
  );
228
257
 
258
+ const getSubItemRowId = React.useCallback((row: TRow) => {
259
+ return `${subItemPrefixKey}_${row.internalListingParentId}_${row.id}`;
260
+ }, []);
261
+
262
+ const getIsSubItem = React.useCallback(
263
+ (row: TRow) => {
264
+ return allSubItemIds.includes(getSubItemRowId(row));
265
+ },
266
+ [allSubItemIds]
267
+ );
268
+
269
+ const getRowId = React.useCallback(
270
+ (row: TRow) => {
271
+ return getIsSubItem(row) ? getSubItemRowId(row) : getId(row);
272
+ },
273
+ [allSubItemIds]
274
+ );
275
+
229
276
  const { classes } = useListingStyles({
230
277
  dataStyle,
231
278
  getGridTemplateColumn,
232
- limit,
233
- listingVariant,
279
+ isResponsive,
234
280
  rows: rowsToDisplay
235
281
  });
236
282
 
@@ -250,7 +296,7 @@ const Listing = <TRow extends { id: RowId }>({
250
296
  event.target.checked &&
251
297
  event.target.getAttribute('data-indeterminate') === 'false'
252
298
  ) {
253
- onSelectRows(reject(disableRowCheckCondition, rows));
299
+ onSelectRows(reject(disableRowCheckCondition, rowsToDisplay));
254
300
  setLastSelectionIndex(null);
255
301
 
256
302
  return;
@@ -322,7 +368,11 @@ const Listing = <TRow extends { id: RowId }>({
322
368
  const selectRowsWithShiftKey = (selectedRowIndex: number): void => {
323
369
  const lastSelectedIndex = lastSelectionIndex as number;
324
370
  if (isNil(shiftKeyDownRowPivot)) {
325
- const selectedRowsFromTheStart = slice(0, selectedRowIndex + 1, rows);
371
+ const selectedRowsFromTheStart = slice(
372
+ 0,
373
+ selectedRowIndex + 1,
374
+ rowsToDisplay
375
+ );
326
376
 
327
377
  onSelectRows(reject(disableRowCheckCondition, selectedRowsFromTheStart));
328
378
 
@@ -331,7 +381,10 @@ const Listing = <TRow extends { id: RowId }>({
331
381
 
332
382
  const selectedRowsIndex = map(
333
383
  (row) =>
334
- findIndex((listingRow) => equals(getId(row), getId(listingRow)), rows),
384
+ findIndex(
385
+ (listingRow) => equals(getId(row), getId(listingRow)),
386
+ rowsToDisplay
387
+ ),
335
388
  selectedRows
336
389
  ).sort(subtract);
337
390
 
@@ -339,7 +392,7 @@ const Listing = <TRow extends { id: RowId }>({
339
392
  const newSelection = slice(
340
393
  selectedRowIndex,
341
394
  (lastSelectionIndex as number) + 1,
342
- rows
395
+ rowsToDisplay
343
396
  );
344
397
  onSelectRows(
345
398
  reject(
@@ -358,7 +411,11 @@ const Listing = <TRow extends { id: RowId }>({
358
411
  return;
359
412
  }
360
413
 
361
- const newSelection = slice(lastSelectedIndex, selectedRowIndex + 1, rows);
414
+ const newSelection = slice(
415
+ lastSelectedIndex,
416
+ selectedRowIndex + 1,
417
+ rowsToDisplay
418
+ );
362
419
  onSelectRows(
363
420
  reject(
364
421
  disableRowCheckCondition,
@@ -382,7 +439,7 @@ const Listing = <TRow extends { id: RowId }>({
382
439
 
383
440
  const selectedRowIndex = findIndex(
384
441
  (listingRow) => equals(getId(row), getId(listingRow)),
385
- rows
442
+ rowsToDisplay
386
443
  );
387
444
 
388
445
  if (isShiftKeyDown) {
@@ -409,10 +466,10 @@ const Listing = <TRow extends { id: RowId }>({
409
466
  };
410
467
 
411
468
  const hoverRow = (row): void => {
412
- if (equals(hoveredRowId, getId(row))) {
469
+ if (equals(hoveredRowId, getRowId(row))) {
413
470
  return;
414
471
  }
415
- setHoveredRowId(getId(row));
472
+ setHoveredRowId(getRowId(row));
416
473
  };
417
474
 
418
475
  const clearHoveredRow = (): void => {
@@ -423,8 +480,6 @@ const Listing = <TRow extends { id: RowId }>({
423
480
  return selectedRowsInclude(row);
424
481
  };
425
482
 
426
- const emptyRows = limit - Math.min(limit, totalRows - currentPage * limit);
427
-
428
483
  const changeLimit = (updatedLimit: string): void => {
429
484
  onLimitChange?.(Number(updatedLimit));
430
485
  };
@@ -445,19 +500,6 @@ const Listing = <TRow extends { id: RowId }>({
445
500
 
446
501
  const areColumnsEditable = not(isNil(onSelectColumns));
447
502
 
448
- const allSubItemIds = React.useMemo(
449
- () =>
450
- reduce<TRow | number, Array<string | number>>(
451
- (acc, row) => [
452
- ...acc,
453
- ...pluck('id', row[subItems?.rowProperty || ''] || [])
454
- ],
455
- [],
456
- rows
457
- ),
458
- [rows, subItems]
459
- );
460
-
461
503
  return (
462
504
  <div className={classes.listingContainer}>
463
505
  {loading && rows.length > 0 && (
@@ -495,6 +537,7 @@ const Listing = <TRow extends { id: RowId }>({
495
537
  onSelectColumns={onSelectColumns}
496
538
  />
497
539
  </div>
540
+
498
541
  <ParentSize
499
542
  parentSizeStyles={{
500
543
  height: '100%',
@@ -510,132 +553,147 @@ const Listing = <TRow extends { id: RowId }>({
510
553
  height: innerScrollDisabled ? '100%' : `calc(${height}px - 4px)`
511
554
  }}
512
555
  >
513
- <Table
514
- stickyHeader
515
- className={classes.table}
516
- component="div"
517
- role={undefined}
518
- size="small"
519
- >
520
- <ListingHeader
521
- areColumnsEditable={areColumnsEditable}
522
- checkable={checkable}
523
- columnConfiguration={columnConfiguration}
524
- columns={columns}
525
- listingVariant={listingVariant}
526
- memoProps={headerMemoProps}
527
- predefinedRowsSelection={predefinedRowsSelection}
528
- rowCount={limit - emptyRows}
529
- selectedRowCount={selectedRows.length}
530
- sortField={sortField}
531
- sortOrder={sortOrder}
532
- onSelectAllClick={selectAllRows}
533
- onSelectColumns={onSelectColumns}
534
- onSelectRowsWithCondition={onSelectRowsWithCondition}
535
- onSort={onSort}
536
- />
537
-
538
- <TableBody
539
- className={classes.tableBody}
556
+ {displayCustomListing ? (
557
+ customListingComponent
558
+ ) : (
559
+ <Table
560
+ stickyHeader
561
+ className={classes.table}
540
562
  component="div"
541
- onMouseLeave={clearHoveredRow}
563
+ role={undefined}
564
+ size="small"
542
565
  >
543
- {rowsToDisplay.map((row, index) => {
544
- const isRowSelected = isSelected(row);
545
- const isRowHovered = equals(hoveredRowId, getId(row));
546
- const isSubItem = allSubItemIds.includes(row.id);
547
-
548
- return (
549
- <ListingRow
550
- checkable={
551
- checkable && (!isSubItem || subItems.canCheckSubItems)
552
- }
553
- columnConfiguration={columnConfiguration}
554
- columnIds={columns.map(prop('id'))}
555
- disableRowCondition={disableRowCondition}
556
- isHovered={isRowHovered}
557
- isSelected={isRowSelected}
558
- isShiftKeyDown={isShiftKeyDown}
559
- key={
560
- gte(limit, performanceRowsLimit)
561
- ? `row_${index}`
562
- : getId(row)
563
- }
564
- lastSelectionIndex={lastSelectionIndex}
565
- limit={limit}
566
- listingVariant={listingVariant}
567
- row={row}
568
- rowColorConditions={rowColorConditions}
569
- shiftKeyDownRowPivot={shiftKeyDownRowPivot}
570
- subItemsPivots={subItemsPivots}
571
- tabIndex={-1}
572
- visibleColumns={visibleColumns}
573
- onClick={(): void => {
574
- onRowClick(row);
575
- }}
576
- onFocus={(): void => hoverRow(row)}
577
- onMouseOver={(): void => hoverRow(row)}
578
- >
579
- {checkable &&
580
- (!isSubItem || subItems.canCheckSubItems ? (
581
- <Cell
582
- align="left"
583
- className={classes.checkbox}
584
- disableRowCondition={disableRowCondition}
585
- isRowHovered={isRowHovered}
586
- row={row}
587
- rowColorConditions={rowColorConditions}
588
- onClick={(event): void => selectRow(event, row)}
589
- >
590
- <Checkbox
591
- checked={isRowSelected}
592
- disabled={
593
- disableRowCheckCondition(row) ||
594
- disableRowCondition(row)
566
+ <ListingHeader
567
+ areColumnsEditable={areColumnsEditable}
568
+ checkable={checkable}
569
+ columnConfiguration={columnConfiguration}
570
+ columns={columns}
571
+ listingVariant={listingVariant}
572
+ memoProps={headerMemoProps}
573
+ predefinedRowsSelection={predefinedRowsSelection}
574
+ rowCount={rowsToDisplay.length}
575
+ selectedRowCount={selectedRows.length}
576
+ sortField={sortField}
577
+ sortOrder={sortOrder}
578
+ onSelectAllClick={selectAllRows}
579
+ onSelectColumns={onSelectColumns}
580
+ onSelectRowsWithCondition={onSelectRowsWithCondition}
581
+ onSort={onSort}
582
+ />
583
+
584
+ <TableBody
585
+ className={classes.tableBody}
586
+ component="div"
587
+ onMouseLeave={clearHoveredRow}
588
+ >
589
+ {rowsToDisplay.map((row, index) => {
590
+ const isRowSelected = isSelected(row);
591
+ const isSubItem = allSubItemIds.includes(
592
+ getSubItemRowId(row)
593
+ );
594
+ const isRowHovered = equals(hoveredRowId, getRowId(row));
595
+
596
+ return (
597
+ <ListingRow
598
+ checkable={
599
+ checkable &&
600
+ (!isSubItem || subItems.canCheckSubItems)
601
+ }
602
+ columnConfiguration={columnConfiguration}
603
+ columnIds={columns.map(prop('id'))}
604
+ disableRowCondition={disableRowCondition}
605
+ isHovered={isRowHovered}
606
+ isSelected={isRowSelected}
607
+ isShiftKeyDown={isShiftKeyDown}
608
+ key={
609
+ gte(limit, performanceRowsLimit)
610
+ ? `row_${index}`
611
+ : getRowId(row)
612
+ }
613
+ lastSelectionIndex={lastSelectionIndex}
614
+ limit={limit}
615
+ listingVariant={listingVariant}
616
+ row={row}
617
+ rowColorConditions={rowColorConditions}
618
+ shiftKeyDownRowPivot={shiftKeyDownRowPivot}
619
+ subItemsPivots={subItemsPivots}
620
+ tabIndex={-1}
621
+ visibleColumns={visibleColumns}
622
+ onClick={
623
+ isSubItem
624
+ ? undefined
625
+ : (): void => {
626
+ onRowClick(row);
595
627
  }
596
- inputProps={{
597
- 'aria-label': `Select row ${getId(row)}`
598
- }}
628
+ }
629
+ onFocus={(): void => hoverRow(row)}
630
+ onMouseOver={(): void => hoverRow(row)}
631
+ >
632
+ {checkable &&
633
+ (!isSubItem || subItems.canCheckSubItems ? (
634
+ <Cell
635
+ align="left"
636
+ className={classes.checkbox}
637
+ disableRowCondition={disableRowCondition}
638
+ isRowHovered={isRowHovered}
639
+ row={row}
640
+ rowColorConditions={rowColorConditions}
641
+ onClick={(event): void => selectRow(event, row)}
642
+ >
643
+ <Checkbox
644
+ checked={isRowSelected}
645
+ disabled={
646
+ disableRowCheckCondition(row) ||
647
+ disableRowCondition(row)
648
+ }
649
+ inputProps={{
650
+ 'aria-label': `Select row ${getId(row)}`
651
+ }}
652
+ />
653
+ </Cell>
654
+ ) : (
655
+ <Cell
656
+ align="left"
657
+ disableRowCondition={disableRowCondition}
658
+ isRowHovered={isRowHovered}
659
+ row={row}
660
+ rowColorConditions={rowColorConditions}
599
661
  />
600
- </Cell>
601
- ) : (
602
- <Cell
603
- align="left"
662
+ ))}
663
+
664
+ {visibleColumns.map((column) => (
665
+ <DataCell
666
+ column={column}
604
667
  disableRowCondition={disableRowCondition}
668
+ getHighlightRowCondition={
669
+ getHighlightRowCondition
670
+ }
605
671
  isRowHovered={isRowHovered}
672
+ isRowSelected={isRowSelected}
673
+ key={`${getId(row)}-${column.id}`}
674
+ labelCollapse={subItems.labelCollapse}
675
+ labelExpand={subItems.labelExpand}
676
+ listingVariant={listingVariant}
606
677
  row={row}
607
678
  rowColorConditions={rowColorConditions}
679
+ subItemsRowProperty={subItems?.getRowProperty(
680
+ row
681
+ )}
608
682
  />
609
683
  ))}
610
-
611
- {visibleColumns.map((column) => (
612
- <DataCell
613
- column={column}
614
- disableRowCondition={disableRowCondition}
615
- getHighlightRowCondition={getHighlightRowCondition}
616
- isRowHovered={isRowHovered}
617
- isRowSelected={isRowSelected}
618
- key={`${getId(row)}-${column.id}`}
619
- labelCollapse={subItems.labelCollapse}
620
- labelExpand={subItems.labelExpand}
621
- listingVariant={listingVariant}
622
- row={row}
623
- rowColorConditions={rowColorConditions}
624
- subItemsRowProperty={subItems?.rowProperty}
625
- />
626
- ))}
627
- </ListingRow>
628
- );
629
- })}
630
-
631
- {rows.length < 1 &&
632
- (loading ? (
633
- <SkeletonLoader rows={limit} />
634
- ) : (
635
- <EmptyResult label={t(labelNoResultFound)} />
636
- ))}
637
- </TableBody>
638
- </Table>
684
+ </ListingRow>
685
+ );
686
+ })}
687
+
688
+ {rows.length < 1 &&
689
+ (loading ? (
690
+ <SkeletonLoader rows={limit} />
691
+ ) : (
692
+ <EmptyResult label={t(labelNoResultFound)} />
693
+ ))}
694
+ </TableBody>
695
+ </Table>
696
+ )}
639
697
  </Box>
640
698
  )}
641
699
  </ParentSize>
@@ -15,6 +15,7 @@ export interface ComponentColumnProps {
15
15
 
16
16
  export interface Column {
17
17
  Component?: (props: ComponentColumnProps) => JSX.Element | null;
18
+ align?: 'start' | 'end' | 'center';
18
19
  clickable?: boolean;
19
20
  compact?: boolean;
20
21
  disablePadding?: boolean;
@@ -53,6 +53,7 @@ const useStyleTable = ({
53
53
  const checkbox = checkable ? 'fit-content(1rem) ' : ''; // SelectAction (checkbox) cell adjusts to content
54
54
 
55
55
  const columnTemplate = currentVisibleColumns
56
+ ?.filter((column) => column)
56
57
  ?.map(({ width, shortLabel }) => {
57
58
  if (!isNil(shortLabel)) {
58
59
  return 'min-content';