From f078128c1d2484dffcb78e47aab4b1eb33f7966c Mon Sep 17 00:00:00 2001 From: karthick-murugan Date: Fri, 13 Dec 2024 13:43:41 +0530 Subject: [PATCH] Update toolspanel to latest posts block --- .../block-library/src/latest-posts/edit.js | 414 +++++++++++------- 1 file changed, 245 insertions(+), 169 deletions(-) diff --git a/packages/block-library/src/latest-posts/edit.js b/packages/block-library/src/latest-posts/edit.js index 82f0661d04e40f..e609bda9dc50fe 100644 --- a/packages/block-library/src/latest-posts/edit.js +++ b/packages/block-library/src/latest-posts/edit.js @@ -7,7 +7,6 @@ import clsx from 'clsx'; * WordPress dependencies */ import { - PanelBody, Placeholder, QueryControls, RadioControl, @@ -17,6 +16,8 @@ import { ToolbarGroup, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon, + __experimentalToolsPanel as ToolsPanel, + __experimentalToolsPanelItem as ToolsPanelItem, } from '@wordpress/components'; import { __, _x, sprintf } from '@wordpress/i18n'; import { dateI18n, format, getSettings } from '@wordpress/date'; @@ -227,197 +228,272 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) { const hasPosts = !! latestPosts?.length; const inspectorControls = ( - - + setAttributes( { + displayPostContent: false, + displayPostContentRadio: 'excerpt', // Set default value for the radio button + excerptLength: MIN_EXCERPT_LENGTH, // Default length for the excerpt + } ) + } + > + displayPostContent !== undefined } label={ __( 'Post content' ) } - checked={ displayPostContent } - onChange={ ( value ) => - setAttributes( { displayPostContent: value } ) + onDeselect={ () => + setAttributes( { displayPostContent: false } ) } - /> - { displayPostContent && ( - + - setAttributes( { - displayPostContentRadio: value, - } ) + setAttributes( { displayPostContent: value } ) } /> - ) } - { displayPostContent && - displayPostContentRadio === 'excerpt' && ( - - setAttributes( { excerptLength: value } ) + setAttributes( { + displayPostContentRadio: value, + } ) } - min={ MIN_EXCERPT_LENGTH } - max={ MAX_EXCERPT_LENGTH } /> ) } - + { displayPostContent && + displayPostContentRadio === 'excerpt' && ( + + setAttributes( { excerptLength: value } ) + } + min={ MIN_EXCERPT_LENGTH } + max={ MAX_EXCERPT_LENGTH } + /> + ) } + + - - + setAttributes( { + displayAuthor: false, + displayPostDate: false, + } ) + } + > + displayAuthor !== undefined } label={ __( 'Display author name' ) } - checked={ displayAuthor } - onChange={ ( value ) => - setAttributes( { displayAuthor: value } ) - } - /> - - setAttributes( { displayPostDate: value } ) + onDeselect={ () => + setAttributes( { displayAuthor: false } ) } - /> - + > + + setAttributes( { displayAuthor: value } ) + } + /> +
+ + setAttributes( { displayPostDate: value } ) + } + /> + + - - + setAttributes( { + displayFeaturedImage: false, + featuredImageSizeSlug: '', + featuredImageSizeWidth: undefined, + featuredImageSizeHeight: undefined, + featuredImageAlign: undefined, + addLinkToFeaturedImage: false, + } ) + } + > + displayFeaturedImage !== undefined } label={ __( 'Display featured image' ) } - checked={ displayFeaturedImage } - onChange={ ( value ) => - setAttributes( { displayFeaturedImage: value } ) + onDeselect={ () => + setAttributes( { displayFeaturedImage: false } ) } - /> - { displayFeaturedImage && ( - <> - { - const newAttrs = {}; - if ( value.hasOwnProperty( 'width' ) ) { - newAttrs.featuredImageSizeWidth = - value.width; + > + + setAttributes( { displayFeaturedImage: value } ) + } + /> + { displayFeaturedImage && ( + <> + { + const newAttrs = {}; + if ( value.hasOwnProperty( 'width' ) ) { + newAttrs.featuredImageSizeWidth = + value.width; + } + if ( value.hasOwnProperty( 'height' ) ) { + newAttrs.featuredImageSizeHeight = + value.height; + } + setAttributes( newAttrs ); + } } + slug={ featuredImageSizeSlug } + width={ featuredImageSizeWidth } + height={ featuredImageSizeHeight } + imageWidth={ defaultImageWidth } + imageHeight={ defaultImageHeight } + imageSizeOptions={ imageSizeOptions } + imageSizeHelp={ __( + 'Select the size of the source image.' + ) } + onChangeImage={ ( value ) => + setAttributes( { + featuredImageSizeSlug: value, + featuredImageSizeWidth: undefined, + featuredImageSizeHeight: undefined, + } ) } - if ( value.hasOwnProperty( 'height' ) ) { - newAttrs.featuredImageSizeHeight = - value.height; + /> + + setAttributes( { + featuredImageAlign: + value !== 'none' + ? value + : undefined, + } ) } - setAttributes( newAttrs ); - } } - slug={ featuredImageSizeSlug } - width={ featuredImageSizeWidth } - height={ featuredImageSizeHeight } - imageWidth={ defaultImageWidth } - imageHeight={ defaultImageHeight } - imageSizeOptions={ imageSizeOptions } - imageSizeHelp={ __( - 'Select the size of the source image.' - ) } - onChangeImage={ ( value ) => - setAttributes( { - featuredImageSizeSlug: value, - featuredImageSizeWidth: undefined, - featuredImageSizeHeight: undefined, - } ) - } - /> - + { imageAlignmentOptions.map( + ( { value, icon, label } ) => { + return ( + + ); + } + ) } + + + setAttributes( { + addLinkToFeaturedImage: value, + } ) + } + /> + + ) } + + + + setAttributes( { + order: 'desc', // Default value for order + orderBy: 'date', // Default value for orderBy + postsToShow: 5, // Default number of posts + categories: [], // Default categories + selectedAuthor: undefined, // Default author + columns: 3, // Default columns for grid layout + } ) + } + > + order !== undefined } + label={ __( 'Sorting options' ) } + onDeselect={ () => + setAttributes( { order: 'desc', orderBy: 'date' } ) + } + > + + setAttributes( { order: value } ) + } + onOrderByChange={ ( value ) => + setAttributes( { orderBy: value } ) + } + onNumberOfItemsChange={ ( value ) => + setAttributes( { postsToShow: value } ) + } + categorySuggestions={ categorySuggestions } + onCategoryChange={ selectCategories } + selectedCategories={ categories } + onAuthorChange={ ( value ) => + setAttributes( { + selectedAuthor: + '' !== value ? Number( value ) : undefined, + } ) + } + authorList={ authorList ?? [] } + selectedAuthorId={ selectedAuthor } + /> + + { postLayout === 'grid' && ( + - setAttributes( { - featuredImageAlign: - value !== 'none' ? value : undefined, - } ) + setAttributes( { columns: value } ) } - > - { imageAlignmentOptions.map( - ( { value, icon, label } ) => { - return ( - - ); - } - ) } - - - setAttributes( { - addLinkToFeaturedImage: value, - } ) + min={ 2 } + max={ + ! hasPosts + ? MAX_POSTS_COLUMNS + : Math.min( + MAX_POSTS_COLUMNS, + latestPosts.length + ) } + required /> - - ) } - - - - - setAttributes( { order: value } ) - } - onOrderByChange={ ( value ) => - setAttributes( { orderBy: value } ) - } - onNumberOfItemsChange={ ( value ) => - setAttributes( { postsToShow: value } ) - } - categorySuggestions={ categorySuggestions } - onCategoryChange={ selectCategories } - selectedCategories={ categories } - onAuthorChange={ ( value ) => - setAttributes( { - selectedAuthor: - '' !== value ? Number( value ) : undefined, - } ) - } - authorList={ authorList ?? [] } - selectedAuthorId={ selectedAuthor } - /> - - { postLayout === 'grid' && ( - - setAttributes( { columns: value } ) - } - min={ 2 } - max={ - ! hasPosts - ? MAX_POSTS_COLUMNS - : Math.min( - MAX_POSTS_COLUMNS, - latestPosts.length - ) - } - required - /> - ) } - + ) } + +
);