import { PlusOutlined, SaveFilled } from '@ant-design/icons'; import useComponentPermission from 'hooks/useComponentPermission'; import { useIsDarkMode } from 'hooks/useDarkMode'; import { Dispatch, SetStateAction } from 'react'; import { Layout } from 'react-grid-layout'; import { useSelector } from 'react-redux'; import { AppState } from 'store/reducers'; import { Widgets } from 'types/api/dashboard/getAll'; import AppReducer from 'types/reducer/app'; import { LayoutProps, State } from '.'; import { Button, ButtonContainer, Card, CardContainer, ReactGridLayout, } from './styles'; function GraphLayout({ layouts, saveLayoutState, onLayoutSaveHandler, addPanelLoading, onAddPanelHandler, onLayoutChangeHandler, widgets, setLayout, }: GraphLayoutProps): JSX.Element { const { role } = useSelector((state) => state.app); const isDarkMode = useIsDarkMode(); const [saveLayoutPermission, addPanelPermission] = useComponentPermission( ['save_layout', 'add_panel'], role, ); return ( <> {saveLayoutPermission && ( )} {addPanelPermission && ( )} {layouts.map(({ Component, ...rest }) => { const currentWidget = (widgets || [])?.find((e) => e.id === rest.i); return ( ); })} ); } interface GraphLayoutProps { layouts: LayoutProps[]; saveLayoutState: State; onLayoutSaveHandler: (layout: Layout[]) => Promise; addPanelLoading: boolean; onAddPanelHandler: VoidFunction; onLayoutChangeHandler: (layout: Layout[]) => Promise; widgets: Widgets[] | undefined; setLayout: Dispatch>; } export default GraphLayout;