@centreon/ui 24.4.15 → 24.4.17

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 (545) hide show
  1. package/.storybook/main.js +82 -0
  2. package/.storybook/preview.tsx +21 -0
  3. package/README.md +14 -44
  4. package/jest.config.js +20 -0
  5. package/package.json +34 -104
  6. package/{test/setupTests.js → setupTests.js} +1 -1
  7. package/src/ActionsList/index.stories.tsx +0 -74
  8. package/src/ActionsList/index.tsx +21 -58
  9. package/src/Button/Icon/index.tsx +3 -12
  10. package/src/Button/Save/Content.tsx +9 -26
  11. package/src/Button/Save/StartIcon.tsx +3 -3
  12. package/src/Button/Save/index.stories.tsx +5 -10
  13. package/src/Button/Save/index.tsx +4 -11
  14. package/src/Dialog/Confirm/index.tsx +4 -17
  15. package/src/Dialog/Duplicate/index.test.tsx +1 -1
  16. package/src/Dialog/index.tsx +2 -14
  17. package/src/FallbackPage/FallbackPage.tsx +2 -2
  18. package/src/FileDropZone/index.tsx +2 -4
  19. package/src/Form/CollapsibleGroup.tsx +5 -15
  20. package/src/Form/FormButtons.tsx +4 -2
  21. package/src/Form/Inputs/Autocomplete.tsx +1 -1
  22. package/src/Form/Inputs/ConnectedAutocomplete.tsx +1 -3
  23. package/src/Form/Inputs/Grid.tsx +2 -4
  24. package/src/Form/Inputs/Radio.tsx +5 -16
  25. package/src/Form/Inputs/Switch.tsx +1 -1
  26. package/src/Form/Inputs/Text.tsx +7 -18
  27. package/src/Form/Inputs/index.tsx +16 -34
  28. package/src/Form/Inputs/models.ts +4 -28
  29. package/src/Form/{Form.stories.tsx → index.stories.tsx} +3 -2
  30. package/src/Form/{Form.tsx → index.tsx} +16 -38
  31. package/src/Form/storiesData.tsx +3 -50
  32. package/src/Home.stories.mdx +84 -1
  33. package/src/Image/Image.tsx +1 -11
  34. package/src/Image/index.stories.tsx +2 -2
  35. package/src/Image/index.test.tsx +3 -3
  36. package/src/InputField/Search/PersistentTooltip.tsx +6 -10
  37. package/src/InputField/Select/Autocomplete/Connected/Multi/index.test.tsx +22 -4
  38. package/src/InputField/Select/Autocomplete/Connected/index.stories.tsx +3 -0
  39. package/src/InputField/Select/Autocomplete/Connected/index.test.tsx +7 -4
  40. package/src/InputField/Select/Autocomplete/Connected/index.tsx +12 -44
  41. package/src/InputField/Select/Autocomplete/Draggable/SortableList.tsx +1 -1
  42. package/src/InputField/Select/Autocomplete/Draggable/SortableListContent.tsx +1 -1
  43. package/src/InputField/Select/Autocomplete/Draggable/index.stories.tsx +2 -0
  44. package/src/InputField/Select/Autocomplete/Draggable/index.tsx +1 -1
  45. package/src/InputField/Select/Autocomplete/Multi/index.tsx +15 -32
  46. package/src/InputField/Select/Autocomplete/index.stories.tsx +10 -1
  47. package/src/InputField/Select/Autocomplete/index.tsx +2 -5
  48. package/src/InputField/Select/IconPopover/index.tsx +2 -2
  49. package/src/InputField/Select/index.tsx +2 -3
  50. package/src/InputField/Text/index.tsx +9 -19
  51. package/src/Listing/ActionBar/index.tsx +8 -15
  52. package/src/Listing/Cell/DataCell.tsx +68 -43
  53. package/src/Listing/Cell/index.tsx +8 -88
  54. package/src/Listing/Header/{_internals/PredefinedSelectionList.tsx → PredefinedSelectionList.tsx} +1 -1
  55. package/src/Listing/Header/{Cell/ListingHeaderCell.tsx → SortableCell/Content.tsx} +83 -18
  56. package/src/Listing/Header/SortableCell/DraggableIcon.tsx +41 -0
  57. package/src/Listing/Header/{ListingHeader.tsx → index.tsx} +106 -29
  58. package/src/Listing/{Row/Row.tsx → Row.tsx} +11 -12
  59. package/src/Listing/Skeleton.tsx +11 -0
  60. package/src/Listing/index.stories.tsx +40 -155
  61. package/src/Listing/index.test.tsx +1 -1
  62. package/src/Listing/index.tsx +263 -217
  63. package/src/Listing/models.ts +0 -1
  64. package/src/Listing/tableAtoms.ts +10 -15
  65. package/src/Listing/useStyleTable.ts +9 -9
  66. package/src/ListingPage/index.stories.tsx +8 -21
  67. package/src/ListingPage/index.tsx +38 -20
  68. package/src/Logo/CentreonLogo.tsx +2 -2
  69. package/src/Module/LicensedModule/LicenseCheck/index.stories.tsx +2 -0
  70. package/src/Panel/Memoized.tsx +1 -1
  71. package/src/Panel/Section/index.test.tsx +1 -1
  72. package/src/Panel/Section/index.tsx +1 -1
  73. package/src/Panel/index.tsx +6 -10
  74. package/src/PopoverMenu/index.tsx +4 -18
  75. package/src/RichTextEditor/ContentEditable.tsx +24 -70
  76. package/src/RichTextEditor/RichTextEditor.tsx +47 -172
  77. package/src/RichTextEditor/index.stories.tsx +0 -14
  78. package/src/RichTextEditor/plugins/AutoLinkPlugin/index.tsx +5 -53
  79. package/src/RichTextEditor/plugins/FloatingLinkEditorPlugin.tsx +16 -54
  80. package/src/RichTextEditor/plugins/ToolbarPlugin/FormatButtons.tsx +92 -31
  81. package/src/RichTextEditor/plugins/ToolbarPlugin/UndoRedoButtons.tsx +3 -13
  82. package/src/RichTextEditor/plugins/ToolbarPlugin/index.tsx +10 -35
  83. package/src/RichTextEditor/translatedLabels.ts +0 -3
  84. package/src/Snackbar/index.tsx +4 -14
  85. package/src/Snackbar/useSnackbar.tsx +1 -5
  86. package/src/SortableItems/SortableItem.tsx +2 -3
  87. package/src/SortableItems/index.tsx +7 -2
  88. package/src/ThemeProvider/index.tsx +10 -42
  89. package/src/ThemeProvider/palettes.ts +201 -422
  90. package/src/Typography/{Typography.stories.tsx → index.stories.tsx} +5 -5
  91. package/src/WallpaperPage/index.stories.tsx +1 -1
  92. package/src/Wizard/ActionsBar.test.tsx +1 -1
  93. package/src/Wizard/WizardContent.tsx +3 -2
  94. package/src/Wizard/index.stories.tsx +18 -5
  95. package/src/Wizard/index.test.tsx +1 -1
  96. package/src/Wizard/index.tsx +5 -20
  97. package/src/Wizard/models.ts +0 -7
  98. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-listing-loading-with-no-data-1-snap.png +0 -0
  99. package/src/api/QueryProvider.tsx +1 -1
  100. package/src/api/TestQueryProvider.tsx +1 -2
  101. package/src/api/buildListingEndpoint/getSearchQueryParameterValue.ts +26 -35
  102. package/src/api/buildListingEndpoint/index.test.ts +2 -2
  103. package/src/api/buildListingEndpoint/index.ts +1 -1
  104. package/src/api/buildListingEndpoint/models.ts +2 -2
  105. package/src/api/customFetch.ts +3 -22
  106. package/src/api/useFetchQuery/index.ts +37 -56
  107. package/src/api/useMutationQuery/index.ts +22 -70
  108. package/src/api/useRequest/index.ts +6 -9
  109. package/src/index.ts +21 -31
  110. package/src/queryParameters/url/index.ts +1 -5
  111. package/src/storyshots.test.js +52 -0
  112. package/{test → src}/testRenderer.tsx +1 -1
  113. package/src/utils/getNormalizedId.ts +3 -1
  114. package/src/utils/useCopyToClipboard.ts +3 -2
  115. package/src/utils/useDebounce.ts +5 -8
  116. package/src/utils/useDeepCallback.ts +3 -1
  117. package/src/utils/useDeepMemo.ts +3 -1
  118. package/src/utils/useIntersectionObserver.ts +5 -5
  119. package/src/utils/useKeyObserver.tsx +3 -1
  120. package/src/utils/useLocaleDateTimeFormat/index.test.tsx +1 -1
  121. package/src/utils/useLocaleDateTimeFormat/index.ts +2 -4
  122. package/src/utils/useLocaleDateTimeFormat/localeFallback.test.tsx +1 -1
  123. package/src/utils/useMemoComponent.ts +1 -1
  124. package/testRunner.js +36 -0
  125. package/tsconfig.json +29 -0
  126. package/types/declarations.d.ts +9 -0
  127. package/public/README.md +0 -39
  128. package/public/mockServiceWorker.js +0 -303
  129. package/src/@assets/README.md +0 -5
  130. package/src/@assets/brand/centreon-logo-one-line-dark.svg +0 -1
  131. package/src/@assets/brand/centreon-logo-one-line-light.svg +0 -1
  132. package/src/@assets/icons/downtime.icon.svg +0 -1
  133. package/src/@types/aria-attributes.d.ts +0 -10
  134. package/src/@types/data-attributes.d.ts +0 -3
  135. package/src/@types/globals.d.ts +0 -9
  136. package/src/@types/vite-env.d.ts +0 -2
  137. package/src/ActionsList/ActionsList.styles.ts +0 -116
  138. package/src/ActionsList/models.ts +0 -8
  139. package/src/Checkbox/Checkbox.tsx +0 -109
  140. package/src/Checkbox/CheckboxGroup/index.stories.tsx +0 -41
  141. package/src/Checkbox/CheckboxGroup/index.tsx +0 -75
  142. package/src/Checkbox/index.stories.tsx +0 -39
  143. package/src/Checkbox/index.tsx +0 -2
  144. package/src/Dashboard/Dashboard.styles.ts +0 -108
  145. package/src/Dashboard/DashboardLayout.stories.tsx +0 -104
  146. package/src/Dashboard/Grid.tsx +0 -70
  147. package/src/Dashboard/Item.tsx +0 -100
  148. package/src/Dashboard/Layout.tsx +0 -79
  149. package/src/Dashboard/index.tsx +0 -9
  150. package/src/Dashboard/utils.ts +0 -28
  151. package/src/Form/Form.cypress.spec.tsx +0 -133
  152. package/src/Form/Form.styles.ts +0 -11
  153. package/src/Form/Inputs/Checkbox.tsx +0 -57
  154. package/src/Form/Inputs/CheckboxGroup.tsx +0 -73
  155. package/src/Form/Inputs/List/Content.tsx +0 -62
  156. package/src/Form/Inputs/List/List.styles.ts +0 -29
  157. package/src/Form/Inputs/List/List.tsx +0 -58
  158. package/src/Form/Inputs/List/useList.ts +0 -81
  159. package/src/Form/index.ts +0 -1
  160. package/src/Graph/Gauge/AnimatedPie.tsx +0 -102
  161. package/src/Graph/Gauge/Gauge.stories.tsx +0 -159
  162. package/src/Graph/Gauge/Gauge.tsx +0 -41
  163. package/src/Graph/Gauge/PieData.tsx +0 -63
  164. package/src/Graph/Gauge/ResponsiveGauge.tsx +0 -148
  165. package/src/Graph/Gauge/Thresholds.tsx +0 -117
  166. package/src/Graph/Gauge/index.ts +0 -1
  167. package/src/Graph/Gauge/models.ts +0 -20
  168. package/src/Graph/HeatMap/HeatMap.stories.tsx +0 -105
  169. package/src/Graph/HeatMap/HeatMap.styles.tsx +0 -29
  170. package/src/Graph/HeatMap/HeatMap.tsx +0 -12
  171. package/src/Graph/HeatMap/HeatMapData.json +0 -137
  172. package/src/Graph/HeatMap/ResponsiveHeatMap.tsx +0 -98
  173. package/src/Graph/HeatMap/index.ts +0 -1
  174. package/src/Graph/HeatMap/model.ts +0 -33
  175. package/src/Graph/LineChart/BasicComponents/Axes/UnitLabel.tsx +0 -20
  176. package/src/Graph/LineChart/BasicComponents/Axes/index.tsx +0 -88
  177. package/src/Graph/LineChart/BasicComponents/Axes/models.ts +0 -26
  178. package/src/Graph/LineChart/BasicComponents/Axes/useAxisY.ts +0 -100
  179. package/src/Graph/LineChart/BasicComponents/Grids/index.tsx +0 -20
  180. package/src/Graph/LineChart/BasicComponents/Lines/RegularLines/index.tsx +0 -99
  181. package/src/Graph/LineChart/BasicComponents/Lines/RegularLines/useRegularLines.ts +0 -15
  182. package/src/Graph/LineChart/BasicComponents/Lines/StackedLines/index.tsx +0 -81
  183. package/src/Graph/LineChart/BasicComponents/Lines/StackedLines/useStackedLines.ts +0 -39
  184. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/BasicThreshold.tsx +0 -53
  185. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx +0 -43
  186. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx +0 -78
  187. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithVariation.tsx +0 -63
  188. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/helpers/index.ts +0 -69
  189. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx +0 -143
  190. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/models.ts +0 -105
  191. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/useCoordinateCircle.ts +0 -46
  192. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/useScaleThreshold.ts +0 -171
  193. package/src/Graph/LineChart/BasicComponents/Lines/index.tsx +0 -189
  194. package/src/Graph/LineChart/BasicComponents/Lines/models.ts +0 -45
  195. package/src/Graph/LineChart/BasicComponents/LoadingProgress.tsx +0 -46
  196. package/src/Graph/LineChart/BasicComponents/ThresholdLine.tsx +0 -64
  197. package/src/Graph/LineChart/BasicComponents/Thresholds.tsx +0 -77
  198. package/src/Graph/LineChart/BasicComponents/useFilterLines.ts +0 -60
  199. package/src/Graph/LineChart/Header/index.tsx +0 -65
  200. package/src/Graph/LineChart/Icons/Downtime.tsx +0 -9
  201. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx +0 -45
  202. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx +0 -66
  203. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx +0 -76
  204. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/TooltipAnchorPoint.tsx +0 -96
  205. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/index.tsx +0 -20
  206. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/models.ts +0 -62
  207. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTickGraph.ts +0 -94
  208. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTooltipAnchorPoint.ts +0 -107
  209. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Area.tsx +0 -114
  210. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Line.tsx +0 -103
  211. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx +0 -80
  212. package/src/Graph/LineChart/InteractiveComponents/Annotations/Area/Downtime.tsx +0 -27
  213. package/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx +0 -61
  214. package/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Acknowledgement.tsx +0 -27
  215. package/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Comments.tsx +0 -25
  216. package/src/Graph/LineChart/InteractiveComponents/Annotations/annotationsAtoms.ts +0 -183
  217. package/src/Graph/LineChart/InteractiveComponents/Annotations/index.tsx +0 -49
  218. package/src/Graph/LineChart/InteractiveComponents/Annotations/models.ts +0 -25
  219. package/src/Graph/LineChart/InteractiveComponents/Annotations/useAnnotation.ts +0 -56
  220. package/src/Graph/LineChart/InteractiveComponents/Bar.tsx +0 -21
  221. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftIcon.tsx +0 -62
  222. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftZone.tsx +0 -74
  223. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/index.tsx +0 -85
  224. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/models.ts +0 -12
  225. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/useTimeShiftZones.ts +0 -72
  226. package/src/Graph/LineChart/InteractiveComponents/Tooltip/index.tsx +0 -59
  227. package/src/Graph/LineChart/InteractiveComponents/Tooltip/models.ts +0 -9
  228. package/src/Graph/LineChart/InteractiveComponents/Tooltip/useGraphTooltip.ts +0 -67
  229. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/index.tsx +0 -38
  230. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/models.ts +0 -9
  231. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/useZoomPreview.ts +0 -107
  232. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/zoomPreviewAtoms.ts +0 -3
  233. package/src/Graph/LineChart/InteractiveComponents/index.tsx +0 -168
  234. package/src/Graph/LineChart/InteractiveComponents/interactionWithGraphAtoms.ts +0 -52
  235. package/src/Graph/LineChart/Legend/InteractiveValue.tsx +0 -22
  236. package/src/Graph/LineChart/Legend/Legend.styles.ts +0 -117
  237. package/src/Graph/LineChart/Legend/LegendContent.tsx +0 -33
  238. package/src/Graph/LineChart/Legend/LegendHeader.tsx +0 -93
  239. package/src/Graph/LineChart/Legend/index.tsx +0 -201
  240. package/src/Graph/LineChart/Legend/models.ts +0 -16
  241. package/src/Graph/LineChart/Legend/useInteractiveValues.ts +0 -99
  242. package/src/Graph/LineChart/Legend/useLegend.ts +0 -104
  243. package/src/Graph/LineChart/LineChart.styles.ts +0 -45
  244. package/src/Graph/LineChart/LineChart.tsx +0 -317
  245. package/src/Graph/LineChart/LoadingSkeleton.tsx +0 -44
  246. package/src/Graph/LineChart/common/index.ts +0 -35
  247. package/src/Graph/LineChart/graphAtoms.ts +0 -3
  248. package/src/Graph/LineChart/helpers/doc.ts +0 -563
  249. package/src/Graph/LineChart/helpers/index.ts +0 -63
  250. package/src/Graph/LineChart/index.stories.tsx +0 -480
  251. package/src/Graph/LineChart/index.tsx +0 -115
  252. package/src/Graph/LineChart/mockedData/annotationData.json +0 -326
  253. package/src/Graph/LineChart/mockedData/exclusionPeriodFirstPeriod.json +0 -588
  254. package/src/Graph/LineChart/mockedData/exclusionPeriodSecondPeriod.json +0 -588
  255. package/src/Graph/LineChart/mockedData/exclusionPeriodThirdPeriod.json +0 -581
  256. package/src/Graph/LineChart/mockedData/lastDay.json +0 -1326
  257. package/src/Graph/LineChart/mockedData/lastDayAreaStack.json +0 -3106
  258. package/src/Graph/LineChart/mockedData/lastDayForward.json +0 -1338
  259. package/src/Graph/LineChart/mockedData/lastDayThreshold.json +0 -2352
  260. package/src/Graph/LineChart/mockedData/lastMonth.json +0 -1674
  261. package/src/Graph/LineChart/mockedData/lastWeek.json +0 -2202
  262. package/src/Graph/LineChart/mockedData/zoomPreview.json +0 -742
  263. package/src/Graph/LineChart/models.ts +0 -146
  264. package/src/Graph/LineChart/translatedLabels.ts +0 -9
  265. package/src/Graph/LineChart/useLineChartData.ts +0 -49
  266. package/src/Graph/LineChart/useLineChartIntersection.ts +0 -36
  267. package/src/Graph/SingleBar/ResponsiveSingleBar.tsx +0 -197
  268. package/src/Graph/SingleBar/SingleBar.stories.tsx +0 -204
  269. package/src/Graph/SingleBar/SingleBar.tsx +0 -25
  270. package/src/Graph/SingleBar/ThresholdLine.tsx +0 -103
  271. package/src/Graph/SingleBar/Thresholds.tsx +0 -50
  272. package/src/Graph/SingleBar/index.ts +0 -1
  273. package/src/Graph/SingleBar/models.ts +0 -10
  274. package/src/Graph/Text/Text.stories.tsx +0 -123
  275. package/src/Graph/Text/Text.styles.ts +0 -17
  276. package/src/Graph/Text/Text.tsx +0 -91
  277. package/src/Graph/Text/index.ts +0 -1
  278. package/src/Graph/common/margins.ts +0 -1
  279. package/src/Graph/common/models.ts +0 -19
  280. package/src/Graph/common/timeSeries/index.test.ts +0 -624
  281. package/src/Graph/common/timeSeries/index.ts +0 -626
  282. package/src/Graph/common/timeSeries/models.ts +0 -129
  283. package/src/Graph/common/utils.ts +0 -75
  284. package/src/Graph/index.ts +0 -5
  285. package/src/InputField/Select/Autocomplete/Connected/Multi/MultiConnectedAutocompleteField.cypress.spec.tsx +0 -127
  286. package/src/InputField/Select/Autocomplete/Connected/Multi/utils/index.ts +0 -22
  287. package/src/Listing/Cell/DataCell.styles.ts +0 -24
  288. package/src/Listing/EmptyResult/EmptyResult.tsx +0 -13
  289. package/src/Listing/Header/Cell/ListingHeaderCell.styles.ts +0 -71
  290. package/src/Listing/Header/Cell/SelectActionListingHeaderCell.styles.ts +0 -26
  291. package/src/Listing/Header/Cell/SelectActionListingHeaderCell.tsx +0 -70
  292. package/src/Listing/Header/ListingHeader.styles.ts +0 -16
  293. package/src/Listing/Header/_internals/DraggableIconButton.tsx +0 -35
  294. package/src/Listing/Header/index.ts +0 -1
  295. package/src/Listing/Listing.cypress.spec.tsx +0 -122
  296. package/src/Listing/Listing.styles.ts +0 -80
  297. package/src/Listing/ListingDocs.mdx +0 -61
  298. package/src/Listing/Row/EmptyRow.styles.ts +0 -14
  299. package/src/Listing/Row/EmptyRow.tsx +0 -30
  300. package/src/Listing/Row/SkeletonLoaderRows.tsx +0 -23
  301. package/src/ParentSize/ParentSize.tsx +0 -24
  302. package/src/ParentSize/index.ts +0 -1
  303. package/src/RichTextEditor/RichTextEditor.cypress.spec.tsx +0 -408
  304. package/src/RichTextEditor/plugins/ToolbarPlugin/AlignPicker.tsx +0 -116
  305. package/src/RichTextEditor/plugins/ToolbarPlugin/BlockButtons.tsx +0 -155
  306. package/src/RichTextEditor/plugins/ToolbarPlugin/LinkButton.tsx +0 -106
  307. package/src/RichTextEditor/plugins/ToolbarPlugin/ListButton.tsx +0 -155
  308. package/src/RichTextEditor/plugins/ToolbarPlugin/MacrosButton.tsx +0 -75
  309. package/src/RichTextEditor/plugins/ToolbarPlugin/ToolbarPlugin.styles.ts +0 -32
  310. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +0 -51
  311. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.tsx +0 -95
  312. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/ErrorText.tsx +0 -14
  313. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/PickersStartEndDate.tsx +0 -171
  314. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/index.tsx +0 -76
  315. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/models.ts +0 -59
  316. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/usePickersStartEndDate.ts +0 -82
  317. package/src/TimePeriods/CustomTimePeriod/SimpleCustomTimePeriod.tsx +0 -28
  318. package/src/TimePeriods/CustomTimePeriod/index.tsx +0 -66
  319. package/src/TimePeriods/DateTimePickerInput.tsx +0 -77
  320. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +0 -65
  321. package/src/TimePeriods/SelectedTimePeriod.tsx +0 -102
  322. package/src/TimePeriods/TimePeriods.cypress.spec.tsx +0 -486
  323. package/src/TimePeriods/TimePeriods.styles.ts +0 -22
  324. package/src/TimePeriods/helpers/index.ts +0 -26
  325. package/src/TimePeriods/index.stories.tsx +0 -121
  326. package/src/TimePeriods/index.tsx +0 -79
  327. package/src/TimePeriods/mockedData.ts +0 -12
  328. package/src/TimePeriods/models.ts +0 -97
  329. package/src/TimePeriods/timePeriodsAtoms.ts +0 -102
  330. package/src/TimePeriods/translatedLabels.ts +0 -9
  331. package/src/TimePeriods/useSortTimePeriods.ts +0 -31
  332. package/src/TimePeriods/useTimePeriod.ts +0 -49
  333. package/src/Typography/EllipsisTypography.tsx +0 -18
  334. package/src/Typography/FluidTypography/index.stories.tsx +0 -63
  335. package/src/Typography/FluidTypography/index.tsx +0 -51
  336. package/src/Typography/FluidTypography/useFluidResizeObserver.ts +0 -56
  337. package/src/Typography/Subtitle.tsx +0 -55
  338. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-dashboard-normal-1-snap.png +0 -0
  339. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-dashboard-with-item-header-1-snap.png +0 -0
  340. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-dashboard-with-many-panels-1-snap.png +0 -0
  341. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-basic-1-snap.png +0 -0
  342. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-20-px-height-1-snap.png +0 -0
  343. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-200-px-width-1-snap.png +0 -0
  344. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-heading-5-variant-1-snap.png +0 -0
  345. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-long-text-1-snap.png +0 -0
  346. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-listing-as-empty-state-1-snap.png +0 -0
  347. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-listing-with-editable-and-sortable-columns-1-snap.png +0 -0
  348. package/src/api/useGraphQuery/index.ts +0 -166
  349. package/src/api/useGraphQuery/models.ts +0 -15
  350. package/src/base/tokens/README.md +0 -3
  351. package/src/base/tokens/source/$metadata.json +0 -5
  352. package/src/base/tokens/source/base.json +0 -142
  353. package/src/base/tokens/themes/base.tokens.d.ts +0 -38
  354. package/src/base/tokens/themes/base.tokens.json +0 -695
  355. package/src/base/tokens/themes/base.tokens.ts +0 -38
  356. package/src/base/tokens/themes/ui-dark.tokens.d.ts +0 -38
  357. package/src/base/tokens/themes/ui-dark.tokens.json +0 -695
  358. package/src/base/tokens/themes/ui-dark.tokens.ts +0 -38
  359. package/src/base/tokens/themes/ui-light.tokens.d.ts +0 -38
  360. package/src/base/tokens/themes/ui-light.tokens.json +0 -695
  361. package/src/base/tokens/themes/ui-light.tokens.ts +0 -38
  362. package/src/components/Avatar/Avatar.stories.tsx +0 -23
  363. package/src/components/Avatar/Avatar.styles.ts +0 -11
  364. package/src/components/Avatar/Avatar.tsx +0 -32
  365. package/src/components/Avatar/index.ts +0 -1
  366. package/src/components/Button/Button.stories.tsx +0 -34
  367. package/src/components/Button/Button.styles.ts +0 -44
  368. package/src/components/Button/Button.tsx +0 -78
  369. package/src/components/Button/Icon/IconButton.stories.tsx +0 -18
  370. package/src/components/Button/Icon/IconButton.styles.ts +0 -14
  371. package/src/components/Button/Icon/IconButton.tsx +0 -62
  372. package/src/components/Button/Icon/index.tsx +0 -1
  373. package/src/components/Button/index.ts +0 -2
  374. package/src/components/CollapsibleItem/CollapsibleItem.stories.tsx +0 -25
  375. package/src/components/CollapsibleItem/CollapsibleItem.tsx +0 -47
  376. package/src/components/CollapsibleItem/index.ts +0 -1
  377. package/src/components/CollapsibleItem/useCollapsibleItemStyles.ts +0 -15
  378. package/src/components/DataTable/DataListing.tsx +0 -6
  379. package/src/components/DataTable/DataTable.cypress.spec.tsx +0 -193
  380. package/src/components/DataTable/DataTable.stories.tsx +0 -91
  381. package/src/components/DataTable/DataTable.styles.ts +0 -30
  382. package/src/components/DataTable/DataTable.tsx +0 -35
  383. package/src/components/DataTable/EmptyState/DataTableEmptyState.stories.tsx +0 -21
  384. package/src/components/DataTable/EmptyState/DataTableEmptyState.styles.ts +0 -26
  385. package/src/components/DataTable/EmptyState/DataTableEmptyState.tsx +0 -53
  386. package/src/components/DataTable/Item/DataTableItem.stories.tsx +0 -25
  387. package/src/components/DataTable/Item/DataTableItem.styles.ts +0 -38
  388. package/src/components/DataTable/Item/DataTableItem.tsx +0 -123
  389. package/src/components/DataTable/Item/DataTableItemSkeleton.tsx +0 -13
  390. package/src/components/DataTable/index.ts +0 -12
  391. package/src/components/Form/AccessRights/AccessRights.resource.ts +0 -45
  392. package/src/components/Form/AccessRights/AccessRightsForm.stories.tsx +0 -59
  393. package/src/components/Form/AccessRights/AccessRightsForm.styles.ts +0 -21
  394. package/src/components/Form/AccessRights/AccessRightsForm.tsx +0 -67
  395. package/src/components/Form/AccessRights/AccessRightsFormActions.tsx +0 -80
  396. package/src/components/Form/AccessRights/Input/AddAction.tsx +0 -31
  397. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.stories.tsx +0 -54
  398. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.tsx +0 -72
  399. package/src/components/Form/AccessRights/Input/ContactAccessRightsInput.styles.ts +0 -22
  400. package/src/components/Form/AccessRights/Input/ContactInputField.tsx +0 -105
  401. package/src/components/Form/AccessRights/Input/RoleInputField.tsx +0 -29
  402. package/src/components/Form/AccessRights/List/ContactAccessRightsList.stories.tsx +0 -97
  403. package/src/components/Form/AccessRights/List/ContactAccessRightsList.styles.ts +0 -71
  404. package/src/components/Form/AccessRights/List/ContactAccessRightsList.tsx +0 -51
  405. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.stories.tsx +0 -116
  406. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.tsx +0 -118
  407. package/src/components/Form/AccessRights/List/ContactAccessRightsListItemSkeleton.tsx +0 -26
  408. package/src/components/Form/AccessRights/List/ContactAccessRightsListSkeleton.tsx +0 -28
  409. package/src/components/Form/AccessRights/Stats/AccessRightsStats.styles.ts +0 -18
  410. package/src/components/Form/AccessRights/Stats/AccessRightsStats.tsx +0 -41
  411. package/src/components/Form/AccessRights/__fixtures__/contactAccessRight.mock.ts +0 -54
  412. package/src/components/Form/AccessRights/common/GroupLabel.styles.ts +0 -18
  413. package/src/components/Form/AccessRights/common/GroupLabel.tsx +0 -15
  414. package/src/components/Form/AccessRights/common/Input.styles.ts +0 -48
  415. package/src/components/Form/AccessRights/common/RoleInputSelect.styles.ts +0 -11
  416. package/src/components/Form/AccessRights/common/RoleInputSelect.tsx +0 -57
  417. package/src/components/Form/AccessRights/index.ts +0 -3
  418. package/src/components/Form/AccessRights/useAccessRightsForm.test.tsx +0 -531
  419. package/src/components/Form/AccessRights/useAccessRightsForm.tsx +0 -282
  420. package/src/components/Form/AccessRights/useAccessRightsForm.utils.ts +0 -41
  421. package/src/components/Form/Dashboard/Dashboard.resource.ts +0 -9
  422. package/src/components/Form/Dashboard/DashboardForm.stories.ts +0 -39
  423. package/src/components/Form/Dashboard/DashboardForm.styles.ts +0 -21
  424. package/src/components/Form/Dashboard/DashboardForm.tsx +0 -137
  425. package/src/components/Form/Dashboard/GlobalRefreshFieldOption.tsx +0 -59
  426. package/src/components/Form/Dashboard/index.ts +0 -2
  427. package/src/components/Form/Dashboard/translatedLabels.ts +0 -9
  428. package/src/components/Form/Form.models.ts +0 -1
  429. package/src/components/Form/Form.resource.ts +0 -1
  430. package/src/components/Form/Form.styles.ts +0 -17
  431. package/src/components/Form/FormActions.tsx +0 -57
  432. package/src/components/Form/index.ts +0 -3
  433. package/src/components/Header/PageHeader/PageHeader.stories.tsx +0 -97
  434. package/src/components/Header/PageHeader/PageHeader.styles.ts +0 -126
  435. package/src/components/Header/PageHeader/PageHeader.tsx +0 -15
  436. package/src/components/Header/PageHeader/PageHeaderActions.tsx +0 -17
  437. package/src/components/Header/PageHeader/PageHeaderMain.tsx +0 -15
  438. package/src/components/Header/PageHeader/PageHeaderMenu.tsx +0 -15
  439. package/src/components/Header/PageHeader/PageHeaderMessage.tsx +0 -32
  440. package/src/components/Header/PageHeader/PageHeaderTitle.tsx +0 -47
  441. package/src/components/Header/PageHeader/index.ts +0 -14
  442. package/src/components/Header/index.ts +0 -1
  443. package/src/components/Icon/Icon.styles.ts +0 -0
  444. package/src/components/Icon/Icon.tsx +0 -2
  445. package/src/components/Icon/index.ts +0 -0
  446. package/src/components/Inputs/Switch/Switch.stories.tsx +0 -22
  447. package/src/components/Inputs/Switch/Switch.styles.ts +0 -13
  448. package/src/components/Inputs/Switch/Switch.tsx +0 -18
  449. package/src/components/Inputs/index.ts +0 -1
  450. package/src/components/ItemComposition/Item.tsx +0 -41
  451. package/src/components/ItemComposition/ItemComposition.stories.tsx +0 -78
  452. package/src/components/ItemComposition/ItemComposition.styles.ts +0 -29
  453. package/src/components/ItemComposition/ItemComposition.tsx +0 -47
  454. package/src/components/ItemComposition/index.ts +0 -6
  455. package/src/components/Layout/AreaIndicator.styles.ts +0 -33
  456. package/src/components/Layout/AreaIndicator.tsx +0 -35
  457. package/src/components/Layout/PageLayout/PageLayout.stories.tsx +0 -81
  458. package/src/components/Layout/PageLayout/PageLayout.styles.ts +0 -41
  459. package/src/components/Layout/PageLayout/PageLayout.tsx +0 -21
  460. package/src/components/Layout/PageLayout/PageLayoutActions.tsx +0 -25
  461. package/src/components/Layout/PageLayout/PageLayoutBody.tsx +0 -25
  462. package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +0 -19
  463. package/src/components/Layout/PageLayout/PageQuickAccess.tsx +0 -76
  464. package/src/components/Layout/PageLayout/index.ts +0 -12
  465. package/src/components/Layout/PageLayout.cypress.spec.tsx +0 -66
  466. package/src/components/Layout/index.ts +0 -1
  467. package/src/components/List/Item/Avatar.tsx +0 -21
  468. package/src/components/List/Item/AvatarSkeleton.tsx +0 -17
  469. package/src/components/List/Item/ListItem.stories.tsx +0 -41
  470. package/src/components/List/Item/ListItem.styles.ts +0 -57
  471. package/src/components/List/Item/ListItem.tsx +0 -32
  472. package/src/components/List/Item/Text.tsx +0 -25
  473. package/src/components/List/Item/TextSkeleton.tsx +0 -22
  474. package/src/components/List/Item/index.ts +0 -14
  475. package/src/components/List/List.stories.tsx +0 -70
  476. package/src/components/List/List.styles.ts +0 -8
  477. package/src/components/List/List.tsx +0 -19
  478. package/src/components/List/index.ts +0 -6
  479. package/src/components/Menu/Button/MenuButton.stories.tsx +0 -16
  480. package/src/components/Menu/Button/MenuButton.styles.ts +0 -27
  481. package/src/components/Menu/Button/MenuButton.tsx +0 -67
  482. package/src/components/Menu/Button/index.ts +0 -1
  483. package/src/components/Menu/Menu.stories.tsx +0 -71
  484. package/src/components/Menu/Menu.styles.ts +0 -68
  485. package/src/components/Menu/Menu.tsx +0 -25
  486. package/src/components/Menu/MenuDivider.tsx +0 -13
  487. package/src/components/Menu/MenuItem.tsx +0 -38
  488. package/src/components/Menu/MenuItems.tsx +0 -36
  489. package/src/components/Menu/index.ts +0 -12
  490. package/src/components/Menu/useMenu.tsx +0 -79
  491. package/src/components/Modal/Modal.stories.tsx +0 -142
  492. package/src/components/Modal/Modal.styles.ts +0 -91
  493. package/src/components/Modal/Modal.tsx +0 -79
  494. package/src/components/Modal/ModalActions.tsx +0 -64
  495. package/src/components/Modal/ModalBody.tsx +0 -15
  496. package/src/components/Modal/ModalHeader.tsx +0 -21
  497. package/src/components/Modal/index.ts +0 -12
  498. package/src/components/README.md +0 -3
  499. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.stories.tsx +0 -62
  500. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.styles.tsx +0 -22
  501. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.tsx +0 -68
  502. package/src/components/Tooltip/ConfirmationTooltip/TooltipContent.tsx +0 -31
  503. package/src/components/Tooltip/ConfirmationTooltip/index.ts +0 -1
  504. package/src/components/Tooltip/ConfirmationTooltip/models.ts +0 -18
  505. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.stories.tsx +0 -70
  506. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.styles.ts +0 -5
  507. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.tsx +0 -115
  508. package/src/components/Tooltip/TextOverflowTooltip/index.tsx +0 -1
  509. package/src/components/Tooltip/Tooltip.stories.tsx +0 -41
  510. package/src/components/Tooltip/Tooltip.tsx +0 -57
  511. package/src/components/Tooltip/index.ts +0 -2
  512. package/src/components/index.ts +0 -13
  513. package/src/styles/tokens/themes/_ui-dark.tokens.json +0 -695
  514. package/src/styles/tokens/themes/_ui-light.tokens.json +0 -695
  515. package/src/utils/centreonBaseURL.ts +0 -4
  516. package/src/utils/docsURL.ts +0 -31
  517. package/src/utils/index.ts +0 -22
  518. package/src/utils/panelSize.ts +0 -15
  519. package/src/utils/sanitizedHTML.ts +0 -18
  520. package/src/utils/translatedLabel.ts +0 -2
  521. package/src/utils/useInfiniteScrollListing.ts +0 -121
  522. package/src/utils/useLicenseExpirationWarning.test.tsx +0 -148
  523. package/src/utils/useLicenseExpirationWarning.ts +0 -52
  524. package/src/utils/usePluralizedTranslation.ts +0 -21
  525. package/src/utils/useRefreshInterval.ts +0 -39
  526. package/src/utils/useResizeObserver.ts +0 -6
  527. package/src/utils/useThresholds.ts +0 -0
  528. /package/{public/brand → assets}/centreon-logo-one-line-dark.svg +0 -0
  529. /package/{public/brand → assets}/centreon-logo-one-line-light.svg +0 -0
  530. /package/{src/@assets/images → assets}/not-authorized-template-background-dark.svg +0 -0
  531. /package/{src/@assets/images → assets}/not-authorized-template-background-light.svg +0 -0
  532. /package/{public/fonts → fonts/fonts-generated}/roboto-bold-webfont.ttf +0 -0
  533. /package/{public/fonts → fonts/fonts-generated}/roboto-bold-webfont.woff +0 -0
  534. /package/{public/fonts → fonts/fonts-generated}/roboto-bold-webfont.woff2 +0 -0
  535. /package/{public/fonts → fonts/fonts-generated}/roboto-light-webfont.ttf +0 -0
  536. /package/{public/fonts → fonts/fonts-generated}/roboto-light-webfont.woff +0 -0
  537. /package/{public/fonts → fonts/fonts-generated}/roboto-light-webfont.woff2 +0 -0
  538. /package/{public/fonts → fonts/fonts-generated}/roboto-medium-webfont.ttf +0 -0
  539. /package/{public/fonts → fonts/fonts-generated}/roboto-medium-webfont.woff +0 -0
  540. /package/{public/fonts → fonts/fonts-generated}/roboto-medium-webfont.woff2 +0 -0
  541. /package/{public/fonts → fonts/fonts-generated}/roboto-regular-webfont.ttf +0 -0
  542. /package/{public/fonts → fonts/fonts-generated}/roboto-regular-webfont.woff +0 -0
  543. /package/{public/fonts → fonts/fonts-generated}/roboto-regular-webfont.woff2 +0 -0
  544. /package/src/Listing/Header/{_internals/Label.tsx → Label.tsx} +0 -0
  545. /package/src/Typography/{story.utils.tsx → index.tsx} +0 -0
