@wordpress/block-library
Version:
Block library for the WordPress editor.
170 lines (153 loc) • 5 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _classnames = _interopRequireDefault(require("classnames"));
var _blockEditor = require("@wordpress/block-editor");
var _components = require("@wordpress/components");
var _data = require("@wordpress/data");
var _i18n = require("@wordpress/i18n");
var _coreData = require("@wordpress/core-data");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
function PostAuthorEdit(_ref) {
let {
isSelected,
context: {
postType,
postId,
queryId
},
attributes,
setAttributes
} = _ref;
const isDescendentOfQueryLoop = Number.isFinite(queryId);
const {
authorId,
authorDetails,
authors
} = (0, _data.useSelect)(select => {
var _getEditedEntityRecor;
const {
getEditedEntityRecord,
getUser,
getUsers
} = select(_coreData.store);
const _authorId = (_getEditedEntityRecor = getEditedEntityRecord('postType', postType, postId)) === null || _getEditedEntityRecor === void 0 ? void 0 : _getEditedEntityRecor.author;
return {
authorId: _authorId,
authorDetails: _authorId ? getUser(_authorId) : null,
authors: getUsers({
who: 'authors'
})
};
}, [postType, postId]);
const {
editEntityRecord
} = (0, _data.useDispatch)(_coreData.store);
const {
textAlign,
showAvatar,
showBio,
byline
} = attributes;
const avatarSizes = [];
if (authorDetails) {
Object.keys(authorDetails.avatar_urls).forEach(size => {
avatarSizes.push({
value: size,
label: `${size} x ${size}`
});
});
}
const blockProps = (0, _blockEditor.useBlockProps)({
className: (0, _classnames.default)({
[`has-text-align-${textAlign}`]: textAlign
})
});
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.InspectorControls, null, (0, _element.createElement)(_components.PanelBody, {
title: (0, _i18n.__)('Settings')
}, !!postId && !isDescendentOfQueryLoop && !!(authors !== null && authors !== void 0 && authors.length) && (0, _element.createElement)(_components.SelectControl, {
label: (0, _i18n.__)('Author'),
value: authorId,
options: authors.map(_ref2 => {
let {
id,
name
} = _ref2;
return {
value: id,
label: name
};
}),
onChange: nextAuthorId => {
editEntityRecord('postType', postType, postId, {
author: nextAuthorId
});
}
}), (0, _element.createElement)(_components.ToggleControl, {
label: (0, _i18n.__)('Show avatar'),
checked: showAvatar,
onChange: () => setAttributes({
showAvatar: !showAvatar
})
}), showAvatar && (0, _element.createElement)(_components.SelectControl, {
label: (0, _i18n.__)('Avatar size'),
value: attributes.avatarSize,
options: avatarSizes,
onChange: size => {
setAttributes({
avatarSize: Number(size)
});
}
}), (0, _element.createElement)(_components.ToggleControl, {
label: (0, _i18n.__)('Show bio'),
checked: showBio,
onChange: () => setAttributes({
showBio: !showBio
})
}))), (0, _element.createElement)(_blockEditor.BlockControls, {
group: "block"
}, (0, _element.createElement)(_blockEditor.AlignmentControl, {
value: textAlign,
onChange: nextAlign => {
setAttributes({
textAlign: nextAlign
});
}
})), (0, _element.createElement)("div", blockProps, showAvatar && authorDetails && (0, _element.createElement)("div", {
className: "wp-block-post-author__avatar"
}, (0, _element.createElement)("img", {
width: attributes.avatarSize,
src: authorDetails.avatar_urls[attributes.avatarSize],
alt: authorDetails.name
})), (0, _element.createElement)("div", {
className: "wp-block-post-author__content"
}, (!_blockEditor.RichText.isEmpty(byline) || isSelected) && (0, _element.createElement)(_blockEditor.RichText, {
className: "wp-block-post-author__byline",
multiline: false,
"aria-label": (0, _i18n.__)('Post author byline text'),
placeholder: (0, _i18n.__)('Write byline…'),
value: byline,
onChange: value => setAttributes({
byline: value
})
}), (0, _element.createElement)("p", {
className: "wp-block-post-author__name"
}, (authorDetails === null || authorDetails === void 0 ? void 0 : authorDetails.name) || (0, _i18n.__)('Post Author')), showBio && (0, _element.createElement)("p", {
className: "wp-block-post-author__bio",
dangerouslySetInnerHTML: {
__html: authorDetails === null || authorDetails === void 0 ? void 0 : authorDetails.description
}
}))));
}
var _default = PostAuthorEdit;
exports.default = _default;
//# sourceMappingURL=edit.js.map
;