開発ガイドライン
ToolsPanel
は、ドロップダウンメニューを含むヘッダーを持つコンテナを作成します。メニューは、ToolsPanelItem
コンポーネントタイプに一致するパネルの子要素から自動的に生成されます。各メニュー項目は、対応する子要素の表示をオンまたはオフに切り替えることができます。コントロールの onSelect
および onDeselect
コールバックが発火し、ブロックサポートコントロールがオフに切り替えられたときにブロック属性をリセットするなど、子要素に対するより大きな制御が可能になります。子コントロールが初めて表示されるかどうかは、以前に値が設定されていたか、isShownByDefault
プロパティを通じてデフォルトで表示されるようにフラグが立てられているかに依存します。子要素に値があるかどうかを判断するのは、子のプロパティを通じて提供される hasValue
関数によって行われます。ToolsPanelItem
でラップされていないコンポーネントはまだレンダリングされますが、ToolsPanel
メニュー内で表現されたり制御されたりすることはありません。この利点があるシナリオの例としては、パネル内に紹介やヘルプテキストを表示することが挙げられます。
ツールパネルレイアウト
ToolsPanel
は、2列のグリッドレイアウトを持っています。デフォルトでは、パネル内の ToolsPanelItem
コンポーネントは両方の列にまたがるようにスタイリングされており、これは大多数のユースケースに適しています。ヘルプテキストなどのほとんどの非コントロール要素は、関連するコントロールの ToolsPanelItem
の子としてレンダリングされ、追加のスタイリングは必要ありません。要素が複数のコントロール(例:コントラストチェッカー)またはパネル自体(例:パネルの説明)に関連している場合、これらはラッピング ToolsPanelItem
なしでパネルにレンダリングされます。それらはデフォルトで単一の列にしかまたがりません。これが望ましくない場合、これらの要素には小さなスタイルの調整が必要になる可能性があります。例として grid-column: 1 / -1;
を挙げます。以下の使用例では、非-ToolsPanelItem
説明段落、単一行に表示されるべきコントロール、および両方の列にまたがる他のコントロールを示します。
使用法
/**
* External dependencies
*/
import styled from '@emotion/styled';
/**
* WordPress dependencies
*/
import {
BoxControl,
__experimentalToolsPanel as ToolsPanel,
__experimentalToolsPanelItem as ToolsPanelItem,
__experimentalUnitControl as UnitControl,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
const PanelDescription = styled.div`
grid-column: span 2;
const SingleColumnItem = styled( ToolsPanelItem )`
grid-column: span 1;
export function DimensionPanel() {
const [ height, setHeight ] = useState();
const [ width, setWidth ] = useState();
const [ padding, setPadding ] = useState();
const [ margin, setMargin ] = useState();
const resetAll = () => {
setHeight( undefined );
setWidth( undefined );
setPadding( undefined );
setMargin( undefined );
};
return (
<ToolsPanel label={ __( 'Dimensions' ) } resetAll={ resetAll }>
<PanelDescription>
Select dimensions or spacing related settings from the menu for
additional controls.
</PanelDescription>
<SingleColumnItem
hasValue={ () => !! height }
label={ __( 'Height' ) }
onDeselect={ () => setHeight( undefined ) }
isShownByDefault
>
<UnitControl
label={ __( 'Height' ) }
onChange={ setHeight }
value={ height }
/>
</SingleColumnItem>
<SingleColumnItem
hasValue={ () => !! width }
label={ __( 'Width' ) }
onDeselect={ () => setWidth( undefined ) }
isShownByDefault
>
<UnitControl
label={ __( 'Width' ) }
onChange={ setWidth }
value={ width }
/>
</SingleColumnItem>
<ToolsPanelItem
hasValue={ () => !! padding }
label={ __( 'Padding' ) }
onDeselect={ () => setPadding( undefined ) }
>
<BoxControl
label={ __( 'Padding' ) }
onChange={ setPadding }
values={ padding }
allowReset={ false }
/>
</ToolsPanelItem>
<ToolsPanelItem
hasValue={ () => !! margin }
label={ __( 'Margin' ) }
onDeselect={ () => setMargin( undefined ) }
>
<BoxControl
label={ __( 'Margin' ) }
onChange={ setMargin }
values={ margin }
allowReset={ false }
/>
</ToolsPanelItem>
</ToolsPanel>
);
}
プロパティ
hasInnerWrapper: boolean
このツールパネル内のアイテムが内部ラッパー要素内に含まれることを示します。これにより、パネルはそれらを適切にレイアウトできます。
dropdownMenuProps: {}
パネルの DropdownMenu
を構成するためのポップオーバープロパティ。
headingLevel: 1 | 2 | 3 | 4 | 5 | 6 | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’
パネルのヘッダーの見出しレベル。
label: string
パネルのヘッダー内に表示され、パネルのドロップダウンメニューの aria-label
として表示されるテキスト。
panelId: string | null
panelId
が設定されている場合、それは ToolsPanelContext
を通じて渡され、パネルアイテムを制限するために使用されます。panelId
が設定されている場合、アイテムは panelId
が明示的に null
であるか、アイテムの panelId
が正確に一致する場合にのみ登録できます。
resetAll: ( filters?: ResetAllFilter[] ) => void
Reset all
メニューオプションが選択されたときに呼び出される関数。引数として、すべての有効な登録された ToolsPanelItems
の resetAllFilter
コールバックを含む配列を受け取ります。
shouldRenderPlaceholderItems: boolean
ToolsPanel
に対して、すべての ToolsPanelItem
子要素がオフに切り替えられ隠されたときにプレースホルダーコンテンツ(null
の代わりに)をレンダリングするべきであることを示します。プレースホルダーアイテムは、ToolsPanelItem
を通じて通常表示される className
を適用しないことに注意してください。
- 必須: いいえ
- デフォルト:
false