@scality/core-ui 0.115.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/.babelrc +17 -0
  2. package/.eslintrc.json +7 -0
  3. package/.flowconfig +21 -0
  4. package/.github/ISSUE_TEMPLATE/bug.md +18 -0
  5. package/.github/ISSUE_TEMPLATE/improvement.md +18 -0
  6. package/.github/PULL_REQUEST_TEMPLATE.md +24 -0
  7. package/.github/workflows/codeql.yaml +25 -0
  8. package/.github/workflows/dependency-review.yaml +16 -0
  9. package/.github/workflows/github-pages.yml +17 -0
  10. package/.github/workflows/post-release.yml +52 -0
  11. package/.github/workflows/tests.yaml +32 -0
  12. package/.prettierrc +5 -0
  13. package/.storybook/main.ts +38 -0
  14. package/.storybook/manager.ts +6 -0
  15. package/.storybook/preview-head.html +99 -0
  16. package/.storybook/preview.js +68 -0
  17. package/.storybook/public/favicon.ico +0 -0
  18. package/.storybook/public/logo-core-ui.png +0 -0
  19. package/.storybook/theme.storybook.ts +13 -0
  20. package/LICENSE +201 -0
  21. package/README.md +296 -0
  22. package/__mocks__/fileMock.js +2 -0
  23. package/__mocks__/styleMock.js +2 -0
  24. package/dist/components/IconHelper.d.ts +10 -0
  25. package/dist/components/IconHelper.d.ts.map +1 -0
  26. package/dist/components/IconHelper.js +4 -0
  27. package/dist/components/areachart/AreaChart.component.d.ts +14 -0
  28. package/dist/components/areachart/AreaChart.component.d.ts.map +1 -0
  29. package/dist/components/areachart/AreaChart.component.js +27 -0
  30. package/dist/components/banner/Banner.component.d.ts +11 -0
  31. package/dist/components/banner/Banner.component.d.ts.map +1 -0
  32. package/dist/components/banner/Banner.component.js +40 -0
  33. package/dist/components/barchart/BarChart.component.d.ts +13 -0
  34. package/dist/components/barchart/BarChart.component.d.ts.map +1 -0
  35. package/dist/components/barchart/BarChart.component.js +22 -0
  36. package/dist/components/box/Box.d.ts +9 -0
  37. package/dist/components/box/Box.d.ts.map +1 -0
  38. package/dist/components/box/Box.js +21 -0
  39. package/dist/components/breadcrumb/Breadcrumb.component.d.ts +7 -0
  40. package/dist/components/breadcrumb/Breadcrumb.component.d.ts.map +1 -0
  41. package/dist/components/breadcrumb/Breadcrumb.component.js +77 -0
  42. package/dist/components/button/Button.component.d.ts +28 -0
  43. package/dist/components/button/Button.component.d.ts.map +1 -0
  44. package/dist/components/button/Button.component.js +227 -0
  45. package/dist/components/buttonv2/Buttonv2.component.d.ts +34 -0
  46. package/dist/components/buttonv2/Buttonv2.component.d.ts.map +1 -0
  47. package/dist/components/buttonv2/Buttonv2.component.js +198 -0
  48. package/dist/components/buttonv2/CopyButton.component.d.ts +24 -0
  49. package/dist/components/buttonv2/CopyButton.component.d.ts.map +1 -0
  50. package/dist/components/buttonv2/CopyButton.component.js +52 -0
  51. package/dist/components/card/Card.component.d.ts +28 -0
  52. package/dist/components/card/Card.component.d.ts.map +1 -0
  53. package/dist/components/card/Card.component.js +105 -0
  54. package/dist/components/checkbox/Checkbox.component.d.ts +10 -0
  55. package/dist/components/checkbox/Checkbox.component.d.ts.map +1 -0
  56. package/dist/components/checkbox/Checkbox.component.js +94 -0
  57. package/dist/components/chips/Chips.component.d.ts +22 -0
  58. package/dist/components/chips/Chips.component.d.ts.map +1 -0
  59. package/dist/components/chips/Chips.component.js +105 -0
  60. package/dist/components/circularprogressbar/CircularProgressBar.component.d.ts +13 -0
  61. package/dist/components/circularprogressbar/CircularProgressBar.component.d.ts.map +1 -0
  62. package/dist/components/circularprogressbar/CircularProgressBar.component.js +9 -0
  63. package/dist/components/circularprogressbar/CircularProgressBar.component.style.d.ts +11 -0
  64. package/dist/components/circularprogressbar/CircularProgressBar.component.style.d.ts.map +1 -0
  65. package/dist/components/circularprogressbar/CircularProgressBar.component.style.js +27 -0
  66. package/dist/components/cloudprogressbar/CloudProgressBar.component.d.ts +11 -0
  67. package/dist/components/cloudprogressbar/CloudProgressBar.component.d.ts.map +1 -0
  68. package/dist/components/cloudprogressbar/CloudProgressBar.component.js +38 -0
  69. package/dist/components/collapsiblepanel/CollapsiblePanel.component.d.ts +10 -0
  70. package/dist/components/collapsiblepanel/CollapsiblePanel.component.d.ts.map +1 -0
  71. package/dist/components/collapsiblepanel/CollapsiblePanel.component.js +44 -0
  72. package/dist/components/constants.d.ts +27 -0
  73. package/dist/components/constants.d.ts.map +1 -0
  74. package/dist/components/constants.js +47 -0
  75. package/dist/components/constrainedtext/Constrainedtext.component.d.ts +12 -0
  76. package/dist/components/constrainedtext/Constrainedtext.component.d.ts.map +1 -0
  77. package/dist/components/constrainedtext/Constrainedtext.component.js +46 -0
  78. package/dist/components/coreuithemeprovider/CoreUiThemeProvider.d.ts +9 -0
  79. package/dist/components/coreuithemeprovider/CoreUiThemeProvider.d.ts.map +1 -0
  80. package/dist/components/coreuithemeprovider/CoreUiThemeProvider.js +13 -0
  81. package/dist/components/date/FormattedDateTime.d.ts +11 -0
  82. package/dist/components/date/FormattedDateTime.d.ts.map +1 -0
  83. package/dist/components/date/FormattedDateTime.js +66 -0
  84. package/dist/components/date/FormattedDateTime.spec.d.ts +2 -0
  85. package/dist/components/date/FormattedDateTime.spec.d.ts.map +1 -0
  86. package/dist/components/date/FormattedDateTime.spec.js +140 -0
  87. package/dist/components/date/dateDiffer.d.ts +2 -0
  88. package/dist/components/date/dateDiffer.d.ts.map +1 -0
  89. package/dist/components/date/dateDiffer.js +7 -0
  90. package/dist/components/date/dateDiffer.spec.d.ts +2 -0
  91. package/dist/components/date/dateDiffer.spec.d.ts.map +1 -0
  92. package/dist/components/date/dateDiffer.spec.js +6 -0
  93. package/dist/components/dropdown/Dropdown.component.d.ts +20 -0
  94. package/dist/components/dropdown/Dropdown.component.d.ts.map +1 -0
  95. package/dist/components/dropdown/Dropdown.component.js +99 -0
  96. package/dist/components/dropzone/Dropzone.d.ts +16 -0
  97. package/dist/components/dropzone/Dropzone.d.ts.map +1 -0
  98. package/dist/components/dropzone/Dropzone.js +79 -0
  99. package/dist/components/emptystate/Emptystate.component.d.ts +13 -0
  100. package/dist/components/emptystate/Emptystate.component.d.ts.map +1 -0
  101. package/dist/components/emptystate/Emptystate.component.js +32 -0
  102. package/dist/components/emptytable/Emptytable.component.d.ts +8 -0
  103. package/dist/components/emptytable/Emptytable.component.d.ts.map +1 -0
  104. package/dist/components/emptytable/Emptytable.component.js +62 -0
  105. package/dist/components/error-pages/ErrorPage401.component.d.ts +9 -0
  106. package/dist/components/error-pages/ErrorPage401.component.d.ts.map +1 -0
  107. package/dist/components/error-pages/ErrorPage401.component.js +28 -0
  108. package/dist/components/error-pages/ErrorPage404.component.d.ts +8 -0
  109. package/dist/components/error-pages/ErrorPage404.component.d.ts.map +1 -0
  110. package/dist/components/error-pages/ErrorPage404.component.js +26 -0
  111. package/dist/components/error-pages/ErrorPage500.component.d.ts +13 -0
  112. package/dist/components/error-pages/ErrorPage500.component.d.ts.map +1 -0
  113. package/dist/components/error-pages/ErrorPage500.component.js +32 -0
  114. package/dist/components/error-pages/ErrorPageAuth.component.d.ts +8 -0
  115. package/dist/components/error-pages/ErrorPageAuth.component.d.ts.map +1 -0
  116. package/dist/components/error-pages/ErrorPageAuth.component.js +27 -0
  117. package/dist/components/error-pages/ErrorPageStyle.d.ts +7 -0
  118. package/dist/components/error-pages/ErrorPageStyle.d.ts.map +1 -0
  119. package/dist/components/error-pages/ErrorPageStyle.js +34 -0
  120. package/dist/components/form/Form.component.d.ts +61 -0
  121. package/dist/components/form/Form.component.d.ts.map +1 -0
  122. package/dist/components/form/Form.component.js +115 -0
  123. package/dist/components/globalhealthbar/GlobalHealthBar.component.d.ts +20 -0
  124. package/dist/components/globalhealthbar/GlobalHealthBar.component.d.ts.map +1 -0
  125. package/dist/components/globalhealthbar/GlobalHealthBar.component.js +169 -0
  126. package/dist/components/globalhealthbar/tooltip/index.d.ts +8 -0
  127. package/dist/components/globalhealthbar/tooltip/index.d.ts.map +1 -0
  128. package/dist/components/globalhealthbar/tooltip/index.js +55 -0
  129. package/dist/components/healthselectorv2/HealthSelector.component.d.ts +61 -0
  130. package/dist/components/healthselectorv2/HealthSelector.component.d.ts.map +1 -0
  131. package/dist/components/healthselectorv2/HealthSelector.component.js +70 -0
  132. package/dist/components/icon/Icon.component.d.ts +134 -0
  133. package/dist/components/icon/Icon.component.d.ts.map +1 -0
  134. package/dist/components/icon/Icon.component.js +209 -0
  135. package/dist/components/infomessage/InfoMessage.component.d.ts +9 -0
  136. package/dist/components/infomessage/InfoMessage.component.d.ts.map +1 -0
  137. package/dist/components/infomessage/InfoMessage.component.js +20 -0
  138. package/dist/components/infomessage/InfoMessageUtils.d.ts +8 -0
  139. package/dist/components/infomessage/InfoMessageUtils.d.ts.map +1 -0
  140. package/dist/components/infomessage/InfoMessageUtils.js +32 -0
  141. package/dist/components/input/Input.component.d.ts +24 -0
  142. package/dist/components/input/Input.component.d.ts.map +1 -0
  143. package/dist/components/input/Input.component.js +55 -0
  144. package/dist/components/input/Input.component.style.d.ts +9 -0
  145. package/dist/components/input/Input.component.style.d.ts.map +1 -0
  146. package/dist/components/input/Input.component.style.js +136 -0
  147. package/dist/components/inputlist/InputButtons.d.ts +20 -0
  148. package/dist/components/inputlist/InputButtons.d.ts.map +1 -0
  149. package/dist/components/inputlist/InputButtons.js +48 -0
  150. package/dist/components/inputlist/InputList.component.d.ts +27 -0
  151. package/dist/components/inputlist/InputList.component.d.ts.map +1 -0
  152. package/dist/components/inputlist/InputList.component.js +30 -0
  153. package/dist/components/inputv2/inputv2.d.ts +12 -0
  154. package/dist/components/inputv2/inputv2.d.ts.map +1 -0
  155. package/dist/components/inputv2/inputv2.js +80 -0
  156. package/dist/components/lateralnavbarlayout/LateralNavbarLayout.component.d.ts +9 -0
  157. package/dist/components/lateralnavbarlayout/LateralNavbarLayout.component.d.ts.map +1 -0
  158. package/dist/components/lateralnavbarlayout/LateralNavbarLayout.component.js +23 -0
  159. package/dist/components/layout/Layout.component.d.ts +12 -0
  160. package/dist/components/layout/Layout.component.d.ts.map +1 -0
  161. package/dist/components/layout/Layout.component.js +26 -0
  162. package/dist/components/layout/v2/AppContainer.d.ts +28 -0
  163. package/dist/components/layout/v2/AppContainer.d.ts.map +1 -0
  164. package/dist/components/layout/v2/AppContainer.js +63 -0
  165. package/dist/components/layout/v2/index.d.ts +6 -0
  166. package/dist/components/layout/v2/index.d.ts.map +1 -0
  167. package/dist/components/layout/v2/index.js +16 -0
  168. package/dist/components/layout/v2/panels.d.ts +17 -0
  169. package/dist/components/layout/v2/panels.d.ts.map +1 -0
  170. package/dist/components/layout/v2/panels.js +52 -0
  171. package/dist/components/linechart/LineChart.component.d.ts +22 -0
  172. package/dist/components/linechart/LineChart.component.d.ts.map +1 -0
  173. package/dist/components/linechart/LineChart.component.js +109 -0
  174. package/dist/components/linetemporalchart/ChartUtil.d.ts +40 -0
  175. package/dist/components/linetemporalchart/ChartUtil.d.ts.map +1 -0
  176. package/dist/components/linetemporalchart/ChartUtil.js +126 -0
  177. package/dist/components/linetemporalchart/LineTemporalChart.component.d.ts +43 -0
  178. package/dist/components/linetemporalchart/LineTemporalChart.component.d.ts.map +1 -0
  179. package/dist/components/linetemporalchart/LineTemporalChart.component.js +576 -0
  180. package/dist/components/linetemporalchart/MetricTimespanProvider.d.ts +8 -0
  181. package/dist/components/linetemporalchart/MetricTimespanProvider.d.ts.map +1 -0
  182. package/dist/components/linetemporalchart/MetricTimespanProvider.js +31 -0
  183. package/dist/components/linetemporalchart/tooltip/index.d.ts +30 -0
  184. package/dist/components/linetemporalchart/tooltip/index.d.ts.map +1 -0
  185. package/dist/components/linetemporalchart/tooltip/index.js +104 -0
  186. package/dist/components/loader/Loader.component.d.ts +11 -0
  187. package/dist/components/loader/Loader.component.d.ts.map +1 -0
  188. package/dist/components/loader/Loader.component.js +41 -0
  189. package/dist/components/modal/Modal.component.d.ts +13 -0
  190. package/dist/components/modal/Modal.component.d.ts.map +1 -0
  191. package/dist/components/modal/Modal.component.js +64 -0
  192. package/dist/components/multiselect/MultiSelect.component.d.ts +29 -0
  193. package/dist/components/multiselect/MultiSelect.component.d.ts.map +1 -0
  194. package/dist/components/multiselect/MultiSelect.component.js +73 -0
  195. package/dist/components/navbar/Navbar.component.d.ts +23 -0
  196. package/dist/components/navbar/Navbar.component.d.ts.map +1 -0
  197. package/dist/components/navbar/Navbar.component.js +151 -0
  198. package/dist/components/notifications/Notification.component.d.ts +13 -0
  199. package/dist/components/notifications/Notification.component.d.ts.map +1 -0
  200. package/dist/components/notifications/Notification.component.js +107 -0
  201. package/dist/components/notifications/Notifications.component.d.ts +15 -0
  202. package/dist/components/notifications/Notifications.component.d.ts.map +1 -0
  203. package/dist/components/notifications/Notifications.component.js +42 -0
  204. package/dist/components/prettybytes/PrettyBytes.component.d.ts +9 -0
  205. package/dist/components/prettybytes/PrettyBytes.component.d.ts.map +1 -0
  206. package/dist/components/prettybytes/PrettyBytes.component.js +24 -0
  207. package/dist/components/progressbar/ProgressBar.component.d.ts +18 -0
  208. package/dist/components/progressbar/ProgressBar.component.d.ts.map +1 -0
  209. package/dist/components/progressbar/ProgressBar.component.js +129 -0
  210. package/dist/components/scrollbarwrapper/ScrollbarWrapper.component.d.ts +7 -0
  211. package/dist/components/scrollbarwrapper/ScrollbarWrapper.component.d.ts.map +1 -0
  212. package/dist/components/scrollbarwrapper/ScrollbarWrapper.component.js +54 -0
  213. package/dist/components/searchinput/SearchInput.component.d.ts +12 -0
  214. package/dist/components/searchinput/SearchInput.component.d.ts.map +1 -0
  215. package/dist/components/searchinput/SearchInput.component.js +91 -0
  216. package/dist/components/select/Select.component.d.ts +15 -0
  217. package/dist/components/select/Select.component.d.ts.map +1 -0
  218. package/dist/components/select/Select.component.js +71 -0
  219. package/dist/components/selectv2/SelectStyle.d.ts +3 -0
  220. package/dist/components/selectv2/SelectStyle.d.ts.map +1 -0
  221. package/dist/components/selectv2/SelectStyle.js +238 -0
  222. package/dist/components/selectv2/Selectv2.component.d.ts +32 -0
  223. package/dist/components/selectv2/Selectv2.component.d.ts.map +1 -0
  224. package/dist/components/selectv2/Selectv2.component.js +267 -0
  225. package/dist/components/sidebar/Sidebar.component.d.ts +22 -0
  226. package/dist/components/sidebar/Sidebar.component.d.ts.map +1 -0
  227. package/dist/components/sidebar/Sidebar.component.js +136 -0
  228. package/dist/components/spacedbox/SpacedBox.d.ts +34 -0
  229. package/dist/components/spacedbox/SpacedBox.d.ts.map +1 -0
  230. package/dist/components/spacedbox/SpacedBox.js +64 -0
  231. package/dist/components/sparkline/SparkLine.component.d.ts +19 -0
  232. package/dist/components/sparkline/SparkLine.component.d.ts.map +1 -0
  233. package/dist/components/sparkline/SparkLine.component.js +148 -0
  234. package/dist/components/statuswrapper/Statuswrapper.component.d.ts +9 -0
  235. package/dist/components/statuswrapper/Statuswrapper.component.d.ts.map +1 -0
  236. package/dist/components/statuswrapper/Statuswrapper.component.js +44 -0
  237. package/dist/components/steppers/Stepper.component.d.ts +14 -0
  238. package/dist/components/steppers/Stepper.component.d.ts.map +1 -0
  239. package/dist/components/steppers/Stepper.component.js +33 -0
  240. package/dist/components/steppers/Steppers.component.d.ts +18 -0
  241. package/dist/components/steppers/Steppers.component.d.ts.map +1 -0
  242. package/dist/components/steppers/Steppers.component.js +96 -0
  243. package/dist/components/tablev2/MultiSelectableContent.d.ts +22 -0
  244. package/dist/components/tablev2/MultiSelectableContent.d.ts.map +1 -0
  245. package/dist/components/tablev2/MultiSelectableContent.js +129 -0
  246. package/dist/components/tablev2/Search.d.ts +29 -0
  247. package/dist/components/tablev2/Search.d.ts.map +1 -0
  248. package/dist/components/tablev2/Search.js +49 -0
  249. package/dist/components/tablev2/SearchWithQueryParams.d.ts +7 -0
  250. package/dist/components/tablev2/SearchWithQueryParams.d.ts.map +1 -0
  251. package/dist/components/tablev2/SearchWithQueryParams.js +24 -0
  252. package/dist/components/tablev2/SingleSelectableContent.d.ts +17 -0
  253. package/dist/components/tablev2/SingleSelectableContent.d.ts.map +1 -0
  254. package/dist/components/tablev2/SingleSelectableContent.js +75 -0
  255. package/dist/components/tablev2/TableCommon.d.ts +24 -0
  256. package/dist/components/tablev2/TableCommon.d.ts.map +1 -0
  257. package/dist/components/tablev2/TableCommon.js +35 -0
  258. package/dist/components/tablev2/TableUtils.d.ts +18 -0
  259. package/dist/components/tablev2/TableUtils.d.ts.map +1 -0
  260. package/dist/components/tablev2/TableUtils.js +32 -0
  261. package/dist/components/tablev2/Tablestyle.d.ts +36 -0
  262. package/dist/components/tablev2/Tablestyle.d.ts.map +1 -0
  263. package/dist/components/tablev2/Tablestyle.js +136 -0
  264. package/dist/components/tablev2/Tablev2.component.d.ts +71 -0
  265. package/dist/components/tablev2/Tablev2.component.d.ts.map +1 -0
  266. package/dist/components/tablev2/Tablev2.component.js +144 -0
  267. package/dist/components/tablev2/react-table-config.d.ts +28 -0
  268. package/dist/components/tablev2/react-table-config.d.ts.map +1 -0
  269. package/dist/components/tablev2/react-table-config.js +1 -0
  270. package/dist/components/tablev2/useCheckbox.d.ts +6 -0
  271. package/dist/components/tablev2/useCheckbox.d.ts.map +1 -0
  272. package/dist/components/tablev2/useCheckbox.js +40 -0
  273. package/dist/components/tablev2/useSyncedScroll.d.ts +7 -0
  274. package/dist/components/tablev2/useSyncedScroll.d.ts.map +1 -0
  275. package/dist/components/tablev2/useSyncedScroll.js +43 -0
  276. package/dist/components/tabsv2/ScrollButton.d.ts +8 -0
  277. package/dist/components/tabsv2/ScrollButton.d.ts.map +1 -0
  278. package/dist/components/tabsv2/ScrollButton.js +32 -0
  279. package/dist/components/tabsv2/StyledTabs.d.ts +18 -0
  280. package/dist/components/tabsv2/StyledTabs.d.ts.map +1 -0
  281. package/dist/components/tabsv2/StyledTabs.js +96 -0
  282. package/dist/components/tabsv2/Tab.d.ts +17 -0
  283. package/dist/components/tabsv2/Tab.d.ts.map +1 -0
  284. package/dist/components/tabsv2/Tab.js +10 -0
  285. package/dist/components/tabsv2/Tabsv2.component.d.ts +21 -0
  286. package/dist/components/tabsv2/Tabsv2.component.d.ts.map +1 -0
  287. package/dist/components/tabsv2/Tabsv2.component.js +89 -0
  288. package/dist/components/tabsv2/useScrollingTabs.d.ts +17 -0
  289. package/dist/components/tabsv2/useScrollingTabs.d.ts.map +1 -0
  290. package/dist/components/tabsv2/useScrollingTabs.js +261 -0
  291. package/dist/components/text/Text.component.d.ts +33 -0
  292. package/dist/components/text/Text.component.d.ts.map +1 -0
  293. package/dist/components/text/Text.component.js +154 -0
  294. package/dist/components/textarea/TextArea.component.d.ts +10 -0
  295. package/dist/components/textarea/TextArea.component.d.ts.map +1 -0
  296. package/dist/components/textarea/TextArea.component.js +60 -0
  297. package/dist/components/textbadge/TextBadge.component.d.ts +9 -0
  298. package/dist/components/textbadge/TextBadge.component.d.ts.map +1 -0
  299. package/dist/components/textbadge/TextBadge.component.js +19 -0
  300. package/dist/components/toast/DurationBasedProgressBar.d.ts +6 -0
  301. package/dist/components/toast/DurationBasedProgressBar.d.ts.map +1 -0
  302. package/dist/components/toast/DurationBasedProgressBar.js +24 -0
  303. package/dist/components/toast/Toast.component.d.ts +20 -0
  304. package/dist/components/toast/Toast.component.d.ts.map +1 -0
  305. package/dist/components/toast/Toast.component.js +106 -0
  306. package/dist/components/toast/ToastPositionHelpers.d.ts +4 -0
  307. package/dist/components/toast/ToastPositionHelpers.d.ts.map +1 -0
  308. package/dist/components/toast/ToastPositionHelpers.js +28 -0
  309. package/dist/components/toast/ToastProvider.d.ts +14 -0
  310. package/dist/components/toast/ToastProvider.d.ts.map +1 -0
  311. package/dist/components/toast/ToastProvider.js +18 -0
  312. package/dist/components/toast/useMutationsHandler.d.ts +40 -0
  313. package/dist/components/toast/useMutationsHandler.d.ts.map +1 -0
  314. package/dist/components/toast/useMutationsHandler.js +66 -0
  315. package/dist/components/toast/useToastParameters.d.ts +10 -0
  316. package/dist/components/toast/useToastParameters.d.ts.map +1 -0
  317. package/dist/components/toast/useToastParameters.js +39 -0
  318. package/dist/components/toggle/Toggle.component.d.ts +11 -0
  319. package/dist/components/toggle/Toggle.component.d.ts.map +1 -0
  320. package/dist/components/toggle/Toggle.component.js +80 -0
  321. package/dist/components/tooltip/Tooltip.component.d.ts +23 -0
  322. package/dist/components/tooltip/Tooltip.component.d.ts.map +1 -0
  323. package/dist/components/tooltip/Tooltip.component.js +82 -0
  324. package/dist/components/vegachart/VegaChart.component.d.ts +14 -0
  325. package/dist/components/vegachart/VegaChart.component.d.ts.map +1 -0
  326. package/dist/components/vegachart/VegaChart.component.js +120 -0
  327. package/dist/components/vegachartv2/SyncedCursorCharts.d.ts +13 -0
  328. package/dist/components/vegachartv2/SyncedCursorCharts.d.ts.map +1 -0
  329. package/dist/components/vegachartv2/SyncedCursorCharts.js +17 -0
  330. package/dist/components/vegachartv2/VegaChartV2.component.d.ts +16 -0
  331. package/dist/components/vegachartv2/VegaChartV2.component.d.ts.map +1 -0
  332. package/dist/components/vegachartv2/VegaChartV2.component.js +216 -0
  333. package/dist/hooks.d.ts +2 -0
  334. package/dist/hooks.d.ts.map +1 -0
  335. package/dist/hooks.js +19 -0
  336. package/dist/icons/branding.d.ts +4 -0
  337. package/dist/icons/branding.d.ts.map +1 -0
  338. package/dist/icons/branding.js +3 -0
  339. package/dist/icons/scality-loading.d.ts +4 -0
  340. package/dist/icons/scality-loading.d.ts.map +1 -0
  341. package/dist/icons/scality-loading.js +3 -0
  342. package/dist/index.css +25 -0
  343. package/dist/index.d.ts +65 -0
  344. package/dist/index.d.ts.map +1 -0
  345. package/dist/index.js +64 -0
  346. package/dist/next.d.ts +15 -0
  347. package/dist/next.d.ts.map +1 -0
  348. package/dist/next.js +14 -0
  349. package/dist/organisms/attachments/AttachmentConfirmationModal.d.ts +22 -0
  350. package/dist/organisms/attachments/AttachmentConfirmationModal.d.ts.map +1 -0
  351. package/dist/organisms/attachments/AttachmentConfirmationModal.js +142 -0
  352. package/dist/organisms/attachments/AttachmentTable.d.ts +37 -0
  353. package/dist/organisms/attachments/AttachmentTable.d.ts.map +1 -0
  354. package/dist/organisms/attachments/AttachmentTable.js +375 -0
  355. package/dist/organisms/attachments/AttachmentTypes.d.ts +15 -0
  356. package/dist/organisms/attachments/AttachmentTypes.d.ts.map +1 -0
  357. package/dist/organisms/attachments/AttachmentTypes.js +5 -0
  358. package/dist/spacing.d.ts +44 -0
  359. package/dist/spacing.d.ts.map +1 -0
  360. package/dist/spacing.js +60 -0
  361. package/dist/style/fonts/Lato-Bold.woff +0 -0
  362. package/dist/style/fonts/Lato-Bold.woff2 +0 -0
  363. package/dist/style/fonts/Lato-Regular.woff +0 -0
  364. package/dist/style/fonts/Lato-Regular.woff2 +0 -0
  365. package/dist/style/theme.d.ts +160 -0
  366. package/dist/style/theme.d.ts.map +1 -0
  367. package/dist/style/theme.js +234 -0
  368. package/dist/testUtils.d.ts +9 -0
  369. package/dist/testUtils.d.ts.map +1 -0
  370. package/dist/testUtils.js +11 -0
  371. package/dist/utils.d.ts +9 -0
  372. package/dist/utils.d.ts.map +1 -0
  373. package/dist/utils.js +46 -0
  374. package/global-setup.js +3 -0
  375. package/jest.config.js +8 -0
  376. package/package.json +161 -0
  377. package/plop-templates/component.hbs +18 -0
  378. package/plop-templates/component.test.hbs +10 -0
  379. package/plop-templates/stories.hbs +18 -0
  380. package/plopfile.js +38 -0
  381. package/setupTests.js +3 -0
  382. package/src/lib/components/IconHelper.tsx +23 -0
  383. package/src/lib/components/areachart/AreaChart.component.tsx +49 -0
  384. package/src/lib/components/banner/Banner.component.tsx +59 -0
  385. package/src/lib/components/barchart/BarChart.component.tsx +46 -0
  386. package/src/lib/components/box/Box.ts +57 -0
  387. package/src/lib/components/breadcrumb/Breadcrumb.component.tsx +101 -0
  388. package/src/lib/components/button/Button.component.tsx +312 -0
  389. package/src/lib/components/buttonv2/Buttonv2.component.tsx +270 -0
  390. package/src/lib/components/buttonv2/CopyButton.component.tsx +89 -0
  391. package/src/lib/components/card/Card.component.tsx +196 -0
  392. package/src/lib/components/checkbox/Checkbox.component.tsx +131 -0
  393. package/src/lib/components/chips/Chips.component.tsx +169 -0
  394. package/src/lib/components/circularprogressbar/CircularProgressBar.component.style.ts +31 -0
  395. package/src/lib/components/circularprogressbar/CircularProgressBar.component.tsx +58 -0
  396. package/src/lib/components/cloudprogressbar/CloudProgressBar.component.tsx +105 -0
  397. package/src/lib/components/collapsiblepanel/CollapsiblePanel.component.tsx +77 -0
  398. package/src/lib/components/constants.ts +67 -0
  399. package/src/lib/components/constrainedtext/Constrainedtext.component.tsx +93 -0
  400. package/src/lib/components/coreuithemeprovider/CoreUiThemeProvider.tsx +21 -0
  401. package/src/lib/components/date/FormattedDateTime.spec.tsx +217 -0
  402. package/src/lib/components/date/FormattedDateTime.tsx +150 -0
  403. package/src/lib/components/date/dateDiffer.spec.ts +13 -0
  404. package/src/lib/components/date/dateDiffer.ts +12 -0
  405. package/src/lib/components/dropdown/Dropdown.component.tsx +184 -0
  406. package/src/lib/components/dropzone/Dropzone.tsx +181 -0
  407. package/src/lib/components/emptystate/Emptystate.component.tsx +66 -0
  408. package/src/lib/components/emptytable/Emptytable.component.tsx +79 -0
  409. package/src/lib/components/error-pages/ErrorPage401.component.tsx +77 -0
  410. package/src/lib/components/error-pages/ErrorPage404.component.tsx +64 -0
  411. package/src/lib/components/error-pages/ErrorPage500.component.tsx +88 -0
  412. package/src/lib/components/error-pages/ErrorPageAuth.component.tsx +70 -0
  413. package/src/lib/components/error-pages/ErrorPageStyle.ts +34 -0
  414. package/src/lib/components/form/Form.component.tsx +416 -0
  415. package/src/lib/components/globalhealthbar/GlobalHealthBar.component.tsx +201 -0
  416. package/src/lib/components/globalhealthbar/tooltip/index.ts +72 -0
  417. package/src/lib/components/healthselectorv2/HealthSelector.component.test.tsx +62 -0
  418. package/src/lib/components/healthselectorv2/HealthSelector.component.tsx +103 -0
  419. package/src/lib/components/icon/Icon.component.tsx +280 -0
  420. package/src/lib/components/infomessage/InfoMessage.component.tsx +47 -0
  421. package/src/lib/components/infomessage/InfoMessageUtils.test.tsx +110 -0
  422. package/src/lib/components/infomessage/InfoMessageUtils.ts +39 -0
  423. package/src/lib/components/input/Input.component.style.ts +141 -0
  424. package/src/lib/components/input/Input.component.tsx +174 -0
  425. package/src/lib/components/inputlist/InputButtons.tsx +111 -0
  426. package/src/lib/components/inputlist/InputList.component.tsx +98 -0
  427. package/src/lib/components/inputlist/InputList.test.tsx +102 -0
  428. package/src/lib/components/inputv2/inputv2.tsx +155 -0
  429. package/src/lib/components/lateralnavbarlayout/LateralNavbarLayout.component.tsx +38 -0
  430. package/src/lib/components/layout/Layout.component.tsx +46 -0
  431. package/src/lib/components/layout/v2/AppContainer.tsx +160 -0
  432. package/src/lib/components/layout/v2/index.tsx +30 -0
  433. package/src/lib/components/layout/v2/panels.tsx +105 -0
  434. package/src/lib/components/linechart/LineChart.component.tsx +152 -0
  435. package/src/lib/components/linetemporalchart/ChartUtil.test.ts +261 -0
  436. package/src/lib/components/linetemporalchart/ChartUtil.ts +187 -0
  437. package/src/lib/components/linetemporalchart/LineTemporalChart.component.tsx +797 -0
  438. package/src/lib/components/linetemporalchart/MetricTimespanProvider.tsx +50 -0
  439. package/src/lib/components/linetemporalchart/tooltip/index.ts +178 -0
  440. package/src/lib/components/loader/Loader.component.tsx +71 -0
  441. package/src/lib/components/modal/Modal.component.tsx +121 -0
  442. package/src/lib/components/multiselect/MultiSelect.component.tsx +158 -0
  443. package/src/lib/components/navbar/Navbar.component.tsx +238 -0
  444. package/src/lib/components/notifications/Notification.component.tsx +160 -0
  445. package/src/lib/components/notifications/Notifications.component.tsx +73 -0
  446. package/src/lib/components/prettybytes/PrettyBytes.component.tsx +39 -0
  447. package/src/lib/components/prettybytes/prettybytes.test.tsx +217 -0
  448. package/src/lib/components/progressbar/ProgressBar.component.tsx +217 -0
  449. package/src/lib/components/scrollbarwrapper/ScrollbarWrapper.component.tsx +66 -0
  450. package/src/lib/components/searchinput/SearchInput.component.tsx +146 -0
  451. package/src/lib/components/select/Select.component.tsx +98 -0
  452. package/src/lib/components/selectv2/SelectStyle.ts +267 -0
  453. package/src/lib/components/selectv2/Selectv2.component.tsx +487 -0
  454. package/src/lib/components/selectv2/selectv2.test.tsx +277 -0
  455. package/src/lib/components/sidebar/Sidebar.component.tsx +217 -0
  456. package/src/lib/components/spacedbox/SpacedBox.ts +116 -0
  457. package/src/lib/components/sparkline/SparkLine.component.tsx +176 -0
  458. package/src/lib/components/statuswrapper/Statuswrapper.component.tsx +66 -0
  459. package/src/lib/components/steppers/Stepper.component.d.ts +70 -0
  460. package/src/lib/components/steppers/Stepper.component.tsx +62 -0
  461. package/src/lib/components/steppers/Steppers.component.tsx +157 -0
  462. package/src/lib/components/tablev2/MultiSelectableContent.tsx +318 -0
  463. package/src/lib/components/tablev2/Search.tsx +112 -0
  464. package/src/lib/components/tablev2/SearchWithQueryParams.tsx +38 -0
  465. package/src/lib/components/tablev2/SingleSelectableContent.tsx +222 -0
  466. package/src/lib/components/tablev2/TableCommon.tsx +102 -0
  467. package/src/lib/components/tablev2/TableUtils.test.ts +17 -0
  468. package/src/lib/components/tablev2/TableUtils.ts +60 -0
  469. package/src/lib/components/tablev2/Tablestyle.tsx +184 -0
  470. package/src/lib/components/tablev2/Tablev2.component.tsx +316 -0
  471. package/src/lib/components/tablev2/Tablev2.test.tsx +136 -0
  472. package/src/lib/components/tablev2/react-table-config.ts +90 -0
  473. package/src/lib/components/tablev2/useCheckbox.tsx +62 -0
  474. package/src/lib/components/tablev2/useSyncedScroll.ts +64 -0
  475. package/src/lib/components/tabsv2/ScrollButton.tsx +39 -0
  476. package/src/lib/components/tabsv2/StyledTabs.ts +108 -0
  477. package/src/lib/components/tabsv2/Tab.ts +27 -0
  478. package/src/lib/components/tabsv2/Tabsv2.component.tsx +247 -0
  479. package/src/lib/components/tabsv2/useScrollingTabs.ts +335 -0
  480. package/src/lib/components/text/Text.component.tsx +194 -0
  481. package/src/lib/components/textarea/TextArea.component.tsx +106 -0
  482. package/src/lib/components/textbadge/TextBadge.component.tsx +44 -0
  483. package/src/lib/components/toast/DurationBasedProgressBar.tsx +45 -0
  484. package/src/lib/components/toast/Toast.component.tsx +181 -0
  485. package/src/lib/components/toast/ToastPositionHelpers.ts +38 -0
  486. package/src/lib/components/toast/ToastProvider.tsx +40 -0
  487. package/src/lib/components/toast/useMutationsHandler.test.tsx +238 -0
  488. package/src/lib/components/toast/useMutationsHandler.ts +172 -0
  489. package/src/lib/components/toast/useToastParameters.ts +59 -0
  490. package/src/lib/components/toggle/Toggle.component.tsx +128 -0
  491. package/src/lib/components/tooltip/Tooltip.component.tsx +136 -0
  492. package/src/lib/components/vegachart/VegaChart.component.tsx +146 -0
  493. package/src/lib/components/vegachartv2/SyncedCursorCharts.tsx +30 -0
  494. package/src/lib/components/vegachartv2/VegaChartV2.component.tsx +279 -0
  495. package/src/lib/hooks.ts +26 -0
  496. package/src/lib/icons/branding.tsx +55 -0
  497. package/src/lib/icons/scality-loading.tsx +118 -0
  498. package/src/lib/index.css +25 -0
  499. package/src/lib/index.ts +75 -0
  500. package/src/lib/next.ts +17 -0
  501. package/src/lib/organisms/attachments/AttachmentConfirmationModal.tsx +311 -0
  502. package/src/lib/organisms/attachments/AttachmentTable.tsx +728 -0
  503. package/src/lib/organisms/attachments/AttachmentTypes.ts +16 -0
  504. package/src/lib/spacing.tsx +108 -0
  505. package/src/lib/style/fonts/Lato-Bold.woff +0 -0
  506. package/src/lib/style/fonts/Lato-Bold.woff2 +0 -0
  507. package/src/lib/style/fonts/Lato-Regular.woff +0 -0
  508. package/src/lib/style/fonts/Lato-Regular.woff2 +0 -0
  509. package/src/lib/style/theme.ts +270 -0
  510. package/src/lib/testUtils.tsx +18 -0
  511. package/src/lib/utils.ts +57 -0
  512. package/stories/Button/button.guideline.mdx +199 -0
  513. package/stories/Button/button.stories.tsx +299 -0
  514. package/stories/Icon.mdx +31 -0
  515. package/stories/InfoMessage/infomessage.guideline.mdx +32 -0
  516. package/stories/InfoMessage/infomessage.stories.tsx +124 -0
  517. package/stories/Introduction.mdx +32 -0
  518. package/stories/Select/select.guideline.mdx +91 -0
  519. package/stories/Select/selectv2.stories.tsx +169 -0
  520. package/stories/areachart.stories.tsx +121 -0
  521. package/stories/banner.stories.tsx +75 -0
  522. package/stories/barchart.stories.tsx +148 -0
  523. package/stories/box.stories.tsx +114 -0
  524. package/stories/breadcrumb.stories.tsx +42 -0
  525. package/stories/card.stories.tsx +195 -0
  526. package/stories/checkbox.stories.tsx +63 -0
  527. package/stories/chips.stories.tsx +107 -0
  528. package/stories/circularprogressbar.stories.tsx +136 -0
  529. package/stories/cloudprogressbar.stories.tsx +93 -0
  530. package/stories/collapsiblepanel.stories.tsx +57 -0
  531. package/stories/color.mdx +43 -0
  532. package/stories/common.tsx +39 -0
  533. package/stories/constrainedtext.stories.tsx +51 -0
  534. package/stories/controls.ts +59 -0
  535. package/stories/copybutton.stories.tsx +58 -0
  536. package/stories/data/areachart.ts +122 -0
  537. package/stories/data/barchart.ts +1497 -0
  538. package/stories/data/linechart.ts +1516 -0
  539. package/stories/data/list.ts +802 -0
  540. package/stories/data/sparklinechart.ts +164 -0
  541. package/stories/designprinciples.mdx +29 -0
  542. package/stories/dropdown.stories.tsx +146 -0
  543. package/stories/dropzone.stories.tsx +49 -0
  544. package/stories/emptystate.stories.tsx +22 -0
  545. package/stories/errorpage401.stories.tsx +25 -0
  546. package/stories/errorpage404.stories.tsx +24 -0
  547. package/stories/errorpage500.stories.tsx +44 -0
  548. package/stories/errorpageauth.stories.tsx +31 -0
  549. package/stories/form.stories.tsx +255 -0
  550. package/stories/format.mdx +44 -0
  551. package/stories/formattedate.stories.tsx +58 -0
  552. package/stories/globalhealthbar.stories.tsx +171 -0
  553. package/stories/guideline/chart-guideline.mdx +63 -0
  554. package/stories/guideline/docs-template.mdx +43 -0
  555. package/stories/guideline/mdxExampleComponents.tsx +57 -0
  556. package/stories/healthselectorv2.stories.tsx +74 -0
  557. package/stories/icon.stories.tsx +146 -0
  558. package/stories/icons.mdx +108 -0
  559. package/stories/input.stories.tsx +228 -0
  560. package/stories/inputlist.stories.tsx +57 -0
  561. package/stories/lateralnavbarlayout.stories.tsx +127 -0
  562. package/stories/layout.stories.tsx +378 -0
  563. package/stories/linechart.stories.tsx +319 -0
  564. package/stories/linecharttemporal.stories.tsx +88 -0
  565. package/stories/loader.stories.tsx +49 -0
  566. package/stories/modal.mdx +17 -0
  567. package/stories/modal.stories.tsx +177 -0
  568. package/stories/multiselect.stories.tsx +126 -0
  569. package/stories/navbar.stories.tsx +156 -0
  570. package/stories/notifications.stories.tsx +199 -0
  571. package/stories/pictures/icon-design-system.png +0 -0
  572. package/stories/prettybytes.stories.tsx +51 -0
  573. package/stories/progressbar.stories.tsx +174 -0
  574. package/stories/scrollbar.stories.tsx +76 -0
  575. package/stories/searchinput.stories.tsx +86 -0
  576. package/stories/select.stories.tsx +52 -0
  577. package/stories/selectinput.stories.tsx +73 -0
  578. package/stories/sidebar.stories.tsx +95 -0
  579. package/stories/spacing.stories.mdx +50 -0
  580. package/stories/spacing.stories.tsx +116 -0
  581. package/stories/sparkline.stories.tsx +85 -0
  582. package/stories/statuswrapper.stories.tsx +108 -0
  583. package/stories/stepper.stories.tsx +124 -0
  584. package/stories/steppers.stories.tsx +115 -0
  585. package/stories/tablev2.stories.tsx +539 -0
  586. package/stories/tabsv2.stories.tsx +168 -0
  587. package/stories/text.stories.tsx +138 -0
  588. package/stories/textarea.stories.tsx +69 -0
  589. package/stories/textbadge.stories.tsx +27 -0
  590. package/stories/toast.stories.tsx +144 -0
  591. package/stories/toggle.stories.tsx +45 -0
  592. package/stories/tooltip.stories.tsx +170 -0
  593. package/stories/typography.mdx +28 -0
  594. package/stories/vegachart.stories.tsx +98 -0
  595. package/tsconfig.json +18 -0
  596. package/types/styled.d.ts +6 -0
