@wordpress/block-library
Version:
Block library for the WordPress editor.
66 lines (64 loc) • 2.19 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { createElement, Fragment } from "@wordpress/element";
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* WordPress dependencies
*/
import { useSelect } from '@wordpress/data';
import { useEntityProp, store as coreStore } from '@wordpress/core-data';
import { AlignmentControl, useBlockProps, BlockControls, RichText } from '@wordpress/block-editor';
import { __ } from '@wordpress/i18n';
import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
export default function SiteTaglineEdit(_ref) {
let {
attributes,
setAttributes,
insertBlocksAfter
} = _ref;
const {
textAlign
} = attributes;
const [siteTagline, setSiteTagline] = useEntityProp('root', 'site', 'description');
const {
canUserEdit,
readOnlySiteTagLine
} = useSelect(select => {
const {
canUser,
getEntityRecord
} = select(coreStore);
const siteData = getEntityRecord('root', '__unstableBase');
return {
canUserEdit: canUser('update', 'settings'),
readOnlySiteTagLine: siteData === null || siteData === void 0 ? void 0 : siteData.description
};
}, []);
const blockProps = useBlockProps({
className: classnames({
[`has-text-align-${textAlign}`]: textAlign,
'wp-block-site-tagline__placeholder': !canUserEdit && !readOnlySiteTagLine
})
});
const siteTaglineContent = canUserEdit ? createElement(RichText, _extends({
allowedFormats: [],
onChange: setSiteTagline,
"aria-label": __('Site tagline text'),
placeholder: __('Write site tagline…'),
tagName: "p",
value: siteTagline,
disableLineBreaks: true,
__unstableOnSplitAtEnd: () => insertBlocksAfter(createBlock(getDefaultBlockName()))
}, blockProps)) : createElement("p", blockProps, readOnlySiteTagLine || __('Site Tagline placeholder'));
return createElement(Fragment, null, createElement(BlockControls, {
group: "block"
}, createElement(AlignmentControl, {
onChange: newAlign => setAttributes({
textAlign: newAlign
}),
value: textAlign
})), siteTaglineContent);
}
//# sourceMappingURL=edit.js.map