@bigbinary/neetoui-rn 0.0.189 → 0.0.192
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +11 -2
- package/lib/components/BottomSheet.js +1 -1
- package/lib/components/Carousel.js +1 -1
- package/lib/components/MultiSelect.js +1 -1
- package/lib/components/SearchBar.js +1 -1
- package/package.json +1 -2
- package/src/components/BottomSheet.js +126 -57
- package/src/components/Carousel.js +3 -3
- package/src/components/MultiSelect.js +232 -113
- package/src/components/SearchBar.js +1 -1
- package/src/constants.js +0 -1
package/index.d.ts
CHANGED
|
@@ -152,7 +152,7 @@ interface BottomSheetProps extends ViewProps {
|
|
|
152
152
|
hide?: () => void;
|
|
153
153
|
isVisible?: boolean;
|
|
154
154
|
onItemPress?: ({ index, item }: { index: number; item: any }) => void;
|
|
155
|
-
|
|
155
|
+
selectedItem?: object | string;
|
|
156
156
|
bg?: typeof theme.colors.background;
|
|
157
157
|
titleContainerStyle?: ViewProps;
|
|
158
158
|
titleTextStyle?: TextProps;
|
|
@@ -162,6 +162,8 @@ interface BottomSheetProps extends ViewProps {
|
|
|
162
162
|
contentType?: "checkbox" | null;
|
|
163
163
|
canSearch?: boolean;
|
|
164
164
|
onDonePress?: () => void;
|
|
165
|
+
valueExtractor?: () =>{};
|
|
166
|
+
labelExtractor?: () =>{};
|
|
165
167
|
}
|
|
166
168
|
|
|
167
169
|
interface ButtonProps extends TouchableProps {
|
|
@@ -280,7 +282,6 @@ interface MultiSelectProps extends ViewProps {
|
|
|
280
282
|
options?: Array<any>;
|
|
281
283
|
label?: string;
|
|
282
284
|
value?: string | Array<any>;
|
|
283
|
-
placeholder?: string;
|
|
284
285
|
labelExtractor?: (item: any, index: number) => string;
|
|
285
286
|
valueExtractor?: (item: any, index: number) => string;
|
|
286
287
|
onSelect?: (selectedData: Array<any>) => void;
|
|
@@ -302,6 +303,14 @@ interface MultiSelectProps extends ViewProps {
|
|
|
302
303
|
onPressCreateOption?: (searchText: string) => void;
|
|
303
304
|
createSearchedOptionContainerStyle?: ViewProps;
|
|
304
305
|
onDonePress?: () => void;
|
|
306
|
+
disabled?: boolean;
|
|
307
|
+
noResultsLabelContainerStyle?: ViewStyle;
|
|
308
|
+
noResultsLabelStyle?: TextStyle;
|
|
309
|
+
noResultsLabel?: TypographyProps;
|
|
310
|
+
NoResultsComponent?: React.ReactNode;
|
|
311
|
+
maxItemSize?: number;
|
|
312
|
+
moreItemLabelContainerStyle?: ViewStyle;
|
|
313
|
+
moreItemLabelStyle?: TextStyle
|
|
305
314
|
}
|
|
306
315
|
|
|
307
316
|
type OnBoardingProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.BottomSheet=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeModal=_interopRequireDefault(require("react-native-modal"));var _reactNativeSafeAreaContext=require("react-native-safe-area-context");var _fuse=_interopRequireDefault(require("fuse.js"));var _=require("./");var _theme=require("../theme");var _constants=require("../constants");var _excluded=["showCreateOption","CreateItemComponent","showCreateOptionLoader","createSearchedOptionLabelStyle","createOptionLabel","onPressCreateOption","createSearchedOptionContainerStyle","data","title","hide","isVisible","onItemPress","selectedItemIndex","bg","children","titleContainerStyle","titleTextStyle","modalParams","HeaderComponent","ContentRow","contentType","canSearch","onDonePress"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/BottomSheet.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var Title=function Title(_ref){var title=_ref.title,bg=_ref.bg,isVisible=_ref.isVisible,hide=_ref.hide,titleContainerStyle=_ref.titleContainerStyle,titleTextStyle=_ref.titleTextStyle,contentType=_ref.contentType,canSearch=_ref.canSearch,setSearchText=_ref.setSearchText,onDonePress=_ref.onDonePress;var touchY;(0,_react.useEffect)(function(){setSearchText("");},[isVisible,setSearchText]);return _react.default.createElement(_react.default.Fragment,null,_react.default.createElement(_.Container,(0,_extends2.default)({bg:bg,onTouchStart:function onTouchStart(e){return touchY=e.nativeEvent.pageY;},onTouchEnd:function onTouchEnd(e){if(e.nativeEvent.pageY-touchY>20)hide();},pb:12,borderRadius:20},titleContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:37,columnNumber:7}}),_react.default.createElement(_.Container,{mb:16,flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:48,columnNumber:9}},title&&_react.default.createElement(_.Typography,(0,_extends2.default)({textStyle:"modalHeader"},titleTextStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:50,columnNumber:13}}),title),contentType&&_react.default.createElement(_.Touchable,{onPress:function onPress(){hide();onDonePress();},__self:_this,__source:{fileName:_jsxFileName,lineNumber:55,columnNumber:13}},_react.default.createElement(_.Typography,{textStyle:"modalHeader",color:"font.purple500",__self:_this,__source:{fileName:_jsxFileName,lineNumber:61,columnNumber:15}},"Done"))),canSearch&&_react.default.createElement(_.SearchBar,{placeholder:"Search",onChangeText:setSearchText,onCancel:function onCancel(){setSearchText("");},showCancelButton:false,__self:_this,__source:{fileName:_jsxFileName,lineNumber:69,columnNumber:11}})));};Title.propTypes={title:_propTypes.default.string,isVisible:_propTypes.default.bool,hide:_propTypes.default.func,bg:_propTypes.default.string,titleContainerStyle:_propTypes.default.object,titleTextStyle:_propTypes.default.object,contentType:_propTypes.default.oneOf(["checkbox",null]),canSearch:_propTypes.default.bool,setSearchText:_propTypes.default.func,onDonePress:_propTypes.default.func};var BottomSheet=function BottomSheet(_ref2){var showCreateOption=_ref2.showCreateOption,CreateItemComponent=_ref2.CreateItemComponent,showCreateOptionLoader=_ref2.showCreateOptionLoader,createSearchedOptionLabelStyle=_ref2.createSearchedOptionLabelStyle,createOptionLabel=_ref2.createOptionLabel,onPressCreateOption=_ref2.onPressCreateOption,createSearchedOptionContainerStyle=_ref2.createSearchedOptionContainerStyle,_ref2$data=_ref2.data,data=_ref2$data===void 0?[]:_ref2$data,title=_ref2.title,hide=_ref2.hide,isVisible=_ref2.isVisible,onItemPress=_ref2.onItemPress,selectedItemIndex=_ref2.selectedItemIndex,bg=_ref2.bg,children=_ref2.children,titleContainerStyle=_ref2.titleContainerStyle,titleTextStyle=_ref2.titleTextStyle,modalParams=_ref2.modalParams,HeaderComponent=_ref2.HeaderComponent,ContentRow=_ref2.ContentRow,contentType=_ref2.contentType,canSearch=_ref2.canSearch,onDonePress=_ref2.onDonePress,rest=(0,_objectWithoutProperties2.default)(_ref2,_excluded);var _useState=(0,_react.useState)(""),_useState2=(0,_slicedToArray2.default)(_useState,2),searchText=_useState2[0],setSearchText=_useState2[1];var fuse=new _fuse.default(data,{keys:_constants.FUSE_KEYS,threshold:0.1});var generateData=function generateData(){if(searchText.trim().length){return fuse.search(searchText.trim()).map(function(item){return item.item;});}else{return data;}};var contentContainerStyle={paddingBottom:50};return _react.default.createElement(_reactNativeModal.default,(0,_extends2.default)({style:styles.modalStyle,isVisible:isVisible,onBackdropPress:hide,useNativeDriver:true,avoidKeyboard:true,hideModalContentWhileAnimating:true,onRequestClose:hide},modalParams,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:176,columnNumber:5}}),_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaView,{style:styles.safeAreaView,__self:_this,__source:{fileName:_jsxFileName,lineNumber:186,columnNumber:7}},_react.default.createElement(_.Container,(0,_extends2.default)({bg:bg,borderTopRightRadius:20,borderTopLeftRadius:20,p:16},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:187,columnNumber:9}}),title&&_react.default.createElement(Title,{bg:bg,title:title,isVisible:isVisible,hide:hide,titleContainerStyle:titleContainerStyle,titleTextStyle:titleTextStyle,HeaderComponent:HeaderComponent,contentType:contentType,canSearch:canSearch,searchText:searchText,setSearchText:setSearchText,onDonePress:onDonePress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:195,columnNumber:13}}),data&&_react.default.createElement(_reactNative.FlatList,{ListFooterComponent:children,initialNumToRender:data.length,onScrollBeginDrag:_reactNative.Keyboard.dismiss,data:generateData(),renderItem:function renderItem(_ref3){var item=_ref3.item,index=_ref3.index;return _react.default.createElement(ContentRow,{isSelected:index===selectedItemIndex,key:index,onPress:function onPress(){!contentType&&hide();onItemPress({index:index,item:item});},index:index,item:item,__self:_this,__source:{fileName:_jsxFileName,lineNumber:219,columnNumber:19}});},keyExtractor:function keyExtractor(item,index){return index;},contentContainerStyle:contentContainerStyle,__self:_this,__source:{fileName:_jsxFileName,lineNumber:212,columnNumber:13}}),showCreateOptionLoader?_react.default.createElement(_reactNative.ActivityIndicator,{size:"small",color:_theme.theme.colors.background.base,__self:_this,__source:{fileName:_jsxFileName,lineNumber:239,columnNumber:13}}):!!searchText.trim()&&!generateData().length&&showCreateOption&&_react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:247,columnNumber:15}},CreateItemComponent?_react.default.createElement(CreateItemComponent,{searchText:searchText,__self:_this,__source:{fileName:_jsxFileName,lineNumber:249,columnNumber:19}}):_react.default.createElement(_.Touchable,(0,_extends2.default)({height:40,justifyContent:"center",alignItems:"center",onPress:function onPress(){return onPressCreateOption(searchText);}},createSearchedOptionContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:251,columnNumber:19}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontFamily:"sf400",fontSize:"s",color:"font.grey"},createSearchedOptionLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:258,columnNumber:21}}),createOptionLabel||"Create "+searchText+" option"))))));};exports.BottomSheet=BottomSheet;BottomSheet.defaultProps={bg:"background.primary",showCreateOption:false,showCreateOptionLoader:false,createOptionLabel:null,onPressCreateOption:function onPressCreateOption(){},CreateItemComponent:null,onDonePress:function onDonePress(){}};BottomSheet.propTypes={data:_propTypes.default.array,title:_propTypes.default.string,isVisible:_propTypes.default.bool,hide:_propTypes.default.func,onItemPress:_propTypes.default.func,selectedItemIndex:_propTypes.default.number,onDonePress:_propTypes.default.func,bg:_propTypes.default.string,titleContainerStyle:_propTypes.default.object,titleTextStyle:_propTypes.default.object,showCreateOption:_propTypes.default.bool,showCreateOptionLoader:_propTypes.default.bool,createOptionLabel:_propTypes.default.string,onPressCreateOption:_propTypes.default.func,CreateItemComponent:_propTypes.default.node,createSearchedOptionLabelStyle:_propTypes.default.object,createSearchedOptionContainerStyle:_propTypes.default.object,modalParams:_propTypes.default.object,children:_propTypes.default.node,HeaderComponent:_propTypes.default.elementType,ContentRow:_propTypes.default.elementType,contentType:_propTypes.default.oneOf(["checkbox",null]),canSearch:_propTypes.default.bool};var styles=_reactNative.StyleSheet.create({safeAreaView:{maxHeight:"70%",backgroundColor:_theme.theme.colors.background.primary,borderTopRightRadius:20,borderTopLeftRadius:20},modalStyle:{margin:0,justifyContent:"flex-end"},inputContainerStyle:{backgroundColor:"white",borderRadius:10}});
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.BottomSheet=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeModal=_interopRequireDefault(require("react-native-modal"));var _reactNativeSafeAreaContext=require("react-native-safe-area-context");var _=require("./");var _theme=require("../theme");var _excluded=["showCreateOption","CreateItemComponent","showCreateOptionLoader","createSearchedOptionLabelStyle","createOptionLabel","onPressCreateOption","createSearchedOptionContainerStyle","data","title","hide","isVisible","onItemPress","bg","children","titleContainerStyle","titleTextStyle","modalParams","HeaderComponent","ContentRow","contentType","canSearch","onDonePress","disabled","noResultsLabelContainerStyle","noResultsLabelStyle","noResultsLabel","NoResultsComponent","labelExtractor","valueExtractor","selectedItem"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/BottomSheet.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var Title=function Title(_ref){var title=_ref.title,bg=_ref.bg,isVisible=_ref.isVisible,hide=_ref.hide,titleContainerStyle=_ref.titleContainerStyle,titleTextStyle=_ref.titleTextStyle,contentType=_ref.contentType,canSearch=_ref.canSearch,setSearchText=_ref.setSearchText,onDonePress=_ref.onDonePress;var touchY;(0,_react.useEffect)(function(){setSearchText("");},[isVisible,setSearchText]);return _react.default.createElement(_react.default.Fragment,null,_react.default.createElement(_.Container,(0,_extends2.default)({bg:bg,onTouchStart:function onTouchStart(e){return touchY=e.nativeEvent.pageY;},onTouchEnd:function onTouchEnd(e){if(e.nativeEvent.pageY-touchY>20)hide();},pb:12,borderRadius:20},titleContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:35,columnNumber:7}}),_react.default.createElement(_.Container,{mb:16,flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:46,columnNumber:9}},title&&_react.default.createElement(_.Typography,(0,_extends2.default)({textStyle:"modalHeader"},titleTextStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:48,columnNumber:13}}),title),contentType&&_react.default.createElement(_.Touchable,{onPress:function onPress(){hide();onDonePress();},__self:_this,__source:{fileName:_jsxFileName,lineNumber:53,columnNumber:13}},_react.default.createElement(_.Typography,{textStyle:"modalHeader",color:"font.purple500",__self:_this,__source:{fileName:_jsxFileName,lineNumber:59,columnNumber:15}},"Done"))),canSearch&&_react.default.createElement(_.SearchBar,{debounceDelay:200,placeholder:"Search",onChangeText:setSearchText,onCancel:function onCancel(){setSearchText("");},showCancelButton:false,__self:_this,__source:{fileName:_jsxFileName,lineNumber:67,columnNumber:11}})));};Title.propTypes={title:_propTypes.default.string,isVisible:_propTypes.default.bool,hide:_propTypes.default.func,bg:_propTypes.default.string,titleContainerStyle:_propTypes.default.object,titleTextStyle:_propTypes.default.object,contentType:_propTypes.default.oneOf(["checkbox",null]),canSearch:_propTypes.default.bool,setSearchText:_propTypes.default.func,onDonePress:_propTypes.default.func};var BottomSheet=function BottomSheet(_ref2){var showCreateOption=_ref2.showCreateOption,CreateItemComponent=_ref2.CreateItemComponent,showCreateOptionLoader=_ref2.showCreateOptionLoader,createSearchedOptionLabelStyle=_ref2.createSearchedOptionLabelStyle,createOptionLabel=_ref2.createOptionLabel,onPressCreateOption=_ref2.onPressCreateOption,createSearchedOptionContainerStyle=_ref2.createSearchedOptionContainerStyle,_ref2$data=_ref2.data,data=_ref2$data===void 0?[]:_ref2$data,title=_ref2.title,hide=_ref2.hide,isVisible=_ref2.isVisible,onItemPress=_ref2.onItemPress,bg=_ref2.bg,children=_ref2.children,titleContainerStyle=_ref2.titleContainerStyle,titleTextStyle=_ref2.titleTextStyle,modalParams=_ref2.modalParams,HeaderComponent=_ref2.HeaderComponent,ContentRow=_ref2.ContentRow,contentType=_ref2.contentType,canSearch=_ref2.canSearch,onDonePress=_ref2.onDonePress,disabled=_ref2.disabled,noResultsLabelContainerStyle=_ref2.noResultsLabelContainerStyle,noResultsLabelStyle=_ref2.noResultsLabelStyle,noResultsLabel=_ref2.noResultsLabel,NoResultsComponent=_ref2.NoResultsComponent,labelExtractor=_ref2.labelExtractor,valueExtractor=_ref2.valueExtractor,selectedItem=_ref2.selectedItem,rest=(0,_objectWithoutProperties2.default)(_ref2,_excluded);var _useState=(0,_react.useState)(""),_useState2=(0,_slicedToArray2.default)(_useState,2),searchText=_useState2[0],setSearchText=_useState2[1];var getLabel=function getLabel(item,index){return(item==null?void 0:item.label)||labelExtractor(item,index)||item;};var generateData=function generateData(){if(searchText.length){return data.filter(function(item){return getLabel(item).toLowerCase().includes(searchText.toLowerCase());});}else{return data;}};var hideCreateComponent=function hideCreateComponent(){var filteredItemCount=generateData().filter(function(data){return getLabel(data).toLocaleLowerCase()===searchText.toLocaleLowerCase();}).length;return filteredItemCount>0;};var checkIsSelected=function checkIsSelected(item){var itemValue=(item==null?void 0:item.value)||valueExtractor(item)||item;var selectedItemValue=(selectedItem==null?void 0:selectedItem.value)||valueExtractor(selectedItem)||selectedItem;return itemValue===selectedItemValue;};return _react.default.createElement(_reactNativeModal.default,(0,_extends2.default)({style:styles.modalStyle,isVisible:isVisible,onBackdropPress:hide,useNativeDriver:true,avoidKeyboard:true,hideModalContentWhileAnimating:true,onRequestClose:hide},modalParams,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:198,columnNumber:5}}),_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaView,{style:styles.safeAreaView,__self:_this,__source:{fileName:_jsxFileName,lineNumber:208,columnNumber:7}},_react.default.createElement(_.Container,(0,_extends2.default)({bg:bg,borderTopRightRadius:20,borderTopLeftRadius:20,p:16,flexShrink:1},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:209,columnNumber:9}}),title&&_react.default.createElement(Title,{bg:bg,title:title,isVisible:isVisible,hide:hide,titleContainerStyle:titleContainerStyle,titleTextStyle:titleTextStyle,HeaderComponent:HeaderComponent,contentType:contentType,canSearch:canSearch,searchText:searchText,setSearchText:setSearchText,onDonePress:onDonePress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:218,columnNumber:13}}),data&&_react.default.createElement(_reactNative.FlatList,{ListFooterComponent:_react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:237,columnNumber:17}},children,!!searchText&&!generateData().length&&!showCreateOption&&(NoResultsComponent?_react.default.createElement(NoResultsComponent,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:243,columnNumber:23}}):_react.default.createElement(_.Container,(0,_extends2.default)({alignItems:"center",py:2,mb:2},noResultsLabelContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:245,columnNumber:23}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontFamily:"sf600",fontSize:"s",color:"font.grey"},noResultsLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:251,columnNumber:25}}),noResultsLabel||"No options found"))),!disabled&&!hideCreateComponent()&&(showCreateOptionLoader?_react.default.createElement(_reactNative.ActivityIndicator,{size:"small",color:_theme.theme.colors.background.base,__self:_this,__source:{fileName:_jsxFileName,lineNumber:265,columnNumber:23}}):!!searchText&&showCreateOption&&_react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:272,columnNumber:25}},CreateItemComponent?_react.default.createElement(CreateItemComponent,{searchText:searchText,__self:_this,__source:{fileName:_jsxFileName,lineNumber:274,columnNumber:29}}):_react.default.createElement(_.Touchable,(0,_extends2.default)({height:40,justifyContent:"center",alignItems:"center",onPress:function onPress(){return onPressCreateOption(searchText);}},createSearchedOptionContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:276,columnNumber:29}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontFamily:"sf400",fontSize:"s",color:"font.grey"},createSearchedOptionLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:283,columnNumber:31}}),createOptionLabel||"Create "+searchText+" option"))))),initialNumToRender:data.length,onScrollBeginDrag:_reactNative.Keyboard.dismiss,data:generateData(),renderItem:function renderItem(_ref3){var item=_ref3.item,index=_ref3.index;return _react.default.createElement(ContentRow,{isSelected:checkIsSelected(item),key:index,onPress:function onPress(){!contentType&&hide();onItemPress({index:index,item:item});},index:index,item:item,__self:_this,__source:{fileName:_jsxFileName,lineNumber:304,columnNumber:19}});},keyExtractor:function keyExtractor(item,index){return index;},__self:_this,__source:{fileName:_jsxFileName,lineNumber:235,columnNumber:13}}))));};exports.BottomSheet=BottomSheet;BottomSheet.defaultProps={bg:"background.primary",showCreateOption:false,showCreateOptionLoader:false,createOptionLabel:null,onPressCreateOption:function onPressCreateOption(){},CreateItemComponent:null,onDonePress:function onDonePress(){},valueExtractor:function valueExtractor(){},labelExtractor:function labelExtractor(){}};BottomSheet.propTypes={data:_propTypes.default.array,title:_propTypes.default.string,isVisible:_propTypes.default.bool,hide:_propTypes.default.func,onItemPress:_propTypes.default.func,onDonePress:_propTypes.default.func,bg:_propTypes.default.string,titleContainerStyle:_propTypes.default.object,titleTextStyle:_propTypes.default.object,showCreateOption:_propTypes.default.bool,showCreateOptionLoader:_propTypes.default.bool,createOptionLabel:_propTypes.default.string,onPressCreateOption:_propTypes.default.func,CreateItemComponent:_propTypes.default.node,createSearchedOptionLabelStyle:_propTypes.default.object,disabled:_propTypes.default.bool,createSearchedOptionContainerStyle:_propTypes.default.object,noResultsLabelContainerStyle:_propTypes.default.object,noResultsLabelStyle:_propTypes.default.object,noResultsLabel:_propTypes.default.string,NoResultsComponent:_propTypes.default.node,labelExtractor:_propTypes.default.func,valueExtractor:_propTypes.default.func,selectedItem:_propTypes.default.oneOfType([_propTypes.default.object,_propTypes.default.string]),modalParams:_propTypes.default.object,children:_propTypes.default.node,HeaderComponent:_propTypes.default.elementType,ContentRow:_propTypes.default.elementType,contentType:_propTypes.default.oneOf(["checkbox",null]),canSearch:_propTypes.default.bool};var styles=_reactNative.StyleSheet.create({safeAreaView:{maxHeight:"70%",backgroundColor:_theme.theme.colors.background.primary,borderTopRightRadius:20,borderTopLeftRadius:20},modalStyle:{margin:0,justifyContent:"flex-end",flex:1},inputContainerStyle:{backgroundColor:"white",borderRadius:10}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Carousel=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeSnapCarousel=_interopRequireWildcard(require("react-native-snap-carousel"));var _=require("./");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Carousel.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var _Dimensions$get=_reactNative.Dimensions.get("screen"),width=_Dimensions$get.width;var Carousel=function Carousel(_ref){var itemArray=_ref.itemArray,renderItem=_ref.renderItem,carouselRef=_ref.carouselRef,_onSnapToItem=_ref.onSnapToItem;var _useWindowDimensions=(0,_reactNative.useWindowDimensions)(),width=_useWindowDimensions.width;var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),activeIndex=_useState2[0],setActiveIndex=_useState2[1];return _react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:51,columnNumber:5}},_react.default.createElement(_reactNativeSnapCarousel.default,{ref:carouselRef,data:itemArray,renderItem:renderItem,sliderWidth:width,itemWidth:width,onSnapToItem:function onSnapToItem(index){_onSnapToItem(index);setActiveIndex(index);},__self:_this,__source:{fileName:_jsxFileName,lineNumber:52,columnNumber:7}}),_react.default.createElement(_reactNativeSnapCarousel.Pagination,{dotsLength:itemArray.length,activeDotIndex:activeIndex,dotStyle:styles.dotStyle,inactiveDotStyle:styles.inactiveDotStyle,inactiveDotOpacity:
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Carousel=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeSnapCarousel=_interopRequireWildcard(require("react-native-snap-carousel"));var _=require("./");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Carousel.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var _Dimensions$get=_reactNative.Dimensions.get("screen"),width=_Dimensions$get.width;var Carousel=function Carousel(_ref){var itemArray=_ref.itemArray,renderItem=_ref.renderItem,carouselRef=_ref.carouselRef,_onSnapToItem=_ref.onSnapToItem;var _useWindowDimensions=(0,_reactNative.useWindowDimensions)(),width=_useWindowDimensions.width;var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),activeIndex=_useState2[0],setActiveIndex=_useState2[1];return _react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:51,columnNumber:5}},_react.default.createElement(_reactNativeSnapCarousel.default,{ref:carouselRef,data:itemArray,renderItem:renderItem,sliderWidth:width,itemWidth:width,onSnapToItem:function onSnapToItem(index){_onSnapToItem(index);setActiveIndex(index);},__self:_this,__source:{fileName:_jsxFileName,lineNumber:52,columnNumber:7}}),_react.default.createElement(_reactNativeSnapCarousel.Pagination,{dotsLength:itemArray.length,activeDotIndex:activeIndex,dotStyle:styles.dotStyle,inactiveDotStyle:styles.inactiveDotStyle,inactiveDotOpacity:1,inactiveDotScale:1,dotContainerStyle:styles.dotContainerStyle,__self:_this,__source:{fileName:_jsxFileName,lineNumber:64,columnNumber:7}}));};exports.Carousel=Carousel;var styles=_reactNative.StyleSheet.create({image:{height:width/1.8,width:width/1.8,resizeMode:"contain",borderRadius:20},indicator:{height:12,width:12,borderRadius:10,marginVertical:20,marginHorizontal:5,backgroundColor:"#49545C",borderColor:"#FFFFFF",borderWidth:2},dotStyle:{width:10,height:10,borderRadius:5,marginRight:8,backgroundColor:"#2F3941"},inactiveDotStyle:{backgroundColor:"#D9D9D9"},dotContainerStyle:{marginHorizontal:0}});Carousel.propTypes={itemArray:_propTypes.default.array.isRequired,renderItem:_propTypes.default.func.isRequired,onSnapToItem:_propTypes.default.func,carouselRef:_propTypes.default.object};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.MultiSelect=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNative=require("react-native");var _reactNativeGestureHandler=require("react-native-gesture-handler");var _reactNativeReanimated=require("react-native-reanimated");var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _native=require("styled-components/native");var _=require("./");var _excluded=["options","label","value","placeholder","labelExtractor","valueExtractor","onSelect","deletedValue","isLoading","isSearchable","showCreateOption","labelStyle","containerStyle","inputContainerStyle","dropdownContainerStyle","itemContainerStyle","multiSelectedItemContainerStyle","multiSelectedItemLabelStyle","selectedValue","CreateItemComponent","showCreateOptionLoader","createSearchedOptionLabelStyle","onPressCreateOption","createSearchedOptionContainerStyle","onDonePress"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/MultiSelect.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var MultiSelectItem=function MultiSelectItem(_ref){var label=_ref.label,onUnselect=_ref.onUnselect,multiSelectedItemContainerStyle=_ref.multiSelectedItemContainerStyle,multiSelectedItemLabelStyle=_ref.multiSelectedItemLabelStyle;return _react.default.createElement(_.Container,(0,_extends2.default)({bg:"background.secondary",borderRadius:12,flexDirection:"row",alignItems:"center",justifyContent:"space-between",px:2,py:1,m:1},multiSelectedItemContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:27,columnNumber:3}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontFamily:"sf400",fontSize:"s",mr:2,color:"font.grey800"},multiSelectedItemLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:38,columnNumber:5}}),label),_react.default.createElement(_reactNative.TouchableWithoutFeedback,{onPress:onUnselect,__self:_this,__source:{fileName:_jsxFileName,lineNumber:47,columnNumber:5}},_react.default.createElement(_reactNativeRemixIcon.default,{name:"ri-close-line",size:"20",color:"grey800",__self:_this,__source:{fileName:_jsxFileName,lineNumber:48,columnNumber:7}})));};MultiSelectItem.propTypes={label:_propTypes.default.string,onUnselect:_propTypes.default.func,multiSelectedItemContainerStyle:_propTypes.default.object,multiSelectedItemLabelStyle:_propTypes.default.object};var DropdownItem=function DropdownItem(_ref2){var label=_ref2.label,onPress=_ref2.onPress,defaultDropdownItemHeight=_ref2.defaultDropdownItemHeight,itemContainerStyle=_ref2.itemContainerStyle,itemLabelStyle=_ref2.itemLabelStyle;return _react.default.createElement(_.Touchable,{bg:"background.white",onPress:onPress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:68,columnNumber:5}},_react.default.createElement(_.Container,(0,_extends2.default)({height:defaultDropdownItemHeight,p:2},itemContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:69,columnNumber:7}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontFamily:"sf400",fontSize:"s",color:"font.grey"},itemLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:74,columnNumber:9}}),label)));};DropdownItem.propTypes={label:_propTypes.default.string,onPress:_propTypes.default.func,defaultDropdownItemHeight:_propTypes.default.number,itemContainerStyle:_propTypes.default.object,itemLabelStyle:_propTypes.default.object};var MultiSelect=function MultiSelect(_ref3){var options=_ref3.options,label=_ref3.label,value=_ref3.value,placeholder=_ref3.placeholder,labelExtractor=_ref3.labelExtractor,valueExtractor=_ref3.valueExtractor,onSelect=_ref3.onSelect,deletedValue=_ref3.deletedValue,isLoading=_ref3.isLoading,isSearchable=_ref3.isSearchable,showCreateOption=_ref3.showCreateOption,labelStyle=_ref3.labelStyle,containerStyle=_ref3.containerStyle,inputContainerStyle=_ref3.inputContainerStyle,dropdownContainerStyle=_ref3.dropdownContainerStyle,itemContainerStyle=_ref3.itemContainerStyle,multiSelectedItemContainerStyle=_ref3.multiSelectedItemContainerStyle,multiSelectedItemLabelStyle=_ref3.multiSelectedItemLabelStyle,selectedValue=_ref3.selectedValue,CreateItemComponent=_ref3.CreateItemComponent,showCreateOptionLoader=_ref3.showCreateOptionLoader,createSearchedOptionLabelStyle=_ref3.createSearchedOptionLabelStyle,onPressCreateOption=_ref3.onPressCreateOption,createSearchedOptionContainerStyle=_ref3.createSearchedOptionContainerStyle,onDonePress=_ref3.onDonePress,rest=(0,_objectWithoutProperties2.default)(_ref3,_excluded);var theme=(0,_react.useContext)(_native.ThemeContext);var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),showDropdown=_useState2[0],setShowDropdown=_useState2[1];var _useState3=(0,_react.useState)(""),_useState4=(0,_slicedToArray2.default)(_useState3,2),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var dropdownAnimatedHeight=(0,_reactNativeReanimated.useSharedValue)(0);var formatStr=function formatStr(str){var _str$toLowerCase;return str==null?void 0:(_str$toLowerCase=str.toLowerCase())==null?void 0:_str$toLowerCase.trim();};var filteredOptions=options.filter(function(item,index){var optionValue=valueExtractor(item,index);var isItemAlreadySelected=Boolean(value==null?void 0:value.find(function(selectedItem){return valueExtractor(selectedItem)===optionValue;}));return!isItemAlreadySelected;}).filter(function(item,index){var optionLabel=labelExtractor(item,index);if(searchQuery.length===0)return true;return formatStr(optionLabel).includes(formatStr(searchQuery));});var isOptionsEmpty=!options||(options==null?void 0:options.length)===0;var isSearchedOptionsEmpty=searchQuery.length>0&&filteredOptions.length===0;var emptyOptionsPlaceholderHeight=40;var emptySearchedOptionsHeight=40;var searchInputHeight=35;var multipleOptionsSelected=(value==null?void 0:value.length)>0;var defaultDropdownItemHeight=(itemContainerStyle==null?void 0:itemContainerStyle.height)||32;var dropdownHeight=(dropdownContainerStyle==null?void 0:dropdownContainerStyle.height)||(dropdownContainerStyle==null?void 0:dropdownContainerStyle.maxHeight)||defaultDropdownItemHeight*Math.min(filteredOptions==null?void 0:filteredOptions.length,6)+(isSearchable?searchInputHeight+10:0)+(isOptionsEmpty&&!(isSearchedOptionsEmpty&&showCreateOption)?emptyOptionsPlaceholderHeight:0)+(isSearchedOptionsEmpty&&showCreateOption?emptySearchedOptionsHeight:0);var getValue=function getValue(item,index){return(item==null?void 0:item.value)||valueExtractor(item,index);};var handleCheckbox=function handleCheckbox(item){var oldData=(0,_toConsumableArray2.default)(value);var index=value.findIndex(function(data,index){return getValue(data,index)===getValue(item);});if(index===-1){oldData.push(item);}else{oldData.splice(index,1);}onSelect(oldData);};var CheckBoxContent=function CheckBoxContent(_ref4){var onPress=_ref4.onPress,item=_ref4.item,index=_ref4.index;var itemIndex=value.findIndex(function(data,i){return getValue(data,i)===getValue(item,index);});return!!(item!=null&&item.label)&&_react.default.createElement(_.Container,{py:12,__self:_this,__source:{fileName:_jsxFileName,lineNumber:231,columnNumber:9}},_react.default.createElement(_.CheckBox,{checked:itemIndex!==-1,onSelect:onPress,label:(item==null?void 0:item.label)||labelExtractor(item,index),__self:_this,__source:{fileName:_jsxFileName,lineNumber:232,columnNumber:11}}));};var handleOpenDropdown=function handleOpenDropdown(){_reactNative.Keyboard.dismiss();setSearchQuery("");if(!showDropdown){setShowDropdown(true);}if(showDropdown){dropdownAnimatedHeight.value=0;}};var handleUnselection=function handleUnselection(item){var newValue=value.filter(function(selectedItem){return valueExtractor(selectedItem)!==valueExtractor(item);});onSelect(newValue);deletedValue(item);};(0,_react.useEffect)(function(){if(showDropdown){dropdownAnimatedHeight.value=dropdownHeight;}},[showDropdown,dropdownHeight]);CheckBoxContent.propTypes={onPress:_propTypes.default.func,item:_propTypes.default.object,index:_propTypes.default.number};return _react.default.createElement(_.Container,(0,_extends2.default)({},containerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:276,columnNumber:5}}),_react.default.createElement(_reactNative.TouchableWithoutFeedback,{disabled:isLoading,onPress:handleOpenDropdown,__self:_this,__source:{fileName:_jsxFileName,lineNumber:277,columnNumber:7}},_react.default.createElement(_.Container,(0,_extends2.default)({borderRadius:12,borderWidth:1,borderColor:showDropdown?"border.base":"border.grey400",p:multipleOptionsSelected?1:2,pr:2},inputContainerStyle,rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:281,columnNumber:9}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontFamily:"sf400",mb:1,fontSize:"xs",color:"font.grey600",ml:1},labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:290,columnNumber:11}}),label),_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",alignItems:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:300,columnNumber:11}},!multipleOptionsSelected&&_react.default.createElement(_.Typography,{fontFamily:"sf400",fontSize:"s",color:"font.grey",__self:_this,__source:{fileName:_jsxFileName,lineNumber:306,columnNumber:15}},!multipleOptionsSelected&&placeholder),multipleOptionsSelected&&_react.default.createElement(_reactNativeGestureHandler.ScrollView,{showsVerticalScrollIndicator:false,__self:_this,__source:{fileName:_jsxFileName,lineNumber:311,columnNumber:15}},_react.default.createElement(_.Container,{flexWrap:"wrap",flexDirection:"row",maxWidth:"85%",onStartShouldSetResponder:function onStartShouldSetResponder(){return true;},__self:_this,__source:{fileName:_jsxFileName,lineNumber:312,columnNumber:17}},value==null?void 0:value.map(function(item,index){var optionLabel=labelExtractor(item,index);return _react.default.createElement(MultiSelectItem,{key:index,label:optionLabel,onUnselect:function onUnselect(){return handleUnselection(item);},multiSelectedItemContainerStyle:multiSelectedItemContainerStyle,multiSelectedItemLabelStyle:multiSelectedItemLabelStyle,__self:_this,__source:{fileName:_jsxFileName,lineNumber:321,columnNumber:23}});}))),isLoading?_react.default.createElement(_reactNative.ActivityIndicator,{size:"small",color:theme.colors.background.base,__self:_this,__source:{fileName:_jsxFileName,lineNumber:338,columnNumber:15}}):_react.default.createElement(_reactNativeRemixIcon.default,{name:"arrow-"+(showDropdown?"up":"down")+"-s-line",size:"20",color:"grey",__self:_this,__source:{fileName:_jsxFileName,lineNumber:343,columnNumber:15}})))),_react.default.createElement(_.BottomSheet,{title:label,onItemPress:function onItemPress(_ref5){var item=_ref5.item;handleCheckbox(item);selectedValue(item);},onDonePress:onDonePress,isVisible:showDropdown,hide:function hide(){return setShowDropdown(false);},canSearch:isSearchable,data:options,contentType:"checkbox",ContentRow:CheckBoxContent,showCreateOption:showCreateOption,CreateItemComponent:CreateItemComponent,showCreateOptionLoader:showCreateOptionLoader,createSearchedOptionLabelStyle:createSearchedOptionLabelStyle,onPressCreateOption:onPressCreateOption,createSearchedOptionContainerStyle:createSearchedOptionContainerStyle,__self:_this,__source:{fileName:_jsxFileName,lineNumber:353,columnNumber:7}}));};exports.MultiSelect=MultiSelect;MultiSelect.propTypes={label:_propTypes.default.string,options:_propTypes.default.arrayOf(_propTypes.default.shape({label:_propTypes.default.string,value:_propTypes.default.string})),placeholder:_propTypes.default.string,labelExtractor:_propTypes.default.func,valueExtractor:_propTypes.default.func,value:_propTypes.default.oneOfType([_propTypes.default.string,_propTypes.default.array]),onSelect:_propTypes.default.func,selectedValue:_propTypes.default.func,deletedValue:_propTypes.default.func,isLoading:_propTypes.default.bool,isSearchable:_propTypes.default.bool,onDonePress:_propTypes.default.func,showCreateOption:_propTypes.default.bool,showCreateOptionLoader:_propTypes.default.bool,createOptionLabel:_propTypes.default.string,onPressCreateOption:_propTypes.default.func,labelStyle:_propTypes.default.object,containerStyle:_propTypes.default.object,inputContainerStyle:_propTypes.default.object,dropdownContainerStyle:_propTypes.default.object,itemContainerStyle:_propTypes.default.object,itemLabelStyle:_propTypes.default.object,multiSelectedItemContainerStyle:_propTypes.default.object,multiSelectedItemLabelStyle:_propTypes.default.object,searchInputContainerStyle:_propTypes.default.object,searchInputStyle:_propTypes.default.object,emptyOptionsContainerStyle:_propTypes.default.object,emptyOptionsLabelStyle:_propTypes.default.object,createSearchedOptionContainerStyle:_propTypes.default.object,createSearchedOptionLabelStyle:_propTypes.default.object,CreateItemComponent:_propTypes.default.node};MultiSelect.defaultProps={label:null,placeholder:"Select Option",labelExtractor:function labelExtractor(option){return option==null?void 0:option.label;},valueExtractor:function valueExtractor(option){return option==null?void 0:option.value;},value:null,onSelect:function onSelect(){},selectedValue:function selectedValue(){},deletedValue:function deletedValue(){},isLoading:false,isSearchable:false,showCreateOption:false,showCreateOptionLoader:false,createOptionLabel:null,onPressCreateOption:function onPressCreateOption(){},onDonePress:function onDonePress(){}};
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.MultiSelect=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNative=require("react-native");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _native=_interopRequireWildcard(require("styled-components/native"));var _styledSystem=require("styled-system");var _=require("./");var _excluded=["options","label","value","labelExtractor","valueExtractor","onSelect","deletedValue","isLoading","isSearchable","showCreateOption","labelStyle","containerStyle","inputContainerStyle","dropdownContainerStyle","itemContainerStyle","multiSelectedItemContainerStyle","multiSelectedItemLabelStyle","selectedValue","CreateItemComponent","showCreateOptionLoader","createSearchedOptionLabelStyle","onPressCreateOption","createSearchedOptionContainerStyle","onDonePress","disabled","noResultsLabelContainerStyle","noResultsLabelStyle","noResultsLabel","NoResultsComponent","maxItemSize","moreItemLabelContainerStyle","moreItemLabelStyle","MoreItemComponent"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/MultiSelect.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var Typography=_native.default.Text(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.textStyle,_styledSystem.space,_styledSystem.layout,_styledSystem.flexbox,_styledSystem.typography,_styledSystem.color,_styledSystem.position,(0,_styledSystem.system)({textDecoration:{property:"textDecoration",cssProperty:"textDecoration"},textTransform:{property:"textTransform",cssProperty:"textTransform"}}));var MultiSelectItem=function MultiSelectItem(_ref){var label=_ref.label,onUnselect=_ref.onUnselect,multiSelectedItemContainerStyle=_ref.multiSelectedItemContainerStyle,multiSelectedItemLabelStyle=_ref.multiSelectedItemLabelStyle,disabled=_ref.disabled;var theme=(0,_react.useContext)(_native.ThemeContext);return _react.default.createElement(_.Container,(0,_extends2.default)({bg:"background.secondary",borderRadius:12,flexDirection:"row",alignItems:"center",justifyContent:"space-between",px:2,py:1,m:1},multiSelectedItemContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:55,columnNumber:5}}),_react.default.createElement(Typography,(0,_extends2.default)({fontFamily:"sf400",fontSize:"s",mr:2,color:"font.grey800"},multiSelectedItemLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:66,columnNumber:7}}),label),!disabled&&_react.default.createElement(_reactNative.TouchableWithoutFeedback,{disabled:disabled,onPress:onUnselect,__self:_this,__source:{fileName:_jsxFileName,lineNumber:76,columnNumber:9}},_react.default.createElement(_reactNativeRemixIcon.default,{name:"ri-close-line",size:"20",color:theme.colors.font.grey800,__self:_this,__source:{fileName:_jsxFileName,lineNumber:77,columnNumber:11}})));};MultiSelectItem.propTypes={label:_propTypes.default.string,onUnselect:_propTypes.default.func,multiSelectedItemContainerStyle:_propTypes.default.object,multiSelectedItemLabelStyle:_propTypes.default.object,disabled:_propTypes.default.bool};var DropdownItem=function DropdownItem(_ref2){var label=_ref2.label,onPress=_ref2.onPress,defaultDropdownItemHeight=_ref2.defaultDropdownItemHeight,itemContainerStyle=_ref2.itemContainerStyle,itemLabelStyle=_ref2.itemLabelStyle;return _react.default.createElement(_.Touchable,{bg:"background.white",onPress:onPress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:104,columnNumber:5}},_react.default.createElement(_.Container,(0,_extends2.default)({height:defaultDropdownItemHeight,p:2},itemContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:105,columnNumber:7}}),_react.default.createElement(Typography,(0,_extends2.default)({fontFamily:"sf400",fontSize:"s",color:"font.grey"},itemLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:110,columnNumber:9}}),label)));};DropdownItem.propTypes={label:_propTypes.default.string,onPress:_propTypes.default.func,defaultDropdownItemHeight:_propTypes.default.number,itemContainerStyle:_propTypes.default.object,itemLabelStyle:_propTypes.default.object};var AnimatedLabel=_reactNativeReanimated.default.createAnimatedComponent(Typography);var MultiSelect=function MultiSelect(_ref3){var options=_ref3.options,label=_ref3.label,value=_ref3.value,labelExtractor=_ref3.labelExtractor,valueExtractor=_ref3.valueExtractor,onSelect=_ref3.onSelect,deletedValue=_ref3.deletedValue,isLoading=_ref3.isLoading,isSearchable=_ref3.isSearchable,showCreateOption=_ref3.showCreateOption,labelStyle=_ref3.labelStyle,containerStyle=_ref3.containerStyle,inputContainerStyle=_ref3.inputContainerStyle,dropdownContainerStyle=_ref3.dropdownContainerStyle,itemContainerStyle=_ref3.itemContainerStyle,multiSelectedItemContainerStyle=_ref3.multiSelectedItemContainerStyle,multiSelectedItemLabelStyle=_ref3.multiSelectedItemLabelStyle,selectedValue=_ref3.selectedValue,CreateItemComponent=_ref3.CreateItemComponent,showCreateOptionLoader=_ref3.showCreateOptionLoader,createSearchedOptionLabelStyle=_ref3.createSearchedOptionLabelStyle,onPressCreateOption=_ref3.onPressCreateOption,createSearchedOptionContainerStyle=_ref3.createSearchedOptionContainerStyle,onDonePress=_ref3.onDonePress,disabled=_ref3.disabled,noResultsLabelContainerStyle=_ref3.noResultsLabelContainerStyle,noResultsLabelStyle=_ref3.noResultsLabelStyle,noResultsLabel=_ref3.noResultsLabel,NoResultsComponent=_ref3.NoResultsComponent,maxItemSize=_ref3.maxItemSize,moreItemLabelContainerStyle=_ref3.moreItemLabelContainerStyle,moreItemLabelStyle=_ref3.moreItemLabelStyle,MoreItemComponent=_ref3.MoreItemComponent,rest=(0,_objectWithoutProperties2.default)(_ref3,_excluded);var theme=(0,_react.useContext)(_native.ThemeContext);var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),showDropdown=_useState2[0],setShowDropdown=_useState2[1];var _useState3=(0,_react.useState)(""),_useState4=(0,_slicedToArray2.default)(_useState3,2),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var dropdownAnimatedHeight=(0,_reactNativeReanimated.useSharedValue)(0);var animatedLabelValue=(0,_reactNativeReanimated.useSharedValue)(0);var formatStr=function formatStr(str){var _str$toLowerCase;return str==null?void 0:(_str$toLowerCase=str.toLowerCase())==null?void 0:_str$toLowerCase.trim();};var filteredOptions=options.filter(function(item,index){var optionValue=valueExtractor(item,index);var isItemAlreadySelected=Boolean(value==null?void 0:value.find(function(selectedItem){return valueExtractor(selectedItem)===optionValue;}));return!isItemAlreadySelected;}).filter(function(item,index){var optionLabel=labelExtractor(item,index);if(searchQuery.length===0)return true;return formatStr(optionLabel).includes(formatStr(searchQuery));});var isOptionsEmpty=!options||(options==null?void 0:options.length)===0;var isSearchedOptionsEmpty=searchQuery.length>0&&filteredOptions.length===0;var emptyOptionsPlaceholderHeight=40;var emptySearchedOptionsHeight=40;var searchInputHeight=35;var multipleOptionsSelected=(value==null?void 0:value.length)>0;var defaultDropdownItemHeight=(itemContainerStyle==null?void 0:itemContainerStyle.height)||32;var dropdownHeight=(dropdownContainerStyle==null?void 0:dropdownContainerStyle.height)||(dropdownContainerStyle==null?void 0:dropdownContainerStyle.maxHeight)||defaultDropdownItemHeight*Math.min(filteredOptions==null?void 0:filteredOptions.length,6)+(isSearchable?searchInputHeight+10:0)+(isOptionsEmpty&&!(isSearchedOptionsEmpty&&showCreateOption)?emptyOptionsPlaceholderHeight:0)+(isSearchedOptionsEmpty&&showCreateOption?emptySearchedOptionsHeight:0);var getValue=function getValue(item,index){return(item==null?void 0:item.value)||valueExtractor(item,index)||item;};var getLabel=function getLabel(item,index){return(item==null?void 0:item.label)||labelExtractor(item,index)||item;};var handleCheckbox=function handleCheckbox(item){var oldData=(0,_toConsumableArray2.default)(value);var index=value.findIndex(function(data,index){return getValue(data,index)===getValue(item);});if(index===-1){oldData.push(item);}else{oldData.splice(index,1);}onSelect(oldData);};var CheckBoxContent=function CheckBoxContent(_ref4){var onPress=_ref4.onPress,item=_ref4.item,index=_ref4.index;var itemIndex=value.findIndex(function(data,i){return getValue(data,i)===getValue(item,index);});return _react.default.createElement(_.Container,{py:12,__self:_this,__source:{fileName:_jsxFileName,lineNumber:282,columnNumber:7}},_react.default.createElement(_.CheckBox,{disabled:disabled,checked:itemIndex!==-1,onSelect:onPress,label:(item==null?void 0:item.label)||labelExtractor(item,index)||item,__self:_this,__source:{fileName:_jsxFileName,lineNumber:283,columnNumber:9}}));};var handleOpenDropdown=function handleOpenDropdown(){_reactNative.Keyboard.dismiss();setSearchQuery("");if(!showDropdown){setShowDropdown(true);}if(showDropdown){dropdownAnimatedHeight.value=0;}};var handleUnSelection=function handleUnSelection(item){var newValue=value.filter(function(selectedItem){return valueExtractor(selectedItem)!==valueExtractor(item);});onSelect(newValue);deletedValue(item);};(0,_react.useEffect)(function(){animatedLabelValue.value=(0,_reactNativeReanimated.withTiming)(value.length||showDropdown?1:0,{duration:250});},[value,showDropdown]);(0,_react.useEffect)(function(){if(showDropdown){dropdownAnimatedHeight.value=dropdownHeight;}},[showDropdown,dropdownHeight]);CheckBoxContent.propTypes={onPress:_propTypes.default.func,item:_propTypes.default.object,index:_propTypes.default.number};var animatedStyles=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){return{top:(0,_reactNativeReanimated.interpolate)(animatedLabelValue.value,[0,1],[7,-5]),fontSize:(0,_reactNativeReanimated.interpolate)(animatedLabelValue.value,[0,1],[17,13]),marginLeft:5,color:"font.grey600"};};_f._closure={interpolate:_reactNativeReanimated.interpolate,animatedLabelValue:animatedLabelValue};_f.asString="function _f(){const{interpolate,animatedLabelValue}=jsThis._closure;{return{top:interpolate(animatedLabelValue.value,[0,1],[7,-5]),fontSize:interpolate(animatedLabelValue.value,[0,1],[17,13]),marginLeft:5,color:\"font.grey600\"};}}";_f.__workletHash=14207624101948;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/MultiSelect.js (335:42)";_f.__optimalization=3;return _f;}());return _react.default.createElement(_.Container,(0,_extends2.default)({},containerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:345,columnNumber:5}}),_react.default.createElement(_reactNative.TouchableWithoutFeedback,{disabled:isLoading,onPress:handleOpenDropdown,__self:_this,__source:{fileName:_jsxFileName,lineNumber:346,columnNumber:7}},_react.default.createElement(_.Container,(0,_extends2.default)({borderRadius:12,borderWidth:1,borderColor:showDropdown?"border.base":"border.grey400",p:2,pr:2,minHeight:58},inputContainerStyle,rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:350,columnNumber:9}}),_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",alignItems:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:360,columnNumber:11}},_react.default.createElement(AnimatedLabel,{position:"absolute",zIndex:1,style:[animatedStyles,(0,_extends2.default)({},labelStyle)],__self:_this,__source:{fileName:_jsxFileName,lineNumber:365,columnNumber:13}},label),!multipleOptionsSelected&&_react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:372,columnNumber:42}}),multipleOptionsSelected&&_react.default.createElement(_.Container,{flexWrap:"wrap",flexDirection:"row",maxWidth:"85%",onStartShouldSetResponder:function onStartShouldSetResponder(){return true;},mt:3,__self:_this,__source:{fileName:_jsxFileName,lineNumber:374,columnNumber:15}},value==null?void 0:value.slice(0,maxItemSize).map(function(item,index){return _react.default.createElement(MultiSelectItem,{key:index,label:getLabel(item),onUnselect:function onUnselect(){return handleUnSelection(item);},multiSelectedItemContainerStyle:multiSelectedItemContainerStyle,multiSelectedItemLabelStyle:multiSelectedItemLabelStyle,disabled:disabled,__self:_this,__source:{fileName:_jsxFileName,lineNumber:383,columnNumber:21}});}),(value==null?void 0:value.length)>maxItemSize&&(!MoreItemComponent?_react.default.createElement(_.Container,(0,_extends2.default)({bg:"background.secondary",borderRadius:12,flexDirection:"row",alignItems:"center",justifyContent:"space-between",px:2,py:1,m:1},moreItemLabelContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:397,columnNumber:21}}),_react.default.createElement(Typography,(0,_extends2.default)({},moreItemLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:408,columnNumber:23}}),"+",(value==null?void 0:value.length)-maxItemSize," More")):_react.default.createElement(MoreItemComponent,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:413,columnNumber:21}}))),_react.default.createElement(_.Container,{mt:10,__self:_this,__source:{fileName:_jsxFileName,lineNumber:417,columnNumber:13}},isLoading?_react.default.createElement(_reactNative.ActivityIndicator,{size:"small",color:theme.colors.background.base,__self:_this,__source:{fileName:_jsxFileName,lineNumber:419,columnNumber:17}}):_react.default.createElement(_reactNativeRemixIcon.default,{name:"arrow-"+(showDropdown?"up":"down")+"-s-line",size:"20",color:"grey",__self:_this,__source:{fileName:_jsxFileName,lineNumber:424,columnNumber:17}}))))),_react.default.createElement(_.BottomSheet,{title:label,onItemPress:function onItemPress(_ref5){var item=_ref5.item;handleCheckbox(item);selectedValue(item);},disabled:disabled,onDonePress:onDonePress,isVisible:showDropdown,hide:function hide(){return setShowDropdown(false);},canSearch:isSearchable,data:options,contentType:"checkbox",ContentRow:CheckBoxContent,showCreateOption:showCreateOption,CreateItemComponent:CreateItemComponent,showCreateOptionLoader:showCreateOptionLoader,createSearchedOptionLabelStyle:createSearchedOptionLabelStyle,onPressCreateOption:onPressCreateOption,createSearchedOptionContainerStyle:createSearchedOptionContainerStyle,noResultsLabelContainerStyle:noResultsLabelContainerStyle,noResultsLabelStyle:noResultsLabelStyle,noResultsLabel:noResultsLabel,NoResultsComponent:NoResultsComponent,valueExtractor:valueExtractor,labelExtractor:labelExtractor,__self:_this,__source:{fileName:_jsxFileName,lineNumber:435,columnNumber:7}}));};exports.MultiSelect=MultiSelect;MultiSelect.propTypes={label:_propTypes.default.string,options:_propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string),_propTypes.default.arrayOf(_propTypes.default.object)]),labelExtractor:_propTypes.default.func,valueExtractor:_propTypes.default.func,value:_propTypes.default.oneOfType([_propTypes.default.string,_propTypes.default.array]),onSelect:_propTypes.default.func,selectedValue:_propTypes.default.func,deletedValue:_propTypes.default.func,isLoading:_propTypes.default.bool,isSearchable:_propTypes.default.bool,onDonePress:_propTypes.default.func,showCreateOption:_propTypes.default.bool,showCreateOptionLoader:_propTypes.default.bool,createOptionLabel:_propTypes.default.string,onPressCreateOption:_propTypes.default.func,labelStyle:_propTypes.default.object,containerStyle:_propTypes.default.object,inputContainerStyle:_propTypes.default.object,dropdownContainerStyle:_propTypes.default.object,itemContainerStyle:_propTypes.default.object,itemLabelStyle:_propTypes.default.object,multiSelectedItemContainerStyle:_propTypes.default.object,multiSelectedItemLabelStyle:_propTypes.default.object,searchInputContainerStyle:_propTypes.default.object,searchInputStyle:_propTypes.default.object,emptyOptionsContainerStyle:_propTypes.default.object,emptyOptionsLabelStyle:_propTypes.default.object,createSearchedOptionContainerStyle:_propTypes.default.object,createSearchedOptionLabelStyle:_propTypes.default.object,CreateItemComponent:_propTypes.default.node,disabled:_propTypes.default.bool,noResultsLabelContainerStyle:_propTypes.default.object,noResultsLabelStyle:_propTypes.default.object,noResultsLabel:_propTypes.default.string,NoResultsComponent:_propTypes.default.node,maxItemSize:_propTypes.default.number,moreItemLabelContainerStyle:_propTypes.default.object,moreItemLabelStyle:_propTypes.default.object,MoreItemComponent:_propTypes.default.node};MultiSelect.defaultProps={label:null,labelExtractor:function labelExtractor(option){return option==null?void 0:option.label;},valueExtractor:function valueExtractor(option){return option==null?void 0:option.value;},value:null,onSelect:function onSelect(){},selectedValue:function selectedValue(){},deletedValue:function deletedValue(){},isLoading:false,isSearchable:false,showCreateOption:false,showCreateOptionLoader:false,createOptionLabel:null,onPressCreateOption:function onPressCreateOption(){},onDonePress:function onDonePress(){},maxItemSize:5};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SearchBar=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _styledSystem=require("styled-system");var _native=_interopRequireDefault(require("styled-components/native"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _=require("./");var _hooks=require("../hooks");var _theme=require("../theme");var _excluded=["placeholder","onChangeText","onCancel","debounceDelay","showCancelButton"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SearchBar.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var TextInput=_native.default.TextInput(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.flexbox,_styledSystem.space,_styledSystem.border,_styledSystem.buttonStyle,_styledSystem.typography,_styledSystem.color);var SearchBar=function SearchBar(props){var _props$placeholder=props.placeholder,placeholder=_props$placeholder===void 0?"Search":_props$placeholder,_props$onChangeText=props.onChangeText,onChangeText=_props$onChangeText===void 0?function(){}:_props$onChangeText,_props$onCancel=props.onCancel,onCancel=_props$onCancel===void 0?function(){}:_props$onCancel,_props$debounceDelay=props.debounceDelay,debounceDelay=_props$debounceDelay===void 0?1000:_props$debounceDelay,_props$showCancelButt=props.showCancelButton,showCancelButton=_props$showCancelButt===void 0?true:_props$showCancelButt,rest=(0,_objectWithoutProperties2.default)(props,_excluded);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(""),_useState2=(0,_slicedToArray2.default)(_useState,2),searchText=_useState2[0],setSearchText=_useState2[1];var debouncedSearchTextValue=(0,_hooks.useDebounce)(searchText,Number(debounceDelay));var buttonWidthController=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;var buttonOpacityController=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;(0,_react.useEffect)(function(){onChangeText(debouncedSearchTextValue);},[debouncedSearchTextValue,onChangeText]);var animateSearchInput=function animateSearchInput(val){_reactNative.Animated.sequence([_reactNative.Animated.timing(buttonOpacityController,{toValue:val,duration:350,useNativeDriver:false}),_reactNative.Animated.timing(buttonWidthController,{toValue:val,duration:200,useNativeDriver:false})]).start();};var cancelButtonWidth=buttonWidthController.interpolate({inputRange:[0,1],outputRange:[0,60]});var onCancelHandle=function onCancelHandle(){animateSearchInput(0);setSearchText("");inputRef.current.blur();onCancel();};return _react.default.createElement(_.Container,{flexDirection:"row",alignItems:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:96,columnNumber:5}},_react.default.createElement(_.Container,(0,_extends2.default)({height:42,flex:1,borderWidth:1,borderColor:_theme.theme.colors.border.grey400,borderRadius:8,flexDirection:"row",alignItems:"center"},rest.containerProps,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:97,columnNumber:7}}),_react.default.createElement(_.Container,{px:10,__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:9}},_react.default.createElement(_reactNativeRemixIcon.default,{name:"ri-search-line",size:20,color:_theme.theme.colors.font.grey600,__self:_this,__source:{fileName:_jsxFileName,lineNumber:108,columnNumber:11}})),_react.default.createElement(TextInput,(0,_extends2.default)({ref:inputRef,value:searchText,onChangeText:setSearchText,onFocus:function onFocus(){animateSearchInput(1);},onBlur:function onBlur(){if(!searchText)animateSearchInput(0);},placeholder:placeholder,fontSize:16,flex:1,placeholderTextColor:_theme.theme.colors.font.grey600,color:"font.primary",autoCapitalize:"none",returnKeyType:"search"},rest.searchbarProps,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:114,columnNumber:9}}))),showCancelButton&&_react.default.createElement(_reactNative.Animated.View,{style:{opacity:buttonOpacityController,width:cancelButtonWidth,alignItems:"flex-end"},__self:_this,__source:{fileName:_jsxFileName,lineNumber:135,columnNumber:9}},_react.default.createElement(_.Button,{variant:"text",label:"Cancel",onPress:onCancelHandle,labelStyle:{mx:0},__self:_this,__source:{fileName:_jsxFileName,lineNumber:142,columnNumber:11}})));};exports.SearchBar=SearchBar;SearchBar.propTypes={placeholder:_propTypes.default.string,onChangeText:_propTypes.default.func.isRequired,debounceDelay:_propTypes.default.oneOfType([_propTypes.default.number,_propTypes.default.string]),searchbarProps:_propTypes.default.object,onCancel:_propTypes.default.func,showCancelButton:_propTypes.default.bool};
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SearchBar=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _styledSystem=require("styled-system");var _native=_interopRequireDefault(require("styled-components/native"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _=require("./");var _hooks=require("../hooks");var _theme=require("../theme");var _excluded=["placeholder","onChangeText","onCancel","debounceDelay","showCancelButton"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SearchBar.js";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var TextInput=_native.default.TextInput(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.flexbox,_styledSystem.space,_styledSystem.border,_styledSystem.buttonStyle,_styledSystem.typography,_styledSystem.color);var SearchBar=function SearchBar(props){var _props$placeholder=props.placeholder,placeholder=_props$placeholder===void 0?"Search":_props$placeholder,_props$onChangeText=props.onChangeText,onChangeText=_props$onChangeText===void 0?function(){}:_props$onChangeText,_props$onCancel=props.onCancel,onCancel=_props$onCancel===void 0?function(){}:_props$onCancel,_props$debounceDelay=props.debounceDelay,debounceDelay=_props$debounceDelay===void 0?1000:_props$debounceDelay,_props$showCancelButt=props.showCancelButton,showCancelButton=_props$showCancelButt===void 0?true:_props$showCancelButt,rest=(0,_objectWithoutProperties2.default)(props,_excluded);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(""),_useState2=(0,_slicedToArray2.default)(_useState,2),searchText=_useState2[0],setSearchText=_useState2[1];var debouncedSearchTextValue=(0,_hooks.useDebounce)(searchText.trim(),Number(debounceDelay));var buttonWidthController=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;var buttonOpacityController=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;(0,_react.useEffect)(function(){onChangeText(debouncedSearchTextValue);},[debouncedSearchTextValue,onChangeText]);var animateSearchInput=function animateSearchInput(val){_reactNative.Animated.sequence([_reactNative.Animated.timing(buttonOpacityController,{toValue:val,duration:350,useNativeDriver:false}),_reactNative.Animated.timing(buttonWidthController,{toValue:val,duration:200,useNativeDriver:false})]).start();};var cancelButtonWidth=buttonWidthController.interpolate({inputRange:[0,1],outputRange:[0,60]});var onCancelHandle=function onCancelHandle(){animateSearchInput(0);setSearchText("");inputRef.current.blur();onCancel();};return _react.default.createElement(_.Container,{flexDirection:"row",alignItems:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:96,columnNumber:5}},_react.default.createElement(_.Container,(0,_extends2.default)({height:42,flex:1,borderWidth:1,borderColor:_theme.theme.colors.border.grey400,borderRadius:8,flexDirection:"row",alignItems:"center"},rest.containerProps,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:97,columnNumber:7}}),_react.default.createElement(_.Container,{px:10,__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:9}},_react.default.createElement(_reactNativeRemixIcon.default,{name:"ri-search-line",size:20,color:_theme.theme.colors.font.grey600,__self:_this,__source:{fileName:_jsxFileName,lineNumber:108,columnNumber:11}})),_react.default.createElement(TextInput,(0,_extends2.default)({ref:inputRef,value:searchText,onChangeText:setSearchText,onFocus:function onFocus(){animateSearchInput(1);},onBlur:function onBlur(){if(!searchText)animateSearchInput(0);},placeholder:placeholder,fontSize:16,flex:1,placeholderTextColor:_theme.theme.colors.font.grey600,color:"font.primary",autoCapitalize:"none",returnKeyType:"search"},rest.searchbarProps,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:114,columnNumber:9}}))),showCancelButton&&_react.default.createElement(_reactNative.Animated.View,{style:{opacity:buttonOpacityController,width:cancelButtonWidth,alignItems:"flex-end"},__self:_this,__source:{fileName:_jsxFileName,lineNumber:135,columnNumber:9}},_react.default.createElement(_.Button,{variant:"text",label:"Cancel",onPress:onCancelHandle,labelStyle:{mx:0},__self:_this,__source:{fileName:_jsxFileName,lineNumber:142,columnNumber:11}})));};exports.SearchBar=SearchBar;SearchBar.propTypes={placeholder:_propTypes.default.string,onChangeText:_propTypes.default.func.isRequired,debounceDelay:_propTypes.default.oneOfType([_propTypes.default.number,_propTypes.default.string]),searchbarProps:_propTypes.default.object,onCancel:_propTypes.default.func,showCancelButton:_propTypes.default.bool};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neetoui-rn",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.192",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"author": "BigBinary",
|
|
6
6
|
"license": "MIT",
|
|
@@ -53,7 +53,6 @@
|
|
|
53
53
|
"@shopify/flash-list": "^1.2.0",
|
|
54
54
|
"@styled-system/prop-types": "^5.1.5",
|
|
55
55
|
"dayjs": "^1.11.4",
|
|
56
|
-
"fuse.js": "^6.6.2",
|
|
57
56
|
"react-content-loader": "^6.2.0",
|
|
58
57
|
"react-native-calendars": "^1.1285.0",
|
|
59
58
|
"react-native-gesture-handler": "^2.4.0",
|
|
@@ -8,11 +8,9 @@ import {
|
|
|
8
8
|
import PropTypes from "prop-types";
|
|
9
9
|
import Modal from "react-native-modal";
|
|
10
10
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
11
|
-
import Fuse from "fuse.js";
|
|
12
11
|
|
|
13
12
|
import { Typography, Container, Touchable, SearchBar } from "@components";
|
|
14
13
|
import { theme } from "../theme";
|
|
15
|
-
import { FUSE_KEYS } from "../constants";
|
|
16
14
|
|
|
17
15
|
const Title = ({
|
|
18
16
|
title,
|
|
@@ -67,6 +65,7 @@ const Title = ({
|
|
|
67
65
|
|
|
68
66
|
{canSearch && (
|
|
69
67
|
<SearchBar
|
|
68
|
+
debounceDelay={200}
|
|
70
69
|
placeholder="Search"
|
|
71
70
|
onChangeText={setSearchText}
|
|
72
71
|
onCancel={() => {
|
|
@@ -103,7 +102,7 @@ Title.propTypes = {
|
|
|
103
102
|
*
|
|
104
103
|
* export default function Main() {
|
|
105
104
|
* const [isBottomSheetVisible, setBottomSheetVisibility] = useState(false);
|
|
106
|
-
* const [
|
|
105
|
+
* const [selectedItem, setSelectedItem] = useState(null);
|
|
107
106
|
* const data = ["neeto-ui-rn", "neeto-desk-rn", "neeto-hq"];
|
|
108
107
|
*
|
|
109
108
|
* return (
|
|
@@ -114,12 +113,12 @@ Title.propTypes = {
|
|
|
114
113
|
* hide={() => {
|
|
115
114
|
* setBottomSheetVisibility(false);
|
|
116
115
|
* }}
|
|
117
|
-
* onItemPress={
|
|
118
|
-
*
|
|
116
|
+
* onItemPress={({item}) => {
|
|
117
|
+
* setSelectedItem(item);
|
|
119
118
|
* }}
|
|
120
119
|
* title="PROJECT"
|
|
121
120
|
* data={data}
|
|
122
|
-
*
|
|
121
|
+
* selectedItem={selectedItem}
|
|
123
122
|
* ContentRow={() => <CustomComponent />}
|
|
124
123
|
* />
|
|
125
124
|
* </Container>
|
|
@@ -143,7 +142,6 @@ export const BottomSheet = ({
|
|
|
143
142
|
hide,
|
|
144
143
|
isVisible,
|
|
145
144
|
onItemPress,
|
|
146
|
-
selectedItemIndex,
|
|
147
145
|
bg,
|
|
148
146
|
children,
|
|
149
147
|
titleContainerStyle,
|
|
@@ -154,22 +152,46 @@ export const BottomSheet = ({
|
|
|
154
152
|
contentType,
|
|
155
153
|
canSearch,
|
|
156
154
|
onDonePress,
|
|
155
|
+
disabled,
|
|
156
|
+
noResultsLabelContainerStyle,
|
|
157
|
+
noResultsLabelStyle,
|
|
158
|
+
noResultsLabel,
|
|
159
|
+
NoResultsComponent,
|
|
160
|
+
labelExtractor,
|
|
161
|
+
valueExtractor,
|
|
162
|
+
selectedItem,
|
|
157
163
|
...rest
|
|
158
164
|
}) => {
|
|
159
165
|
const [searchText, setSearchText] = useState("");
|
|
160
166
|
|
|
161
|
-
const
|
|
167
|
+
const getLabel = (item, index) => {
|
|
168
|
+
return item?.label || labelExtractor(item, index) || item;
|
|
169
|
+
};
|
|
162
170
|
|
|
163
171
|
const generateData = () => {
|
|
164
|
-
if (searchText.
|
|
165
|
-
return
|
|
172
|
+
if (searchText.length) {
|
|
173
|
+
return data.filter(item =>
|
|
174
|
+
getLabel(item).toLowerCase().includes(searchText.toLowerCase())
|
|
175
|
+
);
|
|
166
176
|
} else {
|
|
167
177
|
return data;
|
|
168
178
|
}
|
|
169
179
|
};
|
|
170
180
|
|
|
171
|
-
const
|
|
172
|
-
|
|
181
|
+
const hideCreateComponent = () => {
|
|
182
|
+
const filteredItemCount = generateData().filter(
|
|
183
|
+
data =>
|
|
184
|
+
getLabel(data).toLocaleLowerCase() === searchText.toLocaleLowerCase()
|
|
185
|
+
).length;
|
|
186
|
+
|
|
187
|
+
return filteredItemCount > 0;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
const checkIsSelected = item => {
|
|
191
|
+
const itemValue = item?.value || valueExtractor(item) || item;
|
|
192
|
+
const selectedItemValue =
|
|
193
|
+
selectedItem?.value || valueExtractor(selectedItem) || selectedItem;
|
|
194
|
+
return itemValue === selectedItemValue;
|
|
173
195
|
};
|
|
174
196
|
|
|
175
197
|
return (
|
|
@@ -189,6 +211,7 @@ export const BottomSheet = ({
|
|
|
189
211
|
borderTopRightRadius={20}
|
|
190
212
|
borderTopLeftRadius={20}
|
|
191
213
|
p={16}
|
|
214
|
+
flexShrink={1}
|
|
192
215
|
{...rest}
|
|
193
216
|
>
|
|
194
217
|
{title && (
|
|
@@ -210,14 +233,76 @@ export const BottomSheet = ({
|
|
|
210
233
|
|
|
211
234
|
{data && (
|
|
212
235
|
<FlatList
|
|
213
|
-
ListFooterComponent={
|
|
236
|
+
ListFooterComponent={
|
|
237
|
+
<Container>
|
|
238
|
+
{children}
|
|
239
|
+
{!!searchText &&
|
|
240
|
+
!generateData().length &&
|
|
241
|
+
!showCreateOption &&
|
|
242
|
+
(NoResultsComponent ? (
|
|
243
|
+
<NoResultsComponent />
|
|
244
|
+
) : (
|
|
245
|
+
<Container
|
|
246
|
+
alignItems="center"
|
|
247
|
+
py={2}
|
|
248
|
+
mb={2}
|
|
249
|
+
{...noResultsLabelContainerStyle}
|
|
250
|
+
>
|
|
251
|
+
<Typography
|
|
252
|
+
fontFamily="sf600"
|
|
253
|
+
fontSize="s"
|
|
254
|
+
color="font.grey"
|
|
255
|
+
{...noResultsLabelStyle}
|
|
256
|
+
>
|
|
257
|
+
{noResultsLabel || "No options found"}
|
|
258
|
+
</Typography>
|
|
259
|
+
</Container>
|
|
260
|
+
))}
|
|
261
|
+
|
|
262
|
+
{!disabled &&
|
|
263
|
+
!hideCreateComponent() &&
|
|
264
|
+
(showCreateOptionLoader ? (
|
|
265
|
+
<ActivityIndicator
|
|
266
|
+
size="small"
|
|
267
|
+
color={theme.colors.background.base}
|
|
268
|
+
/>
|
|
269
|
+
) : (
|
|
270
|
+
!!searchText &&
|
|
271
|
+
showCreateOption && (
|
|
272
|
+
<Container>
|
|
273
|
+
{CreateItemComponent ? (
|
|
274
|
+
<CreateItemComponent searchText={searchText} />
|
|
275
|
+
) : (
|
|
276
|
+
<Touchable
|
|
277
|
+
height={40}
|
|
278
|
+
justifyContent="center"
|
|
279
|
+
alignItems="center"
|
|
280
|
+
onPress={() => onPressCreateOption(searchText)}
|
|
281
|
+
{...createSearchedOptionContainerStyle}
|
|
282
|
+
>
|
|
283
|
+
<Typography
|
|
284
|
+
fontFamily="sf400"
|
|
285
|
+
fontSize="s"
|
|
286
|
+
color="font.grey"
|
|
287
|
+
{...createSearchedOptionLabelStyle}
|
|
288
|
+
>
|
|
289
|
+
{createOptionLabel ||
|
|
290
|
+
`Create ${searchText} option`}
|
|
291
|
+
</Typography>
|
|
292
|
+
</Touchable>
|
|
293
|
+
)}
|
|
294
|
+
</Container>
|
|
295
|
+
)
|
|
296
|
+
))}
|
|
297
|
+
</Container>
|
|
298
|
+
}
|
|
214
299
|
initialNumToRender={data.length}
|
|
215
300
|
onScrollBeginDrag={Keyboard.dismiss}
|
|
216
301
|
data={generateData()}
|
|
217
302
|
renderItem={({ item, index }) => {
|
|
218
303
|
return (
|
|
219
304
|
<ContentRow
|
|
220
|
-
isSelected={
|
|
305
|
+
isSelected={checkIsSelected(item)}
|
|
221
306
|
key={index}
|
|
222
307
|
onPress={() => {
|
|
223
308
|
!contentType && hide();
|
|
@@ -231,43 +316,8 @@ export const BottomSheet = ({
|
|
|
231
316
|
keyExtractor={(item, index) => {
|
|
232
317
|
return index;
|
|
233
318
|
}}
|
|
234
|
-
contentContainerStyle={contentContainerStyle}
|
|
235
319
|
/>
|
|
236
320
|
)}
|
|
237
|
-
|
|
238
|
-
{showCreateOptionLoader ? (
|
|
239
|
-
<ActivityIndicator
|
|
240
|
-
size="small"
|
|
241
|
-
color={theme.colors.background.base}
|
|
242
|
-
/>
|
|
243
|
-
) : (
|
|
244
|
-
!!searchText.trim() &&
|
|
245
|
-
!generateData().length &&
|
|
246
|
-
showCreateOption && (
|
|
247
|
-
<Container>
|
|
248
|
-
{CreateItemComponent ? (
|
|
249
|
-
<CreateItemComponent searchText={searchText} />
|
|
250
|
-
) : (
|
|
251
|
-
<Touchable
|
|
252
|
-
height={40}
|
|
253
|
-
justifyContent="center"
|
|
254
|
-
alignItems="center"
|
|
255
|
-
onPress={() => onPressCreateOption(searchText)}
|
|
256
|
-
{...createSearchedOptionContainerStyle}
|
|
257
|
-
>
|
|
258
|
-
<Typography
|
|
259
|
-
fontFamily="sf400"
|
|
260
|
-
fontSize="s"
|
|
261
|
-
color="font.grey"
|
|
262
|
-
{...createSearchedOptionLabelStyle}
|
|
263
|
-
>
|
|
264
|
-
{createOptionLabel || `Create ${searchText} option`}
|
|
265
|
-
</Typography>
|
|
266
|
-
</Touchable>
|
|
267
|
-
)}
|
|
268
|
-
</Container>
|
|
269
|
-
)
|
|
270
|
-
)}
|
|
271
321
|
</Container>
|
|
272
322
|
</SafeAreaView>
|
|
273
323
|
</Modal>
|
|
@@ -282,6 +332,8 @@ BottomSheet.defaultProps = {
|
|
|
282
332
|
onPressCreateOption: () => {},
|
|
283
333
|
CreateItemComponent: null,
|
|
284
334
|
onDonePress: () => {},
|
|
335
|
+
valueExtractor: () => {},
|
|
336
|
+
labelExtractor: () => {},
|
|
285
337
|
};
|
|
286
338
|
|
|
287
339
|
BottomSheet.propTypes = {
|
|
@@ -305,10 +357,6 @@ BottomSheet.propTypes = {
|
|
|
305
357
|
* Callback which returns the index of selected item.
|
|
306
358
|
*/
|
|
307
359
|
onItemPress: PropTypes.func,
|
|
308
|
-
/**
|
|
309
|
-
* Index of selected Item.
|
|
310
|
-
*/
|
|
311
|
-
selectedItemIndex: PropTypes.number,
|
|
312
360
|
/**
|
|
313
361
|
* Callback that will be called on Done button press
|
|
314
362
|
*/
|
|
@@ -318,11 +366,11 @@ BottomSheet.propTypes = {
|
|
|
318
366
|
*/
|
|
319
367
|
bg: PropTypes.string,
|
|
320
368
|
/**
|
|
321
|
-
* To
|
|
369
|
+
* To customize title container styles.
|
|
322
370
|
*/
|
|
323
371
|
titleContainerStyle: PropTypes.object,
|
|
324
372
|
/**
|
|
325
|
-
* To
|
|
373
|
+
* To customize title text styles.
|
|
326
374
|
*/
|
|
327
375
|
titleTextStyle: PropTypes.object,
|
|
328
376
|
/**
|
|
@@ -346,13 +394,33 @@ BottomSheet.propTypes = {
|
|
|
346
394
|
*/
|
|
347
395
|
CreateItemComponent: PropTypes.node,
|
|
348
396
|
/**
|
|
349
|
-
* To
|
|
397
|
+
* To customize empty options placeholder text style.
|
|
350
398
|
*/
|
|
351
399
|
createSearchedOptionLabelStyle: PropTypes.object,
|
|
352
400
|
/**
|
|
353
|
-
*
|
|
401
|
+
* Flag will disable create item feature
|
|
402
|
+
*/
|
|
403
|
+
disabled: PropTypes.bool,
|
|
404
|
+
/**
|
|
405
|
+
* To customize empty options placeholder container style.
|
|
354
406
|
*/
|
|
355
407
|
createSearchedOptionContainerStyle: PropTypes.object,
|
|
408
|
+
noResultsLabelContainerStyle: PropTypes.object,
|
|
409
|
+
noResultsLabelStyle: PropTypes.object,
|
|
410
|
+
noResultsLabel: PropTypes.string,
|
|
411
|
+
NoResultsComponent: PropTypes.node,
|
|
412
|
+
/**
|
|
413
|
+
* Use custom key as label.
|
|
414
|
+
*/
|
|
415
|
+
labelExtractor: PropTypes.func,
|
|
416
|
+
/**
|
|
417
|
+
* Use custom key as value.
|
|
418
|
+
*/
|
|
419
|
+
valueExtractor: PropTypes.func,
|
|
420
|
+
/**
|
|
421
|
+
*
|
|
422
|
+
*/
|
|
423
|
+
selectedItem: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
|
|
356
424
|
/**
|
|
357
425
|
* To support more Modal params.
|
|
358
426
|
*/
|
|
@@ -374,6 +442,7 @@ const styles = StyleSheet.create({
|
|
|
374
442
|
modalStyle: {
|
|
375
443
|
margin: 0,
|
|
376
444
|
justifyContent: "flex-end",
|
|
445
|
+
flex: 1,
|
|
377
446
|
},
|
|
378
447
|
inputContainerStyle: {
|
|
379
448
|
backgroundColor: "white",
|
|
@@ -66,8 +66,8 @@ export const Carousel = ({
|
|
|
66
66
|
activeDotIndex={activeIndex}
|
|
67
67
|
dotStyle={styles.dotStyle}
|
|
68
68
|
inactiveDotStyle={styles.inactiveDotStyle}
|
|
69
|
-
inactiveDotOpacity={
|
|
70
|
-
inactiveDotScale={
|
|
69
|
+
inactiveDotOpacity={1}
|
|
70
|
+
inactiveDotScale={1}
|
|
71
71
|
dotContainerStyle={styles.dotContainerStyle}
|
|
72
72
|
/>
|
|
73
73
|
</Container>
|
|
@@ -95,7 +95,7 @@ const styles = StyleSheet.create({
|
|
|
95
95
|
width: 10,
|
|
96
96
|
height: 10,
|
|
97
97
|
borderRadius: 5,
|
|
98
|
-
|
|
98
|
+
marginRight: 8,
|
|
99
99
|
backgroundColor: "#2F3941",
|
|
100
100
|
},
|
|
101
101
|
inactiveDotStyle: {
|
|
@@ -5,56 +5,92 @@ import {
|
|
|
5
5
|
Keyboard,
|
|
6
6
|
TouchableWithoutFeedback,
|
|
7
7
|
} from "react-native";
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import Animated, {
|
|
9
|
+
interpolate,
|
|
10
|
+
useAnimatedStyle,
|
|
11
|
+
useSharedValue,
|
|
12
|
+
withTiming,
|
|
13
|
+
} from "react-native-reanimated";
|
|
10
14
|
import Icon from "react-native-remix-icon";
|
|
11
|
-
import { ThemeContext } from "styled-components/native";
|
|
12
|
-
|
|
15
|
+
import styled, { ThemeContext } from "styled-components/native";
|
|
13
16
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
flexbox,
|
|
18
|
+
space,
|
|
19
|
+
typography,
|
|
20
|
+
textStyle,
|
|
21
|
+
color,
|
|
22
|
+
layout,
|
|
23
|
+
system,
|
|
24
|
+
position,
|
|
25
|
+
} from "styled-system";
|
|
26
|
+
|
|
27
|
+
import { BottomSheet, CheckBox, Container, Touchable } from "@components";
|
|
28
|
+
|
|
29
|
+
const Typography = styled.Text`
|
|
30
|
+
${textStyle}
|
|
31
|
+
${space}
|
|
32
|
+
${layout}
|
|
33
|
+
${flexbox}
|
|
34
|
+
${typography}
|
|
35
|
+
${color}
|
|
36
|
+
${position}
|
|
37
|
+
${system({
|
|
38
|
+
textDecoration: {
|
|
39
|
+
property: "textDecoration",
|
|
40
|
+
cssProperty: "textDecoration",
|
|
41
|
+
},
|
|
42
|
+
textTransform: { property: "textTransform", cssProperty: "textTransform" },
|
|
43
|
+
})}
|
|
44
|
+
`;
|
|
20
45
|
|
|
21
46
|
const MultiSelectItem = ({
|
|
22
47
|
label,
|
|
23
48
|
onUnselect,
|
|
24
49
|
multiSelectedItemContainerStyle,
|
|
25
50
|
multiSelectedItemLabelStyle,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
fontSize="s"
|
|
41
|
-
mr={2}
|
|
42
|
-
color="font.grey800"
|
|
43
|
-
{...multiSelectedItemLabelStyle}
|
|
51
|
+
disabled,
|
|
52
|
+
}) => {
|
|
53
|
+
const theme = useContext(ThemeContext);
|
|
54
|
+
return (
|
|
55
|
+
<Container
|
|
56
|
+
bg="background.secondary"
|
|
57
|
+
borderRadius={12}
|
|
58
|
+
flexDirection="row"
|
|
59
|
+
alignItems="center"
|
|
60
|
+
justifyContent="space-between"
|
|
61
|
+
px={2}
|
|
62
|
+
py={1}
|
|
63
|
+
m={1}
|
|
64
|
+
{...multiSelectedItemContainerStyle}
|
|
44
65
|
>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
66
|
+
<Typography
|
|
67
|
+
fontFamily="sf400"
|
|
68
|
+
fontSize="s"
|
|
69
|
+
mr={2}
|
|
70
|
+
color="font.grey800"
|
|
71
|
+
{...multiSelectedItemLabelStyle}
|
|
72
|
+
>
|
|
73
|
+
{label}
|
|
74
|
+
</Typography>
|
|
75
|
+
{!disabled && (
|
|
76
|
+
<TouchableWithoutFeedback disabled={disabled} onPress={onUnselect}>
|
|
77
|
+
<Icon
|
|
78
|
+
name="ri-close-line"
|
|
79
|
+
size="20"
|
|
80
|
+
color={theme.colors.font.grey800}
|
|
81
|
+
/>
|
|
82
|
+
</TouchableWithoutFeedback>
|
|
83
|
+
)}
|
|
84
|
+
</Container>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
52
87
|
|
|
53
88
|
MultiSelectItem.propTypes = {
|
|
54
89
|
label: PropTypes.string,
|
|
55
90
|
onUnselect: PropTypes.func,
|
|
56
91
|
multiSelectedItemContainerStyle: PropTypes.object,
|
|
57
92
|
multiSelectedItemLabelStyle: PropTypes.object,
|
|
93
|
+
disabled: PropTypes.bool,
|
|
58
94
|
};
|
|
59
95
|
|
|
60
96
|
const DropdownItem = ({
|
|
@@ -134,11 +170,12 @@ DropdownItem.propTypes = {
|
|
|
134
170
|
* ```
|
|
135
171
|
*/
|
|
136
172
|
|
|
173
|
+
const AnimatedLabel = Animated.createAnimatedComponent(Typography);
|
|
174
|
+
|
|
137
175
|
export const MultiSelect = ({
|
|
138
176
|
options,
|
|
139
177
|
label,
|
|
140
178
|
value,
|
|
141
|
-
placeholder,
|
|
142
179
|
labelExtractor,
|
|
143
180
|
valueExtractor,
|
|
144
181
|
onSelect,
|
|
@@ -160,12 +197,22 @@ export const MultiSelect = ({
|
|
|
160
197
|
onPressCreateOption,
|
|
161
198
|
createSearchedOptionContainerStyle,
|
|
162
199
|
onDonePress,
|
|
200
|
+
disabled,
|
|
201
|
+
noResultsLabelContainerStyle,
|
|
202
|
+
noResultsLabelStyle,
|
|
203
|
+
noResultsLabel,
|
|
204
|
+
NoResultsComponent,
|
|
205
|
+
maxItemSize,
|
|
206
|
+
moreItemLabelContainerStyle,
|
|
207
|
+
moreItemLabelStyle,
|
|
208
|
+
MoreItemComponent,
|
|
163
209
|
...rest
|
|
164
210
|
}) => {
|
|
165
211
|
const theme = useContext(ThemeContext);
|
|
166
212
|
const [showDropdown, setShowDropdown] = useState(false);
|
|
167
213
|
const [searchQuery, setSearchQuery] = useState("");
|
|
168
214
|
const dropdownAnimatedHeight = useSharedValue(0);
|
|
215
|
+
const animatedLabelValue = useSharedValue(0);
|
|
169
216
|
|
|
170
217
|
const formatStr = str => str?.toLowerCase()?.trim();
|
|
171
218
|
const filteredOptions = options
|
|
@@ -205,7 +252,11 @@ export const MultiSelect = ({
|
|
|
205
252
|
: 0);
|
|
206
253
|
|
|
207
254
|
const getValue = (item, index) => {
|
|
208
|
-
return item?.value || valueExtractor(item, index);
|
|
255
|
+
return item?.value || valueExtractor(item, index) || item;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
const getLabel = (item, index) => {
|
|
259
|
+
return item?.label || labelExtractor(item, index) || item;
|
|
209
260
|
};
|
|
210
261
|
|
|
211
262
|
const handleCheckbox = item => {
|
|
@@ -226,17 +277,16 @@ export const MultiSelect = ({
|
|
|
226
277
|
const itemIndex = value.findIndex(
|
|
227
278
|
(data, i) => getValue(data, i) === getValue(item, index)
|
|
228
279
|
);
|
|
280
|
+
|
|
229
281
|
return (
|
|
230
|
-
|
|
231
|
-
<
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
</Container>
|
|
239
|
-
)
|
|
282
|
+
<Container py={12}>
|
|
283
|
+
<CheckBox
|
|
284
|
+
disabled={disabled}
|
|
285
|
+
checked={itemIndex !== -1}
|
|
286
|
+
onSelect={onPress}
|
|
287
|
+
label={item?.label || labelExtractor(item, index) || item}
|
|
288
|
+
/>
|
|
289
|
+
</Container>
|
|
240
290
|
);
|
|
241
291
|
};
|
|
242
292
|
|
|
@@ -251,7 +301,7 @@ export const MultiSelect = ({
|
|
|
251
301
|
}
|
|
252
302
|
};
|
|
253
303
|
|
|
254
|
-
const
|
|
304
|
+
const handleUnSelection = item => {
|
|
255
305
|
const newValue = value.filter(
|
|
256
306
|
selectedItem => valueExtractor(selectedItem) !== valueExtractor(item)
|
|
257
307
|
);
|
|
@@ -259,6 +309,16 @@ export const MultiSelect = ({
|
|
|
259
309
|
deletedValue(item);
|
|
260
310
|
};
|
|
261
311
|
|
|
312
|
+
useEffect(() => {
|
|
313
|
+
animatedLabelValue.value = withTiming(
|
|
314
|
+
value.length || showDropdown ? 1 : 0,
|
|
315
|
+
{
|
|
316
|
+
duration: 250,
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
320
|
+
}, [value, showDropdown]);
|
|
321
|
+
|
|
262
322
|
useEffect(() => {
|
|
263
323
|
if (showDropdown) {
|
|
264
324
|
dropdownAnimatedHeight.value = dropdownHeight;
|
|
@@ -272,6 +332,15 @@ export const MultiSelect = ({
|
|
|
272
332
|
index: PropTypes.number,
|
|
273
333
|
};
|
|
274
334
|
|
|
335
|
+
const animatedStyles = useAnimatedStyle(() => {
|
|
336
|
+
return {
|
|
337
|
+
top: interpolate(animatedLabelValue.value, [0, 1], [7, -5]),
|
|
338
|
+
fontSize: interpolate(animatedLabelValue.value, [0, 1], [17, 13]),
|
|
339
|
+
marginLeft: 5,
|
|
340
|
+
color: "font.grey600",
|
|
341
|
+
};
|
|
342
|
+
});
|
|
343
|
+
|
|
275
344
|
return (
|
|
276
345
|
<Container {...containerStyle}>
|
|
277
346
|
<TouchableWithoutFeedback
|
|
@@ -282,70 +351,83 @@ export const MultiSelect = ({
|
|
|
282
351
|
borderRadius={12}
|
|
283
352
|
borderWidth={1}
|
|
284
353
|
borderColor={showDropdown ? "border.base" : "border.grey400"}
|
|
285
|
-
p={
|
|
354
|
+
p={2}
|
|
286
355
|
pr={2}
|
|
356
|
+
minHeight={58}
|
|
287
357
|
{...inputContainerStyle}
|
|
288
358
|
{...rest}
|
|
289
359
|
>
|
|
290
|
-
<Typography
|
|
291
|
-
fontFamily="sf400"
|
|
292
|
-
mb={1}
|
|
293
|
-
fontSize="xs"
|
|
294
|
-
color="font.grey600"
|
|
295
|
-
ml={1}
|
|
296
|
-
{...labelStyle}
|
|
297
|
-
>
|
|
298
|
-
{label}
|
|
299
|
-
</Typography>
|
|
300
360
|
<Container
|
|
301
361
|
flexDirection="row"
|
|
302
362
|
justifyContent="space-between"
|
|
303
363
|
alignItems="center"
|
|
304
364
|
>
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
365
|
+
<AnimatedLabel
|
|
366
|
+
position="absolute"
|
|
367
|
+
zIndex={1}
|
|
368
|
+
style={[animatedStyles, { ...labelStyle }]}
|
|
369
|
+
>
|
|
370
|
+
{label}
|
|
371
|
+
</AnimatedLabel>
|
|
372
|
+
{!multipleOptionsSelected && <Container />}
|
|
310
373
|
{multipleOptionsSelected && (
|
|
311
|
-
<
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
multiSelectedItemContainerStyle
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
374
|
+
<Container
|
|
375
|
+
flexWrap="wrap"
|
|
376
|
+
flexDirection="row"
|
|
377
|
+
maxWidth="85%"
|
|
378
|
+
onStartShouldSetResponder={() => true}
|
|
379
|
+
mt={3}
|
|
380
|
+
>
|
|
381
|
+
{value?.slice(0, maxItemSize).map((item, index) => {
|
|
382
|
+
return (
|
|
383
|
+
<MultiSelectItem
|
|
384
|
+
key={index}
|
|
385
|
+
label={getLabel(item)}
|
|
386
|
+
onUnselect={() => handleUnSelection(item)}
|
|
387
|
+
multiSelectedItemContainerStyle={
|
|
388
|
+
multiSelectedItemContainerStyle
|
|
389
|
+
}
|
|
390
|
+
multiSelectedItemLabelStyle={multiSelectedItemLabelStyle}
|
|
391
|
+
disabled={disabled}
|
|
392
|
+
/>
|
|
393
|
+
);
|
|
394
|
+
})}
|
|
395
|
+
{value?.length > maxItemSize &&
|
|
396
|
+
(!MoreItemComponent ? (
|
|
397
|
+
<Container
|
|
398
|
+
bg="background.secondary"
|
|
399
|
+
borderRadius={12}
|
|
400
|
+
flexDirection="row"
|
|
401
|
+
alignItems="center"
|
|
402
|
+
justifyContent="space-between"
|
|
403
|
+
px={2}
|
|
404
|
+
py={1}
|
|
405
|
+
m={1}
|
|
406
|
+
{...moreItemLabelContainerStyle}
|
|
407
|
+
>
|
|
408
|
+
<Typography {...moreItemLabelStyle}>
|
|
409
|
+
+{value?.length - maxItemSize} More
|
|
410
|
+
</Typography>
|
|
411
|
+
</Container>
|
|
412
|
+
) : (
|
|
413
|
+
<MoreItemComponent />
|
|
414
|
+
))}
|
|
415
|
+
</Container>
|
|
348
416
|
)}
|
|
417
|
+
<Container mt={10}>
|
|
418
|
+
{isLoading ? (
|
|
419
|
+
<ActivityIndicator
|
|
420
|
+
size="small"
|
|
421
|
+
color={theme.colors.background.base}
|
|
422
|
+
/>
|
|
423
|
+
) : (
|
|
424
|
+
<Icon
|
|
425
|
+
name={`arrow-${showDropdown ? "up" : "down"}-s-line`}
|
|
426
|
+
size="20"
|
|
427
|
+
color="grey"
|
|
428
|
+
/>
|
|
429
|
+
)}
|
|
430
|
+
</Container>
|
|
349
431
|
</Container>
|
|
350
432
|
</Container>
|
|
351
433
|
</TouchableWithoutFeedback>
|
|
@@ -356,6 +438,7 @@ export const MultiSelect = ({
|
|
|
356
438
|
handleCheckbox(item);
|
|
357
439
|
selectedValue(item);
|
|
358
440
|
}}
|
|
441
|
+
disabled={disabled}
|
|
359
442
|
onDonePress={onDonePress}
|
|
360
443
|
isVisible={showDropdown}
|
|
361
444
|
hide={() => setShowDropdown(false)}
|
|
@@ -369,6 +452,12 @@ export const MultiSelect = ({
|
|
|
369
452
|
createSearchedOptionLabelStyle={createSearchedOptionLabelStyle}
|
|
370
453
|
onPressCreateOption={onPressCreateOption}
|
|
371
454
|
createSearchedOptionContainerStyle={createSearchedOptionContainerStyle}
|
|
455
|
+
noResultsLabelContainerStyle={noResultsLabelContainerStyle}
|
|
456
|
+
noResultsLabelStyle={noResultsLabelStyle}
|
|
457
|
+
noResultsLabel={noResultsLabel}
|
|
458
|
+
NoResultsComponent={NoResultsComponent}
|
|
459
|
+
valueExtractor={valueExtractor}
|
|
460
|
+
labelExtractor={labelExtractor}
|
|
372
461
|
/>
|
|
373
462
|
</Container>
|
|
374
463
|
);
|
|
@@ -382,16 +471,10 @@ MultiSelect.propTypes = {
|
|
|
382
471
|
/**
|
|
383
472
|
* options to populate the options dropdown.
|
|
384
473
|
*/
|
|
385
|
-
options: PropTypes.
|
|
386
|
-
PropTypes.
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
})
|
|
390
|
-
),
|
|
391
|
-
/**
|
|
392
|
-
* The text to be displayed if no option is selected.
|
|
393
|
-
*/
|
|
394
|
-
placeholder: PropTypes.string,
|
|
474
|
+
options: PropTypes.oneOfType([
|
|
475
|
+
PropTypes.arrayOf(PropTypes.string),
|
|
476
|
+
PropTypes.arrayOf(PropTypes.object),
|
|
477
|
+
]),
|
|
395
478
|
/**
|
|
396
479
|
* Use custom key as label.
|
|
397
480
|
*/
|
|
@@ -477,7 +560,7 @@ MultiSelect.propTypes = {
|
|
|
477
560
|
*/
|
|
478
561
|
multiSelectedItemLabelStyle: PropTypes.object,
|
|
479
562
|
/**
|
|
480
|
-
* To customise search input
|
|
563
|
+
* To customise search input container style.
|
|
481
564
|
*/
|
|
482
565
|
searchInputContainerStyle: PropTypes.object,
|
|
483
566
|
/**
|
|
@@ -504,11 +587,46 @@ MultiSelect.propTypes = {
|
|
|
504
587
|
* Component that renders when searched item doesn't exists
|
|
505
588
|
*/
|
|
506
589
|
CreateItemComponent: PropTypes.node,
|
|
590
|
+
/**
|
|
591
|
+
* Flag will disable the selection of the item
|
|
592
|
+
*/
|
|
593
|
+
disabled: PropTypes.bool,
|
|
594
|
+
/**
|
|
595
|
+
* To customize no results container style
|
|
596
|
+
*/
|
|
597
|
+
noResultsLabelContainerStyle: PropTypes.object,
|
|
598
|
+
/**
|
|
599
|
+
* To customize no results label style
|
|
600
|
+
*/
|
|
601
|
+
noResultsLabelStyle: PropTypes.object,
|
|
602
|
+
/**
|
|
603
|
+
* To customize no results label
|
|
604
|
+
*/
|
|
605
|
+
noResultsLabel: PropTypes.string,
|
|
606
|
+
/**
|
|
607
|
+
* To customize no results component
|
|
608
|
+
*/
|
|
609
|
+
NoResultsComponent: PropTypes.node,
|
|
610
|
+
/**
|
|
611
|
+
* Maximum number of items to render in the list
|
|
612
|
+
*/
|
|
613
|
+
maxItemSize: PropTypes.number,
|
|
614
|
+
/**
|
|
615
|
+
* Container style for the more item label
|
|
616
|
+
*/
|
|
617
|
+
moreItemLabelContainerStyle: PropTypes.object,
|
|
618
|
+
/**
|
|
619
|
+
* More item label style
|
|
620
|
+
*/
|
|
621
|
+
moreItemLabelStyle: PropTypes.object,
|
|
622
|
+
/**
|
|
623
|
+
* Custom component to render more item message
|
|
624
|
+
*/
|
|
625
|
+
MoreItemComponent: PropTypes.node,
|
|
507
626
|
};
|
|
508
627
|
|
|
509
628
|
MultiSelect.defaultProps = {
|
|
510
629
|
label: null,
|
|
511
|
-
placeholder: "Select Option",
|
|
512
630
|
labelExtractor: option => option?.label,
|
|
513
631
|
valueExtractor: option => option?.value,
|
|
514
632
|
value: null,
|
|
@@ -522,4 +640,5 @@ MultiSelect.defaultProps = {
|
|
|
522
640
|
createOptionLabel: null,
|
|
523
641
|
onPressCreateOption: () => {},
|
|
524
642
|
onDonePress: () => {},
|
|
643
|
+
maxItemSize: 5,
|
|
525
644
|
};
|
|
@@ -55,7 +55,7 @@ export const SearchBar = props => {
|
|
|
55
55
|
const inputRef = useRef();
|
|
56
56
|
const [searchText, setSearchText] = useState("");
|
|
57
57
|
const debouncedSearchTextValue = useDebounce(
|
|
58
|
-
searchText,
|
|
58
|
+
searchText.trim(),
|
|
59
59
|
Number(debounceDelay)
|
|
60
60
|
);
|
|
61
61
|
const buttonWidthController = useRef(new Animated.Value(0)).current;
|
package/src/constants.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const FUSE_KEYS = ["label", "name", "value", "title", "email"];
|