@wordpress/block-editor
Version:
111 lines (89 loc) • 3.09 kB
JavaScript
;
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