UNPKG

@talend/react-faceted-search

Version:
87 lines (86 loc) 2.76 kB
"use strict"; 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