import {useForm} from 'react-hook-form'; import {Accordion, AccordionItem} from '@common/ui/accordion/accordion'; import {Form} from '@common/ui/forms/form'; import {FormTextField} from '@common/ui/forms/input-field/text-field/text-field'; import {MenuItemConfig} from '@common/core/settings/settings'; import {AddIcon} from '@common/icons/material/Add'; import {Button} from '@common/ui/buttons/button'; import {useAvailableRoutes} from '@common/admin/appearance/sections/menus/hooks/available-routes'; import {ucFirst} from '@common/utils/string/uc-first'; import {List, ListItem} from '@common/ui/list/list'; import {useDialogContext} from '@common/ui/overlays/dialog/dialog-context'; import {Dialog} from '@common/ui/overlays/dialog/dialog'; import {DialogHeader} from '@common/ui/overlays/dialog/dialog-header'; import {DialogBody} from '@common/ui/overlays/dialog/dialog-body'; import {Trans} from '@common/i18n/trans'; import {useValueLists} from '@common/http/value-lists'; import {ReactNode} from 'react'; import {nanoid} from 'nanoid'; interface AddMenuItemDialogProps { title?: ReactNode; } export function AddMenuItemDialog({ title = , }: AddMenuItemDialogProps) { const {data} = useValueLists(['menuItemCategories']); const categories = data?.menuItemCategories || []; const routeItems = useAvailableRoutes(); return ( {title} } bodyClassName="max-h-240 overflow-y-auto" > } bodyClassName="max-h-240 overflow-y-auto" > {categories.map(category => ( } > ))} ); } function AddCustomLink() { const form = useForm({ defaultValues: { id: nanoid(6), type: 'link', target: '_blank', }, }); const {close} = useDialogContext(); return (
{ close(value); }} > } className="mb-20" /> } className="mb-20" />
); } interface AddRouteProps { items: Partial[]; } function AddRoute({items}: AddRouteProps) { const {close} = useDialogContext(); return ( {items.map(item => { return ( } onSelected={() => { if (item.label) { const last = item.label.split('/').pop(); item.label = last ? ucFirst(last) : item.label; item.id = nanoid(6); } close(item); }} > {item.label} ); })} ); }