UNPKG

@wordpress/block-editor

Version:
98 lines (94 loc) 3.68 kB
/** * WordPress dependencies */ import { __, sprintf } from '@wordpress/i18n'; import { MenuGroup } from '@wordpress/components'; /** * External dependencies */ import clsx from 'clsx'; /** * Internal dependencies */ import LinkControlSearchCreate from './search-create-button'; import LinkControlSearchItem from './search-item'; import { CREATE_TYPE, LINK_ENTRY_TYPES } from './constants'; import deprecated from '@wordpress/deprecated'; import { jsx as _jsx } from "react/jsx-runtime"; function LinkControlSearchResults({ withCreateSuggestion, currentInputValue, handleSuggestionClick, suggestionsListProps, buildSuggestionItemProps, suggestions, selectedSuggestion, isLoading, isInitialSuggestions, createSuggestionButtonText, suggestionsQuery }) { const resultsListClasses = clsx('block-editor-link-control__search-results', { 'is-loading': isLoading }); const isSingleDirectEntryResult = suggestions.length === 1 && LINK_ENTRY_TYPES.includes(suggestions[0].type); const shouldShowCreateSuggestion = withCreateSuggestion && !isSingleDirectEntryResult && !isInitialSuggestions; // If the query has a specified type, then we can skip showing them in the result. See #24839. const shouldShowSuggestionsTypes = !suggestionsQuery?.type; const labelText = isInitialSuggestions ? __('Suggestions') : sprintf(/* translators: %s: search term. */ __('Search results for "%s"'), currentInputValue); return /*#__PURE__*/_jsx("div", { className: "block-editor-link-control__search-results-wrapper", children: /*#__PURE__*/_jsx("div", { ...suggestionsListProps, className: resultsListClasses, "aria-label": labelText, children: /*#__PURE__*/_jsx(MenuGroup, { children: suggestions.map((suggestion, index) => { if (shouldShowCreateSuggestion && CREATE_TYPE === suggestion.type) { return /*#__PURE__*/_jsx(LinkControlSearchCreate, { searchTerm: currentInputValue, buttonText: createSuggestionButtonText, onClick: () => handleSuggestionClick(suggestion) // Intentionally only using `type` here as // the constant is enough to uniquely // identify the single "CREATE" suggestion. , itemProps: buildSuggestionItemProps(suggestion, index), isSelected: index === selectedSuggestion }, suggestion.type); } // If we're not handling "Create" suggestions above then // we don't want them in the main results so exit early. if (CREATE_TYPE === suggestion.type) { return null; } return /*#__PURE__*/_jsx(LinkControlSearchItem, { itemProps: buildSuggestionItemProps(suggestion, index), suggestion: suggestion, index: index, onClick: () => { handleSuggestionClick(suggestion); }, isSelected: index === selectedSuggestion, isURL: LINK_ENTRY_TYPES.includes(suggestion.type), searchTerm: currentInputValue, shouldShowType: shouldShowSuggestionsTypes, isFrontPage: suggestion?.isFrontPage, isBlogHome: suggestion?.isBlogHome }, `${suggestion.id}-${suggestion.type}`); }) }) }) }); } export default LinkControlSearchResults; export const __experimentalLinkControlSearchResults = props => { deprecated('wp.blockEditor.__experimentalLinkControlSearchResults', { since: '6.8' }); return /*#__PURE__*/_jsx(LinkControlSearchResults, { ...props }); }; //# sourceMappingURL=search-results.js.map