@@ -2,22 +2,67 @@ import * as React from 'react';
2
2
 
3
3
  import { closestCenter, DraggableSyntheticListeners } from '@dnd-kit/core';
4
4
  import { horizontalListSortingStrategy } from '@dnd-kit/sortable';
5
- import { equals, find, map, pick, propEq } from 'ramda';
5
+ import { equals, find, isEmpty, map, not, pick, propEq } from 'ramda';
6
+ import { makeStyles, withStyles } from 'tss-react/mui';
6
7
 
7
- import { TableHead, TableRow } from '@mui/material';
8
+ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
9
+ import {
10
+ TableCell,
11
+ TableCellBaseProps,
12
+ TableHead,
13
+ TableRow
14
+ } from '@mui/material';
8
15
 
9
16
  import { ListingVariant } from '@centreon/ui-context';
10
17
 
11
18
  import { getVisibleColumns, Props as ListingProps } from '..';
19
+ import PopoverMenu from '../../PopoverMenu';
12
20
  import SortableItems from '../../SortableItems';
13
- import { Column } from '../models';
21
+ import Checkbox from '../Checkbox';
22
+ import { Column, PredefinedRowSelection } from '../models';
23
+ import { labelPredefinedRowsSelectionMenu } from '../translatedLabels';
14
24
 
