@redocly/theme
Version:
Shared UI components lib
121 lines (116 loc) • 5.17 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SearchRecent = SearchRecent;
const React = __importStar(require("react"));
const styled_components_1 = __importDefault(require("styled-components"));
const utils_1 = require("../../core/utils");
const hooks_1 = require("../../core/hooks");
const CloseIcon_1 = require("../../icons/CloseIcon/CloseIcon");
const RecentlyViewedIcon_1 = require("../../icons/RecentlyViewedIcon/RecentlyViewedIcon");
const Button_1 = require("../../components/Button/Button");
function SearchRecent({ onSelect, className }) {
const { items, removeSearchHistoryItem } = (0, hooks_1.useRecentSearches)();
const { useTranslate, useOtelTelemetry } = (0, hooks_1.useThemeHooks)();
const { translate } = useTranslate();
const otelTelemetry = useOtelTelemetry();
if (!items || !items.length)
return null;
const handleOnRemove = (e, item) => {
e.stopPropagation();
removeSearchHistoryItem(item);
otelTelemetry.send({ type: 'search_recent_remove_button.clicked' });
};
const handleKeyDown = (e, item, index) => {
if (e.key === 'Enter') {
onSelect(item, index);
}
};
return (React.createElement(SearchRecentWrapper, { "data-component-name": "Search/SearchRecent", className: className },
React.createElement(SearchRecentTitle, { "data-translation-key": "search.recent" }, translate('search.recent', 'Recent searches')),
React.createElement(SearchRecentItems, null, items.map((item, index) => (React.createElement(SearchRecentItem, { key: item, onClick: () => onSelect(item, index), onKeyDown: (e) => handleKeyDown(e, item, index), tabIndex: 0, role: "link" },
React.createElement(SearchRecentItemWrapper, null,
React.createElement(RecentlyViewedIcon_1.RecentlyViewedIcon, { color: "--search-recent-item-text-color" }),
item),
React.createElement(SearchRecentRemoveButton, { variant: "ghost", icon: React.createElement(CloseIcon_1.CloseIcon, null), onClick: (e) => handleOnRemove(e, item), size: "small" })))))));
}
const SearchRecentWrapper = styled_components_1.default.div `
display: flex;
flex-direction: column;
`;
const SearchRecentTitle = styled_components_1.default.div `
font-size: var(--search-recent-item-title-font-size);
font-weight: var(--search-recent-item-title-font-weight);
line-height: var(--search-recent-item-title-line-height);
color: var(--search-recent-item-title-text-color);
padding: var(--spacing-lg) var(--spacing-lg) var(--spacing-xxs) var(--spacing-lg);
`;
const SearchRecentItems = styled_components_1.default.div `
display: flex;
flex-direction: column;
align-items: flex-start;
`;
const SearchRecentRemoveButton = (0, styled_components_1.default)(Button_1.Button) ``;
const SearchRecentItem = styled_components_1.default.div `
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
font-size: var(--search-recent-item-font-size);
font-weight: var(--search-recent-item-font-weight);
line-height: var(--search-recent-item-line-height);
padding: var(--search-recent-item-padding);
color: var(--search-recent-item-text-color);
cursor: pointer;
${SearchRecentRemoveButton} {
display: none;
}
:hover {
background-color: var(--search-recent-item-bg-color-hover);
color: var(--search-recent-item-text-color-hover);
${SearchRecentRemoveButton} {
display: flex;
padding: 0;
}
}
:focus-visible {
outline: 1px solid var(--search-recent-item-border-color-focused);
background-color: var(--search-recent-item-bg-color-active);
}
@media screen and (min-width: ${utils_1.breakpoints.small}) {
${SearchRecentRemoveButton} {
display: none;
}
}
`;
const SearchRecentItemWrapper = styled_components_1.default.div `
display: flex;
align-items: center;
gap: var(--spacing-sm);
`;
//# sourceMappingURL=SearchRecent.js.map