@scality/data-browser-library 1.0.0-preview.11 → 1.0.0-preview.15

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 (212) hide show
  1. package/dist/components/DataBrowserUI.d.ts +27 -0
  2. package/dist/components/DataBrowserUI.js +88 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketCreate.test.js +102 -102
  6. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketDetails.test.js +420 -0
  8. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
  9. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  10. package/dist/components/__tests__/BucketList.test.js +463 -239
  11. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
  12. package/dist/components/__tests__/BucketOverview.test.js +273 -261
  13. package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
  14. package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
  15. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  16. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  17. package/dist/components/__tests__/DeleteBucketButton.test.js +62 -62
  18. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  19. package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
  20. package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
  21. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  22. package/dist/components/__tests__/ObjectList.test.js +739 -238
  23. package/dist/components/__tests__/UploadButton.test.js +45 -45
  24. package/dist/components/buckets/BucketCreate.d.ts +2 -2
  25. package/dist/components/buckets/BucketCreate.js +41 -41
  26. package/dist/components/buckets/BucketDetails.d.ts +40 -0
  27. package/dist/components/buckets/BucketDetails.js +208 -88
  28. package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
  29. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  30. package/dist/components/buckets/BucketLifecycleList.js +46 -46
  31. package/dist/components/buckets/BucketList.d.ts +7 -8
  32. package/dist/components/buckets/BucketList.js +156 -100
  33. package/dist/components/buckets/BucketLocation.js +3 -3
  34. package/dist/components/buckets/BucketOverview.d.ts +7 -1
  35. package/dist/components/buckets/BucketOverview.js +366 -182
  36. package/dist/components/buckets/BucketPage.js +20 -16
  37. package/dist/components/buckets/BucketPolicyButton.js +2 -2
  38. package/dist/components/buckets/BucketPolicyPage.js +27 -25
  39. package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
  40. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  41. package/dist/components/buckets/BucketReplicationList.js +41 -41
  42. package/dist/components/buckets/BucketVersioning.js +13 -10
  43. package/dist/components/buckets/DeleteBucketButton.js +5 -5
  44. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  45. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
  46. package/dist/components/buckets/EmptyBucketButton.js +20 -20
  47. package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
  48. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  49. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  50. package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
  51. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
  52. package/dist/components/buckets/notifications/EventsSection.js +144 -28
  53. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  54. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  55. package/dist/components/buckets/notifications/events.d.ts +71 -7
  56. package/dist/components/buckets/notifications/events.js +98 -16
  57. package/dist/components/index.d.ts +23 -21
  58. package/dist/components/index.js +4 -2
  59. package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
  60. package/dist/components/layouts/ArrowNavigation.js +22 -10
  61. package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
  62. package/dist/components/layouts/BrowserPageLayout.js +1 -1
  63. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  64. package/dist/components/objects/CreateFolderButton.js +10 -10
  65. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  66. package/dist/components/objects/DeleteObjectButton.js +20 -20
  67. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
  68. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
  69. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
  70. package/dist/components/objects/ObjectDetails/ObjectSummary.js +294 -164
  71. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
  72. package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
  73. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  74. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  75. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  76. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +813 -0
  77. package/dist/components/objects/ObjectDetails/index.d.ts +17 -1
  78. package/dist/components/objects/ObjectDetails/index.js +136 -50
  79. package/dist/components/objects/ObjectList.d.ts +11 -9
  80. package/dist/components/objects/ObjectList.js +576 -295
  81. package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
  82. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
  83. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  84. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
  85. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  86. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  87. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +50 -50
  88. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
  89. package/dist/components/objects/ObjectPage.js +5 -4
  90. package/dist/components/objects/UploadButton.d.ts +3 -3
  91. package/dist/components/objects/UploadButton.js +6 -6
  92. package/dist/components/providers/DataBrowserProvider.d.ts +15 -4
  93. package/dist/components/providers/DataBrowserProvider.js +33 -11
  94. package/dist/components/search/MetadataSearch.js +26 -25
  95. package/dist/components/search/SearchHints.js +1 -1
  96. package/dist/components/ui/ArrayFieldActions.js +4 -4
  97. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
  98. package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -1
  99. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  100. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  101. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  102. package/dist/components/ui/FilterFormSection.js +29 -29
  103. package/dist/components/ui/Search.elements.d.ts +1 -1
  104. package/dist/components/ui/Search.elements.js +7 -7
  105. package/dist/components/ui/Table.elements.js +5 -5
  106. package/dist/config/factory.d.ts +23 -10
  107. package/dist/config/factory.js +22 -7
  108. package/dist/config/types.d.ts +134 -0
  109. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  110. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  111. package/dist/hooks/__tests__/useISVBucketDetection.test.js +41 -41
  112. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
  113. package/dist/hooks/bucketConfiguration.d.ts +1 -1
  114. package/dist/hooks/bucketConfiguration.js +48 -48
  115. package/dist/hooks/bucketOperations.d.ts +1 -1
  116. package/dist/hooks/bucketOperations.js +6 -6
  117. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
  118. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
  119. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
  120. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
  121. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
  122. package/dist/hooks/factories/index.d.ts +4 -4
  123. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  124. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
  125. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  126. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  127. package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
  128. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  129. package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
  130. package/dist/hooks/index.d.ts +14 -13
  131. package/dist/hooks/index.js +2 -1
  132. package/dist/hooks/loginOperations.d.ts +1 -1
  133. package/dist/hooks/loginOperations.js +1 -1
  134. package/dist/hooks/objectOperations.d.ts +2 -2
  135. package/dist/hooks/objectOperations.js +49 -49
  136. package/dist/hooks/presignedOperations.d.ts +2 -2
  137. package/dist/hooks/presignedOperations.js +3 -3
  138. package/dist/hooks/useBatchObjectLegalHold.js +7 -4
  139. package/dist/hooks/useDataBrowserNavigate.d.ts +14 -0
  140. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  141. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  142. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  143. package/dist/hooks/useEmptyBucket.js +10 -10
  144. package/dist/hooks/useISVBucketDetection.js +3 -3
  145. package/dist/hooks/useIsBucketEmpty.js +4 -4
  146. package/dist/hooks/useLoginMutation.d.ts +1 -1
  147. package/dist/hooks/useLoginMutation.js +1 -1
  148. package/dist/hooks/useS3Client.d.ts +5 -0
  149. package/dist/hooks/useS3Client.js +3 -2
  150. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  151. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  152. package/dist/index.d.ts +6 -6
  153. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  154. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  155. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  156. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  157. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  158. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  159. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  160. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  161. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  162. package/dist/test/msw/handlers/headObject.js +31 -13
  163. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  164. package/dist/test/msw/handlers/listBuckets.js +5 -3
  165. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  166. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  167. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  168. package/dist/test/msw/handlers/listObjects.js +35 -23
  169. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  170. package/dist/test/msw/handlers/objectLegalHold.js +31 -16
  171. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  172. package/dist/test/msw/handlers/objectRetention.js +31 -17
  173. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  174. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  175. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  176. package/dist/test/msw/handlers/putObject.js +27 -12
  177. package/dist/test/msw/handlers.d.ts +3 -3
  178. package/dist/test/msw/handlers.js +72 -49
  179. package/dist/test/msw/index.d.ts +2 -2
  180. package/dist/test/msw/server.d.ts +1 -1
  181. package/dist/test/msw/server.js +1 -1
  182. package/dist/test/msw/utils.js +2 -2
  183. package/dist/test/setup.d.ts +1 -1
  184. package/dist/test/setup.js +19 -19
  185. package/dist/test/testUtils.d.ts +70 -12
  186. package/dist/test/testUtils.js +160 -75
  187. package/dist/test/utils/errorHandling.test.js +119 -119
  188. package/dist/types/index.d.ts +8 -31
  189. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  190. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
  191. package/dist/utils/constants.d.ts +7 -0
  192. package/dist/utils/constants.js +16 -9
  193. package/dist/utils/deletion/index.d.ts +2 -2
  194. package/dist/utils/deletion/messages.d.ts +1 -1
  195. package/dist/utils/deletion/messages.js +4 -4
  196. package/dist/utils/errorHandling.d.ts +3 -3
  197. package/dist/utils/errorHandling.js +6 -6
  198. package/dist/utils/hooks.js +8 -8
  199. package/dist/utils/index.d.ts +5 -4
  200. package/dist/utils/index.js +2 -0
  201. package/dist/utils/proxyMiddleware.d.ts +1 -1
  202. package/dist/utils/proxyMiddleware.js +6 -11
  203. package/dist/utils/s3Client.d.ts +2 -2
  204. package/dist/utils/s3Client.js +1 -1
  205. package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
  206. package/dist/utils/s3ConfigIdentifier.js +55 -0
  207. package/dist/utils/s3RuleUtils.d.ts +5 -5
  208. package/dist/utils/s3RuleUtils.js +17 -17
  209. package/dist/utils/useFeatures.js +1 -1
  210. package/dist/utils/useSupportedNotificationEvents.d.ts +6 -0
  211. package/dist/utils/useSupportedNotificationEvents.js +7 -0
  212. package/package.json +3 -3