15
- import ListingHeaderCell from './Cell/ListingHeaderCell';
16
- import { useStyles } from './ListingHeader.styles';
17
- import {
18
- SelectActionListingHeaderCell,
19
- SelectActionListingHeaderCellProps
20
- } from './Cell/SelectActionListingHeaderCell';
25
+ import PredefinedSelectionList from './PredefinedSelectionList';
26
+ import SortableHeaderCellContent from './SortableCell/Content';
27
+
28
+ const height = 28;
29
+
30
+ const HeaderCell = withStyles(TableCell, (theme) => ({
31
+ root: {
32
+ padding: theme.spacing(0)
33
+ }
34
+ }));
35
+
36
+ const useStyles = makeStyles()((theme) => ({
37
+ checkbox: {
38
+ '&.Mui-checked': {
39
+ color: theme.palette.common.white
40
+ },
41
+ '&.MuiCheckbox-indeterminate': {
42
+ color: theme.palette.common.white
43
+ },
44
+ color: theme.palette.common.white
45
+ },
46
+ checkboxHeaderCell: {
47
+ alignItems: 'center',
48
+ backgroundColor: theme.palette.background.listingHeader,
49
+ borderBottom: 'none',
50
+ display: 'flex',
51
+ justifyContent: 'start',
52
+ minWidth: theme.spacing(51 / 8),
53
+ padding: 0
54
+ },
55
+ headerLabelDragging: {
56
+ cursor: 'grabbing'
57
+ },
58
+ predefinedRowsMenu: {
59
+ color: theme.palette.common.white,
60
+ width: theme.spacing(2)
61
+ },
62
+ row: {
63
+ display: 'contents'
64
+ }
65
+ }));
21
66
 
