@centreon/ui 23.10.109 → 23.10.111

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 (518) hide show
  1. package/README.md +44 -14
  2. package/package.json +96 -31
  3. package/public/README.md +39 -0
  4. package/public/mockServiceWorker.js +303 -0
  5. package/src/@assets/README.md +5 -0
  6. package/src/@assets/brand/centreon-logo-one-line-dark.svg +1 -0
  7. package/src/@assets/brand/centreon-logo-one-line-light.svg +1 -0
  8. package/src/@assets/icons/downtime.icon.svg +1 -0
  9. package/src/@types/aria-attributes.d.ts +10 -0
  10. package/src/@types/data-attributes.d.ts +3 -0
  11. package/src/@types/globals.d.ts +9 -0
  12. package/src/@types/vite-env.d.ts +2 -0
  13. package/src/ActionsList/ActionsList.styles.ts +116 -0
  14. package/src/ActionsList/index.stories.tsx +74 -0
  15. package/src/ActionsList/index.tsx +58 -21
  16. package/src/ActionsList/models.ts +8 -0
  17. package/src/Button/Icon/index.tsx +11 -2
  18. package/src/Button/Save/index.stories.tsx +10 -5
  19. package/src/Button/Save/index.tsx +1 -1
  20. package/src/Checkbox/Checkbox.tsx +109 -0
  21. package/src/Checkbox/CheckboxGroup/index.stories.tsx +41 -0
  22. package/src/Checkbox/CheckboxGroup/index.tsx +75 -0
  23. package/src/Checkbox/index.stories.tsx +39 -0
  24. package/src/Checkbox/index.tsx +2 -0
  25. package/src/Dashboard/Dashboard.styles.ts +108 -0
  26. package/src/Dashboard/DashboardLayout.stories.tsx +104 -0
  27. package/src/Dashboard/Grid.tsx +70 -0
  28. package/src/Dashboard/Item.tsx +100 -0
  29. package/src/Dashboard/Layout.tsx +79 -0
  30. package/src/Dashboard/index.tsx +9 -0
  31. package/src/Dashboard/utils.ts +28 -0
  32. package/src/Dialog/Confirm/index.tsx +17 -4
  33. package/src/Dialog/Duplicate/index.test.tsx +1 -1
  34. package/src/Dialog/index.tsx +14 -2
  35. package/src/FallbackPage/FallbackPage.tsx +2 -2
  36. package/src/FileDropZone/index.tsx +1 -1
  37. package/src/Form/CollapsibleGroup.tsx +15 -5
  38. package/src/Form/{index.stories.tsx → Form.stories.tsx} +2 -3
  39. package/src/Form/Form.styles.ts +11 -0
  40. package/src/Form/{index.tsx → Form.tsx} +38 -16
  41. package/src/Form/FormButtons.tsx +2 -4
  42. package/src/Form/Inputs/Autocomplete.tsx +1 -1
  43. package/src/Form/Inputs/Checkbox.tsx +57 -0
  44. package/src/Form/Inputs/CheckboxGroup.tsx +76 -0
  45. package/src/Form/Inputs/ConnectedAutocomplete.tsx +3 -1
  46. package/src/Form/Inputs/Grid.tsx +4 -2
  47. package/src/Form/Inputs/Radio.tsx +16 -5
  48. package/src/Form/Inputs/Switch.tsx +1 -1
  49. package/src/Form/Inputs/Text.tsx +18 -7
  50. package/src/Form/Inputs/index.tsx +31 -15
  51. package/src/Form/Inputs/models.ts +20 -4
  52. package/src/Form/index.ts +1 -0
  53. package/src/Form/storiesData.tsx +50 -3
  54. package/src/Graph/Gauge/AnimatedPie.tsx +102 -0
  55. package/src/Graph/Gauge/Gauge.stories.tsx +146 -0
  56. package/src/Graph/Gauge/Gauge.tsx +41 -0
  57. package/src/Graph/Gauge/PieData.tsx +63 -0
  58. package/src/Graph/Gauge/ResponsiveGauge.tsx +148 -0
  59. package/src/Graph/Gauge/Thresholds.tsx +117 -0
  60. package/src/Graph/Gauge/index.ts +1 -0
  61. package/src/Graph/Gauge/models.ts +20 -0
  62. package/src/Graph/LineChart/BasicComponents/Axes/UnitLabel.tsx +20 -0
  63. package/src/Graph/LineChart/BasicComponents/Axes/index.tsx +88 -0
  64. package/src/Graph/LineChart/BasicComponents/Axes/models.ts +26 -0
  65. package/src/Graph/LineChart/BasicComponents/Axes/useAxisY.ts +100 -0
  66. package/src/Graph/LineChart/BasicComponents/Grids/index.tsx +20 -0
  67. package/src/Graph/LineChart/BasicComponents/Lines/RegularLines/index.tsx +99 -0
  68. package/src/Graph/LineChart/BasicComponents/Lines/RegularLines/useRegularLines.ts +15 -0
  69. package/src/Graph/LineChart/BasicComponents/Lines/StackedLines/index.tsx +81 -0
  70. package/src/Graph/LineChart/BasicComponents/Lines/StackedLines/useStackedLines.ts +39 -0
  71. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/BasicThreshold.tsx +53 -0
  72. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx +43 -0
  73. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithPatternLines.tsx +78 -0
  74. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/ThresholdWithVariation.tsx +63 -0
  75. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/helpers/index.ts +69 -0
  76. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx +142 -0
  77. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/models.ts +105 -0
  78. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/useCoordinateCircle.ts +46 -0
  79. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/useScaleThreshold.ts +171 -0
  80. package/src/Graph/LineChart/BasicComponents/Lines/index.tsx +189 -0
  81. package/src/Graph/LineChart/BasicComponents/Lines/models.ts +45 -0
  82. package/src/Graph/LineChart/BasicComponents/LoadingProgress.tsx +46 -0
  83. package/src/Graph/LineChart/BasicComponents/ThresholdLine.tsx +64 -0
  84. package/src/Graph/LineChart/BasicComponents/Thresholds.tsx +77 -0
  85. package/src/Graph/LineChart/BasicComponents/useFilterLines.ts +62 -0
  86. package/src/Graph/LineChart/Header/index.tsx +65 -0
  87. package/src/Graph/LineChart/Icons/Downtime.tsx +9 -0
  88. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx +45 -0
  89. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/RegularAnchorPoint.tsx +66 -0
  90. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/StackedAnchorPoint.tsx +76 -0
  91. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/TooltipAnchorPoint.tsx +96 -0
  92. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/index.tsx +20 -0
  93. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/models.ts +62 -0
  94. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTickGraph.ts +94 -0
  95. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/useTooltipAnchorPoint.ts +107 -0
  96. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Area.tsx +114 -0
  97. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/Line.tsx +103 -0
  98. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx +81 -0
  99. package/src/Graph/LineChart/InteractiveComponents/Annotations/Area/Downtime.tsx +27 -0
  100. package/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx +61 -0
  101. package/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Acknowledgement.tsx +27 -0
  102. package/src/Graph/LineChart/InteractiveComponents/Annotations/Line/Comments.tsx +25 -0
  103. package/src/Graph/LineChart/InteractiveComponents/Annotations/annotationsAtoms.ts +183 -0
  104. package/src/Graph/LineChart/InteractiveComponents/Annotations/index.tsx +49 -0
  105. package/src/Graph/LineChart/InteractiveComponents/Annotations/models.ts +25 -0
  106. package/src/Graph/LineChart/InteractiveComponents/Annotations/useAnnotation.ts +56 -0
  107. package/src/Graph/LineChart/InteractiveComponents/Bar.tsx +21 -0
  108. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftIcon.tsx +62 -0
  109. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/TimeShiftZone.tsx +74 -0
  110. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/index.tsx +85 -0
  111. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/models.ts +12 -0
  112. package/src/Graph/LineChart/InteractiveComponents/TimeShiftZones/useTimeShiftZones.ts +72 -0
  113. package/src/Graph/LineChart/InteractiveComponents/Tooltip/index.tsx +59 -0
  114. package/src/Graph/LineChart/InteractiveComponents/Tooltip/models.ts +9 -0
  115. package/src/Graph/LineChart/InteractiveComponents/Tooltip/useGraphTooltip.ts +67 -0
  116. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/index.tsx +38 -0
  117. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/models.ts +9 -0
  118. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/useZoomPreview.ts +107 -0
  119. package/src/Graph/LineChart/InteractiveComponents/ZoomPreview/zoomPreviewAtoms.ts +3 -0
  120. package/src/Graph/LineChart/InteractiveComponents/index.tsx +168 -0
  121. package/src/Graph/LineChart/InteractiveComponents/interactionWithGraphAtoms.ts +52 -0
  122. package/src/Graph/LineChart/Legend/InteractiveValue.tsx +22 -0
  123. package/src/Graph/LineChart/Legend/Legend.styles.ts +71 -0
  124. package/src/Graph/LineChart/Legend/LegendContent.tsx +27 -0
  125. package/src/Graph/LineChart/Legend/LegendHeader.tsx +45 -0
  126. package/src/Graph/LineChart/Legend/Marker.tsx +43 -0
  127. package/src/Graph/LineChart/Legend/index.tsx +173 -0
  128. package/src/Graph/LineChart/Legend/models.ts +11 -0
  129. package/src/Graph/LineChart/Legend/useInteractiveValues.ts +99 -0
  130. package/src/Graph/LineChart/Legend/useLegend.ts +105 -0
  131. package/src/Graph/LineChart/LineChart.styles.ts +45 -0
  132. package/src/Graph/LineChart/LineChart.tsx +303 -0
  133. package/src/Graph/LineChart/LoadingSkeleton.tsx +44 -0
  134. package/src/Graph/LineChart/common/index.ts +35 -0
  135. package/src/Graph/LineChart/graphAtoms.ts +3 -0
  136. package/src/Graph/LineChart/helpers/doc.ts +560 -0
  137. package/src/Graph/LineChart/helpers/index.ts +63 -0
  138. package/src/Graph/LineChart/index.stories.tsx +478 -0
  139. package/src/Graph/LineChart/index.tsx +115 -0
  140. package/src/Graph/LineChart/mockedData/annotationData.json +326 -0
  141. package/src/Graph/LineChart/mockedData/exclusionPeriodFirstPeriod.json +588 -0
  142. package/src/Graph/LineChart/mockedData/exclusionPeriodSecondPeriod.json +588 -0
  143. package/src/Graph/LineChart/mockedData/exclusionPeriodThirdPeriod.json +581 -0
  144. package/src/Graph/LineChart/mockedData/lastDay.json +1326 -0
  145. package/src/Graph/LineChart/mockedData/lastDayAreaStack.json +3106 -0
  146. package/src/Graph/LineChart/mockedData/lastDayForward.json +1338 -0
  147. package/src/Graph/LineChart/mockedData/lastDayThreshold.json +2352 -0
  148. package/src/Graph/LineChart/mockedData/lastMonth.json +1674 -0
  149. package/src/Graph/LineChart/mockedData/lastWeek.json +2202 -0
  150. package/src/Graph/LineChart/mockedData/zoomPreview.json +742 -0
  151. package/src/Graph/LineChart/models.ts +146 -0
  152. package/src/Graph/LineChart/translatedLabels.ts +9 -0
  153. package/src/Graph/LineChart/useLineChartData.ts +49 -0
  154. package/src/Graph/LineChart/useLineChartIntersection.ts +36 -0
  155. package/src/Graph/SingleBar/ResponsiveSingleBar.tsx +197 -0
  156. package/src/Graph/SingleBar/SingleBar.stories.tsx +204 -0
  157. package/src/Graph/SingleBar/SingleBar.tsx +25 -0
  158. package/src/Graph/SingleBar/ThresholdLine.tsx +103 -0
  159. package/src/Graph/SingleBar/Thresholds.tsx +50 -0
  160. package/src/Graph/SingleBar/index.ts +1 -0
  161. package/src/Graph/SingleBar/models.ts +10 -0
  162. package/src/Graph/Text/Text.stories.tsx +67 -0
  163. package/src/Graph/Text/Text.styles.ts +17 -0
  164. package/src/Graph/Text/Text.tsx +91 -0
  165. package/src/Graph/Text/index.ts +1 -0
  166. package/src/Graph/common/margins.ts +1 -0
  167. package/src/Graph/common/models.ts +19 -0
  168. package/src/Graph/common/timeSeries/index.test.ts +624 -0
  169. package/src/Graph/common/timeSeries/index.ts +626 -0
  170. package/src/Graph/common/timeSeries/models.ts +129 -0
  171. package/src/Graph/common/utils.ts +75 -0
  172. package/src/Graph/index.ts +4 -0
  173. package/src/Home.stories.mdx +1 -84
  174. package/src/Image/Image.tsx +11 -1
  175. package/src/Image/index.stories.tsx +2 -2
  176. package/src/Image/index.test.tsx +3 -3
  177. package/src/InputField/Search/PersistentTooltip.tsx +10 -6
  178. package/src/InputField/Select/Autocomplete/Connected/Multi/MultiConnectedAutocompleteField.cypress.spec.tsx +127 -0
  179. package/src/InputField/Select/Autocomplete/Connected/Multi/index.test.tsx +3 -22
  180. package/src/InputField/Select/Autocomplete/Connected/Multi/utils/index.ts +22 -0
  181. package/src/InputField/Select/Autocomplete/Connected/index.stories.tsx +0 -3
  182. package/src/InputField/Select/Autocomplete/Connected/index.test.tsx +3 -7
  183. package/src/InputField/Select/Autocomplete/Connected/index.tsx +32 -6
  184. package/src/InputField/Select/Autocomplete/Draggable/index.stories.tsx +0 -2
  185. package/src/InputField/Select/Autocomplete/Multi/index.tsx +32 -15
  186. package/src/InputField/Select/Autocomplete/index.stories.tsx +1 -10
  187. package/src/InputField/Select/Autocomplete/index.tsx +5 -2
  188. package/src/InputField/Select/index.tsx +2 -1
  189. package/src/InputField/Text/index.tsx +14 -9
  190. package/src/Listing/ActionBar/index.tsx +15 -8
  191. package/src/Listing/Cell/DataCell.styles.ts +24 -0
  192. package/src/Listing/Cell/DataCell.tsx +43 -68
  193. package/src/Listing/Cell/index.tsx +88 -8
  194. package/src/Listing/EmptyResult/EmptyResult.tsx +13 -0
  195. package/src/Listing/Header/Cell/ListingHeaderCell.styles.ts +71 -0
  196. package/src/Listing/Header/{SortableCell/Content.tsx → Cell/ListingHeaderCell.tsx} +18 -83
  197. package/src/Listing/Header/Cell/SelectActionListingHeaderCell.styles.ts +26 -0
  198. package/src/Listing/Header/Cell/SelectActionListingHeaderCell.tsx +70 -0
  199. package/src/Listing/Header/ListingHeader.styles.ts +16 -0
  200. package/src/Listing/Header/{index.tsx → ListingHeader.tsx} +28 -105
  201. package/src/Listing/Header/_internals/DraggableIconButton.tsx +35 -0
  202. package/src/Listing/Header/{PredefinedSelectionList.tsx → _internals/PredefinedSelectionList.tsx} +1 -1
  203. package/src/Listing/Header/index.ts +1 -0
  204. package/src/Listing/Listing.cypress.spec.tsx +122 -0
  205. package/src/Listing/Listing.styles.ts +81 -0
  206. package/src/Listing/ListingDocs.mdx +61 -0
  207. package/src/Listing/Row/EmptyRow.styles.ts +14 -0
  208. package/src/Listing/Row/EmptyRow.tsx +30 -0
  209. package/src/Listing/{Row.tsx → Row/Row.tsx} +12 -11
  210. package/src/Listing/Row/SkeletonLoaderRows.tsx +23 -0
  211. package/src/Listing/index.stories.tsx +144 -40
  212. package/src/Listing/index.test.tsx +1 -1
  213. package/src/Listing/index.tsx +217 -262
  214. package/src/Listing/models.ts +1 -0
  215. package/src/Listing/tableAtoms.ts +15 -10
  216. package/src/Listing/useStyleTable.ts +9 -9
  217. package/src/ListingPage/index.stories.tsx +21 -8
  218. package/src/ListingPage/index.tsx +20 -38
  219. package/src/Logo/CentreonLogo.tsx +2 -2
  220. package/src/Module/LicensedModule/LicenseCheck/index.stories.tsx +0 -2
  221. package/src/Panel/Memoized.tsx +1 -1
  222. package/src/Panel/Section/index.test.tsx +1 -1
  223. package/src/Panel/Section/index.tsx +1 -1
  224. package/src/Panel/index.tsx +10 -6
  225. package/src/ParentSize/ParentSize.tsx +24 -0
  226. package/src/ParentSize/index.ts +1 -0
  227. package/src/PopoverMenu/index.tsx +18 -4
  228. package/src/RichTextEditor/ContentEditable.tsx +70 -24
  229. package/src/RichTextEditor/RichTextEditor.cypress.spec.tsx +360 -0
  230. package/src/RichTextEditor/RichTextEditor.tsx +155 -47
  231. package/src/RichTextEditor/index.stories.tsx +14 -0
  232. package/src/RichTextEditor/plugins/AutoLinkPlugin/index.tsx +53 -5
  233. package/src/RichTextEditor/plugins/FloatingLinkEditorPlugin.tsx +54 -16
  234. package/src/RichTextEditor/plugins/ToolbarPlugin/AlignPicker.tsx +115 -0
  235. package/src/RichTextEditor/plugins/ToolbarPlugin/BlockButtons.tsx +197 -0
  236. package/src/RichTextEditor/plugins/ToolbarPlugin/FormatButtons.tsx +3 -10
  237. package/src/RichTextEditor/plugins/ToolbarPlugin/MacrosButton.tsx +91 -0
  238. package/src/RichTextEditor/plugins/ToolbarPlugin/ToolbarPlugin.styles.ts +22 -0
  239. package/src/RichTextEditor/plugins/ToolbarPlugin/UndoRedoButtons.tsx +7 -3
  240. package/src/RichTextEditor/plugins/ToolbarPlugin/index.tsx +39 -9
  241. package/src/Snackbar/index.tsx +14 -4
  242. package/src/Snackbar/useSnackbar.tsx +5 -1
  243. package/src/SortableItems/SortableItem.tsx +3 -2
  244. package/src/ThemeProvider/index.tsx +41 -33
  245. package/src/ThemeProvider/palettes.ts +422 -201
  246. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +51 -0
  247. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.tsx +95 -0
  248. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/ErrorText.tsx +14 -0
  249. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/PickersStartEndDate.tsx +166 -0
  250. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/index.tsx +76 -0
  251. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/models.ts +61 -0
  252. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/usePickersStartEndDate.ts +82 -0
  253. package/src/TimePeriods/CustomTimePeriod/SimpleCustomTimePeriod.tsx +28 -0
  254. package/src/TimePeriods/CustomTimePeriod/index.tsx +66 -0
  255. package/src/TimePeriods/DateTimePickerInput.tsx +49 -0
  256. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +65 -0
  257. package/src/TimePeriods/SelectedTimePeriod.tsx +102 -0
  258. package/src/TimePeriods/TimePeriods.cypress.spec.tsx +510 -0
  259. package/src/TimePeriods/TimePeriods.styles.ts +22 -0
  260. package/src/TimePeriods/helpers/index.ts +26 -0
  261. package/src/TimePeriods/index.stories.tsx +113 -0
  262. package/src/TimePeriods/index.tsx +79 -0
  263. package/src/TimePeriods/mockedData.ts +12 -0
  264. package/src/TimePeriods/models.ts +97 -0
  265. package/src/TimePeriods/timePeriodsAtoms.ts +102 -0
  266. package/src/TimePeriods/translatedLabels.ts +9 -0
  267. package/src/TimePeriods/useSortTimePeriods.ts +31 -0
  268. package/src/TimePeriods/useTimePeriod.ts +49 -0
  269. package/src/Typography/FluidTypography/index.stories.tsx +63 -0
  270. package/src/Typography/FluidTypography/index.tsx +51 -0
  271. package/src/Typography/FluidTypography/useFluidResizeObserver.ts +56 -0
  272. package/src/Typography/{index.stories.tsx → Typography.stories.tsx} +5 -5
  273. package/src/WallpaperPage/index.stories.tsx +1 -1
  274. package/src/Wizard/ActionsBar.test.tsx +1 -1
  275. package/src/Wizard/WizardContent.tsx +2 -3
  276. package/src/Wizard/index.stories.tsx +5 -18
  277. package/src/Wizard/index.test.tsx +1 -1
  278. package/src/Wizard/index.tsx +20 -5
  279. package/src/Wizard/models.ts +7 -0
  280. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-dashboard-normal-1-snap.png +0 -0
  281. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-dashboard-with-item-header-1-snap.png +0 -0
  282. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-dashboard-with-many-panels-1-snap.png +0 -0
  283. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-basic-1-snap.png +0 -0
  284. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-20-px-height-1-snap.png +0 -0
  285. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-200-px-width-1-snap.png +0 -0
  286. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-heading-5-variant-1-snap.png +0 -0
  287. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-fluid-typography-with-long-text-1-snap.png +0 -0
  288. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-listing-as-empty-state-1-snap.png +0 -0
  289. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-listing-loading-with-no-data-1-snap.png +0 -0
  290. package/src/__image_snapshots__/storyshots-test-js-image-story-shots-listing-with-editable-and-sortable-columns-1-snap.png +0 -0
  291. package/src/api/TestQueryProvider.tsx +2 -1
  292. package/src/api/buildListingEndpoint/getSearchQueryParameterValue.ts +35 -26
  293. package/src/api/buildListingEndpoint/index.test.ts +2 -2
  294. package/src/api/buildListingEndpoint/index.ts +1 -1
  295. package/src/api/buildListingEndpoint/models.ts +0 -1
  296. package/src/api/customFetch.ts +10 -0
  297. package/src/api/useFetchQuery/index.ts +19 -15
  298. package/src/api/useGraphQuery/index.ts +166 -0
  299. package/src/api/useGraphQuery/models.ts +15 -0
  300. package/src/api/useMutationQuery/index.ts +41 -20
  301. package/src/api/useRequest/index.ts +9 -6
  302. package/src/base/tokens/README.md +3 -0
  303. package/src/base/tokens/source/$metadata.json +5 -0
  304. package/src/base/tokens/source/base.json +142 -0
  305. package/src/base/tokens/themes/base.tokens.d.ts +38 -0
  306. package/src/base/tokens/themes/base.tokens.json +695 -0
  307. package/src/base/tokens/themes/base.tokens.ts +38 -0
  308. package/src/base/tokens/themes/ui-dark.tokens.d.ts +38 -0
  309. package/src/base/tokens/themes/ui-dark.tokens.json +695 -0
  310. package/src/base/tokens/themes/ui-dark.tokens.ts +38 -0
  311. package/src/base/tokens/themes/ui-light.tokens.d.ts +38 -0
  312. package/src/base/tokens/themes/ui-light.tokens.json +695 -0
  313. package/src/base/tokens/themes/ui-light.tokens.ts +38 -0
  314. package/src/components/Avatar/Avatar.stories.tsx +23 -0
  315. package/src/components/Avatar/Avatar.styles.ts +11 -0
  316. package/src/components/Avatar/Avatar.tsx +32 -0
  317. package/src/components/Avatar/index.ts +1 -0
  318. package/src/components/Button/Button.stories.tsx +34 -0
  319. package/src/components/Button/Button.styles.ts +44 -0
  320. package/src/components/Button/Button.tsx +78 -0
  321. package/src/components/Button/Icon/IconButton.stories.tsx +18 -0
  322. package/src/components/Button/Icon/IconButton.styles.ts +14 -0
  323. package/src/components/Button/Icon/IconButton.tsx +58 -0
  324. package/src/components/Button/Icon/index.tsx +1 -0
  325. package/src/components/Button/index.ts +2 -0
  326. package/src/components/CollapsibleItem/CollapsibleItem.stories.tsx +25 -0
  327. package/src/components/CollapsibleItem/CollapsibleItem.tsx +47 -0
  328. package/src/components/CollapsibleItem/index.ts +1 -0
  329. package/src/components/CollapsibleItem/useCollapsibleItemStyles.ts +15 -0
  330. package/src/components/DataTable/DataTable.stories.tsx +51 -0
  331. package/src/components/DataTable/DataTable.styles.ts +27 -0
  332. package/src/components/DataTable/DataTable.tsx +35 -0
  333. package/src/components/DataTable/EmptyState/DataTableEmptyState.stories.tsx +21 -0
  334. package/src/components/DataTable/EmptyState/DataTableEmptyState.styles.ts +26 -0
  335. package/src/components/DataTable/EmptyState/DataTableEmptyState.tsx +53 -0
  336. package/src/components/DataTable/Item/DataTableItem.stories.tsx +25 -0
  337. package/src/components/DataTable/Item/DataTableItem.styles.ts +33 -0
  338. package/src/components/DataTable/Item/DataTableItem.tsx +123 -0
  339. package/src/components/DataTable/Item/DataTableItemSkeleton.tsx +13 -0
  340. package/src/components/DataTable/index.ts +10 -0
  341. package/src/components/Form/AccessRights/AccessRights.resource.ts +45 -0
  342. package/src/components/Form/AccessRights/AccessRightsForm.stories.tsx +59 -0
  343. package/src/components/Form/AccessRights/AccessRightsForm.styles.ts +21 -0
  344. package/src/components/Form/AccessRights/AccessRightsForm.tsx +67 -0
  345. package/src/components/Form/AccessRights/AccessRightsFormActions.tsx +80 -0
  346. package/src/components/Form/AccessRights/Input/AddAction.tsx +31 -0
  347. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.stories.tsx +54 -0
  348. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.tsx +72 -0
  349. package/src/components/Form/AccessRights/Input/ContactAccessRightsInput.styles.ts +22 -0
  350. package/src/components/Form/AccessRights/Input/ContactInputField.tsx +105 -0
  351. package/src/components/Form/AccessRights/Input/RoleInputField.tsx +29 -0
  352. package/src/components/Form/AccessRights/List/ContactAccessRightsList.stories.tsx +97 -0
  353. package/src/components/Form/AccessRights/List/ContactAccessRightsList.styles.ts +71 -0
  354. package/src/components/Form/AccessRights/List/ContactAccessRightsList.tsx +51 -0
  355. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.stories.tsx +116 -0
  356. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.tsx +118 -0
  357. package/src/components/Form/AccessRights/List/ContactAccessRightsListItemSkeleton.tsx +26 -0
  358. package/src/components/Form/AccessRights/List/ContactAccessRightsListSkeleton.tsx +28 -0
  359. package/src/components/Form/AccessRights/Stats/AccessRightsStats.styles.ts +18 -0
  360. package/src/components/Form/AccessRights/Stats/AccessRightsStats.tsx +41 -0
  361. package/src/components/Form/AccessRights/__fixtures__/contactAccessRight.mock.ts +52 -0
  362. package/src/components/Form/AccessRights/common/GroupLabel.styles.ts +18 -0
  363. package/src/components/Form/AccessRights/common/GroupLabel.tsx +15 -0
  364. package/src/components/Form/AccessRights/common/Input.styles.ts +48 -0
  365. package/src/components/Form/AccessRights/common/RoleInputSelect.styles.ts +11 -0
  366. package/src/components/Form/AccessRights/common/RoleInputSelect.tsx +57 -0
  367. package/src/components/Form/AccessRights/index.ts +3 -0
  368. package/src/components/Form/AccessRights/useAccessRightsForm.test.tsx +531 -0
  369. package/src/components/Form/AccessRights/useAccessRightsForm.tsx +282 -0
  370. package/src/components/Form/AccessRights/useAccessRightsForm.utils.ts +41 -0
  371. package/src/components/Form/Dashboard/Dashboard.resource.ts +9 -0
  372. package/src/components/Form/Dashboard/DashboardForm.stories.ts +39 -0
  373. package/src/components/Form/Dashboard/DashboardForm.styles.ts +21 -0
  374. package/src/components/Form/Dashboard/DashboardForm.tsx +134 -0
  375. package/src/components/Form/Dashboard/GlobalRefreshFieldOption.tsx +59 -0
  376. package/src/components/Form/Dashboard/index.ts +2 -0
  377. package/src/components/Form/Dashboard/translatedLabels.ts +9 -0
  378. package/src/components/Form/Form.models.ts +1 -0
  379. package/src/components/Form/Form.resource.ts +1 -0
  380. package/src/components/Form/Form.styles.ts +17 -0
  381. package/src/components/Form/FormActions.tsx +57 -0
  382. package/src/components/Form/index.ts +3 -0
  383. package/src/components/Header/PageHeader/PageHeader.stories.tsx +97 -0
  384. package/src/components/Header/PageHeader/PageHeader.styles.ts +126 -0
  385. package/src/components/Header/PageHeader/PageHeader.tsx +15 -0
  386. package/src/components/Header/PageHeader/PageHeaderActions.tsx +17 -0
  387. package/src/components/Header/PageHeader/PageHeaderMain.tsx +15 -0
  388. package/src/components/Header/PageHeader/PageHeaderMenu.tsx +15 -0
  389. package/src/components/Header/PageHeader/PageHeaderMessage.tsx +32 -0
  390. package/src/components/Header/PageHeader/PageHeaderTitle.tsx +47 -0
  391. package/src/components/Header/PageHeader/index.ts +14 -0
  392. package/src/components/Header/index.ts +1 -0
  393. package/src/components/Icon/Icon.styles.ts +0 -0
  394. package/src/components/Icon/Icon.tsx +2 -0
  395. package/src/components/Icon/index.ts +0 -0
  396. package/src/components/Inputs/Switch/Switch.stories.tsx +22 -0
  397. package/src/components/Inputs/Switch/Switch.styles.ts +13 -0
  398. package/src/components/Inputs/Switch/Switch.tsx +18 -0
  399. package/src/components/Inputs/index.ts +1 -0
  400. package/src/components/ItemComposition/Item.tsx +41 -0
  401. package/src/components/ItemComposition/ItemComposition.stories.tsx +78 -0
  402. package/src/components/ItemComposition/ItemComposition.styles.ts +29 -0
  403. package/src/components/ItemComposition/ItemComposition.tsx +45 -0
  404. package/src/components/ItemComposition/index.ts +6 -0
  405. package/src/components/Layout/AreaIndicator.styles.ts +33 -0
  406. package/src/components/Layout/AreaIndicator.tsx +35 -0
  407. package/src/components/Layout/PageLayout/PageLayout.stories.tsx +81 -0
  408. package/src/components/Layout/PageLayout/PageLayout.styles.ts +41 -0
  409. package/src/components/Layout/PageLayout/PageLayout.tsx +21 -0
  410. package/src/components/Layout/PageLayout/PageLayoutActions.tsx +24 -0
  411. package/src/components/Layout/PageLayout/PageLayoutBody.tsx +24 -0
  412. package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +15 -0
  413. package/src/components/Layout/PageLayout/index.ts +10 -0
  414. package/src/components/Layout/index.ts +1 -0
  415. package/src/components/List/Item/Avatar.tsx +21 -0
  416. package/src/components/List/Item/AvatarSkeleton.tsx +17 -0
  417. package/src/components/List/Item/ListItem.stories.tsx +41 -0
  418. package/src/components/List/Item/ListItem.styles.ts +57 -0
  419. package/src/components/List/Item/ListItem.tsx +32 -0
  420. package/src/components/List/Item/Text.tsx +25 -0
  421. package/src/components/List/Item/TextSkeleton.tsx +22 -0
  422. package/src/components/List/Item/index.ts +14 -0
  423. package/src/components/List/List.stories.tsx +70 -0
  424. package/src/components/List/List.styles.ts +8 -0
  425. package/src/components/List/List.tsx +19 -0
  426. package/src/components/List/index.ts +6 -0
  427. package/src/components/Menu/Button/MenuButton.stories.tsx +16 -0
  428. package/src/components/Menu/Button/MenuButton.styles.ts +27 -0
  429. package/src/components/Menu/Button/MenuButton.tsx +65 -0
  430. package/src/components/Menu/Button/index.ts +1 -0
  431. package/src/components/Menu/Menu.stories.tsx +71 -0
  432. package/src/components/Menu/Menu.styles.ts +68 -0
  433. package/src/components/Menu/Menu.tsx +25 -0
  434. package/src/components/Menu/MenuDivider.tsx +13 -0
  435. package/src/components/Menu/MenuItem.tsx +36 -0
  436. package/src/components/Menu/MenuItems.tsx +35 -0
  437. package/src/components/Menu/index.ts +12 -0
  438. package/src/components/Menu/useMenu.tsx +79 -0
  439. package/src/components/Modal/Modal.stories.tsx +142 -0
  440. package/src/components/Modal/Modal.styles.ts +88 -0
  441. package/src/components/Modal/Modal.tsx +79 -0
  442. package/src/components/Modal/ModalActions.tsx +62 -0
  443. package/src/components/Modal/ModalBody.tsx +15 -0
  444. package/src/components/Modal/ModalHeader.tsx +21 -0
  445. package/src/components/Modal/index.ts +12 -0
  446. package/src/components/README.md +3 -0
  447. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.stories.tsx +62 -0
  448. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.styles.tsx +22 -0
  449. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.tsx +68 -0
  450. package/src/components/Tooltip/ConfirmationTooltip/TooltipContent.tsx +31 -0
  451. package/src/components/Tooltip/ConfirmationTooltip/index.ts +1 -0
  452. package/src/components/Tooltip/ConfirmationTooltip/models.ts +18 -0
  453. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.stories.tsx +70 -0
  454. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.styles.ts +5 -0
  455. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.tsx +115 -0
  456. package/src/components/Tooltip/TextOverflowTooltip/index.tsx +1 -0
  457. package/src/components/Tooltip/Tooltip.stories.tsx +41 -0
  458. package/src/components/Tooltip/Tooltip.tsx +57 -0
  459. package/src/components/Tooltip/index.ts +2 -0
  460. package/src/components/index.ts +13 -0
  461. package/src/index.ts +28 -21
  462. package/src/screens/dashboard/DashboardsDetail.stories.tsx +108 -0
  463. package/src/screens/dashboard/DashboardsOverview.stories.tsx +281 -0
  464. package/src/styles/tokens/themes/_ui-dark.tokens.json +695 -0
  465. package/src/styles/tokens/themes/_ui-light.tokens.json +695 -0
  466. package/src/utils/centreonBaseURL.ts +4 -0
  467. package/src/utils/docsURL.ts +31 -0
  468. package/src/utils/getNormalizedId.ts +1 -3
  469. package/src/utils/index.ts +22 -0
  470. package/src/utils/panelSize.ts +15 -0
  471. package/src/utils/sanitizedHTML.ts +18 -0
  472. package/src/utils/translatedLabel.ts +2 -0
  473. package/src/utils/useCopyToClipboard.ts +2 -3
  474. package/src/utils/useDateTimePickerAdapter.ts +309 -0
  475. package/src/utils/useDebounce.ts +8 -5
  476. package/src/utils/useDeepCallback.ts +1 -3
  477. package/src/utils/useDeepMemo.ts +1 -3
  478. package/src/utils/useInfiniteScrollListing.ts +106 -0
  479. package/src/utils/useIntersectionObserver.ts +5 -5
  480. package/src/utils/useKeyObserver.tsx +1 -3
  481. package/src/utils/useLicenseExpirationWarning.cypress.spec.tsx +137 -0
  482. package/src/utils/useLicenseExpirationWarning.ts +52 -0
  483. package/src/utils/useLocaleDateTimeFormat/index.test.tsx +1 -1
  484. package/src/utils/useLocaleDateTimeFormat/index.ts +1 -2
  485. package/src/utils/useLocaleDateTimeFormat/localeFallback.test.tsx +1 -1
  486. package/src/utils/useMemoComponent.ts +1 -1
  487. package/src/utils/useRefreshInterval.ts +39 -0
  488. package/src/utils/useResizeObserver.ts +6 -0
  489. package/src/utils/useThresholds.ts +0 -0
  490. package/{setupTests.js → test/setupTests.js} +1 -1
  491. package/{src → test}/testRenderer.tsx +1 -1
  492. package/.storybook/main.js +0 -82
  493. package/.storybook/preview.tsx +0 -21
  494. package/jest.config.js +0 -20
  495. package/src/Listing/Header/SortableCell/DraggableIcon.tsx +0 -41
  496. package/src/Listing/Skeleton.tsx +0 -11
  497. package/src/storyshots.test.js +0 -52
  498. package/testRunner.js +0 -36
  499. package/tsconfig.json +0 -29
  500. package/types/declarations.d.ts +0 -9
  501. /package/{assets → public/brand}/centreon-logo-one-line-dark.svg +0 -0
  502. /package/{assets → public/brand}/centreon-logo-one-line-light.svg +0 -0
  503. /package/{fonts/fonts-generated → public/fonts}/roboto-bold-webfont.ttf +0 -0
  504. /package/{fonts/fonts-generated → public/fonts}/roboto-bold-webfont.woff +0 -0
  505. /package/{fonts/fonts-generated → public/fonts}/roboto-bold-webfont.woff2 +0 -0
  506. /package/{fonts/fonts-generated → public/fonts}/roboto-light-webfont.ttf +0 -0
  507. /package/{fonts/fonts-generated → public/fonts}/roboto-light-webfont.woff +0 -0
  508. /package/{fonts/fonts-generated → public/fonts}/roboto-light-webfont.woff2 +0 -0
  509. /package/{fonts/fonts-generated → public/fonts}/roboto-medium-webfont.ttf +0 -0
  510. /package/{fonts/fonts-generated → public/fonts}/roboto-medium-webfont.woff +0 -0
  511. /package/{fonts/fonts-generated → public/fonts}/roboto-medium-webfont.woff2 +0 -0
  512. /package/{fonts/fonts-generated → public/fonts}/roboto-regular-webfont.ttf +0 -0
  513. /package/{fonts/fonts-generated → public/fonts}/roboto-regular-webfont.woff +0 -0
  514. /package/{fonts/fonts-generated → public/fonts}/roboto-regular-webfont.woff2 +0 -0
  515. /package/{assets → src/@assets/images}/not-authorized-template-background-dark.svg +0 -0
  516. /package/{assets → src/@assets/images}/not-authorized-template-background-light.svg +0 -0
  517. /package/src/Listing/Header/{Label.tsx → _internals/Label.tsx} +0 -0
  518. /package/src/Typography/{index.tsx → story.utils.tsx} +0 -0
