@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 7.37 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/query-controls/index.tsx"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport AuthorSelect from './author-select';\nimport CategorySelect from './category-select';\nimport FormTokenField from '../form-token-field';\nimport RangeControl from '../range-control';\nimport SelectControl from '../select-control';\nimport { VStack } from '../v-stack';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DEFAULT_MIN_ITEMS = 1;\nconst DEFAULT_MAX_ITEMS = 100;\nconst MAX_CATEGORIES_SUGGESTIONS = 20;\nfunction isSingleCategorySelection(props) {\n return 'categoriesList' in props;\n}\nfunction isMultipleCategorySelection(props) {\n return 'categorySuggestions' in props;\n}\nconst defaultOrderByOptions = [{\n label: __('Newest to oldest'),\n value: 'date/desc'\n}, {\n label: __('Oldest to newest'),\n value: 'date/asc'\n}, {\n /* translators: Label for ordering posts by title in ascending order. */\n label: __('A \u2192 Z'),\n value: 'title/asc'\n}, {\n /* translators: Label for ordering posts by title in descending order. */\n label: __('Z \u2192 A'),\n value: 'title/desc'\n}];\n\n/**\n * Controls to query for posts.\n *\n * ```jsx\n * const MyQueryControls = () => (\n * <QueryControls\n * { ...{ maxItems, minItems, numberOfItems, order, orderBy, orderByOptions } }\n * onOrderByChange={ ( newOrderBy ) => {\n * updateQuery( { orderBy: newOrderBy } )\n * }\n * onOrderChange={ ( newOrder ) => {\n * updateQuery( { order: newOrder } )\n * }\n * categoriesList={ categories }\n * selectedCategoryId={ category }\n * onCategoryChange={ ( newCategory ) => {\n * updateQuery( { category: newCategory } )\n * }\n * onNumberOfItemsChange={ ( newNumberOfItems ) => {\n * updateQuery( { numberOfItems: newNumberOfItems } )\n * } }\n * />\n * );\n * ```\n */\nexport function QueryControls({\n authorList,\n selectedAuthorId,\n numberOfItems,\n order,\n orderBy,\n orderByOptions = defaultOrderByOptions,\n maxItems = DEFAULT_MAX_ITEMS,\n minItems = DEFAULT_MIN_ITEMS,\n onAuthorChange,\n onNumberOfItemsChange,\n onOrderChange,\n onOrderByChange,\n // Props for single OR multiple category selection are not destructured here,\n // but instead are destructured inline where necessary.\n ...props\n}) {\n return /*#__PURE__*/_jsx(VStack, {\n spacing: \"4\",\n className: \"components-query-controls\",\n children: [onOrderChange && onOrderByChange && /*#__PURE__*/_jsx(SelectControl, {\n __next40pxDefaultSize: true,\n label: __('Order by'),\n value: orderBy === undefined || order === undefined ? undefined : `${orderBy}/${order}`,\n options: orderByOptions,\n onChange: value => {\n if (typeof value !== 'string') {\n return;\n }\n const [newOrderBy, newOrder] = value.split('/');\n if (newOrder !== order) {\n onOrderChange(newOrder);\n }\n if (newOrderBy !== orderBy) {\n onOrderByChange(newOrderBy);\n }\n }\n }, \"query-controls-order-select\"), isSingleCategorySelection(props) && props.categoriesList && props.onCategoryChange && /*#__PURE__*/_jsx(CategorySelect, {\n __next40pxDefaultSize: true,\n categoriesList: props.categoriesList,\n label: __('Category'),\n noOptionLabel: _x('All', 'categories'),\n selectedCategoryId: props.selectedCategoryId,\n onChange: props.onCategoryChange\n }, \"query-controls-category-select\"), isMultipleCategorySelection(props) && props.categorySuggestions && props.onCategoryChange && /*#__PURE__*/_jsx(FormTokenField, {\n __next40pxDefaultSize: true,\n label: __('Categories'),\n value: props.selectedCategories && props.selectedCategories.map(item => ({\n id: item.id,\n // Keeping the fallback to `item.value` for legacy reasons,\n // even if items of `selectedCategories` should not have a\n // `value` property.\n // @ts-expect-error\n value: item.name || item.value\n })),\n suggestions: Object.keys(props.categorySuggestions),\n onChange: props.onCategoryChange,\n maxSuggestions: MAX_CATEGORIES_SUGGESTIONS\n }, \"query-controls-categories-select\"), onAuthorChange && /*#__PURE__*/_jsx(AuthorSelect, {\n __next40pxDefaultSize: true,\n authorList: authorList,\n label: __('Author'),\n noOptionLabel: _x('All', 'authors'),\n selectedAuthorId: selectedAuthorId,\n onChange: onAuthorChange\n }, \"query-controls-author-select\"), onNumberOfItemsChange && /*#__PURE__*/_jsx(RangeControl, {\n __next40pxDefaultSize: true,\n label: __('Number of items'),\n value: numberOfItems,\n onChange: onNumberOfItemsChange,\n min: minItems,\n max: maxItems,\n required: true\n }, \"query-controls-range-control\")]\n });\n}\nexport default QueryControls;"],
"mappings": "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",
"names": ["_jsx", "SelectControl", "CategorySelect", "FormTokenField", "AuthorSelect", "RangeControl"]
}