@wordpress/block-library
Version:
Block library for the WordPress editor.
147 lines (127 loc) • 4.83 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = PostTermsEdit;
var _element = require("@wordpress/element");
var _classnames = _interopRequireDefault(require("classnames"));
var _lodash = require("lodash");
var _blockEditor = require("@wordpress/block-editor");
var _blocks = require("@wordpress/blocks");
var _components = require("@wordpress/components");
var _data = require("@wordpress/data");
var _i18n = require("@wordpress/i18n");
var _coreData = require("@wordpress/core-data");
var _usePostTerms = _interopRequireDefault(require("./use-post-terms"));
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Allowed formats for the prefix and suffix fields.
const ALLOWED_FORMATS = ['core/bold', 'core/image', 'core/italic', 'core/link', 'core/strikethrough', 'core/text-color'];
function PostTermsEdit(_ref) {
var _selectedTerm$labels;
let {
attributes,
clientId,
context,
isSelected,
setAttributes,
insertBlocksAfter
} = _ref;
const {
term,
textAlign,
separator,
prefix,
suffix
} = attributes;
const {
postId,
postType
} = context;
const selectedTerm = (0, _data.useSelect)(select => {
var _taxonomy$visibility;
if (!term) return {};
const {
getTaxonomy
} = select(_coreData.store);
const taxonomy = getTaxonomy(term);
return taxonomy !== null && taxonomy !== void 0 && (_taxonomy$visibility = taxonomy.visibility) !== null && _taxonomy$visibility !== void 0 && _taxonomy$visibility.publicly_queryable ? taxonomy : {};
}, [term]);
const {
postTerms,
hasPostTerms,
isLoading
} = (0, _usePostTerms.default)({
postId,
term: selectedTerm
});
const hasPost = postId && postType;
const blockInformation = (0, _blockEditor.useBlockDisplayInformation)(clientId);
const blockProps = (0, _blockEditor.useBlockProps)({
className: (0, _classnames.default)({
[`has-text-align-${textAlign}`]: textAlign,
[`taxonomy-${term}`]: term
})
});
if (!hasPost || !term) {
return (0, _element.createElement)("div", blockProps, blockInformation.title);
}
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.BlockControls, null, (0, _element.createElement)(_blockEditor.AlignmentToolbar, {
value: textAlign,
onChange: nextAlign => {
setAttributes({
textAlign: nextAlign
});
}
})), (0, _element.createElement)(_blockEditor.InspectorControls, {
__experimentalGroup: "advanced"
}, (0, _element.createElement)(_components.TextControl, {
autoComplete: "off",
label: (0, _i18n.__)('Separator'),
value: separator || '',
onChange: nextValue => {
setAttributes({
separator: nextValue
});
},
help: (0, _i18n.__)('Enter character(s) used to separate terms.')
})), (0, _element.createElement)("div", blockProps, isLoading && (0, _element.createElement)(_components.Spinner, null), !isLoading && hasPostTerms && (isSelected || prefix) && (0, _element.createElement)(_blockEditor.RichText, {
allowedFormats: ALLOWED_FORMATS,
className: "wp-block-post-terms__prefix",
multiline: false,
"aria-label": (0, _i18n.__)('Prefix'),
placeholder: (0, _i18n.__)('Prefix') + ' ',
value: prefix,
onChange: value => setAttributes({
prefix: value
}),
tagName: "span"
}), !isLoading && hasPostTerms && postTerms.map(postTerm => (0, _element.createElement)("a", {
key: postTerm.id,
href: postTerm.link,
onClick: event => event.preventDefault()
}, (0, _lodash.unescape)(postTerm.name))).reduce((prev, curr) => (0, _element.createElement)(_element.Fragment, null, prev, (0, _element.createElement)("span", {
className: "wp-block-post-terms__separator"
}, separator || ' '), curr)), !isLoading && !hasPostTerms && ((selectedTerm === null || selectedTerm === void 0 ? void 0 : (_selectedTerm$labels = selectedTerm.labels) === null || _selectedTerm$labels === void 0 ? void 0 : _selectedTerm$labels.no_terms) || (0, _i18n.__)('Term items not found.')), !isLoading && hasPostTerms && (isSelected || suffix) && (0, _element.createElement)(_blockEditor.RichText, {
allowedFormats: ALLOWED_FORMATS,
className: "wp-block-post-terms__suffix",
multiline: false,
"aria-label": (0, _i18n.__)('Suffix'),
placeholder: ' ' + (0, _i18n.__)('Suffix'),
value: suffix,
onChange: value => setAttributes({
suffix: value
}),
tagName: "span",
__unstableOnSplitAtEnd: () => insertBlocksAfter((0, _blocks.createBlock)((0, _blocks.getDefaultBlockName)()))
})));
}
//# sourceMappingURL=edit.js.map
;