UNPKG

@wordpress/block-editor

Version:
111 lines (89 loc) 3.09 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.LinkControlSearchItem = void 0; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classnames = _interopRequireDefault(require("classnames")); var _url = require("@wordpress/url"); var _i18n = require("@wordpress/i18n"); var _components = require("@wordpress/components"); var _icons = require("@wordpress/icons"); var _dom = require("@wordpress/dom"); /** * External dependencies */ /** * WordPress dependencies */ const ICONS_MAP = { post: _icons.postList, page: _icons.page, post_tag: _icons.tag, category: _icons.category, attachment: _icons.file }; function SearchItemIcon({ isURL, suggestion }) { let icon = null; if (isURL) { icon = _icons.globe; } else if (suggestion.type in ICONS_MAP) { icon = ICONS_MAP[suggestion.type]; } if (icon) { return (0, _element.createElement)(_icons.Icon, { className: "block-editor-link-control__search-item-icon", icon: icon }); } return null; } const LinkControlSearchItem = ({ itemProps, suggestion, isSelected = false, onClick, isURL = false, searchTerm = '', shouldShowType = false }) => { return (0, _element.createElement)(_components.Button, (0, _extends2.default)({}, itemProps, { onClick: onClick, className: (0, _classnames.default)('block-editor-link-control__search-item', { 'is-selected': isSelected, 'is-url': isURL, 'is-entity': !isURL }) }), (0, _element.createElement)(SearchItemIcon, { suggestion: suggestion, isURL: isURL }), (0, _element.createElement)("span", { className: "block-editor-link-control__search-item-header" }, (0, _element.createElement)("span", { className: "block-editor-link-control__search-item-title" }, (0, _element.createElement)(_components.TextHighlight // The component expects a plain text string. , { text: (0, _dom.__unstableStripHTML)(suggestion.title), highlight: searchTerm })), (0, _element.createElement)("span", { "aria-hidden": !isURL, className: "block-editor-link-control__search-item-info" }, !isURL && ((0, _url.filterURLForDisplay)((0, _url.safeDecodeURI)(suggestion.url)) || ''), isURL && (0, _i18n.__)('Press ENTER to add this link'))), shouldShowType && suggestion.type && (0, _element.createElement)("span", { className: "block-editor-link-control__search-item-type" }, getVisualTypeName(suggestion))); }; exports.LinkControlSearchItem = LinkControlSearchItem; function getVisualTypeName(suggestion) { if (suggestion.isFrontPage) { return 'front page'; } // Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label. return suggestion.type === 'post_tag' ? 'tag' : suggestion.type; } var _default = LinkControlSearchItem; exports.default = _default; //# sourceMappingURL=search-item.js.map