@bigbinary/neetoui-rn 0.0.239 → 0.0.241

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.
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Button=exports.BUTTON_VARIANTS=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("@styled-system/prop-types"));var _propTypes2=_interopRequireDefault(require("prop-types"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./");var _excluded=["variant","label","labelStyle","RightIcon","LeftIcon","disabled","isLoading","loadingText","fontFamily","color","fontSize"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Button.jsx";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 BUTTON_VARIANTS=Object.freeze({SOLID:"solid",SECONDARY:"secondary",TEXT:"text",DANGER:"danger",DANGER_INVERSE:"danger-inverse",DANGER_TEXT:"danger-text"});exports.BUTTON_VARIANTS=BUTTON_VARIANTS;var Button=function Button(_ref){var variant=_ref.variant,label=_ref.label,labelStyle=_ref.labelStyle,RightIcon=_ref.RightIcon,LeftIcon=_ref.LeftIcon,disabled=_ref.disabled,isLoading=_ref.isLoading,loadingText=_ref.loadingText,fontFamily=_ref.fontFamily,color=_ref.color,fontSize=_ref.fontSize,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var theme=(0,_react.useContext)(_native.ThemeContext);var width=variant==="text"||variant==="danger-text"?null:"100%";var getButtonColors=function getButtonColors(){switch(variant){case BUTTON_VARIANTS.SOLID:return{bg:theme.colors.background[disabled?"grey400":"base"],border:theme.colors.background[disabled?"grey400":"base"],color:theme.colors.background.white,ripple:"white"};case BUTTON_VARIANTS.SECONDARY:return{bg:"transparent",border:theme.colors.background.base,color:theme.colors.font.base,ripple:theme.colors.background.base};case BUTTON_VARIANTS.TEXT:return{bg:"transparent",border:"transparent",color:theme.colors.font.primary,ripple:theme.colors.background.grey800};case BUTTON_VARIANTS.DANGER:return{bg:theme.colors.background.danger,border:theme.colors.background.danger,color:theme.colors.background.white,ripple:"white"};case BUTTON_VARIANTS.DANGER_INVERSE:return{bg:theme.colors.background.white,border:theme.colors.background.danger,color:theme.colors.background.danger,ripple:theme.colors.background.grey800};case BUTTON_VARIANTS.DANGER_TEXT:return{bg:"transparent",border:"transparent",color:theme.colors.background.danger,ripple:theme.colors.background.grey800};default:return{bg:theme.colors.background[disabled?"grey400":"base"],border:theme.colors.background[disabled?"grey400":"base"],color:theme.colors.background.white,ripple:"white"};}};var renderOpacity=function renderOpacity(){if(["secondary","danger","danger-inverse","danger-text"].includes(variant)&&disabled){return 0.5;}return 1;};return _react.default.createElement(_.Touchable,(0,_extends2.default)({alignItems:"center",bg:getButtonColors().bg,borderColor:getButtonColors().border,borderRadius:(0,_reactNativeSizeMatters.moderateScale)(8),borderWidth:(0,_reactNativeSizeMatters.moderateScale)(1),disabled:disabled||isLoading,flexDirection:"row",height:(0,_reactNativeSizeMatters.moderateScale)(48),justifyContent:"center",opacity:renderOpacity(),px:width===null?(0,_reactNativeSizeMatters.moderateScale)(8):undefined,rippleConfig:{color:getButtonColors().ripple},width:width},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:157,columnNumber:5}}),isLoading?_react.default.createElement(_.Container,{flexDirection:"row",__self:_this,__source:{fileName:_jsxFileName,lineNumber:174,columnNumber:9}},_react.default.createElement(_.Loader,{color:getButtonColors().color,__self:_this,__source:{fileName:_jsxFileName,lineNumber:175,columnNumber:11}}),!!loadingText&&_react.default.createElement(_.Typography,(0,_extends2.default)({color:color||getButtonColors().color,fontFamily:fontFamily||theme.fonts.sf500,fontSize:fontSize,ml:(0,_reactNativeSizeMatters.moderateScale)(8),textAlign:"center"},labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:177,columnNumber:13}}),loadingText)):_react.default.createElement(_react.default.Fragment,null,LeftIcon&&_react.default.createElement(LeftIcon,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:191,columnNumber:24}}),_react.default.createElement(_.Typography,(0,_extends2.default)({color:color||getButtonColors().color,fontFamily:fontFamily||theme.fonts.sf500,fontSize:fontSize,mx:(0,_reactNativeSizeMatters.moderateScale)(2),textAlign:"center"},labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:192,columnNumber:11}}),label),RightIcon&&_react.default.createElement(RightIcon,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:202,columnNumber:25}})));};exports.Button=Button;Button.defaultProps={variant:"solid",isLoading:false,loadingText:"",fontSize:"m"};Button.propTypes=(0,_extends2.default)({},_propTypes.default.buttonStyle,_propTypes.default.flexbox,_propTypes.default.space,_propTypes.default.border,_propTypes.default.layout,_propTypes.default.color,{label:_propTypes2.default.string.isRequired,variant:_propTypes2.default.oneOf(Object.values(BUTTON_VARIANTS)),disabled:_propTypes2.default.bool,labelStyle:_propTypes2.default.object,RightIcon:_propTypes2.default.elementType,LeftIcon:_propTypes2.default.elementType,isLoading:_propTypes2.default.bool,loadingText:_propTypes2.default.string,fontFamily:_propTypes2.default.string,color:_propTypes2.default.string,fontSize:_propTypes2.default.string});
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Button=exports.BUTTON_VARIANTS=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("@styled-system/prop-types"));var _propTypes2=_interopRequireDefault(require("prop-types"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./");var _excluded=["variant","label","labelStyle","RightIcon","LeftIcon","disabled","isLoading","loadingText","fontFamily","color","fontSize"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Button.jsx";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 BUTTON_VARIANTS=Object.freeze({SOLID:"solid",SECONDARY:"secondary",TEXT:"text",DANGER:"danger",DANGER_INVERSE:"danger-inverse",DANGER_TEXT:"danger-text"});exports.BUTTON_VARIANTS=BUTTON_VARIANTS;var Button=_react.default.forwardRef(function(_ref,ref){var variant=_ref.variant,label=_ref.label,labelStyle=_ref.labelStyle,RightIcon=_ref.RightIcon,LeftIcon=_ref.LeftIcon,disabled=_ref.disabled,isLoading=_ref.isLoading,loadingText=_ref.loadingText,fontFamily=_ref.fontFamily,color=_ref.color,fontSize=_ref.fontSize,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var theme=(0,_react.useContext)(_native.ThemeContext);var width=variant==="text"||variant==="danger-text"?null:"100%";var getButtonColors=function getButtonColors(){switch(variant){case BUTTON_VARIANTS.SOLID:return{bg:theme.colors.background[disabled?"grey400":"base"],border:theme.colors.background[disabled?"grey400":"base"],color:theme.colors.background.white,ripple:"white"};case BUTTON_VARIANTS.SECONDARY:return{bg:"transparent",border:theme.colors.background.base,color:theme.colors.font.base,ripple:theme.colors.background.base};case BUTTON_VARIANTS.TEXT:return{bg:"transparent",border:"transparent",color:theme.colors.font.primary,ripple:theme.colors.background.grey800};case BUTTON_VARIANTS.DANGER:return{bg:theme.colors.background.danger,border:theme.colors.background.danger,color:theme.colors.background.white,ripple:"white"};case BUTTON_VARIANTS.DANGER_INVERSE:return{bg:theme.colors.background.white,border:theme.colors.background.danger,color:theme.colors.background.danger,ripple:theme.colors.background.grey800};case BUTTON_VARIANTS.DANGER_TEXT:return{bg:"transparent",border:"transparent",color:theme.colors.background.danger,ripple:theme.colors.background.grey800};default:return{bg:theme.colors.background[disabled?"grey400":"base"],border:theme.colors.background[disabled?"grey400":"base"],color:theme.colors.background.white,ripple:"white"};}};var renderOpacity=function renderOpacity(){if(["secondary","danger","danger-inverse","danger-text"].includes(variant)&&disabled){return 0.5;}return 1;};return _react.default.createElement(_.Touchable,(0,_extends2.default)({alignItems:"center",bg:getButtonColors().bg,borderColor:getButtonColors().border,borderRadius:(0,_reactNativeSizeMatters.moderateScale)(8),borderWidth:(0,_reactNativeSizeMatters.moderateScale)(1),disabled:disabled||isLoading,flexDirection:"row",height:(0,_reactNativeSizeMatters.moderateScale)(48),justifyContent:"center",opacity:renderOpacity(),px:width===null?(0,_reactNativeSizeMatters.moderateScale)(8):undefined,ref:ref,rippleConfig:{color:getButtonColors().ripple},width:width},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:162,columnNumber:7}}),isLoading?_react.default.createElement(_.Container,{flexDirection:"row",__self:_this,__source:{fileName:_jsxFileName,lineNumber:180,columnNumber:11}},_react.default.createElement(_.Loader,{color:getButtonColors().color,__self:_this,__source:{fileName:_jsxFileName,lineNumber:181,columnNumber:13}}),!!loadingText&&_react.default.createElement(_.Typography,(0,_extends2.default)({color:color||getButtonColors().color,fontFamily:fontFamily||theme.fonts.sf500,fontSize:fontSize,ml:(0,_reactNativeSizeMatters.moderateScale)(8),textAlign:"center"},labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:183,columnNumber:15}}),loadingText)):_react.default.createElement(_react.default.Fragment,null,LeftIcon&&_react.default.createElement(LeftIcon,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:197,columnNumber:26}}),_react.default.createElement(_.Typography,(0,_extends2.default)({color:color||getButtonColors().color,fontFamily:fontFamily||theme.fonts.sf500,fontSize:fontSize,mx:(0,_reactNativeSizeMatters.moderateScale)(2),textAlign:"center"},labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:198,columnNumber:13}}),label),RightIcon&&_react.default.createElement(RightIcon,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:208,columnNumber:27}})));});exports.Button=Button;Button.defaultProps={variant:"solid",isLoading:false,loadingText:"",fontSize:"m"};Button.propTypes=(0,_extends2.default)({},_propTypes.default.buttonStyle,_propTypes.default.flexbox,_propTypes.default.space,_propTypes.default.border,_propTypes.default.layout,_propTypes.default.color,{label:_propTypes2.default.string.isRequired,variant:_propTypes2.default.oneOf(Object.values(BUTTON_VARIANTS)),disabled:_propTypes2.default.bool,labelStyle:_propTypes2.default.object,RightIcon:_propTypes2.default.elementType,LeftIcon:_propTypes2.default.elementType,isLoading:_propTypes2.default.bool,loadingText:_propTypes2.default.string,fontFamily:_propTypes2.default.string,color:_propTypes2.default.string,fontSize:_propTypes2.default.string});Button.displayName="Button";
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.InputEmailChip=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));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 _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./");var _utils=require("../utils/utils");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/InputEmailChip.jsx";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 gap=(0,_reactNativeSizeMatters.moderateScale)(4);var chipWrapperStyle={pt:gap};var getChipContainerStyle=function getChipContainerStyle(isReadyForDeletion){return{borderColor:isReadyForDeletion?"border.danger":"border.grey200"};};var InputEmailChip=function InputEmailChip(_ref){var disabled=_ref.disabled,label=_ref.label,_ref$emails=_ref.emails,emails=_ref$emails===void 0?[]:_ref$emails,onUpdate=_ref.onUpdate,_ref$delimiters=_ref.delimiters,delimiters=_ref$delimiters===void 0?[" ",","]:_ref$delimiters;var theme=(0,_react.useContext)(_native.ThemeContext);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(""),_useState2=(0,_slicedToArray2.default)(_useState,2),textValue=_useState2[0],setTextValue=_useState2[1];var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),shouldShowInput=_useState4[0],setShouldShowInput=_useState4[1];var _useState5=(0,_react.useState)(-1),_useState6=(0,_slicedToArray2.default)(_useState5,2),emailIndexForDeletion=_useState6[0],setEmailIndexForDeletion=_useState6[1];var handleKeyPress=function handleKeyPress(event){var _ref2=event.nativeEvent||{},key=_ref2.key;if(!(textValue===""&&key==="Backspace"&&emails.length>0))return;if(emailIndexForDeletion===-1){setEmailIndexForDeletion(emails.length-1);}else{removeEmail({lastOne:true});setEmailIndexForDeletion(-1);}};var handleSubmitEditing=function handleSubmitEditing(event){var _ref3=event.nativeEvent||{},text=_ref3.text;setEmailIndexForDeletion(-1);checkAndUpdateEmails(text);};var handleTextChange=function handleTextChange(text){if(!(0,_utils.endsWithChars)(text,delimiters)){setEmailIndexForDeletion(-1);setTextValue(text);return;}checkAndUpdateEmails(text);};var handleInputTouchStart=function handleInputTouchStart(){return setEmailIndexForDeletion(-1);};var handleTouchStart=function handleTouchStart(){var _inputRef$current;if(disabled)return;if(!((_inputRef$current=inputRef.current)!=null&&_inputRef$current.isFocused())){var _inputRef$current2;(_inputRef$current2=inputRef.current)==null?void 0:_inputRef$current2.focus();}};var handleOnFocus=function handleOnFocus(){return setShouldShowInput(true);};var handleOnBlur=function handleOnBlur(){if(textValue.trim()===""){setShouldShowInput(false);}};var checkAndUpdateEmails=function checkAndUpdateEmails(text){var emailCandidate=(0,_utils.trimChars)(text,delimiters);if(emailCandidate!==""&&(0,_utils.isValidEmail)(emailCandidate)&&!emails.includes(emailCandidate)){var _emails=[].concat((0,_toConsumableArray2.default)(emails),[emailCandidate]);setTextValue("");onUpdate&&onUpdate(_emails);}else{setTextValue(text);}};var removeEmail=function removeEmail(_ref4){var email=_ref4.email,_ref4$lastOne=_ref4.lastOne,lastOne=_ref4$lastOne===void 0?false:_ref4$lastOne;var indexOfEmail=lastOne?emails.length-1:emails.indexOf(email);if(indexOfEmail!==-1){var _emails=(0,_toConsumableArray2.default)(emails);_emails.splice(indexOfEmail,1);onUpdate&&onUpdate(_emails);}};var inputProps={autoCorrect:false,fontSize:"xs",returnKeyType:"done",autoCapitalize:"none",keyboardType:"email-address",padding:0,minHeight:(0,_reactNativeSizeMatters.moderateScale)(26),selectionColor:emailIndexForDeletion===-1?theme.colors.font.base:"transparent"};return _react.default.createElement(_.Container,{flexDirection:"row",minHeight:(0,_reactNativeSizeMatters.moderateScale)(30),py:(0,_reactNativeSizeMatters.moderateScale)(2),width:"100%",onTouchStart:handleTouchStart,__self:_this,__source:{fileName:_jsxFileName,lineNumber:123,columnNumber:5}},!!label&&_react.default.createElement(_.Typography,{color:disabled?"font.grey400":"font.grey600",fontSize:"xs",mr:(0,_reactNativeSizeMatters.moderateScale)(8),mt:_reactNative.Platform.select({android:(0,_reactNativeSizeMatters.moderateScale)(10),ios:(0,_reactNativeSizeMatters.moderateScale)(8)}),__self:_this,__source:{fileName:_jsxFileName,lineNumber:131,columnNumber:9}},label),_react.default.createElement(_.Container,{alignItems:"center",flex:1,flexDirection:"row",flexWrap:"wrap",__self:_this,__source:{fileName:_jsxFileName,lineNumber:143,columnNumber:7}},emails.map(function(email,index){return _react.default.createElement(_.Container,(0,_extends2.default)({key:email},chipWrapperStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:150,columnNumber:11}}),_react.default.createElement(_.Chip,{isDisabled:disabled,label:email,containerStyle:getChipContainerStyle(index===emailIndexForDeletion),onClose:disabled?null:function(){return removeEmail({email:email});},__self:_this,__source:{fileName:_jsxFileName,lineNumber:151,columnNumber:13}}));}),!disabled&&_react.default.createElement(_.Container,(0,_extends2.default)({alignItems:"center",flex:1,justifyContent:"center",minWidth:(0,_reactNativeSizeMatters.moderateScale)(160),paddingTop:_reactNative.Platform.select({ios:gap,android:(0,_reactNativeSizeMatters.moderateScale)(7)})},shouldShowInput?{}:{height:0},{__self:_this,__source:{fileName:_jsxFileName,lineNumber:162,columnNumber:11}}),_react.default.createElement(_.Input,{noBorder:true,disabled:disabled,value:textValue,inputProps:(0,_extends2.default)({},inputProps,{ref:inputRef,onKeyPress:handleKeyPress,onSubmitEditing:handleSubmitEditing,onTouchStart:handleInputTouchStart,onFocus:handleOnFocus,onBlur:handleOnBlur}),onChangeText:handleTextChange,__self:_this,__source:{fileName:_jsxFileName,lineNumber:173,columnNumber:13}}))));};exports.InputEmailChip=InputEmailChip;InputEmailChip.propTypes={disabled:_propTypes.default.bool,label:_propTypes.default.string,emails:_propTypes.default.arrayOf(_propTypes.default.string),delimiters:_propTypes.default.arrayOf(_propTypes.default.string),onUpdate:_propTypes.default.func};
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.InputEmailChip=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));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 _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./");var _utils=require("../utils/utils");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/InputEmailChip.jsx";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 gap=(0,_reactNativeSizeMatters.moderateScale)(4);var chipWrapperStyle={pt:gap};var getChipContainerStyle=function getChipContainerStyle(isReadyForDeletion){return{borderColor:isReadyForDeletion?"border.danger":"border.grey200"};};var InputEmailChip=function InputEmailChip(_ref){var disabled=_ref.disabled,label=_ref.label,_ref$emails=_ref.emails,emails=_ref$emails===void 0?[]:_ref$emails,onUpdate=_ref.onUpdate,_ref$delimiters=_ref.delimiters,delimiters=_ref$delimiters===void 0?[" ",","]:_ref$delimiters;var theme=(0,_react.useContext)(_native.ThemeContext);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(""),_useState2=(0,_slicedToArray2.default)(_useState,2),textValue=_useState2[0],setTextValue=_useState2[1];var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),shouldShowInput=_useState4[0],setShouldShowInput=_useState4[1];var _useState5=(0,_react.useState)(-1),_useState6=(0,_slicedToArray2.default)(_useState5,2),emailIndexForDeletion=_useState6[0],setEmailIndexForDeletion=_useState6[1];var handleKeyPress=function handleKeyPress(event){var _ref2=event.nativeEvent||{},key=_ref2.key;if(!(textValue===""&&key==="Backspace"&&emails.length>0))return;if(emailIndexForDeletion===-1){setEmailIndexForDeletion(emails.length-1);}else{removeEmail({lastOne:true});setEmailIndexForDeletion(-1);}};var handleSubmitEditing=function handleSubmitEditing(event){var _ref3=event.nativeEvent||{},text=_ref3.text;setEmailIndexForDeletion(-1);checkAndUpdateEmails(text);};var handleTextChange=function handleTextChange(text){if(!(0,_utils.endsWithChars)(text,delimiters)){setEmailIndexForDeletion(-1);setTextValue(text);return;}checkAndUpdateEmails(text);};var handleInputTouchStart=function handleInputTouchStart(){return setEmailIndexForDeletion(-1);};var handleTouchStart=function handleTouchStart(){var _inputRef$current;if(disabled)return;if(!((_inputRef$current=inputRef.current)!=null&&_inputRef$current.isFocused())){var _inputRef$current2;(_inputRef$current2=inputRef.current)==null?void 0:_inputRef$current2.focus();}};var handleOnFocus=function handleOnFocus(){return setShouldShowInput(true);};var handleOnBlur=function handleOnBlur(){if(textValue.trim()===""){setShouldShowInput(false);}};var checkAndUpdateEmails=function checkAndUpdateEmails(text){var emailCandidate=(0,_utils.trimChars)(text,delimiters);if(emailCandidate!==""&&(0,_utils.isValidEmail)(emailCandidate)&&!emails.includes(emailCandidate)){var _emails=[].concat((0,_toConsumableArray2.default)(emails),[emailCandidate]);setTextValue("");onUpdate&&onUpdate(_emails);}else{setTextValue(text);}};var removeEmail=function removeEmail(_ref4){var email=_ref4.email,_ref4$lastOne=_ref4.lastOne,lastOne=_ref4$lastOne===void 0?false:_ref4$lastOne;var indexOfEmail=lastOne?emails.length-1:emails.indexOf(email);if(indexOfEmail!==-1){var _emails=(0,_toConsumableArray2.default)(emails);_emails.splice(indexOfEmail,1);onUpdate&&onUpdate(_emails);}};var inputProps={autoCorrect:false,fontSize:"xs",returnKeyType:"done",autoCapitalize:"none",keyboardType:"email-address",padding:0,minHeight:(0,_reactNativeSizeMatters.moderateScale)(26),selectionColor:emailIndexForDeletion===-1?theme.colors.font.base:"transparent"};return _react.default.createElement(_.Container,{flexDirection:"row",minHeight:(0,_reactNativeSizeMatters.moderateScale)(30),py:(0,_reactNativeSizeMatters.moderateScale)(2),width:"100%",__self:_this,__source:{fileName:_jsxFileName,lineNumber:123,columnNumber:5}},!!label&&_react.default.createElement(_.Typography,{color:disabled?"font.grey400":"font.grey600",fontSize:"xs",mr:(0,_reactNativeSizeMatters.moderateScale)(8),mt:_reactNative.Platform.select({android:(0,_reactNativeSizeMatters.moderateScale)(10),ios:(0,_reactNativeSizeMatters.moderateScale)(8)}),__self:_this,__source:{fileName:_jsxFileName,lineNumber:130,columnNumber:9}},label),_react.default.createElement(_.Container,{alignItems:"center",flex:1,flexDirection:"row",flexWrap:"wrap",__self:_this,__source:{fileName:_jsxFileName,lineNumber:142,columnNumber:7}},emails.map(function(email,index){return _react.default.createElement(_.Container,(0,_extends2.default)({key:email},chipWrapperStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:149,columnNumber:11}}),_react.default.createElement(_.Chip,{isDisabled:disabled,label:email,containerStyle:getChipContainerStyle(index===emailIndexForDeletion),onClose:disabled?null:function(){return removeEmail({email:email});},__self:_this,__source:{fileName:_jsxFileName,lineNumber:150,columnNumber:13}}));}),!disabled&&_react.default.createElement(_.Container,(0,_extends2.default)({alignItems:"center",flex:1,justifyContent:"center",minWidth:(0,_reactNativeSizeMatters.moderateScale)(160),paddingTop:_reactNative.Platform.select({ios:gap,android:(0,_reactNativeSizeMatters.moderateScale)(7)})},shouldShowInput||emails.length===0?{}:{height:0},{__self:_this,__source:{fileName:_jsxFileName,lineNumber:161,columnNumber:11}}),_react.default.createElement(_.Input,{noBorder:true,disabled:disabled,value:textValue,inputProps:(0,_extends2.default)({},inputProps,{ref:inputRef,onKeyPress:handleKeyPress,onSubmitEditing:handleSubmitEditing,onTouchStart:handleInputTouchStart,onFocus:handleOnFocus,onBlur:handleOnBlur}),onChangeText:handleTextChange,__self:_this,__source:{fileName:_jsxFileName,lineNumber:172,columnNumber:13}}))),_react.default.createElement(_reactNative.TextInput,{editable:false,style:styles.touchableTextInputWrapper,onTouchStart:handleTouchStart,__self:_this,__source:{fileName:_jsxFileName,lineNumber:190,columnNumber:7}}));};exports.InputEmailChip=InputEmailChip;var styles=_reactNative.StyleSheet.create({touchableTextInputWrapper:{position:"absolute",top:0,bottom:0,left:0,right:0,backgroundColor:"transparent"}});InputEmailChip.propTypes={disabled:_propTypes.default.bool,label:_propTypes.default.string,emails:_propTypes.default.arrayOf(_propTypes.default.string),delimiters:_propTypes.default.arrayOf(_propTypes.default.string),onUpdate:_propTypes.default.func};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neetoui-rn",
3
- "version": "0.0.239",
3
+ "version": "0.0.241",
4
4
  "main": "lib/index.js",
