diff --git a/models/bucket_object.go b/models/bucket_object.go
index 6d1ab1133..e8f34abc2 100644
--- a/models/bucket_object.go
+++ b/models/bucket_object.go
@@ -37,6 +37,9 @@ type BucketObject struct {
// content type
ContentType string `json:"content_type,omitempty"`
+ // etag
+ Etag string `json:"etag,omitempty"`
+
// expiration
Expiration string `json:"expiration,omitempty"`
diff --git a/portal-ui/src/icons/LegalHoldIcon.tsx b/portal-ui/src/icons/LegalHoldIcon.tsx
new file mode 100644
index 000000000..659135760
--- /dev/null
+++ b/portal-ui/src/icons/LegalHoldIcon.tsx
@@ -0,0 +1,35 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import * as React from "react";
+import { SVGProps } from "react";
+
+const LegalHoldIcon = (props: SVGProps) => (
+
+);
+
+export default LegalHoldIcon;
diff --git a/portal-ui/src/icons/MetadataIcon.tsx b/portal-ui/src/icons/MetadataIcon.tsx
new file mode 100644
index 000000000..4d2285d77
--- /dev/null
+++ b/portal-ui/src/icons/MetadataIcon.tsx
@@ -0,0 +1,39 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import * as React from "react";
+import { SVGProps } from "react";
+
+const MetadataIcon = (props: SVGProps) => (
+
+);
+
+export default MetadataIcon;
diff --git a/portal-ui/src/icons/ObjectInfoIcon.tsx b/portal-ui/src/icons/ObjectInfoIcon.tsx
new file mode 100644
index 000000000..c4ccad51f
--- /dev/null
+++ b/portal-ui/src/icons/ObjectInfoIcon.tsx
@@ -0,0 +1,35 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import * as React from "react";
+import { SVGProps } from "react";
+
+const ObjectInfoIcon = (props: SVGProps) => (
+
+);
+
+export default ObjectInfoIcon;
diff --git a/portal-ui/src/icons/RetentionIcon.tsx b/portal-ui/src/icons/RetentionIcon.tsx
new file mode 100644
index 000000000..42815d364
--- /dev/null
+++ b/portal-ui/src/icons/RetentionIcon.tsx
@@ -0,0 +1,39 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import * as React from "react";
+import { SVGProps } from "react";
+
+const RetentionIcon = (props: SVGProps) => (
+
+);
+
+export default RetentionIcon;
diff --git a/portal-ui/src/icons/TagsIcon.tsx b/portal-ui/src/icons/TagsIcon.tsx
new file mode 100644
index 000000000..73afb9aab
--- /dev/null
+++ b/portal-ui/src/icons/TagsIcon.tsx
@@ -0,0 +1,35 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import * as React from "react";
+import { SVGProps } from "react";
+
+const TagsIcon = (props: SVGProps) => (
+
+);
+
+export default TagsIcon;
diff --git a/portal-ui/src/icons/index.ts b/portal-ui/src/icons/index.ts
index 675a8572a..ba1199806 100644
--- a/portal-ui/src/icons/index.ts
+++ b/portal-ui/src/icons/index.ts
@@ -169,3 +169,8 @@ export { default as LockIcon } from "./LockIcon";
export { default as BackCaretIcon } from "./BackCaretIcon";
export { default as VersionsIcon } from "./VersionsIcon";
export { default as NewPathIcon } from "./NewPathIcon";
+export { default as ObjectInfoIcon } from "./ObjectInfoIcon";
+export { default as MetadataIcon } from "./MetadataIcon";
+export { default as LegalHoldIcon } from "./LegalHoldIcon";
+export { default as RetentionIcon } from "./RetentionIcon";
+export { default as TagsIcon } from "./TagsIcon";
diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/MultiSelectionPanel.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx
similarity index 85%
rename from portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/MultiSelectionPanel.tsx
rename to portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx
index 4ddde5fc1..3d379119b 100644
--- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/MultiSelectionPanel.tsx
+++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx
@@ -33,25 +33,25 @@ export interface MultiSelectionItem {
tooltip: string;
}
-interface IMultiSelectionPanelProps {
+interface IActionsListSectionProps {
items: MultiSelectionItem[];
- title: string;
+ title: string | React.ReactNode;
classes: any;
}
-const MultiSelectionPanel = ({
+const ActionsListSection = ({
items,
classes,
title,
-}: IMultiSelectionPanelProps) => {
+}: IActionsListSectionProps) => {
return (