UNPKG

@wordpress/block-library

Version:
132 lines (131 loc) 4.14 kB
// packages/block-library/src/post-author-name/edit.js import clsx from "clsx"; import { AlignmentControl, BlockControls, InspectorControls, useBlockProps } from "@wordpress/block-editor"; import { useSelect } from "@wordpress/data"; import { __, sprintf } from "@wordpress/i18n"; import { store as coreStore } from "@wordpress/core-data"; import { ToggleControl, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem } from "@wordpress/components"; import { useToolsPanelDropdownMenuProps } from "../utils/hooks"; import { Fragment, jsx, jsxs } from "react/jsx-runtime"; function PostAuthorNameEdit({ context: { postType, postId }, attributes: { textAlign, isLink, linkTarget }, setAttributes }) { const { authorName, supportsAuthor } = useSelect( (select) => { const { getEditedEntityRecord, getUser, getPostType } = select(coreStore); const _authorId = getEditedEntityRecord( "postType", postType, postId )?.author; return { authorName: _authorId ? getUser(_authorId) : null, supportsAuthor: getPostType(postType)?.supports?.author ?? false }; }, [postType, postId] ); const blockProps = useBlockProps({ className: clsx({ [`has-text-align-${textAlign}`]: textAlign }) }); const displayName = authorName?.name || __("Author Name"); const displayAuthor = isLink ? /* @__PURE__ */ jsx( "a", { href: "#author-pseudo-link", onClick: (event) => event.preventDefault(), className: "wp-block-post-author-name__link", children: displayName } ) : displayName; const dropdownMenuProps = useToolsPanelDropdownMenuProps(); return /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx(BlockControls, { group: "block", children: /* @__PURE__ */ jsx( AlignmentControl, { value: textAlign, onChange: (nextAlign) => { setAttributes({ textAlign: nextAlign }); } } ) }), /* @__PURE__ */ jsx(InspectorControls, { children: /* @__PURE__ */ jsxs( ToolsPanel, { label: __("Settings"), resetAll: () => { setAttributes({ isLink: false, linkTarget: "_self" }); }, dropdownMenuProps, children: [ /* @__PURE__ */ jsx( ToolsPanelItem, { label: __("Link to author archive"), isShownByDefault: true, hasValue: () => isLink, onDeselect: () => setAttributes({ isLink: false }), children: /* @__PURE__ */ jsx( ToggleControl, { __nextHasNoMarginBottom: true, label: __("Link to author archive"), onChange: () => setAttributes({ isLink: !isLink }), checked: isLink } ) } ), isLink && /* @__PURE__ */ jsx( ToolsPanelItem, { label: __("Open in new tab"), isShownByDefault: true, hasValue: () => linkTarget !== "_self", onDeselect: () => setAttributes({ linkTarget: "_self" }), children: /* @__PURE__ */ jsx( ToggleControl, { __nextHasNoMarginBottom: true, label: __("Open in new tab"), onChange: (value) => setAttributes({ linkTarget: value ? "_blank" : "_self" }), checked: linkTarget === "_blank" } ) } ) ] } ) }), /* @__PURE__ */ jsx("div", { ...blockProps, children: !supportsAuthor && postType !== void 0 ? sprintf( // translators: %s: Name of the post type e.g: "post". __( "This post type (%s) does not support the author." ), postType ) : displayAuthor }) ] }); } var edit_default = PostAuthorNameEdit; export { edit_default as default }; //# sourceMappingURL=edit.js.map