@cbinsights/fds
Version:
Form: A design system by CB Insights
48 lines (41 loc) • 1.56 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _match = _interopRequireDefault(require("autosuggest-highlight/match"));
var _parse = _interopRequireDefault(require("autosuggest-highlight/parse"));
var HighlightedText = function HighlightedText(_ref) {
var suggestion = _ref.suggestion,
_ref$query = _ref.query,
query = _ref$query === void 0 ? '' : _ref$query,
className = _ref.className,
children = _ref.children;
if (!suggestion) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
var matches = (0, _match.default)(suggestion, query, {
findAllOccurrences: true
});
var parts = (0, _parse.default)(suggestion, matches);
return /*#__PURE__*/_react.default.createElement("span", {
className: className,
"data-testid": "smart-input-highlighted-text"
}, parts.map(function (part, index) {
return part.highlight ? /*#__PURE__*/_react.default.createElement("span", {
key: String(index),
style: {
fontWeight: 700
},
"data-testid": "highlighted-text"
}, part.text) : /*#__PURE__*/_react.default.createElement("strong", {
key: String(index),
style: {
fontWeight: 300
},
"data-testid": "not-highlighted-text"
}, part.text);
}), children);
};
var _default = HighlightedText;
exports.default = _default;