5
5
  "author": "BigBinary",
6
6
  "license": "MIT",
@@ -60,7 +60,7 @@
60
60
  "react-native-gesture-handler": "^2.4.0",
61
61
  "react-native-modal": "^13.0.0",
62
62
  "react-native-pell-rich-editor": "^1.8.6",
63
- "react-native-popover-view": "^4.1.0",
63
+ "react-native-popover-view": "^5.1.7",
64
64
  "react-native-remix-icon": "^0.3.0",
65
65
  "react-native-safe-area-context": "^3.3.2",
66
66
  "react-native-size-matters": "^0.4.0",
@@ -82,22 +82,22 @@
82
82
  "@react-navigation/bottom-tabs": "^6.3.2",
83
83
  "@react-navigation/material-top-tabs": "^6.2.2",
84
84
  "@react-navigation/native": "^6.0.11",
85
- "@storybook/addon-actions": "^6.3.12",
86
- "@storybook/addon-controls": "^6.3.12",
87
- "@storybook/addon-essentials": "^6.4.0-beta.33",
85
+ "@storybook/addon-actions": "^6.5.15",
86
+ "@storybook/addon-controls": "^6.5.15",
87
+ "@storybook/addon-essentials": "^6.5.15",
88
88
  "@storybook/addon-knobs": "^5.3",