@@ -10,24 +10,28 @@ import {
10
10
  pipe,
11
11
  not,
12
12
  has,
13
- omit
13
+ omit,
14
+ uniqBy
14
15
  } from 'ramda';
15
16
 
16
17
  import { CircularProgress, useTheme } from '@mui/material';
17
18
 
18
19
  import { Props as AutocompleteFieldProps } from '..';
19
- import useIntersectionObserver from '../../../../utils/useIntersectionObserver';
20
+ import {
21
+ useDebounce,
22
+ useIntersectionObserver,
23
+ useDeepCompare
24
+ } from '../../../../utils';
20
25
  import { ListingModel, SelectEntry } from '../../../..';
21
26
  import Option from '../../Option';
22
27
  import {
23
28
  ConditionsSearchParameter,
24
29
  SearchParameter
25
30
  } from '../../../../api/buildListingEndpoint/models';
26
- import useDebounce from '../../../../utils/useDebounce';
27
31
  import useFetchQuery from '../../../../api/useFetchQuery';
28
- import { useDeepCompare } from '../../../../utils/useMemoComponent';
29
32
 
30
33
  export interface ConnectedAutoCompleteFieldProps<TData> {
34
+ allowUniqOption?: boolean;
31
35
  conditionField?: keyof SelectEntry;
32
36
  field: string;
33
37
  getEndpoint: ({ search, page }) => string;
@@ -35,6 +39,7 @@ export interface ConnectedAutoCompleteFieldProps<TData> {
35
39
  getRequestHeaders?: HeadersInit;
36
40
  initialPage: number;
37
41
  labelKey?: string;
42
+ queryKey?: string;
38
43
  searchConditions?: Array<ConditionsSearchParameter>;
39
44
  }
40
45
 
@@ -53,6 +58,8 @@ const ConnectedAutocompleteField = (
53
58
  getRenderedOptionText = (option): string => option.name?.toString(),
54
59
  getRequestHeaders,
55
60
  displayOptionThumbnail,
61
+ queryKey,
62
+ allowUniqOption,
56
63
  ...props
57
64
  }: ConnectedAutoCompleteFieldProps<TData> &
58
65
  Omit<AutocompleteFieldProps, 'options'>): JSX.Element => {
@@ -63,6 +70,9 @@ const ConnectedAutocompleteField = (
63
70
  const [searchParameter, setSearchParameter] = useState<
64
71
  SearchParameter | undefined
65
72
  >(undefined);
73
+
74
+ const [autocompleteChangedValue, setAutocompleteChangedValue] =
75
+ useState<Array<SelectEntry>>();
66
76
  const debounce = useDebounce({
67
77
  functionToDebounce: (value): void => {
68
78
  setSearchParameter(getSearchParameter(value));
@@ -84,10 +94,16 @@ const ConnectedAutocompleteField = (
84
94
  search: searchParameter
85
95
  });
86
96
  },
87
- getQueryKey: () => [`autocomplete-${props.label}`, page, searchParameter],
97
+ getQueryKey: () => [
98
+ `autocomplete-${queryKey || props.label}`,
99
+ page,
100
+ searchParameter
101
+ ],
88
102
  isPaginated: true,
89
103
  queryOptions: {
104
+ cacheTime: 0,
90
105
  enabled: false,
106
+ staleTime: 0,
91
107
  suspense: false
92
108
  }
93
109
  });
@@ -272,6 +288,13 @@ const ConnectedAutocompleteField = (
272
288
  );
273
289
  }, useDeepCompare([searchConditions]));
