{"version":3,"sources":["app/helpers/dateHelper.ts","app/api/axios-service.ts","app/api/agents.ts","app/stores/commonStore.ts","app/stores/userStore.ts","app/stores/employeeStore.ts","app/stores/authStore.ts","app/helpers/cookieHelper.ts","app/stores/dailyReportStore.ts","app/stores/workSpaceUserStore.ts","app/stores/chatStore.ts","app/stores/messageStore.ts","app/stores/cardMemberStore.ts","app/stores/store.ts","app/stores/modalStore.ts","app/stores/dateModalStore.tsx","app/stores/notificationModalStore.tsx","app/stores/subClientStore.ts","app/stores/leaveRequestStore.ts","app/stores/overtimeStore.ts","app/stores/undertimeStore.ts","app/stores/workSpaceTypeStore.ts","app/stores/workSpaceStore.ts","app/stores/boardStore.tsx","app/stores/timeRecordStore.ts","app/stores/cardGroupStore.ts","app/stores/cardStore.ts","app/stores/cardDateStore.ts","app/stores/conversationStore.ts","app/stores/cardCommentStore.ts","app/stores/cardChecklistStore.ts","app/stores/cardAttachmentStore.ts","app/stores/commentAttachmentStore.ts","app/stores/popoverStore.tsx","app/stores/chatAttachmentStore.tsx","app/stores/postStore.ts","app/stores/mediaStore.ts","features/date-notifications/NotificationList.tsx","features/date-notifications/NotificationDetails.tsx","features/date-notifications/NotificationModalContainer.tsx","app/common/modal/ModalContainer.tsx","app/common/popover/PopoverContainer.tsx","app/common/table/SearchToolbar.tsx","app/common/table/DateRangeFilter.tsx","app/common/table/UserFilter.tsx","app/common/table/OptionFilter.tsx","app/common/table/PaginatedTable.tsx","app/common/text/TextOverflow.tsx","features/daily-reports/DailyReportDetails.tsx","features/daily-reports/DailyReportList.tsx","features/dtr-summary/DtrSummaryList.tsx","app/common/image/AvatarImage.tsx","features/employees/dashboard/EmployeeList.tsx","app/layout/LoadingComponent.tsx","features/employees/details/EmployeeGeneralDetails.tsx","features/employees/details/EmployeeAdditionalDetails.tsx","features/employees/details/EmployeeSchedule.tsx","features/employees/details/EmployeeDtr.tsx","features/employees/details/EmployeeDetails.tsx","features/employees/details/EmployeeDetailsPage.tsx","features/kanban/card-dates/DateModalContainer.tsx","features/kanban/card-activities/CardActivityList.tsx","app/common/image/AttachmentThumbnail.tsx","features/kanban/card-menus/TextAreaInput.tsx","features/kanban/card-attachments/AttachmentEditForm.tsx","features/kanban/card-attachments/Attachment.tsx","features/kanban/card-attachments/AttachmentList.tsx","app/models/cardChecklist.ts","features/kanban/card-checklist/ChecklistItem.tsx","features/kanban/card-checklist/ChecklistProgress.tsx","features/kanban/card-checklist/ChecklistTitleInput.tsx","features/kanban/card-checklist/ItemTitleInput.tsx","features/kanban/card-checklist/Checklist.tsx","app/common/image/HiddenImage.tsx","features/kanban/card-comments/CommentAttachment.tsx","features/kanban/card-comments/CommentInput.tsx","features/kanban/card-comments/CommentEditInput.tsx","features/kanban/card-comments/CommentList.tsx","app/common/timepicker/Timepicker.tsx","features/kanban/card-dates/DateDetails.tsx","features/kanban/card-members/CardMember.tsx","features/kanban/card-members/CardMemberContainer.tsx","features/kanban/card-menus/AttachmentMenu.tsx","features/kanban/card-menus/ChecklistMenu.tsx","features/kanban/card-menus/DateMenu.tsx","features/kanban/card-menus/MembersMenu.tsx","features/kanban/cards/CardPlaceholder.tsx","app/models/card.ts","features/kanban/cards/DescriptionInput.tsx","features/kanban/cards/TitleInput.tsx","features/kanban/cards/CardDetails.tsx","features/kanban/cards/Card.tsx","features/kanban/card-lists/CardListTitlePopup.tsx","features/kanban/card-lists/CardListTitle.tsx","features/kanban/card-lists/InputCard.tsx","features/kanban/card-lists/InputCardContainer.tsx","features/kanban/card-lists/CardList.tsx","features/kanban/card-lists/InputList.tsx","features/kanban/card-lists/InputListContainer.tsx","features/kanban/boards/BoardDetails.tsx","app/common/form/TextInput.tsx","app/models/board.ts","features/kanban/boards/BoardForm.tsx","features/kanban/boards/BoardList.tsx","app/common/form/FormTextArea.tsx","app/models/workSpace.ts","features/kanban/workspaces/WorkSpaceForm.tsx","features/kanban/workspaces/WorkSpaceList.tsx","features/kanban/workspaces/WorkSpaceMemberForm.tsx","features/kanban/workspaces/WorkSpaceMemberList.tsx","features/leave-requests/LeaveRequestDetails.tsx","features/leave-requests/LeaveRequestList.tsx","features/overtime-requests/OvertimeRequestDetails.tsx","features/overtime-requests/OvertimeRequestList.tsx","features/subClients/SubClientList.tsx","features/undertime-requests/UndertimeRequestDetails.tsx","features/undertime-requests/UndertimeRequestList.tsx","features/users/ForgotPasswordForm.tsx","app/common/form/PasswordInput.tsx","features/users/LoginForm.tsx","features/users/ResetPasswordForm.tsx","app/enums/role.enum.ts","app/styles/theme.ts","features/newsfeeds/FileAttachment.tsx","app/helpers/fileHelper.ts","features/newsfeeds/LoadingAttachment.tsx","features/newsfeeds/ImageAttachment.tsx","features/newsfeeds/VideoAttachment.tsx","app/common/text-editor/TextEditor.tsx","features/newsfeeds/PostForm.tsx","features/newsfeeds/CommentForm.tsx","features/newsfeeds/Comment.tsx","features/newsfeeds/CommentSection.tsx","features/newsfeeds/PostActions.tsx","features/newsfeeds/ImageAttachmentModal.tsx","features/newsfeeds/PostAttachment.tsx","features/newsfeeds/PostHeader.tsx","features/newsfeeds/PostStats.tsx","features/newsfeeds/PostMessage.tsx","features/newsfeeds/Post.tsx","features/newsfeeds/PostList.tsx","features/newsfeeds/MainPanel.tsx","features/newsfeeds/BirthdayLink.tsx","features/newsfeeds/Birthday.tsx","features/newsfeeds/SidePanel.tsx","features/newsfeeds/Newsfeed.tsx","features/errors/AccessDenied.tsx","app/common/chat/NewMessage.tsx","app/common/chat/ConversationList.tsx","app/common/chat/ChatAttachmentImage.tsx","app/common/chat/AttachmentLoadingIndicator.tsx","app/common/chat/ChatAttachment.tsx","app/common/chat/ReceiverMultiSelect.tsx","app/common/chat/AddMemberModal.tsx","app/common/chat/DeleteMemberModal.tsx","app/common/chat/ViewMembersModal.tsx","app/common/chat/EditGroupChatNameModal.tsx","app/common/chat/ChatInputAttachment.tsx","app/common/chat/LeaveGroupModal.tsx","app/common/chat/MessageContainer.tsx","app/common/form/FormTextInput.tsx","app/common/chat/NewGroupMessage.tsx","app/common/chat/Chat.tsx","assets/audio/sfx-pop3.mp3","app/common/navbar/NavBar.tsx","app/common/sidebar-menu/SidebarData.tsx","app/common/sidebar-menu/SubMenu.tsx","app/common/sidebar-menu/SideBarMenu.tsx","app/router/PrivateRoute.tsx","app/router/ApplicationRouter.tsx","assets/audio/notification-sound.mp3","app/layout/App.tsx","reportWebVitals.ts","index.tsx","../node_modules/react-semantic-ui-datepickers/dist/locales sync /^/.*/.json$"],"names":["DateHelper","formatLocalDate","date","output","moment","utc","local","format","customFormatLocalDate","formatShortLocalDate","formatLocalDateTime","formatLocalShortMonthDateTime","formatLocalShortMonthDay","formatShortDate","formatMonthYear","serializeUtc","convertToUtcDate","dateString","getLocalTime","utcTime","Date","toLocaleTimeString","hour","minute","toLocalTimeString","param","toReadableDate","getMonth","getDate","getFullYear","getDateOnly","axiosService","axios","create","defaults","baseURL","process","interceptors","request","use","config","token","store","authStore","headers","Authorization","response","a","res","error","status","data","console","log","toast","startsWith","modalStore","closeModal","logout","toastId","Promise","reject","responseBody","requests","url","get","then","formData","post","body","put","patch","delete","agent","Account","login","user","forgotPassword","credentials","resetPassword","current","getProfilePhoto","id","refreshToken","oldToken","Common","loadGenders","loadNationalities","loadCivilStatuses","loadDepartments","Employees","filter","query","pageNumber","pageSize","searchKeyword","filterEmployeesSelectedDetails","filterDailyReports","filterDTR","loadPersonalDetails","userId","loadWorkExperiences","loadEducationRecords","loadSchedule","filterByDepartment","getAllDepartment","getNonWorkspaceMembers","workspaceId","getUpComingBirthdays","clientId","SubClients","add","subClient","update","LeaveRequests","approve","OvertimeRequests","UndertimeRequests","DailyReports","filters","WorkSpaceTypes","workSpaceType","getAll","WorkSpaces","workSpace","WorkSpaceUsers","workSpaceUser","addMultiple","workSpaceId","userIds","deleteUserWorkSpace","memberId","Boards","board","DtrSummary","department","startDate","endDate","CardGroups","cardGroup","boardId","Cards","card","cardGroupId","Conversations","coversation","updateIsRead","isReadRequest","updateReadReceipt","updateNotificationReceipt","filterEmployeeByConversation","conversataionId","getUsersByConverSation","conversationId","addUsersToConversation","users","deleteUser","rename","conversationName","Messages","message","addMessageAttachment","content","FormData","i","files","length","append","receiversId","loadingId","connectionId","CardAttachments","upload","file","cardId","uploadMultiple","getAttachment","CommentAttachments","commentId","ChatAttachments","CardUser","getAllCardMembers","CardDate","addSchedule","getSchedule","deleteSchedule","Posts","getById","getAttachments","getLikes","postId","getComments","PostAttachments","responseType","PostLikes","likeId","PostComments","CommonStore","hubConnection","scheduleURL","REACT_APP_SCHEDULE_URL","appLoaded","isCollapseSideBar","subNavId","genders","nationalities","civilStatuses","departments","notification","createHubConnection","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","configureLogging","LogLevel","Information","build","start","catch","e","on","runInAction","stopHubConnection","stop","setAppLoaded","toggleSidebar","setSideBar","state","setSubNav","makeAutoObservable","this","map","g","text","name","value","UserStore","displayName","setDisplayName","firstName","lastName","creds","success","history","push","getUser","getProfilePicture","_dateHelper","EmployeeStore","employees","employeesDepartment","total","loadingInitial","isLoading","filterValues","employee","workExperiences","educationRecords","schedule","isEmployeeLoaded","searchingEmployee","searchedEmployees","dailyReports","dailyReportsTotal","isDailyReportLoaded","timeRecords","timeRecordTotal","isTimeRecordsLoaded","loadEmployees","setLoading","loadAllDepartment","loadEmployeesListByDepartment","loadEmployee","employeePersonalInfo","searchEmployee","search","find","s","loadEmployeeDailyReports","loadEmployeeDTR","setLoadingInitial","reset","day","startTime","mondayWorkingDay","mondayStart","endTime","mondayEnd","tuesdayWorkingDay","tuesdayStart","tuesdayEnd","wednesdayWorkingDay","wednesdayStart","wednesdayEnd","thursdayWorkingDay","thursdayStart","thursdayEnd","fridayWorkingDay","fridayStart","fridayEnd","saturdayWorkingDay","saturdayStart","saturdayEnd","sundayWorkingDay","sundayStart","sundayEnd","sortedByName","slice","unique","char","JSON","stringify","label","_cookieHelper","webUrl","REACT_APP_WEB_URL","document","cookie","split","reduce","accumulator","key","trim","decodeURIComponent","set","hostName","window","location","hostname","domain","AuthStore","refreshTokenTimeout","setRefreshToken","setToken","accessToken","jsonWebToken","startRefreshTokenTimer","userStore","commonStore","resetStates","postStore","resetPosts","refreshTheToken","chatStore","newMessageOpen","newGroupMessageOpen","popOverStore","closePopover","messageStore","setMessages","hideMessageBox","boardStore","reaction","decoded","jwt_decode","microsoftRole","role","jwtToken","parse","atob","timeout","exp","getTime","now","setTimeout","clearTimeout","DailyReportStore","isDailyReportListLoading","isInitialLoading","userEmployees","isLoadingUserEmployees","currentUserIds","isInitial","loadUserEmployees","setCurrentUserIds","sort","b","x","toLowerCase","y","WorkSpaceUserStore","workSpaceUsers","workSpaceUsersTotal","isListLoading","clientEmployees","nonMembers","isLoadingClientEmployees","filterWorkSpaceUsers","w","loadWorkSpaceUser","workSpaceUserId","resolve","goBack","deleteWorkSpaceUser","loadMembers","loadNonMembers","ChatStore","charUrl","contacts","employeesByConversation","employeesOnSelectedConversation","isContactsLoading","isEmployeesByConversationLoading","isEmployeesOnSelectedConversationLoading","selectedOption","messageBoxShow","isChatShow","selectedUser","selectedUsers","messageContent","groupName","isValidating","unReadConversationIds","notificationCount","hasBackgroundColor","isDeletingMember","conversation","conversationStore","selectedConversation","loadMoreConversation","conversations","c","senderId","isReadByReceiver","recentMessage","createdAt","sender","localTime","sentDate","sentTime","readReceiptUserIds","notifiedReceiptUserIds","currentMessages","messages","m","isMyMessage","isMessageUploading","indexOf","addConvesationIdToSession","invoke","showMessageBox","setMessageContent","setGroupName","setSelectedUser","setSelectedUsers","setIsValidating","setNewMessageOpen","setGroupNewMessageOpen","setSelectedOption","toggleChatBox","showChatBox","hideChatBox","setNotificationCount","loadContacts","hasProfilePicture","loadEmployeesByConversationId","deleteMember","values","setHasBackgroundColor","toggleHasBackgroundColor","dataURLtoFile","dataurl","filename","arr","mime","match","bstr","n","u8arr","Uint8Array","charCodeAt","File","type","hasBackGroundColor","hasPhoto","hasBg","MessageStore","isMessageSending","temporaryMessage","isMinimize","temporaryAttachment","temporaryAttachments","temporaryMessages","postMessage","addMessageWithAttachment","uuidv4","fileName","size","attachments","toLocaleString","loadMessage","bytesToSize","bytes","decimals","k","dm","sizes","Math","floor","parseFloat","pow","toFixed","setIsMinimize","setFiles","isSystemGeneratedMessage","includes","sendDateAndTime","lastMessageTime","currentMessageTime","CardMemberStore","workSpaceMembers","cardMembers","isLoadingCardMembers","isOpenPopOver","attachHubEvents","getAllWorkSpaceUsers","loadCardMembers","removeMember","setIsOpenPopOver","modal","open","openModal","dateModalStore","notificationModalStore","employeeStore","subClientStore","subClients","subClientsTotal","isSubClientListLoading","filterSubClients","loadSubClient","subClientId","deleteSubClient","leaveRequestStore","leaveRequests","leaveRequestsTotal","isLeaveRequestsLoading","leaveRequest","isLeaveRequestDetailsLoading","filterLeaveRequests","loadLeaveRequest","approveLeaveRequest","rejectLeaveRequest","overtimeStore","overtimes","overtimesTotal","isOvertimeListLoading","overtime","isOvertimeDetailsLoading","filterOvertimes","loadOvertime","approveOvertime","rejectOvertime","undertimeStore","undertimes","undertimesTotal","isUndertimeListLoading","undertime","isUndertimeDetailsLoading","filterUndertimes","loadUndertime","approveUndertime","rejectUndertime","dailyReportStore","workSpaceTypeStore","workSpaceTypes","workSpaceTypesTotal","isWorkSpaceTypeListLoading","filterWorkSpaceTypes","loadWorkSpaceType","getAllWorkSpaceTypes","workSpaceTypeId","deleteWorkSpaceType","workSpaceStore","workSpaces","workSpacesTotal","isWorkSpaceListLoading","activeWorkspace","filterWorkSpaces","loadWorkSpace","deleteWorkSpace","workSpaceUserStore","boards","boardsTotal","isBoardListLoading","boardUrl","isBoardDetailsLoading","activeBoard","Warning","cardStore","cardMemberStore","cardGroups","order","currentCardGroup","cg","title","boardOrder","cardGroupOrder","remainingCardGroups","sourceCardGroup","destinationCardGroup","cards","isSameDestination","draggedId","currentCard","updateBoardOrder","filterBoards","loadBoardDetails","loadBoard","getAllBoards","deleteBoard","timeRecordStore","timeRecordsTotal","isTimeRecordsLoading","filterTimeRecords","cardGroupStore","cardGroupsTotal","isCardGroupListLoading","loadCardGroup","getAllCardGroups","uuid","newBoard","updateCardGroupOrder","deleteCardGroup","orderId","cardsTotal","isCardListLoading","otherLists","filteredCards","receivedCard","cardComments","comments","cardComment","comment","currentComment","co","dateUpdated","checklists","checklist","currentChecklist","ck","checklistId","checklistItems","cl","cardChecklistId","items","checklistItem","cc","isCompleted","attachmentId","attachment","currentAttachment","commentAttachment","loadCard","stopListening","getAllCards","deleteCard","clonedState","currentList","cardDateStore","cardDates","cardDate","undefined","isLoadingConversation","searchQuery","pendingNotificationConversationIds","setPendingNotificationConversationIds","ids","getCoversationById","postConversation","setSelectedConversation","setSearchQuery","getSearchQuery","currentConversationId","unreadConversations","pendingNotificationConversation","cardCommentStore","isEdit","setEdit","cardChecklistStore","cardChecklist","deleteChecklist","addItem","cardChecklistItem","updateItem","deleteItem","itemId","cardAttachmentStore","uploading","showAllAttachments","getBlob","cardAttachment","updateFileName","deleteAttachment","setShowAllAttachments","commentAttachmentStore","selecting","updateComment","popOver","anchorEl","isOpen","openPopover","target","Boolean","chatAttachmentStore","IsAttachmentClicked","getImageBlob","setIsAttachmentClick","val","posts","isLoadingPosts","postAttachmentsPromise","Array","forEach","promise","all","promises","deletedFilesIds","updatedPost","p","getAttachements","mediaStore","media","getPostAttachment","blob","urlCreator","URL","webkitURL","createObjectURL","StoreContext","createContext","useStore","useContext","StyledItemContent","styled","ItemContent","StyledItem","Item","StyledItemTitle","span","StyledItemDate","CenteredSpan","StyledItemGroup","Group","observer","notifications","index","formattedDate","cardTitle","StyledHeader","h5","StyledSpan","StyledButton","Button","Icon","color","className","onClick","StyledModalContent","Modal","Content","StyledModal","onClose","centered","closeOnEscape","closeOnDimmerClick","CloseIcon","MdOutlineClose","div","Popover","anchorOrigin","vertical","horizontal","elevation","ContainerStyled","searchLabel","InputContainer","SearchStyled","Input","StyleIcon","SearchToolbar","toolbarProps","useState","searchText","setQuery","style","textAlign","fontSize","marginBottom","onChange","onKeyPress","ev","dataManager","onSearchChanged","preventDefault","icon","link","display","placeholder","DateRangeFilter","dateFilterLabel","onDateRangeFilter","dateRangeValues","initialValues","dates","setDates","iconPosition","allowOnlyNumbers","event","selectStyles","container","provided","minWidth","maxWidth","valueContainer","overflowY","maxHeight","menuList","menu","zIndex","userFilterLabel","onUserFilter","userValues","userFilterPlaceholder","styles","newValue","v","options","isMulti","OptionFilter","onOptionFilter","valueProps","placeholdder","setValue","Select","clearable","d","props","classes","makeStyles","tableTheme","boxShadow","borderRadius","toolbar","padding","borderBottom","minHeight","tableBody","backgroundColor","useStyles","onRowClick","columns","cellStyle","paddingLeft","headerStyle","actions","paddingRight","page","totalCount","localization","emptyDataSourceMessage","Header","as","fontWeight","searchPlaceholder","onChangePage","onSearchChange","components","Toolbar","justifyContent","width","customOptionFilters","optionFilter","userFilter","dateRangeFilter","Container","Paper","paginationType","actionsColumnIndex","showTitle","pageSizeOptions","loadingType","debounceInterval","tableLayout","searchFieldAlignment","searchFieldVariant","searchFieldStyle","toolbarButtonAlignment","maxBodyHeight","emptyRowsWhenPaging","actionsCellStyle","rowStyle","_data","_level","filterCellStyle","border","sorting","draggable","TextOverflow","dateHelper","dailyReport","Grid","Column","timeRecord","timeOutDate","toString","paddingTop","Row","summary","withReactContent","Swal","StyledContainer","theme","featureContainer","userOptionValues","setFilterValues","useEffect","field","render","rowData","tooltip","hasNotChangeUserIds","every","getDepartments","timeInDate","timeIn","difference","diff","duration","hourDuration","asHours","minSecDuration","AvatarImage","rest","dataUri","setDataUri","unmounted","Image","src","avatar","filterByDepartmentValues","setByDepartmentFilterValues","circular","marginRight","currentDepartments","LoadingComponent","inverted","Dimmer","active","Loader","StyledDisabledSelect","Form","getGenders","getCivilStatuses","getNationalities","Tab","Pane","divided","margin","readOnly","middleName","email","mobileNumber","genderId","disabled","dateOfBirth","nationalityId","civilStatusId","Table","striped","HeaderCell","Body","companyName","jobTitle","from","to","Cell","colSpan","schoolName","educationType","degree","EmployeeSchedule","pivotSchedule","PaginatedTable","employeeId","marginTop","StyledMenuItem","Menu","StyledTab","panes","menuItem","attached","StyledCardContainer","useParams","fluid","ComponentWrapper","CardActivityList","compact","Thumbnail","dataUrl","AttachmentThumbnail","reader","FileReader","onload","result","readAsDataURL","StyledTextArea","TextareaAutosize","isResizable","TextAreaInput","useField","meta","Field","autoFocus","touched","Label","basic","BodyContainer","HeaderContainer","ContentWrapper","enableReinitialize","initialValue","onSubmit","handleSubmit","validationSchema","Yup","required","max","isSubmitting","dirty","isValid","Divider","autoComplete","rows","loading","ActionWrapper","ExtensionThumbnail","FileName","ActionLink","_swal","isImage","getName","lastIndex","lastIndexOf","substring","Attachment","useLightbox","openLightbox","handleAttachmentUpdateSubmit","closeLightbox","resetForm","setSubmitting","pop","reason","currentTarget","createElement","appendChild","href","download","click","revokeObjectURL","removeChild","saveFile","getFileExtension","fromNow","stopPropagation","fire","showCancelButton","confirmButtonColor","cancelButtonColor","cancelButtonText","confirmButtonText","isConfirmed","disableButtons","AttachmentIcon","BsPaperclip","AddAttachmentWrapper","attachLightBoxIndex","showAll","splicedAttachments","count","inputFile","useRef","whiteSpace","flexGrow","multiple","ref","pending","CardChecklistFormValues","CardChecklistItemFormValues","LabelContainer","ButtonContainer","StyledText","DisplayContainer","DeleteIcon","BsTrash","ChecklistItem","setOpen","setTitle","completed","setCompleted","handleOnSave","completeProps","handleOnChecked","Checkbox","checked","newCompleteState","minRows","onMouseDown","IconButton","StyledProgress","Progress","PercentContainer","completedPercent","percent","computePercent","indicating","autoSuccess","ChecklistTitleInput","ItemTitleInput","ChecklistIcon","BsCheck2Square","HiddenImage","StyledSegment","hasView","Segment","ActionWrappers","StyledIcon","fileId","lightBoxIndex","onRemove","onDelete","bordered","CommentFrame","CommentBox","StyleTextArea","CommentControl","Avatar","AdditionalControlWrapper","ControlIcon","AttachmentContainer","CommentInput","setMessage","setSelecting","attachmentIcon","handleFileChange","removeSelectedFile","f","height","onBlur","CommentWrapper","ActionContainer","CommentHeaderContainer","MainControlWrapper","handleDeleteAttachment","ListContainer","cardProps","TimePickers","TextField","InputLabelProps","shrink","inputProps","variant","StyledSectionContainer","StyledMainTitle","StyledDateTimeTitle","h6","StyledNotificationTitle","StyledGrid","StyledTextField","StyledDate","StyledCheckbox","StyledValidationMessage","StyledRecurrence","FormControlLabel","StyledRecurrenceLabel","Typography","StyledInput","input","StyledOrdinalDropdown","select","StyledWeekendDropdown","StyledMonthDropdown","yup","setDuration","recurrenceType","setRecurrenceType","recurrencePattern","setRecurrencePattern","dailyRecurrenceOption","setDailyRecurrenceOption","monthlyRecurrenceOption","setMonthlyRecurrenceOption","yearlyRecurrenceOption","setYearlyRecurrenceOption","end","durationVal","endTimeWithTomorrowDate","setDate","formik","scheduleId","notificationCheckbox","handleCheckBoxClick","parentElement","nextElementSibling","useFormik","year","join","toDateString","hidden","lineHeight","float","handleChange","setFieldValue","startTimeVal","endTimeVal","getElementsByClassName","querySelector","dateToday","errors","helperText","marginLeft","FormGroup","flexDirection","control","borderRight","FormControl","RadioGroup","defaultValue","Radio","flexWrap","useStyle","btnCircle","position","top","right","NameWrapper","createdUserId","allowOutsideClick","AttachmentMenu","labelPosition","ChecklistMenu","React","setAnchorEl","DateMenu","PopupLable","dropdownIndicator","memberOptionValues","buttonRef","handleClose","setErrors","ReactDOM","findDOMNode","PaperProps","min","menuIsOpen","noOptionsMessage","CardPlaceholder","Placeholder","Line","image","CardFormValues","description","FakeTextbox","DescriptionInput","setDescription","TitleContainer","EditableTitle","TitleWrapper","trimmedTitle","TitleIcon","BsCardHeading","DescriptionIcon","BsTextParagraph","ActivityIcon","BsListUl","ItemInListContent","StyledMember","ScheduleMenu","ScheduleCloseIconStyled","cardGroupName","setSchedule","formattedScheduleDetails","formattedStartTime","textDecoration","spacing","cursor","CardTitle","Card","handleOnClickCard","draggableId","innerRef","dragHandleProps","draggableProps","swal","moreIcon","alignSelf","CardListTitlePopup","listId","setIsOpen","Popup","offset","header","background","onItemClick","secondary","onOpen","popper","trigger","overflow","CardListTitle","titleProps","InputBase","multiline","fullWidth","btnConfirm","confirm","InputCard","handleBtnConfirm","root","addCard","fade","addCardButton","InputCardContainer","Collapse","in","cardContainer","overflowX","flex","CardListWrapper","list","droppableId","droppableProps","StylePaperContainer","InputList","InputListContainer","BoardContainer","Styledfooter","boardData","useHistory","onDragEnd","destination","source","newListOrder","splice","clonedList","sourceList","l","destinationList","draggingCard","newState","draggedCardIdIndex","findIndex","direction","TextInput","BoardFormValues","StyledColumn","useLocation","setBoard","boardRecord","isSuccess","verticalAlign","alignItems","BackButton","createMuiTheme","overrides","MuiTableRow","hover","Link","pathname","ThemeProvider","TextArea","FormTextArea","WorkSpaceFormValues","setWorkSpace","refreshMainTable","refreshTable","handleRemove","leaveType","floated","clientApprovalStatus","iconProps","ForgotPasswordForm","username","letterSpacing","PasswordInput","showPassword","setValues","password","ResetPasswordForm","Role","matches","confirmPassword","test","parent","userCode","CardWrapper","SemanticUIHeader","FileAttachment","fileToDataUri","onerror","LoadingAttachment","ImageAttachment","onImagesRendered","overlay","FileHelper","base64","VideoAttachment","uri","setData","controls","TextEditor","editor","convertedToHTML","blocksFromHtml","htmlToDraft","contentBlocks","entityMap","contentState","ContentState","createFromBlockArray","EditorState","createWithContent","createEmpty","editorState","setEditorState","focusEditor","onEditorStateChange","getCurrentContent","hasText","draftToHtml","convertToRaw","PostForm","inputFileRef","setAttachments","validatedFiles","setValidatedFiles","setIsLoading","getSizeInMb","sizeInBytes","isEditing","Object","images","videos","others","prev","jsx","onClickCancel","CommentForm","onClickClose","isAvatarHidden","setComment","Comment","setUri","HandleClickEdit","onEditing","Author","Text","parsed","dangerouslySetInnerHTML","__html","parseMessage","owned","Dropdown","pointing","floating","inline","CommentSection","isCommentActive","commentCount","onCommentChanged","setComments","handleUpdateComment","handleDeleteComment","isEditng","PostActions","onClickLike","isLiked","onClickComment","ImageAttachmentModal","currentIndex","views","PostAttachment","forwardRef","onRemoveAttachment","postAttachment","setPostAttachement","originalPostAttachment","setOriginalPostAttachment","isViewerOpen","setIsViewerOpen","attachmentMedia","setAttachmentMedia","retrieveAttachments","useImperativeHandle","handleCancelEdit","getOriginalPostAttachmentCount","newMedia","handleRemoveAttachment","onClickImage","getImageAttachments","num","getVideoAttachments","video","fileJsx","otherAttachment","PostHeader","onClickEdit","PostStats","like","postLikes","totalLikes","likes","otherLikesCount","liked","PostMessage","Post","setIsLiked","setPostLikes","setIsCommentActive","setIsEditing","removedAttactments","setRemovedAttachments","setCount","handleClickComment","attachmentLength","number","element","getElementById","eventHandler","scrollHeight","scrollTop","clientHeight","addEventListener","removeEventListener","MainPanel","BirthdayLink","Actions","Action","Birthday","setUsers","dividing","SidePanel","Newsfeed","AccessDenied","Inline","primary","NewMessageContainer","StyledLabel","selection","closeOnChange","ConversationContainer","isShow","ConversationHeader","NoMessagesPlaceholder","SettingIcon","FiSettings","GroupMessageIcon","RiGroupLine","NewMessageIcon","BiMessageAdd","handleConversationClick","handleConversationSearch","hideAllBoxes","callback","callbackRef","handleClick","contains","useOuterClick","classList","onClearClick","isUnread","cleanedContent","replace","lastSenderName","info","unreadDot","conversationPicture","hasConversationPicture","Operations","visible","ChatAttachmentImage","AttachemntDetails","isAttachment","FileNameContainer","isLast","fileType","isUploading","renderAttachment","ReceiverMultiSelect","setTouched","employeessOptionValues","employeesIncludedOnConversation","formikRef","handleOnCLose","usersToUpdate","u","scrolling","Description","menuPortalTarget","menuPortal","base","WarningContainer","ItemContainer","CenterDiv","conversationdId","handleDeleteMember","LoaderContainer","modalState","setmodalState","setConversationdId","setUserId","setName","textOverflow","EditGroupChatNameModal","groupChatName","isSaving","setIsSaving","MinimizeIcon","isMinimized","SystemGeneratedText","small","Sending","ConversationName","StyledMessage","Message","htmlFrom","htmlString","cleanHtmlString","DOMPurify","sanitize","USE_PROFILES","html","messagesEndRef","messagesWithDates","setContent","setHover","inputRef","viewMembersModalState","setViewMembersModalState","viewEditModalState","setEditMembersModalState","leaveGroupModalState","setLeaveGroupModalState","focus","scrollToBottom","scrollIntoView","flexFlow","onPointerOver","onPointerOut","paddingBottom","senderNameLabel","isGroupConversation","el","model","CustomContent","componentDecorator","decoratedHref","decoratedText","rel","Footer","properties","is","fs","onPaste","item","clipboardData","originalEvent","getAsFile","getAsString","imgUrl","getData","sendDisabled","attachButton","onSend","onAttachClick","bottom","FormTextInput","NewGroupMessageContainer","contactsOptionValues","formikHelpers","ConversationList","useSound","popSound","playNotificationSound","setIsInitial","showProfileMenu","toggleshowProfileMenu","handleClickShowProfileMenu","fixed","borderless","exact","alt","left","SidebarData","path","subNav","SidebarLink","NavLink","palette","common","black","showSidebar","main","contrastText","NonLink","SidebarLabel","MenuContainer","DropdownContainer","DropdownLink","StyledSidebar","isCollapse","white","StyledProfile","StyledAppWrapper","Component","component","roles","isLoggedIn","currentRoles","hasRequiredRole","some","r","PublicLayout","LoginForm","innerWidth","matchMedia","CLIENT","DailyReportRequestList","EmployeeDetailsPage","SubClientList","EmployeeList","LeaveRequestDetails","OvertimeRequestDetails","LeaveRequestList","OvertimeRequestList","UndertimeRequestList","DtrSummaryList","UndertimeRequestDetails","WorkSpaceList","WorkSpaceForm","WorkSpaceMemberList","BoardList","BoardForm","BoardDetails","finally","Audio","notificationSound","play","hideProgressBar","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","createBrowserHistory","Provider","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","module","exports"],"mappings":"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","file":"static/js/main.95b59f6c.chunk.js","sourcesContent":["import moment from \"moment\";\r\n\r\nexport default class DateHelper {\r\n formatLocalDate = (date: string) => {\r\n let output = '';\r\n\r\n if (date) {\r\n let utcDate = moment.utc(date);\r\n let localDate = utcDate.local();\r\n\r\n output = localDate.format('dddd, MMMM DD, YYYY')\r\n }\r\n\r\n return output;\r\n }\r\n\r\n customFormatLocalDate = (date: string, format: string) => {\r\n let output = '';\r\n\r\n if (date) {\r\n let utcDate = moment.utc(date);\r\n let localDate = utcDate.local();\r\n\r\n output = localDate.format(format)\r\n }\r\n\r\n return output;\r\n }\r\n\r\n formatShortLocalDate = (date: string) => {\r\n let output = '';\r\n\r\n if (date) {\r\n let utcDate = moment.utc(date);\r\n let localDate = utcDate.local();\r\n\r\n output = localDate.format('MM/DD/YYYY')\r\n }\r\n\r\n return output;\r\n };\r\n\r\n formatLocalDateTime = (date: string) => {\r\n let output = '';\r\n\r\n if (date) {\r\n let utcDate = moment.utc(date);\r\n let localDate = utcDate.local();\r\n\r\n output = localDate.format('MM/DD/YYYY hh:mm A')\r\n }\r\n\r\n return output;\r\n };\r\n\r\n formatLocalShortMonthDateTime = (date: string) => {\r\n let output = '';\r\n\r\n if (date) {\r\n let utcDate = moment.utc(date);\r\n let localDate = utcDate.local();\r\n\r\n output = localDate.format('MMM DD YYYY (ddd) hh:mm A')\r\n }\r\n\r\n return output;\r\n };\r\n\r\n formatLocalShortMonthDay = (date: string) => {\r\n let output = '';\r\n\r\n if (date) {\r\n let utcDate = moment.utc(date);\r\n let localDate = utcDate.local();\r\n\r\n output = localDate.format('MMMM DD, YYYY (ddd)')\r\n }\r\n\r\n return output;\r\n };\r\n\r\n formatShortDate = (date: string) => {\r\n let output = '';\r\n\r\n if (date)\r\n output = moment(date).format('MM/DD/YYYY');\r\n\r\n return output;\r\n };\r\n\r\n formatMonthYear = (date: string) => {\r\n let output = '';\r\n\r\n if (date)\r\n output = moment(date).format('MMMM yyyy');\r\n\r\n return output;\r\n };\r\n\r\n serializeUtc = (utc: string) => {\r\n return moment.utc(utc).format();\r\n };\r\n\r\n // Changes the date's timezone to UTC \r\n // while retaining the original date\r\n convertToUtcDate = (date: string) => {\r\n let dateString = this.formatLocalDate(date);\r\n\r\n return this.serializeUtc(dateString);\r\n };\r\n\r\n getLocalTime = (utcTime:string) => {\r\n if (!utcTime)\r\n return '';\r\n\r\n let date = new Date(`1/1/2000 ${utcTime} UTC`);\r\n\r\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n }\r\n toLocalTimeString = (param) => {\r\n let date = new Date(param);\r\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n }\r\n toReadableDate = (date) => {\r\n let today = new Date();\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n let formatted_date = months[date.getMonth()] + \" \" + date.getDate() + \", \" + date.getFullYear()\r\n return formatted_date;\r\n\r\n\r\n\r\n }\r\n\r\n getDateOnly = (date: Date | null | undefined) => {\r\n return date ? moment(date).format(\"YYYY-MM-DD\"): '';\r\n }\r\n}","import axios, { AxiosError } from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport { store } from \"../stores/store\";\r\n\r\nconst axiosService = axios.create();\r\n\r\naxiosService.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n\r\naxiosService.interceptors.request.use(config => {\r\n const token = store.authStore.token;\r\n if (token) config.headers.Authorization = `Bearer ${token}`;\r\n return config;\r\n});\r\n\r\naxiosService.interceptors.response.use(async res => {\r\n return res;\r\n}, (error: AxiosError) => {\r\n const { status, data, headers } = error.response!;\r\n console.log(error);\r\n switch (status) {\r\n case 400:\r\n toast.error(data);\r\n break;\r\n case 401:\r\n if (headers['www-authenticate'] && headers['www-authenticate'].startsWith('Bearer error=\"invalid_token\"')) {\r\n store.modalStore.closeModal();\r\n store.authStore.logout();\r\n toast.error('Session expired. Please login again', {\r\n toastId: 'session-expired'\r\n });\r\n } else if (data)\r\n toast.error(data);\r\n else {\r\n toast.error(\"Unauthorized.\");\r\n }\r\n break;\r\n case 404:\r\n if (data) {\r\n toast.error(data);\r\n } else {\r\n toast.error('Not Found');\r\n }\r\n break;\r\n case 409:\r\n if (data) {\r\n toast.error(data);\r\n } else {\r\n toast.error('Conflict');\r\n }\r\n break;\r\n case 500:\r\n //toast.error('Server Error');\r\n break;\r\n }\r\n return Promise.reject(error);\r\n});\r\n\r\nexport default axiosService;","import { AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport moment from 'moment';\r\nimport DateHelper from '../helpers/dateHelper';\r\nimport { AccessToken } from '../models/authorization';\r\nimport { Board, BoardFormValues } from '../models/board';\r\nimport { Card, CardFormValues } from '../models/card';\r\nimport { CardAttachment } from '../models/cardAttachment';\r\nimport { CardDate as CardSchedule } from '../models/cardDate';\r\nimport { CardGroup, CardGroupFormValues } from '../models/cardGroup';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { Conversation, PostConversation } from '../models/conversation';\r\nimport { Education, Employee, EmployeeFilterValues, Schedule, WorkExperience } from '../models/employee';\r\nimport { DailyReport, DailyReportFilterValues } from '../models/employeeDailyReport';\r\nimport { LeaveRequest } from '../models/leaveRequest';\r\nimport { Message, PostMessage, PostMessageAttachment, PostMessageResponce } from '../models/message';\r\nimport { Option } from '../models/option';\r\nimport { Overtime } from '../models/overtime';\r\nimport { Post, PostAttachment, UploadPostAttachmentForm, PostForm, PostLikes as PostLikesModel, PostComment, EditPostForm } from '../models/post';\r\nimport { SubClient, SubClientFormValues } from '../models/subClient';\r\nimport { TimeRecord, TimeRecordFilterValues } from '../models/timeRecord';\r\nimport { Undertime } from '../models/undertime';\r\nimport { RefreshToken, ResetPasswordFormValues, User, UserFormValues } from '../models/user';\r\nimport { WorkSpace, WorkSpaceFormValues } from '../models/workSpace';\r\nimport { WorkSpaceType, WorkSpaceTypeFormValues } from '../models/workSpaceType';\r\nimport { WorkSpaceUser, WorkSpaceUserFormValues } from '../models/workSpaceUser';\r\nimport axiosService from './axios-service';\r\n\r\nconst dateHelper = new DateHelper();\r\n\r\nconst responseBody = (response: AxiosResponse) => response.data;\r\n\r\nconst requests = {\r\n get: (url: string, config?: AxiosRequestConfig) => axiosService.get(url, config).then(responseBody),\r\n upload: (url: string, formData: FormData, config?: AxiosRequestConfig) => axiosService.post(url, formData, config).then(responseBody),\r\n post: (url: string, body: {}) => axiosService.post(url, body).then(responseBody),\r\n put: (url: string, body: {}) => axiosService.put(url, body).then(responseBody),\r\n patch: (url: string, body: {}) => axiosService.patch(url, body).then(responseBody),\r\n delete: (url: string) => axiosService.delete(url).then(responseBody),\r\n}\r\n\r\nconst Account = {\r\n login: (user: UserFormValues) => requests.post('/authenticate/user', user),\r\n forgotPassword: (credentials: { username: string }) => requests.post('/Authenticated/ClientAccounts/ForgotPassword', credentials),\r\n resetPassword: (credentials: ResetPasswordFormValues) => requests.post('/Users/ResetPassword', credentials),\r\n current: () => requests.get('/Authenticated/ClientAccounts'),\r\n getProfilePhoto: (id: string, config: AxiosRequestConfig) => requests.get(`Authenticated/Clients/GetEmployeeProfilePicture/${id}`, config),\r\n refreshToken: (oldToken: RefreshToken) => requests.post('/authenticate/RefreshToken', oldToken),\r\n}\r\n\r\nconst Employees = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, employees: Employee[] }>\r\n (`/Authenticated/Clients/FilterEmployees?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n filterEmployeesSelectedDetails: (query: FilterValues) => requests.get<{ total: number, employees: Employee[] }>\r\n (`/Authenticated/Clients/FilterEmployeesSelectedDetails?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n filterDailyReports: (query: FilterValues) => requests.get<{ total: number, data: DailyReport[] }>\r\n (`/Authenticated/Clients/FilterEmployeeDailyReports?id=${query.id}&pageNumber=${query.pageNumber}&pageSize=${query.pageSize}`),\r\n filterDTR: (query: FilterValues) => requests.get<{ total: number, data: TimeRecord[] }>\r\n (`/Authenticated/Clients/FilterEmployeeTimeRecords?id=${query.id}&pageNumber=${query.pageNumber}&pageSize=${query.pageSize}`),\r\n loadPersonalDetails: (userId: string) => requests.get(`/Authenticated/Clients/GetEmployee/${userId}`),\r\n loadWorkExperiences: (userId: string) => requests.get(`/Authenticated/Clients/GetEmployeeWorkExperiences/${userId}`),\r\n loadEducationRecords: (userId: string) => requests.get(`/Authenticated/Clients/GetEducationRecords/${userId}`),\r\n loadSchedule: (userId: string) => requests.get(`/Authenticated/Clients/GetEmployeeSchedule/${userId}`),\r\n filterByDepartment: (query: EmployeeFilterValues) => requests.post<{ total: number, employees: Employee[] }>\r\n (`/Authenticated/Clients/FilterEmployeesByDepartment`, query),\r\n getAllDepartment: () => requests.get<{ total: number, department: any }>\r\n (`/Authenticated/Clients/GetAllDepartmentByClient`),\r\n getNonWorkspaceMembers: (workspaceId: string) => requests.get<{ total: number, employees: Employee[] }>\r\n (`/Authenticated/Clients/GetNonWorkspaceMembers?workspaceId=${workspaceId}`),\r\n getUpComingBirthdays: (clientId: string) => requests.get(`/Authenticated/Employees/GetUpcommingBirthdaysAsync?clientId=${clientId}`)\r\n}\r\n \r\nconst Common = {\r\n loadGenders: () => requests.get('Authenticated/Genders/GetAllAsync'),\r\n loadNationalities: () => requests.get('Authenticated/Nationalities/GetAllAsync'),\r\n loadCivilStatuses: () => requests.get('Authenticated/CivilStatuses/GetAllAsync'),\r\n loadDepartments: () => requests.get('Authenticated/Departments/GetAllAsync'),\r\n}\r\n\r\nconst LeaveRequests = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: LeaveRequest[] }>\r\n (`/authenticated/clients/leave-requests?pageNumber=${query.pageNumber}\r\n &pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n approve: (id: string) => requests.patch(`/Authenticated/LeaveRequests/ClientApprove/${id}`, {}),\r\n reject: (id: string) => requests.patch(`/Authenticated/LeaveRequests/ClientReject/${id}`, {}),\r\n get: (id: string) => requests.get(`/Authenticated/Clients/GetLeaveRequest/${id}`),\r\n}\r\n\r\nconst OvertimeRequests = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: Overtime[] }>\r\n (`/authenticated/clients/overtimes?pageNumber=${query.pageNumber}\r\n &pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n approve: (id: string) => requests.patch(`/Authenticated/Overtimes/ClientApprove/${id}`, {}),\r\n reject: (id: string) => requests.patch(`/Authenticated/Overtimes/ClientReject/${id}`, {}),\r\n get: (id: string) => requests.get(`/Authenticated/Clients/GetOvertime/${id}`),\r\n}\r\n\r\nconst UndertimeRequests = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: Undertime[] }>\r\n (`/authenticated/clients/undertimes?pageNumber=${query.pageNumber}\r\n &pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n approve: (id: string) => requests.patch(`/Authenticated/Undertimes/ClientApprove/${id}`, {}),\r\n reject: (id: string) => requests.patch(`/Authenticated/Undertimes/ClientReject/${id}`, {}),\r\n get: (id: string) => requests.get(`/Authenticated/Clients/GetUndertime/${id}`),\r\n}\r\n\r\nconst DailyReports = {\r\n filter: (filters: DailyReportFilterValues) => requests.post<{ total: number, data: DailyReport[] }>\r\n (`/Authenticated/Clients/FilterDailyReports`, filters),\r\n}\r\n\r\nconst WorkSpaceTypes = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: WorkSpaceType[] }>\r\n (`/Authenticated/WorkSpaceType/FilterAsync?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}`),\r\n add: (workSpaceType: { name: string }) => requests.post('/Authenticated/WorkSpaceType', workSpaceType),\r\n update: (workSpaceType: WorkSpaceTypeFormValues) => requests.put(`/Authenticated/WorkSpaceType/${workSpaceType.id}`, workSpaceType),\r\n get: (id: string) => requests.get(`/Authenticated/WorkSpaceType/${id}`),\r\n getAll: () => requests.get(`/Authenticated/WorkSpaceType`),\r\n delete: (id: string) => requests.delete(`/Authenticated/WorkSpaceType/${id}`),\r\n}\r\n\r\nconst WorkSpaces = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: WorkSpace[] }>\r\n (`/Authenticated/WorkSpaces/FilterAsync?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n add: (workSpace: WorkSpaceFormValues) => requests.post('/Authenticated/WorkSpaces', workSpace),\r\n update: (workSpace: WorkSpaceFormValues) => requests.put(`/Authenticated/WorkSpaces/${workSpace.id}`, workSpace),\r\n get: (id: string) => requests.get(`/Authenticated/WorkSpaces/${id}`),\r\n delete: (id: string) => requests.delete(`/Authenticated/WorkSpaces/${id}`),\r\n}\r\n\r\nconst WorkSpaceUsers = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: WorkSpaceUser[] }>\r\n (`/Authenticated/UserWorkSpace/FilterAsync?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}&id=${query.id}`),\r\n add: (workSpaceUser: WorkSpaceUserFormValues) => requests.post('/Authenticated/WorkSpaceUsers', workSpaceUser),\r\n addMultiple: (workSpaceId: string, userIds: string[]) => requests.post('/Authenticated/UserWorkSpace/AddMultiple', { workSpaceId: workSpaceId, userIds: userIds }),\r\n update: (workSpaceUser: WorkSpaceUserFormValues) => requests.put(`/Authenticated/UserWorkSpace/${workSpaceUser.id}`, workSpaceUser),\r\n get: (id: string) => requests.get(`/Authenticated/UserWorkSpace/${id}`),\r\n delete: (id: string) => requests.delete(`/Authenticated/UserWorkSpace/${id}`),\r\n deleteUserWorkSpace: (memberId: string, workSpaceId: string) => requests.delete(`/Authenticated/UserWorkSpace/delete/${memberId}/${workSpaceId}`),\r\n}\r\n\r\nconst SubClients = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: SubClient[] }>\r\n (`/Authenticated/Clients/FilterSubClientsAsync?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}`),\r\n add: (subClient: SubClientFormValues) => requests.post('/Authenticated/WorkSpaces', subClient),\r\n update: (subClient: SubClientFormValues) => requests.put(`/Authenticated/SubClientAccounts/${subClient.id}`, subClient),\r\n get: (id: string) => requests.get(`/Authenticated/SubClientAccounts/${id}`),\r\n delete: (id: string) => requests.delete(`/Authenticated/SubClientAccounts/${id}`),\r\n}\r\n\r\nconst Boards = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, data: Board[] }>\r\n (`/Authenticated/Boards/FilterAsync?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}&workSpaceId=${query.id}`),\r\n add: (board: BoardFormValues) => requests.post('/Authenticated/Boards', board),\r\n update: (board: BoardFormValues) => requests.put(`/Authenticated/Boards/${board.id}`, board),\r\n get: (id: string) => requests.get(`/Authenticated/Boards/${id}`),\r\n getAll: (workSpaceId: string) => requests.get(`/Authenticated/Boards?workSpaceId=${workSpaceId}`),\r\n delete: (id: string) => requests.delete(`/Authenticated/Boards/${id}`),\r\n}\r\n\r\nconst DtrSummary = {\r\n filter: (query: TimeRecordFilterValues) => requests.get<{ total: number, data: TimeRecord[] }>\r\n (`/Authenticated/Clients/FilterEmployeeDtr?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}\r\n &searchKeyword=${query.searchKeyword}&departmentId=${query.department}&startDate=${query.startDate ? moment(query.startDate).format('YYYY-MM-DD') : ''}\r\n &endDate=${query.endDate ? moment(query.endDate).format('YYYY-MM-DD') : ''}`),\r\n}\r\n\r\nconst CardGroups = {\r\n add: (cardGroup: CardGroupFormValues) => requests.post('/Authenticated/CardGroups', cardGroup),\r\n update: (cardGroup: CardGroupFormValues) => requests.put(`/Authenticated/CardGroups/${cardGroup.id}`, cardGroup),\r\n get: (id: string) => requests.get(`/Authenticated/CardGroups/${id}`),\r\n getAll: (boardId: string) => requests.get(`/Authenticated/CardGroups?boardId=${boardId}`),\r\n delete: (id: string) => requests.delete(`/Authenticated/CardGroups/${id}`),\r\n}\r\n\r\nconst Cards = {\r\n add: (card: CardFormValues) => requests.post('/Authenticated/Cards', card),\r\n update: (card: CardFormValues) => requests.put(`/Authenticated/Cards/${card.id}`, card),\r\n get: (id: string) => requests.get(`/Authenticated/Cards/${id}`),\r\n getAll: (cardGroupId: string) => requests.get(`/Authenticated/Cards?cardGroupId=${cardGroupId}`),\r\n delete: (id: string) => requests.delete(`/Authenticated/Cards/${id}`),\r\n}\r\n\r\nconst Conversations = {\r\n filter: (query: FilterValues) => requests.get<{ total: number, conversations: Conversation[] }>\r\n (`/Authenticated/Conversations/Filter?pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n get: (id: string) => requests.get(`/Authenticated/Conversations/${id}`),\r\n add: (coversation: PostConversation) => requests.post('/Authenticated/Conversations', coversation),\r\n updateIsRead: (id: string, isReadRequest: { isRead: boolean }) => requests.put(`/Authenticated/Conversations/UpdateIsRead/${id}`, isReadRequest),\r\n updateReadReceipt: (id: string) => requests.put(`/Authenticated/Conversations/UpdateReadReceipt/${id}`, {}),\r\n updateNotificationReceipt: (request: { ids: string[] }) => requests.put(`/Authenticated/Conversations/UpdateMultipleNotificationReceipt/`, request),\r\n\r\n filterEmployeeByConversation: (conversataionId, query: FilterValues) => requests.get<{ total: number, employees: Employee[] }>\r\n (`/Authenticated/Conversations/FilterEmployeesByConversation?conversationId=${conversataionId}&pageNumber=${query.pageNumber}&pageSize=${query.pageSize}&searchKeyword=${query.searchKeyword}`),\r\n getUsersByConverSation: (conversationId: string) => requests.get<{ employees: Employee[] }>(`/Authenticated/Conversations/GetUsersByConversation/${conversationId}`),\r\n addUsersToConversation: (conversationId: string, users: string[]) => requests.post('/Authenticated/Conversations/AddUsersToConversationAsync', { conversationId: conversationId, userIds: users }),\r\n deleteUser: (conversationId: string, userId: string) => requests.delete(`Authenticated/Conversations/DeleteMember/${conversationId}/${userId}`),\r\n\r\n rename: (conversationId: string, conversationName: string) => requests.post('/authenticated/conversations/Rename', {\r\n conversationId: conversationId,\r\n conversationName: conversationName,\r\n }),\r\n}\r\n\r\nconst Messages = {\r\n getAll: (id: string) => requests.get(`/Authenticated/Messages/Conversation/${id}`),\r\n add: (message: PostMessage) => requests.post('/Authenticated/Messages', message),\r\n addMessageAttachment: (content: PostMessageAttachment) => {\r\n let formData = new FormData();\r\n\r\n for (let i = 0; i < content.files.length; i++) {\r\n formData.append(`Files`, content.files[i])\r\n }\r\n for (let i = 0; i < content.receiversId.length; i++) {\r\n formData.append(`receiversId`, content.receiversId[i])\r\n }\r\n\r\n formData.append('Content', content.content);\r\n formData.append('LoadingId', content.loadingId!);\r\n\r\n if (content.conversationId)\r\n formData.append('ConversationId', content.conversationId);\r\n if (content.connectionId)\r\n formData.append('ConnectionId', content.connectionId);\r\n\r\n return requests.upload('/authenticated/messages/attachment', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n}\r\n\r\nconst CardAttachments = {\r\n upload: (file: Blob, cardId: string) => {\r\n let formData = new FormData();\r\n formData.append('File', file);\r\n formData.append('CardId', cardId);\r\n return requests.upload('/Authenticated/CardAttachments', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n uploadMultiple: (files: File[], cardId: string, clientId: string) => {\r\n let formData = new FormData();\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append(`Files`, files[i])\r\n }\r\n formData.append('CardId', cardId);\r\n formData.append('ClientId', clientId);\r\n return requests.upload('/Authenticated/CardAttachments/upload-multiple', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n getAttachment: (id: string, config: AxiosRequestConfig) => requests.get(`Authenticated/CardAttachments/GetBlobAttachment/${id}`, config),\r\n}\r\n\r\nconst CommentAttachments = {\r\n add: (cardId: string, files: File[], message: string, clientId: string) => {\r\n let formData = new FormData();\r\n\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append(`Files`, files[i])\r\n }\r\n\r\n formData.append('Message', message);\r\n formData.append('CardId', cardId);\r\n formData.append('ClientId', clientId);\r\n\r\n return requests.upload('/Authenticated/CardComment', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n update: (cardId: string, commentId: string, files: File[], message: string, clientId: string) => {\r\n let formData = new FormData();\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append(`Files`, files[i])\r\n }\r\n\r\n formData.append('Message', message);\r\n formData.append('CardId', cardId);\r\n formData.append('CommentId', commentId);\r\n formData.append('ClientId', clientId);\r\n\r\n return requests.upload('/Authenticated/CardComment/Update', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n getAttachment: (id: string, config: AxiosRequestConfig) => requests.get(`Authenticated/CardComment/GetBlobAttachment/${id}`, config),\r\n}\r\nconst CardUser = {\r\n getAll: (cardId: string, workSpaceId: string, clientId: string) => requests.get(`Authenticated/carduser/unassigned-members?cardId=${cardId}&workSpaceId=${workSpaceId}&clientId=${clientId}`),\r\n getAllCardMembers: (cardId: string) => requests.get(`Authenticated/CardUser/${cardId}/Users`),\r\n addMultiple: (cardId: string, userIds: string[]) => requests.post('/Authenticated/CardUser/AddMultiple', { cardId: cardId, userIds: userIds }),\r\n delete: (cardId: string, userId: string) => requests.delete(`Authenticated/carduser/remove-member?cardId=${cardId}&userId=${userId}`),\r\n}\r\n\r\nconst CardDate = {\r\n addSchedule: (request) => requests.post('/Authenticated/CardSchedule', request),\r\n getSchedule: (id: string) => requests.get(`Authenticated/CardSchedule/getByCard/${id}`),\r\n deleteSchedule: (id: string) => requests.delete(`Authenticated/cardSchedule/${id}`),\r\n}\r\n\r\nconst ChatAttachments = {\r\n add: (files: File[], message: string) => {\r\n let formData = new FormData();\r\n\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append(`Files`, files[i])\r\n }\r\n\r\n formData.append('Message', message);\r\n\r\n return requests.upload('/Authenticated/Message', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n update: (cardId: string, commentId: string, files: File[], message: string, clientId: string) => {\r\n let formData = new FormData();\r\n for (let i = 0; i < files.length; i++) {\r\n formData.append(`Files`, files[i])\r\n }\r\n\r\n formData.append('Message', message);\r\n formData.append('CardId', cardId);\r\n formData.append('CommentId', commentId);\r\n formData.append('ClientId', clientId);\r\n\r\n return requests.upload('/Authenticated/CardComment/Update', formData, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n });\r\n },\r\n getAttachment: (id: string, config: AxiosRequestConfig) => requests.get(`authenticated/messages/attachment/${id}`, config),\r\n}\r\n\r\nconst Posts = {\r\n getById: (id: string) => requests.get(`Authenticated/Posts/GetAsync/${id}`),\r\n filter: (pageNumber: number, pageSize: number, clientId?: string) => requests.get(`Authenticated/Posts/GetAsync?pageNumber=${pageNumber}&pageSize=${pageSize}&clientId=${clientId}`),\r\n getAttachments: (id: string) => requests.get(`Authenticated/Posts/GetAttachmentsAsync/${id}`),\r\n post: (data: PostForm) => requests.post('Authenticated/Posts/', data),\r\n update: (data: EditPostForm) => requests.put('Authenticated/Posts/' + data.id, data),\r\n getLikes: (postId: string) => requests.get(`/Authenticated/Posts/GetLikesAsync/${postId}`),\r\n getComments: (postId: string) => requests.get(`/Authenticated/Posts/GetCommentsAsync/${postId}`),\r\n delete: (postId: string) => requests.delete(`/Authenticated/Posts/${postId}`),\r\n}\r\n\r\nconst PostAttachments = {\r\n get: (id: string) => requests.get(`Authenticated/PostAttachments/${id}`, { responseType: 'blob' }),\r\n upload: (data: FormData) => requests.upload('Authenticated/PostAttachments/', data, {\r\n headers: { 'Content-type': 'multipart/form-data' }\r\n }),\r\n delete: (id: string) => requests.delete(`Authenticated/PostAttachments/${id}`),\r\n}\r\n\r\nconst PostLikes = {\r\n post: (postId: string) => requests.post(`/Authenticated/PostLikes`, { postId }),\r\n delete: (likeId: string) => requests.delete(`/Authenticated/PostLikes/${likeId}`),\r\n}\r\n\r\nconst PostComments = {\r\n post: (data: { postId: string, message: string }) => requests.post(`/Authenticated/PostComments`, data),\r\n update: (data: { id: string, message: string }) => requests.put(`/Authenticated/PostComments/${data.id}`, data),\r\n delete: (id: string) => requests.delete(`/Authenticated/PostComments/${id}`),\r\n\r\n}\r\n\r\nconst agent = {\r\n Account,\r\n Common,\r\n Employees,\r\n SubClients,\r\n LeaveRequests,\r\n OvertimeRequests,\r\n UndertimeRequests,\r\n DailyReports,\r\n WorkSpaceTypes,\r\n WorkSpaces,\r\n WorkSpaceUsers,\r\n Boards,\r\n DtrSummary,\r\n CardGroups,\r\n Cards,\r\n Conversations,\r\n Messages,\r\n CardAttachments,\r\n CommentAttachments,\r\n ChatAttachments,\r\n CardUser,\r\n CardDate,\r\n Posts,\r\n PostAttachments,\r\n PostLikes,\r\n PostComments\r\n}\r\n\r\nexport default agent;\r\n","import { makeAutoObservable, reaction, runInAction } from 'mobx';\r\nimport { HubConnection, HubConnectionBuilder, LogLevel } from '@microsoft/signalr';\r\nimport agent from '../api/agents';\r\nimport { Option } from '../models/option'\r\nimport { store } from './store';\r\nimport { ScheduleNotification } from '../models/scheduleNotification';\r\n\r\nexport default class CommonStore {\r\n hubConnection: HubConnection | null = null;\r\n scheduleURL = process.env.REACT_APP_SCHEDULE_URL;\r\n connectionId = \"\";\r\n appLoaded = false;\r\n isCollapseSideBar = false;\r\n subNavId: number | undefined = 0;\r\n genders: Option[] = [];\r\n nationalities: Option[] = [];\r\n civilStatuses: Option[] = [];\r\n departments: Option[] = [];\r\n notification: ScheduleNotification | undefined;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n get getGenders() {\r\n if (this.genders.length != 0)\r\n return this.genders.map(g => { return { text: g.name, value: g.id } })\r\n return this.genders;\r\n }\r\n\r\n get getNationalities() {\r\n if (this.nationalities.length != 0)\r\n return this.nationalities.map(g => { return { text: g.name, value: g.id } })\r\n return this.nationalities;\r\n }\r\n\r\n get getCivilStatuses() {\r\n if (this.civilStatuses.length != 0)\r\n return this.civilStatuses.map(g => { return { text: g.name, value: g.id } })\r\n return this.civilStatuses;\r\n }\r\n\r\n get getDepartments() {\r\n if (this.departments.length != 0)\r\n return this.departments.map(g => { return { text: g.name, value: g.id } })\r\n return [];\r\n }\r\n\r\n createHubConnection = () => {\r\n this.hubConnection = new HubConnectionBuilder()\r\n .withUrl(this.scheduleURL + '', {\r\n accessTokenFactory: () => store.authStore.token!,\r\n })\r\n .withAutomaticReconnect()\r\n .configureLogging(LogLevel.Information)\r\n .build();\r\n\r\n this.hubConnection?.start().catch(e => console.log(e));\r\n\r\n this.hubConnection.on('ReceiveNotification', (notification) => {\r\n runInAction(() => {\r\n this.notification = notification;\r\n })\r\n })\r\n }\r\n\r\n stopHubConnection = () => {\r\n this.hubConnection?.stop().catch((error) => console.log(\"Error stopping connection: \", error));\r\n };\r\n\r\n loadGenders = async () => {\r\n try {\r\n const genders = await agent.Common.loadGenders();\r\n runInAction(() => {\r\n this.genders = genders;\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n loadNationalities = async () => {\r\n try {\r\n const nationalities = await agent.Common.loadNationalities();\r\n runInAction(() => {\r\n this.nationalities = nationalities;\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n loadCivilStatuses = async () => {\r\n try {\r\n const civilStatuses = await agent.Common.loadCivilStatuses();\r\n runInAction(() => {\r\n this.civilStatuses = civilStatuses;\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n loadDepartments = async () => {\r\n try {\r\n const departments = await agent.Common.loadDepartments();\r\n runInAction(() => {\r\n this.departments = departments;\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n\r\n setAppLoaded = () => {\r\n this.appLoaded = true;\r\n }\r\n\r\n toggleSidebar = () => {\r\n this.isCollapseSideBar = !this.isCollapseSideBar;\r\n }\r\n\r\n setSideBar = (state: boolean) => this.isCollapseSideBar = state;\r\n\r\n setSubNav = (id?: number) => {\r\n if (id == this.subNavId || id === 0)\r\n this.subNavId = 0;\r\n else\r\n this.subNavId = id;\r\n };\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport { history } from \"../..\";\r\nimport agent from '../api/agents';\r\nimport { ResetPasswordFormValues, User } from \"../models/user\";\r\n\r\n\r\nexport default class UserStore {\r\n user: User | null = null;\r\n displayName: string = '';\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n get isLoggedIn() {\r\n return !!this.user;\r\n }\r\n\r\n setDisplayName = (user: User) => {\r\n if (this.user != null)\r\n this.displayName = `${user?.firstName} ${user?.lastName}`\r\n }\r\n\r\n forgotPassword = async (creds: { username: string }) => {\r\n try {\r\n await agent.Account.forgotPassword(creds);\r\n toast.success(\"Check your email for instructions on how to reset your password.\");\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n resetPassword = async (credentials: ResetPasswordFormValues) => {\r\n try {\r\n await agent.Account.resetPassword(credentials);\r\n toast.success(\"You have successfully reset your password.\");\r\n history.push('/login');\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n getUser = async () => {\r\n try {\r\n const user = await agent.Account.current();\r\n runInAction(() => {\r\n this.user = user\r\n this.setDisplayName(user);\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n getProfilePicture = async (id: string) => {\r\n try {\r\n return await agent.Account.getProfilePhoto(id, {\r\n responseType: 'blob'\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport agent from '../api/agents';\r\nimport DateHelper from '../helpers/dateHelper';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { Department, Education, Employee, EmployeeFilterValues, Schedule, WorkExperience } from '../models/employee';\r\nimport { DailyReport } from '../models/employeeDailyReport';\r\nimport { history } from '../../index';\r\nimport { toast } from 'react-toastify';\r\nimport { TimeRecord } from '../models/timeRecord';\r\nimport { OptionSelect } from '../models/option';\r\n\r\nconst _dateHelper = new DateHelper();\r\n\r\nexport default class EmployeeStore {\r\n employees: Employee[] = [];\r\n employeesDepartment: Employee[] = [];\r\n departments: Department[] = [];\r\n total: number = 0;\r\n loadingInitial = false;\r\n isLoading = false;\r\n filterValues: EmployeeFilterValues = {\r\n pageNumber: 1, pageSize: 10, searchKeyword: \"\",\r\n departments: []\r\n };\r\n\r\n //EmployeeDetails\r\n employee: Employee | undefined;\r\n workExperiences: WorkExperience[] | undefined;\r\n educationRecords: Education[] | undefined;\r\n schedule: Schedule | undefined;\r\n isEmployeeLoaded = false;\r\n\r\n searchingEmployee = false;\r\n searchedEmployees: Employee[] = [];\r\n\r\n dailyReports: DailyReport[] | undefined;\r\n dailyReportsTotal: number = 0;\r\n isDailyReportLoaded = false;\r\n\r\n timeRecords: TimeRecord[] | undefined;\r\n timeRecordTotal: number = 0;\r\n isTimeRecordsLoaded = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n get pageNumber() {\r\n return this.filterValues.pageNumber ? this.filterValues.pageNumber - 1 : 0;\r\n }\r\n\r\n get pivotSchedule() {\r\n if (this.schedule) {\r\n return [{\r\n day: 'Monday',\r\n startTime: this.schedule.mondayWorkingDay ? _dateHelper.getLocalTime(this.schedule.mondayStart) : '--',\r\n endTime: this.schedule.mondayWorkingDay ? _dateHelper.getLocalTime(this.schedule.mondayEnd) : '--'\r\n }, {\r\n day: 'Tuesday',\r\n startTime: this.schedule.tuesdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.tuesdayStart) : '--',\r\n endTime: this.schedule.tuesdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.tuesdayEnd) : '--'\r\n }, {\r\n day: 'Wednesday',\r\n startTime: this.schedule.wednesdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.wednesdayStart) : '--',\r\n endTime: this.schedule.wednesdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.wednesdayEnd) : '--'\r\n }, {\r\n day: 'Thursday',\r\n startTime: this.schedule.thursdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.thursdayStart) : '--',\r\n endTime: this.schedule.thursdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.thursdayEnd) : '--'\r\n }, {\r\n day: 'Friday',\r\n startTime: this.schedule.fridayWorkingDay ? _dateHelper.getLocalTime(this.schedule.fridayStart) : '--',\r\n endTime: this.schedule.fridayWorkingDay ? _dateHelper.getLocalTime(this.schedule.fridayEnd) : '--'\r\n }, {\r\n day: 'Saturday',\r\n startTime: this.schedule.saturdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.saturdayStart) : '--',\r\n endTime: this.schedule.saturdayWorkingDay ? _dateHelper.getLocalTime(this.schedule.saturdayEnd) : '--'\r\n }, {\r\n day: 'Sunday',\r\n startTime: this.schedule.sundayWorkingDay ? _dateHelper.getLocalTime(this.schedule.sundayStart) : '--',\r\n endTime: this.schedule.sundayWorkingDay ? _dateHelper.getLocalTime(this.schedule.sundayEnd) : '--'\r\n }];\r\n }\r\n\r\n }\r\n\r\n loadEmployees = async (filters: FilterValues) => {\r\n \r\n this.setLoading(true);\r\n try {\r\n const { total, employees } = await agent.Employees.filter(filters);\r\n \r\n runInAction(() => {\r\n this.employees = employees;\r\n this.employeesDepartment = employees;\r\n \r\n this.total = total;\r\n });\r\n this.setLoading(false);\r\n } catch (error) {\r\n console.error(error);\r\n this.setLoading(false);\r\n }\r\n }\r\n loadAllDepartment = async () => {\r\n \r\n this.setLoading(true);\r\n try {\r\n const { total, department } = await agent.Employees.getAllDepartment();\r\n \r\n runInAction(() => {\r\n this.departments = department;\r\n });\r\n this.setLoading(false);\r\n } catch (error) {\r\n console.error(error);\r\n this.setLoading(false);\r\n }\r\n }\r\n\r\n\r\n loadEmployeesListByDepartment = async (filters: EmployeeFilterValues) => {\r\n this.setLoading(true);\r\n try {\r\n const { total, employees } = await agent.Employees.filterByDepartment(filters);\r\n runInAction(() => {\r\n this.employees = employees;\r\n this.total = total;\r\n });\r\n this.setLoading(false);\r\n } catch (error) {\r\n console.error(error);\r\n this.setLoading(false);\r\n }\r\n }\r\n\r\n\r\n get userOptionValues(): OptionSelect[] {\r\n if (this.departments.length) {\r\n let sortedByName = this.departments.slice(0);\r\n let unique:any = []\r\n for (let char of sortedByName) {\r\n let check = unique.find(e => JSON.stringify(e) == JSON.stringify(char))\r\n if (!check) {\r\n unique.push(char)\r\n }\r\n }\r\n return unique.map(e => {\r\n return { value: e.department.id, label: e.department.name } as OptionSelect\r\n });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n loadEmployee = async (userId: string) => {\r\n this.isEmployeeLoaded = false;\r\n try {\r\n const employeePersonalInfo = await agent.Employees.loadPersonalDetails(userId);\r\n const workExperiences = await agent.Employees.loadWorkExperiences(userId);\r\n const educationRecords = await agent.Employees.loadEducationRecords(userId);\r\n const schedule = await agent.Employees.loadSchedule(userId);\r\n runInAction(() => {\r\n this.employee = employeePersonalInfo;\r\n this.workExperiences = workExperiences;\r\n this.educationRecords = educationRecords;\r\n this.schedule = schedule;\r\n this.isEmployeeLoaded = true;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isEmployeeLoaded = false;\r\n toast.error('Cannot load employee.');\r\n history.push('/employees');\r\n }\r\n }\r\n\r\n searchEmployee = async (search: string) => {\r\n this.searchingEmployee = true;\r\n\r\n try {\r\n const { total, employees } = await agent.Employees.filter({\r\n searchKeyword: search,\r\n pageSize: 0,\r\n pageNumber: 0\r\n });\r\n runInAction(() => {\r\n employees.map(e => {\r\n if (!this.searchedEmployees.find(s => s.id == e.id)) {\r\n this.searchedEmployees.push(e);\r\n }\r\n });\r\n this.searchingEmployee = false;\r\n });\r\n } catch (error) {\r\n this.searchingEmployee = false;\r\n }\r\n }\r\n\r\n loadEmployeeDailyReports = async (filterValues: FilterValues) => {\r\n this.isDailyReportLoaded = false;\r\n try {\r\n const { total, data } = await agent.Employees.filterDailyReports({\r\n id: filterValues.id,\r\n pageNumber: filterValues.pageNumber,\r\n pageSize: filterValues.pageSize,\r\n searchKeyword: filterValues.searchKeyword\r\n });\r\n runInAction(() => {\r\n this.dailyReports = data;\r\n this.dailyReportsTotal = total;\r\n this.isDailyReportLoaded = true;\r\n });\r\n\r\n } catch (error) {\r\n console.error(error);\r\n this.isDailyReportLoaded = true;\r\n }\r\n }\r\n\r\n loadEmployeeDTR = async (filterValues: FilterValues) => {\r\n this.isTimeRecordsLoaded = false;\r\n try {\r\n const { total, data } = await agent.Employees.filterDTR(filterValues);\r\n runInAction(() => {\r\n this.timeRecords = data;\r\n this.timeRecordTotal = total;\r\n this.isTimeRecordsLoaded = true;\r\n });\r\n\r\n } catch (error) {\r\n console.error(error);\r\n this.isTimeRecordsLoaded = true;\r\n }\r\n }\r\n\r\n setLoadingInitial = (state: boolean) => {\r\n this.loadingInitial = state;\r\n }\r\n\r\n setLoading = (state: boolean) => {\r\n this.isLoading = state;\r\n }\r\n\r\n reset = () => {\r\n this.searchingEmployee = false;\r\n this.searchedEmployees = [];\r\n }\r\n\r\n}","import { makeAutoObservable, reaction, runInAction } from 'mobx';\r\nimport { history } from \"../..\";\r\nimport agent from '../api/agents';\r\nimport CookieHelper from '../helpers/cookieHelper';\r\nimport { UserFormValues } from \"../models/user\";\r\nimport { store } from \"./store\";\r\nimport jwt_decode from \"jwt-decode\";\r\nimport { JsonWebToken } from '../models/authorization';\r\n\r\nconst _cookieHelper = new CookieHelper();\r\n\r\nexport default class AuthStore {\r\n token: string | null = _cookieHelper.get('jsonWebToken') || null;\r\n refreshToken: string | null = _cookieHelper.get('refreshToken') || null;\r\n refreshTokenTimeout: any;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n\r\n reaction(\r\n () => this.token,\r\n token => {\r\n if (token) {\r\n _cookieHelper.set('jsonWebToken', token);\r\n }\r\n else {\r\n _cookieHelper.delete('jsonWebToken');\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.refreshToken,\r\n token => {\r\n if (token) {\r\n _cookieHelper.set('refreshToken', token);\r\n }\r\n else {\r\n _cookieHelper.delete('refreshToken');\r\n }\r\n }\r\n );\r\n }\r\n\r\n //THIS IS COMPUTED WHENEVER USER ACCESS A PRIVATE PAGE\r\n get roles(): string[] {\r\n if (!this.token)\r\n return [];\r\n\r\n let decoded = jwt_decode(this.token);\r\n\r\n //THIS IS FOR THE MICROSOFT CLAIM ROLE\r\n let microsoftRole = decoded['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'];\r\n\r\n if (!decoded.role && !microsoftRole)\r\n return [];\r\n\r\n if (decoded.role) {\r\n if (typeof decoded.role === 'string')\r\n return [decoded.role];\r\n else\r\n return decoded.role;\r\n }else {\r\n if (typeof microsoftRole === 'string')\r\n return [microsoftRole];\r\n else\r\n return microsoftRole as string[];\r\n }\r\n }\r\n\r\n setRefreshToken = (refreshToken: string | null) => {\r\n this.refreshToken = refreshToken;\r\n }\r\n\r\n setToken = (token: string | null) => {\r\n this.token = token;\r\n }\r\n\r\n login = async (creds: UserFormValues) => {\r\n try {\r\n const accessToken = await agent.Account.login(creds);\r\n this.setToken(accessToken.jsonWebToken!);\r\n const user = await agent.Account.current();\r\n this.startRefreshTokenTimer();\r\n runInAction(() => {\r\n this.setRefreshToken(accessToken.refreshToken);\r\n store.userStore.user = user;\r\n store.userStore.setDisplayName(user);\r\n store.commonStore.isCollapseSideBar = false;\r\n store.commonStore.stopHubConnection();\r\n store.commonStore.createHubConnection();\r\n history.push('/');\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n logout = () => {\r\n this.setToken(null);\r\n this.setRefreshToken(null);\r\n _cookieHelper.delete('jsonWebToken');\r\n this.resetStates();\r\n store.postStore.resetPosts();\r\n history.push('/');\r\n }\r\n\r\n refreshTheToken = async () => {\r\n try {\r\n const accessToken = await agent.Account.refreshToken({\r\n jsonWebToken: this.token!,\r\n refreshToken: this.refreshToken!\r\n });\r\n\r\n runInAction(() => {\r\n this.setToken(accessToken.jsonWebToken!);\r\n this.setRefreshToken(accessToken.refreshToken!);\r\n this.startRefreshTokenTimer();\r\n })\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n startRefreshTokenTimer() {\r\n if (this.token) {\r\n const jwtToken = JSON.parse(atob(this.token!?.split('.')[1]));\r\n const expires = new Date(jwtToken.exp * 1000);\r\n const timeout = expires.getTime() - Date.now() - (30 * 1000);\r\n this.refreshTokenTimeout = setTimeout(this.refreshTheToken, timeout);\r\n }\r\n }\r\n\r\n private stopRefreshTokenTimer() {\r\n clearTimeout(this.refreshTokenTimeout);\r\n }\r\n\r\n private resetStates = () => {\r\n store.chatStore.newMessageOpen = false;\r\n store.chatStore.newGroupMessageOpen = false;\r\n store.popOverStore.closePopover();\r\n store.messageStore.setMessages([]);\r\n store.chatStore.hideMessageBox();\r\n store.userStore.user = null;\r\n store.chatStore.stopHubConnection();\r\n store.commonStore.stopHubConnection();\r\n store.boardStore.stopHubConnection();\r\n }\r\n}","export default class CookieHelper {\r\n webUrl = process.env.REACT_APP_WEB_URL ? `domain=${process.env.REACT_APP_WEB_URL};` : '';\r\n\r\n get = (name: string) => {\r\n let cookies: any = document.cookie\r\n .split(';')\r\n .map(cookie => cookie.split('='))\r\n .reduce((accumulator, [key, value]) =>\r\n ({ ...accumulator, [key.trim()]: decodeURIComponent(value) }), {});\r\n\r\n return cookies[name];\r\n }\r\n\r\n set = (name: string, value: string) => {\r\n let cookie = `${name}=${value};`;\r\n let hostName = window.location.hostname.split('.'),\r\n domain = hostName[1] + '.' + hostName[2];\r\n\r\n if (hostName[1] && hostName[2])\r\n cookie += `domain=${domain};`\r\n else\r\n cookie += `domain=${window.location.hostname};`\r\n\r\n cookie += 'path=/';\r\n\r\n document.cookie = cookie;\r\n }\r\n\r\n delete = (name: string) => {\r\n let cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC;`;\r\n let hostName = window.location.hostname.split('.'),\r\n domain = hostName[1] + '.' + hostName[2];\r\n\r\n if (hostName[1] && hostName[2])\r\n cookie += `domain=${domain};`\r\n else\r\n cookie += `domain=${window.location.hostname};`\r\n\r\n cookie += 'path=/';\r\n\r\n document.cookie = cookie;\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport moment from 'moment';\r\nimport { MultiValue } from 'react-select';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { Employee } from '../models/employee';\r\nimport { DailyReport, DailyReportFilterValues } from '../models/employeeDailyReport';\r\nimport { OptionSelect } from '../models/option';\r\n\r\nexport default class DailyReportStore {\r\n dailyReports: DailyReport[] = [];\r\n dailyReportsTotal: number = 0;\r\n isDailyReportListLoading: boolean = false;\r\n isInitialLoading: boolean = false;\r\n\r\n userEmployees: Employee[] = [];\r\n isLoadingUserEmployees: boolean = false;\r\n currentUserIds: MultiValue<{ value: string }> = [];\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n get userOptionValues(): OptionSelect[] {\r\n if (this.userEmployees.length) {\r\n let sortedByName = this.userEmployees.slice(0);\r\n return sortedByName\r\n .sort(function (a, b) {\r\n var x = a.firstName.toLowerCase();\r\n var y = b.firstName.toLowerCase();\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n })\r\n .map(e => { return { value: e.id, label: e.name } as OptionSelect });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n filterDailyReports = async (filters: DailyReportFilterValues, isInitial?: boolean) => {\r\n if (isInitial) this.isInitialLoading = true;\r\n this.isDailyReportListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.DailyReports.filter(filters);\r\n runInAction(() => {\r\n this.dailyReports = data;\r\n this.dailyReportsTotal = total;\r\n this.isDailyReportListLoading = false;\r\n this.isInitialLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isDailyReportListLoading = false;\r\n this.isInitialLoading = false;\r\n }\r\n }\r\n\r\n\r\n loadUserEmployees = async (search: string) => {\r\n this.isLoadingUserEmployees = true;\r\n\r\n try {\r\n const { total, employees } = await agent.Employees.filterEmployeesSelectedDetails({\r\n searchKeyword: search,\r\n pageSize: 0,\r\n pageNumber: 0\r\n });\r\n\r\n runInAction(() => {\r\n this.userEmployees = employees;\r\n this.isLoadingUserEmployees = false;\r\n });\r\n } catch (error) {\r\n this.isLoadingUserEmployees = false;\r\n }\r\n }\r\n\r\n setCurrentUserIds = (userIds: MultiValue<{ value: string }>) => {\r\n this.currentUserIds = userIds;\r\n }\r\n\r\n reset = () => {\r\n this.dailyReports = [];\r\n this.dailyReportsTotal = 0;\r\n this.userEmployees = [];\r\n this.currentUserIds = [];\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { WorkSpaceUser, WorkSpaceUserFormValues } from '../models/workSpaceUser';\r\nimport { history } from '../../index';\r\nimport { Employee } from '../models/employee';\r\nimport { OptionSelect } from '../models/option';\r\nimport { User } from '../models/user';\r\nimport hi from 'date-fns/esm/locale/hi/index';\r\n\r\nexport default class WorkSpaceUserStore {\r\n workSpaceUsers: WorkSpaceUser[] = [];\r\n users: User[] = [];\r\n workSpaceUsersTotal: number = 0;\r\n isListLoading: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n clientEmployees: Employee[] = [];\r\n nonMembers: Employee[] = [];\r\n isLoadingClientEmployees: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n get memberOptionValues(): OptionSelect[] {\r\n if (this.nonMembers.length) {\r\n return this.nonMembers\r\n .map(e => { return { value: e.id, label: e.name } as OptionSelect });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n filterWorkSpaceUsers = async (filters: FilterValues) => {\r\n this.setLoading(true);\r\n\r\n try {\r\n const { total, data } = await agent.WorkSpaceUsers.filter(filters);\r\n runInAction(() => {\r\n this.users = data.map(w => {return w.user});\r\n this.workSpaceUsersTotal = total;\r\n });\r\n this.setLoading(false);\r\n \r\n } catch (e) {\r\n console.log(e);\r\n this.setLoading(false);\r\n }\r\n }\r\n\r\n loadWorkSpaceUser = async (id: string) => {\r\n this.isLoading = true;\r\n\r\n try {\r\n let workSpaceUser = await agent.WorkSpaceUsers.get(id);\r\n this.isLoading = false;\r\n return workSpaceUser;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (workSpaceUser: WorkSpaceUserFormValues) => {\r\n try {\r\n const workSpaceUserId = await agent.WorkSpaceUsers.add(workSpaceUser);\r\n runInAction(() => {\r\n if (workSpaceUserId) {\r\n toast.success('Workspace was created successfully.');\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n addMultiple = async (workSpaceId: string, userIds: string[]) => {\r\n try {\r\n await agent.WorkSpaceUsers.addMultiple(workSpaceId, userIds);\r\n runInAction(() => {\r\n return Promise.resolve;\r\n });\r\n } catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n update = async (workSpaceUser: WorkSpaceUserFormValues) => {\r\n try {\r\n const workSpaceUserId = await agent.WorkSpaceUsers.update(workSpaceUser);\r\n runInAction(() => {\r\n if (workSpaceUserId) {\r\n toast.success('Workspace was updated successfully.');\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n deleteWorkSpaceUser = async (memberId: string, workSpaceId: string, filters: FilterValues) => {\r\n try {\r\n await agent.WorkSpaceUsers.deleteUserWorkSpace(memberId, workSpaceId);\r\n this.filterWorkSpaceUsers(filters);\r\n runInAction(() => {\r\n toast.success('Member was removed successfully.');\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n loadMembers = async (search: string) => {\r\n this.isLoadingClientEmployees = true;\r\n\r\n try {\r\n const { total, employees } = await agent.Employees.filterEmployeesSelectedDetails({\r\n searchKeyword: search,\r\n pageSize: 0,\r\n pageNumber: 0\r\n });\r\n \r\n runInAction(() => {\r\n employees.map(e => {\r\n if (!this.clientEmployees.find(s => s.id == e.id)) {\r\n this.clientEmployees.push(e);\r\n }\r\n });\r\n this.isLoadingClientEmployees = false;\r\n });\r\n } catch (error) {\r\n this.isLoadingClientEmployees = false;\r\n }\r\n }\r\n loadNonMembers = async (workspaceId: string) => {\r\n this.isLoadingClientEmployees = true;\r\n\r\n try {\r\n const { total, employees } = await agent.Employees.getNonWorkspaceMembers(workspaceId);\r\n runInAction(() => {\r\n this.nonMembers= employees;\r\n this.isLoadingClientEmployees = false;\r\n });\r\n } catch (error) {\r\n this.isLoadingClientEmployees = false;\r\n }\r\n }\r\n\r\n reset = () => {\r\n this.workSpaceUsers = [];\r\n this.workSpaceUsersTotal = 0;\r\n this.clientEmployees = [];\r\n this.isLoadingClientEmployees = false;\r\n }\r\n setLoading = (state: boolean) => {\r\n this.isListLoading = state;\r\n }\r\n}","import { HubConnection, HubConnectionBuilder, LogLevel } from '@microsoft/signalr';\r\nimport { makeAutoObservable, runInAction } from 'mobx';\r\nimport { MultiValue } from 'react-select';\r\nimport agent from '../api/agents';\r\nimport { AddUsersToConversation, Conversation } from '../models/conversation';\r\nimport { Employee } from '../models/employee';\r\nimport { Message } from '../models/message';\r\nimport { OptionSelect } from '../models/option';\r\nimport { User } from '../models/user';\r\nimport { store } from './store';\r\n\r\nexport default class ChatStore {\r\n hubConnection: HubConnection | null = null;\r\n charUrl = process.env.REACT_APP_CHAT_URL;\r\n connectionId = \"\";\r\n\r\n contacts: User[] = [];\r\n employeesByConversation: User[] = [];\r\n employeesOnSelectedConversation: User[] = [];\r\n isContactsLoading: boolean = false;\r\n isEmployeesByConversationLoading: boolean = false;\r\n isEmployeesOnSelectedConversationLoading: boolean = false;\r\n selectedOption: MultiValue<{ value: string }> = [];\r\n\r\n isLoading = false;\r\n messageBoxShow = false;\r\n newMessageOpen = false;\r\n newGroupMessageOpen = false;\r\n isChatShow = false;\r\n selectedUser = \"\";\r\n selectedUsers: string[] = [];\r\n messageContent = \"\";\r\n groupName = \"\";\r\n isValidating = false;\r\n unReadConversationIds: string[] = [];\r\n notificationCount: number = 0;\r\n hasBackgroundColor: boolean = true;\r\n isDeletingMember = false;\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n createHubConnection = () => {\r\n this.hubConnection = new HubConnectionBuilder()\r\n .withUrl(this.charUrl + '', {\r\n accessTokenFactory: () => store.authStore.token!,\r\n })\r\n .withAutomaticReconnect()\r\n .configureLogging(LogLevel.Information)\r\n .build();\r\n\r\n this.hubConnection?.start().catch(e => console.log(e));\r\n\r\n this.hubConnection.on('RecieveConnectionId', (connectionId: string) => {\r\n this.connectionId = connectionId;\r\n })\r\n this.hubConnection.on('ReceiveOnUpdateConversationName', (conversation) => {\r\n store.conversationStore.selectedConversation!.name = conversation.name\r\n store.conversationStore.loadMoreConversation({ pageNumber: 0, pageSize: 0, searchKeyword: \"\" });\r\n });\r\n this.hubConnection.on('ReceiveOnRemove', (conversation) => {\r\n store.conversationStore.conversations = store.conversationStore.conversations.filter(c => {\r\n if (c.id != conversation.id) {\r\n return c;\r\n }\r\n });\r\n if (conversation.id == store.conversationStore.selectedConversation?.id) {\r\n this.hideMessageBox()\r\n store.messageStore.setMessages([]);\r\n }\r\n \r\n \r\n });\r\n this.hubConnection.on('ReceiveAddedToConversation', (conversation) => {\r\n store.conversationStore.loadMoreConversation({ pageNumber: 0, pageSize: 0, searchKeyword: \"\" });\r\n\r\n });\r\n this.hubConnection.on('ReceiveOnUpdate', (conversation) => {\r\n this.getUsersByConverSation(conversation.id);\r\n });\r\n\r\n this.hubConnection.on(\"ReceiveMessage\", (message: Message) => {\r\n if (message.senderId != store.userStore.user?.id) {\r\n store.conversationStore.loadMoreConversation({ pageNumber: 0, pageSize: 0, searchKeyword: \"\" });\r\n }\r\n runInAction(() => {\r\n const conversation = store.conversationStore.conversations.find(c => c.id === message.conversationId);\r\n\r\n if (conversation) {\r\n store.conversationStore.conversations = [{\r\n ...conversation,\r\n isReadByReceiver: message.senderId == store.userStore.user?.id,\r\n recentMessage: {\r\n content: message.content,\r\n date: message.createdAt,\r\n sender: message.sender,\r\n senderId: message.senderId,\r\n createdAt: message.createdAt,\r\n localTime: message.localTime,\r\n sentDate: message.sentDate,\r\n sentTime: message.sentTime,\r\n },\r\n readReceiptUserIds: message.readReceiptUserIds!,\r\n notifiedReceiptUserIds: message.notifiedReceiptUserIds!\r\n }, ...store.conversationStore.conversations.filter(c => c.id !== message.conversationId)] as Conversation[];\r\n\r\n let currentMessages = store.messageStore.messages;\r\n if (message.senderId == store.userStore.user?.id) {\r\n store.messageStore.messages = store.messageStore.messages.filter(m => {\r\n if (!(m.loadingId == message.loadingId)) {\r\n return m;\r\n }\r\n }) as Message[];\r\n }\r\n \r\n \r\n \r\n \r\n if (currentMessages.length && currentMessages[0].conversationId === message.conversationId) {\r\n store.messageStore.messages = [...store.messageStore.messages,\r\n {\r\n ...message,\r\n isMyMessage: store.userStore.user?.id === message.senderId,\r\n isMessageUploading: false,\r\n }];\r\n\r\n store.messageStore.updateIsRead(message.conversationId!, store.userStore.user!.id);\r\n store.conversationStore.updateNotificationReceipt([message.conversationId!], store.userStore.user!.id);\r\n }\r\n\r\n if (this.unReadConversationIds.indexOf(message.conversationId!) == -1)\r\n this.unReadConversationIds = [...this.unReadConversationIds, message.conversationId!]\r\n }\r\n \r\n });\r\n \r\n });\r\n\r\n this.hubConnection.on(\"ReceiveConversation\", (conversation: Conversation) => {\r\n store.conversationStore.conversations = [\r\n conversation,\r\n ...store.conversationStore.conversations\r\n ]\r\n this.addConvesationIdToSession(conversation.id);\r\n });\r\n\r\n }\r\n\r\n stopHubConnection = () => {\r\n this.hubConnection?.stop().catch((error) => console.log(\"Error stopping connection: \", error));\r\n };\r\n\r\n\r\n addConvesationIdToSession = async (conversationId: string) => {\r\n try {\r\n this.hubConnection?.invoke(\"AddConversationToSessionAsync\", conversationId);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n showMessageBox = () => {\r\n this.messageBoxShow = true;\r\n }\r\n\r\n hideMessageBox = () => {\r\n this.messageBoxShow = false;\r\n }\r\n\r\n setMessageContent = (value: string) => {\r\n this.messageContent = value;\r\n }\r\n\r\n setGroupName = (value: string) => {\r\n this.groupName = value;\r\n }\r\n\r\n setSelectedUser = (value: string) => {\r\n this.selectedUser = value;\r\n }\r\n\r\n setSelectedUsers = (value: string[]) => {\r\n this.selectedUsers = value;\r\n }\r\n\r\n setIsValidating = (state: boolean) => {\r\n this.isValidating = state;\r\n }\r\n\r\n setNewMessageOpen = (state: boolean) => {\r\n this.newMessageOpen = state;\r\n this.selectedUser = \"\";\r\n this.messageContent = \"\";\r\n this.isValidating = false;\r\n }\r\n\r\n setGroupNewMessageOpen = (state: boolean) => {\r\n this.newGroupMessageOpen = state;\r\n this.selectedUser = \"\";\r\n this.selectedUsers = [];\r\n this.messageContent = \"\";\r\n this.groupName = \"\";\r\n this.isValidating = false;\r\n this.setSelectedOption([]);\r\n }\r\n\r\n toggleChatBox = () => {\r\n this.isChatShow = !this.isChatShow;\r\n }\r\n\r\n showChatBox = () => {\r\n this.isChatShow = true;\r\n }\r\n\r\n hideChatBox = () => {\r\n this.isChatShow = false;\r\n }\r\n\r\n setNotificationCount = (value: number) => {\r\n this.notificationCount = value;\r\n }\r\n\r\n loadContacts = async (search?: string) => {\r\n this.isContactsLoading = true;\r\n\r\n try {\r\n const { total, employees } = await agent.Employees.filter({\r\n searchKeyword: search ? search : '',\r\n pageSize: 0,\r\n pageNumber: 0\r\n });\r\n runInAction(() => {\r\n //THIS WILL BE UPDATED TO USER UPON IMPLEMENTING SUBCLIENT MODULES.\r\n this.contacts = employees.map(e => {\r\n return {\r\n id: e.id,\r\n firstName: e.firstName,\r\n lastName: e.lastName,\r\n hasProfilePicture: e.hasProfilePicture,\r\n name: e.name,\r\n } as User\r\n });\r\n this.isContactsLoading = false;\r\n });\r\n } catch (error) {\r\n this.isContactsLoading = false;\r\n }\r\n }\r\n loadEmployeesByConversationId = async (conversationId, search?: string) => {\r\n if (conversationId != null) {\r\n this.isEmployeesByConversationLoading = true;\r\n\r\n try {\r\n const { total, employees } = await agent.Conversations.filterEmployeeByConversation(conversationId, {\r\n searchKeyword: search ? search : '',\r\n pageSize: 0,\r\n pageNumber: 0\r\n });\r\n runInAction(() => {\r\n //THIS WILL BE UPDATED TO USER UPON IMPLEMENTING SUBCLIENT MODULES.\r\n this.employeesByConversation = employees.map(e => {\r\n return {\r\n id: e.id,\r\n firstName: e.firstName,\r\n lastName: e.lastName,\r\n hasProfilePicture: e.hasProfilePicture,\r\n name: e.name,\r\n } as User\r\n });\r\n this.isEmployeesByConversationLoading = false;\r\n });\r\n } catch (error) {\r\n this.isEmployeesByConversationLoading = false;\r\n }\r\n }\r\n \r\n }\r\n getUsersByConverSation = async (conversationId) => {\r\n if (conversationId != null) {\r\n this.isEmployeesOnSelectedConversationLoading = true;\r\n try {\r\n const { employees } = await agent.Conversations.getUsersByConverSation(conversationId);\r\n runInAction(() => {\r\n //THIS WILL BE UPDATED TO USER UPON IMPLEMENTING SUBCLIENT MODULES.\r\n this.employeesOnSelectedConversation = employees.map(e => {\r\n return {\r\n id: e.id,\r\n firstName: e.firstName,\r\n lastName: e.lastName,\r\n hasProfilePicture: e.hasProfilePicture,\r\n name: e.name,\r\n } as User\r\n });\r\n this.isEmployeesOnSelectedConversationLoading = false;\r\n });\r\n } catch (error) {\r\n this.isEmployeesOnSelectedConversationLoading = false;\r\n }\r\n }\r\n \r\n }\r\n addUsersToConversation = async (conversationId : string, users: string[]) => {\r\n \r\n try {\r\n let data = await agent.Conversations.addUsersToConversation(conversationId, users);\r\n runInAction(() => {\r\n \r\n });\r\n return Promise.resolve(data);\r\n } catch (e) {\r\n console.error(e);\r\n \r\n return Promise.reject(e);\r\n }\r\n }\r\n rename = async (conversationId: string, conversationName: string) => {\r\n\r\n try {\r\n let data = await agent.Conversations.rename(conversationId, conversationName);\r\n runInAction(() => {\r\n\r\n });\r\n return Promise.resolve(data);\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return Promise.reject(e);\r\n }\r\n }\r\n deleteMember = async (conversationId: string, userId: string) => {\r\n this.isDeletingMember = true;\r\n try {\r\n await agent.Conversations.deleteUser(conversationId, userId);\r\n runInAction(() => {\r\n this.isDeletingMember = false;\r\n });\r\n \r\n } catch (e) {\r\n console.error(e);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n get contactsOptionValues(): OptionSelect[] {\r\n if (this.contacts.length) {\r\n return this.contacts.map(e => { return { value: e.id, label: e.name } as OptionSelect });\r\n } else {\r\n return [];\r\n }\r\n }\r\n get employeesIncludedOnConversation() {\r\n let hasBackGroundColor = false;\r\n if (this.employeesOnSelectedConversation.length) {\r\n return this.employeesOnSelectedConversation.map(e => { hasBackGroundColor = !hasBackGroundColor; return { id: e.id, hasPhoto: e.hasProfilePicture, name: e.name, hasBg: hasBackGroundColor } });\r\n } else {\r\n return [];\r\n }\r\n }\r\n get employeessOptionValues(): OptionSelect[] {\r\n if (this.contacts.length) {\r\n return this.employeesByConversation.map(e => { return { value: e.id, label: e.name } as OptionSelect });\r\n } else {\r\n return [];\r\n }\r\n }\r\n setSelectedOption = (values: MultiValue<{ value: string }>) => {\r\n this.selectedOption = values;\r\n }\r\n setHasBackgroundColor = (value) => {\r\n this.hasBackgroundColor = value;\r\n \r\n }\r\n toggleHasBackgroundColor = () => {\r\n this.hasBackgroundColor = !this.hasBackgroundColor;\r\n\r\n return this.hasBackgroundColor;\r\n }\r\n dataURLtoFile = (dataurl, filename) => {\r\n\r\n var arr = dataurl.split(','),\r\n mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(arr[1]),\r\n n = bstr.length,\r\n u8arr = new Uint8Array(n);\r\n\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n\r\n return new File([u8arr], filename, { type: mime });\r\n }\r\n\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport DateHelper from '../helpers/dateHelper';\r\nimport { Message, MessageAttachment, PostMessage, PostMessageAttachment } from '../models/message';\r\nimport { store } from './store';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport moment from 'moment';\r\n\r\n\r\nexport default class MessageStore {\r\n isMessageSending = false;\r\n isLoading = false;\r\n messages: Message[] = [];\r\n temporaryMessage?: Message;\r\n isMinimize: boolean = false;\r\n files: any[] = [];\r\n temporaryAttachment?: MessageAttachment;\r\n temporaryAttachments: MessageAttachment[] = [];\r\n temporaryMessages: PostMessageAttachment [] = [];\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n\r\n postMessage = async (message: PostMessage) => {\r\n this.isMessageSending = true;\r\n try {\r\n let data = await agent.Messages.add(message);\r\n runInAction(() => {\r\n this.isMessageSending = false;\r\n });\r\n return Promise.resolve(data);\r\n } catch (e) {\r\n console.error(e);\r\n this.isMessageSending = false;\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n addMessageWithAttachment = async (message: PostMessageAttachment) => {\r\n let loadingId = uuidv4();\r\n message.loadingId = loadingId;\r\n this.isMessageSending = true;\r\n if (message.files.length > 0) {\r\n for (var i = 0; i < message.files.length; i++) {\r\n this.temporaryAttachments = [\r\n ...this.temporaryAttachments,\r\n { ...this.temporaryAttachment!, fileName: message.files[i].name, size: message.files[i].size }\r\n ];\r\n }\r\n \r\n }\r\n this.messages = [...this.messages,\r\n {\r\n ...this.temporaryMessage!,\r\n isMessageUploading: true,\r\n attachments: message.files.length > 0 ? this.temporaryAttachments : [],\r\n isMyMessage: true,\r\n content: message.content,\r\n loadingId: loadingId,\r\n localTime: new Date().toLocaleString(),\r\n }];\r\n this.temporaryAttachments = [];\r\n try {\r\n let data = await agent.Messages.addMessageAttachment(message);\r\n runInAction(() => {\r\n this.isMessageSending = false;\r\n \r\n });\r\n return Promise.resolve(data);\r\n } catch (e) {\r\n console.error(e);\r\n this.isMessageSending = false;\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n get messagesWithDates() {\r\n const _dateHelper = new DateHelper();\r\n let messages = [...this.messages];\r\n for (var i = 0; i < messages.length; i++) {\r\n let isSystemGeneratedMessage = messages[i].content?.includes('[[SystemGenerated]]');\r\n let sendDateAndTime = new Date(messages[i].localTime);\r\n if (i == 0) {\r\n if (_dateHelper.toReadableDate(sendDateAndTime) == _dateHelper.toReadableDate(new Date())) {\r\n messages[i].sentDate = \"Today\"\r\n } else {\r\n messages[i].sentDate = _dateHelper.toReadableDate(sendDateAndTime)\r\n }\r\n messages[i].sentTime = _dateHelper.toLocalTimeString(sendDateAndTime)\r\n }\r\n if (i > 0) {\r\n if (_dateHelper.toReadableDate(new Date(messages[i].localTime)) == _dateHelper.toReadableDate(new Date(messages[i - 1].localTime))) {\r\n messages[i].sentDate = \"\";\r\n\r\n } else {\r\n if (_dateHelper.toReadableDate(sendDateAndTime) == _dateHelper.toReadableDate(new Date())) {\r\n messages[i].sentDate = \"Today\"\r\n } else {\r\n messages[i].sentDate = _dateHelper.toReadableDate(sendDateAndTime)\r\n }\r\n\r\n }\r\n \r\n let lastMessageTime = _dateHelper.toLocalTimeString(new Date(messages[i - 1].localTime));\r\n let currentMessageTime = _dateHelper.toLocalTimeString(new Date(messages[i].localTime))\r\n\r\n if (!isSystemGeneratedMessage && (lastMessageTime == currentMessageTime) && (messages[i].senderId == messages[i - 1].senderId)) {\r\n messages[i - 1].sentTime = \"\";\r\n messages[i].sentTime = _dateHelper.toLocalTimeString(sendDateAndTime)\r\n }\r\n\r\n else {\r\n messages[i].sentTime = _dateHelper.toLocalTimeString(sendDateAndTime)\r\n }\r\n }\r\n \r\n\r\n }\r\n return messages;\r\n }\r\n\r\n loadMessage = async (conversationId: string) => {\r\n try {\r\n const messages = await agent.Messages.getAll(conversationId);\r\n runInAction(() => {\r\n this.messages = messages;\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n bytesToSize = (bytes, decimals = 2) => {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n updateIsRead = async (conversationId: string, userId: string) => {\r\n try {\r\n const id = await agent.Conversations.updateReadReceipt(conversationId);\r\n store.conversationStore.conversations = store.conversationStore.conversations.map(c => {\r\n if (c.id === conversationId)\r\n return {\r\n ...c,\r\n readReceiptUserIds: [...c.readReceiptUserIds, userId]\r\n }\r\n return c;\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n setMessages = (messages: Message[]) => {\r\n this.messages = messages;\r\n }\r\n\r\n setIsMinimize = (value: boolean) => {\r\n this.isMinimize = value;\r\n }\r\n\r\n setFiles = (files: File[]) => {\r\n this.files = files;\r\n }\r\n}","import { makeAutoObservable, runInAction } from \"mobx\";\r\nimport { User } from \"../models/user\";\r\nimport agent from \"../api/agents\";\r\nimport { OptionSelect } from \"../models/option\";\r\nimport { store } from './store';\r\n\r\nexport default class CardMemberStore {\r\n\r\n workSpaceMembers: User[] = [];\r\n cardMembers: User[] = [];\r\n isLoading: boolean = true;\r\n isLoadingCardMembers: boolean = true;\r\n isOpenPopOver: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n attachHubEvents = () => {\r\n if (store.boardStore.hubConnection) {\r\n store.boardStore.hubConnection!.on(\"LoadMembers\", (cardId) => {\r\n runInAction(() => {\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on('ReceiveCardMembers', (data) => {\r\n this.cardMembers = data\r\n\r\n });\r\n store.boardStore.hubConnection!.on('ReceiveCardMembersUpdate', (data) => {\r\n this.cardMembers = data\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n getAllWorkSpaceUsers = async (cardId: string, workSpaceId: string) => {\r\n this.isLoading = true;\r\n try {\r\n\r\n this.workSpaceMembers = await agent.CardUser.getAll(cardId, workSpaceId, store.userStore.user!.clientId!);\r\n runInAction(() => {\r\n this.isLoading = false;\r\n return this.workSpaceMembers;\r\n });\r\n \r\n } catch (e) {\r\n this.isLoading = false;\r\n throw e;\r\n }\r\n }\r\n //getAllCardMembers = async (cardId: string) => {\r\n\r\n // this.isLoadingCardMembers = true;\r\n // try {\r\n \r\n // const cardMembers = await agent.CardUser.getAllCardMembers(cardId);\r\n // runInAction(() => {\r\n // this.isLoadingCardMembers = false;\r\n // this.cardMembers = cardMembers;\r\n // return this.cardMembers;\r\n // });\r\n \r\n // } catch (e) {\r\n // this.isLoadingCardMembers = false;\r\n // throw e;\r\n // }\r\n //}\r\n\r\n loadCardMembers = (cardId: string) => {\r\n this.isLoadingCardMembers = true;\r\n\r\n if (store.boardStore.hubConnection) {\r\n store.boardStore.hubConnection!.invoke(\"LoadMembers\", cardId);\r\n this.isLoadingCardMembers = false;\r\n } else\r\n this.isLoadingCardMembers = false;\r\n }\r\n\r\n get memberOptionValues(): OptionSelect[] {\r\n if (this.workSpaceMembers.length) {\r\n return this.workSpaceMembers\r\n .map(e => { return { value: e.id, label: e.name } as OptionSelect });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n\r\n addMultiple = async (cardId: string, userIds: string[]) => {\r\n try {\r\n await agent.CardUser.addMultiple(cardId, userIds);\r\n runInAction(() => {\r\n store.boardStore.hubConnection!.invoke(\"UpdateCardMembers\", cardId);\r\n return Promise.resolve;\r\n });\r\n } catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n removeMember = async (cardId: string, userId: string) => {\r\n try {\r\n await agent.CardUser.delete(cardId, userId);\r\n store.boardStore.hubConnection!.invoke(\"UpdateCardMembers\", cardId);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n\r\n setIsOpenPopOver = (value: boolean) => {\r\n this.isOpenPopOver = value;\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n","import { createContext, useContext } from \"react\";\r\nimport CommonStore from \"./commonStore\";\r\nimport UserStore from \"./userStore\";\r\nimport ModalStore from './modalStore';\r\nimport EmployeeStore from './employeeStore';\r\nimport SubClientStore from './subClientStore';\r\nimport AuthStore from './authStore';\r\nimport LeaveRequestStore from './leaveRequestStore';\r\nimport OvertimeStore from './overtimeStore';\r\nimport UndertimeStore from \"./undertimeStore\";\r\nimport DailyReportStore from \"./dailyReportStore\";\r\nimport WorkSpaceTypeStore from \"./workSpaceTypeStore\";\r\nimport WorkSpaceStore from \"./workSpaceStore\";\r\nimport WorkSpaceUserStore from \"./workSpaceUserStore\";\r\nimport BoardStore from \"./boardStore\";\r\nimport TimeRecordStore from \"./timeRecordStore\";\r\nimport CardGroupStore from \"./cardGroupStore\";\r\nimport CardStore from \"./cardStore\";\r\nimport CardCommentStore from \"./cardCommentStore\";\r\nimport ChatStore from \"./chatStore\";\r\nimport MessageStore from \"./messageStore\";\r\nimport ConversationStore from \"./conversationStore\";\r\nimport CardCheckListStore from \"./cardChecklistStore\";\r\nimport CardAttachmentStore from \"./cardAttachmentStore\";\r\nimport CommentAttachmentStore from \"./commentAttachmentStore\";\r\nimport PopoverStore from \"./popoverStore\";\r\nimport CardMemberStore from \"./cardMemberStore\";\r\nimport ChatAttachmentStore from \"./chatAttachmentStore\";\r\nimport PostStore from \"./postStore\";\r\nimport DateModalStore from \"./dateModalStore\";\r\nimport MediaStore from \"./mediaStore\";\r\nimport CardDateStore from \"./cardDateStore\";\r\nimport NotificationModalStore from \"./notificationModalStore\";\r\n\r\ninterface Store {\r\n commonStore: CommonStore;\r\n userStore: UserStore;\r\n modalStore: ModalStore;\r\n dateModalStore: DateModalStore;\r\n notificationModalStore: NotificationModalStore;\r\n employeeStore: EmployeeStore;\r\n subClientStore: SubClientStore;\r\n authStore: AuthStore;\r\n leaveRequestStore: LeaveRequestStore;\r\n overtimeStore: OvertimeStore;\r\n undertimeStore: UndertimeStore;\r\n dailyReportStore: DailyReportStore;\r\n workSpaceTypeStore: WorkSpaceTypeStore;\r\n workSpaceStore: WorkSpaceStore;\r\n workSpaceUserStore: WorkSpaceUserStore;\r\n boardStore: BoardStore;\r\n timeRecordStore: TimeRecordStore;\r\n cardGroupStore: CardGroupStore;\r\n cardStore: CardStore;\r\n cardDateStore: CardDateStore;\r\n chatStore: ChatStore;\r\n messageStore: MessageStore;\r\n conversationStore: ConversationStore;\r\n cardCommentStore: CardCommentStore;\r\n cardChecklistStore: CardCheckListStore;\r\n cardAttachmentStore: CardAttachmentStore;\r\n commentAttachmentStore: CommentAttachmentStore;\r\n popOverStore: PopoverStore;\r\n chatAttachmentStore: ChatAttachmentStore;\r\n cardMemberStore: CardMemberStore;\r\n postStore: PostStore;\r\n mediaStore: MediaStore;\r\n}\r\n\r\nexport const store: Store = {\r\n commonStore: new CommonStore(),\r\n userStore: new UserStore(),\r\n modalStore: new ModalStore(),\r\n dateModalStore: new DateModalStore(),\r\n notificationModalStore: new NotificationModalStore(),\r\n employeeStore: new EmployeeStore(),\r\n subClientStore: new SubClientStore(),\r\n authStore: new AuthStore(),\r\n leaveRequestStore: new LeaveRequestStore(),\r\n overtimeStore: new OvertimeStore(),\r\n undertimeStore: new UndertimeStore(),\r\n dailyReportStore: new DailyReportStore(),\r\n workSpaceTypeStore: new WorkSpaceTypeStore(),\r\n workSpaceStore: new WorkSpaceStore(),\r\n workSpaceUserStore: new WorkSpaceUserStore(),\r\n boardStore: new BoardStore(),\r\n timeRecordStore: new TimeRecordStore(),\r\n cardGroupStore: new CardGroupStore(),\r\n cardStore: new CardStore(),\r\n cardDateStore: new CardDateStore(),\r\n chatStore: new ChatStore(),\r\n messageStore: new MessageStore(),\r\n conversationStore: new ConversationStore(),\r\n cardCommentStore: new CardCommentStore(),\r\n cardChecklistStore: new CardCheckListStore(),\r\n cardAttachmentStore: new CardAttachmentStore(),\r\n commentAttachmentStore: new CommentAttachmentStore(),\r\n popOverStore: new PopoverStore(),\r\n cardMemberStore: new CardMemberStore(),\r\n chatAttachmentStore: new ChatAttachmentStore(),\r\n postStore: new PostStore(),\r\n mediaStore: new MediaStore()\r\n}\r\n\r\nexport const StoreContext = createContext(store);\r\n\r\nexport function useStore() {\r\n return useContext(StoreContext);\r\n}","import { makeAutoObservable } from 'mobx';\r\n\r\ninterface Modal {\r\n open: boolean;\r\n body: JSX.Element | null;\r\n\r\n}\r\n\r\nexport default class ModalStore {\r\n modal: Modal = {\r\n open: false,\r\n body: null\r\n }\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n openModal = (content: JSX.Element) => {\r\n this.modal.open = true;\r\n this.modal.body = content;\r\n }\r\n\r\n closeModal = () => {\r\n this.modal.open = false;\r\n this.modal.body = null;\r\n }\r\n}","import { makeAutoObservable } from 'mobx';\r\n\r\ninterface DateModal {\r\n open: boolean;\r\n body: JSX.Element | null;\r\n\r\n}\r\n\r\nexport default class DateModalStore {\r\n modal: DateModal = {\r\n open: false,\r\n body: null\r\n }\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n openModal = (content: JSX.Element) => {\r\n this.modal.open = true;\r\n this.modal.body = content;\r\n }\r\n\r\n closeModal = () => {\r\n this.modal.open = false;\r\n this.modal.body = null;\r\n }\r\n}","import { makeAutoObservable } from 'mobx';\r\n\r\ninterface NotificationModal {\r\n open: boolean;\r\n body: JSX.Element | null;\r\n\r\n}\r\n\r\nexport default class NotificationModalStore {\r\n modal: NotificationModal = {\r\n open: false,\r\n body: null\r\n }\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n openModal = (content: JSX.Element) => {\r\n this.modal.open = true;\r\n this.modal.body = content;\r\n }\r\n\r\n closeModal = () => {\r\n this.modal.open = false;\r\n this.modal.body = null;\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { SubClient, SubClientFormValues } from '../models/subClient';\r\nimport { history } from '../../index';\r\n\r\nexport default class WorkSpaceStore {\r\n subClients: SubClient[] = [];\r\n subClientsTotal: number = 0;\r\n isSubClientListLoading: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterSubClients = async (filters: FilterValues) => {\r\n this.isSubClientListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.SubClients.filter({\r\n id: filters.id,\r\n pageNumber: filters.pageNumber,\r\n pageSize: filters.pageSize,\r\n });\r\n runInAction(() => {\r\n this.subClients = data;\r\n this.subClientsTotal = total;\r\n this.isSubClientListLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isSubClientListLoading = false;\r\n }\r\n }\r\n\r\n loadSubClient = async (id: string) => {\r\n this.isLoading = true;\r\n\r\n try {\r\n let subClient = await agent.SubClients.get(id);\r\n this.isLoading = false;\r\n return subClient;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (subClient: SubClientFormValues) => {\r\n try {\r\n const subClientId = await agent.SubClients.add(subClient);\r\n runInAction(() => {\r\n if (subClientId) {\r\n toast.success('External user created successfully.');\r\n\r\n // redirect?\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n update = async (subClient: SubClientFormValues) => {\r\n try {\r\n const subClientId = await agent.SubClients.update(subClient);\r\n runInAction(() => {\r\n if (subClientId) {\r\n toast.success('External user updated successfully.');\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n deleteSubClient = async (id: string, filters: FilterValues) => {\r\n try {\r\n await agent.SubClients.delete(id);\r\n this.filterSubClients(filters);\r\n runInAction(() => {\r\n toast.success('External user deleted successfully.');\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n}","import { MaterialTableProps, Query } from 'material-table';\r\nimport { makeAutoObservable, runInAction } from 'mobx';\r\nimport { MutableRefObject } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { LeaveRequest } from '../models/leaveRequest';\r\n\r\nexport default class LeaveRequestStore {\r\n leaveRequests: LeaveRequest[]=[];\r\n leaveRequestsTotal: number = 0;\r\n isLeaveRequestsLoading: boolean = false;\r\n isInitialLoading: boolean = false;\r\n\r\n leaveRequest: LeaveRequest | undefined;\r\n isLeaveRequestDetailsLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterLeaveRequests = async (filters: FilterValues, isInitial?: boolean) => {\r\n if (isInitial) this.isInitialLoading = true;\r\n this.isLeaveRequestsLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.LeaveRequests.filter({\r\n id: filters.id,\r\n pageNumber: filters.pageNumber,\r\n pageSize: filters.pageSize,\r\n searchKeyword: filters.searchKeyword\r\n\r\n });\r\n runInAction(() => {\r\n this.leaveRequests = data;\r\n this.leaveRequestsTotal = total;\r\n this.isLeaveRequestsLoading = false;\r\n this.isInitialLoading = false;\r\n \r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isLeaveRequestsLoading = false;\r\n this.isInitialLoading = false;\r\n }\r\n }\r\n\r\n loadLeaveRequest = async (id: string) => {\r\n this.isLeaveRequestDetailsLoading = true;\r\n try {\r\n const leaveRequest = await agent.LeaveRequests.get(id);\r\n runInAction(() => {\r\n this.leaveRequest = leaveRequest;\r\n this.isLeaveRequestDetailsLoading = false;\r\n\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n this.isLeaveRequestDetailsLoading = false;\r\n\r\n }\r\n }\r\n\r\n approveLeaveRequest = async (id: string, filters: FilterValues) => {\r\n this.isLeaveRequestsLoading = true;\r\n\r\n try {\r\n await agent.LeaveRequests.approve(id);\r\n await this.filterLeaveRequests(filters);\r\n toast.success('Leave Request approved.');\r\n this.isLeaveRequestsLoading = false;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n this.isLeaveRequestsLoading = false;\r\n\r\n }\r\n }\r\n\r\n rejectLeaveRequest = async (id: string, filters: FilterValues) => {\r\n this.isLeaveRequestsLoading = true;\r\n\r\n try {\r\n await agent.LeaveRequests.reject(id);\r\n await this.filterLeaveRequests(filters);\r\n toast.success('Leave Request rejected.');\r\n this.isLeaveRequestsLoading = false;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n this.isLeaveRequestsLoading = false;\r\n\r\n }\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { Overtime } from '../models/overtime';\r\n\r\nexport default class OvertimeStore {\r\n overtimes: Overtime[] = [];\r\n overtimesTotal: number = 0;\r\n isOvertimeListLoading: boolean = false;\r\n isInitialLoading: boolean = false;\r\n\r\n overtime: Overtime | undefined;\r\n isOvertimeDetailsLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterOvertimes = async (filters: FilterValues, isInitial?: boolean) => {\r\n if (isInitial) this.isInitialLoading = true;\r\n this.isOvertimeListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.OvertimeRequests.filter({\r\n id: filters.id,\r\n pageNumber: filters.pageNumber,\r\n pageSize: filters.pageSize,\r\n searchKeyword: filters.searchKeyword\r\n\r\n });\r\n runInAction(() => {\r\n this.overtimes = data;\r\n this.overtimesTotal = total;\r\n this.isOvertimeListLoading = false;\r\n this.isInitialLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isOvertimeListLoading = false;\r\n this.isInitialLoading = false;\r\n }\r\n }\r\n\r\n loadOvertime = async (id: string) => {\r\n this.isOvertimeDetailsLoading = true;\r\n try {\r\n const overtime = await agent.OvertimeRequests.get(id);\r\n runInAction(() => {\r\n this.overtime = overtime;\r\n this.isOvertimeDetailsLoading = false;\r\n\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n this.isOvertimeDetailsLoading = false;\r\n }\r\n }\r\n\r\n approveOvertime = async (id: string, filters: FilterValues) => {\r\n this.isOvertimeListLoading = true;\r\n\r\n try {\r\n await agent.OvertimeRequests.approve(id);\r\n await this.filterOvertimes(filters);\r\n toast.success('Overtime approved.');\r\n this.isOvertimeDetailsLoading = false;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n this.isOvertimeDetailsLoading = false;\r\n\r\n }\r\n }\r\n\r\n rejectOvertime = async (id: string, filters: FilterValues) => {\r\n this.isOvertimeDetailsLoading = true;\r\n\r\n try {\r\n await agent.OvertimeRequests.reject(id);\r\n await this.filterOvertimes(filters);\r\n toast.success('Overtime rejected.');\r\n this.isOvertimeDetailsLoading = false;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n this.isOvertimeDetailsLoading = false;\r\n\r\n }\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { Undertime } from '../models/undertime';\r\n\r\nexport default class UndertimeStore {\r\n undertimes: Undertime[] = [];\r\n undertimesTotal: number = 0;\r\n isUndertimeListLoading: boolean = false;\r\n isInitialLoading: boolean = false;\r\n\r\n undertime: Undertime | undefined;\r\n isUndertimeDetailsLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterUndertimes = async (filters: FilterValues, isInitial?: boolean) => {\r\n if (isInitial) this.isInitialLoading = true;\r\n this.isUndertimeListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.UndertimeRequests.filter({\r\n id: filters.id,\r\n pageNumber: filters.pageNumber,\r\n pageSize: filters.pageSize,\r\n searchKeyword: filters.searchKeyword\r\n\r\n });\r\n runInAction(() => {\r\n this.undertimes = data;\r\n this.undertimesTotal = total;\r\n this.isUndertimeListLoading = false;\r\n this.isInitialLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isUndertimeListLoading = false;\r\n this.isInitialLoading = false;\r\n }\r\n }\r\n\r\n loadUndertime = async (id: string) => {\r\n this.isUndertimeDetailsLoading = true;\r\n try {\r\n const undertime = await agent.UndertimeRequests.get(id);\r\n runInAction(() => {\r\n this.undertime = undertime;\r\n this.isUndertimeDetailsLoading = false;\r\n\r\n })\r\n } catch (e) {\r\n console.log(e);\r\n this.isUndertimeDetailsLoading = false;\r\n }\r\n }\r\n\r\n approveUndertime = async (id: string, filters: FilterValues) => {\r\n this.isUndertimeListLoading = true;\r\n\r\n try {\r\n await agent.UndertimeRequests.approve(id);\r\n await this.filterUndertimes(filters);\r\n toast.success('Undertime approved.');\r\n this.isUndertimeDetailsLoading = false;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n this.isUndertimeDetailsLoading = false;\r\n\r\n }\r\n }\r\n\r\n rejectUndertime = async (id: string, filters: FilterValues) => {\r\n this.isUndertimeDetailsLoading = true;\r\n try {\r\n await agent.UndertimeRequests.reject(id);\r\n await this.filterUndertimes(filters);\r\n toast.success('Undertime rejected.');\r\n this.isUndertimeDetailsLoading = false;\r\n } catch (e) {\r\n console.log(e);\r\n this.isUndertimeDetailsLoading = false;\r\n\r\n }\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { WorkSpaceType, WorkSpaceTypeFormValues } from '../models/workSpaceType';\r\nimport { history } from '../../index';\r\n\r\nexport default class WorkSpaceTypeStore {\r\n workSpaceTypes: WorkSpaceType[] = [];\r\n workSpaceTypesTotal: number = 0;\r\n isWorkSpaceTypeListLoading: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterWorkSpaceTypes = async (filters: FilterValues) => {\r\n this.isWorkSpaceTypeListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.WorkSpaceTypes.filter({\r\n id: filters.id,\r\n pageNumber: filters.pageNumber,\r\n pageSize: filters.pageSize,\r\n });\r\n runInAction(() => {\r\n this.workSpaceTypes = data;\r\n this.workSpaceTypesTotal = total;\r\n this.isWorkSpaceTypeListLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isWorkSpaceTypeListLoading = false;\r\n }\r\n }\r\n\r\n loadWorkSpaceType = async (id: string) => {\r\n this.isLoading = true;\r\n\r\n try {\r\n let workSpaceType = await agent.WorkSpaceTypes.get(id);\r\n this.isLoading = false;\r\n return workSpaceType;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n getAllWorkSpaceTypes = async () => {\r\n this.isLoading = true;\r\n try {\r\n let workSpaceTypes = await agent.WorkSpaceTypes.getAll();\r\n this.isLoading = false;\r\n return workSpaceTypes;\r\n } catch (e) {\r\n this.isLoading = false;\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (name: string) => {\r\n try {\r\n const workSpaceTypeId = await agent.WorkSpaceTypes.add({ name });\r\n runInAction(() => {\r\n if (workSpaceTypeId) {\r\n toast.success('Workspace Type was created successfully.');\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n update = async (workSpaceType: WorkSpaceTypeFormValues) => {\r\n try {\r\n const workSpaceTypeId = await agent.WorkSpaceTypes.update(workSpaceType);\r\n runInAction(() => {\r\n if (workSpaceTypeId) {\r\n toast.success('Workspace Type was updated successfully.');\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n deleteWorkSpaceType = async (id: string, filters: FilterValues) => {\r\n try {\r\n await agent.WorkSpaceTypes.delete(id);\r\n this.filterWorkSpaceTypes(filters);\r\n runInAction(() => {\r\n toast.success('Workspace Type was deleted successfully.');\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { WorkSpace, WorkSpaceFormValues } from '../models/workSpace';\r\nimport { history } from '../../index';\r\n\r\nexport default class WorkSpaceStore {\r\n workSpaces: WorkSpace[] = [];\r\n workSpacesTotal: number = 0;\r\n isWorkSpaceListLoading: boolean = false;\r\n isLoading: boolean = false;\r\n activeWorkspace: WorkSpace | undefined;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterWorkSpaces = async (filters: FilterValues) => {\r\n this.isWorkSpaceListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.WorkSpaces.filter(filters);\r\n runInAction(() => {\r\n this.workSpaces = data;\r\n this.workSpacesTotal = total;\r\n this.isWorkSpaceListLoading = false;\r\n \r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isWorkSpaceListLoading = false;\r\n }\r\n }\r\n\r\n loadWorkSpace = async (id: string) => {\r\n this.isLoading = true;\r\n\r\n try {\r\n let workSpace = await agent.WorkSpaces.get(id);\r\n this.isLoading = false;\r\n this.activeWorkspace = workSpace;\r\n return workSpace;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (workSpace: WorkSpaceFormValues) => {\r\n try {\r\n const workSpaceId = await agent.WorkSpaces.add(workSpace);\r\n runInAction(() => {\r\n if (workSpaceId) {\r\n toast.success('Workspace was created successfully.');\r\n //history.push({\r\n // pathname: '/workspaces/' + workSpaceId,\r\n // state: {\r\n // workSpaceId: workSpaceId\r\n // }\r\n //});\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n update = async (workSpace: WorkSpaceFormValues) => {\r\n try {\r\n const workSpaceId = await agent.WorkSpaces.update(workSpace);\r\n runInAction(() => {\r\n if (workSpaceId) {\r\n toast.success('Workspace was updated successfully.');\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n deleteWorkSpace = async (id: string, filters: FilterValues) => {\r\n try {\r\n await agent.WorkSpaces.delete(id);\r\n this.filterWorkSpaces(filters);\r\n runInAction(() => {\r\n toast.success('Workspace was deleted successfully.');\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n}","import { HubConnection, HubConnectionBuilder, LogLevel } from '@microsoft/signalr';\r\nimport { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport { history } from '../../index';\r\nimport agent from '../api/agents';\r\nimport { Board, BoardFormValues } from '../models/board';\r\nimport { Card } from '../models/card';\r\nimport { CardGroupOrder } from '../models/cardGroupOrder';\r\nimport { CardGroup } from '../models/cardGroup';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { store } from './store';\r\nimport UpdateOrderValues from '../../app/models/common/updateOrderValues';\r\n\r\nexport default class BoardStore {\r\n boards: Board[] = [];\r\n boardsTotal: number = 0;\r\n isBoardListLoading: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n hubConnection: HubConnection | null = null;\r\n boardUrl = process.env.REACT_APP_BOARD_URL;\r\n\r\n board: Board | undefined;\r\n isBoardDetailsLoading: boolean = true;\r\n activeBoard: Board | undefined;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n //#region Hub Events\r\n\r\n createHubConnection = (boardId: string) => {\r\n this.isBoardDetailsLoading = true;\r\n\r\n this.hubConnection = new HubConnectionBuilder()\r\n .withUrl(this.boardUrl+ '?boardId=' + boardId, {\r\n accessTokenFactory: () => store.authStore.token!,\r\n })\r\n .withAutomaticReconnect()\r\n .configureLogging(LogLevel.Warning)\r\n .build();\r\n\r\n this.hubConnection?.start().catch(e => console.log(e));\r\n\r\n this.attachHubEvents();\r\n store.cardStore.attachHubEvents();\r\n store.cardMemberStore.attachHubEvents();\r\n }\r\n\r\n attachHubEvents = () => {\r\n if (!this.hubConnection)\r\n return;\r\n\r\n this.hubConnection.on(\"LoadBoard\", (board: any) => {\r\n runInAction(() => {\r\n this.board = board;\r\n this.activeBoard = board;\r\n this.isBoardDetailsLoading = false;\r\n });\r\n });\r\n\r\n this.hubConnection.on(\"ReceiveCardGroup\", (cardGroup: CardGroup) => {\r\n runInAction(() => {\r\n if (this.board) {\r\n this.board = {\r\n ...this.board,\r\n cardGroups: [\r\n ...this.board.cardGroups,\r\n cardGroup\r\n ],\r\n order: [\r\n ...this.board.order,\r\n cardGroup.id\r\n ]\r\n } as Board;\r\n }\r\n });\r\n });\r\n\r\n this.hubConnection.on(\"ReceiveUpdatedCardGroup\", (cardGroup: { id: string, title: string }) => {\r\n let currentCardGroup = this.board?.cardGroups.find(cg => cg.id === cardGroup.id);\r\n\r\n runInAction(() => {\r\n if (this.board) {\r\n this.board = {\r\n ...this.board,\r\n cardGroups: [\r\n ...this.board.cardGroups.filter(cg => cg.id !== cardGroup.id),\r\n {\r\n ...currentCardGroup,\r\n title: cardGroup.title,\r\n }\r\n ]\r\n } as Board;\r\n }\r\n });\r\n });\r\n\r\n this.hubConnection.on(\"DeleteCardGroup\", (cardGroupId: string) => {\r\n runInAction(() => {\r\n if (this.board) {\r\n this.board = {\r\n ...this.board,\r\n cardGroups: [\r\n ...this.board.cardGroups.filter(cg => cg.id !== cardGroupId)!,\r\n ],\r\n order: [\r\n ...this.board.order.filter(cg => cg !== cardGroupId),\r\n ]\r\n } as Board;\r\n }\r\n });\r\n });\r\n\r\n this.hubConnection.on(\"ReceiveBoardOrderUpdate\", (boardOrder: string[]) => {\r\n runInAction(() => {\r\n this.board = {\r\n ...this.board,\r\n order: boardOrder\r\n } as Board;\r\n });\r\n });\r\n\r\n this.hubConnection.on(\"ReceiveCardGroupOrderUpdate\", (cardGroupOrder: CardGroupOrder) => {\r\n let remainingCardGroups = this.board!.cardGroups.filter(cg => cg.id !== cardGroupOrder.sourceCardGroup.id && cg.id !== cardGroupOrder.destinationCardGroup.id);\r\n let sourceCardGroup = this.board?.cardGroups.find(cg => cg.id === cardGroupOrder.sourceCardGroup.id);\r\n let destinationCardGroup = this.board?.cardGroups.find(cg => cg.id === cardGroupOrder.destinationCardGroup.id);\r\n\r\n runInAction(() => {\r\n this.board = {\r\n ...this.board, \r\n cardGroups: [\r\n ...remainingCardGroups,\r\n {\r\n ...sourceCardGroup,\r\n cards: cardGroupOrder.isSameDestination ? sourceCardGroup?.cards : sourceCardGroup?.cards.filter(c => c.id !== cardGroupOrder.draggedId),\r\n order: cardGroupOrder.sourceCardGroup.order\r\n },\r\n {\r\n ...destinationCardGroup,\r\n cards: cardGroupOrder.isSameDestination ? sourceCardGroup?.cards : [\r\n ...destinationCardGroup!.cards,\r\n {\r\n ...sourceCardGroup?.cards.find(c => c.id === cardGroupOrder.draggedId),\r\n cardGroupId: destinationCardGroup?.id\r\n }\r\n ],\r\n order: cardGroupOrder.destinationCardGroup.order\r\n }\r\n ]\r\n } as Board;\r\n });\r\n });\r\n\r\n this.hubConnection.on(\"ReceiveBoardCardUpdate\", (card: Card) => {\r\n let currentCardGroup = this.board?.cardGroups.find(cg => cg.id === card.cardGroupId);\r\n let currentCard = currentCardGroup?.cards.find(c => c.id === card.id);\r\n runInAction(() => {\r\n this.board = {\r\n ...this.board,\r\n cardGroups: [\r\n ...this.board?.cardGroups.filter(cg => cg.id !== card.cardGroupId)!,\r\n {\r\n ...currentCardGroup,\r\n cards: currentCardGroup?.cards.map(c => {\r\n if (c.id === card.id)\r\n return {\r\n ...currentCard,\r\n title: card.title\r\n }\r\n return c;\r\n })\r\n }\r\n ]\r\n } as Board;\r\n });\r\n });\r\n }\r\n\r\n stopHubConnection = () => {\r\n this.hubConnection?.stop().catch((error) => console.log(\"Error stopping connection: \", error));\r\n };\r\n\r\n //#endregion\r\n\r\n updateBoardOrder = async (values: UpdateOrderValues) => {\r\n try {\r\n this.hubConnection?.invoke(\"UpdateBoardOrder\", values);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n filterBoards = async (filters: FilterValues) => {\r\n this.isBoardListLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.Boards.filter(filters);\r\n runInAction(() => {\r\n this.boards = data;\r\n this.boardsTotal = total;\r\n this.isBoardListLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isBoardListLoading = false;\r\n }\r\n }\r\n\r\n loadBoardDetails = async (id: string) => {\r\n this.isBoardDetailsLoading = true;\r\n try {\r\n const board = await agent.Boards.get(id);\r\n runInAction(() => {\r\n this.board = board;\r\n this.isBoardDetailsLoading = false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isBoardDetailsLoading = false;\r\n }\r\n }\r\n\r\n loadBoard = async (id: string) => {\r\n this.isLoading = true;\r\n\r\n try {\r\n let board = await agent.Boards.get(id);\r\n this.isLoading = false;\r\n return board;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n getAllBoards = async (workSpaceId: string) => {\r\n this.isLoading = true;\r\n try {\r\n let boards = await agent.Boards.getAll(workSpaceId);\r\n this.isLoading = false;\r\n return boards;\r\n } catch (e) {\r\n this.isLoading = false;\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (board: BoardFormValues) => {\r\n try {\r\n const boardId = await agent.Boards.add(board);\r\n runInAction(() => {\r\n if (boardId) {\r\n toast.success('Project was created successfully.');\r\n history.push(`/workspaces/board/${board.workSpaceId}`);\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n update = async (board: BoardFormValues) => {\r\n try {\r\n const boardId = await agent.Boards.update(board);\r\n runInAction(() => {\r\n if (boardId) {\r\n toast.success('Project was updated successfully.');\r\n history.goBack();\r\n return true;\r\n }\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n deleteBoard = async (id: string, filters: FilterValues) => {\r\n try {\r\n await agent.Boards.delete(id);\r\n this.filterBoards(filters);\r\n runInAction(() => {\r\n toast.success('Project was deleted successfully.');\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { TimeRecord } from '../models/timeRecord';\r\n\r\nexport default class TimeRecordStore {\r\n timeRecords: TimeRecord[] = [];\r\n timeRecordsTotal: number = 0;\r\n isTimeRecordsLoading: boolean = false;\r\n isInitialLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n filterTimeRecords = async (filters: FilterValues, isInitial?: boolean) => {\r\n if (isInitial) this.isInitialLoading = true;\r\n this.isTimeRecordsLoading = true;\r\n\r\n try {\r\n const { total, data } = await agent.DtrSummary.filter(filters);\r\n runInAction(() => {\r\n this.timeRecords = data;\r\n this.timeRecordsTotal = total;\r\n this.isTimeRecordsLoading = false;\r\n this.isInitialLoading = false;\r\n\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.isTimeRecordsLoading = false;\r\n this.isInitialLoading = false;\r\n }\r\n }\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { v4 as uuid } from 'uuid';\r\nimport agent from '../api/agents';\r\nimport { Board } from '../models/board';\r\nimport { CardGroup, CardGroupFormValues, UpdateCardGroupOrderValues } from '../models/cardGroup';\r\nimport { store } from './store';\r\n\r\nexport default class CardGroupStore {\r\n cardGroups: CardGroup[] = [];\r\n cardGroupsTotal: number = 0;\r\n isCardGroupListLoading: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n loadCardGroup = async (id: string) => {\r\n this.isLoading = true;\r\n\r\n try {\r\n let cardGroup = await agent.CardGroups.get(id);\r\n this.isLoading = false;\r\n return cardGroup;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n getAllCardGroups = async (boardId: string) => {\r\n this.isLoading = true;\r\n try {\r\n let cardGroups = await agent.CardGroups.getAll(boardId);\r\n this.isLoading = false;\r\n return cardGroups;\r\n } catch (e) {\r\n this.isLoading = false;\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (cardGroup: CardGroupFormValues) => {\r\n try {\r\n cardGroup.id = uuid();\r\n cardGroup.cards = [];\r\n store.boardStore.hubConnection?.invoke('SendCardGroup', cardGroup);\r\n\r\n const board = store.boardStore.board;\r\n const newBoard = {\r\n ...board,\r\n order: board!.order ? [...board!.order, cardGroup.id] : [cardGroup.id],\r\n cardGroups: board?.cardGroups ? [...board?.cardGroups, cardGroup] : [cardGroup]\r\n }\r\n\r\n store.boardStore.board = newBoard as Board;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n update = async (cardGroup: CardGroupFormValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke(\"UpdateCardGroup\", cardGroup);\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n updateCardGroupOrder = async (values: UpdateCardGroupOrderValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke(\"UpdateCardGroupOrder\", values);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n deleteCardGroup = async (id: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteCardGroup', id);\r\n const board = store.boardStore.board;\r\n const cardGroups = store.boardStore.board!.cardGroups.filter(cg => cg.id != id);\r\n const newBoard = {\r\n ...board,\r\n cardGroups: [...cardGroups],\r\n order: [...store.boardStore.board!.order.filter(orderId => orderId != id)]\r\n }\r\n\r\n store.boardStore.board = newBoard as Board;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n}","import { makeAutoObservable, runInAction } from 'mobx';\r\nimport { toast } from 'react-toastify';\r\nimport { v4 as uuid } from 'uuid';\r\nimport agent from '../api/agents';\r\nimport { Board } from '../models/board';\r\nimport { Card, CardFormValues } from '../models/card';\r\nimport { CardAttachment } from '../models/cardAttachment';\r\nimport { CardChecklist, CardChecklistItem } from '../models/cardChecklist';\r\nimport { CardComment } from '../models/cardComment';\r\nimport { CommentAttachment } from '../models/commentAttachment';\r\nimport { store } from './store';\r\n\r\nexport default class CardStore {\r\n cards: Card[] = [];\r\n cardsTotal: number = 0;\r\n isCardListLoading: boolean = false;\r\n isLoading: boolean = true;\r\n card: Card | undefined;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n attachHubEvents = () => {\r\n if (store.boardStore.hubConnection) {\r\n store.boardStore.hubConnection!.on(\"DeleteCard\", (card: { cardId: string, cardGroupId: string }) => {\r\n const activeBoard = store.boardStore.board;\r\n\r\n if (!activeBoard) {\r\n toast.error('Current project not found.');\r\n return;\r\n }\r\n\r\n const currentCardGroup = activeBoard.cardGroups.find(c => c.id === card.cardGroupId);\r\n\r\n if (!currentCardGroup) {\r\n toast.error('Current task list not found.');\r\n return;\r\n }\r\n const otherLists = activeBoard.cardGroups.filter(c => c.id !== card.cardGroupId);\r\n\r\n const filteredCards = currentCardGroup.cards.filter(c => c.id !== card.cardId);\r\n\r\n const newBoard = {\r\n ...activeBoard,\r\n cardGroups: [\r\n ...otherLists,\r\n {\r\n ...currentCardGroup,\r\n cards: [\r\n ...filteredCards\r\n ],\r\n }]\r\n };\r\n\r\n store.boardStore.board = newBoard as Board;\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveNewCard\", (receivedCard: any) => {\r\n runInAction(() => {\r\n this.isLoading = false;\r\n\r\n const board = store.boardStore.board;\r\n const currentCardGroup = store.boardStore.board?.cardGroups.find(cg => cg.id == receivedCard.cardGroupId);\r\n const cardGroups = store.boardStore.board!.cardGroups.filter(cg => cg.id != receivedCard.cardGroupId);\r\n\r\n const newBoard = {\r\n ...board,\r\n cardGroups: [...cardGroups,\r\n {\r\n ...currentCardGroup,\r\n order: currentCardGroup!.order ? [...currentCardGroup!.order, receivedCard.id] : [receivedCard.id],\r\n cards: currentCardGroup!.cards ? [...currentCardGroup!.cards, receivedCard] : [receivedCard]\r\n }]\r\n }\r\n store.boardStore.board = newBoard as Board;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveCard\", (card: any) => {\r\n runInAction(() => {\r\n this.card = card;\r\n this.isLoading = false;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveCardUpdate\", (card: Card) => {\r\n runInAction(() => {\r\n this.card = card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveCardComments\", (cardComments: CardComment[]) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n comments: cardComments\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveCardComment\", (cardComment: CardComment) => {\r\n runInAction(() => {\r\n const comments = this.card?.comments ? this.card.comments : [];\r\n this.card = {\r\n ...this.card,\r\n comments: [cardComment, ...comments]\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveUpdatedComment\", (comment: CardComment) => {\r\n runInAction(() => {\r\n let currentComment = this.card?.comments.find(c => c.id === comment.id);\r\n this.card = {\r\n ...this.card,\r\n comments: this.card?.comments.map(co => {\r\n if (co.id === comment.id)\r\n return {\r\n ...currentComment,\r\n message: comment.message,\r\n dateUpdated: comment.dateUpdated\r\n }\r\n else\r\n return co\r\n })\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"DeleteComment\", (commentId: string) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n comments: [...this.card?.comments.filter(c => c.id !== commentId)!]\r\n } as Card\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveCardChecklists\", (checklists: CardChecklist[]) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n checklists: checklists\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveUpdatedChecklist\", (checklist: CardChecklist) => {\r\n runInAction(() => {\r\n let currentChecklist = this.card?.checklists.find(c => c.id === checklist.id);\r\n this.card = {\r\n ...this.card,\r\n checklists: this.card?.checklists.map(ck => {\r\n if (ck.id === checklist.id)\r\n return {\r\n ...currentChecklist,\r\n title: checklist.title\r\n }\r\n else\r\n return ck;\r\n })\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"DeleteChecklist\", (checklistId: string) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n checklists: [...this.card?.checklists.filter(c => c.id !== checklistId)!]\r\n } as Card\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveCardChecklistItems\", (checklistItems: CardChecklistItem[]) => {\r\n if (checklistItems.length) {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n checklists: this.card?.checklists.map(cl => {\r\n if (cl.id === checklistItems[0].cardChecklistId)\r\n return { ...cl, items: checklistItems }\r\n return cl;\r\n }),\r\n } as Card;\r\n });\r\n }\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveUpdatedChecklistItem\", (checklistItem: CardChecklistItem) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n checklists: [\r\n ...this.card?.checklists.map(cc => {\r\n if (cc.id === checklistItem.cardChecklistId)\r\n return {\r\n ...cc,\r\n items: cc.items?.map(i => {\r\n if (i.id === checklistItem.id)\r\n return {\r\n ...i,\r\n title: checklistItem.title,\r\n isCompleted: checklistItem.isCompleted\r\n }\r\n return i;\r\n })\r\n }\r\n return cc;\r\n })!\r\n ]\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"DeleteChecklistItem\", (checklistItem: CardChecklistItem) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n checklists: [\r\n ...this.card?.checklists.map(cc => {\r\n if (cc.id === checklistItem.cardChecklistId)\r\n return {\r\n ...cc,\r\n items: cc.items?.filter(i => i.id != checklistItem.id)\r\n }\r\n return cc;\r\n })!\r\n ]\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"LoadCardAttachments\", (attachments: CardAttachment[]) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n attachments: attachments\r\n } as Card;\r\n });\r\n });\r\n store.boardStore.hubConnection!.on(\"AddCardAttachments\", (attachments: CardAttachment[]) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n attachments: attachments\r\n } as Card;\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"DeleteAttachment\", (attachmentId: string) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n attachments: [...this.card?.attachments.filter(c => c.id !== attachmentId)!]\r\n } as Card\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveUpdatedAttachment\", (attachment: CardAttachment) => {\r\n runInAction(() => {\r\n let currentAttachment = this.card?.attachments.find(c => c.id === attachment.id);\r\n this.card = {\r\n ...this.card,\r\n attachments: this.card?.attachments.map(a => {\r\n if (a.id === attachment.id)\r\n return {\r\n ...currentAttachment,\r\n fileName: attachment.fileName\r\n }\r\n else\r\n return a;\r\n })\r\n } as Card;\r\n });\r\n });\r\n store.boardStore.hubConnection!.on(\"ReceiveAttachment\", (attachment: CardAttachment) => {\r\n //runInAction(() => {\r\n // this.card = {\r\n // ...this.card,\r\n // attachments: this.card?.attachments.map(a => {\r\n // if (a.id === attachment.id)\r\n // return {\r\n // ...attachment,\r\n // fileName: attachment.fileName\r\n // }\r\n // else\r\n // return a;\r\n // })\r\n // } as Card;\r\n //});\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"DeleteCommentAttachment\", (commentAttachment: { commentId: string, attachmentId: string }) => {\r\n runInAction(() => {\r\n\r\n this.card = {\r\n ...this.card,\r\n comments: this.card?.comments.map(a => {\r\n if (a.id === commentAttachment.commentId)\r\n return {\r\n ...a,\r\n attachments: a.attachments.filter(x => x.id != commentAttachment.attachmentId)\r\n }\r\n else\r\n return a;\r\n })\r\n } as Card\r\n });\r\n });\r\n\r\n store.boardStore.hubConnection!.on(\"ReceiveUpdatedCommentAttachments\", (commentAttachment: CommentAttachment[]) => {\r\n runInAction(() => {\r\n this.card = {\r\n ...this.card,\r\n comments: [...this.card?.comments.map(c => {\r\n if (c.id === commentAttachment[0].commentId) {\r\n return {\r\n ...c,\r\n attachments: commentAttachment\r\n }\r\n }\r\n else {\r\n return c;\r\n }\r\n })!]\r\n } as Card;\r\n });\r\n });\r\n }\r\n }\r\n\r\n loadCard = (cardId: string) => {\r\n this.isLoading = true;\r\n\r\n if (store.boardStore.hubConnection) {\r\n store.boardStore.hubConnection!.invoke(\"LoadCard\", cardId);\r\n } else\r\n this.isLoading = false;\r\n }\r\n\r\n stopListening = async (cardId: string) => {\r\n try {\r\n store.boardStore.hubConnection!.invoke('StopCardUpdates', cardId);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n getAllCards = async (boardId: string) => {\r\n this.isLoading = true;\r\n try {\r\n let cards = await agent.Cards.getAll(boardId);\r\n this.isLoading = false;\r\n return cards;\r\n } catch (e) {\r\n this.isLoading = false;\r\n throw e;\r\n }\r\n }\r\n\r\n add = async (card: CardFormValues) => {\r\n try {\r\n let users:string[] =[];\r\n users.push(store.userStore.user!.id)\r\n card.id = uuid();\r\n store.boardStore.hubConnection!.invoke('SendCard', card);\r\n store.cardMemberStore.addMultiple(card.id, users);\r\n const board = store.boardStore.board;\r\n const currentCardGroup = store.boardStore.board?.cardGroups.find(cg => cg.id == card.cardGroupId);\r\n const cardGroups = store.boardStore.board!.cardGroups.filter(cg => cg.id != card.cardGroupId);\r\n\r\n const newBoard = {\r\n ...board,\r\n cardGroups: [...cardGroups,\r\n {\r\n ...currentCardGroup,\r\n order: currentCardGroup!.order ? [...currentCardGroup!.order, card.id] : [card.id],\r\n cards: currentCardGroup!.cards ? [...currentCardGroup!.cards, card] : [card]\r\n }]\r\n }\r\n\r\n store.boardStore.board = newBoard as Board;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n update = async (card: CardFormValues) => {\r\n try {\r\n store.boardStore.hubConnection!.invoke('UpdateCard', card);\r\n runInAction(() => {\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n return false;\r\n }\r\n }\r\n\r\n deleteCard = async (id: string, cardGroupId: string) => {\r\n try {\r\n store.boardStore.hubConnection!.invoke('DeleteCard', id);\r\n runInAction(() => {\r\n toast.success('Task was deleted successfully.');\r\n\r\n const clonedState = store.boardStore.board;\r\n const currentList = clonedState?.cardGroups.find(c => c.id === cardGroupId);\r\n let cards: Card[] = [];\r\n if (currentList)\r\n cards = currentList?.cards.filter(c => c.id !== id);\r\n const otherLists = clonedState?.cardGroups.filter(c => c.id !== cardGroupId);\r\n\r\n const newBoard = {\r\n ...clonedState,\r\n cardGroups: [\r\n ...otherLists!,\r\n {\r\n ...currentList,\r\n cards: [\r\n ...cards\r\n ]\r\n }]\r\n }\r\n store.boardStore.board = newBoard as Board;\r\n store.modalStore.closeModal();\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n reset = () => {\r\n this.isLoading = true;\r\n }\r\n}","import { makeAutoObservable, runInAction } from \"mobx\";\r\nimport { toast } from \"react-toastify\";\r\nimport agent from \"../api/agents\";\r\nimport { CardDate } from \"../models/cardDate\";\r\n\r\nexport default class CardDateStore {\r\n\r\n cardDates: CardDate[] = [];\r\n cardDate: CardDate | undefined;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n addSchedule = async (cardDate) => {\r\n try {\r\n runInAction(async () => {\r\n await agent.CardDate.addSchedule(cardDate).then(() => this.getSchedule(cardDate.cardId));\r\n });\r\n toast.success('Schedule was saved successfully.');\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n getSchedule = async (id: string) => {\r\n try {\r\n const schedule = await agent.CardDate.getSchedule(id);\r\n this.cardDate = schedule;\r\n return this.cardDate;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n deleteSchedule = async (id: string) => {\r\n try {\r\n runInAction(async () => {\r\n await agent.CardDate.deleteSchedule(id);\r\n this.cardDate = undefined;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","import { makeAutoObservable, reaction, runInAction } from 'mobx';\r\nimport agent from '../api/agents';\r\nimport { FilterValues } from '../models/common/filterValues';\r\nimport { Conversation, PostConversation } from '../models/conversation';\r\nimport { store } from './store';\r\n\r\nexport default class ConversationStore {\r\n total: number = 0;\r\n conversations: Conversation[] = [];\r\n selectedConversation: Conversation | undefined;\r\n isLoadingConversation: boolean = false;\r\n searchQuery: string = '';\r\n\r\n pendingNotificationConversationIds: string[] = [];\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n reaction(\r\n () => this.conversations,\r\n conversations => {\r\n if (conversations.length) {\r\n let currentConversationId = store.messageStore.messages.length ? store.messageStore.messages[0].conversationId : '';\r\n\r\n let unreadConversations = conversations.filter(c => (c.readReceiptUserIds && c.readReceiptUserIds.indexOf(store.userStore.user!.id) === -1) &&\r\n c.id != currentConversationId);\r\n if (unreadConversations) {\r\n store.chatStore.unReadConversationIds = unreadConversations.map(c => c.id);\r\n }\r\n else {\r\n store.chatStore.unReadConversationIds = [];\r\n }\r\n\r\n let pendingNotificationConversation = conversations.filter(c => (c.notifiedReceiptUserIds &&\r\n c.notifiedReceiptUserIds.indexOf(store.userStore.user!.id) === -1) &&\r\n c.id != currentConversationId);\r\n\r\n if (pendingNotificationConversation) {\r\n\r\n let ids = pendingNotificationConversation.map(c => c.id);\r\n this.setPendingNotificationConversationIds(ids);\r\n\r\n }\r\n else {\r\n this.setPendingNotificationConversationIds([]);\r\n }\r\n }\r\n else {\r\n store.chatStore.unReadConversationIds = [];\r\n this.setPendingNotificationConversationIds([]);\r\n }\r\n }\r\n );\r\n }\r\n\r\n setPendingNotificationConversationIds = (ids: string[]) => {\r\n this.pendingNotificationConversationIds = ids;\r\n }\r\n\r\n getCoversationById = async (id: string) => {\r\n this.isLoadingConversation = true;\r\n try {\r\n let conversation = this.conversations.find(c => c.id === id);\r\n if (!conversation) {\r\n conversation = await agent.Conversations.get(id);\r\n if (conversation) this.conversations = [conversation, ...this.conversations];\r\n runInAction(() => this.isLoadingConversation = false);\r\n return conversation;\r\n } else {\r\n runInAction(() => this.isLoadingConversation = false);\r\n return conversation;\r\n }\r\n\r\n } catch (error) {\r\n runInAction(() => this.isLoadingConversation = false);\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n postConversation = async (conversation: PostConversation) => {\r\n try {\r\n var conversationId = await agent.Conversations.add(conversation);\r\n return Promise.resolve(conversationId);\r\n } catch (error) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n loadMoreConversation = async (filters: FilterValues) => {\r\n try {\r\n const { total, conversations } = await agent.Conversations.filter(filters);\r\n runInAction(() => {\r\n this.conversations = conversations\r\n this.total = total;\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n setSelectedConversation = (conversation: Conversation) => {\r\n this.selectedConversation = conversation;\r\n };\r\n\r\n updateNotificationReceipt = async (ids: string[], userId: string) => {\r\n try {\r\n await agent.Conversations.updateNotificationReceipt({ ids: ids });\r\n store.conversationStore.conversations = [\r\n ...store.conversationStore.conversations.map(c => {\r\n if (ids.indexOf(c.id) != -1)\r\n return {\r\n ...c,\r\n notifiedReceiptUserIds: [...c.notifiedReceiptUserIds, userId]\r\n }\r\n return c;\r\n })\r\n ];\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n setSearchQuery = (value: string) => {\r\n this.searchQuery = value;\r\n }\r\n\r\n getSearchQuery = () => {\r\n return this.searchQuery;\r\n }\r\n\r\n reset = () => {\r\n this.setPendingNotificationConversationIds([]);\r\n this.total= 0;\r\n this.conversations = [];\r\n this.isLoadingConversation= false;\r\n this.searchQuery= '';\r\n }\r\n}","import { makeAutoObservable } from \"mobx\";\r\nimport { CardCommentFormValues } from \"../models/cardComment\";\r\nimport { store } from \"./store\";\r\n\r\nexport default class CardCommentStore {\r\n isEdit: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n add = async (cardComment: CardCommentFormValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('SendComment', cardComment);\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n update = async (cardComment: CardCommentFormValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateComment', cardComment);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n delete = async (commentId: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteComment', commentId);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n setEdit = (isEdit: boolean) =>{\r\n this.isEdit = isEdit;\r\n }\r\n}\r\n","import { CardChecklistFormValues, CardChecklistItemFormValues } from \"../models/cardChecklist\";\r\nimport { store } from \"./store\";\r\n\r\nexport default class CardChecklistStore {\r\n\r\n add = async (cardChecklist: CardChecklistFormValues) => {\r\n return store.boardStore.hubConnection?.invoke('SendChecklist', cardChecklist);\r\n }\r\n\r\n update = async (cardChecklist: CardChecklistFormValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateChecklist', cardChecklist);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n deleteChecklist = async (checklistId: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteChecklist', checklistId);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n addItem = async (cardChecklistItem: CardChecklistItemFormValues) => {\r\n return store.boardStore.hubConnection?.invoke('SendChecklistItem', cardChecklistItem);\r\n }\r\n\r\n updateItem = async (cardChecklistItem: CardChecklistItemFormValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateChecklistItem', cardChecklistItem);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n deleteItem = async (itemId: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteChecklistItem', itemId);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n}\r\n","import { makeAutoObservable, runInAction } from \"mobx\";\r\nimport { toast } from \"react-toastify\";\r\nimport agent from \"../api/agents\";\r\nimport { CardAttachmentFormValues } from \"../models/cardAttachment\";\r\nimport { store } from \"./store\";\r\n\r\nexport default class CardAttachmentStore {\r\n uploading: boolean = false;\r\n showAllAttachments: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n upload = async (file: Blob, cardId: string) => {\r\n this.uploading = true;\r\n try {\r\n const response = await agent.CardAttachments.upload(file, cardId);\r\n if (response) {\r\n store.boardStore.hubConnection!.invoke('AddCardAttachments', cardId);\r\n runInAction(() => this.uploading = false);\r\n return response\r\n } else {\r\n return Promise.reject();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n runInAction(() => this.uploading = false);\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n uploadMultiple = async (files: File[], cardId: string, clientId: string) => {\r\n this.uploading = true;\r\n try {\r\n const response = await agent.CardAttachments.uploadMultiple(files, cardId, clientId);\r\n if (response) {\r\n store.boardStore.hubConnection!.invoke('AddCardAttachments', cardId);\r\n runInAction(() => this.uploading = false);\r\n return response\r\n } else {\r\n return Promise.reject();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n runInAction(() => this.uploading = false);\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n getBlob = async (attachmentId: string) => {\r\n try {\r\n return await agent.CardAttachments.getAttachment(attachmentId, {\r\n responseType: 'blob'\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n add = async (cardAttachment: CardAttachmentFormValues) => {\r\n return store.boardStore.hubConnection?.invoke('SendAttachment', cardAttachment);\r\n }\r\n\r\n update = async (cardAttachment: CardAttachmentFormValues) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateAttachment', cardAttachment);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n updateFileName = async (fileName: string, id: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateAttachmentFileName', { fileName: fileName, id: id });\r\n return Promise.resolve();\r\n } catch (e) {\r\n console.log(e);\r\n return Promise.reject();\r\n }\r\n }\r\n\r\n deleteAttachment = async (attachmentId: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteAttachment', attachmentId);\r\n runInAction(() => toast.success('Attachment was deleted successfully.'));\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n setShowAllAttachments = (status: boolean) => {\r\n this.showAllAttachments = status;\r\n };\r\n \r\n}\r\n","import { runInAction } from \"mobx\";\r\nimport { toast } from \"react-toastify\";\r\nimport agent from \"../api/agents\";\r\nimport { CommentAttachmentFormValues } from \"../models/commentAttachment\";\r\nimport { store } from \"./store\";\r\n\r\nexport default class CommentAttachmentStore {\r\n uploading: boolean = false;\r\n selecting: boolean = false;\r\n\r\n add = async (cardId: string, file: File[], message: string, clientId: string) => {\r\n this.uploading = true;\r\n try {\r\n const commentId = await agent.CommentAttachments.add(cardId, file, message, clientId);\r\n if (commentId) {\r\n store.boardStore.hubConnection!.invoke('LoadComments', cardId);\r\n runInAction(() => this.uploading = false);\r\n return commentId\r\n } else {\r\n return Promise.reject();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n runInAction(() => this.uploading = false);\r\n return Promise.reject();\r\n }\r\n }\r\n\r\n updateComment = async (cardId: string, commentId: string, file: File[], message: string, clientId: string) => {\r\n this.uploading = true;\r\n try {\r\n const response = await agent.CommentAttachments.update(cardId, commentId, file, message, clientId);\r\n if (response) {\r\n store.boardStore.hubConnection!.invoke('LoadComments', cardId);\r\n runInAction(() => this.uploading = false);\r\n return response\r\n } else {\r\n return Promise.reject();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n runInAction(() => this.uploading = false);\r\n return Promise.reject();\r\n }\r\n }\r\n\r\n getBlob = async (attachmentId: string) => {\r\n try {\r\n return await agent.CommentAttachments.getAttachment(attachmentId, {\r\n responseType: 'blob'\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n updateFileName = async (fileName: string, id: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateCommentAttachmentFileName', { fileName: fileName, id: id });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n deleteAttachment = async (attachmentId: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteCommentAttachment', attachmentId);\r\n runInAction(() => toast.success('Attachment was deleted successfully.'));\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n}\r\n","import { makeAutoObservable, reaction, runInAction } from 'mobx';\r\n\r\ninterface PopOver {\r\n body: JSX.Element | null;\r\n anchorEl: any;\r\n}\r\n\r\nexport default class PopoverStore {\r\n popOver: PopOver = {\r\n body: null,\r\n anchorEl: null\r\n }\r\n\r\n isOpen: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n openPopover = (content: JSX.Element, target: EventTarget) => {\r\n this.popOver.anchorEl = target;\r\n this.popOver.body = content;\r\n runInAction(() => this.isOpen = Boolean(target))\r\n }\r\n\r\n closePopover = () => {\r\n this.popOver.anchorEl = null;\r\n this.popOver.body = null;\r\n runInAction(() => this.isOpen = false)\r\n }\r\n}","import { runInAction } from \"mobx\";\r\nimport { toast } from \"react-toastify\";\r\nimport agent from \"../api/agents\";\r\nimport { ChatAttachmentFormValues } from \"../models/chatAttachment\";\r\nimport { store } from \"./store\";\r\n\r\nexport default class ChatAttachmentStore {\r\n uploading: boolean = false;\r\n selecting: boolean = false;\r\n IsAttachmentClicked: boolean = false;\r\n\r\n add = async (file: File[], message: string) => {\r\n this.uploading = true;\r\n try {\r\n const commentId = await agent.ChatAttachments.add(file, message);\r\n if (commentId) {\r\n //store.boardStore.hubConnection!.invoke('LoadComments', cardId);\r\n runInAction(() => this.uploading = false);\r\n return commentId\r\n } else {\r\n return Promise.reject();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n runInAction(() => this.uploading = false);\r\n return Promise.reject();\r\n }\r\n }\r\n\r\n updateComment = async (cardId: string, commentId: string, file: File[], message: string, clientId: string) => {\r\n this.uploading = true;\r\n try {\r\n const response = await agent.ChatAttachments.update(cardId, commentId, file, message, clientId);\r\n if (response) {\r\n store.boardStore.hubConnection!.invoke('LoadComments', cardId);\r\n runInAction(() => this.uploading = false);\r\n return response\r\n } else {\r\n return Promise.reject();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n runInAction(() => this.uploading = false);\r\n return Promise.reject();\r\n }\r\n }\r\n\r\n getBlob = async (attachmentId: string) => {\r\n if (this.IsAttachmentClicked) {\r\n try {\r\n return await agent.ChatAttachments.getAttachment(attachmentId, {\r\n responseType: 'blob'\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n \r\n }\r\n getImageBlob = async (attachmentId: string) => {\r\n try {\r\n return await agent.ChatAttachments.getAttachment(attachmentId, {\r\n responseType: 'blob'\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n updateFileName = async (fileName: string, id: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('UpdateChatAttachmentFileName', { fileName: fileName, id: id });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n deleteAttachment = async (attachmentId: string) => {\r\n try {\r\n store.boardStore.hubConnection?.invoke('DeleteChatAttachment', attachmentId);\r\n runInAction(() => toast.success('Attachment was deleted successfully.'));\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n setIsAttachmentClick = (val: boolean) => {\r\n this.IsAttachmentClicked = val;\r\n }\r\n}\r\n","import { makeAutoObservable, runInAction } from \"mobx\";\r\nimport { toast } from \"react-toastify\";\r\nimport agent from \"../api/agents\";\r\nimport { FilterValues } from \"../models/common/filterValues\";\r\nimport { EditPostForm, Post, PostForm } from \"../models/post\";\r\nimport { store } from \"./store\";\r\n\r\nexport default class PostStore {\r\n posts: Post[] = [];\r\n filters: FilterValues = {\r\n pageNumber: 0,\r\n pageSize: 10\r\n }\r\n isLoadingPosts = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n get = async () => {\r\n this.isLoadingPosts = true;\r\n this.filters.pageNumber++;\r\n let posts = await agent.Posts.filter(this.filters.pageNumber, this.filters.pageSize, store.userStore.user?.clientId);\r\n\r\n runInAction(() => {\r\n this.posts = [...this.posts, ...posts]\r\n this.isLoadingPosts = false;\r\n })\r\n }\r\n\r\n add = ({ message, clientId, files }: PostForm) => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n agent.Posts.post({\r\n message: message,\r\n clientId: clientId\r\n }).then(async postId => {\r\n if (files && files.length > 0) {\r\n let postAttachmentsPromise = new Array>();\r\n\r\n files.forEach(file => {\r\n let formData = new FormData();\r\n formData.append(`File`, file);\r\n formData.append(`PostId`, postId);\r\n\r\n let promise = agent.PostAttachments.upload(formData);\r\n\r\n postAttachmentsPromise.push(promise);\r\n });\r\n\r\n Promise.all(postAttachmentsPromise).then(async () => {\r\n let post = await agent.Posts.getById(postId);\r\n console.log(post);\r\n this.posts = [post, ...this.posts];\r\n resolve(postId);\r\n })\r\n }\r\n else {\r\n let post = await agent.Posts.getById(postId);\r\n this.posts = [post, ...this.posts]\r\n resolve(postId);\r\n }\r\n }).catch(e => {\r\n console.log(e);\r\n reject(e);\r\n })\r\n\r\n } catch (e) {\r\n console.log(e);\r\n reject(e);\r\n }\r\n });\r\n }\r\n\r\n update = async (post: EditPostForm) => {\r\n try {\r\n let promises = new Array>();\r\n\r\n let update = agent.Posts.update({\r\n id: post.id,\r\n message: post.message\r\n });\r\n\r\n promises.push(update);\r\n\r\n post.deletedFilesIds?.forEach(id => {\r\n promises.push(agent.PostAttachments.delete(id))\r\n });\r\n\r\n post.files?.forEach(file => {\r\n let formData = new FormData();\r\n formData.append(`File`, file);\r\n formData.append(`PostId`, post.id);\r\n\r\n let promise = agent.PostAttachments.upload(formData);\r\n\r\n promises.push(promise);\r\n });\r\n\r\n try {\r\n await Promise.all(promises);\r\n\r\n let updatedPost = await agent.Posts.getById(post.id);\r\n this.posts = this.posts.map(post => {\r\n if (updatedPost.id !== post.id) {\r\n return post;\r\n }\r\n\r\n return updatedPost;\r\n });\r\n } catch (e) {\r\n toast.error('Post exceeded the maximum limit');\r\n Promise.reject(e);\r\n }\r\n } catch (e) {\r\n Promise.reject(e);\r\n }\r\n }\r\n\r\n delete = async (postId: string) => {\r\n try {\r\n await agent.Posts.delete(postId);\r\n this.posts = this.posts.filter(p => p.id !== postId);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n getAttachements = async (id: string) => {\r\n return await agent.Posts.getAttachments(id);\r\n }\r\n\r\n resetPosts = () => {\r\n this.posts = [];\r\n this.filters = {\r\n pageSize: 10,\r\n pageNumber: 0\r\n }\r\n }\r\n}","import { makeAutoObservable } from \"mobx\";\r\nimport agent from \"../api/agents\";\r\nimport { Media } from \"../models/common/media\";\r\n\r\nexport default class mediaStore {\r\n media: Media[] = [];\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n getPostAttachment = async (id: string) => {\r\n let media = this.getById(id);\r\n\r\n if (!media) {\r\n this.media = [...this.media, {\r\n id: id,\r\n url: '',\r\n }]\r\n\r\n let blob = await agent.PostAttachments.get(id);\r\n\r\n media = this.getById(id);\r\n if (media) {\r\n var urlCreator = window.URL || window.webkitURL;\r\n var url = urlCreator.createObjectURL(blob);\r\n media.url = url;\r\n media.type = blob.type;\r\n };\r\n \r\n }\r\n\r\n return this.getById(id);\r\n }\r\n\r\n getProfilePicture = async (id: string) => {\r\n try {\r\n let media = this.getById(id);\r\n\r\n if (!media) {\r\n let blob = await agent.Account.getProfilePhoto(id, {\r\n responseType: 'blob'\r\n });\r\n\r\n var urlCreator = window.URL || window.webkitURL;\r\n var url = urlCreator.createObjectURL(blob);\r\n\r\n media = {\r\n id: id,\r\n url\r\n }\r\n\r\n this.media.push(media)\r\n }\r\n\r\n return media\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n private getById = (id: string) => {\r\n return this.media.find(m => m.id === id);\r\n }\r\n}","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport { Item, ItemContent } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { ScheduleNotification } from '../../app/models/scheduleNotification';\r\n\r\n//#region Styling\r\n\r\nconst StyledItemContent = styled(ItemContent)`\r\n&& {\r\n border-top: 1px solid #e5e5e5 !important;\r\n border-bottom: 1px solid #e5e5e5 !important;\r\n padding: 10px !important;\r\n}\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n&& {\r\n margin: 0 !important;\r\n}\r\n`;\r\n\r\nconst StyledItemTitle = styled.span`\r\n&& {\r\n display: block;\r\n font-weight: bold;\r\n font-size: 15px;\r\n font-family: sans-serif;\r\n}\r\n`;\r\n\r\nconst StyledItemDate = styled.span`\r\n&& {\r\n display: block;\r\n font-size: 13px;\r\n font-family: sans-serif;\r\n color: #939393;\r\n}\r\n`;\r\n\r\nconst CenteredSpan = styled.span`\r\n&& {\r\n display: inline-block;\r\n float: left;\r\n margin-left: 31px;\r\n}\r\n`;\r\n\r\nconst StyledItemGroup = styled(Item.Group)`\r\n&& {\r\n max-height: 245px;\r\n overflow-y: auto;\r\n}\r\n`;\r\n\r\n//#endregion\r\n\r\n\r\ninterface Props {\r\n notifications: ScheduleNotification[];\r\n}\r\n\r\n\r\nconst NotificationList = ({ notifications }: Props) => {\r\n notifications = [...notifications].sort((a: ScheduleNotification, b: ScheduleNotification) => {\r\n return new Date(a.date).getTime() - new Date(b.date).getTime();\r\n });\r\n \r\n return (\r\n <>\r\n \r\n {notifications.map((notification, index) => {\r\n let date = new Date(notification.date + 'Z'),\r\n formattedDate = moment(date).format('MMM D, yyyy hh:mm a');\r\n\r\n \r\n\r\n return \r\n \r\n \r\n {notification.cardTitle}\r\n {formattedDate}\r\n \r\n \r\n \r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(NotificationList);","import { observer } from 'mobx-react-lite';\r\nimport { Button, Icon } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { ScheduleNotification } from '../../app/models/scheduleNotification';\r\nimport { useStore } from '../../app/stores/store';\r\nimport NotificationList from './NotificationList';\r\n\r\n//#region Styling\r\nconst StyledHeader = styled.h5`\r\n&& {\r\n text-align: center;\r\n font-size: 23px;\r\n font-weight: bold;\r\n}\r\n`;\r\n\r\nconst StyledSpan = styled.span`\r\n&& {\r\n}\r\n`;\r\n\r\nconst StyledTaskTitle = styled.span`\r\n&& {\r\n display: block;\r\n color: #ababab;\r\n font-weight: bold;\r\n text-align: center;\r\n margin-bottom: 10px;\r\n font-size: 18px;\r\n margin-top: 18px;\r\n}\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n&& {\r\n padding-left: 11px !important;\r\n padding-right: 11px !important;\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n`;\r\n//#endregion\r\n\r\n\r\ninterface Props {\r\n notifications: ScheduleNotification[];\r\n}\r\n\r\nconst NotificationDetails = ({ notifications }: Props) => { \r\n const { notificationModalStore } = useStore();\r\n const { closeModal } = notificationModalStore;\r\n\r\n \r\n\r\n const handleCloseClick = () => {\r\n closeModal();\r\n }\r\n \r\n return (\r\n <>\r\n\r\n \r\n \r\n \r\n Reminder\r\n \r\n \r\n OK\r\n \r\n );\r\n}\r\n\r\nexport default observer(NotificationDetails);","import { observer } from 'mobx-react-lite';\r\nimport { Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../app/stores/store';\r\n\r\nconst StyledModalContent = styled(Modal.Content)`\r\n && {\r\n border-radius: 9px !important;\r\n background-color: #f4f5f7 !important;\r\n padding-left:0 !important;\r\n padding-right:0 !important;\r\n }\r\n`;\r\n\r\nconst StyledModal = styled(Modal)`\r\n && {\r\n border-radius: 9px !important;\r\n background-color: #f4f5f7 !important;\r\n }\r\n`;\r\n\r\nfunction NotificationModalContainer() {\r\n const { notificationModalStore } = useStore()\r\n\r\n return (\r\n \r\n \r\n {notificationModalStore.modal.body}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(NotificationModalContainer);","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { MdOutlineClose } from 'react-icons/md';\r\nimport { Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../stores/store';\r\n\r\nconst CloseIcon = styled(MdOutlineClose)`\r\n border-radius: 4px;\r\n color: #42526e;\r\n height: 32px;\r\n margin: 4px;\r\n overflow: hidden;\r\n padding: 4px;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n transition: background-color 85ms,color 85ms;\r\n width: 32px;\r\n z-index: 2;\r\n cursor:pointer;\r\n\r\n &:hover {\r\n background-color: #091e4214;\r\n color: #42526e;\r\n }\r\n`;\r\n\r\nconst StyledModalContent = styled(Modal.Content)`\r\n && {\r\n border-radius: 16px;\r\n background-color: #f4f5f7 !important;\r\n }\r\n`;\r\n\r\nfunction ModalContainer() {\r\n const { modalStore } = useStore()\r\n\r\n const handleClick = () => {\r\n modalStore.closeModal();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {modalStore.modal.body}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(ModalContainer);","import { Popover } from '@material-ui/core';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { useStore } from '../../stores/store';\r\nimport styled from 'styled-components';\r\nimport { MdOutlineClose } from 'react-icons/md';\r\n\r\nconst CloseIcon = styled(MdOutlineClose)`\r\n border-radius: 4px;\r\n color: #42526e;\r\n height: 32px;\r\n margin: 4px;\r\n overflow: hidden;\r\n padding: 4px;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n transition: background-color 85ms,color 85ms;\r\n width: 32px;\r\n z-index: 2;\r\n cursor:pointer;\r\n\r\n &:hover {\r\n background-color: #091e4214;\r\n color: #42526e;\r\n }\r\n`;\r\n\r\nconst StyledModalContent = styled.div`\r\n && {\r\n background-color: #fff;\r\n }\r\n`;\r\n\r\nconst PopoverContainer = () => {\r\n const { popOverStore } = useStore()\r\n const { isOpen, popOver, closePopover } = popOverStore;\r\n\r\n return (\r\n \r\n closePopover()} />\r\n \r\n {popOverStore.popOver.body}\r\n \r\n \r\n );\r\n\r\n}\r\n\r\nexport default observer(PopoverContainer);","import React, { ChangeEvent, useState } from 'react';\r\nimport { Header, Icon, Input } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\n\r\nconst ContainerStyled = styled.div<{ searchLabel?: string }>`\r\n width:100%;\r\n display: flex;\r\n flex-direction: ${p => p.searchLabel ? 'column' : 'row'};\r\n align-content: center;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n`;\r\n\r\nconst InputContainer = styled.div`\r\n width:100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-content: center;\r\n align-items: baseline;\r\n justify-content: flex-start;\r\n`;\r\n\r\nconst SearchStyled = styled(Input)`\r\n flex-grow:1;\r\n input {\r\n border:none !important;\r\n }\r\n`;\r\n\r\nconst StyleIcon = styled(Icon)`\r\n font-size: 1.3em !important;\r\n color: #8d9eb4 !important;\r\n`;\r\n\r\n\r\ninterface Props {\r\n toolbarProps: any,\r\n searchLabel?: string;\r\n}\r\n\r\nconst SearchToolbar = ({ toolbarProps, searchLabel }: Props) => {\r\n const [query, setQuery] = useState(toolbarProps.searchText);\r\n\r\n const handleClear = () => {\r\n toolbarProps.dataManager.searchText = '';\r\n setQuery('');\r\n toolbarProps.onSearchChanged('');\r\n }\r\n\r\n const handleChange = (e: ChangeEvent) => {\r\n let element = e.target as HTMLInputElement;\r\n const value = element.value ?? '';\r\n setQuery(value);\r\n }\r\n\r\n return (\r\n \r\n {searchLabel && ()}\r\n \r\n \r\n {\r\n if (ev.key === 'Enter') {\r\n let element = ev.target as HTMLInputElement;\r\n const value = element.value ?? '';\r\n toolbarProps.dataManager.searchText = value;\r\n toolbarProps.onSearchChanged(value ? value : '');\r\n ev.preventDefault();\r\n }\r\n }}\r\n\r\n icon={}\r\n placeholder='Search name...'\r\n />\r\n \r\n \r\n\r\n );\r\n}\r\n\r\nexport default SearchToolbar;","import React, { useState } from 'react';\r\nimport SemanticDatepicker from 'react-semantic-ui-datepickers';\r\nimport { SemanticDatepickerProps } from 'react-semantic-ui-datepickers/dist/types';\r\nimport styled from 'styled-components';\r\n\r\n\r\nconst ContainerStyled = styled.div`\r\n width:100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n\r\n & .field input {\r\n width: 245px !important;\r\n }\r\n\r\n`;\r\n\r\ninterface Props {\r\n toolbarProps: any,\r\n dateFilterLabel?: string;\r\n onDateRangeFilter?: (startDate?: Date, endDate?: Date) => void | undefined;\r\n dateRangeValues?: Date[];\r\n}\r\n\r\nconst DateRangeFilter = ({ toolbarProps, dateFilterLabel, onDateRangeFilter, dateRangeValues }: Props) => {\r\n let initialValues:Date[]| null = null;\r\n if (dateRangeValues && dateRangeValues![0] != null && dateRangeValues![1] != null)\r\n initialValues = dateRangeValues!;\r\n\r\n const [dates, setDates] = useState(initialValues!);\r\n\r\n const handleDatesChange = (event: React.SyntheticEvent | undefined, data: SemanticDatepickerProps) => {\r\n const dates = data.value as Date[];\r\n setDates(dates);\r\n if (onDateRangeFilter) {\r\n if (dates)\r\n onDateRangeFilter(dates[0], dates[1]);\r\n else\r\n onDateRangeFilter(undefined, undefined);\r\n }\r\n };\r\n return (\r\n \r\n {dateFilterLabel && ()}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DateRangeFilter;","import React, { useState } from 'react';\r\nimport SemanticDatepicker from 'react-semantic-ui-datepickers';\r\nimport { SemanticDatepickerProps } from 'react-semantic-ui-datepickers/dist/types';\r\nimport Select, { MultiValue, Props as SelectProps } from 'react-select';\r\nimport styled from 'styled-components';\r\nimport { OptionSelect } from '../../models/option';\r\nimport { useStore } from '../../stores/store';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\n\r\nconst ContainerStyled = styled.div`\r\n width:100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n\r\n & .field input {\r\n width: 245px !important;\r\n }\r\n`;\r\n\r\nconst selectStyles = {\r\n container: (provided, state) => ({\r\n ...provided,\r\n minWidth: '245px',\r\n maxWidth: '600px'\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '60px'\r\n }),\r\n menuList: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '190px'\r\n }),\r\n menu: (provided, state) => ({\r\n ...provided,\r\n zIndex: 11\r\n }),\r\n}\r\n\r\ninterface Props {\r\n toolbarProps: any,\r\n userFilterLabel?: string;\r\n onUserFilter?: (userIds: string[]) => void | undefined;\r\n userValues?: OptionSelect[];\r\n userFilterPlaceholder?: string;\r\n}\r\n\r\nconst UserFilter = ({ toolbarProps, userFilterLabel, onUserFilter, userValues, userFilterPlaceholder }: Props) => {\r\n const { dailyReportStore } = useStore();\r\n const { currentUserIds, setCurrentUserIds, isLoadingUserEmployees } = dailyReportStore;\r\n\r\n const handleUserIdsChange = (newValue: MultiValue<{ value: string }>) => {\r\n setCurrentUserIds(newValue);\r\n if (newValue.length) {\r\n let userIds = newValue.map(v => v.value);\r\n onUserFilter!(userIds);\r\n } else {\r\n onUserFilter!([]);\r\n }\r\n };\r\n return (\r\n \r\n {userFilterLabel && ()}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(UserFilter);","import zIndex from '@material-ui/core/styles/zIndex';\r\nimport React, { useState } from 'react';\r\nimport { DropdownProps, Select } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\n\r\n\r\nconst ContainerStyled = styled.div`\r\n width:100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n`;\r\n\r\ninterface Props {\r\n dateFilterLabel?: string;\r\n onOptionFilter?: (value: string) => void | undefined;\r\n valueProps?: string;\r\n options: any;\r\n placeholdder: string;\r\n}\r\n\r\nconst OptionFilter = ({ dateFilterLabel, onOptionFilter, valueProps, options, placeholdder }: Props) => {\r\n\r\n const [value, setValue] = useState(valueProps);\r\n\r\n const handleDatesChange = (event: React.SyntheticEvent,d:DropdownProps) => {\r\n if (onOptionFilter) {\r\n setValue(d.value as string);\r\n onOptionFilter(d.value as string);\r\n }\r\n };\r\n return (\r\n \r\n {dateFilterLabel && ()}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default OptionFilter;","import { makeStyles, Paper } from '@material-ui/core';\r\nimport MaterialTable, { Action, Column, MaterialTableProps, Query, QueryResult } from 'material-table';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React, { CSSProperties, useEffect, useRef } from 'react';\r\nimport { Header } from 'semantic-ui-react';\r\nimport SearchToolbar from './SearchToolbar';\r\nimport DateRangeFilter from './DateRangeFilter';\r\nimport UserFilter from './UserFilter';\r\nimport OptionFilter from './OptionFilter';\r\nimport { OptionSelect } from '../../models/option';\r\n\r\ninterface Props extends MaterialTableProps {\r\n columns: Column[];\r\n total: number;\r\n data: T[] | ((q: Query) => Promise>);\r\n onChangePage: (page: number) => void;\r\n pageSize: number;\r\n pageNumber: number;\r\n isLoading?: boolean;\r\n actions?: ((rowData: T) => Action)[];\r\n onSearchChange?: ((searchText: string) => void) | undefined;\r\n search?: boolean;\r\n toolbar?: boolean;\r\n searchPlaceholder?: string;\r\n searchLabel?: string;\r\n style?: CSSProperties;\r\n sorting?: boolean;\r\n draggable?: boolean;\r\n dateFilterLabel?: string;\r\n onDateRangeFilter?: (startDate?: Date, endDate?: Date) => void | undefined;\r\n dateRangeValues?: Date[];\r\n dateRangeFilter?: boolean;\r\n customOptionFilters?: OptionFilter[]\r\n userFilterLabel?: string;\r\n onUserFilter?: (userIds: string[]) => void | undefined;\r\n userValues?: OptionSelect[];\r\n userFilter?: boolean;\r\n userFilterPlaceholder?: string;\r\n onRowClick?: (event, rowdata) => void | undefined;\r\n}\r\n\r\ninterface options {\r\n value: string,\r\n text: string,\r\n}\r\n\r\ninterface OptionFilter {\r\n onChange: (value: any) => void | undefined;\r\n options: options[];\r\n value?: string;\r\n label: string;\r\n placeholder: string;\r\n}\r\n\r\nfunction PaginatedTable(props: Props) {\r\n\r\n const useStyles = makeStyles({\r\n tableTheme: {\r\n boxShadow: 'none',\r\n '& > div:nth-child(1)': {\r\n borderRadius: props.toolbar ? '0' : '16px',\r\n '& > div': {\r\n padding: props.toolbar ? 0 : '0 8px',\r\n }\r\n },\r\n '& > div:nth-child(2)': {\r\n '& > div': {\r\n padding: props.toolbar ? '0 8px' : 0,\r\n }\r\n },\r\n '& .MuiTablePagination-root': {\r\n borderBottom: 'none'\r\n },\r\n '& .MuiTablePagination-toolbar': {\r\n minHeight: '60px',\r\n },\r\n '& .MuiTablePagination-toolbar .MuiButton-label': {\r\n fontSize: '1rem'\r\n },\r\n '& .MuiTablePagination-toolbar .MuiIconButton-label > span': {\r\n fontSize: '1.6rem'\r\n }\r\n },\r\n tableBody: {\r\n backgroundColor: '#555'\r\n }\r\n });\r\n\r\n const classes = useStyles();\r\n\r\n const addCellStyleInColumns = () => {\r\n return props.columns.map((c, i) => {\r\n if (i == 0) {\r\n if (c.cellStyle) {\r\n return {\r\n ...c,\r\n cellStyle: { ...c.cellStyle, borderBottom: 'none', paddingLeft: '30px' },\r\n headerStyle: { ...c.headerStyle, paddingLeft: '30px' }\r\n }\r\n }\r\n else {\r\n return {\r\n ...c,\r\n cellStyle: { borderBottom: 'none', paddingLeft: '30px' },\r\n headerStyle: { paddingLeft: '30px' }\r\n }\r\n }\r\n }\r\n else if (!props.actions && i + 1 == props.columns.length) {\r\n if (c.cellStyle) {\r\n return {\r\n ...c,\r\n cellStyle: { ...c.cellStyle, borderBottom: 'none', paddingRight: '30px' },\r\n headerStyle: { ...c.headerStyle, paddingRight: '30px' }\r\n }\r\n }\r\n else\r\n return {\r\n ...c,\r\n cellStyle: { borderBottom: 'none', paddingRight: '30px' },\r\n headerStyle: { paddingRight: '30px' }\r\n }\r\n }\r\n else {\r\n if (c.cellStyle) {\r\n return {\r\n ...c,\r\n cellStyle: { ...c.cellStyle, borderBottom: 'none' },\r\n headerStyle: { ...c.headerStyle }\r\n }\r\n }\r\n else\r\n return {\r\n ...c,\r\n cellStyle: { borderBottom: 'none' },\r\n }\r\n }\r\n });\r\n }\r\n\r\n return (\r\n \r\n onRowClick={props.onRowClick}\r\n columns={addCellStyleInColumns()}\r\n actions={props.actions}\r\n page={props.pageNumber > 0 ? props.pageNumber - 1 : props.pageNumber}\r\n totalCount={props.total ?? 0}\r\n localization={{\r\n body: {\r\n emptyDataSourceMessage:
No Records
,\r\n },\r\n toolbar: { searchPlaceholder: props.searchPlaceholder ?? 'Search name...' }\r\n }}\r\n onChangePage={(p) => props.onChangePage(p + 1)}\r\n onSearchChange={props.search ? props.onSearchChange : undefined}\r\n components={{\r\n Toolbar: (toolbarProps) => (\r\n \r\n {props.search &&\r\n ()}\r\n {props.customOptionFilters && props.customOptionFilters.map((optionFilter) => {\r\n return ();\r\n })}\r\n {props.userFilter &&\r\n ()\r\n }\r\n {props.dateRangeFilter &&\r\n ()}\r\n \r\n \r\n ),\r\n Container: (props) => ,\r\n }}\r\n data={props.data}\r\n isLoading={props.isLoading ?? false}\r\n style={{ borderRadius: '16px', ...props.style }}\r\n options={{\r\n paginationType: 'stepped',\r\n actionsColumnIndex: props.actions ? - 1 : undefined,\r\n showTitle: false,\r\n pageSize: props.pageSize,\r\n pageSizeOptions: [props.pageSize],\r\n loadingType: 'linear',\r\n debounceInterval: 500,\r\n tableLayout: 'auto',\r\n headerStyle: {\r\n fontWeight: 600, fontSize: '1.1em',\r\n borderBottom: '1px solid rgb(224 224 224)',\r\n },\r\n searchFieldAlignment: 'left',\r\n searchFieldVariant: 'standard',\r\n searchFieldStyle: { padding: '10px', width: '100%' },\r\n toolbarButtonAlignment: undefined,\r\n search: props.search || false,\r\n toolbar: props.toolbar || false,\r\n maxBodyHeight: 'fit-content',\r\n overflowY: 'hidden',\r\n padding: 'default',\r\n emptyRowsWhenPaging: false,\r\n actionsCellStyle: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n padding: `${props.actions?.length ? 10 / props.actions.length : 0}px 20px`,\r\n width: '100%',\r\n marginBottom: '-1px',\r\n borderBottom: 'none',\r\n },\r\n rowStyle: (_data: any, index: number, _level: number) => {\r\n return index % 2 ? { backgroundColor: '#f3f9ff', padding: '0 20px' } : { padding: '0 20px' };\r\n },\r\n filterCellStyle: { border: 'none' },\r\n sorting: props.sorting,\r\n draggable: props.draggable,\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default observer(PaginatedTable);","import styled from 'styled-components';\r\n\r\nexport const TextOverflow = styled.div`\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport default TextOverflow;","import { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { Grid, Header, Item } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport { DailyReport } from '../../app/models/employeeDailyReport';\r\n\r\nconst dateHelper = new DateHelper();\r\n//#region Styling\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0 !important;\r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:16px 0 !important;\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n dailyReport: DailyReport;\r\n}\r\n\r\nconst DailyReportDetails = ({ dailyReport }: Props) => {\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {dailyReport.user.name}\r\n
\r\n \r\n {dateHelper.customFormatLocalDate(dailyReport.timeRecord.timeOutDate.toString(), 'MMMM D, YYYY (ddd)')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {dailyReport.summary}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default observer(DailyReportDetails);","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { FaRegEye } from 'react-icons/fa';\r\nimport { Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport PaginatedTable from '../../app/common/table/PaginatedTable';\r\nimport { TextOverflow } from '../../app/common/text/TextOverflow';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport { FilterValues } from '../../app/models/common/filterValues';\r\nimport { DailyReport, DailyReportFilterValues } from '../../app/models/employeeDailyReport';\r\nimport { useStore } from '../../app/stores/store';\r\nimport DailyReportDetails from './DailyReportDetails';\r\n\r\nconst dateHelper = new DateHelper();\r\nconst swal = withReactContent(Swal);\r\n\r\n//#region Styling\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\n//#endregion\r\n\r\nconst DailyReportRequestList = () => {\r\n const { dailyReportStore, modalStore } = useStore();\r\n const { filterDailyReports, isDailyReportListLoading, dailyReports,\r\n dailyReportsTotal, loadUserEmployees, isLoadingUserEmployees, userOptionValues, userEmployees } = dailyReportStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\",\r\n userIds: []\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n const handleDateRangeFilter = (startDate?: Date, endDate?: Date) => {\r\n if (startDate && endDate) {\r\n if (filterValues.startDate != startDate && filterValues.endDate != endDate) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, startDate: startDate, endDate: endDate });\r\n }\r\n else\r\n setFilterValues({ ...filterValues, startDate: startDate, endDate: endDate });\r\n } else if (startDate == null && endDate == null) {\r\n setFilterValues({ ...filterValues, startDate: startDate, endDate: endDate });\r\n }\r\n }\r\n\r\n const handleUserFilter = (userIds: string[]) => {\r\n const currentUserIds = userIds.slice().sort();\r\n const hasNotChangeUserIds = filterValues.userIds.length === userIds.length && filterValues.userIds.slice().sort().every(function (value, index) {\r\n return value === currentUserIds[index];\r\n });\r\n\r\n if (hasNotChangeUserIds)\r\n setFilterValues({ ...filterValues, userIds: userIds })\r\n else\r\n setFilterValues({ ...filterValues, pageNumber:1, userIds: userIds })\r\n\r\n }\r\n\r\n //THIS WILL RUN ON LOAD OF COMPONENTS\r\n useEffect(() => {\r\n loadUserEmployees('');\r\n return () => {\r\n dailyReportStore.reset(); //CLEAN UP AFTER UNMOUNT \r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n filterDailyReports(filterValues);\r\n }, [filterValues])\r\n\r\n return (\r\n \r\n \r\n Daily Reports\r\n \r\n \r\n columns={[\r\n { title: 'Employee', field: 'user.name' },\r\n { title: 'Date', render: (data: DailyReport) => dateHelper.customFormatLocalDate(data.timeRecord.timeOutDate.toString(), 'MMMM D, YYYY (ddd)') },\r\n {\r\n title: 'Summary',\r\n render: (data: DailyReport) => (\r\n {data.summary}\r\n )\r\n }\r\n ]}\r\n isLoading={isDailyReportListLoading}\r\n data={dailyReports!}\r\n total={dailyReportsTotal}\r\n onChangePage={handleOnChangePage}\r\n pageSize={20}\r\n pageNumber={filterValues.pageNumber}\r\n onSearchChange={(searchText: string) => {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }}\r\n toolbar={true}\r\n search={false}\r\n sorting={false}\r\n actions={[\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'View Daily Report',\r\n onClick: e => modalStore.openModal()\r\n }),\r\n ]}\r\n onDateRangeFilter={handleDateRangeFilter}\r\n dateRangeValues={[filterValues.startDate!, filterValues.endDate!]}\r\n dateRangeFilter={true}\r\n dateFilterLabel='Filter by Date'\r\n onUserFilter={handleUserFilter}\r\n userFilterLabel='Filter by Employee'\r\n userValues={userOptionValues}\r\n userFilter={true}\r\n userFilterPlaceholder='Select Employee'\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default observer(DailyReportRequestList);","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport PaginatedTable from '../../app/common/table/PaginatedTable';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport { FilterValues } from '../../app/models/common/filterValues';\r\nimport { Option } from '../../app/models/option';\r\nimport { TimeRecord, TimeRecordFilterValues } from '../../app/models/timeRecord';\r\nimport { useStore } from '../../app/stores/store';\r\n\r\nconst dateHelper = new DateHelper();\r\n\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: 1rem 3rem 5rem 3rem;\r\n`;\r\n\r\nconst DtrSummaryList = () => {\r\n const { timeRecordStore, commonStore } = useStore();\r\n const { filterTimeRecords, isTimeRecordsLoading, timeRecords, timeRecordsTotal } = timeRecordStore;\r\n const { getDepartments, loadDepartments, departments } = commonStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\",\r\n startDate:null,\r\n endDate: null,\r\n department:''\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n const handleSearch = (searchText: string) => {\r\n if (filterValues.searchKeyword != searchText) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, searchKeyword: searchText });\r\n } else {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }\r\n }\r\n\r\n const handleDateRangeFilter = (startDate?: Date, endDate?: Date) => {\r\n if (startDate && endDate) {\r\n if (filterValues.startDate != startDate && filterValues.endDate != endDate) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, startDate: startDate, endDate: endDate });\r\n }\r\n else\r\n setFilterValues({ ...filterValues, startDate: startDate, endDate: endDate });\r\n } else if (startDate == null && endDate == null) {\r\n setFilterValues({ ...filterValues, startDate: startDate, endDate: endDate });\r\n }\r\n }\r\n\r\n const onChangeDepartmentFilter = (value: any) => {\r\n setFilterValues({ ...filterValues, department: value })\r\n }\r\n\r\n useEffect(() => {\r\n if (departments.length < 1)\r\n loadDepartments();\r\n filterTimeRecords(filterValues);\r\n }, [departments, filterValues, filterTimeRecords])\r\n\r\n return (\r\n \r\n \r\n Daily Time Record Summary\r\n \r\n \r\n columns={[\r\n {\r\n title: '#', field: 'orderNumber',\r\n cellStyle: {\r\n width: 50,\r\n maxWidth: 50\r\n },\r\n headerStyle: {\r\n width: 50,\r\n maxWidth: 50\r\n },\r\n },\r\n {\r\n title: 'Employee Name', field: 'user.name',\r\n cellStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n headerStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n },\r\n {\r\n title: 'Time In', field: 'timeInDate',\r\n render: (data: TimeRecord) => {\r\n if (data.timeInDate)\r\n return dateHelper.formatLocalShortMonthDateTime(data.timeInDate.toString());\r\n return '';\r\n },\r\n cellStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n headerStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n },\r\n {\r\n title: 'Time Out', field: 'timeOutDate',\r\n render: (data: TimeRecord) => {\r\n if (data.timeOutDate)\r\n return dateHelper.formatLocalShortMonthDateTime(data.timeOutDate.toString());\r\n return '';\r\n },\r\n cellStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n headerStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n },\r\n {\r\n title: 'Total Time', field: 'user.name',\r\n render: (data: TimeRecord) => {\r\n if (data.timeInDate && data.timeOutDate) {\r\n let timeIn = moment(data.timeInDate);\r\n let timeOut = moment(data.timeOutDate);\r\n let difference = timeOut.diff(timeIn);\r\n let duration = moment.duration(difference);\r\n let hourDuration = Math.floor(duration.asHours());\r\n let minSecDuration = moment.utc(difference).format('mm:ss');\r\n\r\n return `${hourDuration}:${minSecDuration}`;\r\n }\r\n return '';\r\n },\r\n cellStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n headerStyle: {\r\n width: 250,\r\n minWidth: 250\r\n },\r\n },\r\n {\r\n title: 'Reason', field: '',\r\n cellStyle: {\r\n width: 300,\r\n minWidth: 300\r\n },\r\n headerStyle: {\r\n width: 300,\r\n minWidth: 300\r\n }, },\r\n { title: 'Department', field: 'user.department.name' },\r\n ]}\r\n isLoading={isTimeRecordsLoading}\r\n data={timeRecords!}\r\n total={timeRecordsTotal}\r\n onChangePage={handleOnChangePage}\r\n pageSize={filterValues.pageSize}\r\n pageNumber={filterValues.pageNumber}\r\n onSearchChange={handleSearch}\r\n toolbar={true}\r\n search={true}\r\n sorting={false}\r\n draggable={false}\r\n searchLabel='Employee Name'\r\n dateFilterLabel='Filter by Date'\r\n onDateRangeFilter={handleDateRangeFilter}\r\n dateRangeValues={[filterValues.startDate!, filterValues.endDate!]}\r\n dateRangeFilter={true}\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default observer(DtrSummaryList);","import React, { useEffect, useState } from 'react';\r\nimport { Image, ImageProps } from 'semantic-ui-react';\r\nimport { useStore } from '../../stores/store';\r\n\r\ninterface Props extends ImageProps {\r\n userId: string;\r\n hasPhoto: boolean;\r\n}\r\n\r\nconst fileToDataUri = (file: Blob) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n resolve(event.target!.result)\r\n };\r\n reader.readAsDataURL(file);\r\n})\r\n\r\nconst AvatarImage = ({ userId, hasPhoto, ...rest }: Props) => {\r\n const { userStore, mediaStore } = useStore();\r\n const [dataUri, setDataUri] = useState('');\r\n useEffect(() => {\r\n let unmounted = false;\r\n\r\n if (hasPhoto) {\r\n try {\r\n mediaStore.getProfilePicture(userId).then(v => {\r\n if (v != undefined && !unmounted)\r\n setDataUri(v.url)\r\n });\r\n } catch (e) {\r\n if (!unmounted)\r\n setDataUri('/assets/default-profile-picture.svg');\r\n }\r\n } \r\n\r\n return () => { unmounted = true };\r\n }, [])\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default AvatarImage;","import { observer } from 'mobx-react-lite';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Header } from \"semantic-ui-react\";\r\nimport styled from \"styled-components\";\r\nimport AvatarImage from '../../../app/common/image/AvatarImage';\r\nimport PaginatedTable from \"../../../app/common/table/PaginatedTable\";\r\nimport { Employee, EmployeeFilterValues } from \"../../../app/models/employee\";\r\nimport { useStore } from '../../../app/stores/store';\r\nimport { history } from '../../../index';\r\nimport { FaRegEye } from 'react-icons/fa';\r\nimport { FilterValues } from '../../../app/models/common/filterValues';\r\n\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst EmployeeList = () => {\r\n const { employeeStore } = useStore();\r\n const { total, employees, userOptionValues, isLoading, loadEmployees, loadEmployeesListByDepartment, loadAllDepartment } = employeeStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 10,\r\n pageNumber: 1,\r\n searchKeyword: \"\",\r\n });\r\n const [filterByDepartmentValues, setByDepartmentFilterValues] = useState({\r\n pageSize: 10,\r\n pageNumber: 1,\r\n searchKeyword: \"\",\r\n departments: []\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setByDepartmentFilterValues({ ...filterByDepartmentValues, departments: filterByDepartmentValues.departments, pageNumber: page })\r\n }\r\n\r\n const handleSearch = (searchText: string) => {\r\n const currentDepartments = filterByDepartmentValues.departments.slice().sort();\r\n if (filterValues.searchKeyword != searchText) {\r\n setByDepartmentFilterValues({ ...filterByDepartmentValues, pageNumber: 1, departments: filterByDepartmentValues.departments, searchKeyword: searchText })\r\n } else {\r\n setByDepartmentFilterValues({ ...filterByDepartmentValues, departments: currentDepartments, searchKeyword: searchText })\r\n }\r\n }\r\n const handleUserFilter = (departments: string[]) => {\r\n const currentDepartments = departments.slice().sort();\r\n const hasNotChangeUserIds = filterByDepartmentValues.departments.length === departments.length && filterByDepartmentValues.departments.slice().sort().every(function (value, index) {\r\n return value === currentDepartments[index];\r\n });\r\n if (hasNotChangeUserIds)\r\n setByDepartmentFilterValues({ ...filterByDepartmentValues, departments: currentDepartments })\r\n else\r\n setByDepartmentFilterValues({ ...filterByDepartmentValues, pageNumber: 1, departments: departments })\r\n\r\n }\r\n useEffect(() => {\r\n loadEmployees(filterValues);\r\n loadAllDepartment();\r\n }, [])\r\n\r\n useEffect(() => {\r\n loadEmployeesListByDepartment(filterByDepartmentValues);\r\n }, [filterByDepartmentValues, loadEmployeesListByDepartment])\r\n\r\n\r\n return (\r\n <>\r\n \r\n \r\n Employees\r\n \r\n \r\n columns={[\r\n {\r\n title: 'Employee Name', field: 'name',\r\n render: (data: Employee) => {\r\n return (\r\n <>\r\n \r\n {data.name}\r\n \r\n );\r\n }\r\n },\r\n { title: 'Department', field: 'job.department.name' },\r\n { title: 'Job Title', field: 'job.jobTitle.name' },\r\n ]}\r\n actions={[rowData => ({\r\n icon: () => ,\r\n tooltip: 'View Employee',\r\n onClick: e => history.push(`/employees/${rowData.id}`),\r\n\r\n })]}\r\n total={total}\r\n pageSize={filterByDepartmentValues.pageSize}\r\n pageNumber={filterByDepartmentValues.pageNumber}\r\n totalCount={total ?? 0}\r\n sorting={false}\r\n draggable={false}\r\n onChangePage={handleOnChangePage}\r\n onSearchChange={handleSearch}\r\n data={employees}\r\n isLoading={isLoading}\r\n toolbar={true}\r\n search={true}\r\n userFilter={true}\r\n userFilterPlaceholder='Filter by Department'\r\n userValues={userOptionValues}\r\n onUserFilter={handleUserFilter}\r\n />\r\n \r\n \r\n )\r\n}\r\n\r\nexport default observer(EmployeeList);","import * as React from 'react';\r\nimport { Dimmer, Loader } from 'semantic-ui-react';\r\n\r\ninterface Props {\r\n inverted?: boolean;\r\n content?: string;\r\n}\r\n\r\nexport default function LoadingComponent({ inverted = true, content = 'Loading....' }: Props) {\r\n return (\r\n \r\n \r\n \r\n\r\n );\r\n}","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport React, { useEffect } from 'react';\r\nimport { Divider, Form, Grid, Header, Label, Tab } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport AvatarImage from '../../../app/common/image/AvatarImage';\r\nimport LoadingComponent from '../../../app/layout/LoadingComponent';\r\nimport { Employee } from '../../../app/models/employee';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst StyledDisabledSelect = styled(Form.Select)` \r\n opacity:1 !important;\r\n\r\n label{\r\n opacity:1 !important;\r\n }\r\n\r\n [role=listbox]{\r\n opacity:1 !important;\r\n\r\n .dropdown.icon{\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\n\r\ninterface Props {\r\n employee: Employee;\r\n}\r\n\r\nconst EmployeeGeneralDetails = ({ employee }: Props) => {\r\n const { commonStore } = useStore();\r\n const { loadGenders, getGenders, genders,\r\n loadCivilStatuses, getCivilStatuses, civilStatuses,\r\n loadNationalities, getNationalities, nationalities,\r\n } = commonStore;\r\n\r\n useEffect(() => {\r\n if (genders.length < 1)\r\n loadGenders();\r\n if (civilStatuses.length < 1)\r\n loadCivilStatuses();\r\n if (nationalities.length < 1)\r\n loadNationalities();\r\n }, [genders, civilStatuses, nationalities]);\r\n\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
Personal Information
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default observer(EmployeeGeneralDetails);","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { Grid, Header, Tab, Table } from 'semantic-ui-react';\r\nimport DateHelper from '../../../app/helpers/dateHelper';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst dateHelper = new DateHelper();\r\n\r\nconst EmployeeAdditionalDetails = () => {\r\n const { employeeStore } = useStore();\r\n const { workExperiences, educationRecords } = employeeStore;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Work Experience
\r\n \r\n \r\n \r\n \r\n Previous Company\r\n \r\n \r\n Job Title\r\n \r\n \r\n From\r\n \r\n \r\n To\r\n \r\n \r\n \r\n \r\n {workExperiences && workExperiences.length != 0 ?\r\n workExperiences.map(({ companyName, jobTitle, from, to }) => (\r\n \r\n {companyName}\r\n {jobTitle}\r\n {dateHelper.formatMonthYear(from.toString())}\r\n {dateHelper.formatMonthYear(to.toString())}\r\n \r\n ))\r\n : (\r\n
\r\n No Records\r\n
\r\n
)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
Educational Background
\r\n \r\n \r\n \r\n \r\n School\r\n \r\n \r\n Education Type\r\n \r\n \r\n Degree\r\n \r\n \r\n From\r\n \r\n \r\n To\r\n \r\n \r\n \r\n \r\n {educationRecords && educationRecords.length != 0 ?\r\n educationRecords.map(({ schoolName, educationType, degree, from, to }) => (\r\n \r\n {schoolName}\r\n {educationType.type}\r\n {degree}\r\n {dateHelper.formatMonthYear(from.toString())}\r\n {dateHelper.formatMonthYear(to.toString())}\r\n \r\n ))\r\n : (\r\n
\r\n No Records\r\n
\r\n
)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default observer(EmployeeAdditionalDetails);","import React from 'react';\r\nimport { Grid, Header, Tab, Table } from 'semantic-ui-react';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst EmployeeSchedule = () => {\r\n const { employeeStore } = useStore();\r\n const { pivotSchedule, schedule } = employeeStore;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Schedule
\r\n \r\n \r\n \r\n \r\n Day\r\n \r\n \r\n Start Time\r\n \r\n \r\n End Time\r\n \r\n \r\n \r\n \r\n {pivotSchedule && pivotSchedule.length != 0 ?\r\n pivotSchedule.map(({ day, startTime, endTime }) => (\r\n \r\n {day}\r\n {startTime}\r\n {endTime}\r\n \r\n ))\r\n : (\r\n
\r\n No Records\r\n
\r\n
)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default EmployeeSchedule;","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Grid, Header, Modal, Tab } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport PaginatedTable from '../../../app/common/table/PaginatedTable';\r\nimport DateHelper from '../../../app/helpers/dateHelper';\r\nimport LoadingComponent from '../../../app/layout/LoadingComponent';\r\nimport { FilterValues } from '../../../app/models/common/filterValues';\r\nimport { DailyReport } from '../../../app/models/employeeDailyReport';\r\nimport { TimeRecord } from '../../../app/models/timeRecord';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst dateHelper = new DateHelper();\r\n\r\nconst StyledTable = styled(PaginatedTable)`\r\n\r\n`\r\n\r\ninterface Props {\r\n employeeId: string;\r\n}\r\n\r\nconst EmployeeDtr = ({ employeeId }: Props) => {\r\n const { employeeStore, modalStore } = useStore();\r\n const { isTimeRecordsLoaded, timeRecords, timeRecordTotal, loadEmployeeDTR } = employeeStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n id: employeeId,\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\"\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n useEffect(() => {\r\n loadEmployeeDTR(filterValues);\r\n }, [filterValues, loadEmployeeDTR])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
Daily Time Record
\r\n \r\n columns={[\r\n { title: 'Time In', render: (data: TimeRecord) => data.timeInDate ? dateHelper.formatLocalShortMonthDateTime(data.timeInDate.toString()) : '' },\r\n { title: 'Time Out', render: (data: TimeRecord) => data.timeOutDate ? dateHelper.formatLocalShortMonthDateTime(data.timeOutDate.toString()) : '' },\r\n {\r\n title: 'Total Time',\r\n render: (data: TimeRecord) => {\r\n if (data.timeInDate && data.timeOutDate) {\r\n let timeIn = moment(data.timeInDate);\r\n let timeOut = moment(data.timeOutDate);\r\n let difference = timeOut.diff(timeIn);\r\n let duration = moment.duration(difference);\r\n let hourDuration = Math.floor(duration.asHours());\r\n let minSecDuration = moment.utc(difference).format('mm:ss');\r\n\r\n return `${hourDuration}:${minSecDuration}`;\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n }]}\r\n data={timeRecords!}\r\n total={timeRecordTotal}\r\n onChangePage={handleOnChangePage}\r\n pageSize={20}\r\n pageNumber={filterValues.pageNumber}\r\n isLoading={!isTimeRecordsLoaded}\r\n style={{ boxShadow: 'none', padding:0, marginTop:'30px' }}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n\r\nexport default observer(EmployeeDtr);","import React from 'react';\r\nimport { Menu, Tab } from 'semantic-ui-react';\r\nimport { Employee } from '../../../app/models/employee';\r\nimport EmployeeGeneralDetails from './EmployeeGeneralDetails';\r\nimport EmployeeAdditionalDetails from './EmployeeAdditionalDetails';\r\nimport EmployeeSchedule from './EmployeeSchedule';\r\nimport EmployeeDailyReports from './EmployeeDailyReports';\r\nimport EmployeeDtr from './EmployeeDtr';\r\nimport { observer } from 'mobx-react-lite';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledMenuItem = styled(Menu.Item)`\r\n margin-bottom:0 !important;\r\n background-color: #f3f9ff !important;\r\n color: #6a7e99 !important;\r\n\r\n &:before{\r\n top: 25% !important;\r\n height: 50% !important;\r\n background-color: #6a7e99 !important;\r\n }\r\n\r\n &:hover, &.active{\r\n background-color: #1592ff !important ;\r\n color: #fff !important ;\r\n }\r\n`;\r\n\r\nconst StyledTab = styled(Tab)`\r\n border: none !important;\r\n\r\n & .menu{\r\n border: none !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n & .segment { border: none !important; }\r\n\r\n`;\r\n\r\n\r\ninterface Props {\r\n employee: Employee;\r\n}\r\n\r\nconst EmployeeDetails = ({ employee }: Props) => {\r\n\r\n const panes = [\r\n {\r\n menuItem: General,\r\n render: () => \r\n },\r\n {\r\n menuItem: Additional Details,\r\n render: () => \r\n },\r\n {\r\n menuItem: Schedule,\r\n render: () => \r\n },\r\n {\r\n menuItem: DTR,\r\n render: () => \r\n },\r\n //{\r\n // menuItem: Daily Report,\r\n // render: () => \r\n //},\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default observer(EmployeeDetails);","import { observer } from 'mobx-react-lite';\r\nimport React, { useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Container } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport LoadingComponent from '../../../app/layout/LoadingComponent';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport EmployeeDetails from './EmployeeDetails';\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst StyledCardContainer = styled(Container)`\r\n background-color: #fff;\r\n padding:2em;\r\n border-radius:16px;\r\n box-shadow: 0px 3px 6px rgb(21 146 255 / 16%);\r\n\r\n`;\r\n\r\nconst EmployeeDetailsPage = () => {\r\n const { id } = useParams<{ id: string }>();\r\n const { employeeStore } = useStore();\r\n const { employee, loadEmployee, isEmployeeLoaded } = employeeStore;\r\n\r\n useEffect(() => {\r\n loadEmployee(id);\r\n }, [loadEmployee, id]);\r\n\r\n if (!isEmployeeLoaded) return \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(EmployeeDetailsPage);","import { observer } from 'mobx-react-lite';\r\nimport { MdOutlineClose } from 'react-icons/md';\r\nimport { Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst CloseIcon = styled(MdOutlineClose)`\r\n border-radius: 4px;\r\n color: #42526e;\r\n height: 32px;\r\n margin: 4px;\r\n overflow: hidden;\r\n padding: 4px;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n transition: background-color 85ms,color 85ms;\r\n width: 32px;\r\n z-index: 2;\r\n cursor:pointer;\r\n\r\n &:hover {\r\n background-color: #091e4214;\r\n color: #42526e;\r\n }\r\n`;\r\n\r\nconst StyledModalContent = styled(Modal.Content)`\r\n && {\r\n border-radius: 16px;\r\n background-color: #f4f5f7 !important;\r\n }\r\n`;\r\n\r\nfunction DateModalContainer() {\r\n const { dateModalStore } = useStore()\r\n\r\n const handleCloseIconClick = () => {\r\n dateModalStore.closeModal();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {dateModalStore.modal.body}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(DateModalContainer);","import React from 'react';\r\nimport { Button, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: row;\r\n align-items: baseline;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst CardActivityList = () => {\r\n return (\r\n \r\n
\r\n Activities\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default CardActivityList;","import React, { useEffect, useState } from 'react';\r\nimport { Image, ImageProps } from 'semantic-ui-react';\r\nimport { useLightbox } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../stores/store';\r\n\r\nconst ComponentWrapper = styled.div`\r\n width: 120px !important;\r\n height: 80px !important;\r\n`;\r\n\r\nconst Thumbnail = styled.div<{dataUrl: string}>`\r\n width: 100% !important;\r\n height: 100% !important;\r\n background: ${p => (p.dataUrl ? 'url(' + p.dataUrl + ')' : '/assets/default-profile-picture.svg')};\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n background-position: center;\r\n`\r\n\r\ninterface Props extends ImageProps {\r\n attachmentId: string;\r\n}\r\n\r\nconst fileToDataUri = (file: Blob) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n resolve(event.target!.result)\r\n };\r\n reader.readAsDataURL(file);\r\n})\r\n\r\nconst AttachmentThumbnail = ({ attachmentId, ...rest }: Props) => {\r\n const { cardAttachmentStore } = useStore();\r\n const [dataUri, setDataUri] = useState('');\r\n\r\n useEffect(() => {\r\n let unmounted = false;\r\n try {\r\n cardAttachmentStore.getBlob(attachmentId).then(v => {\r\n if (v != undefined && !unmounted)\r\n fileToDataUri(v).then(dataUri => {\r\n setDataUri(dataUri as string)\r\n })\r\n });\r\n } catch (e) {\r\n if (!unmounted)\r\n setDataUri('/assets/default-profile-picture.svg');\r\n }\r\n\r\n return () => { unmounted = true };\r\n }, [attachmentId, cardAttachmentStore])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AttachmentThumbnail;","import { useField } from 'formik';\r\nimport * as React from 'react';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { Form, Label, TextArea } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\n\r\ninterface Props {\r\n placeholder: string;\r\n name: string;\r\n label?: string;\r\n type?: string;\r\n rows: number;\r\n isResizable?: boolean;\r\n}\r\n\r\nconst StyledTextArea = styled(TextareaAutosize) <{ isResizable?: boolean }>`\r\n resize: ${p => p.isResizable ? `vertical` : `none`} !important;\r\n width:100% !important;\r\n overflow: hidden !important;\r\n overflow-wrap: break-word !important;\r\n background: #0000 !important;\r\n border-radius: 3px !important;\r\n line-height: 24px !important;\r\n min-height: 24px !important;\r\n padding: 4px 8px !important;\r\n background-color: #fff !important;\r\n box-shadow: inset 0 0 0 2px #0079bf !important;\r\n border: none !important;\r\n outline:none !important;\r\n`;\r\n\r\nexport default function TextAreaInput(props: Props) {\r\n const [field, meta] = useField(props.name);\r\n return (\r\n \r\n \r\n \r\n {meta.touched && meta.error ? () : null}\r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Form, Formik, useField } from 'formik';\r\nimport styled from 'styled-components';\r\nimport { Button, Divider, Header, Form as FormSemantic, Label } from 'semantic-ui-react';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport * as Yup from 'yup';\r\nimport TextAreaInput from '../card-menus/TextAreaInput';\r\n\r\n//#region Styling\r\nconst Menu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n\r\nconst BodyContainer = styled.div`\r\n padding: 0 12px 12px;\r\n`;\r\n\r\nconst HeaderContainer = styled.div`\r\n height: 40px;\r\n margin-bottom: 8px;\r\n position: relative;\r\n text-align: center;\r\n padding:8px;\r\n & h4{\r\n margin:0 !important;\r\n }\r\n`;\r\n\r\nconst ContentWrapper = styled.div`\r\n && {\r\n border-radius: 3px;\r\n box-shadow: 0 8px 16px -4px #091e4240, 0 0 0 1px #091e4214;\r\n width: 304px;\r\n }\r\n`;\r\n\r\nconst StyledTextArea = styled(TextareaAutosize) <{ isResizable?: boolean }>`\r\n resize: ${p => p.isResizable ? `vertical` : `none`} !important;\r\n width:100% !important;\r\n overflow: hidden !important;\r\n overflow-wrap: break-word !important;\r\n background: #0000 !important;\r\n border-radius: 3px !important;\r\n line-height: 24px !important;\r\n min-height: 24px !important;\r\n padding: 4px 8px !important;\r\n background-color: #fff !important;\r\n box-shadow: inset 0 0 0 2px #0079bf !important;\r\n border: none !important;\r\n outline:none !important;\r\n`;\r\n\r\n//#endregion\r\n\r\n\r\n\r\ninterface Props {\r\n placeholder: string;\r\n label?: string;\r\n type?: string;\r\n rows: number;\r\n isResizable?: boolean; \r\n handleSubmit: (values: { fileName: string }, FormikHelpers) => void;\r\n initialValue: string;\r\n name: string;\r\n}\r\n\r\nconst AttachmentEditForm = (props: Props) => {\r\n return (\r\n \r\n {\r\n ({ handleSubmit, isSubmitting, dirty, isValid, values }) => (\r\n \r\n \r\n
\r\n Edit File Name\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n Save\r\n \r\n
\r\n
\r\n )\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default observer(AttachmentEditForm);","\r\nimport { FormikHelpers } from 'formik';\r\nimport moment from 'moment';\r\nimport React, { MouseEvent } from 'react';\r\nimport { useLightbox } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport AttachmentThumbnail from '../../../app/common/image/AttachmentThumbnail';\r\nimport { CardAttachment } from '../../../app/models/cardAttachment';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport AttachmentEditForm from './AttachmentEditForm';\r\n\r\n\r\n//#region Styling\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n margin:0 0 24px 32px;\r\n display:flex\r\n }\r\n &:hover{\r\n background-color: #eee;\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst ActionWrapper = styled.div`\r\n && {\r\n padding: 5px 10px;\r\n width: 100%;\r\n overflow: hidden;\r\n }\r\n`;\r\n\r\nconst ExtensionThumbnail = styled.span`\r\n && {\r\n color: #5e6c84;\r\n display: block;\r\n font-size: 18px;\r\n font-weight: 700;\r\n line-height: 80px;\r\n text-align: center;\r\n text-decoration: none;\r\n background-color: #091e420a;\r\n border-radius: 6px;\r\n height: 80px;\r\n width:120px;\r\n }\r\n`;\r\n\r\nconst FileName = styled.p`\r\n && {\r\n margin:0;\r\n font-weight:600;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n`;\r\n\r\nconst ActionLink = styled.span`\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n`;\r\n//#endregion\r\n\r\nconst _swal = withReactContent(Swal);\r\n\r\nconst isImage = (fileName) => {\r\n return fileName.match(/.(jpg|jpeg|png)$/i);\r\n}\r\n\r\nconst getName = (fileName) => {\r\n let lastIndex = fileName.lastIndexOf(\".\");\r\n return fileName.substring(0, lastIndex);\r\n}\r\n\r\ninterface Props {\r\n attachment: CardAttachment;\r\n index?: number;\r\n}\r\n\r\n//TODO: NEED OTHER WAY TO DOWNLOAD\r\nconst saveFile = (data, fileName) => {\r\n const a = document.createElement('a');\r\n document.body.appendChild(a);\r\n const url = window.URL.createObjectURL(data);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(a);\r\n }, 0)\r\n}\r\n\r\nconst Attachment = ({ attachment, index }: Props) => {\r\n const { cardAttachmentStore, popOverStore } = useStore();\r\n const { deleteAttachment, updateFileName } = cardAttachmentStore;\r\n\r\n const { openLightbox, closeLightbox } = useLightbox();\r\n\r\n const getFileExtension = () => {\r\n let lastIndex = attachment.fileName.lastIndexOf(\".\");\r\n return attachment.fileName.substring(lastIndex + 1);\r\n }\r\n\r\n const handleDelete = (attachmentId: string) => {\r\n _swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this Attachment?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n _swal.disableButtons();\r\n deleteAttachment(attachment.id);\r\n }\r\n });\r\n }\r\n\r\n const handleAttachmentUpdateSubmit = (values: { fileName: string },\r\n { resetForm, setSubmitting }: FormikHelpers<{ fileName: string }>) => {\r\n updateFileName(values.fileName + '.' + attachment.fileName.split('.').pop(), attachment.id)\r\n .then(\r\n result => {\r\n setSubmitting(false);\r\n popOverStore.closePopover();\r\n },\r\n reason => {\r\n console.log(reason)\r\n setSubmitting(false);\r\n }\r\n );\r\n }\r\n\r\n const handleEdit = (e: MouseEvent) => {\r\n e.stopPropagation();\r\n popOverStore.openPopover((\r\n ), e.currentTarget);\r\n }\r\n\r\n const handleOnClickAttachment = (event: MouseEvent) => {\r\n if (event.target === event.currentTarget) return;\r\n\r\n if (isImage(attachment.fileName)) {\r\n openLightbox(index!)\r\n }\r\n else {\r\n cardAttachmentStore.getBlob(attachment.id).then(v => {\r\n if (v != undefined) {\r\n saveFile(v, attachment.fileName);\r\n }\r\n })\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n {isImage(attachment.fileName) ?\r\n () :\r\n ({getFileExtension()})\r\n }\r\n
\r\n \r\n {attachment.fileName}\r\n

{'Added ' + moment.utc(attachment.date).fromNow()}

\r\n
\r\n { e.stopPropagation(); handleDelete(attachment.id); }}>Delete - Edit\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Attachment;","import { observer } from 'mobx-react-lite';\r\nimport React, { ChangeEvent, useRef } from 'react';\r\nimport { BsPaperclip } from 'react-icons/bs';\r\nimport { toast } from 'react-toastify';\r\nimport { Button, Header, Item } from 'semantic-ui-react';\r\nimport { SRLWrapper } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport { CardAttachment } from '../../../app/models/cardAttachment';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport Attachment from './Attachment';\r\n\r\n//#region Styling\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n margin-bottom: 24px;\r\n display:block\r\n }\r\n`;\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 !important;\r\n width:100%;\r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:16px 0 8px 0 !important;\r\n width:100%;\r\n display:flex;\r\n }\r\n`;\r\n\r\nconst AttachmentIcon = styled(BsPaperclip)`\r\n margin: -2px 16px 0px 0px;\r\n font-size: 23px;\r\n color:#42526e;\r\n`;\r\n\r\nconst AddAttachmentWrapper = styled.div`\r\n && {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n margin: 0 0 0 32px !important;\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n attachments: CardAttachment[];\r\n cardId: string;\r\n}\r\n\r\nconst attachLightBoxIndex = (showAll: boolean, attachments: CardAttachment[]) => {\r\n let splicedAttachments = showAll || attachments.length < 5 ? attachments : attachments.filter((a, i) => i < 5);\r\n let count = 0;\r\n return splicedAttachments.map(a => {\r\n if (a.fileName.match(/.(jpg|jpeg|png)$/i)) {\r\n let attachment = {\r\n ...a,\r\n index: count\r\n }\r\n count++;\r\n return attachment;\r\n } else {\r\n return a;\r\n }\r\n })\r\n}\r\n\r\nconst AttachmentList = ({ attachments, cardId }: Props) => {\r\n const { cardAttachmentStore, boardStore } = useStore();\r\n const { uploadMultiple, showAllAttachments, setShowAllAttachments } = cardAttachmentStore;\r\n const { board } = boardStore;\r\n\r\n\r\n const inputFile = useRef(null);\r\n\r\n const handleFileUpload = () => {\r\n if (inputFile != null && inputFile.current != null)\r\n inputFile.current.click();\r\n }\r\n\r\n const handleFileChange = (event: ChangeEvent) => {\r\n if (event.currentTarget.value == \"\") {\r\n toast.error('No file Selected');\r\n return;\r\n }\r\n\r\n if (!board?.workSpace || !board.workSpace.clientId || event.target.files == null) {\r\n toast.error('No client Id available.');\r\n return;\r\n }\r\n\r\n //validation\r\n for (const file of event.target.files) {\r\n if (file.size > 100000000) {\r\n toast.error('File must not exceed 100 MB');\r\n return;\r\n }\r\n }\r\n\r\n const response = uploadMultiple(\r\n [...Array.from(event.target.files)],\r\n cardId,\r\n board.workSpace.clientId);\r\n\r\n toast.promise(response,\r\n {\r\n pending: `Uploading file`,\r\n success: `File uploaded!`,\r\n error: `Uploading error!`\r\n });\r\n event.currentTarget.value = \"\"\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Attachments\r\n \r\n \r\n \r\n {attachLightBoxIndex(showAllAttachments, attachments).map((a, i) => )}\r\n \r\n \r\n {attachments.length > 5 && ()}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(AttachmentList);","export interface CardChecklist {\r\n id: string;\r\n cardId: string;\r\n title: string;\r\n items?: CardChecklistItem[];\r\n}\r\n\r\nexport class CardChecklistFormValues {\r\n id?: string = undefined;\r\n cardId: string = '';\r\n title: string = '';\r\n\r\n constructor(cardChecklist?: CardChecklist) {\r\n if (cardChecklist) {\r\n this.id = cardChecklist.id;\r\n this.title = cardChecklist.title;\r\n this.cardId = cardChecklist.cardId;\r\n }\r\n }\r\n}\r\n\r\nexport interface CardChecklistItem {\r\n id: string;\r\n isCompleted: boolean;\r\n cardChecklistId: string;\r\n title: string;\r\n}\r\n\r\nexport class CardChecklistItemFormValues {\r\n id?: string = undefined;\r\n cardChecklistId: string = '';\r\n title: string = '';\r\n isCompleted: boolean = false;\r\n cardId?: string = '';\r\n\r\n constructor(cardChecklistItem?: CardChecklistItem) {\r\n if (cardChecklistItem) {\r\n this.id = cardChecklistItem.id;\r\n this.title = cardChecklistItem.title;\r\n this.cardChecklistId = cardChecklistItem.cardChecklistId;\r\n this.isCompleted = cardChecklistItem.isCompleted;\r\n }\r\n }\r\n}","import { IconButton } from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { BsTrash } from 'react-icons/bs';\r\nimport { MdClear } from 'react-icons/md';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { toast } from 'react-toastify';\r\nimport { Button, Checkbox } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport { CardChecklistItem, CardChecklistItemFormValues } from '../../../app/models/cardChecklist';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\n//#region Styling\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: row;\r\n margin: 0 0 8px -8px !important;\r\n border-radius: 6px;\r\n }\r\n &:hover{\r\n background-color: #091e420a !important;\r\n }\r\n`;\r\n\r\nconst LabelContainer = styled.div`\r\n && {\r\n display: flex;\r\n width: 100%;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n margin:8px !important;\r\n }\r\n`;\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nconst StyledTextArea = styled(TextareaAutosize) <{ isCompleted: boolean }>`\r\n && {\r\n width:100%;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n background: #0000;\r\n border-radius: 3px;\r\n line-height: 24px;\r\n min-height: 24px;\r\n padding: 4px 8px;\r\n resize: none;\r\n background-color: #fff;\r\n box-shadow: inset 0 0 0 2px #0079bf;\r\n border: none;\r\n outline:none;\r\n display:block;\r\n text-decoration: ${p => (p.isCompleted ? 'line-through' : 'none')};\r\n }\r\n`;\r\n\r\nconst StyledText = styled.p<{ isCompleted: boolean }>`\r\n && {\r\n width:100%;\r\n white-space: pre-wrap;\r\n flex-grow:1;\r\n margin:0;\r\n text-decoration: ${p => (p.isCompleted ? 'line-through' : 'none')};\r\n overflow-wrap: break-word;\r\n word-break: break-word;\r\n }\r\n`;\r\n\r\nconst DisplayContainer = styled.div`\r\n && {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: baseline;\r\n width:100%;\r\n }\r\n`;\r\n\r\nconst DeleteIcon = styled(BsTrash)`\r\n &&{\r\n font-size: 20px;\r\n border-radius: 4px;\r\n width: 25px;\r\n height: 25px;\r\n align-self: flex-start;\r\n padding: 4px;\r\n color:#717171;\r\n cursor: pointer;\r\n}\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n checklistItem: CardChecklistItem;\r\n}\r\n\r\nconst _swal = withReactContent(Swal);\r\n\r\nconst ChecklistItem = ({ checklistItem }: Props) => {\r\n const [open, setOpen] = useState(false);\r\n const [title, setTitle] = useState(checklistItem.title);\r\n const [completed, setCompleted] = useState(checklistItem.isCompleted);\r\n const { cardChecklistStore } = useStore();\r\n const { updateItem, deleteItem } = cardChecklistStore;\r\n\r\n useEffect(() => {\r\n setTitle(checklistItem.title);\r\n }, [checklistItem]);\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleOnSave = async (completeProps?: boolean) => {\r\n if (title && title.length > 0 && title.length <= 512) {\r\n checklistItem.title = title;\r\n checklistItem.isCompleted = typeof completeProps === 'boolean' ? completeProps! : completed;\r\n updateItem(new CardChecklistItemFormValues(checklistItem));\r\n setOpen(false);\r\n } else {\r\n setTitle(checklistItem.title);\r\n toast.error('Item should not be empty or exceed 512 characters');\r\n setOpen(false);\r\n }\r\n }\r\n const handleOnChecked = async (completeProps?: boolean) => {\r\n if (title && title.length > 0 && title.length <= 512) {\r\n checklistItem.isCompleted = typeof completeProps === 'boolean' ? completeProps! : completed;\r\n updateItem(new CardChecklistItemFormValues(checklistItem));\r\n } else {\r\n setTitle(checklistItem.title);\r\n toast.error('Item should not be empty or exceed 512 characters');\r\n }\r\n }\r\n\r\n const handleClear = () => {\r\n setTitle(checklistItem.title);\r\n setOpen(false);\r\n }\r\n\r\n const toggleCompleted = () => {\r\n let newCompleteState = !completed;\r\n setCompleted(newCompleteState);\r\n handleOnChecked(newCompleteState);\r\n }\r\n\r\n const handleDelete = () => {\r\n _swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this Checklist item?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n deleteItem(checklistItem.id);\r\n }\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {open ? (\r\n <>\r\n \r\n \r\n \r\n Save\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n setOpen(true)}\r\n >{title}\r\n \r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default ChecklistItem;","import { observer } from 'mobx-react-lite';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Item, Progress } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { CardChecklistItem } from '../../../app/models/cardChecklist';\r\n\r\n//#region Styling\r\n\r\nconst StyledProgress = styled(Progress)`\r\n && {\r\n flex-grow:1;\r\n margin: 6px 0 !important;\r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n width:100%;\r\n display: flex;\r\n }\r\n`;\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0 !important;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst PercentContainer = styled.div`\r\ncolor: #5e6c84;\r\n font-size: 11px;\r\n left: 0;\r\n line-height: 10px;\r\n text-align: center;\r\n width: 32px;\r\n margin: 0 8px 8px -4px !important;\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n items: CardChecklistItem[]\r\n}\r\n\r\nconst ChecklistProgress = ({ items }: Props) => {\r\n const computePercent = () => {\r\n let completedPercent = 0;\r\n\r\n if (items) {\r\n let percent = 0;\r\n if (items.length) {\r\n let completedCount = items.filter(i => i.isCompleted).length;\r\n percent = (completedCount / items.length) * 100;\r\n }\r\n completedPercent = Math.floor(percent);\r\n } \r\n\r\n return completedPercent;\r\n }\r\n\r\n return (\r\n \r\n \r\n

{computePercent()}%

\r\n
\r\n \r\n i.isCompleted).length : 0}\r\n total={items ? items.length : 0}\r\n size='tiny' />\r\n \r\n
\r\n\r\n );\r\n}\r\n\r\nexport default observer(ChecklistProgress);","import React, { useEffect, useState } from 'react';\r\nimport { Button, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { CardChecklist, CardChecklistFormValues } from '../../../app/models/cardChecklist';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport { IconButton } from '@material-ui/core';\r\nimport { MdClear } from 'react-icons/md';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport Swal from 'sweetalert2';\r\nimport { toast } from 'react-toastify';\r\n\r\n//#region Styling\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n }\r\n`;\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nconst HeaderContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: baseline;\r\n flex-wrap: nowrap;\r\n width:100%;\r\n`;\r\n\r\nconst StyledTextArea = styled(TextareaAutosize)`\r\n && {\r\n width:100%;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n background: #0000;\r\n border-radius: 3px;\r\n line-height: 24px;\r\n min-height: 24px;\r\n padding: 4px 8px;\r\n resize: none;\r\n background-color: #fff;\r\n box-shadow: inset 0 0 0 2px #0079bf;\r\n border: none;\r\n outline:none;\r\n }\r\n`;\r\n//#endregion\r\n\r\ninterface Props {\r\n checklist: CardChecklist;\r\n}\r\n\r\nconst _swal = withReactContent(Swal);\r\n\r\nconst ChecklistTitleInput = ({ checklist }: Props) => {\r\n const minRows = 1;\r\n const [open, setOpen] = useState(false);\r\n const [title, setTitle] = useState(checklist.title);\r\n const { cardChecklistStore } = useStore();\r\n const { update, deleteChecklist } = cardChecklistStore;\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleOnSave = async () => {\r\n if (title && title.length > 0 && title.length <= 512) {\r\n checklist.title = title;\r\n update(new CardChecklistFormValues(checklist));\r\n setOpen(false);\r\n } else {\r\n setTitle(checklist.title);\r\n toast.error('Title should not be empty or exceed 512 characters');\r\n setOpen(false);\r\n }\r\n }\r\n\r\n const handleClear = () => {\r\n setTitle(checklist.title);\r\n setOpen(false);\r\n }\r\n\r\n const handleDelete = () => {\r\n _swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this Checklist?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n _swal.disableButtons();\r\n deleteChecklist(checklist.id);\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n setTitle(checklist.title);\r\n }, [checklist.title]);\r\n\r\n return (\r\n \r\n {open ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n setOpen(true)}\r\n >{title}\r\n Delete\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default ChecklistTitleInput;","import { IconButton } from '@material-ui/core';\r\nimport React, { useState } from 'react';\r\nimport { MdClear } from 'react-icons/md';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\n//#region Styling\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n margin: 0 0 0 32px !important;\r\n }\r\n`;\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nconst StyledTextArea = styled(TextareaAutosize)`\r\n && {\r\n width:100%;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n background: #0000;\r\n border-radius: 3px;\r\n line-height: 24px;\r\n min-height: 24px;\r\n padding: 4px 8px;\r\n resize: none;\r\n background-color: #fff;\r\n box-shadow: inset 0 0 0 2px #0079bf;\r\n border: none;\r\n outline:none;\r\n}\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n cardChecklistId: string\r\n cardId: string;\r\n}\r\n\r\nconst ItemTitleInput = ({ cardChecklistId, cardId }: Props) => {\r\n const [open, setOpen] = useState(false);\r\n const [title, setTitle] = useState('');\r\n const { cardChecklistStore } = useStore();\r\n const { addItem } = cardChecklistStore;\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleOnSave = async () => {\r\n if (title && title.length > 0 && title.length <= 512) {\r\n addItem({\r\n title: title,\r\n cardChecklistId: cardChecklistId,\r\n isCompleted: false,\r\n cardId: cardId\r\n }).then(v => {\r\n setOpen(false);\r\n setTitle('');\r\n }, reason => console.log(reason));\r\n } else {\r\n toast.error('Item should not be empty or exceed 512 characters');\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n }\r\n\r\n const handleClear = () => {\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n \r\n {open ? (\r\n <>\r\n \r\n \r\n \r\n Add\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n setOpen(true)}\r\n >Add an Item\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default ItemTitleInput;","import { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { BsCheck2Square } from 'react-icons/bs';\r\nimport { Item } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { CardChecklist } from '../../../app/models/cardChecklist';\r\nimport ChecklistItem from './ChecklistItem';\r\nimport ChecklistProgress from './ChecklistProgress';\r\nimport ChecklistTitleInput from './ChecklistTitleInput';\r\nimport ItemTitleInput from './ItemTitleInput';\r\n\r\n//#region Styling\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n margin-bottom: 24px;\r\n display:block\r\n }\r\n`;\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 !important;\r\n width:100%;\r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:16px 0 0 0 !important;\r\n width:100%;\r\n display:flex;\r\n }\r\n`;\r\n\r\nconst ChecklistIcon = styled(BsCheck2Square)`\r\n margin: 4px 16px 0 0;\r\n font-size: 20px;\r\n color:#42526e;\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n checklist: CardChecklist;\r\n}\r\n\r\nconst Checklist = ({ checklist }: Props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {checklist.items && checklist.items.map(c => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(Checklist);","import React, { useEffect, useState } from 'react';\r\nimport { useStore } from '../../stores/store';\r\n\r\ninterface Props {\r\n attachmentId: string;\r\n}\r\n\r\nconst fileToDataUri = (file: Blob) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n resolve(event.target!.result)\r\n };\r\n reader.readAsDataURL(file);\r\n})\r\n\r\nconst HiddenImage = ({ attachmentId}: Props) => {\r\n const { commentAttachmentStore } = useStore();\r\n const [dataUri, setDataUri] = useState('');\r\n\r\n useEffect(() => {\r\n let unmounted = false;\r\n try {\r\n commentAttachmentStore.getBlob(attachmentId).then(v => {\r\n if (v != undefined && !unmounted)\r\n fileToDataUri(v).then(dataUri => {\r\n setDataUri(dataUri as string)\r\n });\r\n });\r\n } catch (e) {\r\n if (!unmounted)\r\n setDataUri('/assets/default-profile-picture.svg');\r\n }\r\n\r\n return () => { unmounted = true };\r\n }, [attachmentId, commentAttachmentStore])\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default HiddenImage;","import { FormikHelpers } from 'formik';\r\nimport { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { Icon, Segment } from 'semantic-ui-react';\r\nimport { useLightbox } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport HiddenImage from '../../../app/common/image/HiddenImage';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport AttachmentEditForm from '../card-attachments/AttachmentEditForm';\r\n\r\n//#region Styling\r\nconst StyledSegment = styled(({ hasView, ...rest }) => )<{ hasView: boolean }>`\r\n padding: 6px !important;\r\n margin: 6px 0 !important;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n box-shadow:none;\r\n transition: box-shadow .3s;\r\n ${p => (p.hasView ? `\r\n &:hover{\r\n margin-top: -1px;\r\n margin-left: -1px;\r\n box-shadow: 0 0 11px rgba(33,33,33,.2);\r\n cursor: pointer;\r\n }\r\n ` : '')};\r\n \r\n`;\r\nconst ActionWrappers = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n`;\r\n\r\nconst StyledIcon = styled(Icon)`\r\n && {\r\n box-shadow: none !important;\r\n &:hover{\r\n background-color: #eee;\r\n cursor: pointer;\r\n }\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\nconst getName = (fileName) => {\r\n let lastIndex = fileName.lastIndexOf(\".\");\r\n return fileName.substring(0, lastIndex);\r\n}\r\n\r\ninterface Props {\r\n fileName: string;\r\n fileId?: string;\r\n lightBoxIndex: number;\r\n onRemove?: (fileName: string) => void | undefined;\r\n isOpen?: boolean;\r\n attachmentId?: string;\r\n onDelete?: (attachmentId: string) => void | undefined;\r\n}\r\n\r\nconst isImage = (fileName) => {\r\n return fileName.match(/.(jpg|jpeg|png)$/i);\r\n}\r\n\r\nconst saveFile = (data, fileName) => {\r\n const a = document.createElement('a');\r\n document.body.appendChild(a);\r\n const url = window.URL.createObjectURL(data);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(a);\r\n }, 0)\r\n}\r\n\r\nconst CommentAttachment = ({ fileId,fileName, lightBoxIndex, onRemove, isOpen, attachmentId, onDelete }: Props) => {\r\n const { commentAttachmentStore, popOverStore } = useStore();\r\n const { getBlob, updateFileName } = commentAttachmentStore;\r\n const { openLightbox, closeLightbox } = useLightbox();\r\n\r\n const handleOnClickAttachment = (event: any) => {\r\n if (attachmentId) {\r\n if (event.target !== event.currentTarget) return;\r\n\r\n if (isImage(fileName)) {\r\n openLightbox(lightBoxIndex!)\r\n }\r\n\r\n else {\r\n getBlob(attachmentId).then(v => {\r\n if (v != undefined) {\r\n saveFile(v, fileName);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n const handleAttachmentUpdateSubmit = (values: { fileName: string },\r\n { resetForm, setSubmitting }: FormikHelpers<{ fileName: string }>) => {\r\n\r\n updateFileName(values.fileName + '.' + fileName.split('.').pop(), attachmentId!)\r\n .then(\r\n result => {\r\n setSubmitting(false);\r\n popOverStore.closePopover();\r\n },\r\n reason => {\r\n console.log(reason)\r\n setSubmitting(false);\r\n }\r\n );\r\n }\r\n\r\n const handleOnEdit = (event: any) => {\r\n event.stopPropagation();\r\n popOverStore.openPopover((\r\n ), event.target);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {fileName}\r\n {attachmentId ? () : ''}\r\n {isOpen ?\r\n (\r\n {attachmentId ? (<>\r\n \r\n onDelete!(attachmentId)} />)\r\n :\r\n ( onRemove!(fileId!)} />)}\r\n )\r\n : ''\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(CommentAttachment);","import React, { ChangeEvent, useRef, useState } from 'react';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { toast } from 'react-toastify';\r\nimport { Button, Icon } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport AvatarImage from '../../../app/common/image/AvatarImage';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CommentAttachment from './CommentAttachment';\r\n\r\n//#region Styling\r\n\r\nconst CommentFrame = styled.div`\r\n flex-grow:1;\r\n background-color: #fff;\r\n border-radius: 3px;\r\n box-shadow: 0 1px 2px -1px #091e4240, 0 0 0 1px #091e4214;\r\n margin: 0 4px 12px 10px;\r\n overflow: hidden;\r\n position: relative;\r\n transition: box-shadow 85ms ease;\r\n`;\r\n\r\nconst CommentBox = styled.div`\r\n padding: 8px 12px;\r\n position: relative;\r\n transition-duration: 85ms;\r\n transition-property: padding-bottom;\r\n transition-timing-function: ease;\r\n`;\r\n\r\nconst StyleTextArea = styled(TextareaAutosize)`\r\n background: #fff!important;\r\n box-shadow: none;\r\n box-sizing: initial;\r\n height: 20px;\r\n margin: 0;\r\n min-height: 20px;\r\n padding: 0;\r\n resize: none;\r\n width: 100%;\r\n border:none;\r\n outline:none;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n`;\r\n\r\nconst CommentControl = styled.div`\r\n bottom: 8px;\r\n left: 12px;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n width:100%;\r\n display: flex;\r\n }\r\n`;\r\nconst Avatar = styled(AvatarImage)`\r\n background-color: #dfe1e6;\r\n border-radius: 25em;\r\n color: #172b4d;\r\n cursor: pointer;\r\n display: block;\r\n float: left;\r\n height: 32px;\r\n margin: 0 4px 4px 0;\r\n overflow: visible;\r\n position: relative;\r\n text-decoration: none;\r\n -webkit-user-select: none;\r\n user-select: none;\r\n width: 32px;\r\n z-index: 0;\r\n`;\r\n\r\nconst AdditionalControlWrapper = styled.div`\r\n &&{\r\n\r\n }\r\n`;\r\n\r\nconst ControlIcon = styled(Icon)`\r\n box-shadow:none !important;\r\n cursor: pointer !important;\r\n border-radius: 4px !important;\r\n &:hover{\r\n background-color: #eee !important;\r\n }\r\n\r\n`;\r\n\r\nconst AttachmentContainer = styled.div`\r\n && {\r\n margin: 8px 0;\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n cardId: string;\r\n comment: string;\r\n}\r\n\r\nconst CommentInput = ({ cardId, comment }: Props) => {\r\n const { commentAttachmentStore, cardCommentStore, userStore, boardStore } = useStore();\r\n const { user } = userStore;\r\n const { add } = commentAttachmentStore;\r\n const { board } = boardStore;\r\n\r\n const [message, setMessage] = useState('');\r\n const [open, setOpen] = useState(false);\r\n\r\n const [selecting, setSelecting] = useState(false);\r\n const inputFile = useRef(null);\r\n const attachmentIcon = useRef(null);\r\n const [files, setFiles] = useState([]);\r\n\r\n const handleFileUpload = () => {\r\n setSelecting(true);\r\n if (inputFile != null && inputFile.current != null)\r\n inputFile.current.click();\r\n }\r\n\r\n const handleFileChange = async (event: ChangeEvent) => {\r\n if (event.currentTarget.value !== \"\") {\r\n if (event.target.files != null) {\r\n\r\n //validation\r\n for (const file of event.target.files as any) {\r\n if (file.size > 100000000) {\r\n toast.error('File must not exceed 100 MB');\r\n return;\r\n }\r\n file.id = 'files' + files.length;\r\n files.push(file);\r\n }\r\n\r\n const mergingFiles = files != null ? files : [];\r\n /*setFiles([...mergingFiles, ...Array.from(event.target.files)]);*/\r\n\r\n }\r\n\r\n } else {\r\n toast.error('No file Selected');\r\n }\r\n setSelecting(false);\r\n event.currentTarget.value = \"\";\r\n }\r\n\r\n const handleSubmit = () => {\r\n if (!message.length) {\r\n toast.error('Comment should not be empty.');\r\n return;\r\n }\r\n\r\n if (!board || !board?.workSpace || !board.workSpace.clientId) {\r\n toast.error('Error in retrieving board instance.');\r\n return;\r\n }\r\n\r\n const response = add(cardId,\r\n files,\r\n message,\r\n board?.workSpace?.clientId);\r\n\r\n if (files.length)\r\n toast.promise(\r\n response,\r\n {\r\n pending: `Uploading files`,\r\n success: `Files uploaded!`,\r\n error: `Uploading error!`\r\n });\r\n\r\n setOpen(false);\r\n setMessage('');\r\n setFiles([]);\r\n }\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setMessage(event.target.value);\r\n }\r\n\r\n const handleBlur = () => {\r\n if (!message.length && !selecting)\r\n setOpen(false);\r\n }\r\n\r\n const removeSelectedFile = (fileName: string) => {\r\n if (files != null) {\r\n setFiles(files.filter(f => f.id != fileName));\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n setOpen(true)}\r\n onBlur={handleBlur}\r\n onChange={handleOnChange}\r\n value={message}\r\n />\r\n {files && open && (\r\n \r\n {files.map((f, index) => (\r\n ))}\r\n \r\n )}\r\n {open ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : ''}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CommentInput;","import { IconButton } from '@material-ui/core';\r\nimport { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport React, { ChangeEvent, useEffect, useRef, useState } from 'react';\r\nimport { MdClear } from 'react-icons/md';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { toast } from 'react-toastify';\r\nimport { Button, Header, Icon } from 'semantic-ui-react';\r\nimport SimpleReactLightbox, { SRLWrapper } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport AvatarImage from '../../../app/common/image/AvatarImage';\r\nimport { CardComment } from '../../../app/models/cardComment';\r\nimport { CommentAttachment as CommentAttachmentModel } from '../../../app/models/commentAttachment';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CommentAttachment from './CommentAttachment';\r\n\r\n//#region Styling\r\nconst CommentFrame = styled.div`\r\n flex-grow:1;\r\n background-color: #fff;\r\n border-radius: 3px;\r\n box-shadow: 0 1px 2px -1px #091e4240, 0 0 0 1px #091e4214;\r\n margin: 0 4px 0 10px;\r\n overflow: hidden;\r\n position: relative;\r\n transition: box-shadow 85ms ease;\r\n`;\r\n\r\nconst CommentBox = styled.div`\r\n padding: 8px 12px;\r\n position: relative;\r\n transition-duration: 85ms;\r\n transition-property: padding-bottom;\r\n transition-timing-function: ease;\r\n`;\r\n\r\nconst StyleTextArea = styled(TextareaAutosize)`\r\n background: #fff!important;\r\n box-shadow: none;\r\n box-sizing: initial;\r\n height: 20px;\r\n margin: 0;\r\n min-height: 20px;\r\n padding: 0;\r\n resize: none;\r\n width: 100%;\r\n border:none;\r\n outline:none;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n vertical-align: bottom;\r\n`;\r\n\r\nconst CommentControl = styled.div`\r\n bottom: 8px;\r\n left: 12px;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n width:100%;\r\n display: flex;\r\n padding:8px 0;\r\n }\r\n`;\r\n\r\nconst CommentWrapper = styled.div`\r\n && {\r\n flex-grow:1;\r\n width:100%;\r\n display: flex;\r\n flex-direction:column;\r\n }\r\n`;\r\nconst Avatar = styled(AvatarImage)`\r\n background-color: #dfe1e6;\r\n border-radius: 25em;\r\n color: #172b4d;\r\n cursor: pointer;\r\n display: block;\r\n float: left;\r\n height: 32px;\r\n margin: 0 4px 4px 0;\r\n overflow: visible;\r\n position: relative;\r\n text-decoration: none;\r\n -webkit-user-select: none;\r\n user-select: none;\r\n width: 32px;\r\n z-index: 0;\r\n`;\r\n\r\nconst ActionContainer = styled.div`\r\n margin: 4px 0 0 14px;\r\n`;\r\n\r\nconst ActionLink = styled.span`\r\n && {\r\n font-size:12px;\r\n font-weight: 500;\r\n }\r\n &:hover{\r\n text-shadow:0px 0px 1px black;\r\n cursor:pointer;\r\n }\r\n\r\n`;\r\n\r\nconst CommentHeaderContainer = styled.div`\r\n margin: 0 0 4px 10px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: baseline;\r\n`;\r\n\r\n\r\n\r\nconst AdditionalControlWrapper = styled.div`\r\n &&{\r\n\r\n }\r\n`;\r\n\r\n\r\nconst MainControlWrapper = styled.div`\r\n &&{\r\n\r\n }\r\n`;\r\n\r\nconst ControlIcon = styled(Icon)`\r\n box-shadow:none !important;\r\n cursor: pointer !important;\r\n border-radius: 4px !important;\r\n &:hover{\r\n background-color: #eee !important;\r\n }\r\n\r\n`;\r\n\r\nconst AttachmentContainer = styled.div`\r\n && {\r\n margin: 8px 0;\r\n }\r\n`;\r\n\r\nconst _swal = withReactContent(Swal);\r\n\r\nconst attachLightBoxIndex = (attachments: CommentAttachmentModel[]) => {\r\n let count = 0;\r\n return attachments.map(a => {\r\n if (a.fileName.match(/.(jpg|jpeg|png)$/i)) {\r\n let attachment = {\r\n ...a,\r\n index: count\r\n }\r\n count++;\r\n return attachment;\r\n } else {\r\n return a;\r\n }\r\n })\r\n}\r\n\r\ninterface Props {\r\n comment: CardComment;\r\n}\r\n\r\n//#endregion\r\n\r\nconst CommentEditInput = ({ comment }: Props) => {\r\n const { cardCommentStore, commentAttachmentStore, userStore, boardStore } = useStore();\r\n const { user } = userStore;\r\n const { board } = boardStore;\r\n\r\n const [message, setMessage] = useState(comment.message);\r\n const [open, setOpen] = useState(false);\r\n\r\n const inputFile = useRef(null);\r\n const attachmentIcon = useRef(null);\r\n const [files, setFiles] = useState([]);\r\n\r\n const handleSubmit = () => {\r\n if (!message.length) {\r\n toast.error('Comment should not be empty.');\r\n setMessage(comment.message);\r\n return;\r\n }\r\n\r\n if (!board || !board?.workSpace || !board.workSpace.clientId) {\r\n toast.error('Error in retrieving board instance.');\r\n return;\r\n }\r\n\r\n const response = commentAttachmentStore.updateComment(\r\n comment.cardId,\r\n comment.id,\r\n files,\r\n message,\r\n board.workSpace.clientId\r\n );\r\n\r\n if (files.length)\r\n toast.promise(response,\r\n {\r\n pending: `Uploading files`,\r\n success: `Files uploaded!`,\r\n error: `Uploading error!`\r\n });\r\n\r\n setOpen(false);\r\n setFiles([]);\r\n }\r\n\r\n const handleFileUpload = () => {\r\n if (inputFile != null && inputFile.current != null)\r\n inputFile.current.click();\r\n }\r\n\r\n const handleFileChange = async (event: ChangeEvent) => {\r\n if (event.currentTarget.value !== \"\") {\r\n if (event.target.files != null) {\r\n\r\n //validation\r\n for (const file of event.target.files as any) {\r\n if (file.size > 100000000) {\r\n toast.error('File must not exceed 100 MB');\r\n return;\r\n }\r\n file.id = 'files' + files.length;\r\n files.push(file);\r\n }\r\n\r\n //const mergingFiles = files != null ? files : [];\r\n const mergingFiles = [];\r\n setFiles([...mergingFiles, ...files])\r\n }\r\n\r\n } else {\r\n toast.error('No file Selected');\r\n }\r\n //if (event.currentTarget.value !== \"\") {\r\n // if (event.target.files != null) {\r\n // const mergingFiles = files != null ? files : [];\r\n // setFiles([...mergingFiles, ...Array.from(event.target.files)]);\r\n // }\r\n\r\n //} else {\r\n // toast.error('No file Selected');\r\n //}\r\n event.currentTarget.value = \"\";\r\n }\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setMessage(event.target.value);\r\n }\r\n\r\n const handleClose = () => {\r\n setMessage(comment.message);\r\n setOpen(false);\r\n }\r\n\r\n const handleOnDelete = () => {\r\n _swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this Comment?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n _swal.disableButtons();\r\n cardCommentStore.delete(comment.id);\r\n }\r\n });\r\n };\r\n\r\n const handleDeleteAttachment = (attachmentId: string) => {\r\n _swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this Attachment?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n _swal.disableButtons();\r\n commentAttachmentStore.deleteAttachment(attachmentId);\r\n }\r\n });\r\n }\r\n\r\n const removeSelectedFile = (fileName: string) => {\r\n if (files != null) {\r\n setFiles(files.filter(f => f.id != fileName));\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setMessage(comment.message);\r\n }, [comment.message]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {comment.displayName}\r\n
\r\n \r\n {moment.utc(comment.date).fromNow()} {moment.utc(comment.date!) < moment.utc(comment.dateUpdated) ? '(edited)' : ''}\r\n \r\n
\r\n \r\n \r\n \r\n {comment.attachments && (\r\n \r\n \r\n \r\n {attachLightBoxIndex(comment.attachments).map((a, index) => (\r\n ))}\r\n\r\n {files && open && (\r\n \r\n {files.map((f, index) => ())}\r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n {open ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : ''}\r\n\r\n \r\n \r\n {user?.id == comment.userId && !open ? (\r\n \r\n setOpen(true)}>Edit - Delete\r\n \r\n ) : ''}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default observer(CommentEditInput);","import { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { Card } from '../../../app/models/card';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CommentInput from './CommentInput';\r\nimport CommentEditInput from './CommentEditInput';\r\n\r\nconst ListContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\ninterface Props {\r\n card: Card\r\n}\r\n\r\nconst CommentList = ({ card: cardProps }: Props) => {\r\n const { cardStore } = useStore();\r\n const { card } = cardStore;\r\n\r\n return (\r\n <>\r\n \r\n \r\n {card?.comments && card.comments.map(c => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(CommentList);","import TextField from '@material-ui/core/TextField';\r\nimport PropTypes from 'prop-types';\r\n\r\n\r\ninterface Props {\r\n classes: any;\r\n style: any;\r\n name: any;\r\n value: any;\r\n onChange: any;\r\n error: any;\r\n helperText: any;\r\n}\r\n\r\nconst TimePickers = (props: Props) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nTimePickers.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default TimePickers;","import { FormControl, FormControlLabel, MenuItem, Radio, RadioGroup, Select, TextField, Typography } from '@material-ui/core';\r\nimport { useFormik } from 'formik';\r\nimport { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport { useEffect, useState } from 'react';\r\nimport { Button, Checkbox, FormGroup, Grid } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport * as yup from 'yup';\r\nimport TimePickers from '../../../app/common/timepicker/Timepicker';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\n//#region Styling\r\nconst StyledSectionContainer = styled(Grid.Row)`\r\n&&{\r\n border: 1px solid #dee2e6;\r\n margin: 0px 10px 5px 10px;\r\n}\r\n`;\r\n\r\nconst StyledMainTitle = styled.h5`\r\n&&{\r\n margin-top: 5px;\r\n font-family: sans-serif;\r\n font-size: 20px;\r\n font-weight: bold;\r\n}\r\n`;\r\n\r\nconst StyledDateTimeTitle = styled.h6`\r\n&&{\r\n font-family: sans-serif;\r\n font-size: 13px;\r\n font-weight: bold;\r\n}\r\n`;\r\n\r\nconst StyledNotificationTitle = styled.h6`\r\n&&{\r\n font-family: sans-serif;\r\n font-size: 13px;\r\n font-weight: bold;\r\n}\r\n`;\r\n\r\nconst StyledGrid = styled(Grid.Column)`\r\n&&{\r\n padding-left: 20px !important;\r\n padding-right: 20px !important;\r\n}\r\n`;\r\n\r\nconst StyledTextField = styled(TextField)`\r\n&&{\r\n width: 144px;\r\n float: right;\r\n padding: 0px;\r\n}\r\n`;\r\n\r\nconst StyledDate = styled(TextField)`\r\n&&{\r\n width: 144px;\r\n float: right;\r\n}\r\n`;\r\n\r\nconst StyledCheckbox = styled(Checkbox)`\r\n&&{\r\n margin-right: 11px;\r\n}\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n&&{\r\n color: #f44336;\r\n font-size: 10px;\r\n display: block;\r\n text-align: right;\r\n}\r\n`;\r\n\r\nconst StyledRecurrence = styled(FormControlLabel)`\r\n&&{\r\n position: absolute;\r\n top: -9px;\r\n left: 23px;\r\n background: #F4F5F7;\r\n}\r\n`;\r\n\r\nconst StyledRecurrenceLabel = styled(Typography)`\r\n&&{\r\n font-size: 11px;\r\n background: #F4F5F7;\r\n}\r\n`;\r\n\r\nconst StyledInput = styled.input`\r\n&&{\r\n width: 27px;\r\n border: 1px solid grey;\r\n background: #F4F5F7;\r\n outline: none !important;\r\n text-align: center;\r\n padding: 3px;\r\n margin: 0 4px;\r\n font-size: 10px;\r\n}\r\n`;\r\n\r\nconst StyledOrdinalDropdown = styled.select`\r\n&&{\r\n width: 62px;\r\n border: 1px solid grey;\r\n background: #F4F5F7;\r\n outline: none !important;\r\n text-align: center;\r\n padding: 3px 0;\r\n margin: 0 4px;\r\n font-size: 10px;\r\n}\r\n`;\r\n\r\nconst StyledWeekendDropdown = styled.select`\r\n&&{\r\n width: 82px;\r\n border: 1px solid grey;\r\n background: #F4F5F7;\r\n outline: none !important;\r\n text-align: center;\r\n padding: 3px 0;\r\n margin: 0 4px;\r\n font-size: 9px;\r\n}\r\n`;\r\n\r\nconst StyledMonthDropdown = styled.select`\r\n&&{\r\n width: 82px;\r\n border: 1px solid grey;\r\n background: #F4F5F7;\r\n outline: none !important;\r\n text-align: center;\r\n padding: 3px 0;\r\n margin: 0 4px;\r\n font-size: 9px;\r\n}\r\n`;\r\n\r\n//#endregion\r\n\r\nconst validationSchema = yup.object({\r\n startTime: yup\r\n .string()\r\n .required('Start time is required'),\r\n endTime: yup\r\n .string()\r\n .required('End time is required'),\r\n startDate: yup\r\n .string()\r\n .required('Start date is required')\r\n});\r\n\r\ninterface Props {\r\n cardId: string;\r\n}\r\n\r\nconst DateDetails = ({ cardId }: Props) => { \r\n const { dateModalStore, cardDateStore } = useStore();\r\n const { addSchedule, getSchedule, cardDate } = cardDateStore;\r\n const [duration, setDuration] = useState(30);\r\n const [recurrenceType, setRecurrenceType] = useState(\"daily\");\r\n const [recurrencePattern, setRecurrencePattern] = useState(false);\r\n const [dailyRecurrenceOption, setDailyRecurrenceOption] = useState(\"first\");\r\n const [monthlyRecurrenceOption, setMonthlyRecurrenceOption] = useState(\"first\");\r\n const [yearlyRecurrenceOption, setYearlyRecurrenceOption] = useState(\"first\");\r\n\r\n useEffect(() => {\r\n if (cardId) getSchedule(cardId).then(() => {\r\n if (cardDate) {\r\n let start = new Date(cardDate.startTime + 'Z'),\r\n end = new Date(cardDate.endTime + 'Z'),\r\n durationVal = ((end.getTime() - start.getTime()) / 1000) / 60;\r\n if (durationVal < 0) {\r\n let endTimeWithTomorrowDate = end;\r\n endTimeWithTomorrowDate.setDate(endTimeWithTomorrowDate.getDate() + 1);\r\n durationVal = ((endTimeWithTomorrowDate.getTime() - start.getTime()) / 1000) / 60;\r\n }\r\n\r\n setDuration(durationVal);\r\n }\r\n });\r\n }, [cardId]);\r\n\r\n useEffect(() => {\r\n if (cardDate) {\r\n formik.resetForm({\r\n values: {\r\n scheduleId: cardDate.id,\r\n startTime: moment(new Date(cardDate!.startTime + 'Z')).format('HH:mm'),\r\n endTime: moment(new Date(cardDate!.endTime + 'Z')).format('HH:mm'),\r\n startDate: moment(new Date(cardDate!.startDate + 'Z')).format('yyyy-MM-DD'),\r\n notificationCheckbox: cardDate!.notification.split(',')\r\n }\r\n })\r\n }\r\n }, [cardDate]);\r\n\r\n const handleFormSubmission = (values) => {\r\n const [year, month, day] = values.startDate.split('-');\r\n const formattedDate = [month, day, year].join('/');\r\n\r\n let request = {\r\n id: values.scheduleId ? values.scheduleId : null,\r\n cardId,\r\n startTime: new Date(new Date().toDateString() + ' ' + values.startTime),\r\n endTime: new Date(new Date().toDateString() + ' ' + values.endTime),\r\n notification: values.notificationCheckbox.length != 0 ? values.notificationCheckbox.join(\",\") : '',\r\n startDate: formattedDate\r\n };\r\n\r\n addSchedule(request).then(() => {\r\n dateModalStore.closeModal();\r\n });\r\n }\r\n\r\n const handleCheckBoxClick = (e) => {\r\n e.stopPropagation();\r\n let label = e.target.parentElement.nextElementSibling;\r\n label.click();\r\n }\r\n\r\n const handleStartTimeOnChange = (e) => {\r\n let baseDate = moment('2022, 1, 1 ' + e.target.value),\r\n endTime = baseDate.add(30, 'minutes').format('HH:mm');\r\n\r\n formik.handleChange(e);\r\n formik.setFieldValue('endTime', endTime);\r\n\r\n setTimeout(() => {\r\n let startTimeVal = e.target.value,\r\n endTimeVal = document.getElementsByClassName('end-timepicker')[0].querySelector('input')?.value,\r\n dateToday = new Date().getFullYear() + '/' + (new Date().getMonth() + 1) + '/' + new Date().getDate(),\r\n durationVal = ((new Date(dateToday + ' ' + endTimeVal).getTime() - new Date(dateToday + ' ' + startTimeVal).getTime()) / 1000) / 60;\r\n\r\n if (durationVal < 0) {\r\n let endTimeWithTomorrowDate = new Date(dateToday + ' ' + endTimeVal);\r\n endTimeWithTomorrowDate.setDate(endTimeWithTomorrowDate.getDate() + 1);\r\n durationVal = ((endTimeWithTomorrowDate.getTime() - new Date(dateToday + ' ' + startTimeVal).getTime()) / 1000) / 60;\r\n }\r\n\r\n setDuration(durationVal);\r\n },500);\r\n\r\n }\r\n\r\n const handleEndTimeOnChange = (e) => {\r\n formik.handleChange(e);\r\n\r\n setTimeout(() => {\r\n let endTimeVal = e.target.value,\r\n startTimeVal = document.getElementsByClassName('start-timepicker')[0].querySelector('input')?.value,\r\n dateToday = new Date().getFullYear() + '/' + (new Date().getMonth() + 1) + '/' + new Date().getDate(),\r\n durationVal = ((new Date(dateToday + ' ' + endTimeVal).getTime() - new Date(dateToday + ' ' + startTimeVal).getTime()) / 1000) / 60;\r\n\r\n if (durationVal < 0) {\r\n let endTimeWithTomorrowDate = new Date(dateToday + ' ' + endTimeVal);\r\n endTimeWithTomorrowDate.setDate(endTimeWithTomorrowDate.getDate() + 1);\r\n durationVal = ((endTimeWithTomorrowDate.getTime() - new Date(dateToday + ' ' + startTimeVal).getTime()) / 1000) / 60;\r\n }\r\n\r\n setDuration(durationVal);\r\n }, 500);\r\n }\r\n\r\n const handleRecurrenceTypeChange = (e) => {\r\n setRecurrenceType(e.target.value);\r\n }\r\n\r\n const handleDailyRecurrenceOptionChange = (e) => {\r\n setDailyRecurrenceOption(e.target.value);\r\n }\r\n\r\n const handleMonthlyRecurrenceOptionChange = (e) => {\r\n setMonthlyRecurrenceOption(e.target.value);\r\n }\r\n\r\n const handleYearlyRecurrenceOptionChange = (e) => {\r\n setYearlyRecurrenceOption(e.target.value);\r\n }\r\n\r\n const handleRecurrencePatternChange = (e) => {\r\n setRecurrencePattern(e.target.checked);\r\n }\r\n\r\n const formik = useFormik({\r\n initialValues: {\r\n scheduleId: '',\r\n startTime: '10:00',\r\n endTime: '10:30',\r\n startDate: moment(new Date()).format('yyyy-MM-DD'),\r\n notificationCheckbox: [\"15\"]\r\n },\r\n validationSchema: validationSchema,\r\n onSubmit: handleFormSubmission\r\n });\r\n\r\n return (\r\n <>\r\n
\r\n \r\n Schedule Date\r\n \r\n \r\n \r\n Date & Time\r\n \r\n \r\n \r\n \r\n {formik.touched.startTime && formik.errors.startTime}\r\n \r\n \r\n \r\n \r\n {formik.touched.endTime && formik.errors.endTime}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {formik.touched.startDate && formik.errors.startDate}\r\n \r\n \r\n Notification\r\n \r\n \r\n \r\n }\r\n name=\"notificationCheckbox\"\r\n onChange={formik.handleChange}\r\n label={15 mins}\r\n />\r\n \r\n }\r\n name=\"notificationCheckbox\"\r\n onChange={formik.handleChange}\r\n label={30 mins}\r\n />\r\n \r\n }\r\n name=\"notificationCheckbox\"\r\n onChange={formik.handleChange}\r\n label={45 mins}\r\n />\r\n \r\n }\r\n name=\"notificationCheckbox\"\r\n onChange={formik.handleChange}\r\n label={60 mins}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n name=\"recurrenceCheckbox\"\r\n onChange={handleRecurrencePatternChange }\r\n label={Recurrence pattern}\r\n />\r\n\r\n \r\n \r\n \r\n } label={Daily} />\r\n } label={Weekly} />\r\n } label={Monthly} />\r\n } label={Yearly} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n } label={Every day(s)}/>\r\n } label={Every weekday} />\r\n \r\n \r\n\r\n Recur every week(s) on:\r\n \r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Sunday}\r\n />\r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Monday}\r\n />\r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Tuesday}\r\n />\r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Wednesday}\r\n />\r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Friday}\r\n />\r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Thursday}\r\n />\r\n \r\n }\r\n name=\"weeklyCheckbox\"\r\n label={Saturday}\r\n />\r\n \r\n\r\n \r\n \r\n } label={Day of every month(s)}/>\r\n }\r\n label={\r\n The\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n of every month(s)\r\n \r\n }\r\n \r\n />\r\n \r\n \r\n\r\n \r\n Recur every year(s)\r\n \r\n }\r\n label={\r\n On:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n label={\r\n On the:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n of\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default observer(DateDetails);","import { IconButton, makeStyles } from '@material-ui/core';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { MdClear } from 'react-icons/md';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport AvatarImage from '../../../app/common/image/AvatarImage';\r\nimport { User } from '../../../app/models/user';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\ninterface Props {\r\n user: User;\r\n cardId: string;\r\n createdUserId: string;\r\n}\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n \r\n btnCircle: {\r\n position: \"absolute\",\r\n top: \"-6px\",\r\n right: \"-6px\",\r\n \r\n },\r\n \r\n}));\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n margin-right: 6px;\r\n margin-top: 10px;\r\n max-width: 3.5em;\r\n display: inline-block;\r\n text-align: center;\r\n position: relative;\r\n }\r\n`;\r\nconst NameWrapper = styled.div`\r\n && {\r\n line-height: 1em;\r\n font-size: 0.75em;\r\n color: #767373;\r\n margin-top: 4px;\r\n overflow-wrap: break-word;\r\n }\r\n`;\r\n\r\n\r\nconst CardMember = ({ user, cardId, createdUserId }: Props) => {\r\n const classes = useStyle();\r\n const { cardMemberStore, } = useStore();\r\n const { removeMember } = cardMemberStore;\r\n const handleOnRemove = () => {\r\n\r\n Swal.fire({\r\n title: 'Remove?',\r\n text: \"Are you sure you want to remove this member?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n allowOutsideClick: false,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Yes'\r\n }).then(async (result) => {\r\n if (result.isConfirmed) {\r\n removeMember(cardId, user.id);\r\n toast.success(\"Member was removed successfully.\");\r\n }\r\n \r\n })\r\n \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n {(user.id == createdUserId && user.clientId) ? null : \r\n \r\n }\r\n \r\n {user.firstName}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(CardMember);","import { observer } from 'mobx-react-lite';\r\nimport React, { useEffect } from 'react';\r\nimport { BsPlusLg } from 'react-icons/bs';\r\nimport { Button, Icon } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport LoadingComponent from '../../../app/layout/LoadingComponent';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CardMember from '../card-members/CardMember';\r\n\r\n\r\nconst Container = styled.div`\r\n && {\r\n display: flex;\r\n padding: 0 5px;\r\n flex-wrap: wrap;\r\n justify-content: flex-start;\r\n \r\n }\r\n`;\r\n\r\n\r\ninterface Props {\r\n cardId: string;\r\n createdUserId: string;\r\n}\r\n\r\n\r\nconst CardMembersContainer = ({ cardId, createdUserId }: Props) => {\r\n\r\n const { cardMemberStore, } = useStore();\r\n const { cardMembers, loadCardMembers, isLoadingCardMembers, setIsOpenPopOver } = cardMemberStore;\r\n\r\n useEffect(() => {\r\n loadCardMembers(cardId);\r\n }, [cardId]);\r\n\r\n if (isLoadingCardMembers) return \r\n\r\n const handleClick = () => setIsOpenPopOver(true);\r\n\r\n return (\r\n \r\n {\r\n cardMembers.map(user => )\r\n }\r\n {cardMembers.length == 0 ? null : \r\n \r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(CardMembersContainer);","import React, { ChangeEvent, useRef } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst Menu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n\r\ninterface Props {\r\n cardId: string\r\n}\r\n\r\nconst AttachmentMenu = ({ cardId }: Props) => {\r\n const { cardAttachmentStore, boardStore } = useStore();\r\n const { uploadMultiple, uploading } = cardAttachmentStore;\r\n const { board } = boardStore;\r\n\r\n const inputFile = useRef(null);\r\n\r\n const handleFileUpload = () => {\r\n if (inputFile != null && inputFile.current != null)\r\n inputFile.current.click();\r\n }\r\n\r\n const handleFileChange = (event: ChangeEvent) => {\r\n\r\n \r\n if (event.currentTarget.value == \"\") {\r\n toast.error('No file Selected');\r\n return;\r\n }\r\n\r\n if (!board?.workSpace || !board.workSpace.clientId || event.target.files == null) {\r\n toast.error('No client Id available.');\r\n return;\r\n }\r\n\r\n //validation\r\n for (const file of event.target.files) {\r\n if (file.size > 100000000) {\r\n toast.error('File must not exceed 100 MB');\r\n return;\r\n }\r\n }\r\n\r\n const response = uploadMultiple(\r\n [...Array.from(event.target.files)],\r\n cardId,\r\n board.workSpace.clientId);\r\n\r\n toast.promise(response,\r\n {\r\n pending: `Uploading file`,\r\n success: `File uploaded!`,\r\n error: `Uploading error!`\r\n });\r\n event.currentTarget.value = \"\";\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AttachmentMenu;","import { Popover } from '@material-ui/core';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport React from 'react';\r\nimport { Button, Divider, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport * as Yup from 'yup';\r\nimport { CardChecklistFormValues } from '../../../app/models/cardChecklist';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport TextAreaInput from './TextAreaInput';\r\n\r\n//#region Styling\r\nconst Menu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n\r\nconst BodyContainer = styled.div`\r\n padding: 0 12px 12px;\r\n`;\r\n\r\nconst HeaderContainer = styled.div`\r\n height: 40px;\r\n margin-bottom: 8px;\r\n position: relative;\r\n text-align: center;\r\n padding:8px;\r\n & h4{\r\n margin:0 !important;\r\n }\r\n`;\r\n\r\nconst ContentWrapper = styled.div`\r\n && {\r\n border-radius: 3px;\r\n box-shadow: 0 8px 16px -4px #091e4240, 0 0 0 1px #091e4214;\r\n width: 304px;\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n cardId: string;\r\n}\r\n\r\nconst ChecklistMenu = ({ cardId }: Props) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const { cardChecklistStore } = useStore();\r\n\r\n const handleClick = (e: MouseEvent) => setAnchorEl(e.currentTarget);\r\n const handleClose = () => setAnchorEl(null);\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? 'popover-cardchecklist' : undefined;\r\n\r\n const handleSubmit = (values: { title: string }, { resetForm, setSubmitting }: FormikHelpers<{ title: string }>) => {\r\n cardChecklistStore.add({\r\n title: values.title,\r\n cardId: cardId\r\n } as CardChecklistFormValues).then(\r\n result => {\r\n setSubmitting(false);\r\n setAnchorEl(null);\r\n },\r\n reason => {\r\n console.log(reason)\r\n setSubmitting(false);\r\n }\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n {\r\n ({ handleSubmit, isSubmitting, dirty, isValid, values }) => (\r\n \r\n \r\n
\r\n Add Checklist\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n Add\r\n \r\n
\r\n
\r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ChecklistMenu;","import { Button } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport DateDetails from '../card-dates/DateDetails';\r\n\r\n//#region Styling\r\nconst Menu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n//#endregion\r\n\r\ninterface Props {\r\n cardId: string;\r\n}\r\n\r\nconst DateMenu = ({ cardId }: Props) => {\r\n const { dateModalStore } = useStore();\r\n\r\n const handleClick = () => {\r\n dateModalStore.openModal()\r\n }\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default DateMenu;","import { Popover } from '@material-ui/core';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { Button, Divider, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport * as Yup from 'yup';\r\nimport { CardChecklistFormValues } from '../../../app/models/cardChecklist';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport Select, { MultiValue } from 'react-select';\r\nimport { toast } from 'react-toastify';\r\nimport ReactDOM from 'react-dom';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\n//#region Styling\r\nconst Menu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n\r\nconst BodyContainer = styled.div`\r\n padding: 12px 12px 12px 12px;\r\n display: flex;\r\n min-height: 340px;\r\n max-height: 700px;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n`;\r\n\r\nconst HeaderContainer = styled.div`\r\n height: 40px;\r\n margin-bottom: 8px;\r\n position: relative;\r\n text-align: center;\r\n padding:8px;\r\n & h4{\r\n margin:0 !important;\r\n }\r\n`;\r\n\r\nconst ContentWrapper = styled.div`\r\n && {\r\n border-radius: 3px;\r\n box-shadow: 0 8px 16px -4px #091e4240, 0 0 0 1px #091e4214;\r\n width: 304px;\r\n }\r\n`;\r\nconst PopupLable = styled.div`\r\n height: 40px;\r\n margin-top: 8px;\r\n position: relative;\r\n text-align: center;\r\n padding:8px;\r\n & h4{\r\n margin:0 !important;\r\n }\r\n`;\r\n\r\n\r\n\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n cardId: string;\r\n workspaceId: string\r\n}\r\n\r\nconst selectStyles = {\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '92px',\r\n width: \"300px\",\r\n\r\n }),\r\n \r\n menuList: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '180px'\r\n }),\r\n dropdownIndicator: (provided, state) => ({\r\n ...provided,\r\n display: 'none'\r\n }),\r\n\r\n}\r\n\r\nconst MembersMenu = ({ cardId, workspaceId }: Props) => {\r\n const [selectedOption, setSelectedOption] = useState>([]);\r\n const { cardMemberStore, popOverStore } = useStore();\r\n const { memberOptionValues, addMultiple, isLoading, isOpenPopOver, setIsOpenPopOver } = cardMemberStore;\r\n const buttonRef = useRef(null);\r\n\r\n const handleClick = (e: MouseEvent) => {\r\n setIsOpenPopOver(true);\r\n \r\n };\r\n const handleClose = () => {\r\n setIsOpenPopOver(false); setSelectedOption([]) };\r\n\r\n const handleSubmit = async (values: MultiValue<{ value: string; }>, { setErrors, resetForm, setSubmitting }) => {\r\n let userIds = values.map(v => v.value);\r\n await addMultiple(cardId, userIds)\r\n .then(() => {\r\n popOverStore.closePopover();\r\n toast.success('Member/s was added successfully.');\r\n handleClose();\r\n }, reason => {\r\n console.log(reason);\r\n });\r\n setSubmitting(false);\r\n }\r\n const ButtonContainer = styled.div`\r\n && {\r\n \r\n flex-direction: row;\r\n justify-content: flex-start;\r\n }\r\n`;\r\n\r\n useEffect(() => {\r\n cardMemberStore.getAllWorkSpaceUsers(cardId, workspaceId);\r\n }, [cardId, workspaceId, isOpenPopOver])\r\n\r\n return (\r\n <>\r\n \r\n {\r\n let element = ReactDOM.findDOMNode(buttonRef.current);\r\n return element as Element;\r\n }}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n }}\r\n elevation={1}\r\n PaperProps={{\r\n style: { width: '18%' },\r\n }}\r\n >\r\n

Add Members

\r\n \r\n {\r\n ({ handleSubmit, isSubmitting, dirty, isValid, values }) => (\r\n
\r\n \r\n \r\n 'No user available'}\r\n isLoading={isLoading}\r\n />\r\n\r\n \r\n handleClose()}\r\n style={{ float: 'right'}}\r\n >Cancel\r\n Save\r\n \r\n \r\n
\r\n )\r\n }\r\n \r\n \r\n\r\n \r\n );\r\n}\r\n\r\nexport default observer(MembersMenu);","import React from 'react';\r\nimport { Placeholder } from 'semantic-ui-react';\r\n\r\nconst CardPlaceholder = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CardPlaceholder;","import { CardChecklist } from \"./cardChecklist\";\r\nimport { CardComment } from \"./cardComment\";\r\nimport { CardAttachment } from \"./cardAttachment\";\r\n\r\nexport interface Card {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n cardGroupId: string;\r\n createdUserId: string;\r\n comments: CardComment[];\r\n checklists: CardChecklist[];\r\n attachments: CardAttachment[];\r\n}\r\n\r\nexport class CardFormValues {\r\n id?: string = undefined;\r\n title: string = '';\r\n description: string = '';\r\n cardGroupId: string = '';\r\n createdUserId: string = '';\r\n\r\n constructor(card?: Card) {\r\n if (card) {\r\n this.id = card.id;\r\n this.title = card.title;\r\n this.cardGroupId = card.cardGroupId;\r\n this.createdUserId = card.createdUserId;\r\n if (card.description)\r\n this.description = card.description;\r\n\r\n }\r\n }\r\n}\r\n\r\n","import { IconButton } from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { MdClear } from 'react-icons/md';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { toast } from 'react-toastify';\r\nimport { Button, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { Card, CardFormValues } from '../../../app/models/card';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\n//#region Styling\r\n\r\nconst ComponentWrapper = styled.div`\r\n && {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-direction: column;\r\n }\r\n`;\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n flex-wrap: nowrap;\r\n`;\r\n\r\nconst HeaderContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: baseline;\r\n flex-wrap: nowrap;\r\n margin-bottom: 16px;\r\n`;\r\n\r\nconst StyledTextArea = styled(TextareaAutosize)`\r\n && {\r\n width:100%;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n background: #0000;\r\n border-radius: 3px;\r\n line-height: 24px;\r\n min-height: 24px;\r\n padding: 4px 8px;\r\n resize: none;\r\n background-color: #fff;\r\n box-shadow: inset 0 0 0 2px #0079bf;\r\n border: none;\r\n outline:none;\r\n}\r\n`;\r\n\r\nconst FakeTextbox = styled.p`\r\n background-color: #091e420a;\r\n border: none;\r\n border-radius: 3px;\r\n box-shadow: none;\r\n display: block;\r\n min-height: 60px;\r\n padding: 8px 12px;\r\n text-decoration: none;\r\n width:100%;\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n card: Card\r\n}\r\n\r\nconst DescriptionInput = ({ card }: Props) => {\r\n const minRows = 3;\r\n const [open, setOpen] = useState(false);\r\n const [description, setDescription] = useState(card.description);\r\n const { cardStore } = useStore();\r\n const { update } = cardStore;\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setDescription(event.target.value);\r\n }\r\n\r\n const handleOnSave = async () => {\r\n if (description && description.length > 0 && description.length <= 5124) {\r\n card.description = description;\r\n update(new CardFormValues(card));\r\n setOpen(false);\r\n } else {\r\n toast.error('Card description should not be empty or exceed 5124 characters');\r\n }\r\n }\r\n\r\n const handleClear = () => {\r\n setDescription(card.description);\r\n setOpen(false);\r\n }\r\n\r\n useEffect(() => {\r\n setDescription(card.description);\r\n }, [card.description]);\r\n\r\n return (\r\n \r\n \r\n
Description
\r\n {!open && description && description.length ? ( setOpen(true)}\r\n >Edit) : ''}\r\n
\r\n {open ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (description && description.length ?\r\n (

{description}

) :\r\n ( setOpen(true)}>Add a more detailed description...)\r\n )}\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default DescriptionInput;","import { InputBase, makeStyles, Typography } from '@material-ui/core';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { Header, TextArea } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { Card, CardFormValues } from '../../../app/models/card';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport TextareaAutosize from 'react-textarea-autosize';\r\nimport { toast } from 'react-toastify';\r\nimport { Board } from '../../../app/models/board';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\n//#region Styling\r\nconst TitleContainer = styled.div`\r\n && {\r\n display: flex;\r\n align-items: center;\r\n }\r\n`;\r\n\r\nconst EditableTitle = styled(Header)`\r\n && {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #172b4d;\r\n padding: 4px 8px;\r\n word-wrap: break-word;\r\n overflow: hidden auto;\r\n min-height:20px;\r\n max-height:256px;\r\n line-height: normal;\r\n }\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n && {\r\n height: auto;\r\n flex-grow: 1;\r\n overflow: auto;\r\n width:240px;\r\n }\r\n`;\r\n\r\nconst StyledTextArea = styled(TextareaAutosize)`\r\n && {\r\n width:100%;\r\n overflow: hidden;\r\n overflow-wrap: break-word;\r\n background: #0000;\r\n border-radius: 3px;\r\n font-size: 18px;\r\n font-weight: 600;\r\n line-height: 24px;\r\n min-height: 24px;\r\n padding: 4px 8px;\r\n resize: none;\r\n background-color: #fff;\r\n box-shadow: inset 0 0 0 2px #0079bf;\r\n border: none;\r\n outline:none;\r\n}\r\n`;\r\n//#endregion\r\n\r\ninterface Props {\r\n card: Card\r\n}\r\n\r\nconst TitleInput = ({ card }: Props) => {\r\n const minRows = 1;\r\n const [open, setOpen] = useState(false);\r\n \r\n const [title, setTitle] = useState(card.title);\r\n const { cardStore, boardStore } = useStore();\r\n\r\n const { update } = cardStore;\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleBlur = () => {\r\n let trimmedTitle = title.trim();\r\n if (trimmedTitle.length < 1) {\r\n setTitle(card.title);\r\n setOpen(false);\r\n toast.error('Task title should not be empty');\r\n }\r\n else if (trimmedTitle.length >= 512) {\r\n setTitle(card.title);\r\n toast.error('Task title should not exceed 512 characters');\r\n } else {\r\n card.title = trimmedTitle;\r\n update(new CardFormValues(card));\r\n setOpen(false);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setTitle(card.title);\r\n }, [card.title])\r\n\r\n return (\r\n \r\n {\r\n open ? (\r\n \r\n ) : (\r\n \r\n setOpen(!open)}>\r\n {title}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default observer(TitleInput);","import { IconButton } from '@material-ui/core';\r\nimport { DH_CHECK_P_NOT_PRIME } from 'constants';\r\nimport { runInAction } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { BsCardHeading, BsListUl, BsTextParagraph } from 'react-icons/bs';\r\nimport { MdClear } from 'react-icons/md';\r\nimport { Button, Divider, Grid, Header, Item } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport { CardDate } from '../../../app/models/cardDate';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CardActivityList from '../card-activities/CardActivityList';\r\nimport AttachmentList from '../card-attachments/AttachmentList';\r\nimport Checklist from '../card-checklist/Checklist';\r\nimport CommentList from '../card-comments/CommentList';\r\nimport DateDetails from '../card-dates/DateDetails';\r\nimport CardMembersContainer from '../card-members/CardMemberContainer';\r\nimport AttachmentMenu from '../card-menus/AttachmentMenu';\r\nimport ChecklistMenu from '../card-menus/ChecklistMenu';\r\nimport DateMenu from '../card-menus/DateMenu';\r\nimport MembersMenu from '../card-menus/MembersMenu';\r\nimport CardPlaceholder from './CardPlaceholder';\r\nimport DescriptionInput from './DescriptionInput';\r\nimport TitleInput from './TitleInput';\r\n\r\n//#region Styling\r\n\r\nconst TitleIcon = styled(BsCardHeading)`\r\n margin: 2px 16px 0 0;\r\n font-size: 20px;\r\n color:#42526e;\r\n`;\r\n\r\nconst DescriptionIcon = styled(BsTextParagraph)`\r\n margin: 4px 16px 0 0;\r\n font-size: 20px;\r\n color:#42526e;\r\n`;\r\n\r\nconst ActivityIcon = styled(BsListUl)`\r\n margin: 4px 16px 0 0;\r\n font-size: 20px;\r\n color:#42526e;\r\n`;\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0 !important;\r\n }\r\n`;\r\nconst ItemInListContent = styled(Item.Content)`\r\n &&{\r\n margin: -15px 0 0 47px !important;\r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:16px 0 !important;\r\n }\r\n`;\r\nconst StyledMember = styled(Item)`\r\n &&{\r\n margin:0 0 16px 0 !important;\r\n }\r\n`;\r\n\r\nconst Menu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n\r\nconst ScheduleMenu = styled(Button)`\r\n background:#091e4214 !important;\r\n margin-bottom: 8px !important;\r\n padding: 5px 3px !important;\r\n font-weight: normal !important;\r\n font-size: 13px;\r\n\r\n & i{\r\n background:none !important;\r\n }\r\n`;\r\n\r\nconst ScheduleCloseIconStyled = styled(IconButton)`\r\n && {\r\n right: -18px;\r\n position: absolute;\r\n top: -12px;\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\nconst _swal = withReactContent(Swal);\r\n\r\n\r\ninterface Props {\r\n id: string;\r\n cardGroupName: string\r\n}\r\n\r\nconst CardDetails = ({ id, cardGroupName }: Props) => {\r\n const { cardStore, boardStore, cardMemberStore, cardDateStore, dateModalStore } = useStore();\r\n const { cardMembers } = cardMemberStore;\r\n const { openModal } = dateModalStore;\r\n const { isLoading, card, deleteCard } = cardStore;\r\n const { activeBoard } = boardStore;\r\n const { getSchedule, deleteSchedule, cardDate } = cardDateStore;\r\n const [schedule, setSchedule] = useState(undefined);\r\n\r\n useEffect(() => {\r\n cardStore.loadCard(id);\r\n if (id) getSchedule(id);\r\n return () => {\r\n cardStore.stopListening(id);\r\n cardStore.reset();\r\n }\r\n }, [cardStore, id]);\r\n\r\n useEffect(() => {\r\n runInAction(async () => {\r\n setSchedule(cardDate);\r\n });\r\n }, [cardDate]);\r\n\r\n const handleOnDelete = () => {\r\n _swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this Task?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n _swal.disableButtons();\r\n deleteCard(card!.id, card!.cardGroupId);\r\n }\r\n });\r\n };\r\n\r\n const handleOnScheduleIndicatorClick = () => {\r\n openModal()\r\n };\r\n\r\n const formattedScheduleDetails = () => {\r\n let date = new Date(schedule!.startDate + 'Z'),\r\n formattedDate = moment(date).format('MMM D'),\r\n startTime = new Date(schedule!.startTime + 'Z'),\r\n formattedStartTime = moment(startTime).format('hh:mm a');\r\n\r\n return {\r\n formattedDate,\r\n formattedStartTime\r\n };\r\n };\r\n\r\n const handleScheduleCloseIconClick = (e) => {\r\n _swal.fire({\r\n title: 'Remove?',\r\n text: \"Are you sure you want to remove this schedule?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n _swal.disableButtons();\r\n deleteSchedule(card!.id);\r\n }\r\n });\r\n }\r\n\r\n if (isLoading || !card) return \r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n in list {cardGroupName}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {schedule && (\r\n \r\n \r\n \r\n \r\n \r\n {formattedScheduleDetails()?.formattedDate + \" at \" + formattedScheduleDetails()?.formattedStartTime}  \r\n \r\n )}\r\n\r\n \r\n {cardMembers.length == 0 ? null : Members} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {card?.attachments && card?.attachments.length != 0 && ()}\r\n {card?.checklists && card.checklists.map(c => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n Add to task\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n Actions\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(CardDetails);","import { makeStyles, Paper, Typography } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { Draggable } from 'react-beautiful-dnd';\r\nimport { toast } from 'react-toastify';\r\nimport { TextArea } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { Card as CardData } from '../../../app/models/card';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CardDetails from './CardDetails';\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n card: {\r\n padding: theme.spacing(1, 1, 1, 2),\r\n margin: theme.spacing(1),\r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n }\r\n}));\r\n\r\n\r\nconst CardTitle = styled(Typography)`\r\n && {\r\n color: #172b4d;\r\n word-wrap: break-word;\r\n overflow: hidden auto;\r\n min-height:20px;\r\n max-height:256px;\r\n line-height: normal;\r\n }\r\n`;\r\n\r\ninterface Props {\r\n card: CardData;\r\n index: number;\r\n cardGroupName: string;\r\n}\r\n\r\nconst Card = ({ card, index, cardGroupName }: Props) => {\r\n const classes = useStyle();\r\n const { modalStore, cardAttachmentStore } = useStore();\r\n\r\n const handleOnClickCard = () => {\r\n if (card.id) {\r\n cardAttachmentStore.setShowAllAttachments(false);\r\n modalStore.openModal()\r\n } else {\r\n toast.error('Error in card loading.')\r\n }\r\n }\r\n\r\n return (\r\n \r\n {(provided) => (\r\n
\r\n \r\n \r\n {card.title}\r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default Card;","import { makeStyles } from \"@material-ui/core\";\r\nimport { useState } from \"react\";\r\nimport { FiMoreHorizontal } from \"react-icons/fi\";\r\nimport { Menu, MenuItemProps, Popup } from \"semantic-ui-react\";\r\nimport Swal from \"sweetalert2\";\r\nimport withReactContent from \"sweetalert2-react-content\";\r\nimport { useStore } from \"../../../app/stores/store\";\r\n\r\nconst swal = withReactContent(Swal);\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n moreIcon: {\r\n fontSize: '20px',\r\n borderRadius: '4px',\r\n width: '25px',\r\n height: '25px',\r\n alignSelf: 'flex-start',\r\n padding: '4px',\r\n '&:hover': {\r\n backgroundColor: '#cbc3c3',\r\n cursor: 'pointer'\r\n }\r\n }\r\n}));\r\n\r\ninterface Props {\r\n listId: string;\r\n setOpen: React.Dispatch>;\r\n}\r\n\r\nconst CardListTitlePopup = ({ listId, setOpen }: Props) => {\r\n const { cardGroupStore } = useStore();\r\n const { deleteCardGroup } = cardGroupStore;\r\n const classes = useStyle();\r\n const [open, setIsOpen] = useState(false);\r\n\r\n return (\r\n , data: MenuItemProps) => {\r\n if (data.index == 1) {\r\n swal.fire({\r\n title: 'Delete?',\r\n text: \"Are you sure you want to delete this list?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n deleteCardGroup(listId);\r\n }\r\n });\r\n } else if (data.index == 2) {\r\n setOpen(true);\r\n }\r\n\r\n setIsOpen(false);\r\n }}\r\n secondary\r\n vertical\r\n />\r\n }\r\n on='click'\r\n onClose={() => setIsOpen(false)}\r\n onOpen={() => setIsOpen(true)}\r\n open={open}\r\n popper={{ id: 'popper-container', style: { zIndex: 2000 } }}\r\n trigger={}\r\n />\r\n );\r\n}\r\n\r\nexport default CardListTitlePopup;","import { InputBase, makeStyles, Typography } from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport styled from 'styled-components';\r\nimport { Board } from '../../../app/models/board';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport CardListTitlePopup from '../card-lists/CardListTitlePopup'\r\n\r\n//#region Styling\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n input: {\r\n fontSize: '16px',\r\n fontWeight: 600,\r\n flexGrow: 0,\r\n color: '#172b4d',\r\n minHeight: '20px',\r\n maxHeight: '256px',\r\n overflow: 'hidden auto',\r\n margin: '4px 8px !important',\r\n '&:focus': {\r\n backgroundColor: '#ddd'\r\n }\r\n },\r\n moreIcon: {\r\n fontSize: '20px',\r\n borderRadius: '4px',\r\n width: '25px',\r\n height: '25px',\r\n alignSelf: 'flex-start',\r\n padding: '4px',\r\n '&:hover': {\r\n backgroundColor: '#cbc3c3',\r\n cursor: 'pointer'\r\n }\r\n }\r\n}));\r\n\r\nconst TitleContainer = styled.div`\r\n && {\r\n padding: 10px 8px 0 8px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n`;\r\n\r\nconst EditableTitle = styled(Typography)`\r\n && {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #172b4d;\r\n padding: 4px 8px;\r\n word-wrap: break-word;\r\n overflow: hidden auto;\r\n min-height:20px;\r\n max-height:256px;\r\n line-height: normal;\r\n }\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n && {\r\n height: auto;\r\n flex-grow: 1;\r\n overflow: auto;\r\n width:240px;\r\n }\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n title: string;\r\n listId: string;\r\n boardId: string;\r\n}\r\n\r\nconst CardListTitle = ({ title: titleProps, listId, boardId }: Props) => {\r\n const [open, setOpen] = useState(false);\r\n const [title, setTitle] = useState(titleProps); \r\n const classes = useStyle();\r\n const { cardGroupStore, boardStore } = useStore();\r\n\r\n const { update } = cardGroupStore;\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleBlur = () => {\r\n if (title.length > 0 && title.length <= 512) {\r\n const clonedState = boardStore.board;\r\n const currentList = clonedState?.cardGroups.find(c => c.id === listId);\r\n const otherLists = clonedState?.cardGroups.filter(c => c.id !== listId);\r\n\r\n const newBoard = {\r\n ...clonedState,\r\n cardGroups: [...otherLists!, { ...currentList, title: title }]\r\n }\r\n\r\n boardStore.board = newBoard as Board;\r\n\r\n update({ id: listId, title: title, boardId: boardId });\r\n setOpen(false);\r\n } else {\r\n const currentList = boardStore.board?.cardGroups.find(c => c.id === listId);\r\n if (currentList)\r\n setTitle(currentList!.title);\r\n toast.error('List title should not be empty or exceed 512 characters.');\r\n setOpen(false);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setTitle(titleProps);\r\n }, [titleProps]);\r\n\r\n return (\r\n
\r\n \r\n {\r\n open ? (\r\n \r\n ) : (\r\n \r\n setOpen(!open)}>\r\n {title}\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default CardListTitle;","import { Button, IconButton, InputBase, makeStyles, Paper } from '@material-ui/core';\r\nimport React, { useState } from 'react';\r\nimport { MdClear } from 'react-icons/md';\r\nimport { toast } from 'react-toastify';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n card: {\r\n padding: theme.spacing(1, 1, 1, 2),\r\n margin: theme.spacing(1),\r\n },\r\n input: {\r\n fontSize: '.9rem'\r\n },\r\n btnConfirm: {\r\n background: '#0079bf',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#026aa7'\r\n }\r\n },\r\n confirm: {\r\n margin: theme.spacing(0, 1, 1, 1),\r\n }\r\n}));\r\n\r\ntype Props = {\r\n setOpen: React.Dispatch>;\r\n listId: string;\r\n};\r\n\r\nconst InputCard = ({ setOpen, listId }: Props) => {\r\n const classes = useStyle();\r\n const { cardStore, userStore } = useStore();\r\n const { add } = cardStore;\r\n const { user } = userStore;\r\n\r\n const [title, setTitle] = useState('');\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleBtnConfirm = async () => {\r\n const trimmedTitle = title.trim();\r\n\r\n if (trimmedTitle.length < 1) {\r\n setOpen(false);\r\n toast.error('Task title should not be empty');\r\n }\r\n else if (trimmedTitle.length >= 512) {\r\n toast.error('Task title should not exceed 512 characters');\r\n } else {\r\n await add({\r\n title: trimmedTitle,\r\n description: '',\r\n cardGroupId: listId,\r\n createdUserId: user!.id\r\n });\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n }\r\n\r\n const handleClear = () => {\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n\r\n const handleOnBlur = () => {\r\n const trimmedTitle = title.trim();\r\n if (trimmedTitle.length < 1) {\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default InputCard;","import { Collapse, fade, makeStyles, Paper, Typography } from '@material-ui/core';\r\nimport InputCard from './InputCard';\r\nimport React, { useState } from 'react';\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n root: {\r\n width: '272px',\r\n\r\n },\r\n addCard: {\r\n padding: theme.spacing(1, 1, 1, 2),\r\n margin: theme.spacing(0, 1, 1, 1),\r\n backgroundColor: '#ebecf0',\r\n '&:hover': {\r\n backgroundColor: fade('#000', 0.25)\r\n }\r\n },\r\n addCardButton: {\r\n cursor:'pointer'\r\n }\r\n}));\r\n\r\n\r\ninterface Props {\r\n listId?: string;\r\n}\r\n\r\nconst InputCardContainer = ({ listId }: Props) => {\r\n const classes = useStyle();\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleOnClickAdd = () => {\r\n setOpen(!open);\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n + Add a Task\r\n \r\n \r\n \r\n\r\n
\r\n );\r\n}\r\n\r\nexport default InputCardContainer;","import { makeStyles, Paper } from '@material-ui/core';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { Draggable, Droppable } from 'react-beautiful-dnd';\r\nimport styled from 'styled-components';\r\nimport { CardGroup } from '../../../app/models/cardGroup';\r\nimport Card from '../cards/Card';\r\nimport CardListTitle from './CardListTitle';\r\nimport InputCardContainer from './InputCardContainer';\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n root: {\r\n width: '272px',\r\n backgroundColor: '#ebecf0',\r\n margin: theme.spacing(1),\r\n maxHeight: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n whiteSpace: 'normal',\r\n position: 'relative'\r\n },\r\n cardContainer: {\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n flex: '1 auto',\r\n }\r\n}));\r\n\r\nconst CardListWrapper = styled.div`\r\n && {\r\n box-sizing: border-box;\r\n display: inline-block;\r\n height: 98%;\r\n margin: 0 4px;\r\n vertical-align: top;\r\n white-space: nowrap;\r\n width: 272px;\r\n }\r\n`;\r\n\r\ninterface Props {\r\n list: CardGroup;\r\n index: number;\r\n}\r\n\r\nconst CardList = ({ list, index }: Props) => {\r\n const classes = useStyle();\r\n\r\n return (\r\n <>\r\n \r\n {(provided) => (\r\n \r\n \r\n \r\n \r\n {(provided) => (\r\n
\r\n {list.order && list.order.map((id, index) => {\r\n if (list.cards) {\r\n let card = list?.cards?.find(c => c.id === id);\r\n if (card)\r\n return ()\r\n }\r\n })}\r\n
\r\n {provided.placeholder}\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default observer(CardList);","import { Button, IconButton, InputBase, makeStyles, Paper } from '@material-ui/core';\r\nimport React, { useState } from 'react';\r\nimport { MdClear } from 'react-icons/md';\r\nimport { toast } from 'react-toastify';\r\nimport styled from 'styled-components';\r\nimport { CardGroup } from '../../../app/models/cardGroup';\r\nimport { useStore } from '../../../app/stores/store';\r\n\r\nconst StylePaperContainer = styled(Paper)`\r\n && {\r\n width: 272px;\r\n background-color: #ebecf0;\r\n margin: 8px 0 0 8px;\r\n height: min-content;\r\n max-height: 100%;\r\n padding-top: 8px;\r\n }\r\n`;\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n card: {\r\n padding: theme.spacing(1, 1, 1, 2),\r\n margin: theme.spacing(1, 1, 1, 1),\r\n },\r\n input: {\r\n fontSize: '.9rem'\r\n },\r\n btnConfirm: {\r\n background: '#0079bf',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#026aa7'\r\n }\r\n },\r\n confirm: {\r\n margin: theme.spacing(0, 1, 1, 1),\r\n }\r\n}));\r\n\r\ntype Props = {\r\n setOpen: React.Dispatch>;\r\n boardId: string;\r\n cardGroup?: CardGroup;\r\n};\r\n\r\nconst InputList = ({ setOpen, boardId, cardGroup }: Props) => {\r\n const classes = useStyle();\r\n const { cardGroupStore } = useStore();\r\n const { add } = cardGroupStore;\r\n\r\n const [title, setTitle] = useState('');\r\n\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n setTitle(event.target.value);\r\n }\r\n\r\n const handleBtnConfirm = () => {\r\n if (title.length > 0 && title.length <= 512) {\r\n add({ title: title, boardId: boardId });\r\n }\r\n else\r\n {\r\n toast.error('List title should not be empty or exceed 512 characters.');\r\n }\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n\r\n const handleClear = () => {\r\n setTitle('');\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default InputList;","import { Collapse, fade, makeStyles, Paper, Typography } from '@material-ui/core';\r\nimport React, { useState } from 'react';\r\nimport InputList from './InputList';\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n root: {\r\n width: '280px',\r\n },\r\n addCard: {\r\n padding: theme.spacing(1, 1, 1, 2),\r\n margin: theme.spacing(1, 1, 1, 1),\r\n backgroundColor: '#ebecf0',\r\n width: '272px',\r\n '&:hover': {\r\n backgroundColor: fade('#fff', 0.75),\r\n cursor: 'pointer'\r\n }\r\n }\r\n}));\r\n\r\ninterface Props {\r\n boardId: string;\r\n}\r\n\r\nconst InputListContainer = ({ boardId }: Props) => {\r\n const classes = useStyle();\r\n const [open, setOpen] = useState(false);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n setOpen(!open)}>\r\n \r\n + Add another List\r\n \r\n \r\n \r\n\r\n
\r\n );\r\n}\r\n\r\nexport default InputListContainer;","import { observer } from 'mobx-react-lite';\r\nimport React, { useEffect } from 'react';\r\nimport { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';\r\nimport { Link, useHistory, useParams } from 'react-router-dom';\r\nimport { Button } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport LoadingComponent from '../../../app/layout/LoadingComponent';\r\nimport { Board } from '../../../app/models/board';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport DateModalContainer from '../card-dates/DateModalContainer';\r\nimport CardList from '../card-lists/CardList';\r\nimport InputListContainer from '../card-lists/InputListContainer';\r\n\r\n//#region Styling\r\n\r\nconst BoardContainer = styled.div`\r\n &&{\r\n display: flex;\r\n width: 100%;\r\n overflow-x: auto;\r\n margin-top:1.5em;\r\n height:93%;\r\n }\r\n`;\r\n\r\nconst StyledContainer = styled.div`\r\n && {\r\n background: url(\"../../assets/kanban-bg.png\");\r\n background-position: 50%;\r\n background-size: cover;\r\n padding-top: 1.5em;\r\n height: 94vh;\r\n }\r\n`;\r\n\r\nconst StyledHeader = styled.div`\r\n && {\r\n color: #eee;\r\n font-size: 1.8em !important;\r\n margin-right:8px;\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\n\r\nconst Styledfooter = styled.div`\r\n && {\r\n color: #eee;\r\n font-size: 1.8em !important;\r\n margin-right:8px;\r\n margin-top: -50px;\r\n }\r\n`;\r\n\r\n\r\n\r\n//#endregion\r\n\r\nconst BoardDetails = () => {\r\n const { id } = useParams<{ id: string }>();\r\n\r\n const { boardStore, cardGroupStore } = useStore();\r\n const { board: boardData, isBoardDetailsLoading, updateBoardOrder } = boardStore;\r\n const history = useHistory()\r\n const backPreviousPage = () => {\r\n history.goBack()\r\n }\r\n useEffect(() => {\r\n if (id) boardStore.createHubConnection(id);\r\n\r\n return () => {\r\n boardStore.stopHubConnection();\r\n }\r\n }, [boardStore, id]);\r\n\r\n if (isBoardDetailsLoading) return \r\n\r\n const onDragEnd = (result: DropResult) => {\r\n if (boardData) {\r\n\r\n const { destination, source, draggableId, type } = result;\r\n\r\n if (!destination) return;\r\n\r\n if (type === 'list') {\r\n const newListOrder = boardData!.order;\r\n newListOrder.splice(source.index, 1);\r\n newListOrder.splice(destination.index, 0, draggableId);\r\n updateBoardOrder({ id: boardData!.id, order: newListOrder })\r\n return;\r\n }\r\n\r\n let clonedList = [...boardData.cardGroups];\r\n\r\n const sourceList = clonedList.find(l => l.id == source.droppableId);\r\n const destinationList = clonedList.find(l => l.id == destination.droppableId);\r\n\r\n if (sourceList && destinationList) {\r\n\r\n const draggingCard = sourceList.cards.filter(c => c.id === draggableId)[0];\r\n if (sourceList.order.length)\r\n sourceList.order.splice(source.index, 1);\r\n\r\n if (destinationList.order)\r\n destinationList!.order.splice(destination.index, 0, draggingCard.id);\r\n else\r\n destinationList.order = [draggingCard.id];\r\n\r\n if (source.droppableId === destination.droppableId) {\r\n const newState = {\r\n ...boardData,\r\n cardGroups: [...clonedList.filter(l => l.id != destinationList.id), destinationList]\r\n };\r\n boardStore.board = newState as Board;\r\n \r\n } else {\r\n let draggedCardIdIndex = sourceList.cards.findIndex(c => c.id == draggingCard.id);\r\n\r\n if (draggedCardIdIndex != -1)\r\n sourceList!.cards.splice(draggedCardIdIndex, 1);\r\n\r\n if (destinationList.cards)\r\n destinationList!.cards.splice(destination.index, 0, draggingCard);\r\n else\r\n destinationList.cards = [draggingCard];\r\n\r\n const newState = {\r\n ...boardData,\r\n cardGroups: boardData?.cardGroups.map(l => {\r\n if (l.id === destinationList?.id)\r\n return destinationList;\r\n else if (l.id === sourceList?.id)\r\n return sourceList;\r\n return l;\r\n })\r\n };\r\n boardStore.board = newState as Board;\r\n }\r\n\r\n cardGroupStore.updateCardGroupOrder({\r\n sourceCardGroup: { id: sourceList.id, order: sourceList.order },\r\n destinationCardGroup: { id: destinationList.id, order: destinationList.order },\r\n draggedId: draggingCard.id,\r\n isSameDestination: source.droppableId === destination.droppableId\r\n });\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {/**/}\r\n \r\n {boardData!.name}\r\n \r\n \r\n \r\n \r\n {(provided) => (\r\n \r\n {boardData?.order && boardData?.order && boardData!.order.map((id, index) => {\r\n if (boardData.cardGroups) {\r\n let cardGroup = boardData!.cardGroups.find(c => c.id === id);\r\n\r\n if (cardGroup)\r\n return ();\r\n }\r\n })}\r\n {provided.placeholder}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {/*\r\n Save\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(WorkSpaceMemberForm);","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { FaTrashAlt } from 'react-icons/fa';\r\nimport { Link, useHistory, useParams } from 'react-router-dom';\r\nimport { Button, ButtonProps, Grid, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport AvatarImage from '../../../app/common/image/AvatarImage';\r\nimport PaginatedTable from '../../../app/common/table/PaginatedTable';\r\nimport { FilterValues } from '../../../app/models/common/filterValues';\r\nimport { User } from '../../../app/models/user';\r\nimport { WorkSpaceUser } from '../../../app/models/workSpaceUser';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport WorkSpaceMemberForm from './WorkSpaceMemberForm';\r\n\r\nconst swal = withReactContent(Swal);\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledColumn = styled(Grid.Column)`\r\n display: flex !important;\r\n align-items: flex-end !important;\r\n justify-content: flex-end !important;\r\n`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst WorkSpaceMemberList = () => {\r\n const { workSpaceUserStore, popOverStore } = useStore();\r\n const { isListLoading, workSpaceUsers, workSpaceUsersTotal, filterWorkSpaceUsers, deleteWorkSpaceUser, reset, users } = workSpaceUserStore;\r\n const { id } = useParams<{ id: string }>();\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 10,\r\n pageNumber: 1,\r\n searchKeyword: \"\",\r\n id: id\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n \r\n }\r\n\r\n const BackButton = styled.div`\r\n color: rgb(0 0 0 / 87%);\r\n :hover {\r\n color: rgb(0 0 0 / 87%);\r\n }\r\n`;\r\n const handleOnSearch = (searchText: string) => {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText })\r\n\r\n }\r\n\r\n const refreshTable = () => {\r\n filterWorkSpaceUsers(filterValues);\r\n }\r\n\r\n const handleAddMembers = (event: React.MouseEvent, data: ButtonProps) => {\r\n popOverStore.openPopover((\r\n \r\n ), event.currentTarget);\r\n }\r\n\r\n const handleRemove = (rowData: User) => {\r\n swal.fire({\r\n title: 'Remove?',\r\n text: \"Are you sure you want to remove this member?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'No',\r\n confirmButtonText: 'Yes'\r\n }).then(async (result) => {\r\n if (result.isConfirmed) {\r\n await deleteWorkSpaceUser(rowData.id,id, filterValues);\r\n }\r\n });\r\n }\r\n const handleSearch = (searchText: string) => {\r\n if (filterValues.searchKeyword != searchText) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, searchKeyword: searchText });\r\n } else {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n filterWorkSpaceUsers(filterValues);\r\n return () => {\r\n reset();\r\n }\r\n }, [filterValues, filterWorkSpaceUsers])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Members\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(LeaveRequestDetails);","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport PaginatedTable from '../../app/common/table/PaginatedTable';\r\nimport { TextOverflow } from '../../app/common/text/TextOverflow';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport { FilterValues } from '../../app/models/common/filterValues';\r\nimport { LeaveRequest } from '../../app/models/leaveRequest';\r\nimport { useStore } from '../../app/stores/store';\r\nimport { history } from '../../index';\r\nimport { FaCheck, FaRegEye, FaTimes } from 'react-icons/fa';\r\n\r\nconst dateHelper = new DateHelper();\r\nconst swal = withReactContent(Swal);\r\n\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst LeaveRequestList = () => {\r\n const { leaveRequestStore } = useStore();\r\n const { filterLeaveRequests, isLeaveRequestsLoading, leaveRequests,\r\n leaveRequestsTotal, approveLeaveRequest, rejectLeaveRequest } = leaveRequestStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\"\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n const handleSearch = (searchText: string) => {\r\n if (filterValues.searchKeyword != searchText) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, searchKeyword: searchText });\r\n } else {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n filterLeaveRequests(filterValues);\r\n }, [filterValues, filterLeaveRequests])\r\n\r\n return (\r\n <>\r\n \r\n \r\n Leave Requests\r\n \r\n \r\n columns={[\r\n { title: 'Employee', field: 'user.name' },\r\n { title: 'Leave Type', field: 'leaveType.type' },\r\n { title: 'From', render: (data: LeaveRequest) => dateHelper.formatShortLocalDate(data.from.toString()) },\r\n { title: 'To', render: (data: LeaveRequest) => dateHelper.formatShortLocalDate(data.to.toString()) },\r\n {\r\n title: 'Reason',\r\n render: (data: LeaveRequest) => (\r\n {data.reason}\r\n )\r\n },\r\n {\r\n title: 'HR Approval',\r\n field: 'leaveRequestStatus.name'\r\n },\r\n {\r\n title: 'TL Approval',\r\n field: 'teamLeadApprovalStatus.name'\r\n },\r\n {\r\n title: 'Status',\r\n field: 'clientApprovalStatus.name'\r\n },\r\n ]}\r\n isLoading={isLeaveRequestsLoading}\r\n data={leaveRequests!}\r\n total={leaveRequestsTotal}\r\n onChangePage={handleOnChangePage}\r\n pageSize={filterValues.pageSize}\r\n pageNumber={filterValues.pageNumber}\r\n onSearchChange={handleSearch}\r\n toolbar={true}\r\n search={true}\r\n sorting={false}\r\n draggable={false}\r\n actions={[rowData => ({\r\n icon: () => ,\r\n tooltip: 'Approve',\r\n onClick: e => {\r\n swal.fire({\r\n title: 'Approval Confirmation',\r\n text: \"Are you sure you want to approve this leave request?\",\r\n icon: 'question',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n approveLeaveRequest(rowData.id, filterValues);\r\n }\r\n });\r\n },\r\n hidden: rowData.clientApprovalStatus.name != 'Pending',\r\n }),\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'Reject',\r\n onClick: e => {\r\n swal.fire({\r\n title: 'Rejection Confirmation',\r\n text: \"Are you sure you want to reject this leave request?\",\r\n icon: 'question',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n rejectLeaveRequest(rowData.id, filterValues);\r\n }\r\n });\r\n },\r\n hidden: rowData.clientApprovalStatus.name != 'Pending',\r\n }),\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'View Leave Request',\r\n onClick: e => {\r\n history.push(`/requests/leave-requests/${rowData.id}`)\r\n },\r\n }),\r\n ]}\r\n />\r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default observer(LeaveRequestList);","import { observer } from 'mobx-react-lite';\r\nimport React, { useEffect } from 'react';\r\nimport { Link, useParams } from 'react-router-dom';\r\nimport { Button, Form, Grid, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport LoadingComponent from '../../app/layout/LoadingComponent';\r\nimport { useStore } from '../../app/stores/store';\r\n\r\n// #region Styles\r\nconst StyledTextArea = styled(Form.TextArea)`\r\n textarea{\r\n resize:none !important;\r\n }\r\n`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst StyledCardContainer = styled.div`\r\n padding: 2em;\r\n background-color: #fff;\r\n border-radius: 16px;\r\n`;\r\n// #endregion\r\n\r\nconst dateHelper = new DateHelper();\r\n\r\nconst OvertimeRequestDetails = () => {\r\n const { id } = useParams<{ id: string }>();\r\n const { overtimeStore } = useStore();\r\n const { overtime, loadOvertime, isOvertimeDetailsLoading } = overtimeStore;\r\n\r\n useEffect(() => {\r\n loadOvertime(id);\r\n }, [loadOvertime, id]);\r\n\r\n if (isOvertimeDetailsLoading) return \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
Overtime Details
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default observer(OvertimeRequestDetails);","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport PaginatedTable from '../../app/common/table/PaginatedTable';\r\nimport { TextOverflow } from '../../app/common/text/TextOverflow';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport { FilterValues } from '../../app/models/common/filterValues';\r\nimport { Overtime } from '../../app/models/overtime';\r\nimport { useStore } from '../../app/stores/store';\r\nimport { history } from '../../index';\r\nimport { FaCheck, FaRegEye, FaTimes } from 'react-icons/fa';\r\n\r\nconst dateHelper = new DateHelper();\r\nconst swal = withReactContent(Swal);\r\n\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst OvertimeRequestList = () => {\r\n const { overtimeStore } = useStore();\r\n const { filterOvertimes, isOvertimeListLoading, overtimes,\r\n overtimesTotal, approveOvertime, rejectOvertime } = overtimeStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\"\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n const handleSearch = (searchText: string) => {\r\n if (filterValues.searchKeyword != searchText) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, searchKeyword: searchText });\r\n } else {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n filterOvertimes(filterValues);\r\n }, [filterValues, filterOvertimes])\r\n\r\n\r\n return (\r\n <>\r\n \r\n \r\n Overtimes\r\n \r\n \r\n columns={[\r\n { title: 'Employee', field: 'user.name' },\r\n {\r\n title: 'From',\r\n cellStyle: { width: '300px' },\r\n render: (data: Overtime) => dateHelper.formatLocalDateTime(data.from.toString())\r\n },\r\n {\r\n title: 'To',\r\n cellStyle: { width: '300px' },\r\n render: (data: Overtime) => dateHelper.formatLocalDateTime(data.to.toString())\r\n },\r\n {\r\n title: 'Duration',\r\n render: (data: Overtime) => {\r\n let to = moment(data.to);\r\n let from = moment(data.from);\r\n let duration = to.diff(from);\r\n return moment.utc(duration).format('HH:mm:ss');\r\n\r\n }\r\n },\r\n {\r\n title: 'Reason',\r\n render: (data: Overtime) => (\r\n {data.reason}\r\n )\r\n },\r\n {\r\n title: 'HR Approval',\r\n field: 'overtimeStatus.name'\r\n },\r\n {\r\n title: 'TL Approval',\r\n field: 'teamLeadApprovalStatus.name'\r\n },\r\n {\r\n title: 'Status',\r\n field: 'clientApprovalStatus.name'\r\n },\r\n ]}\r\n isLoading={isOvertimeListLoading}\r\n data={overtimes!}\r\n total={overtimesTotal}\r\n onChangePage={handleOnChangePage}\r\n pageSize={20}\r\n sorting={false}\r\n draggable={false}\r\n pageNumber={filterValues.pageNumber}\r\n onSearchChange={handleSearch}\r\n toolbar={true}\r\n search={true}\r\n actions={[rowData => ({\r\n icon: () => ,\r\n tooltip: 'Approve',\r\n onClick: e => {\r\n swal.fire({\r\n title: 'Approval Confirmation',\r\n text: \"Are you sure you want to approve this overtime request?\",\r\n icon: 'question',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n approveOvertime(rowData.id, filterValues);\r\n }\r\n });\r\n },\r\n hidden: rowData.clientApprovalStatus.name != 'Pending',\r\n }),\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'Reject',\r\n onClick: e => {\r\n swal.fire({\r\n title: 'Rejection Confirmation',\r\n text: \"Are you sure you want to reject this overtime request?\",\r\n icon: 'question',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n rejectOvertime(rowData.id, filterValues);\r\n }\r\n });\r\n },\r\n hidden: rowData.clientApprovalStatus.name != 'Pending',\r\n }),\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'View Details',\r\n onClick: e => {\r\n history.push(`/requests/overtime-requests/${rowData.id}`)\r\n },\r\n }),\r\n ]}\r\n />\r\n \r\n\r\n \r\n\r\n );\r\n};\r\n\r\nexport default observer(OvertimeRequestList);","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { Button, Grid, Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport PaginatedTable from '../../app/common/table/PaginatedTable';\r\nimport { FilterValues } from '../../app/models/common/filterValues';\r\nimport { SubClient } from '../../app/models/subClient';\r\nimport { useStore } from '../../app/stores/store';\r\nimport { FaPencilAlt, FaTrashAlt } from 'react-icons/fa';\r\n\r\nconst swal = withReactContent(Swal);\r\n\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledColumn = styled(Grid.Column)`\r\n display: flex !important;\r\n align-items: flex-end !important;\r\n justify-content: flex-end !important;\r\n`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst SubClientList = () => {\r\n const { subClientStore } = useStore();\r\n const { filterSubClients, isSubClientListLoading, subClients,\r\n subClientsTotal, deleteSubClient } = subClientStore;\r\n const history = useHistory();\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\"\r\n });\r\n\r\n const handleSearch = (searchText: string) => {\r\n if (filterValues.searchKeyword != searchText) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, searchKeyword: searchText });\r\n } else {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }\r\n }\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n useEffect(() => {\r\n filterSubClients(filterValues);\r\n }, [filterValues, filterSubClients])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n External Users\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(UndertimeRequestDetails);","import { observer } from 'mobx-react-lite';\r\nimport moment from 'moment';\r\nimport * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Header } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport PaginatedTable from '../../app/common/table/PaginatedTable';\r\nimport { TextOverflow } from '../../app/common/text/TextOverflow';\r\nimport DateHelper from '../../app/helpers/dateHelper';\r\nimport { FilterValues } from '../../app/models/common/filterValues';\r\nimport { Undertime } from '../../app/models/undertime';\r\nimport { useStore } from '../../app/stores/store';\r\nimport { history } from '../../index';\r\nimport { FaCheck, FaRegEye, FaTimes } from 'react-icons/fa';\r\n\r\nconst dateHelper = new DateHelper();\r\nconst swal = withReactContent(Swal);\r\n\r\nconst StyledHeader = styled(Header)`margin-bottom: 20px !important;`;\r\n\r\nconst StyledContainer = styled.div`\r\n padding: ${props => props.theme.padding.featureContainer};\r\n`;\r\n\r\nconst UndertimeRequestList = () => {\r\n const { undertimeStore } = useStore();\r\n const { filterUndertimes, isUndertimeListLoading, undertimes,\r\n undertimesTotal, approveUndertime, rejectUndertime } = undertimeStore;\r\n\r\n const [filterValues, setFilterValues] = useState({\r\n pageSize: 20,\r\n pageNumber: 1,\r\n searchKeyword: \"\"\r\n });\r\n\r\n const handleOnChangePage = (page: number) => {\r\n setFilterValues({ ...filterValues, pageNumber: page })\r\n }\r\n\r\n const handleSearch = (searchText: string) => {\r\n if (filterValues.searchKeyword != searchText) {\r\n setFilterValues({ ...filterValues, pageNumber: 1, searchKeyword: searchText });\r\n } else {\r\n setFilterValues({ ...filterValues, searchKeyword: searchText });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n filterUndertimes(filterValues);\r\n }, [filterValues, filterUndertimes])\r\n\r\n return (\r\n <>\r\n \r\n \r\n Undertimes\r\n \r\n \r\n columns={[\r\n { title: 'Employee', field: 'user.name' },\r\n {\r\n title: 'From',\r\n cellStyle: { width: '300px' },\r\n render: (data: Undertime) => dateHelper.formatLocalDateTime(data.from.toString())\r\n },\r\n {\r\n title: 'To',\r\n cellStyle: { width: '300px' },\r\n render: (data: Undertime) => dateHelper.formatLocalDateTime(data.to.toString())\r\n },\r\n {\r\n title: 'Duration',\r\n render: (data: Undertime) => {\r\n let to = moment(data.to);\r\n let from = moment(data.from);\r\n let duration = to.diff(from);\r\n return moment.utc(duration).format('HH:mm:ss');\r\n\r\n }\r\n },\r\n {\r\n title: 'Reason',\r\n render: (data: Undertime) => (\r\n {data.reason}\r\n )\r\n },\r\n {\r\n title: 'HR Approval',\r\n field: 'undertimeStatus.name'\r\n },\r\n {\r\n title: 'TL Approval',\r\n field: 'teamLeadApprovalStatus.name'\r\n },\r\n {\r\n title: 'Status',\r\n field: 'clientApprovalStatus.name'\r\n },\r\n ]}\r\n isLoading={isUndertimeListLoading}\r\n data={undertimes!}\r\n total={undertimesTotal}\r\n onChangePage={handleOnChangePage}\r\n pageSize={20}\r\n pageNumber={filterValues.pageNumber}\r\n onSearchChange={handleSearch}\r\n toolbar={true}\r\n search={true}\r\n sorting={false}\r\n draggable={false}\r\n actions={[rowData => ({\r\n icon: () => ,\r\n tooltip: 'Approve',\r\n onClick: e => {\r\n swal.fire({\r\n title: 'Approval Confirmation',\r\n text: \"Are you sure you want to approve this undertime request?\",\r\n icon: 'question',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n approveUndertime(rowData.id, filterValues);\r\n }\r\n });\r\n },\r\n hidden: rowData.clientApprovalStatus.name != 'Pending',\r\n }),\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'Reject',\r\n onClick: e => {\r\n swal.fire({\r\n title: 'Rejection Confirmation',\r\n text: \"Are you sure you want to reject this undertime request?\",\r\n icon: 'question',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n rejectUndertime(rowData.id, filterValues);\r\n }\r\n });\r\n },\r\n hidden: rowData.clientApprovalStatus.name != 'Pending',\r\n }),\r\n rowData => ({\r\n icon: () => ,\r\n tooltip: 'View Details',\r\n onClick: e => {\r\n history.push(`/requests/undertime-requests/${rowData.id}`)\r\n },\r\n iconProps: {\r\n color: 'primary', style: { fontSize: '1em' }\r\n },\r\n }),\r\n ]}\r\n />\r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default observer(UndertimeRequestList);","import { Form, Formik } from 'formik';\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { toast } from 'react-toastify';\r\nimport { Button, Grid, Header, Image } from 'semantic-ui-react';\r\nimport * as Yup from 'yup';\r\nimport TextInput from '../../app/common/form/TextInput';\r\nimport { useStore } from '../../app/stores/store';\r\n\r\nconst ForgotPasswordForm = () => {\r\n const { userStore } = useStore();\r\n\r\n return (\r\n userStore.forgotPassword(values)\r\n .then(isSuccess => { if (isSuccess) resetForm() })\r\n }\r\n validationSchema={Yup.object({\r\n username: Yup.string().required('Username field is required.').email('Invalid username.')\r\n })}\r\n >\r\n {\r\n ({ handleSubmit, isSubmitting, errors }) => (\r\n\r\n \r\n \r\n
\r\n \r\n
CLIENT PORTAL
\r\n
\r\n
Forgot Password
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Back\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.isEditing && }\r\n \r\n \r\n
\r\n {attachments.map(a => a.jsx)}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default PostForm;","import { useState } from \"react\";\r\nimport { Button } from \"semantic-ui-react\";\r\nimport AvatarImage from \"../../app/common/image/AvatarImage\";\r\nimport TextEditor from \"../../app/common/text-editor/TextEditor\";\r\nimport { useStore } from \"../../app/stores/store\";\r\n\r\ninterface Props {\r\n message?: string\r\n onSubmit?: any\r\n onClickClose?: any\r\n isAvatarHidden?: boolean\r\n loading?: boolean\r\n}\r\n\r\nconst CommentForm = ({ onSubmit, onClickClose, isAvatarHidden, message, loading }: Props) => {\r\n const { userStore } = useStore();\r\n const [comment, setComment] = useState(message ? message : \"\");\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n if (onSubmit) {\r\n onSubmit(comment);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {!isAvatarHidden && }\r\n \r\n {/**/}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default CommentForm;","import parse from 'html-react-parser';\r\nimport { useEffect, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport { Comment as SemanticComment, Dropdown } from 'semantic-ui-react';\r\nimport Swal from 'sweetalert2';\r\nimport { PostComment } from '../../app/models/post';\r\nimport { useStore } from '../../app/stores/store';\r\nimport CommentForm from './CommentForm';\r\n\r\ninterface Props {\r\n comment: PostComment,\r\n onSubmit?: (id: string, message: string) => void;\r\n onDelete?: (id: string) => void;\r\n isEditing?: boolean\r\n onEditing?: (isEditing: boolean) => void\r\n}\r\n\r\nconst Comment = (props: Props) => {\r\n const { mediaStore } = useStore();\r\n const [uri, setUri] = useState('/assets/default-profile-picture.svg');\r\n const [loading, setLoading] = useState(false);\r\n const [open, setOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n mediaStore.getProfilePicture(props.comment.user.id).then(media => {\r\n if (media) {\r\n setUri(media.url);\r\n }\r\n })\r\n }, []);\r\n\r\n const HandleClickEdit = (state: boolean) => {\r\n if (props.onEditing) props.onEditing(state);\r\n }\r\n\r\n const handleSubmit = (message) => {\r\n setLoading(true);\r\n\r\n if (message) {\r\n if (props.onSubmit) {\r\n props.onSubmit(\r\n props.comment.id,\r\n message\r\n );\r\n\r\n setLoading(false);\r\n }\r\n }\r\n else {\r\n toast.error('Comment is required.');\r\n setLoading(false);\r\n }\r\n }\r\n\r\n const handleDelete = () => {\r\n Swal.fire({\r\n title: 'Delete Confirmation',\r\n text: 'Are you sure you want to delete this comment?',\r\n icon: 'question',\r\n confirmButtonColor: '#1592ff',\r\n confirmButtonText: 'Yes',\r\n cancelButtonText: 'No',\r\n showCancelButton: true,\r\n }).then(({ isConfirmed }) => {\r\n if (isConfirmed && props.onDelete) {\r\n props.onDelete(props.comment.id);\r\n }\r\n });\r\n }\r\n\r\n const parseMessage = (message) => {\r\n let parsed = parse(message);\r\n\r\n return (\r\n (typeof parsed === \"string\") ?\r\n
\r\n
:\r\n
\r\n {parsed}\r\n
\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {props.comment.user.name}\r\n {!props.isEditing ?\r\n <>\r\n \r\n {parseMessage(props.comment.message)}\r\n \r\n {props.comment.owned &&\r\n
\r\n setOpen(false)}\r\n onClick={() => setOpen(!open)}\r\n open={open}\r\n basic\r\n pointing='top right'\r\n floating\r\n inline\r\n icon='ellipsis horizontal'\r\n >\r\n \r\n HandleClickEdit(true)} icon='edit' text='Edit Post' />\r\n \r\n \r\n \r\n
\r\n }\r\n :\r\n HandleClickEdit(false)}\r\n onSubmit={handleSubmit}\r\n loading={loading}\r\n />\r\n }\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Comment;","import { useEffect, useState } from \"react\";\r\nimport agent from \"../../app/api/agents\";\r\nimport { PostComment } from \"../../app/models/post\";\r\nimport CommentForm from \"./CommentForm\";\r\nimport Comment from \"./Comment\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nimport { toast } from \"react-toastify\";\r\n\r\ninterface Props {\r\n postId: string\r\n isCommentActive?: boolean\r\n onClickClose?: any\r\n commentCount: number\r\n onCommentChanged: (number: number) => void\r\n}\r\n\r\nconst CommentSection = ({ isCommentActive, onClickClose, commentCount, postId, onCommentChanged }: Props) => {\r\n const { userStore: { user } } = useStore();\r\n const [comments, setComments] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n agent.Posts.getComments(postId).then(comments => {\r\n setComments(comments)\r\n });\r\n }, []);\r\n\r\n const handleSubmit = (message) => {\r\n setLoading(true);\r\n\r\n if (message && message.trim() != '

') {\r\n agent.PostComments.post({ message, postId }).then(commentId => {\r\n setComments(prev => {\r\n return (\r\n [\r\n ...prev,\r\n {\r\n id: commentId,\r\n postId,\r\n message,\r\n user: {\r\n ...user!,\r\n name: `${user?.firstName} ${user?.lastName}`\r\n },\r\n date: Date.now().toString(),\r\n owned: true\r\n }\r\n ])\r\n });\r\n onCommentChanged(commentCount + 1)\r\n onClickClose();\r\n setLoading(false);\r\n }).catch(e => {\r\n setLoading(false);\r\n const { response } = e;\r\n if (response.data.errors && response.data.status === 400) {\r\n toast.error('Comment exceeded the maximum limit.');\r\n }\r\n })\r\n }\r\n else {\r\n toast.error('Comment is required.');\r\n setLoading(false);\r\n }\r\n }\r\n\r\n const handleUpdateComment = (id, message) => {\r\n setLoading(true);\r\n if (message && message.trim() != '

') {\r\n agent.PostComments.update({ id: id, message }).then(() => {\r\n setComments(prev => {\r\n return prev.map(c => {\r\n if (c.id === id) {\r\n return {\r\n ...c,\r\n message: message,\r\n isEditing: false\r\n }\r\n }\r\n\r\n return c;\r\n })\r\n });\r\n setLoading(false);\r\n }).catch(e => {\r\n setLoading(false);\r\n const { response } = e;\r\n if (response.data.errors && response.data.status === 400) {\r\n toast.error('Comment exceeded the maximum limit.');\r\n }\r\n });\r\n }\r\n else {\r\n toast.error('Comment is required.');\r\n setLoading(false);\r\n }\r\n }\r\n\r\n const handleDeleteComment = (id) => {\r\n agent.PostComments.delete(id).then(() => {\r\n setComments(prev => prev.filter(c => c.id !== id));\r\n onCommentChanged(commentCount - 1);\r\n });\r\n }\r\n\r\n const handleOnEditing = (id: string, state: boolean) => {\r\n setComments(prev => {\r\n return prev.map(c => {\r\n if (c.id === id) {\r\n return {\r\n ...c,\r\n isEditing: state\r\n }\r\n }\r\n\r\n return c;\r\n })\r\n });\r\n }\r\n\r\n return (\r\n
\r\n {isCommentActive && }\r\n
\r\n {comments.map(comment => {\r\n return (\r\n handleOnEditing(comment.id, isEditng)}\r\n onSubmit={handleUpdateComment}\r\n onDelete={handleDeleteComment}\r\n comment={comment}\r\n />\r\n )\r\n })}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default CommentSection;","import { Icon } from \"semantic-ui-react\"\r\n\r\ninterface Props {\r\n onClickLike: any\r\n isLiked: boolean\r\n onClickComment: any\r\n}\r\n\r\nconst PostActions = ({ onClickLike, isLiked, onClickComment }: Props) => {\r\n return (\r\n
\r\n
\r\n Like\r\n
\r\n
\r\n Comment\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default PostActions;","import { useState } from 'react';\r\nimport Carousel, { Modal, ModalGateway } from \"react-images\";\r\n\r\ninterface Props {\r\n open: boolean,\r\n images: { source: string }[]\r\n onClose: any\r\n index?: number\r\n}\r\n\r\n\r\nconst ImageAttachmentModal = (props: Props) => {\r\n if (!props.open) return <>;\r\n\r\n return (\r\n \r\n {props.open ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nexport default ImageAttachmentModal;","import { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\r\nimport { SRLWrapper, useLightbox } from \"simple-react-lightbox\";\r\nimport { PostAttachment as PostAttachmentModel } from \"../../app/models/post\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nimport FileAttachment from \"./FileAttachment\";\r\nimport ImageAttachment from \"./ImageAttachment\";\r\nimport VideoAttachment from \"./VideoAttachment\";\r\nimport ImageAttachmentModal from \"./ImageAttachmentModal\";\r\nimport { Media } from \"../../app/models/common/media\";\r\n\r\ninterface Props {\r\n postId: string;\r\n isEditing?: boolean\r\n onRemoveAttachment?: (id: string) => void\r\n}\r\n\r\nconst PostAttachment = forwardRef(({ postId, isEditing, onRemoveAttachment }: Props, ref) => {\r\n const { postStore: { getAttachements }, mediaStore } = useStore();\r\n const [postAttachment, setPostAttachement] = useState([])\r\n const [originalPostAttachment, setOriginalPostAttachment] = useState([])\r\n const [isViewerOpen, setIsViewerOpen] = useState({\r\n open: false,\r\n index: 0\r\n });\r\n const [attachmentMedia, setAttachmentMedia] = useState([]);\r\n\r\n useEffect(() => {\r\n retrieveAttachments();\r\n }, []);\r\n\r\n useImperativeHandle(ref, () => ({\r\n handleCancelEdit,\r\n retrieveAttachments,\r\n getOriginalPostAttachmentCount\r\n }));\r\n\r\n const getOriginalPostAttachmentCount = () => originalPostAttachment.length;\r\n\r\n const retrieveAttachments = () => {\r\n getAttachements(postId).then(async attachments => {\r\n setPostAttachement(attachments);\r\n setOriginalPostAttachment(attachments);\r\n\r\n let images = attachments.filter(a => a.type.includes('image'));\r\n\r\n let newMedia = Array();\r\n\r\n for (let image of images) {\r\n let media = await mediaStore.getPostAttachment(image.id);\r\n if (media) newMedia.push(media);\r\n }\r\n\r\n setAttachmentMedia(newMedia);\r\n });\r\n }\r\n\r\n const handleRemoveAttachment = (id) => {\r\n if (originalPostAttachment.length === 0) setOriginalPostAttachment(postAttachment);\r\n\r\n if (onRemoveAttachment) onRemoveAttachment(id);\r\n setPostAttachement(prev => prev.filter(p => p.id !== id));\r\n }\r\n\r\n const handleCancelEdit = () => setPostAttachement(originalPostAttachment);\r\n\r\n const onClickImage = (index: number) => {\r\n setIsViewerOpen({\r\n open: true,\r\n index: index\r\n });\r\n }\r\n\r\n const getImageAttachments = () => {\r\n let images = postAttachment.filter(a => a.type.includes('image'));\r\n\r\n if (!isEditing) {\r\n if (images.length === 1) {\r\n return onClickImage(0)} key={images[0].id} id={images[0].id} />\r\n }\r\n else if (images.length === 2) {\r\n return (\r\n <>\r\n
\r\n onClickImage(0)} key={images[0].id} id={images[0].id} />\r\n
\r\n
\r\n onClickImage(1)} key={images[1].id} id={images[1].id} />\r\n
\r\n \r\n )\r\n }\r\n else if (images.length === 3) {\r\n return (\r\n <>\r\n
\r\n onClickImage(0)} key={images[0].id} id={images[0].id} />\r\n
\r\n
\r\n onClickImage(1)} key={images[1].id} id={images[1].id} />\r\n onClickImage(2)} key={images[2].id} id={images[2].id} />\r\n
\r\n \r\n )\r\n }\r\n else if (images.length >= 4) {\r\n let num = images.length - 4;\r\n let overlay = '';\r\n if (!(num <= 0)) {\r\n overlay = `${num}`;\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n onClickImage(0)} key={images[0].id} id={images[0].id} />\r\n onClickImage(1)} key={images[1].id} id={images[1].id} />\r\n
\r\n
\r\n onClickImage(2)} key={images[2].id} id={images[2].id} />\r\n onClickImage(3)} key={images[3].id} id={images[3].id} />\r\n
\r\n \r\n )\r\n\r\n\r\n }\r\n }\r\n else {\r\n return images.map(image => {\r\n return \r\n })\r\n }\r\n };\r\n\r\n const getVideoAttachments = () => {\r\n let video = postAttachment.filter(a => a.type.includes('video'));\r\n if (!isEditing) {\r\n if (video.length === 1) {\r\n return \r\n }\r\n else if (video.length === 2) {\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n )\r\n }\r\n else if (video.length === 3) {\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n else if (video.length >= 4) {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n }\r\n else {\r\n return video.map(v => {\r\n return \r\n })\r\n }\r\n }\r\n\r\n const otherAttachment = () => {\r\n let files = postAttachment.filter(a => !a.type.includes('video') && !a.type.includes('image'));\r\n let fileJsx = new Array();\r\n\r\n files.forEach(file => {\r\n fileJsx.push(\r\n \r\n )\r\n })\r\n\r\n return (fileJsx)\r\n }\r\n\r\n const handleOnCloseImageAttachment = () => setIsViewerOpen({ ...isViewerOpen, open: false });\r\n\r\n return (\r\n <>\r\n
\r\n {!isEditing ?\r\n
\r\n {getImageAttachments()}\r\n {getVideoAttachments()}\r\n
\r\n :\r\n <>\r\n {getImageAttachments()}\r\n {getVideoAttachments()}\r\n \r\n }\r\n {otherAttachment()}\r\n
\r\n {isViewerOpen &&\r\n {\r\n return {\r\n source: m.url\r\n }\r\n })}\r\n open={isViewerOpen.open}\r\n index={isViewerOpen.index}\r\n />\r\n }\r\n \r\n )\r\n});\r\n\r\nexport default PostAttachment;","import { useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { Dropdown } from \"semantic-ui-react\";\r\nimport Swal from \"sweetalert2\";\r\nimport AvatarImage from \"../../app/common/image/AvatarImage\";\r\nimport DateHelper from \"../../app/helpers/dateHelper\";\r\nimport { Post as PostModel } from \"../../app/models/post\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nconst dateHelper = new DateHelper();\r\n\r\ninterface Props {\r\n post: PostModel,\r\n onClickEdit?: any;\r\n}\r\n\r\nconst PostHeader = (props: Props) => {\r\n const { postStore } = useStore();\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleDelete = () => {\r\n Swal.fire({\r\n title: 'Delete Confirmation',\r\n text: 'Are you sure you want to delete this post?',\r\n icon: 'question',\r\n confirmButtonColor: '#1592ff',\r\n confirmButtonText: 'Yes',\r\n cancelButtonText: 'No',\r\n showCancelButton: true,\r\n }).then(({ isConfirmed }) => {\r\n if (isConfirmed) {\r\n postStore.delete(props.post.id).then(() => {\r\n toast.success('Post deleted successfully.')\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n {props.post.owned &&\r\n setOpen(false)}\r\n onClick={() => setOpen(!open)}\r\n open={open}\r\n basic\r\n pointing='top right'\r\n floating\r\n inline\r\n icon='ellipsis horizontal'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default PostHeader;","import { useEffect, useState } from \"react\";\r\nimport { Icon } from \"semantic-ui-react\";\r\nimport agent from \"../../app/api/agents\";\r\nimport { PostLikes } from \"../../app/models/post\";\r\nimport { useStore } from \"../../app/stores/store\";\r\n\r\ninterface Props {\r\n postLikes: PostLikes\r\n commentCount: number\r\n}\r\n\r\nconst PostStats = (props: Props) => {\r\n const { userStore: { user } } = useStore();\r\n\r\n const getLikes = () => {\r\n let container = '';\r\n\r\n if (props.postLikes) {\r\n let postLikes = props.postLikes;\r\n let totalLikes = postLikes.likes.length;\r\n let otherLikesCount = totalLikes;\r\n if (postLikes.liked) {\r\n container += 'You ';\r\n otherLikesCount--;\r\n\r\n if (totalLikes == 2) {\r\n container += 'and ' + postLikes.likes.filter(l => l.user.id !== user?.id)[0].user.name;\r\n }\r\n else if (totalLikes > 2) {\r\n otherLikesCount--;\r\n\r\n container += ', ' + postLikes.likes.filter(l => l.user.id !== user?.id)[0].user.name + ' and ' + otherLikesCount + ' others';\r\n }\r\n }\r\n else {\r\n if (totalLikes == 1) {\r\n container += postLikes.likes[0].user.name;\r\n }\r\n else if (totalLikes == 2) {\r\n container += postLikes.likes[0].user.name + ' and ' + postLikes.likes[1].user.name;\r\n }\r\n else if (totalLikes > 2) {\r\n otherLikesCount -= 2;\r\n\r\n container += postLikes.likes[0].user.name + ' and ' + postLikes.likes[1].user.name + ' and ' + otherLikesCount + ' others';\r\n }\r\n }\r\n }\r\n\r\n\r\n return container;\r\n }\r\n\r\n const like = getLikes();\r\n\r\n return (\r\n
\r\n {like &&\r\n
\r\n {like}\r\n
\r\n }\r\n
\r\n {props.commentCount} {props.commentCount === 1 ? <>Comment : <>Comments}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default PostStats;","import parse from 'html-react-parser';\r\n\r\ninterface Props {\r\n message: string\r\n}\r\n\r\nconst PostMessage = (props: Props) => {\r\n let message = props.message;\r\n let parsed = parse(message);\r\n\r\n return (\r\n (typeof parsed === \"string\") ?\r\n
\r\n
:\r\n
\r\n {parsed}\r\n
\r\n )\r\n\r\n}\r\n\r\nexport default PostMessage;","import { useEffect, useRef, useState } from \"react\";\r\nimport agent from \"../../app/api/agents\";\r\nimport { Post as PostModel, PostLikes, PostForm as PostFormModel } from \"../../app/models/post\";\r\nimport CommentSection from \"./CommentSection\";\r\nimport PostActions from \"./PostActions\";\r\nimport PostAttachment from \"./PostAttachment\";\r\nimport PostHeader from \"./PostHeader\";\r\nimport PostStats from \"./PostStats\";\r\nimport PostMessage from \"./PostMessage\";\r\nimport PostForm from \"./PostForm\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nimport { toast } from \"react-toastify\";\r\n\r\ninterface Props {\r\n post: PostModel\r\n}\r\n\r\nconst Post = (props: Props) => {\r\n const { postStore } = useStore();\r\n const ref = useRef(null);\r\n const [isLiked, setIsLiked] = useState(false);\r\n const [postLikes, setPostLikes] = useState();\r\n const [isCommentActive, setIsCommentActive] = useState(false);\r\n const [isEditing, setIsEditing] = useState(false);\r\n const [removedAttactments, setRemovedAttachments] = useState([]);\r\n const [count, setCount] = useState(0);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n agent.Posts.getLikes(props.post.id).then(postLikes => {\r\n setPostLikes(postLikes)\r\n setIsLiked(postLikes.liked);\r\n });\r\n setCount(props.post.commentCount);\r\n }, [isLiked]);\r\n\r\n const handleClickLike = () => {\r\n if (isLiked) {\r\n agent.PostLikes.delete(props.post.id).then(() => {\r\n setIsLiked(!isLiked);\r\n });\r\n }\r\n else {\r\n agent.PostLikes.post(props.post.id).then(() => {\r\n setIsLiked(!isLiked);\r\n });\r\n }\r\n }\r\n\r\n const handleClickComment = () => setIsCommentActive(!isCommentActive);\r\n\r\n const handleEditPost = () => setIsEditing(!isEditing);\r\n\r\n const hanldeEditCancel = () => {\r\n setIsEditing(!isEditing)\r\n ref.current.handleCancelEdit();\r\n setRemovedAttachments([]);\r\n }\r\n\r\n const handleAttachmentRemove = (id) => setRemovedAttachments(prev => [...prev, id]);\r\n\r\n const handleSubmitEditedPost = (post: PostFormModel) => {\r\n setIsLoading(true);\r\n const attachmentLength = ref.current.getOriginalPostAttachmentCount();\r\n\r\n if ((post.files && post.files?.length > 0)\r\n || (post.message && post.message.trim() && post.message.trim() != \"

\")\r\n || removedAttactments.length !== attachmentLength) {\r\n postStore.update({\r\n id: props.post.id,\r\n deletedFilesIds: removedAttactments,\r\n files: post.files,\r\n message: post.message ? post.message.trim() : \"\"\r\n }).then(() => {\r\n setRemovedAttachments([]);\r\n setIsEditing(false);\r\n setIsLoading(false);\r\n\r\n ref.current.retrieveAttachments();\r\n }).catch(e => {\r\n const { response } = e;\r\n setIsLoading(false);\r\n if (response.data.errors && response.data.status === 400) {\r\n toast.error('Post exceeded the maximum limit.');\r\n }\r\n });\r\n }\r\n else {\r\n toast.error('You have nothing to post.');\r\n setIsLoading(false);\r\n }\r\n\r\n }\r\n\r\n const handleCommentChange = (number: number) => {\r\n setCount(number);\r\n };\r\n\r\n return (\r\n
\r\n {!isEditing ?\r\n <>\r\n \r\n \r\n :\r\n \r\n }\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default Post;","import { observer } from \"mobx-react-lite\";\r\nimport { useEffect } from \"react\";\r\nimport { Loader } from \"semantic-ui-react\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nimport Post from \"./Post\";\r\n\r\nconst PostList = () => {\r\n const { postStore, } = useStore();\r\n const { get, posts, isLoadingPosts } = postStore;\r\n\r\n useEffect(() => {\r\n if (posts.length === 0)\r\n get();\r\n\r\n const element = document.getElementById('app-wrapper');\r\n const eventHandler = e => {\r\n const bottom = element!.scrollHeight - element!.scrollTop === element!.clientHeight;\r\n\r\n if (bottom) {\r\n if (!isLoadingPosts) {\r\n get();\r\n }\r\n }\r\n }\r\n\r\n element!.addEventListener('scroll', eventHandler)\r\n\r\n return () => {\r\n if (element) element.removeEventListener('scroll', eventHandler);\r\n };\r\n }, []);\r\n\r\n\r\n return (\r\n
\r\n {posts.map(post => {\r\n return ()\r\n })}\r\n {/**/}\r\n
\r\n )\r\n}\r\n\r\nexport default observer(PostList);","import PostForm from \"./PostForm\";\r\nimport PostList from \"./PostList\";\r\n\r\nconst MainPanel = () => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default MainPanel;\r\n","import { User } from \"../../app/models/user\";\r\nimport { Comment } from \"semantic-ui-react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nimport moment from \"moment\";\r\n\r\ninterface Props {\r\n user: User\r\n}\r\n\r\nconst BirthdayLink = (props: Props) => {\r\n const { mediaStore } = useStore();\r\n const [uri, setUri] = useState('/assets/default-profile-picture.svg');\r\n const [date, setDate] = useState('');\r\n\r\n useEffect(() => {\r\n mediaStore.getProfilePicture(props.user.id).then(media => {\r\n if (media) {\r\n setUri(media.url);\r\n }\r\n });\r\n\r\n let date = moment(props.user.dateOfBirth || \"\").format(\"MMMM DD\");\r\n setDate(date)\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {props.user.name}\r\n \r\n {date}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default BirthdayLink","import { useEffect, useState } from \"react\";\r\nimport { Header, Comment } from \"semantic-ui-react\";\r\nimport agent from \"../../app/api/agents\";\r\nimport { User } from \"../../app/models/user\";\r\nimport { useStore } from \"../../app/stores/store\";\r\nimport BirthdayLink from \"./BirthdayLink\";\r\n\r\nconst Birthday = () => {\r\n const { userStore } = useStore();\r\n const [users, setUsers] = useState();\r\n useEffect(() => {\r\n agent.Employees\r\n .getUpComingBirthdays(userStore.user?.clientId!).then(users => {\r\n setUsers(users)\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n Birthdays\r\n
\r\n {users?.map((user) => {\r\n return \r\n })}\r\n
\r\n\r\n );\r\n}\r\n\r\n\r\nexport default Birthday;","import Birthday from \"./Birthday\";\r\n\r\nconst SidePanel = () => {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default SidePanel;","import { useEffect } from 'react';\r\nimport MainPanel from './MainPanel';\r\nimport './newsfeed.css';\r\nimport SidePanel from './SidePanel';\r\n\r\n\r\nconst Newsfeed = () => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default Newsfeed;","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Button, Grid, Header, Icon, Segment } from 'semantic-ui-react';\r\n\r\nexport default function AccessDenied() {\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Sorry, you are not authorized to access this page.\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import { observer } from \"mobx-react-lite\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { Button, Form, Icon, Label } from \"semantic-ui-react\";\r\nimport styled from 'styled-components';\r\nimport { useStore } from \"../../stores/store\";\r\n\r\n// #region Styling\r\n\r\nconst NewMessageContainer = styled.div<{ isOpen: boolean }>`\r\n && {\r\n display: ${p => p.isOpen ? 'block' : 'none'};\r\n overflow-y: auto;\r\n position: fixed;\r\n right: 15px;\r\n bottom: 0px;\r\n background-color: #fff;\r\n width: 350px;\r\n height: 450px;\r\n box-shadow: 0 0 5px #ccc;\r\n border-radius: 5px 5px 0 0;\r\n }\r\n`;\r\n\r\nconst StyledLabel = styled(Label)`\r\n && {\r\n background-color: #f6fbff;\r\n height: 43px;\r\n font-size: 14px;\r\n padding: .6em .9em;\r\n bottom-margin: solid 1px #d1dbe3;\r\n font-family: Helvetica Neue,Segoe UI,Helvetica,Arial,sans-serif;\r\n }\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n && {\r\n \r\n width: 100%;\r\n position: absolute !important;\r\n bottom: 0;\r\n height: 42px;\r\n border-radius: 0 !important;\r\n }\r\n\r\n`;\r\n// #endregion\r\n\r\nconst NewMessage = () => {\r\n const { chatStore, employeeStore, messageStore, conversationStore } = useStore();\r\n const { searchEmployee, searchingEmployee, searchedEmployees } = employeeStore;\r\n const { newMessageOpen, setNewMessageOpen, selectedUser,\r\n messageContent, isValidating, setIsValidating, setMessageContent,\r\n setSelectedUser, hideChatBox, showMessageBox, connectionId } = chatStore;\r\n const { isMessageSending, postMessage, loadMessage, addMessageWithAttachment } = messageStore;\r\n const { getCoversationById, setSelectedConversation } = conversationStore;\r\n const handleSearchChange = (e, { searchQuery }) => {\r\n searchEmployee(searchQuery);\r\n }\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handleDropDownInputChange = (e, data) => {\r\n const { value } = data;\r\n value ? setSelectedUser(value) : setSelectedUser(\"\");\r\n }\r\n\r\n const handleTextAreaChange = (e, data) => {\r\n const { value } = data;\r\n setMessageContent(value);\r\n }\r\n\r\n const handlePostMessage = () => {\r\n setIsValidating(true);\r\n setIsLoading(true);\r\n if (messageContent && selectedUser) {\r\n addMessageWithAttachment(\r\n {\r\n content: messageContent,\r\n receiversId: [selectedUser],\r\n files: []\r\n }\r\n ).then(async (data) => {\r\n if (data) {\r\n await getCoversationById(data.conversationId!)\r\n .then(conversation => {\r\n loadMessage(conversation?.id!);\r\n setSelectedConversation(conversation!);\r\n setNewMessageOpen(false);\r\n hideChatBox();\r\n showMessageBox();\r\n setIsValidating(false);\r\n setIsLoading(false);\r\n });\r\n }\r\n }, e => {\r\n toast.error(e);\r\n setIsLoading(false);\r\n });\r\n //postMessage({\r\n // content: messageContent,\r\n // receiversId: [selectedUser],\r\n // connectionId: connectionId\r\n //}).then(async (data) => {\r\n // if (data) {\r\n // await getCoversationById(data.conversationId)\r\n // .then(conversation => {\r\n // loadMessage(conversation?.id!);\r\n // setSelectedConversation(conversation!);\r\n // setNewMessageOpen(false);\r\n // hideChatBox();\r\n // showMessageBox();\r\n // setIsValidating(false);\r\n // setIsLoading(false);\r\n // });\r\n // }\r\n //}, e => {\r\n // toast.error(e);\r\n // setIsLoading(false);\r\n //})\r\n } else {\r\n setIsLoading(false);\r\n }\r\n }\r\n\r\n const onNewMessageClose = () => {\r\n setNewMessageOpen(false);\r\n }\r\n\r\n useEffect(() => {\r\n return () => {\r\n employeeStore.reset();\r\n }\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n New Chat\r\n \r\n \r\n
\r\n {\r\n return {\r\n key: e.id,\r\n text: e.name,\r\n value: e.id\r\n };\r\n })}\r\n onChange={handleDropDownInputChange}\r\n error={(selectedUser === \"\" || selectedUser === undefined) && isValidating ? {\r\n content: 'Select a receiver.',\r\n pointing: 'above'\r\n } : false}\r\n style={{ margin: '5px', width: '97%' }}\r\n />\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default observer(NewMessage);","import { Avatar, Conversation, EllipsisButton, ConversationList, Search } from '@chatscope/chat-ui-kit-react';\r\nimport { observer } from \"mobx-react-lite\";\r\nimport { useEffect, useRef } from \"react\";\r\nimport { BiMessageAdd } from \"react-icons/bi\";\r\nimport { FiSettings } from \"react-icons/fi\";\r\nimport { RiGroupLine } from \"react-icons/ri\";\r\nimport { Dropdown, Header, Icon } from \"semantic-ui-react\";\r\nimport styled from 'styled-components';\r\nimport { Conversation as ConversationModel } from '../../models/conversation';\r\nimport { useStore } from \"../../stores/store\";\r\nimport AvatarImage from \"../image/AvatarImage\";\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nconst swal = withReactContent(Swal)\r\n// #region Styles\r\n\r\nconst ConversationContainer = styled.div<{ isShow: boolean }>`\r\n && {\r\n display: ${p => (p.isShow ? 'block' : 'none')};\r\n overflow-y: auto;\r\n position: fixed;\r\n right: 15px;\r\n top: 68px;\r\n background-color: #fff;\r\n max-height: 800px;\r\n min-height: 402px;\r\n box-shadow: 0 0 5px #b2b2b2;\r\n width: 350px;\r\n border-radius: 6px;\r\n padding: 0px 15px;\r\n }\r\n`;\r\n\r\nconst ConversationHeader = styled.div`\r\n && {\r\n height: 30px;\r\n padding: 5px;\r\n margin: 10px 0;\r\n }\r\n`;\r\n\r\nconst NoMessagesPlaceholder = styled(Header)`\r\n &&{\r\n opacity: .45;\r\n margin-top: 5px;\r\n }\r\n`;\r\n\r\nconst Placeholder = styled.div`\r\n && {\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n flex-wrap: nowrap;\r\n justify-content: center;\r\n align-items: center;\r\n margin-top: 100px;\r\n }\r\n`;\r\n\r\nconst SettingIcon = styled(FiSettings)`\r\n && {\r\n margin: 0 0 0 7px;\r\n float: right;\r\n height: 23px;\r\n width: 23px;\r\n cursor: pointer;\r\n color: #5b5a5a;\r\n &:hover{\r\n color: #2a2a2a;\r\n }\r\n }\r\n`;\r\nconst GroupMessageIcon = styled(RiGroupLine)`\r\n && {\r\n margin: 0 5px 0 5px;\r\n float: right;\r\n height: 21px;\r\n width: 21px;\r\n cursor: pointer;\r\n color: #5b5a5a;\r\n &:hover{\r\n color: #2a2a2a;\r\n }\r\n }\r\n`;\r\nconst NewMessageIcon = styled(BiMessageAdd)`\r\n && {\r\n margin: 0 7px;\r\n float: right;\r\n height: 23px;\r\n width: 23px;\r\n cursor: pointer;\r\n color: #5b5a5a;\r\n &:hover{\r\n color: #2a2a2a;\r\n }\r\n }\r\n`;\r\n\r\n// #endregion\r\n\r\nfunction useOuterClick(callback: any) {\r\n const callbackRef = useRef(); // initialize mutable ref, which stores callback\r\n const innerRef = useRef(); // returned to client, who marks \"border\" element\r\n\r\n // update cb on each render, so second useEffect has access to current value \r\n useEffect(() => { callbackRef.current = callback; });\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"click\", handleClick);\r\n return () => document.removeEventListener(\"click\", handleClick);\r\n\r\n function handleClick(ev: MouseEvent | TouchEvent) {\r\n if (innerRef.current && callbackRef.current &&\r\n !innerRef!.current!.contains!(ev.target)\r\n ) callbackRef!.current!(ev);\r\n\r\n return false;\r\n }\r\n }, []); // no dependencies -> stable click listener\r\n\r\n return innerRef; // convenience for client (doesn't need to init ref himself) \r\n}\r\n\r\nfunction CoversationList() {\r\n const { chatStore, conversationStore, messageStore, userStore } = useStore();\r\n const { showMessageBox, hideMessageBox, setNewMessageOpen, isChatShow, hideChatBox, setGroupNewMessageOpen, deleteMember } = chatStore;\r\n const { loadMoreConversation, conversations, setSelectedConversation, setSearchQuery, getSearchQuery, searchQuery, selectedConversation } = conversationStore;\r\n const { loadMessage, updateIsRead, setIsMinimize, setFiles, setMessages } = messageStore;\r\n const { user } = userStore;\r\n\r\n useEffect(() => {\r\n loadMoreConversation({ pageNumber: 0, pageSize: 0, searchKeyword: \"\" });\r\n }, [loadMoreConversation])\r\n\r\n const handleConversationClick = async (conversation: ConversationModel) => {\r\n \r\n if ((conversation.readReceiptUserIds && conversation.readReceiptUserIds.indexOf(userStore.user!.id) == -1) &&\r\n (conversation.recentMessage && conversation.recentMessage.senderId != userStore.user!.id)) {\r\n await updateIsRead(conversation.id, userStore.user!.id);\r\n }\r\n\r\n await loadMessage(conversation.id);\r\n hideChatBox();\r\n setSelectedConversation(conversation);\r\n setNewMessageOpen(false);\r\n setIsMinimize(false);\r\n setFiles([]);\r\n showMessageBox();\r\n\r\n \r\n };\r\n const handleEllipsisClick = (conversationId : string) => {\r\n swal.fire({\r\n title: 'Delete Conversation?',\r\n text: \"Are you sure you want to delete this conversation?\",\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n cancelButtonText: 'Cancel',\r\n confirmButtonText: 'Confirm'\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n deleteMember(conversationId, user?.id!).then(\r\n () => {\r\n loadMoreConversation({ pageNumber: 0, pageSize: 0, searchKeyword: '' });\r\n if (conversationId == selectedConversation?.id) {\r\n setMessages([]);\r\n hideMessageBox();\r\n }\r\n })\r\n\r\n }\r\n });\r\n }\r\n\r\n const handleConversationSearch = (value: string) => {\r\n setSearchQuery(value ? value : '');\r\n let searchQuery = getSearchQuery();\r\n loadMoreConversation({ pageNumber: 0, pageSize: 0, searchKeyword: searchQuery });\r\n }\r\n\r\n const openNewMessage = () => {\r\n hideAllBoxes();\r\n setNewMessageOpen(true);\r\n }\r\n\r\n const openNewGroupMessage = () => {\r\n hideAllBoxes();\r\n setGroupNewMessageOpen(true);\r\n }\r\n\r\n const hideAllBoxes = () => {\r\n setNewMessageOpen(false);\r\n setGroupNewMessageOpen(false);\r\n hideChatBox();\r\n hideMessageBox();\r\n hideChatBox();\r\n }\r\n\r\n const innerRef = useOuterClick(\r\n (ev: any) => {\r\n if (!ev.target.classList.contains('chat-box-button') && !ev.target.classList.contains('swal2-styled')) {\r\n hideChatBox();\r\n if (searchQuery != '') {\r\n setSearchQuery('');\r\n handleConversationSearch('');\r\n }\r\n }\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n }\r\n className='small'\r\n pointing='top right'\r\n style={{ margin: '0 5px', float: 'right', height: 23, width: 24, cursor: \"pointer\" }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n \r\n \r\n \r\n {conversations.length ? conversations.map(conversation => {\r\n const isUnread = (conversation.readReceiptUserIds && conversation.readReceiptUserIds.indexOf(userStore.user!.id) == -1) &&\r\n (conversation.recentMessage && conversation.recentMessage.senderId != userStore.user?.id);\r\n\r\n let cleanedContent = 'file';\r\n\r\n if (conversation.recentMessage.content) {\r\n cleanedContent = conversation.recentMessage ?\r\n conversation.recentMessage.content\r\n .replace(/ |
/g, ' ')\r\n .replace('[[SystemGenerated]]', '')\r\n .trim() :\r\n \"No Message\";\r\n }\r\n\r\n \r\n\r\n const lastSenderName = conversation.recentMessage && conversation.type === \"Group\" ?\r\n conversation.recentMessage.content?.includes('[[SystemGenerated]]') ? null : conversation.recentMessage.sender\r\n :\r\n conversation.recentMessage.senderId === userStore.user!.id ? conversation.recentMessage.sender : null;\r\n\r\n return (\r\n \r\n handleConversationClick(conversation)} lastSenderName={lastSenderName} name={conversation.name} info={cleanedContent} unreadDot={isUnread} /> \r\n \r\n handleConversationClick(conversation)}>\r\n \r\n \r\n \r\n {conversation.type !== \"Group\" && handleEllipsisClick(conversation.id)} />}\r\n \r\n \r\n );\r\n }) :\r\n (\r\n \r\n \r\n No Messages\r\n \r\n )\r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default observer(CoversationList);","import React, { useEffect, useState } from 'react';\r\nimport { Icon } from 'semantic-ui-react';\r\nimport { useStore } from '../../stores/store';\r\n\r\ninterface Props {\r\n attachmentId: string;\r\n}\r\n\r\nconst fileToDataUri = (file: Blob) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n resolve(event.target!.result)\r\n };\r\n reader.readAsDataURL(file);\r\n})\r\n\r\nconst ChatAttachmentImage = ({ attachmentId }: Props) => {\r\n const { chatAttachmentStore } = useStore();\r\n const [dataUri, setDataUri] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n let unmounted = false;\r\n try {\r\n setLoading(true);\r\n chatAttachmentStore.getImageBlob(attachmentId).then(v => {\r\n if (v != undefined && !unmounted)\r\n fileToDataUri(v).then(dataUri => {\r\n setDataUri(dataUri as string)\r\n setLoading(false);\r\n });\r\n });\r\n } catch (e) {\r\n if (!unmounted) {\r\n setDataUri('/assets/default-profile-picture.svg');\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return () => { unmounted = true };\r\n }, [attachmentId, chatAttachmentStore])\r\n\r\n return (\r\n loading ? : \r\n );\r\n}\r\n\r\nexport default ChatAttachmentImage;","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport { Icon, Segment } from 'semantic-ui-react';\r\nimport { useLightbox } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport LoadingComponent from '../../layout/LoadingComponent';\r\nimport ChatAttachmentHiddenImage from '../chat/ChatAttachmentHiddenImage';\r\nimport ChatAttachmentImage from '../chat/ChatAttachmentImage';\r\n\r\n//#region Styling\r\nconst StyledSegment = styled(Segment) <{ hasView: boolean, isAttachment: boolean, isMyMessage: boolean }>`\r\n padding: 6px !important;\r\n margin: 0px 0px 0 0 !important;\r\n display: flex;\r\n flex-direction: flex-end;\r\n box-shadow:none;\r\n transition: box-shadow .3s;\r\n justify-content: left;\r\n max-width: auto;\r\n min-width: 12em;\r\n border-radius: 0 !important;\r\n margin: 0 0 !important;\r\n height: 5em;\r\n ${p => (p.hasView ? `\r\n &:hover{\r\n margin-top: -1px;\r\n margin-left: -1px;\r\n box-shadow: 0 0 11px rgba(33,33,33,.2);\r\n cursor: pointer;\r\n }\r\n ` : '')};\r\n \r\n`;\r\nconst ActionWrappers = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n\r\n`;\r\n\r\nconst StyledIcon = styled(Icon)`\r\n && {\r\n box-shadow: none !important;\r\n &:hover{\r\n background-color: #eee;\r\n cursor: pointer;\r\n }\r\n }\r\n`;\r\n\r\nconst FileNameContainer = styled.div`\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n max-width: 70px;\r\n `;\r\n\r\nconst AttachemntDetails = styled.div`\r\n height: 2em !important;\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n fileName: string;\r\n fileId: string;\r\n size: number;\r\n lightBoxIndex: number;\r\n onRemove?: (fileName: string) => void | undefined;\r\n isOpen?: boolean;\r\n attachmentId?: string;\r\n onDelete?: (attachmentId: string) => void | undefined;\r\n isLast?: boolean;\r\n fileType?: string;\r\n isMyMessage?: boolean;\r\n}\r\n\r\n\r\nconst AttachmentLoadingIndicator = () => {\r\n\r\n return (\r\n <>\r\n \r\n { }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(AttachmentLoadingIndicator);","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport { Icon, Segment } from 'semantic-ui-react';\r\nimport { useLightbox } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport ChatAttachmentHiddenImage from '../chat/ChatAttachmentHiddenImage';\r\nimport ChatAttachmentImage from '../chat/ChatAttachmentImage';\r\nimport AttachmentLoadingIndicator from './AttachmentLoadingIndicator';\r\n\r\n//#region Styling\r\nconst StyledSegment = styled(Segment) <{ hasView: boolean, isAttachment: boolean, isMyMessage: boolean }>`\r\n padding: 6px !important;\r\n margin: 0px 6px 0 0 !important;\r\n display: flex;\r\n flex-direction: flex-end;\r\n box-shadow:none;\r\n transition: box-shadow .3s;\r\n justify-content: left;\r\n\r\n ${p => p.isAttachment ? `\r\n border-radius: 0;\r\n margin: 0 0 !important;`\r\n : ``}\r\n\r\n ${p => (p.hasView ? `\r\n &:hover{\r\n margin-top: -1px;\r\n margin-left: -1px;\r\n box-shadow: 0 0 11px rgba(33,33,33,.2);\r\n cursor: pointer;\r\n }\r\n ` : '')};\r\n \r\n`;\r\nconst ActionWrappers = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n\r\n`;\r\n\r\nconst StyledIcon = styled(Icon)`\r\n && {\r\n box-shadow: none !important;\r\n &:hover{\r\n background-color: #eee;\r\n cursor: pointer;\r\n }\r\n }\r\n`;\r\n\r\nconst FileNameContainer = styled.div`\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n max-width: 150px;\r\n `;\r\n\r\nconst AttachemntDetails = styled.div`\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n fileName: string;\r\n size: number;\r\n lightBoxIndex: number;\r\n onRemove?: (fileName: string) => void | undefined;\r\n isOpen?: boolean;\r\n attachmentId?: string;\r\n onDelete?: (attachmentId: string) => void | undefined;\r\n isLast?: boolean;\r\n fileType?: string;\r\n isMyMessage?: boolean;\r\n isUploading?: boolean;\r\n}\r\n\r\nconst isImage = (fileName) => {\r\n return fileName.match(/.(jpg|jpeg|png)$/i);\r\n}\r\n\r\nconst saveFile = (data, fileName) => {\r\n const a = document.createElement('a');\r\n document.body.appendChild(a);\r\n const url = window.URL.createObjectURL(data);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(a);\r\n }, 0);\r\n}\r\n\r\nconst ChatAttachment = ({ fileName, size, lightBoxIndex, onRemove, isOpen, attachmentId, isLast, fileType, isMyMessage, isUploading }: Props) => {\r\n const { chatAttachmentStore, popOverStore, messageStore } = useStore();\r\n const { bytesToSize } = messageStore;\r\n const { getBlob, setIsAttachmentClick } = chatAttachmentStore;\r\n const { openLightbox, closeLightbox } = useLightbox();\r\n\r\n const handleOnClickAttachment = (event: any) => {\r\n setIsAttachmentClick(true);\r\n if (attachmentId) {\r\n //if (event.target !== event.currentTarget) return;\r\n\r\n if (isImage(fileName)) {\r\n console.log(lightBoxIndex);\r\n openLightbox(lightBoxIndex!)\r\n }\r\n\r\n else {\r\n let response = getBlob(attachmentId).then(v => {\r\n if (v != undefined) {\r\n saveFile(v, fileName);\r\n }\r\n });\r\n\r\n toast.promise(response,\r\n {\r\n pending: `Downloading file`,\r\n success: `File downloaded!`,\r\n error: `Downloading error!`\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n const renderAttachment = (attachmentId, fileName, size) => {\r\n \r\n if (!attachmentId) {\r\n return (<>\r\n \r\n {fileName}\r\n \r\n {size ? bytesToSize(size) : 0}\r\n )\r\n }\r\n\r\n if (isImage(fileName)) {\r\n return <>\r\n \r\n ;\r\n }\r\n else {\r\n return <>\r\n \r\n {fileName}\r\n \r\n {size ? bytesToSize(size) : 0}\r\n \r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n isUploading ? : \r\n \r\n {!isImage(fileName) && }\r\n \r\n {renderAttachment(attachmentId, fileName, size)}\r\n \r\n {onRemove && ( onRemove!(fileName)} />)}\r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default observer(ChatAttachment);","import { useField } from 'formik';\r\nimport React from 'react';\r\nimport Select, { Props as SelectProps } from 'react-select';\r\nimport { Form, Label } from 'semantic-ui-react';\r\n\r\nconst selectStyles = {\r\n container: (provided, state) => ({\r\n ...provided,\r\n margin: '5px',\r\n width: '97%'\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '100px'\r\n }),\r\n menuList: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '190px'\r\n }),\r\n}\r\n\r\ninterface Props extends SelectProps {\r\n name: string;\r\n}\r\n\r\nconst ReceiverMultiSelect = (props: Props) => {\r\n const [field, meta, { setValue, setTouched }] = useField(props.name);\r\n\r\n return (\r\n \r\n setValue(options)}\r\n onBlur={() => setTouched(true)}\r\n isMulti\r\n autoFocus\r\n />\r\n {meta.touched && meta.error ? (\r\n {meta.error}\r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nexport default ReceiverMultiSelect;","import { Formik, FormikProps } from 'formik';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { Button, Form, Grid, Item, Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport { useStore } from '../../stores/store';\r\nimport ReceiverMultiSelect from './ReceiverMultiSelect';\r\n\r\nconst swal = withReactContent(Swal);\r\n//#region Styling\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0em !important;\r\n max-width: fit-content;\r\n min-width: 100%; \r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:5px 0 !important;\r\n }\r\n`;\r\nconst selectStyles = {\r\n container: (provided, state) => ({\r\n ...provided,\r\n margin: '5px',\r\n width: '97%',\r\n zIndex:'9999'\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '100px'\r\n }),\r\n menuList: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '190px'\r\n }),\r\n}\r\n//#endregion\r\n\r\ninterface Props {\r\n open: boolean;\r\n setOpen: React.Dispatch>;\r\n}\r\ninterface Groupchat {\r\n userIds: { value: string, label: string }[]\r\n}\r\n\r\nconst files: File[] = [];\r\nconst data = {\r\n content: \"\",\r\n ids: Array()\r\n}\r\n\r\nconst AddMemberModal = ({ open, setOpen }: Props) => {\r\n const { chatStore, employeeStore, messageStore, conversationStore, userStore } = useStore();\r\n const { isEmployeesByConversationLoading, loadEmployeesByConversationId, employeessOptionValues,\r\n getUsersByConverSation, employeesIncludedOnConversation, addUsersToConversation, deleteMember } = chatStore;\r\n const { addMessageWithAttachment } = messageStore;\r\n const { user } = userStore;\r\n const { selectedConversation } = conversationStore;\r\n const formikRef = useRef>(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const handleSubmit = ({ userIds }: Groupchat) => {\r\n let usersToUpdate = employeesIncludedOnConversation.map(u => u.id);\r\n\r\n data.ids = [];\r\n userIds.forEach(userId => {\r\n data.ids.push(userId.value);\r\n })\r\n\r\n userIds.length > 1 ? data.content = userIds.length == 2 ? `${user?.firstName + \" \" + user?.lastName} added ${userIds[0].label} and ${userIds[1].label} to this conversation.[[SystemGenerated]]` : `${user?.firstName + \" \" + user?.lastName} added ${userIds[0].label} and ${userIds.length - 1} others to this conversation.[[SystemGenerated]]`\r\n : data.content = `${user?.firstName + \" \" + user?.lastName} added ${userIds[0].label} to this conversation.[[SystemGenerated]]`;\r\n\r\n setIsLoading(true);\r\n\r\n addUsersToConversation(selectedConversation?.id!, data.ids).then(request => {\r\n addMessageWithAttachment(\r\n {\r\n content: data.content,\r\n conversationId: selectedConversation?.id,\r\n receiversId: [],\r\n connectionId: chatStore.connectionId,\r\n files: files\r\n }\r\n ).then(() => {\r\n chatStore.hubConnection?.invoke('OnUpdateNumberOfUsersToTheConversation', usersToUpdate, selectedConversation?.id);\r\n request.userIds.forEach(id => {\r\n chatStore.hubConnection?.invoke('AddUserToConveration', id, selectedConversation?.id,)\r\n })\r\n\r\n data.ids = [];\r\n setIsLoading(false);\r\n setOpen(false)\r\n\r\n });\r\n\r\n })\r\n }\r\n\r\n const handleOnCLose = () => {\r\n setOpen(false);\r\n \r\n }\r\n useEffect(() => {\r\n loadEmployeesByConversationId(selectedConversation?.id);\r\n\r\n }, [loadEmployeesByConversationId, selectedConversation, open]);\r\n\r\n useEffect(() => {\r\n getUsersByConverSation(selectedConversation?.id);\r\n\r\n }, [getUsersByConverSation, selectedConversation, open]);\r\n\r\n return (\r\n handleOnCLose}\r\n closeOnDimmerClick={false }\r\n >\r\n Add Member\r\n \r\n {\r\n ({ handleSubmit, isSubmitting, isValid, setErrors, resetForm, dirty }) => {\r\n return (\r\n <>\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ({ ...base, zIndex: 9999}) }}\r\n name='userIds'\r\n options={employeessOptionValues}\r\n isLoading={isEmployeesByConversationLoading}\r\n isMulti={true}\r\n placeholder='Select Member...'\r\n noOptionsMessage={() => 'No user available'}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n handleSubmit()}\r\n\r\n />\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(AddMemberModal);","import { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { Button, Item, Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport { useStore } from '../../stores/store';\r\n\r\nconst swal = withReactContent(Swal);\r\n//#region Styling\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0em !important;\r\n max-width: fit-content;\r\n min-width: 100%; \r\n \r\n \r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:5px 0 !important;\r\n }\r\n`;\r\nconst WarningContainer = styled.div`\r\n &&{\r\n border: 3px solid #f8bb86;\r\n border-radius: 50%;\r\n width: 6em;\r\n height: 6em;\r\n padding: 15px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\nconst ItemContainer = styled.div`\r\n &&{\r\n width: 100%;\r\n padding: 15px;\r\n display: flex;\r\n justify-content: center;\r\n padding:.5em;\r\n }\r\n`;\r\nconst CenterDiv = styled.div`\r\n &&{\r\n display: flex;\r\n justify-content: center;\r\n flex-flow: wrap;\r\n }\r\n`;\r\nconst selectStyles = {\r\n container: (provided, state) => ({\r\n ...provided,\r\n margin: '5px',\r\n width: '97%',\r\n zIndex: '9999'\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '100px'\r\n }),\r\n menuList: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '190px'\r\n }),\r\n}\r\n//#endregion\r\n\r\ninterface Props {\r\n open: boolean;\r\n setOpen: React.Dispatch>;\r\n conversationdId: string;\r\n userId: string;\r\n name: string;\r\n}\r\ninterface Groupchat {\r\n userIds: { value: string, label: string }[]\r\n}\r\n\r\nconst files: File[] = [];\r\nconst data = {\r\n content: \"\",\r\n ids: Array()\r\n}\r\n\r\nconst DeleteMemberModal = ({ open, setOpen, conversationdId, userId, name }: Props) => {\r\n const { chatStore, messageStore, conversationStore, userStore } = useStore();\r\n const { employeesIncludedOnConversation, deleteMember } = chatStore;\r\n const { addMessageWithAttachment } = messageStore;\r\n const { user } = userStore;\r\n const { selectedConversation } = conversationStore;\r\n const handleDeleteMember = (conversationdId: string, userId: string, name: string) => {\r\n let usersToUpdate = employeesIncludedOnConversation.filter(user => {\r\n if (user.id != userId) {\r\n return user;\r\n }\r\n }).map(u => u.id);\r\n setOpen(false);\r\n deleteMember(conversationdId, userId).then(\r\n () => {\r\n data.content = `${user?.firstName + \" \" + user?.lastName} has removed ${name} from this conversation.[[SystemGenerated]]`;\r\n addMessageWithAttachment(\r\n {\r\n content: data.content,\r\n conversationId: selectedConversation?.id,\r\n receiversId: [],\r\n connectionId: chatStore.connectionId,\r\n files: files\r\n }\r\n ).then(() => {\r\n chatStore.hubConnection?.invoke('OnRemoveUserToTheConversation', userId, selectedConversation?.id);\r\n chatStore.hubConnection?.invoke('OnUpdateNumberOfUsersToTheConversation', usersToUpdate, selectedConversation?.id);\r\n data.ids = [];\r\n \r\n });\r\n })\r\n\r\n \r\n }\r\n\r\n const handleOnCLose = () => {\r\n setOpen(false);\r\n\r\n }\r\n\r\n return (\r\n handleOnCLose}\r\n closeOnDimmerClick={false}\r\n >\r\n \r\n \r\n \r\n \r\n !\r\n \r\n \r\n

Delete?

\r\n
\r\n \r\n Are you sure you want to remove this Member?\r\n \r\n \r\n handleDeleteMember(conversationdId, userId, name)}\r\n\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(DeleteMemberModal);","import { Formik } from 'formik';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { FaTrashAlt } from 'react-icons/fa';\r\nimport { Button, Form, Grid, Header, Item, Loader, Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../stores/store';\r\nimport AvatarImage from '../image/AvatarImage';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport { toast } from 'react-toastify';\r\nimport LoadingComponent from '../../layout/LoadingComponent';\r\nimport { MdOutlineClose } from 'react-icons/md';\r\nimport { observer } from 'mobx-react-lite';\r\nimport DeleteMemberModal from './DeleteMemberModal';\r\nconst swal = withReactContent(Swal);\r\n\r\ninterface Props {\r\n open: boolean;\r\n setOpen: React.Dispatch>;\r\n}\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 1em !important;\r\n }\r\n`;\r\nconst CloseIcon = styled(MdOutlineClose)`\r\n border-radius: 4px;\r\n color: #42526e;\r\n height: 32px;\r\n margin: 4px;\r\n overflow: hidden;\r\n padding: 4px;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n transition: background-color 85ms,color 85ms;\r\n width: 32px;\r\n z-index: 2;\r\n cursor:pointer;\r\n\r\n &:hover {\r\n background-color: #091e4214;\r\n color: #42526e;\r\n }\r\n`;\r\n\r\nconst LoaderContainer = styled.div`\r\n &&{\r\n margin: 2em 0 2em 0em !important;\r\n }\r\n`;\r\nconst files: File[] = [];\r\nconst data = {\r\n content: \"\",\r\n ids: Array()\r\n}\r\nconst ViewMembersModal = ({ open, setOpen }: Props) => {\r\n\r\n const { chatStore, employeeStore, messageStore, conversationStore, userStore } = useStore();\r\n const { getUsersByConverSation, employeesIncludedOnConversation, isDeletingMember, messageBoxShow } = chatStore;\r\n const { user } = userStore;\r\n const { selectedConversation } = conversationStore;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [modalState, setmodalState] = useState(false);\r\n const [conversationdId, setConversationdId] = useState(\"\");\r\n const [userId, setUserId] = useState(\"\");\r\n const [name, setName] = useState(\"\");\r\n const handleOnCLose = () => {\r\n setOpen(false);\r\n\r\n }\r\n useEffect(() => {\r\n getUsersByConverSation(selectedConversation?.id);\r\n setIsLoading(false);\r\n }, [open, isDeletingMember, getUsersByConverSation]);\r\n useEffect(() => {\r\n setmodalState(false)\r\n }, [messageBoxShow]);\r\n return (\r\n setOpen(false)}\r\n closeOnDimmerClick={false}\r\n >\r\n \r\n {selectedConversation?.name}\r\n \r\n \r\n \r\n \r\n \r\n {isDeletingMember ? : \r\n \r\n \r\n \r\n
\r\n \r\n {employeesIncludedOnConversation.length} Members\r\n \r\n
\r\n
\r\n
\r\n
\r\n {employeesIncludedOnConversation.map(employee => {\r\n\r\n return \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {employee.name}\r\n \r\n\r\n
\r\n
\r\n \r\n\r\n {user?.id != employee.id ?\r\n
\r\n { setmodalState(true); setConversationdId(selectedConversation?.id!); setUserId(employee.id); setName(employee.name!); }} />\r\n
\r\n :\r\n null\r\n }\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n })}\r\n
}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n );\r\n}\r\n\r\nexport default observer(ViewMembersModal);","import { Formik, FormikProps } from 'formik';\r\nimport React, { useRef, useState } from 'react';\r\nimport { Button, Form, Grid, Item, Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport FormTextArea from '../form/FormTextArea';\r\nimport FormTextInput from '../form/FormTextInput';\r\nimport * as Yup from 'yup';\r\nimport { useStore } from '../../stores/store';\r\ninterface Props {\r\n open: boolean;\r\n setOpen: React.Dispatch>;\r\n groupChatName: string;\r\n}\r\ninterface Groupchat {\r\n name: string \r\n}\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0em !important;\r\n max-width: fit-content;\r\n min-width: 100%; \r\n }\r\n`;\r\n\r\nconst data = {\r\n content: \"\",\r\n ids: Array()\r\n}\r\nconst files: File[] = [];\r\nconst EditGroupChatNameModal = ({ open, setOpen, groupChatName}: Props) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { chatStore, employeeStore, messageStore, conversationStore, userStore } = useStore();\r\n const { rename } = chatStore;\r\n const { selectedConversation } = conversationStore;\r\n const { addMessageWithAttachment } = messageStore;\r\n const { user } = userStore;\r\n\r\n const handleSubmit = ({ name }: Groupchat) => {\r\n \r\n data.content = `${user?.firstName + \" \" + user?.lastName} has renamed the conversation to ${name}.[[SystemGenerated]]`;\r\n setIsLoading(true);\r\n\r\n rename(selectedConversation?.id!, name).then(request => {\r\n addMessageWithAttachment(\r\n {\r\n content: data.content,\r\n conversationId: selectedConversation?.id,\r\n receiversId: [],\r\n connectionId: chatStore.connectionId,\r\n files: files\r\n }\r\n ).then(() => {\r\n chatStore.hubConnection?.invoke('OnUpdateConversationName', selectedConversation?.id, name)\r\n \r\n setIsLoading(false);\r\n setOpen(false)\r\n });\r\n\r\n })\r\n }\r\n\r\n const formikRef = useRef>(null);\r\n return (\r\n setOpen(false)}\r\n closeOnDimmerClick={false}\r\n >\r\n Edit group name\r\n \r\n {\r\n ({ handleSubmit, isSubmitting, isValid, setErrors, resetForm, dirty, values }) => {\r\n return (\r\n <>\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n 128}\r\n onClick={() => handleSubmit()}\r\n\r\n />\r\n setOpen(false)}>\r\n Cancel\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default EditGroupChatNameModal;","import { observer } from 'mobx-react-lite';\r\nimport * as React from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport { Icon, Segment } from 'semantic-ui-react';\r\nimport { useLightbox } from 'simple-react-lightbox';\r\nimport styled from 'styled-components';\r\nimport { useStore } from '../../../app/stores/store';\r\nimport ChatAttachmentHiddenImage from '../chat/ChatAttachmentHiddenImage';\r\nimport ChatAttachmentImage from '../chat/ChatAttachmentImage';\r\n\r\n//#region Styling\r\nconst StyledSegment = styled(Segment) <{ hasView: boolean, isAttachment: boolean, isMyMessage: boolean }>`\r\n padding: 6px !important;\r\n margin: 0px 6px 0 0 !important;\r\n display: flex;\r\n flex-direction: flex-end;\r\n box-shadow:none;\r\n transition: box-shadow .3s;\r\n justify-content: left;\r\n max-width: 11em;\r\n min-width: 11em;\r\n ${p => p.isAttachment ? `\r\n border-radius: 0;\r\n margin: 0 0 !important;`\r\n : ``}\r\n\r\n ${p => (p.hasView ? `\r\n &:hover{\r\n margin-top: -1px;\r\n margin-left: -1px;\r\n box-shadow: 0 0 11px rgba(33,33,33,.2);\r\n cursor: pointer;\r\n }\r\n ` : '')};\r\n \r\n`;\r\nconst ActionWrappers = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n\r\n`;\r\n\r\nconst StyledIcon = styled(Icon)`\r\n && {\r\n box-shadow: none !important;\r\n &:hover{\r\n background-color: #eee;\r\n cursor: pointer;\r\n }\r\n }\r\n`;\r\n\r\nconst FileNameContainer = styled.div`\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n max-width: 70px;\r\n `;\r\n\r\nconst AttachemntDetails = styled.div`\r\n`;\r\n\r\n//#endregion\r\n\r\ninterface Props {\r\n fileName: string;\r\n fileId: string;\r\n size: number;\r\n lightBoxIndex: number;\r\n onRemove?: (fileName: string) => void | undefined;\r\n isOpen?: boolean;\r\n attachmentId?: string;\r\n onDelete?: (attachmentId: string) => void | undefined;\r\n isLast?: boolean;\r\n fileType?: string;\r\n isMyMessage?: boolean;\r\n}\r\n\r\nconst isImage = (fileName) => {\r\n return fileName.match(/.(jpg|jpeg|png)$/i);\r\n}\r\n\r\nconst saveFile = (data, fileName) => {\r\n const a = document.createElement('a');\r\n document.body.appendChild(a);\r\n const url = window.URL.createObjectURL(data);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(a);\r\n }, 0);\r\n}\r\n\r\nconst ChatInputAttachment = ({ fileId ,fileName, size, lightBoxIndex, onRemove, isOpen, attachmentId, isLast, fileType, isMyMessage }: Props) => {\r\n const { chatAttachmentStore, popOverStore, messageStore } = useStore();\r\n const { bytesToSize } = messageStore;\r\n const { getBlob, setIsAttachmentClick } = chatAttachmentStore;\r\n const { openLightbox, closeLightbox } = useLightbox();\r\n\r\n const handleOnClickAttachment = (event: any) => {\r\n setIsAttachmentClick(true);\r\n if (attachmentId) {\r\n //if (event.target !== event.currentTarget) return;\r\n\r\n if (isImage(fileName)) {\r\n console.log(lightBoxIndex);\r\n openLightbox(lightBoxIndex!)\r\n }\r\n\r\n else {\r\n let response = getBlob(attachmentId).then(v => {\r\n if (v != undefined) {\r\n saveFile(v, fileName);\r\n }\r\n });\r\n\r\n toast.promise(response,\r\n {\r\n pending: `Downloading file`,\r\n success: `File downloaded!`,\r\n error: `Downloading error!`\r\n });\r\n\r\n }\r\n }\r\n }\r\n\r\n const renderAttachment = (attachmentId, fileName, size) => {\r\n \r\n if (!attachmentId) {\r\n return (<>\r\n \r\n {fileName}\r\n \r\n {size ? bytesToSize(size) : 0}\r\n )\r\n }\r\n\r\n //if (isImage(fileName)) {\r\n // return <>\r\n // \r\n // ;\r\n //}\r\n //else {\r\n // return <>\r\n // \r\n // {fileName}\r\n // \r\n // {size ? bytesToSize(size) : 0}\r\n // \r\n //}\r\n }\r\n\r\n return (\r\n <>\r\n \r\n { }\r\n \r\n {renderAttachment(attachmentId, fileName, size)}\r\n \r\n {onRemove && ( onRemove!(fileId)} />)}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(ChatInputAttachment);","import { Formik, FormikProps } from 'formik';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { Button, Form, Grid, Icon, Item, Modal } from 'semantic-ui-react';\r\nimport styled from 'styled-components';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport { useStore } from '../../stores/store';\r\nimport ReceiverMultiSelect from './ReceiverMultiSelect';\r\n\r\nconst swal = withReactContent(Swal);\r\n//#region Styling\r\n\r\nconst ItemContent = styled(Item.Content)`\r\n &&{\r\n margin: 0 0 0 0em !important;\r\n max-width: fit-content;\r\n min-width: 100%; \r\n \r\n \r\n }\r\n`;\r\n\r\nconst StyledItem = styled(Item)`\r\n &&{\r\n margin:5px 0 !important;\r\n }\r\n`;\r\nconst WarningContainer = styled.div`\r\n &&{\r\n border: 3px solid #f8bb86;\r\n border-radius: 50%;\r\n width: 6em;\r\n height: 6em;\r\n padding: 15px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\nconst ItemContainer = styled.div`\r\n &&{\r\n width: 100%;\r\n padding: 15px;\r\n display: flex;\r\n justify-content: center;\r\n padding:.5em;\r\n }\r\n`;\r\nconst CenterDiv = styled.div`\r\n &&{\r\n display: flex;\r\n justify-content: center;\r\n flex-flow: wrap;\r\n }\r\n`;\r\nconst selectStyles = {\r\n container: (provided, state) => ({\r\n ...provided,\r\n margin: '5px',\r\n width: '97%',\r\n zIndex: '9999'\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '100px'\r\n }),\r\n menuList: (provided, state) => ({\r\n ...provided,\r\n overflowY: 'auto',\r\n maxHeight: '190px'\r\n }),\r\n}\r\n//#endregion\r\n\r\ninterface Props {\r\n open: boolean;\r\n setOpen: React.Dispatch>;\r\n}\r\ninterface Groupchat {\r\n userIds: { value: string, label: string }[]\r\n}\r\n\r\nconst files: File[] = [];\r\nconst data = {\r\n content: \"\",\r\n ids: Array()\r\n}\r\n\r\nconst LeaveGroupModal = ({ open, setOpen }: Props) => {\r\n const { chatStore, employeeStore, messageStore, conversationStore, userStore } = useStore();\r\n const { isEmployeesByConversationLoading, loadEmployeesByConversationId, employeessOptionValues,\r\n getUsersByConverSation, employeesIncludedOnConversation, addUsersToConversation, deleteMember } = chatStore;\r\n const { addMessageWithAttachment } = messageStore;\r\n const { user } = userStore;\r\n const { selectedConversation } = conversationStore;\r\n const formikRef = useRef>(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const handleSubmit = () => {\r\n setIsSaving(true)\r\n let usersToUpdate = employeesIncludedOnConversation.filter(u => {\r\n if (u.id != user?.id!) {\r\n return u;\r\n }\r\n }).map(u => u.id);\r\n\r\n\r\n deleteMember(selectedConversation?.id!, user?.id!).then(\r\n () => {\r\n data.content = `${user?.firstName + \" \" + user?.lastName} has left this conversation.[[SystemGenerated]]`;\r\n addMessageWithAttachment(\r\n {\r\n content: data.content,\r\n conversationId: selectedConversation?.id!,\r\n receiversId: [],\r\n connectionId: chatStore.connectionId,\r\n files: files\r\n }\r\n ).then(() => {\r\n chatStore.hubConnection?.invoke('OnRemoveUserToTheConversation', user?.id!, selectedConversation?.id!);\r\n chatStore.hubConnection?.invoke('OnUpdateNumberOfUsersToTheConversation', usersToUpdate, selectedConversation?.id);\r\n\r\n });\r\n setOpen(false)\r\n setIsSaving(false)\r\n })\r\n\r\n }\r\n\r\n const handleOnCLose = () => {\r\n setOpen(false);\r\n\r\n }\r\n\r\n return (\r\n handleOnCLose}\r\n closeOnDimmerClick={false}\r\n >\r\n \r\n \r\n \r\n \r\n !\r\n \r\n \r\n

Leave group?

\r\n
\r\n \r\n Are you sure you want to leave this conversation?\r\n \r\n \r\n \r\n setOpen(false)}>\r\n Cancel\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n );\r\n}\r\n\r\nexport default observer(LeaveGroupModal);","import {\r\n Button, AddUserButton, ChatContainer, ConversationHeader, Message, MessageInput, MessageList, MessageSeparator\r\n} from '@chatscope/chat-ui-kit-react';\r\nimport DOMPurify from 'dompurify';\r\nimport parse from 'html-react-parser';\r\nimport { observer } from \"mobx-react-lite\";\r\nimport { ChangeEvent, SyntheticEvent, useEffect, useRef, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { Grid, Item, Dropdown, Header, Icon, Loader } from \"semantic-ui-react\";\r\nimport SimpleReactLightbox, { SRLWrapper } from \"simple-react-lightbox\";\r\nimport styled from \"styled-components\";\r\nimport { MessageAttachment } from \"../../models/message\";\r\nimport { useStore } from \"../../stores/store\";\r\nimport ChatAttachment from \"./ChatAttachment\";\r\nimport AddMemberModal from \"./AddMemberModal\"\r\nimport { bool } from 'yup';\r\nimport ViewMembersModal from './ViewMembersModal';\r\nimport EditGroupChatNameModal from './EditGroupChatNameModal';\r\nimport ChatInputAttachment from './ChatInputAttachment';\r\nimport Swal from 'sweetalert2';\r\nimport withReactContent from 'sweetalert2-react-content';\r\nimport LoadingComponent from '../../layout/LoadingComponent';\r\nimport Linkify from 'react-linkify';\r\nimport LeaveGroupModal from './LeaveGroupModal';\r\nimport AttachmentLoadingIndicator from './AttachmentLoadingIndicator';\r\nconst swal = withReactContent(Swal)\r\n// #region Styling\r\nconst MinimizeIcon = styled(Icon)`\r\n && {\r\n color: #6ea9d7;\r\n margin-right: 5px;\r\n &:hover{\r\n opacity: .6;\r\n cursor: pointer;\r\n }\r\n }\r\n`;\r\n\r\nconst dropdownStyle = ({ hover }) => ({\r\n\r\n color: hover ? '#9cc3e1' : '#6ea9d7',\r\n margin: '0px 4.9em 0.2em .2em'\r\n \r\n})\r\n\r\n\r\nconst ConversationContainer = styled.div<{ isShow: boolean, isMinimized: boolean }>`\r\n && {\r\n display: ${p => p.isShow ? 'block' : 'none'};\r\n position: fixed;\r\n right: 15px;\r\n bottom: 0px;\r\n background-color: #fff;\r\n width: 350px;\r\n max-height:450px;\r\n box-shadow: 0 0 5px #ccc;\r\n border-radius: 5px 5px 0 0;\r\n &:hover{\r\n ${p => p.isMinimized ? `cursor:pointer` : ''}\r\n }\r\n }\r\n`;\r\n\r\nconst SystemGeneratedText = styled.small`\r\n && {\r\n color: #9b9b9b;\r\n font-size: 12px;\r\n display: block;\r\n text-align: center;\r\n margin: 10px 0 20px 0;\r\n }\r\n`;\r\nconst Sending = styled.span`\r\n && {\r\n float: right;\r\n font-size: .7em;\r\n color: rgba(77,77,77,.87);\r\n margin-top: 0px;\r\n width:100%;\r\n text-align: end;\r\n \r\n }\r\n`;\r\n\r\nconst ConversationName = styled(Header)`\r\n && {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width:300px;\r\n }\r\n`;\r\n\r\nconst AttachmentContainer = styled.div < { isMinimize: boolean }>`\r\n && {\r\n bottom: 10.6em;\r\n position: relative; \r\n height: 105px;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n padding-bottom: 5px;\r\n margin: 10px;\r\n display: ${p => p.isMinimize ? 'none' : 'grid'};\r\n flex-direction: row;\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n }\r\n`;\r\n//const AttachmentContainer = styled.div < { isMinimize: boolean }>`\r\n// && {\r\n// bottom: 10.6em; \r\n// position: relative; \r\n// width: 330px;\r\n// overflow-x: auto;\r\n// padding-bottom: 5px;\r\n// margin: 10px;\r\n// display: ${p => p.isMinimize ? 'none' : 'flex'};\r\n// flex-direction: row;\r\n// }\r\n//`;\r\n\r\n\r\nconst StyledMessage = styled(Message)`\r\n .cs-message__content{\r\n padding: 0 !important;\r\n border-radius: 0.7em !important;\r\n width: fit-content !important;\r\n }\r\n .cs-message__content-wrapper{\r\n max-width: 80%;\r\n \r\n }\r\n`;\r\nconst StyledDropdownItem = styled(Dropdown.Item)`\r\n &:hover{\r\n background: aliceblue;\r\n }\r\n`;\r\n// #endregion\r\nconst data = {\r\n content: \"\",\r\n ids: Array()\r\n}\r\nconst attachLightBoxIndex = (attachments: MessageAttachment[]) => {\r\n let count = 0;\r\n return attachments.map(a => {\r\n if (a.fileName.match(/.(jpg|jpeg|png)$/i)) {\r\n let attachment = {\r\n ...a,\r\n index: count\r\n }\r\n count++;\r\n return attachment;\r\n } else {\r\n return a;\r\n }\r\n })\r\n}\r\n\r\nconst htmlFrom = (htmlString) => {\r\n const cleanHtmlString = DOMPurify.sanitize(htmlString,\r\n { USE_PROFILES: { html: true } });\r\n const html = parse(cleanHtmlString);\r\n return html;\r\n}\r\n\r\nfunction MessageContainer() {\r\n const { chatStore, messageStore, conversationStore, modalStore, userStore } = useStore();\r\n const { messageBoxShow, hideMessageBox, dataURLtoFile, deleteMember, employeesIncludedOnConversation } = chatStore;\r\n const { messages, postMessage, setMessages, addMessageWithAttachment,\r\n isMinimize, setIsMinimize, files, setFiles, loadMessage, messagesWithDates, bytesToSize, isMessageSending, temporaryMessages } = messageStore;\r\n const { selectedConversation, loadMoreConversation } = conversationStore;\r\n const [content, setContent] = useState(\"\");\r\n const [showChatMenu, toggleshowChatMenu] = useState(false);\r\n const [hover, setHover] = useState(false); \r\n const { user } = userStore;\r\n const handleClickShowChatMenu = () => {\r\n toggleshowChatMenu(!showChatMenu);\r\n };\r\n let messagesEndRef: HTMLDivElement;\r\n\r\n const inputFile = useRef(null);\r\n const inputRef = useRef();\r\n const [modalState, setmodalState] = useState(false);\r\n const [viewMembersModalState, setViewMembersModalState] = useState(false);\r\n const [viewEditModalState, setEditMembersModalState] = useState(false);\r\n const [leaveGroupModalState, setLeaveGroupModalState] = useState(false);\r\n const handleFileChange = async (event: ChangeEvent) => {\r\n\r\n inputRef.current.focus();\r\n if (!content && event.target.files?.length! > 0) setContent(' ');\r\n\r\n if (event.currentTarget.value === \"\" || event.target.files == null) {\r\n toast.error('No file Selected');\r\n return;\r\n }\r\n\r\n for (const file of event.target.files as any) {\r\n if (file.size > 100000000) {\r\n toast.error('File must not exceed 100 MB');\r\n return;\r\n }\r\n file.id = 'files' + files.length;\r\n files.push(file);\r\n }\r\n //const mergingFiles = files != null ? files : [];\r\n\r\n //setFiles([...mergingFiles, ...Array.from(event.target.files)]);\r\n event.currentTarget.value = \"\";\r\n }\r\n\r\n const handleFileUpload = () => {\r\n if (inputFile != null && inputFile.current != null)\r\n inputFile.current.click();\r\n }\r\n\r\n const handleMessageOnChange = (value: string) => setContent(value);\r\n\r\n const handleSend = () => {\r\n const cleanedContent = content.replace(/ |
/g, ' ').trim();\r\n scrollToBottom();\r\n if ((selectedConversation && cleanedContent.length > 0) || files.length > 0) {\r\n let response = addMessageWithAttachment(\r\n {\r\n content: cleanedContent,\r\n conversationId: selectedConversation?.id,\r\n receiversId: [],\r\n connectionId: chatStore.connectionId,\r\n files: files\r\n }\r\n );\r\n setContent('');\r\n setFiles([]);\r\n scrollToBottom();\r\n\r\n \r\n \r\n } else {\r\n toast.error('You cannot send an empty message.')\r\n }\r\n }\r\n\r\n const scrollToBottom = () => {\r\n if (messagesEndRef)\r\n messagesEndRef.scrollIntoView();\r\n }\r\n\r\n const handleMinimization = (e: SyntheticEvent) => {\r\n e.stopPropagation();\r\n setIsMinimize(true);\r\n }\r\n\r\n const handleCloseMessageBox = () => {\r\n setMessages([]);\r\n setContent(\"\");\r\n\r\n hideMessageBox();\r\n }\r\n \r\n \r\n const handlePaste = (e) => {\r\n e.preventDefault();\r\n const clipboardItems = (e.clipboardData || e.originalEvent.clipboardData).items;\r\n const item = clipboardItems[0];\r\n \r\n if (item.type.split('/')[0].toString() == 'image') {\r\n \r\n let file = item.getAsFile();\r\n if (file.size > 100000000) {\r\n toast.error('File must not exceed 100 MB');\r\n return;\r\n }\r\n file.id = 'files' + files.length;\r\n files.push(file)\r\n setContent(\" \");\r\n \r\n } else if (item.type.toString() == 'text/html') {\r\n \r\n item.getAsString((data) => {\r\n let html = htmlFrom(data);\r\n let imgUrl = html[1].props.src;\r\n var file = dataURLtoFile(imgUrl, 'image.png') as any;\r\n if (file.size > 100000000) {\r\n toast.error(\"File must not exceed 100 MB.\")\r\n return;\r\n } \r\n file.id = 'files' + files.length;\r\n files.push(file)\r\n\r\n });\r\n setContent(\" \");\r\n } else if (item.type.toString() == 'text/plain') {\r\n setContent(content + e.clipboardData.getData(\"text\"));\r\n }\r\n }\r\n \r\n\r\n useEffect(() => {\r\n scrollToBottom()\r\n }, []);\r\n\r\n useEffect(() => {\r\n setmodalState(false)\r\n setViewMembersModalState(false)\r\n setEditMembersModalState(false)\r\n setLeaveGroupModalState(false)\r\n }, [messageBoxShow]);\r\n \r\n\r\n return (\r\n <>\r\n setIsMinimize(false)} >\r\n \r\n \r\n \r\n \r\n {selectedConversation?.name!}\r\n {!isMinimize && selectedConversation?.type == \"Group\" ?\r\n setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n title=\"Manage Group\" icon='chevron down' className='small dropdown-button' pointing='top left'\r\n >\r\n \r\n { setmodalState(true); }} />\r\n { setViewMembersModalState(true); }} />\r\n { setEditMembersModalState(true) }} />\r\n { setLeaveGroupModalState(true) }} />\r\n \r\n \r\n : null}\r\n \r\n \r\n {!isMinimize && }\r\n