/** * WordPress dependencies */ import React from "react"; import { useBlockEditContext, __experimentalBorderRadiusControl as BorderRadiusControl, } from "@wordpress/block-editor"; import { useSelect, useDispatch } from "@wordpress/data"; import { BaseControl, __experimentalBorderBoxControl as BorderBoxControl, } from "@wordpress/components"; /** * Internal dependencies */ import { BorderControlProps } from "./types"; import { splitBorderRadius } from "./utils/styling-helpers"; /** * Border control component * Provides dual control for border and border radius with ToolsPanel integration */ const BorderControl: React.FC = ({ borderLabel, attrBorderKey, borderRadiusLabel, attrBorderRadiusKey, isShowBorder = true, isShowBorderRadius = true, }) => { const { clientId } = useBlockEditContext(); const attributes = useSelect((select) => select("core/block-editor").getBlockAttributes(clientId), ) as Record; const { updateBlockAttributes } = useDispatch("core/block-editor") as any; const setAttributes = (newAttributes: Record) => { updateBlockAttributes(clientId, newAttributes); }; const { defaultColors } = useSelect((select) => { return { defaultColors: select("core/block-editor")?.getSettings()?.__experimentalFeatures ?.color?.palette?.default, }; }) as { defaultColors: any }; return ( <> {isShowBorder && ( { setAttributes({ [attrBorderKey]: newBorder }); }} value={attributes[attrBorderKey]} /> )} {isShowBorderRadius && (
{borderRadiusLabel}
{ const splitted = splitBorderRadius(newBorderRadius); setAttributes({ [attrBorderRadiusKey]: splitted, }); }} />
)} ); }; export default BorderControl;