UNPKG

react-instantsearch

Version:
108 lines (104 loc) 4.7 kB
'use strict'; var _object_spread = require('@swc/helpers/_/_object_spread'); var _object_spread_props = require('@swc/helpers/_/_object_spread_props'); var _object_without_properties = require('@swc/helpers/_/_object_without_properties'); var _sliced_to_array = require('@swc/helpers/_/_sliced_to_array'); var React = require('react'); var reactInstantsearchCore = require('react-instantsearch-core'); var RefinementList$1 = require('../ui/RefinementList.js'); var SearchBox = require('../ui/SearchBox.js'); function RefinementList(_0) { var searchable = _0.searchable, searchablePlaceholder = _0.searchablePlaceholder, _0_searchableSelectOnSubmit = _0.searchableSelectOnSubmit, searchableSelectOnSubmit = _0_searchableSelectOnSubmit === void 0 ? true : _0_searchableSelectOnSubmit, attribute = _0.attribute, operator = _0.operator, limit = _0.limit, showMore = _0.showMore, showMoreLimit = _0.showMoreLimit, sortBy = _0.sortBy, escapeFacetValues = _0.escapeFacetValues, transformItems = _0.transformItems, translations = _0.translations, props = _object_without_properties._(_0, [ "searchable", "searchablePlaceholder", "searchableSelectOnSubmit", "attribute", "operator", "limit", "showMore", "showMoreLimit", "sortBy", "escapeFacetValues", "transformItems", "translations" ]); var _useRefinementList = reactInstantsearchCore.useRefinementList({ attribute: attribute, operator: operator, limit: limit, showMore: showMore, showMoreLimit: showMoreLimit, sortBy: sortBy, escapeFacetValues: escapeFacetValues, transformItems: transformItems }, { $$widgetType: 'ais.refinementList' }), canRefine = _useRefinementList.canRefine, canToggleShowMore = _useRefinementList.canToggleShowMore, isFromSearch = _useRefinementList.isFromSearch, isShowingMore = _useRefinementList.isShowingMore, items = _useRefinementList.items, refine = _useRefinementList.refine, searchForItems = _useRefinementList.searchForItems, toggleShowMore = _useRefinementList.toggleShowMore; var _useState = _sliced_to_array._(React.useState(''), 2), inputValue = _useState[0], setInputValue = _useState[1]; var inputRef = React.useRef(null); function setQuery(newQuery) { var compositionComplete = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; setInputValue(newQuery); if (compositionComplete) { searchForItems(newQuery); } } function onRefine(item) { refine(item.value); setQuery(''); } function onChange(event) { var compositionComplete = event.type === 'compositionend' || !event.nativeEvent.isComposing; setQuery(event.currentTarget.value, compositionComplete); } function onReset() { setQuery(''); } function onSubmit() { if (searchableSelectOnSubmit === false) { return; } if (items.length > 0) { refine(items[0].value); setQuery(''); } } var mergedTranslations = _object_spread._({ resetButtonTitle: 'Clear the search query', submitButtonTitle: 'Submit the search query', noResultsText: 'No results.', showMoreButtonText: function showMoreButtonText(options) { return options.isShowingMore ? 'Show less' : 'Show more'; } }, translations); var uiProps = { items: items, canRefine: canRefine, onRefine: onRefine, query: inputValue, searchBox: searchable && /*#__PURE__*/ React.createElement(SearchBox.SearchBox, { inputRef: inputRef, placeholder: searchablePlaceholder, isSearchStalled: false, value: inputValue, onChange: onChange, onReset: onReset, onSubmit: onSubmit, translations: { submitButtonTitle: mergedTranslations.submitButtonTitle, resetButtonTitle: mergedTranslations.resetButtonTitle } }), noResults: searchable && isFromSearch && items.length === 0 && mergedTranslations.noResultsText, canToggleShowMore: canToggleShowMore, onToggleShowMore: toggleShowMore, isShowingMore: isShowingMore, translations: { showMoreButtonText: mergedTranslations.showMoreButtonText } }; return /*#__PURE__*/ React.createElement(RefinementList$1.RefinementList, _object_spread_props._(_object_spread._({}, props, uiProps), { showMore: showMore })); } exports.RefinementList = RefinementList;