import {useFieldArray, useFormContext} from 'react-hook-form'; import {Fragment, useEffect} from 'react'; import {appearanceState, AppearanceValues} from '../../appearance-store'; import {Button} from '@common/ui/buttons/button'; import {DeleteIcon} from '../../../../icons/material/Delete'; import {ConfirmationDialog} from '../../../../ui/overlays/dialog/confirmation-dialog'; import {DialogTrigger} from '../../../../ui/overlays/dialog/dialog-trigger'; import {Trans} from '../../../../i18n/trans'; import {useNavigate} from '../../../../utils/hooks/use-navigate'; import {MenuItemForm} from '../../../menus/menu-item-form'; import {useParams} from 'react-router-dom'; import {MenuItemConfig} from '../../../../core/settings/settings'; export function MenuItemEditor() { const {menuIndex, menuItemIndex} = useParams(); const navigate = useNavigate(); const {getValues} = useFormContext(); const formPath = `settings.menus.${menuIndex}.items.${menuItemIndex}`; const item = getValues(formPath as any); // go to menu editor, if menu item can't be found useEffect(() => { if (!item) { //navigate(`../`); } else { appearanceState().preview.setHighlight( `[data-menu-item-id="${item.id}"]` ); } }, [navigate, item]); // only render form when menu and item are available to avoid issues with hook form default values if (!item || menuItemIndex == null) { return null; } return ; } interface MenuItemEditorSectionProps { formPath: string; } function MenuItemEditorSection({formPath}: MenuItemEditorSectionProps) { return (
); } function DeleteItemTrigger() { const navigate = useNavigate(); const {menuIndex, menuItemIndex} = useParams(); const {fields, remove} = useFieldArray({ name: `settings.menus.${+menuIndex!}.items`, }); if (!menuItemIndex) return null; const item = fields[+menuItemIndex] as MenuItemConfig; return ( { if (isConfirmed) { if (menuItemIndex) { remove(+menuItemIndex); navigate(`/admin/appearance/menus/${menuIndex}`); } } }} > } body={ } confirm={} /> ); }