File "edit.js"
Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/generateblocks/src/blocks/query/edit.js
File
size: 2.88 B (2.88 KB bytes)
MIME-type: text/x-java
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
import { useBlockProps, InspectorControls, useInnerBlocksProps } from '@wordpress/block-editor';
import { useEffect, useMemo } from '@wordpress/element';
import { compose } from '@wordpress/compose';
import { __ } from '@wordpress/i18n';
import { BlockStyles, withUniqueId } from '@edge22/block-styles';
import RootElement from '../../components/root-element/index.js';
import { TemplateSelector } from '@components/template-selector';
import { TEMPLATES } from './templates';
import { BlockSettings } from './components/BlockSettings';
import { selectorShortcuts } from '@utils/selectorShortcuts';
import { withStyles } from '@hoc/withStyles';
import { BlockAppender, BlockStylesBuilder } from '@components/index';
import { withHtmlAttributes } from '@hoc/withHtmlAttributes.js';
import { getBlockClasses } from '@utils/getBlockClasses.js';
function EditBlock( props ) {
const {
attributes,
setAttributes,
name,
clientId,
onStyleChange,
editorHtmlAttributes,
styles,
isSelected,
} = props;
const {
tagName,
showTemplateSelector,
} = attributes;
const classNames = getBlockClasses(
'gb-query',
{
...attributes,
styles,
}
);
useEffect( () => {
if ( ! tagName ) {
setAttributes( { tagName: 'div' } );
}
}, [ tagName ] );
const blockProps = useBlockProps(
{
className: classNames.join( ' ' ).trim(),
...editorHtmlAttributes,
}
);
const innerBlocksProps = useInnerBlocksProps(
blockProps,
{
allowedBlocks: [
'generateblocks/looper',
'generateblocks/query-no-results',
'generateblocks/query-page-numbers',
'generateblocks/element',
],
renderAppender: () => (
<BlockAppender
clientId={ clientId }
isSelected={ isSelected }
attributes={ attributes }
/>
),
}
);
const TagName = tagName || 'div';
const shortcuts = useMemo( () => {
const visibleShortcuts = [
{
label: __( 'Links', 'generateblocks' ),
value: 'a',
},
];
return {
selectorShortcuts,
visibleShortcuts,
};
}, [] );
if ( showTemplateSelector ) {
return (
<TemplateSelector
clientId={ clientId }
setAttributes={ setAttributes }
label={ __( 'Query', 'generateblocks' ) }
instructions={ __( 'Choose a layout to start with.', 'generateblocks' ) }
templates={ TEMPLATES }
/>
);
}
return (
<>
<InspectorControls>
<BlockStyles
settingsTab={ (
<BlockSettings
{ ...props }
/>
) }
stylesTab={ (
<BlockStylesBuilder
attributes={ attributes }
setAttributes={ setAttributes }
shortcuts={ shortcuts }
onStyleChange={ onStyleChange }
name={ name }
/>
) }
/>
</InspectorControls>
<RootElement
name={ name }
clientId={ clientId }
>
<TagName { ...innerBlocksProps } />
</RootElement>
</>
);
}
const Edit = compose(
withHtmlAttributes,
withStyles,
withUniqueId
)( EditBlock );
export { Edit };