UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 7.61 kB
{ "version": 3, "sources": ["../../src/post-terms/edit.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentToolbar,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tuseBlockDisplayInformation,\n\tRichText,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { Spinner, TextControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport usePostTerms from './use-post-terms';\n\n// Allowed formats for the prefix and suffix fields.\nconst ALLOWED_FORMATS = [\n\t'core/bold',\n\t'core/image',\n\t'core/italic',\n\t'core/link',\n\t'core/strikethrough',\n\t'core/text-color',\n];\n\nexport default function PostTermsEdit( {\n\tattributes,\n\tclientId,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { term, textAlign, separator, prefix, suffix } = attributes;\n\tconst { postId, postType } = context;\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst showControls = blockEditingMode === 'default';\n\n\tconst selectedTerm = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! term ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getTaxonomy } = select( coreStore );\n\t\t\tconst taxonomy = getTaxonomy( term );\n\t\t\treturn taxonomy?.visibility?.publicly_queryable ? taxonomy : {};\n\t\t},\n\t\t[ term ]\n\t);\n\tconst { postTerms, hasPostTerms, isLoading } = usePostTerms( {\n\t\tpostId,\n\t\tterm: selectedTerm,\n\t} );\n\tconst hasPost = postId && postType;\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t[ `taxonomy-${ term }` ]: term,\n\t\t} ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ showControls && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<AlignmentToolbar\n\t\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tlabel={ __( 'Separator' ) }\n\t\t\t\t\tvalue={ separator || '' }\n\t\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\t\tsetAttributes( { separator: nextValue } );\n\t\t\t\t\t} }\n\t\t\t\t\thelp={ __( 'Enter character(s) used to separate terms.' ) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ isLoading && hasPost && <Spinner /> }\n\t\t\t\t{ ! isLoading && ( isSelected || prefix ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier=\"prefix\"\n\t\t\t\t\t\tallowedFormats={ ALLOWED_FORMATS }\n\t\t\t\t\t\tclassName=\"wp-block-post-terms__prefix\"\n\t\t\t\t\t\taria-label={ __( 'Prefix' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Prefix' ) + ' ' }\n\t\t\t\t\t\tvalue={ prefix }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { prefix: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ( ! hasPost || ! term ) && (\n\t\t\t\t\t<span>{ blockInformation.title }</span>\n\t\t\t\t) }\n\t\t\t\t{ hasPost &&\n\t\t\t\t\t! isLoading &&\n\t\t\t\t\thasPostTerms &&\n\t\t\t\t\tpostTerms\n\t\t\t\t\t\t.map( ( postTerm ) => (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={ postTerm.id }\n\t\t\t\t\t\t\t\thref={ postTerm.link }\n\t\t\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t\t\t\trel=\"tag\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ decodeEntities( postTerm.name ) }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) )\n\t\t\t\t\t\t.reduce( ( prev, curr ) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ prev }\n\t\t\t\t\t\t\t\t<span className=\"wp-block-post-terms__separator\">\n\t\t\t\t\t\t\t\t\t{ separator || ' ' }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{ curr }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) ) }\n\t\t\t\t{ hasPost &&\n\t\t\t\t\t! isLoading &&\n\t\t\t\t\t! hasPostTerms &&\n\t\t\t\t\t( selectedTerm?.labels?.no_terms ||\n\t\t\t\t\t\t__( 'Term items not found.' ) ) }\n\t\t\t\t{ ! isLoading && ( isSelected || suffix ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier=\"suffix\"\n\t\t\t\t\t\tallowedFormats={ ALLOWED_FORMATS }\n\t\t\t\t\t\tclassName=\"wp-block-post-terms__suffix\"\n\t\t\t\t\t\taria-label={ __( 'Suffix' ) }\n\t\t\t\t\t\tplaceholder={ ' ' + __( 'Suffix' ) }\n\t\t\t\t\t\tvalue={ suffix }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { suffix: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"], "mappings": "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", "names": ["coreStore", "usePostTerms", "clsx"] }