@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
@@ -1,21 +1,26 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { AppContainer, Icon, Stack, TwoPanelLayout } from "@scality/core-ui";
3
3
  import { fontSize } from "@scality/core-ui/dist/style/theme";
4
- import "react";
5
4
  import styled_components from "styled-components";
5
+ import ArrowNavigation from "./ArrowNavigation.js";
6
6
  const HeadTitle = styled_components.div`
7
7
  display: flex;
8
- color: ${(props)=>props.theme.textSecondary};
8
+ color: ${(props)=>props.theme.textPrimary};
9
9
  font-size: ${fontSize.large};
10
10
  align-items: center;
11
11
  `;
12
- const BrowserPageLayout = ({ title, leftPanel, rightPanel })=>/*#__PURE__*/ jsxs(AppContainer, {
12
+ const DEFAULT_HEADER_ICON = 'Buckets';
13
+ const BrowserPageLayout = ({ title, leftPanel, rightPanel, iconName = DEFAULT_HEADER_ICON, withArrowNavigation = false, arrowNavigationPath })=>/*#__PURE__*/ jsxs(AppContainer, {
13
14
  children: [
14
15
  /*#__PURE__*/ jsx(AppContainer.OverallSummary, {
15
16
  children: /*#__PURE__*/ jsxs(Stack, {
17
+ gap: "r20",
16
18
  children: [
19
+ withArrowNavigation && arrowNavigationPath && /*#__PURE__*/ jsx(ArrowNavigation, {
20
+ path: arrowNavigationPath
21
+ }),
17
22
  /*#__PURE__*/ jsx(Icon, {
18
- name: "Account",
23
+ name: iconName,
19
24
  size: "2x",
20
25
  withWrapper: true
21
26
  }),
@@ -28,7 +33,7 @@ const BrowserPageLayout = ({ title, leftPanel, rightPanel })=>/*#__PURE__*/ jsxs
28
33
  /*#__PURE__*/ jsx(AppContainer.MainContent, {
29
34
  background: "backgroundLevel1",
30
35
  children: /*#__PURE__*/ jsx(TwoPanelLayout, {
31
- panelsRatio: "65-35",
36
+ panelsRatio: '65-35',
32
37
  leftPanel: {
33
38
  children: /*#__PURE__*/ jsx(Fragment, {
34
39
  children: leftPanel
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import type React from 'react';
2
2
  interface CreateFolderButtonProps {
3
3
  /**
4
4
  * The S3 bucket name where folder will be created
@@ -15,7 +15,7 @@ interface CreateFolderButtonProps {
15
15
  /**
16
16
  * Button variant
17
17
  */
18
- variant?: "primary" | "secondary" | "outline";
18
+ variant?: 'primary' | 'secondary' | 'outline';
19
19
  /**
20
20
  * Called when folder creation is successful
21
21
  */
@@ -1,22 +1,22 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { useCallback, useState } from "react";
3
2
  import { Icon, InfoMessage, Modal, Stack, Wrap, spacing } from "@scality/core-ui";
4
3
  import { Button, Input } from "@scality/core-ui/dist/next";
5
- import { useCreateFolder } from "../../hooks/index.js";
4
+ import { useCallback, useState } from "react";
6
5
  import styled_components from "styled-components";
6
+ import { useCreateFolder } from "../../hooks/index.js";
7
7
  const Description = styled_components.div`
8
8
  margin-top: ${spacing.r16};
9
9
  width: 20.5rem;
10
10
  `;
11
- const CreateFolderButton = ({ bucket, prefix = "", label = "Folder", variant = "secondary", onFolderSuccess, onFolderError })=>{
11
+ const CreateFolderButton = ({ bucket, prefix = '', label = 'Folder', variant = 'secondary', onFolderSuccess, onFolderError })=>{
12
12
  const [isModalOpen, setIsModalOpen] = useState(false);
13
- const [folderName, setFolderName] = useState("");
13
+ const [folderName, setFolderName] = useState('');
14
14
  const createFolderMutation = useCreateFolder();
15
15
  const openModal = useCallback(()=>{
16
16
  setIsModalOpen(true);
17
17
  }, []);
18
18
  const closeModal = useCallback(()=>{
19
- setFolderName("");
19
+ setFolderName('');
20
20
  setIsModalOpen(false);
21
21
  }, []);
22
22
  const handleSave = useCallback(()=>{
@@ -25,11 +25,11 @@ const CreateFolderButton = ({ bucket, prefix = "", label = "Folder", variant = "
25
25
  createFolderMutation.mutate({
26
26
  Bucket: bucket,
27
27
  Key: folderKey,
28
- Body: ""
28
+ Body: ''
29
29
  }, {
30
30
  onSuccess: ()=>{
31
31
  onFolderSuccess?.(folderName);
32
- setFolderName("");
32
+ setFolderName('');
33
33
  setIsModalOpen(false);
34
34
  },
35
35
  onError: (error)=>{
@@ -47,8 +47,8 @@ const CreateFolderButton = ({ bucket, prefix = "", label = "Folder", variant = "
47
47
  const handleChange = useCallback((e)=>{
48
48
  setFolderName(e.target.value);
49
49
  }, []);
50
- const hasInvalidFormat = folderName.startsWith("/");
51
- const isEmpty = "" === folderName.trim();
50
+ const hasInvalidFormat = folderName.startsWith('/');
51
+ const isEmpty = '' === folderName.trim();
52
52
  const isLoading = createFolderMutation.isPending;
53
53
  return /*#__PURE__*/ jsxs(Fragment, {
54
54
  children: [
@@ -75,11 +75,11 @@ const CreateFolderButton = ({ bucket, prefix = "", label = "Folder", variant = "
75
75
  }),
76
76
  /*#__PURE__*/ jsx(Button, {
77
77
  disabled: isLoading || isEmpty || hasInvalidFormat,
78
- variant: "secondary",
78
+ variant: "primary",
79
79
  onClick: handleSave,
80
- label: "Save",
80
+ label: 'Save',
81
81
  tooltip: hasInvalidFormat ? {
82
- overlay: "The folder name is not valid."
82
+ overlay: 'The folder name is not valid.'
83
83
  } : void 0
84
84
  })
85
85
  ]
@@ -1,4 +1,4 @@
1
- import { TableItem } from "./ObjectList";
1
+ import type { TableItem } from './ObjectList';
2
2
  export type Objects = TableItem[];
3
3
  interface DeleteObjectButtonProps {
4
4
  objects: Objects;
@@ -1,41 +1,39 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
3
2
  import { Banner, Icon, Modal, PrettyBytes, Stack, Text, Wrap, spacing, useToast } from "@scality/core-ui";
4
3
  import { Box, Button } from "@scality/core-ui/dist/next";
4
+ import { useCallback, useEffect, useState } from "react";
5
5
  import { useDeleteObjects, useGetBucketVersioning } from "../../hooks/index.js";
6
6
  import { getDeletionMessages } from "../../utils/deletion/index.js";
7
7
  import { DeleteObjectModalContent } from "../ui/DeleteObjectModalContent.js";
8
8
  const Title = ({ objects, isCurrentSelectionPermanentlyDeleted })=>{
9
- const foldersSize = objects.filter((object)=>"folder" === object.type).length;
9
+ const foldersSize = objects.filter((object)=>'folder' === object.type).length;
10
10
  const objectsSize = objects.length - foldersSize;
11
11
  if (0 === objects.length) return null;
12
12
  return /*#__PURE__*/ jsxs(Text, {
13
13
  children: [
14
- "Do you want to",
15
- " ",
14
+ "Do you want to ",
16
15
  /*#__PURE__*/ jsxs("strong", {
17
16
  children: [
18
17
  " ",
19
- isCurrentSelectionPermanentlyDeleted ? "permanently" : "",
18
+ isCurrentSelectionPermanentlyDeleted ? 'permanently' : '',
20
19
  " "
21
20
  ]
22
21
  }),
23
- " ",
24
- "delete the selected",
25
- " ",
22
+ " delete the selected",
23
+ ' ',
26
24
  objectsSize > 0 && /*#__PURE__*/ jsxs(Fragment, {
27
25
  children: [
28
26
  objectsSize,
29
- " ",
30
- isCurrentSelectionPermanentlyDeleted ? `object version${objectsSize > 1 ? "s" : ""}` : `object${objectsSize > 1 ? "s" : ""}`,
31
- foldersSize > 0 && " and "
27
+ ' ',
28
+ isCurrentSelectionPermanentlyDeleted ? `object version${objectsSize > 1 ? 's' : ''}` : `object${objectsSize > 1 ? 's' : ''}`,
29
+ foldersSize > 0 && ' and '
32
30
  ]
33
31
  }),
34
32
  foldersSize > 0 && /*#__PURE__*/ jsxs(Fragment, {
35
33
  children: [
36
34
  foldersSize,
37
35
  " folder",
38
- foldersSize > 1 ? "s" : ""
36
+ foldersSize > 1 ? 's' : ''
39
37
  ]
40
38
  }),
41
39
  "?"
@@ -50,7 +48,7 @@ const DeleteObjectButton = ({ objects, bucketName })=>{
50
48
  });
51
49
  const { mutate: deleteObjects, status: deleteObjectsStatus } = useDeleteObjects();
52
50
  const { showToast } = useToast();
53
- const isVersioningEnabled = versioningData?.Status === "Enabled";
51
+ const isVersioningEnabled = versioningData?.Status === 'Enabled';
54
52
  const isCurrentSelectionPermanentlyDeleted = !isVersioningEnabled || selectedObjects.some((object)=>!!object.VersionId);
55
53
  const { info: notificationText } = getDeletionMessages({
56
54
  numberOfObjects: selectedObjects.length,
@@ -64,14 +62,14 @@ const DeleteObjectButton = ({ objects, bucketName })=>{
64
62
  setIsModalOpen(false);
65
63
  }, []);
66
64
  const deleteSelectedFiles = useCallback(()=>{
67
- const objectsToDelete = selectedObjects.filter((object)=>"object" === object.type && object.Key).map((object)=>{
65
+ const objectsToDelete = selectedObjects.filter((object)=>'object' === object.type && object.Key).map((object)=>{
68
66
  const deleteItem = {
69
67
  Key: object.Key
70
68
  };
71
- if (object.VersionId && "string" == typeof object.VersionId) deleteItem.VersionId = object.VersionId;
69
+ if (object.VersionId && 'string' == typeof object.VersionId) deleteItem.VersionId = object.VersionId;
72
70
  return deleteItem;
73
71
  });
74
- const foldersToDelete = selectedObjects.filter((object)=>"folder" === object.type && object.Key).map((object)=>({
72
+ const foldersToDelete = selectedObjects.filter((object)=>'folder' === object.type && object.Key).map((object)=>({
75
73
  Key: object.Key
76
74
  }));
77
75
  deleteObjects({
@@ -86,16 +84,16 @@ const DeleteObjectButton = ({ objects, bucketName })=>{
86
84
  onSuccess: ()=>{
87
85
  showToast({
88
86
  open: true,
89
- message: "Objects deleted successfully",
90
- status: "success"
87
+ message: 'Objects deleted successfully',
88
+ status: 'success'
91
89
  });
92
90
  setIsModalOpen(false);
93
91
  },
94
92
  onError: (error)=>{
95
93
  showToast({
96
94
  open: true,
97
- message: error instanceof Error ? error.message : "Objects deleted failed",
98
- status: "error"
95
+ message: error instanceof Error ? error.message : 'Objects deleted failed',
96
+ status: 'error'
99
97
  });
100
98
  setIsModalOpen(false);
101
99
  }
@@ -138,7 +136,7 @@ const DeleteObjectButton = ({ objects, bucketName })=>{
138
136
  label: "Cancel"
139
137
  }),
140
138
  /*#__PURE__*/ jsx(Button, {
141
- isLoading: "pending" === deleteObjectsStatus,
139
+ isLoading: 'pending' === deleteObjectsStatus,
142
140
  id: "object-delete-delete-button",
143
141
  variant: "danger",
144
142
  onClick: deleteSelectedFiles,
@@ -0,0 +1,7 @@
1
+ interface GetPresignedUrlButtonProps {
2
+ bucketName: string;
3
+ objectKey: string;
4
+ versionId?: string;
5
+ }
6
+ export declare const GetPresignedUrlButton: ({ bucketName, objectKey, versionId }: GetPresignedUrlButtonProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default GetPresignedUrlButton;
@@ -0,0 +1,255 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { FormattedDateTime, Icon, Modal, Text, TextArea, Wrap, spacing, useToast } from "@scality/core-ui";
3
+ import { CopyButton } from "@scality/core-ui/dist/components/buttonv2/CopyButton.component";
4
+ import { Box, Button, Input } from "@scality/core-ui/dist/next";
5
+ import { useCallback, useState } from "react";
6
+ import { useGetPresignedDownload } from "../../hooks/index.js";
7
+ const MAX_SECONDS = 604800;
8
+ const GetPresignedUrlButton = ({ bucketName, objectKey, versionId })=>{
9
+ const [isModalOpen, setIsModalOpen] = useState(false);
10
+ const [days, setDays] = useState(7);
11
+ const [hours, setHours] = useState(0);
12
+ const [minutes, setMinutes] = useState(0);
13
+ const [generatedUrl, setGeneratedUrl] = useState(null);
14
+ const { mutateAsync: getPresignedDownload, isPending } = useGetPresignedDownload();
15
+ const { showToast } = useToast();
16
+ const openModal = ()=>{
17
+ setIsModalOpen(true);
18
+ };
19
+ const closeModal = ()=>{
20
+ setIsModalOpen(false);
21
+ setGeneratedUrl(null);
22
+ setDays(7);
23
+ setHours(0);
24
+ setMinutes(0);
25
+ };
26
+ const totalSeconds = 86400 * days + 3600 * hours + 60 * minutes;
27
+ const isValidExpiration = totalSeconds > 0 && totalSeconds <= MAX_SECONDS;
28
+ const handleDaysChange = useCallback((e)=>{
29
+ const value = Math.min(7, Math.max(0, parseInt(e.target.value, 10) || 0));
30
+ setDays(value);
31
+ if (7 === value) {
32
+ setHours(0);
33
+ setMinutes(0);
34
+ }
35
+ }, []);
36
+ const handleHoursChange = useCallback((e)=>{
37
+ if (7 === days) return;
38
+ const value = Math.min(23, Math.max(0, parseInt(e.target.value, 10) || 0));
39
+ setHours(value);
40
+ }, [
41
+ days
42
+ ]);
43
+ const handleMinutesChange = useCallback((e)=>{
44
+ if (7 === days) return;
45
+ const value = Math.min(59, Math.max(0, parseInt(e.target.value, 10) || 0));
46
+ setMinutes(value);
47
+ }, [
48
+ days
49
+ ]);
50
+ const handleGenerate = useCallback(async ()=>{
51
+ if (!isValidExpiration) return;
52
+ try {
53
+ const result = await getPresignedDownload({
54
+ Bucket: bucketName,
55
+ Key: objectKey,
56
+ ...versionId && {
57
+ VersionId: versionId
58
+ },
59
+ expiresIn: totalSeconds
60
+ });
61
+ setGeneratedUrl(result.Url);
62
+ } catch (error) {
63
+ showToast({
64
+ open: true,
65
+ message: error instanceof Error ? error.message : 'Failed to generate presigned URL',
66
+ status: 'error'
67
+ });
68
+ }
69
+ }, [
70
+ bucketName,
71
+ objectKey,
72
+ versionId,
73
+ totalSeconds,
74
+ isValidExpiration,
75
+ getPresignedDownload,
76
+ showToast
77
+ ]);
78
+ const objectName = objectKey.split('/').pop() || objectKey;
79
+ const previewExpiresAt = new Date(Date.now() + 1000 * totalSeconds);
80
+ return /*#__PURE__*/ jsxs(Fragment, {
81
+ children: [
82
+ /*#__PURE__*/ jsx(Button, {
83
+ icon: /*#__PURE__*/ jsx(Icon, {
84
+ name: "Link"
85
+ }),
86
+ label: "Get pre-signed url",
87
+ variant: "outline",
88
+ onClick: openModal
89
+ }),
90
+ /*#__PURE__*/ jsx(Modal, {
91
+ footer: /*#__PURE__*/ jsxs(Wrap, {
92
+ children: [
93
+ /*#__PURE__*/ jsx(Box, {}),
94
+ /*#__PURE__*/ jsx(Button, {
95
+ variant: "outline",
96
+ onClick: closeModal,
97
+ label: "Close"
98
+ })
99
+ ]
100
+ }),
101
+ isOpen: isModalOpen,
102
+ title: "Get a pre-signed url",
103
+ children: /*#__PURE__*/ jsxs(Box, {
104
+ children: [
105
+ /*#__PURE__*/ jsx(Box, {
106
+ marginBottom: spacing.r8,
107
+ children: /*#__PURE__*/ jsx(Text, {
108
+ children: "Generate temporary access link for Object:"
109
+ })
110
+ }),
111
+ /*#__PURE__*/ jsx(Box, {
112
+ marginBottom: spacing.r36,
113
+ children: /*#__PURE__*/ jsx(Text, {
114
+ isEmphazed: true,
115
+ children: objectName
116
+ })
117
+ }),
118
+ /*#__PURE__*/ jsx(Box, {
119
+ marginBottom: spacing.r4,
120
+ children: /*#__PURE__*/ jsx(Text, {
121
+ children: "Valid for:"
122
+ })
123
+ }),
124
+ /*#__PURE__*/ jsxs(Box, {
125
+ display: "flex",
126
+ alignItems: "center",
127
+ gap: spacing.r8,
128
+ children: [
129
+ /*#__PURE__*/ jsxs(Box, {
130
+ display: "flex",
131
+ alignItems: "center",
132
+ gap: spacing.r4,
133
+ children: [
134
+ /*#__PURE__*/ jsx(Input, {
135
+ id: "presigned-days",
136
+ "aria-label": "Days",
137
+ type: "number",
138
+ value: days,
139
+ onChange: handleDaysChange,
140
+ min: 0,
141
+ max: 7,
142
+ size: "1/3"
143
+ }),
144
+ /*#__PURE__*/ jsx(Text, {
145
+ children: "day(s)"
146
+ })
147
+ ]
148
+ }),
149
+ /*#__PURE__*/ jsxs(Box, {
150
+ display: "flex",
151
+ alignItems: "center",
152
+ gap: spacing.r4,
153
+ children: [
154
+ /*#__PURE__*/ jsx(Input, {
155
+ id: "presigned-hours",
156
+ "aria-label": "Hours",
157
+ type: "number",
158
+ value: hours,
159
+ onChange: handleHoursChange,
160
+ min: 0,
161
+ max: 23,
162
+ disabled: 7 === days,
163
+ size: "1/3"
164
+ }),
165
+ /*#__PURE__*/ jsx(Text, {
166
+ children: "hour(s)"
167
+ })
168
+ ]
169
+ }),
170
+ /*#__PURE__*/ jsxs(Box, {
171
+ display: "flex",
172
+ alignItems: "center",
173
+ gap: spacing.r4,
174
+ children: [
175
+ /*#__PURE__*/ jsx(Input, {
176
+ id: "presigned-minutes",
177
+ "aria-label": "Minutes",
178
+ type: "number",
179
+ value: minutes,
180
+ onChange: handleMinutesChange,
181
+ min: 0,
182
+ max: 59,
183
+ disabled: 7 === days,
184
+ size: "1/3"
185
+ }),
186
+ /*#__PURE__*/ jsx(Text, {
187
+ children: "minute(s)"
188
+ })
189
+ ]
190
+ })
191
+ ]
192
+ }),
193
+ /*#__PURE__*/ jsx(Box, {
194
+ marginTop: spacing.r4,
195
+ children: /*#__PURE__*/ jsx(Text, {
196
+ variant: "Smaller",
197
+ color: "textSecondary",
198
+ children: "Maximum duration is 7 days."
199
+ })
200
+ }),
201
+ isValidExpiration && /*#__PURE__*/ jsx(Box, {
202
+ marginTop: spacing.r8,
203
+ children: /*#__PURE__*/ jsxs(Text, {
204
+ children: [
205
+ "Access ends on:",
206
+ ' ',
207
+ /*#__PURE__*/ jsx(Text, {
208
+ isEmphazed: true,
209
+ children: /*#__PURE__*/ jsx(FormattedDateTime, {
210
+ value: previewExpiresAt,
211
+ format: "date-time-second"
212
+ })
213
+ })
214
+ ]
215
+ })
216
+ }),
217
+ /*#__PURE__*/ jsx(Box, {
218
+ marginTop: spacing.r36,
219
+ children: /*#__PURE__*/ jsx(Button, {
220
+ isLoading: isPending,
221
+ label: generatedUrl ? 'Generate another pre-signed url' : 'Generate a pre-signed url',
222
+ variant: "primary",
223
+ onClick: handleGenerate,
224
+ disabled: isPending || !isValidExpiration
225
+ })
226
+ }),
227
+ generatedUrl && /*#__PURE__*/ jsx(Box, {
228
+ marginTop: spacing.r16,
229
+ children: /*#__PURE__*/ jsxs(Box, {
230
+ display: "flex",
231
+ alignItems: "flex-start",
232
+ gap: spacing.r8,
233
+ children: [
234
+ /*#__PURE__*/ jsx(TextArea, {
235
+ "aria-label": "Generated pre-signed URL",
236
+ readOnly: true,
237
+ value: generatedUrl,
238
+ variant: "text",
239
+ width: "100%",
240
+ height: "5rem"
241
+ }),
242
+ /*#__PURE__*/ jsx(CopyButton, {
243
+ textToCopy: generatedUrl
244
+ })
245
+ ]
246
+ })
247
+ })
248
+ ]
249
+ })
250
+ })
251
+ ]
252
+ });
253
+ };
254
+ const objects_GetPresignedUrlButton = GetPresignedUrlButton;
255
+ export { GetPresignedUrlButton, objects_GetPresignedUrlButton as default };
@@ -1,2 +1,2 @@
1
- import { ObjectCommonProps } from ".";
2
- export declare const ObjectMetadata: ({ bucketName, objectKey, versionId, }: ObjectCommonProps) => import("react/jsx-runtime").JSX.Element;
1
+ import type { ObjectCommonProps } from '.';
2
+ export declare const ObjectMetadata: ({ bucketName, objectKey, versionId }: ObjectCommonProps) => import("react/jsx-runtime").JSX.Element;