/** * WordPress dependencies */ import { Component, Fragment } from '@wordpress/element'; import { PanelBody, Placeholder, Spinner, SelectControl, Disabled, } from '@wordpress/components'; import QueryControls from './QueryControls'; import { __, sprintf } from '@wordpress/i18n'; import { InspectorControls, ServerSideRender, } from '@wordpress/editor'; import TermSelect from './TermSelect'; const getEditComponent = ( blockName ) => { return class extends Component { render() { const { className, attributes, setAttributes, latestPosts, taxonomies, selectedPostType, postTypes, terms, } = this.props; const { order, orderBy, postsToShow } = attributes; const labels = selectedPostType.labels || {}; const PostTypeControls = ( ( { label: type.name, value: type.slug } ) ) } onChange={ ( postType ) => { setAttributes( { postType } ); } } /> ); const TermControls = taxonomies.map( ( taxonomy ) => ( { if ( ! Array.isArray( value ) ) { value = [ value ]; } setAttributes( { [ taxonomy.rest_base ]: '' !== value ? value : undefined } ); } } /> ) ); const title = sprintf( __( '%s Block Setting', 'advanced-posts-blocks' ), labels.name ); const inspectorControls = ( setAttributes( { order: value } ) } onOrderByChange={ ( value ) => setAttributes( { orderBy: value } ) } onNumberOfItemsChange={ ( value ) => setAttributes( { postsToShow: value } ) } /> { PostTypeControls } { TermControls } ); const hasPosts = Array.isArray( latestPosts ) && latestPosts.length; if ( ! hasPosts ) { return ( { inspectorControls } { ! Array.isArray( latestPosts ) ? : labels.not_found } ); } return ( { inspectorControls } ); } }; }; export default getEditComponent;