import {
PanelRow,
TextControl,
ToggleControl,
Button,
} from '@wordpress/components';
import { useState, useEffect } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
export default function BiteLinkPanel({
linkUrl,
linkTitle,
linkTarget,
linkTile,
showLinkTile,
parentCallback,
}) {
const [stateUrl, setStateUrl] = useState('');
const [stateTitle, setStateTitle] = useState('');
const [stateTarget, setStateTarget] = useState(false);
const [stateTile, setStateTile] = useState(false);
// once
useEffect(() => {
if (linkTarget === '_blank') {
setStateTarget(true);
}
if (linkTile) {
setStateTile(true);
}
if (linkUrl) {
setStateUrl(linkUrl);
}
if (linkTitle) {
setStateTitle(linkTitle);
}
}, []);
// set from default
useEffect(() => {
let newLink = { ...getLinkObject() };
parentCallback(newLink);
}, [stateTitle, stateUrl, stateTarget, stateTile]);
// get link object
const getLinkObject = () => {
const link: {
linkTitle?: string;
linkUrl?: string;
linkTile?: boolean;
linkTarget?: string;
} = {};
if (stateTitle) {
link.linkTitle = stateTitle;
}
if (stateUrl) {
link.linkUrl = stateUrl;
}
link.linkTile = linkTile;
link.linkTarget = stateTarget ? '_blank' : '_self';
return link;
};
// reset link
const removeLink = () => {
const newLink = { ...getLinkObject() };
newLink.linkTitle = '';
newLink.linkUrl = '';
setStateUrl('');
setStateTitle('');
parentCallback(newLink);
};
return (
<>
setStateTarget(value)}
/>
{showLinkTile && (
setStateTile(value)}
/>
)}
>
);
}