import { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import styled from '@emotion/styled'; import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem'; import { useObjectMetadataItemForSettings } from '@/object-metadata/hooks/useObjectMetadataItemForSettings'; import { getFieldSlug } from '@/object-metadata/utils/getFieldSlug'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { SettingsAboutSection } from '@/settings/data-model/object-details/components/SettingsObjectAboutSection'; import { SettingsObjectFieldActiveActionDropdown } from '@/settings/data-model/object-details/components/SettingsObjectFieldActiveActionDropdown'; import { SettingsObjectFieldDisabledActionDropdown } from '@/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown'; import { SettingsObjectFieldItemTableRow, StyledObjectFieldTableRow, } from '@/settings/data-model/object-details/components/SettingsObjectFieldItemTableRow'; import { AppPath } from '@/types/AppPath'; import { IconPlus, IconSettings } from '@/ui/display/icon'; import { H2Title } from '@/ui/display/typography/components/H2Title'; import { Button } from '@/ui/input/button/components/Button'; import { SubMenuTopBarContainer } from '@/ui/layout/page/SubMenuTopBarContainer'; import { Section } from '@/ui/layout/section/components/Section'; import { Table } from '@/ui/layout/table/components/Table'; import { TableHeader } from '@/ui/layout/table/components/TableHeader'; import { TableSection } from '@/ui/layout/table/components/TableSection'; import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb'; const StyledDiv = styled.div` display: flex; justify-content: flex-end; padding-top: ${({ theme }) => theme.spacing(2)}; `; export const SettingsObjectDetail = () => { const navigate = useNavigate(); const { objectSlug = '' } = useParams(); const { disableObjectMetadataItem, findActiveObjectMetadataItemBySlug } = useObjectMetadataItemForSettings(); const activeObjectMetadataItem = findActiveObjectMetadataItemBySlug(objectSlug); useEffect(() => { if (!activeObjectMetadataItem) navigate(AppPath.NotFound); }, [activeObjectMetadataItem, navigate]); const { activateMetadataField, disableMetadataField, eraseMetadataField } = useFieldMetadataItem(); if (!activeObjectMetadataItem) return null; const activeMetadataFields = activeObjectMetadataItem.fields.filter( (metadataField) => metadataField.isActive && !metadataField.isSystem, ); const disabledMetadataFields = activeObjectMetadataItem.fields.filter( (metadataField) => !metadataField.isActive && !metadataField.isSystem, ); const handleDisable = async () => { await disableObjectMetadataItem(activeObjectMetadataItem); navigate('/settings/objects'); }; return ( navigate('./edit')} />
Name Field type Data type {!!activeMetadataFields.length && ( {activeMetadataFields.map((activeMetadataField) => ( navigate(`./${getFieldSlug(activeMetadataField)}`) } onDisable={() => disableMetadataField(activeMetadataField) } /> } /> ))} )} {!!disabledMetadataFields.length && ( {disabledMetadataFields.map((disabledMetadataField) => ( activateMetadataField(disabledMetadataField) } onErase={() => eraseMetadataField(disabledMetadataField) } /> } /> ))} )}
); };