89
- "@storybook/addon-links": "^5.3",
90
- "@storybook/addon-ondevice-actions": "^6.0.1-alpha.6",
91
- "@storybook/addon-ondevice-backgrounds": "^6.0.1-alpha.6",
92
- "@storybook/addon-ondevice-controls": "^6.0.1-alpha.6",
93
- "@storybook/addon-ondevice-knobs": "^5.3.25",
94
- "@storybook/addon-ondevice-notes": "^6.0.1-alpha.6",
95
- "@storybook/addon-storyshots": "^6.3.12",
96
- "@storybook/addons": "^6.3.1",
97
- "@storybook/cli": "^6.3.12",
98
- "@storybook/react": "^6.3.12",
99
- "@storybook/react-native": "^6.0.1-alpha.6",
100
- "@storybook/react-native-server": "^6.0.0-alpha.0",
89
+ "@storybook/addon-links": "^6.5",
90
+ "@storybook/addon-ondevice-actions": "^6.0.1-beta.11",
91
+ "@storybook/addon-ondevice-backgrounds": "^6.0.1-beta.11",
92
+ "@storybook/addon-ondevice-controls": "^6.0.1-beta.11",
93
+ "@storybook/addon-ondevice-knobs": "^6.0.1-beta.11",
94
+ "@storybook/addon-ondevice-notes": "^6.0.1-beta.11",
95
+ "@storybook/addon-storyshots": "^6.5.15",
96
+ "@storybook/addons": "^6.5.15",
97
+ "@storybook/cli": "^6.5.15",
98
+ "@storybook/react": "^6.5.15",
99
+ "@storybook/react-native": "^6.0.1-beta.11",
100
+ "@storybook/react-native-server": "^6.0.1-beta.11",
101
101
  "@svgr/webpack": "^5.5.0",