@@ -1,106 +1,226 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { useQueryParams } from "../../utils/hooks.js";
3
- import { useNavigate, useParams } from "react-router-dom";
2
+ import { createContext, memo, useCallback, useContext, useMemo } from "react";
3
+ import { useParams } from "react-router";
4
4
  import { Tabs } from "@scality/core-ui/dist/next";
5
- import { BucketOverview } from "./BucketOverview.js";
6
- import { DeleteBucketButton } from "./DeleteBucketButton.js";
7
- import { EmptyBucketButton } from "./EmptyBucketButton.js";
8
- import { BucketLifecycleList } from "./BucketLifecycleList.js";
9
- import { BucketReplicationList } from "./BucketReplicationList.js";
5
+ import { useDataBrowserUICustomization } from "../../contexts/DataBrowserUICustomizationContext.js";
10
6
  import { useGetBucketLifecycle, useGetBucketReplication } from "../../hooks/bucketConfiguration.js";
7
+ import { BUCKET_ROUTES } from "../../utils/constants.js";
11
8
  import { isNotFoundError } from "../../utils/errorHandling.js";
9
+ import { BucketLifecycleList } from "./BucketLifecycleList.js";
10
+ import { BucketOverview } from "./BucketOverview.js";
11
+ import { BucketReplicationList } from "./BucketReplicationList.js";
12
12
  import { BucketVersioning } from "./BucketVersioning.js";
