import { BlockControls, InnerBlocks, InspectorControls, useBlockProps, useInnerBlocksProps, } from '@wordpress/block-editor'; import { PanelBody, TabPanel, ToggleControl, ToolbarDropdownMenu, ToolbarGroup, } from '@wordpress/components'; import { useSelect } from '@wordpress/data'; import { applyFilters } from '@wordpress/hooks'; import { __ } from '@wordpress/i18n'; import classnames from 'classnames/dedupe'; import ApplyFilters from '../../components/apply-filters'; import ColorIndicator from '../../components/color-indicator'; import ColorPicker from '../../components/color-picker'; import IconPicker from '../../components/icon-picker'; import RangeControl from '../../components/range-control'; /** * Block Edit Class. * * @param {Object} props - component props. * * @return {JSX} component. */ export default function BlockEdit(props) { const { attributes, setAttributes } = props; let { className = '' } = props; const { color, hoverColor, icon, iconSize, hideButton } = attributes; const hasChildBlocks = useSelect( (select) => { const blockEditor = select('core/block-editor'); return blockEditor ? blockEditor.getBlockOrder(props.clientId).length > 0 : false; }, [props.clientId] ); className = classnames('ghostkit-alert', className); className = applyFilters('ghostkit.editor.className', className, props); const blockProps = useBlockProps({ className }); const innerBlockProps = useInnerBlocksProps( { className: 'ghostkit-alert-content', }, { renderAppender: hasChildBlocks ? undefined : InnerBlocks.ButtonBlockAppender, templateLock: false, } ); return ( <> setAttributes({ color: '#2E77C3' }), }, { title: __('Success', 'ghostkit'), icon: 'marker', isActive: color === '#22CF6E', onClick: () => setAttributes({ color: '#22CF6E' }), }, { title: __('Danger', 'ghostkit'), icon: 'dismiss', isActive: color === '#DC3232', onClick: () => setAttributes({ color: '#DC3232' }), }, { title: __('Warning', 'ghostkit'), icon: 'warning', isActive: color === '#E47F3B', onClick: () => setAttributes({ color: '#E47F3B' }), }, { title: __('Info', 'ghostkit'), icon: 'info', isActive: color === '#2DC7E8', onClick: () => setAttributes({ color: '#2DC7E8' }), }, ]} /> setAttributes({ icon: value })} insideInspector /> {icon ? ( setAttributes({ iconSize: value }) } min={20} max={100} beforeIcon="editor-textcolor" afterIcon="editor-textcolor" allowCustomMin allowCustomMax /> ) : null} setAttributes({ hideButton: val })} /> {__('Colors', 'ghostkit')} } initialOpen={false} > {(tabData) => { const isHover = tabData.name === 'hover'; return ( setAttributes( isHover ? { hoverColor: val } : { color: val } ) } alpha /> ); }}
{icon ? (
setAttributes({ icon: value })} value={icon} renderToggle={({ onToggle }) => ( )} />
) : null}
{hideButton ? (
) : null}
); }