102
102
  "babel-jest": "^26.6.3",
103
103
  "babel-loader": "^8.2.3",
@@ -122,20 +122,20 @@
122
122
  "metro-react-native-babel-preset": "^0.66.2",
123
123
  "prettier": "^2.3.1",
124
124
  "ramda": "^0.28.0",
125
- "react": "17.0.2",
125
+ "react": "18.1.0",
126
126
  "react-dom": "17.0.2",
127
- "react-native": "0.66.5",
127
+ "react-native": "0.70.6",
128
128
  "react-native-device-info": "^10.3.0",
129
129
  "react-native-fast-image": "^8.6.0",
130
130
  "react-native-pager-view": "^5.4.25",
131
- "react-native-reanimated": "^2.7.0",
131
+ "react-native-reanimated": "2.13.0",
132
132
  "react-native-screens": "^3.15.0",
133
- "react-native-storybook-loader": "^2.0.4",
133
+ "react-native-storybook-loader": "^2.0.5",
134
134
  "react-native-svg": "^12.4.4",
135
135
  "react-native-svg-transformer": "^1.0.0",
136
136
  "react-native-tab-view": "^3.1.1",
137
137
  "react-native-web": "^0.17.5",
138
- "react-native-webview": "11.14.4",
138
+ "react-native-webview": "^11.26.0",
139
139
  "react-test-renderer": "17.0.2",
