import { useLocation, useParams, useSearchParams } from 'react-router-dom' import { useEffect, useState } from 'react' import Container from '@/components/shared/Container' import Grid from './Grid' import { FaList, FaTable, FaTh, FaUser } from 'react-icons/fa' import { useStoreState } from '@/store/store' import classNames from 'classnames' import { useLocalization } from '@/utils/hooks/useLocalization' import { GridDto } from '@/proxy/form/models' import Card from './Card' import { Button } from '@/components/ui' import Pivot from './Pivot' import { getList } from '@/services/form.service' import { Loading } from '@/components/shared' import { useCurrentMenuIcon } from '@/utils/hooks/useCurrentMenuIcon' const List = () => { const params = useParams() const { translate } = useLocalization() const [searchParams] = useSearchParams() const listFormCode = params?.listFormCode ?? '' const [viewMode, setViewMode] = useState<'grid' | 'card' | 'pivot'>() const mode = useStoreState((state) => state.theme.mode) const [gridDto, setGridDto] = useState() const MenuIcon = useCurrentMenuIcon('w-5 h-5') const initializeGridAsync = async () => { const response = await getList({ listFormCode }) setGridDto(response.data) } useEffect(() => { initializeGridAsync() }, [listFormCode]) useEffect(() => { if (!gridDto) { return } setViewMode(gridDto?.gridOptions?.layoutDto.defaultLayout) }, [gridDto]) if (!listFormCode) { return null } return ( {!gridDto ? ( ) : ( <>
{MenuIcon}

{translate('::' + gridDto?.gridOptions?.title)}

{gridDto?.gridOptions?.description === gridDto?.gridOptions?.title ? (

) : (

{translate('::' + gridDto?.gridOptions?.description)}

)}
{gridDto?.gridOptions?.layoutDto.grid && ( )} {gridDto?.gridOptions?.layoutDto.card && ( )} {gridDto?.gridOptions?.layoutDto.pivot && ( )}
{viewMode === 'pivot' ? ( ) : viewMode === 'card' ? ( ) : ( )} )}
) } export default List