github.com/minio/console@v1.4.1/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx (about) 1 // This file is part of MinIO Console Server 2 // Copyright (c) 2022 MinIO, Inc. 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Affero General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Affero General Public License for more details. 13 // 14 // You should have received a copy of the GNU Affero General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 import React, { Fragment } from "react"; 18 import { Box } from "mds"; 19 import { safeDecodeURIComponent } from "../../../../../../common/utils"; 20 21 interface IObjectMetadata { 22 metaData: any; 23 } 24 25 const itemRendererFn = (element: any) => { 26 return Array.isArray(element) 27 ? element.map(safeDecodeURIComponent).join(", ") 28 : safeDecodeURIComponent(element); 29 }; 30 31 const ObjectMetaData = ({ metaData }: IObjectMetadata) => { 32 const metaKeys = Object.keys(metaData); 33 34 return ( 35 <Fragment> 36 {metaKeys.map((element: string, index: number) => { 37 const renderItem = itemRendererFn(metaData[element]); 38 return ( 39 <Box 40 sx={{ 41 marginBottom: 15, 42 fontSize: 14, 43 maxHeight: 180, 44 overflowY: "auto", 45 }} 46 key={`box-meta-${element}-${index.toString()}`} 47 > 48 <strong>{element}</strong> 49 <br /> 50 {renderItem} 51 </Box> 52 ); 53 })} 54 </Fragment> 55 ); 56 }; 57 58 export default ObjectMetaData;