@talend/react-faceted-search
Version:
87 lines (86 loc) • 2.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.QuickSearchInput = exports.DEFAULT_QUICKSEARCH_OPERATOR = void 0;
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _facetedSearch = require("../facetedSearch.propTypes");
var _reactComponents = require("@talend/react-components");
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const DEFAULT_QUICKSEARCH_OPERATOR = exports.DEFAULT_QUICKSEARCH_OPERATOR = 'containsIgnoreCase';
const getDefaultFacet = (facets = []) => facets.find(({
metadata
}) => metadata.isDefaultForQuickSearch) || facets[0];
const QuickSearchInput = ({
t,
facets,
placeholder,
className,
onSelect = () => {},
facetsFilter,
inputProps,
minLength,
typeaheadProps = {}
}) => {
const defaultFacet = (0, _react.useMemo)(() => getDefaultFacet(facets), [facets]);
const [opened, setOpened] = (0, _react.useState)(false);
const [value, setValue] = (0, _react.useState)('');
if (!facets.length) {
return null;
}
const filteredFacets = facetsFilter ? facetsFilter(value, facets) : facets;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactComponents.Typeahead, {
placeholder: placeholder || t('QUICKSEARCH_PLACEHOLDER', 'Find in a column...'),
onFocus: () => setOpened(value.length >= minLength),
onBlur: () => {
setValue('');
setOpened(false);
},
focusedItemIndex: 2,
onChange: (_, {
value: val
}) => {
setValue(val);
setOpened(val.length >= minLength);
},
onSelect: (_, {
itemIndex
}) => {
if (value.length >= minLength) {
onSelect(filteredFacets[itemIndex] || defaultFacet, value);
setValue('');
setOpened(false);
}
},
icon: {
name: 'talend-search'
},
items: opened ? [{
hint: true,
title: t('QUICKSEARCH_ITEM_TOOLTIP', {
defaultValue: 'Search in'
}),
suggestions: filteredFacets.map(a => (0, _lodash.get)(a, ['properties', 'label'], null))
}] : undefined,
value: value,
role: "searchbox",
className: className,
inputProps: inputProps,
...typeaheadProps
});
};
exports.QuickSearchInput = QuickSearchInput;
QuickSearchInput.propTypes = {
facets: _facetedSearch.badgesFacetedPropTypes,
className: _propTypes.default.string,
placeholder: _propTypes.default.string,
onSelect: _propTypes.default.func,
facetsFilter: _propTypes.default.func,
t: _propTypes.default.func,
inputProps: _propTypes.default.object,
minLength: _propTypes.default.number
};
//# sourceMappingURL=QuickSearchInput.component.js.map