import type { IInternalLink } from '@webbio/strapi-plugin-internal-links/dist/admin/src/components/factory/index'; import React from 'react'; import InternalLinkModal from '@webbio/strapi-plugin-internal-links/dist/admin/src/components/modal/index'; import useInternalLinkInput from '@webbio/strapi-plugin-internal-links/dist/admin/src/components/input/use-internal-link-input'; import { useCMEditViewDataManager } from '@strapi/helper-plugin'; export interface IInternalLinkAttribute { externalApi?: { enabled?: boolean; labelPath?: string; valuePath?: string; tabName?: string; labelAdditionPath?: string; apiUrl?: string; }; } interface IProps { isOpen: boolean; attribute: IInternalLinkAttribute; name: string; error?: string; link?: IInternalLink; onChange: (link: IInternalLink) => void; onToggle: (selectedValue?: string, initialValue?: string, isEdit?: boolean) => void; } const InternalLink = (props: IProps) => { const viewData = useCMEditViewDataManager(); if (!props.isOpen) return null; const { errors, link, initialLink, setLink, setErrors } = useInternalLinkInput( JSON.stringify(props.link), props?.error, viewData?.layout?.uid, viewData?.initialData?.id, props.name, props?.link?.text ); const saveModal = (): void => { initialLink.current = link; props.onChange(link); props.onToggle(); }; const closeModal = (): void => { setLink(initialLink.current); setErrors((previousValue) => ({ ...previousValue, text: undefined, url: undefined, link: undefined })); props.onToggle(); }; return ( ); }; export default InternalLink;