@scality/data-browser-library 1.0.0-preview.9 → 1.0.3

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 (287) 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.js +271 -105
  9. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  11. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +13 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +178 -178
  13. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  14. package/dist/components/__tests__/BucketList.test.js +463 -239
  15. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  17. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  19. package/dist/components/__tests__/BucketOverview.test.js +281 -266
  20. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  21. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +15 -0
  22. package/dist/components/__tests__/BucketReplicationFormPage.test.js +544 -544
  23. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  24. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  25. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  27. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  28. package/dist/components/__tests__/EmptyBucketButton.test.js +59 -59
  29. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  30. package/dist/components/__tests__/ObjectList.test.js +741 -240
  31. package/dist/components/__tests__/UploadButton.test.js +45 -45
  32. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  33. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  34. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  35. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  36. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  37. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  38. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  39. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  40. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  41. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  42. package/dist/components/breadcrumb/index.d.ts +8 -0
  43. package/dist/components/breadcrumb/index.js +4 -0
  44. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  45. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  46. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  47. package/dist/components/buckets/BucketAccessor.js +125 -0
  48. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  49. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  50. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  51. package/dist/components/buckets/BucketCorsPage.js +234 -0
  52. package/dist/components/buckets/BucketCreate.d.ts +3 -2
  53. package/dist/components/buckets/BucketCreate.js +93 -47
  54. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  55. package/dist/components/buckets/BucketDetails.js +249 -85
  56. package/dist/components/buckets/BucketLifecycleFormPage.js +225 -191
  57. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  58. package/dist/components/buckets/BucketLifecycleList.js +59 -61
  59. package/dist/components/buckets/BucketList.d.ts +7 -8
  60. package/dist/components/buckets/BucketList.js +158 -101
  61. package/dist/components/buckets/BucketLocation.js +4 -4
  62. package/dist/components/buckets/BucketOverview.d.ts +22 -2
  63. package/dist/components/buckets/BucketOverview.js +394 -187
  64. package/dist/components/buckets/BucketPage.js +43 -21
  65. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  66. package/dist/components/buckets/BucketReplicationFormPage.js +134 -133
  67. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  68. package/dist/components/buckets/BucketReplicationList.js +48 -45
  69. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  70. package/dist/components/buckets/BucketVersioning.js +76 -0
  71. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  72. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  73. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +2 -2
  74. package/dist/components/buckets/EmptyBucketButton.js +24 -24
  75. package/dist/components/buckets/EmptyBucketSummary.d.ts +2 -2
  76. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  77. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +1 -1
  78. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  79. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  80. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  81. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  82. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  83. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  84. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  85. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  86. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  87. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  88. package/dist/components/buckets/notifications/events.d.ts +71 -7
  89. package/dist/components/buckets/notifications/events.js +98 -16
  90. package/dist/components/index.d.ts +27 -20
  91. package/dist/components/index.js +17 -10
  92. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  93. package/dist/components/layouts/ArrowNavigation.js +28 -0
  94. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  95. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  96. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  97. package/dist/components/objects/CreateFolderButton.js +12 -12
  98. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  99. package/dist/components/objects/DeleteObjectButton.js +19 -21
  100. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  101. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  102. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  103. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +289 -230
  104. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  105. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  106. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  107. package/dist/components/objects/ObjectDetails/ObjectTags.js +103 -123
  108. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  109. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  110. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  111. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  112. package/dist/components/objects/ObjectDetails/formUtils.d.ts +15 -0
  113. package/dist/components/objects/ObjectDetails/formUtils.js +7 -0
  114. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  115. package/dist/components/objects/ObjectDetails/index.js +152 -40
  116. package/dist/components/objects/ObjectList.d.ts +12 -10
  117. package/dist/components/objects/ObjectList.js +590 -263
  118. package/dist/components/objects/ObjectLock/EditRetentionButton.js +4 -4
  119. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +15 -15
  120. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  121. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +32 -31
  122. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  123. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  124. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +51 -51
  125. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +78 -78
  126. package/dist/components/objects/ObjectPage.js +12 -8
  127. package/dist/components/objects/UploadButton.d.ts +3 -3
  128. package/dist/components/objects/UploadButton.js +10 -10
  129. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  130. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  131. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  132. package/dist/components/providers/DataBrowserProvider.js +60 -38
  133. package/dist/components/providers/QueryProvider.d.ts +9 -0
  134. package/dist/components/providers/QueryProvider.js +21 -0
  135. package/dist/components/search/MetadataSearch.js +29 -28
  136. package/dist/components/search/SearchHints.js +1 -1
  137. package/dist/components/ui/ArrayFieldActions.js +12 -7
  138. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +2 -2
  139. package/dist/components/ui/ConfirmDeleteRuleModal.js +6 -1
  140. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  141. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  142. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  143. package/dist/components/ui/FilterFormSection.js +29 -29
  144. package/dist/components/ui/Search.elements.d.ts +2 -2
  145. package/dist/components/ui/Search.elements.js +7 -7
  146. package/dist/components/ui/Table.elements.d.ts +2 -1
  147. package/dist/components/ui/Table.elements.js +18 -12
  148. package/dist/config/__tests__/factory.test.d.ts +1 -0
  149. package/dist/config/__tests__/factory.test.js +311 -0
  150. package/dist/config/factory.d.ts +10 -56
  151. package/dist/config/factory.js +23 -71
  152. package/dist/config/types.d.ts +212 -34
  153. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  154. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  155. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  156. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  157. package/dist/hooks/__tests__/useISVBucketDetection.test.js +45 -45
  158. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  159. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  160. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  161. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  162. package/dist/hooks/bucketConfiguration.js +52 -51
  163. package/dist/hooks/bucketOperations.d.ts +10 -1
  164. package/dist/hooks/bucketOperations.js +10 -9
  165. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  166. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  167. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  168. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  169. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +65 -65
  170. package/dist/hooks/factories/index.d.ts +4 -4
  171. package/dist/hooks/factories/index.js +2 -2
  172. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  173. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  174. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  175. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  176. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  177. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  178. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  179. package/dist/hooks/factories/useCreateS3QueryHook.js +11 -6
  180. package/dist/hooks/index.d.ts +19 -12
  181. package/dist/hooks/index.js +16 -9
  182. package/dist/hooks/loginOperations.d.ts +1 -1
  183. package/dist/hooks/loginOperations.js +1 -1
  184. package/dist/hooks/objectOperations.d.ts +2 -2
  185. package/dist/hooks/objectOperations.js +50 -49
  186. package/dist/hooks/presignedOperations.d.ts +4 -4
  187. package/dist/hooks/presignedOperations.js +5 -5
  188. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  189. package/dist/hooks/useAccessibleBuckets.js +115 -0
  190. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  191. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  192. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  193. package/dist/hooks/useBucketConfigEditor.js +82 -0
  194. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  195. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  196. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  197. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  198. package/dist/hooks/useEmptyBucket.js +11 -11
  199. package/dist/hooks/useFeatures.d.ts +7 -0
  200. package/dist/hooks/useFeatures.js +8 -0
  201. package/dist/hooks/useISVBucketDetection.js +6 -6
  202. package/dist/hooks/useIsBucketEmpty.js +4 -4
  203. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  204. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  205. package/dist/hooks/useS3Client.d.ts +6 -0
  206. package/dist/hooks/useS3Client.js +3 -2
  207. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  208. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  209. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  210. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  211. package/dist/index.d.ts +6 -6
  212. package/dist/index.js +2 -2
  213. package/dist/schemas/bucketPolicySchema.json +3 -13
  214. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  215. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  216. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  217. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  218. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  219. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  220. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  221. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  222. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  223. package/dist/test/msw/handlers/headObject.js +31 -13
  224. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  225. package/dist/test/msw/handlers/listBuckets.js +5 -3
  226. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  227. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  228. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  229. package/dist/test/msw/handlers/listObjects.js +35 -23
  230. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  231. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  232. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  233. package/dist/test/msw/handlers/objectRetention.js +31 -17
  234. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  235. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  236. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  237. package/dist/test/msw/handlers/putObject.js +27 -12
  238. package/dist/test/msw/handlers.d.ts +3 -3
  239. package/dist/test/msw/handlers.js +77 -54
  240. package/dist/test/msw/index.d.ts +2 -2
  241. package/dist/test/msw/index.js +1 -1
  242. package/dist/test/msw/server.d.ts +1 -1
  243. package/dist/test/msw/server.js +1 -1
  244. package/dist/test/msw/utils.js +2 -2
  245. package/dist/test/setup.d.ts +1 -1
  246. package/dist/test/setup.js +13 -30
  247. package/dist/test/testUtils.d.ts +85 -33
  248. package/dist/test/testUtils.js +176 -111
  249. package/dist/test/utils/errorHandling.test.js +119 -119
  250. package/dist/types/index.d.ts +50 -37
  251. package/dist/types/monaco.d.ts +13 -0
  252. package/dist/types/monaco.js +0 -0
  253. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  254. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  255. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  256. package/dist/utils/__tests__/s3Client.test.js +340 -0
  257. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  258. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  259. package/dist/utils/constants.d.ts +10 -0
  260. package/dist/utils/constants.js +19 -9
  261. package/dist/utils/deletion/index.d.ts +2 -2
  262. package/dist/utils/deletion/index.js +1 -1
  263. package/dist/utils/deletion/messages.d.ts +1 -1
  264. package/dist/utils/deletion/messages.js +4 -4
  265. package/dist/utils/errorHandling.d.ts +3 -3
  266. package/dist/utils/errorHandling.js +6 -6
  267. package/dist/utils/hooks.js +8 -8
  268. package/dist/utils/index.d.ts +5 -4
  269. package/dist/utils/index.js +4 -2
  270. package/dist/utils/proxyMiddleware.d.ts +32 -13
  271. package/dist/utils/proxyMiddleware.js +90 -36
  272. package/dist/utils/s3Client.d.ts +14 -4
  273. package/dist/utils/s3Client.js +5 -26
  274. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  275. package/dist/utils/s3ConfigIdentifier.js +57 -0
  276. package/dist/utils/s3RuleUtils.d.ts +5 -5
  277. package/dist/utils/s3RuleUtils.js +17 -17
  278. package/package.json +10 -8
  279. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  280. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  281. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  282. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  283. package/dist/hooks/useLoginMutation.d.ts +0 -21
  284. package/dist/hooks/useLoginMutation.js +0 -9
  285. package/dist/utils/useFeatures.d.ts +0 -1
  286. package/dist/utils/useFeatures.js +0 -7
  287. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,73 +1,76 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { joiResolver } from "@hookform/resolvers/joi";