274
290
 
291
+ useEffect(() => {
292
+ if (!autocompleteChangedValue && !props?.value) {
293
+ return;
294
+ }
295
+ setSearchParameter(undefined);
296
+ }, [autocompleteChangedValue, props?.value]);
297
+
275
298
  useEffect(() => {
276
299
  if (!optionsOpen) {
277
300
  return;
@@ -285,8 +308,11 @@ const ConnectedAutocompleteField = (
285
308
  filterOptions={(opt): SelectEntry => opt}
286
309
  loading={isFetching}
287
310
  open={optionsOpen}
288
- options={options}
311
+ options={
312
+ allowUniqOption ? uniqBy(getRenderedOptionText, options) : options
313
+ }
289
314
  renderOption={renderOptions}
315
+ onChange={(_, value) => setAutocompleteChangedValue(value)}
290
316
  onClose={(): void => setOptionsOpen(false)}
291
317
  onOpen={(): void => setOptionsOpen(true)}
292
318
  onTextChange={changeText}
@@ -1,7 +1,6 @@
1
1
  import { useState } from 'react';
2
2
 
3
3
  import { isNil, not } from 'ramda';
4
- import withMock from 'storybook-addon-mock';
5
4
 
6
5
  import { Tooltip, Typography } from '@mui/material';
7
6
 
@@ -15,7 +14,6 @@ import MultiDraggableAutocompleteField from './Multi';
15
14
  import { ItemActionProps } from '.';
16
15
 
17
16
  export default {
18
- decorators: [withMock],
19
17
  title: 'InputField/Autocomplete/Draggable'
20
18
  };
21
19
 
@@ -1,7 +1,7 @@
1
1
  import { includes, map, prop, reject } from 'ramda';
2
2
  import { makeStyles } from 'tss-react/mui';
3
3
 
4
- import { Chip } from '@mui/material';
4
+ import { Chip, ChipProps, Tooltip } from '@mui/material';
5
5
  import { UseAutocompleteProps } from '@mui/material/useAutocomplete';
6
6
 
7
7
  import Autocomplete, { Props as AutocompleteProps } from '..';
@@ -18,7 +18,6 @@ const useStyles = makeStyles()((theme) => ({
18
18
  width: theme.spacing(1.5)
19
19
  },
20
20
  tag: {
21
- backgroundColor: theme.palette.divider,
22
21
  fontSize: theme.typography.caption.fontSize
23
22
  }
24
23
  }));
@@ -33,30 +32,48 @@ export interface Props
33
32
  UseAutocompleteProps<SelectEntry, Multiple, DisableClearable, FreeSolo>,
34
33
  'multiple'
35
34
  > {
35
+ chipProps?: ChipProps;
36
36
  disableSortedOptions?: boolean;
37
+ getOptionTooltipLabel?: (option) => string;
38
+ getTagLabel?: (option) => string;
39
+ optionProperty?: string;
37
40
  }
38
41
 
39
42
  const MultiAutocompleteField = ({
40
43
  value,
41
44
  options,
42
45
  disableSortedOptions = false,
46
+ optionProperty = 'name',
47
+ getOptionLabel = (option): string => option.name,
48
+ getTagLabel = (option): string => option[optionProperty],
49
+ getOptionTooltipLabel,
50
+ chipProps,
43
51
  ...props
44
52
  }: Props): JSX.Element => {
45
53
  const { classes } = useStyles();
46
54
 
47
55
  const renderTags = (renderedValue, getTagProps): Array<JSX.Element> =>
48
- renderedValue.map((option, index) => (
49
- <Chip
50
- classes={{
51
- deleteIcon: classes.deleteIcon,
52
- root: classes.tag
53
- }}
54
- key={option.id}
55
- label={option.name}
56
- size="medium"
57
- {...getTagProps({ index })}
58
- />
59
- ));
56
+ renderedValue.map((option, index) => {
57
+ return (
58
+ <Tooltip
59
+ key={option.id}
60
+ placement="top"
61
+ title={getOptionTooltipLabel?.(option)}
62
+ >
63
+ <Chip
64
+ classes={{
65
+ deleteIcon: classes.deleteIcon,
66
+ root: classes.tag
67
+ }}
68
+ label={getTagLabel(option)}
69
+ size="medium"
70
+ {...getTagProps({ index })}
71
+ {...chipProps}
72
+ onDelete={(event) => chipProps?.onDelete?.(event, option)}
73
+ />
74
+ </Tooltip>
75
+ );
76
+ });
60
77
 
61
78
  const getLimitTagsText = (more): JSX.Element => <Option>{`+${more}`}</Option>;
62
79
 
@@ -84,7 +101,7 @@ const MultiAutocompleteField = ({
84
101
  key={option.id}
85
102
  {...(renderProps as React.HTMLAttributes<HTMLLIElement>)}
86
103
  >
87
- <Option checkboxSelected={selected}>{option.name}</Option>
104
+ <Option checkboxSelected={selected}>{getOptionLabel(option)}</Option>
88
105
  </li>
89
106
  )}
90
107
  renderTags={renderTags}
@@ -85,7 +85,7 @@ const AutoSizeAutocompleteField = ({
85
85
  endAdornment,
86
86
  customPadding
87
87
  }: AutoSizeAutocompleteFieldProps): JSX.Element => {
88
- const [value, setValue] = React.useState(autoSizeOptions[1]);
88
+ const [value, setValue] = React.useState(null);
89
89
 
90
90
  const change = (_, newValue): void => {
91
91
  setValue(newValue);
@@ -108,12 +108,3 @@ const AutoSizeAutocompleteField = ({
108
108
  export const autoSize = (): JSX.Element => {
109
109
  return <AutoSizeAutocompleteField />;
110
110
  };
111
-
112
- export const autoSizeWithCustomPadding = (): JSX.Element => {
113
- return (
114
- <AutoSizeAutocompleteField
115
- customPadding={5}
116
- endAdornment={<EndAdornment />}
117
- />
118
- );
119
- };
@@ -20,7 +20,7 @@ import Option from '../Option';
20
20
  import TextField from '../../Text';
21
21
  import { SelectEntry } from '..';
22
22
  import { searchLabel } from '../../translatedLabels';
23
- import getNormalizedId from '../../../utils/getNormalizedId';
23
+ import { getNormalizedId } from '../../../utils';
24
24
 
25
25
  export type Props = {
26
26
  autoFocus?: boolean;
@@ -32,6 +32,7 @@ export type Props = {
32
32
  displayPopupIcon?: boolean;
33
33
  endAdornment?: React.ReactElement;
34
34
  error?: string;
35
+ getOptionItemLabel?: (option) => string;
35
36
  hideInput?: boolean;
36
37
  label: string;
37
38
  loading?: boolean;
@@ -158,6 +159,7 @@ const AutocompleteField = ({
158
159
  autoSize = false,
159
160
  autoSizeDefaultWidth = 0,
160
161
  autoSizeCustomPadding,
162
+ getOptionItemLabel = (option) => option.name,
161
163
  ...autocompleteProps
162
164
  }: Props): JSX.Element => {
163
165
  const { classes, cx } = useStyles({ hideInput });
@@ -193,6 +195,7 @@ const AutocompleteField = ({
193
195
  </>
194
196
  ),
195
197
  style: {
198
+ background: 'transparent',
196
199
  paddingRight: theme.spacing(5)
197
200
  }
198
201
  }}
@@ -249,7 +252,7 @@ const AutocompleteField = ({
249
252
  <Option
250
253
  thumbnailUrl={displayOptionThumbnail ? option.url : undefined}
251
254
  >
252
- {option.name}
255
+ {getOptionItemLabel(option)}
253
256
  </Option>
254
257
  </li>
255
258
  );
@@ -13,7 +13,7 @@ import {
13
13
  Divider
14
14
  } from '@mui/material';
15
15
 
16
- import getNormalizedId from '../../utils/getNormalizedId';
16
+ import { getNormalizedId } from '../../utils';
17
17
 
18
18
  import Option from './Option';
19
19
 
@@ -115,6 +115,7 @@ const SelectField = ({
115
115
 
116
116
  return (
117
117
  <MenuItem
118
+ aria-label={name}
118
119
  data-testid={testId}
119
120
  key={key}
120
121
  style={{ backgroundColor: color }}
@@ -1,6 +1,6 @@
1
1
  import { forwardRef, useCallback } from 'react';
2
2
 
3
- import { isNil } from 'ramda';
3
+ import { equals, isNil } from 'ramda';
4
4
  import { makeStyles } from 'tss-react/mui';
5
5
 
6
6
  import {
@@ -9,17 +9,19 @@ import {
9
9
  TextFieldProps,
10
10
  Theme,
11
11
  Tooltip,
12
- Typography
12
+ Typography,
13
+ Box
13
14
  } from '@mui/material';
14
15
 
15
- import getNormalizedId from '../../utils/getNormalizedId';
16
+ import { getNormalizedId } from '../../utils';
16
17
 
17
18
  import useAutoSize from './useAutoSize';
18
19
 
19
20
  const useStyles = makeStyles<{ displayAsBlock: boolean }>()(
20
21
  (theme: Theme, { displayAsBlock }) => ({
21
- compact: {
22
- fontSize: 'x-small'
22
+ autoSizeCompact: {
23
+ paddingRight: theme.spacing(1),
24
+ paddingTop: theme.spacing(0.6)
23
25
  },
24
26
  hiddenText: {
25
27
  display: 'table',
@@ -84,6 +86,7 @@ export type Props = {
84
86
  error?: string;
85
87
  externalValueForAutoSize?: string;
86
88
  open?: boolean;
89
+ required?: boolean;
87
90
  size?: SizeVariant;
88
91
  transparent?: boolean;
89
92
  value?: string;
@@ -108,6 +111,7 @@ const TextField = forwardRef(
108
111
  externalValueForAutoSize,
109
112
  autoSizeCustomPadding,
110
113
  defaultValue,
114
+ required = false,
111
115
  ...rest
112
116
  }: Props,
113
117
  ref: React.ForwardedRef<HTMLDivElement>
@@ -138,7 +142,7 @@ const TextField = forwardRef(
138
142
  }, [innerValue, debounced, defaultValue]);
139
143
 
140
144
  return (
141
- <>
145
+ <Box sx={{ width: autoSize ? 'auto' : '100%' }}>
142
146
  <Tooltip placement="top" title={tooltipTitle}>
143
147
  <MuiTextField
144
148
  data-testid={dataTestId}
@@ -160,11 +164,11 @@ const TextField = forwardRef(
160
164
  className: cx(
161
165
  classes.inputBase,
162
166
  {
163
- [classes.transparent]: transparent
167
+ [classes.transparent]: transparent,
168
+ [classes.autoSizeCompact]: autoSize && equals(size, 'compact')
164
169
  },
165
170
  className
166
171
  ),
167
- disableUnderline: true,
168
172
  endAdornment: (
169
173
  <OptionalLabelInputAdornment label={label} position="end">
170
174
  {EndAdornment ? (
@@ -182,6 +186,7 @@ const TextField = forwardRef(
182
186
  ...rest.InputProps
183
187
  }}
184
188
  className={classes.textField}
189
+ required={required}
185
190
  sx={{
186
191
  width: autoSize ? width : undefined,
187
192
  ...rest?.sx
@@ -193,7 +198,7 @@ const TextField = forwardRef(
193
198
  {rest.value || externalValueForAutoSize || innerValue}
194
199
  </Typography>
195
200
  )}
196
- </>
201
+ </Box>
197
202
  );
198
203
  }
199
204
  );
@@ -11,7 +11,7 @@ import { userAtom, ListingVariant } from '@centreon/ui-context';
11
11
 
12
12
  import { ListingProps } from '../..';
13
13
  import { labelOf, labelRowsPerPage } from '../translatedLabels';
14
- import useMemoComponent from '../../utils/useMemoComponent';
14
+ import { useMemoComponent } from '../../utils';
15
15
  import IconButton from '../../Button/Icon/index';
16
16
 
17
17
  import StyledPagination from './Pagination';
@@ -86,7 +86,7 @@ type Props = Pick<
86
86
  | 'moveTablePagination'
87
87
  | 'widthToMoveTablePagination'
88
88
  | 'customPaginationClassName'
89
- | 'viewMode'
89
+ | 'listingVariant'
90
90
  | 'viewerModeConfiguration'
91
91
  >;
92
92
 
@@ -107,7 +107,8 @@ const MemoListingActionBar = ({
107
107
  widthToMoveTablePagination = 550,
108
108
  actionsBarMemoProps = [],
109
109
  viewerModeConfiguration,
110
- viewMode
110
+ listingVariant,
111
+ visualizationActions
111
112
  }: Props): JSX.Element => {
112
113
  const marginWidthTableListing = 30;
113
114
  const { classes, cx } = useStyles({
@@ -136,6 +137,7 @@ const MemoListingActionBar = ({
136
137
  <div className={classes.actions}>
137
138
  <div>{actions}</div>
138
139
  </div>
140
+ {visualizationActions && <div>{visualizationActions}</div>}
139
141
  <div className={classes.subContainer}>
140
142
  {!isEmpty(viewerModeConfiguration) &&
141
143
  !isNil(viewerModeConfiguration) && (
@@ -159,7 +161,10 @@ const MemoListingActionBar = ({
159
161
  viewerModeConfiguration?.customStyle
160
162
  ?.customStyleViewerModeIcon,
161
163
  {
162
- [classes.mode]: equals(viewMode, ListingVariant.extended)
164
+ [classes.mode]: equals(
165
+ listingVariant,
166
+ ListingVariant.extended
167
+ )
163
168
  }
164
169
  )}
165
170
  >
@@ -210,7 +215,7 @@ const MemoListingActionBar = ({
210
215
  currentPage,
211
216
  moveTablePagination,
212
217
  widthToMoveTablePagination,
213
- viewMode,
218
+ listingVariant,
214
219
  themeMode,
215
220
  limit,
216
221
  pick(
@@ -240,8 +245,9 @@ const ListingActionBar = ({
240
245
  moveTablePagination,
241
246
  widthToMoveTablePagination,
242
247
  customPaginationClassName,
243
- viewMode,
244
- viewerModeConfiguration
248
+ listingVariant,
249
+ viewerModeConfiguration,
250
+ visualizationActions
245
251
  }: Props): JSX.Element | null => {
246
252
  if (
247
253
  not(paginated) &&
@@ -260,11 +266,12 @@ const ListingActionBar = ({
260
266
  currentPage={currentPage}
261
267
  customPaginationClassName={customPaginationClassName}
262
268
  limit={limit}
269
+ listingVariant={listingVariant}
263
270
  moveTablePagination={moveTablePagination}
264
271
  paginated={paginated}
265
272
  totalRows={totalRows}
266
- viewMode={viewMode}
267
273
  viewerModeConfiguration={viewerModeConfiguration}
274
+ visualizationActions={visualizationActions}
268
275
  widthToMoveTablePagination={widthToMoveTablePagination}
269
276
  onLimitChange={onLimitChange}
270
277
  onPaginate={onPaginate}
@@ -0,0 +1,24 @@
1
+ import { makeStyles } from 'tss-react/mui';
2
+
3
+ const useStyles = makeStyles()((theme) => ({
4
+ cell: {
5
+ alignItems: 'center',
6
+ display: 'flex',
7
+ height: '100%',
8
+ overflow: 'hidden',
9
+ whiteSpace: 'nowrap'
10
+ },
11
+ componentColumn: {
12
+ width: theme.spacing(2.75)
13
+ },
14
+ rowNotHovered: {
15
+ color: theme.palette.text.secondary
16
+ },
17
+ text: {
18
+ overflow: 'hidden',
19
+ textOverflow: 'ellipsis',
20
+ whiteSpace: 'nowrap'
21
+ }
22
+ }));
23
+
24
+ export { useStyles };
@@ -1,13 +1,11 @@
1
1
  import { memo } from 'react';
2
2
 
3
3
  import { equals, props } from 'ramda';
4
- import { makeStyles } from 'tss-react/mui';
5
4
 
6
5
  import { Tooltip } from '@mui/material';
7
6
 
8
7
  import { ListingVariant } from '@centreon/ui-context';
9
8
 
10
- import DraggableIcon from '../Header/SortableCell/DraggableIcon';
11
9
  import {
12
10
  Column,
13
11
  ColumnType,
@@ -17,46 +15,24 @@ import {
17
15
  import useStyleTable from '../useStyleTable';
18
16
 
19
17
  import EllipsisTypography from './EllipsisTypography';
18
+ import { useStyles } from './DataCell.styles';
20
19
 
21
20
  import Cell from '.';
22
21
 
23
22
  interface Props {
24
- areColumnsEditable: boolean;
25
23
  column: Column;
26
24
  disableRowCondition: (row) => boolean;
27
25
  getHighlightRowCondition?: (row) => boolean;
28
26
  isRowHovered: boolean;
29
27
  isRowSelected: boolean;
28
+ labelCollapse?: string;
29
+ labelExpand?: string;
30
+ listingVariant?: ListingVariant;
30
31
  row?;
31
32
  rowColorConditions?: Array<RowColorCondition>;
32
- viewMode?: ListingVariant;
33
+ subItemsRowProperty?: string;
33
34
  }
34
35
 
35
- const useStyles = makeStyles()((theme) => ({
36
- cell: {
37
- alignItems: 'center',
38
- backgroundColor: 'transparent',
39
- display: 'flex',
40
- height: '100%',
41
- overflow: 'hidden',
42
- whiteSpace: 'nowrap'
43
- },
44
- componentColumn: {
45
- width: theme.spacing(2.75)
46
- },
47
- headerCell: {
48
- padding: theme.spacing(0, 0, 0, 1)
49
- },
50
- rowNotHovered: {
51
- color: theme.palette.text.secondary
52
- },
53
- text: {
54
- overflow: 'hidden',
55
- textOverflow: 'ellipsis',
56
- whiteSpace: 'nowrap'
57
- }
58
- }));
59
-
60
36
  const DataCell = ({
61
37
  row,
62
38
  column,
@@ -64,19 +40,24 @@ const DataCell = ({
64
40
  isRowHovered,
65
41
  rowColorConditions,
66
42
  disableRowCondition,
67
- viewMode,
43
+ listingVariant,
68
44
  getHighlightRowCondition,
69
- areColumnsEditable
45
+ subItemsRowProperty,
46
+ labelCollapse,
47
+ labelExpand
70
48
  }: Props): JSX.Element | null => {
71
- const { dataStyle } = useStyleTable({ viewMode });
72
49
  const { classes } = useStyles();
50
+ const { dataStyle } = useStyleTable({ listingVariant });
73
51
 
74
52
  const commonCellProps = {
75
- align: 'left' as const,
76
53
  disableRowCondition,
54
+ displaySubItemsCaret: column.displaySubItemsCaret,
77
55
  isRowHovered,
56
+ labelCollapse,
57
+ labelExpand,
78
58
  row,
79
- rowColorConditions
59
+ rowColorConditions,
60
+ subItemsRowProperty
80
61
  };
81
62
 
82
63
  const isRowHighlighted = getHighlightRowCondition?.(row);
@@ -102,20 +83,18 @@ const DataCell = ({
102
83
 
103
84
  return (
104
85
  <Cell
86
+ className={classes.cell}
105
87
  isRowHighlighted={isRowHighlighted}
88
+ listingVariant={listingVariant}
106
89
  style={{
107
90
  gridColumn
108
91
  }}
109
- viewMode={viewMode}
110
92
  {...commonCellProps}
111
93
  >
112
94
  {isTruncated && (
113
95
  <Tooltip title={formattedString}>{typography}</Tooltip>
114
96
  )}
115
- <>
116
- {areColumnsEditable && <DraggableIcon />}
117
- {!isTruncated && typography}
118
- </>
97
+ {!isTruncated && typography}
119
98
  </Cell>
120
99
  );
121
100
  },
@@ -133,8 +112,9 @@ const DataCell = ({
133
112
 
134
113
  return (
135
114
  <Cell
115
+ className={classes.cell}
136
116
  isRowHighlighted={isRowHighlighted}
137
- viewMode={viewMode}
117
+ listingVariant={listingVariant}
138
118
  onClick={(e): void => {
139
119
  if (!clickable) {
140
120
  return;
@@ -144,31 +124,25 @@ const DataCell = ({
144
124
  }}
145
125
  {...commonCellProps}
146
126
  >
147
- <>
148
- {areColumnsEditable && (
149
- <DraggableIcon className={classes.componentColumn} />
150
- )}
151
-
152
- <Component
153
- isHovered={isRowHovered}
154
- isSelected={isRowSelected}
155
- renderEllipsisTypography={({
156
- className,
157
- formattedString
158
- }): JSX.Element => {
159
- return (
160
- <EllipsisTypography
161
- className={className}
162
- dataStyle={dataStyle}
163
- disableRowCondition={disableRowCondition(row)}
164
- formattedString={formattedString}
165
- isRowHovered={isRowHovered}
166
- />
167
- );
168
- }}
169
- row={row}
170
- />
171
- </>
127
+ <Component
128
+ isHovered={isRowHovered}
129
+ isSelected={isRowSelected}
130
+ renderEllipsisTypography={({
131
+ className,
132
+ formattedString
133
+ }): JSX.Element => {
134
+ return (
135
+ <EllipsisTypography
136
+ className={className}
137
+ dataStyle={dataStyle}
138
+ disableRowCondition={disableRowCondition(row)}
139
+ formattedString={formattedString}
140
+ isRowHovered={isRowHovered}
141
+ />
142
+ );
143
+ }}
144
+ row={row}
145
+ />
172
146
  </Cell>
173
147
  );
174
148
  }
@@ -248,7 +222,7 @@ const MemoizedDataCell = memo<Props>(
248
222
 
249
223
  // Explicitely prevent the component from rendering.
250
224
  if (nextRenderComponentCondition === false) {
251
- return equals(prevProps.viewMode, nextProps.viewMode);
225
+ return equals(prevProps.listingVariant, nextProps.listingVariant);
252
226
  }
253
227
 
254
228
  const previousRowProps = previousRowMemoProps
@@ -259,6 +233,7 @@ const MemoizedDataCell = memo<Props>(
259
233
  : nextProps.row;
260
234
 
261
235
  return (
236
+ equals(prevProps.row, nextProps.row) &&
262
237
  equals(previousIsComponentHovered, nextIsComponentHovered) &&
263
238
  equals(prevProps.isRowHovered, nextProps.isRowHovered) &&
264
239
  equals(previousFormattedString, nextFormattedString) &&
@@ -280,8 +255,8 @@ const MemoizedDataCell = memo<Props>(
280
255
  nextProps.disableRowCondition(nextProps.row)
281
256
  ) &&
282
257
  equals(previousIsRowHighlighted, nextIsRowHighlighted) &&
283
- equals(prevProps.viewMode, nextProps.viewMode) &&
284
- equals(prevProps.areColumnsEditable, nextProps.areColumnsEditable)
258
+ equals(prevProps.listingVariant, nextProps.listingVariant) &&
259
+ equals(prevProps.subItemsRowProperty, nextProps.subItemsRowProperty)
285
260
  );
286
261
  }
287
262
  );