@scality/data-browser-library 1.0.0-preview.8 → 1.0.1

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 (303) hide show
  1. package/dist/components/DataBrowserUI.d.ts +12 -0
  2. package/dist/components/DataBrowserUI.js +99 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketAccessor.test.js +214 -0
  6. package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
  8. package/dist/components/__tests__/BucketCreate.test.d.ts +1 -0
  9. package/dist/components/__tests__/BucketCreate.test.js +574 -0
  10. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  11. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +14 -0
  13. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
  14. package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
  15. package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
  16. package/dist/components/__tests__/BucketList.test.js +495 -81
  17. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  19. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  20. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  21. package/dist/components/__tests__/BucketOverview.test.js +484 -179
  22. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  23. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +16 -0
  24. package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
  25. package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
  26. package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
  27. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  28. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  29. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
  30. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
  31. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  32. package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
  33. package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
  34. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  35. package/dist/components/__tests__/ObjectList.test.js +741 -240
  36. package/dist/components/__tests__/UploadButton.test.js +45 -45
  37. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  38. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  39. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  40. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  41. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  42. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  43. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  44. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  45. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  46. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  47. package/dist/components/breadcrumb/index.d.ts +8 -0
  48. package/dist/components/breadcrumb/index.js +4 -0
  49. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  50. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  51. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  52. package/dist/components/buckets/BucketAccessor.js +125 -0
  53. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  54. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  55. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  56. package/dist/components/buckets/BucketCorsPage.js +234 -0
  57. package/dist/components/buckets/BucketCreate.d.ts +50 -0
  58. package/dist/components/buckets/BucketCreate.js +279 -0
  59. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  60. package/dist/components/buckets/BucketDetails.js +256 -40
  61. package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
  62. package/dist/components/buckets/BucketLifecycleFormPage.js +1086 -0
  63. package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
  64. package/dist/components/buckets/BucketLifecycleList.js +270 -0
  65. package/dist/components/buckets/BucketList.d.ts +6 -4
  66. package/dist/components/buckets/BucketList.js +161 -94
  67. package/dist/components/buckets/BucketLocation.js +4 -4
  68. package/dist/components/buckets/BucketOverview.d.ts +86 -5
  69. package/dist/components/buckets/BucketOverview.js +481 -192
  70. package/dist/components/buckets/BucketPage.js +44 -22
  71. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  72. package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
  73. package/dist/components/buckets/BucketReplicationFormPage.js +835 -0
  74. package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
  75. package/dist/components/buckets/BucketReplicationList.js +189 -0
  76. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  77. package/dist/components/buckets/BucketVersioning.js +76 -0
  78. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  79. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +18 -0
  80. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
  81. package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
  82. package/dist/components/buckets/EmptyBucketButton.js +232 -0
  83. package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
  84. package/dist/components/buckets/EmptyBucketSummary.js +60 -0
  85. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
  86. package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
  87. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  88. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  89. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  90. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  91. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  92. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  93. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  94. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  95. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  96. package/dist/components/buckets/notifications/events.d.ts +71 -7
  97. package/dist/components/buckets/notifications/events.js +98 -16
  98. package/dist/components/index.d.ts +27 -13
  99. package/dist/components/index.js +20 -6
  100. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  101. package/dist/components/layouts/ArrowNavigation.js +28 -0
  102. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  103. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  104. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  105. package/dist/components/objects/CreateFolderButton.js +12 -12
  106. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  107. package/dist/components/objects/DeleteObjectButton.js +19 -21
  108. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  109. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  110. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  111. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  112. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  113. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  114. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  115. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  116. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  117. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  118. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  119. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  120. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  121. package/dist/components/objects/ObjectDetails/index.js +152 -40
  122. package/dist/components/objects/ObjectList.d.ts +12 -10
  123. package/dist/components/objects/ObjectList.js +590 -263
  124. package/dist/components/objects/ObjectLock/EditRetentionButton.d.ts +4 -0
  125. package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
  126. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
  127. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
  128. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
  129. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +159 -0
  130. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
  131. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
  132. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
  133. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
  134. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
  135. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
  136. package/dist/components/objects/ObjectPage.js +12 -8
  137. package/dist/components/objects/UploadButton.d.ts +3 -3
  138. package/dist/components/objects/UploadButton.js +10 -10
  139. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  140. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  141. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  142. package/dist/components/providers/DataBrowserProvider.js +60 -38
  143. package/dist/components/providers/QueryProvider.d.ts +9 -0
  144. package/dist/components/providers/QueryProvider.js +21 -0
  145. package/dist/components/search/MetadataSearch.js +29 -28
  146. package/dist/components/search/SearchHints.js +1 -1
  147. package/dist/components/ui/ArrayFieldActions.d.ts +36 -0
  148. package/dist/components/ui/ArrayFieldActions.js +43 -0
  149. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
  150. package/dist/components/ui/ConfirmDeleteRuleModal.js +48 -0
  151. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  152. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  153. package/dist/components/ui/FilterFormSection.d.ts +44 -0
  154. package/dist/components/ui/FilterFormSection.js +159 -0
  155. package/dist/components/ui/Search.elements.d.ts +2 -2
  156. package/dist/components/ui/Search.elements.js +7 -7
  157. package/dist/components/ui/Table.elements.d.ts +2 -1
  158. package/dist/components/ui/Table.elements.js +18 -12
  159. package/dist/config/__tests__/factory.test.d.ts +1 -0
  160. package/dist/config/__tests__/factory.test.js +311 -0
  161. package/dist/config/factory.d.ts +14 -49
  162. package/dist/config/factory.js +23 -68
  163. package/dist/config/types.d.ts +212 -34
  164. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  165. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  166. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  167. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  168. package/dist/hooks/__tests__/useISVBucketDetection.test.d.ts +1 -0
  169. package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
  170. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  171. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  172. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  173. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  174. package/dist/hooks/bucketConfiguration.js +52 -51
  175. package/dist/hooks/bucketOperations.d.ts +10 -1
  176. package/dist/hooks/bucketOperations.js +10 -9
  177. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  178. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  179. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  180. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  181. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +95 -52
  182. package/dist/hooks/factories/index.d.ts +4 -4
  183. package/dist/hooks/factories/index.js +2 -2
  184. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  185. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  186. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  187. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  188. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  189. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  190. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  191. package/dist/hooks/factories/useCreateS3QueryHook.js +29 -3
  192. package/dist/hooks/index.d.ts +19 -8
  193. package/dist/hooks/index.js +16 -5
  194. package/dist/hooks/loginOperations.d.ts +1 -1
  195. package/dist/hooks/loginOperations.js +1 -1
  196. package/dist/hooks/objectOperations.d.ts +2 -2
  197. package/dist/hooks/objectOperations.js +50 -49
  198. package/dist/hooks/presignedOperations.d.ts +4 -4
  199. package/dist/hooks/presignedOperations.js +5 -5
  200. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  201. package/dist/hooks/useAccessibleBuckets.js +115 -0
  202. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  203. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  204. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  205. package/dist/hooks/useBucketConfigEditor.js +82 -0
  206. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  207. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  208. package/dist/hooks/useDeleteBucketConfigRule.d.ts +26 -0
  209. package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
  210. package/dist/hooks/useEmptyBucket.d.ts +27 -0
  211. package/dist/hooks/useEmptyBucket.js +116 -0
  212. package/dist/hooks/useFeatures.d.ts +7 -0
  213. package/dist/hooks/useFeatures.js +8 -0
  214. package/dist/hooks/useISVBucketDetection.d.ts +15 -0
  215. package/dist/hooks/useISVBucketDetection.js +27 -0
  216. package/dist/hooks/useIsBucketEmpty.js +4 -4
  217. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  218. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  219. package/dist/hooks/useS3Client.d.ts +6 -0
  220. package/dist/hooks/useS3Client.js +3 -2
  221. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  222. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  223. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  224. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  225. package/dist/hooks/useTableRowSelection.d.ts +9 -0
  226. package/dist/hooks/useTableRowSelection.js +45 -0
  227. package/dist/index.d.ts +6 -6
  228. package/dist/index.js +2 -2
  229. package/dist/schemas/bucketPolicySchema.json +3 -13
  230. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  231. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  232. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  234. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  235. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  236. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  237. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  238. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  239. package/dist/test/msw/handlers/headObject.js +31 -13
  240. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  241. package/dist/test/msw/handlers/listBuckets.js +5 -3
  242. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  243. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  244. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  245. package/dist/test/msw/handlers/listObjects.js +35 -23
  246. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  247. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  248. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  249. package/dist/test/msw/handlers/objectRetention.js +31 -17
  250. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  251. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  252. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  253. package/dist/test/msw/handlers/putObject.js +27 -12
  254. package/dist/test/msw/handlers.d.ts +3 -3
  255. package/dist/test/msw/handlers.js +77 -54
  256. package/dist/test/msw/index.d.ts +2 -2
  257. package/dist/test/msw/index.js +1 -1
  258. package/dist/test/msw/server.d.ts +1 -1
  259. package/dist/test/msw/server.js +1 -1
  260. package/dist/test/msw/utils.js +2 -2
  261. package/dist/test/setup.d.ts +1 -1
  262. package/dist/test/setup.js +13 -30
  263. package/dist/test/testUtils.d.ts +170 -36
  264. package/dist/test/testUtils.js +229 -116
  265. package/dist/test/utils/errorHandling.test.js +146 -108
  266. package/dist/types/index.d.ts +49 -36
  267. package/dist/types/monaco.d.ts +13 -0
  268. package/dist/types/monaco.js +0 -0
  269. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  270. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  271. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  272. package/dist/utils/__tests__/s3Client.test.js +340 -0
  273. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  274. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  275. package/dist/utils/constants.d.ts +22 -0
  276. package/dist/utils/constants.js +19 -0
  277. package/dist/utils/deletion/index.d.ts +2 -2
  278. package/dist/utils/deletion/index.js +1 -1
  279. package/dist/utils/deletion/messages.d.ts +1 -1
  280. package/dist/utils/deletion/messages.js +4 -4
  281. package/dist/utils/errorHandling.d.ts +12 -3
  282. package/dist/utils/errorHandling.js +12 -7
  283. package/dist/utils/hooks.js +8 -8
  284. package/dist/utils/index.d.ts +5 -2
  285. package/dist/utils/index.js +5 -1
  286. package/dist/utils/proxyMiddleware.d.ts +32 -13
  287. package/dist/utils/proxyMiddleware.js +90 -36
  288. package/dist/utils/s3Client.d.ts +14 -4
  289. package/dist/utils/s3Client.js +5 -26
  290. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  291. package/dist/utils/s3ConfigIdentifier.js +57 -0
  292. package/dist/utils/s3RuleUtils.d.ts +53 -0
  293. package/dist/utils/s3RuleUtils.js +101 -0
  294. package/package.json +10 -8
  295. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  296. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  297. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  298. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  299. package/dist/hooks/useLoginMutation.d.ts +0 -21
  300. package/dist/hooks/useLoginMutation.js +0 -9
  301. package/dist/utils/useFeatures.d.ts +0 -1
  302. package/dist/utils/useFeatures.js +0 -7
  303. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -0,0 +1,60 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { Banner, Icon, Modal, Wrap } from "@scality/core-ui";