3
3
  import { Checkbox, Form, FormGroup, FormSection, Stack, useToast } from "@scality/core-ui";
4
4
  import { Button, Input } from "@scality/core-ui/dist/next";
5
5
  import { convertRemToPixels } from "@scality/core-ui/dist/utils";
6
6
  import joi from "joi";
7
7
  import { FormProvider, useForm } from "react-hook-form";
8
- import { useNavigate } from "react-router";
8
+ import { useCreateBucket, useSetBucketEncryption, useSetBucketObjectLockConfiguration, useSetBucketVersioning } from "../../hooks/index.js";
9
+ import { useDataBrowserNavigate } from "../../hooks/useDataBrowserNavigate.js";
9
10
  import ObjectLockRetentionSettings from "../objects/ObjectLock/ObjectLockRetentionSettings.js";
10
11
  import { objectLockRetentionSettingsValidationRules } from "../objects/ObjectLock/ObjectLockSettings.js";
11
- import { useCreateBucket, useSetBucketObjectLockConfiguration, useSetBucketVersioning } from "../../hooks/index.js";
12
- const bucketErrorMessage = "Bucket names can include only lowercase letters, numbers, dots (.), and hyphens (-)";
13
- const bucketNameValidationSchema = joi.string().label("Bucket Name").required().min(3).max(63).pattern(/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/, {
14
- name: "bucketName",
12
+ import { useDataBrowserConfig } from "../providers/DataBrowserProvider.js";
13
+ const bucketErrorMessage = 'Bucket names can include only lowercase letters, numbers, dots (.), and hyphens (-)';
14
+ const bucketNameValidationSchema = joi.string().label('Bucket Name').required().min(3).max(63).pattern(/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/, {
15
+ name: 'bucketName',
15
16
  invert: false
16
17
  }).messages({
17
- "string.pattern.name": bucketErrorMessage
18
+ 'string.pattern.name': bucketErrorMessage
18
19
  }).custom((value, helpers)=>{
19
- if (value.includes("..")) return helpers.message({
20
- custom: "Bucket names cannot contain two adjacent periods"
20
+ if (value.includes('..')) return helpers.message({
21
+ custom: 'Bucket names cannot contain two adjacent periods'
21
22
  });
22
23
  if (/^(\d{1,3}\.){3}\d{1,3}$/.test(value)) return helpers.message({
23
- custom: "Bucket names must not be formatted as an IP address"
24
+ custom: 'Bucket names must not be formatted as an IP address'
24
25
  });
25
26
  const forbiddenPrefixes = [
26
- "xn--",
27
- "sthree-",
28
- "amzn-s3-demo-"
27
+ 'xn--',
28
+ 'sthree-',
29
+ 'amzn-s3-demo-'
29
30
  ];
30
31
  if (forbiddenPrefixes.some((prefix)=>value.startsWith(prefix))) return helpers.message({
31
- custom: `Bucket names must not start with ${forbiddenPrefixes.join(", ")}`
32
+ custom: `Bucket names must not start with ${forbiddenPrefixes.join(', ')}`
32
33
  });
33
34
  const forbiddenSuffixes = [
34
- "-s3alias",
35
- "--ol-s3",
36
- "--x-s3",
37
- ".mrap"
35
+ '-s3alias',
36
+ '--ol-s3',
37
+ '--x-s3',
38
+ '.mrap'
38
39
  ];
39
40
  if (forbiddenSuffixes.some((suffix)=>value.endsWith(suffix))) return helpers.message({
40
- custom: `Bucket names must not end with ${forbiddenSuffixes.join(", ")}`
41
+ custom: `Bucket names must not end with ${forbiddenSuffixes.join(', ')}`
41
42
  });
42
43
  const existingBuckets = helpers.prefs.context?.existingBuckets;
43
44
  if (Array.isArray(existingBuckets)) {
44
45
  const isDuplicate = existingBuckets.some((bucketName)=>bucketName.toLowerCase() === value.toLowerCase());
45
46
  if (isDuplicate) return helpers.message({
46
- custom: "A bucket with this name already exists"
47
+ custom: 'A bucket with this name already exists'
47
48
  });
48
49
  }
49
50
  return value;
50
- }, "AWS S3 bucket naming rules");
51
+ }, 'AWS S3 bucket naming rules');
51
52
  const baseBucketCreateSchema = joi.object({
52
53
  name: bucketNameValidationSchema,
53
54
  isVersioning: joi.boolean(),
55
+ isEncryptionEnabled: joi.boolean(),
54
56
  ...objectLockRetentionSettingsValidationRules
55
57
  });
56
58
  const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultValues: customDefaultValues, children, onSubmit: onSubmitProp, onCancel: onCancelProp })=>{
57
- const navigate = useNavigate();
59
+ const navigate = useDataBrowserNavigate();
58
60
  const { showToast } = useToast();
59
61
  const baseDefaultValues = {
60
- name: "",
62
+ name: '',
61
63
  isVersioning: false,
64
+ isEncryptionEnabled: false,
62
65
  isObjectLockEnabled: false,
63
66
  isDefaultRetentionEnabled: false,
64
- retentionMode: "GOVERNANCE",
67
+ retentionMode: 'GOVERNANCE',
65
68
  retentionPeriod: 1,
66
- retentionPeriodFrequencyChoice: "DAYS",
69
+ retentionPeriodFrequencyChoice: 'DAYS',
67
70
  ...customDefaultValues
68
71
  };
69
72
  const useFormMethods = useForm({
70
- mode: "all",
73
+ mode: 'all',
71
74
  resolver: joiResolver(validationSchema || baseBucketCreateSchema, {
72
75
  context: validationContext || {}
73
76
  }),
@@ -76,19 +79,23 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
76
79
  });
77
80
  const { register, handleSubmit, formState, watch } = useFormMethods;
78
81
  const { isValid, errors } = formState;
79
- const isObjectLockEnabled = watch("isObjectLockEnabled");
82
+ const isObjectLockEnabled = watch('isObjectLockEnabled');
83
+ const isEncryptionEnabled = watch('isEncryptionEnabled');
84
+ const isVersioning = watch('isVersioning');
85
+ const { s3Capabilities } = useDataBrowserConfig();
80
86
  const { mutate: createBucket, isPending: isCreatingBucket } = useCreateBucket();
81
87
  const { mutate: setBucketVersioning } = useSetBucketVersioning();
82
88
  const { mutate: setObjectLockConfig } = useSetBucketObjectLockConfiguration();
89
+ const { mutate: setBucketEncryption } = useSetBucketEncryption();
83
90
  const handleCancel = ()=>{
84
91
  if (onCancelProp) onCancelProp();
85
- else navigate("/buckets");
92
+ else navigate('/buckets');
86
93
  };
87
94
  const handleSuccess = (bucketName)=>{
88
95
  showToast({
89
96
  open: true,
90
97
  message: `Bucket "${bucketName}" created successfully`,
91
- status: "success"
98
+ status: 'success'
92
99
  });
93
100
  navigate(`/buckets/${bucketName}`);
94
101
  };
@@ -96,7 +103,7 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
96
103
  showToast({
97
104
  open: true,
98
105
  message: error instanceof Error ? error.message : `Failed to ${operation}`,
99
- status: "error"
106
+ status: 'error'
100
107
  });
101
108
  };
