{"version":3,"sources":["components/DataDisplay/FormattedCurrency.tsx","components/ReminderSelector.tsx","components/MatterAutoCompleteSelector.tsx","components/ClientAndContactSelector.tsx","components/DataDisplay/FormattedPercentage.tsx","components/Loader.tsx","components/Modal.tsx","components/Icon.tsx","components/DataDisplay/CurrencyDisplayStyle.ts","components/Button.tsx","components/Label/LabelStyle.ts","components/DataDisplay/DateTimeDisplay.tsx","components/Editor.tsx","components/Grid/ColumnConfig.tsx","components/InfiniteAutocomplete.tsx","components/UserAutocompleteSelector.tsx","components/LoadComponentAsync.tsx","components/CurrencyInput.tsx","components/UserSelector.tsx","components/ClientAutoCompleteSelector.tsx","components/TextFieldWithMention.tsx","components/MultiSelect.tsx","components/CustomTable.tsx","components/Checkbox.tsx","components/RoleSelector.tsx","components/RoleCategorySelector.tsx","components/Leap/LeapFirmProvisionStatusType.tsx","components/TreeSelect.tsx","components/LoadingDialog.tsx","components/DashboardLayoutScopeSelector.tsx","components/Label/Label.tsx","components/DataDisplay/CurrencyDisplay.tsx","components/AiHelper.tsx","components/PageNotFound.tsx","components/DataDisplay/NumberDisplay.tsx","components/DataDisplay/ValueFormatter.tsx","components/Tooltip.tsx","components/Label/LayoutWidth.ts","components/Input.tsx","components/TimeNumberFormat.tsx","components/common/common.tsx","components/MainDrawer.tsx","components/AppHeader/AppMenu.tsx","components/PasswordStrengthIndicator.tsx","components/Wrapper.tsx","components/UrlViewer.tsx","components/AppHeader/UserCardV2.tsx","components/Panel.tsx","components/SupportedBrowsers.tsx","components/AppHeader/AppLogo.tsx","components/AppHeader/AppHeader.tsx","components/AppFooter.tsx","components/Error.tsx","components/ForgottenPassword.tsx","components/Login.tsx","components/AppContent.tsx","components/DataDisplay/FormattedDateTime.tsx","components/ChangePassword.tsx","components/Container.tsx","components/Search.tsx","components/VideoModal.tsx","components/DataDisplay/StringDisplay.tsx","components/Drawer.tsx"],"names":["CurrencyDisplayStyle","props","context","styleList","render","twoDecimals","minimumFractionDigits","this","displayStyle","Decimal","maximumFractionDigits","Integer","isLoading","size","undefined","value","locale","style","currency","format","currencyDisplay","ReminderSelector","state","data","isNoZeroMinutes","label","getMatchedValue","numberSplit","match","stringSplit","numberValue","length","numOne","toString","substring","numTwo","parseFloat","stringValue","toLowerCase","getInputProps","params","InputProps","endAdornment","Fragment","color","startAdornment","showIcon","position","fontSize","className","classes","loading","disabled","onChange","event","onSelection","name","onClose","console","log","currentTarget","newValue","tempValue","options","disablePortal","getOptionLabel","option","getOptionSelected","onBlur","renderInput","variant","fullWidth","margin","required","error","helperText","renderOption","inputValue","matches","parts","map","part","index","key","fontWeight","highlight","text","useStyles","theme","root","minWidth","textField","width","iconSelected","height","marginRight","marginLeft","flexShrink","borderRadius","marginTop","flexGrow","close","opacity","renderWrapper","padding","customRenderWrapper","display","fontFamily","alignItems","flex","flexFlow","lineHeight","letterSpacing","secondaryWrapper","MatterAutoCompleteSelector","delayedonInputChange","reason","fetchData","hasNextPage","isNextPageLoading","offset","items","filter","setState","isClear","prevState","query","refreshData","onSuccess","onError","fetchPolicies","MatterSummaryXData","variables","first","sortColumn","sortDirection","isLimitedMatterSearch","isDropdownSearch","fetchPolicy","then","results","catch","fetchMatterData","isIncludeCompleted","onDataRetrieved","matterData","matterSummaryListX","matters","rowCountWithoutFilters","itemsList","source","fileNumber","title","matterGuidId","client","id","matter","item","push","LightTooltip","tooltip","backgroundColor","palette","common","white","boxShadow","shadows","arrow","border","shortingTitle","limit","placement","rootClassName","itemSize","disableCloseOnSelect","isMultiple","multiple","loadNextPage","disableListWrap","selection","onOpen","onInputChange","disabledFilterOptions","primary","secondary","textLimit","description","ClientAndContactSelector","ClientAndContactsQuery","includeOrganisation","includeIndividual","includeStaff","includePmsContacts","includeNonPmsContacts","retrieveClientAndContactListData","onRetrieveList","clientAndContactData","clientAndContactList","clientAndContacts","recordCount","guid","includes","isStaff","email","active","inline","content","open","trigger","buttonName","centered","Header","header","Content","Actions","actionButtons","iconKey","RvButtonType","ButtonWrapDiv","div","focus","button","onClick","ref","ButtonsFabricWrapper","IconButtonWrapper","checked","rvKey","href","target","ariaDescription","rvbuttonType","rvIcon","rvClassName","split","rvMenuProps","iconProps","iconName","ariaLabel","menuProps","LabelStyle","MomentConfig","LabelData","Column","textAlign","ValueData","DateTimeDisplayWrapper","hiddenOnEmpty","isHidden","columns","LabelDataWidth","Default","ValueDataWidth","config","DisplayInUTC","EditorWrapper","getMergeFields","emailType","NEW_ENQUIRY_RESPONSE","NEW_LEAD_ASSIGNED","ENQUIRY_MENTIONS","FOLLOW_UP_ENQUIRY_REMINDER","FOLLOW_UP_ENQUIRY_OVER_DUE_REMINDER","MEETING_BOOKING","NEW_CLIENT","EMAIL_RESPONSE","NEW_LEAD","NEW_MEETING_NOTIFICATION","RecordCreatedConfirmation","RecordCreationFailed","UnassignedEnquiry","enquiryMergedFields","PHONE_MESSAGE","TASK_ASSIGNED","TASK_COMPLETED","TaskMessage","TASK_REMINDER","TASK_OVER_DUE_REMINDER","taskMergedFields","NEW_USER_CREATED","userRegistrationMergedFields","PASSWORD_RESET","resetPasswordMergedFields","NEW_MATTER_DOCUMENT","newMatterDocumentMergedFields","NEW_MATTER_MESSAGE_SENT","newMatterMessageMergedFields","InstructMatter","newInstructMatterMergedFields","EmailSendFailureNotification","emailSendFailureMergedFields","mFaMergedFields","hasArtificialIntelligence","HasAccess","disabledAI","hasEmailTemplateAI","apiKey","init","ai_request","ai_shortcuts","menubar","imagetools_cors_hosts","icons","plugins","toolbar","toolbar_sticky","autosave_ask_before_unload","autosave_interval","autosave_prefix","autosave_restore_when_empty","autosave_retention","image_advtab","content_css","image_class_list","importcss_append","template_cdate_format","template_mdate_format","image_caption","quickbars_selection_toolbar","noneditable_noneditable_class","toolbar_mode","contextmenu","menu","custom","mergedFields","forEach","field","getMergeFieldItems","setup","editor","ui","registry","addMenuItem","onAction","insertContent","getMergeFieldMenuItems","addAutocompleter","minChars","highlightOn","autocompleteApi","rng","setRng","hide","fetch","pattern","Promise","resolve","char","indexOf","getMatchedChars","type","direction","addContextMenu","update","element","addButton","stopButton","dialogApi","windowManager","body","buttons","enabled","setEnabled","onSubmit","api","getData","aiContent","getButton","onEditorChange","sort","a","b","localeCompare","menuTabs","nonFilterMenuTabs","ConvertViewConfigToLayout","layoutConfiguration","isInMemory","columncfgs","result","Array","columncfg","getFilterForDataType","dataType","showMenuTab","ContextMenu","ContextMenuStaff","isDateFilter","Date","DateTime","headerName","filterParams","filterOptions","inRangeInclusive","comparator","filterLocalDateAtMidnight","cellValue","dateParts","cellDate","Number","getTime","show","pinned","isLocked","enableRowGroup","tooltipField","String","aggFunc","enableValue","valueGetter","getValueGetter","cellClass","Percentage","applyCellRendererToColumn","JSON","parse","ConvertViewLayoutToConfig","viewLayout","columnConfig","column","colDef","getColDef","columnCfg","getActualWidth","getDataTypeForColumn","isVisible","isRowGroupActive","getSort","ccomparator","ConvertColumnsToConfig","stringify","DefaultColumnConfig","cellRendererFramework","Currency","CurrencyWithoutDecimals","Boolean","Image","Duration","LongText","cellRenderer","scrollOffset","InfiniteAutocomplete","ListboxComponent","reverseRender","itemCount","loadMoreItems","isItemLoaded","forwardRef","children","other","outerElementType","useMemo","props2","ref2","renderRow","individualData","cloneElement","threshold","onItemsRendered","layout","maxHeight","maxWidth","onScroll","scroll","initialScrollOffset","itemData","innerElementType","withInfinite","handleChange","handleClose","handleOpen","filterOptionsState","terms","reduceRight","term","keys","UserAutocompleteSelector","retrieveUserListData","isStaffOnly","isExternal","isAuthorized","onRetrieveUserList","userData","administrator","users","user","userID","staffName","friendlyName","roleName","visible","role","UserListQuery","WriteOffOnSummaryDrilldownPage","loader","loaded","Component","NotesSummaryDrilldownPage","NotesSummaryPage","ClientDocumentsPage","MatterColumnSecurityConfigurationPage","RoleSecurityConfigurationPage","TimesheetResourceCenterPage","TaskResourceCenterPage","CrmResourceCenterPage","AcuityResourceCenterPage","MattersResourceCenterPage","GeneralMaterialConfigurationPage","Home","ChartComponents","TaskSummaryDrilldownPage","EventsAndCampaignsAttendeePage","UserDashboardActivityListPage","UserOutlookAddinUsagePage","EventsAndCampaignsPage","BrandConfigurationPage","ClientDashboardPage","TaskDashboardPage","FeeEarnerDashboardPage","Dashboard","MatterSummary","MatterSummaryDrillDown","MatterDetails","ClientAndContactDetails","Redirect","RvPrint","RvPrint2","Logout","RvDashboardOld","Settings","MatterSummaryView","MatterSummaryListView","MatterSummaryCardView","LeapProvisioning","LeapSignIn","LeapAccessResetSignIn","LeapAccessReset","TimeslipPage","LeapProvisioningInProgress","VerifyNewUser","Unauthorised","AutoSignIn","ExternalEnquiry","UserDashboard","UserDashboardPage","RvAdminDashboard","MessageActivityPage","RoleSummaryPage","TimesheetActivityPage","UserListPage","TimelinesChartPage","MatterAccessChartPage","UserAIActivityChartPage","UserAIActivitytPage","EmailSendFailureChartPage","EmailSendFailurePage","MatterAccessPage","NameSummaryPage","StaffSummaryPage","ReportsPage","ReportsCatalogPage","ReportInformation","ReportViewer","ReportCatalogInformation","TimesheetPage","LawyerDashboardPage","FeatureLayoutConfigurationPage","ConfigurationDashboardPage","FeatureLicenceConfigurationPage","FeatureAccessConfigurationPage","LeadsDashboardPage","MatterManagementPage","EnquirySummaryPage","LeadsDetailPage","LookupConfigurationPage","MarketingListAccessPage","MarketingListAccessChartPage","NameAccessPage","NameAccessChartPage","LoginActivityChartPage","DashboardAccessPage","OutlookAddinUsagePage","LoginActivityPage","TasksSummaryPage","SplashScreenConfigurationPage","EmailTemplatesConfigurationPage","HelpConfigurationPage","ReferrersPage","MailingListPage","UploadDocumentDialog","GeneralMaterialPage","UserConfigurationPage","CreateEnquiryPage","InvoiceSummaryPage","TimesheetDrilldownPage","StaffBillingSummaryPage","LearnMorePage","PreloadComponents","preload","CurrencyInput","customInput","thousandSeparator","fixedDecimalScale","decimalScale","allowNegative","prefix","suffix","input","onFocus","InputLabelProps","onValueChange","values","floatValue","isAllowed","maxValue","formattedValue","CurrencyInput2","meta","touched","onChangeValue","StateChangeTypes","ListItemIconWrapper","list","rowCount","handleStateChange","changes","userQueryParams","changeInput","isOpen","mouseUp","unknown","clearData","FetchData","selected","selectedCode","selectedLabel","selectedItem","bind","loadMoreRows","UNSAFE_componentWillReceiveProps","nextProps","componentWillMount","displayLabel","componentDidUpdate","prevProps","focusOnClear","onStateChange","showEmpty","getListItem","getItemProps","wordBreak","wordWrap","getInfiniteLoaderProps","downshiftProps","isRowLoaded","startIndex","stopIndex","setHighlightedIndex","getSelectedItem","placeholder","disable","isSearch","UserListData","fetchUserData","isGuidAsValue","ClientAutoCompleteSelector","ClientsQuery","retrieveClientListData","onRetrieveClientList","clientData","clientList","clients","clientName","fieldFocus","borderBottom","transition","mentionsInput","outline","overflowY","mention","suggestedList","justifyContent","avatar","MultipleTriggers","onAdd","onSelect","onKeyDown","markup","allowSpaceInQuery","allowSuggestionsAboveCursor","appendSpaceOnAdd","displayTransform","renderSuggestion","suggestion","search","highlightedDisplay","focused","stringInitials","n","join","slice","toLocaleUpperCase","stringColour","textDecoration","TextFieldWithMention","mentions","shrink","suggestions","setSuggestions","isLoadData","getUserData","tempData","toLocaleLowerCase","getTeamData","teamData","teamQueryParams","onlyUsedByEnquiries","isMyTeamOnly","onlyUsedByFinancials","onlyUsedByTasks","firm","teams","team","guidID","filteredData","x","mergedData","unionWith","sortedData","sortBy","multiline","inputComponent","inputProps","newPlainTextValue","clickedSuggestion","onSelectedItem","onClear","renderSelections","handleDelete","itemSelected","selectedItems","itemCountToShow","itemsToShow","formControl","htmlFor","renderValue","MenuProps","PaperProps","anchorOrigin","horizontal","vertical","getContentAnchorEl","transformOrigin","menuItemWrapper","checkedIcon","isShowUserActiveStatusIcons","isActive","personIcons","chips","idx","findIndex","i","chip","onMouseDown","stopPropagation","onDelete","child","chipItems","chipToDelete","splice","onRemoveItem","spacing","flexWrap","withTheme","MultiSelect","ValueTypeEnum","headerWrapper","textTransform","colHeader","bodyWrapper","rowBody","colBody","imagesWrapper","CustomTable","head","order","NUMBER","DECIMAL","DATE","ARRAY","IMAGE","src","alt","ARRAY_OF_IMAGE","val","formatValue","isChecked","Check","roles","filteredItem","find","roleList","roleIdString","rolename","autoSelect","RoleSelectorData","RoleSelector","Selector","roleCategoryData","roleCategoryList","isIncludeAdministrator","roleCategory","LeapFirmProvisionStatusType","GetLeapFirmProvisionStatusType","leapProvisioningStatus","DoNotProvision","Pending","Complete","SyncInitiated","SyncComplete","MappingInitiated","MappingComplete","Failed","popover","treeView","textBold","progress","treeItemContent","inputRef","searchQuery","setSearchQuery","setIsSearch","handleTreeClick","popupState","preventDefault","onSearch","searchOptions","searchString","filteredOptions","some","matchingChildren","existingIndex","renderTree","node","nodeId","textFieldRef","current","getBoundingClientRect","CustomPopover","allNodes","nodes","stack","pop","flattenNodes","popupId","disableAutoFocus","edge","readOnly","enabledSearch","disableScrollLock","defaultExpanded","expandAll","defaultCollapseIcon","defaultExpandIcon","paddingTop","secondaryTitle","progressWrapper","paper","displayCloseButton","scopesList","scopeData","scope","shouldComponentUpdate","Label","FontWeight","Normal","remList","styleIdx","labelStyle","cssStyle","hint","CurrencyWrapper","paddingLeft","tabbed","api_key","streamingAIRequest","request","respondWith","stream","signal","streamMessage","conversation","thread","flatMap","response","pluginSystemMessages","system","systemMessages","requestBody","model","temperature","max_tokens","messages","openAiOptions","method","headers","openWhenHidden","onopen","accessType","CRMTextEditor","accessSubType","question","prompt","contentType","get","ok","json","Error","message","onmessage","ev","parsedData","firstChoice","choices","delta","onerror","getResponseFromApi","post","ErrorWrapper","BrandColors","TemplatePrimary","backgroundClip","goToHome","NumberDisplayStyle","Grid","DataType","Link","Checkbox","EditorView","DueDate","Chips","Rating","EventCampaignCategory","MultiLineString","labelAndValueFormatter","dateFormat","displayModel","getDataFormat","numericValue","LayoutWidth","four","twelve","currencyDisplayStyle","CurrencyDisplay","ShortDateTime","param","returnValue","stringFormat","Custom","calloutProps","gapSpace","AppInput","top","right","bottom","onChangeTextArea","onChangeInput","onKeyDownInput","defaultValue","capsLockOn","textInput","autoHeight","rows","autoCapitalize","innerRef","component","icon","secure","iconPosition","action","nextContext","limitTime","max","timeFormat","hour","minute","TimeNumberFormatCustom","prop","getInputRef","ChangedPageEnum","SidebarPushable","Sidebar","Pushable","DrawerGrid","SideBarMenu","flexDirection","background","FontSize","PX","size1","EM","REM","marginBottom","SegmentContainer","Segment","SidebarPusher","Pusher","handleSidebarHide","onLeaveConfirm","showConfirm","DialogBox","isAgree","disAgreeLabel","agreeLabel","as","basic","Menu","animation","orientation","history","links","link","to","linkTo","MenuItem","Icon","drawerContent","agree","localStorage","removeItem","DashboardLayoutConfiguration","TasksMenu","toggleVisibility","toggleTaskAndPhone","drawerLinks","t","appUser","canViewDashboard","isAdministrator","isInternalAdmin","MatterTerminology","ClientDashboard","UserFeature","hasClientDashboard","hasUserDashboard","FirmDashboard","hasFirmDashboard","FeeEarnerDashboard","hasShowFeeEarnerDashboard","AttorneyDashboard","hasIPAttorneyDashboard","MattersSummary","hasMatterSummary","MatterManagement","hasBulkMatterManagement","ClientsAndContacts","hasNameSummary","ClientContactNotes","hasNotesSummary","Referrers","hasReferrerSummary","EventsAndCampaigns","hasEventsAndCampaignsSummary","Staff","hasStaffSummary","Timesheet","hasTimesheetSummary","hasLeadsDashboard","hasLeadsSummary","MailingList","hasMailingList","TaskDashboard","hasTaskDashboard","TASKS","Tasks","PHONE_CALLS","PhoneCalls","hasTaskSummary","Reports","hasLicencedReports","Innography","hasInnographyLink","ClientSense","hasClientSenseLink","Admin","hasAdminDashboardPage","Configuration","hasConfigurationMaintenance","GeneralMaterial","hasGeneralMaterial","ClientDocuments","hasClientDocuments","hasAdHocTask","hasPhoneTask","HIDDEN","UserData","AppMenu","StrengthEnum","strengthContainer","infoContainer","strength","defaultPasswordLength","PasswordStrengthIndicator","strengths","checkNumber","RegExp","test","checkUppercase","checkLowerCase","checkSpecial","hasUpperCase","hasLowerCase","hasNumber","hasSpecial","hasLength","minLenght","onPasswordChange","defaultColor","strengthColor","count","ZERO","ONE","TWO","THREE","FOUR","FIVE","borderColor","minStrength","getSuggestion","wrapper","withStyles","createStyles","url","controlAboveFrame","decodeURIComponent","frame","left","ResourceEnum","PanelDiv","onClosePanel","showPanel","onShowPanel","Panel","smallFixedNear","smallFixedFar","medium","customWidth","onDismiss","isBlocking","ListItem","List","Item","SupportedBrowserWrapper","NeutralColors","BackgroundWhite","toggleVisibilitySupportedBrowser","visibility","SupportedBrowsers","Heading2","GoogleChrome","Description","Safari","MozillaFirefox","MicrosoftEdge","Logo","logoImg","logoUrl","makeStyles","gap","TemplateColor","Primary","userIcon","nested","listItem","listItemIcon","changePasswordDrawer","drawerHeader","UserCardV2","currentUser","useCurrentUser","useState","isHelpOpen","isScrubEnquiryOpen","isChangePasswordOpen","setOpen","anchorRef","useRef","resourceOpen","setResourceOpen","handleResourceOpen","contains","handleListKeyDown","prevOpen","useEffect","handleLogout","window","location","tenantId","handleChangePassword","handleServiceLevels","ServiceLevel","handleTrainingWebinars","handleTrainingUpdates","handleResetLeapAccess","handleReportCatalog","handleHelp","handleScrubData","onCloseChangePassword","handleResource","resource","Box","Skeleton","UserDefinedDialog","ScrubEnquiryDataDialog","Drawer","anchor","IconButton","ChangePassword","Avatar","currentOpen","endIcon","Popper","anchorEl","TransitionProps","Grow","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","ListItemIcon","ListItemText","Collapse","in","timeout","unmountOnExit","disablePadding","Acuity","CRM","Matters","hasReportCatalog","hasUserDefinedHelp","hasScrubData","showResetLeapAccess","StyledDiv","size2","StyledGridColumn","Title","h1","TextSecondary","size6","LineHeight","Medium","ThreeHundred","Divider","borderLeft","LightBlue1","AppMenuDiv","LightBlue2","AppTitleDiv","TimerButtonContainer","paddingRight","BadgeWrapper","Badge","SupportedBrowserDrawer","toggleMenuVisibility","onClickUploadDocument","onClickSupport","onClickInstructMatter","fetchTimerSummary","onRetrieveTimerSummary","onToggleDrawer","showMenu","isAuthenticated","totalTimer","tenant","tenantTitle","sourceSystem","writeData","appMenu","timerButton","hasTimesheetTimer","badgeContent","documentButton","hasUploadMatterDocument","instructMatterButton","hasDebtCollection","supportButton","startIcon","showResetLeapAccessCard","userCardv2","isForceToChangePass","logoStorageKey","logo","setItem","brandLogo","getItem","companyUrl","onToggleMenu","onUploadDocuments","onRequestSupport","setInitialTimerTotal","timerSummary","contextType","TimerContext","TenantData","AppHeader","Footer","boxSizing","minHeight","borderTop","BackgroundGrey3","FooterLink","Bold","Small","FooterLabel","TextTertiary","FooterLabelWrapper","componentDidMount","addScript","document","createElement","setAttribute","appendChild","currentYear","currentVersion","sessionStorage","Message","negative","headerMessage","InputErrorMessage","PanelContent","PanelBorder","LabelContainer","Dark","NewPasswordLabelContainer","InputContainer","ButtonContianer","toggleVisibilityForgottenPassword","RequestPassword","ForgottenPassword","Heading1","RequestNewPassword","Username","mutate","mutation","PasswordMutation","requestNewPassword","LoginSegment","BackgroundGrey4","SixHundred","LoginInputs","LoginLabel","SevenHundred","size3","LoginNavGrid","LoginButton","ForgotPassword","DisplayErrors","ErrorContainer","LoginColumn","LoginGrid","LoginGridRow","Row","LoginDiv","DialogDiv","Dialog","handleResendCode","e","resendVerificationCode","handleClick","login","handleMfaClick","multifactorAuthentication","validateString","trim","clearRefreshToken","userId","password","isLoggingIn","LoginMutation","userName","loginSuccess","rememberMe","statusCode","errorLogin","errorSummary","forceUpdate","errorDescription","mfaCode","isLoggedInMfa","MultifactorAuthenticationMutation","otp","token","loginMfaSuccess","errorMfa","VerificationFailed","SendVerificationCodeMutation","resendOtp","accessToken","Init","VerificationCodeResendSuccessMessage","handleRemberMe","changeUserId","changePassword","changeMfaCode","handleKeyDown","keyCode","handleKeyDownMfa","storeToken","vm","forceChangePassword","setLoginValuesForChangePassword","isForceChangePassword","setRefreshToken","refreshToken","setUserId","authenticationMethod","mfaCodeRequired","setLoginValues","userIdToken","getRefreshToken","getUserId","loggedOn","autoLogin","isOpenSplashScreen","showPassword","handlePasswordResetSuccess","handlePasswordResetFailure","navigateToPage","onCloseSplashScreen","onToggleShowPassword","onTenant","loginRemember","onLogin","checkForLeapTenantAutoProvisioning","Clear","rememberMeCheckBox","loginButton","errorMessage","inputs","controls","MultifactorAuthenticationMessage","AuthenticationCode","isForcedPasswordChange","Password","Verify","Login","ResendVerificationCode","RememberMe","MemberLogin","padded","getSplashScreen","redirect","setUserData","manageReDirect","fetchUserSplashScreen","SplashScreenData","splashScreen","template","splashScreenTemplate","matterAccessCount","navigateToMatterDetails","defaultMatterId","isInternal","DialogContent","dividers","dangerouslySetInnerHTML","__html","DialogActions","isAdmin","isInternalUser","matterId","AddUserMatterAccessActivity","addUserMatterAccessActivity","failureMessage","page","RefreshTokenMutation","NotificationSystem","browserHistory","SiteParent","zIndex","onUploadClose","onRequestSupportClose","onLogout","onShowMenu","getAppHeaderKey","onInstructMaterClose","subscribePendingMatter","subscribeInstructMatter","getDefaultSetting","unAuthenticatedUserKey","Math","random","authenticatedUserKey","tenantID","isPrint","isUploadDialogOpen","isSupportDialogOpen","isInstructMatterDialogOpen","isTimerDrawerOpen","EventSystem","on","pathname","addEventListener","reload","isSubscribed","subscribeToUploadMatterDocument","componentWillUnmount","uploadMatterDocumentSubscription","unsubscribe","pendingMatterSubscription","createInstructMatterSubscription","routes","path","exact","IntegrationConfigurationPage","FirmSettingConfigurationPage","ApplicationSettingsPage","EnquiryCustomFieldsPage","FirmStructureConfigurationPage","UrlViewer","hideHeadFooter","noHeaderAndFooterRoute","appHeader","appFooter","mainClass","notificationSystem","paddingBottom","InstructMatterFormDialog","TimesheetTimerDrawer","subscribe","next","uploadMatterDocumentNotification","status","err","createPendingMatterNotification","createInstructMatterNotifications","loggedIn","DefaultSettingQuery","settings","systems","regionSettings","homeCountry","lang","toUpperCase","i18n","changeLanguage","applications","labelSettings","personActingLabel","personResponsibleLabel","LocalStorageEnum","PersonActing","PersonResponsible","DateTimeDisplayStyle","convertUTCDateToLocalDate","date","displayInUTC","convertedLocalTime","hourOffset","getTimezoneOffset","setHours","getHours","longDateFormat","weekday","year","day","month","shortDateFormat","shortTimeFormat","hour12","longTimeFormat","second","LongDate","ShortTime","LongTime","LongDateTime","timeSinceDate","displayDate","ShowOnlyDate","hasOwnProperty","dt","unit","formats","defaultLocale","ShowMomentOnly","ChangePassButtons","LoaddingWrapper","ChangePasswordWrapper","ChangePassHeader","size4","PasswordStrengthIndicatorWrapper","toggleVisibilityChangePass","changeCurrent","changeNewPassword","newPassword","changeConfirm","confirm","changePassSuccess","checkPasswordLength","checkPasswordMatch","changeForcePassword","change","errorSaving","blankPassword","isPasswordChangeOnlogin","minimumPasswordLength","minimumPasswordStrength","isNewPasswordPolicySatisfied","isConfirmPasswordPolicySatisfied","onPasswordStrengthChanged","fetchPasswordPolicy","canSave","Label1","Heading3","CurrentPassword","NewPassword","ConfirmPassword","Save","fetchPasswordPolicyData","handlePasswordPolicyFetch","ChangePaswordMutation","oldPassword","emit","ChangePaswordMutationForForcedPasswordChange","tenantIdForForcedPasswordChange","minPasswordLength","PasswordPolicyData","ChangePasswordComponent","Container","rvMaxWidth","SearchBoxWrapper","Font","Main","Regular1","transform","searchAction","showClear","filterString","filterDate","dateValue","toDateString","toLocaleTimeString","dialogPaper","innerContainer","loaderWrapper","closeButton","SlideTransition","VideoModal","setLoading","TransitionComponent","playing","onReady","onBuffer","whiteSpace","StringDisplay","onHide"],"mappings":"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","file":"static/js/main~e73b60ec.e419025a.chunk.js","sourcesContent":["import * as React from 'react';\r\nimport { IntlProvider, FormattedNumber } from 'react-intl';\r\nimport { RvLoader } from '../Loader';\r\n\r\nexport enum CurrencyDisplayStyle {\r\n Default = 0, // same as Integer (with default currency symbol)\r\n Integer = 1, // zero decimal places (with default currency symbol)\r\n Decimal = 2, // 2 decimal places (with default currency symbol)\r\n Custom = 3\r\n}\r\n\r\nexport interface FormattedCurrencyProps {\r\n value?: number;\r\n displayStyle?: CurrencyDisplayStyle;\r\n format?: string; // an optional currency format string\r\n isLoading?: boolean;\r\n}\r\n\r\nexport class FormattedCurrency extends React.Component {\r\n styleList: Array = [' ', ' ', 'decimal', ' '];\r\n\r\n // tslint:disable-next-line:no-any\r\n constructor(props: FormattedCurrencyProps, context?: any) {\r\n super(props, context);\r\n }\r\n\r\n render() {\r\n // todo: this should be handled by styling separately but is ok for now - we also need to use correct fonts etc\r\n // Following is commented after Package upgrades. This is not supported. \r\n // Have to find a new way to implement this, if the existing function is broken\r\n // let numberStyle = {\r\n // style: this.props.displayStyle \r\n // ? this.styleList[this.props.displayStyle] && 'currency' \r\n // : this.styleList[CurrencyDisplayStyle.Default] && 'currency'\r\n // };\r\n\r\n let twoDecimals = {\r\n minimumFractionDigits: this.props.displayStyle === CurrencyDisplayStyle.Decimal ? 2 : 0,\r\n maximumFractionDigits: this.props.displayStyle === CurrencyDisplayStyle.Integer ? 0 : 2,\r\n };\r\n\r\n if (this.props.isLoading && this.props.isLoading === true) {\r\n return ;\r\n }\r\n return this.props.value !== undefined ? (\r\n \r\n \r\n \r\n )\r\n :
;\r\n\r\n }\r\n}\r\n","import React, { useState } from 'react';\r\n// import { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { Autocomplete, RenderInputParams } from '@material-ui/lab';\r\nimport { TextField, CircularProgress, InputAdornment } from '@material-ui/core';\r\nimport match from 'autosuggest-highlight/match';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\nimport NotificationsNoneOutlinedIcon from '@material-ui/icons/NotificationsNoneOutlined';\r\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\r\n\r\n// const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// root: {\r\n// minWidth: '150px',\r\n// },\r\n// })\r\n// );\r\n\r\ninterface ReminderSelectorProps {\r\n disabled?: boolean;\r\n required?: boolean;\r\n // tslint:disable-next-line: no-any\r\n value?: IAutoCompleteItem | any; // value only available in single select\r\n error?: boolean;\r\n onSelection?: (value?: IAutoCompleteItem | IAutoCompleteItem[], name?: string) => void;\r\n className?: string;\r\n helperText?: string;\r\n name?: string;\r\n label?: string;\r\n style?: React.CSSProperties; \r\n disablePortal?: boolean;\r\n showIcon?: boolean;\r\n size?: 'small' | 'medium';\r\n isNoZeroMinutes?: boolean;\r\n onBlur?: React.FocusEventHandler;\r\n classes?: Partial>;\r\n}\r\n\r\ninterface ReminderSelectorState {\r\n isLoading: boolean;\r\n data: IAutoCompleteItem[];\r\n}\r\n\r\nexport const ReminderSelector: React.FC = props => {\r\n\r\n // const classes = useStyles();\r\n\r\n const [state] = useState({\r\n isLoading: false,\r\n data: props.isNoZeroMinutes ?\r\n [\r\n { label: 'None', value: 'None' },\r\n { label: '5 minutes', value: '5 minutes' },\r\n { label: '10 minutes', value: '10 minutes' },\r\n { label: '15 minutes', value: '15 minutes' },\r\n { label: '30 minutes', value: '30 minutes' },\r\n { label: '1 hour', value: '1 hour' },\r\n { label: '2 hours', value: '2 hours' },\r\n { label: '3 hours', value: '3 hours' },\r\n { label: '4 hours', value: '4 hours' },\r\n { label: '5 hours', value: '5 hours' },\r\n { label: '6 hours', value: '6 hours' },\r\n { label: '7 hours', value: '7 hours' },\r\n { label: '8 hours', value: '8 hours' },\r\n { label: '9 hours', value: '9 hours' },\r\n { label: '10 hours', value: '10 hours' },\r\n { label: '11 hours', value: '11 hours' },\r\n { label: '0.5 days', value: '0.5 days' },\r\n { label: '18 hours', value: '18 hours' },\r\n { label: '1 day', value: '1 day' },\r\n { label: '2 days', value: '2 days' },\r\n { label: '3 days', value: '3 days' },\r\n { label: '4 days', value: '4 days' },\r\n { label: '1 week', value: '1 week' },\r\n { label: '2 weeks', value: '2 weeks' },\r\n ] : [\r\n { label: 'None', value: 'None' },\r\n { label: '0 minutes', value: '0 minutes' },\r\n { label: '5 minutes', value: '5 minutes' },\r\n { label: '10 minutes', value: '10 minutes' },\r\n { label: '15 minutes', value: '15 minutes' },\r\n { label: '30 minutes', value: '30 minutes' },\r\n { label: '1 hour', value: '1 hour' },\r\n { label: '2 hours', value: '2 hours' },\r\n { label: '3 hours', value: '3 hours' },\r\n { label: '4 hours', value: '4 hours' },\r\n { label: '5 hours', value: '5 hours' },\r\n { label: '6 hours', value: '6 hours' },\r\n { label: '7 hours', value: '7 hours' },\r\n { label: '8 hours', value: '8 hours' },\r\n { label: '9 hours', value: '9 hours' },\r\n { label: '10 hours', value: '10 hours' },\r\n { label: '11 hours', value: '11 hours' },\r\n { label: '0.5 days', value: '0.5 days' },\r\n { label: '18 hours', value: '18 hours' },\r\n { label: '1 day', value: '1 day' },\r\n { label: '2 days', value: '2 days' },\r\n { label: '3 days', value: '3 days' },\r\n { label: '4 days', value: '4 days' },\r\n { label: '1 week', value: '1 week' },\r\n { label: '2 weeks', value: '2 weeks' },\r\n ]\r\n });\r\n\r\n // tslint:disable-next-line: no-any\r\n const handleChange = (event: React.ChangeEvent<{}>, value: any) => {\r\n if (props.onSelection) {\r\n props.onSelection(value, props.name);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const handleOnClose = (event: React.ChangeEvent<{}>) => {\r\n // tslint:disable-next-line: no-console\r\n console.log('handleOnClose', event);\r\n\r\n // tslint:disable-next-line: no-string-literal\r\n if (event.currentTarget && event.currentTarget['value']) {\r\n // tslint:disable-next-line\r\n console.log('handleOnClose Value', event.currentTarget['value']);\r\n\r\n // tslint:disable-next-line: no-string-literal\r\n let newValue = getMatchedValue(event.currentTarget['value']);\r\n if (props.onSelection) {\r\n // tslint:disable-next-line: no-string-literal\r\n let tempValue = { value: newValue, label: newValue };\r\n props.onSelection(tempValue, props.name);\r\n }\r\n }\r\n };\r\n\r\n const getMatchedValue = (value: string) => {\r\n // Split number and string\r\n var numberSplit = value.match(/\\d+/g);\r\n var stringSplit = value.match(/[a-zA-Z]+/g);\r\n\r\n // tslint:disable-next-line: no-any\r\n let numberValue: any = 0;\r\n if (numberSplit && numberSplit.length > 1) {\r\n let numberString = '';\r\n \r\n let numOne = numberSplit[0].toString().length > 3 ? numberSplit[0].substring(0, 3).toString() : numberSplit[0];\r\n let numTwo = numberSplit[1].toString().length > 2 ? numberSplit[1].substring(0, 2).toString() : numberSplit[1];\r\n numberString = numOne + '.' + numTwo; \r\n\r\n numberValue = parseFloat(numberString);\r\n if (numberValue === 'NaN') {\r\n numberValue = 0;\r\n }\r\n } else if (numberSplit && numberSplit?.length > 0) {\r\n let numOne = numberSplit[0].toString().length > 3 ? numberSplit[0].substring(0, 3).toString() : numberSplit[0];\r\n numberValue = numOne;\r\n } else {\r\n numberValue = 0;\r\n }\r\n\r\n if (stringSplit && stringSplit.length > 0 && stringSplit[0]) {\r\n let stringValue = stringSplit[0].toLowerCase();\r\n if (stringValue) {\r\n if (stringValue.match(/^(m|min|mins|minute|minutes)$/)) {\r\n if (numberValue === '1') {\r\n return numberValue + ' minute';\r\n }\r\n return numberValue + ' minutes';\r\n } else if (stringValue.match(/^(h|ho|hr|hrs|hou|hour|hours)$/)) {\r\n if (numberValue === '1') {\r\n return numberValue + ' hour';\r\n }\r\n return numberValue + ' hours';\r\n } else if (stringValue.match(/^(d|da|dy|day|days)$/)) {\r\n if (numberValue === '1') {\r\n return numberValue + ' day';\r\n }\r\n return numberValue + ' days';\r\n } else if (stringValue.match(/^(w|we|wk|wee|week|weeks)$/)) {\r\n if (numberValue === '1') {\r\n return numberValue + ' week';\r\n }\r\n return numberValue + ' weeks';\r\n } else {\r\n return numberValue + ' minutes';\r\n }\r\n } else {\r\n if (numberValue > 60 || (numberValue && numberValue.toString().length > 5)) {\r\n return 36 + ' minutes';\r\n } else {\r\n return numberValue + ' minutes';\r\n }\r\n }\r\n } else { \r\n if (numberValue > 60 || (numberValue && numberValue.toString().length > 5)) {\r\n return 36 + ' minutes';\r\n } else {\r\n return numberValue + ' minutes';\r\n } \r\n }\r\n };\r\n\r\n const getInputProps = (params: RenderInputParams, isLoading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n startAdornment: props.showIcon ? (\r\n \r\n \r\n \r\n ) : undefined,\r\n });\r\n };\r\n\r\n return (\r\n <> \r\n option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n onBlur={props.onBlur} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n \r\n );\r\n};","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState } from 'react';\r\nimport { makeStyles, Theme, createStyles, withStyles } from '@material-ui/core/styles';\r\n// import { name, random } from 'faker';\r\nimport gql from 'graphql-tag';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport { TextField, CircularProgress, ListItemText, Tooltip } from '@material-ui/core';\r\n// import { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { RenderInputParams } from '@material-ui/lab';\r\nimport { InfiniteAutocomplete } from './InfiniteAutocomplete';\r\nimport { showNotification } from '../App';\r\nimport { client } from '..';\r\nimport { MatterSummaryListXData, MatterSummaryQueryXParams, MatterSummaryX } from '../matterSummary/MatterSummaryRepository';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\nimport { useDebouncedCallback } from 'use-debounce/lib';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: '200px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n iconSelected: {\r\n width: 17,\r\n height: 17,\r\n marginRight: 5,\r\n marginLeft: -2,\r\n },\r\n color: {\r\n width: 14,\r\n height: 14,\r\n flexShrink: 0,\r\n borderRadius: 3,\r\n marginRight: 8,\r\n marginTop: 2,\r\n },\r\n text: {\r\n flexGrow: 1,\r\n },\r\n close: {\r\n opacity: 0.6,\r\n width: 18,\r\n height: 18,\r\n },\r\n renderWrapper: {\r\n padding: '15px 0'\r\n },\r\n customRenderWrapper: {\r\n display: 'flex',\r\n margin: '0 -10px',\r\n width: '100%',\r\n '& > div': {\r\n padding: '0 10px',\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n fontWeight: 400,\r\n },\r\n '& .icon-wrapper': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .other': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .primary': {\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n letterSpacing: '0.00938em',\r\n },\r\n '& .secondary': {\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: '0.875rem',\r\n lineHeight: 1.43,\r\n letterSpacing: '0.01071em',\r\n }\r\n }\r\n },\r\n secondaryWrapper: {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n }\r\n })\r\n);\r\n\r\ninterface MatterAutoCompleteSelectorProps {\r\n isStaffOnly?: boolean;\r\n multiple?: boolean;\r\n label?: string;\r\n name: string;\r\n // tslint:disable-next-line: no-any\r\n value?: IAutoCompleteItem | any; // value only available in single select\r\n onSelection?: (value: IAutoCompleteItem | IAutoCompleteItem[], name: string) => void;\r\n id?: string;\r\n required?: boolean;\r\n helperText?: string;\r\n error?: boolean;\r\n className?: string;\r\n disabled?: boolean;\r\n disablePortal?: boolean;\r\n enableSecondary?: boolean;\r\n rootClassName?: string;\r\n onBlur?: React.FocusEventHandler;\r\n textLimit?: {\r\n description?: number;\r\n title?: number;\r\n };\r\n}\r\n\r\ninterface ItemsProps extends IAutoCompleteItem {\r\n fileNumber: string;\r\n title: string;\r\n client: string;\r\n id: number;\r\n}\r\n\r\ninterface MatterAutoCompleteSelectorState {\r\n hasNextPage: boolean;\r\n isNextPageLoading: boolean;\r\n offset: number;\r\n // tslint:disable-next-line: no-any\r\n items: ItemsProps[];\r\n filter: string;\r\n}\r\n\r\nexport const MatterAutoCompleteSelector: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n const loadBlockLimit = 20;\r\n\r\n const [delayedonInputChange] = useDebouncedCallback(\r\n // function\r\n (event: React.ChangeEvent<{}>, value: string, reason: 'input' | 'reset' | 'clear') => {\r\n\r\n let isClear = true; // Clear on search\r\n let offset = 0;\r\n let filter = '';\r\n\r\n if (reason === 'input') {\r\n filter = value;\r\n isClear = true;\r\n\r\n fetchData(filter, offset, isClear);\r\n }\r\n },\r\n // delay in ms\r\n 500\r\n );\r\n \r\n const [state, setState] = useState({\r\n hasNextPage: true,\r\n isNextPageLoading: false,\r\n offset: 0,\r\n items: [],\r\n filter: '',\r\n });\r\n\r\n const fetchData = (filter: string, offset: number, isClear: boolean) => {\r\n \r\n // console.log('fetchData', offset);\r\n \r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: true,\r\n };\r\n });\r\n\r\n const matterSummaryQueryXParams: MatterSummaryQueryXParams = {\r\n filter: filter,\r\n first: loadBlockLimit,\r\n offset: offset,\r\n isIncludeCompleted: false,\r\n sortColumn: 'fileNumber',\r\n sortDirection: 'asc',\r\n isLimitedMatterSearch: true,\r\n isDropdownSearch: true\r\n };\r\n\r\n fetchMatterData(\r\n matterSummaryQueryXParams,\r\n true, // this.state.isRefresh, -- Since we are updating and creating, we do not fetch cached data\r\n // tslint:disable-next-line: no-console\r\n (data) => onDataRetrieved(data, filter, offset, isClear),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n };\r\n });\r\n }\r\n );\r\n };\r\n\r\n const onDataRetrieved = (data: MatterSummaryListXData, filter: string, offset: number, isClear: boolean) => {\r\n\r\n const matterData = data.matterSummaryListX.matters;\r\n const rowCountWithoutFilters = data.matterSummaryListX.rowCountWithoutFilters; \r\n\r\n // console.log('matterData', matterData);\r\n\r\n // tslint:disable-next-line: no-any\r\n let itemsList: ItemsProps[] = [];\r\n let items = state.items;\r\n \r\n if (!isClear) {\r\n itemsList = [...state.items];\r\n } else {\r\n items = [];\r\n }\r\n\r\n if (items && items.length === 0) {\r\n itemsList = matterData.map( (source: MatterSummaryX) => (\r\n {\r\n label: source.fileNumber + ' (' + source.title + ')',\r\n value: source.matterGuidId,\r\n fileNumber: source.fileNumber,\r\n title: source.title,\r\n client: source.client,\r\n id: source.id\r\n }));\r\n } else {\r\n for (const matter of matterData) {\r\n // tslint:disable-next-line: no-any\r\n const isExists = items.filter((item: any) => item.value === matter.matterGuidId).length;\r\n\r\n // const isExists = items.filter((item: IndividualNameSummary) => \r\n // item.guidID.toString().toLowerCase().includes(nameSummary.guidID.toLowerCase())).length;\r\n\r\n if (isExists === 0) {\r\n itemsList.push({\r\n label: matter.fileNumber + ' (' + matter.title + ')',\r\n value: matter.matterGuidId, \r\n fileNumber: matter.fileNumber,\r\n title: matter.title,\r\n client: matter.client,\r\n id: matter.id \r\n });\r\n }\r\n }\r\n }\r\n\r\n setState((prevState) => {\r\n \r\n return {\r\n ...prevState,\r\n filter: filter,\r\n isNextPageLoading: false,\r\n items: itemsList,\r\n offset: offset + loadBlockLimit,\r\n hasNextPage: matterData.length !== 0 && (offset + loadBlockLimit) < rowCountWithoutFilters,\r\n };\r\n });\r\n\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const loadNextPage = (...args: any) => {\r\n if (state.hasNextPage && !state.isNextPageLoading) {\r\n fetchData(state.filter, state.offset, false);\r\n }\r\n };\r\n\r\n // const onInputChange = (event: React.ChangeEvent<{}>, value: string, reason: 'input' | 'reset' | 'clear') => {\r\n // let isNextPageLoading = false;\r\n // let hasNextPage = false;\r\n // let isClear = false;\r\n // let offset = 0;\r\n // let filter = '';\r\n\r\n // if (reason === 'input') {\r\n // filter = value;\r\n // isClear = true;\r\n // isNextPageLoading = true;\r\n // hasNextPage = true;\r\n\r\n // fetchData(filter, offset, isNextPageLoading, hasNextPage, isClear);\r\n // } \r\n // };\r\n\r\n const getInputProps = (params: RenderInputParams, loading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {loading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n };\r\n\r\n const onClose = (event: React.ChangeEvent<{}>) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n hasNextPage: true,\r\n filter: '',\r\n offset: 0,\r\n items: []\r\n };\r\n });\r\n };\r\n\r\n const onOpen = (event: React.ChangeEvent<{}>) => {\r\n \r\n fetchData(state.filter, 0, true);\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onSelection = (selection: any, name: string) => {\r\n\r\n if (props.onSelection) {\r\n props.onSelection(selection, name);\r\n }\r\n };\r\n\r\n const LightTooltip = withStyles((theme: Theme) => ({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n fontSize: 11,\r\n },\r\n arrow: {\r\n '&:before': {\r\n border: '1px solid #E6E8ED'\r\n },\r\n color: theme.palette.common.white\r\n },\r\n }))(Tooltip);\r\n\r\n const shortingTitle = (title: string, limit?: number) => {\r\n\r\n // const _limit = limit ? limit : 0;\r\n\r\n if (limit === undefined || limit === null) {\r\n return title;\r\n } else if (title === undefined || title === null) {\r\n return title;\r\n } else if (title.length < limit) {\r\n return title;\r\n } else {\r\n return ( \r\n \r\n {`${title.substring(0, limit)}...`}\r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n
\r\n typeof option === 'string' ? option : option.label}\r\n onInputChange={delayedonInputChange}\r\n onBlur={props.onBlur}\r\n disabledFilterOptions={true}\r\n getOptionSelected={(option, value) => option.value === value.value} \r\n // reverseRender={true}\r\n // tslint:disable-next-line: no-any\r\n renderInput={(params: any) => (\r\n \r\n )}\r\n renderOption={(option, { selected }) => {\r\n return (\r\n \r\n {shortingTitle(option.title, props.textLimit?.title)}\r\n {shortingTitle(option.client, props.textLimit?.description)}\r\n
\r\n )}\r\n />\r\n );\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport function fetchMatterData(\r\n query: MatterSummaryQueryXParams, \r\n refreshData: boolean,\r\n onSuccess: (data: MatterSummaryListXData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void\r\n): void {\r\n const fetchPolicies: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n\r\n client.query({\r\n query: MatterSummaryXData,\r\n variables: {\r\n filter: query.filter,\r\n first: query.first, \r\n offset: query.offset,\r\n sortColumn: query.sortColumn,\r\n sortDirection: query.sortDirection,\r\n isLimitedMatterSearch: query.isLimitedMatterSearch,\r\n isDropdownSearch: query.isDropdownSearch\r\n },\r\n // tslint:disable-next-line:object-literal-sort-keys\r\n fetchPolicy: fetchPolicies}\r\n )\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any; }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any ) => { onError(reason); });\r\n}\r\n\r\nconst MatterSummaryXData = gql`\r\n query MatterSummaryXData(\r\n $offset: Int, \r\n $first: Int, \r\n $filter: String, \r\n $isIncludeCompleted: Boolean, \r\n $sortColumn: String, \r\n $sortDirection: String,\r\n $isLimitedMatterSearch: Boolean,\r\n $isDropdownSearch: Boolean,\r\n ) {\r\n matterSummaryListX(\r\n offset: $offset, \r\n first: $first, \r\n filter: $filter, \r\n isIncludeCompleted: $isIncludeCompleted, \r\n sortColumn: $sortColumn, \r\n sortDirection: $sortDirection,\r\n isLimitedMatterSearch: $isLimitedMatterSearch,\r\n isDropdownSearch: $isDropdownSearch\r\n ) {\r\n recordCount,\r\n rowCountWithoutFilters\r\n matters {\r\n id \r\n fileNumber \r\n title \r\n matterGuidId\r\n client\r\n } \r\n }\r\n }\r\n`;","import React, { useState } from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\n// import { name, random } from 'faker';\r\nimport gql from 'graphql-tag';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport PersonOutlinedIcon from '@material-ui/icons/PersonOutlined';\r\nimport { TextField, CircularProgress } from '@material-ui/core';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\nimport { showNotification } from '../App';\r\nimport { InfiniteAutocomplete } from './InfiniteAutocomplete';\r\nimport { client } from '..';\r\nimport { RenderInputParams } from '@material-ui/lab';\r\nimport { useDebouncedCallback } from 'use-debounce/lib';\r\nimport clsx from 'clsx';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: '200px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n iconSelected: {\r\n width: 17,\r\n height: 17,\r\n marginRight: 5,\r\n marginLeft: -2,\r\n },\r\n color: {\r\n width: 14,\r\n height: 14,\r\n flexShrink: 0,\r\n borderRadius: 3,\r\n marginRight: 8,\r\n marginTop: 2,\r\n },\r\n text: {\r\n flexGrow: 1,\r\n },\r\n close: {\r\n opacity: 0.6,\r\n width: 18,\r\n height: 18,\r\n },\r\n renderWrapper: {\r\n padding: '15px 0'\r\n },\r\n customRenderWrapper: {\r\n display: 'flex',\r\n margin: '0 -10px',\r\n width: '100%',\r\n '& > div': {\r\n padding: '0 10px',\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n fontWeight: 400,\r\n },\r\n '& .icon-wrapper': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .other': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .primary': {\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n letterSpacing: '0.00938em',\r\n },\r\n '& .secondary': {\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: '0.875rem',\r\n lineHeight: 1.43,\r\n letterSpacing: '0.01071em',\r\n }\r\n }\r\n }\r\n })\r\n);\r\n\r\ninterface ClientAndContactSelectorProps {\r\n multiple?: boolean;\r\n label?: string;\r\n name: string;\r\n // tslint:disable-next-line: no-any\r\n value?: IAutoCompleteItem | any; // value only available in single select\r\n onSelection?: (value: IAutoCompleteItem | IAutoCompleteItem[], name: string) => void;\r\n required?: boolean;\r\n id?: string;\r\n onBlur?: React.FocusEventHandler;\r\n className?: string;\r\n disablePortal?: boolean;\r\n includeNonPmsContacts: boolean;\r\n includePmsContacts: boolean;\r\n}\r\n\r\ninterface ClientAndContactSelectorState {\r\n hasNextPage: boolean;\r\n isNextPageLoading: boolean;\r\n offset: number;\r\n filter: string;\r\n // tslint:disable-next-line: no-any\r\n items: IAutoCompleteItem[];\r\n}\r\n\r\nexport const ClientAndContactSelector: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n const loadBlockLimit = 200;\r\n\r\n const [delayedonInputChange] = useDebouncedCallback(\r\n // function\r\n (event: React.ChangeEvent<{}>, value: string, reason: 'input' | 'reset' | 'clear') => {\r\n\r\n let isClear = false;\r\n let offset = 0;\r\n let filter = '';\r\n\r\n if (reason === 'input') {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isLoading: true\r\n };\r\n });\r\n \r\n filter = value;\r\n isClear = true;\r\n\r\n fetchData(filter, offset, isClear);\r\n }\r\n },\r\n // delay in ms\r\n 500\r\n );\r\n\r\n const [state, setState] = useState({\r\n hasNextPage: true,\r\n isNextPageLoading: false,\r\n offset: 0,\r\n filter: '',\r\n items: [],\r\n });\r\n\r\n // useEffect(() => {\r\n // fetchData(state.filter, 0, state.isNextPageLoading, state.hasNextPage, false); \r\n // // tslint:disable-next-line: align\r\n // }, []);\r\n\r\n // tslint:disable-next-line: no-any\r\n const loadNextPage = (...args: any) => { \r\n if (state.hasNextPage && state.isNextPageLoading) {\r\n fetchData(state.filter, state.offset, false);\r\n }\r\n };\r\n\r\n const fetchData = (filter: string, offset: number, isClear: boolean) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: true\r\n };\r\n });\r\n\r\n const userQueryParams: ClientQueryParams = {\r\n filter: filter,\r\n first: loadBlockLimit,\r\n offset: offset,\r\n includeIndividual: true,\r\n includeOrganisation: true,\r\n includeStaff: false,\r\n includeNonPmsContacts: props.includeNonPmsContacts,\r\n includePmsContacts: props.includePmsContacts\r\n };\r\n\r\n retrieveClientAndContactListData(\r\n userQueryParams,\r\n true, // this.state.isRefresh, -- Since we are updating and creating, we do not fetch cached data\r\n // tslint:disable-next-line: no-console\r\n (data) => onRetrieveList(data, filter, offset, isClear),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n isLoading: false\r\n };\r\n });\r\n }\r\n );\r\n };\r\n\r\n const onRetrieveList = (data: ClientAndContactListData, filter: string, offset: number, isClear: boolean) => {\r\n const clientAndContactData = data.clientAndContactList.clientAndContacts;\r\n const recordCount = data.clientAndContactList.recordCount;\r\n\r\n // tslint:disable-next-line: no-any\r\n let itemsList: IAutoCompleteItem[] = [];\r\n\r\n let items = state.items;\r\n\r\n if (!isClear) {\r\n itemsList = [...state.items];\r\n } else {\r\n items = [];\r\n }\r\n\r\n if (items && items.length === 0) {\r\n itemsList = clientAndContactData.map( (source: ClientAndContact) => ({value: source.guid, label: source.name}));\r\n } else {\r\n // tslint:disable-next-line: no-shadowed-variable\r\n for (const name of clientAndContactData) {\r\n // tslint:disable-next-line: no-any\r\n const isExists = items.filter((item: IAutoCompleteItem) => item.value.toLowerCase().includes(name.guid)).length;\r\n\r\n if (isExists === 0) {\r\n itemsList.push({\r\n label: name.name,\r\n value: name.guid,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n filter: filter,\r\n isNextPageLoading: false,\r\n items: itemsList,\r\n offset: offset + loadBlockLimit,\r\n hasNextPage: clientAndContactData.length !== 0 && (offset + loadBlockLimit) < recordCount,\r\n isLoading: false\r\n };\r\n });\r\n };\r\n\r\n const onSelection = (selection: IAutoCompleteItem, name: string) => {\r\n if (props.onSelection) {\r\n props.onSelection(selection, name);\r\n }\r\n };\r\n\r\n const onClose = (event: React.ChangeEvent<{}>) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n hasNextPage: true,\r\n filter: '',\r\n offset: 0,\r\n items: []\r\n };\r\n });\r\n };\r\n\r\n const onOpen = (event: React.ChangeEvent<{}>) => {\r\n fetchData(state.filter, 0, true);\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const getInputProps = (params: RenderInputParams, isLoading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n };\r\n\r\n return (\r\n
\r\n option.label}\r\n getOptionSelected={(option, value) => value.value === option.value}\r\n onInputChange={delayedonInputChange}\r\n onBlur={props.onBlur}\r\n renderOption={(option, { selected }) => {\r\n return (\r\n
\r\n
\r\n {option.isStaff ? : }\r\n
\r\n
\r\n
{option.label}
\r\n
{option.email}
\r\n
\r\n
\r\n );\r\n }}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport function retrieveClientAndContactListData(\r\n query: ClientQueryParams,\r\n refreshData: boolean,\r\n onSuccess: (data: ClientAndContactListData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void\r\n): void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: ClientAndContactsQuery,\r\n variables: {\r\n filter: query.filter,\r\n first: query.first,\r\n offset: query.offset,\r\n includeOrganisation: query.includeOrganisation,\r\n includeIndividual: query.includeIndividual,\r\n includeStaff: query.includeStaff,\r\n includePmsContacts: query.includePmsContacts,\r\n includeNonPmsContacts: query.includeNonPmsContacts\r\n },\r\n fetchPolicy: fetchPolicy,\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nexport interface ClientQueryParams {\r\n offset?: number; \r\n first?: number;\r\n filter?: string;\r\n includeOrganisation: boolean;\r\n includeIndividual: boolean;\r\n includeStaff: boolean;\r\n includePmsContacts: boolean | null;\r\n includeNonPmsContacts: boolean | null;\r\n}\r\n\r\nexport interface ClientAndContactListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n clientAndContactList: ClientAndContactList;\r\n}\r\n\r\nexport interface ClientAndContactList {\r\n recordCount: number;\r\n clientAndContacts: ClientAndContact[];\r\n}\r\n\r\nexport interface ClientAndContact {\r\n nameID: number;\r\n name: string;\r\n guid: string;\r\n}\r\n\r\nconst ClientAndContactsQuery = gql`\r\n query ClientAndContactList($offset: Int, $first: Int, $filter: String, \r\n $includeOrganisation: Boolean, $includeIndividual: Boolean, $includeStaff: Boolean,\r\n $includePmsContacts: Boolean,\r\n $includeNonPmsContacts: Boolean){\r\n clientAndContactList(\r\n offset:$offset, first: \r\n $first, filter: $filter, \r\n includeOrganisation: $includeOrganisation,\r\n includeIndividual: $includeIndividual,\r\n includeStaff: $includeStaff,\r\n includePmsContacts: $includePmsContacts,\r\n includeNonPmsContacts: $includeNonPmsContacts\r\n ){\r\n recordCount,\r\n clientAndContacts{\r\n nameID,\r\n name,\r\n guid\r\n }\r\n }\r\n }\r\n`;","import * as React from 'react';\r\nimport { IntlProvider, FormattedNumber } from 'react-intl';\r\n\r\nexport interface FormattedPercentageProps {\r\n value?: number;\r\n}\r\n\r\nexport class FormattedPercentage extends React.Component {\r\n // tslint:disable-next-line:no-any\r\n constructor(props: FormattedPercentageProps, context?: any) {\r\n super(props, context);\r\n }\r\n\r\n render() {\r\n return this.props.value !== undefined ? (\r\n \r\n \r\n \r\n )\r\n :
;\r\n }\r\n}","import * as React from 'react';\r\nimport { Loader } from 'semantic-ui-react';\r\n\r\ninterface LoaderProps {\r\n label?: string;\r\n size?: 'large' | 'medium' | 'small' | 'big' | 'huge' | 'massive';\r\n}\r\n\r\nexport class RvLoader extends React.Component {\r\n\r\n public render() {\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { Modal, Button } from 'semantic-ui-react';\r\n\r\ninterface ModalProps {\r\n trigger?: JSX.Element;\r\n buttonName?: string;\r\n content?: JSX.Element;\r\n actionButtons?: JSX.Element;\r\n header?: string;\r\n open?: boolean;\r\n size?: 'fullscreen' | 'large' | 'mini' | 'small' | 'tiny';\r\n centered?: boolean;\r\n}\r\n\r\nexport class RvModal extends React.Component {\r\n\r\n public render() {\r\n return (\r\n {this.props.buttonName} : undefined}\r\n centered={this.props.centered !== undefined ? this.props.centered : false}\r\n >\r\n {this.props.header}\r\n \r\n {this.props.content}\r\n \r\n \r\n {this.props.actionButtons}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { Icon, SemanticICONS } from 'semantic-ui-react';\r\nimport { IconSizeProp } from 'semantic-ui-react/dist/commonjs/elements/Icon/Icon';\r\n\r\ninterface IconProps {\r\n iconKey?: SemanticICONS; \r\n title?: string;\r\n size?: IconSizeProp;\r\n}\r\n\r\nexport class RvIcon extends React.Component {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","export enum CurrencyDisplayStyle {\r\n Default = 0, // same as Integer (with default currency symbol)\r\n Integer = 1, // zero decimal places (with default currency symbol)\r\n Decimal = 2, // 2 decimal places (with default currency symbol)\r\n Custom = 3\r\n}","import * as React from 'react';\r\nimport { Button, Icon, SemanticICONS } from 'semantic-ui-react';\r\nimport glamorous from 'glamorous';\r\nimport { PrimaryButton, IButtonProps, IconButton } from 'office-ui-fabric-react/lib/Button';\r\nimport { IContextualMenuProps } from 'office-ui-fabric-react/lib/components/ContextualMenu/ContextualMenu.types';\r\n\r\nexport interface ButtonProps {\r\n iconKey?: SemanticICONS;\r\n label?: string;\r\n onClick?: (event: React.MouseEvent, data: ButtonProps) => void;\r\n disabled?: boolean;\r\n loading?: boolean;\r\n error?: string;\r\n className?: string;\r\n linkTo?: string;\r\n}\r\n\r\nconst ButtonWrapDiv = glamorous.div ({\r\n [`& .${`icon`}`]: {\r\n margin: '0 !important',\r\n // display: 'flex',\r\n alignItems: 'center',\r\n width: 'auto'\r\n }\r\n});\r\n\r\nexport class RvButton extends React.Component {\r\n\r\n private button: Button | null;\r\n\r\n public focus() {\r\n if (this.button) {\r\n this.button.focus();\r\n }\r\n }\r\n\r\n public render() {\r\n\r\n return (\r\n \r\n this.button = item}\r\n >\r\n {this.props.iconKey ? : null}{this.props.label}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n/*\r\n* Fabric component\r\n*/\r\n\r\nconst ButtonsFabricWrapper = glamorous.div({\r\n [`& .${`ms-Button-icon`}`]: {\r\n height: 'auto',\r\n } \r\n});\r\n\r\nconst IconButtonWrapper = glamorous(IconButton)({\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n});\r\n\r\nexport enum RvButtonType {\r\n default = 0,\r\n icon = 1,\r\n split = 2,\r\n}\r\n\r\nexport interface RvButtonFabricProps extends IButtonProps {\r\n rvClassName?: string;\r\n title?: string;\r\n primary?: boolean; \r\n rvKey?: string; \r\n href?: string;\r\n target?: string;\r\n ariaDescription?: string;\r\n onClick?: () => void;\r\n rvbuttonType?: RvButtonType;\r\n rvIcon?: string;\r\n split?: boolean;\r\n text?: string;\r\n // style?: string[];\r\n rvMenuProps?: IContextualMenuProps;\r\n\r\n}\r\n\r\nexport class RvButtonFabric extends React.Component {\r\n\r\n public render(): JSX.Element {\r\n const { \r\n disabled, \r\n checked, \r\n rvKey, \r\n primary, \r\n title,\r\n href,\r\n target,\r\n ariaDescription,\r\n onClick,\r\n rvbuttonType,\r\n rvIcon,\r\n rvClassName,\r\n split,\r\n text,\r\n style,\r\n rvMenuProps\r\n } = this.props;\r\n switch (rvbuttonType) {\r\n case 1: \r\n return (\r\n \r\n \r\n \r\n );\r\n case 2: \r\n return (\r\n \r\n \r\n \r\n );\r\n default: \r\n return (\r\n \r\n \r\n {text}\r\n \r\n \r\n );\r\n }\r\n }\r\n}","export enum LabelStyle {\r\n Label0 = 1,\r\n Default = 2,\r\n Label1 = 3,\r\n Label2 = 4,\r\n Label3 = 5,\r\n Label4 = 6,\r\n Heading1 = 7,\r\n Heading2 = 8,\r\n Heading3 = 9,\r\n Heading4 = 10\r\n}\r\n","import * as React from 'react';\r\nimport { Alignment } from './Alignment';\r\nimport { DataDisplayProps } from './IDataDisplayProps';\r\nimport { RvLabel, LabelStyle } from '../Label/Label';\r\nimport '../../App.css';\r\nimport { DateTimeDisplayStyle, FormattedDateTime } from './FormattedDateTime';\r\nimport { Grid } from 'semantic-ui-react';\r\nimport glamorous from 'glamorous';\r\n\r\nconst LabelData = glamorous(Grid.Column)({\r\n textAlign: 'left'\r\n});\r\n\r\nconst ValueData = glamorous(Grid.Column)({\r\n textAlign: 'left',\r\n alignItems: 'center',\r\n});\r\n\r\nconst DateTimeDisplayWrapper = glamorous(Grid)({\r\n display: 'flex',\r\n flexFlow: 'column',\r\n});\r\n\r\nexport interface DateTimeDisplayProps extends DataDisplayProps {\r\n value?: Date;\r\n displayStyle?: DateTimeDisplayStyle;\r\n format?: string; // an optional date format string\r\n labelAlignment?: Alignment;\r\n valueAlignment?: Alignment;\r\n style?: LabelStyle;\r\n config?: MomentConfig;\r\n DisplayInUTC?: boolean;\r\n}\r\n\r\nexport enum MomentConfig {\r\n ShowOnlyDate,\r\n ShowDateWithMoment,\r\n ShowMomentOnly\r\n}\r\n\r\nexport class RvDateTimeDisplay extends React.Component {\r\n hiddenOnEmpty: boolean;\r\n isHidden: boolean;\r\n styleList: Array = [' ', ' ', 'decimal', ' '];\r\n\r\n // tslint:disable-next-line:no-any\r\n constructor(props: DateTimeDisplayProps, context?: any) {\r\n super(props, context);\r\n // default to true if not set\r\n this.hiddenOnEmpty = (this.props.hiddenOnEmpty == null ? true : this.props.hiddenOnEmpty);\r\n }\r\n\r\n public render() {\r\n this.isHidden = this.props.value == null && this.hiddenOnEmpty;\r\n if (this.isHidden) {\r\n return null;\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","import { Editor } from '@tinymce/tinymce-react';\r\nimport React from 'react';\r\nimport { EmailTemplateTypeEnum } from '../emailTemplatesConfiguration/EmailTemplateRespository';\r\nimport { streamingAIRequest } from './AiHelper';\r\nimport { UserFeature, UserFeatureEnum } from '../types/UserFeature';\r\n\r\ninterface ToolbarGroup {\r\n name?: string;\r\n items: string[];\r\n}\r\n\r\ninterface EditorProps {\r\n // tslint:disable-next-line: no-any\r\n value: string;\r\n onEditorChange?: (content: string) => void;\r\n disabled?: boolean;\r\n toolbar?: boolean | string | string[] | Array;\r\n menubar?: boolean | string;\r\n emailType?: EmailTemplateTypeEnum;\r\n disabledAI?: boolean;\r\n}\r\n\r\nexport const EditorWrapper: React.FC = props => {\r\n\r\n // tslint:disable-next-line: no-any\r\n const getMergeFields = () => {\r\n if (props.emailType) {\r\n switch (props.emailType) {\r\n case EmailTemplateTypeEnum.NEW_ENQUIRY_RESPONSE:\r\n case EmailTemplateTypeEnum.NEW_LEAD_ASSIGNED:\r\n case EmailTemplateTypeEnum.ENQUIRY_MENTIONS:\r\n case EmailTemplateTypeEnum.FOLLOW_UP_ENQUIRY_REMINDER:\r\n case EmailTemplateTypeEnum.FOLLOW_UP_ENQUIRY_OVER_DUE_REMINDER:\r\n case EmailTemplateTypeEnum.MEETING_BOOKING:\r\n case EmailTemplateTypeEnum.NEW_CLIENT:\r\n case EmailTemplateTypeEnum.EMAIL_RESPONSE:\r\n case EmailTemplateTypeEnum.NEW_LEAD:\r\n case EmailTemplateTypeEnum.NEW_MEETING_NOTIFICATION:\r\n case EmailTemplateTypeEnum.RecordCreatedConfirmation:\r\n case EmailTemplateTypeEnum.RecordCreationFailed:\r\n case EmailTemplateTypeEnum.UnassignedEnquiry:\r\n return enquiryMergedFields;\r\n case EmailTemplateTypeEnum.PHONE_MESSAGE:\r\n case EmailTemplateTypeEnum.TASK_ASSIGNED:\r\n case EmailTemplateTypeEnum.TASK_COMPLETED:\r\n case EmailTemplateTypeEnum.TaskMessage:\r\n case EmailTemplateTypeEnum.TASK_REMINDER:\r\n case EmailTemplateTypeEnum.TASK_OVER_DUE_REMINDER:\r\n return taskMergedFields;\r\n case EmailTemplateTypeEnum.NEW_USER_CREATED:\r\n return userRegistrationMergedFields;\r\n case EmailTemplateTypeEnum.PASSWORD_RESET:\r\n return resetPasswordMergedFields;\r\n case EmailTemplateTypeEnum.NEW_MATTER_DOCUMENT:\r\n return newMatterDocumentMergedFields;\r\n case EmailTemplateTypeEnum.NEW_MATTER_MESSAGE_SENT:\r\n return newMatterMessageMergedFields;\r\n case EmailTemplateTypeEnum.InstructMatter:\r\n return newInstructMatterMergedFields;\r\n case EmailTemplateTypeEnum.EmailSendFailureNotification:\r\n return emailSendFailureMergedFields;\r\n default: // EmailTemplateTypeEnum.MFA:\r\n return mFaMergedFields;\r\n }\r\n } else {\r\n return [];\r\n }\r\n };\r\n\r\n const getMergeFieldItems = () => {\r\n if (props.emailType) {\r\n const mergedFields = getMergeFields();\r\n let mergeItemdItemText = '';\r\n \r\n // tslint:disable-next-line: no-any\r\n mergedFields.forEach((field: any) => {\r\n mergeItemdItemText = mergeItemdItemText + ' ' + field.value;\r\n });\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log('Merged Field Items', mergeItemdItemText);\r\n\r\n return mergeItemdItemText;\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const getMergeFieldMenuItems = (editor: any) => {\r\n if (props.emailType) {\r\n const mergedFields = getMergeFields();\r\n\r\n // tslint:disable-next-line: no-any\r\n mergedFields.forEach((field: any) => {\r\n editor.ui.registry.addMenuItem(field.value, {\r\n text: field.text,\r\n onAction: function () {\r\n editor.insertContent(field.value);\r\n },\r\n }); \r\n });\r\n }\r\n };\r\n\r\n const hasArtificialIntelligence = UserFeature.HasAccess(UserFeatureEnum.hasArtificialIntelligence) && !props.disabledAI;\r\n\r\n const hasEmailTemplateAI = UserFeature.HasAccess(UserFeatureEnum.hasEmailTemplateAI) && !props.disabledAI;\r\n\r\n return (\r\n {\r\n if (props.onEditorChange) {\r\n props.onEditorChange(content);\r\n }\r\n }} \r\n />\r\n );\r\n};\r\n\r\n/*\r\nEnquiry Fields are available in the following templates.\r\n1.\tEnquiry Response Template\r\n2.\tEnquiry Assignment\r\n3.\tEnquiry Mention\r\n4.\tFollow Up Reminder\r\n5.\tFollow Up Overdue Reminder\r\n6.\tMeeting Booking Confirmation\r\n7.\tNew Client/ New Matter\r\n8.\tNew Enquiry Acknowledgement \r\n9.\tNew Enquiry Notification\r\n\r\n*/\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst enquiryMergedFields = [\r\n { text: 'All Day', value: '{isAllDay}' },\r\n { text: 'Application URL', value: '{applicationURL}' },\r\n { text: 'Area Of Law', value: '{areaOfLaw}' },\r\n { text: 'Assigned By', value: '{assignedBy}' },\r\n { text: 'Assigned To Email', value: '{assignedToEmail}' },\r\n { text: 'Assigned To', value: '{assignedTo}' },\r\n { text: 'Client Address', value: '{clientAddress}' },\r\n { text: 'Client Address Fomatted', value: '{clientAddressFormatted}' },\r\n { text: 'Client Date Of Birth', value: '{clientDateOfBirth}' },\r\n { text: 'Client Email', value: '{clientEmail}' },\r\n { text: 'Client First Name', value: '{clientFirstName}' },\r\n { text: 'Client Last Name', value: '{clientLastName}' },\r\n { text: 'Client Mobile', value: '{clientMobile}' },\r\n { text: 'Client Phone', value: '{clientPhone}' },\r\n { text: 'Client Title', value: '{clientTitle}' },\r\n { text: 'Conflict Check', value: '{conflictCheck}' },\r\n { text: 'Detailed Enquiry Notes', value: '{detailedEnquiryNotes}' },\r\n { text: 'Email', value: '{email}' },\r\n { text: 'Enquiry Created Date', value: '{createdDate}' },\r\n { text: 'Enquiry Location', value: '{location}' },\r\n { text: 'Enquiry Quality', value: '{enquiryQuality}' },\r\n { text: 'Enquiry Text', value: '{enquiryText}' },\r\n { text: 'Estimated Disbursements', value: '{estimatedDisbursements}' },\r\n { text: 'Estimated Fees', value: '{estimatedFees}' },\r\n { text: 'Firm Name', value: '{firmName}' },\r\n { text: 'Follow Up Notes', value: '{followUpNotes}' },\r\n { text: 'Gender', value: '{gender}' },\r\n { text: 'Given Name', value: '{firstName}' },\r\n { text: 'Identity Check', value: '{identityCheck}' },\r\n { text: 'Initial Enquiry Date', value: '{inquiryDate}' },\r\n { text: 'Internal Notes', value: '{internalnotes}' },\r\n { text: 'Last Name', value: '{lastName}' },\r\n { text: 'Likelihood to Proceed', value: '{likelihoodToProceed}' },\r\n { text: 'Marketing', value: '{marketing}' },\r\n { text: 'Meeting Created By Email', value: '{bookingCreatedByEmail}' },\r\n { text: 'Meeting Created By', value: '{bookingCreatedByName}' },\r\n { text: 'Meeting End Date', value: '{bookingEndDate}' },\r\n { text: 'Meeting Fee Applicable', value: '{feeApplicable}' },\r\n { text: 'Meeting Location', value: '{meetingLocation}' },\r\n { text: 'Meeting Notes', value: '{meetingNotes}' },\r\n { text: 'Meeting Staff Email', value: '{bookingStaffEmail}' },\r\n { text: 'Meeting Staff', value: '{bookingStaffName}' },\r\n { text: 'Meeting Start Date', value: '{bookingStartDate}' },\r\n { text: 'Meeting Location Timezone', value: '{meetingLocationTimezone}' },\r\n { text: 'Mobile', value: '{mobile}' },\r\n { text: 'Name', value: '{name}' },\r\n { text: 'Nature Of Enquiry', value: '{natureOfEnquiry}' },\r\n { text: 'No Conflict', value: '{noConflict}' },\r\n { text: 'Organisation', value: '{organisation}' },\r\n { text: 'Other Side Address', value: '{otherSideAddress}' },\r\n { text: 'Other Side AddressFormatted', value: '{otherSideAddressFormatted}' },\r\n { text: 'Other Side Birthdate', value: '{otherSideBirthdate}' },\r\n { text: 'Other Side Email', value: '{otherSideEmail}' },\r\n { text: 'Other Side Given Name', value: '{otherSideGivenName}' },\r\n { text: 'Other Side Mobile', value: '{otherSideMobile}' },\r\n { text: 'Other Side Notes', value: '{otherSideNotes}' },\r\n { text: 'Other Side Organisation', value: '{otherSideOrganisation}' },\r\n { text: 'Other Side Surname', value: '{otherSideSurname}' },\r\n { text: 'Other Side Telephone', value: '{otherSideTelephone}' },\r\n { text: 'Other Side Title', value: '{otherSideTitle}' },\r\n { text: 'Phone', value: '{phone}' },\r\n { text: 'Position', value: '{position}' },\r\n { text: 'Privacy', value: '{privacy}' },\r\n { text: 'Referrer Name', value: '{referrerName}' },\r\n { text: 'Second Client First Name', value: '{secondClientFirstName}' },\r\n { text: 'Second Client Last Name', value: '{secondClientLastName}' },\r\n { text: 'Second Client Email', value: '{secondClientEmail}' },\r\n { text: 'Second Client Phone', value: '{secondClientPhone}' },\r\n { text: 'Second Client Mobile', value: '{secondClientMobile}' },\r\n { text: 'Second Client Relationship to the Enquirer', value: '{secondClientRelationshipToEnquirer}' },\r\n { text: 'Second Client Birthdate', value: '{secondClientDateOfBirth}' },\r\n { text: 'Second Client Gender', value: '{secondClientGender}' },\r\n { text: 'Second Client Marketing Consent', value: '{secondClientMarketing}' },\r\n { text: 'Second Client Privacy Policy', value: '{secondClientPrivacy}' },\r\n { text: 'Second Client T & Cs Approved', value: '{secondClientTermsAndConditionsApproved}' },\r\n { text: 'Second Client Conflict Check', value: '{secondClientConflictCheck}' },\r\n { text: 'Second Client Identity Check', value: '{secondClientIdentityCheck}' },\r\n { text: 'Second Client No Conflict', value: '{secondClientNoConflict}' },\r\n { text: 'Second Client Address', value: '{secondClientAddress}' },\r\n { text: 'Second Client Address Formatted', value: '{secondClientAddressFormatted}' },\r\n { text: 'Second Client Title', value: '{secondClientTitle}' },\r\n { text: 'Source Notes', value: '{sourceNotes}' },\r\n { text: 'Source', value: '{source}' },\r\n { text: 'T & Cs Approved', value: '{termsAndConditionsApproved}' },\r\n { text: 'Title', value: '{title}' },\r\n { text: 'User Name', value: '{staffName}' }, \r\n { text: 'Risk Assessed', value: '{isRiskAssessed}' },\r\n { text: 'Risk Level', value: '{riskLevel}' },\r\n { text: 'Risk Notes', value: '{riskNotes}' }\r\n].sort(function(a, b) {\r\n return a.text.localeCompare(b.text);\r\n}); \r\n\r\n/*\r\nTask Fields are available in the following templates\r\n1.\tPhone Message\r\n2.\tTask Assignment\r\n3.\tTask Completed\r\n*/\r\nconst taskMergedFields = [\r\n { text: 'Application URL', value: '{applicationURL}' },\r\n { text: 'Area Of Law', value: '{areaOfLaw}' },\r\n { text: 'Assigned By', value: '{assignedBy}' },\r\n { text: 'Assigned To', value: '{assignedTo}' },\r\n { text: 'Assigned To Email', value: '{assignedToEmail}' },\r\n { text: 'Category', value: '{category}' },\r\n { text: 'Client', value: '{client}' },\r\n { text: 'Completion Date', value: '{completionDate}' },\r\n { text: 'Completion Notes', value: '{completionNotes}' },\r\n { text: 'Created Date', value: '{createdDate}' },\r\n { text: 'Description', value: '{description}' },\r\n { text: 'Due Date', value: '{dueDate}' },\r\n { text: 'Duration', value: '{duration}' },\r\n { text: 'Estimated Effort', value: '{estimatedEffort}' },\r\n { text: 'From Name', value: '{fromName}' }, \r\n { text: 'Matter', value: '{matter}' },\r\n { text: 'Message', value: '{message}' },\r\n { text: 'Message Sent By', value: '{messageSentBy}' },\r\n { text: 'Notes', value: '{notes}' },\r\n { text: 'Organisation', value: '{organisation}' },\r\n { text: 'Owner Email', value: '{ownerEmail}' },\r\n { text: 'Owner', value: '{ownerName}' }, \r\n { text: 'Phone Call', value: '{isPhoneCall}' },\r\n { text: 'Phone Number', value: '{phoneNumber}' },\r\n { text: 'Priority', value: '{priority}' }, \r\n { text: 'Returned Call', value: '{isReturnedCall}' },\r\n { text: 'Start Date', value: '{startDate}' },\r\n { text: 'Task Type', value: '{taskType}' },\r\n { text: 'Will Call again', value: '{isWillCallAgain}' }\r\n];\r\n\r\n/*\r\nUser Related Fields available in the following templates\r\n1.\tUser Registration\r\n*/\r\nconst userRegistrationMergedFields = [\r\n { text: 'Application URL', value: '{applicationURL}' },\r\n { text: 'Company Name', value: '{companyName}' },\r\n { text: 'Password', value: '{password}' },\r\n { text: 'Tenant ID', value: '{tenantId}' },\r\n { text: 'UserName', value: '{userName}' },\r\n { text: 'Verify Link', value: '{VerifyLink}' }\r\n];\r\n\r\n/* \r\n2.\tReset Password\r\n*/\r\nconst resetPasswordMergedFields = [\r\n { text: 'Password', value: '{password}' },\r\n { text: 'UserName', value: '{userName}' },\r\n { text: 'Verify Link', value: '{VerifyLink}' }\r\n];\r\n\r\n/* \r\n3.\tMulti Factor Authentication\r\n*/\r\nconst mFaMergedFields = [\r\n { text: 'MFA Code', value: '{Code}' },\r\n { text: 'Timeout in minutes', value: '{Timeout}' }\r\n];\r\n\r\n/* \r\nMatter Fields available in the following templates\r\n1.\tNew Matter Document\r\n*/\r\nconst newMatterDocumentMergedFields = [\r\n { text: 'Application URL', value: '{applicationURL}' },\r\n { text: 'Client', value: '{client}' },\r\n { text: 'Document Name', value: '{documentNames}' },\r\n { text: 'Matter File Number', value: '{fileNumber}' },\r\n { text: 'Matter Title', value: '{matterTitle}' },\r\n { text: 'Notes', value: '{notes}' },\r\n { text: 'Responsible', value: '{responsible}' },\r\n { text: 'Uploaded By Name', value: '{uploadedBy}' },\r\n];\r\n\r\n// New Message (New Matter Message)\r\nconst newMatterMessageMergedFields = [\r\n { text: 'Comment', value: '{comment}' },\r\n { text: 'Matter Id', value: '{matterId}' },\r\n { text: 'Matter File Number', value: '{fileNumber}' },\r\n { text: 'Matter Title', value: '{matterTitle}' },\r\n // tslint:disable-next-line: max-line-length\r\n { text: 'Message formatted as \"Message from {postedBy} regarding matter {matterTitle}. {comment}\"', value: '{message}' }, // Formatted as following. \"Message from {postedBy} regarding matter {matterTitle}. {comment}\" \r\n { text: 'Title Text', value: '{title}' }, // Pre-defined title value as following “New message available”\r\n { text: 'Message Text', value: '{type}' }, // Pre-defined value as following “message”\r\n { text: 'Posted By', value: '{username}' }\r\n];\r\n\r\n// New Instruct matter\r\nconst newInstructMatterMergedFields = [\r\n { text: 'Instruction', value: '{instruction}' },\r\n { text: 'Files', value: '{files}' },\r\n { text: 'Area Of Law', value: '{areaOfLaw}' },\r\n { text: 'Name', value: '{name}' },\r\n { text: 'Organisation', value: '{organization}' },\r\n { text: 'ClientName', value: '{clientName}' },\r\n { text: 'ClientContact', value: '{clientContact}' },\r\n { text: 'MatterTitle', value: '{matterTitle}' },\r\n { text: 'YourReference', value: '{yourReference}' },\r\n { text: 'OtherPartyType', value: '{otherPartyType}' },\r\n { text: 'OtherPartyName', value: '{otherPartyName}' },\r\n { text: 'OtherPartyAddress', value: '{otherPartyAddress}' },\r\n { text: 'OtherPartyContact', value: '{otherPartyContact}' },\r\n { text: 'OtherPartyPhone', value: '{otherPartyPhone}' },\r\n { text: 'OtherPartyEmail', value: '{otherPartyEmail}' },\r\n { text: 'DisputedAmount', value: '{disputedAmount}' }\r\n];\r\n\r\nconst emailSendFailureMergedFields = [\r\n { text: 'Email Template Name', value: '{emailTemplateName}' },\r\n { text: 'Send Failure Reason', value: '{sendFailureReason}' },\r\n { text: 'Send Failure Date/Time', value: '{sendFailureDateTime}' },\r\n { text: 'Product Area', value: '{productArea}' },\r\n { text: 'Sender Name', value: '{senderName}' },\r\n { text: 'Sender Email', value: '{senderEmail}' },\r\n { text: 'Recipient Email', value: '{recipientEmail}' },\r\n { text: 'Triggered By User', value: '{triggeredByUserName}' },\r\n { text: 'Is External', value: '{isExternal}' },\r\n { text: 'Area of Law', value: '{areaOfLaw}' },\r\n];","import { ColDef, Column, IAggFunc, ValueGetterParams } from '@ag-grid-community/core';\r\nimport moment from 'moment';\r\n// import moment from 'moment';\r\nimport { MatterTaskAction } from '../../matterSummary/cellRenderer/MatterTaskAction';\r\nimport { BoolRenderer, CurrencyRenderer, CurrencyRendererWithoutDecimal, DateRenderer, DateTimeRenderer, \r\n DurationRenderer, \r\n ImageRenderer, NumberRenderer, PercentageRenderer } from '../../matterSummary/MatterSummaryCellRenderer';\r\nimport { exposure, percentageEstimate } from '../../matterSummary/MatterSummaryColumns';\r\nimport {\r\n monthToDateBillableHours,\r\n monthToDateBudgetBilledVariance,\r\n monthToDateBudgetChargeableHours,\r\n monthToDateBudgetCollectionVariance,\r\n monthToDateBudgetNonChargeableHours,\r\n monthToDateBudgetProducedVariance,\r\n monthToDateNonBillableHours,\r\n weekToDateBillableHours,\r\n weekToDateBudgetBilledVariance,\r\n weekToDateBudgetChargeableHours,\r\n weekToDateBudgetCollectionVariance,\r\n weekToDateBudgetNonChargeableHours,\r\n weekToDateBudgetProducedVariance,\r\n weekToDateNonBillableHours,\r\n yearToDateBillableHours,\r\n yearToDateBudgetBilledVariance,\r\n yearToDateBudgetChargeableHours,\r\n yearToDateBudgetCollectionVariance,\r\n yearToDateBudgetNonChargeableHours,\r\n yearToDateBudgetProducedVariance,\r\n yearToDateNonBillableHours,\r\n monthToDateRealisation,\r\n yearToDateRealisation,\r\n fullFinancialYearBillableHoursBgt,\r\n fullFinancialYearNonBillableHoursBgt,\r\n yearToDateCollection,\r\n monthToDateCollection,\r\n previousMonthYearToDateBudgetBilledVariance,\r\n previousMonthYearToDateBudgetCollectionVariance,\r\n previousMonthYearToDateBudgetProducedVariance,\r\n previousMonthYearToDateBillableHours,\r\n previousMonthYearToDateNonBillableHours,\r\n previousMonthYearToDateBudgetChargeableHours,\r\n previousMonthYearToDateBudgetNonChargeableHours,\r\n previousMonthToMonthToDateBudgetBilledVariance,\r\n previousMonthToMonthToDateBudgetCollectionVariance,\r\n previousMonthToMonthToDateBudgetProducedVariance,\r\n previousMonthToMonthToDateBillableHours,\r\n previousMonthToMonthToDateNonBillableHours,\r\n previousMonthToMonthToDateBudgetChargeableHours,\r\n previousMonthToMonthToDateBudgetNonChargeableHours,\r\n percentageComparator,\r\n} from '../../staffBillingSummary/StaffBillingSummaryColumns';\r\nimport { StaffTaskAction } from '../../staffSummary/StaffTaskAction';\r\nimport { DataType } from '../DataDisplay/ValueFormatter';\r\n\r\nvar menuTabs = ['filterMenuTab', 'generalMenuTab', 'columnsMenuTab'];\r\nvar nonFilterMenuTabs = ['generalMenuTab', 'columnsMenuTab'];\r\n\r\nexport interface ColumnProperty extends ColDef {\r\n canSearch?: boolean;\r\n cardDisplay?: boolean; // Do not display on summary card or is already displayed\r\n format: number;\r\n // tslint:disable-next-line: no-any\r\n valueGetter?: string | ((params: ValueGetterParams) => any);\r\n isHideCustom?: boolean; // To display / hide column if it is not an admin user\r\n}\r\n\r\nexport interface SummaryViewColumnConfiguration {\r\n field: string;\r\n headerName: string;\r\n width: number;\r\n dataType: number;\r\n show: boolean;\r\n isLocked: boolean;\r\n sort: string;\r\n aggFunc?: string | IAggFunc;\r\n enableValue?: boolean;\r\n valueGetter?: string;\r\n // tslint:disable-next-line: no-any\r\n cellClass?: any;\r\n}\r\n\r\nexport function filterParamsOptions() {\r\n return {\r\n filterOptions: ['equals', 'notEqual', 'lessThan', 'lessThanOrEqual', 'greaterThan', 'greaterThanOrEqual', 'inRange'],\r\n // use inRangeInclusive: true for the range filter to include the selected \r\n // from and to dates. Setting it false would fetch only the inbetween dates\r\n inRangeInclusive: true, \r\n // tslint:disable-next-line: no-any\r\n comparator: (filterLocalDateAtMidnight: any, cellValue: any) => {\r\n var dateAsString = moment(cellValue).format('DD/MM/YYYY');\r\n var dateParts = dateAsString.split('/');\r\n var cellDate = new Date(Number(dateParts[2]), Number(dateParts[1]) - 1, Number(dateParts[0]));\r\n\r\n if (filterLocalDateAtMidnight.getTime() === cellDate.getTime()) {\r\n return 0;\r\n } else if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n \r\n }\r\n };\r\n}\r\n\r\n// converts our json view configuration to the coulumn layout used by ag-grid\r\nexport function ConvertViewConfigToLayout(layoutConfiguration: string, isInMemory: boolean) {\r\n return( ConvertColumnFromConfig(JSON.parse(layoutConfiguration), isInMemory));\r\n}\r\n\r\n// converts our the coulumn layout used by ag-grid to our view configuration\r\n// tslint:disable-next-line: no-any\r\nexport function ConvertViewLayoutToConfig(viewLayout: Column[]): string {\r\n var columnConfig = ConvertColumnsToConfig(viewLayout);\r\n return JSON.stringify(columnConfig);\r\n}\r\n\r\nexport function ConvertColumnFromConfig(columncfgs: Array, isInMemory: boolean): Array {\r\n var result = new Array();\r\n columncfgs.forEach(columncfg => {\r\n var filter = getFilterForDataType(columncfg.dataType);\r\n \r\n let showMenuTab = (columncfg.dataType !== DataType.ContextMenu || columncfg.dataType !== DataType.ContextMenuStaff) && isInMemory;\r\n let isDateFilter = columncfg.dataType === DataType.Date || DataType.DateTime;\r\n\r\n var config = {\r\n field: columncfg.field,\r\n headerName: columncfg.headerName,\r\n width: columncfg.width,\r\n format: columncfg.dataType,\r\n filter: filter ? filter : '',\r\n filterParams: isDateFilter ? filterParamsOptions() : null,\r\n hide: !columncfg.show,\r\n pinned: columncfg.isLocked ? 'left' : 'none',\r\n menuTabs: showMenuTab ? menuTabs : nonFilterMenuTabs,\r\n enableRowGroup: true,\r\n sort: columncfg.sort,\r\n tooltipField: columncfg.dataType === DataType.String ? columncfg.field : undefined,\r\n aggFunc: columncfg.aggFunc,\r\n enableValue: columncfg.enableValue,\r\n valueGetter: getValueGetter(columncfg.valueGetter),\r\n cellClass: columncfg.cellClass,\r\n comparator: columncfg.dataType === DataType.Percentage ? percentageComparator : undefined\r\n };\r\n \r\n applyCellRendererToColumn(config, columncfg.dataType);\r\n result.push(config);\r\n });\r\n return result;\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nfunction ConvertColumnsToConfig(columns: Column[]): SummaryViewColumnConfiguration[] {\r\n var result = new Array();\r\n // tslint:disable-next-line: no-any\r\n columns.forEach((column: Column | any) => {\r\n var colDef = column.getColDef();\r\n\r\n var columnCfg = {\r\n field: colDef.field ? colDef.field : '',\r\n headerName: colDef.headerName ? colDef.headerName : '',\r\n width: column.getActualWidth(),\r\n dataType: getDataTypeForColumn(colDef),\r\n show: column.isVisible() || column.isRowGroupActive(),\r\n isLocked: colDef.field === 'FileNumber',\r\n sort: column.getSort(),\r\n aggFunc: colDef.aggFunc,\r\n enableValue: colDef.enableValue,\r\n valueGetter: colDef.field,\r\n cellClass: colDef.cellClass,\r\n comparator: colDef.ccomparator\r\n };\r\n result.push(columnCfg);\r\n });\r\n return result;\r\n}\r\n\r\nexport function DefaultColumnConfig(columns: Array): Array {\r\n var result = new Array();\r\n columns.forEach(column => {\r\n var filter = getFilterForDataType(column.format);\r\n\r\n var isLocked = column.field === 'FileNumber';\r\n let showMenuTab = (column.format !== DataType.ContextMenu || column.format !== DataType.ContextMenuStaff );\r\n\r\n var colDef = {\r\n field: column.field ? column.field : '',\r\n headerName: column.headerName ? column.headerName : '',\r\n dataType: column.format,\r\n width: column.width ? column.width : 50,\r\n format: column.format,\r\n filter: filter ? filter : '',\r\n hide: column.hide,\r\n show: !column.hide,\r\n pinned: isLocked ? 'left' : 'none',\r\n isLocked: isLocked,\r\n menuTabs: showMenuTab ? menuTabs : nonFilterMenuTabs,\r\n enableRowGroup: true,\r\n sort: column.sort ? column.sort : '',\r\n tooltipField: column.format === DataType.String ? column.field : undefined,\r\n aggFunc: column.aggFunc,\r\n enableValue: column.enableValue,\r\n valueGetter: getValueGetter(column.field),\r\n cellClass: column.cellClass,\r\n comparator: column.format === DataType.Percentage ? percentageComparator : undefined\r\n // rowHeight: column.format === DataType.Image ? 50 : 40 ,\r\n };\r\n applyCellRendererToColumn(colDef, column.format);\r\n result.push(colDef);\r\n });\r\n return result; \r\n}\r\n\r\nfunction getDataTypeForColumn(column: ColDef): number {\r\n if (column.cellRendererFramework === DateTimeRenderer) {\r\n return DataType.DateTime;\r\n }\r\n if (column.cellRendererFramework === DateRenderer) {\r\n return DataType.Date;\r\n }\r\n if (column.cellRendererFramework === NumberRenderer) { // filter === 'number') {\r\n return DataType.Number;\r\n }\r\n if (column.cellRendererFramework === CurrencyRenderer) {\r\n return DataType.Currency;\r\n }\r\n if (column.cellRendererFramework === CurrencyRendererWithoutDecimal) {\r\n return DataType.CurrencyWithoutDecimals;\r\n }\r\n if (column.cellRendererFramework === BoolRenderer) {\r\n return DataType.Boolean;\r\n }\r\n if (column.cellRendererFramework === ImageRenderer) {\r\n return DataType.Image;\r\n }\r\n if (column.cellRendererFramework === PercentageRenderer) {\r\n return DataType.Percentage;\r\n }\r\n if (column.cellRendererFramework === MatterTaskAction) {\r\n return DataType.ContextMenu;\r\n }\r\n if (column.cellRendererFramework === StaffTaskAction) {\r\n return DataType.ContextMenuStaff;\r\n }\r\n if (column.cellRendererFramework === DurationRenderer) {\r\n return DataType.Duration;\r\n }\r\n if (column.filter === 'date') {\r\n return DataType.Date;\r\n }\r\n if (column.filter === 'dateTime') {\r\n return DataType.DateTime;\r\n }\r\n if (column.filter === 'image') {\r\n return DataType.Image;\r\n }\r\n if (column.filter === 'menu') {\r\n return DataType.ContextMenu;\r\n }\r\n if (column.filter === 'percentage') {\r\n return DataType.Percentage;\r\n }\r\n if (column.filter === 'longTextRenderer') {\r\n return DataType.LongText;\r\n }\r\n if (!column.cellRenderer) {\r\n return DataType.String;\r\n }\r\n return DataType.Boolean;\r\n}\r\n\r\nexport function getFilterForDataType(dataType: number): string | void {\r\n switch (dataType) {\r\n case DataType.Date:\r\n return 'agDateColumnFilter';\r\n case DataType.DateTime:\r\n return 'agDateColumnFilter';\r\n case DataType.Percentage:\r\n return 'percentage';\r\n case DataType.Number:\r\n return 'number';\r\n case DataType.Currency:\r\n return 'agNumberColumnFilter';\r\n case DataType.CurrencyWithoutDecimals:\r\n return 'agNumberColumnFilter';\r\n case DataType.Image:\r\n return 'image'; \r\n case DataType.Boolean:\r\n return 'boolean';\r\n case DataType.LongText:\r\n return 'text';\r\n case DataType.Duration:\r\n return 'duration';\r\n case DataType.ContextMenu:\r\n return 'menu';\r\n default:\r\n return 'text';\r\n }\r\n}\r\n\r\nexport function applyCellRendererToColumn(column: ColDef, dataType: number) {\r\n switch (dataType) {\r\n case DataType.DateTime:\r\n column.cellRendererFramework = DateTimeRenderer;\r\n break;\r\n case DataType.Date:\r\n column.cellRendererFramework = DateRenderer;\r\n break;\r\n case DataType.Number:\r\n column.cellRendererFramework = NumberRenderer;\r\n break;\r\n case DataType.Currency:\r\n column.cellRendererFramework = CurrencyRenderer;\r\n break;\r\n case DataType.CurrencyWithoutDecimals:\r\n column.cellRendererFramework = CurrencyRendererWithoutDecimal;\r\n break;\r\n case DataType.Boolean:\r\n column.cellRendererFramework = BoolRenderer;\r\n break;\r\n case DataType.Image:\r\n column.cellRendererFramework = ImageRenderer;\r\n break;\r\n case DataType.Percentage:\r\n column.cellRendererFramework = PercentageRenderer;\r\n break;\r\n case DataType.ContextMenu:\r\n column.cellRendererFramework = MatterTaskAction;\r\n break;\r\n case DataType.ContextMenuStaff:\r\n column.cellRendererFramework = StaffTaskAction;\r\n break;\r\n case DataType.Duration:\r\n column.cellRendererFramework = DurationRenderer;\r\n break;\r\n case DataType.String:\r\n default:\r\n return;\r\n }\r\n}\r\n\r\n// var filterParams = {\r\n// // tslint:disable-next-line: no-any\r\n// comparator: (filterLocalDateAtMidnight: any, cellValue: any) => {\r\n// var dateAsString = cellValue;\r\n// if (dateAsString == null) {\r\n// return -1;\r\n// }\r\n// const diff = moment(cellValue).diff(moment(filterLocalDateAtMidnight), 'days');\r\n// if (diff === 0) {\r\n// return 0;\r\n// }\r\n// if (diff < 0) {\r\n// return -1;\r\n// }\r\n// if (diff > 0) {\r\n// return 1;\r\n// } else {\r\n// return -1;\r\n// }\r\n// // if (moment(filterLocalDateAtMidnight).toDate().getDate() === moment(cellValue).format('DD-MMM-YYYY')) {\r\n// // return 0;\r\n// // }\r\n// // if (moment(cellValue).format('DD-MMM-YYYY') < moment(filterLocalDateAtMidnight).format('DD-MMM-YYYY')) {\r\n// // return -1;\r\n// // }\r\n// // if (moment(cellValue).format('DD-MMM-YYYY') > moment(filterLocalDateAtMidnight).format('DD-MMM-YYYY')) {\r\n// // return 1;\r\n// // } else {\r\n// // return -1;\r\n// // }\r\n// },\r\n// browserDatePicker: true,\r\n// };\r\n\r\nexport const getValueGetter = (valueGetter?: string) => {\r\n if (valueGetter === 'weekToDateBudgetBilledVariance') { // Staff Billing\r\n return weekToDateBudgetBilledVariance;\r\n } else if (valueGetter === 'weekToDateBudgetCollectionVariance') { // Staff Billing\r\n return weekToDateBudgetCollectionVariance;\r\n } else if (valueGetter === 'weekToDateBudgetProducedVariance') { // Staff Billing\r\n return weekToDateBudgetProducedVariance;\r\n } else if (valueGetter === 'monthToDateBudgetBilledVariance') { // Staff Billing\r\n return monthToDateBudgetBilledVariance;\r\n } else if (valueGetter === 'monthToDateBudgetCollectionVariance') { // Staff Billing\r\n return monthToDateBudgetCollectionVariance;\r\n } else if (valueGetter === 'monthToDateBudgetProducedVariance') { // Staff Billing\r\n return monthToDateBudgetProducedVariance;\r\n } else if (valueGetter === 'yearToDateBudgetBilledVariance') { // Staff Billing\r\n return yearToDateBudgetBilledVariance;\r\n } else if (valueGetter === 'yearToDateBudgetCollectionVariance') { // Staff Billing\r\n return yearToDateBudgetCollectionVariance;\r\n } else if (valueGetter === 'yearToDateBudgetProducedVariance') { // Staff Billing\r\n return yearToDateBudgetProducedVariance;\r\n } else if (valueGetter === 'weekToDateBillableHours') { // Staff Billing\r\n return weekToDateBillableHours;\r\n } else if (valueGetter === 'weekToDateNonBillableHours') { // Staff Billing\r\n return weekToDateNonBillableHours;\r\n } else if (valueGetter === 'weekToDateBudgetChargeableHours') { // Staff Billing\r\n return weekToDateBudgetChargeableHours;\r\n } else if (valueGetter === 'weekToDateBudgetNonChargeableHours') { // Staff Billing\r\n return weekToDateBudgetNonChargeableHours;\r\n } else if (valueGetter === 'monthToDateBillableHours') { // Staff Billing\r\n return monthToDateBillableHours;\r\n } else if (valueGetter === 'monthToDateNonBillableHours') { // Staff Billing\r\n return monthToDateNonBillableHours;\r\n } else if (valueGetter === 'monthToDateBudgetChargeableHours') { // Staff Billing\r\n return monthToDateBudgetChargeableHours;\r\n } else if (valueGetter === 'monthToDateBudgetNonChargeableHours') { // Staff Billing\r\n return monthToDateBudgetNonChargeableHours;\r\n } else if (valueGetter === 'yearToDateBillableHours') { // Staff Billing\r\n return yearToDateBillableHours;\r\n } else if (valueGetter === 'yearToDateNonBillableHours') { // Staff Billing\r\n return yearToDateNonBillableHours;\r\n } else if (valueGetter === 'yearToDateBudgetChargeableHours') { // Staff Billing\r\n return yearToDateBudgetChargeableHours;\r\n } else if (valueGetter === 'yearToDateBudgetNonChargeableHours') { // Staff Billing\r\n return yearToDateBudgetNonChargeableHours;\r\n } else if (valueGetter === 'fullFinancialYearBillableHoursBgt') { // Staff Billing\r\n return fullFinancialYearBillableHoursBgt;\r\n } else if (valueGetter === 'fullFinancialYearNonBillableHoursBgt') { // Staff Billing\r\n return fullFinancialYearNonBillableHoursBgt;\r\n } else if (valueGetter === 'percentageEstimate') { // Matter Summary\r\n return percentageEstimate;\r\n } else if (valueGetter === 'exposure') { // Matter Summary\r\n return exposure;\r\n } else if (valueGetter === 'monthToDateRealisation') { // Staff Billing\r\n return monthToDateRealisation;\r\n } else if (valueGetter === 'yearToDateRealisation') { // Staff Billing\r\n return yearToDateRealisation;\r\n } else if (valueGetter === 'yearToDateCollection') {\r\n return yearToDateCollection;\r\n } else if (valueGetter === 'monthToDateCollection') {\r\n return monthToDateCollection;\r\n } else if (valueGetter === 'previousMonthYearToDateBudgetBilledVariance') {\r\n return previousMonthYearToDateBudgetBilledVariance;\r\n } else if (valueGetter === 'previousMonthYearToDateBudgetCollectionVariance') {\r\n return previousMonthYearToDateBudgetCollectionVariance;\r\n } else if (valueGetter === 'previousMonthYearToDateBudgetProducedVariance') {\r\n return previousMonthYearToDateBudgetProducedVariance;\r\n } else if (valueGetter === 'previousMonthYearToDateBillableHours') {\r\n return previousMonthYearToDateBillableHours;\r\n } else if (valueGetter === 'previousMonthYearToDateNonBillableHours') {\r\n return previousMonthYearToDateNonBillableHours;\r\n } else if (valueGetter === 'previousMonthYearToDateBudgetChargeableHours') {\r\n return previousMonthYearToDateBudgetChargeableHours;\r\n } else if (valueGetter === 'previousMonthYearToDateBudgetNonChargeableHours') {\r\n return previousMonthYearToDateBudgetNonChargeableHours;\r\n } else if (valueGetter === 'previousMonthToMonthToDateBudgetBilledVariance') {\r\n return previousMonthToMonthToDateBudgetBilledVariance;\r\n } else if (valueGetter === 'previousMonthToMonthToDateBudgetCollectionVariance') {\r\n return previousMonthToMonthToDateBudgetCollectionVariance;\r\n } else if (valueGetter === 'previousMonthToMonthToDateBudgetProducedVariance') {\r\n return previousMonthToMonthToDateBudgetProducedVariance;\r\n } else if (valueGetter === 'previousMonthToMonthToDateBillableHours') {\r\n return previousMonthToMonthToDateBillableHours;\r\n } else if (valueGetter === 'previousMonthToMonthToDateNonBillableHours') {\r\n return previousMonthToMonthToDateNonBillableHours;\r\n } else if (valueGetter === 'previousMonthToMonthToDateBudgetChargeableHours') {\r\n return previousMonthToMonthToDateBudgetChargeableHours;\r\n } else if (valueGetter === 'previousMonthToMonthToDateBudgetNonChargeableHours') {\r\n return previousMonthToMonthToDateBudgetNonChargeableHours;\r\n } else {\r\n return undefined;\r\n }\r\n};","import React from 'react';\r\nimport { List } from '@material-ui/core';\r\nimport { Autocomplete, AutocompleteProps, FilterOptionsState } from '@material-ui/lab';\r\nimport InfiniteLoader from 'react-window-infinite-loader';\r\nimport { FixedSizeList, ListOnScrollProps, ListChildComponentProps } from 'react-window';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\n// import List from '@material-ui/core/List';\r\nimport { matchSorter } from 'match-sorter';\r\n\r\nlet scrollOffset = 0;\r\n\r\nconst withInfinite = ({\r\n hasNextPage,\r\n isNextPageLoading,\r\n items,\r\n loadNextPage,\r\n itemSize,\r\n height,\r\n reverseRender\r\n// tslint:disable-next-line: no-any\r\n}: InfiniteProps) => {\r\n const itemCount = hasNextPage ? items.length + 1 : items.length;\r\n // tslint:disable-next-line: no-empty\r\n const loadMoreItems = isNextPageLoading ? () => {} : loadNextPage;\r\n // tslint:disable-next-line: no-any\r\n const isItemLoaded = (index: any) => !hasNextPage || index < items.length;\r\n \r\n // tslint:disable-next-line: typedef no-any\r\n return React.forwardRef(function ListboxComponent(props: any, ref: any) {\r\n const { children, ...other } = props;\r\n // const theme = useTheme();\r\n // const smUp = useMediaQuery(theme.breakpoints.up('sm'));\r\n\r\n // const tempItemSize = smUp ? itemSize.small : itemSize.large;\r\n \r\n const outerElementType = React.useMemo(() => {\r\n // tslint:disable-next-line: no-any\r\n return React.forwardRef((props2: any, ref2: any) => (\r\n
\r\n
\r\n
\r\n ));\r\n // tslint:disable-next-line: align\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n \r\n // tslint:disable-next-line: no-any\r\n const renderRow = ({ data, index, style }: ListChildComponentProps) => {\r\n\r\n if (!data || index >= data.length) {\r\n return
;\r\n }\r\n\r\n // render the data in reverse or normal display;\r\n const individualData = reverseRender ? data[(data.length - 1) - index] : data[index];\r\n\r\n return (\r\n React.cloneElement(individualData, {\r\n style: {\r\n // overflow: 'hidden',\r\n // textOverflow: 'ellipsis',\r\n // whiteSpace: 'nowrap',\r\n // display: 'block',\r\n ...style\r\n }\r\n })\r\n );\r\n };\r\n \r\n return (\r\n \r\n {\r\n // tslint:disable-next-line: no-shadowed-variable\r\n ({ onItemsRendered, ref }) => (\r\n {\r\n scrollOffset = scroll.scrollOffset;\r\n }}\r\n initialScrollOffset={scrollOffset}\r\n itemData={children}\r\n height={height ? height : 250}\r\n width=\"100%\"\r\n outerElementType={outerElementType}\r\n innerElementType={List}\r\n itemSize={itemSize}\r\n itemCount={itemCount}\r\n onItemsRendered={onItemsRendered}\r\n ref={ref}\r\n >\r\n {renderRow}\r\n \r\n )}\r\n \r\n );\r\n });\r\n};\r\n\r\n// tslint:disable-next-line: no-any\r\nexport interface AutocompleteStandardProps extends AutocompleteProps {\r\n // id?: string;\r\n // className?: string;\r\n // style?: React.CSSProperties;\r\n isMultiple?: boolean;\r\n // label?: string;\r\n name: string;\r\n // disablePortal?: boolean;\r\n // disableCloseOnSelect?: boolean;\r\n // disableListWrap?: boolean;\r\n // // tslint:disable-next-line: no-any\r\n // classes?: any;\r\n // open?: boolean;\r\n // tslint:disable-next-line: no-any\r\n value?: T | any; // value only available in single select\r\n // // tslint:disable-next-line: no-any\r\n // renderOption?: (option: any, state: RenderOptionState) => React.ReactNode;\r\n // tslint:disable-next-line: no-any\r\n onSelection?: (value: IAutoCompleteItem | IAutoCompleteItem[] | any, name: string) => void;\r\n // tslint:disable-next-line: no-any\r\n onClose?: (event: React.ChangeEvent<{}>) => void;\r\n onOpen?: (event: React.ChangeEvent<{}>) => void;\r\n // onClose?: (event: React.ChangeEvent<{}>) => void;\r\n // // tslint:disable-next-line: no-any\r\n // renderTags?: (value: any, getTagProps: GetTagProps) => React.ReactNode;\r\n}\r\n\r\ninterface InfiniteProps {\r\n hasNextPage: boolean;\r\n isNextPageLoading: boolean;\r\n // tslint:disable-next-line: no-any\r\n items: any;\r\n // tslint:disable-next-line: no-any\r\n loadNextPage: any;\r\n itemSize: number;\r\n isLoading?: boolean;\r\n height?: number;\r\n reverseRender?: boolean;\r\n}\r\n\r\ninterface InfiniteAutocompleteProps extends InfiniteProps, AutocompleteStandardProps {\r\n disabledFilterOptions?: boolean;\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport const InfiniteAutocomplete: React.FC> = props => {\r\n\r\n // tslint:disable-next-line: no-any\r\n const ListboxComponent: any = withInfinite({\r\n hasNextPage: props.hasNextPage,\r\n isNextPageLoading: props.isNextPageLoading,\r\n items: props.items,\r\n loadNextPage: props.loadNextPage,\r\n itemSize: props.itemSize,\r\n isLoading: props.isLoading,\r\n height: props.height,\r\n reverseRender: props.reverseRender\r\n });\r\n\r\n // tslint:disable-next-line: no-any\r\n const handleChange = (event: React.ChangeEvent<{}>, value: any) => {\r\n // tslint:disable-next-line: no-console\r\n if (props.onSelection) {\r\n props.onSelection(value, props.name);\r\n }\r\n };\r\n\r\n const handleClose = (event: React.ChangeEvent<{}>) => {\r\n if (props.onClose) {\r\n props.onClose(event);\r\n }\r\n };\r\n\r\n const handleOpen = (event: React.ChangeEvent<{}>) => {\r\n\r\n scrollOffset = 0;\r\n\r\n if (props.onOpen) {\r\n props.onOpen(event);\r\n }\r\n };\r\n\r\n /* \r\n Why are we using match sorter?\r\n Consider a scenario where the records from DB returns – “Amanda Louise Heather”\r\n AutoComplete component can't search by 1st word and last word. It doesn't have that capacity. \r\n It will work for \"Louise Heather\" or \"Amanda Louise\" But not \"Amanda Heather\". This is an issue.\r\n Using matchSorter, we can search on any text in label. (in memory)\r\n */\r\n // tslint:disable-next-line: no-any\r\n const filterOptions = (options: any, filterOptionsState: FilterOptionsState) => {\r\n // tslint:disable-next-line: no-console\r\n if (props.disabledFilterOptions) {\r\n return props.items;\r\n } else if (filterOptionsState && filterOptionsState.inputValue && filterOptionsState.inputValue.length > 0) {\r\n const terms = filterOptionsState.inputValue.split(' ');\r\n if (!terms) {\r\n return null;\r\n }\r\n // reduceRight will mean sorting is done by score for the _first_ entered word.\r\n return terms.reduceRight(\r\n (results, term) => matchSorter(results, term, {keys: ['label']}), options);\r\n\r\n // return matchSorter(options, filterOptionsState.inputValue.trim(), {keys: ['label']}); // 3 = CONTAINS. Default is match\r\n } else {\r\n return props.items;\r\n } \r\n };\r\n\r\n return (\r\n <>\r\n {\r\n props.isMultiple ?\r\n (\r\n \r\n )\r\n :\r\n (\r\n filterOptions(options, filterOptionsState)}\r\n onChange={handleChange}\r\n onClose={handleClose}\r\n onOpen={handleOpen}\r\n loading={props.isLoading} \r\n // renderOption={props.renderOption}\r\n />\r\n )\r\n }\r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\n// import { name, random } from 'faker';\r\nimport gql from 'graphql-tag';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport PersonOutlinedIcon from '@material-ui/icons/PersonOutlined';\r\nimport { TextField, CircularProgress } from '@material-ui/core';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\nimport { showNotification } from '../App';\r\nimport { InfiniteAutocomplete } from './InfiniteAutocomplete';\r\nimport { client } from '..';\r\nimport { RenderInputParams } from '@material-ui/lab';\r\nimport { useDebouncedCallback } from 'use-debounce/lib';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: '200px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n iconSelected: {\r\n width: 17,\r\n height: 17,\r\n marginRight: 5,\r\n marginLeft: -2,\r\n },\r\n color: {\r\n width: 14,\r\n height: 14,\r\n flexShrink: 0,\r\n borderRadius: 3,\r\n marginRight: 8,\r\n marginTop: 2,\r\n },\r\n text: {\r\n flexGrow: 1,\r\n },\r\n close: {\r\n opacity: 0.6,\r\n width: 18,\r\n height: 18,\r\n },\r\n renderWrapper: {\r\n padding: '15px 0'\r\n },\r\n customRenderWrapper: {\r\n display: 'flex',\r\n margin: '0 -10px',\r\n width: '100%',\r\n '& > div': {\r\n padding: '0 10px',\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n fontWeight: 400,\r\n },\r\n '& .icon-wrapper': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .other': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .primary': {\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n letterSpacing: '0.00938em',\r\n },\r\n '& .secondary': {\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: '0.875rem',\r\n lineHeight: 1.43,\r\n letterSpacing: '0.01071em',\r\n },\r\n '& .third': {\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: '0.675rem',\r\n lineHeight: 1.43,\r\n letterSpacing: '0.01071em',\r\n fontWeight: 600\r\n }\r\n }\r\n }\r\n })\r\n);\r\n\r\ninterface UserAutocompleteSelectorProps {\r\n isStaffOnly?: boolean;\r\n multiple?: boolean;\r\n isExternal?: boolean;\r\n label?: string;\r\n name: string;\r\n required?: boolean;\r\n // tslint:disable-next-line: no-any\r\n value?: IAutoCompleteItem | any; // value only available in single select\r\n onSelection?: (value: IAutoCompleteItem | IAutoCompleteItem[], name: string) => void;\r\n id?: string;\r\n visible?: {\r\n role: boolean;\r\n };\r\n error?: boolean;\r\n disablePortal?: boolean;\r\n className?: string;\r\n helperText?: React.ReactNode;\r\n onBlur?: React.FocusEventHandler;\r\n isAuthorized?: boolean;\r\n}\r\n\r\ninterface UserAutocompleteSelectorState {\r\n hasNextPage: boolean;\r\n isNextPageLoading: boolean;\r\n offset: number;\r\n filter: string;\r\n // tslint:disable-next-line: no-any\r\n items: any;\r\n}\r\n\r\nexport const UserAutocompleteSelector: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n const loadBlockLimit = 20;\r\n \r\n const [state, setState] = useState({\r\n hasNextPage: true,\r\n isNextPageLoading: false,\r\n offset: 0,\r\n filter: '',\r\n items: [],\r\n });\r\n\r\n const [delayedonInputChange] = useDebouncedCallback(\r\n // function\r\n (event: React.ChangeEvent<{}>, value: string, reason: 'input' | 'reset' | 'clear') => {\r\n\r\n let isClear = false;\r\n let offset = 0;\r\n let filter = '';\r\n\r\n if (reason === 'input') {\r\n filter = value;\r\n isClear = true;\r\n\r\n fetchData(filter, offset, isClear);\r\n }\r\n },\r\n // delay in ms\r\n 500\r\n );\r\n \r\n const fetchData = (filter: string, offset: number, isClear: boolean) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: true\r\n };\r\n });\r\n\r\n const userQueryParams: UserQueryParams = {\r\n filter: filter,\r\n first: loadBlockLimit,\r\n offset: offset,\r\n isStaff: props.isStaffOnly !== undefined ? props.isStaffOnly : undefined,\r\n isExternal: props.isExternal !== undefined ? props.isExternal : undefined,\r\n isAuthorized: props.isAuthorized\r\n };\r\n\r\n retrieveUserListData(\r\n userQueryParams,\r\n false, // this.state.isRefresh, -- Since we are updating and creating, we do not fetch cached data\r\n // tslint:disable-next-line: no-console\r\n (data) => onRetrieveUserList(data, filter, offset, isClear),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n };\r\n });\r\n }\r\n );\r\n };\r\n\r\n const onRetrieveUserList = (data: UserListData, filter: string, offset: number, isClear: boolean) => {\r\n\r\n const userData = data.administrator.users.user;\r\n const recordCount = data.administrator.users.recordCount;\r\n\r\n // tslint:disable-next-line: no-any\r\n let itemsList: any = [];\r\n\r\n let items = state.items;\r\n\r\n if (!isClear) {\r\n itemsList = [...state.items];\r\n } else {\r\n items = [];\r\n }\r\n\r\n if (items.length === 0) {\r\n itemsList = userData.map( (source: User) => ({\r\n value: source.userID, \r\n label: source.isStaff ? source.staffName : source.friendlyName,\r\n email: source.email,\r\n roleName: source.roleName\r\n }));\r\n } else {\r\n for (const user of userData) {\r\n // tslint:disable-next-line: no-any\r\n const isExists = items.filter((item: any) => item.email.toLowerCase().includes(user.email)).length;\r\n\r\n if (isExists === 0) {\r\n itemsList.push({\r\n label: user.isStaff ? user.staffName : user.friendlyName,\r\n value: user.userID,\r\n isStaff: user.isStaff,\r\n email: user.email,\r\n roleName: user.roleName\r\n });\r\n }\r\n }\r\n }\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n filter: filter,\r\n isNextPageLoading: false,\r\n items: itemsList,\r\n offset: offset + loadBlockLimit,\r\n hasNextPage: userData.length !== 0 && (offset + loadBlockLimit) < recordCount,\r\n };\r\n });\r\n\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const loadNextPage = (...args: any) => {\r\n \r\n if (state.hasNextPage && !state.isNextPageLoading) {\r\n fetchData(state.filter, state.offset, false);\r\n }\r\n };\r\n\r\n const onClose = (event: React.ChangeEvent<{}>) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n hasNextPage: true,\r\n filter: '',\r\n offset: 0,\r\n items: []\r\n };\r\n });\r\n };\r\n\r\n const onOpen = (event: React.ChangeEvent<{}>) => {\r\n \r\n fetchData(state.filter, 0, true);\r\n };\r\n\r\n const onSelection = (selection: IAutoCompleteItem, name: string) => {\r\n\r\n if (props.onSelection) {\r\n props.onSelection(selection, name);\r\n }\r\n };\r\n\r\n const getInputProps = (params: RenderInputParams, isLoading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n };\r\n\r\n return (\r\n
\r\n option.label}\r\n getOptionSelected={(option, value) => value.value === option.value}\r\n onInputChange={delayedonInputChange}\r\n onBlur={props.onBlur}\r\n renderOption={(option, { selected }) => {\r\n return (\r\n
\r\n
\r\n {option.isStaff ? : }\r\n
\r\n
\r\n
{option.label}
\r\n
{option.email}
\r\n {!!props.visible && props.visible!.role && (\r\n
{option.roleName}
\r\n )}\r\n
\r\n
\r\n );\r\n }}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport function retrieveUserListData(\r\n query: UserQueryParams,\r\n refreshData: boolean,\r\n onSuccess: (data: UserListData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void\r\n): void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: UserListQuery,\r\n variables: {\r\n filter: query.filter,\r\n first: query.first,\r\n offset: query.offset,\r\n isStaff: query.isStaff,\r\n isExternal: query.isExternal,\r\n isAuthorized: query.isAuthorized\r\n },\r\n fetchPolicy: fetchPolicy\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nexport interface UserQueryParams {\r\n offset?: number; \r\n first?: number;\r\n filter?: string;\r\n isStaff?: boolean | null;\r\n isExternal?: boolean;\r\n isAuthorized?: boolean;\r\n}\r\n\r\nexport interface UserListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n administrator: Administrator;\r\n}\r\n\r\nexport interface Administrator {\r\n users: UserList; \r\n}\r\n\r\nexport interface UserList {\r\n recordCount: number;\r\n user: User[];\r\n}\r\n\r\nexport interface User {\r\n userID: string;\r\n email: string;\r\n friendlyName: string;\r\n roleName: boolean;\r\n isStaff: boolean;\r\n staffName: string;\r\n isExternal: boolean;\r\n hasTasks: boolean;\r\n assistantCount: number;\r\n}\r\n\r\nconst UserListQuery = gql`\r\n query userQuery($offset: Int, $first: Int, $filter: String, $isStaff: Boolean, $isExternal: Boolean, $isAuthorized: Boolean){\r\n administrator{\r\n users(offset:$offset, first:$first, filter:$filter, isStaff: $isStaff, isExternal: $isExternal, isAuthorized: $isAuthorized){\r\n recordCount,\r\n user{\r\n userID,\r\n email,\r\n friendlyName,\r\n roleName\r\n isStaff,\r\n staffName,\r\n isExternal,\r\n hasTasks,\r\n assistantCount\r\n }\r\n }\r\n }\r\n }\r\n`;","import React from 'react';\r\nimport Loadable from 'react-loadable';\r\nimport { FeatureLayoutConfigurationProps } from '../featureConfigurationLayout/FeatureLayoutConfigurationPage';\r\nimport { UploadDocumentDialogProps } from '../matterSummary/dialogs/UploadDocumentDialog';\r\n\r\nexport const WriteOffOnSummaryDrilldownPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"WriteOffOnSummaryDrilldownPage\" */ '../writeOffOnSummaryDrilldown/WriteOffOnSummaryDrilldownPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.WriteOffOnSummaryDrilldownPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const NotesSummaryDrilldownPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NotesSummaryDrilldownPage\" */ '../notesSummaryDrilldown/NotesSummaryDrilldownPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.NotesSummaryDrilldownPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const NotesSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NotesSummaryPage\" */ '../notesSummary/NotesSummaryPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.NotesSummaryPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const ClientDocumentsPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ClientDocumentsPage\" */ '../clientDocuments/ClientDocumentsPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.ClientDocumentsPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const MatterColumnSecurityConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterColumnSecurityConfigurationPage\" */ '../matterColumnSecurityConfiguration/MatterColumnSecurityConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.MatterColumnSecurityConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const RoleSecurityConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"RoleSecurityConfigurationPage\" */ '../roleSecurityConfiguration/RoleSecurityConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.RoleSecurityConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const TimesheetResourceCenterPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TimesheetResourceCenterPage\" */ '../timesheetResourceCenter/TimesheetResourceCenterPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.TimesheetResourceCenterPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const TaskResourceCenterPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TaskResourceCenterPage\" */ '../taskCrmResourceCenter/TaskResourceCenterPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.TaskResourceCenterPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const CrmResourceCenterPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"CrmResourceCenterPage\" */ '../resourceCenter/CrmResourceCenterPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.CrmResourceCenterPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const AcuityResourceCenterPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"AcuityResourceCenterPage\" */ '../resourceCenter/AcuityResourceCenterPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.AcuityResourceCenterPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const MattersResourceCenterPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MattersResourceCenterPage\" */ '../resourceCenter/MattersResourceCenterPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.MattersResourceCenterPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const GeneralMaterialConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"GeneralMaterialConfigurationPage\" */ '../generalMaterialConfiguration/GeneralMaterialConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.GeneralMaterialConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const Home = Loadable({\r\n loader: () => import (/* webpackChunkName: \"Home\" */ '../home/Home'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any typedef\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.Home;\r\n return ;\r\n }\r\n});\r\n\r\nexport const ChartComponents = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ChartComponents\" */ '../home/ChartComponents'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any typedef\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.ChartComponents;\r\n return ;\r\n }\r\n});\r\n\r\nexport const TaskSummaryDrilldownPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TaskSummaryDrilldownPage\" */ '../taskSummaryDrilldown/TaskSummaryDrilldownPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.TaskSummaryDrilldownPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const EventsAndCampaignsAttendeePage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"EventsAndCampaignsAttendeePage\" */ '../eventsAndCampaignsAttendee/EventsAndCampaignsAttendeePage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.EventsAndCampaignsAttendeePage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const UserDashboardActivityListPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserDashboardActivityListPage\" */ '../userDashboardActivityList/UserDashboardActivityListPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.UserDashboardActivityListPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const UserOutlookAddinUsagePage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserOutlookAddinUsagePage\" */ '../userOutlookAddinUsage/UserOutlookAddinUsagePage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.UserOutlookAddinUsagePage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const EventsAndCampaignsPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"EventsAndCampaignsPage\" */ '../eventsAndCampaigns/EventsAndCampaignsPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.EventsAndCampaignsPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const BrandConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"BrandConfigurationPage\" */ '../brandConfiguration/BrandConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.BrandConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const ClientDashboardPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TaskDashboardPage\" */ '../clientDashboard/ClientDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any typedef\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.ClientDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const TaskDashboardPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TaskDashboardPage\" */ '../taskDashboard/TaskDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any typedef\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.TaskDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const FeeEarnerDashboardPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"FeeEarnerDashboardPage\" */ '../feeEarnerDashboard/FeeEarnerDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.FeeEarnerDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const Dashboard = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterSummary\" */ '../Dashboard'),\r\n loading: () => null\r\n});\r\n \r\nexport const MatterSummary = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterSummary\" */ '../matterSummary/MatterSummaryPageX'),\r\n loading: () => null\r\n});\r\n\r\nexport const MatterSummaryDrillDown = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterSummary\" */ '../matterSummaryDrillDown/MatterSummaryDrillDownPage'),\r\n loading: () => null\r\n});\r\n\r\n// export const MatterManagement = Loadable({\r\n// loader: () => import (/* webpackChunkName: \"MatterManagement\" */ '../matterManagement/MatterManagementPage'),\r\n// loading: () => null\r\n// });\r\n \r\nexport const MatterDetails = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterDetails\" */ '../matterDetails/MatterDetails'),\r\n loading: () => null\r\n});\r\n \r\nexport const ClientAndContactDetails = Loadable({\r\n loader: () => import(/* webpackChunkName: \"ClientAndContactDetails\" */ '../ClientAndContactDetails/ClientAndContactDetails'),\r\n loading: () => null\r\n});\r\n \r\nexport const Redirect = Loadable({\r\n loader: () => import(/* webpackChunkName: \"Redirect\" */ './Redirect'),\r\n loading: () => null\r\n });\r\n \r\nexport const RvPrint = Loadable({\r\n loader: () => import(/* webpackChunkName: \"Print\" */ './Print'),\r\n loading: () => null\r\n });\r\n \r\nexport const RvPrint2 = Loadable({\r\n loader: () => import(/* webpackChunkName: \"Print2\" */ './Print2'),\r\n loading: () => null\r\n });\r\n \r\nexport const Logout = Loadable({\r\n loader: () => import(/* webpackChunkName: \"Logout\" */ './Logout'),\r\n loading: () => null\r\n });\r\n \r\nexport const RvDashboardOld = Loadable({\r\n loader: () => import(/* webpackChunkName: \"DashboardPage\" */ '../Dashboard/DashboardPageOld'),\r\n loading: () => null\r\n });\r\n \r\nexport const Settings = Loadable({\r\n loader: () => import(/* webpackChunkName: \"Settings\" */ '../Settings'),\r\n loading: () => null\r\n });\r\n\r\nexport const MatterSummaryView = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"MatterSummaryView\" */ '../matterSummary/MatterSummaryView'),\r\n loading: () => null\r\n });\r\n\r\nexport const MatterSummaryListView = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"MatterSummaryListView\" */ '../matterSummary/MatterSummaryListView'),\r\n loading: () => null\r\n });\r\n\r\nexport const MatterSummaryCardView = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"MatterSummaryCardView\" */ '../matterSummary/MatterSummaryCardView'),\r\n loading: () => null\r\n }); \r\n\r\nexport const LeapProvisioning = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"LeapProvisioning\" */ './Leap/LeapProvisioning'),\r\n loading: () => null\r\n}); \r\n\r\nexport const LeapSignIn = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"LeapSignIn\" */ './Leap/LeapSignIn'),\r\n loading: () => null\r\n}); \r\n\r\nexport const LeapAccessResetSignIn = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"LeapAccessResetSignIn\" */ './Leap/LeapAccessResetSignIn'),\r\n loading: () => null\r\n}); \r\n\r\nexport const LeapAccessReset = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"LeapAccessReset\" */ './Leap/LeapAccessReset'),\r\n loading: () => null\r\n}); \r\n\r\nexport const TimeslipPage = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"LeapAccessReset\" */ '../timeslip/TimeslipPage'),\r\n loading: () => null\r\n}); \r\n\r\nexport const LeapProvisioningInProgress = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"LeapSignIn\" */ './Leap/LeapProvisioningInProgress'),\r\n loading: () => null\r\n}); \r\n\r\nexport const VerifyNewUser = Loadable({\r\n loader: () =>\r\n import (/* webpackChunkName: \"VerifyNewUser\" */ './VerifyNewUser'),\r\n loading: () => null\r\n}); \r\n \r\nexport const Unauthorised = Loadable({\r\n loader: () => import (/* webpackChunkName: \"Unauthorised\" */ '../Unauthorised'),\r\n loading: () => null\r\n});\r\n\r\nexport const AutoSignIn = Loadable({\r\n loader: () => import (/* webpackChunkName: \"AutoSignIn\" */ '../infrastructure/AutoSignIn'),\r\n loading: () => null\r\n});\r\n\r\nexport const ExternalEnquiry = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ExternalEnquiry\" */ '../addIn/ExternalEnquiry'),\r\n loading: () => null\r\n});\r\n\r\nexport const UserDashboard = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserDashboard\" */ '../userDashboard/UserDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: React.FC = loaded.UserDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const RvAdminDashboard = Loadable({\r\n loader: () => import (/* webpackChunkName: \"RvAdminDashboard\" */ '../Dashboard/AdminDashboard'),\r\n loading: () => null\r\n});\r\n\r\nexport const MessageActivityPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MessageActivityPage\" */ '../Dashboard/messageActivty/MessageActivityPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const RoleSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"RoleSummaryPage\" */ '../Dashboard/roleSummary/RoleSummaryPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const TimesheetActivityPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TimesheetActivityPage\" */ '../Dashboard/timesheetActivity/TimesheetActivityPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const UserListPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserListPage\" */ '../Dashboard/userList/UserListPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const TimelinesChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TimelinesChartPage\" */ '../Dashboard/timesheetActivity/TimelinesChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const MatterAccessChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterAccessChartPage\" */ '../Dashboard/matterAccess/MatterAccessChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const UserAIActivityChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserAIActivityChartPage\" */ '../Dashboard/userAIActivity/UserAIActivityChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const UserAIActivitytPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserAIActivityChartPage\" */ '../Dashboard/userAIActivity/UserAIActivityPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const EmailSendFailureChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"EmailSendFailureChartPage\" */ '../Dashboard/emailSendFailure/EmailSendFailureChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const EmailSendFailurePage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"EmailSendFailurePage\" */ '../Dashboard/emailSendFailure/EmailSendFailurePage'),\r\n loading: () => null\r\n});\r\n\r\nexport const MatterAccessPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterAccessPage\" */ '../Dashboard/matterAccess/MatterAccessPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const NameSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NameSummaryPage\" */ '../nameSummary/NameSummaryPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const StaffSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"StaffSummaryPage\" */ '../staffSummary/StaffSummaryPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const ReportsPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ReportsPage\" */ '../reports/ReportsPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const ReportsCatalogPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ReportsCatalogPage\" */ '../reportsCatalog/ReportsCatalogPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const ReportInformation = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ReportInformation\" */ '../reports/ReportInformation'),\r\n loading: () => null\r\n});\r\n\r\nexport const ReportViewer = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ReportViewer\" */ '../reports/ReportViewer'),\r\n loading: () => null\r\n});\r\n\r\nexport const ReportCatalogInformation = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ReportCatalogInformation\" */ '../reportsCatalog/ReportCatalogInformation'),\r\n loading: () => null\r\n});\r\n\r\nexport const TimesheetPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TimesheetPage\" */ '../timesheet/TimesheetPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const LawyerDashboardPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LawyerDashboardPage\" */ '../lawyerDashboard/LawyerDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.LawyerDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const FeatureLayoutConfigurationPage: React.ComponentType = Loadable({\r\n loader: () => import (/* webpackChunkName: \"FeatureLayoutConfigurationPage\" */ '../featureConfigurationLayout/FeatureLayoutConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.FeatureLayoutConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const ConfigurationDashboardPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ConfigurationDashboardPage\" */ '../configurationDashboard/ConfigurationDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.ConfigurationDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const FeatureLicenceConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"FeatureLicenceConfigurationPage\" */ '../featureLicenceConfiguration/FeatureLicenceConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.FeatureLicenceConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const FeatureAccessConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"FeatureAccessConfigurationPage\" */ '../featureAccessConfiguration/FeatureAccessConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.FeatureAccessConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const LeadsDashboardPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LeadsDashboardPage\" */ '../leadsDashboard/LeadsDashboardPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.LeadsDashboardPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const MatterManagementPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MatterManagementPage\" */ '../matterManagement/MatterManagementPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.MatterManagementPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const EnquirySummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"EnquirySummaryPage\" */ '../enquirySummary/EnquirySummaryPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.EnquirySummaryPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const LeadsDetailPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LeadsDetailPage\" */ '../leadsDetail/LeadsDetailPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.LeadsDetailPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const LookupConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LookupConfigurationPage\" */ '../lookupConfiguration/LookupConfigurationPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const MarketingListAccessPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NameAccessPage\" */ '../Dashboard/marketingListAccess/MarketingListAccessPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const MarketingListAccessChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NameAccessChartPage\" */ '../Dashboard/marketingListAccess/MarketingListAccessChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const NameAccessPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NameAccessPage\" */ '../Dashboard/nameAccess/NameAccessPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const NameAccessChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"NameAccessChartPage\" */ '../Dashboard/nameAccess/NameAccessChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const LoginActivityChartPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LoginActivityChartPage\" */ '../Dashboard/loginAcitivity/LoginActivityChartPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const DashboardAccessPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"DashboardAccessPage\" */ '../Dashboard/dashboardAccess/DashboardAccessPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.DashboardAccessPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const OutlookAddinUsagePage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"OutlookAddinUsagePage\" */ '../Dashboard/outlookAddinUsage/OutlookAddinUsagePage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.OutlookAddinUsagePage;\r\n return ;\r\n }\r\n});\r\n\r\n\r\nexport const LoginActivityPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LoginActivityPage\" */ '../Dashboard/loginAcitivity/LoginActivityPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const TasksSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TasksSummaryPage\" */ '../tasksSummary/TasksSummaryPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.TasksSummaryPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const SplashScreenConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"SplashScreenConfigurationPage\" */ '../splashScreenConfiguration/SplashScreenConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.SplashScreenConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const EmailTemplatesConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"EmailTemplatesConfigurationPage\" */ '../emailTemplatesConfiguration/EmailTemplatesConfigurationPage'),\r\n loading: () => null\r\n});\r\n\r\nexport const HelpConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"HelpConfigurationPage\" */ '../helpConfiguration/HelpConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.HelpConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const ReferrersPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"ReferrersPage\" */ '../referrers/ReferrersPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.ReferrersPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const MailingListPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"MailingListPage\" */ '../MailingList/MailingListPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.MailingListPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const GeneralMaterialPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"GeneralMaterialPage\" */ '../GeneralMaterial/GeneralMaterialPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.GeneralMaterialPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const UploadDocumentDialog: React.ComponentType = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UploadDocumentDialog\" */ '../matterSummary/dialogs/UploadDocumentDialog'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.UploadDocumentDialog;\r\n return ;\r\n }\r\n});\r\n\r\nexport const UserConfigurationPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"UserConfigurationPage\" */ '../userConfigurationPage/UserConfigurationPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.UserConfigurationPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const CreateEnquiryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"CreateEnquiryPage\" */ '../addIn/CreateEnquiryPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.CreateEnquiryPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const InvoiceSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"InvoiceSummaryPage\" */ '../invoiceSummary/InvoiceSummaryPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.InvoiceSummaryPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const TimesheetDrilldownPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"TimesheetDrilldownPage\" */ '../timesheetDrilldown/TimesheetDrilldownPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.TimesheetDrilldownPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const StaffBillingSummaryPage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"StaffBillingSummaryPage\" */ '../staffBillingSummary/StaffBillingSummaryPage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.StaffBillingSummaryPage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const LearnMorePage = Loadable({\r\n loader: () => import (/* webpackChunkName: \"LearnMorePage\" */ '../learnMore/LearnMorePage'),\r\n loading: () => null,\r\n // tslint:disable-next-line: typedef no-any\r\n render(loaded: any, props: any) {\r\n // tslint:disable-next-line: no-any\r\n let Component: any = loaded.LearnMorePage;\r\n return ;\r\n }\r\n});\r\n\r\nexport const PreloadComponents = () => { \r\n RvPrint.preload();\r\n RvPrint2.preload();\r\n // Dashboard.preload();\r\n // RvDashboardOld.preload();\r\n Settings.preload(); \r\n Logout.preload();\r\n MatterDetails.preload();\r\n MatterSummary.preload();\r\n MatterSummaryView.preload();\r\n MatterSummaryListView.preload();\r\n MatterSummaryCardView.preload();\r\n ChartComponents.preload();\r\n};\r\n\r\nexport const PreloadMatterSummary = () => {\r\n MatterDetails.preload();\r\n MatterSummary.preload();\r\n MatterSummaryView.preload();\r\n MatterSummaryListView.preload();\r\n MatterSummaryCardView.preload();\r\n ChartComponents.preload();\r\n};","import React from 'react';\r\nimport NumberFormat from 'react-number-format';\r\nimport { TextField, Tooltip } from '@material-ui/core';\r\n\r\n// tslint:disable-next-line\r\nexport const CurrencyInput = (props: any) => {\r\n return (\r\n props.input.onChange(value)}\r\n // onValueChange={({ formattedValue }) =>\r\n // props.input.onChange(formattedValue)}\r\n onValueChange={(values) => \r\n props.input.onChange(values.floatValue)\r\n }\r\n isAllowed={ values => {\r\n if (props.maxValue !== undefined) {\r\n const { formattedValue, floatValue } = values;\r\n if (floatValue == null) {\r\n return formattedValue === '';\r\n } else {\r\n return (floatValue <= props.maxValue);\r\n }\r\n } else {\r\n return true;\r\n }\r\n }}\r\n />\r\n );\r\n};\r\n\r\n// tslint:disable-next-line\r\nexport const CurrencyInput2 = (props: any) => {\r\n\r\n const meta = props.meta;\r\n\r\n return (\r\n props.input.onChange(value)}\r\n // onValueChange={({ formattedValue }) =>\r\n // props.input.onChange(formattedValue)}\r\n onValueChange={(values) => {\r\n props.input.onChange(values.floatValue);\r\n if (props.onChangeValue) {\r\n props.onChangeValue(values.floatValue);\r\n }\r\n }}\r\n isAllowed={ values => {\r\n if (props.maxValue !== undefined) {\r\n const { formattedValue, floatValue } = values;\r\n if (floatValue == null) {\r\n return formattedValue === '';\r\n } else {\r\n return (floatValue <= props.maxValue);\r\n }\r\n } else {\r\n return true;\r\n }\r\n }}\r\n />\r\n );\r\n};\r\n\r\n// tslint:disable-next-line\r\nexport const CurrencyInputWithTooltip = (props: any) => {\r\n\r\n const meta = props.meta;\r\n\r\n const title = props.title;\r\n\r\n return (\r\n \r\n );\r\n};","import { debounce } from 'lodash';\r\nimport MuiDownshift, { IDownShiftItem } from 'mui-downshift';\r\nimport * as React from 'react';\r\nimport { client } from '..';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { ListItem, ListItemIcon, ListItemText } from '@material-ui/core';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport PersonOutlinedIcon from '@material-ui/icons/PersonOutlined';\r\nimport glamorous from 'glamorous';\r\n\r\n// tslint:disable-next-line: no-any\r\nconst ListItemIconWrapper = glamorous(ListItemIcon)<{theme?: any}> ((props) => ({\r\n minWidth: 'auto !important',\r\n marginRight: '10px !important'\r\n}));\r\n\r\n// Interfaced to be used with Intinite scrolling control. \r\ninterface GroupProperties {\r\n startIndex: number;\r\n stopIndex: number;\r\n}\r\n\r\ninterface RowIndexProperties {\r\n index: number;\r\n}\r\n\r\ninterface DownShiftProperties {\r\n // tslint:disable-next-line: no-any\r\n downshiftProps: any;\r\n}\r\n\r\nexport interface UserQueryParams {\r\n offset?: number; \r\n first?: number;\r\n filter?: string;\r\n isStaff?: boolean;\r\n isExternal?: boolean;\r\n isAuthorized?: boolean;\r\n}\r\n\r\nexport interface UserListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n administrator: Administrator;\r\n}\r\n\r\nexport interface Administrator {\r\n users: UserList; \r\n}\r\n\r\nexport interface UserList {\r\n recordCount: number;\r\n user: User[];\r\n}\r\n\r\nexport interface User {\r\n userID: string;\r\n email: string;\r\n friendlyName: string;\r\n roleName: boolean;\r\n isStaff: boolean;\r\n staffName: string;\r\n isExternal: boolean;\r\n}\r\n\r\n// Find a better way to do this\r\nenum StateChangeTypes {\r\n unknown = '__autocomplete_unknown__', // 0\r\n mouseUp = '__autocomplete_mouseup__', // 1\r\n itemMouseEnter = '__autocomplete_item_mouseenter__', // 2\r\n keyDownArrowUp = '__autocomplete_keydown_arrow_up__', // 3\r\n keyDownArrowDown = '__autocomplete_keydown_arrow_down__', // 4\r\n keyDownEscape = '__autocomplete_keydown_escape__', // 5\r\n keyDownEnter = '__autocomplete_keydown_enter__', // 6\r\n clickItem = '__autocomplete_click_item__', // 7\r\n blurInput = '__autocomplete_blur_input__', // 8\r\n changeInput = '__autocomplete_change_input__', // 9\r\n keyDownSpaceButton = '__autocomplete_keydown_space_button__', // 10\r\n clickButton = '__autocomplete_click_button__', // 11\r\n blurButton = '__autocomplete_blur_button__', // 12\r\n controlledPropUpdatedSelectedItem = '__autocomplete_controlled_prop_updated_selected_item__', // 13\r\n touchEnd = '__autocomplete_touchend__', // 14\r\n}\r\n\r\ninterface UserSelectorProps {\r\n onSelection?: (selection: IDownShiftItem, name: string) => void;\r\n // tslint:disable-next-line: no-any\r\n items?: any;\r\n placeholder?: string;\r\n required?: boolean;\r\n label?: string;\r\n name?: string;\r\n value?: string;\r\n displayLabel?: string;\r\n isGuidAsValue?: boolean;\r\n isStaffOnly?: boolean;\r\n disable?: boolean;\r\n isExternal?: boolean;\r\n isAuthorized?: boolean; // To get Active licensed users\r\n}\r\n\r\ninterface UserSelectorState {\r\n selectedCode?: string;\r\n selectedLabel?: string;\r\n loading: boolean;\r\n // tslint:disable-next-line: no-any\r\n selectedItem?: any;\r\n}\r\n\r\nconst loadBlockLimit: number = 30;\r\n\r\nexport default class UserSelector extends React.Component {\r\n // tslint:disable-next-line: no-any\r\n public list: any = [];\r\n public rowCount: number = 0;\r\n public offset: number = 0;\r\n public filter: string = '';\r\n\r\n constructor(props: UserSelectorProps, state?: UserSelectorState) {\r\n super(props, state);\r\n\r\n // if (this.props.value === undefined || this.props.value === null) {\r\n this.FetchData = this.FetchData.bind(this);\r\n // }\r\n \r\n this.loadMoreRows = this.loadMoreRows.bind(this);\r\n this.onDataRetrieved = this.onDataRetrieved.bind(this);\r\n this.clearData = this.clearData.bind(this);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleStateChange = debounce(this.handleStateChange.bind(this), 500);\r\n this.getInputProps = this.getInputProps.bind(this);\r\n\r\n this.state = {\r\n loading: false\r\n };\r\n }\r\n\r\n public UNSAFE_componentWillReceiveProps(nextProps: UserSelectorProps) {\r\n if (this.props.value !== nextProps.value && nextProps.value === '') { \r\n const selectedItem = { value: '', label: '' };\r\n this.setState({\r\n selectedItem\r\n }); \r\n }\r\n }\r\n\r\n public componentWillMount() {\r\n if (this.props.value !== undefined && this.props.displayLabel !== undefined\r\n && this.props.value !== null && this.props.displayLabel !== null) {\r\n const selectedItem = { value: this.props.value, label: this.props.displayLabel };\r\n\r\n if (this.props.displayLabel.length > 0 && this.props.value.length > 0) {\r\n this.setState({\r\n selectedItem\r\n });\r\n }\r\n }\r\n }\r\n\r\n public componentDidUpdate(prevProps: UserSelectorProps) {\r\n if (prevProps.value !== this.props.value || prevProps.displayLabel !== this.props.displayLabel) {\r\n if (this.props.value && this.props.displayLabel) {\r\n\r\n const selectedItem = { value: this.props.value, label: this.props.displayLabel };\r\n\r\n if (this.props.displayLabel.length > 0 && this.props.value.length > 0) {\r\n this.setState({\r\n selectedItem\r\n });\r\n }\r\n } else if (this.props.isStaffOnly \r\n && this.props.value === '' \r\n && (this.props.displayLabel === '' || this.props.displayLabel === undefined) \r\n ) { \r\n const selectedItem = { value: '', label: '' };\r\n\r\n this.setState({\r\n selectedItem\r\n });\r\n }\r\n } else {\r\n if (this.props.value && this.props.displayLabel && this.state.selectedItem === undefined) {\r\n\r\n const selectedItem = { value: this.props.value, label: this.props.displayLabel };\r\n\r\n if (this.props.displayLabel.length > 0 && this.props.value.length > 0) {\r\n this.setState({\r\n selectedItem\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n item && (\r\n \r\n \r\n {item.isStaff ? : }\r\n \r\n \r\n \r\n {item.email}\r\n
\r\n
\r\n {item.roleName}\r\n
\r\n \r\n )}\r\n />\r\n \r\n )}\r\n // tslint:disable-next-line:jsx-no-lambda\r\n getInfiniteLoaderProps={({ downshiftProps }: DownShiftProperties) => ({\r\n isRowLoaded: ({ index }: RowIndexProperties) => {\r\n // tslint:disable-next-line:no-console\r\n // console.log(\"isRowLoaded, Index - \" + index + \" And \" + !!this.list[index]);\r\n return !!this.list[index];\r\n },\r\n loadMoreRows: this.state.loading\r\n // tslint:disable-next-line:no-console\r\n ? () => {/*console.log(\"MuiDownshift - Data is still loading\")*/ }\r\n : ({ startIndex, stopIndex }: GroupProperties) => {\r\n // If this is not set, then the rows will jump up to the last highlight on each data load\r\n downshiftProps.setHighlightedIndex(null);\r\n\r\n // Fetch records\r\n return (this.loadMoreRows(startIndex, stopIndex));\r\n },\r\n rowCount: this.rowCount,\r\n threshold: 20, // Threshold at which to pre-fetch data \r\n })}\r\n selectedItem={this.getSelectedItem()}\r\n \r\n />\r\n
\r\n );\r\n } \r\n\r\n private getSelectedItem() {\r\n if (this.state.selectedItem !== undefined && this.state.selectedItem !== null) {\r\n if (this.state.selectedItem.value === undefined) {\r\n return null;\r\n }\r\n return this.state.selectedItem;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private handleStateChange = (changes: any) => {\r\n // Need improvements\r\n let userQueryParams: UserQueryParams = {};\r\n\r\n // Any changes with typing involved \r\n if ((changes.type !== undefined && (changes.type === StateChangeTypes.changeInput || changes.type === 9))\r\n || (\r\n changes.isOpen !== undefined && changes.isOpen === false && changes.inputValue !== undefined && changes.inputValue === '' &&\r\n (changes.type === StateChangeTypes.mouseUp || changes.type === 1)\r\n ) // This will clear the filter on mouse up without selecting a value on a filter and refetch the records\r\n || (\r\n changes.isOpen !== undefined && changes.isOpen === true && changes.inputValue === undefined &&\r\n (changes.type === StateChangeTypes.unknown || changes.type === 0)\r\n ) // When user selects an input and clicks the clear button. \r\n ) {\r\n\r\n this.setState({\r\n loading: true\r\n });\r\n\r\n if (changes.inputValue !== undefined && changes.inputValue.length > 0) {\r\n // Filter search\r\n this.clearData();\r\n\r\n this.filter = changes.inputValue;\r\n\r\n userQueryParams = {\r\n filter: this.filter,\r\n first: loadBlockLimit,\r\n offset: this.offset,\r\n isStaff: this.props.isStaffOnly ? this.props.isStaffOnly : undefined,\r\n isExternal: this.props.isExternal === undefined ? undefined : this.props.isExternal,\r\n isAuthorized: this.props.isAuthorized === undefined ? undefined : this.props.isAuthorized\r\n };\r\n } else {\r\n // Clear data\r\n this.clearData();\r\n this.filter = '';\r\n\r\n userQueryParams = {\r\n filter: this.filter,\r\n first: loadBlockLimit,\r\n offset: this.offset,\r\n isStaff: this.props.isStaffOnly ? this.props.isStaffOnly : undefined,\r\n isExternal: this.props.isExternal === undefined ? undefined : this.props.isExternal, \r\n isAuthorized: this.props.isAuthorized === undefined ? undefined : this.props.isAuthorized\r\n };\r\n }\r\n\r\n this.FetchData(userQueryParams, true);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private handleChange = (name: string) => (event: any) => {\r\n const item: IDownShiftItem = { ...event };\r\n const selected = { value: item!.value, label: item!.label };\r\n\r\n this.setState({\r\n selectedCode: item!.value,\r\n selectedLabel: item!.label,\r\n // tslint:disable-next-line:object-literal-sort-keys\r\n selectedItem: selected // This is required if we are setting a default value\r\n });\r\n\r\n if (this.props.onSelection) {\r\n this.props.onSelection(item, name);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private getInputProps(): any {\r\n return ({\r\n /* ...this.props, */\r\n label: this.props.label,\r\n name: this.props.name,\r\n // tslint:disable\r\n onChange: (event: any) => {\r\n },\r\n placeholder: this.props.placeholder,\r\n required: this.props.required,\r\n disabled: this.props.disable ? this.props.disable : false\r\n })\r\n }\r\n\r\n private loadMoreRows(startIndex: number, stopIndex: number) {\r\n if (!this.state.loading) {\r\n this.setState({\r\n loading: true\r\n });\r\n }\r\n\r\n const userQueryParams: UserQueryParams = {\r\n filter: this.filter,\r\n first: loadBlockLimit,\r\n offset: this.offset,\r\n isStaff: this.props.isStaffOnly ? this.props.isStaffOnly : undefined,\r\n isExternal: this.props.isExternal === undefined ? undefined : this.props.isExternal,\r\n isAuthorized: this.props.isAuthorized === undefined ? undefined : this.props.isAuthorized\r\n };\r\n\r\n return this.FetchData(userQueryParams, false);\r\n }\r\n\r\n private FetchData(userQueryParams: UserQueryParams, isSearch: boolean) {\r\n // tslint:disable-next-line:no-console\r\n // console.log(\"FetchData\");\r\n\r\n return fetchUserData(userQueryParams,\r\n false,\r\n // tslint:disable-next-line:no-unused-expression\r\n (data) => this.onDataRetrieved(data, isSearch),\r\n (reason: any): (void) => {\r\n // tslint:disable-next-line:no-console\r\n console.log('Error while fetchUserData. Reason - ' + reason);\r\n\r\n if (this.state.loading) {\r\n this.setState({\r\n loading: false\r\n })\r\n }\r\n });\r\n }\r\n\r\n private onDataRetrieved(data: UserListData, isSearch: boolean) {\r\n const userData = data.administrator.users.user;\r\n\r\n // Set the Total Record count for the search\r\n this.rowCount = data.administrator.users.recordCount;\r\n // Set the offset for the next searcg \r\n this.offset = this.offset + loadBlockLimit;\r\n\r\n if (this.list === []) {\r\n // Id is not used here, because we are saving the Account Name into the Client DB in OP\r\n this.list = userData.map((user: User) => {\r\n return ({\r\n // label: this.props.isStaffOnly ? user.friendlyName : user.friendlyName + ' | Role - ' + user.roleName,\r\n label: user.isStaff ? user.staffName : user.friendlyName,\r\n value: this.props.isGuidAsValue? user.userID : user.email,\r\n isStaff: user.isStaff,\r\n email: user.email,\r\n roleName: user.roleName,\r\n isExternal: user.isExternal\r\n });\r\n });\r\n }\r\n else {\r\n for (const user of userData) {\r\n const isExists = this.list.filter((item: any) => item.value.toLowerCase().includes(user.email)).length;\r\n\r\n if (isExists === 0) {\r\n this.list.push({\r\n // label: this.props.isStaffOnly ? user.friendlyName : user.friendlyName + ' | Role - ' + user.roleName,\r\n label: user.isStaff ? user.staffName : user.friendlyName,\r\n value: this.props.isGuidAsValue? user.userID : user.email,\r\n isStaff: user.isStaff,\r\n email: user.email,\r\n roleName: user.roleName,\r\n isExternal: user.isExternal\r\n });\r\n }\r\n }\r\n }\r\n\r\n this.setState({\r\n loading: false\r\n });\r\n\r\n return this.list;\r\n }\r\n\r\n private clearData() {\r\n this.offset = 0;\r\n this.filter = \"\";\r\n this.list = [];\r\n }\r\n}\r\n\r\nexport function fetchUserData(query: UserQueryParams,\r\n refreshData: boolean,\r\n onSuccess: (data: UserListData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void)\r\n : void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client.query({\r\n query: UserListData,\r\n variables: {\r\n filter: query.filter,\r\n first: query.first,\r\n offset: query.offset,\r\n isStaff: query.isStaff,\r\n isExternal: query.isExternal,\r\n isAuthorized: query.isAuthorized\r\n },\r\n fetchPolicy: fetchPolicy\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any; }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nconst UserListData = gql`\r\nquery userQuery($offset: Int, $first: Int, $filter: String, $isStaff: Boolean, $isExternal: Boolean, $isAuthorized: Boolean){\r\n administrator{\r\n users(offset:$offset, first:$first, filter:$filter, isStaff: $isStaff, isExternal: $isExternal, isAuthorized: $isAuthorized){\r\n recordCount,\r\n user{\r\n userID,\r\n email,\r\n friendlyName,\r\n roleName,\r\n isStaff,\r\n staffName,\r\n isExternal\r\n }\r\n }\r\n }\r\n}`;","import React, { useState } from 'react';\r\nimport { makeStyles, Theme, createStyles, withStyles } from '@material-ui/core/styles';\r\n// import { name, random } from 'faker';\r\nimport gql from 'graphql-tag';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport PersonOutlinedIcon from '@material-ui/icons/PersonOutlined';\r\nimport { TextField, CircularProgress, Tooltip } from '@material-ui/core';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\nimport { showNotification } from '../App';\r\nimport { InfiniteAutocomplete } from './InfiniteAutocomplete';\r\nimport { client } from '..';\r\nimport { RenderInputParams } from '@material-ui/lab';\r\nimport { useDebouncedCallback } from 'use-debounce/lib';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: '200px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n iconSelected: {\r\n width: 17,\r\n height: 17,\r\n marginRight: 5,\r\n marginLeft: -2,\r\n },\r\n color: {\r\n width: 14,\r\n height: 14,\r\n flexShrink: 0,\r\n borderRadius: 3,\r\n marginRight: 8,\r\n marginTop: 2,\r\n },\r\n text: {\r\n flexGrow: 1,\r\n },\r\n close: {\r\n opacity: 0.6,\r\n width: 18,\r\n height: 18,\r\n },\r\n renderWrapper: {\r\n padding: '15px 0'\r\n },\r\n customRenderWrapper: {\r\n display: 'flex',\r\n margin: '0 -10px',\r\n width: '100%',\r\n '& > div': {\r\n padding: '0 10px',\r\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\r\n fontWeight: 400,\r\n },\r\n '& .icon-wrapper': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .other': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .primary': {\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n letterSpacing: '0.00938em',\r\n },\r\n '& .secondary': {\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontSize: '0.875rem',\r\n lineHeight: 1.43,\r\n letterSpacing: '0.01071em',\r\n }\r\n }\r\n }\r\n })\r\n);\r\n\r\ninterface ClientAutoCompleteSelectorProps {\r\n multiple?: boolean;\r\n label?: string;\r\n name: string;\r\n // tslint:disable-next-line: no-any\r\n value?: IAutoCompleteItem | any; // value only available in single select\r\n onSelection?: (value: IAutoCompleteItem | IAutoCompleteItem[], name: string) => void;\r\n required?: boolean;\r\n id?: string;\r\n textLimit?: {\r\n label?: number;\r\n email?: number;\r\n };\r\n error?: boolean;\r\n helperText?: string;\r\n onBlur?: React.FocusEventHandler;\r\n}\r\n\r\ninterface ClientAutoCompleteSelectorState {\r\n hasNextPage: boolean;\r\n isNextPageLoading: boolean;\r\n offset: number;\r\n filter: string;\r\n // tslint:disable-next-line: no-any\r\n items: IAutoCompleteItem[];\r\n}\r\n\r\nexport const ClientAutoCompleteSelector: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n const loadBlockLimit = 20;\r\n\r\n const [delayedonInputChange] = useDebouncedCallback(\r\n // function\r\n (event: React.ChangeEvent<{}>, value: string, reason: 'input' | 'reset' | 'clear') => {\r\n\r\n let isClear = false;\r\n let offset = 0;\r\n let filter = '';\r\n\r\n if (reason === 'input') {\r\n filter = value;\r\n isClear = true;\r\n\r\n fetchData(filter, offset, isClear);\r\n } \r\n },\r\n // delay in ms\r\n 500\r\n );\r\n\r\n const [state, setState] = useState({\r\n hasNextPage: true,\r\n isNextPageLoading: false,\r\n offset: 0,\r\n filter: '',\r\n items: [],\r\n });\r\n\r\n // useEffect(() => {\r\n // fetchData(state.filter, 0, state.isNextPageLoading, state.hasNextPage, false); \r\n // // tslint:disable-next-line: align\r\n // }, []);\r\n\r\n // tslint:disable-next-line: no-any\r\n const loadNextPage = (...args: any) => { \r\n if (state.hasNextPage && !state.isNextPageLoading) {\r\n fetchData(state.filter, state.offset, false);\r\n }\r\n };\r\n\r\n const fetchData = (filter: string, offset: number, isClear: boolean) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: true,\r\n };\r\n });\r\n\r\n const userQueryParams: ClientQueryParams = {\r\n filter: filter,\r\n first: loadBlockLimit,\r\n offset: offset,\r\n };\r\n\r\n retrieveClientListData(\r\n userQueryParams,\r\n true, // this.state.isRefresh, -- Since we are updating and creating, we do not fetch cached data\r\n // tslint:disable-next-line: no-console\r\n (data) => onRetrieveClientList(data, filter, offset, isClear),\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n isLoading: false\r\n };\r\n });\r\n }\r\n );\r\n };\r\n\r\n const onRetrieveClientList = (data: ClientListData, filter: string, offset: number, isClear: boolean) => {\r\n const clientData = data.clientList.clients;\r\n const recordCount = data.clientList.recordCount;\r\n\r\n // tslint:disable-next-line: no-any\r\n let itemsList: IAutoCompleteItem[] = [];\r\n\r\n let items = state.items;\r\n\r\n if (!isClear) {\r\n itemsList = [...state.items];\r\n } else {\r\n items = [];\r\n }\r\n\r\n if (items && items.length === 0) {\r\n itemsList = clientData.map( (source: Client) => ({value: source.guid, label: source.clientName}));\r\n } else {\r\n // tslint:disable-next-line: no-shadowed-variable\r\n for (const client of clientData) {\r\n // tslint:disable-next-line: no-any\r\n const isExists = items.filter((item: IAutoCompleteItem) => item.value.toLowerCase().includes(client.guid)).length;\r\n\r\n if (isExists === 0) {\r\n itemsList.push({\r\n label: client.clientName,\r\n value: client.guid,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n filter: filter,\r\n isNextPageLoading: false,\r\n items: itemsList,\r\n offset: offset + loadBlockLimit,\r\n hasNextPage: clientData.length !== 0 && (offset + loadBlockLimit) < recordCount,\r\n isLoading: false\r\n };\r\n });\r\n };\r\n\r\n const onSelection = (selection: IAutoCompleteItem, name: string) => {\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // isNextPageLoading: false,\r\n // filter: '',\r\n // offset: 0\r\n // };\r\n // });\r\n\r\n if (props.onSelection) {\r\n props.onSelection(selection, name);\r\n }\r\n };\r\n\r\n const onClose = (event: React.ChangeEvent<{}>) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isNextPageLoading: false,\r\n hasNextPage: true,\r\n filter: '',\r\n offset: 0,\r\n items: []\r\n };\r\n });\r\n };\r\n\r\n const onOpen = (event: React.ChangeEvent<{}>) => {\r\n // tslint:disable-next-line: no-console\r\n fetchData(state.filter, 0, true);\r\n };\r\n\r\n const LightTooltip = withStyles((theme: Theme) => ({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n fontSize: 11,\r\n },\r\n arrow: {\r\n '&:before': {\r\n border: '1px solid #E6E8ED'\r\n },\r\n color: theme.palette.common.white\r\n },\r\n }))(Tooltip);\r\n\r\n const shortingTitle = (title: string, limit?: number) => {\r\n\r\n if (limit === undefined || limit === null) {\r\n return title;\r\n } else if (title === undefined || title === null) {\r\n return title;\r\n } else if (title.length < limit) {\r\n return title;\r\n } else {\r\n return ( \r\n \r\n {`${title.substring(0, limit)}...`}\r\n \r\n );\r\n }\r\n };\r\n\r\n const getInputProps = (params: RenderInputParams, isLoading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n };\r\n\r\n return (\r\n
\r\n option.label}\r\n getOptionSelected={(option, value) => value.value === option.value}\r\n onInputChange={delayedonInputChange}\r\n onBlur={props.onBlur}\r\n renderOption={(option, { selected }) => {\r\n return (\r\n
\r\n
\r\n {option.isStaff ? : }\r\n
\r\n
\r\n
{shortingTitle(option.label, props.textLimit?.label)}
\r\n
{shortingTitle(option.email, props.textLimit?.email)}
\r\n
\r\n
\r\n );\r\n }}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport function retrieveClientListData(\r\n query: ClientQueryParams,\r\n refreshData: boolean,\r\n onSuccess: (data: ClientListData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void\r\n): void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: ClientsQuery,\r\n variables: {\r\n filter: query.filter,\r\n first: query.first,\r\n offset: query.offset,\r\n },\r\n fetchPolicy: fetchPolicy,\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nexport interface ClientQueryParams {\r\n offset?: number; \r\n first?: number;\r\n filter?: string;\r\n}\r\n\r\nexport interface ClientListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n clientList: ClientList;\r\n}\r\n\r\nexport interface ClientList {\r\n recordCount: number;\r\n clients: Client[];\r\n}\r\n\r\nexport interface Client {\r\n nameID: number;\r\n clientName: string;\r\n guid: string;\r\n}\r\n\r\nconst ClientsQuery = gql`\r\n query Clients($offset: Int, $first: Int, $filter: String){\r\n clientList(offset:$offset, first:$first, filter:$filter){\r\n recordCount,\r\n clients{\r\n nameID,\r\n clientName,\r\n guid\r\n }\r\n }\r\n }\r\n`;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { Avatar, TextField } from '@material-ui/core';\r\nimport { DataFunc, Mention, MentionItem, MentionsInput, OnChangeHandlerFunc, SuggestionDataItem } from 'react-mentions';\r\nimport { Colors, hashString } from '../enquirySummary/board/BoardCardDraggable';\r\nimport { retrieveUserListData, User, UserListData, UserQueryParams } from './UserAutocompleteSelector';\r\nimport { showNotification } from '../App';\r\nimport { retrieveTeamData } from '../lookupConfiguration/selectors/FirmTeamSelector';\r\nimport { FirmData, Team } from '../lookupConfiguration/models/Firm';\r\nimport _ from 'lodash';\r\nimport { TeamQueryParams } from '../lookupConfiguration/selectors/FirmTeamSelector';\r\n// import { name, random } from 'faker';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n '& .MuiInputLabel-shrink': {\r\n color: '#3f51b5'\r\n }\r\n },\r\n fieldFocus: {\r\n '& .MuiInput-underline:before': {\r\n borderBottom: '2px solid #3f51b5 !important',\r\n transition: 'border-bottom-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms !important'\r\n }\r\n },\r\n mentionsInput: {\r\n width: '100%',\r\n '& .mentionsInput__highlighter': {\r\n border: 0\r\n },\r\n '& .mentionsInput__input': {\r\n padding: 0,\r\n border: 0\r\n },\r\n '& .mentionsInput__suggestions': {\r\n minWidth: '200px !important',\r\n borderRadius: '5px',\r\n boxShadow: '0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)',\r\n },\r\n '& .mentionsInput__input:focus': {\r\n outline: 0\r\n },\r\n '& .mentionsInput__suggestions__list': {\r\n maxHeight: 350,\r\n overflowY: 'auto',\r\n padding: '0 10px !important',\r\n },\r\n '& .mentionsInput__suggestions__item': {\r\n // padding: '5px 15px',\r\n // borderBottom: '1px solid rgba(0, 0, 0, 0.15)',\r\n },\r\n '& .mentionsInput__suggestions__item--focused': {\r\n backgroundColor: '#F2F2F2',\r\n margin: '0 -10px',\r\n padding: '0 10px',\r\n },\r\n '& .mentionsInput__mention': {\r\n // backgroundColor: '#cee4e5'\r\n }\r\n },\r\n mention: {\r\n backgroundColor: '#D1E4FC'\r\n },\r\n suggestedList: {\r\n padding: '8px 0',\r\n display: 'flex',\r\n '& .MuiAvatar-root': {\r\n marginRight: 10\r\n },\r\n '& .suggested-detail': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n justifyContent: 'center',\r\n },\r\n '& .suggested-name': {\r\n fontWeight: 700,\r\n },\r\n '& .suggested-other': {\r\n fontSize: 11\r\n }\r\n },\r\n avatar: {\r\n // width: '20px',\r\n // height: '20px',\r\n // fontSize: '8px',\r\n },\r\n })\r\n);\r\n\r\ninterface MetionsCustomProps {\r\n value?: string;\r\n data: SuggestionDataItem[] | DataFunc;\r\n onChange?: OnChangeHandlerFunc;\r\n onAdd?: (id: string | number, display: string) => void;\r\n onBlur?: (event: React.FocusEvent | React.FocusEvent, clickedSuggestion: boolean) => void;\r\n onSelect?: (event: React.UIEvent) => void;\r\n onKeyDown?: (event: React.KeyboardEvent | React.KeyboardEvent) => void;\r\n markup?: string;\r\n}\r\n\r\nexport function parseMentionedComment(comment: string) {\r\n let regex = /@\\[.+?\\]\\(.+?\\)/gm;\r\n let displayRegex = /@\\[.+?\\]/g;\r\n let idRegex = /\\(.+?\\)/g;\r\n let matches = comment.match(regex);\r\n // tslint:disable-next-line: no-any\r\n let arr: any = [];\r\n // tslint:disable-next-line: no-unused-expression\r\n matches &&\r\n // tslint:disable-next-line: no-any\r\n matches.forEach((m: any) => {\r\n let id = m.match(idRegex)[0].replace('(', '').replace(')', '');\r\n let display = m.match(displayRegex)[0].replace('@[', '').replace(']', '');\r\n\r\n arr.push({ id: id, display: display });\r\n });\r\n let newComment = comment.split(regex);\r\n let output = '';\r\n for (let i = 0; i < newComment.length; i++) {\r\n const c = newComment[i];\r\n if (i === newComment.length - 1) {\r\n output += c;\r\n } else {\r\n output += c + `${arr[i].display}`;\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nfunction MultipleTriggers({ value, data, onChange, onAdd, onBlur, onSelect, onKeyDown, markup }: MetionsCustomProps) {\r\n\r\n const classes = useStyles();\r\n \r\n // const emailRegex = /(([^\\s@]+@[^\\s@]+\\.[^\\s@]+))$/\r\n \r\n // tslint:disable-next-line: max-line-length\r\n const renderSuggestion = (suggestion: SuggestionDataItem, search: string, highlightedDisplay: React.ReactNode, index: number, focused: boolean) => {\r\n \r\n // console.log('suggestion:', suggestion, 'search:', search, 'highlightedDisplay:', highlightedDisplay, 'index:', index, 'focused:', focused);\r\n\r\n // tslint:disable-next-line: no-any\r\n const stringSplit = suggestion.display.split(' ').map((n: any) => n[0]).join('');\r\n\r\n const stringInitials = stringSplit.slice(0, 2).toLocaleUpperCase();\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const stringColour = Colors[(suggestion.display === '' || suggestion.display === null) ? Colors[Colors.length] : (hashString(suggestion.display) % Colors.length) - 1];\r\n\r\n const display = suggestion.display.split('|');\r\n \r\n return (\r\n
\r\n {stringInitials}\r\n
\r\n
{display[0]}
\r\n
{display[1]}
\r\n
\r\n
\r\n );\r\n };\r\n \r\n const displayTransform = (id: string, display: string) => {\r\n // return the name\r\n return display.split('|')[0];\r\n };\r\n \r\n return (\r\n \r\n \r\n \r\n {/* [{ id: search, display: search }]}\r\n onAdd={onAdd}\r\n style={{ backgroundColor: '#d1c4e9' }}\r\n /> */}\r\n \r\n );\r\n}\r\n\r\ninterface TextFieldWithMentionProps {\r\n label?: string;\r\n name?: string;\r\n className?: string;\r\n value?: string;\r\n // tslint:disable-next-line: no-any\r\n mentions?: MentionItem[] | any;\r\n variant?: 'filled' | 'outlined';\r\n onChange?: OnChangeHandlerFunc;\r\n onAdd?: (id: string | number, display: string) => void;\r\n onBlur?: (event: React.FocusEvent | React.FocusEvent, clickedSuggestion: boolean) => void;\r\n onSelect?: (event: React.UIEvent) => void;\r\n onKeyDown?: (event: React.KeyboardEvent | React.KeyboardEvent) => void;\r\n markup?: string;\r\n isLoadData: boolean;\r\n onlyUsedByEnquiries?: boolean;\r\n}\r\n\r\ninterface TextFieldWithMentionState {\r\n value?: string;\r\n // tslint:disable-next-line: no-any\r\n mentions?: MentionItem[] | any;\r\n shrink?: boolean;\r\n}\r\n\r\nexport const TextFieldWithMention: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n value: undefined,\r\n mentions: undefined,\r\n shrink: undefined\r\n });\r\n\r\n const [suggestions, setSuggestions] = useState();\r\n\r\n useEffect(() => {\r\n if (props.isLoadData) {\r\n // tslint:disable-next-line: no-console\r\n // console.log(props);\r\n fetchData('');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n value: props.value,\r\n mentions: props.value\r\n };\r\n });\r\n } \r\n // tslint:disable-next-line: align\r\n }, [props.isLoadData]);\r\n\r\n const fetchData = (query: string) => {\r\n getUserData(query);\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const getUserData = (query: string): any => { \r\n\r\n let tempData: SuggestionDataItem[] = [];\r\n\r\n // Fetch User and Team details\r\n const userQueryParams: UserQueryParams = {\r\n filter: query,\r\n first: 1000,\r\n offset: 0,\r\n // isStaff: props.isStaffOnly ? props.isStaffOnly : undefined,\r\n isExternal: false\r\n };\r\n \r\n retrieveUserListData(\r\n userQueryParams,\r\n false,\r\n // tslint:disable-next-line: no-console\r\n (data: UserListData) => {\r\n const userData = data.administrator.users.user;\r\n\r\n userData.forEach((source: User) => {\r\n tempData.push({\r\n id: source.userID.toLocaleLowerCase(),\r\n display: `${source.friendlyName}${source.roleName ? `|${source.roleName}` : ''}`,\r\n });\r\n });\r\n\r\n getTeamData(query, tempData);\r\n // return tempData;\r\n },\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): any {\r\n showNotification(null, reason, 'error');\r\n return tempData;\r\n }\r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const getTeamData = (query: string, userData: SuggestionDataItem[]): any => {\r\n let teamData: SuggestionDataItem[] = [];\r\n let tempData: SuggestionDataItem[] = [];\r\n\r\n let teamQueryParams: TeamQueryParams = {\r\n onlyUsedByEnquiries: props.onlyUsedByEnquiries ? props.onlyUsedByEnquiries : null,\r\n isMyTeamOnly: null,\r\n onlyUsedByFinancials: null,\r\n onlyUsedByTasks: null\r\n };\r\n\r\n retrieveTeamData(\r\n teamQueryParams,\r\n false,\r\n (data: FirmData) => {\r\n const firmData = data.firm.teams.team;\r\n firmData.forEach((team: Team) => {\r\n teamData.push({\r\n id: team.guidID.toLocaleLowerCase(), \r\n display: `${team.description}${`|Team`}`\r\n // isTeam: true\r\n });\r\n });\r\n\r\n let filteredData = teamData;\r\n \r\n if (query) {\r\n filteredData = _.filter(teamData, (x) => {\r\n return x.display.includes(query);\r\n });\r\n }\r\n\r\n filteredData.forEach(element => {\r\n tempData.push({\r\n id: element.id,\r\n display: element.display\r\n });\r\n });\r\n\r\n // const sortedData = _.sortBy(tempData, [(x) => { return x.display; }]);\r\n\r\n let mergedData = _.unionWith(userData, tempData);\r\n let sortedData = _.sortBy(mergedData, [(x) => { return x.display; }]);\r\n\r\n setSuggestions(sortedData);\r\n // return sortedData;\r\n },\r\n // tslint:disable-next-line:no-any\r\n function (reason: any): any {\r\n showNotification(null, reason, 'error');\r\n return tempData;\r\n }\r\n );\r\n };\r\n\r\n const onChange = (event: { target: { value: string } }, newValue: string, newPlainTextValue: string, mentions: MentionItem[]) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n value: newValue\r\n };\r\n });\r\n\r\n if (props.onChange) {\r\n props.onChange(event, newValue, newPlainTextValue, mentions);\r\n }\r\n };\r\n\r\n const onBlur = (event: React.FocusEvent | React.FocusEvent, clickedSuggestion: boolean) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n shrink: false\r\n };\r\n });\r\n\r\n if (props.onBlur) {\r\n props.onBlur(event, clickedSuggestion);\r\n }\r\n };\r\n\r\n const onSelect = (event: React.UIEvent) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n shrink: true\r\n };\r\n });\r\n\r\n if (props.onSelect) {\r\n props.onSelect(event);\r\n }\r\n };\r\n\r\n const onKeyDown = (event: React.KeyboardEvent | React.KeyboardEvent) => {\r\n if (props.onKeyDown) {\r\n props.onKeyDown(event);\r\n }\r\n };\r\n\r\n const onAdd = (id: string | number, display: string) => {\r\n if (props.onAdd) {\r\n props.onAdd(id, display);\r\n }\r\n };\r\n\r\n return (\r\n 0 ? true : false || state.shrink }}\r\n />\r\n );\r\n};","import { Checkbox, Chip, createStyles, FormControl, FormHelperText, Input, InputLabel, MenuItem, Select, Theme, withStyles } \r\n from '@material-ui/core';\r\nimport { WithStyles } from '@material-ui/styles';\r\nimport * as React from 'react';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport PersonOutlineOutlinedIcon from '@material-ui/icons/PersonOutlineOutlined';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\n// import PersonOffOutlinedIcon from '@material-ui/icons/PersonOffOutlined';\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n chip: {\r\n margin: theme.spacing() / 4,\r\n },\r\n chips: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n formControl: {\r\n flexGrow: 1,\r\n margin: theme.spacing(),\r\n },\r\n checkedIcon: {\r\n color: '#5173FF'\r\n }, \r\n personIcons: {\r\n color: '#5173FF'\r\n },\r\n menuItemWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .checkboxDescriptionWrapper': {\r\n flex: 1\r\n }\r\n }\r\n});\r\n\r\nconst ITEM_HEIGHT = 48;\r\nconst ITEM_PADDING_TOP = 8;\r\n// const MenuProps = {\r\n// PaperProps: {\r\n// style: {\r\n// maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n// width: 250,\r\n// },\r\n// },\r\n// };\r\n\r\ninterface MultiSelectProps extends WithStyles {\r\n className?: string;\r\n label?: string;\r\n // tslint:disable-next-line: no-any\r\n items: any[];\r\n multiple?: boolean;\r\n onSelectedItem?: (selected: Array | string | number | boolean, name: string) => void;\r\n onRemoveItem?: (selected: Array | string | number | boolean, name: string) => void;\r\n name: string;\r\n onClear?: () => void;\r\n required: boolean;\r\n // tslint:disable-next-line: no-any\r\n selectedItems?: any;\r\n disabled?: boolean;\r\n itemsToShow?: number;\r\n isShowUserActiveStatusIcons?: boolean;\r\n}\r\n\r\ninterface MultiSelectState {\r\n // tslint:disable-next-line: no-any\r\n itemSelected: any;\r\n}\r\n\r\nclass MultiSelect extends React.Component {\r\n // tslint:disable-next-line:no-any\r\n constructor(props: MultiSelectProps, state: MultiSelectState) {\r\n super(props, props);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.onSelectedItem = this.onSelectedItem.bind(this);\r\n this.onClear = this.onClear.bind(this);\r\n this.renderSelections = this.renderSelections.bind(this);\r\n this.handleDelete = this.handleDelete.bind(this);\r\n\r\n this.state = {\r\n itemSelected: []\r\n };\r\n }\r\n\r\n public componentDidUpdate(prevProps: MultiSelectProps) {\r\n if (prevProps.selectedItems !== this.props.selectedItems) {\r\n if (this.props.selectedItems) {\r\n this.setState({\r\n itemSelected : this.props.selectedItems\r\n });\r\n } \r\n }\r\n }\r\n\r\n public render() {\r\n const { classes } = this.props;\r\n let selectedItems = this.state.itemSelected.length !== 0 ? this.state.itemSelected : this.props.selectedItems;\r\n\r\n if (selectedItems === undefined) {\r\n selectedItems = [];\r\n }\r\n\r\n const itemCountToShow = this.props.itemsToShow ? this.props.itemsToShow : 4.5;\r\n\r\n return (\r\n \r\n \r\n {this.props.label}\r\n {\r\n this.props.multiple ?\r\n (\r\n }\r\n // tslint:disable-next-line\r\n renderValue={(selection: any) => this.renderSelections(selection)}\r\n // MenuProps={MenuProps}\r\n required={this.props.required}\r\n MenuProps={{\r\n PaperProps: {\r\n style: {\r\n maxHeight: ITEM_HEIGHT * itemCountToShow + ITEM_PADDING_TOP,\r\n // minHeight: ITEM_HEIGHT * itemCountToShow + ITEM_PADDING_TOP,\r\n width: 250,\r\n },\r\n },\r\n anchorOrigin: {\r\n horizontal: 'left',\r\n vertical: 'bottom' \r\n },\r\n getContentAnchorEl: null, \r\n transformOrigin: {\r\n horizontal: 'left',\r\n vertical: 'top',\r\n \r\n } \r\n }} \r\n >\r\n { this.props.items\r\n // tslint:disable-next-line: no-any\r\n ? this.props.items.map((item: any) => (\r\n \r\n {/* -1} /> */}\r\n
\r\n -1} \r\n checkedIcon={}\r\n />\r\n {item.description}\r\n
\r\n {\r\n this.props.isShowUserActiveStatusIcons !== undefined && \r\n this.props.isShowUserActiveStatusIcons === true && (\r\n item.isActive \r\n ? \r\n : \r\n )\r\n }\r\n \r\n
\r\n ))\r\n : null\r\n }\r\n \r\n )\r\n :\r\n (\r\n }\r\n MenuProps={{\r\n PaperProps: {\r\n style: {\r\n maxHeight: ITEM_HEIGHT * itemCountToShow + ITEM_PADDING_TOP,\r\n width: 250,\r\n },\r\n }\r\n }}\r\n required={this.props.required}\r\n >\r\n this.props.items \r\n {/* tslint:disable-next-line: no-any */}\r\n ? {this.props.items.map((item: any) => (\r\n \r\n {item.description}\r\n \r\n ))}\r\n : null\r\n \r\n )\r\n }\r\n Member is required\r\n
\r\n
\r\n );\r\n }\r\n \r\n // tslint:disable-next-line: no-any\r\n private renderSelections(selected: any): React.ReactNode {\r\n const { classes, items } = this.props;\r\n if (items) {\r\n const chips: React.ReactNode = (\r\n
\r\n {/* tslint:disable-next-line: no-any */}\r\n {selected.map((value: any) => {\r\n // tslint:disable-next-line: no-any\r\n const idx = items.findIndex( (i: any) => i.id === value);\r\n return ( \r\n idx === -1 ? null\r\n : \r\n this.props.disabled \r\n ? \r\n \r\n :\r\n event.stopPropagation()}\r\n // tslint:disable-next-line:jsx-no-lambda\r\n onDelete={() => this.handleDelete(items[idx])} \r\n />\r\n );\r\n }\r\n )}\r\n
);\r\n return chips;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private handleChange(event: React.ChangeEvent, child: React.ReactNode) {\r\n this.setState({ itemSelected: event.target.value });\r\n this.onSelectedItem(event.target.value, this.props.name);\r\n }\r\n\r\n private onSelectedItem(item: Array | string | number | boolean, name: string) {\r\n if (this.props.onSelectedItem) {\r\n return this.props.onSelectedItem(item, name);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private handleDelete(item: any): React.EventHandler {\r\n // if(this.props.disabled) { \r\n // return this.state.itemSelected; \r\n // };\r\n\r\n // tslint:disable-next-line: no-console\r\n console.log('handleDelete');\r\n\r\n const chipItems = this.state.itemSelected;\r\n const chipToDelete = chipItems.indexOf(item.id);\r\n\r\n chipItems.splice(chipToDelete, 1);\r\n\r\n this.setState({\r\n itemSelected: chipItems\r\n });\r\n\r\n if (this.props.onRemoveItem) {\r\n this.props.onRemoveItem(item.id, this.props.name);\r\n }\r\n\r\n return chipItems;\r\n }\r\n\r\n private onClear() {\r\n if (this.props.onClear) {\r\n this.setState({itemSelected: []});\r\n return this.props.onClear();\r\n }\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport default withStyles(styles as any, { withTheme: true })(MultiSelect as any) as any;","import React from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { formatNumber } from '../helpers/ChartHelper';\r\nimport moment from 'moment';\r\nimport { RvLoader } from './Loader';\r\n// import { formatNumber } from '../helpers/ChartHelper';\r\n// import moment from 'moment';\r\n// import { UserFeatureEnum, UserFeature } from '../types/UserFeature';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n flex: 1,\r\n flexFlow: 'column',\r\n },\r\n headerWrapper: {\r\n display: 'flex',\r\n flex: 1,\r\n '& > div': {\r\n textTransform: 'capitalize',\r\n opacity: 0.52,\r\n color: 'rgb(35, 37, 59)'\r\n },\r\n '& > div:nth-child(1)': {\r\n opacity: 1,\r\n color: 'inherit',\r\n },\r\n },\r\n colHeader: {\r\n flex: 1,\r\n padding: '10px',\r\n // fontWeight: 600,\r\n },\r\n bodyWrapper: {\r\n display: 'flex',\r\n flex: 1,\r\n flexFlow: 'column',\r\n borderRadius: '4px',\r\n '& > div:nth-child(odd)': {\r\n backgroundColor: 'rgb(247, 248, 250)'\r\n }\r\n },\r\n rowBody: {\r\n flex: 1,\r\n display: 'flex',\r\n '& > div': {\r\n textTransform: 'capitalize',\r\n opacity: 0.52,\r\n color: 'rgb(35, 37, 59)'\r\n },\r\n '& > div:nth-child(1)': {\r\n opacity: 1,\r\n color: 'inherit',\r\n },\r\n },\r\n colBody: {\r\n flex: 1,\r\n padding: '10px',\r\n },\r\n imagesWrapper: {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n flexFlow: 'row wrap',\r\n margin: '0 -10px',\r\n '& img': {\r\n width: '100%',\r\n height: 'auto',\r\n maxWidth: '35px',\r\n padding: '0 10px',\r\n }\r\n }\r\n })\r\n);\r\n\r\nexport enum ValueTypeEnum {\r\n STRING = 0,\r\n DECIMAL,\r\n NUMBER,\r\n DATE,\r\n ARRAY,\r\n ARRAY_OF_OBJECT,\r\n OBJECT,\r\n IMAGE,\r\n ARRAY_OF_IMAGE\r\n} \r\n\r\nexport interface CustomTableValueProps {\r\n // tslint:disable-next-line: no-any\r\n value: any;\r\n type: ValueTypeEnum;\r\n}\r\n\r\nexport interface CustomTableContentProps {\r\n // tslint:disable-next-line: no-any\r\n [key: string]: CustomTableValueProps | any;\r\n}\r\n\r\ninterface CustomTableProps {\r\n header?: string[];\r\n content?: CustomTableContentProps[];\r\n options?: string[];\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport const CustomTable: React.FC = (props) => {\r\n const classes = useStyles();\r\n\r\n // tslint:disable-next-line: no-any\r\n const formatValue = (item: CustomTableValueProps) => {\r\n if (item.type === ValueTypeEnum.NUMBER) {\r\n return formatNumber(item.value);\r\n }\r\n if (item.type === ValueTypeEnum.DECIMAL) {\r\n return formatNumber(item.value, 2);\r\n }\r\n if (item.type === ValueTypeEnum.DATE) {\r\n return moment(item.value).format('DD-MMM-YYYY');\r\n }\r\n if (item.type === ValueTypeEnum.ARRAY) {\r\n return item.value.join(',');\r\n }\r\n if (item.type === ValueTypeEnum.IMAGE) {\r\n return (\r\n {item.value}/\r\n );\r\n }\r\n if (item.type === ValueTypeEnum.ARRAY_OF_IMAGE) {\r\n return (\r\n
\r\n {item.value.map((val: string, index: number) => (\r\n {index.toString()}\r\n ))}\r\n
\r\n );\r\n }\r\n return item.value;\r\n };\r\n\r\n const getContent = () => {\r\n if (props.content) {\r\n return (\r\n <>\r\n {props.content && props.content\r\n .sort((a, b) => a.order < b.order ? -1 : a.order > b.order ? 1 : 0)\r\n .map((item: CustomTableContentProps, index: number) => !item.hide && (\r\n
\r\n {props.options && props.options.map((option: string, i: number) => (\r\n
\r\n {formatValue(item[option])}\r\n
\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\r\n return (\r\n
\r\n
\r\n {props.header && props.header.map((head, index) => (\r\n
\r\n {head}\r\n
\r\n ))}\r\n
\r\n
\r\n {getContent()}\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Checkbox } from 'semantic-ui-react';\r\nimport { FormEvent } from 'react';\r\n\r\ninterface CheckboxProps {\r\n isChecked?: boolean;\r\n label?: string;\r\n disabled?: boolean;\r\n onChange?: (event: FormEvent, data: CheckboxState) => void;\r\n}\r\n\r\nexport interface CheckboxState {\r\n checked: boolean;\r\n}\r\n\r\nexport class RvCheckbox extends React.Component {\r\n private event?: React.FormEvent;\r\n\r\n public Check() {\r\n this.setState((state) => ( { checked: true } ));\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n constructor(props: CheckboxProps, context?: any) {\r\n super(props, context);\r\n this.state = { checked: this.props.isChecked ? true : false };\r\n this.event = undefined;\r\n }\r\n\r\n onChange = (event: React.FormEvent) => {\r\n this.event = event;\r\n this.setState((state) => ( { checked: !state.checked } ));\r\n }\r\n\r\n componentDidUpdate(prevProps: CheckboxProps, prevState: CheckboxState) {\r\n if (this.props.onChange && this.event && prevState.checked !== this.state.checked) {\r\n this.props.onChange(this.event, this.state);\r\n }\r\n }\r\n\r\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\r\n if (this.props.isChecked !== nextProps.isChecked) {\r\n this.setState({\r\n checked: nextProps.isChecked !== undefined ? nextProps.isChecked : false\r\n }); \r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import { CircularProgress } from '@material-ui/core';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport match from 'autosuggest-highlight/match';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport gql from 'graphql-tag';\r\nimport * as React from 'react';\r\nimport { graphql } from 'react-apollo';\r\n\r\ninterface SelectorProps {\r\n onSelection?: (selection: object, name: string) => void;\r\n // tslint:disable-next-line: no-any\r\n items?: any;\r\n required?: boolean;\r\n label?: string;\r\n name: string;\r\n data: RoleListData;\r\n value: string; // code\r\n disabled: boolean;\r\n isActive: boolean;\r\n isFeeEarner: boolean;\r\n isExternal?: boolean;\r\n}\r\n\r\ninterface SelectorState {\r\n selectedCode: string;\r\n selectedLabel: string;\r\n}\r\n\r\nexport interface RoleListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n roleList: RoleList;\r\n}\r\n\r\nexport interface RoleList {\r\n role: Role[]; \r\n}\r\n\r\nexport interface Role {\r\n roleIdString: string;\r\n rolename: string;\r\n isExternal: boolean;\r\n}\r\n\r\nclass Selector extends React.Component {\r\n // tslint:disable-next-line: no-any\r\n public roles: any;\r\n\r\n constructor(props: SelectorProps, state?: SelectorState) {\r\n super(props, state);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n\r\n this.state = {\r\n selectedCode: '',\r\n selectedLabel: ''\r\n };\r\n }\r\n\r\n public UNSAFE_componentWillReceiveProps(nextProps: SelectorProps) {\r\n if (this.props.value !== nextProps.value && this.roles) {\r\n // tslint:disable-next-line: no-any\r\n const filteredItem = this.roles.find((item: any) => item.value.toLowerCase().includes(nextProps.value.toLowerCase()));\r\n\r\n if (filteredItem && nextProps.value.toString() !== '') {\r\n this.setState({\r\n selectedCode: filteredItem.value,\r\n selectedLabel: filteredItem.label\r\n });\r\n } else {\r\n this.setState({\r\n selectedCode: '',\r\n selectedLabel: ''\r\n });\r\n } \r\n }\r\n }\r\n\r\n public render() {\r\n if (!this.props.data.loading || this.props.data.roleList) {\r\n const roleList: RoleList = this.props.data.roleList;\r\n this.roles = roleList.role.map( (role: Role) => {\r\n return ({ value: role.roleIdString, label: role.rolename });\r\n });\r\n } else { \r\n this.roles = [];\r\n } \r\n\r\n return (\r\n
\r\n option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n
\r\n );\r\n }\r\n\r\n private getInputProps(params: RenderInputParams, isLoading?: boolean) {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private handleChange(event: object, item: any) { \r\n this.setState( {\r\n selectedCode: item ? item.value : '',\r\n selectedLabel: item ? item.label : ''\r\n });\r\n\r\n if (this.props.onSelection) {\r\n this.props.onSelection({\r\n label: item ? item.label : '', \r\n value: item ? item.value : ''\r\n // tslint:disable-next-line: align\r\n }, this.props.name);\r\n } \r\n } \r\n} \r\n\r\nconst RoleSelectorData = gql`\r\nquery roleSelectorQuery( $isExternal: Boolean) {\r\n roleList(isExternal: $isExternal) {\r\n role {\r\n roleIdString,\r\n rolename,\r\n isExternal\r\n }\r\n }\r\n}`;\r\n\r\n// tslint:disable-next-line: no-any\r\nexport const RoleSelector = graphql (RoleSelectorData, {\r\n options: (props: SelectorProps) => ({ \r\n fetchPolicy: 'cache-first',\r\n variables: {\r\n isExternal: props.isExternal === undefined ? null : props.isExternal\r\n } \r\n })\r\n })\r\n (Selector);\r\n ","import { CircularProgress } from '@material-ui/core';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport match from 'autosuggest-highlight/match';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport * as React from 'react';\r\nimport { fetchRoleCategoryData, DropDownRoleCategoryData } from '../featureConfigurationLayout/FeatureLayoutConfigurationRepository';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\n\r\ninterface SelectorProps {\r\n onSelection?: (selection: IAutoCompleteItem, name: string) => void;\r\n // tslint:disable-next-line: no-any\r\n items?: any;\r\n required?: boolean;\r\n label?: string;\r\n name: string;\r\n value: string;\r\n disabled?: boolean;\r\n isIncludeAdministrator?: boolean;\r\n}\r\n\r\ninterface SelectorState {\r\n selectedCode: string;\r\n selectedLabel: string;\r\n}\r\n\r\nexport class RoleCategorySelector extends React.Component {\r\n // tslint:disable-next-line: no-any\r\n public roleCategoryData: any;\r\n\r\n constructor(props: SelectorProps, state?: SelectorState) {\r\n super(props, state);\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n \r\n this.state = {\r\n selectedCode: '',\r\n selectedLabel: ''\r\n };\r\n }\r\n\r\n public UNSAFE_componentWillReceiveProps(nextProps: SelectorProps) {\r\n if (this.props.value !== nextProps.value && this.roleCategoryData) {\r\n // tslint:disable-next-line: no-any\r\n const filteredItem = this.roleCategoryData.find((item: any) => item.value.toString().includes(nextProps.value.toString()));\r\n\r\n if (filteredItem && nextProps.value.toString() !== '') {\r\n this.setState({\r\n selectedCode: filteredItem.value,\r\n selectedLabel: filteredItem.label\r\n });\r\n } else {\r\n this.setState({\r\n selectedCode: '',\r\n selectedLabel: ''\r\n });\r\n } \r\n }\r\n }\r\n\r\n public render() {\r\n let roleCategoryList = fetchRoleCategoryData(this.props.isIncludeAdministrator ? this.props.isIncludeAdministrator : undefined);\r\n\r\n this.roleCategoryData = roleCategoryList.map( (roleCategory: DropDownRoleCategoryData) => (\r\n {\r\n value: roleCategory.value, \r\n label: roleCategory.text \r\n })\r\n );\r\n \r\n return (\r\n
\r\n option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n
\r\n );\r\n }\r\n\r\n private getInputProps(params: RenderInputParams, isLoading?: boolean) {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private handleChange(event: object, item: any) { \r\n this.setState( {\r\n selectedCode: item ? item.value : '',\r\n selectedLabel: item ? item.label : ''\r\n });\r\n\r\n if (this.props.onSelection) {\r\n this.props.onSelection({label: item ? item.label : '', value: item ? item.value.toString() : ''},\r\n this.props.name);\r\n } \r\n }\r\n}","export enum LeapFirmProvisionStatusType {\r\n Pending = 0,\r\n SyncInitiated = 1,\r\n SyncComplete = 2,\r\n MappingInitiated = 3,\r\n MappingComplete = 4,\r\n Complete = 5,\r\n DoNotProvision = 6,\r\n Failed = 7\r\n}\r\n\r\nexport function GetLeapFirmProvisionStatusType(leapProvisioningStatus: string): LeapFirmProvisionStatusType {\r\n\r\n if (!leapProvisioningStatus || leapProvisioningStatus.length === 0) {\r\n return LeapFirmProvisionStatusType.DoNotProvision;\r\n }\r\n\r\n switch (leapProvisioningStatus.toLocaleLowerCase()) {\r\n case 'pending':\r\n return LeapFirmProvisionStatusType.Pending;\r\n case 'complete':\r\n return LeapFirmProvisionStatusType.Complete;\r\n case 'syncinitiated':\r\n return LeapFirmProvisionStatusType.SyncInitiated;\r\n case 'synccomplete':\r\n return LeapFirmProvisionStatusType.SyncComplete;\r\n case 'mappinginitiated':\r\n return LeapFirmProvisionStatusType.MappingInitiated;\r\n case 'mappingcomplete':\r\n return LeapFirmProvisionStatusType.MappingComplete;\r\n case 'failed':\r\n return LeapFirmProvisionStatusType.Failed;\r\n default:\r\n return LeapFirmProvisionStatusType.DoNotProvision;\r\n }\r\n}","import React, { useEffect, useRef, useState } from 'react';\r\nimport { makeStyles, createStyles, Theme, withStyles } from '@material-ui/core/styles';\r\nimport TextField, { BaseTextFieldProps } from '@material-ui/core/TextField';\r\nimport Popover from '@material-ui/core/Popover';\r\nimport TreeView from '@material-ui/lab/TreeView';\r\nimport TreeItem from '@material-ui/lab/TreeItem';\r\nimport AddBoxOutlinedIcon from '@material-ui/icons/AddBoxOutlined';\r\n// import InsertDriveFileOutlinedIcon from '@material-ui/icons/InsertDriveFileOutlined';\r\nimport IndeterminateCheckBoxOutlinedIcon from '@material-ui/icons/IndeterminateCheckBoxOutlined';\r\nimport { CircularProgress, IconButton, InputAdornment, Typography } from '@material-ui/core';\r\nimport CloseOutlinedIcon from '@material-ui/icons/CloseOutlined';\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\r\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\r\n// import InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';\r\nimport { omit } from 'lodash';\r\nimport clsx from 'clsx';\r\nimport PopupState, { bindTrigger, bindPopover } from 'material-ui-popup-state';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n textField: {\r\n width: '100%',\r\n },\r\n popover: {\r\n padding: theme.spacing(2),\r\n },\r\n treeView: {\r\n width: '100%',\r\n maxHeight: 400,\r\n overflowY: 'auto',\r\n },\r\n textBold: {\r\n fontWeight: 600,\r\n },\r\n progress: {\r\n margin: '0 10px',\r\n },\r\n treeItemContent: {\r\n padding: '5px 10px',\r\n },\r\n }),\r\n);\r\n\r\nexport interface TreeSelectNode {\r\n label: string;\r\n value: string;\r\n children?: TreeSelectNode[];\r\n // tslint:disable-next-line: no-any\r\n [key: string]: any;\r\n}\r\n\r\ninterface TreeSelectProps extends BaseTextFieldProps {\r\n options: TreeSelectNode[];\r\n value?: TreeSelectNode | null;\r\n onSelection: (value: TreeSelectNode | null) => void;\r\n loading?: boolean;\r\n expandAll?: boolean;\r\n enabledSearch?: boolean;\r\n}\r\n\r\nconst TreeSelect: React.FC = ({ onSelection, ...props }) => {\r\n const inputRef = useRef(null);\r\n const classes = useStyles();\r\n // const [anchorEl, setAnchorEl] = useState(null);\r\n const [searchQuery, setSearchQuery] = useState(props.value ? props.value.label : '');\r\n const [isSearch, setIsSearch] = useState(false);\r\n\r\n useEffect(() => {\r\n setSearchQuery(props.value ? props.value.label : ''); },\r\n [props.value]);\r\n\r\n // tslint:disable-next-line: no-any\r\n const handleTreeClick = (selectedItem: TreeSelectNode, popupState: any) => (event: React.MouseEvent) => {\r\n setIsSearch(false);\r\n onSelection(selectedItem);\r\n setSearchQuery(selectedItem.label);\r\n popupState.close();\r\n };\r\n\r\n const onClear = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n setIsSearch(false);\r\n setSearchQuery('');\r\n onSelection(null);\r\n };\r\n\r\n const onSearch = (event: React.ChangeEvent) => {\r\n setIsSearch(true);\r\n setSearchQuery(event.target.value);\r\n };\r\n\r\n // get all the nodes value and put it in a string array\r\n const flattenNodes = (nodes: TreeSelectNode[]): string[] => {\r\n const stack: TreeSelectNode[] = [...nodes];\r\n const result: string[] = [];\r\n while (stack.length) {\r\n const node = stack.pop();\r\n if (node) {\r\n result.push(node.value);\r\n if (node.children) {\r\n stack.push(...node.children);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n // search from all nodes and return what is ask including the parent object\r\n const searchOptions = (searchString: string, options: TreeSelectNode[]): TreeSelectNode[] => {\r\n const filteredOptions: TreeSelectNode[] = [];\r\n\r\n options.forEach((option) => {\r\n if (searchString === '' || option.label.toLowerCase().includes(searchString.toLowerCase()) || option.value.toLowerCase().includes(searchString.toLowerCase())) {\r\n if (!filteredOptions.some((item) => item.value === option.value)) {\r\n filteredOptions.push(option);\r\n }\r\n }\r\n\r\n if (option.children) {\r\n const matchingChildren = searchOptions(searchString, option.children);\r\n if (matchingChildren.length > 0) {\r\n const existingIndex = filteredOptions.findIndex((item) => item.value === option.value);\r\n if (existingIndex !== -1) {\r\n filteredOptions[existingIndex] = {\r\n ...option,\r\n children: matchingChildren,\r\n };\r\n } else {\r\n filteredOptions.push({\r\n ...option,\r\n children: matchingChildren,\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n return filteredOptions.sort((a, b) => {\r\n if (a.label < b.label) {\r\n return -1;\r\n } else if (a.label > b.label) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n };\r\n\r\n // render all the tree\r\n // tslint:disable-next-line: no-any\r\n const renderTree = (node: TreeSelectNode, popupState: any) => {\r\n if (node.children && node.children.length > 0) {\r\n // If the node has children, recursively render the children\r\n return (\r\n \r\n {node.children.map((child) => renderTree(child, popupState))}\r\n \r\n );\r\n } else {\r\n // If the node has no children, render the node\r\n return (\r\n {node.label}}\r\n // icon={node.value === props.value?.value ? : }\r\n onClick={handleTreeClick(node, popupState)}\r\n classes={{\r\n content: classes.treeItemContent,\r\n }}\r\n />\r\n );\r\n }\r\n };\r\n\r\n const textFieldRef = inputRef.current?.getBoundingClientRect();\r\n\r\n // style the popover and assigned width coming from the textfield\r\n const CustomPopover = withStyles((theme: Theme) => ({\r\n root: {\r\n '& .MuiPaper-root': {\r\n minWidth: textFieldRef ? textFieldRef.width : 'auto',\r\n padding: '10px',\r\n },\r\n },\r\n }))(Popover);\r\n\r\n const allNodes = flattenNodes(props.options);\r\n\r\n return (\r\n \r\n {(popupState) => (\r\n <>\r\n \r\n {props.loading ? : undefined}\r\n {props.value ? (\r\n \r\n \r\n \r\n ) : undefined}\r\n \r\n {popupState.isOpen ? : }\r\n \r\n \r\n ),\r\n readOnly: props.enabledSearch ? false : true\r\n }}\r\n onChange={onSearch}\r\n helperText={popupState.isOpen ? undefined : props.helperText}\r\n />\r\n \r\n }\r\n defaultExpandIcon={}\r\n >\r\n {searchOptions(isSearch ? searchQuery : '', props.options).map((option) => renderTree(option, popupState))}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TreeSelect;\r\n","import { CircularProgress, Dialog, makeStyles, Theme, Typography, createStyles, DialogActions, Button, DialogContent } from '@material-ui/core';\r\nimport React from 'react';\r\n// import NotificationsActiveOutlinedIcon from '@material-ui/icons/NotificationsActiveOutlined';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n position: 'relative',\r\n textAlign: 'center'\r\n },\r\n title: {\r\n paddingTop: '15px',\r\n fontSize: '18px',\r\n textAlign: 'center',\r\n },\r\n secondaryTitle: {\r\n fontSize: '14px',\r\n textAlign: 'center',\r\n color: 'gray'\r\n },\r\n progressWrapper: {\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n progress: {\r\n // position: 'absolute',\r\n },\r\n avatar: {\r\n backgroundColor: '#5173FF'\r\n }\r\n })\r\n);\r\n\r\ninterface LoadingDialogProps {\r\n open: boolean;\r\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;\r\n title: string;\r\n secondaryTitle?: string;\r\n onClose?: () => void;\r\n displayCloseButton?: boolean;\r\n}\r\n\r\nexport const LoadingDialog: React.FC = (props) => {\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {/*
*/}\r\n \r\n {/* \r\n \r\n */}\r\n {/*
*/}\r\n {props.title && ( \r\n {props.title}\r\n )}\r\n {props.secondaryTitle && ( \r\n {props.secondaryTitle}\r\n )}\r\n
\r\n {props.displayCloseButton \r\n ? \r\n (\r\n \r\n \r\n \r\n ) \r\n : null\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoadingDialog;","import { CircularProgress } from '@material-ui/core';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport match from 'autosuggest-highlight/match';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport * as React from 'react';\r\nimport { fetchScopeFeatureData, DropDownData } from '../featureConfigurationLayout/FeatureLayoutConfigurationRepository';\r\nimport { IAutoCompleteItem } from '../typings/autoComplete';\r\n\r\ninterface SelectorProps {\r\n onSelection?: (selection: IAutoCompleteItem, name: string) => void;\r\n // tslint:disable-next-line: no-any\r\n items?: any;\r\n required?: boolean;\r\n label?: string;\r\n name: string;\r\n value: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface SelectorState {\r\n selectedCode: string;\r\n selectedLabel: string;\r\n}\r\n\r\nexport class DashboardLayoutScopeSelector extends React.Component {\r\n // tslint:disable-next-line: no-any\r\n public scopeData: any;\r\n\r\n constructor(props: SelectorProps, state?: SelectorState) {\r\n super(props, state);\r\n\r\n let scopesList = fetchScopeFeatureData(this.props.value);\r\n this.scopeData = scopesList.map( (scope: DropDownData) => ({value: scope.value, label: scope.text }));\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n \r\n if (this.scopeData && this.props.value) {\r\n // tslint:disable-next-line: no-any\r\n const filteredItem = this.scopeData.find((item: any) => item.value.toLowerCase() === (this.props.value.toLowerCase()));\r\n\r\n this.state = {\r\n selectedCode: filteredItem.value,\r\n selectedLabel: filteredItem.label\r\n };\r\n } else {\r\n this.state = {\r\n selectedCode: '',\r\n selectedLabel: ''\r\n };\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: SelectorProps) {\r\n if (this.state.selectedCode !== nextProps.value) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public UNSAFE_componentWillReceiveProps(nextProps: SelectorProps) {\r\n if (this.props.value !== nextProps.value && this.scopeData) {\r\n // tslint:disable-next-line: no-any\r\n const filteredItem = this.scopeData.find((item: any) => item.value.toLowerCase() === (nextProps.value.toLowerCase()));\r\n\r\n if (filteredItem && nextProps.value.toString() !== '') {\r\n this.setState({\r\n selectedCode: filteredItem.value,\r\n selectedLabel: filteredItem.label\r\n });\r\n } else {\r\n this.setState({\r\n selectedCode: '',\r\n selectedLabel: ''\r\n });\r\n } \r\n }\r\n }\r\n\r\n public render() {\r\n // this.scopeData = scopesList.map( (scope: DropDownData) => ({value: scope.value, label: scope.text }));\r\n \r\n return (\r\n
\r\n option.label} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n
\r\n );\r\n }\r\n\r\n private getInputProps(params: RenderInputParams, isLoading?: boolean) {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private handleChange(event: object, item: any) { \r\n this.setState( {\r\n selectedCode: item ? item.value : '',\r\n selectedLabel: item ? item.label : ''\r\n });\r\n\r\n if (this.props.onSelection) {\r\n this.props.onSelection({label: item ? item.label : '', value: item ? item.value : ''},\r\n this.props.name);\r\n } \r\n }\r\n}","import * as React from 'react';\r\nimport { LabelStyle } from './LabelStyle';\r\nimport glamorous from 'glamorous';\r\n\r\n// tslint:disable-next-line:no-any\r\nconst Label = glamorous.label<{theme?: any}> ((props) => ({\r\n '&&': {\r\n fontWeight: props.theme.FontWeight.Normal,\r\n }\r\n}));\r\n\r\ninterface LabelProps {\r\n label?: string;\r\n hint?: string;\r\n style?: LabelStyle;\r\n color?: string;\r\n cssStyle?: {};\r\n // tslint:disable-next-line:no-any\r\n onClick?: any;\r\n className?: string;\r\n}\r\n\r\nexport class RvLabel extends React.Component {\r\n\r\n remList: Array =\r\n ['0.75rem', '14px', '1.1rem', '1.25rem', '1.5rem', '1.875rem', '2.0rem', '1.5rem', '1.2rem', '36px'];\r\n\r\n render() {\r\n\r\n let styleIdx = (this.props.style ? this.props.style : LabelStyle.Default) - 1;\r\n let labelStyle: {} = { fontSize: this.remList[styleIdx], ...(this.props.cssStyle || []) };\r\n if (this.props.color) {\r\n labelStyle = { color: this.props.color, ...(labelStyle || []) };\r\n }\r\n\r\n return (\r\n \r\n {this.props.label}\r\n \r\n );\r\n }\r\n}\r\nexport * from './LabelStyle';","import * as React from 'react';\r\nimport { RvLabel, LabelStyle } from '../Label/Label';\r\nimport '../../App.css';\r\nimport { Grid } from 'semantic-ui-react';\r\nimport { DataDisplayProps } from './IDataDisplayProps';\r\nimport { CurrencyDisplayStyle, FormattedCurrency } from './FormattedCurrency';\r\nimport glamorous from 'glamorous';\r\n\r\nconst LabelData = glamorous(Grid.Column) ({\r\n textAlign: 'left'\r\n});\r\n\r\nconst ValueData = glamorous(Grid.Column) ({\r\n textAlign: 'left',\r\n alignItems: 'center'\r\n});\r\n\r\nconst TabbedDisplay = `TabbedDisplay`;\r\nconst CurrencyWrapper = glamorous.div ({\r\n [`& .${TabbedDisplay}`] : {\r\n paddingLeft: '25px !important'\r\n }\r\n});\r\n\r\ninterface DataDisplay {\r\n isHidden: boolean;\r\n}\r\n\r\nexport interface CurrencyDisplayProps extends DataDisplayProps {\r\n value?: number;\r\n displayStyle?: CurrencyDisplayStyle;\r\n format?: string; // an optional currency format string\r\n style?: LabelStyle;\r\n tabbed?: boolean;\r\n}\r\n\r\nexport class CurrencyDisplay extends React.Component implements DataDisplay {\r\n hiddenOnEmpty: boolean;\r\n isHidden: boolean;\r\n styleList: Array = [' ', ' ', 'decimal', ' '];\r\n\r\n // tslint:disable-next-line:no-any\r\n constructor(props: CurrencyDisplayProps, context?: any) {\r\n super(props, context);\r\n // default to true if not set\r\n this.hiddenOnEmpty = (this.props.hiddenOnEmpty == null ? true : this.props.hiddenOnEmpty);\r\n }\r\n\r\n public render() {\r\n this.isHidden = this.props.value == null && this.hiddenOnEmpty;\r\n if (this.isHidden) {\r\n return null;\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","import { fetchEventSource } from '@microsoft/fetch-event-source';\r\nimport axios from 'axios';\r\nimport { addUserAIActivity, getAIAccessType, UserAIAccessType } from '../Dashboard/userAIActivity/UserAIActivityRepositories';\r\n\r\n\r\ntype AIRequest = {\r\n prompt: string;\r\n}\r\n\r\nconst api_key = 'sk-proj-IHuhlcI1qz4f5amX18SXT3BlbkFJH0rQ1j2W7R71MiykDBKb';\r\n \r\nexport const ai_request = (request: AIRequest, respondWith: any) => {\r\n \r\n console.log('Request:', request);\r\n\r\n const systemMessage = [\r\n { role: 'system', content: 'Remove lines with ``` from the response start and response end.' }\r\n ];\r\n\r\n const messages = [\r\n ...systemMessage,\r\n { role: 'user', content: request.prompt }\r\n ];\r\n\r\n const openAiOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${api_key}`,\r\n 'gpt-4o': 'org-lO8P5GN457AhwHGnDd5rIhbp',\r\n 'Project': 'proj_3Ce7YpULhDWBCtut6WCnaMjj'\r\n },\r\n body: JSON.stringify({\r\n model: 'gpt-4o',\r\n temperature: 0.7,\r\n max_tokens: 4000,\r\n messages,\r\n })\r\n };\r\n \r\n respondWith.string((signal: any) => window.fetch('https://api.openai.com/v1/chat/completions', { signal, ...openAiOptions })\r\n .then(async (response) => {\r\n if (response) {\r\n const data = await response.json();\r\n if (data.error) {\r\n throw new Error(`${data.error.type}: ${data.error.message}`);\r\n } else if (response.ok) {\r\n // Extract the response content from the data returned by the API\r\n return data?.choices[0]?.message?.content?.trim();\r\n }\r\n } else {\r\n throw new Error('Failed to communicate with the ChatGPT API');\r\n }\r\n })\r\n );\r\n};\r\n\r\n\r\n// This example stores the API key in the client side integration. This is not recommended for any purpose.\r\n// Instead, an alternate method for retrieving the API key should be used.\r\n// const api_key = '';\r\n\r\nexport const streamingAIRequest = (request: any, respondWith: any) => {\r\n respondWith.stream((signal: any, streamMessage: any) => {\r\n\r\n // Adds each previous query and response as individual messages\r\n const conversation = request.thread.flatMap((event: any) => {\r\n if (event.response) {\r\n return [\r\n { role: 'user', content: event.request.query },\r\n { role: 'assistant', content: event.response.data }\r\n ];\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n // System messages provided by the plugin to format the output as HTML content.\r\n const pluginSystemMessages = request.system.map((content: any) => ({\r\n role: 'system',\r\n content\r\n }));\r\n\r\n const systemMessages = [\r\n ...pluginSystemMessages,\r\n // Additional system messages to control the output of the AI\r\n { role: 'system', content: 'Remove lines with ``` from the response start and response end.' }\r\n ]\r\n\r\n // Forms the new query sent to the API\r\n const content = request.context.length === 0 || conversation.length > 0\r\n ? request.query\r\n : `Question: ${request.query} Context: \"\"\"${request.context}\"\"\"`;\r\n\r\n const messages = [\r\n ...conversation,\r\n ...systemMessages,\r\n { role: 'user', content }\r\n ];\r\n\r\n const requestBody = {\r\n model: 'gpt-4o',\r\n temperature: 0.7,\r\n max_tokens: 800,\r\n messages,\r\n stream: true\r\n };\r\n\r\n const openAiOptions = {\r\n signal,\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${api_key}`,\r\n 'gpt-4o': 'org-lO8P5GN457AhwHGnDd5rIhbp',\r\n 'Project': 'proj_3Ce7YpULhDWBCtut6WCnaMjj'\r\n },\r\n body: JSON.stringify(requestBody)\r\n };\r\n\r\n const onopen = async (response: any) => {\r\n if (response) {\r\n addUserAIActivity({\r\n accessType: getAIAccessType(UserAIAccessType.CRMTextEditor),\r\n accessSubType: 'CRM Response Email',\r\n question: request.prompt\r\n })\r\n\r\n const contentType = response.headers.get('content-type');\r\n if (response.ok && contentType?.includes('text/event-stream')) {\r\n return;\r\n } else if (contentType?.includes('application/json')) {\r\n const data = await response.json();\r\n if (data.error) {\r\n throw new Error(`${data.error.type}: ${data.error.message}`);\r\n }\r\n }\r\n } else {\r\n throw new Error('Failed to communicate with the ChatGPT API');\r\n }\r\n };\r\n\r\n // This function passes each new message into the plugin via the `streamMessage` callback.\r\n const onmessage = (ev: any) => {\r\n const data = ev.data;\r\n if (data !== '[DONE]') {\r\n const parsedData = JSON.parse(data);\r\n const firstChoice = parsedData?.choices[0];\r\n const message = firstChoice?.delta?.content;\r\n if (message) {\r\n streamMessage(message);\r\n }\r\n }\r\n };\r\n\r\n const onerror = (error: any) => {\r\n // Stop operation and do not retry by the fetch-event-source\r\n throw error;\r\n };\r\n\r\n // Use microsoft's fetch-event-source library to work around the 2000 character limit\r\n // of the browser `EventSource` API, which requires query strings\r\n\r\n return fetchEventSource('https://api.openai.com/v1/chat/completions', {\r\n ...openAiOptions,\r\n openWhenHidden: true,\r\n onopen,\r\n onmessage,\r\n onerror\r\n });\r\n\r\n });\r\n};\r\n\r\ntype ChatGptResponseData = {\r\n id: string;\r\n object: string;\r\n created: number;\r\n model: string;\r\n choices: Choice[];\r\n usage: Usage;\r\n system_fingerprint: string;\r\n};\r\n\r\ntype Choice = {\r\n index: number;\r\n message: Message;\r\n logprobs: null;\r\n finish_reason: string;\r\n};\r\n\r\ntype Message = {\r\n role: string;\r\n content: string;\r\n refusal: null;\r\n};\r\n\r\ntype Usage = {\r\n prompt_tokens: number;\r\n completion_tokens: number;\r\n total_tokens: number;\r\n};\r\n\r\nexport type ChatGptResponseParamsMessage = {\r\n role: 'system' | 'user';\r\n content: string | any;\r\n};\r\n\r\ntype ChatGptResponseParams = {\r\n messages: ChatGptResponseParamsMessage[];\r\n};\r\n\r\n\r\nexport async function getResponseFromApi(params: ChatGptResponseParams) {\r\n try {\r\n const result = await axios.post(\r\n 'https://api.openai.com/v1/chat/completions',\r\n {\r\n model: 'gpt-4o',\r\n temperature: 0.7,\r\n max_tokens: 4000,\r\n messages: params.messages\r\n },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer sk-proj-IHuhlcI1qz4f5amX18SXT3BlbkFJH0rQ1j2W7R71MiykDBKb`,\r\n 'gpt-4o': 'org-lO8P5GN457AhwHGnDd5rIhbp',\r\n 'Project': 'proj_3Ce7YpULhDWBCtut6WCnaMjj',\r\n },\r\n }\r\n );\r\n\r\n return result.data;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n \r\n // Add a return statement here\r\n return null;\r\n \r\n}\r\n\r\nexport async function getResponseFromApiMini(params: ChatGptResponseParams) {\r\n try {\r\n const result = await axios.post(\r\n 'https://api.openai.com/v1/chat/completions',\r\n {\r\n model: 'gpt-4o-mini',\r\n temperature: 0.7,\r\n max_tokens: 100_000,\r\n messages: params.messages\r\n },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer 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`,\r\n // 'gpt-4o': 'org-lO8P5GN457AhwHGnDd5rIhbp',\r\n 'Project': 'proj_RLW24TbF2hBnd37owt4UmhH0',\r\n },\r\n }\r\n );\r\n\r\n return result.data;\r\n\r\n} catch (error) {\r\n console.error(error);\r\n}\r\n\r\n// Add a return statement here\r\nreturn null;\r\n\r\n}","import * as React from 'react';\r\nimport glamorous from 'glamorous';\r\nimport { browserHistory } from './AppContent';\r\n\r\n// tslint:disable-next-line: no-any\r\nconst ErrorWrapper = glamorous.div<{ theme?: any }>((props) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexFlow: 'column wrap',\r\n flex: 1,\r\n [`& ${`h1`}`] : {\r\n fontSize: '186px',\r\n fontWeight: 200,\r\n margin: '0px',\r\n color: props.theme.BrandColors.TemplatePrimary,\r\n backgroundClip: 'text',\r\n textTransform: 'uppercase',\r\n },\r\n [`& ${`h2`}`] : {\r\n fontSize: '33px',\r\n fontWeight: 200,\r\n textTransform: 'uppercase',\r\n letterSpacing: '3px',\r\n },\r\n}));\r\n\r\nexport interface ErrorProps {\r\n\r\n}\r\n\r\ninterface ErrorState {\r\n\r\n}\r\n\r\nexport class PageNotFound extends React.Component {\r\n\r\n constructor(props: ErrorProps, context?: ErrorState) {\r\n super(props, context);\r\n this.goToHome = this.goToHome.bind(this);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n

404

\r\n

oops! nothing was found

\r\n

\r\n The page you are looking for might have been removed \r\n had its name changed or is temporarily unavailable.\r\n

\r\n Return to homepage\r\n
\r\n );\r\n }\r\n\r\n// tslint:disable-next-line: no-any\r\n private goToHome(event: any) {\r\n event.preventDefault();\r\n browserHistory.push('/home');\r\n }\r\n\r\n}\r\n","import * as React from 'react';\r\nimport { RvLabel, LabelStyle } from '../Label/Label';\r\nimport '../../App.css';\r\nimport { Grid } from 'semantic-ui-react';\r\nimport { DataDisplayProps } from './IDataDisplayProps';\r\nimport { IntlProvider, FormattedNumber } from 'react-intl';\r\nimport glamorous from 'glamorous';\r\n\r\nconst LabelData = glamorous(Grid.Column)({\r\n textAlign: 'left'\r\n});\r\n\r\nconst ValueData = glamorous(Grid.Column)({\r\n textAlign: 'left'\r\n});\r\n\r\ninterface DataDisplay {\r\n isHidden: boolean;\r\n}\r\n\r\nexport enum NumberDisplayStyle {\r\n Default = 0, // same as Integer\r\n Integer = 1, //\r\n Decimal = 2, // 2 decimal places\r\n Custom = 3\r\n}\r\n\r\ninterface NumberDisplayProps extends DataDisplayProps {\r\n value: number;\r\n displayStyle?: NumberDisplayStyle;\r\n format?: string; // an optional currency format string\r\n style?: LabelStyle;\r\n}\r\n\r\nexport class NumberDisplay extends React.Component implements DataDisplay {\r\n hiddenOnEmpty: boolean;\r\n isHidden: boolean;\r\n\r\n // tslint:disable-next-line:no-any\r\n constructor(props: NumberDisplayProps, context?: any) {\r\n super(props, context);\r\n // default to true if not set\r\n this.hiddenOnEmpty = (this.props.hiddenOnEmpty == null ? true : this.props.hiddenOnEmpty);\r\n }\r\n\r\n public render() {\r\n let twoDecimals = {\r\n minimumFractionDigits: this.props.displayStyle === NumberDisplayStyle.Decimal ? 2 : 0\r\n };\r\n\r\n const HasValue = () => (\r\n \r\n \r\n \r\n );\r\n this.isHidden = this.props.value == null && this.hiddenOnEmpty;\r\n if (this.isHidden) {\r\n return null;\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","import * as React from 'react';\r\nimport { RvStringDisplay } from './StringDisplay';\r\nimport { RvDateTimeDisplay } from './DateTimeDisplay';\r\nimport { CurrencyDisplay } from './CurrencyDisplay';\r\nimport { NumberDisplay } from './NumberDisplay';\r\nimport { CurrencyDisplayStyle } from './FormattedCurrency';\r\nimport { LayoutWidth } from '../Label/LayoutWidth';\r\nimport { DateTimeDisplayStyle } from './FormattedDateTime';\r\n\r\nexport var DataType = {\r\n Default: 0, // string\r\n String: 1, // to verify\r\n Date: 2,\r\n Number: 3, // use the formatter\r\n Currency: 4,\r\n Boolean: 5,\r\n DateTime: 6,\r\n Image: 7,\r\n Percentage: 8,\r\n ContextMenu: 9,\r\n Link: 10,\r\n LongText: 11,\r\n Checkbox: 12,\r\n CurrencyWithoutDecimals: 13,\r\n EditorView: 14,\r\n Duration: 15,\r\n DueDate: 16,\r\n Chips: 17,\r\n ContextMenuStaff: 18,\r\n Rating: 19,\r\n EventCampaignCategory: 20,\r\n MultiLineString: 21,\r\n};\r\n\r\ninterface DisplayModel {\r\n stringFormat: string;\r\n dataType: number; // use the DataTopicType exported from RvDataTopicInfo\r\n currencyDisplayStyle?: CurrencyDisplayStyle;\r\n}\r\n\r\nexport function labelAndValueFormatter (dataType: number, label: string, value: string | Date,\r\n dateFormat?: string, idx?: string) {\r\n\r\n let displayModel: DisplayModel = dateFormat ? getDataFormat(dateFormat) : getDataFormat('');\r\n let numericValue: number = value ? Number.parseFloat(value as string) : 0; \r\n switch (dataType) {\r\n default:\r\n return (\r\n \r\n );\r\n case DataType.Number:\r\n if (displayModel && displayModel.currencyDisplayStyle) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n case DataType.Default:\r\n case DataType.String:\r\n return (\r\n \r\n );\r\n case DataType.Date:\r\n return (\r\n \r\n );\r\n case DataType.Currency:\r\n return (\r\n \r\n );\r\n case DataType.DateTime:\r\n return (\r\n \r\n );\r\n\r\n }\r\n}\r\n\r\nvar getDataFormat = (param: string): DisplayModel => {\r\n let returnValue: DisplayModel = {\r\n stringFormat: '', \r\n dataType: DataType.String, \r\n currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n switch (param) {\r\n case 'N1':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00', dataType: DataType.Number,\r\n currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N2':\r\n returnValue = {\r\n stringFormat: '0:###,###,###', dataType: DataType.Number,\r\n currencyDisplayStyle: CurrencyDisplayStyle.Default\r\n };\r\n break;\r\n case 'N3':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00', dataType: DataType.Number,\r\n currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N4':\r\n returnValue = {\r\n stringFormat: '0:###,###,###', dataType: DataType.Number,\r\n currencyDisplayStyle: CurrencyDisplayStyle.Custom\r\n };\r\n break;\r\n case 'N5':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00;###,###,###.00',\r\n dataType: DataType.Number, currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N6':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00;###,###,###.00',\r\n dataType: DataType.Number, currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N7':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00;###,###,###.00;Nil',\r\n dataType: DataType.Number, currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N8':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00;###,###,###.00;Nil',\r\n dataType: DataType.Number, currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N9':\r\n returnValue = { stringFormat: '', dataType: DataType.Number };\r\n break;\r\n case 'N10':\r\n returnValue = { stringFormat: '', dataType: DataType.Number };\r\n break;\r\n case 'N11':\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00', dataType: DataType.Number,\r\n currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n case 'N12':\r\n returnValue = { stringFormat: '', dataType: DataType.Number };\r\n break;\r\n case 'N13':\r\n returnValue = { stringFormat: '', dataType: DataType.Number };\r\n break;\r\n case 'N14':\r\n returnValue = { stringFormat: '', dataType: DataType.Number };\r\n break;\r\n case 'N15':\r\n returnValue = { stringFormat: '', dataType: DataType.Number };\r\n break;\r\n\r\n case 'D1':\r\n returnValue = { stringFormat: '0:dd/MM/yy', dataType: DataType.Date };\r\n break;\r\n case 'D2':\r\n returnValue = { stringFormat: '0:dddd, dd MMM yy', dataType: DataType.Date };\r\n break;\r\n case 'D3':\r\n returnValue = { stringFormat: '0:dd MMM yyyy', dataType: DataType.Date };\r\n break;\r\n case 'D4':\r\n returnValue = { stringFormat: '0:ddd dd MM yy', dataType: DataType.Date };\r\n break;\r\n case 'D5':\r\n returnValue = { stringFormat: '0:dd MMM yy', dataType: DataType.Date };\r\n break;\r\n case 'D6':\r\n returnValue = { stringFormat: '0:dd/MM/yy', dataType: DataType.Date };\r\n break;\r\n case 'D7':\r\n returnValue = { stringFormat: '0:dddd, dd MMMM yyyy', dataType: DataType.Date };\r\n break;\r\n case 'D8':\r\n returnValue = { stringFormat: '0:dd MMMM yyyy', dataType: DataType.Date };\r\n break;\r\n default:\r\n returnValue = {\r\n stringFormat: '0:###,###,###.00', dataType: DataType.Number,\r\n currencyDisplayStyle: CurrencyDisplayStyle.Decimal\r\n };\r\n break;\r\n }\r\n\r\n return returnValue;\r\n};\r\n","import * as React from 'react';\r\nimport '../App.css';\r\nimport { TooltipHost } from 'office-ui-fabric-react/lib/Tooltip';\r\n\r\nexport interface TooltipProps {\r\n hint?: string;\r\n}\r\n\r\nexport class RvTooltip extends React.Component {\r\n\r\n render() {\r\n\r\n return (\r\n
\r\n {this.props.children}\r\n \r\n {this.props.hint}\r\n \r\n
);\r\n }\r\n}\r\n\r\nexport interface TooltipFabricProps {\r\n hint?: string;\r\n key?: string;\r\n}\r\n\r\n// tslint:disable-next-line:no-any\r\nexport class RvTooltipFabric extends React.Component {\r\n public render(): JSX.Element {\r\n const { \r\n hint,\r\n key\r\n } = this.props;\r\n return (\r\n
\r\n \r\n {this.props.children}\r\n \r\n
\r\n );\r\n }\r\n }\r\n","export enum LayoutWidth {\r\n one = 1,\r\n two = 2,\r\n three = 3,\r\n four = 4,\r\n five = 5,\r\n six = 6,\r\n seven = 7,\r\n eight = 8,\r\n nine = 9,\r\n teen = 10,\r\n eleven = 11,\r\n twelve = 12,\r\n thirteen = 13,\r\n fourteen = 14,\r\n fifteen = 15,\r\n sixteen = 16, \r\n}\r\n","import * as React from 'react';\r\nimport { Input, Form, TextArea } from 'semantic-ui-react';\r\nimport { FormEvent } from 'react';\r\nimport glamorous from 'glamorous';\r\n\r\nconst AppInput = glamorous(Input)({\r\n margin: '1rem',\r\n width: '100%',\r\n maxWidth: '350px',\r\n '& input': {\r\n width: '100%',\r\n },\r\n '& .button': {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n bottom: 0\r\n }\r\n});\r\n\r\ninterface InputProps {\r\n label?: string;\r\n hint?: string;\r\n iconKey?: string;\r\n secure?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n focus?: boolean;\r\n multiline?: boolean;\r\n value?: string;\r\n rows?: number;\r\n error?: boolean;\r\n onChange?: (event?: React.FormEvent) => void;\r\n onKeyDown?: (event: KeyboardEvent) => void;\r\n iconPosition?: 'left';\r\n size?: 'big';\r\n className?: string;\r\n // tslint:disable-next-line:no-any\r\n action?: any | boolean;\r\n type?: 'email' | 'password' | 'text';\r\n}\r\n\r\ninterface InputState {\r\n value?: string;\r\n capsLockOn: boolean;\r\n}\r\n\r\nexport class RvInput extends React.Component {\r\n\r\n // tslint:disable-next-line:no-any\r\n private textInput: any;\r\n\r\n // tslint:disable-next-line:no-any\r\n constructor(props: InputProps, context?: any) {\r\n super(props, context);\r\n this.state = { value: props.defaultValue ? '' : props.defaultValue, capsLockOn: false };\r\n this.onChangeInput = this.onChangeInput.bind(this);\r\n }\r\n\r\n public focus() {\r\n if (this.textInput) {\r\n this.textInput.focus();\r\n }\r\n }\r\n\r\n public render() {\r\n return (\r\n this.props.multiline ? (\r\n
\r\n \r\n )\r\n : (\r\n this.textInput = component}\r\n focus={this.props.focus}\r\n icon={this.props.iconKey}\r\n placeholder={this.props.hint}\r\n type={this.props.secure ? 'password' : this.props.type}\r\n onChange={this.onChangeInput}\r\n onKeyDown={this.onKeyDownInput}\r\n value={this.props.value}\r\n disabled={this.props.disabled}\r\n error={this.props.error}\r\n iconPosition={this.props.iconPosition ? this.props.iconPosition : undefined}\r\n size={this.props.size}\r\n className={this.props.className}\r\n autoCapitalize=\"none\"\r\n action={this.props.action}\r\n />)\r\n );\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n public UNSAFE_componentWillReceiveProps(nextProps: InputProps, nextContext: any): void {\r\n this.setState({ value: nextProps.value });\r\n }\r\n\r\n private onChangeTextArea = (event: FormEvent) => {\r\n var target = event.target as HTMLTextAreaElement;\r\n this.setState({ value: target.value });\r\n if (this.props.onChange) {\r\n this.props.onChange(event);\r\n }\r\n }\r\n\r\n private onChangeInput = (event: React.FormEvent) => {\r\n var target = event.target as HTMLInputElement;\r\n this.setState({ value: target.value });\r\n if (this.props.onChange) {\r\n this.props.onChange(event);\r\n }\r\n }\r\n\r\n private onKeyDownInput = (event: KeyboardEvent) => {\r\n if (this.props.onKeyDown) {\r\n this.props.onKeyDown(event);\r\n }\r\n }\r\n}","import React from 'react';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface NumberFormatCustomProps {\r\n inputRef: (instance: NumberFormat | null) => void;\r\n onChange: (event: { target: { name: string; value: string } }) => void;\r\n name: string;\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport function limitTime(val: any, max: any) {\r\n if (val.length === 1 && val[0] > max[0]) {\r\n val = '0' + val;\r\n }\r\n if (val.length === 2) {\r\n if (Number(val) === 0) {\r\n val = '00';\r\n // this can happen when user paste number\r\n } else if (val > max) {\r\n val = max;\r\n }\r\n }\r\n return val;\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport function timeFormat(val: any) {\r\n let hour = limitTime(val.substring(0, 2), '99');\r\n let minute = limitTime(val.substring(2, 4), '59');\r\n\r\n if (minute === '') {\r\n minute = '000';\r\n }\r\n return hour + (hour.length ? ':' + minute : '');\r\n}\r\n\r\nexport function TimeNumberFormatCustom(prop: NumberFormatCustomProps) {\r\n const { inputRef, onChange, ...other } = prop;\r\n \r\n return (\r\n {\r\n onChange({\r\n target: {\r\n name: prop.name,\r\n value: values.value,\r\n },\r\n });\r\n }}\r\n format={timeFormat}\r\n />\r\n );\r\n}","export enum ChangedPageEnum {\r\n DashboardLayoutConfiguration = 'DashboardLayoutConfiguration'\r\n}","import * as React from 'react';\r\nimport { Grid, Sidebar, Menu, Segment, SemanticICONS, MenuItem, Icon } from 'semantic-ui-react';\r\nimport { ButtonProps } from './Button';\r\nimport glamorous from 'glamorous';\r\nimport '../index.css';\r\n// import { getGlobalHistory } from './GlobalHistory';\r\nimport { browserHistory } from './AppContent';\r\nimport { Router, Link } from 'react-router-dom';\r\nimport { ChangedPageEnum } from './common/common';\r\nimport DialogBox from '../Dashboard/Component/DialogBox';\r\n\r\nconst SidebarPushable = glamorous(Sidebar.Pushable)({\r\n width: '100%',\r\n});\r\n\r\nconst DrawerGrid = glamorous(Grid)({\r\n margin: '0 !important',\r\n width: '100%'\r\n});\r\n\r\n// tslint:disable-next-line:no-any\r\nconst SideBarMenu = glamorous(Sidebar)<{theme?: any}> ((props) => ({\r\n padding: '10px 20px',\r\n // top: '95px !important',\r\n minWidth: '200px',\r\n // width: 'auto !important',\r\n [`& .${`button`}`] : {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n background: 'transparent',\r\n fontWeight: props.theme.FontWeight.Normal + ' !important',\r\n color: props.theme.BrandColors.TemplatePrimary,\r\n marginTop: 10,\r\n fontSize: props.theme.FontSize.PX.size1,\r\n width: '100%',\r\n ':hover' : {\r\n background: 'transparent'\r\n },\r\n },\r\n [`& .${`icon`}`] : {\r\n fontSize: props.theme.FontSize.EM.size1,\r\n // marginBottom: '7px !important',\r\n // margin: '0 !important'\r\n },\r\n [`& .${`input`}`] : {\r\n fontSize: props.theme.FontSize.REM.size1,\r\n },\r\n [`& .${`link`}`] : {\r\n color: props.theme.BrandColors.TemplatePrimary,\r\n marginBottom: '10px',\r\n '::before': {\r\n height: 'auto !important',\r\n }\r\n } \r\n}));\r\n\r\nconst SegmentContainer = glamorous(Segment)({\r\n padding: '0 !important',\r\n flex: 1,\r\n display: 'flex',\r\n [`& > ${`div`}`] : {\r\n width: '100%',\r\n } \r\n});\r\n\r\n// tslint:disable-next-line:no-any\r\nconst SidebarPusher = glamorous(Sidebar.Pusher)<{theme?: any}>((props) => ({\r\n display: 'flex',\r\n flexFlow: 'column wrap', \r\n}));\r\n\r\ninterface DrawerProps {\r\n visible?: boolean;\r\n links?: Array;\r\n // isOpen?: boolean;\r\n orientation?: 'left' | 'right' | 'top' | 'bottom';\r\n page?: string;\r\n // tslint:disable-next-line:no-any\r\n drawerContent?: any;\r\n animation?: 'overlay' | 'push' | 'scale down' | 'uncover' | 'slide out' | 'slide along';\r\n width?: 'very thin' | 'thin' | 'wide' | 'very wide';\r\n handleSidebarHide?: (value: boolean) => void;\r\n className?: string;\r\n}\r\nexport interface LinkProps {\r\n iconKey?: SemanticICONS;\r\n label?: string;\r\n // tslint:disable-next-line:no-any\r\n linkTo?: any;\r\n visible: boolean;\r\n onClick?: (event: React.MouseEvent, data: ButtonProps) => void;\r\n}\r\n\r\ninterface DrawerState {\r\n visible?: boolean;\r\n showConfirm: boolean;\r\n linkTo?: string;\r\n}\r\nexport class RvMainDrawer extends React.Component {\r\n\r\n constructor(props: DrawerProps, context?: DrawerState) {\r\n super(props, context);\r\n this.handleSidebarHide = this.handleSidebarHide.bind(this);\r\n this.onLeaveConfirm = this.onLeaveConfirm.bind(this);\r\n this.state = {\r\n visible: this.props.visible,\r\n showConfirm: false\r\n };\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n public UNSAFE_componentWillReceiveProps(nextProps: DrawerProps, nextContext: any): void {\r\n // this.NavigateTo = this.NavigateTo.bind(this);\r\n if (nextProps.visible !== this.state.visible) {\r\n this.setState({visible: nextProps.visible});\r\n }\r\n }\r\n\r\n render() { \r\n return (\r\n <>\r\n {this.state.showConfirm && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n {this.props.links ? this.props.links\r\n .filter(link => link.visible)\r\n .map((link, idx) => {\r\n return (\r\n \r\n {\r\n // browserHistory.push(link.linkTo);\r\n // // this.NavigateTo(link.linkTo);\r\n // }}\r\n label={link.label}\r\n link={true}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n }) :\r\n undefined}\r\n
\r\n
\r\n {this.props.drawerContent}\r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n private onLeaveConfirm(agree: boolean) {\r\n if (agree && this.state.linkTo) {\r\n localStorage.removeItem(ChangedPageEnum.DashboardLayoutConfiguration);\r\n browserHistory.push(this.state.linkTo);\r\n }\r\n this.setState({\r\n showConfirm: false\r\n });\r\n }\r\n\r\n private handleSidebarHide() {\r\n if (this.props.handleSidebarHide) {\r\n this.setState({visible: false});\r\n this.props.handleSidebarHide(false);\r\n }\r\n }\r\n/* private NavigateTo(link: string) {\r\n console.log(' Navigating to:', link);\r\n //Redirect(link);\r\n getHistory().push(link);\r\n }\r\n */\r\n}\r\n","import * as React from 'react';\r\n// import glamorous from 'glamorous';\r\nimport { MatterTerminology } from '../../MatterTerminology';\r\nimport { linkToPage } from '../../App';\r\nimport { graphql } from 'react-apollo';\r\nimport gql from 'graphql-tag';\r\nimport { ApolloError } from 'apollo-client';\r\nimport { RvLoader } from '../Loader';\r\nimport { RvMainDrawer, LinkProps } from '../MainDrawer';\r\nimport { UserFeature, UserFeatureEnum } from '../../types/UserFeature';\r\nimport { WithTranslation, withTranslation } from 'react-i18next';\r\nimport { TranslationTextList } from '../../locales/common';\r\n\r\n// tslint:disable-next-line:no-any\r\n/* const StyledAppMenu = glamorous.div<{ theme?: any }>((props) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingRight: '0 !important',\r\n [`& .${`button`}`]: {\r\n color: props.theme.BrandColors.TemplatePrimary,\r\n backgroundColor: props.theme.NeutralColors.BackgroundWhite,\r\n fontSize: props.theme.FontSize.EM.size1,\r\n padding: '12.54px 12.25px 13.67px 13px',\r\n textAlign: 'center',\r\n height: '48.19px',\r\n width: '48px',\r\n border: '1px solid' + props.theme.NeutralColors.LightBlue1,\r\n borderRadius: '4px',\r\n boxShadow: '0 0 4px 0 ' + props.theme.NeutralColors.BackgroundGrey2,\r\n marginRight: '10px'\r\n }\r\n }));\r\n */\r\nexport enum TasksMenu {\r\n TASKS = 0,\r\n PHONE_CALLS,\r\n HIDDEN\r\n}\r\n\r\nconst initialState = {\r\n show: false\r\n};\r\ntype AppMenuState = Readonly;\r\nexport interface AppMenuProps extends WithTranslation {\r\n show: boolean;\r\n}\r\ninterface QueryResult {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n error?: ApolloError;\r\n appUser: AppUser;\r\n}\r\n\r\nexport interface AppUser {\r\n isAdministrator: boolean;\r\n isInternalAdmin: boolean;\r\n canViewDashboard: boolean;\r\n}\r\n\r\nexport interface QAppMenuProps extends AppMenuProps {\r\n id?: string;\r\n data?: QueryResult;\r\n handleSidebarHide?: (value: boolean) => void;\r\n}\r\n\r\nclass AppMenuDrawer extends React.Component {\r\n // readonly state: AppMenuState = initialState;\r\n\r\n constructor(props: AppMenuProps, state: AppMenuState) {\r\n super(props, state);\r\n // this.onMenuSelection = this.onMenuSelection.bind(this);\r\n this.toggleVisibility = this.toggleVisibility.bind(this);\r\n this.handleSidebarHide = this.handleSidebarHide.bind(this);\r\n this.toggleTaskAndPhone = this.toggleTaskAndPhone.bind(this);\r\n this.state = { show: this.props.show };\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(\r\n nextProps: AppMenuProps,\r\n nextContext: AppMenuState\r\n ): void {\r\n this.setState({ show: nextProps.show });\r\n }\r\n\r\n render() {\r\n\r\n const { t } = this.props as {\r\n t: (key: keyof TranslationTextList) => string;\r\n };\r\n\r\n var drawerLinks: Array;\r\n if (this.state.show) {\r\n if (\r\n !this.props.data ||\r\n !this.props.data.appUser ||\r\n this.props.data.loading\r\n ) {\r\n return ;\r\n }\r\n // tslint:disable-next-line: no-console\r\n console.log(this.props.data);\r\n // at the moment only admins can view dashboard\r\n this.props.data.appUser = {\r\n canViewDashboard: this.props.data.appUser\r\n ? this.props.data.appUser.isAdministrator\r\n : false,\r\n isAdministrator: this.props.data.appUser\r\n ? this.props.data.appUser.isAdministrator\r\n : false,\r\n isInternalAdmin: this.props.data.appUser\r\n ? this.props.data.appUser.isInternalAdmin\r\n : false \r\n };\r\n drawerLinks = [\r\n // { label: MatterTerminology.Home,\r\n // iconKey: 'home',\r\n // linkTo: linkToPage('home'),\r\n // visible: this.props.data.appUser ? this.props.data.appUser.isAdministrator : false,\r\n // // onClick: this.toggleVisibility.bind(this)\r\n // },\r\n {\r\n label: MatterTerminology.ClientDashboard,\r\n iconKey: 'vcard',\r\n linkTo: linkToPage('clientDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasClientDashboard) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.UserDashboard,\r\n iconKey: 'object group outline',\r\n linkTo: linkToPage('userDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasUserDashboard)\r\n },\r\n {\r\n label: MatterTerminology.FirmDashboard,\r\n iconKey: 'chart line',\r\n linkTo: linkToPage('dashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasFirmDashboard) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.FeeEarnerDashboard,\r\n iconKey: 'chart area',\r\n linkTo: linkToPage('feeEarnerDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasShowFeeEarnerDashboard) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.AttorneyDashboard,\r\n iconKey: 'chart bar outline',\r\n linkTo: linkToPage('lawyerDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasIPAttorneyDashboard)\r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.MattersSummary,\r\n iconKey: 'list layout',\r\n linkTo: linkToPage('matterSummary'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasMatterSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.MatterManagement,\r\n iconKey: 'tasks',\r\n linkTo: linkToPage('matterManagement'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasBulkMatterManagement) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.ClientsAndContacts,\r\n iconKey: 'users',\r\n linkTo: linkToPage('clientsAndContacts'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasNameSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.ClientContactNotes,\r\n iconKey: 'sticky note',\r\n linkTo: linkToPage('notesSummary'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasNotesSummary)\r\n },\r\n {\r\n label: MatterTerminology.Referrers,\r\n iconKey: 'handshake outline',\r\n linkTo: linkToPage('referrers'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasReferrerSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.EventsAndCampaigns,\r\n iconKey: 'calendar alternate outline',\r\n linkTo: linkToPage('eventsAndCampaigns'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasEventsAndCampaignsSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.Staff,\r\n iconKey: 'user outline',\r\n linkTo: linkToPage('staffSummary'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasStaffSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.Timesheet,\r\n iconKey: 'hourglass outline',\r\n linkTo: linkToPage('timesheet'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasTimesheetSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: t('EnquiriesDashboard'),\r\n iconKey: 'pie graph',\r\n linkTo: linkToPage('enquiriesDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasLeadsDashboard) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: t('Enquiries'),\r\n iconKey: 'id badge outline',\r\n linkTo: linkToPage('enquiriesSummary'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasLeadsSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.MailingList,\r\n iconKey: 'mail outline',\r\n linkTo: linkToPage('mailingList'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasMailingList) \r\n },\r\n {\r\n label: MatterTerminology.TaskDashboard,\r\n iconKey: 'chart bar',\r\n linkTo: linkToPage('taskDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasTaskDashboard) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n // tslint:disable-next-line: max-line-length\r\n label: this.toggleTaskAndPhone() === TasksMenu.TASKS ? MatterTerminology.Tasks : this.toggleTaskAndPhone() === TasksMenu.PHONE_CALLS ? MatterTerminology.PhoneCalls : MatterTerminology.Tasks,\r\n // tslint:disable-next-line: max-line-length\r\n iconKey: this.toggleTaskAndPhone() === TasksMenu.TASKS ? 'ordered list' : this.toggleTaskAndPhone() === TasksMenu.PHONE_CALLS ? 'phone' : 'ordered list',\r\n linkTo: linkToPage('tasksSummary'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasTaskSummary) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.Reports,\r\n iconKey: 'file alternate outline',\r\n linkTo: linkToPage('reports'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasLicencedReports) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.Innography,\r\n iconKey: 'external',\r\n linkTo: linkToPage('innography'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasInnographyLink) \r\n },\r\n {\r\n label: MatterTerminology.ClientSense,\r\n iconKey: 'external',\r\n linkTo: linkToPage('clientsense'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasClientSenseLink) \r\n },\r\n {\r\n label: MatterTerminology.Admin,\r\n iconKey: 'settings',\r\n linkTo: linkToPage('admin'),\r\n visible: (UserFeature.HasAccess(UserFeatureEnum.hasAdminDashboardPage) || this.props.data.appUser.isInternalAdmin)\r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.Configuration,\r\n iconKey: 'configure',\r\n linkTo: linkToPage('configurationDashboard'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasConfigurationMaintenance) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.GeneralMaterial,\r\n iconKey: 'briefcase',\r\n linkTo: linkToPage('generalMaterial'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasGeneralMaterial) \r\n // onClick: this.toggleVisibility.bind(this)\r\n },\r\n {\r\n label: MatterTerminology.ClientDocuments,\r\n iconKey: 'file text',\r\n linkTo: linkToPage('clientDocuments'),\r\n visible: UserFeature.HasAccess(UserFeatureEnum.hasClientDocuments) \r\n // onClick: this.toggleVisibility.bind(this)\r\n }\r\n ];\r\n } else {\r\n drawerLinks = new Array();\r\n }\r\n return (\r\n /*
\r\n \r\n */\r\n\r\n \r\n {this.props.children}\r\n \r\n /* \r\n
\r\n */\r\n );\r\n }\r\n\r\n // private onMenuSelection() {\r\n // this.toggleVisibility();\r\n // }\r\n\r\n private toggleVisibility() {\r\n this.setState(state => ({ show: !state.show }));\r\n }\r\n\r\n private handleSidebarHide(value: boolean) {\r\n if (this.props.handleSidebarHide) {\r\n this.props.handleSidebarHide(value);\r\n }\r\n }\r\n private toggleTaskAndPhone() {\r\n if (\r\n // UserFeature.HasAccess(UserFeatureEnum.hasMatterTasks) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasArchiveMatter) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasBillMatter) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasCloseMatter) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasDeleteTask) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasMatterEmailPersonActing) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasMatterEmailPersonResponsible) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasFollowUpMatterTask) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasWriteOffDebtors) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasWriteOffWIP) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasTransferMatterTrust) ||\r\n // UserFeature.HasAccess(UserFeatureEnum.hasTaskDetail) ||\r\n UserFeature.HasAccess(UserFeatureEnum.hasAdHocTask)\r\n ) {\r\n return TasksMenu.TASKS;\r\n } else if (\r\n UserFeature.HasAccess(UserFeatureEnum.hasPhoneTask)\r\n ) {\r\n return TasksMenu.PHONE_CALLS;\r\n } else {\r\n return TasksMenu.HIDDEN;\r\n }\r\n }\r\n}\r\n\r\nconst UserData = gql`\r\n query UserData {\r\n appUser {\r\n isAdministrator\r\n isInternalAdmin\r\n }\r\n }\r\n`;\r\n\r\n// tslint:disable-next-line:no-any\r\nconst AppMenu = graphql(UserData, {\r\n options: { variables: {} /*fetchPolicy: 'cache-only'*/ }\r\n})(AppMenuDrawer);\r\n\r\nexport default withTranslation()(AppMenu);\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { makeStyles } from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n strengthContainer: {\r\n display: 'flex',\r\n '& .bar': {\r\n border: '1px solid rgb(221, 221, 221)',\r\n borderRadius: '5px',\r\n flex: 1,\r\n margin: '0 2px',\r\n }\r\n },\r\n infoContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n fontSize: '12px',\r\n paddingTop: 5\r\n },\r\n suggestion: {\r\n\r\n },\r\n strength: {\r\n\r\n }\r\n});\r\n\r\nexport enum StrengthEnum {\r\n ZERO = 0,\r\n ONE,\r\n TWO,\r\n THREE,\r\n FOUR,\r\n FIVE\r\n}\r\ninterface PasswordStrengthIndicatorProps {\r\n name: string;\r\n value: string;\r\n minLenght?: number;\r\n minStrength?: number;\r\n className?: string;\r\n onPasswordChange?: (\r\n hasUpperCase: boolean,\r\n hasLowerCase: boolean,\r\n hasNumber: boolean,\r\n hasSpecial: boolean,\r\n hasLength: boolean,\r\n strengths: number, // value: 0-5\r\n name: string\r\n ) => void;\r\n}\r\n\r\ninterface PasswordStrengthIndicatorState {\r\n strengths: StrengthEnum;\r\n}\r\n\r\nexport const defaultPasswordLength = 7;\r\n\r\nexport const PasswordStrengthIndicator: React.FC = ( props ) => {\r\n\r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n strengths: 0,\r\n });\r\n\r\n const checkNumber = (value: string) => {\r\n return new RegExp(/[0-9]/).test(value);\r\n };\r\n\r\n const checkUppercase = (value: string) => {\r\n return new RegExp(/[A-Z]/).test(value);\r\n };\r\n\r\n const checkLowerCase = (value: string) => {\r\n return new RegExp(/[a-z]/).test(value);\r\n };\r\n\r\n const checkSpecial = (value: string) => {\r\n return new RegExp(/[!#@$%^&*)(+=._-]/).test(value);\r\n };\r\n\r\n useEffect(() => {\r\n \r\n setState((prevState) => {\r\n\r\n let strengths = 0;\r\n let hasUpperCase = false;\r\n let hasLowerCase = false;\r\n let hasNumber = false;\r\n let hasSpecial = false;\r\n let hasLength = false;\r\n\r\n if (props.value.length >= (props.minLenght ? props.minLenght : defaultPasswordLength)) { \r\n strengths++;\r\n hasLength = true;\r\n }\r\n if (checkUppercase(props.value)) {\r\n strengths++;\r\n hasUpperCase = true;\r\n }\r\n if (checkLowerCase(props.value)) {\r\n strengths++;\r\n hasLowerCase = true;\r\n }\r\n if (checkNumber(props.value)) {\r\n strengths++;\r\n hasNumber = true;\r\n }\r\n if (checkSpecial(props.value)) {\r\n strengths++;\r\n hasSpecial = true;\r\n }\r\n\r\n if (props.onPasswordChange) {\r\n props.onPasswordChange(\r\n hasUpperCase,\r\n hasLowerCase,\r\n hasNumber,\r\n hasSpecial,\r\n hasLength,\r\n strengths,\r\n props.name\r\n );\r\n }\r\n\r\n return {\r\n ...prevState,\r\n strengths,\r\n };\r\n });\r\n\r\n // tslint:disable-next-line: align\r\n }, [props.value]);\r\n\r\n const defaultColor = 'rgb(221, 221, 221)';\r\n\r\n const strengthColor = (count: StrengthEnum) => {\r\n\r\n if (count === StrengthEnum.ZERO) {\r\n return defaultColor;\r\n }\r\n \r\n if (count === StrengthEnum.ONE) {\r\n return 'red';\r\n }\r\n\r\n if (count === StrengthEnum.TWO) {\r\n return 'yellow';\r\n }\r\n\r\n if (count === StrengthEnum.THREE) {\r\n return 'orange';\r\n }\r\n\r\n if (count === StrengthEnum.FOUR) {\r\n return 'lightgreen';\r\n }\r\n\r\n if (count === StrengthEnum.FIVE) {\r\n return 'green';\r\n }\r\n \r\n return defaultColor;\r\n };\r\n\r\n const getSuggestion = (value: string) => {\r\n\r\n let suggestion = undefined;\r\n\r\n if (value.length < (props.minLenght ? props.minLenght : defaultPasswordLength)) {\r\n suggestion = `Minimum required length is ${props.minLenght ? props.minLenght : defaultPasswordLength}`; \r\n } else if (!checkUppercase(value) && (props.minStrength && props.minStrength >= 2)) {\r\n suggestion = `At least 1 capital letter`;\r\n } else if (!checkLowerCase(value) && (props.minStrength && props.minStrength >= 3)) {\r\n suggestion = `At least 1 small letter`;\r\n } else if (!checkSpecial(value) && (props.minStrength && props.minStrength >= 4)) {\r\n suggestion = `At least 1 special character`;\r\n } else if (!checkNumber(value) && (props.minStrength && props.minStrength >= 5)) {\r\n suggestion = `At least 1 number`;\r\n }\r\n\r\n return suggestion;\r\n };\r\n\r\n const getWordStrength = () => {\r\n \r\n if (state.strengths === StrengthEnum.ONE) {\r\n return 'Basic';\r\n } else if (state.strengths === StrengthEnum.TWO) {\r\n return 'Good';\r\n } else if (state.strengths === StrengthEnum.THREE) {\r\n return 'Strong';\r\n } else if (state.strengths === StrengthEnum.FOUR) {\r\n return 'Stronger';\r\n } else if (state.strengths === StrengthEnum.FIVE) {\r\n return 'Very Strong';\r\n }\r\n return undefined;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n = StrengthEnum.ONE ? strengthColor(state.strengths) : defaultColor}} \r\n />\r\n = StrengthEnum.TWO ? strengthColor(state.strengths) : defaultColor}} \r\n />\r\n = StrengthEnum.THREE ? strengthColor(state.strengths) : defaultColor}} \r\n />\r\n = StrengthEnum.FOUR ? strengthColor(state.strengths) : defaultColor}} \r\n />\r\n = StrengthEnum.FIVE ? strengthColor(state.strengths) : defaultColor}} \r\n />\r\n
\r\n
\r\n
\r\n {props.value.length > 0 && getSuggestion(props.value)}\r\n
\r\n
\r\n {getWordStrength()}\r\n
\r\n
\r\n
\r\n \r\n );\r\n};","import { createStyles, Theme, withStyles, WithStyles } from '@material-ui/core';\r\nimport * as React from 'react';\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n wrapper: {\r\n display: 'flex',\r\n flex: 1,\r\n flexDirection: 'column',\r\n padding: '0 15px',\r\n position: 'relative',\r\n },\r\n});\r\n\r\ninterface WrapperProps extends WithStyles {\r\n className?: string;\r\n}\r\n\r\nclass Wrapper extends React.Component {\r\n // tslint:disable-next-line:no-any\r\n constructor(props: WrapperProps, context?: any) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n
\r\n {this.props.children}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:no-any\r\nexport default withStyles(styles as any, { withTheme: true })(Wrapper as any) as any;","import { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport Wrapper from '../components/Wrapper';\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n frame: {\r\n border: 'none', \r\n bottom: '0px',\r\n height: '100%', \r\n left: '0px', \r\n margin: 0, \r\n padding: 0,\r\n position: 'relative', \r\n right: '0px', \r\n top: '0px', \r\n width: '100%', \r\n },\r\n});\r\n\r\ninterface UrlViewerProps extends WithStyles {\r\n className?: string;\r\n match: {\r\n params: {\r\n url: string\r\n }\r\n };\r\n // tslint:disable-next-line:no-any\r\n controlAboveFrame?: React.ReactElement;\r\n}\r\n\r\nclass UrlViewer extends React.Component {\r\n // tslint:disable-next-line:no-any\r\n constructor(props: UrlViewerProps, context?: any) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n // tslint:disable-next-line:no-console\r\n console.log('@props:', this.props);\r\n const { url } = this.props.match.params;\r\n const { classes } = this.props; \r\n // tslint:disable-next-line:no-console\r\n console.log('@rpt:', this.props.match.params.url);\r\n return (\r\n \r\n {this.props.controlAboveFrame}\r\n