Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dropdown menu props to ToolsPanel component #68019

Merged
4 changes: 4 additions & 0 deletions packages/block-library/src/button/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import clsx from 'clsx';
import { NEW_TAB_TARGET, NOFOLLOW_REL } from './constants';
import { getUpdatedLinkAttributes } from './get-updated-link-attributes';
import removeAnchorTag from '../utils/remove-anchor-tag';
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

/**
* WordPress dependencies
Expand Down Expand Up @@ -115,10 +116,13 @@ function useEnter( props ) {
}

function WidthPanel( { selectedWidth, setAttributes } ) {
const dropdownMenuProps = useToolsPanelDropdownMenuProps();

return (
<ToolsPanel
label={ __( 'Settings' ) }
resetAll={ () => setAttributes( { width: undefined } ) }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
label={ __( 'Button width' ) }
Expand Down
7 changes: 7 additions & 0 deletions packages/block-library/src/column/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,24 @@ import {
import { useSelect, useDispatch } from '@wordpress/data';
import { sprintf, __ } from '@wordpress/i18n';

/**
* Internal dependencies
*/
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

function ColumnInspectorControls( { width, setAttributes } ) {
const [ availableUnits ] = useSettings( 'spacing.units' );
const units = useCustomUnits( {
availableUnits: availableUnits || [ '%', 'px', 'em', 'rem', 'vw' ],
} );
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
return (
<ToolsPanel
label={ __( 'Settings' ) }
resetAll={ () => {
setAttributes( { width: undefined } );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
hasValue={ () => width !== undefined }
Expand Down
4 changes: 4 additions & 0 deletions packages/block-library/src/columns/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import {
getRedistributedColumnWidths,
toWidthPrecision,
} from './utils';
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

const DEFAULT_BLOCK = {
name: 'core/column',
Expand Down Expand Up @@ -145,6 +146,8 @@ function ColumnInspectorControls( {
replaceInnerBlocks( clientId, innerBlocks );
}

const dropdownMenuProps = useToolsPanelDropdownMenuProps();

return (
<ToolsPanel
label={ __( 'Settings' ) }
Expand All @@ -154,6 +157,7 @@ function ColumnInspectorControls( {
isStackedOnMobile: true,
} );
} }
dropdownMenuProps={ dropdownMenuProps }
>
{ canInsertColumnBlock && (
<ToolsPanelItem
Expand Down
7 changes: 7 additions & 0 deletions packages/block-library/src/details/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ import {
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';

/**
* Internal dependencies
*/
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

const TEMPLATE = [
[
'core/paragraph',
Expand All @@ -32,6 +37,7 @@ function DetailsEdit( { attributes, setAttributes, clientId } ) {
template: TEMPLATE,
__experimentalCaptureToolbars: true,
} );
const dropdownMenuProps = useToolsPanelDropdownMenuProps();

// Check if either the block or the inner blocks are selected.
const hasSelection = useSelect(
Expand All @@ -57,6 +63,7 @@ function DetailsEdit( { attributes, setAttributes, clientId } ) {
showContent: false,
} );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
isShownByDefault
Expand Down
8 changes: 7 additions & 1 deletion packages/block-library/src/post-excerpt/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ import { useSelect } from '@wordpress/data';
/**
* Internal dependencies
*/
import { useCanEditEntity } from '../utils/hooks';
import {
useCanEditEntity,
useToolsPanelDropdownMenuProps,
} from '../utils/hooks';

const ELLIPSIS = '…';

Expand All @@ -46,6 +49,8 @@ export default function PostExcerptEditor( {
{ rendered: renderedExcerpt, protected: isProtected } = {},
] = useEntityProp( 'postType', postType, 'excerpt', postId );

const dropdownMenuProps = useToolsPanelDropdownMenuProps();

/**
* Check if the post type supports excerpts.
* Add an exception and return early for the "page" post type,
Expand Down Expand Up @@ -232,6 +237,7 @@ export default function PostExcerptEditor( {
excerptLength: 55,
} );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
hasValue={ () => showMoreOnNewLine !== true }
Expand Down
3 changes: 3 additions & 0 deletions packages/block-library/src/social-link/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { keyboardReturn } from '@wordpress/icons';
* Internal dependencies
*/
import { getIconBySite, getNameBySite } from './social-list';
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

const SocialLinkURLPopover = ( {
url,
Expand Down Expand Up @@ -109,6 +110,7 @@ const SocialLinkEdit = ( {
clientId,
} ) => {
const { url, service, label = '', rel } = attributes;
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
const {
showLabels,
iconColor,
Expand Down Expand Up @@ -200,6 +202,7 @@ const SocialLinkEdit = ( {
resetAll={ () => {
setAttributes( { label: undefined } );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
isShownByDefault
Expand Down
8 changes: 8 additions & 0 deletions packages/block-library/src/social-links/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ import { __ } from '@wordpress/i18n';
import { check } from '@wordpress/icons';
import { useSelect } from '@wordpress/data';

/**
* Internal dependencies
*/
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

const sizeOptions = [
{ name: __( 'Small' ), value: 'has-small-icon-size' },
{ name: __( 'Normal' ), value: 'has-normal-icon-size' },
Expand Down Expand Up @@ -69,6 +74,8 @@ export function SocialLinksEdit( props ) {

const logosOnly = attributes.className?.includes( 'is-style-logos-only' );

const dropdownMenuProps = useToolsPanelDropdownMenuProps();

// Remove icon background color when logos only style is selected or
// restore it when any other style is selected.
const backgroundBackupRef = useRef( {} );
Expand Down Expand Up @@ -207,6 +214,7 @@ export function SocialLinksEdit( props ) {
showLabels: false,
} );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
isShownByDefault
Expand Down
4 changes: 4 additions & 0 deletions packages/block-library/src/table/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import {
isEmptyTableSection,
} from './state';
import { Caption } from '../utils/caption';
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

const ALIGNMENT_CONTROLS = [
{
Expand Down Expand Up @@ -109,6 +110,8 @@ function TableEdit( {
const tableRef = useRef();
const [ hasTableCreated, setHasTableCreated ] = useState( false );

const dropdownMenuProps = useToolsPanelDropdownMenuProps();

/**
* Updates the initial column count used for table creation.
*
Expand Down Expand Up @@ -483,6 +486,7 @@ function TableEdit( {
foot: [],
} );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
hasValue={ () => hasFixedLayout !== true }
Expand Down
7 changes: 7 additions & 0 deletions packages/block-library/src/tag-cloud/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ import {
import ServerSideRender from '@wordpress/server-side-render';
import { store as coreStore } from '@wordpress/core-data';

/**
* Internal dependencies
*/
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';

/**
* Minimum number of tags a user can show using this block.
*
Expand Down Expand Up @@ -51,6 +56,7 @@ function TagCloudEdit( { attributes, setAttributes } ) {
} = attributes;

const [ availableUnits ] = useSettings( 'spacing.units' );
const dropdownMenuProps = useToolsPanelDropdownMenuProps();

// The `pt` unit is used as the default value and is therefore
// always considered an available unit.
Expand Down Expand Up @@ -129,6 +135,7 @@ function TagCloudEdit( { attributes, setAttributes } ) {
largestFontSize: '22pt',
} );
} }
dropdownMenuProps={ dropdownMenuProps }
>
<ToolsPanelItem
hasValue={ () => taxonomy !== 'post_tag' }
Expand Down
Loading