102
109
  const onSubmit = (data)=>{
@@ -104,6 +111,7 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
104
111
  const bucketName = data.name;
105
112
  const needsExplicitVersioning = data.isVersioning && !data.isObjectLockEnabled;
106
113
  const needsRetentionConfig = data.isObjectLockEnabled && data.isDefaultRetentionEnabled;
114
+ const needsEncryption = data.isEncryptionEnabled;
107
115
  createBucket({
108
116
  Bucket: bucketName,
109
117
  ObjectLockEnabledForBucket: data.isObjectLockEnabled || void 0
@@ -112,41 +120,65 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
112
120
  if (needsExplicitVersioning) setBucketVersioning({
113
121
  Bucket: bucketName,
114
122
  VersioningConfiguration: {
115
- Status: "Enabled"
123
+ Status: 'Enabled'
116
124
  }
117
125
  }, {
118
- onSuccess: ()=>handleSuccess(bucketName),
119
- onError: (error)=>handleError(error, "enable versioning")
126
+ onSuccess: ()=>{
127
+ if (needsEncryption) applyEncryption(bucketName);
128
+ else handleSuccess(bucketName);
129
+ },
130
+ onError: (error)=>handleError(error, 'enable versioning')
120
131
  });
121
132
  else if (needsRetentionConfig) {
122
133
  const retentionConfig = {
123
134
  Bucket: bucketName,
124
135
  ObjectLockConfiguration: {
125
- ObjectLockEnabled: "Enabled",
136
+ ObjectLockEnabled: 'Enabled',
126
137
  Rule: {
127
138
  DefaultRetention: {
128
139
  Mode: data.retentionMode,
129
- Days: "DAYS" === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0,
130
- Years: "YEARS" === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0
140
+ Days: 'DAYS' === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0,
141
+ Years: 'YEARS' === data.retentionPeriodFrequencyChoice ? data.retentionPeriod : void 0
131
142
  }
132
143
  }
133
144
  }
134
145
  };
135
146
  setObjectLockConfig(retentionConfig, {
136
- onSuccess: ()=>handleSuccess(bucketName),
137
- onError: (error)=>handleError(error, "configure object lock retention")
147
+ onSuccess: ()=>{
148
+ if (needsEncryption) applyEncryption(bucketName);
149
+ else handleSuccess(bucketName);
150
+ },
151
+ onError: (error)=>handleError(error, 'configure object lock retention')
138
152
  });
139
- } else handleSuccess(bucketName);
153
+ } else if (needsEncryption) applyEncryption(bucketName);
154
+ else handleSuccess(bucketName);
140
155
  },
141
- onError: (error)=>handleError(error, "create bucket")
156
+ onError: (error)=>handleError(error, 'create bucket')
157
+ });
158
+ };
159
+ const applyEncryption = (bucketName)=>{
160
+ setBucketEncryption({
161
+ Bucket: bucketName,
162
+ ServerSideEncryptionConfiguration: {
163
+ Rules: [
164
+ {
165
+ ApplyServerSideEncryptionByDefault: {
166
+ SSEAlgorithm: 'AES256'
167
+ }
168
+ }
169
+ ]
170
+ }
171
+ }, {
172
+ onSuccess: ()=>handleSuccess(bucketName),
173
+ onError: (error)=>handleError(error, 'enable bucket encryption')
142
174
  });
143
175
  };