3
+ import { Button } from "@scality/core-ui/dist/next";
4
+ import { useMemo } from "react";
5
+ import { EmptyBucketSummaryList } from "./EmptyBucketSummaryList.js";
6
+ const useCreateDeleteSummaryData = (deleteResult)=>useMemo(()=>{
7
+ const deleteSummaryData = [
8
+ {
9
+ attempts: (deleteResult.Deleted?.length || 0) + (deleteResult.Errors?.length || 0),
10
+ deleted: deleteResult.Deleted?.length || 0,
11
+ errors: {
12
+ nbErrors: deleteResult.Errors?.length || 0,
13
+ messages: deleteResult.Errors?.map((error)=>error.Message || '') || []
14
+ }
15
+ }
16
+ ];
17
+ return deleteSummaryData;
18
+ }, [
19
+ deleteResult
20
+ ]);
21
+ const EmptyBucketSummary = ({ deleteResult, close, open, isFetchNextPage })=>{
22
+ const deleteSummaryData = useCreateDeleteSummaryData(deleteResult);
23
+ return /*#__PURE__*/ jsx(Modal, {
24
+ title: "Summary",
25
+ close: close,
26
+ isOpen: open,
27
+ footer: /*#__PURE__*/ jsxs(Wrap, {
28
+ children: [
29
+ /*#__PURE__*/ jsx("p", {}),
30
+ /*#__PURE__*/ jsx(Button, {
31
+ variant: "primary",
32
+ onClick: close,
33
+ label: "Close"
34
+ })
35
+ ]
36
+ }),
37
+ children: /*#__PURE__*/ jsxs("div", {
38
+ children: [
39
+ !isFetchNextPage && /*#__PURE__*/ jsxs(Fragment, {
40
+ children: [
41
+ /*#__PURE__*/ jsx(Banner, {
42
+ variant: "danger",
43
+ icon: /*#__PURE__*/ jsx(Icon, {
44
+ name: "Exclamation-circle",
45
+ color: "statusCritical"
46
+ }),
47
+ title: "Error",
48
+ children: "Your bucket contains too many objects. We can delete up to 20 000 objects."
49
+ }),
50
+ /*#__PURE__*/ jsx("br", {})
51
+ ]
52
+ }),
53
+ /*#__PURE__*/ jsx(EmptyBucketSummaryList, {
54
+ summaryData: deleteSummaryData
55
+ })
56
+ ]
57
+ })
58
+ });
59
+ };
60
+ export { EmptyBucketSummary };
@@ -0,0 +1,13 @@
1
+ interface DeleteSummaryData extends Record<string, unknown> {
2
+ attempts: number;
3
+ deleted: number;
4
+ errors: {
5
+ nbErrors: number;
6
+ messages: string[];
7
+ };
8
+ }
9
+ interface EmptyBucketSummaryListProps {
10
+ summaryData: DeleteSummaryData[];
11
+ }
12
+ export declare const EmptyBucketSummaryList: ({ summaryData }: EmptyBucketSummaryListProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,140 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { BasicText, Icon, IconHelp, Stack, Text } from "@scality/core-ui";
3
+ import { Table } from "@scality/core-ui/dist/components/tablev2/Tablev2.component";
4
+ import { useMemo } from "react";
5
+ const getUniqueErrorMessages = (errorMessages)=>{
6
+ const uniqueArray = errorMessages.reduce((acc, message)=>{
7
+ const existingItem = acc.find((item)=>item.message === message);
8
+ if (existingItem) existingItem.errorNumbers++;
9
+ else acc.push({
10
+ message,
11
+ errorNumbers: 1
12
+ });
13
+ return acc;
14
+ }, []);
15
+ return uniqueArray;
16
+ };
17
+ const ErrorsTable = ({ messages })=>{
18
+ const messagesColumns = [
19
+ {
20
+ Header: 'Error Message',
21
+ accessor: 'message',
22
+ cellStyle: {
23
+ minWidth: '8rem'
24
+ },
25
+ Cell ({ value }) {
26
+ return /*#__PURE__*/ jsx(Text, {
27
+ children: value
28
+ });
29
+ }
30
+ },
31
+ {
32
+ Header: 'Number of errors',
33
+ accessor: 'errorNumbers',
34
+ cellStyle: {
35
+ minWidth: '8rem'
36
+ },
37
+ Cell ({ value }) {
38
+ return /*#__PURE__*/ jsx(Text, {
39
+ children: value
40
+ });
41
+ }
42
+ }
43
+ ];
44
+ const list = getUniqueErrorMessages(messages);
45
+ const TABLE_HEIGHT = 5 * list.length;
46
+ return /*#__PURE__*/ jsx(IconHelp, {
47
+ placement: "top",
48
+ overlayStyle: {
49
+ width: '30rem'
50
+ },
51
+ tooltipMessage: /*#__PURE__*/ jsx("div", {
52
+ style: {
53
+ height: `${TABLE_HEIGHT}rem`
54
+ },
55
+ children: /*#__PURE__*/ jsx(Table, {
56
+ columns: messagesColumns,
57
+ data: list,
58
+ children: /*#__PURE__*/ jsx(Table.SingleSelectableContent, {
59
+ rowHeight: "h32",
60
+ separationLineVariant: "backgroundLevel3"
61
+ })
62
+ })
63
+ })
64
+ });
65
+ };
66
+ const SummaryCell = (value, isFailed = false, withIcon = false, messages)=>{
67
+ const text = 1 === value ? '1 object' : `${value} objects`;
68
+ if (withIcon) return /*#__PURE__*/ jsxs(Stack, {
69
+ children: [
70
+ /*#__PURE__*/ jsx(Icon, {
71
+ name: isFailed ? 'Exclamation-circle' : 'Check-circle',
72
+ color: isFailed ? 'statusCritical' : 'statusHealthy'
73
+ }),
74
+ /*#__PURE__*/ jsx(BasicText, {
75
+ children: text
76
+ }),
77
+ messages?.length ? /*#__PURE__*/ jsx(ErrorsTable, {
78
+ messages: messages
79
+ }) : null
80
+ ]
81
+ });
82
+ return /*#__PURE__*/ jsx(BasicText, {
83
+ children: text
84
+ });
85
+ };
86
+ const useCreateDeleteSummaryColumns = ()=>useMemo(()=>[
87
+ {
88
+ Header: 'Total attempts',
89
+ accessor: 'attempts',
90
+ cellStyle: {
91
+ minWidth: '12rem'
92
+ },
93
+ Cell ({ value }) {
94
+ return SummaryCell(value);
95
+ }
96
+ },
97
+ {
98
+ Header: 'Successfully deleted',
99
+ accessor: 'deleted',
100
+ cellStyle: {
101
+ minWidth: '12rem'
102
+ },
103
+ Cell ({ value }) {
104
+ return SummaryCell(value, false, true);
105
+ }
106
+ },
107
+ {
108
+ Header: 'Deletion failed',
109
+ accessor: 'errors',
110
+ cellStyle: {
111
+ minWidth: '12rem'
112
+ },
113
+ Cell ({ value }) {
114
+ return SummaryCell(value.nbErrors, true, true, value.messages);
115
+ }
116
+ }
117
+ ], []);
118
+ const EmptyBucketSummaryList = ({ summaryData })=>{
119
+ const summaryColumns = useCreateDeleteSummaryColumns();
120
+ return /*#__PURE__*/ jsx("div", {
121
+ style: {
122
+ height: '15rem'
123
+ },
124
+ children: /*#__PURE__*/ jsx(Table, {
125
+ columns: summaryColumns,
126
+ data: summaryData,
127
+ children: /*#__PURE__*/ jsx("div", {
128
+ style: {
129
+ height: '10rem',
130
+ paddingBottom: '5rem'
131
+ },
132
+ children: /*#__PURE__*/ jsx(Table.SingleSelectableContent, {
133
+ rowHeight: "h40",
134
+ separationLineVariant: "backgroundLevel1"
135
+ })
136
+ })
137
+ })
138
+ });
139
+ };
140
+ export { EmptyBucketSummaryList };
@@ -0,0 +1,163 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { fireEvent, render, screen } from "@testing-library/react";
3
+ import { useGetBucketObjectLockConfiguration, useGetBucketVersioning, useISVBucketStatus, useSetBucketVersioning } from "../../../hooks/index.js";
4
+ import { createMockMutationResult, createTestWrapper, findToggleByLabel } from "../../../test/testUtils.js";
5
+ import { BucketOverviewContext } from "../BucketOverview.js";
6
+ import { BucketVersioning } from "../BucketVersioning.js";
7
+ const mockShowToast = jest.fn();
8
+ jest.mock('@scality/core-ui', ()=>({
9
+ ...jest.requireActual('@scality/core-ui'),
10
+ useToast: ()=>({
11
+ showToast: mockShowToast
12
+ })
13
+ }));
14
+ jest.mock('../../../hooks');
15
+ const mockUseGetBucketVersioning = jest.mocked(useGetBucketVersioning);
16
+ const mockUseGetBucketObjectLockConfiguration = jest.mocked(useGetBucketObjectLockConfiguration);
17
+ const mockUseISVBucketStatus = jest.mocked(useISVBucketStatus);
18
+ const mockUseSetBucketVersioning = jest.mocked(useSetBucketVersioning);
19
+ const renderBucketVersioning = (props = {})=>{
20
+ const mockMutate = jest.fn();
21
+ mockUseSetBucketVersioning.mockReturnValue(createMockMutationResult(mockMutate));
22
+ const Wrapper = createTestWrapper();
23
+ return {
24
+ ...render(/*#__PURE__*/ jsx(Wrapper, {
25
+ children: /*#__PURE__*/ jsx(BucketOverviewContext.Provider, {
26
+ value: {
27
+ bucketName: 'test-bucket'
28
+ },
29
+ children: /*#__PURE__*/ jsx(BucketVersioning, {
30
+ ...props
31
+ })
32
+ })
33
+ })),
34
+ mutate: mockMutate
35
+ };
36
+ };
37
+ const mockHookDefaults = ()=>{
38
+ mockUseGetBucketVersioning.mockReturnValue({
39
+ data: {
40
+ Status: 'Enabled'
41
+ },
42
+ status: 'success',
43
+ error: null
44
+ });
45
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
46
+ data: {
47
+ ObjectLockConfiguration: {
48
+ ObjectLockEnabled: 'Disabled'
49
+ }
50
+ },
51
+ status: 'success',
52
+ error: null
53
+ });
54
+ mockUseISVBucketStatus.mockReturnValue({
55
+ isVeeamBucket: false,
56
+ isCommvaultBucket: false,
57
+ isISVManaged: false,
58
+ isvApplication: void 0,
59
+ isLoading: false,
60
+ bucketTagsStatus: 'success'
61
+ });
62
+ };
63
+ describe('BucketVersioning', ()=>{
64
+ beforeEach(()=>{
65
+ jest.clearAllMocks();
66
+ mockHookDefaults();
67
+ });
68
+ it('renders toggle with Active label when versioning is enabled', ()=>{
69
+ renderBucketVersioning();
70
+ const toggle = findToggleByLabel('Active');
71
+ expect(toggle).toBeInTheDocument();
72
+ expect(toggle).toBeChecked();
73
+ });
74
+ it('renders toggle with Inactive label when versioning is suspended', ()=>{
75
+ mockUseGetBucketVersioning.mockReturnValue({
76
+ data: {
77
+ Status: 'Suspended'
78
+ },
79
+ status: 'success',
80
+ error: null
81
+ });
82
+ renderBucketVersioning();
83
+ const toggle = findToggleByLabel('Inactive');
84
+ expect(toggle).toBeInTheDocument();
85
+ expect(toggle).not.toBeChecked();
86
+ });
87
+ it('calls mutation with Suspended status when disabling versioning', ()=>{
88
+ const { mutate } = renderBucketVersioning();
89
+ const toggle = findToggleByLabel('Active');
90
+ fireEvent.click(toggle);
91
+ expect(mutate).toHaveBeenCalledWith({
92
+ Bucket: 'test-bucket',
93
+ VersioningConfiguration: {
94
+ Status: 'Suspended'
95
+ }
96
+ }, expect.any(Object));
97
+ });
98
+ it('calls mutation with Enabled status when enabling versioning', ()=>{
99
+ mockUseGetBucketVersioning.mockReturnValue({
100
+ data: {
101
+ Status: 'Suspended'
102
+ },
103
+ status: 'success',
104
+ error: null
105
+ });
106
+ const { mutate } = renderBucketVersioning();
107
+ const toggle = findToggleByLabel('Inactive');
108
+ fireEvent.click(toggle);
109
+ expect(mutate).toHaveBeenCalledWith({
110
+ Bucket: 'test-bucket',
111
+ VersioningConfiguration: {
112
+ Status: 'Enabled'
113
+ }
114
+ }, expect.any(Object));
115
+ });
116
+ it('disables toggle when versioning data is loading', ()=>{
117
+ mockUseGetBucketVersioning.mockReturnValue({
118
+ data: void 0,
119
+ status: 'pending',
120
+ error: null
121
+ });
122
+ renderBucketVersioning();
123
+ const toggle = screen.getByRole('checkbox');
124
+ expect(toggle).toHaveAttribute('aria-disabled', 'true');
125
+ });
126
+ it('renders static Enabled text when Object Lock is enabled', ()=>{
127
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
128
+ data: {
129
+ ObjectLockConfiguration: {
130
+ ObjectLockEnabled: 'Enabled'
131
+ }
132
+ },
133
+ status: 'success'
134
+ });
135
+ renderBucketVersioning();
136
+ expect(screen.getByText('Enabled')).toBeInTheDocument();
137
+ expect(screen.getByText(/Versioning cannot be suspended because Object-lock is enabled/i)).toBeInTheDocument();
138
+ expect(screen.queryByRole('checkbox')).not.toBeInTheDocument();
139
+ });
140
+ it('disables toggle when bucket is managed by Veeam', ()=>{
141
+ mockUseISVBucketStatus.mockReturnValue({
142
+ isVeeamBucket: true,
143
+ isCommvaultBucket: false,
144
+ isISVManaged: true,
145
+ isvApplication: 'Veeam',
146
+ isLoading: false,
147
+ bucketTagsStatus: 'success'
148
+ });
149
+ renderBucketVersioning();
150
+ const toggle = screen.getByRole('checkbox');
151
+ expect(toggle).toHaveAttribute('aria-disabled', 'true');
152
+ });
153
+ it('disables toggle when versioning query errors', ()=>{
154
+ mockUseGetBucketVersioning.mockReturnValue({
155
+ data: void 0,
156
+ status: 'error',
157
+ error: new Error('Failed to fetch versioning')
158
+ });
159
+ renderBucketVersioning();
160
+ const toggle = screen.getByRole('checkbox');
161
+ expect(toggle).toHaveAttribute('aria-disabled', 'true');
162
+ });
163
+ });
@@ -0,0 +1 @@
1
+ export declare function BucketNotificationFormPage(): import("react/jsx-runtime").JSX.Element;