UNPKG

@wordpress/block-library

Version:
90 lines (89 loc) 2.73 kB
import { Fragment, jsx, jsxs } from "react/jsx-runtime"; import clsx from "clsx"; import { AlignmentControl, BlockControls, Warning, useBlockProps } from "@wordpress/block-editor"; import { useState, useEffect } from "@wordpress/element"; import { useSelect } from "@wordpress/data"; import apiFetch from "@wordpress/api-fetch"; import { addQueryArgs } from "@wordpress/url"; import { __, sprintf, _n } from "@wordpress/i18n"; import { store as coreStore } from "@wordpress/core-data"; function PostCommentsLinkEdit({ context, attributes, setAttributes }) { const { textAlign } = attributes; const { postType, postId } = context; const [commentsCount, setCommentsCount] = useState(); const blockProps = useBlockProps({ className: clsx({ [`has-text-align-${textAlign}`]: textAlign }) }); useEffect(() => { if (!postId) { return; } const currentPostId = postId; apiFetch({ path: addQueryArgs("/wp/v2/comments", { post: postId }), parse: false }).then((res) => { if (currentPostId === postId) { setCommentsCount(res.headers.get("X-WP-Total")); } }); }, [postId]); const post = useSelect( (select) => select(coreStore).getEditedEntityRecord( "postType", postType, postId ), [postType, postId] ); if (!post) { return /* @__PURE__ */ jsx("div", { ...blockProps, children: /* @__PURE__ */ jsx(Warning, { children: __("Post Comments Link block: post not found.") }) }); } const { link } = post; let commentsText; if (commentsCount !== void 0) { const commentsNumber = parseInt(commentsCount); if (commentsNumber === 0) { commentsText = __("No comments"); } else { commentsText = sprintf( /* translators: %s: Number of comments */ _n("%s comment", "%s comments", commentsNumber), commentsNumber.toLocaleString() ); } } return /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx(BlockControls, { group: "block", children: /* @__PURE__ */ jsx( AlignmentControl, { value: textAlign, onChange: (nextAlign) => { setAttributes({ textAlign: nextAlign }); } } ) }), /* @__PURE__ */ jsx("div", { ...blockProps, children: link && commentsText !== void 0 ? /* @__PURE__ */ jsx( "a", { href: link + "#comments", onClick: (event) => event.preventDefault(), children: commentsText } ) : /* @__PURE__ */ jsx(Warning, { children: __("Post Comments Link block: post not found.") }) }) ] }); } var edit_default = PostCommentsLinkEdit; export { edit_default as default }; //# sourceMappingURL=edit.js.map