UNPKG

@gechiui/block-editor

Version:
102 lines (93 loc) 2.38 kB
/** * External dependencies */ import classnames from 'classnames'; /** * GeChiUI dependencies */ import { Button, Tooltip, VisuallyHidden } from '@gechiui/components'; import { forwardRef } from '@gechiui/element'; import { _x, sprintf } from '@gechiui/i18n'; import { Icon, plus } from '@gechiui/icons'; import deprecated from '@gechiui/deprecated'; /** * Internal dependencies */ import Inserter from '../inserter'; function ButtonBlockAppender( { rootClientId, className, onFocus, tabIndex }, ref ) { return ( <Inserter position="bottom center" rootClientId={ rootClientId } __experimentalIsQuick renderToggle={ ( { onToggle, disabled, isOpen, blockTitle, hasSingleBlockType, } ) => { let label; if ( hasSingleBlockType ) { label = sprintf( // translators: %s: the name of the block when there is only one _x( 'Add %s', 'directly add the only allowed block' ), blockTitle ); } else { label = _x( 'Add block', 'Generic label for block inserter button' ); } const isToggleButton = ! hasSingleBlockType; let inserterButton = ( <Button ref={ ref } onFocus={ onFocus } tabIndex={ tabIndex } className={ classnames( className, 'block-editor-button-block-appender' ) } onClick={ onToggle } aria-haspopup={ isToggleButton ? 'true' : undefined } aria-expanded={ isToggleButton ? isOpen : undefined } disabled={ disabled } label={ label } > { ! hasSingleBlockType && ( <VisuallyHidden as="span">{ label }</VisuallyHidden> ) } <Icon icon={ plus } /> </Button> ); if ( isToggleButton || hasSingleBlockType ) { inserterButton = ( <Tooltip text={ label }>{ inserterButton }</Tooltip> ); } return inserterButton; } } isAppender /> ); } /** * Use `ButtonBlockAppender` instead. * * @deprecated */ export const ButtonBlockerAppender = forwardRef( ( props, ref ) => { deprecated( `gc.blockEditor.ButtonBlockerAppender`, { alternative: 'gc.blockEditor.ButtonBlockAppender', } ); return ButtonBlockAppender( props, ref ); } ); /** * @see https://github.com/GeChiUI/gutenberg/blob/HEAD/packages/block-editor/src/components/button-block-appender/README.md */ export default forwardRef( ButtonBlockAppender );