@wordpress/components
Version:
UI components for WordPress.
113 lines (101 loc) • 3.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = QueryControls;
var _element = require("@wordpress/element");
var _i18n = require("@wordpress/i18n");
var _categorySelect = _interopRequireDefault(require("./category-select"));
var _ = require("../");
var _authorSelect = _interopRequireDefault(require("./author-select"));
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const DEFAULT_MIN_ITEMS = 1;
const DEFAULT_MAX_ITEMS = 100;
const MAX_CATEGORIES_SUGGESTIONS = 20;
function QueryControls({
authorList,
selectedAuthorId,
categoriesList,
selectedCategoryId,
categorySuggestions,
selectedCategories,
numberOfItems,
order,
orderBy,
maxItems = DEFAULT_MAX_ITEMS,
minItems = DEFAULT_MIN_ITEMS,
onCategoryChange,
onAuthorChange,
onNumberOfItemsChange,
onOrderChange,
onOrderByChange
}) {
return [onOrderChange && onOrderByChange && (0, _element.createElement)(_.SelectControl, {
key: "query-controls-order-select",
label: (0, _i18n.__)('Order by'),
value: `${orderBy}/${order}`,
options: [{
label: (0, _i18n.__)('Newest to oldest'),
value: 'date/desc'
}, {
label: (0, _i18n.__)('Oldest to newest'),
value: 'date/asc'
}, {
/* translators: label for ordering posts by title in ascending order */
label: (0, _i18n.__)('A → Z'),
value: 'title/asc'
}, {
/* translators: label for ordering posts by title in descending order */
label: (0, _i18n.__)('Z → A'),
value: 'title/desc'
}],
onChange: value => {
const [newOrderBy, newOrder] = value.split('/');
if (newOrder !== order) {
onOrderChange(newOrder);
}
if (newOrderBy !== orderBy) {
onOrderByChange(newOrderBy);
}
}
}), categoriesList && onCategoryChange && (0, _element.createElement)(_categorySelect.default, {
key: "query-controls-category-select",
categoriesList: categoriesList,
label: (0, _i18n.__)('Category'),
noOptionLabel: (0, _i18n.__)('All'),
selectedCategoryId: selectedCategoryId,
onChange: onCategoryChange
}), categorySuggestions && onCategoryChange && (0, _element.createElement)(_.FormTokenField, {
key: "query-controls-categories-select",
label: (0, _i18n.__)('Categories'),
value: selectedCategories && selectedCategories.map(item => ({
id: item.id,
value: item.name || item.value
})),
suggestions: Object.keys(categorySuggestions),
onChange: onCategoryChange,
maxSuggestions: MAX_CATEGORIES_SUGGESTIONS
}), onAuthorChange && (0, _element.createElement)(_authorSelect.default, {
key: "query-controls-author-select",
authorList: authorList,
label: (0, _i18n.__)('Author'),
noOptionLabel: (0, _i18n.__)('All'),
selectedAuthorId: selectedAuthorId,
onChange: onAuthorChange
}), onNumberOfItemsChange && (0, _element.createElement)(_.RangeControl, {
key: "query-controls-range-control",
label: (0, _i18n.__)('Number of items'),
value: numberOfItems,
onChange: onNumberOfItemsChange,
min: minItems,
max: maxItems,
required: true
})];
}
//# sourceMappingURL=index.js.map