144
176
  return /*#__PURE__*/ jsx(FormProvider, {
145
177
  ...useFormMethods,
146
178
  children: /*#__PURE__*/ jsxs(Form, {
147
179
  layout: {
148
- kind: "page",
149
- title: "Create a New Bucket",
180
+ kind: 'page',
181
+ title: 'Create a New Bucket',
150
182
  subTitle
151
183
  },
152
184
  requireMode: "partial",
@@ -174,7 +206,9 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
174
206
  children: [
175
207
  /*#__PURE__*/ jsx(FormSection, {
176
208
  forceLabelWidth: convertRemToPixels(17.5),
177
- children: /*#__PURE__*/ jsxs(Fragment, {
209
+ children: /*#__PURE__*/ jsxs(Stack, {
210
+ direction: "vertical",
211
+ gap: "r16",
178
212
  children: [
179
213
  /*#__PURE__*/ jsx(FormGroup, {
180
214
  id: "name",
@@ -184,7 +218,7 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
184
218
  content: /*#__PURE__*/ jsx(Input, {
185
219
  id: "name",
186
220
  autoFocus: true,
187
- ...register("name")
221
+ ...register('name')
188
222
  }),
189
223
  labelHelpTooltip: /*#__PURE__*/ jsxs("ul", {
190
224
  children: [
@@ -200,9 +234,20 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
200
234
  ]
201
235
  }),
202
236
  helpErrorPosition: "bottom",
203
- error: errors.name ? errors.name?.type === "string.pattern.base" ? bucketErrorMessage : errors.name?.message : void 0
237
+ error: errors.name ? errors.name?.type === 'string.pattern.base' ? bucketErrorMessage : errors.name?.message : void 0
204
238
  }),
205
239
  children,
240
+ s3Capabilities?.bucketEncryption && /*#__PURE__*/ jsx(FormGroup, {
241
+ id: "isEncryptionEnabled",
242
+ label: "Encryption",
243
+ labelHelpTooltip: "Objects stored in this bucket will be automatically encrypted.",
244
+ helpErrorPosition: "bottom",
245
+ content: /*#__PURE__*/ jsx(Checkbox, {
246
+ id: "isEncryptionEnabled",
247
+ label: isEncryptionEnabled ? 'Enabled' : 'Disabled',
248
+ ...register('isEncryptionEnabled')
249
+ })
250
+ }),
206
251
  /*#__PURE__*/ jsx(FormGroup, {
207
252
  id: "isVersioning",
208
253
  label: "Versioning",
@@ -217,12 +262,13 @@ const BucketCreate = ({ subTitle, validationSchema, validationContext, defaultVa
217
262
  })
218
263
  ]
219
264
  }),
220
- help: isObjectLockEnabled ? "Automatically activated when Object-lock is Enabled" : void 0,
265
+ help: isObjectLockEnabled ? 'Automatically activated when Object-lock is Enabled' : void 0,
221
266
  helpErrorPosition: "bottom",
222
267
  content: /*#__PURE__*/ jsx(Checkbox, {
223
268
  id: "isVersioning",
269
+ label: isVersioning ? 'Enabled' : 'Disabled',
224
270
  disabled: isObjectLockEnabled,
225
- ...register("isVersioning")
271
+ ...register('isVersioning')
226
272
  })
227
273
  })
228
274
  ]
@@ -1 +1,43 @@
1
+ import { useDataBrowserNavigate } from '../../hooks/useDataBrowserNavigate';
2
+ interface BucketDetailsContextValue {
3
+ bucketName: string;
4
+ navigate: ReturnType<typeof useDataBrowserNavigate>;
5
+ }
6
+ /**
7
+ * Context for BucketDetails component.
8
+ *
9
+ * **Important**: Always use `useBucketDetailsContext()` hook instead of accessing this context directly.
10
+ * The hook provides proper error handling if the context is not available.
11
+ *
12
+ * This context is exported for testing purposes only.
13
+ */
14
+ export declare const BucketDetailsContext: import("react").Context<BucketDetailsContextValue | null>;
15
+ export declare function useBucketDetailsContext(): BucketDetailsContextValue;
16
+ declare const OverviewTab: React.FC;
17
+ declare const LifecycleTab: React.FC;
18
+ declare const ReplicationTab: React.FC;
19
+ declare const NotificationTab: React.FC;
20
+ interface CustomTabProps {
21
+ config: {
22
+ id: string;
23
+ title: string;
24
+ path?: string;
25
+ withoutPadding?: boolean;
26
+ render: () => React.ReactNode;
27
+ };
28
+ }
29
+ declare const CustomTab: React.FC<CustomTabProps>;
30
+ interface BucketDetailsProps {
31
+ children?: React.ReactNode;
32
+ }
33
+ declare const BucketDetailsRoot: React.FC<BucketDetailsProps>;
1
34
  export declare function BucketDetails(): import("react/jsx-runtime").JSX.Element;
35
+ type BucketDetailsComponent = typeof BucketDetailsRoot & {
36
+ OverviewTab: typeof OverviewTab;
37
+ LifecycleTab: typeof LifecycleTab;
38
+ ReplicationTab: typeof ReplicationTab;
39
+ NotificationTab: typeof NotificationTab;
40
+ CustomTab: typeof CustomTab;
41
+ };
42
+ declare const BucketDetailsCompound: BucketDetailsComponent;
43
+ export { BucketDetailsCompound };