140
140
  "serve": "^13.0.2",
141
141
  "url-loader": "^4.1.1",
@@ -69,142 +69,149 @@ export const BUTTON_VARIANTS = Object.freeze({
69
69
  *
70
70
  */
71
71
 
72
- export const Button = ({
73
- variant,
74
- label,
75
- labelStyle,
76
- RightIcon,
77
- LeftIcon,
78
- disabled,
79
- isLoading,
80
- loadingText,
81
- fontFamily,
82
- color,
83
- fontSize,
84
- ...rest
85
- }) => {
86
- const theme = useContext(ThemeContext);
87
- const width = variant === "text" || variant === "danger-text" ? null : "100%";
72
+ export const Button = React.forwardRef(
73
+ (
74
+ {
75
+ variant,
76
+ label,
77
+ labelStyle,
78
+ RightIcon,
79
+ LeftIcon,
80
+ disabled,
81
+ isLoading,
82
+ loadingText,
83
+ fontFamily,
84
+ color,
85
+ fontSize,
86
+ ...rest
87
+ },
88
+ ref
89
+ ) => {
90
+ const theme = useContext(ThemeContext);
91
+ const width =
92
+ variant === "text" || variant === "danger-text" ? null : "100%";
88
93
 
89
- const getButtonColors = () => {
90
- switch (variant) {
91
- case BUTTON_VARIANTS.SOLID:
92
- return {
93
- bg: theme.colors.background[disabled ? "grey400" : "base"],
94
- border: theme.colors.background[disabled ? "grey400" : "base"],
95
- color: theme.colors.background.white,
96
- ripple: "white",
97
- };
98
- case BUTTON_VARIANTS.SECONDARY:
99
- return {
100
- bg: "transparent",
101
- border: theme.colors.background.base,
102
- color: theme.colors.font.base,
103
- ripple: theme.colors.background.base,
104
- };
105
- case BUTTON_VARIANTS.TEXT:
106
- return {
107
- bg: "transparent",
108
- border: "transparent",
109
- color: theme.colors.font.primary,
110
- ripple: theme.colors.background.grey800,
111
- };
112
- case BUTTON_VARIANTS.DANGER:
113
- return {
114
- bg: theme.colors.background.danger,
115
- border: theme.colors.background.danger,
116
- color: theme.colors.background.white,
117
- ripple: "white",
118
- };
119
- case BUTTON_VARIANTS.DANGER_INVERSE:
120
- return {
121
- bg: theme.colors.background.white,
122
- border: theme.colors.background.danger,
123
- color: theme.colors.background.danger,
124
- ripple: theme.colors.background.grey800,
125
- };
126
- case BUTTON_VARIANTS.DANGER_TEXT:
127
- return {
128
- bg: "transparent",
129
- border: "transparent",
130
- color: theme.colors.background.danger,
131
- ripple: theme.colors.background.grey800,
132
- };
133
- default:
134
- return {
135
- bg: theme.colors.background[disabled ? "grey400" : "base"],
136
- border: theme.colors.background[disabled ? "grey400" : "base"],
137
- color: theme.colors.background.white,
138
- ripple: "white",
139
- };
140
- }
141
- };
94
+ const getButtonColors = () => {
95
+ switch (variant) {
96
+ case BUTTON_VARIANTS.SOLID:
97
+ return {
98
+ bg: theme.colors.background[disabled ? "grey400" : "base"],
99
+ border: theme.colors.background[disabled ? "grey400" : "base"],
100
+ color: theme.colors.background.white,
101
+ ripple: "white",
102
+ };
103
+ case BUTTON_VARIANTS.SECONDARY:
104
+ return {
105
+ bg: "transparent",
106
+ border: theme.colors.background.base,
107
+ color: theme.colors.font.base,
108
+ ripple: theme.colors.background.base,
109
+ };
110
+ case BUTTON_VARIANTS.TEXT:
111
+ return {
112
+ bg: "transparent",
113
+ border: "transparent",
114
+ color: theme.colors.font.primary,
115
+ ripple: theme.colors.background.grey800,
116
+ };
117
+ case BUTTON_VARIANTS.DANGER:
118
+ return {
119
+ bg: theme.colors.background.danger,
120
+ border: theme.colors.background.danger,
121
+ color: theme.colors.background.white,
122
+ ripple: "white",
123
+ };
124
+ case BUTTON_VARIANTS.DANGER_INVERSE:
125
+ return {
126
+ bg: theme.colors.background.white,
127
+ border: theme.colors.background.danger,
128
+ color: theme.colors.background.danger,
129
+ ripple: theme.colors.background.grey800,
130
+ };
131
+ case BUTTON_VARIANTS.DANGER_TEXT:
132
+ return {
133
+ bg: "transparent",
134
+ border: "transparent",
135
+ color: theme.colors.background.danger,
136
+ ripple: theme.colors.background.grey800,
137
+ };
138
+ default:
139
+ return {
140
+ bg: theme.colors.background[disabled ? "grey400" : "base"],
141
+ border: theme.colors.background[disabled ? "grey400" : "base"],
142
+ color: theme.colors.background.white,
143
+ ripple: "white",
144
+ };
145
+ }
146
+ };
142
147
 
143
- const renderOpacity = () => {
144
- if (
145
- ["secondary", "danger", "danger-inverse", "danger-text"].includes(
146
- variant
147
- ) &&
148
- disabled
149
- ) {
150
- return 0.5;
151
- }
148
+ const renderOpacity = () => {
149
+ if (
150
+ ["secondary", "danger", "danger-inverse", "danger-text"].includes(
151
+ variant
152
+ ) &&
153
+ disabled
154
+ ) {
155
+ return 0.5;
156
+ }
152
157
 
153
- return 1;
154
- };
158
+ return 1;
159
+ };
155
160
 
156
- return (
157
- <Touchable
158
- alignItems="center"
159
- bg={getButtonColors().bg}
160
- borderColor={getButtonColors().border}
161
- borderRadius={moderateScale(8)}
162
- borderWidth={moderateScale(1)}
163
- disabled={disabled || isLoading}
164
- flexDirection="row"
165
- height={moderateScale(48)}
166
- justifyContent="center"
167
- opacity={renderOpacity()}
168
- px={width === null ? moderateScale(8) : undefined}
169
- rippleConfig={{ color: getButtonColors().ripple }}
170
- width={width}
171
- {...rest}
172
- >
173
- {isLoading ? (
174
- <Container flexDirection="row">
175
- <Loader color={getButtonColors().color} />
176
- {!!loadingText && (
161
+ return (
162
+ <Touchable
163
+ alignItems="center"
164
+ bg={getButtonColors().bg}
165
+ borderColor={getButtonColors().border}
166
+ borderRadius={moderateScale(8)}
167
+ borderWidth={moderateScale(1)}
168
+ disabled={disabled || isLoading}
169
+ flexDirection="row"
170
+ height={moderateScale(48)}
171
+ justifyContent="center"
172
+ opacity={renderOpacity()}
173
+ px={width === null ? moderateScale(8) : undefined}
174
+ ref={ref}
175
+ rippleConfig={{ color: getButtonColors().ripple }}
176
+ width={width}
177
+ {...rest}
178
+ >
179
+ {isLoading ? (
180
+ <Container flexDirection="row">
181
+ <Loader color={getButtonColors().color} />
182
+ {!!loadingText && (
183
+ <Typography
184
+ color={color || getButtonColors().color}
185
+ fontFamily={fontFamily || theme.fonts.sf500}
186
+ fontSize={fontSize}
187
+ ml={moderateScale(8)}
188
+ textAlign="center"
189
+ {...labelStyle}
190
+ >
191
+ {loadingText}
192
+ </Typography>
193
+ )}
194
+ </Container>
195
+ ) : (
196
+ <>
197
+ {LeftIcon && <LeftIcon />}
177
198
  <Typography
178
199
  color={color || getButtonColors().color}
179
200
  fontFamily={fontFamily || theme.fonts.sf500}
180
201
  fontSize={fontSize}
181
- ml={moderateScale(8)}
202
+ mx={moderateScale(2)}
182
203
  textAlign="center"
183
204
  {...labelStyle}
184
205
  >
185
- {loadingText}
206
+ {label}
186
207
  </Typography>
187
- )}
188
- </Container>
189
- ) : (
190
- <>
191
- {LeftIcon && <LeftIcon />}
192
- <Typography
193
- color={color || getButtonColors().color}
194
- fontFamily={fontFamily || theme.fonts.sf500}
195
- fontSize={fontSize}
196
- mx={moderateScale(2)}
197
- textAlign="center"
198
- {...labelStyle}
199
- >
200
- {label}
201
- </Typography>
202
- {RightIcon && <RightIcon />}
203
- </>
204
- )}
205
- </Touchable>
206
- );
207
- };
208
+ {RightIcon && <RightIcon />}
209
+ </>
210
+ )}
211
+ </Touchable>
212
+ );
213
+ }
214
+ );
208
215
 
209
216
  Button.defaultProps = {
210
217
  variant: "solid",
@@ -261,3 +268,4 @@ Button.propTypes = {
261
268
  color: PropTypes.string,
262
269
  fontSize: PropTypes.string,
263
270
  };
271
+ Button.displayName = "Button";
@@ -1,5 +1,5 @@
1
1
  import React, { useContext, useRef, useState } from "react";
2
- import { Platform } from "react-native";
2
+ import { Platform, StyleSheet, TextInput } from "react-native";
3
3
 
4
4
  import PropTypes from "prop-types";
5
5
  import { moderateScale } from "react-native-size-matters";
@@ -125,7 +125,6 @@ export const InputEmailChip = ({
125
125
  minHeight={moderateScale(30)}
126
126
  py={moderateScale(2)}
127
127
  width="100%"
128
- onTouchStart={handleTouchStart}
129
128
  >
130
129
  {!!label && (
131
130
  <Typography
@@ -168,7 +167,7 @@ export const InputEmailChip = ({
168
167
  ios: gap,
169
168
  android: moderateScale(7),
170
169
  })}
171
- {...(shouldShowInput ? {} : { height: 0 })}
170
+ {...(shouldShowInput || emails.length === 0 ? {} : { height: 0 })}
172
171
  >
173
172
  <Input
174
173
  noBorder
@@ -188,13 +187,29 @@ export const InputEmailChip = ({
188
187
  </Container>
189
188
  )}
190
189
  </Container>
190
+ <TextInput
191
+ editable={false}
192
+ style={styles.touchableTextInputWrapper}
193
+ onTouchStart={handleTouchStart}
194
+ />
191
195
  </Container>
192
196
  );
193
197
  };
194
198
 
199
+ const styles = StyleSheet.create({
200
+ touchableTextInputWrapper: {
201
+ position: "absolute",
202
+ top: 0,
203
+ bottom: 0,
204
+ left: 0,
205
+ right: 0,
206
+ backgroundColor: "transparent",
207
+ },
208
+ });
209
+
195
210
  InputEmailChip.propTypes = {
196
211
  /**
197
- * Label for the input field
212
+ * Disable input component
198
213
  */
199
214
  disabled: PropTypes.bool,
200
215
  /**