@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,42 +1,64 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { createContext, useContext } from "react";
3
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
4
- import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
5
- const DataBrowserContext = /*#__PURE__*/ createContext(null);
6
- const useDataBrowserContext = ()=>{
7
- const context = useContext(DataBrowserContext);
8
- if (!context) throw new Error("useDataBrowserContext must be used within a DataBrowserProvider component");
9
- return context;
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { CoreUiThemeProvider } from "@scality/core-ui/dist/next";
3
+ import { coreUIAvailableThemes } from "@scality/core-ui/dist/style/theme";
4
+ import { useQueryClient } from "@tanstack/react-query";
5
+ import { createContext, useCallback, useContext, useMemo } from "react";
6
+ import { ANONYMOUS_S3_CONFIG_IDENTIFIER, computeS3ConfigIdentifier } from "../../utils/s3ConfigIdentifier.js";
7
+ import { QueryProvider } from "./QueryProvider.js";
8
+ const DEFAULT_CONTEXT_VALUE = {
9
+ getS3Config: null,
10
+ s3ConfigIdentifier: ANONYMOUS_S3_CONFIG_IDENTIFIER
10
11
  };
11
- const useDataBrowserTheme = ()=>{
12
- const { theme } = useDataBrowserContext();
13
- return theme;
14
- };
15
- const defaultQueryClient = new QueryClient({
16
- defaultOptions: {
17
- queries: {
18
- staleTime: 300000,
19
- retry: 2
20
- }
21
- }
22
- });
23
- const DataBrowserProvider = ({ children, queryClient = defaultQueryClient, enableDevtools = "development" === process.env.NODE_ENV, getS3Config, theme })=>{
24
- const content = /*#__PURE__*/ jsxs(QueryClientProvider, {
25
- client: queryClient,
26
- children: [
27
- children,
28
- enableDevtools && /*#__PURE__*/ jsx(ReactQueryDevtools, {
29
- initialIsOpen: false
12
+ const DataBrowserContext = /*#__PURE__*/ createContext(DEFAULT_CONTEXT_VALUE);
13
+ const useDataBrowserContext = ()=>useContext(DataBrowserContext);
14
+ const DataBrowserProvider = ({ children, queryClient, theme, enableDevtools, getS3Config })=>{
15
+ const currentConfig = getS3Config?.();
16
+ const s3ConfigIdentifier = useMemo(()=>currentConfig ? computeS3ConfigIdentifier(currentConfig) : ANONYMOUS_S3_CONFIG_IDENTIFIER, [
17
+ currentConfig?.cacheKey,
18
+ currentConfig?.credentials?.accessKeyId,
19
+ currentConfig?.credentials?.sessionToken,
20
+ currentConfig?.region,
21
+ currentConfig?.endpoint
22
+ ]);
23
+ const contextValue = useMemo(()=>({
24
+ getS3Config: getS3Config ?? null,
25
+ s3ConfigIdentifier
26
+ }), [
27
+ getS3Config,
28
+ s3ConfigIdentifier
29
+ ]);
30
+ return /*#__PURE__*/ jsx(CoreUiThemeProvider, {
31
+ theme: theme ?? coreUIAvailableThemes.darkRebrand,
32
+ children: /*#__PURE__*/ jsx(QueryProvider, {
33
+ queryClient: queryClient,
34
+ enableDevtools: enableDevtools,
35
+ children: /*#__PURE__*/ jsx(DataBrowserContext.Provider, {
36
+ value: contextValue,
37
+ children: children
30
38
  })
31
- ]
32
- });
33
- if (getS3Config && theme) return /*#__PURE__*/ jsx(DataBrowserContext.Provider, {
34
- value: {
35
- getS3Config,
36
- theme
37
- },
38
- children: content
39
+ })
39
40
  });
40
- return content;
41
41
  };
42
- export { DataBrowserContext, DataBrowserProvider, useDataBrowserContext, useDataBrowserTheme };
42
+ const useDataBrowserConfig = ()=>{
43
+ const { getS3Config } = useDataBrowserContext();
44
+ if (!getS3Config) throw new Error("useDataBrowserConfig: S3 config not available. Ensure DataBrowserProvider has getS3Config prop set.");
45
+ return getS3Config();
46
+ };
47
+ const useInvalidateQueries = ()=>{
48
+ const { s3ConfigIdentifier } = useDataBrowserContext();
49
+ const queryClient = useQueryClient();
50
+ return useCallback((filters)=>{
51
+ const { queryKey, ...rest } = filters;
52
+ return queryClient.invalidateQueries({
53
+ ...rest,
54
+ queryKey: [
55
+ s3ConfigIdentifier,
56
+ ...queryKey
57
+ ]
58
+ });
59
+ }, [
60
+ queryClient,
61
+ s3ConfigIdentifier
62
+ ]);
63
+ };
64
+ export { DataBrowserContext, DataBrowserProvider, useDataBrowserConfig, useDataBrowserContext, useInvalidateQueries };
@@ -0,0 +1,9 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import type React from 'react';
3
+ export interface QueryProviderProps {
4
+ children: React.ReactNode;
5
+ queryClient?: QueryClient;
6
+ enableDevtools?: boolean;
7
+ }
8
+ export declare const defaultQueryClient: QueryClient;
9
+ export declare const QueryProvider: React.FC<QueryProviderProps>;
@@ -0,0 +1,21 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
+ import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
4
+ const defaultQueryClient = new QueryClient({
5
+ defaultOptions: {
6
+ queries: {
7
+ staleTime: 300000,
8
+ retry: 2
9
+ }
10
+ }
11
+ });
12
+ const QueryProvider = ({ children, queryClient = defaultQueryClient, enableDevtools = 'development' === process.env.NODE_ENV })=>/*#__PURE__*/ jsxs(QueryClientProvider, {
13
+ client: queryClient,
14
+ children: [
15
+ children,
16
+ enableDevtools && /*#__PURE__*/ jsx(ReactQueryDevtools, {
17
+ initialIsOpen: false
18
+ })
19
+ ]
20
+ });
21
+ export { QueryProvider, defaultQueryClient };
@@ -1,51 +1,52 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { usePrefixWithSlash, useQueryParams } from "../../utils/hooks.js";
2
+ import { Icon } from "@scality/core-ui";
3
+ import { Box, Button, Input } from "@scality/core-ui/dist/next";
3
4
  import { useCallback, useEffect, useRef, useState } from "react";
4
- import { useLocation, useNavigate } from "react-router-dom";
5
+ import { useLocation } from "react-router";
6
+ import { useDataBrowserNavigate } from "../../hooks/useDataBrowserNavigate.js";
7
+ import { usePrefixWithSlash, useQueryParams } from "../../utils/hooks.js";
5
8
  import { SearchContainer, SearchInputContainer, searchIcon } from "../ui/Search.elements.js";
6
- import { Box, Button, Input } from "@scality/core-ui/dist/next";
7
- import { Icon } from "@scality/core-ui";
8
9
  import { SearchHints } from "./SearchHints.js";
9
10
  const METADATA_SEARCH_HINT_ITEMS = [
10
11
  {
11
12
  label: 'files with extension ".pdf"',
12
- query: "key like /pdf$/"
13
+ query: 'key like /pdf$/'
13
14
  },
14
15
  {
15
- label: "files bigger than 1MB",
16
- query: "content-length > 1000000"
16
+ label: 'files bigger than 1MB',
17
+ query: 'content-length > 1000000'
17
18
  },
18
19
  {
19
- label: "file names that contain scality (case insensitive)",
20
- query: "key like /scality/i"
20
+ label: 'file names that contain scality (case insensitive)',
21
+ query: 'key like /scality/i'
21
22
  },
22
23
  {
23
- label: "files with metadata field color set to green",
24
+ label: 'files with metadata field color set to green',
24
25
  query: 'x-amz-meta-color="green"'
25
26
  },
26
27
  {
27
- label: "files tagged with color blue",
28
- query: "tags.color=blue"
28
+ label: 'files tagged with color blue',
29
+ query: 'tags.color=blue'
29
30
  },
30
31
  {
31
- label: "PDF files (from content-type)",
32
- query: "content-type=application/pdf"
32
+ label: 'PDF files (from content-type)',
33
+ query: 'content-type=application/pdf'
33
34
  },
34
35
  {
35
- label: "file names that contain the word Report (case sensitive)",
36
- query: "key like Report"
36
+ label: 'file names that contain the word Report (case sensitive)',
37
+ query: 'key like Report'
37
38
  },
38
39
  {
39
- label: "files waiting to be replicated",
40
+ label: 'files waiting to be replicated',
40
41
  query: 'replication-status="PENDING"'
41
42
  }
42
43
  ];
43
44
  const MetadataSearch = ({ isError })=>{
44
- const navigate = useNavigate();
45
+ const navigate = useDataBrowserNavigate();
45
46
  const location = useLocation();
46
47
  const query = useQueryParams();
47
- const searchInput = query.get("metadatasearch");
48
- const [inputText, setInputText] = useState(searchInput || "");
48
+ const searchInput = query.get('metadatasearch');
49
+ const [inputText, setInputText] = useState(searchInput || '');
49
50
  const [hintsShown, setHintsShown] = useState(false);
50
51
  const prefixWithSlash = usePrefixWithSlash();
51
52
  const inputRef = useRef(null);
@@ -54,8 +55,8 @@ const MetadataSearch = ({ isError })=>{
54
55
  e.preventDefault();
55
56
  if (!inputText || prefixWithSlash) return;
56
57
  const newQuery = new URLSearchParams(location.search);
57
- newQuery.set("metadatasearch", inputText);
58
- navigate(`${location.pathname}?${newQuery.toString()}`);
58
+ newQuery.set('metadatasearch', inputText);
59
+ navigate(`?${newQuery.toString()}`);
59
60
  }, [
60
61
  inputText,
61
62
  prefixWithSlash,
@@ -80,19 +81,19 @@ const MetadataSearch = ({ isError })=>{
80
81
  const handleClickOutside = (event)=>{
81
82
  if (hintsShown && inputRef.current && hintsRef.current && !inputRef.current.contains(event.target) && !hintsRef.current.contains(event.target)) setHintsShown(false);
82
83
  };
83
- document.addEventListener("mousedown", handleClickOutside);
84
+ document.addEventListener('mousedown', handleClickOutside);
84
85
  return ()=>{
85
- document.removeEventListener("mousedown", handleClickOutside);
86
+ document.removeEventListener('mousedown', handleClickOutside);
86
87
  };
87
88
  }, [
88
89
  hintsShown
89
90
  ]);
90
91
  const reset = useCallback(()=>{
91
92
  setHintsShown(false);
92
- setInputText("");
93
+ setInputText('');
93
94
  const newQuery = new URLSearchParams(location.search);
94
- newQuery.delete("metadatasearch");
95
- navigate(`${location.pathname}?${newQuery.toString()}`);
95
+ newQuery.delete('metadatasearch');
96
+ navigate(`?${newQuery.toString()}`);
96
97
  }, [
97
98
  location,
98
99
  navigate
@@ -135,7 +136,7 @@ const MetadataSearch = ({ isError })=>{
135
136
  name: "Close"
136
137
  }),
137
138
  tooltip: {
138
- overlay: "Reset search"
139
+ overlay: 'Reset search'
139
140
  },
140
141
  onClick: reset,
141
142
  "aria-label": "Clear search input"
@@ -17,5 +17,5 @@ const SearchHints = /*#__PURE__*/ forwardRef(({ hints, onHintClick }, ref)=>/*#_
17
17
  }, index))
18
18
  ]
19
19
  }));
20
- SearchHints.displayName = "SearchHints";
20
+ SearchHints.displayName = 'SearchHints';
21
21
  export { SearchHints };
@@ -0,0 +1,36 @@
1
+ export type ArrayFieldActionsProps = {
2
+ /**
3
+ * Callback when remove button is clicked
4
+ */
5
+ onRemove: () => void;
6
+ /**
7
+ * Callback when add button is clicked
8
+ * Only called if showAdd is true
9
+ */
10
+ onAdd: () => void;
11
+ /**
12
+ * Whether the remove button should be enabled
13
+ */
14
+ canRemove: boolean;
15
+ /**
16
+ * Whether the add button should be enabled
17
+ * @default true
18
+ */
19
+ canAdd?: boolean;
20
+ /**
21
+ * Whether to show the add button
22
+ * Typically true only for the last item in the array
23
+ */
24
+ showAdd: boolean;
25
+ /**
26
+ * Aria label for remove button
27
+ * @default "Remove"
28
+ */
29
+ removeLabel?: string;
30
+ /**
31
+ * Aria label for add button
32
+ * @default "Add"
33
+ */
34
+ addLabel?: string;
35
+ };
36
+ export declare function ArrayFieldActions({ onRemove, onAdd, canRemove, canAdd, showAdd, removeLabel, addLabel, }: ArrayFieldActionsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,43 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Icon, spacing } from "@scality/core-ui";
3
+ import { convertSizeToRem } from "@scality/core-ui/dist/components/inputv2/inputv2";
4
+ import { Box, Button } from "@scality/core-ui/dist/next";
5
+ function ArrayFieldActions({ onRemove, onAdd, canRemove, canAdd = true, showAdd, removeLabel = 'Remove', addLabel = 'Add' }) {
6
+ return /*#__PURE__*/ jsxs(Box, {
7
+ display: "flex",
8
+ width: convertSizeToRem('1/2'),
9
+ gap: spacing.r8,
10
+ justifyContent: "flex-start",
11
+ children: [
12
+ /*#__PURE__*/ jsx(Button, {
13
+ icon: /*#__PURE__*/ jsx(Icon, {
14
+ name: "Remove-minus"
15
+ }),
16
+ variant: "danger",
17
+ type: "button",
18
+ onClick: onRemove,
19
+ "aria-label": removeLabel,
20
+ disabled: !canRemove,
21
+ tooltip: {
22
+ overlay: removeLabel,
23
+ placement: 'top'
24
+ }
25
+ }),
26
+ showAdd && /*#__PURE__*/ jsx(Button, {
27
+ icon: /*#__PURE__*/ jsx(Icon, {
28
+ name: "Add-plus"
29
+ }),
30
+ variant: "outline",
31
+ type: "button",
32
+ onClick: onAdd,
33
+ "aria-label": addLabel,
34
+ tooltip: {
35
+ overlay: addLabel,
36
+ placement: 'top'
37
+ },
38
+ disabled: !canAdd
39
+ })
40
+ ]
41
+ });
42
+ }
43
+ export { ArrayFieldActions };
@@ -0,0 +1,16 @@
1
+ interface ConfirmDeleteRuleModalProps {
2
+ /** Whether the modal is open */
3
+ isOpen: boolean;
4
+ /** Rule ID to display in confirmation message */
5
+ ruleId: string;
6
+ /** Type of rule (e.g., "lifecycle", "replication", "notification") */
7
+ ruleType: 'lifecycle' | 'replication' | 'notification';
8
+ /** Whether deletion is in progress */
9
+ isDeleting: boolean;
10
+ /** Callback when user confirms deletion */
11
+ onConfirm: () => void;
12
+ /** Callback when user cancels deletion */
13
+ onCancel: () => void;
14
+ }
15
+ export declare function ConfirmDeleteRuleModal({ isOpen, ruleId, ruleType, isDeleting, onConfirm, onCancel, }: ConfirmDeleteRuleModalProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,48 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Loader, Modal, Stack, Wrap } from "@scality/core-ui";
3
+ import { Button } from "@scality/core-ui/dist/next";
4
+ function ConfirmDeleteRuleModal({ isOpen, ruleId, ruleType, isDeleting, onConfirm, onCancel }) {
5
+ const ruleTypeLabels = {
6
+ lifecycle: 'Lifecycle',
7
+ replication: 'Replication',
8
+ notification: 'Notification'
9
+ };
10
+ const ruleTypeLabel = ruleTypeLabels[ruleType];
11
+ return /*#__PURE__*/ jsxs(Modal, {
12
+ close: onCancel,
13
+ isOpen: isOpen,
14
+ footer: /*#__PURE__*/ jsxs(Wrap, {
15
+ children: [
16
+ /*#__PURE__*/ jsx("p", {}),
17
+ /*#__PURE__*/ jsxs(Stack, {
18
+ children: [
19
+ /*#__PURE__*/ jsx(Button, {
20
+ variant: "outline",
21
+ onClick: onCancel,
22
+ label: "Cancel",
23
+ disabled: isDeleting
24
+ }),
25
+ /*#__PURE__*/ jsx(Button, {
26
+ variant: "danger",
27
+ onClick: onConfirm,
28
+ icon: isDeleting && /*#__PURE__*/ jsx(Loader, {
29
+ size: "larger"
30
+ }),
31
+ label: "Delete",
32
+ disabled: isDeleting
33
+ })
34
+ ]
35
+ })
36
+ ]
37
+ }),
38
+ title: `Delete ${ruleTypeLabel} Rule`,
39
+ children: [
40
+ "Are you sure you want to delete the ",
41
+ ruleType,
42
+ ' rule "',
43
+ ruleId,
44
+ '"?'
45
+ ]
46
+ });
47
+ }
48
+ export { ConfirmDeleteRuleModal };
@@ -1,4 +1,4 @@
1
- import { Objects } from "../objects/DeleteObjectButton";
1
+ import type { Objects } from '../objects/DeleteObjectButton';
2
2
  export declare const DeleteObjectModalContent: ({ objects, onRemove, }: {
3
3
  objects: Objects;
4
4
  onRemove: (key: string) => void;
@@ -12,30 +12,30 @@ const Container = styled_components(Box)`
12
12
  const DeleteObjectModalContent = ({ objects, onRemove })=>{
13
13
  const columns = useMemo(()=>[
14
14
  {
15
- Header: "Name",
16
- accessor: "Key",
15
+ Header: 'Name',
16
+ accessor: 'Key',
17
17
  Cell: ({ value })=>/*#__PURE__*/ jsx(ConstrainedText, {
18
18
  text: value,
19
19
  lineClamp: 1
20
20
  }),
21
- id: "name"
21
+ id: 'name'
22
22
  },
23
23
  {
24
- Header: "Size",
25
- accessor: "Size",
24
+ Header: 'Size',
25
+ accessor: 'Size',
26
26
  cellStyle: {
27
- textAlign: "right"
27
+ textAlign: 'right'
28
28
  },
29
29
  Cell: ({ value })=>/*#__PURE__*/ jsx(PrettyBytes, {
30
30
  bytes: Number(value)
31
31
  }),
32
- id: "size"
32
+ id: 'size'
33
33
  },
34
34
  {
35
- Header: "",
36
- accessor: "type",
35
+ Header: '',
36
+ accessor: 'type',
37
37
  cellStyle: {
38
- width: "0.625rem"
38
+ width: '0.625rem'
39
39
  },
40
40
  Cell: (row)=>{
41
41
  const objectKey = row.row.original.Key;
@@ -52,7 +52,7 @@ const DeleteObjectModalContent = ({ objects, onRemove })=>{
52
52
  onRemove
53
53
  ]);
54
54
  const HEADER_AND_SPACING_ROWS = 3;
55
- const rowHeight = "h40";
55
+ const rowHeight = 'h40';
56
56
  const tableRowHeightInRem = tableRowHeight[rowHeight];
57
57
  return /*#__PURE__*/ jsx(Container, {
58
58
  height: `calc(${objects.length + HEADER_AND_SPACING_ROWS} * (${tableRowHeightInRem}rem + 1px))`,
@@ -62,7 +62,7 @@ const DeleteObjectModalContent = ({ objects, onRemove })=>{
62
62
  children: /*#__PURE__*/ jsx(Table.SingleSelectableContent, {
63
63
  rowHeight: "h40",
64
64
  separationLineVariant: "backgroundLevel3",
65
- selectedId: "Name",
65
+ selectedId: 'Name',
66
66
  onRowSelected: ()=>{}
67
67
  })
68
68
  })
@@ -0,0 +1,44 @@
1
+ import type { UseFormRegisterReturn } from 'react-hook-form';
2
+ export interface FilterFormValues {
3
+ filterType: 'none' | 'prefix' | 'tags' | 'and';
4
+ prefix: string;
5
+ tags: Array<{
6
+ key: string;
7
+ value: string;
8
+ }>;
9
+ }
10
+ interface FilterFormSectionProps {
11
+ filterType: string;
12
+ onFilterTypeChange: (value: string) => void;
13
+ prefixRegister: UseFormRegisterReturn;
14
+ tagFields: Array<{
15
+ id: string;
16
+ key: string;
17
+ value: string;
18
+ }>;
19
+ tagKeyRegister: (index: number) => UseFormRegisterReturn;
20
+ tagValueRegister: (index: number) => UseFormRegisterReturn;
21
+ getTagKeyValue: (index: number) => string;
22
+ getTagValueValue: (index: number) => string;
23
+ appendTag: (value: {
24
+ key: string;
25
+ value: string;
26
+ }) => void;
27
+ removeTag: (index: number) => void;
28
+ errors?: {
29
+ prefix?: {
30
+ message?: string;
31
+ };
32
+ tags?: {
33
+ message?: string;
34
+ };
35
+ };
36
+ forceLabelWidth?: number;
37
+ }
38
+ export declare function FilterFormSection({ filterType, onFilterTypeChange, prefixRegister, tagFields, tagKeyRegister, tagValueRegister, getTagKeyValue, getTagValueValue, appendTag, removeTag, errors, forceLabelWidth, }: FilterFormSectionProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare const createFilterValidationSchema: (Joi: typeof import("joi")) => {
40
+ filterType: import("joi").StringSchema<string>;
41
+ prefix: import("joi").AlternativesSchema<any>;
42
+ tags: import("joi").AlternativesSchema<any>;
43
+ };
44
+ export {};