@razorpay/blade
Version:
The Design System that powers Razorpay
17 lines (14 loc) • 6.64 kB
JavaScript
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import React__default from 'react';
import { useDropdown } from '../../Dropdown/useDropdown.js';
import { BaseDropdownInputTrigger } from './BaseDropdownInputTrigger.js';
import { assignWithoutSideEffects } from '../../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js';
import { BaseBox } from '../../Box/BaseBox/BaseBox.native.js';
import { dropdownComponentIds } from '../../Dropdown/dropdownComponentIds.js';
import 'react-native';
import { isReactNative } from '../../../utils/platform/isReactNative.js';
import '../../BladeProvider/useTheme.js';
import { jsx } from 'react/jsx-runtime';
var useAutoComplete=function useAutoComplete(_ref){var props=_ref.props,inputValue=_ref.inputValue,setInputValue=_ref.setInputValue,getOptionValues=_ref.getOptionValues;var _useDropdown=useDropdown(),onBaseDropdownInputKeydown=_useDropdown.onTriggerKeydown,isOpen=_useDropdown.isOpen,setIsOpen=_useDropdown.setIsOpen,selectedIndices=_useDropdown.selectedIndices,setSelectedIndices=_useDropdown.setSelectedIndices,setControlledValueIndices=_useDropdown.setControlledValueIndices,isControlled=_useDropdown.isControlled,options=_useDropdown.options,setGlobalFilteredValues=_useDropdown.setFilteredValues,activeTagIndex=_useDropdown.activeTagIndex,setActiveTagIndex=_useDropdown.setActiveTagIndex,setActiveIndex=_useDropdown.setActiveIndex,globalFilteredValues=_useDropdown.filteredValues,selectionType=_useDropdown.selectionType,triggererRef=_useDropdown.triggererRef,hasAutoCompleteInHeader=_useDropdown.hasAutoCompleteInHeader;var resetFilters=function resetFilters(){return setGlobalFilteredValues(getOptionValues());};React__default.useEffect(function(){var firstItemOptionIndex=options.findIndex(function(option){return option.value===globalFilteredValues[0];});if(firstItemOptionIndex>=0){setActiveIndex(firstItemOptionIndex);}},[globalFilteredValues.length,options.length]);React__default.useEffect(function(){if(isOpen&&!inputValue){resetFilters();}},[isOpen,options]);React__default.useEffect(function(){if(isOpen&&selectionType==='single'){resetFilters();}if(hasAutoCompleteInHeader&&isOpen&&!isReactNative()){var _triggererRef$current;(_triggererRef$current=triggererRef.current)==null?void 0:_triggererRef$current.focus();}},[isOpen]);var onInputValueChange=function onInputValueChange(_ref2){var name=_ref2.name,value=_ref2.value;setInputValue(value!=null?value:'');props.onInputValueChange==null?void 0:props.onInputValueChange({name:name,value:value});setActiveTagIndex(-1);if(!isOpen){setIsOpen(true);}if(!props.filteredValues){if(value&&options&&options.length>0){var filteredOptions=getOptionValues().filter(function(optionValue){return optionValue.toLowerCase().includes(value.toLowerCase());});setGlobalFilteredValues(filteredOptions);}else {resetFilters();}}};var onTriggerKeydown=function onTriggerKeydown(e){if(e.key==='Backspace'&&!inputValue&&activeTagIndex<0&&selectedIndices.length>0){if(isControlled){setControlledValueIndices(selectedIndices.slice(0,-1));}else {setSelectedIndices(selectedIndices.slice(0,-1));}}onBaseDropdownInputKeydown==null?void 0:onBaseDropdownInputKeydown(e);};var onSelectionChange=function onSelectionChange(_ref3){var values=_ref3.values;console.log('selection change',values);if(selectionType==='multiple'){setInputValue('');props.onInputValueChange==null?void 0:props.onInputValueChange({name:props.name,value:''});setActiveTagIndex(-1);resetFilters();}else {var _options$find;var displayText=(_options$find=options.find(function(option){return option.value===values[0];}))==null?void 0:_options$find.title;props.onInputValueChange==null?void 0:props.onInputValueChange({name:props.name,value:displayText});if(hasAutoCompleteInHeader){setInputValue('');}else if(typeof props.value==='undefined'){setInputValue(displayText!=null?displayText:'');}}props.onChange==null?void 0:props.onChange({name:props.name,values:values});};return {onSelectionChange:onSelectionChange,onTriggerKeydown:onTriggerKeydown,onInputValueChange:onInputValueChange};};var _AutoComplete=function _AutoComplete(props,ref){var _props$inputValue,_props$autoFocus;var _React$useState=React__default.useState(''),_React$useState2=_slicedToArray(_React$useState,2),uncontrolledInputValue=_React$useState2[0],setInputValue=_React$useState2[1];var inputValue=(_props$inputValue=props.inputValue)!=null?_props$inputValue:uncontrolledInputValue;var _useDropdown2=useDropdown(),options=_useDropdown2.options,setGlobalFilteredValues=_useDropdown2.setFilteredValues,hasAutoCompleteInHeader=_useDropdown2.hasAutoCompleteInHeader,setHasAutoCompleteInHeader=_useDropdown2.setHasAutoCompleteInHeader,_onTriggerClick=_useDropdown2.onTriggerClick,dropdownTriggerer=_useDropdown2.dropdownTriggerer;var getOptionValues=React__default.useCallback(function(){return options.map(function(option){return option.value;});},[options]);var _useAutoComplete=useAutoComplete({props:props,inputValue:inputValue,setInputValue:setInputValue,getOptionValues:getOptionValues}),onSelectionChange=_useAutoComplete.onSelectionChange,onTriggerKeydown=_useAutoComplete.onTriggerKeydown,onInputValueChange=_useAutoComplete.onInputValueChange;React__default.useEffect(function(){if(dropdownTriggerer!==dropdownComponentIds.triggers.AutoComplete){setHasAutoCompleteInHeader(true);}},[]);React__default.useEffect(function(){if(props.filteredValues){setGlobalFilteredValues(props.filteredValues);}},[props.filteredValues,setGlobalFilteredValues]);var defaultAutoFocusState=hasAutoCompleteInHeader?true:undefined;return jsx(BaseBox,{position:"relative",children:jsx(BaseDropdownInputTrigger,Object.assign({},props,{autoFocus:(_props$autoFocus=props.autoFocus)!=null?_props$autoFocus:defaultAutoFocusState,ref:ref,onChange:onSelectionChange,isSelectInput:false,inputValue:inputValue,syncInputValueWithSelection:function syncInputValueWithSelection(value){var _selectedOption$title;if(!value){setInputValue('');return;}var selectedOption=options.find(function(option){return option.value===value;});setInputValue((_selectedOption$title=selectedOption==null?void 0:selectedOption.title)!=null?_selectedOption$title:'');},onTriggerKeydown:onTriggerKeydown,onInputValueChange:onInputValueChange,onTriggerClick:function onTriggerClick(triggerEvent){if(!hasAutoCompleteInHeader){_onTriggerClick();}props==null?void 0:props.onClick==null?void 0:props.onClick(triggerEvent);}}))});};var AutoComplete=assignWithoutSideEffects(React__default.forwardRef(_AutoComplete),{componentId:dropdownComponentIds.triggers.AutoComplete});
export { AutoComplete };
//# sourceMappingURL=AutoComplete.js.map