22
67
  type Props = Pick<
23
68
  ListingProps<unknown>,
@@ -31,10 +76,14 @@ type Props = Pick<
31
76
  | 'totalRows'
32
77
  > & {
33
78
  areColumnsEditable: boolean;
34
- listingVariant?: ListingVariant;
35
79
  memoProps: Array<unknown>;
80
+ onSelectAllClick: (event) => void;
81
+ onSelectRowsWithCondition: (condition) => void;
82
+ predefinedRowsSelection: Array<PredefinedRowSelection>;
36
83
  rowCount: number;
37
- } & SelectActionListingHeaderCellProps;
84
+ selectedRowCount: number;
85
+ viewMode?: ListingVariant;
86
+ };
38
87
 
39
88
  interface ContentProps extends Pick<Props, 'sortField' | 'sortOrder'> {
40
89
  attributes;
@@ -47,21 +96,21 @@ interface ContentProps extends Pick<Props, 'sortField' | 'sortOrder'> {
47
96
  }
48
97
 
49
98
  const ListingHeader = ({
99
+ onSelectAllClick,
50
100
  sortOrder,
51
101
  sortField,
102
+ selectedRowCount,
52
103
  rowCount,
53
104
  columns,
54
105
  columnConfiguration,
55
106
  onSort,
56
107
  onSelectColumns,
57
108
  checkable,
109
+ predefinedRowsSelection,
110
+ onSelectRowsWithCondition,
58
111
  memoProps,
59
112
  areColumnsEditable,
60
- listingVariant,
61
- onSelectAllClick,
62
- selectedRowCount,
63
- predefinedRowsSelection,
64
- onSelectRowsWithCondition
113
+ viewMode
65
114
  }: Props): JSX.Element => {
66
115
  const { classes, cx } = useStyles();
67
116
 
@@ -71,7 +120,7 @@ const ListingHeader = ({
71
120
  });
72
121
 
73
122
  const getColumnById = (id: string): Column => {
74
- return find(propEq(id, 'id'), columns) as Column;
123
+ return find(propEq('id', id), columns) as Column;
75
124
  };
76
125
 
77
126
  const Content = React.useCallback(
@@ -85,17 +134,17 @@ const ListingHeader = ({
85
134
  id
86
135
  }: ContentProps): JSX.Element => {
87
136
  return (
88
- <ListingHeaderCell
137
+ <SortableHeaderCellContent
89
138
  areColumnsEditable={areColumnsEditable}
90
139
  column={getColumnById(id)}
91
140
  columnConfiguration={columnConfiguration}
92
141
  isDragging={isDragging}
93
142
  isInDragOverlay={isInDragOverlay}
94
143
  itemRef={itemRef}
95
- listingVariant={listingVariant}
96
144
  sortField={sortField}
97
145
  sortOrder={sortOrder}
98
146
  style={style}
147
+ viewMode={viewMode}
99
148
  onSort={onSort}
100
149
  {...listeners}
101
150
  {...attributes}
@@ -105,17 +154,45 @@ const ListingHeader = ({
105
154
  [columnConfiguration, columns, sortField, sortOrder]
106
155
  );
107
156
 
157
+ const hasRows = not(equals(rowCount, 0));
158
+
108
159
  return (
109
160
  <TableHead className={cx(classes.row, 'listingHeader')} component="div">
110
161
  <TableRow className={classes.row} component="div">
111
162
  {checkable && (
112
- <SelectActionListingHeaderCell
113
- predefinedRowsSelection={predefinedRowsSelection}
114
- rowCount={rowCount}
115
- selectedRowCount={selectedRowCount}
116
- onSelectAllClick={onSelectAllClick}
117
- onSelectRowsWithCondition={onSelectRowsWithCondition}
118
- />
163
+ <TableCell
164
+ className={classes.checkboxHeaderCell}
165
+ component={
166
+ 'div' as unknown as React.ElementType<TableCellBaseProps>
167
+ }
168
+ >
169
+ <Checkbox
170
+ checked={hasRows && selectedRowCount === rowCount}
171
+ className={classes.checkbox}
172
+ indeterminate={
173
+ hasRows && selectedRowCount > 0 && selectedRowCount < rowCount
174
+ }
175
+ inputProps={{ 'aria-label': 'Select all' }}
176
+ onChange={onSelectAllClick}
177
+ />
178
+ {not(isEmpty(predefinedRowsSelection)) ? (
179
+ <PopoverMenu
180
+ className={classes.predefinedRowsMenu}
181
+ icon={<ArrowDropDownIcon />}
182
+ title={labelPredefinedRowsSelectionMenu}
183
+ >
184
+ {({ close }): JSX.Element => (
185
+ <PredefinedSelectionList
186
+ close={close}
187
+ predefinedRowsSelection={predefinedRowsSelection}
188
+ onSelectRowsWithCondition={onSelectRowsWithCondition}
189
+ />
190
+ )}
191
+ </PopoverMenu>
192
+ ) : (
193
+ <div className={classes.predefinedRowsMenu} />
194
+ )}
195
+ </TableCell>
119
196
  )}
120
197
  <SortableItems
121
198
  updateSortableItemsOnItemsChange
@@ -140,7 +217,6 @@ const columnMemoProps = [
140
217
  'label',
141
218
  'rowMemoProps',
142
219
  'sortField',
143
- 'sortOrder',
144
220
  'sortable',
145
221
  'type'
146
222
  ];
@@ -160,7 +236,8 @@ const MemoizedListingHeader = React.memo<Props>(
160
236
  equals(prevProps.columnConfiguration, nextProps.columnConfiguration) &&
161
237
  equals(prevProps.memoProps, nextProps.memoProps) &&
162
238
  equals(prevProps.areColumnsEditable, nextProps.areColumnsEditable) &&
163
- equals(prevProps.listingVariant, nextProps.listingVariant)
239
+ equals(prevProps.viewMode, nextProps.viewMode)
164
240
  );
165
241
 
166
- export { MemoizedListingHeader as ListingHeader };
242
+ export default MemoizedListingHeader;
243
+ export { height as headerHeight, HeaderCell };
@@ -9,10 +9,12 @@ import { TableRowProps, TableRow, useTheme } from '@mui/material';
9
9
 
10
10
  import { ListingVariant } from '@centreon/ui-context';
11
11
 
12
- import { useViewportIntersection } from '../../utils/useViewportIntersection';
13
- import LoadingSkeleton from '../../LoadingSkeleton';
14
- import { Column, ColumnConfiguration, RowColorCondition } from '../models';
15
- import { performanceRowsLimit } from '../index';
12
+ import { useViewportIntersection } from '../utils/useViewportIntersection';
13
+ import LoadingSkeleton from '../LoadingSkeleton';
14
+
15
+ import { Column, ColumnConfiguration, RowColorCondition } from './models';
16
+
17
+ import { performanceRowsLimit } from '.';
16
18
 
17
19
  const useStyles = makeStyles()((theme) => {
18
20
  return {
@@ -46,11 +48,10 @@ type Props = {
46
48
  isShiftKeyDown: boolean;
47
49
  lastSelectionIndex: number | null;
48
50
  limit: number;
49
- listingVariant?: ListingVariant;
50
51
  row;
51
52
  rowColorConditions: Array<RowColorCondition>;
52
53
  shiftKeyDownRowPivot: number | null;
53
- subItemsPivots: Array<number | string>;
54
+ viewMode?: ListingVariant;
54
55
  visibleColumns: Array<Column>;
55
56
  } & TableRowProps;
56
57
 
@@ -116,7 +117,7 @@ const Row = memo<RowProps>(
116
117
  isShiftKeyDown: prevIsShiftKeyDown,
117
118
  shiftKeyDownRowPivot: prevShiftKeyDownRowPivot,
118
119
  lastSelectionIndex: prevLastSelectionIndex,
119
- listingVariant: prevViewMode
120
+ viewMode: prevViewMode
120
121
  } = prevProps;
121
122
  const {
122
123
  row: nextRow,
@@ -127,7 +128,7 @@ const Row = memo<RowProps>(
127
128
  shiftKeyDownRowPivot: nextShiftKeyDownRowPivot,
128
129
  lastSelectionIndex: nextLastSelectionIndex,
129
130
  limit: nextLimit,
130
- listingVariant: nextViewMode
131
+ viewMode: nextViewMode
131
132
  } = nextProps;
132
133
 
133
134
  if (
@@ -175,8 +176,7 @@ const Row = memo<RowProps>(
175
176
  equals(prevProps.row, nextProps.row) &&
176
177
  equals(previousRowConditions, nextRowConditions) &&
177
178
  equals(previousRowColors, nextRowColors) &&
178
- equals(prevProps.className, nextProps.className) &&
179
- equals(prevProps.subItemsPivots, nextProps.subItemsPivots)
179
+ equals(prevProps.className, nextProps.className)
180
180
  );
181
181
  }
182
182
 
@@ -191,8 +191,7 @@ const Row = memo<RowProps>(
191
191
  equals(prevIsShiftKeyDown, nextIsShiftKeyDown) &&
192
192
  equals(prevShiftKeyDownRowPivot, nextShiftKeyDownRowPivot) &&
193
193
  equals(prevLastSelectionIndex, nextLastSelectionIndex) &&
194
- equals(prevViewMode, nextViewMode) &&
195
- equals(prevProps.subItemsPivots, nextProps.subItemsPivots)
194
+ equals(prevViewMode, nextViewMode)
196
195
  );
197
196
  }
198
197
  );
@@ -0,0 +1,11 @@
1
+ import LoadingSkeleton from '../LoadingSkeleton';
2
+
3
+ const ListingLoadingSkeleton = (): JSX.Element => (
4
+ <>
5
+ {['skeleton1', 'skeleton2', 'skeleton3'].map((key) => (
6
+ <LoadingSkeleton height={20} key={key} variant="text" width="100%" />
7
+ ))}
8
+ </>
9
+ );
10
+
11
+ export default ListingLoadingSkeleton;
@@ -1,8 +1,7 @@
1
- /* eslint-disable no-alert */
2
1
  /* eslint-disable react/prop-types */
3
- import { useState } from 'react';
2
+ import { React, useState } from 'react';
4
3
 
5
- import { Meta, StoryObj } from '@storybook/react';
4
+ import { ComponentMeta, ComponentStory } from '@storybook/react';
6
5
  import { equals, prop } from 'ramda';
7
6
  import { makeStyles } from 'tss-react/mui';
8
7
 
@@ -13,11 +12,11 @@ import { ListingVariant } from '@centreon/ui-context';
13
12
 
14
13
  import { ListingProps } from '..';
15
14
 
16
- import { Column, ColumnType, SortOrder } from './models';
15
+ import { Column, ColumnType } from './models';
17
16
 
18
17
  import Listing from '.';
19
18
 
20
- const meta: Meta<typeof Listing> = {
19
+ export default {
21
20
  argTypes: {
22
21
  checkable: { control: 'boolean' },
23
22
  currentPage: { control: 'number' },
@@ -27,15 +26,11 @@ const meta: Meta<typeof Listing> = {
27
26
  },
28
27
  component: Listing,
29
28
  title: 'Listing'
30
- };
31
- export default meta;
32
-
33
- type Story = StoryObj<typeof Listing>;
29
+ } as ComponentMeta<typeof Listing>;
34
30
 
35
31
  const useStyles = makeStyles()((theme) => ({
36
32
  listing: {
37
- backgroundColor: theme.palette.background.default,
38
- height: '100vh'
33
+ backgroundColor: theme.palette.background.default
39
34
  }
40
35
  }));
41
36
 
@@ -53,12 +48,6 @@ const ComponentColumn = ({ row, isSelected }): JSX.Element => (
53
48
  </>
54
49
  );
55
50
 
56
- const ButtonColumn = ({ row }): JSX.Element => (
57
- <Button size="small" onClick={() => alert(JSON.stringify(row))}>
58
- Click to reveal details about {row.name}
59
- </Button>
60
- );
61
-
62
51
  const defaultColumns = [
63
52
  {
64
53
  getFormattedString: ({ name }): string => name,
@@ -142,7 +131,7 @@ const predefinedRowsSelection = [
142
131
  }
143
132
  ];
144
133
 
145
- const StoryTemplate = ({
134
+ const Story = ({
146
135
  columns = defaultColumns,
147
136
  checkable = true,
148
137
  viewerModeConfiguration,
@@ -164,7 +153,7 @@ const StoryTemplate = ({
164
153
  limit={listing.length}
165
154
  predefinedRowsSelection={predefinedRowsSelection}
166
155
  rowColorConditions={rowColorConditions}
167
- rows={props.rows ?? listing}
156
+ rows={listing}
168
157
  selectedRows={selected}
169
158
  totalRows={listing.length}
170
159
  viewerModeConfiguration={viewerModeConfiguration}
@@ -175,35 +164,31 @@ const StoryTemplate = ({
175
164
  );
176
165
  };
177
166
 
178
- export const normal = (): JSX.Element => <StoryTemplate />;
167
+ export const normal = (): JSX.Element => <Story />;
179
168
 
180
169
  export const WithSpecifiedViewMode = (): JSX.Element => {
181
- const [listingVariant, setListingVariant] = useState(ListingVariant.extended);
182
- const newListingVariant = equals(listingVariant, ListingVariant.compact)
170
+ const [viewMode, setViewMode] = useState(ListingVariant.extended);
171
+ const newViewMode = equals(viewMode, ListingVariant.compact)
183
172
  ? ListingVariant.extended
184
173
  : ListingVariant.compact;
185
174
 
186
175
  return (
187
- <StoryTemplate
188
- listingVariant={listingVariant}
176
+ <Story
177
+ viewMode={viewMode}
189
178
  viewerModeConfiguration={{
190
- onClick: () => setListingVariant(newListingVariant),
191
- title: listingVariant
179
+ onClick: () => setViewMode(newViewMode),
180
+ title: viewMode
192
181
  }}
193
182
  />
194
183
  );
195
184
  };
196
185
 
197
186
  export const loadingWithNoData = (): JSX.Element => {
198
- return <StoryTemplate loading rows={[]} totalRows={0} />;
187
+ return <Story loading rows={[]} totalRows={0} />;
199
188
  };
200
189
 
201
190
  export const loadingWithData = (): JSX.Element => {
202
- return <StoryTemplate loading />;
203
- };
204
-
205
- export const asEmptyState = (): JSX.Element => {
206
- return <StoryTemplate rows={[]} />;
191
+ return <Story loading />;
207
192
  };
208
193
 
209
194
  const actions = (
@@ -212,16 +197,12 @@ const actions = (
212
197
  </Button>
213
198
  );
214
199
 
215
- export const withActions = (): JSX.Element => (
216
- <StoryTemplate actions={actions} />
217
- );
200
+ export const withActions = (): JSX.Element => <Story actions={actions} />;
218
201
 
219
- export const withoutCheckboxes = (): JSX.Element => (
220
- <StoryTemplate checkable={false} />
221
- );
202
+ export const withoutCheckboxes = (): JSX.Element => <Story checkable={false} />;
222
203
 
223
204
  export const withShortLabelColumns = (): JSX.Element => (
224
- <StoryTemplate columns={columnsWithShortLabel} />
205
+ <Story columns={columnsWithShortLabel} />
225
206
  );
226
207
 
227
208
  const editableColumns = [
@@ -229,14 +210,12 @@ const editableColumns = [
229
210
  getFormattedString: ({ name }): string => name,
230
211
  id: 'name',
231
212
  label: 'Name',
232
- sortable: true,
233
213
  type: ColumnType.string
234
214
  },
235
215
  {
236
216
  getFormattedString: ({ description }): string => description,
237
217
  id: 'description',
238
218
  label: 'Description',
239
- sortable: true,
240
219
  type: ColumnType.string
241
220
  },
242
221
  {
@@ -264,134 +243,40 @@ const ListingWithEditableColumns = (): JSX.Element => {
264
243
  setSelectedColumnIds(defaultColumnIds);
265
244
  };
266
245
 
267
- const [sortedRows, setSortedRows] = useState(listing);
268
- const [sortParams, setSortParams] = useState({
269
- sortField: editableColumns[0].id,
270
- sortOrder: 'desc'
271
- });
272
-
273
- const onSort = (params: {
274
- sortField: string;
275
- sortOrder: SortOrder;
276
- }): void => {
277
- const rows = [...sortedRows];
278
- rows.sort((a, b) =>
279
- params.sortOrder === 'desc'
280
- ? a[params.sortField]?.localeCompare(b[params.sortField])
281
- : b[params.sortField]?.localeCompare(a[params.sortField])
282
- );
283
- setSortedRows(rows);
284
- setSortParams(params);
285
- };
286
-
287
246
  return (
288
- <StoryTemplate
247
+ <Story
289
248
  columnConfiguration={{
290
249
  selectedColumnIds,
291
250
  sortable: true
292
251
  }}
293
252
  columns={editableColumns}
294
- rows={sortedRows}
295
- sortField={sortParams.sortField}
296
- sortOrder={sortParams.sortOrder as SortOrder}
297
253
  onResetColumns={resetColumns}
298
254
  onSelectColumns={setSelectedColumnIds}
299
- onSort={onSort}
300
255
  />
301
256
  );
302
257
  };
303
258
 
304
- export const withEditableAndSortableColumns = (): JSX.Element => (
259
+ export const withEditableColumns = (): JSX.Element => (
305
260
  <ListingWithEditableColumns />
306
261
  );
307
262
 
308
- export const PlaygroundListing: Story = {
309
- args: {
310
- checkable: true,
311
- columns: editableColumns,
312
- currentPage: 1,
313
- disableRowCheckCondition: (row): boolean => row.disableCheckbox,
314
- disableRowCondition: (row): boolean => row.disableRow,
315
- limit: 10,
316
- loading: false,
317
- predefinedRowsSelection,
318
- rowColorConditions,
319
- rows: listing,
320
- totalRows: 10
321
- }
322
- };
323
-
324
- const listingWithSubItems = [...tenElements].map((_, index) => ({
325
- active: false,
326
- description: `Entity ${index}`,
327
- disableCheckbox: false,
328
- disableRow: false,
329
- id: index,
330
- name: `E${index}`,
331
- selected: false,
332
- subItems:
333
- index % 2 === 0
334
- ? [...tenElements].map((__, subIndex) => ({
335
- active: false,
336
- description: `Sub item ${subIndex + (index + 10) * 10} description`,
337
- disableCheckbox: false,
338
- disableRow: false,
339
- id: subIndex + (index + 10) * 10,
340
- name: `Sub Item ${subIndex + (index + 10) * 10}`,
341
- selected: false
342
- }))
343
- : undefined
344
- }));
345
-
346
- const columnsWithSubItems = [
347
- {
348
- getFormattedString: ({ name }): string => name,
349
- id: 'name',
350
- label: 'Name',
351
- type: ColumnType.string
352
- },
353
- {
354
- getFormattedString: ({ description }): string => description,
355
- id: 'description',
356
- label: 'Description',
357
- type: ColumnType.string
358
- },
359
- {
360
- Component: ButtonColumn,
361
- displaySubItemsCaret: true,
362
- id: '#',
363
- label: 'Custom',
364
- type: ColumnType.component,
365
- width: '350px'
366
- }
367
- ];
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
- };
263
+ const TemplateListing: ComponentStory<typeof Listing> = (args) => (
264
+ <Listing
265
+ {...args}
266
+ columns={editableColumns}
267
+ disableRowCheckCondition={(row): boolean => row.disableCheckbox}
268
+ disableRowCondition={(row): boolean => row.disableRow}
269
+ predefinedRowsSelection={predefinedRowsSelection}
270
+ rowColorConditions={rowColorConditions}
271
+ rows={listing}
272
+ />
273
+ );
378
274
 
379
- export const ListingWithSubItems = {
380
- args: {
381
- checkable: true,
382
- columns: columnsWithSubItems,
383
- currentPage: 1,
384
- limit: 10,
385
- loading: false,
386
- rows: listingWithSubItems,
387
- subItems: {
388
- canCheckSubItems: false,
389
- enable: true,
390
- getRowProperty: () => 'subItems',
391
- labelCollapse: 'Collapse',
392
- labelExpand: 'Expand'
393
- },
394
- totalRows: 10
395
- },
396
- render: TemplateSubItems
275
+ export const PlaygroundListing = TemplateListing.bind({});
276
+ PlaygroundListing.args = {
277
+ checkable: true,
278
+ currentPage: 1,
279
+ limit: 10,
280
+ loading: false,
281
+ totalRows: 10
397
282
  };
@@ -2,7 +2,7 @@ import { useState } from 'react';
2
2
 
3
3
  import { prop } from 'ramda';
4
4
 
5
- import { render, fireEvent, within } from '../../test/testRenderer';
5
+ import { render, fireEvent, within } from '../testRenderer';
6
6
 
7
7
  import { ColumnType } from './models';
8
8
  import { labelAddColumns } from './translatedLabels';