@wordpress/block-library
Version:
Block library for the WordPress editor.
70 lines (68 loc) • 1.94 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = UserControl;
var _i18n = require("@wordpress/i18n");
var _components = require("@wordpress/components");
var _data = require("@wordpress/data");
var _coreData = require("@wordpress/core-data");
var _element = require("@wordpress/element");
var _compose = require("@wordpress/compose");
var _htmlEntities = require("@wordpress/html-entities");
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
const AUTHORS_QUERY = {
who: 'authors',
per_page: 100,
_fields: 'id,name',
context: 'view'
};
function UserControl({
value,
onChange
}) {
const [filterValue, setFilterValue] = (0, _element.useState)('');
const {
authors,
isLoading
} = (0, _data.useSelect)(select => {
const {
getUsers,
isResolving
} = select(_coreData.store);
const query = {
...AUTHORS_QUERY
};
if (filterValue) {
query.search = filterValue;
query.search_columns = ['name'];
}
return {
authors: getUsers(query),
isLoading: isResolving('getUsers', [query])
};
}, [filterValue]);
const options = (0, _element.useMemo)(() => {
return (authors !== null && authors !== void 0 ? authors : []).map(author => {
return {
value: author.id,
label: (0, _htmlEntities.decodeEntities)(author.name)
};
});
}, [authors]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ComboboxControl, {
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
label: (0, _i18n.__)('User'),
help: (0, _i18n.__)('Select the avatar user to display, if it is blank it will use the post/page author.'),
value: value,
onChange: onChange,
options: options,
onFilterValueChange: (0, _compose.debounce)(setFilterValue, 300),
isLoading: isLoading
});
}
//# sourceMappingURL=user-control.js.map
;