@bigbinary/neetoui-rn 0.0.248 → 0.0.249

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.ChatInput=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 _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _attachment=_interopRequireDefault(require("../../../assets/icons/attachment.svg"));var _cannedResponse=_interopRequireDefault(require("../../../assets/icons/canned-response.svg"));var _expand=_interopRequireDefault(require("../../../assets/icons/expand.svg"));var _forward=_interopRequireDefault(require("../../../assets/icons/forward.svg"));var _minimize=_interopRequireDefault(require("../../../assets/icons/minimize.svg"));var _note=_interopRequireDefault(require("../../../assets/icons/note.svg"));var _reply=_interopRequireDefault(require("../../../assets/icons/reply.svg"));var _=require("./..");var _AttachmentsView=require("./AttachmentsView");var _EmailFields=require("./EmailFields");var _IconButton=require("./IconButton");var _theme=require("../../theme");var _excluded=["shouldShowEmailFields","value","onChangeText","onForward","onCannedResponse","toEmails","onReply","onAddNote","onAttachment","attachmentsCount","Attachments","showCannedResponsesFor","disabled","isLoading","onOptionChange","initialSelectedOption"];var _labels,_templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/ChatInput.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 placeholders={reply:"Type here to reply...",note:"Add note here...",forward:"Type here to forward..."};var OPTION_TYPES={REPLY:"REPLY",NOTE:"NOTE",FORWARD:"FORWARD"};var labels=(_labels={},(0,_defineProperty2.default)(_labels,OPTION_TYPES.REPLY,"Reply"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.NOTE,"Add note"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.FORWARD,"Forward"),_labels);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 ChatInput=function ChatInput(_ref){var shouldShowEmailFields=_ref.shouldShowEmailFields,_ref$value=_ref.value,value=_ref$value===void 0?"":_ref$value,_ref$onChangeText=_ref.onChangeText,onChangeText=_ref$onChangeText===void 0?function(){}:_ref$onChangeText,onForward=_ref.onForward,onCannedResponse=_ref.onCannedResponse,initialToEmails=_ref.toEmails,_ref$onReply=_ref.onReply,onReply=_ref$onReply===void 0?function(){}:_ref$onReply,_ref$onAddNote=_ref.onAddNote,onAddNote=_ref$onAddNote===void 0?function(){}:_ref$onAddNote,_ref$onAttachment=_ref.onAttachment,onAttachment=_ref$onAttachment===void 0?function(){}:_ref$onAttachment,attachmentsCount=_ref.attachmentsCount,Attachments=_ref.Attachments,_ref$showCannedRespon=_ref.showCannedResponsesFor,showCannedResponsesFor=_ref$showCannedRespon===void 0?[OPTION_TYPES.REPLY]:_ref$showCannedRespon,disabled=_ref.disabled,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?true:_ref$isLoading,_ref$onOptionChange=_ref.onOptionChange,onOptionChange=_ref$onOptionChange===void 0?function(){}:_ref$onOptionChange,_ref$initialSelectedO=_ref.initialSelectedOption,initialSelectedOption=_ref$initialSelectedO===void 0?OPTION_TYPES.REPLY:_ref$initialSelectedO,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(initialSelectedOption),_useState2=(0,_slicedToArray2.default)(_useState,2),selectedOption=_useState2[0],setSelectedOption=_useState2[1];var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),isEmailFieldsVisible=_useState4[0],setIsEmailFieldsVisible=_useState4[1];var _useState5=(0,_react.useState)(false),_useState6=(0,_slicedToArray2.default)(_useState5,2),isAttachmentsVisible=_useState6[0],setIsAttachmentsVisible=_useState6[1];var isReplyOptionSelected=selectedOption===OPTION_TYPES.REPLY;var isNoteOptionSelected=selectedOption===OPTION_TYPES.NOTE;var isForwardOptionSelected=selectedOption===OPTION_TYPES.FORWARD;var _useState7=(0,_react.useState)(initialToEmails!=null?initialToEmails:""),_useState8=(0,_slicedToArray2.default)(_useState7,2),toEmails=_useState8[0],setToEmails=_useState8[1];var _useState9=(0,_react.useState)(""),_useState10=(0,_slicedToArray2.default)(_useState9,2),ccEmails=_useState10[0],setCcEmails=_useState10[1];var _useState11=(0,_react.useState)(""),_useState12=(0,_slicedToArray2.default)(_useState11,2),bccEmails=_useState12[0],setBccEmails=_useState12[1];(0,_react.useEffect)(function(){onOptionChange(selectedOption);},[selectedOption]);(0,_react.useEffect)(function(){setSelectedOption(initialSelectedOption);},[initialSelectedOption]);(0,_react.useEffect)(function(){if(isReplyOptionSelected){setToEmails(initialToEmails!=null?initialToEmails:"");}else{setToEmails("");}},[initialToEmails,isReplyOptionSelected]);var showEmailFieldsAndAttachments=function showEmailFieldsAndAttachments(){setIsAttachmentsVisible(true);setIsEmailFieldsVisible(true);};var hideEmailFieldsAndAttachments=function hideEmailFieldsAndAttachments(){setIsAttachmentsVisible(false);setIsEmailFieldsVisible(false);};var onReplyClickHandler=function onReplyClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setSelectedOption(OPTION_TYPES.REPLY);};var onAddNoteClickHandler=function onAddNoteClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setIsEmailFieldsVisible(false);setSelectedOption(OPTION_TYPES.NOTE);};var onAddForwardClickHandler=function onAddForwardClickHandler(){inputRef.current.focus();setIsEmailFieldsVisible(true);setIsAttachmentsVisible(false);setSelectedOption(OPTION_TYPES.FORWARD);};var onAddAttachmentsClickHandler=function onAddAttachmentsClickHandler(){if(!isAttachmentsVisible&&attachmentsCount>0){}else{onAttachment();}setIsEmailFieldsVisible(false);setIsAttachmentsVisible(true);};var onActionHandler=(0,_react.useCallback)(function(){var _OPTION_TYPES$REPLY$O;(_OPTION_TYPES$REPLY$O={},(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.REPLY,function(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.NOTE,function(){onAddNote({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.FORWARD,function(){onForward({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),_OPTION_TYPES$REPLY$O)[selectedOption]();},[bccEmails,ccEmails,onAddNote,onForward,onReply,selectedOption,toEmails]);var shouldExpandAndMinimizeButton=attachmentsCount>0||toEmails;return _react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:232,columnNumber:5}},_react.default.createElement(_.LineLoader,{backgroundColor:_theme.theme.colors.background.grey400,isLoading:isLoading,__self:_this,__source:{fileName:_jsxFileName,lineNumber:233,columnNumber:7}}),_react.default.createElement(_.Container,{bg:isNoteOptionSelected?"background.oldLace":"transparent",p:(0,_reactNativeSizeMatters.moderateScale)(5),pt:0,px:(0,_reactNativeSizeMatters.moderateScale)(16),__self:_this,__source:{fileName:_jsxFileName,lineNumber:237,columnNumber:7}},_react.default.createElement(_.Container,{pt:(0,_reactNativeSizeMatters.moderateScale)(8),__self:_this,__source:{fileName:_jsxFileName,lineNumber:243,columnNumber:9}},_react.default.createElement(_EmailFields.EmailFields,{bccEmails:bccEmails,ccEmails:ccEmails,isEmailFieldsVisible:isEmailFieldsVisible,setBccEmails:setBccEmails,setCcEmails:setCcEmails,setIsEmailFieldsVisible:setIsEmailFieldsVisible,setToEmails:setToEmails,shouldShowEmailFields:shouldShowEmailFields,toEmails:toEmails,__self:_this,__source:{fileName:_jsxFileName,lineNumber:244,columnNumber:11}}),_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:255,columnNumber:11}},_react.default.createElement(TextInput,(0,_extends2.default)({multiline:true,flex:1,placeholder:placeholders[selectedOption],py:(0,_reactNativeSizeMatters.moderateScale)(12),ref:inputRef,value:value,onChangeText:onChangeText,onTouchStart:hideEmailFieldsAndAttachments},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:256,columnNumber:13}})),_react.default.createElement(_.Container,{alignSelf:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:267,columnNumber:13}},shouldExpandAndMinimizeButton&&(isEmailFieldsVisible||isAttachmentsVisible?_react.default.createElement(_IconButton.IconButton,{Icon:_minimize.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:hideEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:270,columnNumber:19}}):_react.default.createElement(_IconButton.IconButton,{Icon:_expand.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:showEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:278,columnNumber:19}})))),_react.default.createElement(_AttachmentsView.AttachmentsView,{Attachments:Attachments,attachmentsCount:attachmentsCount,isAttachmentsVisible:isAttachmentsVisible,isNoteOptionSelected:isNoteOptionSelected,setIsAttachmentsVisible:setIsAttachmentsVisible,__self:_this,__source:{fileName:_jsxFileName,lineNumber:288,columnNumber:11}}),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",justifyContent:"space-between",mt:(0,_reactNativeSizeMatters.moderateScale)(10),__self:_this,__source:{fileName:_jsxFileName,lineNumber:295,columnNumber:11}},_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:301,columnNumber:13}},_react.default.createElement(_IconButton.IconButton,{Icon:_reply.default,opacity:isReplyOptionSelected?1:0.5,pl:(0,_reactNativeSizeMatters.moderateScale)(10),onPress:onReplyClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:302,columnNumber:15}}),_react.default.createElement(_IconButton.IconButton,{Icon:_note.default,opacity:isNoteOptionSelected?1:0.5,onPress:onAddNoteClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:308,columnNumber:15}}),onForward&&_react.default.createElement(_IconButton.IconButton,{Icon:_forward.default,opacity:isForwardOptionSelected?1:0.5,onPress:onAddForwardClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:314,columnNumber:17}}),_react.default.createElement(_.Container,{bg:"background.grey400",mx:(0,_reactNativeSizeMatters.moderateScale)(5),p:(0,_reactNativeSizeMatters.moderateScale)(0.4),__self:_this,__source:{fileName:_jsxFileName,lineNumber:320,columnNumber:15}}),onCannedResponse&&showCannedResponsesFor.includes(selectedOption)&&_react.default.createElement(_IconButton.IconButton,{Icon:_cannedResponse.default,opacity:0.5,onPress:onCannedResponse,__self:_this,__source:{fileName:_jsxFileName,lineNumber:327,columnNumber:19}}),_react.default.createElement(_IconButton.IconButton,{Icon:_attachment.default,opacity:0.5,onPress:onAddAttachmentsClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:333,columnNumber:15}})),_react.default.createElement(_.Button,{disabled:disabled,height:(0,_reactNativeSizeMatters.moderateScale)(30),label:labels[selectedOption],pr:0,variant:"text",labelStyle:{mx:(0,_reactNativeSizeMatters.moderateScale)(0)},onPress:onActionHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:339,columnNumber:13}})))));};exports.ChatInput=ChatInput;ChatInput.propTypes={isLoading:_propTypes.default.bool,shouldShowEmailFields:_propTypes.default.bool,value:_propTypes.default.string,initialSelectedOption:_propTypes.default.oneOf(Object.values(OPTION_TYPES)),onOptionChange:_propTypes.default.func,onChangeText:_propTypes.default.func,onForward:_propTypes.default.func,onCannedResponse:_propTypes.default.func,toEmails:_propTypes.default.string,onReply:_propTypes.default.func,onAddNote:_propTypes.default.func,onAttachment:_propTypes.default.func,attachmentsCount:_propTypes.default.number,Attachments:_propTypes.default.any,showCannedResponsesFor:_propTypes.default.arrayOf(_propTypes.default.string),disabled:_propTypes.default.bool};
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ChatInput=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 _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _attachment=_interopRequireDefault(require("../../../assets/icons/attachment.svg"));var _cannedResponse=_interopRequireDefault(require("../../../assets/icons/canned-response.svg"));var _expand=_interopRequireDefault(require("../../../assets/icons/expand.svg"));var _forward=_interopRequireDefault(require("../../../assets/icons/forward.svg"));var _minimize=_interopRequireDefault(require("../../../assets/icons/minimize.svg"));var _note=_interopRequireDefault(require("../../../assets/icons/note.svg"));var _reply=_interopRequireDefault(require("../../../assets/icons/reply.svg"));var _=require("./..");var _AttachmentsView=require("./AttachmentsView");var _EmailFields=require("./EmailFields");var _IconButton=require("./IconButton");var _theme=require("../../theme");var _excluded=["shouldShowEmailFields","showReplyMenuOptions","value","onChangeText","onForward","onCannedResponse","toEmails","onReply","onAddNote","onAttachment","attachmentsCount","Attachments","showCannedResponsesFor","disabled","isLoading","onOptionChange","initialSelectedOption"];var _labels,_templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/ChatInput.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 placeholders={reply:"Type here to reply...",note:"Add note here...",forward:"Type here to forward..."};var OPTION_TYPES={REPLY:"REPLY",NOTE:"NOTE",FORWARD:"FORWARD"};var labels=(_labels={},(0,_defineProperty2.default)(_labels,OPTION_TYPES.REPLY,"Reply"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.NOTE,"Add note"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.FORWARD,"Forward"),_labels);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 ChatInput=(0,_react.forwardRef)(function(_ref,ref){var shouldShowEmailFields=_ref.shouldShowEmailFields,showReplyMenuOptions=_ref.showReplyMenuOptions,_ref$value=_ref.value,value=_ref$value===void 0?"":_ref$value,_ref$onChangeText=_ref.onChangeText,onChangeText=_ref$onChangeText===void 0?function(){}:_ref$onChangeText,onForward=_ref.onForward,onCannedResponse=_ref.onCannedResponse,initialToEmails=_ref.toEmails,_ref$onReply=_ref.onReply,onReply=_ref$onReply===void 0?function(){}:_ref$onReply,_ref$onAddNote=_ref.onAddNote,onAddNote=_ref$onAddNote===void 0?function(){}:_ref$onAddNote,_ref$onAttachment=_ref.onAttachment,onAttachment=_ref$onAttachment===void 0?function(){}:_ref$onAttachment,attachmentsCount=_ref.attachmentsCount,Attachments=_ref.Attachments,_ref$showCannedRespon=_ref.showCannedResponsesFor,showCannedResponsesFor=_ref$showCannedRespon===void 0?[OPTION_TYPES.REPLY]:_ref$showCannedRespon,disabled=_ref.disabled,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?true:_ref$isLoading,_ref$onOptionChange=_ref.onOptionChange,onOptionChange=_ref$onOptionChange===void 0?function(){}:_ref$onOptionChange,_ref$initialSelectedO=_ref.initialSelectedOption,initialSelectedOption=_ref$initialSelectedO===void 0?OPTION_TYPES.REPLY:_ref$initialSelectedO,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(initialSelectedOption),_useState2=(0,_slicedToArray2.default)(_useState,2),selectedOption=_useState2[0],setSelectedOption=_useState2[1];var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),isEmailFieldsVisible=_useState4[0],setIsEmailFieldsVisible=_useState4[1];var _useState5=(0,_react.useState)(false),_useState6=(0,_slicedToArray2.default)(_useState5,2),isAttachmentsVisible=_useState6[0],setIsAttachmentsVisible=_useState6[1];var isReplyOptionSelected=selectedOption===OPTION_TYPES.REPLY;var isNoteOptionSelected=selectedOption===OPTION_TYPES.NOTE;var isForwardOptionSelected=selectedOption===OPTION_TYPES.FORWARD;var _useState7=(0,_react.useState)(initialToEmails!=null?initialToEmails:[]),_useState8=(0,_slicedToArray2.default)(_useState7,2),toEmails=_useState8[0],setToEmails=_useState8[1];var _useState9=(0,_react.useState)([]),_useState10=(0,_slicedToArray2.default)(_useState9,2),toEmailsForForward=_useState10[0],setToEmailsForForward=_useState10[1];var _useState11=(0,_react.useState)([]),_useState12=(0,_slicedToArray2.default)(_useState11,2),ccEmails=_useState12[0],setCcEmails=_useState12[1];var _useState13=(0,_react.useState)([]),_useState14=(0,_slicedToArray2.default)(_useState13,2),bccEmails=_useState14[0],setBccEmails=_useState14[1];var moreReplyOptions=[{label:"Send and set as closed",Icon:function Icon(){return null;},onPress:function onPress(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails,status:"closed"});}}];(0,_react.useImperativeHandle)(ref,function(){return{clearEmailFields:function clearEmailFields(){setToEmails(initialToEmails!=null?initialToEmails:[]);setToEmailsForForward([]);setCcEmails([]);setBccEmails([]);inputRef.current.blur();}};},[initialToEmails,isReplyOptionSelected]);(0,_react.useEffect)(function(){onOptionChange(selectedOption);},[selectedOption]);(0,_react.useEffect)(function(){setSelectedOption(initialSelectedOption);},[initialSelectedOption]);(0,_react.useEffect)(function(){setToEmails(initialToEmails!=null?initialToEmails:[]);},[initialToEmails]);var showEmailFieldsAndAttachments=function showEmailFieldsAndAttachments(){setIsAttachmentsVisible(true);setIsEmailFieldsVisible(true);};var hideEmailFieldsAndAttachments=function hideEmailFieldsAndAttachments(){setIsAttachmentsVisible(false);setIsEmailFieldsVisible(false);};var onReplyClickHandler=function onReplyClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setSelectedOption(OPTION_TYPES.REPLY);};var onAddNoteClickHandler=function onAddNoteClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setIsEmailFieldsVisible(false);setSelectedOption(OPTION_TYPES.NOTE);};var onAddForwardClickHandler=function onAddForwardClickHandler(){inputRef.current.focus();setIsEmailFieldsVisible(true);setIsAttachmentsVisible(false);setSelectedOption(OPTION_TYPES.FORWARD);};var onAddAttachmentsClickHandler=function onAddAttachmentsClickHandler(){if(!isAttachmentsVisible&&attachmentsCount>0){}else{onAttachment();}setIsEmailFieldsVisible(false);setIsAttachmentsVisible(true);};var onActionHandler=(0,_react.useCallback)(function(){var _OPTION_TYPES$REPLY$O;(_OPTION_TYPES$REPLY$O={},(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.REPLY,function(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.NOTE,function(){onAddNote({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.FORWARD,function(){onForward({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),_OPTION_TYPES$REPLY$O)[selectedOption]();},[bccEmails,ccEmails,onAddNote,onForward,onReply,selectedOption,toEmails]);var shouldShowExpandAndMinimizeButton=attachmentsCount>0||toEmails.length>0;var shouldDisableWhenForwardAndToFieldMissing=isForwardOptionSelected&&toEmailsForForward.length===0;return _react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:270,columnNumber:7}},_react.default.createElement(_.LineLoader,{backgroundColor:_theme.theme.colors.background.grey400,isLoading:isLoading,__self:_this,__source:{fileName:_jsxFileName,lineNumber:271,columnNumber:9}}),_react.default.createElement(_.Container,{bg:isNoteOptionSelected?"background.oldLace":"transparent",p:(0,_reactNativeSizeMatters.moderateScale)(5),pt:0,px:(0,_reactNativeSizeMatters.moderateScale)(16),__self:_this,__source:{fileName:_jsxFileName,lineNumber:275,columnNumber:9}},_react.default.createElement(_.Container,{pt:(0,_reactNativeSizeMatters.moderateScale)(8),__self:_this,__source:{fileName:_jsxFileName,lineNumber:281,columnNumber:11}},_react.default.createElement(_EmailFields.EmailFields,{bccEmails:bccEmails,ccEmails:ccEmails,isEmailFieldsVisible:isEmailFieldsVisible,isForwardOptionSelected:isForwardOptionSelected,isNoteOptionSelected:isNoteOptionSelected,isReplyOptionSelected:isReplyOptionSelected,setBccEmails:setBccEmails,setCcEmails:setCcEmails,setIsEmailFieldsVisible:setIsEmailFieldsVisible,setToEmails:setToEmails,setToEmailsForForward:setToEmailsForForward,shouldShowEmailFields:shouldShowEmailFields,toEmails:toEmails,toEmailsForForward:toEmailsForForward,__self:_this,__source:{fileName:_jsxFileName,lineNumber:282,columnNumber:13}}),_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:298,columnNumber:13}},_react.default.createElement(TextInput,(0,_extends2.default)({multiline:true,flex:1,maxHeight:(0,_reactNativeSizeMatters.moderateScale)(150),my:(0,_reactNativeSizeMatters.moderateScale)(12),overflow:"hidden",placeholder:placeholders[selectedOption],ref:inputRef,value:value,onChangeText:onChangeText,onTouchStart:hideEmailFieldsAndAttachments},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:299,columnNumber:15}})),_react.default.createElement(_.Container,{alignSelf:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:312,columnNumber:15}},shouldShowExpandAndMinimizeButton&&(isEmailFieldsVisible||isAttachmentsVisible?_react.default.createElement(_IconButton.IconButton,{Icon:_minimize.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:hideEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:315,columnNumber:21}}):_react.default.createElement(_IconButton.IconButton,{Icon:_expand.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:showEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:323,columnNumber:21}})))),_react.default.createElement(_AttachmentsView.AttachmentsView,{Attachments:Attachments,attachmentsCount:attachmentsCount,isAttachmentsVisible:isAttachmentsVisible,isNoteOptionSelected:isNoteOptionSelected,setIsAttachmentsVisible:setIsAttachmentsVisible,__self:_this,__source:{fileName:_jsxFileName,lineNumber:333,columnNumber:13}}),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",justifyContent:"space-between",mt:(0,_reactNativeSizeMatters.moderateScale)(10),__self:_this,__source:{fileName:_jsxFileName,lineNumber:340,columnNumber:13}},_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:346,columnNumber:15}},_react.default.createElement(_IconButton.IconButton,{Icon:_reply.default,opacity:isReplyOptionSelected?1:0.5,pl:(0,_reactNativeSizeMatters.moderateScale)(10),onPress:onReplyClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:347,columnNumber:17}}),_react.default.createElement(_IconButton.IconButton,{Icon:_note.default,opacity:isNoteOptionSelected?1:0.5,onPress:onAddNoteClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:353,columnNumber:17}}),onForward&&_react.default.createElement(_IconButton.IconButton,{Icon:_forward.default,opacity:isForwardOptionSelected?1:0.5,onPress:onAddForwardClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:359,columnNumber:19}}),_react.default.createElement(_.Container,{bg:"background.grey400",mx:(0,_reactNativeSizeMatters.moderateScale)(5),p:(0,_reactNativeSizeMatters.moderateScale)(0.4),__self:_this,__source:{fileName:_jsxFileName,lineNumber:365,columnNumber:17}}),onCannedResponse&&showCannedResponsesFor.includes(selectedOption)&&_react.default.createElement(_IconButton.IconButton,{Icon:_cannedResponse.default,opacity:0.5,onPress:onCannedResponse,__self:_this,__source:{fileName:_jsxFileName,lineNumber:372,columnNumber:21}}),_react.default.createElement(_IconButton.IconButton,{Icon:_attachment.default,opacity:0.5,onPress:onAddAttachmentsClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:378,columnNumber:17}})),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",__self:_this,__source:{fileName:_jsxFileName,lineNumber:384,columnNumber:15}},_react.default.createElement(_.Button,{height:(0,_reactNativeSizeMatters.moderateScale)(30),label:labels[selectedOption],pr:0,variant:"text",disabled:shouldDisableWhenForwardAndToFieldMissing||disabled,labelStyle:{mx:(0,_reactNativeSizeMatters.moderateScale)(0)},onPress:onActionHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:385,columnNumber:17}}),showReplyMenuOptions&&isReplyOptionSelected&&_react.default.createElement(_.Popover,{data:moreReplyOptions,from:_react.default.createElement(_.Button,{disabled:disabled,height:(0,_reactNativeSizeMatters.moderateScale)(30),label:"",p:0,variant:"text",RightIcon:function RightIcon(){return _react.default.createElement(_reactNativeRemixIcon.default,{color:_theme.theme.colors.background.grey800,name:"ri-arrow-down-s-line",size:(0,_reactNativeSizeMatters.moderateScale)(30),__self:_this,__source:{fileName:_jsxFileName,lineNumber:409,columnNumber:27}});},__self:_this,__source:{fileName:_jsxFileName,lineNumber:402,columnNumber:23}}),__self:_this,__source:{fileName:_jsxFileName,lineNumber:399,columnNumber:19}}))))));});exports.ChatInput=ChatInput;ChatInput.displayName="ChatInput";ChatInput.propTypes={isLoading:_propTypes.default.bool,shouldShowEmailFields:_propTypes.default.bool,showReplyMenuOptions:_propTypes.default.bool,value:_propTypes.default.string,initialSelectedOption:_propTypes.default.oneOf(Object.values(OPTION_TYPES)),onOptionChange:_propTypes.default.func,onChangeText:_propTypes.default.func,onForward:_propTypes.default.func,onCannedResponse:_propTypes.default.func,toEmails:_propTypes.default.arrayOf(_propTypes.default.string),onReply:_propTypes.default.func,onAddNote:_propTypes.default.func,onAttachment:_propTypes.default.func,attachmentsCount:_propTypes.default.number,Attachments:_propTypes.default.any,showCannedResponsesFor:_propTypes.default.arrayOf(_propTypes.default.oneOf(Object.values(OPTION_TYPES))),disabled:_propTypes.default.bool};
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.EmailFields=void 0;var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _reactNativeSizeMatters=require("react-native-size-matters");var _2=require("./..");var _Badge=require("./Badge");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/EmailFields.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 EmailFields=function EmailFields(_ref){var _;var shouldShowEmailFields=_ref.shouldShowEmailFields,setIsEmailFieldsVisible=_ref.setIsEmailFieldsVisible,isEmailFieldsVisible=_ref.isEmailFieldsVisible,ccEmails=_ref.ccEmails,toEmails=_ref.toEmails,bccEmails=_ref.bccEmails,setBccEmails=_ref.setBccEmails,setCcEmails=_ref.setCcEmails,setToEmails=_ref.setToEmails;var firstToEmail=(_=(toEmails.trim()?toEmails.split(","):[])[0])!=null?_:"";var totalEmailsMinus1=(toEmails.trim()?toEmails.split(","):[]).length+(ccEmails.trim()?ccEmails.split(","):[]).length+(bccEmails.trim()?bccEmails.split(","):[]).length-1;if(!shouldShowEmailFields)return null;return isEmailFieldsVisible?_react.default.createElement(_reactNativeReanimated.default.View,{entering:_reactNativeReanimated.FadeInDown,key:isEmailFieldsVisible,pb:(0,_reactNativeSizeMatters.moderateScale)(10),__self:_this,__source:{fileName:_jsxFileName,lineNumber:33,columnNumber:5}},_react.default.createElement(_2.InputEmailChip,{disabled:false,emails:toEmails.trim()?toEmails.split(","):[],label:"To:",onUpdate:function onUpdate(emails){setToEmails(emails.join(","));},__self:_this,__source:{fileName:_jsxFileName,lineNumber:38,columnNumber:7}}),_react.default.createElement(_2.InputEmailChip,{disabled:false,emails:ccEmails.trim()?ccEmails.split(","):[],label:"Cc:",onUpdate:function onUpdate(emails){setCcEmails(emails.join(","));},__self:_this,__source:{fileName:_jsxFileName,lineNumber:46,columnNumber:7}}),_react.default.createElement(_2.InputEmailChip,{disabled:false,emails:bccEmails.trim()?bccEmails.split(","):[],label:"Bcc:",onUpdate:function onUpdate(emails){setBccEmails(emails.join(","));},__self:_this,__source:{fileName:_jsxFileName,lineNumber:54,columnNumber:7}})):_react.default.createElement(_reactNativeReanimated.default.View,{alignItems:"flex-start",entering:_reactNativeReanimated.FadeInUp,flexDirection:"row",flexWrap:"wrap",key:isEmailFieldsVisible,onTouchStart:function onTouchStart(){return setIsEmailFieldsVisible(true);},__self:_this,__source:{fileName:_jsxFileName,lineNumber:64,columnNumber:5}},toEmails.length>0&&_react.default.createElement(_react.default.Fragment,null,_react.default.createElement(_Badge.Badge,{text:"To "+firstToEmail,__self:_this,__source:{fileName:_jsxFileName,lineNumber:74,columnNumber:11}}),totalEmailsMinus1>1&&_react.default.createElement(_Badge.Badge,{text:"+ "+totalEmailsMinus1,__self:_this,__source:{fileName:_jsxFileName,lineNumber:75,columnNumber:37}})));};exports.EmailFields=EmailFields;EmailFields.propTypes={shouldShowEmailFields:_propTypes.default.bool,isEmailFieldsVisible:_propTypes.default.bool,setIsEmailFieldsVisible:_propTypes.default.func,ccEmails:_propTypes.default.string,toEmails:_propTypes.default.string,bccEmails:_propTypes.default.string,setBccEmails:_propTypes.default.func,setCcEmails:_propTypes.default.func,setToEmails:_propTypes.default.func};
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.EmailFields=void 0;var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _reactNativeSizeMatters=require("react-native-size-matters");var _=require("./..");var _Badge=require("./Badge");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/EmailFields.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 EmailFields=function EmailFields(_ref){var shouldShowEmailFields=_ref.shouldShowEmailFields,setIsEmailFieldsVisible=_ref.setIsEmailFieldsVisible,isEmailFieldsVisible=_ref.isEmailFieldsVisible,toEmails=_ref.toEmails,toEmailsForForward=_ref.toEmailsForForward,ccEmails=_ref.ccEmails,bccEmails=_ref.bccEmails,setToEmails=_ref.setToEmails,setToEmailsForForward=_ref.setToEmailsForForward,setBccEmails=_ref.setBccEmails,setCcEmails=_ref.setCcEmails,isReplyOptionSelected=_ref.isReplyOptionSelected,isNoteOptionSelected=_ref.isNoteOptionSelected,isForwardOptionSelected=_ref.isForwardOptionSelected;var firstToEmail=isReplyOptionSelected?toEmails[0]:toEmailsForForward[0];var badge="";if(firstToEmail){badge="To "+firstToEmail;}else if(isForwardOptionSelected){badge="Click here to enter email id.";}var totalEmailsMinus1=toEmails.length+toEmailsForForward.length+ccEmails.length+bccEmails.length-1;if(!shouldShowEmailFields)return null;return isEmailFieldsVisible?_react.default.createElement(_reactNativeReanimated.default.View,{entering:_reactNativeReanimated.FadeInDown,key:isEmailFieldsVisible,pb:(0,_reactNativeSizeMatters.moderateScale)(10),__self:_this,__source:{fileName:_jsxFileName,lineNumber:48,columnNumber:5}},isReplyOptionSelected&&_react.default.createElement(_.InputEmailChip,{disabled:true,emails:toEmails,label:"To:",onUpdate:setToEmails,__self:_this,__source:{fileName:_jsxFileName,lineNumber:54,columnNumber:9}}),isForwardOptionSelected&&_react.default.createElement(_.InputEmailChip,{disabled:false,emails:toEmailsForForward,label:"To:",onUpdate:setToEmailsForForward,__self:_this,__source:{fileName:_jsxFileName,lineNumber:62,columnNumber:9}}),_react.default.createElement(_.InputEmailChip,{disabled:false,emails:ccEmails,label:"Cc:",onUpdate:setCcEmails,__self:_this,__source:{fileName:_jsxFileName,lineNumber:69,columnNumber:7}}),_react.default.createElement(_.InputEmailChip,{disabled:false,emails:bccEmails,label:"Bcc:",onUpdate:setBccEmails,__self:_this,__source:{fileName:_jsxFileName,lineNumber:75,columnNumber:7}})):_react.default.createElement(_reactNativeReanimated.default.View,{alignItems:"flex-start",entering:_reactNativeReanimated.FadeInUp,flexDirection:"row",flexWrap:"wrap",key:isEmailFieldsVisible,style:isNoteOptionSelected&&{height:(0,_reactNativeSizeMatters.moderateScale)(0),width:(0,_reactNativeSizeMatters.moderateScale)(0)},onTouchStart:function onTouchStart(){return setIsEmailFieldsVisible(true);},__self:_this,__source:{fileName:_jsxFileName,lineNumber:83,columnNumber:5}},toEmails.length>0&&_react.default.createElement(_react.default.Fragment,null,_react.default.createElement(_Badge.Badge,{text:badge,__self:_this,__source:{fileName:_jsxFileName,lineNumber:99,columnNumber:11}}),totalEmailsMinus1>1&&_react.default.createElement(_Badge.Badge,{text:"+ "+totalEmailsMinus1,__self:_this,__source:{fileName:_jsxFileName,lineNumber:100,columnNumber:37}})));};exports.EmailFields=EmailFields;EmailFields.propTypes={shouldShowEmailFields:_propTypes.default.bool,isEmailFieldsVisible:_propTypes.default.bool,setIsEmailFieldsVisible:_propTypes.default.func,ccEmails:_propTypes.default.arrayOf(_propTypes.default.string),toEmails:_propTypes.default.arrayOf(_propTypes.default.string),toEmailsForForward:_propTypes.default.arrayOf(_propTypes.default.string),bccEmails:_propTypes.default.arrayOf(_propTypes.default.string),setBccEmails:_propTypes.default.func,setCcEmails:_propTypes.default.func,setToEmails:_propTypes.default.func,setToEmailsForForward:_propTypes.default.func,isReplyOptionSelected:_propTypes.default.bool,isNoteOptionSelected:_propTypes.default.bool,isForwardOptionSelected:_propTypes.default.bool};
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.TouchableOpacity=exports.Popover=void 0;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 _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativePopoverView=_interopRequireDefault(require("react-native-popover-view"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _=require("./");var _excluded=["children","data","fontFamily","fontSize"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Popover.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 TouchableOpacity=_native.default.TouchableOpacity(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.space,_styledSystem.border,_styledSystem.color,_styledSystem.flexbox,_styledSystem.layout);exports.TouchableOpacity=TouchableOpacity;var PopOverItem=function PopOverItem(_ref){var item=_ref.item,onPress=_ref.onPress,fontFamily=_ref.fontFamily,fontSize=_ref.fontSize;var Icon=item.Icon,label=item.label,labelProps=item.labelProps;return _react.default.createElement(TouchableOpacity,{alignItems:"center",flexDirection:"row",p:(0,_reactNativeSizeMatters.moderateScale)(2),px:(0,_reactNativeSizeMatters.moderateScale)(3),onPress:onPress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:24,columnNumber:5}},_react.default.createElement(Icon,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:31,columnNumber:7}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontColor:"font.primary",fontFamily:fontFamily,fontSize:fontSize,px:(0,_reactNativeSizeMatters.moderateScale)(2)},labelProps,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:32,columnNumber:7}}),label));};PopOverItem.propTypes={item:_propTypes.default.object,onPress:_propTypes.default.func,fontFamily:_propTypes.default.string,fontSize:_propTypes.default.oneOfType([_propTypes.default.number,_propTypes.default.oneOf(["3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl"])])};var Popover=function Popover(_ref2){var children=_ref2.children,data=_ref2.data,_ref2$fontFamily=_ref2.fontFamily,fontFamily=_ref2$fontFamily===void 0?null:_ref2$fontFamily,_ref2$fontSize=_ref2.fontSize,fontSize=_ref2$fontSize===void 0?"l":_ref2$fontSize,rest=(0,_objectWithoutProperties2.default)(_ref2,_excluded);var popoverRef=(0,_react.useRef)();var onPressItemRef=(0,_react.useRef)(function(){});return _react.default.createElement(_reactNativePopoverView.default,(0,_extends2.default)({popoverStyle:styles.popoverStyle,ref:popoverRef,onCloseComplete:function onCloseComplete(){return onPressItemRef.current();},onOpenStart:function onOpenStart(){onPressItemRef.current=function(){};}},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:159,columnNumber:5}}),data==null?void 0:data.map(function(item,index){return _react.default.createElement(PopOverItem,{fontFamily:fontFamily,fontSize:fontSize,item:item,key:index,onPress:function onPress(){var _popoverRef$current;popoverRef==null?void 0:(_popoverRef$current=popoverRef.current)==null?void 0:_popoverRef$current.setState({isVisible:false});onPressItemRef.current=item.onPress;},__self:_this,__source:{fileName:_jsxFileName,lineNumber:169,columnNumber:9}});}),children);};exports.Popover=Popover;Popover.propTypes={children:_propTypes.default.node,data:_propTypes.default.array,fontFamily:_propTypes.default.string,fontSize:_propTypes.default.oneOfType([_propTypes.default.number,_propTypes.default.oneOf(["xs","s","m","l","xl","xxl"])])};var styles=_reactNative.StyleSheet.create({popoverStyle:{borderRadius:(0,_reactNativeSizeMatters.moderateScale)(15),padding:(0,_reactNativeSizeMatters.moderateScale)(5)}});
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.TouchableOpacity=exports.Popover=void 0;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 _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativePopoverView=_interopRequireDefault(require("react-native-popover-view"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _=require("./");var _excluded=["children","data","fontFamily","fontSize"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Popover.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 TouchableOpacity=_native.default.TouchableOpacity(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.space,_styledSystem.border,_styledSystem.color,_styledSystem.flexbox,_styledSystem.layout);exports.TouchableOpacity=TouchableOpacity;var PopOverItem=function PopOverItem(_ref){var item=_ref.item,onPress=_ref.onPress,fontFamily=_ref.fontFamily,fontSize=_ref.fontSize,shouldShowDivider=_ref.shouldShowDivider;var Icon=item.Icon,label=item.label,labelProps=item.labelProps;return _react.default.createElement(_react.default.Fragment,null,_react.default.createElement(TouchableOpacity,{alignItems:"center",flexDirection:"row",p:(0,_reactNativeSizeMatters.moderateScale)(2),px:(0,_reactNativeSizeMatters.moderateScale)(8),py:(0,_reactNativeSizeMatters.moderateScale)(8),onPress:onPress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:31,columnNumber:7}},_react.default.createElement(Icon,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:39,columnNumber:9}}),_react.default.createElement(_.Typography,(0,_extends2.default)({fontColor:"font.primary",fontFamily:fontFamily,fontSize:fontSize,px:(0,_reactNativeSizeMatters.moderateScale)(2)},labelProps,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:40,columnNumber:9}}),label)),shouldShowDivider&&_react.default.createElement(_.Divider,{backgroundColor:"background.grey200",mx:(0,_reactNativeSizeMatters.moderateScale)(8),__self:_this,__source:{fileName:_jsxFileName,lineNumber:51,columnNumber:9}}));};PopOverItem.propTypes={shouldShowDivider:_propTypes.default.bool,item:_propTypes.default.object,onPress:_propTypes.default.func,fontFamily:_propTypes.default.string,fontSize:_propTypes.default.oneOfType([_propTypes.default.number,_propTypes.default.oneOf(["3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl"])])};var Popover=function Popover(_ref2){var children=_ref2.children,data=_ref2.data,_ref2$fontFamily=_ref2.fontFamily,fontFamily=_ref2$fontFamily===void 0?null:_ref2$fontFamily,_ref2$fontSize=_ref2.fontSize,fontSize=_ref2$fontSize===void 0?"l":_ref2$fontSize,rest=(0,_objectWithoutProperties2.default)(_ref2,_excluded);var popoverRef=(0,_react.useRef)();var onPressItemRef=(0,_react.useRef)(function(){});return _react.default.createElement(_reactNativePopoverView.default,(0,_extends2.default)({popoverStyle:styles.popoverStyle,ref:popoverRef,onCloseComplete:function onCloseComplete(){return onPressItemRef.current();},onOpenStart:function onOpenStart(){onPressItemRef.current=function(){};}},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:172,columnNumber:5}}),data==null?void 0:data.map(function(item,index){return _react.default.createElement(PopOverItem,{fontFamily:fontFamily,fontSize:fontSize,item:item,key:index,shouldShowDivider:index!==data.length-1,onPress:function onPress(){var _popoverRef$current;popoverRef==null?void 0:(_popoverRef$current=popoverRef.current)==null?void 0:_popoverRef$current.setState({isVisible:false});onPressItemRef.current=item.onPress;},__self:_this,__source:{fileName:_jsxFileName,lineNumber:182,columnNumber:9}});}),children);};exports.Popover=Popover;Popover.propTypes={children:_propTypes.default.node,data:_propTypes.default.array,fontFamily:_propTypes.default.string,fontSize:_propTypes.default.oneOfType([_propTypes.default.number,_propTypes.default.oneOf(["xs","s","m","l","xl","xxl"])])};var styles=_reactNative.StyleSheet.create({popoverStyle:{borderRadius:(0,_reactNativeSizeMatters.moderateScale)(10),padding:(0,_reactNativeSizeMatters.moderateScale)(5)}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neetoui-rn",
3
- "version": "0.0.248",
3
+ "version": "0.0.249",
4
4
  "main": "lib/index.js",
5
5
  "author": "BigBinary",
6
6
  "license": "MIT",
@@ -1,6 +1,14 @@
1
- import React, { useEffect, useRef, useCallback, useState } from "react";
1
+ import React, {
2
+ useEffect,
3
+ useRef,
4
+ useCallback,
5
+ useState,
6
+ forwardRef,
7
+ useImperativeHandle,
8
+ } from "react";
2
9
 
3
10
  import PropTypes from "prop-types";
11
+ import Icon from "react-native-remix-icon";
4
12
  import { moderateScale } from "react-native-size-matters";
5
13
  import styled from "styled-components/native";
6
14
  import {
@@ -19,7 +27,7 @@ import ForwardSVG from "@assets/icons/forward.svg";
19
27
  import MinimizeSVG from "@assets/icons/minimize.svg";
20
28
  import NoteSVG from "@assets/icons/note.svg";
21
29
  import ReplySVG from "@assets/icons/reply.svg";
22
- import { Container, LineLoader, Button } from "@components";
30
+ import { Container, LineLoader, Popover, Button } from "@components";
23
31
 
24
32
  import { AttachmentsView } from "./AttachmentsView";
25
33
  import { EmailFields } from "./EmailFields";
@@ -115,245 +123,309 @@ const TextInput = styled.TextInput`
115
123
  * ```
116
124
  */
117
125
 
118
- export const ChatInput = ({
119
- shouldShowEmailFields,
120
- value = "",
121
- onChangeText = () => {},
122
- onForward,
123
- onCannedResponse,
124
- toEmails: initialToEmails,
125
- onReply = () => {},
126
- onAddNote = () => {},
127
- onAttachment = () => {},
128
- attachmentsCount,
129
- Attachments,
130
- showCannedResponsesFor = [OPTION_TYPES.REPLY],
131
- disabled,
132
- isLoading = true,
133
- onOptionChange = () => {},
134
- initialSelectedOption = OPTION_TYPES.REPLY,
135
- ...rest
136
- }) => {
137
- const inputRef = useRef();
126
+ export const ChatInput = forwardRef(
127
+ (
128
+ {
129
+ shouldShowEmailFields,
130
+ showReplyMenuOptions,
131
+ value = "",
132
+ onChangeText = () => {},
133
+ onForward,
134
+ onCannedResponse,
135
+ toEmails: initialToEmails,
136
+ onReply = () => {},
137
+ onAddNote = () => {},
138
+ onAttachment = () => {},
139
+ attachmentsCount,
140
+ Attachments,
141
+ showCannedResponsesFor = [OPTION_TYPES.REPLY],
142
+ disabled,
143
+ isLoading = true,
144
+ onOptionChange = () => {},
145
+ initialSelectedOption = OPTION_TYPES.REPLY,
146
+ ...rest
147
+ },
148
+ ref
149
+ ) => {
150
+ const inputRef = useRef();
138
151
 
139
- const [selectedOption, setSelectedOption] = useState(initialSelectedOption);
140
- const [isEmailFieldsVisible, setIsEmailFieldsVisible] = useState(false);
141
- const [isAttachmentsVisible, setIsAttachmentsVisible] = useState(false);
152
+ const [selectedOption, setSelectedOption] = useState(initialSelectedOption);
153
+ const [isEmailFieldsVisible, setIsEmailFieldsVisible] = useState(false);
154
+ const [isAttachmentsVisible, setIsAttachmentsVisible] = useState(false);
142
155
 
143
- const isReplyOptionSelected = selectedOption === OPTION_TYPES.REPLY;
144
- const isNoteOptionSelected = selectedOption === OPTION_TYPES.NOTE;
145
- const isForwardOptionSelected = selectedOption === OPTION_TYPES.FORWARD;
156
+ const isReplyOptionSelected = selectedOption === OPTION_TYPES.REPLY;
157
+ const isNoteOptionSelected = selectedOption === OPTION_TYPES.NOTE;
158
+ const isForwardOptionSelected = selectedOption === OPTION_TYPES.FORWARD;
146
159
 
147
- const [toEmails, setToEmails] = useState(initialToEmails ?? "");
148
- const [ccEmails, setCcEmails] = useState("");
149
- const [bccEmails, setBccEmails] = useState("");
160
+ const [toEmails, setToEmails] = useState(initialToEmails ?? []);
161
+ const [toEmailsForForward, setToEmailsForForward] = useState([]);
162
+ const [ccEmails, setCcEmails] = useState([]);
163
+ const [bccEmails, setBccEmails] = useState([]);
150
164
 
151
- useEffect(() => {
152
- onOptionChange(selectedOption);
153
- }, [selectedOption]);
165
+ const moreReplyOptions = [
166
+ {
167
+ label: "Send and set as closed",
168
+ Icon: () => null,
169
+ onPress: () => {
170
+ onReply({ toEmails, ccEmails, bccEmails, status: "closed" });
171
+ },
172
+ },
173
+ ];
154
174
 
155
- useEffect(() => {
156
- setSelectedOption(initialSelectedOption);
157
- }, [initialSelectedOption]);
175
+ useImperativeHandle(
176
+ ref,
177
+ () => ({
178
+ clearEmailFields: () => {
179
+ setToEmails(initialToEmails ?? []);
180
+ setToEmailsForForward([]);
181
+ setCcEmails([]);
182
+ setBccEmails([]);
183
+ inputRef.current.blur();
184
+ },
185
+ }),
186
+ [initialToEmails, isReplyOptionSelected]
187
+ );
158
188
 
159
- useEffect(() => {
160
- if (isReplyOptionSelected) {
161
- setToEmails(initialToEmails ?? "");
162
- } else {
163
- setToEmails("");
164
- }
165
- }, [initialToEmails, isReplyOptionSelected]);
189
+ useEffect(() => {
190
+ onOptionChange(selectedOption);
191
+ }, [selectedOption]);
166
192
 
167
- const showEmailFieldsAndAttachments = () => {
168
- setIsAttachmentsVisible(true);
169
- setIsEmailFieldsVisible(true);
170
- };
193
+ useEffect(() => {
194
+ setSelectedOption(initialSelectedOption);
195
+ }, [initialSelectedOption]);
171
196
 
172
- const hideEmailFieldsAndAttachments = () => {
173
- setIsAttachmentsVisible(false);
174
- setIsEmailFieldsVisible(false);
175
- };
197
+ useEffect(() => {
198
+ setToEmails(initialToEmails ?? []);
199
+ }, [initialToEmails]);
176
200
 
177
- const onReplyClickHandler = () => {
178
- hideEmailFieldsAndAttachments();
179
- inputRef.current.focus();
180
- setSelectedOption(OPTION_TYPES.REPLY);
181
- };
201
+ const showEmailFieldsAndAttachments = () => {
202
+ setIsAttachmentsVisible(true);
203
+ setIsEmailFieldsVisible(true);
204
+ };
182
205
 
183
- const onAddNoteClickHandler = () => {
184
- hideEmailFieldsAndAttachments();
185
- inputRef.current.focus();
186
- setIsEmailFieldsVisible(false);
187
- setSelectedOption(OPTION_TYPES.NOTE);
188
- };
206
+ const hideEmailFieldsAndAttachments = () => {
207
+ setIsAttachmentsVisible(false);
208
+ setIsEmailFieldsVisible(false);
209
+ };
189
210
 
190
- const onAddForwardClickHandler = () => {
191
- inputRef.current.focus();
192
- setIsEmailFieldsVisible(true);
193
- setIsAttachmentsVisible(false);
194
- setSelectedOption(OPTION_TYPES.FORWARD);
195
- };
211
+ const onReplyClickHandler = () => {
212
+ hideEmailFieldsAndAttachments();
213
+ inputRef.current.focus();
214
+ setSelectedOption(OPTION_TYPES.REPLY);
215
+ };
196
216
 
197
- const onAddAttachmentsClickHandler = () => {
198
- if (!isAttachmentsVisible && attachmentsCount > 0) {
199
- // When attachments are not visible but there are few attachments then we no need to show the upload modal.
200
- } else {
201
- onAttachment();
202
- }
203
- setIsEmailFieldsVisible(false);
204
- setIsAttachmentsVisible(true);
205
- };
217
+ const onAddNoteClickHandler = () => {
218
+ hideEmailFieldsAndAttachments();
219
+ inputRef.current.focus();
220
+ setIsEmailFieldsVisible(false);
221
+ setSelectedOption(OPTION_TYPES.NOTE);
222
+ };
206
223
 
207
- const onActionHandler = useCallback(() => {
208
- ({
209
- [OPTION_TYPES.REPLY]: () => {
210
- onReply({ toEmails, ccEmails, bccEmails });
211
- },
212
- [OPTION_TYPES.NOTE]: () => {
213
- onAddNote({ toEmails, ccEmails, bccEmails });
214
- },
215
- [OPTION_TYPES.FORWARD]: () => {
216
- onForward({ toEmails, ccEmails, bccEmails });
217
- },
218
- }[selectedOption]());
219
- }, [
220
- bccEmails,
221
- ccEmails,
222
- onAddNote,
223
- onForward,
224
- onReply,
225
- selectedOption,
226
- toEmails,
227
- ]);
224
+ const onAddForwardClickHandler = () => {
225
+ inputRef.current.focus();
226
+ setIsEmailFieldsVisible(true);
227
+ setIsAttachmentsVisible(false);
228
+ setSelectedOption(OPTION_TYPES.FORWARD);
229
+ };
228
230
 
229
- const shouldExpandAndMinimizeButton = attachmentsCount > 0 || toEmails;
231
+ const onAddAttachmentsClickHandler = () => {
232
+ if (!isAttachmentsVisible && attachmentsCount > 0) {
233
+ // When attachments are not visible but there are few attachments then we no need to show the upload modal.
234
+ } else {
235
+ onAttachment();
236
+ }
237
+ setIsEmailFieldsVisible(false);
238
+ setIsAttachmentsVisible(true);
239
+ };
230
240
 
231
- return (
232
- <Container>
233
- <LineLoader
234
- backgroundColor={theme.colors.background.grey400}
235
- isLoading={isLoading}
236
- />
237
- <Container
238
- bg={isNoteOptionSelected ? "background.oldLace" : "transparent"}
239
- p={moderateScale(5)}
240
- pt={0}
241
- px={moderateScale(16)}
242
- >
243
- <Container pt={moderateScale(8)}>
244
- <EmailFields
245
- bccEmails={bccEmails}
246
- ccEmails={ccEmails}
247
- isEmailFieldsVisible={isEmailFieldsVisible}
248
- setBccEmails={setBccEmails}
249
- setCcEmails={setCcEmails}
250
- setIsEmailFieldsVisible={setIsEmailFieldsVisible}
251
- setToEmails={setToEmails}
252
- shouldShowEmailFields={shouldShowEmailFields}
253
- toEmails={toEmails}
254
- />
255
- <Container flexDirection="row" justifyContent="space-between">
256
- <TextInput
257
- multiline
258
- flex={1}
259
- placeholder={placeholders[selectedOption]}
260
- py={moderateScale(12)}
261
- ref={inputRef}
262
- value={value}
263
- onChangeText={onChangeText}
264
- onTouchStart={hideEmailFieldsAndAttachments}
265
- {...rest}
241
+ const onActionHandler = useCallback(() => {
242
+ ({
243
+ [OPTION_TYPES.REPLY]: () => {
244
+ onReply({ toEmails, ccEmails, bccEmails });
245
+ },
246
+ [OPTION_TYPES.NOTE]: () => {
247
+ onAddNote({ toEmails, ccEmails, bccEmails });
248
+ },
249
+ [OPTION_TYPES.FORWARD]: () => {
250
+ onForward({ toEmails, ccEmails, bccEmails });
251
+ },
252
+ }[selectedOption]());
253
+ }, [
254
+ bccEmails,
255
+ ccEmails,
256
+ onAddNote,
257
+ onForward,
258
+ onReply,
259
+ selectedOption,
260
+ toEmails,
261
+ ]);
262
+
263
+ const shouldShowExpandAndMinimizeButton =
264
+ attachmentsCount > 0 || toEmails.length > 0;
265
+
266
+ const shouldDisableWhenForwardAndToFieldMissing =
267
+ isForwardOptionSelected && toEmailsForForward.length === 0;
268
+
269
+ return (
270
+ <Container>
271
+ <LineLoader
272
+ backgroundColor={theme.colors.background.grey400}
273
+ isLoading={isLoading}
274
+ />
275
+ <Container
276
+ bg={isNoteOptionSelected ? "background.oldLace" : "transparent"}
277
+ p={moderateScale(5)}
278
+ pt={0}
279
+ px={moderateScale(16)}
280
+ >
281
+ <Container pt={moderateScale(8)}>
282
+ <EmailFields
283
+ bccEmails={bccEmails}
284
+ ccEmails={ccEmails}
285
+ isEmailFieldsVisible={isEmailFieldsVisible}
286
+ isForwardOptionSelected={isForwardOptionSelected}
287
+ isNoteOptionSelected={isNoteOptionSelected}
288
+ isReplyOptionSelected={isReplyOptionSelected}
289
+ setBccEmails={setBccEmails}
290
+ setCcEmails={setCcEmails}
291
+ setIsEmailFieldsVisible={setIsEmailFieldsVisible}
292
+ setToEmails={setToEmails}
293
+ setToEmailsForForward={setToEmailsForForward}
294
+ shouldShowEmailFields={shouldShowEmailFields}
295
+ toEmails={toEmails}
296
+ toEmailsForForward={toEmailsForForward}
266
297
  />
267
- <Container alignSelf="center">
268
- {shouldExpandAndMinimizeButton &&
269
- (isEmailFieldsVisible || isAttachmentsVisible ? (
270
- <IconButton
271
- Icon={MinimizeSVG}
272
- height={moderateScale(30)}
273
- pt={moderateScale(8)}
274
- width={moderateScale(30)}
275
- onPress={hideEmailFieldsAndAttachments}
276
- />
277
- ) : (
278
- <IconButton
279
- Icon={ExpandSVG}
280
- height={moderateScale(30)}
281
- pt={moderateScale(8)}
282
- width={moderateScale(30)}
283
- onPress={showEmailFieldsAndAttachments}
284
- />
285
- ))}
286
- </Container>
287
- </Container>
288
- <AttachmentsView
289
- Attachments={Attachments}
290
- attachmentsCount={attachmentsCount}
291
- isAttachmentsVisible={isAttachmentsVisible}
292
- isNoteOptionSelected={isNoteOptionSelected}
293
- setIsAttachmentsVisible={setIsAttachmentsVisible}
294
- />
295
- <Container
296
- alignItems="center"
297
- flexDirection="row"
298
- justifyContent="space-between"
299
- mt={moderateScale(10)}
300
- >
301
298
  <Container flexDirection="row" justifyContent="space-between">
302
- <IconButton
303
- Icon={ReplySVG}
304
- opacity={isReplyOptionSelected ? 1 : 0.5}
305
- pl={moderateScale(10)}
306
- onPress={onReplyClickHandler}
307
- />
308
- <IconButton
309
- Icon={NoteSVG}
310
- opacity={isNoteOptionSelected ? 1 : 0.5}
311
- onPress={onAddNoteClickHandler}
299
+ <TextInput
300
+ multiline
301
+ flex={1}
302
+ maxHeight={moderateScale(150)}
303
+ my={moderateScale(12)}
304
+ overflow="hidden"
305
+ placeholder={placeholders[selectedOption]}
306
+ ref={inputRef}
307
+ value={value}
308
+ onChangeText={onChangeText}
309
+ onTouchStart={hideEmailFieldsAndAttachments}
310
+ {...rest}
312
311
  />
313
- {onForward && (
312
+ <Container alignSelf="center">
313
+ {shouldShowExpandAndMinimizeButton &&
314
+ (isEmailFieldsVisible || isAttachmentsVisible ? (
315
+ <IconButton
316
+ Icon={MinimizeSVG}
317
+ height={moderateScale(30)}
318
+ pt={moderateScale(8)}
319
+ width={moderateScale(30)}
320
+ onPress={hideEmailFieldsAndAttachments}
321
+ />
322
+ ) : (
323
+ <IconButton
324
+ Icon={ExpandSVG}
325
+ height={moderateScale(30)}
326
+ pt={moderateScale(8)}
327
+ width={moderateScale(30)}
328
+ onPress={showEmailFieldsAndAttachments}
329
+ />
330
+ ))}
331
+ </Container>
332
+ </Container>
333
+ <AttachmentsView
334
+ Attachments={Attachments}
335
+ attachmentsCount={attachmentsCount}
336
+ isAttachmentsVisible={isAttachmentsVisible}
337
+ isNoteOptionSelected={isNoteOptionSelected}
338
+ setIsAttachmentsVisible={setIsAttachmentsVisible}
339
+ />
340
+ <Container
341
+ alignItems="center"
342
+ flexDirection="row"
343
+ justifyContent="space-between"
344
+ mt={moderateScale(10)}
345
+ >
346
+ <Container flexDirection="row" justifyContent="space-between">
314
347
  <IconButton
315
- Icon={ForwardSVG}
316
- opacity={isForwardOptionSelected ? 1 : 0.5}
317
- onPress={onAddForwardClickHandler}
348
+ Icon={ReplySVG}
349
+ opacity={isReplyOptionSelected ? 1 : 0.5}
350
+ pl={moderateScale(10)}
351
+ onPress={onReplyClickHandler}
318
352
  />
319
- )}
320
- <Container
321
- bg="background.grey400"
322
- mx={moderateScale(5)}
323
- p={moderateScale(0.4)}
324
- />
325
- {onCannedResponse &&
326
- showCannedResponsesFor.includes(selectedOption) && (
353
+ <IconButton
354
+ Icon={NoteSVG}
355
+ opacity={isNoteOptionSelected ? 1 : 0.5}
356
+ onPress={onAddNoteClickHandler}
357
+ />
358
+ {onForward && (
327
359
  <IconButton
328
- Icon={CannedResponseSVG}
329
- opacity={0.5}
330
- onPress={onCannedResponse}
360
+ Icon={ForwardSVG}
361
+ opacity={isForwardOptionSelected ? 1 : 0.5}
362
+ onPress={onAddForwardClickHandler}
331
363
  />
332
364
  )}
333
- <IconButton
334
- Icon={AttachmentSVG}
335
- opacity={0.5}
336
- onPress={onAddAttachmentsClickHandler}
337
- />
365
+ <Container
366
+ bg="background.grey400"
367
+ mx={moderateScale(5)}
368
+ p={moderateScale(0.4)}
369
+ />
370
+ {onCannedResponse &&
371
+ showCannedResponsesFor.includes(selectedOption) && (
372
+ <IconButton
373
+ Icon={CannedResponseSVG}
374
+ opacity={0.5}
375
+ onPress={onCannedResponse}
376
+ />
377
+ )}
378
+ <IconButton
379
+ Icon={AttachmentSVG}
380
+ opacity={0.5}
381
+ onPress={onAddAttachmentsClickHandler}
382
+ />
383
+ </Container>
384
+ <Container alignItems="center" flexDirection="row">
385
+ <Button
386
+ height={moderateScale(30)}
387
+ label={labels[selectedOption]}
388
+ pr={0}
389
+ variant="text"
390
+ disabled={
391
+ shouldDisableWhenForwardAndToFieldMissing || disabled
392
+ }
393
+ labelStyle={{
394
+ mx: moderateScale(0),
395
+ }}
396
+ onPress={onActionHandler}
397
+ />
398
+ {showReplyMenuOptions && isReplyOptionSelected && (
399
+ <Popover
400
+ data={moreReplyOptions}
401
+ from={
402
+ <Button
403
+ disabled={disabled}
404
+ height={moderateScale(30)}
405
+ label=""
406
+ p={0}
407
+ variant="text"
408
+ RightIcon={() => (
409
+ <Icon
410
+ color={theme.colors.background.grey800}
411
+ name="ri-arrow-down-s-line"
412
+ size={moderateScale(30)}
413
+ />
414
+ )}
415
+ />
416
+ }
417
+ />
418
+ )}
419
+ </Container>
338
420
  </Container>
339
- <Button
340
- disabled={disabled}
341
- height={moderateScale(30)}
342
- label={labels[selectedOption]}
343
- pr={0}
344
- variant="text"
345
- labelStyle={{
346
- mx: moderateScale(0),
347
- }}
348
- onPress={onActionHandler}
349
- />
350
421
  </Container>
351
422
  </Container>
352
423
  </Container>
353
- </Container>
354
- );
355
- };
424
+ );
425
+ }
426
+ );
356
427
 
428
+ ChatInput.displayName = "ChatInput";
357
429
  ChatInput.propTypes = {
358
430
  /**
359
431
  * If true, Shows loader
@@ -363,6 +435,10 @@ ChatInput.propTypes = {
363
435
  * If true, Shows to, cc and bcc email inputs.
364
436
  */
365
437
  shouldShowEmailFields: PropTypes.bool,
438
+ /**
439
+ * If true, Shows reply menu options
440
+ */
441
+ showReplyMenuOptions: PropTypes.bool,
366
442
  /**
367
443
  * Value to make input component controllable.
368
444
  */
@@ -390,7 +466,7 @@ ChatInput.propTypes = {
390
466
  /**
391
467
  * Email list separated by comma.
392
468
  */
393
- toEmails: PropTypes.string,
469
+ toEmails: PropTypes.arrayOf(PropTypes.string),
394
470
  /**
395
471
  * Callback to be called on click of reply icon.
396
472
  */
@@ -414,7 +490,9 @@ ChatInput.propTypes = {
414
490
  /**
415
491
  * Array for options to show canned responses. Example: ["reply","notes","forward"]
416
492
  */
417
- showCannedResponsesFor: PropTypes.arrayOf(PropTypes.string),
493
+ showCannedResponsesFor: PropTypes.arrayOf(
494
+ PropTypes.oneOf(Object.values(OPTION_TYPES))
495
+ ),
418
496
  /**
419
497
  * If true, Disables the reply, forward and add note button.
420
498
  */
@@ -12,19 +12,34 @@ export const EmailFields = ({
12
12
  shouldShowEmailFields,
13
13
  setIsEmailFieldsVisible,
14
14
  isEmailFieldsVisible,
15
- ccEmails,
16
15
  toEmails,
16
+ toEmailsForForward,
17
+ ccEmails,
17
18
  bccEmails,
19
+ setToEmails,
20
+ setToEmailsForForward,
18
21
  setBccEmails,
19
22
  setCcEmails,
20
- setToEmails,
23
+ isReplyOptionSelected,
24
+ isNoteOptionSelected,
25
+ isForwardOptionSelected,
21
26
  }) => {
22
- const firstToEmail = (toEmails.trim() ? toEmails.split(",") : [])[0] ?? "";
27
+ const firstToEmail = isReplyOptionSelected
28
+ ? toEmails[0]
29
+ : toEmailsForForward[0];
30
+
31
+ let badge = "";
32
+ if (firstToEmail) {
33
+ badge = `To ${firstToEmail}`;
34
+ } else if (isForwardOptionSelected) {
35
+ badge = "Click here to enter email id.";
36
+ }
23
37
 
24
38
  const totalEmailsMinus1 =
25
- (toEmails.trim() ? toEmails.split(",") : []).length +
26
- (ccEmails.trim() ? ccEmails.split(",") : []).length +
27
- (bccEmails.trim() ? bccEmails.split(",") : []).length -
39
+ toEmails.length +
40
+ toEmailsForForward.length +
41
+ ccEmails.length +
42
+ bccEmails.length -
28
43
  1;
29
44
 
30
45
  if (!shouldShowEmailFields) return null;
@@ -35,29 +50,33 @@ export const EmailFields = ({
35
50
  key={isEmailFieldsVisible}
36
51
  pb={moderateScale(10)}
37
52
  >
53
+ {isReplyOptionSelected && (
54
+ <InputEmailChip
55
+ disabled
56
+ emails={toEmails}
57
+ label="To:"
58
+ onUpdate={setToEmails}
59
+ />
60
+ )}
61
+ {isForwardOptionSelected && (
62
+ <InputEmailChip
63
+ disabled={false}
64
+ emails={toEmailsForForward}
65
+ label="To:"
66
+ onUpdate={setToEmailsForForward}
67
+ />
68
+ )}
38
69
  <InputEmailChip
39
70
  disabled={false}
40
- emails={toEmails.trim() ? toEmails.split(",") : []}
41
- label="To:"
42
- onUpdate={emails => {
43
- setToEmails(emails.join(","));
44
- }}
45
- />
46
- <InputEmailChip
47
- disabled={false}
48
- emails={ccEmails.trim() ? ccEmails.split(",") : []}
71
+ emails={ccEmails}
49
72
  label="Cc:"
50
- onUpdate={emails => {
51
- setCcEmails(emails.join(","));
52
- }}
73
+ onUpdate={setCcEmails}
53
74
  />
54
75
  <InputEmailChip
55
76
  disabled={false}
56
- emails={bccEmails.trim() ? bccEmails.split(",") : []}
77
+ emails={bccEmails}
57
78
  label="Bcc:"
58
- onUpdate={emails => {
59
- setBccEmails(emails.join(","));
60
- }}
79
+ onUpdate={setBccEmails}
61
80
  />
62
81
  </Animated.View>
63
82
  ) : (
@@ -67,11 +86,17 @@ export const EmailFields = ({
67
86
  flexDirection="row"
68
87
  flexWrap="wrap"
69
88
  key={isEmailFieldsVisible}
89
+ style={
90
+ isNoteOptionSelected && {
91
+ height: moderateScale(0),
92
+ width: moderateScale(0),
93
+ }
94
+ }
70
95
  onTouchStart={() => setIsEmailFieldsVisible(true)}
71
96
  >
72
97
  {toEmails.length > 0 && (
73
98
  <>
74
- <Badge text={`To ${firstToEmail}`} />
99
+ <Badge text={badge} />
75
100
  {totalEmailsMinus1 > 1 && <Badge text={`+ ${totalEmailsMinus1}`} />}
76
101
  </>
77
102
  )}
@@ -83,10 +108,15 @@ EmailFields.propTypes = {
83
108
  shouldShowEmailFields: PropTypes.bool,
84
109
  isEmailFieldsVisible: PropTypes.bool,
85
110
  setIsEmailFieldsVisible: PropTypes.func,
86
- ccEmails: PropTypes.string,
87
- toEmails: PropTypes.string,
88
- bccEmails: PropTypes.string,
111
+ ccEmails: PropTypes.arrayOf(PropTypes.string),
112
+ toEmails: PropTypes.arrayOf(PropTypes.string),
113
+ toEmailsForForward: PropTypes.arrayOf(PropTypes.string),
114
+ bccEmails: PropTypes.arrayOf(PropTypes.string),
89
115
  setBccEmails: PropTypes.func,
90
116
  setCcEmails: PropTypes.func,
91
117
  setToEmails: PropTypes.func,
118
+ setToEmailsForForward: PropTypes.func,
119
+ isReplyOptionSelected: PropTypes.bool,
120
+ isNoteOptionSelected: PropTypes.bool,
121
+ isForwardOptionSelected: PropTypes.bool,
92
122
  };
@@ -7,7 +7,7 @@ import { moderateScale } from "react-native-size-matters";
7
7
  import styled from "styled-components/native";
8
8
  import { flexbox, space, border, color, layout } from "styled-system";
9
9
 
10
- import { Typography } from "@components";
10
+ import { Typography, Divider } from "@components";
11
11
 
12
12
  export const TouchableOpacity = styled.TouchableOpacity`
13
13
  ${space}
@@ -17,32 +17,45 @@ export const TouchableOpacity = styled.TouchableOpacity`
17
17
  ${layout}
18
18
  `;
19
19
 
20
- const PopOverItem = ({ item, onPress, fontFamily, fontSize }) => {
20
+ const PopOverItem = ({
21
+ item,
22
+ onPress,
23
+ fontFamily,
24
+ fontSize,
25
+ shouldShowDivider,
26
+ }) => {
21
27
  const { Icon, label, labelProps } = item;
22
28
 
23
29
  return (
24
- <TouchableOpacity
25
- alignItems="center"
26
- flexDirection="row"
27
- p={moderateScale(2)}
28
- px={moderateScale(3)}
29
- onPress={onPress}
30
- >
31
- <Icon />
32
- <Typography
33
- fontColor="font.primary"
34
- fontFamily={fontFamily}
35
- fontSize={fontSize}
36
- px={moderateScale(2)}
37
- {...labelProps}
30
+ <>
31
+ <TouchableOpacity
32
+ alignItems="center"
33
+ flexDirection="row"
34
+ p={moderateScale(2)}
35
+ px={moderateScale(8)}
36
+ py={moderateScale(8)}
37
+ onPress={onPress}
38
38
  >
39
- {label}
40
- </Typography>
41
- </TouchableOpacity>
39
+ <Icon />
40
+ <Typography
41
+ fontColor="font.primary"
42
+ fontFamily={fontFamily}
43
+ fontSize={fontSize}
44
+ px={moderateScale(2)}
45
+ {...labelProps}
46
+ >
47
+ {label}
48
+ </Typography>
49
+ </TouchableOpacity>
50
+ {shouldShowDivider && (
51
+ <Divider backgroundColor="background.grey200" mx={moderateScale(8)} />
52
+ )}
53
+ </>
42
54
  );
43
55
  };
44
56
 
45
57
  PopOverItem.propTypes = {
58
+ shouldShowDivider: PropTypes.bool,
46
59
  item: PropTypes.object,
47
60
  onPress: PropTypes.func,
48
61
  fontFamily: PropTypes.string,
@@ -171,6 +184,7 @@ export const Popover = ({
171
184
  fontSize={fontSize}
172
185
  item={item}
173
186
  key={index}
187
+ shouldShowDivider={index !== data.length - 1}
174
188
  onPress={() => {
175
189
  popoverRef?.current?.setState({ isVisible: false });
176
190
  onPressItemRef.current = item.onPress;
@@ -201,5 +215,8 @@ Popover.propTypes = {
201
215
  };
202
216
 
203
217
  const styles = StyleSheet.create({
204
- popoverStyle: { borderRadius: moderateScale(15), padding: moderateScale(5) },
218
+ popoverStyle: {
219
+ borderRadius: moderateScale(10),
220
+ padding: moderateScale(5),
221
+ },
205
222
  });