/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import React, { useState, ReactChildren, ReactChild } from 'react';
import {
EuiButtonIcon,
EuiFlexGroup,
EuiFlexItem,
EuiButtonEmpty,
EuiPopover,
EuiSwitch,
EuiIcon,
} from '@elastic/eui';
// theme
import { uiSettingsService } from '../../../../../common/utils';
// constants
import {
GRID_HEADER_COLUMN_MAX_WIDTH,
ROW_DENSITIES,
} from '../../../../../common/constants/explorer';
export interface RowConfigType {
icon: string;
height: number;
selected: boolean;
}
export const CustomOverlay = ({
children,
}: {
children: ReactChild | ReactChild[] | ReactChildren | ReactChildren[];
}) => {
return (
{children}
);
};
export const GridHeader = ({
isFullScreen,
setIsFullScreenHandler,
selectedRowDensity,
selectDensityHandler,
columnVisiblityHandler,
columns,
columnVisibility,
}: {
isFullScreen: boolean;
setIsFullScreenHandler: (v: boolean) => void;
selectedRowDensity: any;
selectDensityHandler: (v: RowConfigType) => void;
columnVisiblityHandler: (visible: boolean, field: string) => void;
columns: any;
columnVisibility: any;
}) => {
return (
setIsFullScreenHandler(true)}
>
Full screen
{isFullScreen && (
setIsFullScreenHandler(false)}
style={{ position: 'absolute', right: 20, cursor: 'pointer', top: 20 }}
/>
)}
);
};
export const DensityPopover = ({
selectDensityHandler,
selectedDensity,
}: {
selectedDensity: any;
selectDensityHandler: (data: RowConfigType) => void;
}) => {
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
const onButtonClick = () => setIsPopoverOpen((isPopoverOpen) => !isPopoverOpen);
const closePopover = () => setIsPopoverOpen(false);
const button = (
Density
);
return (
{ROW_DENSITIES.map((i: RowConfigType, index: number) => (
selectDensityHandler(i)}
display={selectedDensity.icon === i.icon ? 'fill' : 'base'}
iconType={i.icon}
aria-label="Next"
/>
))}
);
};
export const ColumnVisiblityPopover = ({
columnVisibility,
columns,
columnVisiblityHandler,
}: {
columns: any;
columnVisibility: any;
columnVisiblityHandler: (visible: boolean, field: string) => void;
}) => {
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
const onButtonClick = () => setIsPopoverOpen((isPopoverOpen) => !isPopoverOpen);
const closePopover = () => setIsPopoverOpen(false);
const button = (
Columns
);
return (
{columns.map((i: any, index: number) => {
return (
{
columnVisiblityHandler(e.target.checked, i.field);
}}
compressed
/>
);
})}
);
};