// block.json's editorScript, loaded only in the block editor import { __ } from '@wordpress/i18n'; import { registerBlockType } from '@wordpress/blocks'; import { useSelect } from '@wordpress/data'; import { useBlockProps, InnerBlocks, InspectorControls, BlockControls, AlignmentToolbar, MediaUpload, MediaUploadCheck, } from '@wordpress/block-editor'; import { Panel, PanelBody, PanelRow, SelectControl, ToggleControl, RangeControl, ColorPalette, Button, } from '@wordpress/components'; // import { Image } from '@10up/block-components'; import { useState, useEffect } from '@wordpress/element'; import metadata from './block.json'; import allowedBlocks from '../../../json/core-block-whitelist.json'; import { containerClassNames, sectionClassNames } from '../../../js/lib/blocks/classNames'; import AttachmentImage from '../../../js/lib/blocks/AttachmentImage'; import apiFetch from '@wordpress/api-fetch'; registerBlockType(metadata.name, { edit({ attributes, setAttributes }) { const blockProps = useBlockProps(); const [ isLoading, setIsLoading ] = useState( true ); const { container_width, alignment, padding_top, padding_bottom, background_colour, background_hex, background_tint, background_image, background_url, background_position, background_opacity, } = attributes; const [ configOptions, setConfigOptions, ] = useState( [] ); useEffect( () => { apiFetch( { path: '/badegg/v1/blocks/config' } ) .then( ( data ) => { setConfigOptions( data ); setIsLoading( false ); } ) .catch( () => { setConfigOptions( [] ); setIsLoading( false ); } ); }, [] ); blockProps.className = sectionClassNames( attributes, blockProps.className, [ 'wysiwyg' ]).join(' '); // console.log(attributes); return (
setAttributes({alignment: value})} /> setAttributes({ container_width: value }) } __next40pxDefaultSize={ true } __nextHasNoMarginBottom={ true } /> setAttributes({ padding_top: value }) } __nextHasNoMarginBottom /> setAttributes({ padding_bottom: value }) } __nextHasNoMarginBottom />

{ __('Colour', 'badegg') }

{ let slug, hex, selected = ''; if(value) { selected = configOptions.colours.find( ( c ) => c.color === value ); hex = value; } if(selected) { slug = selected.slug; } setAttributes( { background_colour: slug, background_hex: hex, }); } } /> { 'background_colour' in attributes && attributes.background_colour && ![0, '0', 'white', 'black'].includes(attributes.background_colour) ? ( setAttributes({ background_tint: value }) } __next40pxDefaultSize={ true } __nextHasNoMarginBottom={ true } /> ) : null } { background_image != 0 && ( <> setAttributes({ background_opacity: value }) } min={ 5 } max={ 100 } /> )} { setAttributes({ background_image: media.id, background_url: media.url, }); }} allowedTypes={ ['image'] } value={ background_image } render={ ({ open }) => ( )} /> { background_image != 0 && ( )}
{ attributes.background_image != 0 && (
) }
); }, save({ attributes }) { return (
) } });