@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 19.3 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/navigation-submenu/edit.js"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tuseBlockEditingMode,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport {\n\tControls,\n\tLinkUI,\n\tupdateAttributes,\n\tuseEntityBinding,\n\tuseIsInvalidLink,\n\tInvalidDraftDisplay,\n\tuseEnableLinkStatusValidation,\n\tuseIsDraggingWithin,\n\tselectLabelText,\n} from '../navigation-link/shared';\nimport {\n\tgetColors,\n\tgetNavigationChildBlockProps,\n} from '../navigation/edit/utils';\nimport { DEFAULT_BLOCK } from '../navigation/constants';\nimport { getSubmenuVisibility } from '../navigation/utils/get-submenu-visibility';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n\t'core/page-list',\n];\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string} [label] Link text.\n * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string} [type] The type such as post, page, tag, category and other custom types.\n * @property {string} [rel] The relationship of the linked URL.\n * @property {number} [id] A post or term id.\n * @property {boolean} [opensInNewTab] Sets link target to _blank when true.\n * @property {string} [url] Link href.\n */\n\nexport default function NavigationSubmenuEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { label, url, description, kind, type, id } = attributes;\n\n\tconst { showSubmenuIcon, maxNestingLevel } = context;\n\tconst blockEditingMode = useBlockEditingMode();\n\n\t// Determine effective submenu visibility with backward compatibility\n\tconst submenuVisibility = getSubmenuVisibility( context );\n\n\t// Force click-only behavior in contentOnly mode to prevent hover dropdowns\n\tconst openSubmenusOnClick =\n\t\tblockEditingMode !== 'default' ? true : submenuVisibility === 'click';\n\n\t// URL binding logic\n\tconst { clearBinding, createBinding } = useEntityBinding( {\n\t\tclientId,\n\t\tattributes,\n\t} );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceBlock } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add text\u2026' );\n\tconst ref = useRef();\n\n\tconst {\n\t\tparentCount,\n\t\tisParentOfSelectedBlock,\n\t\tisImmediateParentOfSelectedBlock,\n\t\thasChildren,\n\t\tselectedBlockHasChildren,\n\t\tonlyDescendantIsEmptyLink,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tlet _onlyDescendantIsEmptyLink;\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst selectedBlockChildren = getBlockOrder( selectedBlockId );\n\n\t\t\t// Check for a single descendant in the submenu. If that block\n\t\t\t// is a link block in a \"placeholder\" state with no label then\n\t\t\t// we can consider as an \"empty\" link.\n\t\t\tif ( selectedBlockChildren?.length === 1 ) {\n\t\t\t\tconst singleBlock = getBlock( selectedBlockChildren[ 0 ] );\n\n\t\t\t\t_onlyDescendantIsEmptyLink =\n\t\t\t\t\tsingleBlock?.name === 'core/navigation-link' &&\n\t\t\t\t\t! singleBlock?.attributes?.label;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tparentCount: getBlockParentsByBlockName(\n\t\t\t\t\tclientId,\n\t\t\t\t\t'core/navigation-submenu'\n\t\t\t\t).length,\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t\tselectedBlockHasChildren: !! selectedBlockChildren?.length,\n\t\t\t\tonlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst validateLinkStatus = useEnableLinkStatusValidation( clientId );\n\n\tconst prevHasChildren = usePrevious( hasChildren );\n\n\t// Check if the submenu's parent link is invalid or draft\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink(\n\t\tkind,\n\t\ttype,\n\t\tid,\n\t\tvalidateLinkStatus\n\t);\n\n\t// Show the LinkControl on mount if the URL is empty\n\t// ( When adding a new menu item)\n\t// This can't be done in the useState call because it conflicts\n\t// with the autofocus behavior of the BlockListBlock component.\n\tuseEffect( () => {\n\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText( ref );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, parentCount > 0 );\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\t// Required to prevent the command center from opening,\n\t\t\t// as it shares the CMD+K shortcut.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/59845.\n\t\t\tevent.preventDefault();\n\t\t\t// If we don't stop propagation, this event bubbles up to the parent submenu item\n\t\t\tevent.stopPropagation();\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: clsx( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t\t'open-on-click': openSubmenusOnClick,\n\t\t\t'open-always': submenuVisibility === 'always',\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\t// Always use overlay colors for submenus.\n\tconst innerBlocksColors = getColors( context, true );\n\n\tconst allowedBlocks =\n\t\tparentCount >= maxNestingLevel\n\t\t\t? ALLOWED_BLOCKS.filter(\n\t\t\t\t\t( blockName ) => blockName !== 'core/navigation-submenu'\n\t\t\t )\n\t\t\t: ALLOWED_BLOCKS;\n\n\tconst navigationChildBlockProps =\n\t\tgetNavigationChildBlockProps( innerBlocksColors );\n\tconst innerBlocksProps = useInnerBlocksProps( navigationChildBlockProps, {\n\t\tallowedBlocks,\n\t\tdefaultBlock: DEFAULT_BLOCK,\n\t\tdirectInsert: true,\n\n\t\t// Ensure block toolbar is not too far removed from item\n\t\t// being edited.\n\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t__experimentalCaptureToolbars: true,\n\n\t\trenderAppender:\n\t\t\tisSelected ||\n\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\thasChildren\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: false,\n\t} );\n\n\tconst ParentElement = openSubmenusOnClick ? 'button' : 'a';\n\n\tfunction transformToLink() {\n\t\tconst newLinkBlock = createBlock( 'core/navigation-link', attributes );\n\t\treplaceBlock( clientId, newLinkBlock );\n\t}\n\n\tuseEffect( () => {\n\t\t// If block becomes empty, transform to Navigation Link.\n\t\tif ( ! hasChildren && prevHasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToLink();\n\t\t}\n\t}, [ hasChildren, prevHasChildren ] );\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ ! openSubmenusOnClick && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"revert\"\n\t\t\t\t\t\ticon={ removeSubmenu }\n\t\t\t\t\t\ttitle={ __( 'Convert to Link' ) }\n\t\t\t\t\t\tonClick={ transformToLink }\n\t\t\t\t\t\tclassName=\"wp-block-navigation__submenu__revert\"\n\t\t\t\t\t\tdisabled={ ! canConvertToLink }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<Controls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<ParentElement className=\"wp-block-navigation-item__content\">\n\t\t\t\t\t{ ! isInvalid && ! isDraft && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { label: labelValue } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ description && (\n\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ( isInvalid || isDraft ) && (\n\t\t\t\t\t\t<InvalidDraftDisplay\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tisInvalid={ isInvalid }\n\t\t\t\t\t\t\tisDraft={ isDraft }\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! openSubmenusOnClick && isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\tsetIsLinkOpen( false );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\t// updateAttributes determines the final state and returns metadata\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tisEntityLink,\n\t\t\t\t\t\t\t\t\tattributes: updatedAttributes,\n\t\t\t\t\t\t\t\t} = updateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Handle URL binding based on the final computed state\n\t\t\t\t\t\t\t\t// Only create bindings for entity links (posts, pages, taxonomies)\n\t\t\t\t\t\t\t\t// Never create bindings for custom links (manual URLs)\n\t\t\t\t\t\t\t\tif ( isEntityLink ) {\n\t\t\t\t\t\t\t\t\tcreateBinding( updatedAttributes );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tclearBinding();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ParentElement>\n\t\t\t\t{ ( showSubmenuIcon || openSubmenusOnClick ) && (\n\t\t\t\t\t<span className=\"wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
"mappings": "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",
"names": ["import_icons", "blockEditorStore", "clsx", "linkIcon"]
}