package/dist/next.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import '@fortawesome/fontawesome-free/css/all.css';
2
+ import './index.css';
3
+ export { Button } from './components/buttonv2/Buttonv2.component';
4
+ export { CopyButton } from './components/buttonv2/CopyButton.component';
5
+ export { Tabs, Tab } from './components/tabsv2/Tabsv2.component';
6
+ export { Table } from './components/tablev2/Tablev2.component';
7
+ export { LineTemporalChart } from './components/linetemporalchart/LineTemporalChart.component';
8
+ export { MetricsTimeSpanProvider, useMetricsTimeSpan, } from './components/linetemporalchart/MetricTimespanProvider';
9
+ export { SyncedCursorCharts } from './components/vegachartv2/SyncedCursorCharts';
10
+ export { Select } from './components/selectv2/Selectv2.component';
11
+ export { HealthSelector } from './components/healthselectorv2/HealthSelector.component';
12
+ export { CoreUiThemeProvider } from './components/coreuithemeprovider/CoreUiThemeProvider';
13
+ export { Box } from './components/box/Box';
14
+ export { Input } from './components/inputv2/inputv2';
15
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../src/lib/next.ts"],"names":[],"mappings":"AAAA,OAAO,2CAA2C,CAAC;AACnD,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/next.js ADDED
@@ -0,0 +1,14 @@
1
+ import '@fortawesome/fontawesome-free/css/all.css';
2
+ import './index.css';
3
+ export { Button } from './components/buttonv2/Buttonv2.component';
4
+ export { CopyButton } from './components/buttonv2/CopyButton.component';
5
+ export { Tabs, Tab } from './components/tabsv2/Tabsv2.component';
6
+ export { Table } from './components/tablev2/Tablev2.component';
7
+ export { LineTemporalChart } from './components/linetemporalchart/LineTemporalChart.component';
8
+ export { MetricsTimeSpanProvider, useMetricsTimeSpan, } from './components/linetemporalchart/MetricTimespanProvider';
9
+ export { SyncedCursorCharts } from './components/vegachartv2/SyncedCursorCharts';
10
+ export { Select } from './components/selectv2/Selectv2.component';
11
+ export { HealthSelector } from './components/healthselectorv2/HealthSelector.component';
12
+ export { CoreUiThemeProvider } from './components/coreuithemeprovider/CoreUiThemeProvider';
13
+ export { Box } from './components/box/Box';
14
+ export { Input } from './components/inputv2/inputv2';
@@ -0,0 +1,22 @@
1
+ import { ComponentType } from 'react';
2
+ import { UseMutationOptions } from 'react-query';
3
+ import { AttachmentOperation, AttachmentAction } from './AttachmentTypes';
4
+ export declare function AttachmentConfirmationModal<ENTITY_TYPE, RESOURCE_TYPE>({ attachmentOperations, getAttachmentMutationOptions, resourceType, resourceName, redirectUrl, EntityIcon, cancelButtonDisabled, onCancel, onExit, }: {
5
+ attachmentOperations: AttachmentOperation<ENTITY_TYPE>[];
6
+ getAttachmentMutationOptions: () => UseMutationOptions<unknown, unknown, {
7
+ action: AttachmentAction;
8
+ type: ENTITY_TYPE;
9
+ entityName: string;
10
+ id: string;
11
+ }>;
12
+ resourceName: string;
13
+ resourceType: RESOURCE_TYPE;
14
+ redirectUrl: string;
15
+ EntityIcon: ComponentType<{
16
+ type: ENTITY_TYPE | RESOURCE_TYPE;
17
+ }>;
18
+ cancelButtonDisabled?: boolean;
19
+ onCancel?: () => void;
20
+ onExit?: (successfullOperations: AttachmentOperation<ENTITY_TYPE>[], failedOperations: AttachmentOperation<ENTITY_TYPE>[]) => void;
21
+ }): JSX.Element;
22
+ //# sourceMappingURL=AttachmentConfirmationModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentConfirmationModal.d.ts","sourceRoot":"","sources":["../../../src/lib/organisms/attachments/AttachmentConfirmationModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAY,MAAM,OAAO,CAAC;AAGhD,OAAO,EAAe,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,aAAa,EAAE,EACtE,oBAAoB,EACpB,4BAA4B,EAC5B,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,QAAQ,EACR,MAAM,GACP,EAAE;IACD,oBAAoB,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;IACzD,4BAA4B,EAAE,MAAM,kBAAkB,CACpD,OAAO,EACP,OAAO,EACP;QACE,MAAM,EAAE,gBAAgB,CAAC;QACzB,IAAI,EAAE,WAAW,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;KACZ,CACF,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,aAAa,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;KAAE,CAAC,CAAC;IACjE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,CACP,qBAAqB,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,EACzD,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,KACjD,IAAI,CAAC;CACX,eA0QA"}
@@ -0,0 +1,142 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Table } from '../../components/tablev2/Tablev2.component';
4
+ import { Box, Button } from '../../next';
5
+ import { useMutation } from 'react-query';
6
+ import { AttachmentAction } from './AttachmentTypes';
7
+ import { useTheme } from 'styled-components';
8
+ import { useHistory } from 'react-router';
9
+ import { Icon, LargerText, Modal, SecondaryText, Stack, Wrap } from '../..';
10
+ //The entity is the "thing" you want to attach to the resource, sorry about the naming :(
11
+ export function AttachmentConfirmationModal({ attachmentOperations, getAttachmentMutationOptions, resourceType, resourceName, redirectUrl, EntityIcon, cancelButtonDisabled, onCancel, onExit, }) {
12
+ const history = useHistory();
13
+ const [isModalOpen, setIsModalOpen] = useState(false);
14
+ const handleClose = () => {
15
+ setIsModalOpen(false);
16
+ };
17
+ const [attachmentOperationsStatuses, setAttachmentOperationsStatuses] = useState({});
18
+ const attachmentMutation = useMutation({
19
+ ...getAttachmentMutationOptions(),
20
+ onSettled: (_, error, flatEntity) => {
21
+ setAttachmentOperationsStatuses((statuses) => ({
22
+ ...statuses,
23
+ [flatEntity.id]: error ? 'Error' : 'Success',
24
+ }));
25
+ },
26
+ });
27
+ const attachmentOperationsFlat = attachmentOperations.map((attachmentOperation) => {
28
+ return {
29
+ action: attachmentOperation.action,
30
+ type: attachmentOperation.entity.type,
31
+ entityName: attachmentOperation.entity.name,
32
+ id: attachmentOperation.entity.id,
33
+ };
34
+ });
35
+ const attach = () => {
36
+ attachmentOperationsFlat.forEach((attachmentOperationFlat) => {
37
+ if (attachmentOperationsStatuses[attachmentOperationFlat.id] ===
38
+ 'Waiting for confirmation' ||
39
+ attachmentOperationsStatuses[attachmentOperationFlat.id] === 'Error' ||
40
+ !attachmentOperationsStatuses[attachmentOperationFlat.id]) {
41
+ setAttachmentOperationsStatuses((attachmentOperationsStatuses) => {
42
+ return {
43
+ ...attachmentOperationsStatuses,
44
+ [attachmentOperationFlat.id]: 'Waiting for confirmation',
45
+ };
46
+ });
47
+ attachmentMutation.mutate({
48
+ ...attachmentOperationFlat,
49
+ });
50
+ }
51
+ });
52
+ };
53
+ const isAttachNotDone = attachmentOperationsFlat.find((attachmentOperation) => !attachmentOperationsStatuses[attachmentOperation.id]);
54
+ const handleExit = () => {
55
+ if (onExit) {
56
+ const successfulOperations = Object.entries(attachmentOperationsStatuses)
57
+ .filter(([_, status]) => status === 'Success')
58
+ .flatMap(([operationId]) => {
59
+ const op = attachmentOperations.find((op) => op.entity.id === operationId);
60
+ if (op)
61
+ return [op];
62
+ return [];
63
+ });
64
+ const failedOperations = Object.entries(attachmentOperationsStatuses)
65
+ .filter(([_, status]) => status === 'Error')
66
+ .flatMap(([operationId]) => {
67
+ const op = attachmentOperations.find((op) => op.entity.id === operationId);
68
+ if (op)
69
+ return [op];
70
+ return [];
71
+ });
72
+ onExit(successfulOperations, failedOperations);
73
+ }
74
+ handleClose();
75
+ history.push(redirectUrl);
76
+ };
77
+ const modalFooter = () => {
78
+ return (_jsxs(Wrap, { children: [_jsx("p", {}), _jsx(_Fragment, { children: isAttachNotDone ? (_jsxs(Stack, { children: [_jsx(Button, { variant: "outline", onClick: handleClose, label: "Cancel" }), _jsx(Button, { icon: _jsx(Icon, { name: "Arrow-right" }), variant: "primary", onClick: attach, label: "Confirm", disabled: attachmentMutation.isLoading })] })) : (_jsx(Button, { icon: _jsx(Icon, { name: "Arrow-right" }), variant: "primary", onClick: () => {
79
+ handleExit();
80
+ }, label: "Exit" })) })] }));
81
+ };
82
+ function AttachmentList() {
83
+ const theme = useTheme();
84
+ const columns = [
85
+ {
86
+ Header: 'Action',
87
+ accessor: 'action',
88
+ cellStyle: {
89
+ width: '12.5%',
90
+ },
91
+ Cell: ({ value }) => {
92
+ return value === AttachmentAction.ADD ? (_jsxs("span", { children: [_jsx(Icon, { name: "Link" }), " Attach"] })) : (_jsxs(Box, { color: theme.statusCritical, children: [_jsx(Icon, { name: "Unlink" }), " Detach"] }));
93
+ },
94
+ },
95
+ {
96
+ Header: 'Type',
97
+ accessor: 'type',
98
+ cellStyle: {
99
+ width: '12.5%',
100
+ },
101
+ Cell: ({ value }) => {
102
+ return _jsx(EntityIcon, { type: value });
103
+ },
104
+ },
105
+ {
106
+ Header: 'Entity name',
107
+ accessor: 'entityName',
108
+ cellStyle: {
109
+ width: '42.5%',
110
+ },
111
+ },
112
+ {
113
+ Header: 'Attachment status',
114
+ accessor: 'id',
115
+ cellStyle: {
116
+ width: '32.5%',
117
+ },
118
+ Cell: ({ value: resourceId }) => {
119
+ if (attachmentOperationsStatuses[resourceId] === 'Error') {
120
+ return (_jsxs(Box, { display: "flex", gap: 8, alignItems: "center", children: [_jsx(Icon, { color: "statusCritical", name: "Times-circle" }), attachmentOperationsStatuses[resourceId], ' ', _jsx(Button, { size: "inline", onClick: attach, variant: "outline", label: "Retry" })] }));
121
+ }
122
+ if (attachmentOperationsStatuses[resourceId] === 'Success') {
123
+ return (_jsxs(Box, { display: "flex", gap: 8, alignItems: "center", children: [_jsx(Icon, { color: "statusHealthy", name: "Check-circle" }), attachmentOperationsStatuses[resourceId]] }));
124
+ }
125
+ return (_jsx(_Fragment, { children: attachmentOperationsStatuses[resourceId] ||
126
+ 'Waiting for confirmation' }));
127
+ },
128
+ },
129
+ ];
130
+ return (_jsxs("div", { style: { height: '25rem', width: '50rem' }, children: [_jsx("div", { children: "The following entities will be attached or detached: " }), _jsxs(Box, { display: "flex", gap: 24, alignItems: "center", children: [_jsx(SecondaryText, { children: _jsx(EntityIcon, { type: resourceType }) }), _jsx("p", { children: resourceName })] }), _jsx(Table, { columns: columns, data: attachmentOperationsFlat, defaultSortingKey: 'entityName', children: _jsx(Table.SingleSelectableContent, { rowHeight: "h32", separationLineVariant: "backgroundLevel3", backgroundVariant: "backgroundLevel1", children: (Rows) => {
131
+ return _jsx(_Fragment, { children: Rows });
132
+ } }) })] }));
133
+ }
134
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { label: "Cancel", variant: "outline", disabled: cancelButtonDisabled, onClick: () => {
135
+ if (onCancel)
136
+ onCancel();
137
+ history.push(redirectUrl);
138
+ } }), _jsx(Button, { icon: _jsx(Icon, { name: "Save" }), label: "Save", onClick: () => {
139
+ setAttachmentOperationsStatuses({});
140
+ setIsModalOpen(true);
141
+ }, variant: "primary", disabled: attachmentOperations.length === 0 }), _jsx(Modal, { close: isAttachNotDone ? handleClose : handleExit, footer: modalFooter(), isOpen: isModalOpen, title: _jsxs(Box, { display: "flex", gap: 8, children: [_jsx(LargerText, { children: _jsx(Icon, { name: "Link" }) }), _jsx(LargerText, { children: "Attachment" })] }), children: _jsx(AttachmentList, {}) })] }));
142
+ }
@@ -0,0 +1,37 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { AttachableEntity, AttachmentOperation } from './AttachmentTypes';
3
+ import { UseQueryOptions } from 'react-query';
4
+ export type AttachmentTableProps<ENTITY_TYPE> = {
5
+ initiallyAttachedEntities: AttachableEntity<ENTITY_TYPE>[];
6
+ initiallyAttachedEntitiesStatus: 'idle' | 'loading' | 'success' | 'error';
7
+ initialAttachmentOperations: AttachmentOperation<ENTITY_TYPE>[];
8
+ entityName: {
9
+ plural: string;
10
+ singular: string;
11
+ };
12
+ getNameQuery?: (entity: AttachableEntity<ENTITY_TYPE>) => UseQueryOptions<unknown, unknown, string>;
13
+ searchEntityPlaceholder: string;
14
+ onAttachmentsOperationsChanged: (attachmentOperations: AttachmentOperation<ENTITY_TYPE>[]) => void;
15
+ filteredEntities: {
16
+ status: 'idle';
17
+ } | {
18
+ status: 'loading' | 'error';
19
+ data?: {
20
+ number: number;
21
+ entities: AttachableEntity<ENTITY_TYPE>[];
22
+ };
23
+ } | {
24
+ status: 'success';
25
+ data: {
26
+ number: number;
27
+ entities: AttachableEntity<ENTITY_TYPE>[];
28
+ };
29
+ };
30
+ onEntitySearchChange: (search?: string) => void;
31
+ };
32
+ export declare const AttachmentProvider: <ENTITY_TYPE extends unknown>({ children, }: PropsWithChildren<{}>) => JSX.Element;
33
+ export declare const useAttachmentOperations: () => {
34
+ resetAttachmentTable: (initiallyAttachedEntities: AttachableEntity<any>[], initialAttachmentOperations: AttachmentOperation<any>[]) => void;
35
+ };
36
+ export declare const AttachmentTable: <ENTITY_TYPE>({ initiallyAttachedEntities, initiallyAttachedEntitiesStatus, initialAttachmentOperations, onAttachmentsOperationsChanged, entityName, searchEntityPlaceholder, getNameQuery, filteredEntities, onEntitySearchChange, }: AttachmentTableProps<ENTITY_TYPE>) => JSX.Element;
37
+ //# sourceMappingURL=AttachmentTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentTable.d.ts","sourceRoot":"","sources":["../../../src/lib/organisms/attachments/AttachmentTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EASlB,MAAM,OAAO,CAAC;AAef,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AAOxD,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAAI;IAC9C,yBAAyB,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;IAC3D,+BAA+B,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1E,2BAA2B,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;IAChE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,KAClC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,uBAAuB,EAAE,MAAM,CAAC;IAChC,8BAA8B,EAAE,CAC9B,oBAAoB,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,KACrD,IAAI,CAAC;IACV,gBAAgB,EACZ;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAClB;QACE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAA;SAAE,CAAC;KACtE,GACD;QACE,MAAM,EAAE,SAAS,CAAC;QAClB,IAAI,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAA;SAAE,CAAC;KACrE,CAAC;IACN,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AA6FF,eAAO,MAAM,kBAAkB,+CAE5B,kBAAkB,EAAE,CAAC,gBAmBvB,CAAC;AAEF,eAAO,MAAM,uBAAuB;sDA5BL,iBAAiB,GAAG,CAAC,EAAE,+BACrB,oBAAoB,GAAG,CAAC,EAAE,KACpD,IAAI;CAkCV,CAAC;AAEF,eAAO,MAAM,eAAe,0RA2hB3B,CAAC"}
@@ -0,0 +1,375 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState, } from 'react';
3
+ import { useCombobox } from 'downshift';
4
+ import { Box, Button, Table } from '../../next';
5
+ import { ConstrainedText, Icon, Loader, SearchInput, SecondaryText, Text, Tooltip, } from '../../index';
6
+ import styled from 'styled-components';
7
+ import { spacing, Stack, Wrap } from '../../spacing';
8
+ import { AttachmentAction, } from './AttachmentTypes';
9
+ import { useQuery } from 'react-query';
10
+ import { EmptyCell } from '../../components/tablev2/Tablev2.component';
11
+ const rowHeight = 'h48';
12
+ const MenuContainer = styled.ul `
13
+ background-color: ${(props) => props.theme.backgroundLevel1};
14
+ background-clip: content-box;
15
+ padding: 0;
16
+ list-style: none;
17
+ position: absolute;
18
+ width: ${(props) => props.width};
19
+ z-index: 1;
20
+ margin-top: -1.7rem;
21
+ margin-left: 0;
22
+ margin-bottom: 0;
23
+ margin-right: 0;
24
+ ${(props) => props.isOpen
25
+ ? `
26
+ border-top-left-radius: 0;
27
+ border-top-right-radius: 0;
28
+ border-bottom-right-radius: 4px;
29
+ border-bottom-left-radius: 4px;
30
+ border: 1px solid ${props.theme.selectedActive};
31
+ `
32
+ : props.searchInputIsFocused
33
+ ? `border-bottom: 1px solid ${props.theme.selectedActive};`
34
+ : ''}
35
+ border-top: 0;
36
+ li {
37
+ padding: ${spacing.r8};
38
+ cursor: pointer;
39
+ border-top: 1px solid ${(props) => props.theme.backgroundLevel2};
40
+ &[aria-selected='true'] {
41
+ background: ${(props) => props.theme.highlight};
42
+ }
43
+ }
44
+ `;
45
+ const SearchBoxContainer = styled.div `
46
+ margin-bottom: ${spacing.r24};
47
+ width: 78%;
48
+ .sc-tooltip {
49
+ width: 100%;
50
+ }
51
+ `;
52
+ const StyledSearchInput = styled(SearchInput) `
53
+ flex-grow: 1;
54
+ .sc-input-type:focus {
55
+ border-bottom: 0;
56
+ border-top-left-radius: 4px;
57
+ border-top-right-radius: 4px;
58
+ border-bottom-right-radius: 0;
59
+ border-bottom-left-radius: 0;
60
+ }
61
+ `;
62
+ const AttachmentTableContainer = styled.div `
63
+ height: 100%;
64
+ `;
65
+ const StyledTable = styled.div `
66
+ background: ${(props) => props.theme.backgroundLevel4};
67
+ height: 100%;
68
+ `;
69
+ const CenterredSecondaryText = styled(SecondaryText) `
70
+ display: block;
71
+ text-align: center;
72
+ `;
73
+ const PrivateAttachmentContext = createContext(null);
74
+ const AttachmentContext = createContext(null);
75
+ export const AttachmentProvider = ({ children, }) => {
76
+ const [resetAttachmentTable, setResetAttachementTable] = useState((_, __) => { });
77
+ return (_jsx(PrivateAttachmentContext.Provider, { value: { setResetAttachementTable }, children: _jsx(AttachmentContext.Provider, { value: { resetAttachmentTable }, children: children }) }));
78
+ };
79
+ export const useAttachmentOperations = () => {
80
+ const ctx = useContext(AttachmentContext);
81
+ if (ctx === null) {
82
+ throw new Error("useAttachmentOperations can't be used outside AttachmentProvider");
83
+ }
84
+ return ctx;
85
+ };
86
+ export const AttachmentTable = ({ initiallyAttachedEntities, initiallyAttachedEntitiesStatus, initialAttachmentOperations, onAttachmentsOperationsChanged, entityName, searchEntityPlaceholder, getNameQuery, filteredEntities, onEntitySearchChange, }) => {
87
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
88
+ const privateAttachmentContext = useContext(PrivateAttachmentContext);
89
+ const exposedAttachmentContext = useContext(AttachmentContext);
90
+ if (!privateAttachmentContext || !exposedAttachmentContext) {
91
+ throw new Error('Cannot use AttachmentTable outside AttachmentProvider');
92
+ }
93
+ //Desired attached entities and onAttachmentsOperationsChanged handling
94
+ const convertInitiallyAttachedEntitiesToDesiredAttachedEntities = useCallback((initiallyAttachedEntities, operations = initialAttachmentOperations) => {
95
+ return initiallyAttachedEntities
96
+ .filter((attachedEntities) => !operations.find((op) => op.entity.id === attachedEntities.id))
97
+ .map((entity) => ({
98
+ ...entity,
99
+ isPending: false,
100
+ action: null,
101
+ }));
102
+ }, [initialAttachmentOperations]);
103
+ const convertInitiallyAttachementOperationsToDesiredAttachedEntities = useCallback((initialAttachmentOperations) => {
104
+ return initialAttachmentOperations
105
+ .filter((op) => op.action !== AttachmentAction.REMOVE)
106
+ .map((op) => ({
107
+ ...op.entity,
108
+ isPending: true,
109
+ action: op.action,
110
+ }));
111
+ }, []);
112
+ const [{ desiredAttachedEntities, attachmentsOperations }, dispatch] = useReducer((state, action) => {
113
+ switch (action.action) {
114
+ case 'RESET_DESIRED_ATTACHED_ENTITIES':
115
+ return {
116
+ desiredAttachedEntities: action.entities,
117
+ attachmentsOperations: action.operations,
118
+ };
119
+ case AttachmentAction.ADD:
120
+ if (!state.desiredAttachedEntities.find((entity) => entity.id === action.entity.id)) {
121
+ const newAttachmentsOperations = [...state.attachmentsOperations];
122
+ const existingOperationIndexOnThisEntity = state.attachmentsOperations.findIndex((operation) => operation.entity.id === action.entity.id);
123
+ //When ADD, we check if it's already exist in operations. If so, we delete the previous operation and not proceed to the ADD.
124
+ if (existingOperationIndexOnThisEntity !== -1 &&
125
+ state.attachmentsOperations[existingOperationIndexOnThisEntity]
126
+ .action === AttachmentAction.REMOVE) {
127
+ newAttachmentsOperations.splice(existingOperationIndexOnThisEntity, 1);
128
+ const newState = {
129
+ ...state,
130
+ desiredAttachedEntities: [
131
+ { ...action.entity },
132
+ ...state.desiredAttachedEntities,
133
+ ],
134
+ attachmentsOperations: [...newAttachmentsOperations],
135
+ };
136
+ return newState;
137
+ }
138
+ else {
139
+ const newState = {
140
+ ...state,
141
+ desiredAttachedEntities: [
142
+ { ...action.entity, isPending: true },
143
+ ...state.desiredAttachedEntities,
144
+ ],
145
+ attachmentsOperations: [...newAttachmentsOperations, action],
146
+ };
147
+ return newState;
148
+ }
149
+ }
150
+ break;
151
+ case AttachmentAction.REMOVE:
152
+ if (state.desiredAttachedEntities.find((entity) => entity.id === action.entity.id)) {
153
+ const newDesiredAttachedEntities = [
154
+ ...state.desiredAttachedEntities,
155
+ ];
156
+ newDesiredAttachedEntities.splice(state.desiredAttachedEntities.findIndex((entity) => entity.id === action.entity.id), 1);
157
+ const newAttachmentsOperations = [...state.attachmentsOperations];
158
+ const existingOperationIndexOnThisEntity = state.attachmentsOperations.findIndex((operation) => operation.entity.id === action.entity.id);
159
+ if (existingOperationIndexOnThisEntity !== -1 &&
160
+ state.attachmentsOperations[existingOperationIndexOnThisEntity]
161
+ .action === AttachmentAction.ADD) {
162
+ newAttachmentsOperations.splice(existingOperationIndexOnThisEntity, 1);
163
+ }
164
+ else if (existingOperationIndexOnThisEntity !== -1 &&
165
+ state.attachmentsOperations[existingOperationIndexOnThisEntity]
166
+ .action === AttachmentAction.REMOVE) {
167
+ return state;
168
+ }
169
+ else {
170
+ newAttachmentsOperations.push(action);
171
+ }
172
+ const newState = {
173
+ ...state,
174
+ desiredAttachedEntities: newDesiredAttachedEntities,
175
+ attachmentsOperations: newAttachmentsOperations,
176
+ };
177
+ return newState;
178
+ }
179
+ break;
180
+ }
181
+ return state;
182
+ }, {
183
+ desiredAttachedEntities: [
184
+ ...convertInitiallyAttachedEntitiesToDesiredAttachedEntities(initiallyAttachedEntities),
185
+ ...convertInitiallyAttachementOperationsToDesiredAttachedEntities(initialAttachmentOperations),
186
+ ],
187
+ attachmentsOperations: initialAttachmentOperations,
188
+ });
189
+ useEffect(() => {
190
+ onAttachmentsOperationsChanged(attachmentsOperations);
191
+ }, [onAttachmentsOperationsChanged, attachmentsOperations]);
192
+ const previousInitiallyAttachedEntitiesStatus = useRef(initiallyAttachedEntitiesStatus);
193
+ useMemo(() => {
194
+ if (initiallyAttachedEntitiesStatus === 'success' &&
195
+ previousInitiallyAttachedEntitiesStatus.current !==
196
+ initiallyAttachedEntitiesStatus) {
197
+ previousInitiallyAttachedEntitiesStatus.current = 'success';
198
+ dispatch({
199
+ action: 'RESET_DESIRED_ATTACHED_ENTITIES',
200
+ entities: [
201
+ ...convertInitiallyAttachedEntitiesToDesiredAttachedEntities(initiallyAttachedEntities),
202
+ ...convertInitiallyAttachementOperationsToDesiredAttachedEntities(initialAttachmentOperations),
203
+ ],
204
+ operations: initialAttachmentOperations,
205
+ });
206
+ }
207
+ else {
208
+ previousInitiallyAttachedEntitiesStatus.current =
209
+ initiallyAttachedEntitiesStatus;
210
+ }
211
+ }, [
212
+ initiallyAttachedEntitiesStatus,
213
+ initiallyAttachedEntities,
214
+ initialAttachmentOperations,
215
+ convertInitiallyAttachedEntitiesToDesiredAttachedEntities,
216
+ convertInitiallyAttachementOperationsToDesiredAttachedEntities,
217
+ ]);
218
+ useEffect(() => {
219
+ privateAttachmentContext.setResetAttachementTable(() => {
220
+ return (newlyAttachedEntities, newAttachmentOperations) => {
221
+ dispatch({
222
+ action: 'RESET_DESIRED_ATTACHED_ENTITIES',
223
+ entities: [
224
+ ...convertInitiallyAttachedEntitiesToDesiredAttachedEntities(newlyAttachedEntities, newAttachmentOperations),
225
+ ...convertInitiallyAttachementOperationsToDesiredAttachedEntities(newAttachmentOperations),
226
+ ],
227
+ operations: newAttachmentOperations,
228
+ });
229
+ };
230
+ });
231
+ }, [
232
+ convertInitiallyAttachedEntitiesToDesiredAttachedEntities,
233
+ convertInitiallyAttachementOperationsToDesiredAttachedEntities,
234
+ dispatch,
235
+ ]);
236
+ const resetRef = useRef(null);
237
+ const searchInputRef = useRef(null);
238
+ const onSelectedItemChange = useCallback((onChangeParams) => {
239
+ if (onChangeParams.selectedItem) {
240
+ dispatch({
241
+ action: AttachmentAction.ADD,
242
+ entity: onChangeParams.selectedItem,
243
+ });
244
+ if (resetRef.current)
245
+ resetRef.current();
246
+ if (searchInputRef.current)
247
+ searchInputRef.current.blur();
248
+ }
249
+ }, [resetRef]);
250
+ const { isOpen, getMenuProps, getInputProps, openMenu, getItemProps, reset } = useCombobox({
251
+ items: filteredEntities.status === 'success'
252
+ ? filteredEntities.data.entities
253
+ : [],
254
+ onSelectedItemChange,
255
+ onInputValueChange: ({ inputValue }) => {
256
+ onEntitySearchChange(inputValue);
257
+ },
258
+ });
259
+ useMemo(() => {
260
+ //@ts-expect-error assigning to the ref is expected here
261
+ resetRef.current = reset;
262
+ }, [reset]);
263
+ // UI styling states
264
+ const [searchWidth, setSearchWidth] = useState('0px');
265
+ const [searchInputIsFocused, setSearchInputIsFocused] = useState(false);
266
+ return (_jsxs(AttachmentTableContainer, { children: [_jsx(SearchBoxContainer, { ref: (element) => {
267
+ if (element) {
268
+ setSearchWidth(element.getBoundingClientRect().width - 2 + 'px');
269
+ }
270
+ }, children: filteredEntities.status === 'error' ? (_jsx(Tooltip, { overlay: _jsx(_Fragment, { children: "We failed to load the entities, hence search is disabled" }), children: _jsxs(Box, { display: "flex", alignItems: "center", width: "100%", gap: 8, children: [_jsx(StyledSearchInput, { placeholder: searchEntityPlaceholder, ...getInputProps({
271
+ ref: (element) => {
272
+ if (element)
273
+ searchInputRef.current = element;
274
+ },
275
+ }), onFocus: () => {
276
+ openMenu();
277
+ setSearchInputIsFocused(true);
278
+ }, onBlur: () => {
279
+ setSearchInputIsFocused(false);
280
+ }, disableToggle: true, disabled: filteredEntities.status === 'error' }), _jsx(Loader, {})] }) })) : (_jsx(StyledSearchInput, { placeholder: searchEntityPlaceholder, ...getInputProps({
281
+ ref: (element) => {
282
+ if (element)
283
+ searchInputRef.current = element;
284
+ },
285
+ }), onFocus: () => {
286
+ openMenu();
287
+ setSearchInputIsFocused(true);
288
+ }, onBlur: () => {
289
+ setSearchInputIsFocused(false);
290
+ }, disableToggle: true })) }), _jsxs(MenuContainer, { ...getMenuProps(), width: searchWidth, isOpen: isOpen, searchInputIsFocused: searchInputIsFocused, children: [isOpen &&
291
+ filteredEntities.status === 'success' &&
292
+ ((_a = filteredEntities.data) === null || _a === void 0 ? void 0 : _a.entities.map((item, index) => (_jsx("li", { ...getItemProps({ item, index }), children: _jsx(Text, { children: item.name }) }, `${item.id}${index}`)))), isOpen && filteredEntities.status === 'loading' && (_jsx("li", { children: _jsx(Text, { children: "Searching..." }) })), isOpen && filteredEntities.status === 'error' && (_jsx("li", { children: _jsx(Text, { color: "statusCritical", children: "An error occured while searching" }) })), isOpen &&
293
+ filteredEntities.status === 'success' &&
294
+ (((_b = filteredEntities.data) === null || _b === void 0 ? void 0 : _b.number) || 0) >
295
+ ((_c = filteredEntities.data) === null || _c === void 0 ? void 0 : _c.entities.length) && (_jsx("li", { children: _jsxs(Text, { isGentleEmphazed: true, color: "textSecondary", style: { textAlign: 'right' }, children: ["There", ' ', (((_d = filteredEntities.data) === null || _d === void 0 ? void 0 : _d.number) || 0) -
296
+ ((_e = filteredEntities.data) === null || _e === void 0 ? void 0 : _e.entities.length) ===
297
+ 1
298
+ ? 'is'
299
+ : 'are', ' ', (((_f = filteredEntities.data) === null || _f === void 0 ? void 0 : _f.number) || 0) -
300
+ ((_g = filteredEntities.data) === null || _g === void 0 ? void 0 : _g.entities.length), ' ', "more", ' ', (((_h = filteredEntities.data) === null || _h === void 0 ? void 0 : _h.number) || 0) -
301
+ ((_j = filteredEntities.data) === null || _j === void 0 ? void 0 : _j.entities.length) ===
302
+ 1
303
+ ? entityName.singular
304
+ : entityName.plural, ' ', "matching your search. Suggestion: try more specific search expression."] }) })), isOpen &&
305
+ filteredEntities.status === 'success' &&
306
+ ((_k = filteredEntities.data) === null || _k === void 0 ? void 0 : _k.entities.length) === 0 && (_jsx("li", { children: _jsxs(Text, { isGentleEmphazed: true, color: "textSecondary", children: ["No ", entityName.plural, " found matching your search."] }) }))] }), _jsx(StyledTable, { children: _jsx(Table, { columns: [
307
+ {
308
+ Header: _jsx(Box, { flex: 1.5, children: "Name" }),
309
+ accessor: 'name',
310
+ cellStyle: {
311
+ flex: 1.5,
312
+ marginRight: '1.5rem',
313
+ },
314
+ Cell: ({ value, row: { original: entity }, }) => {
315
+ const { data: asyncName, status } = useQuery({
316
+ ...(getNameQuery
317
+ ? getNameQuery(entity)
318
+ : { queryKey: ['fakeQuery'], queryFn: () => value }),
319
+ enabled: !value,
320
+ });
321
+ if (value) {
322
+ return _jsx(ConstrainedText, { text: value, lineClamp: 2 });
323
+ }
324
+ if (status === 'error') {
325
+ return (_jsxs(_Fragment, { children: ["An error occured while loading ", entityName.singular, " name"] }));
326
+ }
327
+ if (status === 'loading' || status === 'idle') {
328
+ return _jsx(_Fragment, { children: "Loading..." });
329
+ }
330
+ if (status === 'success') {
331
+ if (!asyncName) {
332
+ return _jsx(EmptyCell, {});
333
+ }
334
+ return _jsx(ConstrainedText, { text: asyncName, lineClamp: 2 });
335
+ }
336
+ return _jsx(EmptyCell, {});
337
+ },
338
+ },
339
+ {
340
+ Header: _jsx(Box, { flex: 0.5, children: "Attachment status" }),
341
+ accessor: 'isPending',
342
+ cellStyle: {
343
+ flex: 0.5,
344
+ },
345
+ Cell: ({ value }) => {
346
+ return value ? _jsx(_Fragment, { children: "Pending" }) : _jsx(_Fragment, { children: "Attached" });
347
+ },
348
+ },
349
+ {
350
+ Header: _jsx(Box, { flex: 0.5 }),
351
+ accessor: 'action',
352
+ cellStyle: {
353
+ textAlign: 'right',
354
+ flex: 0.5,
355
+ marginLeft: 'auto',
356
+ marginRight: '0.5rem',
357
+ },
358
+ Cell: ({ row: { original: entity }, }) => (_jsx(Button, { size: "inline", onClick: () => {
359
+ dispatch({
360
+ action: AttachmentAction.REMOVE,
361
+ entity: {
362
+ name: entity.name,
363
+ id: entity.id,
364
+ type: entity.type,
365
+ },
366
+ });
367
+ }, icon: _jsx(Icon, { name: "Close" }), label: "Remove", variant: "danger", disabled: !!entity.disableDetach })),
368
+ },
369
+ ], data: desiredAttachedEntities.map((entity) => ({
370
+ ...entity,
371
+ isPending: entity.isPending || false,
372
+ action: null,
373
+ })), defaultSortingKey: "name", children: _jsx(Table.SingleSelectableContent, { backgroundVariant: "backgroundLevel4", rowHeight: rowHeight, separationLineVariant: "backgroundLevel2", children: (rows) => (_jsxs(_Fragment, { children: [initiallyAttachedEntitiesStatus === 'idle' ||
374
+ initiallyAttachedEntitiesStatus === 'loading' ? (_jsxs(Wrap, { children: [_jsx("p", {}), _jsxs(Stack, { children: [_jsx(Loader, {}), _jsxs(Text, { children: ["Loading ", entityName.plural, "..."] })] }), _jsx("p", {})] })) : initiallyAttachedEntitiesStatus === 'error' ? (_jsxs(CenterredSecondaryText, { children: ["Failed to load ", entityName.plural] })) : (desiredAttachedEntities.length === 0 && (_jsxs(CenterredSecondaryText, { children: ["No ", entityName.plural, " attached"] }))), desiredAttachedEntities.length > 0 && rows] })) }) }) })] }));
375
+ };
@@ -0,0 +1,15 @@
1
+ export type AttachableEntity<ENTITY_TYPE> = {
2
+ name: string;
3
+ id: string;
4
+ type: ENTITY_TYPE;
5
+ disableDetach?: boolean;
6
+ };
7
+ export declare enum AttachmentAction {
8
+ ADD = 0,
9
+ REMOVE = 1
10
+ }
11
+ export type AttachmentOperation<ENTITY_TYPE> = {
12
+ action: AttachmentAction;
13
+ entity: AttachableEntity<ENTITY_TYPE>;
14
+ };
15
+ //# sourceMappingURL=AttachmentTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/organisms/attachments/AttachmentTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,WAAW,IAAI;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,GAAG,IAAA;IACH,MAAM,IAAA;CACP;AAED,MAAM,MAAM,mBAAmB,CAAC,WAAW,IAAI;IAC7C,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CACvC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export var AttachmentAction;
2
+ (function (AttachmentAction) {
3
+ AttachmentAction[AttachmentAction["ADD"] = 0] = "ADD";
4
+ AttachmentAction[AttachmentAction["REMOVE"] = 1] = "REMOVE";
5
+ })(AttachmentAction || (AttachmentAction = {}));