{"version":3,"sources":["lib.app/routes/hmUrl.ts","lib.app/routes/navigation.ts","lib.app/routes/navigator.ts","components/HmDetail.tsx","components/HmLoading.tsx","components/HmPhone.tsx","components/HmEmail.tsx","components/HmContact.tsx","components/HmMoney.tsx","components/HmAdminPanel.tsx","components/ReadonlyDataAlert.tsx","components/CollapsePanel.tsx","components/ActionToolbar.tsx","components/SwitchView.tsx","components/index.ts","hooks/useDetail.ts","components/HmLogo.tsx","components/layouts/Splash.tsx","hooks/useHashObserver.ts","components/layouts/ContentSidebar.tsx","components/layouts/HousingManager.tsx","components/layouts/index.ts","components/layouts/ContentSimple.tsx","lib.core/dates/index.ts","components/layouts/Portal.tsx","hooks/formUtils/initializers/checkInitializer.ts","hooks/formUtils/initializers/checkListInitializer.ts","hooks/formUtils/initializers/formatDateInitializer.ts","hooks/formUtils/initializers/inputInitializer.ts","hooks/formUtils/initializers/numberInitializer.ts","hooks/formUtils/initializers/selectInitializer.tsx","hooks/formUtils/initializers/valueInitializer.ts","hooks/useFilter.ts","lib.core/merge.ts","components/HmDialog.tsx","components/layouts/Layout.tsx","lib.core/matching/matchers.js","components/forms/HmSubmit.tsx","components/clients/ResidentsLabel.tsx","lib.core/functions.ts","components/icons/fontawesome.tsx","lib.core/isEquivalent.ts","lib.core/utils.ts","components/forms/InfoLabel.tsx","api/index.ts","areas/tour/hooks/useTour.ts","api/resourceHttp.ts","hooks/useWindowDimensions.ts","components/icons/IconPaymentMethod.tsx","lib.core/ui/lib/eventHandler.ts","hooks/useActivityTimeout.ts","hooks/useHmLayout.ts","components/forms/ToggleButtonField.tsx","components/forms/formFields.tsx","components/forms/FormField.tsx","lib.core/states.ts","components/forms/Address.tsx","components/forms/HmDetailForm.tsx","components/forms/ValidationSummary.tsx","components/forms/HmRecaptcha.tsx","components/typography/Text.tsx","lib.app/masks/index.ts","api/v1/admin/searchClients.ts","components/clients/ClientSelect.tsx","api/v1/admin/recentClients.ts","components/clients/RecentClients.tsx","components/clients/ClientPicker.tsx","hooks/useIfMounted.ts","components/clients/ClientStatus.tsx","components/forms/Checkbox.tsx","components/nav/HmNav.tsx","components/nav/HmNavLink.tsx","api/v1/search/applications/index.ts","components/nav/NavSearch.tsx","components/nav/SubNav.tsx","components/nav/Help.tsx","components/nav/UserSettings.tsx","components/nav/index.ts","lib.core/filters/Filter.ts","lib.core/filters/index.ts","components/HmFilter.tsx","lib.core/coreUtils/objects.ts","components/forms/FormFilter.tsx","components/HmDrawer.tsx","components/clients/TimeContext.tsx","hooks/useQueryString.ts","components/HmAddress.tsx","components/errors/SentryErrorBoundary.tsx","components/HmDate.tsx","api/mockMiddleware.ts","api/http.ts","api/v1/auth/my.ts","api/v1/residents/settings/index.ts","api/v1/clientsettings/index.ts","api/v1/billing/features/get.ts","components/clients/ClientContext.tsx","api/v1/tour/index.ts","areas/tour/components/TourContext.tsx","lib.core/ui/lib/index.ts","api/v1/residents/ResidentResource.ts","lib.core/coreUtils/arrays.js","components/forms/FormState.tsx","components/forms/HmForm.tsx","components/typography/Heading.tsx","components/typography/SafeHtml.tsx","components/typography/HmMetric.tsx","hooks/useFormFieldState.ts","env.ts","config.ts","lib.app/miscData/timeZones.ts","components/forms/PasswordStrengthAddOn.tsx","components/HmAlert.tsx","components/forms/HmFormDrawer.tsx","api/v1/residents/index.ts","components/forms/DateRange.tsx","hooks/useFirstInstanceWithFeature.ts","components/forms/ConditionalField.tsx","components/clients/InstancePicker.tsx","components/forms/Select.tsx","hooks/useTime.ts","components/HmActions.tsx","hooks/useClientState.ts","api/v1/connect/index.ts","components/layouts/LayoutHeader.tsx","components/ReturnLink.tsx","lib.security/security.ts","lib.security/featureGuards.ts","components/security/HmGuard.tsx","api/v1/divisions/divisions.ts","api/v1/billing/billingcontacts/index.ts","components/HmBug.tsx","hooks/usePortalInfo.ts","api/v1/workorders/settings/index.ts","hooks/useUserState.ts","hooks/useFormState.ts","components/forms/utils.ts","api/v1/connect/config.ts","HmContext.tsx","hooks/useInstanceState.ts","lib.core/formatters/numbers.ts","lib.core/formatters/index.ts","hooks/formUtils/hasError.ts","lib.app/enums/RecipientType.ts","lib.app/enums/NoteType.ts","lib.app/enums/PhoneType.ts","lib.app/enums/Housekeeping.ts","lib.app/enums/ApplicationTwoFactorAuth.ts","lib.app/enums/HmFeatures.ts","lib.app/enums/Roles.ts","lib.app/enums/index.ts","components/forms/DatePicker.tsx","pollyfills/index.js","areas/Errors.tsx","areas/Home.tsx","api/oauth/token.ts","api/v1/auth/logout.ts","areas/login/Login.tsx","areas/login/ChooseAccount.tsx","api/v1/auth/verify.ts","areas/login/VerifyDevice.tsx","api/v1/auth/forgot.ts","hooks/useDeferedAsync.ts","areas/ForgotPassword.tsx","api/v1/auth/expired.ts","api/v1/auth/reset.ts","areas/ResetPassword.tsx","api/v1/registration/residentPortal.ts","areas/ResidentPortal.tsx","api/v1/auth/terms.ts","areas/Terms.tsx","areas/tour/TourDashboard.tsx","api/v1/application/view/viewApplication.ts","routes.tsx","components/dev/Cypress.tsx","hooks/useManifestChanged.tsx","App.js","serviceWorker.js","index.js","components/forms/reducers.ts","hooks/useSharedState.ts","hooks/useClientContext.ts","hooks/useGuard.ts","components/forms/FormContext.tsx","api/utils.ts"],"names":["HmUrl","about","acceptTerms","applicants","application","instanceId","applicantId","applicationEdit","returnUrl","guid","config","api","endpoint","replace","qs","stringify","applicationHistory","code","name","applicationId","waitingListId","encodeURIComponent","applicationNotifications","applicationPrint","applicationIds","arrayFormat","applicationsListing","applications","applicationSettings","wildcard","page","instanceSettings","applicationDetail","appWaitingListId","encodeURI","applicationMember","applicationWaitingListId","memberId","auditing","batches","batchDetail","batchReference","billing","billingSettings","billingInvoice","invoiceId","chooseAccount","customers","droppedApplicants","enterpriseKeys","expiredPassword","forgotPassword","home","settings","login","logout","myProfile","notifications","notFound","passwordReset","src","username","token","portal","properties","propertyConfiguration","remittance","reports","reportsLocked","residents","resident","residentProfile","accountNumber","residentSettings","renewalSettings","security","tourDashboard","units","unit","users","userAdd","userDetail","id","workOrders","workOrderDetail","workOrderGuid","workTypes","workCodes","workers","vendors","vendorDetail","verifyDevice","inventory","inventoryCsv","hmAdmin","title","path","component","guard","HmAccess","administerAccount","currentLocation","applicationsAnyInstance","unitsAnyInstance","residentsAnyInstance","workOrdersAnyInstance","window","location","HmDetailContext","createContext","detailReducer","state","action","typeFn","type","payload","watchWildcard","cur","prev","HmDetail","successMessage","initialValue","onInit","Promise","resolve","onSave","onError","e","toast","onSaved","toastSuccess","loading","reducers","selectors","actions","watchFn","undefined","children","bubble","props","useContext","parentRefresh","refresh","parentActions","tryRefresh","useFilterContext","promiseFn","useMemo","Object","values","useReducer","dispatch","useAsync","onResolve","data","init","reload","error","isLoading","a","cancelBubble","save","useCallback","formApi","context","keepData","saved","message","error_description","setError","captureException","useSentry","scope","setExtra","keys","reduce","key","hmDetail","response","status","to","eventId","variant","Provider","value","HmDialogDetail","closeOnSave","HmDialogContext","dialog","useState","close","setCloseOnSave","modalSave","details","detailProps","DetailItem","selector","content","Content","Text","actionProps","bindFilter","useDetail","filterActions","useEffect","current","set","selectData","cData","React","Children","map","c","isValidElement","cloneElement","DetailActionButton","actionArgs","handleClick","actOn","clone","onClick","HmLoading","spinner","alt","className","HmPageLoading","startDelay","render","setRender","delay","setTimeout","clearTimeout","HmPhone","phone","link","textProps","as","href","formatPhone","HmEmail","email","HmContact","address","HmAddress","HmMoney","options","As","Fragment","formatMoney","HmAdminPanel","access","HmGuard","Card","Header","Body","ReadonlyDataAlert","HmAlert","icon","inline","CollapsePanel","collapsed","headingClassName","show","setShow","ui","classNames","active","s","Collapse","in","ActionToolbar","breakpoint","Group","ButtonToolbar","drop","alignRight","dim","useWindowDimensions","has","Dropdown","Toggle","Menu","viewReducer","setViewAction","view","viewData","SwitchView","viewId","track","tracking","setView","history","useHistory","useLocation","addEventListener","popper","removeEventListener","preventDefault","stopPropagation","push","pathname","hash","substr","views","forEach","v","HmEffectOnly","createElement","Divider","useDetailState","useDetailActions","useDetailParams","HmLogo","rest","logo","Splash","pageTitle","hideFooter","usePageTitle","useBodyClassName","trim","Portal","showLogo","target","HmDate","format","defaultProps","useHashObserver","timeout","observer","timeoutId","MutationObserver","reset","disconnect","listen","elementId","slice","scrollToElement","element","document","getElementById","scrollIntoView","behavior","block","observe","attributes","childList","subtree","handler","MaintenanceRequestAlert","useCurrentWildcard","getWorkOrderSettings","emergencyPhoneNumber","iconSize","OnlineRentMisconfiguredAlert","handleResize","positionSidebar","sidebar","style","top","parentElement","offsetTop","height","ContentSidebar","append","useLayoutEffect","main","side","Container","fluid","Row","Col","lg","md","sm","layoutMap","hm","search","nav","useUserState","user","splash","child","heading","formatDate","date","f","parseISO","dayDiff","date2","date1","Date","differenceInCalendarDays","isDate","dateAsKey","unicode","unicodeTimeOnly","unicodeDate","mmddyyyy","dateTime","dateTimeLong","possibleDays","month","includeLeapDay","setMonth","days","getDate","Math","min","getOrdinalNum","n","dateTimeUtils","dateDiff","measure","formatDistance","addSuffix","monthDiff","differenceInCalendarMonths","isBefore","isSameDay","startOfMonth","startOfDay","addDays","addYears","years","subYears","differenceInDays","differenceInMilliseconds","next","offset","interval","pivotdate","startOfYear","isLeapYear","startOfWeek","addWeeks","addMonths","startOfQuarter","addQuarters","el","useRef","dynamic","body","appendChild","removeChild","createPortal","memo","checkInitializer","setter","checkValue","onChange","defaultValue","isChecked","fireOnChange","checked","t","onBlur","willValidate","checkValidity","hasError","checkListInitializer","Array","isArray","find","isEquivalent","stage","filter","formatDateInitializer","internalValue","touched","fieldProps","ref","length","includes","textMask","inputInitializer","meta","useInput","updater","onInput","validateOnBlur","valueApplicator","isNaN","Number","numberInitializer","cursor","max","step","constrain","strict","endsWith","split","frac","floor","selectionStart","pipe","helpers","selectInitializer","onSelect","placeholder","addPlaceholder","placheholderValue","transform","indexMod","label","empty","idx","findIndex","o","dependencies","valueInitializer","useFilter","useSharedState","Filter","sort","persist","objStr","localStorage","getItem","setPersistedValue","query","parseQsValue","FilterContext","isMergebleObject","isNonNullObject","REACT_ELEMENT_TYPE","Symbol","for","$$typeof","isSpecial","merge","obj","sources","seen","i","concat","notExists","x","d","hasOwnProperty","toJSON","valueOf","getOwnPropertyNames","copyProperty","getOwnPropertySymbols","property","descriptor","getOwnPropertyDescriptor","srcValue","targetValue","enumerable","create","getPrototypeOf","defineProperty","dialogActions","open","params","dialogReducer","Dialog","modalSize","centered","trigger","mounted","showing","onHide","size","closeButton","Title","DialogButton","HmDialog","labelId","disabled","disablePortal","noAccessProps","dialogProps","HmDropdownDialog","HmConfirm","onConfirm","confirmLabel","cancelLabel","only","Footer","Layout","changeWildcard","useClientContext","matchWildcard","useParams","wildcardChanged","useWatchWildcard","layout","combinations","and","other","first","this","extend","args","apply","or","matcher","eachPropertyPair","condition","criteria","matchers","addMatchers","self","equalTo","equalToAnyValues","isNull","neverMatches","isString","valueDescription","regex","pattern","test","isBoolean","isDefined","isUndefined","anything","indexOf","greaterThan","attributeValue","isEmpty","lessThan","anyElementMatches","elementCriteria","arrayToCheck","arrays","any","allElementsMatch","trueForAll","between","start","end","eachDefinedMatcher","visitor","isFunction","createTypeMatcher","expectedType","not","isNullOrUndefined","isNumeric","isObject","isInteger","isNullOrEmpty","isTrue","isFalse","lessThanOrEqualTo","greaterThanOrEqualTo","HmSubmit","isWorking","button","btnText","extrasClassName","SubmitButton","HmButton","watch","allowUnchanged","useFormState","getValue","every","submitting","pristine","ResidentsLabel","res","usePortalInfo","fn1","fns","piped","prevFn","nextFn","library","add","faArrowDown","faArrowUp","faBan","faBars","faBed","faBox","faBoxes","faBuilding","faCalendar","faCalendarCheck","faCamera","faCaretDown","faCaretUp","faChartBar","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faChevronUp","faClipboardList","faClock","faCloudDownloadAlt","faCog","faDollarSign","faDownload","faEnvelope","faExclamationTriangle","faExternalLinkAlt","faEye","faEyeSlash","faFilter","faHistory","faHome","faIdCard","faInfoCircle","faLock","faLockOpen","faLongArrowAltLeft","faMoneyCheckAlt","faPen","faPhone","faPlus","faPrint","faQuestionCircle","faReply","faSearch","faShoppingCart","faSortDown","faSortUp","faSpinner","faSquare","faStar","faStopwatch","faTimes","faUser","faUsers","variantMap","success","danger","info","warning","IconVariant","IconApplications","IconArrowDown","IconArrowUp","IconBack","IconBan","IconBed","IconCalendar","IconCamera","IconCaretDown","IconCaretUp","IconChartBar","IconCheck","IconCheckSquare","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconClock","IconDateTime","mask","IconSettings","IconSpinner","spin","IconDownload","IconEmail","IconDanger","IconPayment","IconBanPayment","IconExternalLinkAlt","IconEye","IconEyeSlash","IconFavorite","IconFilter","IconHistory","IconHome","IconInfoCircle","IconLock","IconLockOpen","IconPen","IconPhone","IconPlus","IconPrint","IconQuestion","IconResidents","IconSearch","IconShoppingCart","IconSortDown","IconSortUp","IconSort","dir","IconStopwatch","IconTimes","IconDelete","IconUser","IconUsers","IconUnit","IconUnits","IconWorkOrders","IconItem","IconItems","IconDollar","keyList","ignored","k","hasProp","prototype","b","arrA","arrB","dateA","dateB","getTime","regexpA","RegExp","regexpB","toString","call","isNullOrWhiteSpace","mergeLocation","addLocation","parseUriLocation","uri","compress","LZString","compressToEncodedURIComponent","decompress","decompressFromEncodedURIComponent","InfoLabel","placement","tooltip","tId","tooltips","overlay","HmTooltip","disabledAs","popovers","HmPopover","popover","authHttp","useTour","TourContext","resourceHttp","w","badRequest","json","processBadApiRequest","factory","Resource","resolveResource","_options","resource","_","resourceOptions","withResource","isNew","_links","_http","_embedded","otherData","assign","createRelated","url","getFactory","getUrl","resolveResourceUrl","http","resourceUrl","get","hasUrl","put","post","delete","catch","handleNullResponse","resolveFactory","constructor","baseUrl","relatedFactory","debounceHandle","resizeHandler","breakpoints","xl","xs","buildDimensions","width","innerWidth","innerHeight","findBreakpoint","bp","setValue","setDim","IconPaymentMethod","Icon","paymentMethods","discover","Discover","3","mastercard","Mastercard","2","visa","Visa","1","amex","Amex","4","echeck","Echeck","8","AnchorHrefNoOp","createEventHandler","callback","event","preventsAll","preventsDefault","noPropagation","normal","lastActivity","useActivityTimeout","onTimeout","timeoutInSeconds","suppressFn","iv","setInterval","diff","showFor","clearInterval","activityDetected","locked","analytics","originalTitle","classList","remove","FormToggleButton","forwardRef","isInvalid","getOptionLabel","getOptionValue","option","ToggleButtonField","componentProps","fieldType","initializer","initializeToggle","mapped","hasNulls","isSet","some","selected","ov","formFields","text","initialize","input","Form","Control","prependText","password","dateFormat","initializeDatePicker","outputFormat","HmDatePicker","timeDefaults","dateTimeDefaults","dateTimeInputDefaults","range","number","select","fax","currency","toFixed","toggle","toggleOnOff","HookFormField","clearable","labelSrOnly","optional","column","fieldOnly","fieldSize","getField","inputClassName","fieldRef","fieldInitializer","Error","useInitializer","useFormFieldState","field","labelProps","prepend","appendText","addOn","fieldAccess","fieldMemo","InputGroup","valid","Prepend","Append","controlId","Label","srOnly","col","Feedback","errors","ClearField","useFieldApi","clear","Address","prefix","address1Name","address1Label","address2Name","address2Label","cityName","cityLabel","stateName","stateLabel","zipName","zipLabel","countyName","countyLabel","showCounty","fieldName","states","base","charAt","toUpperCase","substring","join","HmDetailForm","validator","myState","HmForm","onSubmit","ValidationSummary","focusAlert","form","errorSummary","console","log","reversed","container","Button","HmRecaptcha","showAfter","recaptchaRef","useImperativeHandle","execute","getWidgetId","submitCount","sitekey","recaptcha","siteKey","MutedText","bold","small","help","strikeThrough","TextAs","tmyk","TextCallout","masks","ssn","alienId","zip","fill","numeric","alpha","alphaNumeric","showMask","m","MaskedInput","searchClientsRequest","Option","innerProps","innerRef","clientName","city","hasInstance","ClientSelect","loadOptions","inputValue","searchText","withMock","searchClients","then","result","clients","components","clientId","request","loadRecent","recentClients","RecentClients","Badge","firstInstanceFeatures","clientMostProminentAccountStatus","ClientPicker","chooseClient","changeClient","handleChange","r","ClientDropDown","setState","cb","useIfMounted","isLoggedIn","roles","Roles","LindseyEmployee","Overlay","rootClose","Popover","ClientStatus","client","useClientState","accountStatus","Checkbox","checkbox","Check","custom","Input","CheckboxList","checkboxList","CheckboxToggleField","mode","dependentFieldProps","InstanceFeatureLink","feature","instance","useFirstInstanceWithFeature","accountStatusId","resolvePath","HmNavLink","navOrder","Link","Nav","NavLink","activeClassName","searchApplications","searchTerm","NavSearch","Search","ApplicantSearch","searchApplicants","applicationsearchresults","hideResults","autoSubmit","SearchText","focus","setFocus","onFocus","dark","autoComplete","autoFocus","ApplicantSearchResult","getTarget","querySelector","HightlightText","higlight","parts","part","toLowerCase","ApplicantResults","applicant","noGutters","currentTarget","click","matchedDisplayName","items","applicationWaitingLists","ApplicantRelationship","matchedRelationshipId","Applicant","numFamilyMembers","Beds","minNumBeds","maxNumBeds","beds","WaitListItems","item","purged","applicationStatusId","waitingListCode","waitingListName","WaitingListIcon","NoResults","root","absolute","p","generatePath","SubNav","navitems","Navbar","bg","expand","visible","Help","guarded","useGuard","isActive","NavDropdown","Item","UserSettings","displayName","HmNav","Brand","HmBug","aria-controls","HmFeatures","Applications","Units","Residents","WordOrders","skip","totalCount","_data","_top","_skip","_sort","parseInt","hasPaging","count","sortField","getSortDir","pageSize","getPersistedValue","qsValue","$filter","parse","ignoreQueryPrefix","JSON","getObject","persistedValue","replacer","force","$top","$skip","$sort","asHmFilter","removePaging","emptyStringToNull","val","removeEmpty","HmFilter","destroy","useQuery","updateSearch","loadSearch","defaultSort","handlingChange","setFilter","Map","getQsValue","setItem","removeItem","removeState","act","tryAction","actionName","object","includePrototypeHierarchyAttributes","includeHierarchy","methodName","isOwnProperty","hasProps","alwaysRemove","acc","FilterHeading","ClearFilter","FilterSearch","FormFilter","replaceValue","HmDrawer","paddingBottom","offsetHeight","timeContextDefault","timeZoneId","TimeContext","TimeContextProvider","useInstanceTime","dateGen","clientTimeZoneId","useCurrentSettings","applyJSONFormat","dateFn","defaults","parseArrays","strictNullHandling","useQueryString","addressLine1","addressLine2","county","unitNumber","includeUnitNumber","_SentryErrorBoundary","errorInfo","sentry","enabled","withScope","extras","setExtras","componentStack","Component","useSetSentryUser","userId","configureScope","setUser","additionalScope","SentryErrorBoundary","compareDate","formats","ShortDate","fallback","localized","displayDate","isValid","mockMiddleware","opts","mock","default","Response","headers","method","statusText","mockResult","httpConfig","accessToken","devToken","expires","setLocation","unauthorized","forbidden","mocksEnabled","mockResponses","mockDefault","getHttpConfig","setHttpConfig","setAccessToken","mockPromiseFn","forceMock","middlewares","withOptions","errJson","err","fieldError","messages","wretch","errorType","myStatusMapper","myStatusInit","myStatusClient","residentHttp","clientsettings","admin","_url","getBillingFeatures","instancefeaturesresources","ClientContext","loadClientData","instances","features","all","contextWatch","divisionsPromise","ClientContextProvider","HmContext","newPath","hasClient","initializeAction","settingsParams","updateGoLiveDate","goLiveDate","updateSettings","getDetail","saveDetail","saveBillingContacts","getResidentSettings","Ok200","saveResidentSettings","noContentMock","changeInstance","getDivisions","tourHttp","completeTourStep","tourStepId","finishTour","tourState","daysRemainingInTrial","tourReducer","setTourAction","tour","newState","initTourState","activate","tourPromise","completeStep","finish","cards","currentStep","nextStep","lastCompletedStep","hasClientFinishedTour","TourContextProvider","isTrialUser","dontPropogate","eventHandlers","ResidentResource","residentResourceHttp","generateRange","startAt","eachUntil","index","continueIteration","eachInReverseUntil","each","findFirstInDirection","direction","match","none","last","FormState","HookForm","valueDep","autoSubmitDelay","showFormState","formProps","validateAndSubmit","previousAutoValue","auto","setValues","FormContextForm","contextProps","FormContext","HmFormApi","headingProps","alert","list","modal","navbar","section","sub","tagline","Heading","SafeHtml","dangerouslySetInnerHTML","__html","sanitize","HmMetric","metric","canManageCursor","setSelectionRange","fieldDep","time","fields","validated","setPathValue","send","addFieldError","envMapper","mapper","fallbackDefault","process","trimmed","string","bool","credentials","env","REACT_APP_API_DEVELOPER_TOKEN","app","versionTimeout","myUrl","publicUrl","isDev","initialized","getPublicUrl","dsn","segmentio","timeZones","zone","ianaName","hourDiff","utcOffset","description","getTimeZone","PasswordScore","zxcvbn","defaultScore","score","Risky","feedback","suggestions","variants","words","PasswordStrengthAddOn","minLength","scoreVariants","scoreWords","userInputs","strength","passwordStrength","isInitial","usePasswordStrength","now","Safe","PasswordSecurityTips","createSharedState","loadSessionStorageInitializer","ExceptionMessage","showReportDialog","alertId","createAlert","getAlerter","defaultOptions","getSharedState","addPageMessage","addPageError","dismissable","defaultIcon","onClose","setShowing","handle","dismissible","PageAlert","alerts","setAlerts","alertProps","Toaster","position","right","padding","flex","zIndex","HmFormDrawer","saveLabel","HmDialogFormDrawer","saveLabelId","closeOnCancel","onCancel","addAnother","AddAnotherCheckbox","DateRange","startName","startLabel","endName","endLabel","DateRangePicker","legend","separator","inputOnly","instanceTime","minDate","maxDate","disabledKeyboardNavigation","isClearable","popperProps","positionFixed","popperModifiers","preventOverflow","escapeWithReference","boundariesElement","hasLegend","popperPlacement","required","useGuardContext","check","checkInstanceFeature","useClientsWithFeature","filtered","useInstancesWithFeature","ConditionalField","clearValue","InstancePicker","hideSingle","filteredFeatures","visibleInstances","InstanceButton","InstanceDropDown","eventKey","HmSelect","isDisabled","styles","menuPortal","theme","borderRadius","menuPortalTarget","HmAsyncSelect","initializeReactSelect","opt","isMulti","getOptionOrDefault","getOptionOrDefaultMulti","selectValues","isOptionSelected","AsyncSelect","selectAll","Select","optionsPromise","useTime","positionSticky","getAttribute","HmActions","justify","sticky","connectHttp","LayoutHeader","center","around","useReturnTo","defaultTo","returnTo","stateReturnUrl","ReturnLink","accounting","Accounting","accountingReports","ReportViewer","activateGracePeriod","ActivateGracePeriod","addPayment","CreatePayment","addCharge","AdminSales","IssueCredits","authenticated","autoRenewDrop","ApplicationAutoRenewDrop","CustomerApplications","assignApplicationToUser","AssignApplicationToUser","CompanyUser","CompanyAdmin","Packages","billingPackages","clientOnly","companyBilling","InstanceBillingContact","companyConfig","companyUserAdmin","companyUserOrGreater","customQuestionsAndPreferences","ApplicationCustomQuestionsAndPreferences","discountPackages","devEnvironment","DevEnvironment","developerTool","Developer","editApplications","ApplicationEdit","advancedEligibilityRules","ApplicationAdvancedEligibilityRules","advancedOpeningTypes","ApplicationAdvancedOpeningTypes","employeesOnly","enhancedApplicationSecurity","ApplicationTwoFactorAuth","issueCredits","lindseyCustomers","LindseySoftwareOnly","maintenanceSettings","MaintenanceRequests","manageAccounting","Administrator","managePackages","managePackagesEdit","SuperAdmin","misconfiguredMaintenanceReqeusts","MisconfiguredMaintenanceReqeusts","misconfiguredOnlineRent","MisconfiguredOnlineRent","nonLindseyInstances","SomeOnlineInstances","onlineMaintenace","onlineCustomersOnly","OnlineCustomersOnly","onlineCustomerAdmin","onlineCustomerCompanyUserOrGreater","onlineRentCollection","OnlineRentCollection","readOnly","ReadOnly","CustomerResidents","residentPortal","roleManager","RoleManager","terminatePackage","trialCustomer","Trial","CustomerWordOrders","CustomerUnits","volumeUnlimited","waitingListManagement","WaitingListManagement","withNoContent","withRedirect","withFallback","failedUser","guardUser","failedFeatures","guardFeatures","failedRoles","guardRoles","AccountStatus","authUser","failed","fg","featureGuards","warn","instanceFeatureChecks","onlineWorkOrders","onlineMaintenanceRequests","applicantCanEditApplication","instanceRoles","Ivr","ivr","Legacy","isLegacyBilling","isLindseyCustomer","onlineRentCollectionIsMisconfigured","ResidentPortal","Security","waitingListReportsEnabled","useGuardByProps","HmElementGuard","HmAccessGuard","hide","FormAccessContext","TrialCustomerOnly","getDivision","divisionId","createDivision","saveDivision","getBillingContacts","userIds","live","isLiveClientData","bugw","bug","pluralize","portalTitle","contract","contractType","workordersHttp","saveWorkOrderSettings","userData","updateUser","submitForm","validity","checkFormValidity","validate","setSubmitting","submit","submitFn","useFormApi","noValidate","orDefault","mergeValues","addError","getErrors","getTouched","getValid","reduceErrors","setPristine","buildValue","createValue","contains","elements","firstError","errs","removeValue","unset","connectMock","initialState","connections","reducer","updateClient","updateInstance","initState","newUser","getNextActionFromUser","identify","isTrialAccount","hasAcceptedTerms","hasExpiredPassword","hasVerifiedDevice","newClient","group","refreshConnections","getInstanceConnections","replaceState","at","replacement","HmContextProvider","useInstanceState","useCurrentConnections","percent","Intl","NumberFormat","maximumFractionDigits","numberByLocale","formatPercent","isWholeNumber","parseFloat","formatNumber","Short","ShortDateTime","LongDateTime","MonthDay","MonthDayYear","MonthDayYearAndTime","ShortTime","Long","LongDate","LongTime","Medium","MediumDate","MediumTime","Url","ISODate","ISOTime","ISOLocal","Year","ago","amount","decimalCount","decimal","thousands","preserveCents","formatted","abs","newDate","requestFormat","getZonedDate","zonedDate","utcToZonedTime","getLocalDate","zonedTimeToUtc","toISOString","tel","forUrl","country","valueMissing","typeMismatch","tooShort","tooLong","badInput","stepMismatch","rangeOverflow","rangeUnderflow","patternMismatch","hasAttribute","RecipientType","NoteType","PhoneType","Housekeeping","getEnumOptions","enumLike","valueKey","showTimeSelect","showTimeSelectOnly","showTimeInput","appendControl","appendIcon","placeholderText","shouldCloseOnSelect","showYearDropdown","timeIntervals","timeFormat","timeInputLabel","fieldOptions","formTimeZoneId","dateValue","DatePicker","DateTimePicker","timeName","timeLabel","pollyfills","DateTimeFormat","timeZone","timeZoneName","NotFound","ServerFault","Home","CardDeck","todo","WelcomeCard","links","WelcomeLink","tokenHttp","getToken","formUrl","grant_type","access_token","expires_in","Login","loginSuccessfull","loginSubmit","requireRecaptcha","rememberMe","data-value-missing","Logout","logoutMyUser","ChooseAccount","userIsLindseyEmployee","canChooseClient","VerifyDevice","ipAddress","verificationCode","verifiedUser","deferred","promise","useDeferedAsync","deferFn","onReject","ForgotPassword","run","sentReset","setSentReset","handleSubmit","expiration","resetPassword","validateConfirmPassword","passwordConfirm","ChangePassword","labelTxt","buttonTxt","setSuccess","flatErrs","autoFocusToken","OverlayTrigger","ExpiredPassword","ResetPassword","NewPassword","decodeURIComponent","registrationHttp","lookupResidentPortal","getResidentPortal","portals","order","maxLength","Found","lastName","firstName","portalAvailable","lname","hasLogin","companyName","last4Ssn","Identifier","unknown","Terms","printTerms","contentWindow","print","AcceptTerms","originalAction","TourDashboard","TourWelcome","TourCards","stepNumber","TourCard","duration","percentageComplete","steps","isCompleted","isLocked","ProgressBar","TourStep","viewApplication","lazy","WorkOrders","Settings","Admin","Routes","exact","Errors","AppViewRedirect","trimSlash","commands","CypressBridge","bottom","background","display","com","versionInfo","files","Set","getVersionedFiles","fetch","load","sentryInit","setupApplication","initData","dataInit","suppressIfLoginPage","AppContext","onManifestChanged","App","Boolean","hostname","ReactDOM","navigator","serviceWorker","ready","registration","unregister","formReducer","actionType","cleanError","cleanErrors","ekey","newError","clean","newObj","stateMap","sessionValue","sessionStorage","pvalue","updaters","fn","cleanupFn","guardContext","guardProps","resolveProps","formState","initFormState","FormGuard","ExtendFormGuard","parentAccess","parentGuarded","FormContextProvider","OkTrue","genericMockFn","SyntaxError"],"mappings":"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","file":"static/js/main.f3df66ea.chunk.js","sourcesContent":["import config from 'config';\r\nimport qs from 'qs';\r\n\r\n\r\nexport declare type HmUrlDef = keyof typeof HmUrl | undefined;\r\n\r\nexport const HmUrl = {\r\n about: '/about',\r\n acceptTerms: '/terms',\r\n applicants: '/applications/applicants',\r\n application: (instanceId, applicantId) => `/applications/${instanceId}/${applicantId}`,\r\n applicationEdit: ({instanceId, returnUrl, guid }) => `${config.api.endpoint.replace('/api/v1', '')}/application/edit/${instanceId}/${guid}?${qs.stringify({returnUrl})}`,\r\n applicationHistory: ({instanceId, code, name, applicationId, waitingListId}) => waitingListId ? `/applications/${instanceId}/${code}/${encodeURIComponent(name)}/${waitingListId}/${applicationId}/history` : `${HmUrl.application(instanceId, applicationId)}/history`,\r\n applicationNotifications: ({instanceId, code, name, applicationId, waitingListId}) => waitingListId ? `/applications/${instanceId}/${code}/${encodeURIComponent(name)}/${waitingListId}/${applicationId}/notifications` : `${HmUrl.application(instanceId, applicationId)}/notifications`,\r\n applicationPrint: ({instanceId, applicationId: applicationIds}) => `${config.api.endpoint}/applications/print/${instanceId}?${qs.stringify({applicationIds}, { arrayFormat: 'repeat' })}`,\r\n applicationsListing: ({instanceId, code, name}) => `/applications/${instanceId}/${encodeURIComponent(code)}/${encodeURIComponent(name)}`,\r\n applications: '/applications',\r\n applicationSettings: (wildcard, page?: 'modules' | 'workflow' | 'renewals') =>\r\n `${HmUrl.instanceSettings(wildcard, 'applications')}${page ? '/' + page : ''}`,\r\n applicationDetail: (instanceId, code, name, appWaitingListId, applicationId) =>\r\n encodeURI(`/applications/${instanceId}/${encodeURIComponent(code)}/${encodeURIComponent(name)}/${appWaitingListId}/${applicationId}`),\r\n applicationMember: (applicationWaitingListId, applicationId, memberId) =>\r\n encodeURI(`/applications/${applicationWaitingListId}/${applicationId}/${memberId}`),\r\n auditing: '/auditing',\r\n batches: wildcard => `/residents/${wildcard}/batchesReport`,\r\n batchDetail: batchReference => `batchesReport/${batchReference}`,\r\n billing: (page: 'ledger' | 'reports' | 'packages' | null = 'packages') =>\r\n `/billing${page ? '/' + page : ''}`,\r\n billingSettings: (wildcard, page?: 'pay' | 'autopay' | 'payment' | 'invoice') =>\r\n `${HmUrl.instanceSettings(wildcard, 'billing')}${page ? '/' + page : ''}`,\r\n billingInvoice: (wildcard, invoiceId) =>\r\n `${HmUrl.billingSettings(wildcard, 'invoice')}/${invoiceId}`,\r\n chooseAccount: '/login/chooseaccount',\r\n customers: '/customers',\r\n droppedApplicants: '/applications/droppedapps',\r\n enterpriseKeys: '/enterprisekeys',\r\n expiredPassword: '/expired',\r\n forgotPassword: '/forgot',\r\n home: '/',\r\n instanceSettings: (\r\n wildcard: string,\r\n page?:\r\n | 'billing'\r\n | 'subscriptionplan'\r\n | 'applications'\r\n | 'residents'\r\n | 'companies'\r\n | 'divisions'\r\n | 'workorders'\r\n | 'integrations'\r\n | 'renewals'\r\n ) => `${HmUrl.settings}/${wildcard}${page ? '/' + page : ''}`,\r\n login: '/login',\r\n logout: '/logout',\r\n myProfile: '/myaccount',\r\n notifications: '/notifications',\r\n notFound: '/notFound',\r\n passwordReset: (src: 'resetpassword' | 'new', username = ':username', token = ':token') =>\r\n `/account/${src}/${username}/${token}`,\r\n portal: '/portal',\r\n properties: '/applications/properties',\r\n propertyConfiguration: (instanceId, code) => `/applications/${instanceId}/${code}/edit`,\r\n remittance: '/remittance',\r\n reports: (instanceId, code, name) => `/applications/${instanceId}/${code}/${name}/reports`,\r\n reportsLocked: (instanceId, code, name) =>\r\n `/applications/${instanceId}/${code}/${name}/reports-locked`,\r\n residents: (wildcard = '') => `/residents/${wildcard}`,\r\n resident: (wildcard, page: 'csvimport' | 'payments' | 'batchesreport' | 'emailandtext' | 'messageboard') => `${HmUrl.residents(wildcard)}/${page}`,\r\n residentProfile: (wildcard, accountNumber, page = 'profile') =>\r\n `${HmUrl.residents(wildcard)}/detail/${accountNumber}/${page}`,\r\n residentSettings: (wildcard, page?: 'rentcollection' | 'settings') =>\r\n `${HmUrl.instanceSettings(wildcard, 'residents')}${page ? '/' + page : ''}`,\r\n renewalSettings: (wildcard: string) => `${HmUrl.applicationSettings(wildcard, 'renewals')}`,\r\n security: '/settings/security',\r\n settings: '/settings',\r\n tourDashboard: '/tour',\r\n units: (wildcard = '') => `/units/${wildcard}`,\r\n unit: (wildcard, page: 'csvimport') => `${HmUrl.units(wildcard)}/${page}`,\r\n users: '/settings/users',\r\n userAdd: '/settings/users/add',\r\n userDetail: id => `/settings/users/edit/${id}`,\r\n workOrders: (wildcard = '') => `/workorders/${wildcard}`,\r\n workOrderDetail: (wildcard, workOrderGuid) =>\r\n `${HmUrl.workOrders(wildcard)}/edit/${workOrderGuid}`,\r\n workTypes: wildcard => `${HmUrl.workOrders(wildcard)}/worktypes`,\r\n workCodes: wildcard => `${HmUrl.workOrders(wildcard)}/workcodes`,\r\n workers: wildcard => `${HmUrl.workOrders(wildcard)}/workers`,\r\n vendors: wildcard => `${HmUrl.workOrders(wildcard)}/vendors`,\r\n vendorDetail: (wildcard, id) => `${HmUrl.workOrders(wildcard)}/vendors/${id}`,\r\n verifyDevice: '/verify',\r\n inventory: wildcard => `${HmUrl.workOrders(wildcard)}/inventory`,\r\n inventoryCsv: (wildcard, page: 'csvimport') => `${HmUrl.workOrders(wildcard)}/${page}`,\r\n};\r\n\r\nexport default HmUrl;\r\n","import { HmAccess } from '../../lib.security';\r\nimport { HmUrl } from './hmUrl';\r\n\r\nexport const hmAdmin = [\r\n {\r\n title: 'Billing',\r\n path: HmUrl.billing('packages'),\r\n component: 'Billing',\r\n guard: HmAccess.administerAccount\r\n },\r\n {\r\n title: 'Customers',\r\n path: HmUrl.customers,\r\n component: 'Customers',\r\n guard: HmAccess.customers\r\n },\r\n {\r\n title: 'Auditing',\r\n path: HmUrl.auditing,\r\n component: 'Auditing',\r\n guard: HmAccess.auditing\r\n },\r\n {\r\n title: 'Enterprise Keys',\r\n path: HmUrl.enterpriseKeys,\r\n component: 'EnterpriseKeys',\r\n guard: HmAccess.enterpriseKeys\r\n },\r\n {\r\n title: 'Notifications',\r\n path: HmUrl.notifications,\r\n component: 'Notifications',\r\n guard: HmAccess.notifications\r\n }\r\n];\r\n\r\nexport const hmMain = [\r\n {\r\n title: 'Applications',\r\n path: HmUrl.applications,\r\n component: 'Applications',\r\n guard: HmAccess.applicationsAnyInstance,\r\n },\r\n {\r\n title: 'Units',\r\n path: HmUrl.units(),\r\n component: 'Units',\r\n guard: HmAccess.unitsAnyInstance\r\n },\r\n {\r\n title: 'Residents',\r\n path: HmUrl.residents(),\r\n component: 'Residents',\r\n guard: HmAccess.residentsAnyInstance\r\n },\r\n {\r\n title: 'Work Orders',\r\n path: HmUrl.workOrders,\r\n component: 'WorkOrders',\r\n guard: HmAccess.workOrdersAnyInstance\r\n }\r\n];\r\n","export const currentLocation = () => window.location;\r\n\r\nexport const changeUrl = newUrl => {\r\n if (window.history) window.history.pushState({}, '', newUrl);\r\n else window.location.href = newUrl;\r\n};\r\n\r\nexport const currentUrl = () => {\r\n let location = currentLocation();\r\n return location.origin + location.pathname;\r\n};\r\n","import React, { createContext, FunctionComponent, useReducer, useCallback, useMemo, useContext, ReactNode, Dispatch, useState, useEffect } from 'react';\r\nimport { FormApi } from '../hooks/useFormState';\r\nimport { Text, HmAlert } from 'components';\r\nimport { toastSuccess, toast, ExceptionMessage } from './HmAlert';\r\nimport { HmPageLoading } from './HmLoading';\r\nimport { useAsync } from 'react-async';\r\nimport { HmDialogContext } from './HmDialog';\r\nimport { useDetail } from 'hooks/useDetail';\r\nimport { Button } from 'react-bootstrap';\r\nimport { clone } from 'lib.core';\r\nimport { Redirect } from 'react-router';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { useFilterContext } from 'hooks/useFilter';\r\nimport { useSentry } from './errors/SentryErrorBoundary';\r\n\r\n\r\nexport type HmDetailAction = (state: HmDetailContextState) => any;\r\n\r\ntype DetailContext = {\r\n keepData: boolean;\r\n refresh: boolean;\r\n close?: boolean;\r\n}\r\n\r\nexport type DetailSaveProps = {\r\n values: T,\r\n context: DetailContext,\r\n [x: string]: any;\r\n actions: A;\r\n wildcard : string;\r\n dispatch: Dispatch;\r\n}\r\nexport type DetailSaveFn = (obj: DetailSaveProps, nothing?: any) => Promise;\r\n\r\nexport interface HmDetailProps {\r\n onSave?: DetailSaveFn;\r\n successMessage?: string;\r\n initialValue?: object;\r\n onInit?: (obj: any) => Promise;\r\n onError?: (e: any) => void;\r\n onSaved?: (values: any) => void;\r\n loading?: ReactNode;\r\n reducers?: any;\r\n selectors?: any;\r\n bubble?: boolean;\r\n [x: string]: any;\r\n}\r\n\r\nexport type HmDetailContextState = {\r\n state: T;\r\n save: (api: FormApi) => Promise;\r\n refresh: () => Promise;\r\n actions: A;\r\n [x: string]: any;\r\n};\r\n\r\nexport const HmDetailContext = createContext({} as HmDetailContextState);\r\n\r\nfunction detailReducer(state, action) {\r\n const { type: typeFn, payload } = action;\r\n if (typeof typeFn === 'function') action = typeFn(state, payload);\r\n else if (typeof action === 'function') action = action(state);\r\n else action = state;\r\n return action;\r\n}\r\n\r\nconst watchWildcard = (cur, prev) => cur.wildcard !== prev.wildcard;\r\n\r\nexport const HmDetail: FunctionComponent = ({\r\n successMessage = 'Item saved!',\r\n initialValue = {},\r\n onInit = () => Promise.resolve(initialValue),\r\n onSave = () => Promise.resolve(false),\r\n onError = e => toast(e),\r\n onSaved = () => toastSuccess(successMessage),\r\n loading = ,\r\n reducers = {},\r\n selectors = {},\r\n actions = {},\r\n wildcard,\r\n watchFn = wildcard ? watchWildcard : undefined,\r\n children,\r\n bubble = true,\r\n ...props\r\n}) => {\r\n const { refresh: parentRefresh, actions: parentActions = {} } = useContext(HmDetailContext);\r\n const { tryRefresh } = useFilterContext();\r\n\r\n const promiseFn = useMemo(() => {\r\n if (onInit) return onInit;\r\n return () => Promise.resolve(initialValue);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [...Object.values(initialValue)]);\r\n\r\n const [state, dispatch] = useReducer(detailReducer, undefined);\r\n const { reload, error, isLoading } = useAsync({\r\n promiseFn,\r\n onResolve: (data) => {\r\n return dispatch(reducers.init ? { type: reducers.init, payload: data } : () => data);\r\n },\r\n wildcard,\r\n watchFn,\r\n ...props\r\n });\r\n\r\n const refresh = useMemo(\r\n () => async (cancelBubble = false) => {\r\n await reload();\r\n if (cancelBubble || !bubble) return;\r\n if (parentRefresh) return await parentRefresh();\r\n if (tryRefresh) {\r\n return tryRefresh();\r\n }\r\n },\r\n [reload]\r\n );\r\n\r\n const save = useCallback(\r\n async ({ values, ...formApi }: FormApi) => {\r\n try {\r\n const context: DetailContext = { refresh: true, keepData: true };\r\n\r\n const saved = await onSave({...props, wildcard, actions, values, context, dispatch});\r\n\r\n if (saved === undefined || saved === false) return;\r\n\r\n onSaved(saved);\r\n\r\n if (typeof saved === 'object' && context.keepData) {\r\n dispatch(state => ({...state, ...saved}));\r\n }\r\n\r\n if (context.refresh) {\r\n await refresh();\r\n }\r\n } catch (e) {\r\n if (e.message || e.error_description) {\r\n onError(e);\r\n } else {\r\n formApi.setError(e);\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [onSave, actions, onSaved]\r\n );\r\n\r\n const captureException = useSentry(scope => {\r\n scope.setExtra('params', props);\r\n });\r\n\r\n Object.keys(reducers).reduce((action, key) => {\r\n action[key] = payload => dispatch({type: reducers[key], payload});\r\n return action;\r\n }, actions);\r\n\r\n Object.keys(selectors).reduce((action, key) => {\r\n action[key] = (...payload) => selectors[key]({dispatch, ...state}, ...payload);\r\n return action;\r\n }, actions);\r\n\r\n const hmDetail = {\r\n state,\r\n save,\r\n refresh,\r\n actions: {...parentActions, ...actions },\r\n wildcard,\r\n ...props\r\n };\r\n\r\n if (isLoading) {\r\n return loading as any;\r\n }\r\n\r\n if (error) {\r\n const {response} = error as any;\r\n if (response && response.status === 401) {\r\n return ;\r\n }\r\n const eventId = captureException(error);\r\n return ;\r\n }\r\n\r\n // not ready to render just yet\r\n if (state === undefined) return null;\r\n\r\n\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Provides a context aware of dialogs.\r\n *\r\n * * adds `dialog`, `closeOnSave`, `actions` to `HmDetailContext`\r\n *\r\n * ```js\r\n * \r\n * \r\n * ...\r\n * \r\n * \r\n * ```\r\n */\r\nexport const HmDialogDetail: FunctionComponent = ({\r\n closeOnSave = true,\r\n onSave,\r\n children,\r\n ...props\r\n}) => {\r\n const { dialog, actions } = useContext(HmDialogContext);\r\n const [close, setCloseOnSave] = useState(closeOnSave);\r\n\r\n const modalSave = useCallback(async ({values, context = {}, closeOnSave, ...details}) => {\r\n context.close = closeOnSave;\r\n const saved = onSave && await onSave({...details, values, context});\r\n if (context.close) {\r\n dialog(actions.close());\r\n }\r\n return saved;\r\n }, [onSave]);\r\n\r\n const detailProps = {...props, dialog, actions, closeOnSave: close, setCloseOnSave };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const DetailItem: FunctionComponent = ({selector, action, content: Content = Text, children, actionProps, bindFilter = false, ...props}) => {\r\n const [data, actions, {refresh}] = useDetail();\r\n const { actions: filterActions } = useFilterContext();\r\n\r\n useEffect(() => {\r\n if (bindFilter && filterActions.current) {\r\n filterActions.current.set('refresh', () => refresh(true));\r\n }\r\n }, []);\r\n\r\n if (typeof children === 'function') {\r\n return children({data, ...props});\r\n }\r\n\r\n if (selector) {\r\n const value = selectData(data, selector);\r\n if (!value) {\r\n return null;\r\n }\r\n return ;\r\n }\r\n\r\n const cData = action && actions[action] ? actions[action](actionProps) : data;\r\n return React.Children.map(children, (c) => {\r\n if (React.isValidElement(c)) {\r\n return React.cloneElement(c, {data: cData, ...props});\r\n }\r\n return c;\r\n });\r\n};\r\n\r\nfunction selectData(data, selector) {\r\n if (!data) return data;\r\n return typeof selector === 'string' ? data[selector] : selector(data);\r\n}\r\n\r\nexport const DetailActionButton: FunctionComponent = ({\r\n action,\r\n children,\r\n reload = false,\r\n actionArgs,\r\n ...props\r\n}) => {\r\n const [state, actions, {refresh, dialog}] = useDetail();\r\n const handleClick = useCallback(async () => {\r\n const actOn = typeof action === 'string' && actions[action] ? actions[action] : action;\r\n await actOn(actionArgs, {state: clone(state), actions, dialog});\r\n if (reload) await refresh();\r\n }, [action, actionArgs, actions, dialog, refresh, reload, state]);\r\n\r\n return (\r\n \r\n );\r\n};","import React, { useEffect, useState } from 'react';\r\nimport spinner from '@lindsey-software/housing-manager-ux/content/img/spinner.gif';\r\n\r\nexport const HmLoading = ({...props}) => {\r\n return \"loading\";\r\n};\r\n\r\nexport const HmPageLoading = ({startDelay = 250}) => {\r\n const [render, setRender] = useState(false);\r\n useEffect(() => {\r\n let delay: any = setTimeout(() => {\r\n setRender(true);\r\n delay = 0;\r\n }, startDelay);\r\n return () => {\r\n delay && clearTimeout(delay)\r\n }\r\n }, [startDelay]);\r\n\r\n // mount the component and wait a smidge before rendering\r\n if (!render) return <>;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import React, { FunctionComponent, Children } from 'react';\r\nimport { Text } from 'components';\r\nimport { formatPhone } from 'lib.core/formatters';\r\nimport { IconPhone } from './icons';\r\nimport { ContactProps } from './HmAddress';\r\n\r\nexport const HmPhone: FunctionComponent<\r\n Pick & {\r\n link?: boolean;\r\n }\r\n> = ({ phone, link = false, children }) => {\r\n const textProps: any = {\r\n as: link ? 'a' : 'span'\r\n };\r\n if (link) {\r\n textProps.href = `tel:${formatPhone(phone, true)}`;\r\n }\r\n return (\r\n \r\n {children} {formatPhone(phone)}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { Text } from 'components';\r\nimport { IconEmail } from './icons';\r\nimport { ContactProps } from './HmAddress';\r\n\r\nexport const HmEmail: FunctionComponent<\r\n Pick & {\r\n link?: boolean;\r\n }\r\n> = ({ email, link = false, children = email }) => {\r\n const textProps: any = {\r\n as: link ? 'a' : 'span'\r\n };\r\n if (link) {\r\n textProps.href = `mailto:${email}`;\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { HmPhone } from './HmPhone';\r\nimport { HmEmail } from './HmEmail';\r\nimport { ContactProps, HmAddress } from './HmAddress';\r\n\r\nexport const HmContact: FunctionComponent = ({ email, phone, ...address }) => {\r\n return (\r\n <>\r\n \r\n {phone && }\r\n {email && }\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent, Fragment } from 'react';\r\nimport { Text } from '../components/typography';\r\nimport { MoneyOptions, formatMoney } from '../lib.core/formatters';\r\nimport { Variant } from './typography/Text';\r\n\r\nexport const HmMoney: FunctionComponent<\r\n MoneyOptions & {\r\n value: number;\r\n variant?: Variant;\r\n className?: any;\r\n }\r\n> = ({ value, variant, className, children, ...options }) => {\r\n const As = (variant || className) ? 'span' : Fragment;\r\n return (\r\n \r\n {formatMoney(value, options)}\r\n {children}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { MutedText } from 'components/typography';\r\nimport { HmGuard } from 'components';\r\nimport { HmAccessKey } from 'lib.security';\r\nimport { Card } from 'react-bootstrap';\r\n\r\nexport const HmAdminPanel : FunctionComponent<{access?: HmAccessKey}> = ({access = 'employeesOnly', children}) => {\r\n return (\r\n \r\n \r\n \r\n Admin-Only (Customer cannot see these settings)\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { HmGuard, HmAlert, Text } from 'components';\r\nimport { IconLock } from 'components/icons';\r\n\r\nexport const ReadonlyDataAlert = () => {\r\n return (\r\n \r\n } variant=\"warning\">\r\n Data is not managed by HousingManager.com\r\n \r\n \r\n );\r\n};\r\n","import React, { useState, FunctionComponent } from 'react';\r\nimport { Collapse } from 'react-bootstrap';\r\nimport { IconChevronDown, IconChevronRight } from 'components/icons';\r\nimport { Heading } from 'components';\r\nimport { ui } from 'lib.core';\r\n\r\nexport const CollapsePanel: FunctionComponent = ({ title, children, collapsed = false, headingClassName, ...props }) => {\r\n const [show, setShow] = useState(!collapsed);\r\n return (\r\n <>\r\n setShow(s => !s)}>\r\n {show ? : } {title}\r\n \r\n
{children}
\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from \"react\";\r\nimport { useWindowDimensions } from \"hooks/useWindowDimensions\";\r\nimport { HmGuard } from \"components\";\r\nimport { Dropdown, ButtonToolbar } from \"react-bootstrap\";\r\n\r\nexport const ActionToolbar: FunctionComponent = ({breakpoint = false, as: Group = ButtonToolbar, drop, alignRight, title='Actions', children, ...props}) => {\r\n const dim = useWindowDimensions();\r\n\r\n return (\r\n \r\n {title}\r\n \r\n {children}\r\n \r\n \r\n )}>\r\n \r\n {children}\r\n \r\n \r\n )\r\n}","import React, { FunctionComponent, useEffect, useReducer, useCallback } from 'react';\r\nimport { useHistory, useLocation } from 'react-router';\r\n\r\ntype ViewState = {\r\n view: string,\r\n track: boolean;\r\n [x:string]: any;\r\n}\r\n\r\nfunction viewReducer(state, action): ViewState {\r\n const {type = action, payload} = action;\r\n return type(state, payload);\r\n}\r\n\r\n\r\nfunction setViewAction(state: ViewState, {view, viewData}) {\r\n return {\r\n ...state,\r\n view,\r\n viewData\r\n }\r\n}\r\n\r\nexport const SwitchView: FunctionComponent = ({ viewId, children, track = false, ...props }) => {\r\n const [{view, track: tracking, viewData = {}}, dispatch] = useReducer(viewReducer, {view: viewId, track })\r\n const setView = useCallback((view, viewData ?: any) => dispatch({type: setViewAction, payload: {view, viewData}}), []);\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n setView(viewId);\r\n }, [viewId]);\r\n\r\n useEffect(() => {\r\n if (!tracking) return;\r\n function popper(e) {\r\n if (e.state.state && e.state.state.view) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setView(e.state.state.view);\r\n }\r\n }\r\n window.addEventListener('popstate', popper);\r\n return () => window.removeEventListener('popstate', popper);\r\n }, [tracking])\r\n\r\n useEffect(() => {\r\n tracking && history.push(location.pathname, {view});\r\n }, [view, tracking]);\r\n\r\n useEffect(() => {\r\n const hash = location.hash.substr(1);\r\n tracking && hash && view !== hash && setView(hash);\r\n },[location.hash, view, tracking])\r\n\r\n const views = {};\r\n\r\n React.Children.forEach(children, v => {\r\n if (!React.isValidElement(v)) return;\r\n const { key } = v;\r\n if (key) views[key] = v;\r\n });\r\n\r\n if (view && views[view])\r\n return React.cloneElement(views[view], { actions: { setView }, ...props, ...viewData });\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\n\r\nexport { HmDrawer } from './HmDrawer';\r\nexport { HmActions } from './HmActions';\r\nexport { HmAlert } from './HmAlert';\r\nexport { HmFilter } from './HmFilter';\r\nexport { Dialog, HmDialog, HmConfirm } from './HmDialog';\r\nexport { HmAddress } from './HmAddress';\r\nexport { HmContact } from './HmContact';\r\nexport { HmPhone } from './HmPhone';\r\nexport { HmEmail } from './HmEmail';\r\nexport { HmDetail } from './HmDetail';\r\nexport { HmDate } from './HmDate';\r\nexport { HmMoney } from './HmMoney';\r\nexport { HmGuard } from './security/HmGuard';\r\nexport { HmAdminPanel } from './HmAdminPanel';\r\nexport { ReadonlyDataAlert } from './ReadonlyDataAlert';\r\nexport { Heading, MutedText, Text, SafeHtml, HmMetric } from './typography';\r\nexport { default as Layout } from './layouts';\r\nexport { ReturnLink } from './ReturnLink';\r\nexport { CollapsePanel } from './CollapsePanel';\r\nexport { ActionToolbar } from './ActionToolbar';\r\nexport { SwitchView } from './SwitchView';\r\nexport { default as ErrorBoundary } from './errors/SentryErrorBoundary';\r\n\r\nexport const HmEffectOnly = () => React.createElement(React.Fragment);\r\n\r\nexport const Divider = () => React.createElement('hr');\r\n\r\nexport { Button, Row, Col, Dropdown, Card, Accordion, ButtonToolbar } from 'react-bootstrap';","import { useContext } from 'react';\r\nimport { HmDetailContext, HmDetailContextState } from 'components/HmDetail';\r\n\r\ntype DetailParams = Pick, 'save' | 'refresh'>;\r\n\r\nexport function useDetail(): [T, A, DetailParams & P] {\r\n const {state, actions, ...context} = useContext(HmDetailContext);\r\n\r\n return [state as T, actions as A, context as DetailParams & P];\r\n}\r\n\r\nexport function useDetailState(): T {\r\n const {state} = useContext(HmDetailContext);\r\n return state as T;\r\n}\r\n\r\nexport function useDetailActions(): A {\r\n const {actions} = useContext(HmDetailContext);\r\n return actions as A;\r\n}\r\n\r\nexport function useDetailParams

(): DetailParams & P {\r\n const {state, actions, ...context} = useContext(HmDetailContext);\r\n return context as DetailParams & P;\r\n}\r\n","import React from 'react';\r\n// tslint:disable-next-line: no-submodule-imports\r\nimport logo from '@lindsey-software/housing-manager-ux/content/img/hm-nested2.png';\r\nimport { Link } from 'react-router-dom';\r\nimport { HmUrl } from '../lib.app/routes';\r\n\r\nexport const HmLogo = (props) => {\r\n const { alt, ...rest} = props;\r\n\r\n return (\r\n \r\n {alt\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { HmLogo } from '../HmLogo';\r\nimport { PageAlert } from '../HmAlert';\r\nimport { usePageTitle, useBodyClassName } from '../../hooks/useHmLayout';\r\nimport HmNav from 'components/nav';\r\nimport Portal from './Portal';\r\nimport { HmEmail, HmPhone, Text } from 'components';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { Link } from 'react-router-dom';\r\nimport { HmDate } from 'components/HmDate';\r\n\r\nexport const Splash = ({ pageTitle, className, hideFooter = false, ...props }) => {\r\n usePageTitle(pageTitle);\r\n useBodyClassName(`splash-page ${className}`.trim());\r\n\r\n return (\r\n

\r\n );\r\n};\r\n\r\nSplash.defaultProps = {\r\n showLogo: true\r\n};\r\n\r\nexport default Splash;\r\n","import { useEffect } from 'react';\r\nimport { useHistory } from 'react-router';\r\n\r\nexport function useHashObserver(timeout: number = 1000) {\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n let observer;\r\n let timeoutId;\r\n\r\n if (typeof MutationObserver === 'undefined') {\r\n return;\r\n }\r\n\r\n const reset = () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = null;\r\n }\r\n\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n };\r\n\r\n const createScrollToElement = (id: string) => {\r\n return () => {\r\n const element = document.getElementById(id);\r\n\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n\r\n reset();\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n };\r\n\r\n history.listen((location: any, action: string) => {\r\n if (timeoutId) {\r\n reset();\r\n }\r\n\r\n if (action !== 'PUSH') {\r\n return;\r\n }\r\n\r\n if (typeof location.hash !== 'string') {\r\n return;\r\n }\r\n\r\n const elementId = location.hash.slice(1);\r\n\r\n if (!elementId) {\r\n return;\r\n }\r\n\r\n const scrollToElement = createScrollToElement(elementId);\r\n\r\n setTimeout(() => {\r\n if (scrollToElement()) {\r\n return;\r\n }\r\n\r\n observer = new MutationObserver(scrollToElement);\r\n\r\n observer.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n subtree: true\r\n });\r\n\r\n timeoutId = setTimeout(reset, timeout);\r\n });\r\n });\r\n }, [history, timeout]);\r\n}\r\n","import React, { useLayoutEffect, useEffect, FunctionComponent } from 'react';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { PageAlert } from 'components/HmAlert';\r\n\r\nlet handler;\r\nconst handleResize = () => {\r\n if (handler) clearTimeout(handler);\r\n handler = setTimeout(() => {\r\n positionSidebar();\r\n }, 200);\r\n}\r\n\r\nconst positionSidebar = () => {\r\n const sidebar = document.getElementById('sidebar');\r\n if (!sidebar) return;\r\n sidebar.style.top = `${sidebar.parentElement!.offsetTop}px`;\r\n sidebar.style.height = `calc(100vh - ${sidebar.parentElement!.offsetTop}px)`;\r\n}\r\n\r\nexport const ContentSidebar: FunctionComponent = ({sidebar, append = null, ...props}) => {\r\n useLayoutEffect(() => {\r\n if (!window) return;\r\n setTimeout(positionSidebar, 0);\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n const {main = {}, side = {}, component = append} = (append||{});\r\n\r\n return (\r\n \r\n \r\n {sidebar}\r\n \r\n \r\n {props.children}\r\n \r\n {component}\r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Redirect, Link } from 'react-router-dom';\r\nimport { useUserState } from '../../hooks/useUserState';\r\nimport { HmUrl } from '../../lib.app/routes';\r\nimport HmNav from '../nav';\r\nimport { useHashObserver } from 'hooks/useHashObserver';\r\nimport { Text, HmGuard, HmAlert } from 'components';\r\nimport { useCurrentWildcard } from 'hooks/useInstanceState';\r\nimport { useAsync } from 'react-async';\r\nimport { getWorkOrderSettings } from 'api/v1/workorders/settings';\r\nimport Portal from './Portal';\r\n\r\nexport const HousingManager = ({ pageTitle, className, search, nav, ...props }) => {\r\n const [user] = useUserState();\r\n useHashObserver();\r\n\r\n // don't copy to Splash.. or else endless loop\r\n if (user) {\r\n if (user.action === 'expired') return ;\r\n if (user.action === 'verify') return \r\n if (user.action === 'choose') return ;\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
{nav}
\r\n
\r\n
{props.children}
\r\n \r\n );\r\n};\r\n\r\nexport const MaintenanceRequestAlert = () => {\r\n const wildcard = useCurrentWildcard();\r\n const { data } = useAsync(getWorkOrderSettings, { wildcard });\r\n if (!data) return null;\r\n if (data.emergencyPhoneNumber) return null;\r\n\r\n return (\r\n \r\n \r\n Maintenance Requests cannot be submitted until an emergency phone number is provided.\r\n
\r\n \r\n Click Here\r\n {' '}\r\n to enter your emergency phone number. Contact support for assistance.{' '}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const OnlineRentMisconfiguredAlert = () => {\r\n return (\r\n \r\n \r\n \r\n Your site is configured to take payments online but no merchant account has been set.\r\n
\r\n Contact support for assistance.{' '}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import { Layout } from './Layout';\r\n\r\nimport { Splash } from './Splash';\r\nimport { HousingManager } from './HousingManager';\r\nimport { ContentSidebar } from './ContentSidebar';\r\nimport { ContentSimple, ContentChild } from './ContentSimple';\r\nimport { LayoutHeader } from './LayoutHeader';\r\n\r\nexport { Layout, Splash, HousingManager, ContentSidebar, ContentSimple, LayoutHeader };\r\n\r\nexport const layoutMap = {\r\n hm: HousingManager,\r\n content: ContentSimple,\r\n sidebar: ContentSidebar,\r\n splash: Splash,\r\n error: Splash,\r\n child: ContentChild\r\n};\r\n\r\nexport { Layout as default };\r\n","import React from 'react';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { PageAlert } from 'components/HmAlert';\r\nimport { Heading } from 'components';\r\n\r\nexport const ContentSimple = props => {\r\n return (\r\n \r\n \r\n\r\n \r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const ContentChild = ({heading, pageTitle, ...props}) => (\r\n <>\r\n {heading && {heading}}\r\n {props.children}\r\n \r\n);\r\n","import {\r\n format as f,\r\n differenceInCalendarDays,\r\n formatDistance,\r\n parseISO,\r\n isBefore,\r\n isSameDay,\r\n isDate,\r\n startOfDay,\r\n startOfMonth,\r\n differenceInCalendarMonths,\r\n differenceInDays,\r\n differenceInMilliseconds,\r\n subYears,\r\n addDays,\r\n addYears,\r\n startOfYear,\r\n isLeapYear,\r\n addWeeks,\r\n startOfWeek,\r\n addMonths,\r\n addQuarters,\r\n startOfQuarter\r\n} from 'date-fns';\r\n\r\nconst DATE_FORMAT = 'yyyy-MM-dd';\r\nconst STRING_DATE_FORMAT = 'MM/dd/yyyy';\r\nconst UNICODE_TIME_FORMAT = 'yyyy-MM-ddTHH:mm:ss[Z]';\r\nconst UNICODE_DATE_FORMAT = 'yyyy-MM-dd';\r\nconst UNICODE_TIME_ONLY_FORMAT = 'HH:mm:ss';\r\nconst DATE_TIME_FORMAT = 'MM/dd/yyyy h:mm:ss aaa';\r\nconst LONG_DATE_TIME_FORMAT = 'MMM dd, yyyy h:mm:ss aaa';\r\n\r\nconst dateAsKey = date => formatDate(date, DATE_FORMAT);\r\n\r\nconst formatDate = (date: string, format: string) => f(parseISO(date), format);\r\n\r\nconst dateDiff = (\r\n date2: Date | string | number,\r\n date1: Date | string | number = new Date(),\r\n measure?: any\r\n) =>\r\n measure === 'days'\r\n ? dayDiff(new Date(date2), new Date(date1))\r\n : formatDistance(new Date(date2), new Date(date1), { addSuffix: true });\r\n\r\nconst dayDiff = (date2: Date, date1: Date = new Date()) => differenceInCalendarDays(date1, date2);\r\n\r\nexport const format = {\r\n isDate: value => isDate(value),\r\n date: formatDate,\r\n dateAsKey,\r\n unicode: value => formatDate(value, UNICODE_TIME_FORMAT),\r\n unicodeTimeOnly: value => formatDate(value, UNICODE_TIME_ONLY_FORMAT),\r\n unicodeDate: value => formatDate(value, UNICODE_DATE_FORMAT),\r\n\r\n mmddyyyy: value => formatDate(value, STRING_DATE_FORMAT),\r\n dateTime: value => formatDate(value, DATE_TIME_FORMAT),\r\n dateTimeLong: value => formatDate(value, LONG_DATE_TIME_FORMAT)\r\n};\r\n\r\nexport function possibleDays(month, includeLeapDay = false) {\r\n const date = new Date();\r\n date.setMonth(month, 0);\r\n const days = date.getDate();\r\n return includeLeapDay && month === 2 ? Math.min(28, days) : days;\r\n}\r\n\r\nexport function getOrdinalNum(n) {\r\n return n + (n > 0 ? ['th', 'st', 'nd', 'rd'][(n > 3 && n < 21) || n % 10 > 3 ? 0 : n % 10] : '');\r\n}\r\n\r\nexport const dateTimeUtils = {\r\n dayDiff,\r\n dateDiff,\r\n monthDiff: (date1, date2 = new Date()) =>\r\n differenceInCalendarMonths(new Date(date1), new Date(date2)),\r\n isBefore: (date1, date2) => isBefore(date1, date2),\r\n isSameDay: (date1, date2) => isSameDay(date1, date2),\r\n startOfMonth: (date: Date = new Date()) => startOfMonth(date),\r\n startOfDay: (date: Date = new Date()) => startOfDay(date),\r\n addDays: (days: number, date: Date = new Date()) => addDays(date, days),\r\n addYears: (years: number, date: Date = new Date()) => addYears(date, years),\r\n subYears: (years: number, date: Date = new Date()) => subYears(date , years),\r\n differenceInDays: (date1: Date, date2: Date = new Date()) => differenceInDays(date1, date2),\r\n differenceInMilliseconds: (date1: Date, date2: Date) => differenceInMilliseconds(date1, date2),\r\n next: (offset, interval, pivotdate: Date = new Date()) => {\r\n switch(interval) {\r\n case 'yr':\r\n pivotdate = startOfYear(addYears(pivotdate, 1));\r\n if (offset > 58 && isLeapYear(pivotdate)) {\r\n offset++;\r\n }\r\n break;\r\n\r\n case 'wk':\r\n pivotdate = startOfWeek(addWeeks(pivotdate, 1));\r\n break;\r\n\r\n case 'mo':\r\n pivotdate = startOfMonth(addMonths(pivotdate, 1));\r\n break;\r\n\r\n case 'qtr':\r\n pivotdate = startOfQuarter(addQuarters(pivotdate, 1));\r\n break;\r\n\r\n default:\r\n offset++;\r\n break;\r\n }\r\n return addDays(pivotdate, offset);\r\n }\r\n};\r\n","import { useRef, useState, useEffect, memo } from 'react';\r\nimport { createPortal } from 'react-dom';\r\n\r\nexport const Portal = ({ id, children }) => {\r\n const el = useRef(document.getElementById(id) || document.createElement('div'));\r\n const [dynamic] = useState(!el.current.parentElement);\r\n useEffect(() => {\r\n if (dynamic) {\r\n el.current.id = id;\r\n document.body.appendChild(el.current);\r\n }\r\n return () => {\r\n if (dynamic && el.current.parentElement) {\r\n el.current.parentElement.removeChild(el.current);\r\n }\r\n };\r\n }, [id]);\r\n return createPortal(children, el.current);\r\n};\r\nexport default memo(Portal);\r\n","import { hasError } from \"../hasError\";\r\n\r\nexport function checkInitializer({ value, setter, setError, props: { value: checkValue, onChange, isChecked, defaultValue, fireOnChange } = { value: undefined, onChange: undefined as any, defaultValue: undefined as any, isChecked: undefined as any, fireOnChange: 'both' } }) {\r\n\tisChecked = isChecked || (v => (checkValue === v) || (checkValue === undefined && (v === true || v === 1 || v === 'true' || v === 'True')));\r\n\treturn {\r\n\t\tvalue: checkValue,\r\n\t\tchecked: isChecked(value),\r\n\t\tonChange: e => {\r\n\t\t\tconst t = checkValue === undefined ? true : checkValue;\r\n\t\t\tconst f = checkValue === undefined ? false : (defaultValue || '');\r\n\t\t\tonChange && onChange(e);\r\n\t\t\tif (!onChange || fireOnChange !== 'only')\r\n\t\t\t\tsetter(e.target.checked ? t : f);\r\n\t\t},\r\n\t\tonBlur: e => {\r\n\t\t\tif (e.target.willValidate)\r\n\t\t\t\te.target.checkValidity();\r\n\t\t\tsetError(hasError(e.target));\r\n\t\t}\r\n\t};\r\n}\r\n","import { hasError } from '../hasError';\r\nimport { isEquivalent } from 'lib.core';\r\n\r\nexport function checkListInitializer({ value, setter, setError, props: { value: checkValue, onChange } = { value: undefined, onChange: undefined as any } }) {\r\n value = Array.isArray(value) ? value : [];\r\n return {\r\n value: checkValue,\r\n checked: Array.isArray(value) && value.find(v => isEquivalent(v, checkValue)) !== undefined,\r\n onChange: e => {\r\n const stage: any = {};\r\n if (e.target.checked) {\r\n stage.value = [...value, checkValue];\r\n }\r\n else {\r\n stage.value = value.filter(v => !isEquivalent(v, checkValue));\r\n }\r\n onChange && onChange(e, stage);\r\n setter(stage.value);\r\n },\r\n onBlur: e => {\r\n if (e.target.willValidate)\r\n e.target.checkValidity();\r\n setError(hasError(e.target));\r\n }\r\n };\r\n}\r\n","import { hasError } from \"../hasError\";\r\nimport { FieldStateInitializer } from \"./index\";\r\nimport { formatDate } from \"lib.core/formatters\";\r\nimport { textMask } from \"lib.app/masks\";\r\n\r\nexport function formatDateInitializer(format = 'MM/dd/yyyy', mask = true): FieldStateInitializer {\r\n let internalValue = '';\r\n\treturn ({ value, touched, setter, setError, props: { ref, ...fieldProps } = { ref: undefined } }) => ({\r\n\t\t...fieldProps,\r\n\t\tvalue: (value && (value.length >= format.length || !touched) ? formatDate(value, format) : value) ||\r\n\t\t\t'',\r\n\t\tonChange: e => {\r\n internalValue = e.target.value;\r\n if (internalValue === '__/__/____') {\r\n setter('');\r\n } else if (!internalValue.includes('_')) {\r\n setter(formatDate(internalValue, format));\r\n }\r\n\t\t},\r\n\t\tonBlur: e => {\r\n\t\t\tif (e.target.willValidate)\r\n\t\t\t\te.target.checkValidity();\r\n\t\t\tsetError(hasError(e.target));\r\n\t\t},\r\n\t\t...textMask('date')\r\n\t});\r\n}\r\n","import { hasError } from '../hasError';\r\n\r\nexport function inputInitializer({ value, setter, setError, meta, props: { ref, useInput, ...fieldProps } = {} as any }) {\r\n const updater = e => { setter(e.target.value); };\r\n if (useInput === true) {\r\n fieldProps.onInput = updater;\r\n } else {\r\n fieldProps.onChange = updater;\r\n }\r\n\r\n return {\r\n ...fieldProps,\r\n value: value || '',\r\n onBlur: e => {\r\n if (!meta.validateOnBlur) {\r\n return;\r\n }\r\n if (e.target.willValidate) e.target.checkValidity();\r\n setError(hasError(e.target));\r\n }\r\n };\r\n}\r\n","import { hasError } from '../hasError';\r\nimport { pipe } from 'lib.core';\r\n\r\nconst valueApplicator = (value, format) =>\r\n (value || value === 0) && !isNaN(value) ? format(Number(value)) : '';\r\n\r\nexport function numberInitializer({\r\n value,\r\n setter,\r\n setError,\r\n cursor,\r\n props: { ref, format = v => v, ...fieldProps } = { ref: undefined } as any\r\n}) {\r\n const { min, max, step } = fieldProps;\r\n const constrain = (value, strict = true) => {\r\n if (typeof value === 'string' && strict === false) {\r\n if (value.endsWith('.')) return value;\r\n const [, frac] = value.split('.');\r\n if (frac && frac.length <= 2) return value;\r\n }\r\n if (isNaN(value)) value = 0;\r\n if (step) value = Math.floor(value / step) * step;\r\n if (min !== undefined && value < min) value = min;\r\n else if (max !== undefined && value > max) value = max;\r\n return Number(value);\r\n };\r\n return {\r\n ...fieldProps,\r\n value: valueApplicator(value, format),\r\n onChange: e => {\r\n cursor.current = e.target.selectionStart;\r\n if (e.target.value.endsWith('..')) {\r\n cursor.current++;\r\n }\r\n setter(valueApplicator(e.target.value.replace('..', '.'), v => constrain(v, false)));\r\n },\r\n onBlur: e => {\r\n e.target.value = valueApplicator(e.target.value, pipe(constrain, format));\r\n if (e.target.willValidate) e.target.checkValidity();\r\n setError(hasError(e.target));\r\n },\r\n helpers: {\r\n constrain: value => setter(constrain(value))\r\n }\r\n };\r\n}\r\n","import React from 'react';\r\nimport { hasError } from '../hasError';\r\n\r\nexport function selectInitializer({ value, setter, setError, props: { ref = undefined, onSelect, options = [] as any[], placeholder, addPlaceholder = true, placheholderValue = null, transform, ...fieldProps } }) {\r\n const data = options;\r\n let indexMod = 0;\r\n if (transform) {\r\n options = options.map(transform);\r\n }\r\n if (addPlaceholder && placeholder) {\r\n indexMod = 1;\r\n options = [{ label: placeholder, value: placheholderValue, empty: true }, ...options];\r\n }\r\n\r\n const idx = options.findIndex(v => v.value === value || v === value);\r\n return {\r\n ...fieldProps,\r\n value: idx,\r\n onChange: e => {\r\n const idx = +e.target.value;\r\n const v = options[idx];\r\n onSelect && onSelect(v, data[indexMod + idx]);\r\n if (v && v.value !== undefined)\r\n setter(v.value);\r\n else\r\n setter(v);\r\n },\r\n children: options.map((o, idx) => ),\r\n onBlur: e => {\r\n if (e.target.willValidate) {\r\n e.target.checkValidity();\r\n }\r\n setError(hasError(e.target));\r\n },\r\n dependencies: [options]\r\n };\r\n}\r\n","import { hasError } from \"../hasError\";\r\n\r\nexport function valueInitializer(initialValue) {\r\n\tlet internalValue = initialValue || '';\r\n\treturn ({ value, setter, setError, props: { ref, ...fieldProps } = { ref: undefined } }) => {\r\n\t\treturn {\r\n\t\t\t...fieldProps,\r\n\t\t\tvalue: internalValue,\r\n\t\t\tonChange: e => {\r\n\t\t\t\tsetter((internalValue = e.target.value));\r\n\t\t\t},\r\n\t\t\tonBlur: e => {\r\n\t\t\t\tif (e.target.willValidate)\r\n\t\t\t\t\te.target.checkValidity();\r\n\t\t\t\tsetError(hasError(e.target));\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n}\r\n","\r\nimport Filter, { FilterOptions } from '../lib.core/filters';\r\nimport { useSharedState, Updater } from './useSharedState';\r\nimport { useContext } from 'react';\r\nimport { FilterContext, FilterContextState } from 'components/HmFilter';\r\n\r\nexport function useFilter(name: string, initialValue ?: T, options ?: FilterOptions): [Filter, Updater> ] {\r\n const [filter, setFilter] = useSharedState>(name, () => {\r\n const f = new Filter(initialValue as T, 0, options && options.top);\r\n if (options) {\r\n if (options.sort) {\r\n f.sort = options.sort;\r\n }\r\n if (options.persist) {\r\n const objStr = localStorage.getItem(`filter:${name}`);\r\n if (objStr) f.setPersistedValue(objStr);\r\n }\r\n if (options.query) {\r\n f.parseQsValue(options.query);\r\n }\r\n }\r\n return f;\r\n });\r\n\r\n return [filter as Filter, setFilter ];\r\n}\r\n\r\nexport function useFilterContext() {\r\n return useContext>(FilterContext);\r\n}\r\n","import { isEquivalent } from './isEquivalent';\r\nimport Immutable from 'seamless-immutable';\r\n\r\nfunction isMergebleObject(value) {\r\n return isNonNullObject(value) && !isSpecial(value);\r\n}\r\n\r\nfunction isNonNullObject(value) {\r\n return !!value && typeof value === 'object';\r\n}\r\n\r\nfunction isSpecial(value) {\r\n // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\r\n const canUseSymbol = typeof Symbol === 'function' && Symbol.for;\r\n const REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\r\n\r\n return (\r\n value.$$typeof === REACT_ELEMENT_TYPE\r\n );\r\n}\r\n\r\nexport default function merge(obj: T, ...sources: T[]): T {\r\n if (!sources) {\r\n return obj;\r\n }\r\n return sources.reduce((target: any, src: any) => {\r\n if (src === undefined || src === target) return target;\r\n\r\n if (Array.isArray(src)) {\r\n if (!Array.isArray(target)) target = isEquivalent(target, {}) || target === undefined ? [] : [target];\r\n const seen: any[] = [];\r\n return (\r\n target\r\n .map(i => merge({}, i))\r\n .concat(src.map(i => merge({}, i)))\r\n .filter(i => {\r\n const indx = seen.find(x => isEquivalent(x, i));\r\n const notExists = indx === undefined;\r\n if (notExists) seen.push(i);\r\n return notExists;\r\n })\r\n );\r\n }\r\n\r\n if (target instanceof Date && src) {\r\n const d = new Date(src);\r\n if (target.hasOwnProperty('toJSON') || src.hasOwnProperty('toJSON')) {\r\n d.toJSON = src.toJSON || target.toJSON;\r\n }\r\n return d;\r\n }\r\n\r\n if (src instanceof Date) {\r\n const d = new Date(src.valueOf());\r\n if (src.hasOwnProperty('toJSON')) {\r\n d.toJSON = src.toJSON;\r\n }\r\n return d;\r\n }\r\n\r\n if (!isMergebleObject(src)) {\r\n return src;\r\n }\r\n\r\n Object.getOwnPropertyNames(src).forEach(copyProperty);\r\n Object.getOwnPropertySymbols(src).forEach(copyProperty);\r\n\r\n return target;\r\n\r\n // Copy source's own properties into target's own properties\r\n function copyProperty(property) {\r\n const descriptor = Object.getOwnPropertyDescriptor(src, property);\r\n if (!descriptor || !target) return; // shouldn't happen but...safety\r\n\r\n const srcValue = src[property];\r\n const targetValue = target[property];\r\n\r\n if (descriptor.enumerable) {\r\n // Copy in-depth first\r\n\r\n descriptor.value = targetValue !== undefined && srcValue !== undefined ? merge(Object.create(Object.getPrototypeOf(targetValue || srcValue || {})), targetValue, srcValue) : clone(srcValue);\r\n Object.defineProperty(target, property, descriptor); // shallow copy descriptor\r\n }\r\n }\r\n }, obj);\r\n}\r\n\r\nexport const clone = (target: T, ...sources: T[]): T => !target ? target : merge(Object.create(Object.getPrototypeOf(target)), target, ...sources);\r\n\r\nexport const mergeAt = (target, dottedProperty, update) =>\r\n Immutable.updateIn(target, dottedProperty.split('.'), update);\r\n","import React, { FunctionComponent, ReactNode, useReducer, createContext, useContext, Dispatch, useCallback, useRef, useEffect } from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport DropdownItem from 'react-bootstrap/DropdownItem';\r\nimport { HmElementGuard, HmAccessGuard } from './security/HmGuard';\r\n\r\ninterface DialogProps {\r\n title ?: ReactNode;\r\n centered ?: boolean;\r\n modalSize ?: 'sm' | 'md' | 'lg' | 'xl';\r\n trigger: ReactNode;\r\n}\r\n\r\nconst dialogActions = {\r\n close: 'close',\r\n open: 'open',\r\n};\r\ntype DialogActions = {\r\n close: () => any;\r\n open: () => any;\r\n};\r\n\r\ninterface HmDialogContextState {\r\n dialog: Dispatch;\r\n actions: DialogActions;\r\n}\r\n\r\nexport const HmDialogContext = createContext({} as HmDialogContextState);\r\n\r\nconst actions: DialogActions = Object.keys(dialogActions).reduce((action, key) => {\r\n const a = dialogActions[key];\r\n if (typeof a === 'string') {\r\n action[key] = () => ({ type: key });\r\n } else {\r\n action[key] = (...params) => ({ type: key, ...params });\r\n }\r\n return action;\r\n} , {} as DialogActions);\r\n\r\nfunction dialogReducer(state, {type}) {\r\n switch (type) {\r\n case dialogActions.close:\r\n return {...state, show: false};\r\n case dialogActions.open:\r\n return {...state, show: true};\r\n }\r\n return state;\r\n}\r\n\r\nexport const Dialog: FunctionComponent = ({\r\n title,\r\n children,\r\n modalSize = 'sm',\r\n centered = false,\r\n trigger}) => {\r\n const mounted = useRef(true);\r\n const showing = useRef(false);\r\n const [state, dispatch] = useReducer(dialogReducer, { show: showing.current});\r\n const dialog = (action) => {\r\n if (mounted.current) {\r\n dispatch(action);\r\n }\r\n };\r\n useEffect(() => () => {mounted.current = false; }, []);\r\n useEffect(() => () => {showing.current = state.show; }, [state.show]);\r\n\r\n return (\r\n \r\n {typeof trigger === 'function' ? trigger({dialog, actions}) : trigger}\r\n\r\n dialog(actions.close())}\r\n centered={centered}\r\n size={modalSize as any}>\r\n \r\n {title && {title}}\r\n \r\n {children}\r\n \r\n\r\n \r\n );\r\n};\r\n\r\ninterface DialogButtonProps {\r\n variant ?: any;\r\n action: keyof typeof dialogActions;\r\n onClick ?: (e) => Promise;\r\n as ?: any;\r\n [x: string]: any;\r\n}\r\n\r\nexport const DialogButton: FunctionComponent = ({children, action, onClick, preventDefault=true, ...props}) => {\r\n const {dialog, actions} = useContext(HmDialogContext);\r\n\r\n const handleClick = useCallback(async (e) => {\r\n preventDefault && e.preventDefault();\r\n onClick && await onClick(e);\r\n dialog(actions[action]());\r\n }, [action]);\r\n\r\n return (\r\n \r\n );\r\n\r\n};\r\n\r\ninterface HmDialogProps {\r\n title ?: ReactNode;\r\n centered ?: boolean;\r\n disabled ?: boolean;\r\n disablePortal ?: boolean;\r\n modalSize ?: 'sm' | 'md' | 'lg' | 'xl';\r\n variant?: any;\r\n noAccessProps?: any;\r\n label: ReactNode;\r\n labelId?: string;\r\n size ?: 'sm' | 'lg';\r\n}\r\n\r\n/**\r\n * A helper for creating a Dialog triggered from a button\r\n */\r\nexport const HmDialog: FunctionComponent = ({\r\n label,\r\n labelId,\r\n title,\r\n children,\r\n modalSize = 'md',\r\n centered = false,\r\n disabled = false,\r\n disablePortal = false,\r\n noAccessProps = { disabled: true },\r\n ...props\r\n}) => {\r\n const dialogProps = {\r\n title,\r\n modalSize,\r\n centered,\r\n disablePortal\r\n };\r\n return (\r\n \r\n {label}\r\n \r\n )}>\r\n {children}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * A Helper for creating a dialog from a Dropdown\r\n */\r\nexport const HmDropdownDialog: FunctionComponent = ({\r\n label,\r\n labelId,\r\n title = label,\r\n children,\r\n modalSize = 'md',\r\n centered = false,\r\n noAccessProps = { disabled: true },\r\n disabled = false}) => {\r\n const dialogProps = {\r\n title,\r\n modalSize,\r\n centered\r\n };\r\n return (\r\n {\r\n return (\r\n \r\n dialog(actions.open())}>\r\n {label}\r\n \r\n \r\n );\r\n }}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\ninterface HmConfirmProps {\r\n title ?: ReactNode;\r\n centered ?: boolean;\r\n modalSize ?: 'sm' | 'md' | 'lg' | 'xl';\r\n confirmLabel ?: ReactNode;\r\n variant?: any;\r\n label: ReactNode;\r\n cancelLabel ?: ReactNode;\r\n onConfirm: () => Promise;\r\n size ?: 'sm' | 'lg';\r\n disabled?: boolean;\r\n}\r\n\r\nexport const HmConfirm: FunctionComponent = ({\r\n onConfirm,\r\n label,\r\n confirmLabel = 'Confirm',\r\n cancelLabel = 'Cancel',\r\n title,\r\n children,\r\n modalSize = 'md',\r\n centered = false,\r\n ...props\r\n}) => {\r\n const dialogProps = {\r\n title,\r\n modalSize,\r\n centered\r\n };\r\n\r\n return (\r\n \r\n {label}\r\n }>\r\n \r\n {React.Children.only(children)}\r\n \r\n \r\n {cancelLabel}\r\n {confirmLabel}\r\n \r\n \r\n );\r\n};\r\n","import React, { FunctionComponent, useEffect } from 'react';\r\nimport { useHistory, useParams } from 'react-router';\r\nimport { layoutMap } from '.';\r\nimport { HmGuard } from '../security/HmGuard';\r\nimport { HmGuardProps } from '../../lib.security';\r\nimport { usePageTitle, useBodyClassName } from '../../hooks/useHmLayout';\r\nimport { useCurrentWildcard } from 'hooks/useInstanceState';\r\nimport { useClientContext } from 'hooks/useClientContext';\r\nimport { HmUrl } from 'lib.app/routes';\r\n\r\ndeclare type LayoutName = keyof typeof layoutMap;\r\n\r\ninterface LayoutProps {\r\n name: LayoutName;\r\n pageTitle?: string;\r\n className?: string;\r\n guard?: HmGuardProps;\r\n nav?: any;\r\n sidebar?: any;\r\n heading?: any;\r\n append?: any;\r\n hideFooter?: boolean;\r\n}\r\n\r\nexport const Layout: FunctionComponent = ({\r\n children,\r\n pageTitle = '',\r\n className = '',\r\n name,\r\n guard,\r\n ...props\r\n}) => {\r\n usePageTitle(pageTitle);\r\n useBodyClassName(className);\r\n useWatchWildcard();\r\n\r\n const Layout = layoutMap[name] as any;\r\n\r\n const layout = (\r\n \r\n {children}\r\n \r\n );\r\n\r\n return guard ? {layout} : layout;\r\n};\r\n\r\nfunction useWatchWildcard() {\r\n const wildcard = useCurrentWildcard();\r\n const { changeWildcard } = useClientContext();\r\n const history = useHistory();\r\n const {wildcard: matchWildcard} = useParams<{wildcard?: string}>();\r\n\r\n useEffect(() => {\r\n if (matchWildcard && wildcard && matchWildcard !== wildcard\r\n && (history.action === 'PUSH' || history.action === 'POP')) {\r\n changeWildcard(matchWildcard);\r\n history.replace({\r\n search: '',\r\n state: { wildcardChanged: true}\r\n });\r\n }\r\n }, [wildcard, matchWildcard]);\r\n}","import arrays from 'lib.core/coreUtils/arrays';\r\nimport { eachPropertyPair } from 'lib.core/coreUtils/objects';\r\n\r\nconst combinations = {\r\n and(other) {\r\n let first = this;\r\n return extend((...args) => first.apply(first, args) && other.apply(other, args));\r\n },\r\n\r\n or(other) {\r\n let first = this;\r\n return extend((...args) => first.apply(first, args) || other.apply(other, args));\r\n }\r\n};\r\n\r\nconst extend = (matcher) => {\r\n eachPropertyPair(combinations, (name, value) => {\r\n matcher[name] = value;\r\n });\r\n return matcher;\r\n};\r\n\r\nconst condition = criteria => extend((...args) => criteria.apply(criteria, args));\r\n\r\nlet matchers = {\r\n addMatchers: (criteria) => {\r\n let self = this;\r\n eachPropertyPair(criteria, (name, value) => {\r\n self[name] = condition(value);\r\n });\r\n },\r\n\r\n condition: condition,\r\n\r\n equalTo: condition(value => matchers.equalToAnyValues(value)),\r\n\r\n isNull: condition(value => value === null),\r\n\r\n neverMatches: condition(() => false),\r\n\r\n isString: condition(value => {\r\n let valueDescription = typeof value;\r\n let result =\r\n valueDescription !== 'number' &&\r\n valueDescription !== 'object' &&\r\n valueDescription === 'string';\r\n\r\n return result;\r\n }),\r\n\r\n regex: pattern => {\r\n return matchers.condition((value) => {\r\n return pattern.test(value);\r\n });\r\n },\r\n\r\n isBoolean: condition(value => {\r\n let valueDescription = typeof value;\r\n let result =\r\n valueDescription !== 'number' &&\r\n valueDescription !== 'object' &&\r\n valueDescription !== 'string' &&\r\n valueDescription === 'boolean';\r\n\r\n return result;\r\n }),\r\n\r\n isDefined: condition(value => typeof value !== 'undefined'),\r\n\r\n isUndefined: condition(value => !matchers.isDefined(value)),\r\n\r\n anything: condition(() => true),\r\n\r\n equalToAnyValues: condition((...values) => {\r\n return matchers.condition(value => {\r\n return values.indexOf(value) > -1;\r\n });\r\n }),\r\n\r\n greaterThan: condition(value => {\r\n return matchers.condition(attributeValue => {\r\n return attributeValue > value;\r\n });\r\n }),\r\n\r\n isEmpty: condition(value => value.trim() === ''),\r\n\r\n lessThan: condition(value => {\r\n return matchers.condition(attributeValue => {\r\n return attributeValue < value;\r\n });\r\n }),\r\n\r\n anyElementMatches: condition(elementCriteria => {\r\n return matchers.condition(arrayToCheck => {\r\n return arrays.any(arrayToCheck, elementCriteria);\r\n });\r\n }),\r\n\r\n allElementsMatch: condition(elementCriteria => {\r\n return matchers.condition(arrayToCheck => {\r\n return arrays.trueForAll(arrayToCheck, elementCriteria);\r\n });\r\n }),\r\n\r\n between: condition((start, end) => {\r\n return matchers.condition(attributeValue => {\r\n return attributeValue >= start && attributeValue <= end;\r\n });\r\n }),\r\n\r\n eachDefinedMatcher(visitor) {\r\n eachPropertyPair(this, (name, value) => {\r\n if (matchers.isFunction(value) && name !== 'eachDefinedMatcher') visitor(name, value);\r\n });\r\n }\r\n};\r\n\r\nlet x = matchers;\r\n\r\nx.not = other => {\r\n return extend((...args) => {\r\n return !other.apply(null, args);\r\n });\r\n};\r\n\r\nx.isNullOrUndefined = x.isNull.or(x.isUndefined);\r\n\r\nfunction createTypeMatcher(expectedType) {\r\n return condition(value => {\r\n return typeof value === expectedType;\r\n }).and(x.not(x.isNullOrUndefined));\r\n}\r\n\r\nx.isNumeric = createTypeMatcher('number');\r\n\r\nx.isFunction = createTypeMatcher('function');\r\n\r\nx.isObject = createTypeMatcher('object');\r\n\r\nx.isInteger = x.isNumeric.and(value => value % 1 === 0);\r\n\r\nx.isNullOrEmpty = x.isNull.or(x.isEmpty);\r\n\r\nx.isTrue = x.equalTo(true);\r\n\r\nx.isFalse = x.equalTo(false);\r\n\r\nx.lessThanOrEqualTo = value => x.lessThan(value).or(x.equalTo(value));\r\n\r\nx.greaterThanOrEqualTo = value => x.greaterThan(value).or(x.equalTo(value));\r\n\r\nx.isArray = x.isObject.and(x.condition(value => Array.isArray(value)));\r\n\r\n\r\nexport default matchers;","import React, { ReactElement } from 'react';\r\nimport { Row, Col, Button } from 'react-bootstrap';\r\nimport { IconSpinner } from '../icons';\r\nimport { useFormState } from '../../hooks/useFormState';\r\nimport { HmGuard, HmElementGuard } from 'components/security/HmGuard';\r\n\r\ninterface HmSubmitProps {\r\n isWorking ?: boolean;\r\n disabled ?: boolean;\r\n btnText ?: string;\r\n button ?: ReactElement;\r\n extrasClassName ?: string;\r\n children ?: any;\r\n}\r\n\r\nexport const HmSubmit = ({ isWorking = false, disabled, button, btnText = 'Submit', extrasClassName = 'text-right', children, ...props }: HmSubmitProps) => {\r\n const SubmitButton = button || (\r\n \r\n {btnText}\r\n {isWorking && }\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n {SubmitButton}\r\n \r\n {children &&\r\n \r\n {children}\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport const HmButton = ({disabled = false, watch = [], children, allowUnchanged = false, ...props}: any) => {\r\n const {api} = useFormState();\r\n if (watch.length > 0) {\r\n disabled = !watch.map(api.getValue).every(v => Array.isArray(v) ? v.length > 0 : !!v);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { usePortalInfo } from 'hooks/usePortalInfo';\r\n\r\nexport const ResidentsLabel: FunctionComponent<{type?: 'title' | 'contract' | 'contractType', append?: any}> = ({type = 'title', append = null, children}) => {\r\n const res = usePortalInfo();\r\n return <>{append} {res[type]} {children};\r\n};","export const pipe = (\r\n fn1: (...args: T) => R,\r\n ...fns: Array<(a: R) => R>\r\n) => {\r\n const piped = fns.reduce(\r\n (prevFn, nextFn) => (value: R) => nextFn(prevFn(value)),\r\n value => value\r\n );\r\n return (...args: T) => piped(fn1(...args));\r\n};\r\n\r\nexport const compose = (fn1: (a: R) => R, ...fns: Array<(a: R) => R>) =>\r\n fns.reduce((prevFn, nextFn) => value => prevFn(nextFn(value)), fn1);\r\n","import React from 'react';\r\nimport { library, Icon } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon, Props as FaProps } from '@fortawesome/react-fontawesome';\r\nimport {\r\n faArrowDown,\r\n faArrowUp,\r\n faBan,\r\n faBars,\r\n faBed,\r\n faBox,\r\n faBoxes,\r\n faBuilding,\r\n faCalendar,\r\n faCalendarCheck,\r\n faCamera,\r\n faCaretDown,\r\n faCaretUp,\r\n faChartBar,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faChevronUp,\r\n faClipboardList,\r\n faClock,\r\n faCloudDownloadAlt,\r\n faCog,\r\n faDollarSign,\r\n faDownload,\r\n faEnvelope,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faEyeSlash,\r\n faFilter,\r\n faHistory,\r\n faHome,\r\n faIdCard,\r\n faInfoCircle,\r\n faLock,\r\n faLockOpen,\r\n faLongArrowAltLeft,\r\n faMoneyCheckAlt,\r\n faPen,\r\n faPhone,\r\n faPlus,\r\n faPrint,\r\n faQuestionCircle,\r\n faReply,\r\n faSearch,\r\n faShoppingCart,\r\n faSortDown,\r\n faSortUp,\r\n faSpinner,\r\n faSquare,\r\n faStar,\r\n faStopwatch,\r\n faTimes,\r\n faUser,\r\n faUsers,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { Variant } from 'components/typography/Text';\r\n\r\nlibrary.add(\r\n faArrowDown,\r\n faArrowUp,\r\n faBan,\r\n faBars,\r\n faBed,\r\n faBox,\r\n faBox,\r\n faBoxes,\r\n faBoxes,\r\n faBuilding,\r\n faCalendar,\r\n faCalendarCheck,\r\n faCamera,\r\n faCaretDown,\r\n faCaretUp,\r\n faChartBar,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faChevronUp,\r\n faClipboardList,\r\n faClock,\r\n faCloudDownloadAlt,\r\n faCog,\r\n faDollarSign,\r\n faDownload,\r\n faEnvelope,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faEyeSlash,\r\n faFilter,\r\n faHistory,\r\n faHome,\r\n faIdCard,\r\n faInfoCircle,\r\n faLock,\r\n faLockOpen,\r\n faLongArrowAltLeft,\r\n faMoneyCheckAlt,\r\n faPen,\r\n faPhone,\r\n faPlus,\r\n faPrint,\r\n faQuestionCircle,\r\n faReply,\r\n faSearch,\r\n faShoppingCart,\r\n faSortDown,\r\n faSortUp,\r\n faSpinner,\r\n faSquare,\r\n faStar,\r\n faStopwatch,\r\n faTimes,\r\n faUser,\r\n faUsers,\r\n);\r\n\r\nexport default library;\r\nexport type IconProps = Pick>;\r\n\r\nconst variantMap = {\r\n success: 'check',\r\n danger: 'ban',\r\n info: 'info-circle',\r\n warning: 'exclamation-triangle',\r\n}\r\n\r\nexport const IconVariant = ({variant, ...props}: IconProps & { variant: Variant }) => {\r\n const icon = variantMap[variant];\r\n if (!icon) return null;\r\n\r\n return \r\n}\r\n\r\nexport const IconApplications = (props: IconProps) => {\r\n return ;\r\n}\r\n\r\nexport const IconArrowDown = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconArrowUp = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconBars = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconBack = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconBan = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconBed = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCalendar = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCalendarCheck = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCamera = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCaretDown = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCaretUp = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconChartBar = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCheck = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCheckSquare = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconChevronDown = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconChevronLeft = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconChevronRight = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconChevronUp = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconCloudDownloadAlt = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconClock = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconDateTime = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSettings = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSpinner = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSquare = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconDownload = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconEmail = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconDanger = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconPayment = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconBanPayment = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconExternalLinkAlt = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconEye = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconEyeSlash = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\n\r\nexport const IconFavorite = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconFilter = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconHistory = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconHome = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconInfoCircle = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconLock = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconLockOpen = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconPen = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconPhone = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconPlus = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconPrint = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconQuestion = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconResidents = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSearch = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconShoppingCart = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSortDown = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSortUp = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconSort = ({dir, ...props}: IconProps & { dir: 'asc' | 'desc'}) => {\r\n return dir === 'asc' ? : ;\r\n};\r\n\r\nexport const IconStopwatch = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconTimes = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconDelete = IconTimes;\r\n\r\nexport const IconUser = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconUsers = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconUnit = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconUnits = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconWorkOrders = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconItem = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconItems = (props: IconProps) => {\r\n return ;\r\n};\r\n\r\nexport const IconDollar = (props: IconProps) => {\r\n return ;\r\n};\r\n","// https://github.com/epoberezkin/fast-deep-equal/blob/master/index.js\r\n\r\nconst isArray = Array.isArray;\r\nconst keyList = (obj, ignored: string[] = []) => Object.keys(obj).filter(k => !ignored.includes(k));\r\nconst hasProp = Object.prototype.hasOwnProperty;\r\n\r\nexport function isEquivalent(a, b, ignored: string[] = []) {\r\n if (a === b) return true;\r\n\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n const arrA = isArray(a);\r\n const arrB = isArray(b);\r\n let i;\r\n let length;\r\n let key;\r\n\r\n if (arrA && arrB) {\r\n length = a.length;\r\n if (length !== b.length) return false;\r\n for (i = length; i-- !== 0;) {\r\n if (!isEquivalent(a[i], b[i])) return false;\r\n }\r\n return true;\r\n }\r\n\r\n if (arrA !== arrB) return false;\r\n\r\n const dateA = a instanceof Date;\r\n const dateB = b instanceof Date;\r\n\r\n if (dateA !== dateB) return false;\r\n if (dateA && dateB) return a.getTime() === b.getTime();\r\n\r\n const regexpA = a instanceof RegExp;\r\n const regexpB = b instanceof RegExp;\r\n\r\n if (regexpA !== regexpB) return false;\r\n if (regexpA && regexpB) return a.toString() === b.toString();\r\n\r\n const keys = keyList(a, ignored);\r\n length = keys.length;\r\n\r\n if (length !== keyList(b, ignored).length) {\r\n return false;\r\n }\r\n\r\n for (i = length; i-- !== 0;) {\r\n if (!hasProp.call(b, keys[i])) return false;\r\n }\r\n\r\n for (i = length; i-- !== 0;) {\r\n key = keys[i];\r\n if (!isEquivalent(a[key], b[key])) return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return a !== a && b !== b;\r\n}\r\n","\r\nimport LZString from 'lz-string';\r\n\r\nexport function isNullOrWhiteSpace(value) {\r\n return value === null || value === undefined || `${value}`.trim().length === 0;\r\n}\r\n\r\nexport function mergeLocation(location, addLocation) {\r\n return {\r\n ...parseUriLocation(location),\r\n ...parseUriLocation(addLocation)\r\n }\r\n}\r\n\r\nexport function parseUriLocation(uri) {\r\n if (typeof uri !== 'string') return uri;\r\n const [pathname, query = ''] = uri.split('?', 2);\r\n const [search, hash = ''] = query.split('#', 2);\r\n return {\r\n pathname,\r\n search,\r\n hash\r\n }\r\n}\r\n\r\nexport function compress(value: string) {\r\n return LZString.compressToEncodedURIComponent(value);\r\n}\r\n\r\nexport function decompress(value: string) {\r\n return LZString.decompressFromEncodedURIComponent(value);\r\n}","import React, { ReactNode, FunctionComponent, useMemo } from 'react';\r\nimport { OverlayTrigger, Tooltip, Popover } from 'react-bootstrap';\r\nimport { IconInfoCircle } from '../icons';\r\nimport { Variant } from '../typography/Text';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\n\r\ntype TriggerType = 'hover' | 'focus' | 'click'\r\n\r\nexport type TooltipProps = {\r\n id?: string;\r\n show?: boolean;\r\n tooltip: ReactNode;\r\n placement?: Placement;\r\n children?: ReactNode;\r\n trigger?: TriggerType | TriggerType[];\r\n disabled?: boolean;\r\n disabledAs?: any;\r\n}\r\n\r\nexport type PopoverProps = {\r\n id?: string;\r\n popover: ReactNode;\r\n title?: ReactNode | string;\r\n placement?: Placement;\r\n children?: ReactNode;\r\n trigger?: TriggerType | TriggerType[];\r\n}\r\n\r\n\r\nexport type InfoLabelProps = TooltipProps & {\r\n variant?: Variant;\r\n}\r\n\r\nexport const InfoLabel: FunctionComponent = ({variant= 'info', id, placement = 'right', tooltip, children}: any) => {\r\n const tId = useMemo(() => (id || 'tooltip-'+(tooltips++)), []);\r\n return (\r\n <>\r\n {children} {' '}\r\n {tooltip}}>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nlet tooltips = 0;\r\nexport const HmTooltip: FunctionComponent = ({id, placement = 'bottom', tooltip, trigger, children, show = true, disabled = false, disabledAs: As = 'span'}) => {\r\n const tId = useMemo(() => (id || 'tooltip-'+(tooltips++)), []);\r\n\r\n if(!show) return <>{children};\r\n\r\n return (\r\n {tooltip}}>\r\n {disabled ? {children} : children}\r\n \r\n )\r\n}\r\n\r\n\r\nlet popovers = 0;\r\nexport const HmPopover: FunctionComponent = ({id, placement = 'bottom', popover, title, trigger, children}) => {\r\n const tId = useMemo(() => (id || 'popover-'+(popovers++)), []);\r\n\r\n return (\r\n {popover}}>\r\n {children}\r\n \r\n )\r\n}","import http, { authHttp, withMock, getHttpConfig, setHttpConfig, HmRequestOptions } from './http';\r\nimport resourceHttp, { Resource, withResource } from './resourceHttp';\r\nimport { Ok200, noContentMock, handleNullResponse, OkFalse, OkTrue } from './utils';\r\n\r\nexport type InstanceParams = {\r\n wildcard: string;\r\n}\r\n\r\nexport type DetailRequest = {\r\n values: T;\r\n}\r\n\r\nexport type InstanceDetailRequest = DetailRequest & InstanceParams;\r\n\r\n\r\nexport type HmApiRequestGet = (options?: HmRequestOptions) => Promise;\r\nexport type HmApiRequest = (params: T, options?: HmRequestOptions) => Promise;\r\nexport type HmInstanceApiRequest = (params: T, options?: HmRequestOptions) => Promise;\r\n\r\nexport {\r\n authHttp,\r\n http,\r\n resourceHttp,\r\n Resource,\r\n withMock,\r\n withResource,\r\n getHttpConfig,\r\n setHttpConfig,\r\n Ok200,\r\n OkTrue,\r\n OkFalse,\r\n noContentMock,\r\n handleNullResponse,\r\n};\r\n\r\nexport default authHttp","import { useContext } from \"react\";\r\nimport TourContext from \"../components/TourContext\";\r\n\r\nexport function useTour() {\r\n return useContext(TourContext);\r\n}","import { authHttp, processBadApiRequest } from './http';\r\nimport { handleNullResponse } from './utils';\r\n\r\nexport type StaticThisResource = new(data: any, options?: any) => T;\r\n\r\nexport type ResourceGenerator = {create: (data: any, options?: any) => Resource; };\r\n\r\nexport type ResourceFactory = {\r\n create(\r\n this: StaticThisResource,\r\n data: any,\r\n options?: any\r\n ): T\r\n} | Resource\r\n | ResourceGenerator;\r\n\r\nexport interface IApiResource {\r\n isNew: boolean;\r\n readonly [key: string]: any;\r\n readonly url: string;\r\n readonly hasUrl: boolean;\r\n readonly body: any;\r\n}\r\n\r\ntype KeyOfT = Extract;\r\ntype PropsOfT = {[P in KeyOfT] : any};\r\n\r\nexport type ApiResource = PropsOfT & {\r\n readonly url: string;\r\n readonly hasUrl: boolean;\r\n readonly body: T;\r\n get: () => Promise>;\r\n query: (params ?: any) => Promise>>;\r\n save: () => Promise>;\r\n delete: () => Promise;\r\n};\r\n\r\nfunction resolveResource(factory) {\r\n if (!factory) {\r\n return Resource;\r\n }\r\n return factory;\r\n}\r\n// todo: figure out mocking for resource objects, also not having clear out exsiting resolvers :(\r\nconst resourceHttp = authHttp.resolve(\r\n (resolve, w) =>\r\n resolve\r\n .badRequest((res, w) => {\r\n res.json = processBadApiRequest(res.json);\r\n throw res.json;\r\n })\r\n .json(body => {\r\n const factory = resolveResource(w._options.resource);\r\n return Array.isArray(body) ?\r\n body.map(_ => factory.create(_, w._options.resourceOptions)) :\r\n factory.create(body, w._options.resourceOptions);\r\n }),\r\n true\r\n);\r\n\r\nexport const withResource = (factory: ResourceFactory, options?: any) => {\r\n return resourceHttp.options({ resource: factory, resourceOptions: options });\r\n};\r\n\r\nexport class Resource implements IApiResource {\r\n [key: string]: any;\r\n\r\n public get url(): string {\r\n return this.getUrl();\r\n }\r\n\r\n public get resourceUrl(): string {\r\n return this.resolveResourceUrl();\r\n }\r\n\r\n public get hasUrl(): boolean {\r\n return !!this.url;\r\n }\r\n\r\n public get body(): any {\r\n // tslint:disable-next-line: no-this-assignment\r\n const { _http, _links, _embedded, ...body } = this;\r\n return body;\r\n }\r\n public static baseUrl: string = '';\r\n public static relatedFactory: {};\r\n\r\n public static create(this: StaticThisResource, data: any): T {\r\n const that = new this(data);\r\n return that;\r\n }\r\n\r\n public isNew: boolean = false;\r\n public _links: any = {};\r\n\r\n protected _http;\r\n\r\n constructor(data: any, options ?: any) {\r\n const {_embedded = {}, ...otherData} = data;\r\n Object.assign(this, otherData);\r\n\r\n for (const key in _embedded) {\r\n if (_embedded.hasOwnProperty(key)) {\r\n this[key] = this.createRelated(key, _embedded[key]);\r\n }\r\n }\r\n\r\n this._http = (url) => withResource(this.getFactory(), options).url(url);\r\n }\r\n\r\n public resourceHttp() {\r\n return this.http(this.resourceUrl);\r\n }\r\n\r\n public get() {\r\n return this.http(this.url).get();\r\n }\r\n\r\n public query(params?: any) {\r\n return this.http(this.resourceUrl).get(params);\r\n }\r\n\r\n public save() {\r\n const body = this.body;\r\n return this.hasUrl && body.isNew !== true\r\n ? this.http(this.url).put(body)\r\n : this.http(this.resourceUrl).post(body);\r\n }\r\n\r\n public delete() {\r\n return this.http(this.url).delete().catch(handleNullResponse);\r\n }\r\n\r\n public createRelated(key: string, data: any) {\r\n const factory = this.resolveFactory(key);\r\n if (Array.isArray(data)) {\r\n return data.map(d => new factory(d));\r\n }\r\n return factory.create(data);\r\n }\r\n\r\n protected getUrl(): string {\r\n return this._links && this._links.self && this._links.self.href;\r\n }\r\n\r\n protected resolveResourceUrl(): string {\r\n return Object.getPrototypeOf(this).constructor.baseUrl;\r\n }\r\n\r\n protected getFactory(): ResourceFactory {\r\n return Object.getPrototypeOf(this).constructor;\r\n }\r\n\r\n protected http(url: string) {\r\n url = url.replace('api/v1/', '');\r\n return this._http(url);\r\n }\r\n\r\n private resolveFactory(key) {\r\n const factory: any = this.constructor;\r\n if (factory.relatedFactory && factory.relatedFactory[key]) {\r\n return factory.relatedFactory[key];\r\n }\r\n return factory;\r\n }\r\n}\r\n\r\nexport default resourceHttp;\r\n","import { useSharedState } from \"./useSharedState\"\r\nimport { useEffect, useLayoutEffect } from \"react\";\r\n\r\nconst breakpoints = {\r\n xl: 1200,\r\n lg: 992,\r\n md: 768,\r\n sm: 576,\r\n xs: 0,\r\n}\r\n\r\ntype MediaBreakpoint = keyof typeof breakpoints;\r\n\r\ntype WindowDimensions = {\r\n width: number;\r\n height: number;\r\n breakpoints: MediaBreakpoint[];\r\n breakpoint: MediaBreakpoint;\r\n has: (breakpoint: MediaBreakpoint) => boolean;\r\n}\r\n\r\nfunction buildDimensions(): WindowDimensions {\r\n const dim = {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n }\r\n const breakpoints = findBreakpoint(dim);\r\n const [breakpoint] = breakpoints;\r\n\r\n return {\r\n ...dim,\r\n breakpoints,\r\n breakpoint,\r\n has: bp => breakpoints.includes(bp)\r\n }\r\n}\r\n\r\n\r\nlet debounceHandle;\r\nlet resizeHandler;\r\nfunction handleResize(setDim) {\r\n if (debounceHandle) clearTimeout(debounceHandle);\r\n debounceHandle = setTimeout(() => setDim(buildDimensions()), 200);\r\n}\r\nexport function useWindowDimensions(onChange?: (dim:WindowDimensions) => any) {\r\n const [dim] = useSharedState('windowDimensions',\r\n ({setValue}) => {\r\n resizeHandler = () => handleResize(setValue);\r\n window.addEventListener('resize', resizeHandler)\r\n return buildDimensions();\r\n },\r\n () => resizeHandler && window.removeEventListener('resize', resizeHandler)\r\n );\r\n\r\n useLayoutEffect(() => {\r\n onChange && onChange(dim);\r\n }, [dim])\r\n\r\n return dim || buildDimensions();\r\n}\r\n\r\nfunction findBreakpoint({width}): MediaBreakpoint[] {\r\n return Object.keys(breakpoints).filter(k => width >= breakpoints[k]) as any;\r\n}\r\n","import React, { FunctionComponent } from 'react';\r\nimport { ReactComponent as Discover } from '@lindsey-software/housing-manager-ux/content/img/pay-discover.svg';\r\nimport { ReactComponent as Mastercard } from '@lindsey-software/housing-manager-ux/content/img/pay-mastercard.svg';\r\nimport { ReactComponent as Amex } from '@lindsey-software/housing-manager-ux/content/img/pay-amex.svg';\r\nimport { ReactComponent as Visa } from '@lindsey-software/housing-manager-ux/content/img/pay-visa.svg';\r\nimport { ReactComponent as Echeck } from '@lindsey-software/housing-manager-ux/content/img/pay-echeck.svg';\r\nimport { IconPayment } from './fontawesome';\r\n\r\nexport const IconPaymentMethod: FunctionComponent<{\r\n type: keyof typeof paymentMethods;\r\n className?: any;\r\n}> = ({ type, ...props }) => {\r\n const Icon = paymentMethods[type] || IconPayment;\r\n return ;\r\n};\r\n\r\nconst paymentMethods = {\r\n discover: Discover,\r\n 3: Discover,\r\n mastercard: Mastercard,\r\n 2: Mastercard,\r\n visa: Visa,\r\n 1: Visa,\r\n amex: Amex,\r\n 4: Amex,\r\n echeck: Echeck,\r\n 8: Echeck\r\n};\r\n","export const AnchorHrefNoOp: any = 'javascript: void(0);';\r\n\r\nconst createEventHandler = (callback, options: any = {}) => {\r\n const { preventDefault = false, stopPropagation = false } = options;\r\n\r\n return event => {\r\n if (preventDefault) event.preventDefault();\r\n if (stopPropagation) event.stopPropagation();\r\n callback(event);\r\n };\r\n};\r\n\r\nexport const preventsAll = callback =>\r\n createEventHandler(callback, {\r\n preventDefault: true,\r\n stopPropagation: true,\r\n });\r\n\r\nexport const preventsDefault = callback =>\r\n createEventHandler(callback, { preventDefault: true });\r\n\r\nexport const noPropagation = callback =>\r\n createEventHandler(callback, { stopPropagation: true });\r\n\r\nexport const normal = callback => createEventHandler(callback);\r\n","import { useEffect } from 'react';\r\nimport { toast } from 'components/HmAlert';\r\n\r\nlet lastActivity = new Date();\r\n\r\nexport function useActivityTimeout(onTimeout, timeoutInSeconds, suppressFn = () => false) {\r\n\r\n useEffect(() => {\r\n const iv = setInterval(() => {\r\n if (suppressFn()) {\r\n lastActivity = new Date();\r\n return;\r\n }\r\n const diff = (new Date().getTime() - lastActivity.getTime()) / 1000;\r\n if (diff > timeoutInSeconds) {\r\n onTimeout();\r\n } else if (diff > (timeoutInSeconds / 2)) {\r\n toast(`Your session will end in ${timeoutInSeconds/60} minutes, if no activity is detected.`, { showFor: timeoutInSeconds * 1000, variant:'warning' });\r\n }\r\n }, timeoutInSeconds * 1000);\r\n return () => clearInterval(iv);\r\n }, [timeoutInSeconds, suppressFn]);\r\n}\r\n\r\nexport function activityDetected() {\r\n return lastActivity = new Date();\r\n}","import { useLayoutEffect, useEffect } from 'react';\r\nimport { activityDetected } from './useActivityTimeout';\r\n\r\nexport const pagePropDefaults = {\r\n pageTitle: 'Housing Manager',\r\n className: ''\r\n};\r\n\r\nlet locked: boolean = false;\r\n\r\nexport const usePageTitle = pageTitle => {\r\n\r\n useEffect(() => {\r\n if (!pageTitle || locked === true) return;\r\n locked = true;\r\n\r\n analytics.page(pageTitle);\r\n activityDetected();\r\n\r\n const originalTitle = document.title;\r\n document.title = pageTitle;\r\n\r\n return () => {\r\n locked = false;\r\n document.title = originalTitle;\r\n };\r\n }, [pageTitle]);\r\n};\r\n\r\nexport const useBodyClassName = classNames => {\r\n useLayoutEffect(() => {\r\n if (classNames) {\r\n document.body.classList.add(...classNames.split(' '));\r\n return () => {\r\n document.body.classList.remove(...classNames.split(' '));\r\n };\r\n }\r\n },[classNames]);\r\n};\r\n","import React, { forwardRef, FunctionComponent } from 'react';\r\nimport { Variant } from 'components/typography/Text';\r\nimport { ToggleButtonGroup, ToggleButton } from 'react-bootstrap';\r\nimport { ui } from 'lib.core';\r\nimport { FormFieldProps } from './FormField';\r\nimport { FormField } from '.';\r\nimport { FieldStateInitializer } from 'hooks/formUtils/initializers';\r\n\r\nexport type ToggleButtonFieldProps = {\r\n name: string;\r\n id?: string;\r\n options: any[];\r\n variant?: Variant;\r\n value?: any;\r\n isInvalid?: boolean;\r\n type?: 'radio' | 'checkbox';\r\n onChange?: (value: any) => void;\r\n getOptionLabel?: (option: any) => any;\r\n getOptionValue?: (option: any) => any;\r\n placeholder?: any;\r\n disabled?: boolean;\r\n size?: 'sm' | 'lg';\r\n className?: any;\r\n};\r\n\r\nexport const FormToggleButton = forwardRef(\r\n (\r\n {\r\n name,\r\n id = name,\r\n variant,\r\n value,\r\n options,\r\n isInvalid = false,\r\n getOptionLabel = o => o.label,\r\n getOptionValue = o => o.key,\r\n placeholder,\r\n type = 'radio',\r\n disabled,\r\n className,\r\n size,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n \r\n {options.map((option, i) => (\r\n \r\n {getOptionLabel(option)}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport const ToggleButtonField: FunctionComponent = ({\r\n name,\r\n id = name,\r\n variant = 'primary',\r\n onChange,\r\n options,\r\n getOptionLabel = o => o.label,\r\n getOptionValue = o => o.key,\r\n componentProps,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const initializeToggle: FieldStateInitializer = ({\r\n value,\r\n setter,\r\n setError,\r\n props: {\r\n ref,\r\n type,\r\n disabled,\r\n options = [],\r\n defaultValue,\r\n getOptionLabel,\r\n getOptionValue,\r\n onSelect,\r\n ...fieldProps\r\n }\r\n}) => {\r\n const mapped = options.map(getOptionValue);\r\n\r\n const v = isSet(value, mapped.some(o => o === null))\r\n ? mapped.find(o => o === value)\r\n : mapped.find(o => o === defaultValue);\r\n\r\n return {\r\n value: v,\r\n disabled,\r\n options,\r\n ...fieldProps,\r\n getOptionLabel,\r\n getOptionValue,\r\n onChange: (selected: any, e) => {\r\n const ov = getOptionValue(options[selected]);\r\n onSelect && onSelect(ov, e);\r\n setter(ov, true);\r\n setError(false); // clear errors set outside of the control\r\n },\r\n dependencies: [disabled, options, v]\r\n };\r\n};\r\n\r\nfunction isSet(value, hasNulls) {\r\n return (hasNulls && value === null) || (value !== undefined && value !== null);\r\n}\r\n","import React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { initialize } from 'hooks/useFormFieldState';\r\nimport { HmDatePicker, initializeDatePicker, timeDefaults, dateTimeDefaults, dateTimeInputDefaults } from './DatePicker';\r\nimport { IconEmail, IconPhone, IconSearch } from '../icons';\r\nimport { textMask } from '../../lib.app/masks';\r\nimport { initializeToggle, FormToggleButton } from './ToggleButtonField';\r\n\r\nexport const onOffOptions = [{ label: 'ON', value: true}, {label: 'OFF', value: false}];\r\n\r\nexport const formFields = {\r\n text: {\r\n initializer: initialize.input,\r\n component: Form.Control\r\n },\r\n email: {\r\n initializer: initialize.input,\r\n component: Form.Control,\r\n type: 'email',\r\n prependText: \r\n },\r\n phone: {\r\n initializer: initialize.input,\r\n component: Form.Control,\r\n type: 'phone',\r\n prependText: ,\r\n ...textMask('phone')\r\n },\r\n password: {\r\n initializer: initialize.input,\r\n component: Form.Control,\r\n type: 'password'\r\n },\r\n date: {\r\n initializer: initialize.dateFormat(),\r\n component: Form.Control\r\n },\r\n 'date-picker': {\r\n initializer: initializeDatePicker({ outputFormat: 'ISODate'}),\r\n component: HmDatePicker\r\n },\r\n 'utcdate-picker': {\r\n initializer: initializeDatePicker(),\r\n component: HmDatePicker\r\n },\r\n 'time-picker': {\r\n initializer: initializeDatePicker(timeDefaults),\r\n component: HmDatePicker\r\n },\r\n 'datetime-picker': {\r\n initializer: initializeDatePicker(dateTimeDefaults),\r\n component: HmDatePicker\r\n },\r\n 'datepicker-timeinput': {\r\n initializer: initializeDatePicker(dateTimeInputDefaults),\r\n component: HmDatePicker\r\n },\r\n range: {\r\n initializer: initialize.number,\r\n component: Form.Control,\r\n },\r\n select: {\r\n initializer: initialize.select,\r\n component: Form.Control,\r\n as: 'select',\r\n className: 'custom-select'\r\n },\r\n fax: {\r\n initializer: initialize.input,\r\n component: Form.Control,\r\n ...textMask('phone')\r\n },\r\n number: {\r\n initializer: initialize.number,\r\n component: Form.Control,\r\n type: 'number'\r\n },\r\n currency: {\r\n initializer: initialize.number,\r\n component: Form.Control,\r\n format: v => Number(v).toFixed(2),\r\n prependText: '$',\r\n },\r\n search: {\r\n initializer: initialize.input,\r\n component: Form.Control,\r\n type: 'search',\r\n prependText: \r\n },\r\n toggle: {\r\n initializer: initializeToggle,\r\n component: FormToggleButton,\r\n variant: 'primary',\r\n getOptionValue: o => o.value,\r\n getOptionLabel: o => o.label\r\n },\r\n toggleOnOff: {\r\n initializer: initializeToggle,\r\n component: FormToggleButton,\r\n options: onOffOptions,\r\n variant: 'primary',\r\n getOptionValue: o => o.value,\r\n getOptionLabel: o => o.label\r\n }\r\n};\r\n","import React, { FunctionComponent, ReactNode, useMemo, useRef } from 'react';\r\nimport { Form, InputGroup, Row } from 'react-bootstrap';\r\nimport {\r\n useFormFieldState,\r\n initialize,\r\n FormFieldApi,\r\n useFieldApi\r\n} from 'hooks/useFormFieldState';\r\nimport { HmAccessKey } from 'lib.security';\r\nimport { HmElementGuard } from 'components/security/HmGuard';\r\nimport { useFormState } from 'hooks/useFormState';\r\nimport { FieldStateInitializer } from 'hooks/formUtils';\r\nimport { ui } from 'lib.core';\r\nimport { MutedText } from 'components';\r\nimport { formFields } from './formFields';\r\nimport { IconTimes } from 'components/icons';\r\n\r\nexport interface FormFieldProps extends React.InputHTMLAttributes {\r\n name: string;\r\n label: ReactNode;\r\n labelSrOnly?: boolean;\r\n defaultValue?: any;\r\n type?: string;\r\n as?: any;\r\n optional?: boolean;\r\n addOn?: ReactNode;\r\n prependText?: ReactNode;\r\n prepend?: ReactNode;\r\n append?: ReactNode;\r\n appendText?: ReactNode;\r\n tooltip?: ReactNode;\r\n component?: ReactNode;\r\n placeholder?: string;\r\n column?: boolean;\r\n fieldOnly?: boolean;\r\n fieldSize?: 'sm' | 'lg';\r\n inputClassName?: string;\r\n access?: HmAccessKey | boolean;\r\n sm?: any;\r\n md?: any;\r\n lg?: any;\r\n xl?: any;\r\n xs?: any;\r\n getField ?: (params: [any, FormFieldApi]) => void;\r\n fieldType?: FieldStateInitializer | keyof typeof formFields | object;\r\n watch?: any[];\r\n options?: any[];\r\n componentProps?: any;\r\n clearable?: boolean;\r\n validator?: (value: any, values: any) => false | string;\r\n}\r\n\r\nfunction useInitializer(fieldInitializer) {\r\n const ref = useRef(fieldInitializer);\r\n\r\n if (typeof fieldInitializer === 'string' && formFields[fieldInitializer]) {\r\n return formFields[fieldInitializer];\r\n }\r\n if (typeof fieldInitializer === 'function') {\r\n return {\r\n initializer: fieldInitializer,\r\n component: Form.Control\r\n };\r\n }\r\n if (fieldInitializer && fieldInitializer.initializer) return fieldInitializer;\r\n\r\n throw new Error('Invalid field initializer');\r\n}\r\n\r\nexport const HookFormField: FunctionComponent = ({\r\n name,\r\n id = name,\r\n clearable = false,\r\n label,\r\n labelSrOnly = false,\r\n optional = false,\r\n fieldType = initialize.input,\r\n column = false,\r\n sm,\r\n md,\r\n lg,\r\n xl,\r\n xs,\r\n fieldOnly = false,\r\n fieldSize,\r\n watch = [],\r\n getField,\r\n componentProps = {},\r\n access,\r\n children,\r\n className,\r\n inputClassName = fieldOnly ? className : undefined,\r\n ...props\r\n}) => {\r\n if (labelSrOnly && !props.placeholder && typeof label === 'string') {\r\n props.placeholder = label;\r\n }\r\n\r\n const fieldRef = useRef(null as any);\r\n const { initializer, component, ...rest } = useInitializer(fieldType);\r\n const {api: {state}} = useFormState();\r\n const { props: field, api, dependencies } = useFormFieldState(name, initializer, {\r\n ref: fieldRef.current,\r\n ...rest,\r\n className: inputClassName,\r\n ...componentProps,\r\n ...props\r\n });\r\n getField && getField([field, api]);\r\n\r\n const labelProps = { column, sm, md, lg, xl, xs } as any;\r\n\r\n const { append = clearable ? : undefined, prepend, appendText, prependText, addOn, helpers, ...fieldProps } = field;\r\n\r\n const Control = component || Form.Control;\r\n const fieldAccess = (access || state.access) as any;\r\n const fieldMemo = useMemo(\r\n () =>\r\n append || prepend || appendText || prependText ? (\r\n \r\n {(prepend || prependText) && (\r\n \r\n {prependText && {prependText}}\r\n {prepend}\r\n \r\n )}\r\n \r\n {(append || appendText) && (\r\n \r\n {append}\r\n {appendText && {appendText}}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n ),\r\n [...dependencies, ...watch]\r\n );\r\n\r\n return useMemo(() => {\r\n return fieldOnly ? (\r\n fieldMemo\r\n ) : (\r\n \r\n \r\n {label} {optional === true ? (Optional) : null}\r\n \r\n
\r\n {fieldMemo}\r\n {addOn && {addOn}}\r\n {children}\r\n {api.errors}\r\n
\r\n
\r\n );\r\n }, [...dependencies, ...watch]);\r\n};\r\n\r\nexport const ClearField = ({name, className ='input-overlay input-action'}) => {\r\n const api = useFieldApi(name);\r\n if (!api.value) return null;\r\n\r\n return {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return api.clear(null);\r\n }} className={className} >\r\n}","export default [\r\n { value: 'AL', label: 'Alabama' },\r\n { value: 'AK', label: 'Alaska' },\r\n { value: 'AZ', label: 'Arizona' },\r\n { value: 'AR', label: 'Arkansas' },\r\n { value: 'CA', label: 'California' },\r\n { value: 'CO', label: 'Colorado' },\r\n { value: 'CT', label: 'Connecticut' },\r\n { value: 'DE', label: 'Delaware' },\r\n { value: 'DC', label: 'Dist of Columbia' },\r\n { value: 'FL', label: 'Florida' },\r\n { value: 'GA', label: 'Georgia' },\r\n { value: 'HI', label: 'Hawaii' },\r\n { value: 'ID', label: 'Idaho' },\r\n { value: 'IL', label: 'Illinois' },\r\n { value: 'IN', label: 'Indiana' },\r\n { value: 'IA', label: 'Iowa' },\r\n { value: 'KS', label: 'Kansas' },\r\n { value: 'KY', label: 'Kentucky' },\r\n { value: 'LA', label: 'Louisiana' },\r\n { value: 'ME', label: 'Maine' },\r\n { value: 'MD', label: 'Maryland' },\r\n { value: 'MA', label: 'Massachusetts' },\r\n { value: 'MI', label: 'Michigan' },\r\n { value: 'MN', label: 'Minnesota' },\r\n { value: 'MS', label: 'Mississippi' },\r\n { value: 'MO', label: 'Missouri' },\r\n { value: 'MT', label: 'Montana' },\r\n { value: 'NE', label: 'Nebraska' },\r\n { value: 'NV', label: 'Nevada' },\r\n { value: 'NH', label: 'New Hampshire' },\r\n { value: 'NJ', label: 'New Jersey' },\r\n { value: 'NM', label: 'New Mexico' },\r\n { value: 'NY', label: 'New York' },\r\n { value: 'NC', label: 'North Carolina' },\r\n { value: 'ND', label: 'North Dakota' },\r\n { value: 'OH', label: 'Ohio' },\r\n { value: 'OK', label: 'Oklahoma' },\r\n { value: 'OR', label: 'Oregon' },\r\n { value: 'PA', label: 'Pennsylvania' },\r\n { value: 'RI', label: 'Rhode Island' },\r\n { value: 'SC', label: 'South Carolina' },\r\n { value: 'SD', label: 'South Dakota' },\r\n { value: 'TN', label: 'Tennessee' },\r\n { value: 'TX', label: 'Texas' },\r\n { value: 'UT', label: 'Utah' },\r\n { value: 'VT', label: 'Vermont' },\r\n { value: 'VA', label: 'Virginia' },\r\n { value: 'WA', label: 'Washington' },\r\n { value: 'WV', label: 'West Virginia' },\r\n { value: 'WI', label: 'Wisconsin' },\r\n { value: 'WY', label: 'Wyoming' }\r\n];\r\n","import React, { Fragment, FunctionComponent } from 'react';\r\nimport { Col, Form } from 'react-bootstrap';\r\nimport { FormField } from '.';\r\nimport states from 'lib.core/states';\r\n\r\nexport const Address = ({\r\n Container = Fragment,\r\n labelSrOnly = false,\r\n prefix = '',\r\n address1Name = 'addressLine1',\r\n address1Label = 'Address Line 1',\r\n address2Name = 'addressLine2',\r\n address2Label = 'Address Line 2',\r\n cityName = 'city',\r\n\r\n cityLabel = 'City',\r\n stateName = 'state',\r\n stateLabel = 'State',\r\n zipName = 'zip',\r\n zipLabel = 'Zip',\r\n countyName = 'county',\r\n countyLabel = 'County',\r\n showCounty = true,\r\n disabled = false,\r\n}) => {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showCounty && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction fieldName(base: string, prefix ?: string): string {\r\n if (!prefix) {\r\n return base;\r\n }\r\n return [prefix, base.charAt(0).toUpperCase(), base.substring(1)].join('');\r\n}\r\n","import React, {\r\n FunctionComponent,\r\n useContext,\r\n} from 'react';\r\nimport { HmForm } from '.';\r\nimport { HmDetailContext } from '../HmDetail';\r\n\r\nexport const HmDetailForm: FunctionComponent = ({\r\n validator,\r\n children,\r\n transform= _ => _,\r\n ...props\r\n}) => {\r\n const { state, save } = useContext(HmDetailContext);\r\n const myState = transform(state);\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent, useRef, useEffect } from 'react';\r\nimport { useFormState } from '../../hooks/useFormState';\r\nimport { HmAlert } from '..';\r\nimport { Text } from '../typography';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nexport const ValidationSummary: FunctionComponent = ({focusAlert = true, ...props}) => {\r\n const ref = useRef(null);\r\n const form = useFormState();\r\n const errors = form.api.errorSummary();\r\n useEffect(() => {\r\n console.log(ref.current, errors, errors.length);\r\n if (!focusAlert || errors.length === 0) return;\r\n let iv = setInterval(() => {\r\n if (ref.current === null) return;\r\n clearInterval(iv);\r\n ref.current.classList.add('scroll-target');\r\n ref.current.scrollIntoView({block: 'start', behavior: 'smooth'});\r\n ref.current.classList.remove('scroll-target');\r\n },50);\r\n //ref.current?.style.scrollMarginTop = '200px';\r\n }, [focusAlert, errors, errors.length]);\r\n\r\n return (\r\n 0} iconSize=\"2x\"\r\n heading=\"Please fix the following problems:\">\r\n \r\n
    \r\n {errors.map((e, idx) =>
  • {e}
  • )}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import React, { useRef, useImperativeHandle, forwardRef, MutableRefObject, useEffect } from 'react';\r\nimport Recaptcha from 'react-google-recaptcha';\r\nimport config from '../../config';\r\nimport { useFieldApi } from 'hooks/useFormFieldState';\r\nimport { useFormState } from 'hooks/useFormState';\r\n\r\ntype HmRecaptchaProps = {\r\n size?: 'invisible' | 'normal';\r\n name: string;\r\n showAfter?: number;\r\n className?: any;\r\n};\r\n\r\nexport const HmRecaptcha = forwardRef(({ size, showAfter, name, ...props}, ref) => {\r\n const api = useFieldApi(name);\r\n const form = useFormState();\r\n const recaptchaRef = useRef() as MutableRefObject;\r\n\r\n useImperativeHandle(ref, () => ({\r\n execute: () => recaptchaRef!.current!.execute(),\r\n getValue: () => recaptchaRef!.current!.getValue(),\r\n getWidgetId: () => recaptchaRef!.current!.getWidgetId(),\r\n reset: () => recaptchaRef!.current!.reset(),\r\n }));\r\n\r\n useEffect(() => {\r\n if (!recaptchaRef.current) return;\r\n const value = recaptchaRef.current.getValue();\r\n if (size === 'invisible' && !api.value) recaptchaRef.current.execute();\r\n else if (!value) recaptchaRef.current.reset();\r\n }, [size, api.value]);\r\n\r\n if (showAfter && showAfter > form.api.state.submitCount) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n});\r\n","import React, { FunctionComponent, Fragment } from 'react';\r\nimport { ui } from '../../lib.core';\r\n\r\nexport type Variant =\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'danger'\r\n | 'warning'\r\n | 'info'\r\n | 'light'\r\n | 'dark'\r\n | 'white'\r\n | 'muted'\r\n | 'brand'\r\n | 'brand-alt';\r\n\r\ntype KeyOfT = Extract;\r\ntype PropsOfT = {[P in KeyOfT]?: any};\r\n\r\n\r\nexport type TextProps = any> = PropsOfT & {\r\n variant?: Variant;\r\n bold?: boolean;\r\n strikeThrough ?: boolean;\r\n inline ?: boolean;\r\n container ?: boolean;\r\n small ?: boolean;\r\n help ?: boolean;\r\n as?: As;\r\n children: any;\r\n className?: any;\r\n\r\n /**\r\n * I18N message to use (not implemented), fallback to children\r\n */\r\n msgId?: string;\r\n}\r\n\r\nexport const MutedText = props => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const Text: FunctionComponent = ({\r\n variant,\r\n inline = false,\r\n container = false,\r\n bold = false,\r\n small = false,\r\n help = false,\r\n strikeThrough = false,\r\n as: TextAs = (inline ? 'span' : (container ? 'div' : 'p')),\r\n className = '',\r\n children,\r\n ...props\r\n}) => {\r\n const classNames = {\r\n 'bg-dark': variant === 'light' || variant === 'white',\r\n tmyk: help,\r\n 'text-strikethrough': strikeThrough,\r\n small\r\n };\r\n classNames[`text-${variant}`] = !!variant;\r\n const textProps = TextAs === Fragment ? {} : {className: ui.classNames(className, classNames) || undefined, ...props};\r\n return {bold ? {children} : children};\r\n};\r\n\r\nexport const TextCallout: FunctionComponent = ({variant, className, ...props}) => {\r\n const classList = ['callout', `callout-${variant}`];\r\n if (className) {\r\n classList.push(className);\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import MaskedInput from 'react-text-mask';\r\n\r\nexport const masks = {\r\n ssn: [/\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\r\n alienId: [/\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/],\r\n zip: [/[0-9]/, /\\d/, /\\d/, /\\d/, /\\d/],\r\n phone: ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\r\n date: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/],\r\n name: (length: number) => Array(length).fill(/[A-Za-z .'-]/),\r\n numeric: (length: number) => Array(length).fill(/\\d/),\r\n alpha: (length: number) => Array(length).fill(/[A-Za-z]/),\r\n alphaNumeric: (length: number) => Array(length).fill(/[A-Za-z0-9]/)\r\n};\r\n\r\ninterface MaskOptions {\r\n guide?: boolean;\r\n showMask?: boolean;\r\n placeholderChar?: 'string';\r\n keepCharPositions?: boolean;\r\n pipe?: (val?: any) => any;\r\n}\r\n\r\nexport function textMask(\r\n mask: keyof typeof masks | any[] | {},\r\n options: MaskOptions = { showMask: true }\r\n) {\r\n let m: any = Array.isArray(mask) ? mask : typeof mask === 'string' ? masks[mask] : mask;\r\n if (Array.isArray(m)) m = { mask: m };\r\n\r\n return {\r\n as: MaskedInput,\r\n ...options,\r\n ...m\r\n };\r\n}\r\n\r\nexport default masks;\r\n","import { withMock, resourceHttp } from '../..';\r\nimport { HmRequestOptions } from '../../http';\r\n\r\nexport const searchClientsRequest = resourceHttp.url('/admin/searchclients');\r\n\r\nexport const searchClients = (\r\n searchText: string,\r\n options: HmRequestOptions = {}\r\n) =>\r\n withMock(searchClientsRequest, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './searchClients.mock.js')\r\n )\r\n .query({ searchText })\r\n .get();\r\n","import React from 'react';\r\nimport AsyncSelect from 'react-select/async';\r\nimport { searchClients } from '../../api/v1/admin/searchClients';\r\nimport { MutedText } from 'components';\r\n\r\nconst Option = (props) => {\r\n const { innerProps, innerRef } = props;\r\n return (\r\n
\r\n {props.data.clientName}\r\n
{props.data.city}, {props.data.state} {props.data.hasInstance !== true && NO INSTANCE}
\r\n
\r\n );\r\n};\r\n\r\nexport const ClientSelect = (props: any) => {\r\n const getLabel = option => option.clientName;\r\n const getValue = option => option.clientId;\r\n\r\n const loadOptions = inputValue =>\r\n searchClients(inputValue).then(result => result.clients);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { withMock, resourceHttp, Resource } from '../..';\r\nimport { HmRequestOptions } from '../../http';\r\n\r\nconst request = resourceHttp.url('/admin/recentClients');\r\n\r\nexport const recentClients = (options: HmRequestOptions = {}) =>\r\n withMock(request, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './getRecentClients.mock.js')\r\n )\r\n .get()\r\n .then(result => result.clients);\r\n","import React from 'react';\r\nimport { recentClients } from '../../api/v1/admin/recentClients';\r\nimport { useAsync } from 'react-async';\r\nimport { IconSpinner } from '../icons';\r\nimport { Button, Badge } from 'react-bootstrap';\r\n\r\nconst loadRecent = () => recentClients();\r\n\r\nexport const RecentClients = ({ onSelect, ...props }) => {\r\n const { data, isLoading } = useAsync({ promiseFn: loadRecent });\r\n\r\n if (isLoading) return ;\r\n if (data) {\r\n return (\r\n
\r\n Recent clients:\r\n {data.map((c, idx) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n return <>No data;\r\n};\r\n","import React, { useState, useImperativeHandle, forwardRef, FunctionComponent, useEffect, useRef } from 'react';\r\nimport { useClientContext } from '../../hooks/useClientContext';\r\nimport { Card, Popover, Overlay } from 'react-bootstrap';\r\nimport { ClientSelect } from './ClientSelect';\r\nimport { RecentClients } from './RecentClients';\r\nimport { IconChevronDown } from '../icons';\r\nimport { ui } from '../../lib.core';\r\nimport { useUserState } from '../../hooks/useUserState';\r\nimport { Roles } from 'lib.app/enums';\r\nimport { Heading } from 'components';\r\nimport { useIfMounted } from 'hooks/useIfMounted';\r\n\r\nexport const ClientPicker: FunctionComponent = ({ show = true, onChange }) => {\r\n const {changeClient: chooseClient} = useClientContext();\r\n\r\n const handleChange = c => {\r\n if (onChange) onChange(c);\r\n };\r\n\r\n const onClientSelect = c =>\r\n chooseClient(c.clientId).then(r => handleChange(r));\r\n\r\n const onRecentClient = (e, c) =>\r\n chooseClient(c.clientId).then(r => handleChange(r));\r\n\r\n if (!show) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n Accounts\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const ClientDropDown = ({ className, ...props }) => {\r\n const [user] = useUserState();\r\n\r\n const [state, _setState] = useState({ target: undefined, show: false });\r\n const setState = useIfMounted(_setState);\r\n\r\n const onClick = e => {\r\n e.preventDefault();\r\n setState(s => ({ target: e.target, show: !s.show }));\r\n };\r\n const onChange = () => {\r\n setState(s => ({ ...s, show: false }));\r\n };\r\n if (!user.isLoggedIn || !user.roles.includes(Roles.LindseyEmployee)) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n onChange()} placement=\"bottom\" rootClose>\r\n e.stopPropagation()}>\r\n Property Listing\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { useEffect, useRef, useCallback } from 'react';\r\n\r\n\r\nexport function useIfMounted(cb) {\r\n const mounted = useRef(true);\r\n useEffect(\r\n () => () => {\r\n mounted.current = false;\r\n },\r\n []\r\n );\r\n return useCallback((...params) => mounted.current && cb(...params), [cb]);\r\n}\r\n","import React from 'react';\r\nimport { useClientState } from '../../hooks/useClientState';\r\nimport { HmGuard } from 'components/security/HmGuard';\r\n\r\nexport const ClientStatus = props => {\r\n const client = useClientState();\r\n\r\n if (!client || !client.clientId) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {client.clientName}\r\n \r\n {client.accountStatus || 'NO INSTANCE'}\r\n \r\n \r\n );\r\n};\r\n","import React, { FunctionComponent, Fragment } from 'react';\r\nimport { useFormFieldState, initialize } from '../../hooks/useFormFieldState';\r\nimport { Form, Container } from 'react-bootstrap';\r\nimport { ConditionalField, ConditionalFieldProps } from './ConditionalField';\r\nimport { useFormState } from 'hooks/useFormState';\r\nimport { HmElementGuard } from 'components/security/HmGuard';\r\n\r\nexport const Checkbox = ({ name, id = name, disabled = false, ...props }) => {\r\n const {api: {state}} = useFormState();\r\n const { props: field, api } = useFormFieldState(name, initialize.checkbox, props);\r\n return (\r\n \r\n \r\n {props.label || props.children}\r\n {api.errors}\r\n \r\n );\r\n};\r\n\r\nexport const CheckboxList: FunctionComponent = ({ name, value, id = name + value, children, disabled, ...props }) => {\r\n const { props: field, api } = useFormFieldState(name, initialize.checkboxList, {value, ...props});\r\n const {api: {state}} = useFormState();\r\n\r\n return (\r\n \r\n \r\n {children}\r\n {api.errors}\r\n \r\n );\r\n};\r\n\r\ntype CheckboxToggleFieldProps = ConditionalFieldProps & {\r\n label: any;\r\n as?: any;\r\n [x: string]: any;\r\n};\r\n\r\nexport const CheckboxToggleField: FunctionComponent = ({\r\n as: Container = Fragment,\r\n path,\r\n label,\r\n condition: trigger,\r\n watch,\r\n children,\r\n mode,\r\n onChange,\r\n isChecked,\r\n ...props\r\n}) => {\r\n const dependentFieldProps = { path, trigger, watch, mode, children };\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { } from 'react';\r\nimport { Navbar, Nav } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { HmBug } from '../HmBug';\r\nimport { ClientStatus, ClientDropDown } from '../clients';\r\nimport { hmAdmin, HmUrl } from '../../lib.app/routes';\r\nimport { HmNavLink, NavSearch, UserSettings, Help } from '.';\r\nimport { useFirstInstanceWithFeature } from 'hooks/useFirstInstanceWithFeature';\r\nimport { HmFeatures } from 'lib.app/enums';\r\nimport { HmGuard } from 'components';\r\nimport { ResidentsLabel } from 'components/clients/ResidentsLabel';\r\n\r\nexport const HmNav = ({search = undefined}) => {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst InstanceFeatureLink = ({feature, to, children}) => {\r\n const instance = useFirstInstanceWithFeature(feature);\r\n if (!instance || instance.accountStatusId === 0) return null;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nfunction resolvePath(wildcard, path) {\r\n if (typeof path === 'string') return path;\r\n return path(wildcard);\r\n}\r\n","import React from 'react';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { HmGuard } from '../security/HmGuard';\r\n\r\nexport const HmNavLink = ({ children, navOrder, ...props }: any) => {\r\n const Link = (\r\n \r\n {children}\r\n \r\n );\r\n\r\n if (props.guard) {\r\n return (\r\n \r\n {Link}\r\n \r\n );\r\n }\r\n\r\n return Link;\r\n};\r\n\r\nHmNavLink.defaultProps = {\r\n to: '#',\r\n activeClassName: 'active'\r\n};\r\n\r\nexport default HmNavLink;\r\n","import { withMock, HmRequestOptions } from '../../../http';\r\nimport resourceHttp from '../../../resourceHttp';\r\n\r\nexport const url = resourceHttp.url('/search/applications');\r\n\r\nexport const searchApplications = (searchTerm, options: HmRequestOptions = {}) =>\r\n withMock(url, options, () => import(/* webpackChunkName: \"mockApi\" */ './withmatch.mock.json'))\r\n .url(`?searchTerm=${searchTerm}`)\r\n .get();\r\n","import React, { useMemo, useState, useRef, FunctionComponent } from 'react';\r\nimport { Popover, Overlay, Row, Col, Badge, Container } from 'react-bootstrap';\r\nimport { HmGuard } from 'components/security/HmGuard';\r\nimport { HmDetailForm, FormField } from 'components/forms';\r\nimport { HmDetail } from 'components/HmDetail';\r\nimport { searchApplications } from 'api/v1/search/applications';\r\nimport { useDetailState, useDetailActions } from 'hooks/useDetail';\r\nimport { ui } from 'lib.core';\r\nimport {\r\n IconCheck,\r\n IconDelete,\r\n IconChevronRight,\r\n IconUser,\r\n IconBed,\r\n IconSpinner,\r\n IconTimes\r\n} from 'components/icons';\r\nimport { Link } from 'react-router-dom';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { Heading, Text } from 'components';\r\nimport { ClearField } from 'components/forms/FormField';\r\n\r\nexport const NavSearch = ({ component: Search = ApplicantSearch, ...props }) => {\r\n return ;\r\n};\r\n\r\nconst searchApplicants = async ({ values, context, dispatch }) => {\r\n context.refresh = false;\r\n if (!values.searchText || values.searchText.length < 3) return {\r\n ...values,\r\n show: false,\r\n loading: false\r\n };\r\n\r\n searchApplications(values.searchText).then(applicants =>\r\n dispatch(state => ({\r\n ...state,\r\n applicants: applicants.applicationsearchresults,\r\n loading: false\r\n })));\r\n\r\n return {\r\n ...values,\r\n applicants: [],\r\n show: true,\r\n loading: true\r\n };\r\n};\r\n\r\nconst reducers = {\r\n hideResults: state => ({\r\n ...state,\r\n show: false,\r\n loading: false,\r\n searchText: ''\r\n })\r\n};\r\n\r\nconst ApplicantSearch = () => {\r\n // use reducer of HmDetail probably\r\n return (\r\n \r\n void 0}\r\n reducers={reducers}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst SearchText = () => {\r\n const [focus, setFocus] = useState(false);\r\n const { loading } = useDetailState();\r\n return (\r\n setFocus(true)}\r\n onBlur={() => setFocus(false)}\r\n className={ui.classNames({ dark: !focus })}>\r\n : undefined}\r\n autoFocus={focus}\r\n watch={[loading]}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst ApplicantSearchResult = ({ selector }) => {\r\n const { applicants = [], searchText = '', show, loading } = useDetailState();\r\n const { hideResults } = useDetailActions();\r\n\r\n const getTarget = useMemo(\r\n () => () => {\r\n const target = document.querySelector(selector);\r\n return target as any;\r\n },\r\n [selector]\r\n );\r\n\r\n if (!show) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst HightlightText = ({ text, higlight }) => {\r\n const parts = text.split(new RegExp(`(${higlight})`, 'gi'));\r\n return (\r\n <>\r\n {parts.map((part, idx) => (\r\n \r\n {part}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\n\r\nconst ApplicantResults: FunctionComponent = ({ applicants = [], searchText, loading }) => {\r\n if (loading) return ;\r\n if (applicants.length === 0) return ;\r\n\r\n return (\r\n
\r\n {applicants.map((applicant, idx) => (\r\n {\r\n if (target.className === 'waiting-list') return;\r\n currentTarget.querySelector('a')!.click();\r\n }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n
\r\n )\r\n\r\n};\r\n\r\nconst ApplicantRelationship = ({ matchedRelationshipId }) => {\r\n if (matchedRelationshipId !== 1) return null;\r\n return Primary;\r\n};\r\n\r\nconst Applicant = ({ numFamilyMembers }) => {\r\n return (\r\n \r\n {numFamilyMembers ? numFamilyMembers : '?'} \r\n \r\n );\r\n};\r\n\r\nconst Beds = ({ minNumBeds, maxNumBeds }) => {\r\n let beds = '';\r\n if (minNumBeds || maxNumBeds) {\r\n if (minNumBeds === maxNumBeds) {\r\n beds = minNumBeds;\r\n } else if (!minNumBeds) {\r\n beds = maxNumBeds;\r\n } else if (!maxNumBeds) {\r\n beds = minNumBeds;\r\n } else {\r\n beds = minNumBeds + '-' + maxNumBeds;\r\n }\r\n }\r\n return (\r\n \r\n {beds} \r\n \r\n );\r\n};\r\n\r\nconst WaitListItems = ({ items, instanceId, applicationId }) => {\r\n const actions = useDetailActions();\r\n return items.map((item,idx) => {\r\n const purged = item.applicationStatusId === -1;\r\n\r\n return (\r\n \r\n \r\n {\r\n actions.hideResults()\r\n e.stopPropagation();\r\n }}\r\n className=\"waiting-list\">\r\n {' '}\r\n \r\n {item.waitingListName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n });\r\n};\r\n\r\nconst WaitingListIcon = ({ applicationStatusId }) => {\r\n if (applicationStatusId === 4) {\r\n return ;\r\n }\r\n if (applicationStatusId === 3) {\r\n return ;\r\n }\r\n if (applicationStatusId === -1) {\r\n return DROPPED;\r\n }\r\n\r\n return ;\r\n};\r\n\r\nconst NoResults = () => {\r\n return (\r\n
\r\n No results found.\r\n

Check your spelling and try again.

\r\n
\r\n ESC to cancel\r\n
\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Navbar } from 'react-bootstrap';\r\nimport { HmNavLink } from '.';\r\nimport { generatePath } from 'react-router';\r\nimport matchers from 'lib.core/matching/matchers';\r\n\r\nexport const SubNav = ({ root, items, sort = false, prepend, children, ...props }: any) => {\r\n const navitems = sort ? [...items].sort((a, b) => a.navOrder - b.navOrder) : items;\r\n\r\n return (\r\n \r\n {prepend}\r\n {navitems.map(({ title, component, visible = true, path, absolute = false, ...item }:any) => {\r\n const show = matchers.isFunction(visible) ? visible() : visible;\r\n\r\n return show === false ? null : (\r\n \r\n {title}\r\n \r\n );\r\n })}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nfunction resolvePath({ root, path, absolute, props }) {\r\n const p = generatePath(path, { wildcard: '', ...props });\r\n return absolute ? p : root + p;\r\n}\r\n\r\nexport default SubNav;\r\n","import React from 'react';\r\nimport NavDropdown from 'react-bootstrap/NavDropdown';\r\nimport { Link } from 'react-router-dom';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { IconQuestion, IconInfoCircle } from '../icons';\r\nimport { useTour } from 'areas/tour/hooks/useTour';\r\nimport { useGuard } from 'hooks/useGuard';\r\nimport { HmGuard } from 'components/security/HmGuard';\r\n\r\nexport const Help = props => {\r\n const guarded = useGuard('companyUserAdmin');\r\n const { isActive } = useTour();\r\n const title = <>{isActive ? : } Help;\r\n return (\r\n \r\n \r\n {!guarded && (\r\n <>\r\n \r\n Getting Started Guide\r\n \r\n \r\n \r\n )}\r\n \r\n Download User Manaul\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { useUserState } from '../../hooks/useUserState';\r\nimport { NavDropdown } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { IconEmail, IconPhone, IconUser } from '../icons';\r\nimport { HmUrl } from '../../lib.app/routes';\r\nimport { useCurrentWildcard } from '../../hooks/useInstanceState';\r\nimport { HmGuard } from 'components';\r\n\r\nexport const UserSettings = (props) => {\r\n const wildcard = useCurrentWildcard();\r\n const [user] = useUserState();\r\n\r\n const title = (\r\n <>\r\n {' '}\r\n {user.displayName}\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n My Profile\r\n \r\n Users\r\n Settings\r\n Security\r\n \r\n About Housing Manager\r\n \r\n Contact Us\r\n \r\n Email Us\r\n \r\n \r\n \r\n HousingManager.com: 855-979-0770\r\n \r\n \r\n Sign Out\r\n \r\n \r\n );\r\n\r\n};\r\n","import { HmNav } from './HmNav';\r\n\r\nexport { HmNavLink } from './HmNavLink';\r\nexport { NavSearch } from './NavSearch';\r\nexport { default as SubNav } from './SubNav';\r\nexport { Help } from './Help';\r\nexport { UserSettings } from './UserSettings';\r\nexport { HmNav };\r\nexport default HmNav;\r\n","import { clone } from '..';\r\nimport qs from 'qs';\r\nimport merge from '../merge';\r\nimport { isEquivalent } from '../isEquivalent';\r\nimport { compress, decompress } from 'lib.core/utils';\r\n\r\n\r\ntype FilterObj = {\r\n top: number,\r\n skip: number,\r\n sort: string;\r\n}\r\n\r\nexport type HmFilter = {\r\n $filter: any;\r\n $top: number;\r\n $skip: number;\r\n $sort: string;\r\n};\r\n\r\nexport default class Filter {\r\n\r\n public get sort(): string {\r\n return this._sort;\r\n }\r\n\r\n public set sort(value) {\r\n this._sort = value;\r\n }\r\n\r\n public get sortField(): string {\r\n const [field] = this._sort ? this._sort.split(' ') : [''];\r\n return field;\r\n }\r\n\r\n public get top(): any {\r\n return this._top;\r\n }\r\n\r\n public set top(value: any) {\r\n this._top = parseInt(value, 10);\r\n this.skip = 0;\r\n }\r\n\r\n public get skip(): any {\r\n return this._skip;\r\n }\r\n\r\n public set skip(value: any) {\r\n this._skip = parseInt(value, 10);\r\n }\r\n\r\n public get pageSize(): any {\r\n return this.top;\r\n }\r\n\r\n public get page(): number {\r\n return !this.hasPaging ? 1 : Math.floor(this.skip / this.top) + 1;\r\n }\r\n\r\n public get hasPaging(): boolean {\r\n return this.totalCount > 0 && this.top > 0;\r\n }\r\n\r\n public get data(): any {\r\n return this._data;\r\n }\r\n\r\n public static emptyStringToNull = (name: string, val: any): any | undefined => {\r\n if (typeof val === 'string' && val.length === 0) {\r\n return null;\r\n }\r\n return val;\r\n }\r\n\r\n public static removeEmpty = (name: string, val: any): any | undefined => {\r\n if (val === undefined || val === null || val === '' || (Array.isArray(val) && val.length === 0)) {\r\n return undefined;\r\n }\r\n return val;\r\n }\r\n\r\n public static removePaging = (name: string, val: any): any | undefined => {\r\n if (name === '$top' || name === '$skip') return undefined;\r\n return Filter.removeEmpty(name, val);\r\n }\r\n\r\n public value: T;\r\n public initialValue: T;\r\n public totalCount: number = 0;\r\n\r\n private _data: any;\r\n\r\n private _top: number;\r\n private _skip: number;\r\n private _sort: string;\r\n\r\n constructor(value: T, skip: number = 0, top: number = 25) {\r\n this.initialValue = this.value = clone(value);\r\n this._skip = skip;\r\n this._top = top;\r\n this._sort = '';\r\n }\r\n\r\n public setData(data: any, count: any) {\r\n this._data = data;\r\n this.totalCount = typeof count === 'function' ? count(data) : count;\r\n }\r\n\r\n public getSortDir(field = this.sortField) {\r\n return this._sort ? this._sort.replace(field, '').trim().toLowerCase() : null;\r\n }\r\n\r\n public toggleSort(field = this.sortField) {\r\n const dir = this.getSortDir(field);\r\n this.sort = dir !== 'asc' ? `${field} asc` : `${field} desc`;\r\n }\r\n\r\n public setPageProperties(page: number, pageSize?: number) {\r\n this.top = pageSize || this.top;\r\n this.skip = (page - 1) * this.top;\r\n }\r\n\r\n public getObject(): T & FilterObj {\r\n return merge({}, this.value, { top: this.top, skip: this.skip, sort: this.sort });\r\n }\r\n\r\n public getQsValue(): string {\r\n return `$filter=${compress(this.getPersistedValue())}`;\r\n }\r\n\r\n public parseQsValue(qsValue: string) {\r\n const { $filter } : any = qs.parse(qsValue, { ignoreQueryPrefix: true});\r\n this.setPersistedValue(decompress($filter));\r\n }\r\n\r\n public getPersistedValue(): string {\r\n return JSON.stringify(this.getObject());\r\n }\r\n\r\n public setPersistedValue(persistedValue: string) {\r\n const { top, skip, sort, ...value } = JSON.parse(persistedValue);\r\n this.setValue(value);\r\n this.top = top;\r\n this.skip = skip;\r\n this.sort = sort;\r\n }\r\n\r\n public reset() {\r\n this.setValue(this.initialValue, true);\r\n this.skip = 0;\r\n }\r\n\r\n public setValue(value: T, replace = true) {\r\n this.value = replace === true ? clone(value) : clone(this.initialValue, this.value, value);\r\n }\r\n\r\n public asHmFilter(replacer ?: (name: string, val: any) => any | undefined, force: boolean = false) {\r\n const filter = {} as HmFilter;\r\n if (force || !isEquivalent(this.value, this.initialValue)) {\r\n filter.$filter = JSON.stringify(this.value, replacer);\r\n }\r\n if (this.top !== 25) {\r\n filter.$top = this.top;\r\n }\r\n if (this.skip !== 0) {\r\n filter.$skip = this.skip;\r\n }\r\n if (this.sort) {\r\n filter.$sort = this.sort;\r\n }\r\n return filter;\r\n }\r\n\r\n public asHmFilterOnly() {\r\n return this.asHmFilter(Filter.removePaging, true);\r\n }\r\n}\r\n","import Filter from './Filter';\r\n\r\nexport interface FilterOptions {\r\n top ?: number;\r\n skip ?: number;\r\n sort ?: string;\r\n query ?: string;\r\n persist ?: boolean;\r\n}\r\n\r\nexport default Filter;\r\n","import React, { useEffect, useLayoutEffect, useRef, createContext, useMemo, RefObject, FunctionComponent } from 'react';\r\nimport { useFilter } from 'hooks/useFilter';\r\nimport { useHistory, useLocation } from 'react-router';\r\nimport { removeState, Updater } from 'hooks/useSharedState';\r\nimport { FormContextProvider } from './forms';\r\nimport { clone, Filter } from 'lib.core';\r\n\r\ninterface HmFilterProps {\r\n name: string;\r\n top ?: number;\r\n value ?: T;\r\n destroy ?: boolean;\r\n useQuery ?: boolean;\r\n updateSearch ?: boolean;\r\n loadSearch ?: boolean;\r\n persist ?: boolean;\r\n defaultSort ?: string;\r\n}\r\n\r\nexport type FilterContextState = {\r\n name: string;\r\n filter: Filter;\r\n actions: RefObject any>>;\r\n dispatch: Updater>;\r\n tryRefresh: () => Promise;\r\n tryAction: (action: string, ...params) => any;\r\n}\r\n\r\nexport const FilterContext = createContext({} as FilterContextState);\r\n\r\nexport const HmFilter: FunctionComponent = ({\r\n name,\r\n top = 25,\r\n value = {},\r\n persist = false,\r\n destroy = !persist,\r\n useQuery = false,\r\n updateSearch = useQuery,\r\n loadSearch = useQuery,\r\n defaultSort = '',\r\n ...props\r\n }) => {\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n const handlingChange = useRef(false);\r\n\r\n const [filter, setFilter] = useFilter(name, value, {\r\n top,\r\n sort: defaultSort,\r\n query: loadSearch ? location.search : '',\r\n persist\r\n });\r\n\r\n const action = useRef(new Map([['reset', () => setFilter(f => {\r\n f.reset();\r\n return f;\r\n }, true)]]));\r\n\r\n useEffect(() => {\r\n if (updateSearch && !handlingChange.current) {\r\n handlingChange.current = true;\r\n updateSearch && history.push({ search: filter.getQsValue() });\r\n } else {\r\n handlingChange.current = false;\r\n }\r\n\r\n persist && localStorage.setItem(`filter:${name}`, filter.getPersistedValue());\r\n\r\n }, [filter.value, filter.top, filter.skip, updateSearch, persist]);\r\n\r\n // handles values changing typically from browser forward/back\r\n useEffect(() => {\r\n if (loadSearch && !handlingChange.current) {\r\n handlingChange.current = true;\r\n setFilter(f => { f.parseQsValue(location.search); return f; });\r\n } else {\r\n handlingChange.current = false;\r\n }\r\n }, [location.search, loadSearch]);\r\n\r\n useLayoutEffect(() => {\r\n return () => {\r\n if (destroy) {\r\n localStorage.removeItem(`filter:${name}`);\r\n removeState(name);\r\n }\r\n };\r\n }, [destroy, name]);\r\n\r\n const context = useMemo(() => ({\r\n name,\r\n filter,\r\n actions: action,\r\n dispatch: setFilter,\r\n tryRefresh: () => {\r\n if (!action.current || !action.current.has('refresh')) return Promise.resolve();\r\n const act = action.current.get('refresh') as any;\r\n return act(true);\r\n },\r\n tryAction: (actionName, ...params) => {\r\n if (!action.current || !action.current.has(actionName)) return;\r\n const act = action.current.get(actionName) as any;\r\n return act(...params);\r\n }\r\n }), [filter, name]);\r\n\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n }\r\n","export const eachPropertyPair = (object, callback, includePrototypeHierarchyAttributes = false) => {\r\n const includeHierarchy =\r\n includePrototypeHierarchyAttributes === undefined ? true : includePrototypeHierarchyAttributes;\r\n\r\n // tslint:disable-next-line: forin\r\n for (const methodName in object) {\r\n const value = object[methodName];\r\n const isOwnProperty = object.hasOwnProperty(methodName);\r\n\r\n if (isOwnProperty || includeHierarchy) callback(methodName, value, isOwnProperty);\r\n }\r\n};\r\n\r\nexport const hasProps = obj => {\r\n return Object.keys(obj).length > 0;\r\n};\r\n\r\nexport const reduce = (obj, alwaysRemove = [] as any) => {\r\n return Object.keys(obj).reduce((acc, key) => {\r\n const remove = hasProps(obj) ? alwaysRemove.find(i => i === key) : false;\r\n return remove || obj[key] === null || obj[key] === undefined\r\n ? acc\r\n : { ...acc, [key]: obj[key] };\r\n }, {});\r\n};\r\n\r\nexport default {\r\n eachPropertyPair,\r\n hasProps,\r\n reduce\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { useFilterContext } from 'hooks/useFilter';\r\nimport { Form, FormField } from './';\r\nimport { ui } from 'lib.core';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Heading, CollapsePanel } from 'components';\r\nimport { useWindowDimensions } from 'hooks/useWindowDimensions';\r\n\r\ninterface FormFilterProps {\r\n name?: string;\r\n replaceValue?: boolean;\r\n autoSubmit?: string[];\r\n autoSubmitDelay?: number;\r\n className?: any;\r\n showFormState?: any;\r\n}\r\n\r\nexport const FormFilter: FunctionComponent = ({ name, replaceValue = false, className, children, ...props }) => {\r\n const {filter, dispatch: setFilter} = useFilterContext();\r\n const dim = useWindowDimensions();\r\n\r\n const applyFilter = ({values}) => {\r\n setFilter(f => {\r\n f.setValue(values, replaceValue);\r\n f.skip = 0;\r\n }, replaceValue);\r\n return Promise.resolve();\r\n };\r\n\r\n return (\r\n
\r\n {dim.has('md') ? children : (\r\n \r\n {children}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\n\r\nexport const FilterHeading = ({label = 'Filter', reset = false}) => {\r\n return (\r\n \r\n {label}{' '}\r\n {reset && Reset}\r\n \r\n );\r\n};\r\n\r\nexport const FilterSearch = ({label, labelSrOnly = true, name }) => {\r\n const {filter} = useFilterContext();\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport const ClearFilter: FunctionComponent = ({children, replace, ...props}) => {\r\n const {tryAction} = useFilterContext();\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default FormFilter;\r\n","import React, { FunctionComponent, useLayoutEffect, useRef } from 'react';\r\nimport { ui } from '../lib.core';\r\n\r\ninterface HmDrawerProps {\r\n show?: boolean;\r\n id?: string;\r\n className?: any;\r\n}\r\n\r\nexport const HmDrawer: FunctionComponent = ({ show = false, className, ...props }) => {\r\n const ref = useRef(null) as any;\r\n\r\n useLayoutEffect(() => {\r\n if (!show) return;\r\n const element = ref.current as HTMLElement;\r\n if (!element) return;\r\n element.parentElement!.style.paddingBottom = element.offsetHeight + 30 + 'px';\r\n return () => {\r\n element.parentElement!.style.paddingBottom = '';\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [show]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import React, { createContext, FunctionComponent } from 'react';\r\nimport { DateFormats, applyJSONFormat } from 'lib.core/formatters';\r\nimport { useCurrentSettings } from 'hooks/useInstanceState';\r\nimport { HmTimeZoneId } from 'lib.app/miscData/timeZones';\r\n\r\ntype DateGenerator = (d?: Date) => Date\r\n\r\ntype FormatDateGenerator = (format: false | DateFormats, gen: DateGenerator) => DateGenerator;\r\n\r\ntype TimeContextProps = {\r\n timeZoneId: HmTimeZoneId;\r\n format: DateFormats | false;\r\n date: DateGenerator;\r\n}\r\n\r\ntype TimeContextProviderProps = Partial & {\r\n useInstanceTime?: boolean;\r\n}\r\n\r\nconst dateFn: FormatDateGenerator = (format, dateGen) => format === false ? dateGen : date => applyJSONFormat(dateGen(date), format)\r\n\r\nconst timeContextDefault: TimeContextProps = {\r\n format: 'ISOLocal',\r\n timeZoneId: false,\r\n date: d => d ? new Date(d) : new Date()\r\n};\r\n\r\nexport const TimeContext = createContext(timeContextDefault);\r\n\r\nexport const TimeContextProvider: FunctionComponent = ({ format = 'ISOLocal', timeZoneId = false, useInstanceTime = false, date: dateGen = timeContextDefault.date, ...props }) => {\r\n const {timeZoneId: clientTimeZoneId} = useCurrentSettings();\r\n if (useInstanceTime) {\r\n timeZoneId = clientTimeZoneId;\r\n }\r\n const date = dateFn(format, dateGen);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import { useMemo } from \"react\";\r\nimport qs, {IParseOptions} from \"qs\";\r\nimport { merge } from \"lib.core\";\r\nimport { useLocation } from \"react-router\";\r\n\r\nconst defaults: IParseOptions = {\r\n ignoreQueryPrefix: true,\r\n parseArrays: true,\r\n strictNullHandling: true,\r\n};\r\n\r\nexport function useQueryString(initialValue?: T, options: IParseOptions = defaults) {\r\n const location = useLocation();\r\n\r\n return useMemo(() => {\r\n const query = qs.parse(location.search, options);\r\n return merge(initialValue || {}, query);\r\n }, [location.search, options]);\r\n}","import React, { FunctionComponent } from 'react';\r\n\r\ntype AddressProps = {\r\n city?: string;\r\n state?: string;\r\n zip?: string;\r\n addressLine1: string;\r\n addressLine2?: string;\r\n county?: string;\r\n unitNumber?: string;\r\n includeUnitNumber?: boolean;\r\n};\r\n\r\nexport type ContactProps = AddressProps & {\r\n phone?: string;\r\n email?: string;\r\n};\r\n\r\nexport const HmAddress: FunctionComponent = ({\r\n city,\r\n state,\r\n zip,\r\n addressLine1,\r\n addressLine2,\r\n county,\r\n unitNumber,\r\n includeUnitNumber = false\r\n}) => {\r\n const address = [addressLine1];\r\n if (addressLine2) {\r\n address.push(addressLine2);\r\n }\r\n if (city) {\r\n address.push(\r\n [city, county ? county + ' County' : county, [state, zip].filter(_ => _).join(' ')]\r\n .filter(_ => _)\r\n .join(', ')\r\n );\r\n }\r\n if (includeUnitNumber && unitNumber) {\r\n address.push(`Unit #${unitNumber}`);\r\n }\r\n\r\n return (\r\n
\r\n {address.map((i, idx) => (\r\n {i}\r\n ))}\r\n
\r\n );\r\n};","import React, { Component, useCallback, FunctionComponent, useMemo } from 'react';\r\nimport {withScope, captureException, configureScope} from '@sentry/browser';\r\nimport { ExceptionMessage } from 'components/HmAlert';\r\nimport config from 'config';\r\nimport { useUserState } from 'hooks/useUserState';\r\nimport { useCurrentWildcard } from 'hooks/useInstanceState';\r\n\r\ntype Bag = {\r\n [x: string]: any;\r\n}\r\n\r\ninterface SentryProps {\r\n extras?: Bag;\r\n container?: any;\r\n}\r\n\r\ninterface SentryState {\r\n hasError: boolean;\r\n error?: any;\r\n eventId?: any;\r\n}\r\n\r\nclass _SentryErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false, error: false };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n let eventId;\r\n if (config.sentry.enabled) {\r\n withScope(scope => {\r\n if (this.props.extras) {\r\n scope.setExtras(this.props.extras)\r\n }\r\n scope.setExtra('componentStack', errorInfo.componentStack);\r\n eventId = captureException(error);\r\n });\r\n }\r\n this.setState({ hasError: true, error, eventId })\r\n }\r\n\r\n render() {\r\n const Container = this.props.container || React.Fragment;\r\n if (this.state.hasError) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport function useSetSentryUser() {\r\n const [{userId: id, username, email, roles, clientId }] = useUserState();\r\n const wildcard = useCurrentWildcard();\r\n\r\n return useMemo(() =>\r\n configureScope(scope => {\r\n scope.setUser({id, username, email, roles, clientId, wildcard } as any);\r\n }), [id, wildcard]\r\n );\r\n}\r\n\r\nexport function useSentry(additionalScope) {\r\n useSetSentryUser();\r\n\r\n return useCallback(error => {\r\n withScope(scope => {\r\n additionalScope && additionalScope(scope);\r\n return captureException(error);\r\n });\r\n }, [additionalScope]);\r\n}\r\n\r\nconst SentryErrorBoundary: FunctionComponent = (props) => {\r\n useSetSentryUser();\r\n\r\n return (\r\n <_SentryErrorBoundary {...props}>\r\n\r\n \r\n )\r\n}\r\n\r\nexport default SentryErrorBoundary;\r\n","import React, { FunctionComponent, ReactNode, Fragment } from 'react';\r\nimport { formats, DateFormats, formatDate } from '../lib.core/formatters';\r\nimport { TextProps, Text } from './typography/Text';\r\nimport { parseISO, parse } from 'date-fns/esm';\r\nimport { isValid } from 'date-fns';\r\n\r\ntype HmDateProps = {\r\n date?: string | number | Date;\r\n format ?: DateFormats;\r\n compareDate ?: Date;\r\n fallback ?: ReactNode;\r\n /** prepend children, instead of appending them */\r\n prepend ?: boolean;\r\n\r\n /**\r\n * Indicates the date is previously localized to the current client\r\n */\r\n localized?: boolean;\r\n};\r\n\r\nexport const HmDate: FunctionComponent & HmDateProps> = ({date = new Date(), variant, prepend = false, compareDate, format= formats.ShortDate, fallback = null, localized= false, children, ...props}) => {\r\n const displayDate = date && (typeof date === 'string' && date.includes('-') ? parseISO(date) : new Date(date));\r\n const As = variant ? 'span' : Fragment;\r\n\r\n // todo localize to clients timezone.\r\n if (!displayDate || !isValid(displayDate)) {\r\n return fallback as any\r\n }\r\n\r\n\r\n return (\r\n \r\n {prepend && children}\r\n {formatDate(displayDate, compareDate || formats[format] || format)}\r\n {prepend ? null : children}\r\n \r\n );\r\n};\r\n","const mockMiddleware = next => (url, opts) => {\r\n // mock requested, keep going\r\n if (!opts.mock || !opts.mock.promiseFn) return next(url, opts);\r\n\r\n return opts.mock.promiseFn().then(mock => {\r\n if (mock && mock.default) mock = mock.default;\r\n // mock wants to handle the things\r\n if (typeof mock === 'function') {\r\n mock = mock(url, opts);\r\n }\r\n\r\n // mock was kind and gave us a response\r\n if (mock instanceof Response) {\r\n mock.headers.append('x-mock', `Mocked request ${opts.method} @ ${url}`);\r\n return mock;\r\n }\r\n\r\n // build the response\r\n const init = {\r\n status: opts.mock.status,\r\n statusText: opts.mock.statusText,\r\n headers: { 'x-mock': `Mocked request ${opts.method} @ ${url}` }\r\n };\r\n\r\n const mockResult =\r\n mock[`${opts.mock.status}:${opts.mock.statusText}`] || mock[`${opts.mock.status}`] || '';\r\n // wretch wants a response promise, give it what it wants\r\n return new Response(\r\n mockResult === null || mockResult === '' ? mockResult : JSON.stringify(mockResult),\r\n init\r\n );\r\n });\r\n};\r\n\r\nexport default mockMiddleware;\r\n","import wretch, { Wretcher, WretcherOptions } from 'wretch';\r\nimport mockMiddleware from './mockMiddleware';\r\nimport config from '../config';\r\nimport { clone } from '../lib.core';\r\nimport { HmUrl } from 'lib.app/routes';\r\n\r\nconst httpConfig = {\r\n accessToken: config.api.devToken,\r\n endpoint: config.api.endpoint,\r\n expires: config.api.devToken ? 1200 : 0,\r\n setLocation: window.location.replace,\r\n unauthorized: () => httpConfig.setLocation(`${HmUrl.login}?returnUrl=${encodeURIComponent(window.location.pathname)}`),\r\n forbidden:() => httpConfig.setLocation(`${HmUrl.login}?returnUrl=${encodeURIComponent(window.location.pathname)}`),\r\n notFound: () => httpConfig.setLocation(HmUrl.notFound),\r\n mocksEnabled: config.api.mockResponses,\r\n mockDefault: {\r\n status: 200,\r\n statusText: 'OK'\r\n }\r\n};\r\n\r\ninterface HttpConfig {\r\n accessToken: string;\r\n endpoint: string;\r\n expires: number;\r\n mocksEnabled: boolean;\r\n setLocation: (url: string) => void;\r\n unauthorized: () => void;\r\n forbidden: () => void;\r\n notFound: () => void;\r\n mockDefault: { status: number; statusText: string };\r\n}\r\n\r\ntype KeysOfType = { [k in keyof T]: T[k] extends U ? k : never }[keyof T];\r\ntype HttpConfigName = keyof HttpConfig;\r\n\r\nexport interface HmMockOptions {\r\n promiseFn?: () => Promise;\r\n status?: number;\r\n statusText?: string;\r\n}\r\n\r\nexport interface HmRequestOptions extends WretcherOptions {\r\n mock?: HmMockOptions;\r\n forceMock?: boolean;\r\n}\r\n\r\nexport const getHttpConfig = (\r\n name?: HttpConfigName | undefined\r\n): string | number | boolean | any => {\r\n if (!name) return { ...httpConfig };\r\n return httpConfig[name];\r\n};\r\n\r\nexport function setHttpConfig (name: HttpConfigName, value: any) {\r\n (httpConfig[name] as any) = value;\r\n};\r\n\r\nexport const setAccessToken = (token, expires) => {\r\n httpConfig.accessToken = token;\r\n httpConfig.expires = expires;\r\n};\r\n\r\nexport const withOptions = (w: Wretcher, options: HmRequestOptions = {}) => {\r\n if (!options) return w;\r\n\r\n if (options.mock && (options.forceMock === true || httpConfig.mocksEnabled === true)) {\r\n w = w.middlewares([mockMiddleware]);\r\n options.mock = clone(getHttpConfig('mockDefault'), options.mock);\r\n } else {\r\n delete options.mock;\r\n }\r\n return w.options(clone({ forceMock: false }, options));\r\n};\r\n\r\nexport const withMock = (\r\n w: Wretcher,\r\n options: HmRequestOptions,\r\n mockPromiseFn: () => Promise\r\n) => withOptions(w, clone(options, { mock: { promiseFn: mockPromiseFn } }));\r\n\r\nexport function processBadApiRequest(errJson) {\r\n // not the right format\r\n if (!errJson || !errJson.length || !errJson[0].fieldName) return errJson;\r\n\r\n return errJson.reduce((err, fieldError) => {\r\n const path = cleanFieldName(fieldError.fieldName);\r\n if (!err[path]) err[path] = [];\r\n err[path].push(...fieldError.messages);\r\n return err;\r\n }, {});\r\n}\r\n\r\nfunction cleanFieldName(fielName) {\r\n const parts = fielName.split('.');\r\n return parts.map(p => p.charAt(0).toLowerCase() + p.substring(1)).join('.');\r\n}\r\n\r\n\r\nconst http = wretch()\r\n .url(config.api.endpoint)\r\n .errorType('json')\r\n .options(config.api.options as any)\r\n .resolve(resolve =>\r\n resolve\r\n .unauthorized(res => {\r\n httpConfig.unauthorized()\r\n })\r\n .forbidden(res => {\r\n httpConfig.forbidden()\r\n })\r\n .badRequest((res, w) => {\r\n res.json = processBadApiRequest(res.json);\r\n throw res.json;\r\n })\r\n .json(_ => _)\r\n );\r\n\r\nexport const authHttp = http\r\n .options(config.api.options as any);\r\n\r\nexport default http;\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\nimport { Resource } from '../..';\r\n\r\nconst http = authHttp.url('/auth/my');\r\n\r\nexport const myStatus = (options: HmRequestOptions = {}) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n ).get();\r\n\r\nconst myStatusMapper = data => {\r\n\r\n const client = data.client ? new Resource(data.client) : null;\r\n const settings = data.settings ? new Resource(data.settings) : null;\r\n return {\r\n ...data,\r\n client,\r\n settings\r\n };\r\n};\r\n\r\nexport const myStatusInit = (options: HmRequestOptions = { mock: { statusText: 'INIT' }}) =>\r\n withMock(http.url('/init'), options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n )\r\n .get()\r\n .then(myStatusMapper);\r\n\r\nexport const myStatusClient = (clientId: number, instanceId: number | null = null, options: HmRequestOptions = { mock: { statusText: 'CLIENT' } }) =>\r\n withMock(http.url('/client'), options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n )\r\n .post({ clientId, instanceId })\r\n .then(myStatusMapper);\r\n","import {\r\n withMock,\r\n HmInstanceApiRequest,\r\n Ok200,\r\n InstanceParams,\r\n InstanceDetailRequest,\r\n handleNullResponse,\r\n noContentMock\r\n} from '../../../';\r\nimport { HmRequestOptions } from '../../../http';\r\nimport { residentHttp } from '..';\r\n\r\nconst request = residentHttp;\r\n\r\nexport const getResidentSettings: HmInstanceApiRequest = (\r\n { wildcard },\r\n options = Ok200\r\n) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ './settings.mock.js'))\r\n .url(`/${wildcard}/settings`)\r\n .get();\r\n\r\nexport const saveResidentSettings: HmInstanceApiRequest<\r\n InstanceDetailRequest,\r\n ResidentSettings\r\n> = ({ wildcard, values }, options: HmRequestOptions = noContentMock) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ '../../../generic.mock.js'))\r\n .url(`/${wildcard}/settings`)\r\n .put({ ...values })\r\n .catch(handleNullResponse);\r\n\r\nexport interface ResidentSettings {\r\n convFeeAchPercentage: number;\r\n convFeeAchFlat: number;\r\n convFeeCreditPercentage: number;\r\n convFeeCreditFlat: number;\r\n allowConvenienceFee: boolean;\r\n autoChargeRent: boolean;\r\n source: number;\r\n isEditable: boolean;\r\n shouldChargeHmConvenienceFee: boolean;\r\n shouldChargeRentLateFee: boolean;\r\n lateFeeDaysAfterRentDue: number;\r\n initialRentLateFee: number;\r\n shouldChargeAdditionalDailyRentLateFee: boolean;\r\n additionalDailyRentLateFee: number;\r\n isUsingMoveOutDate: boolean;\r\n shouldZeroOutBalance: boolean;\r\n portalTitle: string;\r\n sources: Source[];\r\n}\r\n\r\nexport interface Source {\r\n id: number;\r\n name: string;\r\n}\r\n","import { withMock, resourceHttp } from '../..';\r\nimport { HmRequestOptions } from '../../http';\r\nimport { ApiResource } from '../../resourceHttp';\r\nimport { handleNullResponse } from '../../utils';\r\n\r\nconst request = resourceHttp.url('/clientsettings');\r\n\r\nexport const getClientSettings = (options: HmRequestOptions = {}) =>\r\n withMock(request, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './clientsettings.mock.js')\r\n )\r\n .get()\r\n .then(data => data.clientsettings as Array>);\r\n\r\nexport const getClientSettingsDetail = ({wildcard, admin}, options: HmRequestOptions = {}) =>\r\n withMock(request, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './clientsettings.mock.js')\r\n )\r\n .url(admin ? request._url.replace('/clientsettings', '/lindseyemployeeclientsettings') : '', admin)\r\n .query({wildcard})\r\n .get();\r\n\r\nexport const saveClientSettings = ({wildcard, admin, values}, options: HmRequestOptions = {}) =>\r\n withMock(request, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './clientsettings.mock.js')\r\n )\r\n .url(admin ? request._url.replace('/clientsettings', '/lindseyemployeeclientsettings') : '', admin)\r\n .query({wildcard})\r\n .post(values)\r\n .catch(handleNullResponse);\r\n\r\nexport default {\r\n query: getClientSettings,\r\n get: getClientSettingsDetail,\r\n save: saveClientSettings\r\n};\r\n\r\nexport type ClientSettings = {\r\n siteTheme: number;\r\n logoGuid: string;\r\n id: number;\r\n clientId: number;\r\n name: string;\r\n timeZoneId: number;\r\n wildcard: string;\r\n enableApplicationFee: boolean;\r\n allowApplicationFee: boolean;\r\n applicationFee: number;\r\n isLindseyCustomer: boolean;\r\n isHousingAuthority: boolean;\r\n phone1: string;\r\n phone1Label: string;\r\n phone2: string;\r\n phone2Label: string;\r\n email: string;\r\n allowIvrSyncing: boolean;\r\n isActive: boolean;\r\n goLiveDate: string;\r\n portalTitle?: string;\r\n contract?: string;\r\n contractType?: string;\r\n};\r\n\r\nexport type AdminClientSettings = ClientSettings & {\r\n allowFraming: boolean;\r\n applicationFeeMerchantAccountSettings: MerchantAccountSettings | null;\r\n softwareId: string;\r\n applicationTypeId;\r\n housingManagerCutoverDate: Date | null;\r\n housingManagerCutoverDateOriginal: Date | null;\r\n showIvrPosition: boolean;\r\n waitingListReportsEnabled: boolean;\r\n shouldChargeHmConvenienceFee: boolean;\r\n residentRentMerchantAccountSettings: MerchantAccountSettings | null;\r\n payNearMeMerchantAccount: PayNearMeMerchantAccount | null;\r\n};\r\n\r\nexport type MerchantAccountSettings = {\r\n merchantId ?: string;\r\n merchantKey ?: string;\r\n echeckTerminalId ?: number;\r\n accepts: number[]\r\n};\r\n\r\nexport type PayNearMeMerchantAccount = {\r\n identifier: string;\r\n secretKey: string;\r\n};\r\n","import { resourceHttp, withMock } from 'api';\r\nimport { HmRequestOptions } from 'api/http';\r\nimport { HmInstance } from 'HmContext';\r\n\r\nexport const http = resourceHttp.url('/billing/features');\r\n\r\nexport const getBillingFeatures = (options: HmRequestOptions = {}): Promise =>\r\n withMock(http, options, () => import(/* webpackChunkName: \"mockApi\" */ './get.mock.json'))\r\n .get()\r\n .then(r => r.instancefeaturesresources);\r\n","import React, { MutableRefObject, createContext, useContext, useRef, useMemo } from 'react';\r\nimport { HmClient, HmInstance, HmContext, initializeAction, updateSettings } from 'HmContext';\r\nimport { ResidentSettings, getResidentSettings, saveResidentSettings } from 'api/v1/residents/settings';\r\nimport clientsettings, { ClientSettings } from 'api/v1/clientsettings';\r\nimport { getBillingFeatures } from 'api/v1/billing/features/get';\r\nimport { useAsync } from 'react-async';\r\nimport { myStatusClient } from 'api/v1/auth/my';\r\nimport { toast } from 'components/HmAlert';\r\nimport { dateTimeUtils } from 'lib.core/dates';\r\nimport { getDivisions } from 'api/v1/divisions/divisions';\r\nimport { saveBillingContacts } from 'api/v1/billing/billingcontacts';\r\nimport { Roles } from 'lib.app/enums';\r\nimport { useHistory } from 'react-router';\r\nimport { setHttpConfig } from 'api';\r\nimport { HmUrl } from 'lib.app/routes';\r\n\r\nexport interface ClientContextState {\r\n client: HmClient;\r\n instances: ClientSettings[];\r\n features: HmInstance[];\r\n wildcard: MutableRefObject;\r\n changeClient: (clientId: number, instanceId?: number) => Promise;\r\n changeWildcard: (wildcard: string) => Promise;\r\n changeInstance: (instanceId: number) => Promise;\r\n getDetail: () => Promise;\r\n saveDetail: (values: any) => Promise;\r\n getResidentSettings: () => Promise;\r\n saveResidentSettings: (obj: any) => Promise;\r\n getDivisions: () => Promise;\r\n}\r\n\r\nexport const ClientContext = createContext({} as ClientContextState);\r\n\r\nconst loadClientData = async ({user, client}) => {\r\n if (!user.isLoggedIn) return { client, instances: [], features: [] };\r\n\r\n const [instances, features ] = await Promise.all([clientsettings.query(), getBillingFeatures()])\r\n\r\n return {client, instances, features};\r\n};\r\n\r\nconst contextWatch = (cur, prev) => {\r\n return cur.user.userId !== prev.user.userId || cur.client.clientId !== prev.client.clientId;\r\n}\r\n\r\nlet divisionsPromise: Promise | null = null;\r\n\r\nexport const ClientContextProvider = props => {\r\n const {client, instance, settings, user, dispatch} = useContext(HmContext);\r\n const {data, isLoading } = useAsync(loadClientData, { user, client, watchFn: contextWatch });\r\n const wildcard = useRef(instance.wildcard);\r\n const history = useHistory();\r\n const {clientId} = client;\r\n setHttpConfig('setLocation', history.replace);\r\n\r\n const changeClient = useMemo(() => (id: number, instanceId?: number) =>\r\n myStatusClient(id, instanceId).then(c => {\r\n if (clientId !== undefined) {\r\n if (clientId !== id) {\r\n history.replace(HmUrl.home); // changed client\r\n }\r\n else if (c.settings && c.settings.wildcard) {\r\n if (history.location.pathname.includes(wildcard.current) && wildcard.current !== c.settings.wildcard) {\r\n const newPath = history.location.pathname.replace(wildcard.current, c.settings.wildcard);\r\n history.replace(newPath, { wildcardChanged: true });\r\n }\r\n wildcard.current = c.settings.wildcard;\r\n }\r\n }\r\n c.hasClient = true;\r\n dispatch({ type: initializeAction.action, payload: c });\r\n }).catch(e => {\r\n toast(e);\r\n }), [dispatch, history, clientId]);\r\n\r\n const settingsParams = {admin: user.roles && user.roles.includes(Roles.LindseyEmployee)};\r\n\r\n const state: ClientContextState = useMemo(() => {\r\n if (isLoading || !data) {\r\n return { client, instances: [], features: [] } as any;\r\n }\r\n\r\n const updateGoLiveDate = async (values) => {\r\n if(dateTimeUtils.dateDiff(settings.goLiveDate, values.goLiveDate, 'days') !== 0) {\r\n settings.goLiveDate = values.goLiveDate;\r\n await clientsettings.save({values: settings, wildcard: instance.wildcard, admin: false})\r\n dispatch({ type: updateSettings.action, payload: settings });\r\n }\r\n return values;\r\n }\r\n\r\n divisionsPromise = null;\r\n const getDivisionsPromise = () => {\r\n if (divisionsPromise === null) {\r\n divisionsPromise = new Promise(resolve => {\r\n resolve(getDivisions(instance));\r\n });\r\n }\r\n return divisionsPromise;\r\n }\r\n\r\n return {\r\n ...data,\r\n wildcard,\r\n getDetail: ({wildcard}) => clientsettings.get({...settingsParams, wildcard}),\r\n saveDetail: ({values, wildcard}) => Promise.all([clientsettings.save({values, ...settingsParams, wildcard}), saveBillingContacts({wildcard, values})]),\r\n getResidentSettings: () => getResidentSettings(instance).then(r => {\r\n return ({ ...r, goLiveDate: settings.goLiveDate });\r\n }),\r\n saveResidentSettings: ({values}) => saveResidentSettings({wildcard: instance.wildcard, values}).then(r => updateGoLiveDate(values)),\r\n changeClient,\r\n changeInstance: (instanceId: number) => changeClient(clientId, instanceId),\r\n changeWildcard: async (wildcard: string) => {\r\n const instance = data.features.find(f => f.wildcard === wildcard);\r\n if (!instance) return false;\r\n return changeClient(clientId, instance.instanceId);\r\n },\r\n getDivisions: getDivisionsPromise\r\n };\r\n }, [data, user.userId, clientId, instance.instanceId, instance.wildcard, settings.goLiveDate, isLoading]);\r\n\r\n // don't render while loading since there are peices that rely on this information\r\n if (isLoading) return null;\r\n\r\n return {props.children};\r\n};\r\n","import { authHttp, HmApiRequestGet as HmApiRequestEmpty, withMock, noContentMock, HmApiRequest, handleNullResponse } from \"api\";\r\n\r\nconst tourHttp = authHttp.url('/tour');\r\n\r\nexport type TourState = {\r\n cards: TourCard[];\r\n hasClientFinishedTour: boolean;\r\n currentStep: TourStep;\r\n nextStep: TourStep;\r\n lastCompletedStep: TourStep;\r\n daysRemainingInTrial: number;\r\n}\r\n\r\nexport type TourCard = {\r\n name: string;\r\n steps: TourStep[];\r\n isLocked: boolean;\r\n isActive: boolean;\r\n isCompleted: boolean;\r\n duration: string;\r\n percentageComplete: number;\r\n nextStep: TourStep;\r\n}\r\n\r\nexport type TourStep = {\r\n duration: string;\r\n name: string;\r\n isCompleted: boolean;\r\n tourStepId: number;\r\n isFinalStepOfCard: boolean;\r\n href: string;\r\n}\r\n\r\nexport const getTour: HmApiRequestEmpty = (options = {}) =>\r\n withMock(tourHttp, options, () => import(/* webpackChunkName: \"mockApi\" */ './tour.mock.js'))\r\n .get()\r\n .then(t => ({...t.tourState, daysRemainingInTrial: t.daysRemainingInTrial}))\r\n\r\nexport const completeTourStep: HmApiRequest = (step, options = noContentMock) =>\r\n {\r\n if (typeof step === 'number') {\r\n step = { tourStepId: step } as any;\r\n }\r\n return withMock(tourHttp, options, () => import(/* webpackChunkName: \"mockApi\" */ './tour.mock.js'))\r\n .url('/completestep').post(step)\r\n .catch(handleNullResponse);\r\n };\r\n\r\nexport const finishTour: HmApiRequestEmpty = (options = {}) =>\r\n withMock(tourHttp.url('/finish'), options, () => import(/* webpackChunkName: \"mockApi\" */ './tour.mock.js'))\r\n .post()\r\n .catch(handleNullResponse);\r\n\r\nexport default {\r\n state: getTour,\r\n completeStep: completeTourStep,\r\n finish: finishTour,\r\n}","import React, { FunctionComponent, createContext, useReducer } from 'react';\r\nimport tour, { TourState, finishTour, completeTourStep, TourStep } from 'api/v1/tour';\r\nimport { useAsync } from 'react-async';\r\nimport { useUserState } from 'hooks/useUserState';\r\n\r\ntype TourContextState = {\r\n tour: TourState;\r\n isActive: boolean;\r\n isLoading: boolean;\r\n actions: {\r\n activate: () => Promise,\r\n completeStep: (step: TourStep | number) => Promise,\r\n end: () => void;\r\n finish: () => Promise,\r\n }\r\n}\r\n\r\nexport const TourContext = createContext({} as TourContextState);\r\n\r\nfunction tourReducer(state, action) {\r\n const { type: typeFn, payload } = action;\r\n if (typeof typeFn === 'function') action = typeFn(state, payload);\r\n else if (typeof action === 'function') action = action(state);\r\n else action = state;\r\n return action;\r\n}\r\n\r\nfunction setTourAction(state, {active, tour = undefined}) {\r\n const newState = {\r\n ...state,\r\n isActive: active,\r\n };\r\n if (tour !== undefined) {\r\n newState.tour = tour;\r\n }\r\n localStorage.setItem('tour:state', JSON.stringify({isActive: active}));\r\n\r\n return newState;\r\n}\r\n\r\nfunction initTourState(state, {tour, dispatch}) {\r\n return {\r\n ...state,\r\n tour,\r\n actions: {\r\n activate: () => tourPromise({activate: true}).then(tour => {\r\n dispatch({type: setTourAction, payload: {active: true, tour }});\r\n return tour;\r\n }),\r\n completeStep: (step) => completeTourStep(step).then(tourPromise).then(tour => dispatch({type: initTourState, payload: {tour, dispatch}})),\r\n end: () => dispatch({type: setTourAction, payload: { active: false }}),\r\n finish: () => finishTour().then(() => {\r\n dispatch({type: setTourAction, payload: { active: false }});\r\n }),\r\n }\r\n }\r\n}\r\n\r\n\r\nconst tourPromise = ({activate = false, user = null}:any): Promise => {\r\n let tourState: any = localStorage.getItem('tour:state');\r\n if (tourState) tourState = JSON.parse(tourState)\r\n else tourState = {isActive: false};\r\n if (activate === true ) {\r\n tourState.isActive = activate;\r\n }\r\n if (!tourState.isActive || !user || !user.isLoggedIn) return Promise.resolve({ cards: [], currentStep: null, nextStep: null, lastCompletedStep: null, daysRemainingInTrial: 0, hasClientFinishedTour: false } as any) ;\r\n return tour.state();\r\n}\r\nexport const TourContextProvider : FunctionComponent = (props) => {\r\n const [user] = useUserState();\r\n const [ state, dispatch ] = useReducer(tourReducer, {\r\n tour: {},\r\n isActive: user.isLoggedIn && user.isTrialUser === true,\r\n isLoading: false,\r\n actions: {}\r\n });\r\n\r\n const { isLoading } = useAsync({\r\n promiseFn: tourPromise,\r\n user,\r\n onResolve: (tour) => {\r\n return dispatch({type: initTourState, payload: {tour, dispatch}});\r\n }\r\n });\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default TourContext;\r\n","import {\r\n preventsAll,\r\n preventsDefault,\r\n noPropagation,\r\n normal\r\n} from './eventHandler';\r\n\r\nimport classNames from 'classnames';\r\n\r\nexport default {\r\n classNames,\r\n dontPropogate: preventsAll,\r\n eventHandlers: {\r\n preventsAll,\r\n preventsDefault,\r\n noPropagation,\r\n normal\r\n }\r\n};\r\n","import { Resource, withResource } from '../..';\r\n\r\nexport class ResidentResource extends Resource {\r\n public static baseUrl = '/residents';\r\n\r\n constructor(data) {\r\n super(data);\r\n }\r\n\r\n public save(wildcard ?: string) {\r\n const body = this.body;\r\n return this.hasUrl && body.isNew !== true\r\n ? this.http(this.url).put(body)\r\n : this.http(`${this.resourceUrl}/${wildcard}`).post(body);\r\n }\r\n}\r\n\r\nexport const residentResourceHttp = withResource(ResidentResource).url(ResidentResource.baseUrl);\r\n\r\nexport default residentResourceHttp;\r\n","export const generateRange = (size, startAt = 0) => {\r\n return [...Array(size).keys()].map(i => i + startAt);\r\n};\r\n\r\nconst eachUntil = (target, visitor) => {\r\n const items = [...target];\r\n\r\n for (let index = 0; index < items.length; index++) {\r\n const continueIteration = visitor(items[index], index, items);\r\n\r\n if (typeof continueIteration !== 'undefined' && continueIteration !== null) {\r\n if (continueIteration === false) {\r\n return;\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst eachInReverseUntil = (target, visitor) => {\r\n const items = [...target];\r\n\r\n for (let index = items.length - 1; index > 0; index--) {\r\n const continueIteration = visitor(items[index], index, items);\r\n\r\n if (typeof continueIteration !== 'undefined' && continueIteration !== null) {\r\n if (continueIteration === false) {\r\n return;\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst each = (target, visitor) =>\r\n eachUntil(target, (...args) => {\r\n visitor(...args);\r\n });\r\n\r\nconst trueForAll = (target, condition) => {\r\n let result = true;\r\n\r\n each(target, (value, index) => {\r\n result = result && condition(value, index);\r\n });\r\n\r\n return result;\r\n};\r\n\r\nconst findFirstInDirection = (target, direction, condition) => {\r\n let result = null;\r\n\r\n direction.call(null, target, (...rest) => {\r\n const args = Array.prototype.map.call(rest, 0);\r\n\r\n const match = condition.apply(condition, args);\r\n\r\n if (match) result = args[0];\r\n\r\n return !match;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nconst first = (target, condition = undefined) => {\r\n if (target == null || target.length === 0) return null;\r\n\r\n if (!condition) return target[0];\r\n\r\n return findFirstInDirection(target, eachUntil, condition);\r\n};\r\n\r\nconst last = (target, condition = undefined) => {\r\n if (target == null || target.length === 0) return null;\r\n\r\n if (!condition) return target[target.length - 1];\r\n\r\n return findFirstInDirection(target, eachInReverseUntil, condition);\r\n};\r\n\r\nconst none = (target, condition) => !first(target, condition);\r\n\r\nconst any = (target, condition) => !none(target, condition);\r\n\r\nexport default {\r\n generateRange,\r\n eachUntil,\r\n eachInReverseUntil,\r\n each,\r\n trueForAll,\r\n first,\r\n last,\r\n findFirstInDirection,\r\n none,\r\n any\r\n};\r\n","import React, { useState } from 'react';\r\nimport { useFormState } from '../../hooks/useFormState';\r\nimport { useFormFieldState } from '../../hooks/useFormFieldState';\r\nimport { IconChevronLeft, IconChevronRight } from '../icons';\r\nimport { Button } from 'react-bootstrap';\r\nimport { ui } from '../../lib.core';\r\nimport Portal from 'components/layouts/Portal';\r\n\r\nexport const FormState = ({ className = '' }) => {\r\n const { api } = useFormState();\r\n const [show, setShow] = useState(false);\r\n return (\r\n \r\n
\r\n {\r\n setShow(!show);\r\n }}\r\n variant=\"light\"\r\n className=\"form-state shadow\">\r\n {show ? : } Form\r\n \r\n
\r\n        FORM: {JSON.stringify(api.state, undefined, 2)}\r\n      
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FieldState = ({ name, className = '' }) => {\r\n const field = useFormFieldState(name);\r\n const [show, setShow] = useState(false);\r\n const feildName = name.toUpperCase();\r\n return (\r\n \r\n
\r\n {\r\n setShow(!show);\r\n }}\r\n variant=\"light\"\r\n className=\"field-state shadow\">\r\n {show ? : } {feildName}\r\n \r\n
\r\n        \r\n          {feildName}: {JSON.stringify(field, undefined, 2)}\r\n        \r\n      
\r\n
\r\n
\r\n );\r\n};\r\n","import React, { FunctionComponent, useEffect, memo, useRef, } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { useFormState } from '../../hooks/useFormState';\r\nimport { FormContextProvider, FormContextProviderProps } from './FormContext';\r\nimport { isEquivalent } from '../../lib.core';\r\nimport { FormState } from './FormState';\r\n\r\nexport const HookForm: FunctionComponent = memo(({ children, value, valueDep = value, onSubmit, autoSubmit = [], autoSubmitDelay = 500, showFormState = false, ...props }) => {\r\n const { form: formProps, api, validateAndSubmit } = useFormState(onSubmit);\r\n const form = useRef(null);\r\n const previousAutoValue = useRef([]);\r\n const handler = useRef(null);\r\n const count = useRef(0);\r\n\r\n const auto = autoSubmit.map(api.getValue);\r\n useEffect(() => {\r\n if (!autoSubmit || autoSubmit.length === 0 || form.current === null) return;\r\n\r\n if (previousAutoValue.current.length === 0) {\r\n // just store for later use\r\n previousAutoValue.current = auto;\r\n return;\r\n }\r\n if (!isEquivalent(auto, previousAutoValue.current)) {\r\n if (handler.current) clearTimeout(handler.current);\r\n\r\n handler.current = setTimeout(() => {\r\n previousAutoValue.current = auto;\r\n validateAndSubmit(form.current);\r\n }, autoSubmitDelay);\r\n\r\n return () => {\r\n handler.current && clearTimeout(handler.current);\r\n handler.current = null;\r\n };\r\n }\r\n\r\n }, auto);\r\n\r\n useEffect(() => {\r\n count.current++;\r\n if (count.current === 1) return;\r\n api.setValues(value);\r\n }, [valueDep])\r\n\r\n return (\r\n
\r\n {children}\r\n {showFormState && }\r\n \r\n );\r\n});\r\n\r\nHookForm.defaultProps = {\r\n value: undefined,\r\n onSubmit: undefined,\r\n};\r\n\r\ninterface FormContextFormProps extends FormContextProviderProps {\r\n showFormState?: boolean;\r\n valueDep?: any;\r\n}\r\n\r\nexport const FormContextForm: FunctionComponent> = ({value, meta, children, access, validator, onSubmit, ...props}) => {\r\n const contextProps = {value, meta, validator, access};\r\n\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const HmFormApi = ({\r\n children,\r\n}) => {\r\n const formState = useFormState();\r\n return children(formState);\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\n\r\nconst headingProps = {\r\n alert: {\r\n element: 'h3',\r\n className: 'mb-4'\r\n },\r\n error: {\r\n element: 'h3',\r\n className: 'mb-4'\r\n },\r\n empty: {\r\n element: 'p',\r\n className: 'h1 text-center text-primary'\r\n },\r\n filter: {\r\n element: 'h5',\r\n className: 'mb-1 h-filter'\r\n },\r\n inline: {\r\n element: 'strong',\r\n className: 'd-block',\r\n },\r\n layout: {\r\n element: 'h4',\r\n className: 'mb-0'\r\n },\r\n list: {\r\n element: 'h4',\r\n className: 'mb-0'\r\n },\r\n main: {\r\n element: 'h1',\r\n className: 'mb-4 h-main'\r\n },\r\n modal: {\r\n element: 'h4',\r\n className: 'mb-2',\r\n },\r\n navbar: {\r\n element: 'h4',\r\n className: 'mb-0 text-light'\r\n },\r\n section: {\r\n element: 'h4',\r\n className: 'mb-2 h-section'\r\n },\r\n splash: {\r\n element: 'h4',\r\n className: 'mb-3'\r\n },\r\n sub: {\r\n element: 'h3',\r\n className: 'mb-4 h-sub'\r\n },\r\n tagline: {\r\n element: 'h4',\r\n className: 'mb-4'\r\n },\r\n};\r\ninterface HeadingProps {\r\n variant: keyof typeof headingProps;\r\n [k: string]: any;\r\n}\r\n\r\nexport const Heading: FunctionComponent = ({ variant, ...props }) => {\r\n const { element: Header, ...rest } = headingProps[variant] as any;\r\n\r\n return (\r\n
\r\n {props.children}\r\n
\r\n );\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { sanitize } from 'dompurify';\r\n\r\nexport const SafeHtml: FunctionComponent = ({ children, Container = 'div', ...props }) => {\r\n const config = { };\r\n // TODO: maybe add configuration https://github.com/cure53/DOMPurify#can-i-configure-dompurify\r\n return ;\r\n};\r\n","import React, { FunctionComponent } from 'react';\r\nimport { Text, Heading } from 'components';\r\n\r\nexport const HmMetric: FunctionComponent = ({ children, metric, measure = false, ...props }) => {\r\n return (\r\n \r\n {children}\r\n \r\n {metric}{' '}\r\n {measure && \r\n {measure}\r\n }\r\n \r\n \r\n );\r\n};\r\n","import { useContext, useRef, useEffect } from 'react';\r\nimport { FormContext, IFormContext } from '../components/forms/FormContext';\r\nimport { setPathValue, clear, addFieldError } from '../components/forms/reducers';\r\nimport { getValue } from '../components/forms/utils';\r\nimport { merge } from '../lib.core';\r\nimport { inputInitializer, valueInitializer, checkInitializer, checkListInitializer, formatDateInitializer, selectInitializer, numberInitializer, FieldStateInitializer } from './formUtils';\r\nimport { activityDetected } from './useActivityTimeout';\r\n\r\nexport interface FormFieldProps {\r\n value?: T;\r\n checked?: boolean;\r\n name: string;\r\n dependencies?: any[];\r\n [x: string]: any;\r\n}\r\n\r\ninterface FormFieldState {\r\n dependencies: any[];\r\n props: FormFieldProps;\r\n api: FormFieldApi;\r\n}\r\n\r\nexport interface FormFieldApi {\r\n setValue: (value: T, replace?: boolean) => void;\r\n setError: (error: any) => void;\r\n clear: (touched?: any) => void;\r\n value: T;\r\n errors: any;\r\n valid: boolean;\r\n touched: boolean;\r\n meta: any;\r\n}\r\n\r\nexport const initialize = {\r\n input: inputInitializer,\r\n inputValue: valueInitializer,\r\n checkbox: checkInitializer,\r\n checkboxList: checkListInitializer,\r\n dateFormat: formatDateInitializer,\r\n select: selectInitializer,\r\n number: numberInitializer\r\n};\r\n\r\nfunction canManageCursor(field) {\r\n return field && ['text', 'search'].includes(field.type);\r\n}\r\n\r\nexport function useFormFieldState(\r\n path: string,\r\n initializer: FieldStateInitializer = initialize.input,\r\n fieldProps: any = {}\r\n): FormFieldState {\r\n\r\n const { state } = useContext(FormContext) as IFormContext;\r\n const api = useFieldApi(path);\r\n const field = useRef();\r\n const cursor = useRef(false);\r\n\r\n useEffect(() => {\r\n if (canManageCursor(field.current) && cursor.current !== false) {\r\n setTimeout(() => {\r\n field.current.setSelectionRange(cursor.current, cursor.current);\r\n cursor.current = false;\r\n }, 0);\r\n }\r\n activityDetected();\r\n }, [api.value]);\r\n\r\n const dependencies = [api.value, api.errors, api.touched];\r\n const { dependencies: fieldDep = [], ...props } = initializer({\r\n values: state.value,\r\n value: api.value === undefined ? false : api.value,\r\n touched: api.touched,\r\n setter: api.setValue,\r\n setError: api.setError,\r\n meta: api.meta,\r\n cursor,\r\n props: fieldProps\r\n });\r\n return {\r\n dependencies: dependencies.concat(fieldDep),\r\n props: {\r\n name: path,\r\n ref: field,\r\n ...props\r\n },\r\n api\r\n };\r\n}\r\n\r\nexport function useFieldApi(path: string): FormFieldApi {\r\n const { state, dispatch } = useContext(FormContext) as any;\r\n if (path.endsWith('.')) path = path.slice(0, -1);\r\n\r\n const { validateOnBlur = true, time, fields: meta = {} } = state.meta;\r\n\r\n return {\r\n value: getValue(state.value, path),\r\n errors: state.errors[path] || false,\r\n touched: getValue(state.touched, path, state.validated),\r\n\r\n setValue: (value, replace = false) => dispatch(setPathValue.send({ path, value, replace })),\r\n setError: error => dispatch(addFieldError.send({ path, error })),\r\n\r\n clear: (touched = false) => dispatch(clear.send(path, touched)),\r\n\r\n valid:\r\n getValue(state.touched, path, state.validated) === false ||\r\n getValue(state.errors, path, false) === false,\r\n\r\n meta: merge({ name: path, validateOnBlur, time }, getValue(meta, path, {}))\r\n };\r\n}\r\n","function envMapper(mapper, fallbackDefault: T) {\r\n return (key, defaultValue = fallbackDefault) => {\r\n let val = process.env[key];\r\n if (typeof val === 'undefined') return defaultValue;\r\n\r\n let trimmed = val.trim();\r\n\r\n if (trimmed.length === 0) return defaultValue;\r\n\r\n return mapper(val);\r\n };\r\n};\r\n\r\nconst string = envMapper(val => val, '');\r\nconst bool = envMapper(\r\n val => (val.toLowerCase() === 'true' ? true : false),\r\n false,\r\n);\r\nconst number = envMapper(val => Number(val), -1);\r\n\r\nexport default {\r\n bool,\r\n string,\r\n number,\r\n};\r\n","import { default as env } from './env';\r\nimport { generatePath } from 'react-router';\r\n\r\nconst config = {\r\n api: {\r\n endpoint: `${process.env.REACT_APP_API_ENDPOINT}`.replace(/\\/$/, ''),\r\n options: {\r\n credentials: 'include',\r\n mode: 'cors'\r\n },\r\n mockResponses: env.bool('REACT_APP_API_MOCK_RESPONSES'),\r\n devToken: `${process.env.REACT_APP_API_DEVELOPER_TOKEN}`,\r\n getUrl: (path, baseUrl = false) => `${baseUrl ? config.api.endpoint.replace('api/v1', '') : config.api.endpoint}/${path}`,\r\n },\r\n app: {\r\n timeout: env.number('REACT_APP_SESSION_TIMEOUT', 1200), // check for activity every 20 min, (api session timeout is currently 240min)\r\n versionTimeout: env.number('REACT_APP_VERSION_TIMEOUT', 600), // check for new version every 10 min\r\n myUrl: (`${process.env.REACT_APP_MY_URL}` || `${process.env.REACT_APP_API_ENDPOINT}`).replace(/\\/$/, '').replace('api/v1', ''),\r\n publicUrl: (`${process.env.REACT_APP_PUBLIC_URL}` || 'https://:wildcard.housingmanager.com').replace(/\\/$/, ''),\r\n isDev: process.env.NODE_ENV === 'development',\r\n mode: `${process.env.REACT_APP_MODE || process.env.NODE_ENV}`,\r\n initialized: false,\r\n address: {\r\n addressLine1: '500 President Clinton Ave., Suite 401',\r\n city: 'Little Rock',\r\n state: 'AR',\r\n zip: '72201'\r\n },\r\n getUrl: path => `${config.app.myUrl}/${path}`,\r\n getPublicUrl: (wildcard, path = '') => `${generatePath(config.app.publicUrl, {wildcard})}/${path}`,\r\n },\r\n recaptcha: {\r\n siteKey: `${process.env.REACT_APP_RECAPTCHA_SITE_KEY}`\r\n },\r\n sentry: {\r\n dsn: `${process.env.REACT_APP_SENTRY_DSN}`,\r\n enabled: !!process.env.REACT_APP_SENTRY_DSN\r\n },\r\n analytics: {\r\n segmentio: `${process.env.REACT_APP_SEGMENT_IO}`\r\n }\r\n};\r\n\r\nexport default config;\r\n","export type HmTimeZoneId = boolean | 1 | 2 | 3 | 4 | 5 | 6;\r\n\r\nexport type HmTimeZone = {\r\n timeZoneId: HmTimeZoneId;\r\n zone: string;\r\n ianaName: string;\r\n code: string;\r\n hourDiff: number;\r\n utcOffset: string;\r\n description: string;\r\n}\r\n\r\nexport const timeZones: HmTimeZone[] = [\r\n {\r\n timeZoneId: 1,\r\n zone: 'Eastern Time',\r\n ianaName: 'America/New_York',\r\n code: 'EST',\r\n hourDiff: 1,\r\n utcOffset: '-05:00',\r\n description: 'Time is in Eastern Time (US & Canada)'\r\n },\r\n {\r\n timeZoneId: 2,\r\n zone: 'Central Time',\r\n ianaName: 'America/Chicago',\r\n code: 'CST',\r\n hourDiff: 0,\r\n utcOffset: '-06:00',\r\n description: 'Time is in Central Time (US & Canada)'\r\n },\r\n {\r\n timeZoneId: 3,\r\n zone: 'Mountain Time',\r\n code: 'MST',\r\n ianaName: 'America/Denver',\r\n hourDiff: -1,\r\n utcOffset: '-07:00',\r\n description: 'Time is in Mountain Time (US & Canada)'\r\n },\r\n {\r\n timeZoneId: 4,\r\n zone: 'Pacific Time',\r\n ianaName: 'America/Los_Angeles',\r\n code: 'PST',\r\n hourDiff: -2,\r\n utcOffset: '-08:00',\r\n description: 'Time is in Pacific Time (US & Canada)'\r\n },\r\n {\r\n timeZoneId: 5,\r\n zone: 'Alaskan Time',\r\n code: 'AKST',\r\n ianaName: 'America/Anchorage',\r\n hourDiff: -3,\r\n utcOffset: '-09:00',\r\n description: 'Time is in Alaskan Time'\r\n },\r\n {\r\n timeZoneId: 6,\r\n zone: 'Hawaii-Aleutian Time',\r\n code: 'HST',\r\n ianaName: 'Pacific/Honolulu',\r\n hourDiff: -4,\r\n utcOffset: '-10:00',\r\n description: 'Time is in Hawaii-Aleutian Standard Time'\r\n }\r\n];\r\n\r\nexport const getTimeZone = timeZoneId => {\r\n const timeZone = timeZones.find(t => t.timeZoneId === timeZoneId);\r\n return timeZone as HmTimeZone;\r\n};\r\n","import React, { lazy, FunctionComponent, useEffect, useState } from 'react';\r\nimport { useAsync } from 'react-async';\r\nimport { useFieldApi } from 'hooks/useFormFieldState';\r\nimport { Text} from 'components';\r\nimport { ProgressBar } from 'react-bootstrap';\r\nimport { HmTooltip } from './InfoLabel';\r\nimport { useFormState } from 'hooks/useFormState';\r\n\r\nconst zxcvbn = () => import(/* webpackChunkName: \"zxcvbn\" */'zxcvbn').then(r => r.default);\r\ntype PrgoressVariants = 'danger' | 'warning' | 'success' | 'info';\r\n\r\ntype PasswordStrengthProps = {\r\n name: string;\r\n minLength?: number;\r\n scoreWords?: string[];\r\n scoreVariants ?: PrgoressVariants[];\r\n userInputs ?: string[];\r\n}\r\n\r\nenum PasswordScore {\r\n Risky = 0, // too guessable\r\n ThrottledOnline = 1, //very guessable: protection from throttled online attacks. (guesses < 10^6)\r\n UnThrottledOnline = 2, //somewhat guessable: protection from unthrottled online attacks. (guesses < 10^8)\r\n Offline = 3, // safely unguessable: moderate protection from offline slow-hash scenario. (guesses < 10^10)\r\n Safe = 4, // very unguessable: strong protection from offline slow-hash scenario. (guesses >= 10^10)\r\n}\r\n\r\ntype PasswordStrengthResult = {\r\n score: PasswordScore,\r\n feedback: { warning: string, suggestions: string[] },\r\n sequence?: any,\r\n cacl_time?: any,\r\n isInitial ?: boolean;\r\n}\r\n\r\nconst defaultScore: PasswordStrengthResult = { score: PasswordScore.Risky, feedback: { warning: 'too short', suggestions: ['Add more characters']}}\r\n\r\nconst usePasswordStrength = ({path, minLength, userInputs = [] as any[]}) => {\r\n const { data: passwordStrength , isLoading } = useAsync(zxcvbn);\r\n const field = useFieldApi(path);\r\n const {api} = useFormState();\r\n const [state, setState] = useState({...defaultScore, isInitial: true});\r\n\r\n useEffect(() => {\r\n if (!field.touched || isLoading) return;\r\n\r\n if ( field.value.length < minLength) {\r\n setState(defaultScore)\r\n } else {\r\n const res = passwordStrength(field.value, userInputs.map(n => api.getValue(n, n)));\r\n setState(res);\r\n }\r\n\r\n }, [passwordStrength, field.value, minLength]);\r\n\r\n return state;\r\n}\r\n\r\n\r\nconst variants: PrgoressVariants[] = ['danger', 'danger', 'warning', 'success', 'success'];\r\nconst words = ['Poor:', 'Weak:', 'Okay:', 'Good.', 'Excellent!'];\r\n\r\nexport const PasswordStrengthAddOn: FunctionComponent = ({\r\n name,\r\n minLength = 8,\r\n scoreVariants = variants,\r\n scoreWords = words,\r\n userInputs = [],\r\n}) => {\r\n const strength = usePasswordStrength({path: name, minLength, userInputs})\r\n return (\r\n Password Strength: {scoreWords[strength.score]} {strength.feedback.warning} {strength.feedback.suggestions.join(' ')}
}>\r\n \r\n \r\n )\r\n}\r\n\r\nexport const PasswordSecurityTips: FunctionComponent = ({className}) => {\r\n return (\r\n \r\n In order to provide a secure password, we recommend having a password that has the following\r\n criteria:\r\n
    \r\n
  • A length between 8 and 50 characters
  • \r\n
  • A lower case character
  • \r\n
  • An upper case character
  • \r\n
  • A special character
  • \r\n
  • A number
  • \r\n
\r\n
\r\n );\r\n};","import React, { useState, useEffect, ReactNode } from 'react';\r\nimport { Alert, Row, Col, Button } from 'react-bootstrap';\r\nimport { useSharedState, createSharedState, getSharedState, loadSessionStorageInitializer } from '../hooks/useSharedState';\r\nimport { IconDanger, IconVariant } from './icons';\r\nimport { Heading, Text } from './typography';\r\nimport { showReportDialog } from '@sentry/browser';\r\nimport { HmGuard } from './security/HmGuard';\r\n\r\nexport type AlertVariants =\r\n | 'danger'\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'warning'\r\n | 'info'\r\n | 'dark'\r\n | 'light';\r\n\r\nexport interface IHmAlertOptions {\r\n variant?: AlertVariants;\r\n heading?: ReactNode;\r\n reversed?: boolean;\r\n dismissable?: boolean;\r\n className?: string;\r\n icon?: any;\r\n iconSize?:\r\n | 'xs'\r\n | 'lg'\r\n | 'sm'\r\n | '1x'\r\n | '2x'\r\n | '3x'\r\n | '4x'\r\n | '5x'\r\n | '6x'\r\n | '7x'\r\n | '8x'\r\n | '9x'\r\n | '10x';\r\n showFor?: number;\r\n}\r\n\r\nexport interface IHmAlert extends IHmAlertOptions {\r\n alertId?: number;\r\n show?: boolean;\r\n children?: ReactNode;\r\n onClose?: () => void;\r\n}\r\n\r\n\r\n\r\ncreateSharedState('alert:toast', loadSessionStorageInitializer([]));\r\ncreateSharedState('alert:summary', loadSessionStorageInitializer([]));\r\ncreateSharedState('alert:page', loadSessionStorageInitializer([]));\r\n\r\nexport const ExceptionMessage = ({ error, eventId }: any) => {\r\n if (!error) return null;\r\n if (error.json) error = error.json;\r\n let { message } = error;\r\n\r\n if (!message) {\r\n if (error.json && error.json.message) {\r\n message = error.json.message;\r\n }\r\n if (error.error_description) {\r\n message = error.error_description;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n Something went wrong!\r\n {message}\r\n \r\n
\r\n          {JSON.stringify(error, null, 2)}\r\n        
\r\n
\r\n \r\n {eventId && }\r\n \r\n \r\n );\r\n};\r\n\r\nlet alertId = 0;\r\nfunction createAlert(message, options: IHmAlertOptions = {}): IHmAlert {\r\n if (typeof message !== 'string' && !Array.isArray(message) && !React.isValidElement(message)) {\r\n message = ;\r\n }\r\n return {\r\n alertId: alertId++,\r\n variant: 'danger',\r\n icon: undefined,\r\n iconSize: undefined,\r\n heading: null,\r\n children: message,\r\n showFor: -1,\r\n ...options\r\n };\r\n}\r\n\r\ntype Alerter = (message: ReactNode, options?: IHmAlertOptions) => void;\r\n\r\nfunction getAlerter(name, defaultOptions: any = {}): Alerter {\r\n const state = getSharedState(`alert:${name}`);\r\n return (message, options = {}) =>\r\n state!.setValue([...state!.value, createAlert(message, { ...defaultOptions, ...options })]);\r\n}\r\n\r\nexport const toast = getAlerter('toast', { showFor: 2500 });\r\nexport const toastSuccess: Alerter = (message, options = {}) => toast(message, { variant: 'success', ...options });\r\nexport const addSummary = getAlerter('summary');\r\nexport const addPageMessage = getAlerter('page', { variant: 'info' });\r\nexport const addPageError: Alerter = (message, options = {}) => addPageMessage(message, { variant: 'danger', iconSize: '2x', ...options });\r\n\r\nexport const addReloadMessage = (name, message: string, options: IHmAlertOptions = {}) => {\r\n const key = `alert:${name}`;\r\n const value = JSON.parse(sessionStorage.getItem(key) || '[]');\r\n value.push(createAlert(message, options));\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n};\r\nexport const toastReload = (message:string, options: AlertVariants | IHmAlertOptions = {} ) =>\r\n addReloadMessage('toast', message, typeof(options) === 'string' ? { variant: options, showFor: 2500 } : { variant: 'info', showFor: 2500, ...options});\r\n\r\nfunction defaultIcon(variant, size) {\r\n switch (variant) {\r\n case 'danger':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n}\r\n\r\nexport const HmAlert = ({\r\n dismissable = false,\r\n variant = 'danger',\r\n children,\r\n heading,\r\n reversed = false,\r\n iconSize = '1x',\r\n icon = defaultIcon(variant, iconSize),\r\n show = true,\r\n onClose,\r\n showFor = -1,\r\n ...props\r\n}: IHmAlert) => {\r\n const [showing, setShowing] = useState(show);\r\n\r\n useEffect(() => {\r\n show !== showing && setShowing(show);\r\n }, [show]);\r\n\r\n useEffect(() => {\r\n if (showFor > 0) {\r\n const handle = setTimeout(() => {\r\n setShowing(false);\r\n }, showFor);\r\n return () => clearTimeout(handle);\r\n }\r\n }, [showFor]);\r\n\r\n const Icon = icon ? (\r\n \r\n {icon}\r\n \r\n ) : (\r\n ''\r\n );\r\n const Heading = heading ? {heading} : '';\r\n\r\n function handleClose() {\r\n if (onClose) onClose();\r\n setShowing(false);\r\n }\r\n\r\n const count = React.Children.count(children);\r\n let v = variant as any;\r\n if (reversed) {\r\n v = `${variant}-reversed`;\r\n }\r\n\r\n return (\r\n \r\n {Heading}\r\n \r\n {Icon}\r\n \r\n {count > 1 ? (\r\n
    \r\n {React.Children.map(children, (c, idx) => (\r\n
  • {c}
  • \r\n ))}\r\n
\r\n ) : (\r\n <>{children}\r\n )}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const PageAlert = ({ name }) => {\r\n const [alerts, setAlerts] = useSharedState(`alert:${name}`);\r\n useEffect(() => {\r\n return () => {\r\n // clean alerts of we have handled.\r\n setAlerts(\r\n alerts.filter(a => a.showFor > 0),\r\n true\r\n );\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n alerts.forEach(\r\n alert =>\r\n (alert.onClose = () => {\r\n setAlerts(\r\n alerts.filter(a => a.alertId !== alert.alertId),\r\n true\r\n );\r\n })\r\n );\r\n\r\n return (\r\n <>\r\n {alerts.map(alertProps => {\r\n const { children, alertId, onClose, ...props } = alertProps;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport const Toaster = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { FunctionComponent, ReactNode, useContext } from 'react';\r\nimport { useFormState } from '../../hooks/useFormState';\r\nimport { HmDrawer } from '../HmDrawer';\r\nimport { Col, Button, ButtonToolbar, ModalFooter, Form } from 'react-bootstrap';\r\nimport { HmDialogContext } from '../HmDialog';\r\nimport { HmButton } from './HmSubmit';\r\nimport { HmGuard } from 'components/security/HmGuard';\r\nimport { useDetailParams } from 'hooks/useDetail';\r\n\r\ninterface HmFormDrawerProps {\r\n saveLabel?: ReactNode;\r\n cancelLabel?: ReactNode;\r\n watch ?: string[];\r\n onCancel ?: () => void;\r\n allowUnchanged ?: boolean;\r\n}\r\n\r\nexport const HmFormDrawer: FunctionComponent = ({\r\n children,\r\n saveLabel = 'Save',\r\n cancelLabel = 'Cancel',\r\n watch= [],\r\n allowUnchanged = false,\r\n ...props\r\n}) => {\r\n const { api } = useFormState();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {saveLabel}\r\n \r\n {\r\n e.preventDefault();\r\n api.reset();\r\n }}>\r\n {cancelLabel}\r\n \r\n \r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\ninterface HmDialogFormDrawerProps {\r\n saveLabel?: ReactNode;\r\n saveLabelId?: string;\r\n cancelLabel?: ReactNode;\r\n onCancel ?: () => void;\r\n closeOnCancel ?: boolean;\r\n watch ?: string[];\r\n keepData ?: boolean;\r\n allowUnchanged ?: boolean;\r\n addAnother ?: boolean;\r\n}\r\n\r\nexport const HmDialogFormDrawer: FunctionComponent = ({\r\n children,\r\n saveLabel = 'Save',\r\n saveLabelId,\r\n cancelLabel = 'Cancel',\r\n closeOnCancel = true,\r\n onCancel = () => { return; },\r\n watch = [],\r\n keepData = false,\r\n allowUnchanged = false,\r\n addAnother = false,\r\n ...props\r\n}) => {\r\n const { api } = useFormState();\r\n const { dialog, actions } = useContext(HmDialogContext);\r\n\r\n return (\r\n \r\n \r\n {\r\n e.preventDefault();\r\n if (keepData !== true) api.reset();\r\n onCancel && onCancel();\r\n if (closeOnCancel) dialog(actions.close());\r\n }}>\r\n {cancelLabel}\r\n \r\n \r\n {saveLabel}\r\n \r\n {addAnother && }\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\n\r\n\r\nconst AddAnotherCheckbox = () => {\r\n const {closeOnSave = true, setCloseOnSave} = useDetailParams();\r\n if (!setCloseOnSave) return null;\r\n const onChange = ({target}) => {\r\n setCloseOnSave(!target.checked);\r\n } ;\r\n return (\r\n \r\n )\r\n}\r\n","import { authHttp } from '../..';\r\n\r\nexport const residentHttp = authHttp.url('/residents');\r\nexport { residentResourceHttp, ResidentResource } from './ResidentResource';\r\n\r\n\r\nexport interface Resident {\r\n residentId: number;\r\n instanceId: number;\r\n accountNumber: string;\r\n middleName: string;\r\n lastName: string;\r\n firstName: string;\r\n name: string;\r\n userName: string;\r\n email: string;\r\n phone: string;\r\n}\r\n\r\nexport interface ResidentDetail extends Resident {\r\n canMoveOut: boolean;\r\n canMoveIn: boolean;\r\n isAlienId: boolean;\r\n canEditPersonIdentifier: boolean;\r\n personUniqueId: string;\r\n maskedPersonUniqueId: string;\r\n maskedDateOfBirth: string;\r\n name: string;\r\n rentPerMonth: number;\r\n balance: number;\r\n invitationNotificationDate: string;\r\n registeredDate: string;\r\n personUniqueIdentifier: PersonUniqueIdentifier;\r\n birthDate: string;\r\n paymentsDisabled: boolean;\r\n address: Address;\r\n email: string;\r\n phone: string;\r\n physicalUnitNumber: string;\r\n physicalAddressLine1: string;\r\n physicalAddressLine2: string;\r\n physicalCity: string;\r\n physicalState: string;\r\n physicalZip: string;\r\n physicalCounty: string;\r\n mailingUnitNumber: string;\r\n mailingAddressLine1: string;\r\n mailingAddressLine2: string;\r\n mailingCity: string;\r\n mailingState: string;\r\n mailingZip: string;\r\n mailingCounty: string;\r\n moveOutDate: Date;\r\n moveOutDateString: string;\r\n moveOutCreationDate: Date;\r\n unitId: number;\r\n profileEmail: string;\r\n profilePhone: string;\r\n fullyQualifiedUnit: string;\r\n}\r\n\r\ninterface Address {\r\n addressLine1: string;\r\n city: string;\r\n state: string;\r\n zip: string;\r\n}\r\n\r\ninterface PersonUniqueIdentifier {\r\n mask: string;\r\n}\r\n","import React, { FunctionComponent, useEffect } from 'react';\r\nimport { Col, Form } from 'react-bootstrap';\r\nimport { FormField } from '.';\r\nimport { Text } from 'components';\r\nimport { useFieldApi } from 'hooks/useFormFieldState';\r\nimport { ui } from 'lib.core';\r\nimport {dateTimeUtils} from 'lib.core/dates';\r\nimport { useCurrentSettings } from 'hooks/useInstanceState';\r\nimport matchers from 'lib.core/matching/matchers';\r\n\r\nexport const DateRange = ({\r\n label = 'Date',\r\n startName,\r\n startLabel = 'Start Date',\r\n endName,\r\n endLabel = 'End Date',\r\n}) => {\r\n return (\r\n <>\r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n to\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const DateRangePicker: FunctionComponent = ({\r\n legend = 'Date Range',\r\n startName = 'start',\r\n startLabel = 'Start',\r\n endName = 'end',\r\n endLabel = 'End',\r\n separator = ' to ',\r\n inputOnly = false,\r\n fieldType = 'date-picker',\r\n instanceTime = false,\r\n optional = false,\r\n minDate,\r\n maxDate\r\n}) => {\r\n const start = useFieldApi(startName);\r\n const end = useFieldApi(endName);\r\n const {timeZoneId} = useCurrentSettings();\r\n\r\n useEffect(() => {\r\n if (!end.value || matchers.isString(end.value) || matchers.isString(start.value)) return;\r\n if (fieldType === 'time-picker') {\r\n const days = dateTimeUtils.differenceInDays(end.value, start.value);\r\n if (days !== 0) {\r\n end.setValue(dateTimeUtils.addDays(days, end.value));\r\n }\r\n }\r\n if (fieldType === 'datetime-picker' && end.value < start.value) {\r\n const days = dateTimeUtils.differenceInDays(end.value, start.value);\r\n end.setValue(dateTimeUtils.addDays(days + 1, end.value));\r\n }\r\n }, [start.value, end.value]);\r\n\r\n const componentProps = {\r\n outputFormat: instanceTime ? 'ISOLocal' : undefined,\r\n timeZoneId: instanceTime ? timeZoneId : undefined,\r\n inputOnly,\r\n disabledKeyboardNavigation: true,\r\n isClearable: optional,\r\n popperProps: {\r\n positionFixed: true\r\n },\r\n popperModifiers: {\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false, // force popper to stay in viewport (even when input is scrolled out of view)\r\n boundariesElement: 'viewport'\r\n },\r\n }\r\n }\r\n const hasLegend = !!legend;\r\n\r\n return (\r\n
\r\n {legend &&{legend}}\r\n \r\n \r\n {separator}\r\n \r\n \r\n
\r\n );\r\n};\r\n","import { checkInstanceFeature } from 'lib.security';\r\nimport { HmFeatures } from 'lib.app/enums';\r\nimport { useGuardContext } from './useGuard';\r\nimport { HmInstance } from 'HmContext';\r\n\r\nexport function useFirstInstanceWithFeature(feature: HmFeatures) {\r\n const { instance, instances } = useGuardContext();\r\n const check = checkInstanceFeature(feature);\r\n\r\n return check(instance) ? instance : instances.find(check) || { accountStatusId: 0 } as HmInstance;\r\n}\r\n\r\nexport function useInstancesWithFeature(feature: HmFeatures) {\r\n const { instances } = useGuardContext();\r\n const check = checkInstanceFeature(feature);\r\n\r\n return instances.filter(check);\r\n}\r\n\r\nexport function useClientsWithFeature(feature: HmFeatures) {\r\n const { clients = [] } = useGuardContext();\r\n const filtered = useInstancesWithFeature(feature);\r\n\r\n return clients.filter(c => filtered.some(f => f.instanceId === c.id));\r\n}\r\n","import React, { useEffect, Children, ReactNode } from 'react';\r\nimport { useFieldApi } from '../../hooks/useFormFieldState';\r\nimport { useFormState } from '../../hooks/useFormState';\r\n\r\nexport type ConditionalFieldProps = {\r\n path: string;\r\n condition ?: (api: any) => boolean;\r\n watch ?: string[];\r\n children: ReactNode;\r\n mode ?: 'show' | 'disable'\r\n};\r\n\r\nexport const ConditionalField = ({path, condition, watch = [], mode = 'show', children}: ConditionalFieldProps): any => {\r\n const api = useFieldApi(path);\r\n const form = useFormState();\r\n const show = condition ? condition({value: api.value, valid: api.valid, errors: api.errors, api: form.api}) : !!api.value;\r\n\r\n useEffect(() => {\r\n if (!show && watch && watch.length > 0) {\r\n watch.forEach(path => form.api.clearValue(path));\r\n }\r\n }, [show, api.value]);\r\n\r\n if (!show && mode === 'show') {\r\n return null;\r\n }\r\n\r\n return Children.only(React.cloneElement(children as any, {disabled: !show, watch: [show]}));\r\n};\r\n","import React from 'react';\r\nimport { Dropdown, Button } from 'react-bootstrap';\r\nimport { useCurrentWildcard } from '../../hooks/useInstanceState';\r\nimport { useClientContext } from '../../hooks/useClientContext';\r\nimport { checkInstanceFeature } from 'lib.security';\r\n\r\nexport const InstancePicker = ({ active, hideSingle = false, feature = true }: any) => {\r\n const wildcard = useCurrentWildcard();\r\n const { instances, changeInstance, features } = useClientContext();\r\n const filteredFeatures = features.filter(checkInstanceFeature(feature))\r\n\r\n const visibleInstances = hideSingle || feature ? instances.filter(i => i.wildcard !== wildcard && filteredFeatures.some(f => f.instanceId === i.id)) : instances;\r\n\r\n if (visibleInstances.length < 1 || !wildcard) {\r\n return null;\r\n }\r\n\r\n const InstanceButton: any = instances.length > 1 ? Dropdown.Toggle : Button;\r\n\r\n return (\r\n \r\n {wildcard}\r\n \r\n \r\n );\r\n};\r\n\r\nconst InstanceDropDown = ({ onChange, instances }) => {\r\n if (instances.length === 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n {instances.map((instance, idx) => (\r\n \r\n {instance.name} ({instance.wildcard})\r\n \r\n ))}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent, useMemo, forwardRef, useEffect } from 'react';\r\nimport { default as ReactSelect } from 'react-select';\r\nimport Async from 'react-select/async';\r\nimport { useFieldApi } from '../../hooks/useFormFieldState';\r\nimport { ui, isEquivalent } from '../../lib.core';\r\nimport { FormField } from '.';\r\nimport { FormFieldProps } from './FormField';\r\nimport { useAsync } from 'react-async';\r\nimport { HmAlert, ExceptionMessage } from '../HmAlert';\r\nimport { FieldStateInitializer } from 'hooks/formUtils';\r\n\r\n// adapts react-select for use in FormField\r\nexport const HmSelect = forwardRef(({disabled = false, isDisabled = disabled, isInvalid, className, ...props }: any, ref) => {\r\n return (\r\n ({ ...base, zIndex: 10001 }) }}\r\n theme={theme => ({\r\n ...theme,\r\n borderRadius: 4\r\n })}\r\n menuPortalTarget={document.body}\r\n className={ui.classNames(className, { 'reactselect-is-invalid': isInvalid })}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nexport const HmAsyncSelect = forwardRef(({disabled = false, isDisabled = disabled, isInvalid, className, ...props }: any, ref) => {\r\n return (\r\n ({ ...base, zIndex: 10001 }) }}\r\n theme={theme => ({\r\n ...theme,\r\n borderRadius: 4\r\n })}\r\n menuPortalTarget={document.body}\r\n className={ui.classNames(className, { 'reactselect-is-invalid': isInvalid })}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\ninterface ReactSelectProps {\r\n options?: any[];\r\n isLoading?: boolean;\r\n isClearable?: boolean;\r\n isMulti?: boolean;\r\n getOptionLabel?: (opt: any) => any;\r\n getOptionValue?: (opt: any) => any;\r\n formatGroupLabel?: (opt: any) => any;\r\n defaultValue?: any;\r\n loadOptions?: any;\r\n onChange?: (opt: any) => void;\r\n components?: any;\r\n defaultOptions?: any;\r\n inputValue?: string;\r\n defaultInputValue ?: string;\r\n filterOption ?: (candidate: any, value: any) => boolean;\r\n}\r\n\r\ninterface SelectProps extends ReactSelectProps {\r\n promiseFn?: (args: any) => Promise;\r\n watchFn?: (cur, prev) => boolean;\r\n params?: any;\r\n selectAll?: boolean;\r\n filter ?: (option: any) => boolean;\r\n}\r\n\r\ntype SelectComponentProps = SelectProps & FormFieldProps;\r\n\r\n// see this for style info\r\n// https://react-select.com/styles#styles\r\n\r\nexport function initializeReactSelect({\r\n getOptionValue = opt => opt,\r\n onChange,\r\n isLoading = false,\r\n defaultValue,\r\n isMulti\r\n}: ReactSelectProps): FieldStateInitializer {\r\n function getOptionOrDefault(option, values) {\r\n return option && getOptionValue(option) === values;\r\n }\r\n\r\n function getOptionOrDefaultMulti(option, selected) {\r\n return Array.isArray(selected) && selected.some(v => getOptionValue(option) === v);\r\n }\r\n\r\n function selectValues(isMulti, options, value) {\r\n if (!options) return options;\r\n // handle grouping\r\n if (options && options.length && options[0].options) options = options.reduce((a, o) => [...a, ...o.options], []);\r\n if (isMulti) {\r\n if (!value) value = defaultValue || [];\r\n const arr = options.filter(o => {\r\n const ov = getOptionValue(o);\r\n return value.some(v => isEquivalent(o, v, ['_http', '_link']) || ov === v);\r\n });\r\n return arr;\r\n } else {\r\n const o = options.find(o => isEquivalent(o, value, ['_http', '_link']) || value === getOptionValue(o));\r\n return o;\r\n }\r\n }\r\n\r\n return ({\r\n value,\r\n setter,\r\n setError,\r\n props: { ref, disabled: isDisabled, options, loadOptions, ...fieldProps }\r\n }) => {\r\n const v = selectValues(isMulti, options, value);\r\n return {\r\n value: loadOptions ? undefined : v || defaultValue || null,\r\n isDisabled,\r\n loadOptions,\r\n dependencies: [isDisabled, options, isLoading],\r\n options,\r\n ...fieldProps,\r\n defaultValue: defaultValue || v,\r\n getOptionValue,\r\n isOptionSelected: isMulti ? getOptionOrDefaultMulti : getOptionOrDefault,\r\n isMulti,\r\n onChange: (value: any) => {\r\n onChange && onChange(value);\r\n if (value === null || value === undefined) setter(isMulti ? [] : null, isMulti);\r\n else setter(isMulti ? value.map(getOptionValue) : getOptionValue(value), isMulti);\r\n setError(false); // clear errors set outside of the control\r\n }\r\n };\r\n };\r\n}\r\n\r\nexport const AsyncSelect: FunctionComponent = ({\r\n onChange,\r\n getOptionValue = _ => _,\r\n isMulti = false,\r\n selectAll = false,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const Select: FunctionComponent = ({\r\n name,\r\n onChange,\r\n options = [],\r\n promiseFn = () => Promise.resolve(options),\r\n watchFn,\r\n params,\r\n getOptionValue = _ => _,\r\n isMulti = false,\r\n selectAll = false,\r\n defaultValue,\r\n filter,\r\n ...props\r\n}) => {\r\n const api = useFieldApi(name);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const optionsPromise = useMemo(() => promiseFn, [options.length, params]);\r\n const { data, error, isLoading } = useAsync({ promiseFn: optionsPromise, watchFn, ...params });\r\n\r\n useEffect(() => {\r\n if (data && !isLoading && selectAll) {\r\n api.setValue(data.map(getOptionValue), true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data, isLoading, selectAll]);\r\n\r\n if (error) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (!data) return null;\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { useContext } from 'react';\r\nimport { TimeContext } from 'components/clients/TimeContext';\r\n\r\nexport function useTime() {\r\n return useContext(TimeContext);\r\n}\r\n","import React, { useLayoutEffect } from 'react';\r\nimport { Container } from 'react-bootstrap';\r\nimport { ui } from 'lib.core';\r\nimport { useWindowDimensions } from 'hooks/useWindowDimensions';\r\n\r\nconst positionSticky = () => {\r\n const el = document.querySelector('.sticky-actions') as any;\r\n if (!el) return;\r\n const offset = parseInt(el.getAttribute('data-offset') || '0', 10) + el.parentElement!.offsetTop;\r\n el.style.top = `${offset}px`;\r\n}\r\n\r\nexport const HmActions = ({children, justify = 'end', sticky = false, ...props}) => {\r\n useWindowDimensions(sticky ? positionSticky : undefined);\r\n\r\n return (\r\n \r\n {React.Children.map(children, (child) => React.cloneElement(child, {\r\n className: `justify-content-${justify}`\r\n })\r\n )}\r\n \r\n );\r\n};\r\n","import { HmClient } from '../HmContext';\r\nimport { useClientContext } from './useClientContext';\r\n\r\nexport function useClientState(): HmClient {\r\n const {client} = useClientContext();\r\n return client;\r\n}\r\n","import authHttp from 'api';\r\n\r\nexport const connectHttp = authHttp.url('/connect');\r\n","import React, { FunctionComponent } from 'react';\r\nimport { ui } from 'lib.core';\r\nimport { Portal } from './Portal';\r\n\r\ninterface LayoutHeaderProps {\r\n className?: any;\r\n start?: boolean;\r\n end?: boolean;\r\n center?: boolean;\r\n around?: boolean;\r\n between?: boolean;\r\n}\r\n\r\nexport const LayoutHeader: FunctionComponent = ({\r\n children,\r\n className,\r\n start = false,\r\n end = false,\r\n center = false,\r\n around = false,\r\n between = false,\r\n ...props\r\n}) => {\r\n const classNames = {\r\n 'justify-content-start': start,\r\n 'justify-content-end': end,\r\n 'justify-content-center': center,\r\n 'justify-content-between': between,\r\n 'justify-content-around': around\r\n };\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n","import React, { useRef, FunctionComponent } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useLocation } from 'react-router';\r\n\r\nexport function useReturnTo(defaultTo, returnTo = false) {\r\n const location = useLocation();\r\n const returnUrl = useRef('');\r\n let to = defaultTo;\r\n\r\n if (returnTo === true) {\r\n return typeof to === 'string' ? {\r\n pathname: to.split('?')[0],\r\n state: {\r\n returnUrl: location\r\n }\r\n } : {\r\n ...to,\r\n state: {\r\n ...(to.state || {}),\r\n returnUrl: location\r\n }\r\n };\r\n }\r\n\r\n const stateReturnUrl = location.state ? (location.state as any).returnUrl : null;\r\n if (!returnUrl.current && stateReturnUrl) {\r\n returnUrl.current = stateReturnUrl;\r\n }\r\n if (returnUrl.current) {\r\n to = returnUrl.current;\r\n }\r\n\r\n return to;\r\n}\r\n\r\nexport const ReturnLink: FunctionComponent = ({ to, children, returnTo = false, ...props }) => {\r\n to = useReturnTo(to, returnTo);\r\n\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import { ReactElement, ReactNode } from 'react';\r\nimport { clone } from 'lib.core';\r\nimport { HmApplicationState, HmInstance, HmSettings } from 'HmContext';\r\nimport { featureGuards } from './';\r\nimport { Roles, HmFeatures } from 'lib.app/enums';\r\n\r\nexport type GuardContext = HmApplicationState & { instances: HmInstance[], clients: HmSettings[] }\r\n\r\ntype CheckType = 'any' | 'all' | 'not';\r\nexport interface HmGuardParams {\r\n roles?: Roles | Array>;\r\n check?: CheckType;\r\n features?: HmFeatures | HmFeatures[];\r\n user?: boolean | string;\r\n}\r\n\r\nexport interface HmGuardProps extends HmGuardParams {\r\n to?: string;\r\n component?: ReactNode | null;\r\n}\r\n\r\nexport interface HmAccessHelper {\r\n withNoContent: (key: HmAccessKey) => HmGuardProps;\r\n withRedirect: (key: HmAccessKey, to: string) => HmGuardProps;\r\n withFallback: (key: HmAccessKey, component: ReactElement) => HmGuardProps;\r\n}\r\nexport interface HmAccessMap extends HmAccessHelper {\r\n accounting: HmGuardProps;\r\n accountingReports: HmGuardProps;\r\n activateGracePeriod: HmGuardProps;\r\n addCharge: HmGuardProps;\r\n addPayment: HmGuardProps;\r\n administerAccount: HmGuardProps;\r\n advancedEligibilityRules: HmGuardProps;\r\n advancedOpeningTypes: HmGuardProps;\r\n applications: HmGuardProps;\r\n applicationsAnyInstance: HmGuardProps;\r\n assignApplicationToUser: HmGuardProps;\r\n auditing: HmGuardProps;\r\n authenticated: HmGuardProps;\r\n autoRenewDrop: HmGuardProps;\r\n billing: HmGuardProps;\r\n billingPackages: HmGuardProps;\r\n clientOnly: HmGuardProps;\r\n companyBilling: HmGuardProps;\r\n companyConfig: HmGuardProps;\r\n companyUserAdmin: HmGuardProps;\r\n companyUserOrGreater: HmGuardProps;\r\n customers: HmGuardProps;\r\n customQuestionsAndPreferences: HmGuardProps;\r\n discountPackages: HmGuardProps;\r\n devEnvironment: HmGuardProps;\r\n developerTool: HmGuardProps;\r\n editApplications: HmGuardProps;\r\n employeesOnly: HmGuardProps;\r\n enhancedApplicationSecurity: HmGuardProps;\r\n enterpriseKeys: HmGuardProps;\r\n issueCredits: HmGuardProps;\r\n lindseyCustomers: HmGuardProps;\r\n maintenanceSettings: HmGuardProps;\r\n manageAccounting: HmGuardProps;\r\n managePackages: HmGuardProps;\r\n managePackagesEdit: HmGuardProps;\r\n misconfiguredMaintenanceReqeusts: HmGuardProps;\r\n misconfiguredOnlineRent: HmGuardProps;\r\n nonLindseyInstances: HmGuardProps;\r\n notifications: HmGuardProps;\r\n onlineCustomerAdmin: HmGuardProps;\r\n onlineCustomerCompanyUserOrGreater: HmGuardProps;\r\n onlineCustomersOnly: HmGuardProps;\r\n onlineMaintenace: HmGuardProps;\r\n onlineRentCollection: HmGuardProps;\r\n readOnly: HmGuardProps;\r\n remittance: HmGuardProps;\r\n residentPortal: HmGuardProps;\r\n residents: HmGuardProps;\r\n residentsAnyInstance: HmGuardProps;\r\n roleManager: HmGuardProps;\r\n terminatePackage: HmGuardProps;\r\n trialCustomer: HmGuardProps;\r\n unitsAnyInstance: HmGuardProps;\r\n volumeUnlimited: HmGuardProps;\r\n waitingListManagement: HmGuardProps;\r\n workOrders: HmGuardProps;\r\n workOrdersAnyInstance: HmGuardProps;\r\n}\r\n\r\nexport type HmAccessKey = keyof Pick>;\r\n\r\nexport const HmAccess: HmAccessMap = {\r\n accounting: {\r\n roles: [Roles.Accounting],\r\n component: null,\r\n },\r\n accountingReports: {\r\n roles: [Roles.Accounting, Roles.ReportViewer],\r\n check: 'all',\r\n component: null,\r\n },\r\n activateGracePeriod: {\r\n roles: [Roles.ActivateGracePeriod],\r\n component: null\r\n },\r\n addPayment: {\r\n roles: [Roles.CreatePayment],\r\n component: null,\r\n },\r\n addCharge: {\r\n roles: [Roles.Accounting, Roles.AdminSales],\r\n component: null\r\n },\r\n administerAccount: {\r\n roles: [Roles.Accounting, Roles.AdminSales, Roles.IssueCredits, Roles.CreatePayment],\r\n component: null\r\n },\r\n authenticated: {\r\n user: true\r\n },\r\n autoRenewDrop: {\r\n features: HmFeatures.ApplicationAutoRenewDrop,\r\n component: null\r\n },\r\n applications: {\r\n features: HmFeatures.Applications,\r\n user: true\r\n },\r\n applicationsAnyInstance: {\r\n features: HmFeatures.CustomerApplications,\r\n component: null,\r\n },\r\n assignApplicationToUser: {\r\n features: HmFeatures.AssignApplicationToUser,\r\n roles: [Roles.CompanyUser, Roles.CompanyAdmin, Roles.LindseyEmployee],\r\n component: null\r\n },\r\n auditing: {\r\n roles: Roles.LindseyEmployee\r\n },\r\n billing: {\r\n roles: [Roles.Accounting, Roles.Packages],\r\n },\r\n billingPackages: {\r\n roles: [Roles.Packages],\r\n component: null\r\n },\r\n clientOnly: {\r\n roles: Roles.LindseyEmployee,\r\n check: 'not',\r\n component: null,\r\n },\r\n companyBilling: {\r\n features: HmFeatures.InstanceBillingContact,\r\n component: null,\r\n },\r\n companyConfig: {\r\n features: [HmFeatures.Residents, HmFeatures.WordOrders],\r\n component: null,\r\n check: 'any'\r\n },\r\n companyUserAdmin: {\r\n user: true,\r\n roles: [Roles.CompanyAdmin, Roles.LindseyEmployee],\r\n },\r\n companyUserOrGreater: {\r\n user: true,\r\n roles: [Roles.CompanyUser, Roles.CompanyAdmin, Roles.LindseyEmployee],\r\n },\r\n customQuestionsAndPreferences: {\r\n features: HmFeatures.ApplicationCustomQuestionsAndPreferences,\r\n component: null\r\n },\r\n customers: {\r\n roles: Roles.LindseyEmployee,\r\n },\r\n discountPackages: {\r\n roles: Roles.LindseyEmployee,\r\n component: null\r\n },\r\n devEnvironment: {\r\n features: HmFeatures.DevEnvironment,\r\n },\r\n developerTool: {\r\n roles: Roles.Developer\r\n },\r\n editApplications: {\r\n features: HmFeatures.ApplicationEdit,\r\n component: null\r\n },\r\n advancedEligibilityRules: {\r\n features: HmFeatures.ApplicationAdvancedEligibilityRules,\r\n component: null\r\n },\r\n advancedOpeningTypes: {\r\n features: HmFeatures.ApplicationAdvancedOpeningTypes,\r\n component: null\r\n },\r\n employeesOnly: {\r\n user: true,\r\n roles: Roles.LindseyEmployee,\r\n component: null,\r\n },\r\n enhancedApplicationSecurity: {\r\n features: HmFeatures.ApplicationTwoFactorAuth,\r\n component: null,\r\n },\r\n enterpriseKeys: {\r\n roles: Roles.LindseyEmployee\r\n },\r\n issueCredits: {\r\n roles: Roles.IssueCredits,\r\n component: null,\r\n },\r\n lindseyCustomers: {\r\n features: HmFeatures.LindseySoftwareOnly,\r\n component: null\r\n },\r\n maintenanceSettings: {\r\n features: [HmFeatures.MaintenanceRequests, HmFeatures.WordOrders],\r\n check: 'any',\r\n component: null\r\n },\r\n manageAccounting: {\r\n roles: [Roles.Accounting, Roles.Administrator],\r\n component: null,\r\n },\r\n managePackages: {\r\n roles: [Roles.Packages, Roles.Administrator], // * le sigh *, super admin required by api\r\n component: null,\r\n },\r\n managePackagesEdit: {\r\n roles: [Roles.SuperAdmin], // * le sigh *, super admin required by api\r\n component: null,\r\n },\r\n misconfiguredMaintenanceReqeusts: {\r\n features: HmFeatures.MisconfiguredMaintenanceReqeusts,\r\n component: null,\r\n },\r\n misconfiguredOnlineRent: {\r\n features: HmFeatures.MisconfiguredOnlineRent,\r\n component: null,\r\n },\r\n nonLindseyInstances: {\r\n features: HmFeatures.SomeOnlineInstances,\r\n component: null,\r\n },\r\n onlineMaintenace: {\r\n features: [HmFeatures.MaintenanceRequests],\r\n component: null\r\n },\r\n onlineCustomersOnly: {\r\n features: HmFeatures.OnlineCustomersOnly,\r\n component: null\r\n },\r\n onlineCustomerAdmin: {\r\n features: HmFeatures.OnlineCustomersOnly,\r\n roles: [Roles.LindseyEmployee, Roles.CompanyAdmin],\r\n component: null,\r\n },\r\n onlineCustomerCompanyUserOrGreater: {\r\n features: HmFeatures.OnlineCustomersOnly,\r\n roles: [Roles.CompanyUser, Roles.CompanyAdmin, Roles.LindseyEmployee],\r\n component: null,\r\n },\r\n onlineRentCollection: {\r\n features: HmFeatures.OnlineRentCollection\r\n },\r\n notifications: {\r\n roles: Roles.LindseyEmployee\r\n },\r\n readOnly: {\r\n features: HmFeatures.ReadOnly,\r\n },\r\n remittance: {\r\n roles: Roles.Accounting\r\n },\r\n residents: {\r\n features: HmFeatures.Residents,\r\n user: true\r\n },\r\n residentsAnyInstance: {\r\n features: HmFeatures.CustomerResidents,\r\n user: true\r\n },\r\n residentPortal: {\r\n features: HmFeatures.Residents,\r\n component: null,\r\n },\r\n roleManager: {\r\n features: HmFeatures.RoleManager,\r\n component: null,\r\n },\r\n terminatePackage: {\r\n roles: Roles.LindseyEmployee,\r\n component: null\r\n },\r\n trialCustomer: {\r\n features: HmFeatures.Trial,\r\n component: null\r\n },\r\n workOrders: {\r\n features: HmFeatures.WordOrders,\r\n component: null,\r\n user: true\r\n },\r\n workOrdersAnyInstance: {\r\n features: HmFeatures.CustomerWordOrders,\r\n component: null,\r\n user: true\r\n },\r\n unitsAnyInstance: {\r\n features: HmFeatures.CustomerUnits,\r\n component: null,\r\n user: true\r\n },\r\n volumeUnlimited: {\r\n roles: Roles.LindseyEmployee,\r\n component: null,\r\n },\r\n waitingListManagement: {\r\n features: HmFeatures.WaitingListManagement,\r\n },\r\n withNoContent: (key: HmAccessKey): HmGuardProps => {\r\n return clone(HmAccess[key], { component: null }) as HmGuardProps;\r\n },\r\n withRedirect: (key: HmAccessKey, to: string): HmGuardProps => {\r\n const {component, ...guard} = clone(HmAccess[key], { to, component: false }) as HmGuardProps;\r\n return guard;\r\n },\r\n withFallback: (key: HmAccessKey, component: ReactElement): HmGuardProps => {\r\n return clone(HmAccess[key], { component }) as HmGuardProps;\r\n }\r\n};\r\n\r\nexport function guard(params: HmGuardParams | boolean, context: GuardContext): boolean {\r\n if (params === true || params === false) return !params;\r\n if (params === undefined) return false;\r\n const failedUser = guardUser(params, context);\r\n const failedFeatures = guardFeatures(params, context);\r\n const failedRoles = guardRoles(params, context);\r\n\r\n return failedUser || failedFeatures || failedRoles;\r\n}\r\n\r\ntype GuardFn = (params: HmGuardParams, context: GuardContext) => boolean;\r\n\r\nconst guardUser: GuardFn = ({user: authUser = false}, {user}) => {\r\n const guard = authUser === true || typeof authUser === 'string';\r\n const failed = guard && (!user || !user.isLoggedIn);\r\n return typeof authUser === 'string' ? !failed && user.username !== authUser : failed;\r\n};\r\n\r\nconst guardFeatures: GuardFn = ({features = [], check = 'all'}, context) => {\r\n features = Array.isArray(features) ? features : [features];\r\n const guarded = features.map(f => {\r\n const fg = featureGuards.get(f) as any;\r\n // tslint:disable-next-line: no-console\r\n if (!fg) { console.warn(`${HmFeatures[f]} is not defined`); return false; }\r\n return fg(context);\r\n });\r\n return test(guarded, check);\r\n};\r\n\r\nconst guardRoles: GuardFn = ({roles = [], check = 'any'}, {user, ...context}) => {\r\n roles = Array.isArray(roles) ? roles : [roles];\r\n const guarded = roles.map(r => {\r\n if (!user.roles) return false;\r\n if (typeof r === 'object') return guardRoles(r, {user, ...context});\r\n return user.roles.includes(r);\r\n });\r\n return test(guarded, check);\r\n};\r\n\r\nfunction test(values: boolean[], check: CheckType) {\r\n if (values.length === 0) return false;\r\n const failed = check === 'all' ? values.some(v => !v) : values.every(v => !v);\r\n return check === 'not' ? !failed : failed;\r\n}\r\n\r\nexport enum AccountStatus {\r\n ClosedWithBalance = -101,\r\n Closed = -100,\r\n Active = 100,\r\n Trial = 200,\r\n LSS = 300,\r\n}\r\n","import { GuardContext, AccountStatus } from \"./\";\r\nimport { HmFeatures, Roles } from \"lib.app/enums\";\r\nimport { HmInstance } from \"HmContext\";\r\nimport config from \"config\";\r\n\r\nconst instanceFeatureChecks = new Map boolean>();\r\ninstanceFeatureChecks.set(HmFeatures.Residents, i => i.residents && i.accountStatusId > 0);\r\ninstanceFeatureChecks.set(HmFeatures.Units, i => (i.onlineWorkOrders || i.residents || i.onlineMaintenanceRequests) && i.accountStatusId > 0);\r\ninstanceFeatureChecks.set(HmFeatures.Applications, i => i.applications && i.accountStatusId > 0);\r\ninstanceFeatureChecks.set(HmFeatures.WordOrders, i => (i.onlineWorkOrders) && i.accountStatusId > 0);\r\n\r\nexport function checkInstanceFeature(feature) {\r\n if (feature === true) return () => true;\r\n const check = instanceFeatureChecks.get(feature);\r\n if (!check) return () => false;\r\n return check;\r\n}\r\n\r\nexport const featureGuards = new Map boolean>();\r\nfeatureGuards.set(HmFeatures.ApplicationAdvancedEligibilityRules, ({ instance }) => instance.advancedEligibilityRules);\r\nfeatureGuards.set(HmFeatures.ApplicationAdvancedOpeningTypes, ({ instance }) => instance.advancedOpeningTypes);\r\nfeatureGuards.set(HmFeatures.ApplicationAutoRenewDrop, ({ instance }) => instance.autoRenewDrop);\r\nfeatureGuards.set(HmFeatures.ApplicationCustomQuestionsAndPreferences, ({ instance }) => instance.customQuestionsAndPreferences);\r\nfeatureGuards.set(HmFeatures.ApplicationEdit, ({ instance }) => instance.applicantCanEditApplication);\r\nfeatureGuards.set(HmFeatures.Applications, ({ instance }) => checkInstanceFeature(HmFeatures.Applications)(instance));\r\nfeatureGuards.set(HmFeatures.ApplicationTwoFactorAuth, ({ instance }) => instance.enhancedApplicationSecurity);\r\nfeatureGuards.set(HmFeatures.AssignApplicationToUser, ({ instance }) => instance.assignApplicationToUser);\r\nfeatureGuards.set(HmFeatures.CustomerApplications, ({ instances }) => instances.some(checkInstanceFeature(HmFeatures.Applications)));\r\nfeatureGuards.set(HmFeatures.CustomerResidents, ({ instances }) => instances.some(checkInstanceFeature(HmFeatures.Residents)));\r\nfeatureGuards.set(HmFeatures.CustomerUnits, ({ instances }) => instances.some(checkInstanceFeature(HmFeatures.Units)));\r\nfeatureGuards.set(HmFeatures.CustomerWordOrders, ({ instances }) => instances.some(checkInstanceFeature(HmFeatures.WordOrders)));\r\nfeatureGuards.set(HmFeatures.DevEnvironment, () => config.app.isDev);\r\nfeatureGuards.set(HmFeatures.InstanceBillingContact, ({ user, instance }) => user.roles.includes(Roles.LindseyEmployee) || user.instanceRoles.find(i => i && i.instanceId === instance.instanceId && i.name === 'BillingAdmin') !== undefined);\r\nfeatureGuards.set(HmFeatures.Ivr, ({ instance }) => instance.ivr);\r\nfeatureGuards.set(HmFeatures.Legacy, ({ instance }) => instance.isLegacyBilling);\r\nfeatureGuards.set(HmFeatures.LindseySoftwareOnly, ({ settings }) => settings.isLindseyCustomer);\r\nfeatureGuards.set(HmFeatures.MaintenanceRequests, ({ instance }) => instance.onlineMaintenanceRequests);\r\nfeatureGuards.set(HmFeatures.MisconfiguredMaintenanceReqeusts, ({ instance }) => instance.onlineMaintenanceRequests);\r\nfeatureGuards.set(HmFeatures.MisconfiguredOnlineRent, ({ instances }) => instances.some(i => i.onlineRentCollectionIsMisconfigured));\r\nfeatureGuards.set(HmFeatures.OnlineCustomersOnly, ({ settings }) => settings.isLindseyCustomer === false);\r\nfeatureGuards.set(HmFeatures.OnlineRentCollection, ({ instance }) => instance.onlineRentCollection);\r\nfeatureGuards.set(HmFeatures.ResidentPortal, ({ instance }) => instance.residentPortal);\r\nfeatureGuards.set(HmFeatures.Residents, ({ instance }) => checkInstanceFeature(HmFeatures.Residents)(instance));\r\nfeatureGuards.set(HmFeatures.RoleManager, ({ user, client }) => user.roles.includes(Roles.Security) && client.clientId === 814 )\r\nfeatureGuards.set(HmFeatures.SomeOnlineInstances, ({ clients }) => clients.some(s => !s.isLindseyCustomer && s.isActive));\r\nfeatureGuards.set(HmFeatures.Trial, ({ instance }) => instance.accountStatusId === AccountStatus.Trial);\r\nfeatureGuards.set(HmFeatures.WaitingListManagement, ({ instance, settings }) => instance.waitingListManagement || (settings.waitingListReportsEnabled));\r\nfeatureGuards.set(HmFeatures.WordOrders, ({ instance }) => checkInstanceFeature(HmFeatures.WordOrders)(instance));\r\n","import React, { FunctionComponent, ReactElement, useContext } from 'react';\r\nimport { Redirect } from 'react-router';\r\nimport { useGuard, useGuardByProps } from 'hooks/useGuard';\r\nimport { HmGuardProps, HmAccessKey } from 'lib.security';\r\nimport matchers from 'lib.core/matching/matchers';\r\nimport { FormAccessContext } from 'components/forms/FormContext';\r\nimport { useQueryString } from 'hooks/useQueryString';\r\nimport { mergeLocation } from 'lib.core/utils';\r\n\r\nexport type HmAccessProps = {\r\n access: HmAccessKey | boolean;\r\n};\r\n\r\ntype HmGuardComponentProps = HmGuardProps & Partial;\r\n\r\nexport const HmGuard: FunctionComponent = ({\r\n children,\r\n access,\r\n ...props\r\n}): ReactElement | null => {\r\n const [guarded, { component = null, to }] = useGuardByProps(props, access);\r\n const {returnUrl} = useQueryString({returnUrl: window.location.pathname})\r\n\r\n if (guarded) {\r\n if (to !== undefined) {\r\n return \r\n }\r\n return component as any;\r\n }\r\n\r\n if (!children) {\r\n return null;\r\n }\r\n\r\n return children as any;\r\n};\r\n\r\nexport const HmGuardRedirect: FunctionComponent = ({\r\n children,\r\n access,\r\n to\r\n}) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const HmElementGuard: FunctionComponent = ({\r\n children,\r\n access,\r\n ...props\r\n}) => {\r\n const guarded = useGuard(access);\r\n if (guarded === true)\r\n return React.Children.map(children, (c:any) => {\r\n // work around issue with react-select using isDisabled\r\n if (c && c.props && matchers.isDefined(c.props.isDisabled) && matchers.isDefined(props.disabled)) {\r\n props.isDisabled = props.disabled;\r\n }\r\n return React.cloneElement(c, { ...props });\r\n }) as any;\r\n\r\n return children;\r\n};\r\n\r\nexport const HmAccessGuard: FunctionComponent = ({ hide = false, as: As = hide ? HmGuard : HmElementGuard, children, ...props}) => {\r\n const { access } = useContext(FormAccessContext);\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport const TrialCustomerOnly: FunctionComponent = ({ children }) => {\r\n const guarded = useGuard('trialCustomer');\r\n if (guarded) return null;\r\n return children;\r\n};\r\n","import { authHttp, withMock, InstanceParams, InstanceDetailRequest, HmInstanceApiRequest } from '../..';\r\nimport { HmRequestOptions } from '../../http';\r\nimport { Company } from '../companies/companies';\r\n\r\nconst request = authHttp.url('/divisions');\r\n\r\nexport const getDivisions = ({wildcard}, options = {}) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ './divisions.mock.js'))\r\n .url(`/${wildcard}`)\r\n .get();\r\n\r\nexport const getDivision: DivisionGetRequest = ({wildcard, divisionId}, options = {}) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ './divisions.mock.js'))\r\n .url(`/${wildcard}/${divisionId}`)\r\n .get();\r\n\r\nexport const createDivision: DivisionSaveRequest = ({wildcard, values}, options = {}) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ './divisions.mock.js'))\r\n .url(`/${wildcard}`)\r\n // yes this is a put for a create, why...I'll never know\r\n .put(values).then(r => {values.divisionId = r; return values; });\r\n\r\nexport const saveDivision: DivisionSaveRequest = ({wildcard, values}, options = {}) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ './divisions.mock.js'))\r\n .url(`/${wildcard}`)\r\n // yes this is a post for a save, why...I'll never know\r\n .post(values).then(r => {values.divisionId = r; return values; });\r\n\r\nexport type Division = {\r\n instanceId: number;\r\n divisionId: number;\r\n divisionCode: string;\r\n divisionName: string;\r\n companyCode: string;\r\n companyId: number;\r\n company: Company;\r\n autoCreatePestControlWorkOrders: boolean;\r\n pestControlDefaultContractorGuid?: any;\r\n autoCreateHousekeepingWorkOrders: boolean;\r\n autoFillScheduledDate: boolean;\r\n useFlatRate: boolean;\r\n scheduledTimeStart?: any;\r\n scheduledTimeEnd?: any;\r\n defaultScheduledTimeToday?: any;\r\n defaultScheduledTimeNextDay?: any;\r\n pestControlNotificationAddresses: any[];\r\n housekeepingNotificationAddresses: any[];\r\n};\r\n\r\ntype DivisionGet = InstanceParams & { divisionId ?: string | number };\r\n\r\ntype DivisionParams = InstanceDetailRequest;\r\n\r\ntype DivisionSaveRequest = (params: DivisionParams, options?: HmRequestOptions) => Promise;\r\ntype DivisionGetRequest = HmInstanceApiRequest;\r\n","import { withMock, authHttp, resourceHttp, handleNullResponse } from '../../../';\r\nimport { HmRequestOptions } from '../../../http';\r\n\r\nconst request = resourceHttp.url('/billing/billingcontacts');\r\n\r\nexport const getBillingContacts = ({wildcard}, options: HmRequestOptions = {}) =>\r\n withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ './billingcontacts.mock.js'))\r\n .url(`/${wildcard}`)\r\n .get() as Promise;\r\n\r\nexport const saveBillingContacts = ({wildcard, values: {userIds = []}}, options: HmRequestOptions = {}) =>\r\n {\r\n if (userIds.length === 0) return Promise.resolve([]);\r\n\r\n return withMock(request, options, () => import(/* webpackChunkName: \"mockApi\" */ '../../../generic.mock'))\r\n .url(`/${wildcard}`)\r\n .post({userIds})\r\n .catch(handleNullResponse);\r\n };\r\n","import React from 'react';\r\nimport bug from '@lindsey-software/housing-manager-ux/content/img/hm-bug.png';\r\nimport bugw from '@lindsey-software/housing-manager-ux/content/img/hm-bug-w.png';\r\nimport { ui } from '../lib.core';\r\nimport { useUserState } from 'hooks/useUserState';\r\n\r\nexport const HmBug = props => {\r\n const [user] = useUserState();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import { useContext } from 'react';\r\nimport { HmContext } from 'HmContext';\r\n\r\nexport function usePortalInfo(pluralize = true) {\r\n var { settings = {} }: any = useContext(HmContext);\r\n const title = `${settings.portalTitle || 'Resident'}${pluralize ? 's': ''}`;\r\n\r\n return {\r\n title,\r\n contract: settings.contract || 'Monthly Rent',\r\n contractType: settings.contractType || 'Rent'\r\n };\r\n}\r\n","import { withMock, authHttp, HmInstanceApiRequest, InstanceDetailRequest, handleNullResponse } from 'api';\r\n\r\nconst workordersHttp = authHttp.url('/workorders');\r\n\r\nexport const getWorkOrderSettings: HmInstanceApiRequest = ({wildcard}, options = {}) =>\r\n withMock(workordersHttp, options, () => import(/* webpackChunkName: \"mockApi\" */ './settings.mock.js'))\r\n .url(`/${wildcard}/settings`)\r\n .get()\r\n\r\nexport const saveWorkOrderSettings: HmInstanceApiRequest> = ({wildcard, values}, options = {}) =>\r\n withMock(workordersHttp, options, () => import(/* webpackChunkName: \"mockApi\" */ './settings.mock.js'))\r\n .url(`/${wildcard}/settings`)\r\n .put(values)\r\n .catch(handleNullResponse);\r\n","import { useContext } from 'react';\r\nimport { HmContext, HmUser, updateUser, UserAction } from '../HmContext';\r\n\r\n\r\nexport type UserDispatch = (user: HmUser, isLoggedIn ?: boolean, action ?: UserAction) => void;\r\n\r\nexport const useUserState = (): [HmUser, UserDispatch] => {\r\n const { dispatch, user } = useContext(HmContext);\r\n\r\n const userDispatch = (userData: HmUser, isLoggedIn = true, action) => {\r\n if (action === 'logout') {\r\n userData = { username: userData.username} as HmUser;\r\n action = 'login';\r\n }\r\n dispatch({ type: updateUser.action, payload: {...userData, isLoggedIn, action }});\r\n };\r\n\r\n return [user, userDispatch];\r\n};\r\n","import { useContext, FormEvent, useEffect, useRef } from 'react';\r\nimport { getValue, createValue } from '../components/forms/utils';\r\nimport {\r\n setPathValue,\r\n addError,\r\n reset,\r\n setSubmitting,\r\n setValues,\r\n clear,\r\n mergeValues,\r\n setPristine\r\n} from '../components/forms/reducers';\r\nimport { FormContext, FormState as FormContextState, FormAccessContext } from '../components/forms/FormContext';\r\nimport { hasError } from './formUtils/hasError';\r\n\r\nexport interface HmFormProps {\r\n onSubmit: (e: FormEvent) => Promise;\r\n noValidate: boolean;\r\n}\r\n\r\nexport type FormSubmit = (api: FormApi, e?: FormEvent) => Promise;\r\nexport type FormSumbitFn = (form: HTMLFormElement, e ?: FormEvent) => Promise;\r\n\r\nexport interface FormApi {\r\n values: T;\r\n state: FormContextState;\r\n getValue: (path: string, orDefault?: any) => any;\r\n setValue: (path: string, value: any) => void;\r\n clearValue: (path: string) => void;\r\n setValues: (values: any, touched?: string[]) => void;\r\n mergeValues: (values: any) => void;\r\n setError: (error: any, clear?: boolean) => void;\r\n getErrors: (path: string) => any[];\r\n getTouched: (path: string) => boolean;\r\n getValid: (path: string) => boolean;\r\n reset: () => void;\r\n setSubmitting: (val: boolean) => void;\r\n errorSummary: () => string[];\r\n setPristine: (pristine: boolean) => void;\r\n submit: FormSubmit;\r\n validate: () => any;\r\n buildValue: (path: Array<{path: string, value: any}>) => any;\r\n}\r\n\r\nfunction submitForm(formApi: FormApi) {\r\n\r\n const validateAndSubmit = async (form:HTMLFormElement, e ?: FormEvent) => {\r\n const validity = checkFormValidity(form);\r\n\r\n if (validity !== true) {\r\n formApi.setError(validity);\r\n return;\r\n }\r\n\r\n const result = formApi.validate();\r\n if (result !== true) {\r\n return;\r\n }\r\n\r\n formApi.setSubmitting(true);\r\n\r\n try {\r\n await formApi.submit(formApi, e);\r\n } catch (error) {\r\n formApi.setError(error);\r\n }\r\n formApi.setSubmitting(false);\r\n };\r\n\r\n return [async (e: FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n return validateAndSubmit(e.target as HTMLFormElement, e);\r\n }, validateAndSubmit];\r\n}\r\n\r\nexport interface FormState {\r\n api: FormApi;\r\n validateAndSubmit: FormSumbitFn;\r\n form: HmFormProps;\r\n}\r\n\r\nexport function useFormState(submitFn: FormSubmit = () => Promise.resolve()) {\r\n const api = useFormApi(submitFn);\r\n const [onSubmit, validateAndSubmit] = submitForm(api);\r\n\r\n return {\r\n api,\r\n validateAndSubmit,\r\n form: {\r\n onSubmit,\r\n noValidate: true\r\n }\r\n };\r\n}\r\n\r\nfunction useFormApi(onSubmit): FormApi {\r\n const mounted = useRef(true);\r\n const { dispatch, state, validator } = useContext(FormContext) as any;\r\n const { access } = useContext(FormAccessContext);\r\n state.access = access;\r\n\r\n useEffect(() => () => {\r\n mounted.current = false;\r\n }, []);\r\n\r\n return {\r\n values: state.value,\r\n state,\r\n getValue: (path, orDefault) => getValue(state.value, path, orDefault),\r\n setValue: (path, value) => mounted.current && dispatch(setPathValue.send({ path, value })),\r\n clearValue: (path) => mounted.current && dispatch(clear.send(path)),\r\n setValues: (values, touched: string[] = []) => mounted.current && dispatch(setValues.send(values, touched)),\r\n mergeValues: values => mounted.current && dispatch(mergeValues.send(values)),\r\n setError: (error, clear = false) => dispatch(addError.send(error, clear)),\r\n getErrors: path => getValue(state.errors, path, []),\r\n getTouched: path => getValue(state.touched, path, false),\r\n getValid: path => getValue(state.valid, path, true) && getValue(state.touched, path, true),\r\n reset: () => mounted.current && dispatch(reset.send()),\r\n setSubmitting: (val: boolean) => mounted.current && dispatch(setSubmitting.send(val)),\r\n submit: onSubmit,\r\n errorSummary: () => reduceErrors(state.errors),\r\n setPristine: (pristine: boolean) => mounted.current && dispatch(setPristine.send(pristine)),\r\n validate: () => {\r\n const result = validator(state.value, state);\r\n if (result !== true) {\r\n mounted.current && dispatch(addError.send(result, true));\r\n }\r\n return result;\r\n },\r\n buildValue: (input) => {\r\n return input.reduce((obj, value) => {\r\n createValue(value.path, value.value, obj);\r\n return obj;\r\n }, {});\r\n }\r\n };\r\n}\r\n\r\nfunction checkFormValidity(form: HTMLFormElement) {\r\n if (form.classList.contains('no-validate')) {\r\n return true;\r\n }\r\n\r\n const fields = [...form.elements];\r\n let firstError: any = null;\r\n\r\n const errors = fields.reduce((errs, field) => {\r\n const error = hasError(field as HTMLInputElement);\r\n if (error) {\r\n errs[field.getAttribute('name') as any] = error;\r\n if (!firstError) {\r\n firstError = field;\r\n }\r\n }\r\n return errs;\r\n }, {});\r\n\r\n if (firstError) {\r\n firstError.focus();\r\n return errors;\r\n }\r\n return true;\r\n}\r\n\r\nfunction reduceErrors(errors) {\r\n if (!errors) return [];\r\n if (typeof errors === 'string') return errors;\r\n\r\n if (Array.isArray(errors)) {\r\n return errors.reduce((err, item) => {\r\n return err.concat(reduceErrors(item));\r\n }, []);\r\n }\r\n\r\n return Object.keys(errors).reduce((err, key) => {\r\n return err.concat(reduceErrors(errors[key]));\r\n }, [] as any);\r\n}\r\n","import { get, set, unset } from 'lodash-es';\r\nimport { clone } from '../../lib.core';\r\n\r\nexport function removeValue(obj, path) {\r\n unset(obj, path);\r\n}\r\n\r\nexport function createValue(path, value, obj = {}) {\r\n return set(obj, path, value);\r\n}\r\n\r\nexport function getValue(obj, path, defaultValue: any = null) {\r\n return get(obj, path, defaultValue);\r\n}\r\n\r\nexport function cloneAndMerge(src, target) {\r\n return clone(src, target);\r\n}\r\n","import { HmInstanceApiRequest, withMock } from 'api';\r\nimport { connectHttp } from '.';\r\n\r\nconst connectMock = () => import(/* webpackChunkName: \"mockApi\" */ './config.mock');\r\n\r\nexport const getInstanceConnections: HmInstanceApiRequest =\r\n ({ wildcard }, options = {}) =>\r\n withMock(connectHttp.url(`/config/${wildcard}`), options, connectMock)\r\n .get();","import React, { useReducer, useEffect, useMemo } from 'react';\r\nimport { clone, merge } from './lib.core';\r\nimport { Roles } from 'lib.app/enums';\r\nimport { HmTimeZoneId } from 'lib.app/miscData/timeZones';\r\nimport { getInstanceConnections } from 'api/v1/connect/config';\r\n\r\nexport type UserAction = 'unauthorized' | 'login' | 'verify' | 'init' | 'terms' | 'choose' | 'expired' | 'logout';\r\n\r\nexport declare type HmUser = {\r\n username: string;\r\n displayName: string;\r\n email: string;\r\n userId: number;\r\n clientId: number;\r\n roles: Roles[];\r\n instanceRoles: any;\r\n isActive: boolean;\r\n hasExpiredPassword: boolean;\r\n hasAcceptedTerms: boolean;\r\n hasVerifiedDevice: boolean;\r\n isLoggedIn: boolean;\r\n hasClient: boolean;\r\n isLiveClientData: boolean;\r\n ipAddress: string;\r\n isTrialUser: boolean;\r\n action: UserAction;\r\n returnUrl?: string;\r\n requireRecaptcha: boolean;\r\n};\r\n\r\nexport declare type HmClient = {\r\n clientId: number;\r\n clientName: string;\r\n city: string;\r\n state: string;\r\n hasInstance: boolean;\r\n accountStatus: string;\r\n};\r\n\r\nexport declare type HmInstance = {\r\n instanceId: number;\r\n accountStatusId: number;\r\n accountStatus: string;\r\n wildcard: string;\r\n daysRemainingOnTrial: number;\r\n applications: boolean;\r\n applicantFacingWebSite: boolean;\r\n advancedEligibilityRules: boolean;\r\n advancedOpeningTypes: boolean;\r\n applicantCanEditApplication: boolean;\r\n multiLingual: boolean;\r\n autoRenewDrop: boolean;\r\n checkList: boolean;\r\n customQuestionsAndPreferences: boolean;\r\n electronicFees: boolean;\r\n waitingListManagement: boolean;\r\n multipleLotteryDraws: boolean;\r\n isLegacyBilling: boolean;\r\n ivr: boolean;\r\n assignApplicationToUser: boolean;\r\n residents: boolean;\r\n enhancedApplicationSecurity: boolean;\r\n onlineRentCollection: boolean;\r\n onlineRentCollectionIsMisconfigured: boolean;\r\n residentPortal: boolean;\r\n freeAppsWithFee: boolean;\r\n applicationMerchantAccountIsSet: boolean;\r\n applicationFeeIsMisconfiguredForFreeApps: boolean;\r\n onlineMaintenanceRequests: boolean;\r\n onlineWorkOrders: boolean;\r\n meterReader: boolean;\r\n fixedAssets: boolean;\r\n mobileWorkOrders: boolean;\r\n inventory: boolean;\r\n};\r\n\r\nexport declare type HmSettings = {\r\n allowFraming: boolean;\r\n applicationFeeMerchantAccountSettings: null;\r\n softwareId: string | null;\r\n applicationTypeId: number;\r\n isHousingAuthority: boolean;\r\n housingManagerCutoverDate: null;\r\n housingManagerCutoverDateOriginal: null;\r\n showIvrPosition: boolean;\r\n waitingListReportsEnabled: boolean;\r\n shouldChargeHmConvenienceFee: boolean;\r\n residentRentMerchantAccountSettings: null;\r\n payNearMeMerchantAccount: {\r\n identifier: string;\r\n };\r\n siteTheme: number;\r\n logoGuid: string;\r\n id: number;\r\n clientId: null;\r\n name: string;\r\n timeZoneId: HmTimeZoneId;\r\n wildcard: string;\r\n enableApplicationFee: boolean;\r\n allowApplicationFee: boolean;\r\n applicationFee: number;\r\n isLindseyCustomer: boolean;\r\n phone1: string;\r\n phone1Label: string;\r\n phone2: string;\r\n phone2Label: string;\r\n email: string;\r\n allowIvrSyncing: boolean;\r\n isActive: boolean;\r\n goLiveDate: Date;\r\n portalTitle?: string;\r\n contract?: string;\r\n contractType?: string;\r\n};\r\n\r\nexport interface HmApplicationState {\r\n user: HmUser;\r\n instance: HmInstance;\r\n client: HmClient;\r\n settings: HmSettings;\r\n connections: HmConnections;\r\n isLoading: boolean;\r\n reload: () => Promise;\r\n dispatch: (value: any) => any;\r\n}\r\n\r\nexport interface HmConnectionConfig {\r\n connectionId: string;\r\n config: T;\r\n}\r\n\r\nexport type HmConnections = {\r\n [key: string]: HmConnectionConfig;\r\n}\r\n\r\nexport const initialState: HmApplicationState = {\r\n user: { roles: [] as any, instanceRoles: [] as any} as HmUser,\r\n instance: {} as HmInstance,\r\n client: {} as HmClient,\r\n settings: {} as HmSettings,\r\n connections: {} as HmConnections,\r\n isLoading: false,\r\n reload: () => Promise.resolve({}),\r\n dispatch: value => value\r\n};\r\n\r\nexport const reducer = (state: any, action: any) => {\r\n switch (action.type) {\r\n case updateUser.action: {\r\n return updateUser(state, action.payload);\r\n }\r\n case updateClient.action: {\r\n return updateClient(state, action.payload);\r\n }\r\n case updateInstance.action: {\r\n return updateInstance(state, action.payload);\r\n }\r\n case updateSettings.action: {\r\n return updateSettings(state, action.payload);\r\n }\r\n case initializeAction.action: {\r\n return initializeAction(state, action.payload);\r\n }\r\n default:\r\n return typeof(action.type === 'function') ? action.type(state, action.value) : state;\r\n }\r\n};\r\n\r\nexport function initializeAction(state, data) {\r\n let initState = clone(initialState, state);\r\n if (!data) return initState;\r\n const { client, settings, connections, ...user } = data;\r\n initState = updateUser(initState, { ...user, isLoggedIn: user.userId > 0, action: 'init' });\r\n initState = updateClient(initState, client);\r\n initState = updateSettings(initState, settings);\r\n initState.connections = connections;\r\n return initState;\r\n}\r\ninitializeAction.action = 'INIT';\r\n\r\nexport function updateUser(state, value: HmUser) {\r\n const {user} = state;\r\n if (!value || !value.username) return state;\r\n const newUser = clone(user);\r\n newUser.roles = [];\r\n newUser.instanceRoles = [];\r\n value = merge(newUser, value);\r\n value.action = getNextActionFromUser(value, value.action);\r\n analytics.identify(''+value.userId, {\r\n name: value.displayName,\r\n email: value.email,\r\n clientId: value.clientId,\r\n isTrialAccount: value.isTrialUser\r\n });\r\n return {...state, user: value };\r\n}\r\nupdateUser.action = 'UPDATE_USER';\r\n\r\nconst getNextActionFromUser = (user: HmUser, action ?: UserAction): UserAction => {\r\n if (user.hasAcceptedTerms === false) {\r\n return 'terms';\r\n }\r\n if (user.hasExpiredPassword === true) {\r\n return 'expired';\r\n }\r\n if (user.hasVerifiedDevice === false) {\r\n return 'verify';\r\n }\r\n if (user.hasClient === false) {\r\n return 'choose';\r\n }\r\n\r\n return action || 'login';\r\n}\r\n\r\nexport function updateClient(state, value) {\r\n if (!value || !value.clientId) return state;\r\n const { firstInstanceFeatures, _links, _http, _embedded, ...client } = value;\r\n const newClient: any = {\r\n client,\r\n user: { hasClient: client.clientId > 0 }\r\n };\r\n if (firstInstanceFeatures) {\r\n newClient.instance = firstInstanceFeatures;\r\n if (!firstInstanceFeatures.wildcard) {\r\n newClient.instance.wildcard = 'none';\r\n }\r\n newClient.client.accountStatus = firstInstanceFeatures.accountStatus;\r\n }\r\n if (client.clientId) {\r\n analytics.group('' + client.clientId, { name: client.name });\r\n }\r\n\r\n return clone(state, newClient);\r\n}\r\nupdateClient.action = 'UPDATE_CLIENT';\r\n\r\nexport function updateInstance(state, value) {\r\n if (!value || !value.instanceId) return state;\r\n return clone(state, { instance: value });\r\n}\r\nupdateInstance.action = 'UPDATE_INSTANCE';\r\n\r\nexport function updateSettings(state, value) {\r\n if (!value || !value.id) return state;\r\n const { _http, _embedded, ...settings } = value;\r\n return clone(state, { settings });\r\n}\r\nupdateSettings.action = 'UPDATE_SETTINGS';\r\n\r\nexport function refreshConnections(state: HmApplicationState, value) {\r\n const { dispatch} = state;\r\n\r\n getInstanceConnections({wildcard: state.instance.wildcard}).then(c => {\r\n dispatch({ type: replaceState, value: { at:'connections', ...c } });\r\n });\r\n\r\n // by returning state, we should avoid any updates ... until we call dispatch in the promise.\r\n return state;\r\n}\r\nrefreshConnections.send = () => ({ type: refreshConnections, value: true});\r\n\r\n\r\n\r\nfunction replaceState(state: HmApplicationState, {at, ...value}: any) {\r\n // just replace the entire state graph (careful with this)\r\n if (!at) {\r\n return value;\r\n }\r\n\r\n var replacement = { [at]: value };\r\n\r\n return {...state, ...replacement };\r\n}\r\n\r\nexport const HmContext = React.createContext(initialState);\r\n\r\nexport const HmContextProvider = ({ value, reload, children }) => {\r\n const [state, dispatch] = useReducer(reducer, clone(initialState, value));\r\n\r\n state.dispatch = dispatch;\r\n useEffect(() => dispatch({type: replaceState, value: state}), []);\r\n\r\n\r\n return useMemo(() => (\r\n {children}\r\n ), [state, reload]);\r\n};\r\n","import { useContext, Dispatch } from 'react';\r\nimport { HmContext, updateInstance, HmInstance, HmSettings, HmConnections, refreshConnections } from '../HmContext';\r\n\r\nexport function useInstanceState(): [HmInstance, Dispatch] {\r\n const {dispatch, instance } = useContext(HmContext);\r\n const instanceDisptach = (instance: HmInstance) => dispatch({ type: updateInstance.action, payload: instance });\r\n\r\n return [instance, instanceDisptach];\r\n}\r\n\r\nexport function useCurrentWildcard() {\r\n const [{wildcard}] = useInstanceState();\r\n return wildcard;\r\n}\r\n\r\nexport function useCurrentSettings() : HmSettings {\r\n const { settings } = useContext(HmContext);\r\n return settings;\r\n}\r\n\r\nexport function useCurrentConnections() : [HmConnections, () => any ] {\r\n const { connections = {}, dispatch } = useContext(HmContext);\r\n return [connections, () => dispatch(refreshConnections.send())];\r\n}","\r\nconst percent = new Intl.NumberFormat('en-US', { style: 'percent', maximumFractionDigits: 2 });\r\nconst numberByLocale = new Intl.NumberFormat();\r\n\r\nexport function formatPercent(value, isWholeNumber = true) {\r\n if (isNaN(value)) value = 0;\r\n if (typeof value === 'string') value = parseFloat(value);\r\n return percent.format(isWholeNumber ? value / 100 : value);\r\n}\r\n\r\nexport function formatNumber(value) {\r\n return isNaN(value) ? value : numberByLocale.format(value);\r\n}","import { parse, formatDistance, isValid } from 'date-fns';\r\nimport { format, utcToZonedTime , zonedTimeToUtc } from 'date-fns-tz';\r\nimport { getTimeZone, } from 'lib.app/miscData/timeZones';\r\nexport { formatPercent, formatNumber } from './numbers';\r\n\r\n// ref: https://date-fns.org/v2.0.0-alpha.23/docs/format\r\nexport const formats = {\r\n Short: 'M/d/yyyy h:mm a',\r\n ShortDate: 'M/d/yyyy',\r\n ShortDateTime: 'M/d/yyyy hh:mm aaa',\r\n LongDateTime: 'M/d/yyyy h:ii:ss a',\r\n MonthDay: 'MM/dd',\r\n MonthDayYear: 'MMMM d, yyyy',\r\n MonthDayYearAndTime: 'MMMM d, yyyy hh:mm aaa',\r\n ShortTime: 'h:mm a',\r\n Long: 'P p',\r\n LongDate: 'P',\r\n LongTime: 'pp',\r\n Medium: 'PPp',\r\n MediumDate: 'PP',\r\n MediumTime: 'p',\r\n Url: 'yyyy-M-d',\r\n ISODate: 'yyyy-MM-dd',\r\n ISOTime: '\\'T\\'HH:mm:ss', //mileage may vary\r\n ISOLocal: 'yyyy-MM-dd\\'T\\'HH:mm:ss',\r\n Year: 'yyyy',\r\n ago: new Date()\r\n};\r\n\r\nexport type DateFormats = keyof typeof formats;\r\n\r\nexport type MoneyOptions = {\r\n decimalCount?: 2;\r\n decimal?: string;\r\n thousands?: string;\r\n fallback?: string;\r\n append ?: string;\r\n prepend ?: string;\r\n preserveCents?: boolean;\r\n};\r\n\r\nexport function formatMoney(amount, options: MoneyOptions = {}) {\r\n const {decimalCount = 2, decimal = '.', thousands = ',', fallback = '-', append = '', prepend = '', preserveCents = true} = options;\r\n\r\n if (!amount || isNaN(amount)) return fallback;\r\n\r\n amount = parseFloat(amount);\r\n\r\n let formatted = Math.abs(amount).toFixed(Math.max(0, decimalCount));\r\n if (decimal !== '.') formatted = formatted.replace('.', decimal);\r\n formatted = '$' + formatted.replace(/\\d(?=(\\d{3})+\\.)/g, '$&' + thousands);\r\n if (!preserveCents) formatted = formatted.replace(`${decimal}00`, '');\r\n if (amount < 0) formatted = `(${formatted})`;\r\n\r\n return `${prepend}${formatted}${append}`;\r\n}\r\n\r\nexport function formatDate(date: Date | string = new Date(), dateFormat: Date | string = formats.ShortDate): string {\r\n const newDate = new Date(date);\r\n if (!isValid(newDate)) return date as any;\r\n if (dateFormat === 'ago' || dateFormat instanceof Date) {\r\n return formatDistance(newDate, dateFormat === 'ago' ? new Date() : dateFormat);\r\n }\r\n return format(newDate, dateFormat);\r\n}\r\n\r\nexport function applyJSONFormat(date: Date, requestFormat?: DateFormats): Date {\r\n if (requestFormat === undefined || !date) return date;\r\n date.toJSON = function () { return formatDate(this, formats[requestFormat]) } ; // no lambda, so `this` resolves correctly\r\n return date;\r\n}\r\n\r\nexport function getZonedDate(zonedDate: Date | string | number, timeZoneId) {\r\n if (!timeZoneId) return new Date(zonedDate);\r\n const { ianaName } = getTimeZone(timeZoneId);\r\n return utcToZonedTime(zonedDate, ianaName);\r\n}\r\n\r\nexport function getLocalDate(date: Date, timeZoneId) {\r\n const { ianaName } = getTimeZone(timeZoneId);\r\n return zonedTimeToUtc(new Date(date.toISOString()), ianaName);\r\n}\r\n\r\nexport function parseDate(date, dateFormat = formats.ShortDate) {\r\n return parse(date, dateFormat, new Date());\r\n}\r\n\r\nexport function formatPhone(tel, forUrl = false) {\r\n if (!tel) return '';\r\n\r\n const value = ('' + tel).replace(/\\D/g, '');\r\n\r\n // tslint:disable-next-line: one-variable-per-declaration\r\n let country, city, number;\r\n\r\n switch (value.length) {\r\n case 10: // +1PPP####### -> C (PPP) ###-####\r\n country = 1;\r\n city = value.slice(0, 3);\r\n number = value.slice(3);\r\n break;\r\n\r\n case 11: // +CPPP####### -> CCC (PP) ###-####\r\n country = value[0];\r\n city = value.slice(1, 4);\r\n number = value.slice(4);\r\n break;\r\n\r\n case 12: // +CCCPP####### -> CCC (PP) ###-####\r\n country = value.slice(0, 3);\r\n city = value.slice(3, 5);\r\n number = value.slice(5);\r\n break;\r\n\r\n default:\r\n return tel;\r\n }\r\n\r\n if (forUrl) {\r\n return `+${country}${city}${number}`;\r\n }\r\n\r\n if (country === 1) {\r\n country = '';\r\n }\r\n\r\n number = number.slice(0, 3) + '-' + number.slice(3);\r\n\r\n return (country + ' (' + city + ') ' + number).trim();\r\n}\r\n","export function hasError(field: HTMLInputElement) {\r\n const { validity } = field;\r\n // Don't validate submits, buttons, file and reset inputs, and disabled fields\r\n if (field.disabled ||\r\n field.type === 'file' ||\r\n field.type === 'reset' ||\r\n field.type === 'submit' ||\r\n field.type === 'button' ||\r\n (field.form && field.form.classList.contains('no-validate'))) {\r\n return false;\r\n }\r\n if (validity.valid) {\r\n return false;\r\n }\r\n // If field is required and empty\r\n if (validity.valueMissing) {\r\n return field.getAttribute('data-value-missing') || 'Please fill out this field.';\r\n }\r\n // If not the right type\r\n // If not the right type\r\n if (validity.typeMismatch) {\r\n // Email\r\n if (field.type === 'email') {\r\n return field.getAttribute('data-type-mismatch') || 'Please enter an email address.';\r\n }\r\n // URL\r\n if (field.type === 'url') {\r\n return field.getAttribute('data-type-mismatch') || 'Please enter a URL.';\r\n }\r\n }\r\n // If too short\r\n if (validity.tooShort) {\r\n return (field.getAttribute('data-too-short') ||\r\n 'Please lengthen this text to ' +\r\n field.getAttribute('minLength') +\r\n ' characters or more. You are currently using ' +\r\n field.value.length +\r\n ' characters.');\r\n }\r\n // If too long\r\n if (validity.tooLong) {\r\n return (field.getAttribute('data-too-long') ||\r\n 'Please shorten this text to no more than ' +\r\n field.getAttribute('maxLength') +\r\n ' characters. You are currently using ' +\r\n field.value.length +\r\n ' characters.');\r\n }\r\n // If number input isn't a number\r\n if (validity.badInput)\r\n return field.getAttribute('data-bad-input') || 'Please enter a number.';\r\n // If a number value doesn't match the step interval\r\n if (validity.stepMismatch)\r\n return field.getAttribute('data-step-mismatch') || 'Please select a valid value.';\r\n // If a number field is over the max\r\n if (validity.rangeOverflow) {\r\n return (field.getAttribute('data-range-overflow') ||\r\n 'Please select a value that is no more than ' + field.getAttribute('max') + '.');\r\n }\r\n // If a number field is below the min\r\n if (validity.rangeUnderflow) {\r\n return (field.getAttribute('data-range-underflow') ||\r\n 'Please select a value that is no less than ' + field.getAttribute('min') + '.');\r\n }\r\n // If pattern doesn't match\r\n if (validity.patternMismatch) {\r\n // If pattern info is included, return custom error\r\n if (field.hasAttribute('title'))\r\n return field.getAttribute('title');\r\n // Otherwise, generic error\r\n return field.getAttribute('data-pattern-mismatch') || 'Please match the requested format.';\r\n }\r\n // If all else fails, return a generic catchall error\r\n return 'The value you entered for this field is invalid.';\r\n}\r\n","export enum RecipientType {\r\n PestControl = 1,\r\n Housekeeping = 2,\r\n PreventativeMaintenance = 3,\r\n MaintenanceRequest = 4\r\n}\r\n","export enum NoteType {\r\n General = 0,\r\n WorkOrderRequested = 1,\r\n WorkOrderCompleted = 2\r\n}\r\n","export enum PhoneType {\r\n Home = 1,\r\n Work = 2,\r\n Mobile = 3\r\n}\r\n","export enum Housekeeping {\r\n NotChecked = 0,\r\n Unsatisfactory = 1,\r\n Satisfactory = 2\r\n}\r\n","export enum ApplicationTwoFactorAuth {\r\n None = 0,\r\n Optional = 1,\r\n Required = 2\r\n}\r\n","export enum HmFeatures {\r\n ApplicationAdvancedEligibilityRules,\r\n ApplicationAdvancedOpeningTypes,\r\n ApplicationAutoRenewDrop,\r\n ApplicationCustomQuestionsAndPreferences,\r\n ApplicationEdit,\r\n Applications,\r\n ApplicationTwoFactorAuth,\r\n AssignApplicationToUser,\r\n CustomerApplications,\r\n CustomerResidents,\r\n CustomerUnits,\r\n CustomerWordOrders,\r\n DevEnvironment,\r\n InstanceBillingContact,\r\n Ivr,\r\n Legacy,\r\n LindseySoftwareOnly,\r\n MaintenanceRequests,\r\n MisconfiguredMaintenanceReqeusts,\r\n MisconfiguredOnlineRent,\r\n OnlineCustomersOnly,\r\n OnlineRentCollection,\r\n ReadOnly,\r\n ResidentPortal,\r\n Residents,\r\n RoleManager,\r\n SomeOnlineInstances,\r\n Trial,\r\n Units,\r\n WaitingListManagement,\r\n WordOrders,\r\n}\r\n","export enum Roles {\r\n CompanyAdmin = 'CompanyAdmin',\r\n CompanyUser = 'CompanyUser',\r\n CompanyUserReadonly = 'CompanyUserReadonly',\r\n SuperAdmin = 'SuperAdmin',\r\n LindseyEmployee = 'LindseyEmployee',\r\n AdminSales = 'AdminSales',\r\n AdminSupport = 'AdminSupport',\r\n Administrator = 'Administrator',\r\n Accounting = 'Accounting',\r\n IssueCredits = 'IssueCredits',\r\n CreatePayment = 'CreatePayment',\r\n ActivateGracePeriod = 'ActivateGracePeriod',\r\n Security = 'Security',\r\n ReportViewer = 'ReportViewer',\r\n Packages = 'Packages',\r\n Developer = 'Developer'\r\n}\r\n","export { RecipientType } from './RecipientType';\r\nexport { NoteType } from './NoteType';\r\nexport { PhoneType } from './PhoneType';\r\nexport { Housekeeping } from './Housekeeping';\r\nexport { ApplicationTwoFactorAuth } from './ApplicationTwoFactorAuth';\r\nexport { HmFeatures } from './HmFeatures';\r\nexport { Roles } from './Roles';\r\n\r\n\r\nexport function getEnumOptions(enumLike: T, valueKey = 'key') {\r\n return Object.keys(enumLike).filter(k => typeof enumLike[k] === 'number').map(k => ({[valueKey]: enumLike[k], label: k}));\r\n}\r\n","import React, { FunctionComponent, forwardRef } from 'react';\r\nimport { InputGroup } from 'react-bootstrap';\r\nimport { default as Datepicker } from 'react-datepicker';\r\nimport { IconCalendar } from '../icons';\r\nimport { ui } from '../../lib.core';\r\nimport { FormField } from '.';\r\nimport { FormFieldProps } from './FormField';\r\nimport { IconDateTime, IconClock } from '../icons/fontawesome';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\nimport { DateFormats, getLocalDate, getZonedDate, applyJSONFormat } from 'lib.core/formatters';\r\nimport { hasError, FieldStateInitializer } from 'hooks/formUtils';\r\n\r\n// https://github.com/Hacker0x01/react-datepicker/blob/master/docs/datepicker.md\r\n// https://reactdatepicker.com/\r\n\r\ninterface DatePickerProps {\r\n [x: string]: any; // add more if you find more useful stiff\r\n autoComplete?: string;\r\n dateFormat?: string;\r\n disabledKeyboardNavigation?: boolean;\r\n dropdownMode?: 'scroll' | 'select';\r\n endDate?: Date | string | number;\r\n inputOnly?: boolean;\r\n isClearable?: boolean;\r\n\r\n /**\r\n * By default, date picker will send back a UTC date, many of our APIs, expect local dates,\r\n * specify an output format to override the default UTC date ISO string.\r\n * ... someday it would be nice for the API to expect UTC.\r\n */\r\n outputFormat ?: DateFormats;\r\n\r\n maxDate?: Date;\r\n minDate?: Date;\r\n placeholderText?: string;\r\n popperPlacement?: Placement;\r\n scrollableYearDropdown?: boolean;\r\n selected?: Date | string | number; // date like\r\n selectsEnd?: boolean;\r\n selectsStart?: boolean;\r\n shouldCloseOnSelect?: boolean;\r\n showMonthDropdown?: boolean;\r\n showTimeInput?: any;\r\n showTimeSelect?: boolean;\r\n showTimeSelectOnly?: boolean;\r\n showYearDropdown?: boolean;\r\n startDate?: Date | string | number;\r\n timeCaption?: string;\r\n timeFormat?: string;\r\n timeInputLabel?: string;\r\n timeIntervals?: number;\r\n\r\n /**\r\n * Most dates will be converted to Central Time by the API, occassionally (Application Form Start/End Date...)\r\n * we need to specify the timeZone the date being input should be in so when it sends to the server, the date will\r\n * be ready for conversion to Central Time... someday it would be nice for the API to expect UTC.\r\n */\r\n timeZoneId?: number;\r\n todayButton?: any; // probably a string,\r\n}\r\n\r\nexport type DatePickerComponentProps = FormFieldProps & DatePickerProps;\r\n\r\nexport const HmDatePicker = forwardRef(\r\n (\r\n {\r\n isInvalid,\r\n className,\r\n showTimeSelect,\r\n showTimeSelectOnly,\r\n showTimeInput,\r\n appendControl,\r\n appendIcon = false,\r\n inputOnly,\r\n placeholder: placeholderText,\r\n ...props\r\n }: any, ref) => {\r\n let icon = ;\r\n if (showTimeSelectOnly) icon = ;\r\n else if (showTimeSelect || showTimeInput) icon = ;\r\n\r\n if (inputOnly === true) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {(appendControl || appendIcon) && (\r\n \r\n {icon}\r\n \r\n )}\r\n \r\n {!(appendControl || appendIcon) && (\r\n \r\n {icon}\r\n \r\n )}\r\n {appendControl}\r\n \r\n );\r\n }\r\n);\r\n\r\nconst defaults: DatePickerProps = {\r\n shouldCloseOnSelect: true,\r\n showYearDropdown: true\r\n};\r\n\r\nexport const timeDefaults: DatePickerProps = {\r\n showTimeSelect: true,\r\n showTimeSelectOnly: true,\r\n timeIntervals: 5,\r\n dateFormat: 'h:mm aa'\r\n};\r\n\r\nexport const dateTimeDefaults: DatePickerProps = {\r\n showTimeSelect: true,\r\n dateFormat: 'MM/dd/yyyy h:mm aa',\r\n timeFormat: 'h:mm aa',\r\n timeIntervals: 15\r\n};\r\n\r\nexport const dateTimeInputDefaults: DatePickerProps = {\r\n showTimeInput: true,\r\n dateFormat: 'MM/dd/yyyy h:mm:ss aa',\r\n timeFormat: 'hh:mm:ss aa',\r\n timeInputLabel: 'Time:'\r\n};\r\n\r\nexport function initializeDatePicker({outputFormat, ...options}: DatePickerProps = {}): FieldStateInitializer {\r\n const fieldOptions = {\r\n ...defaults,\r\n ...options\r\n };\r\n\r\n return ({ value, setter, setError, values, meta, props: {validator, timeZoneId, ...props} }) => {\r\n const {timeZoneId: formTimeZoneId, format } = meta.time;\r\n timeZoneId = timeZoneId === false ? timeZoneId : (timeZoneId || formTimeZoneId);\r\n if (outputFormat === undefined && !!format) {\r\n outputFormat = format;\r\n }\r\n return ({\r\n ...fieldOptions,\r\n ...props,\r\n selected: value ? getZonedDate(value, timeZoneId) : undefined,\r\n onChange: dateValue => {\r\n if (validator) {\r\n const errors = validator(dateValue, values);\r\n setError(errors);\r\n if (errors !== false) return;\r\n }\r\n if (value && dateValue && value.hasOwnProperty('toJSON') ) {\r\n dateValue.toJSON = value.toJSON;\r\n }\r\n if (timeZoneId) {\r\n dateValue = getLocalDate(dateValue, timeZoneId);\r\n }\r\n return setter(applyJSONFormat(dateValue, outputFormat));\r\n },\r\n onBlur: e => {\r\n if (!meta.validateOnBlur) return;\r\n\r\n if (e.target.willValidate) {\r\n e.target.checkValidity();\r\n setError(hasError(e.target));\r\n }\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport const DatePicker: FunctionComponent = ({\r\n autoComplete = 'off',\r\n selected = new Date(),\r\n ...props\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const DateTimePicker: FunctionComponent = ({\r\n name,\r\n label,\r\n timeName = name,\r\n timeLabel = label,\r\n labelSrOnly = false,\r\n timeIntervals = 5,\r\n placeholder,\r\n ...props\r\n}: any) => {\r\n return (\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n );\r\n};\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\n\r\n\r\nconst pollyfills = [];\r\n\r\ntry {\r\n\tconst d = new Date();\r\n\tnew Intl.DateTimeFormat('en', {\r\n\t\ttimeZone: 'America/Los_Angeles',\r\n\t\ttimeZoneName: 'long'\r\n\t}).format();\r\n\r\n\r\n} catch (error) {\r\n\tpollyfills.push(import(/* webpackChunkName: \"timezones\" */ 'date-time-format-timezone'))\r\n}\r\n\r\nexport default pollyfills;","import React from 'react';\r\nimport { Layout, Heading, Text } from 'components';\r\n\r\nexport const NotFound = () => {\r\n return (\r\n \r\n Not Found!\r\n The page you were looking for does not exist or has been moved.\r\n \r\n );\r\n};\r\n\r\nexport const ServerFault = ({children}) => {\r\n return (\r\n \r\n {children || Something went wrong!}\r\n \r\n );\r\n};\r\n","import React, { Fragment } from 'react';\r\nimport { useUserState } from 'hooks/useUserState';\r\nimport { Redirect, generatePath } from 'react-router';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { Layout, Heading, HmGuard } from 'components';\r\nimport { HmAccess } from 'lib.security';\r\nimport { Container, CardDeck, Card } from 'react-bootstrap';\r\nimport { InstancePicker } from 'components/clients/InstancePicker';\r\nimport { useCurrentWildcard } from 'hooks/useInstanceState';\r\nimport { Link } from 'react-router-dom';\r\nimport { IconApplications, IconResidents, IconWorkOrders, IconSettings } from 'components/icons';\r\nimport { ResidentsLabel } from 'components/clients/ResidentsLabel';\r\n\r\n\r\nexport const Home = () => {\r\n const [user] = useUserState();\r\n\r\n if (user && user.userId && !user.hasAcceptedTerms) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Welcome to My.HousingManager.com\r\n \r\n \r\n\r\n\r\n\r\n \r\n {todo.map((t,idx) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst WelcomeCard = ({ guard, title, description, links }) => {\r\n return (\r\n \r\n \r\n {title}\r\n \r\n {description}\r\n \r\n \r\n \r\n {links.map((link, idx) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nconst WelcomeLink = ({ title, to = 'test', guard = true }) => {\r\n const wildcard = useCurrentWildcard();\r\n return (\r\n \r\n
  • \r\n {title}\r\n
  • \r\n
    \r\n );\r\n};\r\n\r\nconst todo = [\r\n {\r\n title: (\r\n <>\r\n Applications\r\n \r\n ),\r\n description: 'Manage applications, setup properties and waiting lists.',\r\n guard: HmAccess.applicationsAnyInstance,\r\n links: [\r\n {\r\n title: 'Properties',\r\n to: HmUrl.properties\r\n },\r\n {\r\n title: 'Applicants',\r\n to: HmUrl.applicants\r\n }\r\n ]\r\n },\r\n {\r\n title: (\r\n <>\r\n \r\n \r\n ),\r\n description: ,\r\n guard: HmAccess.residents,\r\n links: [\r\n {\r\n title: ,\r\n to: HmUrl.residents(':wildcard')\r\n },\r\n {\r\n title: 'Units',\r\n to: HmUrl.units(':wildcard')\r\n },\r\n {\r\n title: 'Payments',\r\n to: HmUrl.resident(':wildcard', 'payments')\r\n },\r\n {\r\n title: 'Batches',\r\n to: HmUrl.resident(':wildcard', 'batchesreport'),\r\n guard: 'companyUserAdmin'\r\n },\r\n {\r\n title: 'Message Board',\r\n to: HmUrl.resident(':wildcard', 'messageboard'),\r\n guard: 'companyUserAdmin'\r\n },\r\n {\r\n title: 'Email and Text',\r\n to: HmUrl.resident(':wildcard', 'emailandtext'),\r\n guard: 'companyUserAdmin'\r\n }\r\n ]\r\n },\r\n {\r\n title: (\r\n <>\r\n Work Orders\r\n \r\n ),\r\n description: 'Manage online work orders and maintenance requests',\r\n guard: HmAccess.workOrders,\r\n links: [\r\n {\r\n title: 'Work Orders',\r\n to: HmUrl.workOrders(':wildcard')\r\n },\r\n {\r\n title: 'Units',\r\n to: HmUrl.units(':wildcard')\r\n },\r\n {\r\n title: 'Categories',\r\n to: HmUrl.workTypes(':wildcard')\r\n },\r\n {\r\n title: 'Work Codes',\r\n to: HmUrl.workCodes(':wildcard')\r\n },\r\n {\r\n title: 'Workers',\r\n to: HmUrl.workers(':wildcard')\r\n },\r\n {\r\n title: 'Vendors',\r\n to: HmUrl.vendors(':wildcard')\r\n },\r\n {\r\n title: 'Inventory',\r\n to: HmUrl.inventory(':wildcard')\r\n }\r\n ]\r\n },\r\n {\r\n title: (\r\n <>\r\n Settings\r\n \r\n ),\r\n description:\r\n 'Manage users, company settings, billing, application settings, resident settings.',\r\n guard: HmAccess.companyUserAdmin,\r\n links: [\r\n {\r\n title: 'Company Settings',\r\n to: HmUrl.instanceSettings(':wildcard')\r\n },\r\n {\r\n title: 'Billing',\r\n to: HmUrl.billingSettings(':wildcard')\r\n },\r\n {\r\n title: 'Companies',\r\n to: HmUrl.instanceSettings(':wildcard', 'companies')\r\n },\r\n {\r\n title: 'Divisions Configuration',\r\n to: HmUrl.instanceSettings(':wildcard', 'divisions')\r\n },\r\n {\r\n title: 'Applications',\r\n guard: 'applications',\r\n to: HmUrl.instanceSettings(':wildcard', 'applications')\r\n },\r\n {\r\n title: ,\r\n guard: 'residents',\r\n to: HmUrl.instanceSettings(':wildcard', 'residents')\r\n },\r\n {\r\n title: 'Users',\r\n to: HmUrl.users\r\n },\r\n {\r\n title: 'Integrations',\r\n guard: 'residents',\r\n to: HmUrl.instanceSettings(':wildcard', 'integrations')\r\n }\r\n ]\r\n }\r\n];\r\n","import http, { withMock, setAccessToken, HmRequestOptions } from '../http';\r\nimport { getHttpConfig } from '..';\r\nimport { HmUser } from '../../HmContext';\r\n\r\nconst tokenHttp = http.url(getHttpConfig('endpoint').replace('api/v1', 'oauth/token'), true);\r\n\r\nexport const getToken = (\r\n details,\r\n type = 'password',\r\n options: HmRequestOptions = {}\r\n): Promise =>\r\n withMock(tokenHttp, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './token.mock')\r\n )\r\n .formUrl({\r\n grant_type: type,\r\n ...details\r\n })\r\n .post()\r\n .then(res => {\r\n setAccessToken(res.access_token, res.expires_in);\r\n return Object.keys(res).reduce(\r\n (result, k) => {\r\n if (res[k] === 'True' || res[k] === 'False') {\r\n result[k] = res[k] === 'True';\r\n } else if (k === 'userId' || k === 'clientId') result[k] = +res[k];\r\n else if (k === 'userName') result.username = res[k];\r\n else result[k] = res[k];\r\n return result;\r\n },\r\n {} as any\r\n );\r\n });\r\n\r\nexport default getToken;\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\n\r\nconst http = authHttp.url('/auth/logout');\r\nexport const logoutMyUser = (\r\n options: HmRequestOptions = {}\r\n) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n ).post();\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport getToken from 'api/oauth/token';\r\nimport { addPageError, HmAlert } from 'components/HmAlert';\r\nimport Layout from 'components/layouts';\r\nimport { useUserState } from 'hooks/useUserState';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { HmForm, FormField, HmSubmit, HmRecaptcha, Checkbox, HmButton } from 'components/forms';\r\nimport { Heading, Text } from 'components';\r\nimport { logoutMyUser } from 'api/v1/auth/logout';\r\nimport { FormApi } from 'hooks/useFormState';\r\nimport { useQueryString } from 'hooks/useQueryString';\r\nimport { useLocation } from 'react-router';\r\nimport { HmPageLoading } from 'components/HmLoading';\r\n\r\nexport const Login = () => {\r\n const [user, setUser] = useUserState();\r\n const { returnUrl } = useQueryString({ returnUrl: undefined });\r\n const { state: {guarded = false} = {} }:any = useLocation();\r\n const loginSuccessfull = useRef(false);\r\n\r\n const loginSubmit = async ({values, state: {submitCount}, setValue}:FormApi) => {\r\n try {\r\n const result: any = await getToken(values);\r\n loginSuccessfull.current = true;\r\n result.returnUrl = returnUrl;\r\n setUser(result, true);\r\n } catch (e) {\r\n loginSuccessfull.current = false;\r\n setValue('password', '');\r\n addPageError((e && e.error_description) || 'Unable to login!', {\r\n showFor: 3000\r\n });\r\n if (e.error === 'invalid_captcha' || submitCount >= 2) {\r\n\r\n if (!user.requireRecaptcha) {\r\n user.username = values.username;\r\n user.requireRecaptcha = true;\r\n setUser(user, false);\r\n }\r\n }\r\n }\r\n };\r\n\r\n if (loginSuccessfull.current === true || (user.isLoggedIn && user.action !== 'unauthorized' && guarded !== true)) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n Log in to My.HousingManager.com\r\n You are not authorized to view this content.\r\n\r\n \r\n\r\n \r\n \r\n\r\n {user.requireRecaptcha && }\r\n\r\n Log In}>\r\n \r\n
    \r\n Forgot your password?\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport const Logout = () => {\r\n const [user, setUser] = useUserState();\r\n useEffect(() => {\r\n logoutMyUser().then(() => setUser(user, false, 'logout'));\r\n });\r\n\r\n if (user.isLoggedIn) return \r\n\r\n return \r\n}","import React, { FunctionComponent, useEffect } from \"react\";\r\nimport { useClientContext } from \"hooks/useClientContext\";\r\nimport { useUserState } from \"hooks/useUserState\";\r\nimport { Roles } from \"lib.app/enums\";\r\nimport { Redirect } from \"react-router\";\r\nimport { HmPageLoading } from \"components/HmLoading\";\r\nimport { Layout, Heading } from \"components\";\r\nimport { ClientPicker } from \"components/clients\";\r\nimport { HmUrl } from \"lib.app/routes\";\r\n\r\nexport const ChooseAccount: FunctionComponent = ({history}) => {\r\n const {client, changeClient} = useClientContext();\r\n const [user] = useUserState();\r\n const userIsLindseyEmployee = user.roles && user.roles.includes(Roles.LindseyEmployee);\r\n const canChooseClient = user.clientId === 814 || userIsLindseyEmployee;\r\n\r\n useEffect(() => {\r\n if (!canChooseClient) {\r\n changeClient(user.clientId);\r\n }\r\n }, [user.clientId, canChooseClient]);\r\n\r\n const step = nextStep(user);\r\n if (step !== null && client.clientId) {\r\n return \r\n }\r\n\r\n if (!canChooseClient) return \r\n\r\n return (\r\n \r\n Choose an Account\r\n \r\n \r\n );\r\n};\r\n\r\nfunction nextStep(user) {\r\n if (user.action === 'terms') {\r\n return HmUrl.acceptTerms;\r\n }\r\n\r\n if (user.action === 'verify') {\r\n return HmUrl.verifyDevice\r\n }\r\n\r\n if (user.action === 'expired') {\r\n return HmUrl.expiredPassword\r\n }\r\n\r\n if (user.action === 'login' || user.action === 'init') {\r\n return user.returnUrl && user.returnUrl !== '/login' ? user.returnUrl : HmUrl.home;\r\n }\r\n return null;\r\n}\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\n\r\nconst http = authHttp.url('/auth/verify');\r\n\r\nexport interface VerifyDeviceRequest {\r\n clientId: number;\r\n userId: number;\r\n code: number;\r\n}\r\n\r\nexport const verifyDevice = (\r\n request: VerifyDeviceRequest,\r\n options: HmRequestOptions = {}\r\n) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n )\r\n .post(request);\r\n","import React, { FunctionComponent } from 'react';\r\nimport { Heading, Text } from 'components/typography';\r\nimport Layout from 'components/layouts';\r\nimport { HmAlert } from 'components';\r\nimport { useUserState } from 'hooks/useUserState';\r\nimport { HmForm, FormField, HmSubmit } from 'components/forms';\r\nimport { HmPopover } from 'components/forms/InfoLabel';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { verifyDevice } from 'api/v1/auth/verify';\r\n\r\nexport const VerifyDevice : FunctionComponent = (props) => {\r\n const [{userId, clientId, ipAddress, email, action}, dispatch] = useUserState();\r\n\r\n if (action !== 'verify') {\r\n return \r\n }\r\n\r\n return (\r\n \r\n\r\n \r\n\r\n A verification code has been sent to {email}\r\n \r\n Check your email and enter the code below to activate this device and finish logging in.{' '}\r\n \r\n \r\n Can't find your code?\r\n Check your email inbox and spam folder for an email from no-reply@HousingManager.com.\r\n \r\n \r\n Need a new code?\r\n Try to log in again and we'll send you a new code.\r\n \r\n \r\n )}>\r\n Can't find your code?\r\n \r\n \r\n\r\n
    \r\n\r\n {\r\n const verifiedUser = await verifyDevice(values);\r\n dispatch({...verifiedUser, hasVerifiedDevice: true}, true, 'init');\r\n }}>\r\n \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n \r\n Your current IP address: {ipAddress}\r\n Want to skip this step in the future? Ask your administrator to add your IP address to their list of trusted devices.\r\n \r\n\r\n
    \r\n );\r\n};\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\n\r\nexport interface ForgotPasswordReqeust {\r\n username: string;\r\n}\r\n\r\nconst http = authHttp.url('/auth/forgot');\r\nexport const forgotPassword = (\r\n request: ForgotPasswordReqeust,\r\n options: HmRequestOptions = {}\r\n) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './forgot.mock.json')\r\n )\r\n .post(request);\r\n","import { useAsync } from 'react-async';\r\n\r\nfunction deferred(promise) {\r\n return (args) => promise(args[0]);\r\n}\r\n\r\nexport const useDeferedAsync = promise => useAsync({ deferFn: deferred(promise), onReject: (e) => { throw e; } });\r\n","import React, { useState } from 'react';\r\nimport { Layout } from '../components/layouts/Layout';\r\nimport { HmForm, FormField } from '../components/forms';\r\nimport { Link } from 'react-router-dom';\r\nimport { forgotPassword } from '../api/v1/auth/forgot';\r\nimport { addPageError } from '../components/HmAlert';\r\nimport { HmSubmit } from '../components/forms/HmSubmit';\r\nimport { useDeferedAsync } from '../hooks/useDeferedAsync';\r\nimport { FormSubmit } from '../hooks/useFormState';\r\nimport { Heading } from '../components/typography';\r\n\r\n// don't use this as a template, just playing around with thnings\r\nexport const ForgotPassword = props => {\r\n const { isLoading, run } = useDeferedAsync(forgotPassword);\r\n const [ sentReset, setSentReset ] = useState(false) as any;\r\n\r\n const handleSubmit: FormSubmit = async ({values, ...actions}) => {\r\n try {\r\n const request = await run(values);\r\n setSentReset(request);\r\n } catch (e) {\r\n addPageError(e.username);\r\n actions.setError(e, true);\r\n }\r\n };\r\n\r\n if (sentReset) {\r\n return (\r\n \r\n Check Your E-Mail\r\n

    \r\n We've sent an email to {sentReset.email} containing a temporary\r\n link that will allow you to reset your password. Please check your\r\n spam folder if you don't receive the email within a few minutes.\r\n

    \r\n

    \r\n The link is valid for the next {sentReset.expiration} hours.\r\n

    \r\n

    \r\n You may safely close this browser window or return to Log In\r\n

    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n \r\n Forgot your password?\r\n

    \r\n No problem. Just give us your username and we'll send a link to reset\r\n your password.\r\n

    \r\n \r\n \r\n \r\n Log In\r\n \r\n \r\n
    \r\n );\r\n};\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\n\r\nexport interface ChangePasswordRequest {\r\n token: string;\r\n password: string;\r\n passwordConfirm: string;\r\n}\r\n\r\nconst http = authHttp.url('/auth/expired');\r\nexport const expiredPassword = (\r\n request: ChangePasswordRequest,\r\n options: HmRequestOptions = {}\r\n) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n ).post(request);\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\nimport { ChangePasswordRequest } from './expired';\r\nimport { handleNullResponse } from '../../utils';\r\n\r\nconst http = authHttp.url('/auth/reset');\r\nexport const resetPassword = (\r\n request: ChangePasswordRequest,\r\n options: HmRequestOptions = {}\r\n) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n ).post(request)\r\n .catch(handleNullResponse);\r\n","import React, { useState } from 'react';\r\nimport { PasswordStrengthAddOn, PasswordSecurityTips } from 'components/forms/PasswordStrengthAddOn';\r\nimport { useDeferedAsync } from 'hooks/useDeferedAsync';\r\nimport { useUserState } from 'hooks/useUserState';\r\nimport { FormSubmit } from 'hooks/useFormState';\r\nimport { addPageError } from 'components/HmAlert';\r\nimport { Redirect } from 'react-router';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport { Popover, OverlayTrigger } from 'react-bootstrap';\r\nimport { HmForm, FormField, HmSubmit } from 'components/forms';\r\nimport { IconQuestion } from 'components/icons';\r\nimport { Layout, Heading } from 'components';\r\nimport { HmAccess } from 'lib.security';\r\nimport { expiredPassword } from 'api/v1/auth/expired';\r\nimport { resetPassword } from 'api/v1/auth/reset';\r\n\r\nconst validateConfirmPassword = (values) => {\r\n return values.password !== values.passwordConfirm\r\n ? { passwordConfirm: 'Passwords do not match' }\r\n : (values.token === values.password ? {password: 'Password already used! Please enter a new password.' } : true);\r\n};\r\n\r\nexport const ChangePassword = ({promiseFn, username, labelTxt, type= 'password', buttonTxt, token = '', labelSrOnly= false, login = false}) => {\r\n const { isLoading, run } = useDeferedAsync(promiseFn);\r\n const [ success, setSuccess ] = useState(false);\r\n const [user, dispatch] = useUserState();\r\n\r\n const handleSubmit: FormSubmit = async ({values, setError}) => {\r\n try {\r\n const result = await run(values) as any;\r\n if (result.username) {\r\n dispatch({...result, hasExpiredPassword: false, action: null});\r\n }\r\n else {\r\n setSuccess(true);\r\n }\r\n } catch (e) {\r\n if (e.token && e.token.length === 1 && e.token.join('').indexOf('link') >= 0) {\r\n addPageError(e.token, { heading: 'Link Expired'});\r\n } else if (e.token || e.password || e.passwordConfirm) {\r\n const flatErrs = Object.keys(e).reduce((err: any[], key) => err.concat(e[key]), []);\r\n addPageError(flatErrs);\r\n setError(e);\r\n } else {\r\n addPageError('Something went wrong!');\r\n }\r\n }\r\n };\r\n\r\n if (success || (user.isLoggedIn && user.action !== 'expired')) {\r\n return ;\r\n }\r\n const autoFocusToken = !token && type !== 'hidden';\r\n\r\n const popover = (\r\n \r\n Use at least 8 characters. Don't use a password from another site, or something too obvious like your pet's name.\r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const ExpiredPassword = (props) => {\r\n const [user, ] = useUserState();\r\n\r\n if (user.action !== 'expired') {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n Password Expired\r\n \r\n \r\n );\r\n};\r\n\r\nexport const ResetPassword = ({ match, ...props }) => {\r\n return (\r\n \r\n Reset Your Password\r\n \r\n \r\n );\r\n};\r\n\r\nexport const NewPassword = ({ match, ...props }) => {\r\n return (\r\n \r\n Set Your Password\r\n \r\n \r\n );\r\n};\r\n","import http, { HmApiRequest, withMock } from 'api';\r\n\r\ntype SearchResidentPortalRequest = {\r\n firstName: string;\r\n lastName: string;\r\n amount: number;\r\n accountNumber?: string;\r\n}\r\n\r\nexport type PortalInfo = {\r\n clientId: number;\r\n instanceId: number;\r\n wildcard: string;\r\n companyName: string;\r\n residentId: number;\r\n email: string;\r\n phone: string;\r\n username: string;\r\n hasLogin: boolean;\r\n firstName: string;\r\n lastName: string;\r\n portalAvailable: boolean;\r\n portalTitle: string\r\n}\r\n\r\nconst registrationHttp = http.url('/registration');\r\n\r\nexport const lookupResidentPortal: HmApiRequest = (request, options = {}) =>\r\n withMock(registrationHttp, options, () => import(/* webpackChunkName: \"mockApi\" */ './residentPortal.mock'))\r\n .url('/residentPortal')\r\n .post(request);","import React, { FunctionComponent, useState, useEffect } from 'react';\r\nimport {\r\n Heading,\r\n Layout,\r\n HmDetail,\r\n Text,\r\n Button,\r\n Row,\r\n Col,\r\n SwitchView,\r\n ButtonToolbar,\r\n HmAlert\r\n} from 'components';\r\nimport { HmDetailForm, FormField, HmButton, InfoLabel } from 'components/forms';\r\nimport { lookupResidentPortal, PortalInfo } from 'api/v1/registration/residentPortal';\r\nimport { Nav } from 'react-bootstrap';\r\nimport config from 'config';\r\nimport { useFormState } from 'hooks/useFormState';\r\nimport qs from 'qs';\r\n\r\nconst getResidentPortal = async ({ values: request, context, actions }) => {\r\n const result = await lookupResidentPortal(request);\r\n\r\n context.refresh = false;\r\n context.keepData = false;\r\n\r\n if (result.length === 0) actions.setView('notfound', {request});\r\n else actions.setView('found', {portals: result, request});\r\n\r\n return false;\r\n};\r\n\r\nexport const ResidentPortal = () => {\r\n return (\r\n \r\n Welcome to HousingManager.com\r\n \r\n \r\n \r\n To get started, we need some information about you.\r\n \r\n \r\n Enter first and last name as given to the facility management.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Payment Amount}\r\n fieldType=\"currency\"\r\n placeholder=\"ex 500.00\"\r\n required\r\n />\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Next\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\nconst Found: FunctionComponent<{portals?: PortalInfo[], request?: any, actions?: any}> = ({portals = [], actions, request: {firstName, lastName, accountNumber, ...request}}) => {\r\n return (\r\n \r\n 1}>\r\n \r\n We found multiple matches. Choose from the options below:\r\n \r\n \r\n \r\n \r\n We found your account, but Resident Portal is not available at this time. Please contact your facility management.\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\nconst NotFound: FunctionComponent = ({actions, request: {firstName, lastName, amount, ...request}}) =>{\r\n\r\n return (\r\n \r\n We could not locate you. Check the spelling of your first and last name and ensure the payment amount entered is correct.{' '}\r\n {!!request.last4Ssn && Try searching without the last 4 digits of your SSN.}\r\n {!!request.accountNumber && Verify the account number you provided is up to date or try searching without it.}\r\n\r\n \r\n \r\n )\r\n}\r\n\r\nconst Identifier: FunctionComponent = () => {\r\n const {api} = useFormState();\r\n const [view, setView] = useState('ssn');\r\n\r\n useEffect(() => () => api.clearValue(view), [view]);\r\n\r\n const views = {\r\n accountNumber: {\r\n next: 'ssn',\r\n title: 'I know my Account #'\r\n },\r\n ssn: {\r\n next: undefined,\r\n title: 'Try the last 4 digits of my SSN'\r\n },\r\n alienId: {\r\n next: 'unknown',\r\n title: 'I gave facilty management another ID'\r\n },\r\n unknown: {\r\n next: 'accountNumber',\r\n title: \"I don't know...\"\r\n }\r\n };\r\n const showing = views[view];\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n Don't know your Account Number? No problem, we'll use the information provided to try and find you.\r\n \r\n \r\n {showing.next !== undefined && }\r\n \r\n );\r\n};\r\n","import { authHttp, withMock, HmRequestOptions } from '../../http';\r\n\r\nconst http = authHttp.url('/auth/terms');\r\n\r\nexport const acceptTerms = (userId: number, options: HmRequestOptions = {}) =>\r\n withMock(http, options, () =>\r\n import(/* webpackChunkName: \"mockApi\" */ './my.mock.json')\r\n )\r\n .query({userId})\r\n .post();\r\n","import React, { useRef } from 'react';\r\nimport { Layout } from '../components/layouts/Layout';\r\nimport { Heading } from '../components/typography';\r\nimport { useUserState } from 'hooks/useUserState';\r\nimport { Redirect } from 'react-router';\r\nimport { HmUrl } from 'lib.app/routes';\r\nimport config from 'config';\r\nimport { Container, Button, Row, Col } from 'react-bootstrap';\r\nimport { acceptTerms } from 'api/v1/auth/terms';\r\nimport { IconPrint } from 'components/icons';\r\n\r\nexport const Terms = (props) => {\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Terms of Service\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n