13
- function BucketDetails() {
14
- const query = useQueryParams();
15
- const queryObject = Object.fromEntries(query.entries());
16
- const { bucketName } = useParams();
17
- const navigate = useNavigate();
13
+ import { DeleteBucketButton } from "./DeleteBucketButton.js";
14
+ import { EmptyBucketButton } from "./EmptyBucketButton.js";
15
+ import { useDataBrowserNavigate } from "../../hooks/useDataBrowserNavigate.js";
16
+ const BucketDetailsContext = /*#__PURE__*/ createContext(null);
17
+ function useBucketDetailsContext() {
18
+ const context = useContext(BucketDetailsContext);
19
+ if (!context) throw new Error('BucketDetails components must be used within BucketDetails');
20
+ return context;
21
+ }
22
+ const getEffectiveStatus = (status, error)=>{
23
+ if (isNotFoundError(error)) return 'success';
24
+ if ('pending' === status) return 'loading';
25
+ if ('error' === status) return 'error';
26
+ return 'success';
27
+ };
28
+ const ExtraSectionContent = /*#__PURE__*/ memo(({ render })=>/*#__PURE__*/ jsx(Fragment, {
29
+ children: render()
30
+ }));
31
+ ExtraSectionContent.displayName = 'BucketDetails.ExtraSectionContent';
32
+ const OverviewTab = /*#__PURE__*/ memo(()=>{
33
+ const { bucketName, navigate } = useBucketDetailsContext();
34
+ const { extraBucketOverviewSections } = useDataBrowserUICustomization();
35
+ const renderDeleteButton = useCallback((name)=>/*#__PURE__*/ jsx(DeleteBucketButton, {
36
+ bucketName: name
37
+ }), []);
38
+ const renderEmptyButton = useCallback((name)=>/*#__PURE__*/ jsx(EmptyBucketButton, {
39
+ bucketName: name
40
+ }), []);
41
+ const renderVersioning = useCallback(()=>/*#__PURE__*/ jsx(BucketVersioning, {}), []);
42
+ const handleEditPolicy = useCallback((name)=>navigate(BUCKET_ROUTES.bucketPolicy(name)), [
43
+ navigate
44
+ ]);
45
+ return /*#__PURE__*/ jsxs(BucketOverview, {
46
+ bucketName: bucketName,
47
+ children: [
48
+ /*#__PURE__*/ jsx(BucketOverview.Actions, {
49
+ renderDeleteButton: renderDeleteButton,
50
+ renderEmptyButton: renderEmptyButton
51
+ }),
52
+ /*#__PURE__*/ jsxs(BucketOverview.Sections, {
53
+ children: [
54
+ /*#__PURE__*/ jsx(BucketOverview.GeneralSection, {
55
+ renderVersioning: renderVersioning
56
+ }),
57
+ extraBucketOverviewSections?.map((section)=>/*#__PURE__*/ jsx(BucketOverview.Section, {
58
+ title: section.title,
59
+ children: /*#__PURE__*/ jsx(ExtraSectionContent, {
60
+ render: section.render
61
+ })
62
+ }, section.id)),
63
+ /*#__PURE__*/ jsx(BucketOverview.DataProtectionSection, {}),
64
+ /*#__PURE__*/ jsx(BucketOverview.PermissionsSection, {
65
+ onEditPolicy: handleEditPolicy
66
+ })
67
+ ]
68
+ })
69
+ ]
70
+ });
71
+ });
72
+ OverviewTab.displayName = 'BucketDetails.OverviewTab';
73
+ const LifecycleTab = /*#__PURE__*/ memo(()=>{
74
+ const { bucketName, navigate } = useBucketDetailsContext();
18
75
  const { data: lifecycleData, status: lifecycleStatus, error: lifecycleError } = useGetBucketLifecycle({
19
76
  Bucket: bucketName
20
77
  });
78
+ const lifecycleRules = lifecycleData?.Rules || [];
79
+ const effectiveStatus = getEffectiveStatus(lifecycleStatus, lifecycleError);
80
+ const handleCreateRule = useCallback(()=>navigate(BUCKET_ROUTES.lifecycleCreate(bucketName)), [
81
+ navigate,
82
+ bucketName
83
+ ]);
84
+ const handleEditRule = useCallback((ruleId)=>navigate(BUCKET_ROUTES.lifecycleEdit(bucketName, ruleId)), [
85
+ navigate,
86
+ bucketName
87
+ ]);
88
+ return /*#__PURE__*/ jsx(BucketLifecycleList, {
89
+ bucketName: bucketName,
90
+ lifecycleRules: lifecycleRules,
91
+ lifecycleStatus: effectiveStatus,
92
+ onCreateRule: handleCreateRule,
93
+ onEditRule: handleEditRule
94
+ });
95
+ });
96
+ LifecycleTab.displayName = 'BucketDetails.LifecycleTab';
97
+ const ReplicationTab = /*#__PURE__*/ memo(()=>{
98
+ const { bucketName, navigate } = useBucketDetailsContext();
21
99
  const { data: replicationData, status: replicationStatus, error: replicationError } = useGetBucketReplication({
22
100
  Bucket: bucketName
23
101
  });
24
- const lifecycleRules = lifecycleData?.Rules || [];
25
102
  const replicationRules = replicationData?.ReplicationConfiguration?.Rules || [];
26
- const replicationRole = replicationData?.ReplicationConfiguration?.Role || "";
27
- const effectiveLifecycleStatus = isNotFoundError(lifecycleError) ? "success" : "pending" === lifecycleStatus ? "loading" : "error" === lifecycleStatus ? "error" : "success";
28
- const effectiveReplicationStatus = isNotFoundError(replicationError) ? "success" : "pending" === replicationStatus ? "loading" : "error" === replicationStatus ? "error" : "success";
103
+ const replicationRole = replicationData?.ReplicationConfiguration?.Role || '';
104
+ const effectiveStatus = getEffectiveStatus(replicationStatus, replicationError);
105
+ const handleCreateRule = useCallback(()=>navigate(BUCKET_ROUTES.replicationCreate(bucketName)), [
106
+ navigate,
107
+ bucketName
108
+ ]);
109
+ const handleEditRule = useCallback((ruleId)=>navigate(BUCKET_ROUTES.replicationEdit(bucketName, ruleId)), [
110
+ navigate,
111
+ bucketName
112
+ ]);
113
+ return /*#__PURE__*/ jsx(BucketReplicationList, {
114
+ bucketName: bucketName,
115
+ replicationRules: replicationRules,
116
+ replicationRole: replicationRole,
117
+ replicationStatus: effectiveStatus,
118
+ onCreateRule: handleCreateRule,
119
+ onEditRule: handleEditRule
120
+ });
121
+ });
122
+ ReplicationTab.displayName = 'BucketDetails.ReplicationTab';
123
+ const CustomTab = ({ config })=>/*#__PURE__*/ jsx(Fragment, {
124
+ children: config.render()
125
+ });
126
+ CustomTab.displayName = 'BucketDetails.CustomTab';
127
+ const BucketDetailsRoot = ({ children })=>{
128
+ const { bucketName } = useParams();
129
+ const navigate = useDataBrowserNavigate();
130
+ const contextValue = useMemo(()=>({
131
+ bucketName: bucketName || '',
132
+ navigate
133
+ }), [
134
+ bucketName,
135
+ navigate
136
+ ]);
29
137
  if (!bucketName) return /*#__PURE__*/ jsx("div", {
30
138
  children: "No bucket selected"
31
139
  });
32
- return /*#__PURE__*/ jsx(Fragment, {
33
- children: /*#__PURE__*/ jsxs(Tabs, {
34
- children: [
35
- /*#__PURE__*/ jsx(Tabs.Tab, {
36
- label: "Overview",
37
- path: "",
38
- query: {
39
- ...queryObject,
40
- tab: ""
41
- },
42
- children: /*#__PURE__*/ jsxs(BucketOverview, {
43
- bucketName: bucketName,
44
- children: [
45
- /*#__PURE__*/ jsx(BucketOverview.Actions, {
46
- renderDeleteButton: ()=>/*#__PURE__*/ jsx(DeleteBucketButton, {
47
- bucketName: bucketName
48
- }),
49
- renderEmptyButton: ()=>/*#__PURE__*/ jsx(EmptyBucketButton, {
50
- bucketName: bucketName
51
- })
52
- }),
53
- /*#__PURE__*/ jsxs(BucketOverview.Sections, {
54
- children: [
55
- /*#__PURE__*/ jsx(BucketOverview.GeneralSection, {
56
- renderVersioning: ()=>/*#__PURE__*/ jsx(BucketVersioning, {})
57
- }),
58
- /*#__PURE__*/ jsx(BucketOverview.DataProtectionSection, {}),
59
- /*#__PURE__*/ jsx(BucketOverview.PermissionsSection, {
60
- onEditPolicy: ()=>{
61
- navigate(`/buckets/${bucketName}/policy`);
62
- }
63
- })
64
- ]
65
- })
66
- ]
67
- })
68
- }),
69
- /*#__PURE__*/ jsx(Tabs.Tab, {
70
- label: "Lifecycle",
71
- path: "",
72
- query: {
73
- ...queryObject,
74
- tab: "lifecycle"
75
- },
76
- withoutPadding: true,
77
- children: /*#__PURE__*/ jsx(BucketLifecycleList, {
78
- bucketName: bucketName,
79
- lifecycleRules: lifecycleRules,
80
- lifecycleStatus: effectiveLifecycleStatus,
81
- onCreateRule: ()=>navigate(`/buckets/${bucketName}/lifecycle/create`),
82
- onEditRule: (ruleId)=>navigate(`/buckets/${bucketName}/lifecycle/edit/${encodeURIComponent(ruleId)}`)
83
- })
84
- }),
85
- /*#__PURE__*/ jsx(Tabs.Tab, {
86
- label: "Replication",
87
- path: "",
88
- query: {
89
- ...queryObject,
90
- tab: "replication"
91
- },
92
- withoutPadding: true,
93
- children: /*#__PURE__*/ jsx(BucketReplicationList, {
94
- bucketName: bucketName,
95
- replicationRules: replicationRules,
96
- replicationRole: replicationRole,
97
- replicationStatus: effectiveReplicationStatus,
98
- onCreateRule: ()=>navigate(`/buckets/${bucketName}/replication/create`),
99
- onEditRule: (ruleId)=>navigate(`/buckets/${bucketName}/replication/edit/${encodeURIComponent(ruleId)}`)
100
- })
140
+ return /*#__PURE__*/ jsx(BucketDetailsContext.Provider, {
141
+ value: contextValue,
142
+ children: children || /*#__PURE__*/ jsx(DefaultTabs, {})
143
+ });
144
+ };
145
+ BucketDetailsRoot.displayName = 'BucketDetails';
146
+ const DefaultTabs = ()=>{
147
+ const { extraBucketTabs } = useDataBrowserUICustomization();
148
+ const defaultTabsMap = useMemo(()=>({
149
+ overview: {
150
+ id: 'overview',
151
+ label: 'Overview',
152
+ path: '',
153
+ withoutPadding: false,
154
+ query: {
155
+ tab: ''
156
+ },
157
+ type: 'default',
158
+ Component: OverviewTab
159
+ },
160
+ lifecycle: {
161
+ id: 'lifecycle',
162
+ label: 'Lifecycle',
163
+ path: '',
164
+ withoutPadding: true,
165
+ query: {
166
+ tab: 'lifecycle'
167
+ },
168
+ type: 'default',
169
+ Component: LifecycleTab
170
+ },
171
+ replication: {
172
+ id: 'replication',
173
+ label: 'Replication',
174
+ path: '',
175
+ withoutPadding: true,
176
+ query: {
177
+ tab: 'replication'
178
+ },
179
+ type: 'default',
180
+ Component: ReplicationTab
181
+ }
182
+ }), []);
183
+ const allTabs = useMemo(()=>{
184
+ const customTabConfigs = extraBucketTabs ? extraBucketTabs.map((tabConfig)=>({
185
+ id: tabConfig.id,
186
+ label: tabConfig.title,
187
+ path: tabConfig.path || '',
188
+ query: {
189
+ tab: tabConfig.id
190
+ },
191
+ withoutPadding: tabConfig.withoutPadding || false,
192
+ type: 'custom',
193
+ config: tabConfig
194
+ })) : [];
195
+ const overrideIds = new Set(customTabConfigs.filter((t)=>t.id in defaultTabsMap).map((t)=>t.id));
196
+ const defaults = Object.values(defaultTabsMap).filter((tab)=>!overrideIds.has(tab.id));
197
+ return [
198
+ ...defaults,
199
+ ...customTabConfigs
200
+ ];
201
+ }, [
202
+ extraBucketTabs,
203
+ defaultTabsMap
204
+ ]);
205
+ return /*#__PURE__*/ jsx(Tabs, {
206
+ children: allTabs.map((tab)=>/*#__PURE__*/ jsx(Tabs.Tab, {
207
+ label: tab.label,
208
+ path: tab.path,
209
+ query: tab.query,
210
+ withoutPadding: tab.withoutPadding,
211
+ children: 'default' === tab.type ? /*#__PURE__*/ jsx(tab.Component, {}) : /*#__PURE__*/ jsx(CustomTab, {
212
+ config: tab.config
101
213
  })
102
- ]
103
- })
214
+ }, tab.id))
104
215
  });
216
+ };
217
+ DefaultTabs.displayName = 'BucketDetails.DefaultTabs';
218
+ function BucketDetails() {
219
+ return /*#__PURE__*/ jsx(BucketDetailsRoot, {});
105
220
  }
106
- export { BucketDetails };
221
+ const BucketDetailsCompound = BucketDetailsRoot;
222
+ BucketDetailsCompound.OverviewTab = OverviewTab;
223
+ BucketDetailsCompound.LifecycleTab = LifecycleTab;
224
+ BucketDetailsCompound.ReplicationTab = ReplicationTab;
225
+ BucketDetailsCompound.CustomTab = CustomTab;
226
+ export { BucketDetails, BucketDetailsCompound, BucketDetailsContext, useBucketDetailsContext };