{"version":3,"file":"js/app.2f34d955.js","mappings":"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","sources":["webpack://acquaint-web-app/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://acquaint-web-app/./src/alerts/baseAlert.ts","webpack://acquaint-web-app/./src/alerts/cancelConfirmationAlert.ts","webpack://acquaint-web-app/./src/alerts/infoToastAlert.ts","webpack://acquaint-web-app/./src/alerts/questionAlert.ts","webpack://acquaint-web-app/./src/alerts/standardInfoAlert.ts","webpack://acquaint-web-app/./src/alerts/toastBaseAlert.ts","webpack://acquaint-web-app/./src/enums/ListFilterKeys.ts","webpack://acquaint-web-app/./src/enums/SelectOptionResponses.ts","webpack://acquaint-web-app/./src/enums/ai/AIPromptsToGenerate.ts","webpack://acquaint-web-app/./src/enums/certificates/CertificateStatus.ts","webpack://acquaint-web-app/./src/enums/certificates/CertificateType.ts","webpack://acquaint-web-app/./src/enums/contacts/ContactFindTypeRestriction.ts","webpack://acquaint-web-app/./src/enums/contacts/SystemContactTypes.ts","webpack://acquaint-web-app/./src/enums/emails/EmailTemplateTypes.ts","webpack://acquaint-web-app/./src/enums/emails/MarketingEmailItemType.ts","webpack://acquaint-web-app/./src/enums/emails/SelectedEmailAction.ts","webpack://acquaint-web-app/./src/enums/properties/PropertyCategories.ts","webpack://acquaint-web-app/./src/enums/properties/PropertyUsages.ts","webpack://acquaint-web-app/./src/enums/system/AppMode.ts","webpack://acquaint-web-app/./src/enums/system/AutoLoginAction.ts","webpack://acquaint-web-app/./src/enums/system/CountryCodes.ts","webpack://acquaint-web-app/./src/enums/system/Environment.ts","webpack://acquaint-web-app/./src/enums/system/FieldSize.ts","webpack://acquaint-web-app/./src/enums/ui/inputs/TextboxValueChangeEvent.ts","webpack://acquaint-web-app/./src/enums/utility-switching/EnergyTypes.ts","webpack://acquaint-web-app/./src/enums/utility-switching/GasMeterTypes.ts","webpack://acquaint-web-app/./src/enums/utility-switching/PurchaserSwitchStep.ts","webpack://acquaint-web-app/./src/enums/utility-switching/SupportCaseDocumentType.ts","webpack://acquaint-web-app/./src/enums/utility-switching/SwitchBillTo.ts","webpack://acquaint-web-app/./src/enums/utility-switching/SwitchPage.ts","webpack://acquaint-web-app/./src/App.vue","webpack://acquaint-web-app/./src/App.vue?7ccd","webpack://acquaint-web-app/./src/app-info.ts","webpack://acquaint-web-app/./src/services/AcquaintApiClient.ts","webpack://acquaint-web-app/./src/enums/system/http/HttpMethod.ts","webpack://acquaint-web-app/./src/services/AcquaintApiNextClient.ts","webpack://acquaint-web-app/./src/services/HelpNavigator.ts","webpack://acquaint-web-app/./src/devextreme-license.ts","webpack://acquaint-web-app/./src/main.ts","webpack://acquaint-web-app/./src/router/RouteNames.ts","webpack://acquaint-web-app/./src/components/layout/user-panel.vue?52e7","webpack://acquaint-web-app/./src/components/layout/user-panel.vue","webpack://acquaint-web-app/./src/components/user/change-password.vue?0761","webpack://acquaint-web-app/./src/components/user/change-password.vue","webpack://acquaint-web-app/./src/assets/acquaint-logo.vue","webpack://acquaint-web-app/./src/assets/acquaint-logo.vue?4778","webpack://acquaint-web-app/./src/components/system/system-info-modal.vue?fd49","webpack://acquaint-web-app/./src/components/system/system-info-modal.vue","webpack://acquaint-web-app/./src/components/ui/popovers/popover-base.vue?e8a1","webpack://acquaint-web-app/./src/components/ui/popovers/popover-base.vue","webpack://acquaint-web-app/./src/components/recent-records/recent-records-popover.vue?69e8","webpack://acquaint-web-app/./src/components/recent-records/recent-records-popover.vue","webpack://acquaint-web-app/./src/components/layout/header-toolbar.vue?e454","webpack://acquaint-web-app/./src/components/layout/header-toolbar.vue","webpack://acquaint-web-app/./src/components/find/contacts/find-contact.vue?463a","webpack://acquaint-web-app/./src/components/find/contacts/find-contact.vue","webpack://acquaint-web-app/./src/components/find/properties/find-property.vue?c7cb","webpack://acquaint-web-app/./src/components/find/properties/find-property.vue","webpack://acquaint-web-app/./src/components/match-marketing-modal.vue?11e7","webpack://acquaint-web-app/./src/components/match-marketing-modal.vue","webpack://acquaint-web-app/./src/components/layout/acquaint-nav-menu.vue?4353","webpack://acquaint-web-app/./src/components/layout/acquaint-nav-menu.vue","webpack://acquaint-web-app/./src/components/layout/utility-switching-agent-nav-menu.vue?a0c0","webpack://acquaint-web-app/./src/components/layout/utility-switching-agent-nav-menu.vue","webpack://acquaint-web-app/./src/components/layout/utility-switching-council-nav-menu.vue?b444","webpack://acquaint-web-app/./src/components/layout/utility-switching-council-nav-menu.vue","webpack://acquaint-web-app/./src/layouts/side-nav-outer-toolbar.vue?c09f","webpack://acquaint-web-app/./src/layouts/side-nav-outer-toolbar.vue","webpack://acquaint-web-app/./src/layouts/single-card.vue?6419","webpack://acquaint-web-app/./src/layouts/single-card.vue","webpack://acquaint-web-app/./src/layouts/error-layout.vue?8829","webpack://acquaint-web-app/./src/layouts/error-layout.vue","webpack://acquaint-web-app/./src/router/index.ts","webpack://acquaint-web-app/./src/services/AuthenticationCookieManager.ts","webpack://acquaint-web-app/./src/services/DeletedRecordError.ts","webpack://acquaint-web-app/./src/stores/ContactTypeConfigurationStore.ts","webpack://acquaint-web-app/./src/stores/CurrentUserStore.ts","webpack://acquaint-web-app/./src/stores/LoginStore.ts","webpack://acquaint-web-app/./src/stores/RecentRecordsStore.ts","webpack://acquaint-web-app/./src/stores/SystemCodesStore.ts","webpack://acquaint-web-app/./src/stores/SystemConfigurationStore.ts","webpack://acquaint-web-app/./src/stores/UserPermissionsStore.ts","webpack://acquaint-web-app/./src/stores/lists/ApplicantListStore.ts","webpack://acquaint-web-app/./src/stores/lists/ContactListFiltersStore.ts","webpack://acquaint-web-app/./src/stores/lists/PropertyListStore.ts","webpack://acquaint-web-app/./src/stores/lists/TaskListFiltersStore.ts","webpack://acquaint-web-app/./src/stores/record-navigation/ContactRecordNavigationStore.ts","webpack://acquaint-web-app/./src/stores/record-navigation/PropertyRecordNavigationStore.ts","webpack://acquaint-web-app/./src/stores/utility-switching/AgencyAccountStore.ts","webpack://acquaint-web-app/./src/stores/utility-switching/AgentsStore.ts","webpack://acquaint-web-app/./src/stores/utility-switching/SwitchStatusesStore.ts","webpack://acquaint-web-app/./src/types/ui/modals/ModalWidth.ts","webpack://acquaint-web-app/./src/utils/CurrencyFormatter.ts","webpack://acquaint-web-app/./src/utils/DisplayCompanyAlert.ts","webpack://acquaint-web-app/./src/utils/ErrorHandling.ts","webpack://acquaint-web-app/./src/utils/TimeStamp.ts","webpack://acquaint-web-app/./src/utils/address/AddressFormatter.ts","webpack://acquaint-web-app/./src/utils/cookies/JsonCookieReader.ts","webpack://acquaint-web-app/./src/utils/cookies/JsonCookieWriter.ts","webpack://acquaint-web-app/./src/utils/files/CorrespondenceFileConverter.ts","webpack://acquaint-web-app/./src/utils/media-query.ts","webpack://acquaint-web-app/./src/utils/navigation/RecordNavigator.ts","webpack://acquaint-web-app/./src/utils/properties/PropertyAddressMapper.ts","webpack://acquaint-web-app/./src/utils/system-text/FindQuestionText.ts","webpack://acquaint-web-app/./src/utils/system/EnvironmentReader.ts","webpack://acquaint-web-app/./src/utils/system/helpViewer.ts","webpack://acquaint-web-app/./src/utils/utility-switching/AddressEnergyTypeMapper.ts","webpack://acquaint-web-app/./src/utils/utility-switching/CollateSwitchSubmissionData.ts","webpack://acquaint-web-app/./src/utils/utility-switching/EnergyDetailsMapper.ts","webpack://acquaint-web-app/./src/utils/utility-switching/FindEnergyTypeText.ts","webpack://acquaint-web-app/./src/utils/utility-switching/SwitchContactMapper.ts","webpack://acquaint-web-app/./src/utils/validation/FieldValidator.ts","webpack://acquaint-web-app/./src/components/ai/ai-text-generator-modal.vue?2336","webpack://acquaint-web-app/./src/components/ai/ai-text-generator-modal.vue","webpack://acquaint-web-app/./src/enums/certificates/CertifcateTypesValidation.ts","webpack://acquaint-web-app/./src/enums/certificates/NewCertificateTab.ts","webpack://acquaint-web-app/./src/components/certificates/epc-input.vue?6285","webpack://acquaint-web-app/./src/components/certificates/epc-input.vue","webpack://acquaint-web-app/./src/components/certificates/ber-input.vue?831b","webpack://acquaint-web-app/./src/components/certificates/ber-input.vue","webpack://acquaint-web-app/./src/components/certificates/epc-input-wrapper.vue?12c6","webpack://acquaint-web-app/./src/components/certificates/epc-input-wrapper.vue","webpack://acquaint-web-app/./src/components/certificates/base-certificate-modal.vue?befc","webpack://acquaint-web-app/./src/components/certificates/base-certificate-modal.vue","webpack://acquaint-web-app/./src/components/certificates/new-certificate-modal.vue?1754","webpack://acquaint-web-app/./src/components/certificates/new-certificate-modal.vue","webpack://acquaint-web-app/./src/components/contact-configuration/new-edit-task-templates-modal.vue?1958","webpack://acquaint-web-app/./src/components/contact-configuration/new-edit-task-templates-modal.vue","webpack://acquaint-web-app/./src/components/contact-configuration/task-templates-configuration-modal.vue?dc09","webpack://acquaint-web-app/./src/components/contact-configuration/task-templates-configuration-modal.vue","webpack://acquaint-web-app/./src/components/contacts/contacts-peek-popup.vue?c468","webpack://acquaint-web-app/./src/components/contacts/contacts-peek-popup.vue","webpack://acquaint-web-app/./src/stores/MergeFieldsStore.ts","webpack://acquaint-web-app/./src/components/contacts/merge-fields-modal.vue?4b65","webpack://acquaint-web-app/./src/components/contacts/merge-fields-modal.vue","webpack://acquaint-web-app/./src/enums/contacts/ContactModalPages.ts","webpack://acquaint-web-app/./src/components/ui/lookup/new-contact-type-lookup.vue?867f","webpack://acquaint-web-app/./src/components/ui/lookup/new-contact-type-lookup.vue","webpack://acquaint-web-app/./src/components/contacts/record/duplicate-contact-modal.vue?2975","webpack://acquaint-web-app/./src/components/contacts/record/duplicate-contact-modal.vue","webpack://acquaint-web-app/./src/enums/contacts/ContactType.ts","webpack://acquaint-web-app/./src/enums/contacts/EmailTemplates.ts","webpack://acquaint-web-app/./src/components/contacts/record/contact-modal.vue?5e9e","webpack://acquaint-web-app/./src/components/contacts/record/contact-modal.vue","webpack://acquaint-web-app/./src/enums/HomeBusinessAddress.ts","webpack://acquaint-web-app/./src/components/contacts/record/edit-contact-details.vue?6c99","webpack://acquaint-web-app/./src/components/contacts/record/edit-contact-details.vue","webpack://acquaint-web-app/./src/components/contacts/record/marketing-preference-toggles.vue?a9ef","webpack://acquaint-web-app/./src/components/contacts/record/marketing-preference-toggles.vue","webpack://acquaint-web-app/./src/components/contacts/select-cc-contacts-modal.vue?32a4","webpack://acquaint-web-app/./src/components/contacts/select-cc-contacts-modal.vue","webpack://acquaint-web-app/./src/enums/emails/MarketingEmailType.ts","webpack://acquaint-web-app/./src/enums/emails/MarketingEmailTabs.ts","webpack://acquaint-web-app/./src/components/email-marketing/marketing-email-designer-modal.vue?1016","webpack://acquaint-web-app/./src/components/email-marketing/marketing-email-designer-modal.vue","webpack://acquaint-web-app/./src/components/email-marketing/new-edit-marketing-email-items-modal.vue?2e4a","webpack://acquaint-web-app/./src/components/email-marketing/new-edit-marketing-email-items-modal.vue","webpack://acquaint-web-app/./src/components/email-marketing/marketing-email-items-configuration-modal.vue?85ab","webpack://acquaint-web-app/./src/components/email-marketing/marketing-email-items-configuration-modal.vue","webpack://acquaint-web-app/./src/enums/correspondence/EmailTab.ts","webpack://acquaint-web-app/./src/components/email/email-form-modal.vue?95ce","webpack://acquaint-web-app/./src/components/email/email-form-modal.vue","webpack://acquaint-web-app/./src/components/email/new-edit-email-signatures-modal.vue?18f1","webpack://acquaint-web-app/./src/components/email/new-edit-email-signatures-modal.vue","webpack://acquaint-web-app/./src/components/email/email-signatures-configuration-modal.vue?eb3f","webpack://acquaint-web-app/./src/components/email/email-signatures-configuration-modal.vue","webpack://acquaint-web-app/./src/components/ui/emails/email-items.vue?96ec","webpack://acquaint-web-app/./src/components/ui/emails/email-items.vue","webpack://acquaint-web-app/./src/components/ui/emails/newsletter-articles.vue?8036","webpack://acquaint-web-app/./src/components/ui/emails/newsletter-articles.vue","webpack://acquaint-web-app/./src/components/email/mailshot-item-modal.vue?b26b","webpack://acquaint-web-app/./src/components/email/mailshot-item-modal.vue","webpack://acquaint-web-app/./src/enums/emails/EmailType.ts","webpack://acquaint-web-app/./src/components/email/newsletter-article-modal.vue?5a95","webpack://acquaint-web-app/./src/components/email/newsletter-article-modal.vue","webpack://acquaint-web-app/./src/components/ui/display-html.vue?751f","webpack://acquaint-web-app/./src/components/ui/display-html.vue","webpack://acquaint-web-app/./src/components/email/new-edit-email-templates-modal.vue?ed4e","webpack://acquaint-web-app/./src/components/email/new-edit-email-templates-modal.vue","webpack://acquaint-web-app/./src/components/file-uploader/document-upload.vue?202a","webpack://acquaint-web-app/./src/components/file-uploader/document-upload.vue","webpack://acquaint-web-app/./src/components/find/contacts/filter-contact-find-results.vue?952f","webpack://acquaint-web-app/./src/components/find/contacts/filter-contact-find-results.vue","webpack://acquaint-web-app/./src/components/find/contacts/find-contact-modal.vue?107d","webpack://acquaint-web-app/./src/components/find/contacts/find-contact-modal.vue","webpack://acquaint-web-app/./src/components/find/contacts/find-contact-results.vue?dea3","webpack://acquaint-web-app/./src/components/find/contacts/find-contact-results.vue","webpack://acquaint-web-app/./src/components/find/find-input.vue?158f","webpack://acquaint-web-app/./src/components/find/find-input.vue","webpack://acquaint-web-app/./src/components/find/properties/find-property-results.vue?36e9","webpack://acquaint-web-app/./src/components/find/properties/find-property-results.vue","webpack://acquaint-web-app/./src/components/find/properties/find-property-filters-modal.vue?5345","webpack://acquaint-web-app/./src/components/find/properties/find-property-filters-modal.vue","webpack://acquaint-web-app/./src/components/find/properties/find-property-modal.vue?e0df","webpack://acquaint-web-app/./src/components/find/properties/find-property-modal.vue","webpack://acquaint-web-app/./src/components/html-editor/symbol-selector-modal.vue?1584","webpack://acquaint-web-app/./src/components/html-editor/symbol-selector-modal.vue","webpack://acquaint-web-app/./src/components/html-editor/edit-html-modal.vue?6517","webpack://acquaint-web-app/./src/components/html-editor/edit-html-modal.vue","webpack://acquaint-web-app/./src/components/html-editor/html-editor.vue?d660","webpack://acquaint-web-app/./src/components/html-editor/html-editor.vue","webpack://acquaint-web-app/./src/components/icons/support-case-icon.vue","webpack://acquaint-web-app/./src/components/icons/support-case-icon.vue?3132","webpack://acquaint-web-app/./src/components/icons/utility-switch-icon.vue","webpack://acquaint-web-app/./src/components/icons/utility-switch-icon.vue?dee5","webpack://acquaint-web-app/./src/enums/TasksNotes.ts","webpack://acquaint-web-app/./src/components/notes/edit-note-modal.vue?9923","webpack://acquaint-web-app/./src/components/notes/edit-note-modal.vue","webpack://acquaint-web-app/./src/components/properties/new-property-wizard.vue?ce2b","webpack://acquaint-web-app/./src/components/properties/new-property-wizard.vue","webpack://acquaint-web-app/./src/components/properties/property-peek-modal.vue?b3e1","webpack://acquaint-web-app/./src/components/properties/property-peek-modal.vue","webpack://acquaint-web-app/./src/components/properties/select-company-modal.vue?d100","webpack://acquaint-web-app/./src/components/properties/select-company-modal.vue","webpack://acquaint-web-app/./src/utils/files/BlobImageUtils.ts","webpack://acquaint-web-app/./src/components/qr-code/qr-code-modal.vue?4738","webpack://acquaint-web-app/./src/components/qr-code/qr-code-modal.vue","webpack://acquaint-web-app/./src/utils/utility-switching/support-cases/SupportCaseReasonMapper.ts","webpack://acquaint-web-app/./src/stores/utility-switching/SupportCaseReasonsStore.ts","webpack://acquaint-web-app/./src/components/ui/dropdowns/utility-switching/support-case-reasons-single-select.vue?f9c8","webpack://acquaint-web-app/./src/components/ui/dropdowns/utility-switching/support-case-reasons-single-select.vue","webpack://acquaint-web-app/./src/components/ui/dropdowns/utility-switching/secondary-support-case-reasons-single-select.vue?fef5","webpack://acquaint-web-app/./src/components/ui/dropdowns/utility-switching/secondary-support-case-reasons-single-select.vue","webpack://acquaint-web-app/./src/components/support-cases/new-support-case-modal.vue?5319","webpack://acquaint-web-app/./src/components/support-cases/new-support-case-modal.vue","webpack://acquaint-web-app/./src/components/switches/consent-page.vue?6b34","webpack://acquaint-web-app/./src/components/switches/consent-page.vue","webpack://acquaint-web-app/./src/components/ui/lookup/mprn-property-lookup.vue?e153","webpack://acquaint-web-app/./src/components/ui/lookup/mprn-property-lookup.vue","webpack://acquaint-web-app/./src/enums/utility-switching/ElectricityMeterTypes.ts","webpack://acquaint-web-app/./src/alerts/tenantSwitchConfirmAddress.ts","webpack://acquaint-web-app/./src/components/switches/energy-details-page.vue?266f","webpack://acquaint-web-app/./src/components/switches/energy-details-page.vue","webpack://acquaint-web-app/./src/components/switches/landlord-switching/landlord-details-landlord-switch.vue?4eac","webpack://acquaint-web-app/./src/components/switches/landlord-switching/landlord-details-landlord-switch.vue","webpack://acquaint-web-app/./src/components/switches/landlord-switching/bill-to-card.vue?7f5e","webpack://acquaint-web-app/./src/components/switches/landlord-switching/bill-to-card.vue","webpack://acquaint-web-app/./src/components/switches/landlord-switching/bill-to-select.vue?bb3f","webpack://acquaint-web-app/./src/components/switches/landlord-switching/bill-to-select.vue","webpack://acquaint-web-app/./src/components/ui/dropdowns/irish-counties-single-select.vue?c876","webpack://acquaint-web-app/./src/components/ui/dropdowns/irish-counties-single-select.vue","webpack://acquaint-web-app/./src/components/switches/landlord-switching/billing-address-page.vue?d596","webpack://acquaint-web-app/./src/components/switches/landlord-switching/billing-address-page.vue","webpack://acquaint-web-app/./src/enums/utility-switching/LandlordSwitchStep.ts","webpack://acquaint-web-app/./src/components/switches/landlord-switching/landlord-switching-modal.vue?6040","webpack://acquaint-web-app/./src/components/switches/landlord-switching/landlord-switching-modal.vue","webpack://acquaint-web-app/./src/enums/utility-switching/SurrenderSwitchStep.ts","webpack://acquaint-web-app/./src/components/switches/landlord-switching/surrender-council-switch.vue?adb4","webpack://acquaint-web-app/./src/components/switches/landlord-switching/surrender-council-switch.vue","webpack://acquaint-web-app/./src/components/switches/property-lookup-page.vue?7ebb","webpack://acquaint-web-app/./src/components/switches/property-lookup-page.vue","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/council-purchasing-switching-modal.vue?90f1","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/council-purchasing-switching-modal.vue","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/purchaser-details.vue?66ba","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/purchaser-details.vue","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/purchaser-summary.vue?2cc1","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/purchaser-summary.vue","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/purchasing-switching-modal.vue?51fc","webpack://acquaint-web-app/./src/components/switches/purchaser-switching/purchasing-switching-modal.vue","webpack://acquaint-web-app/./src/components/switches/summary-page.vue?a488","webpack://acquaint-web-app/./src/components/switches/summary-page.vue","webpack://acquaint-web-app/./src/components/switches/tenant-switch-progress.vue?9d09","webpack://acquaint-web-app/./src/components/switches/tenant-switch-progress.vue","webpack://acquaint-web-app/./src/enums/utility-switching/CouncilTenantSwitchStep.ts","webpack://acquaint-web-app/./src/components/switches/tenant-switching/council-allocation-modal.vue?5646","webpack://acquaint-web-app/./src/components/switches/tenant-switching/council-allocation-modal.vue","webpack://acquaint-web-app/./src/components/switches/tenant-switching/tenant-details-page.vue?4c98","webpack://acquaint-web-app/./src/components/switches/tenant-switching/tenant-details-page.vue","webpack://acquaint-web-app/./src/components/switches/property-owner-details-page.vue?5d31","webpack://acquaint-web-app/./src/components/switches/property-owner-details-page.vue","webpack://acquaint-web-app/./src/enums/utility-switching/TenantSwitchStep.ts","webpack://acquaint-web-app/./src/components/switches/tenant-switching/tenant-switching-modal.vue?3fa9","webpack://acquaint-web-app/./src/components/switches/tenant-switching/tenant-switching-modal.vue","webpack://acquaint-web-app/./src/enums/tasks/TaskStatus.ts","webpack://acquaint-web-app/./src/components/tasks/edit-task-modal.vue?bd80","webpack://acquaint-web-app/./src/components/tasks/edit-task-modal.vue","webpack://acquaint-web-app/./src/components/ui/address/auto-address.vue","webpack://acquaint-web-app/./src/components/ui/address/auto-address.vue?cc29","webpack://acquaint-web-app/./src/components/ui/address/auto-address-wrapper.vue?b65d","webpack://acquaint-web-app/./src/components/ui/address/auto-address-wrapper.vue","webpack://acquaint-web-app/./src/components/ui/address/postcode/find-postcode-modal.vue?e10a","webpack://acquaint-web-app/./src/components/ui/address/postcode/find-postcode-modal.vue","webpack://acquaint-web-app/./src/components/ui/address/postcode/postcode-lookup.vue?3ed0","webpack://acquaint-web-app/./src/components/ui/address/postcode/postcode-lookup.vue","webpack://acquaint-web-app/./src/components/ui/address/edit-address.vue?5f10","webpack://acquaint-web-app/./src/components/ui/address/edit-address.vue","webpack://acquaint-web-app/./src/components/ui/containers/info-card.vue?96c7","webpack://acquaint-web-app/./src/components/ui/containers/info-card.vue","webpack://acquaint-web-app/./src/components/ui/containers/tab-panel.vue","webpack://acquaint-web-app/./src/components/ui/containers/tab-panel.vue?dd0e","webpack://acquaint-web-app/./src/components/ui/dropdowns/bedrooms-select.vue?809d","webpack://acquaint-web-app/./src/components/ui/dropdowns/bedrooms-select.vue","webpack://acquaint-web-app/./src/components/ui/dropdowns/country-select.vue?be31","webpack://acquaint-web-app/./src/components/ui/dropdowns/country-select.vue","webpack://acquaint-web-app/./src/components/ui/dropdowns/number-dropdown.vue?ab79","webpack://acquaint-web-app/./src/components/ui/dropdowns/number-dropdown.vue","webpack://acquaint-web-app/./src/components/ui/dropdowns/single-select.vue?6e6c","webpack://acquaint-web-app/./src/components/ui/dropdowns/single-select.vue","webpack://acquaint-web-app/./src/components/ui/grid/grid-base.vue?b791","webpack://acquaint-web-app/./src/components/ui/grid/grid-base.vue","webpack://acquaint-web-app/./src/components/ui/grid/grid-filter-summary.vue?c927","webpack://acquaint-web-app/./src/components/ui/grid/grid-filter-summary.vue","webpack://acquaint-web-app/./src/components/ui/grid/grid-filters-base.vue?7a45","webpack://acquaint-web-app/./src/components/ui/grid/grid-filters-base.vue","webpack://acquaint-web-app/./src/components/ui/grid/grid-menu.vue?ce9e","webpack://acquaint-web-app/./src/components/ui/grid/grid-menu.vue","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-date-box.vue?e3c2","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-date-box.vue","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-info-box.vue?0109","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-info-box.vue","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-text-area.vue?8811","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-text-area.vue","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-textbox.vue?2ea3","webpack://acquaint-web-app/./src/components/ui/inputs/acquaint-textbox.vue","webpack://acquaint-web-app/./src/utils/colours/ColourConverter.ts","webpack://acquaint-web-app/./src/components/ui/inputs/colour-picker.vue?9145","webpack://acquaint-web-app/./src/components/ui/inputs/colour-picker.vue","webpack://acquaint-web-app/./src/components/ui/inputs/currency-input.vue?2056","webpack://acquaint-web-app/./src/components/ui/inputs/currency-input.vue","webpack://acquaint-web-app/./src/components/ui/inputs/field-validation-free-date-box.vue?0a05","webpack://acquaint-web-app/./src/components/ui/inputs/field-validation-free-date-box.vue","webpack://acquaint-web-app/./src/components/ui/inputs/field-validation-free-text-area.vue?08ee","webpack://acquaint-web-app/./src/components/ui/inputs/field-validation-free-text-area.vue","webpack://acquaint-web-app/./src/components/ui/inputs/field-validation-free-textbox.vue?e1ba","webpack://acquaint-web-app/./src/components/ui/inputs/field-validation-free-textbox.vue","webpack://acquaint-web-app/./src/components/ui/inputs/file-upload.vue?0e8c","webpack://acquaint-web-app/./src/components/ui/inputs/file-upload.vue","webpack://acquaint-web-app/./src/components/ui/inputs/number-box-field.vue?4698","webpack://acquaint-web-app/./src/components/ui/inputs/number-box-field.vue","webpack://acquaint-web-app/./src/components/ui/inputs/select-option.vue?83a2","webpack://acquaint-web-app/./src/components/ui/inputs/select-option.vue","webpack://acquaint-web-app/./src/components/ui/labels/page-heading.vue?f712","webpack://acquaint-web-app/./src/components/ui/labels/page-heading.vue","webpack://acquaint-web-app/./src/components/ui/lookup/contact-lookup.vue?7323","webpack://acquaint-web-app/./src/components/ui/lookup/contact-lookup.vue","webpack://acquaint-web-app/./src/components/ui/lookup/lookup-single-select.vue?e6e4","webpack://acquaint-web-app/./src/components/ui/lookup/lookup-single-select.vue","webpack://acquaint-web-app/./src/components/ui/lookup/property-lookup.vue?1fe0","webpack://acquaint-web-app/./src/components/ui/lookup/property-lookup.vue","webpack://acquaint-web-app/./src/components/ui/lookup/switch-contact-lookup.vue?afcf","webpack://acquaint-web-app/./src/components/ui/lookup/switch-contact-lookup.vue","webpack://acquaint-web-app/./src/components/ui/modals/modal-base.vue?3c7d","webpack://acquaint-web-app/./src/components/ui/modals/modal-base.vue","webpack://acquaint-web-app/./src/components/ui/modals/question-modal.vue?f532","webpack://acquaint-web-app/./src/components/ui/modals/question-modal.vue","webpack://acquaint-web-app/./src/enums/system/ScrollbarPosition.ts","webpack://acquaint-web-app/./src/components/ui/scroll-view.vue?01e4","webpack://acquaint-web-app/./src/components/ui/scroll-view.vue","webpack://acquaint-web-app/./src/components/ui/system-codes/system-code-single-select.vue?af3f","webpack://acquaint-web-app/./src/components/ui/system-codes/system-code-single-select.vue","webpack://acquaint-web-app/./src/components/ui/toggles/date-toggle.vue?306a","webpack://acquaint-web-app/./src/components/ui/toggles/date-toggle.vue","webpack://acquaint-web-app/./src/components/ui/toggles/switch-toggle.vue?b0a7","webpack://acquaint-web-app/./src/components/ui/toggles/switch-toggle.vue","webpack://acquaint-web-app/./src/components/user-management/record/edit-user-modal.vue?dcee","webpack://acquaint-web-app/./src/components/user-management/record/edit-user-modal.vue","webpack://acquaint-web-app/./src/components/website-news/new-edit-news-modal.vue?8f73","webpack://acquaint-web-app/./src/components/website-news/new-edit-news-modal.vue","webpack://acquaint-web-app/./src/components/website-news/news-configuration-modal.vue?f377","webpack://acquaint-web-app/./src/components/website-news/news-configuration-modal.vue","webpack://acquaint-web-app/./src/components/ui/buttons/home-page-button.vue?9399","webpack://acquaint-web-app/./src/components/ui/buttons/home-page-button.vue","webpack://acquaint-web-app/./src/components/icons/tenant-switch-icon.vue","webpack://acquaint-web-app/./src/components/icons/tenant-switch-icon.vue?e901","webpack://acquaint-web-app/./src/components/icons/landlord-switch-icon.vue","webpack://acquaint-web-app/./src/components/icons/landlord-switch-icon.vue?b754","webpack://acquaint-web-app/./src/components/icons/purchaser-switch-icon.vue","webpack://acquaint-web-app/./src/components/icons/purchaser-switch-icon.vue?2ff2","webpack://acquaint-web-app/./src/components/icons/new-support-case-icon.vue","webpack://acquaint-web-app/./src/components/icons/new-support-case-icon.vue?13bb","webpack://acquaint-web-app/./src/components/icons/help-icon.vue","webpack://acquaint-web-app/./src/components/icons/help-icon.vue?4ac1","webpack://acquaint-web-app/./src/components/home-page/utility-switching-agent-panel.vue?e09f","webpack://acquaint-web-app/./src/components/home-page/utility-switching-agent-panel.vue","webpack://acquaint-web-app/./src/components/home-page/utility-switching-council-panel.vue?0cc4","webpack://acquaint-web-app/./src/components/home-page/utility-switching-council-panel.vue","webpack://acquaint-web-app/./src/components/icons/home-icon.vue","webpack://acquaint-web-app/./src/components/icons/home-icon.vue?07e6","webpack://acquaint-web-app/./src/components/home-page/home-carousel.vue?0aae","webpack://acquaint-web-app/./src/components/home-page/home-carousel.vue","webpack://acquaint-web-app/./src/stores/HomeCarouselStore.ts","webpack://acquaint-web-app/./src/views/home-page.vue?736d","webpack://acquaint-web-app/./src/views/home-page.vue","webpack://acquaint-web-app/./src/views/not-found-page.vue?4db9","webpack://acquaint-web-app/./src/views/not-found-page.vue","webpack://acquaint-web-app/./src/views/ lazy ^\\.\\/.*\\.vue$ chunkName: login namespace object","webpack://acquaint-web-app/webpack/bootstrap","webpack://acquaint-web-app/webpack/runtime/chunk loaded","webpack://acquaint-web-app/webpack/runtime/compat get default export","webpack://acquaint-web-app/webpack/runtime/define property getters","webpack://acquaint-web-app/webpack/runtime/ensure chunk","webpack://acquaint-web-app/webpack/runtime/get javascript chunk filename","webpack://acquaint-web-app/webpack/runtime/get mini-css chunk filename","webpack://acquaint-web-app/webpack/runtime/global","webpack://acquaint-web-app/webpack/runtime/hasOwnProperty shorthand","webpack://acquaint-web-app/webpack/runtime/load script","webpack://acquaint-web-app/webpack/runtime/make namespace object","webpack://acquaint-web-app/webpack/runtime/node module decorator","webpack://acquaint-web-app/webpack/runtime/publicPath","webpack://acquaint-web-app/webpack/runtime/css loading","webpack://acquaint-web-app/webpack/runtime/jsonp chunk loading","webpack://acquaint-web-app/webpack/startup"],"sourcesContent":["var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 39245,\n\t\"./en-nz.js\": 39245,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 52182,\n\t\"./gd.js\": 52182,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","import Swal from \"sweetalert2\";\n\nexport const baseAlert = Swal.mixin({\n customClass: {\n icon: 'acquaint-swal-icon',\n container: 'acquaint-swal-container',\n popup: 'acquaint-swal-popup',\n htmlContainer: 'acquaint-swal-html-container',\n confirmButton: 'acquaint-swal-confirm-button'\n },\n heightAuto: false\n});","import { baseAlert } from \"./baseAlert\";\n\n/** Displays a SweetAlert prompting the user to confirm whether they want to cancel */\nconst displayCancelConfirmationAlert = (textToDisplay:string) => {\n return baseAlert.fire({\n text: textToDisplay,\n icon: 'question',\n confirmButtonText: 'Yes',\n denyButtonText: 'No',\n showDenyButton: true,\n heightAuto: false,\n })\n}\n\nexport { displayCancelConfirmationAlert }","import { toastBaseAlert } from '@/alerts/toastBaseAlert';\n\n/*** Displays an info toast\n * @param text message to be displayed\n * @param displayTime defines how long the toast is displayed in milliseconds. This is set to 6000 by default */\nexport default function displayInfoToast(text: string, displayTime: number = 6000) {\n return toastBaseAlert.fire({\n text: text,\n icon: 'info',\n timer: displayTime,\n background: '#4BAAEF'\n });\n}","import { baseAlert } from \"./baseAlert\"\n\n/** Displays a SweetAlert prompting the user to answer a question \n * @param text - The question text to display to the user\n * @param confirmButtonText - The text to display on the Confirm button\n * @param denyButtonText - The text to display on the Deny button */\nconst displayQuestionAlert = (text: string, confirmButtonText: string = 'Yes', denyButtonText: string = 'No') => {\n return baseAlert.fire({\n text: text,\n icon: 'question',\n confirmButtonText: confirmButtonText,\n denyButtonText: denyButtonText,\n showDenyButton: true,\n heightAuto: false,\n })\n}\n\nexport { displayQuestionAlert }","import { baseAlert } from \"./baseAlert\";\n\nexport const standardInfoAlert = (text:string) => {\n return baseAlert.fire({\n icon:'info',\n text:text\n });\n};","import Swal from \"sweetalert2\";\n\nexport const toastBaseAlert = Swal.mixin({\n customClass: {\n icon: 'acquaint-swal-icon',\n container: 'acquaint-swal-container',\n popup: 'acquaint-swal-popup',\n htmlContainer: 'acquaint-toast-swal-html-container',\n confirmButton: 'acquaint-swal-confirm-button'\n },\n timerProgressBar: true,\n iconColor: 'white',\n color: 'white',\n position: 'top-right',\n toast: true,\n showConfirmButton: false\n});","export enum ListFilterKeys {\n FilterRows = 'filterRows',\n SelectAllRows = 'filterRowsSelectAll',\n UnselectAllRows = 'filterRowsUnselectAll',\n Enable = 'displaySelectColumn',\n Disable = 'hideSelectColumn'\n}","export enum SelectOptionReponses {\n Yes = 1,\n No = 2\n}","export enum AIPromptsToGenerate{\n None = 0,\n PropertyDescription = 1,\n PropertyRoomDescription = 2,\n PropertyRoomTemplateDescription = 3\n}","export enum CertificateStatus {\n Current = 0,\n Expired = 1,\n Ordered = 2,\n Archived = 4\n}","export enum CertificateType {\n GasSafteyCertificate = 1,\n ElectrictySafteyCertificate = 2,\n PortableApplianceTesting = 3,\n FireAlarmCertificate = 4,\n RentGuarantee = 5,\n LandlordRegistration = 6,\n PropertyLicence = 7,\n PropertyLicenceHMO = 8,\n ApplianceGuarantee = 9,\n LegionellaRiskAssessment = 10,\n SmokeAlarmCertificate = 11,\n CarbonMonoxideAlarm = 12,\n RightToRent = 13,\n ContractorLiabilityInsurance = 14,\n ProofOfID = 15,\n EPCMinimumException = 16,\n EPC = 17,\n Chimney = 18,\n OilBoiler = 19,\n RTBRegistration = 20\n}","export enum ContactFindTypeRestriction {\n None = 0,\n Purchasers = 1,\n PropertyOwners = 2,\n Tenants = 3\n}","export enum SystemContactTypes {\n Standard,\n User,\n Solicitor,\n LocalAuthority,\n Publication,\n MortgageProvider,\n EstateAgent,\n Applicant,\n Landlord,\n Vendor,\n Contractor,\n UtilitySupplier,\n Bank,\n ManagingAgent,\n Guarantor,\n Referee,\n Company,\n BlockManagementCompany,\n InsuranceCompany,\n AuctionHouse,\n FinancialAdvisor,\n BoardSupplier,\n GeneralBusinssContact\n}\n","export enum EmailTemplateTypes {\n FreeFormatText = 0,\n PropertyBulletinMatchedProperties = 1,\n PropertyDetails = 2,\n DevelopmentDetails = 3,\n PropertyBulletinAllProperties = 4,\n PropertyDetailsFreeFormat = 5,\n NewsLetter = 6,\n PropertyFeebackRequest = 7\n}","export enum MarketingEmailItemType {\n MenuItem,\n Advert\n}","export enum SelectedEmailAction {\n New,\n Forward,\n Reply\n}","export enum PropertyCategories {\n Buy,\n Rent\n}","export enum PropertyUsages {\n Residential,\n Commercial\n}","export enum AppMode {\n Full,\n UtilitySwitchingAgent,\n UtilitySwitchingCouncil\n}","export enum AutoLoginAction {\n None = 0,\n SwitchToTenant = 10,\n SwitchToLandlord = 11,\n SwitchToPurchaser = 12,\n SwitchesList = 13,\n SupportCasesList = 14,\n CreateSupportCase = 15\n}","export enum CountryCodes {\n ireland=372,\n uk=826,\n guernsey=831,\n jersey=832\n}","export enum Environment {\n Development, \n Staging,\n Production\n}","export enum FieldSize {\n XXSmall = '4rem',\n XSmall = '6rem',\n Small = '8rem',\n Smallish = '9rem',\n SmallMedium = '10rem',\n Medium = '12rem',\n Large = '16rem',\n XLarge = '22rem',\n XXLarge = '30rem',\n Full = '100%'\n}","export enum TextboxValueChangeEvent {\n Change = 'change',\n KeyUp = 'keyup',\n ChangeAndKeyUp = 'keyup change'\n}","export enum EnergyTypes {\n DualFuel=1,\n ElectricityOnly=2,\n GasOnly=3\n}","export enum GasMeterTypes {\n standard=0,\n payg=1,\n smart=2\n}","export enum PurchaserSwitchStep {\n PropertyLookup,\n Energy, \n Purchaser,\n Consent,\n Summary,\n Confirmation \n}","export enum SupportCaseDocumentType {\n Tcf, \n Other\n}","export enum SwitchBillTo {\n Landlord=0,\n LandlordCOAgency=1,\n Agency=2\n}","export enum SwitchPage {\n TenantPage = 'tenantPage',\n LandlordPage = 'landlordPage',\n BillingPage = 'billingPage',\n TcfPage = 'tcfPage',\n PropertyPage = 'propertyPage',\n EnergyPage = 'energyPage'\n}","\n\n\n\n\n","import script from \"./App.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=401095a9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","export default {\n title: \"Acquaint CRM\"\n};\n","import { App, Plugin } from 'vue';\nimport { AuthenticationCookieManager } from './AuthenticationCookieManager'\nimport { Mutex } from 'async-mutex';\nimport { JwtToken } from '../types/authentication/JwtToken';\nimport { getEnvironment } from '@/utils/system/EnvironmentReader';\nimport { Environment } from '@/enums/system/Environment';\nimport { LoginCredentials } from '@/types/authorization/LoginCredentials';\nimport { LoginResponse } from '@/types/authorization/LoginResponse';\nimport DeletedRecordError from './DeletedRecordError';\n\n// ApiClient class - wraps up all http requests to our Acquaint APIs\nexport class AcquaintApiClient {\n private mutex = new Mutex();\n private _jwtToken: JwtToken = { token: '', expiresIn: 0, utcExpiryDate: '' };\n private _baseUrl: string\n private _authenticationCookieManager: AuthenticationCookieManager\n private readonly _apiRetryMax = 1;\n public _databaseConnectionToken: string = '';\n\n constructor() {\n this._authenticationCookieManager = new AuthenticationCookieManager;\n this._baseUrl = this.getBaseUrl();\n }\n\n /** Gets the base url to use for api calls based on the current environment */\n private getBaseUrl() {\n const environment = getEnvironment();\n\n switch (environment) {\n case Environment.Development: \n return 'https://api-dev.acquaintcrm.co.uk/17.0/';\n case Environment.Staging: \n return 'https://api-staging.acquaintcrm.co.uk/17.0/';\n default:\n return 'https://api.acquaintcrm.co.uk/17.0/'\n }\n }\n\n public async httpGet(url: string): Promise {\n return await this.getApiResponse(url, \"GET\")\n }\n public async getFile(url: string): Promise {\n // as the end point returns a ReadableStream Byte Array we should convert this to a Blob so it can be displayed on the screen\n return (await this.sendHttpRequest(url, \"GET\")).blob();\n }\n public async httpPut(url: string, data: any): Promise {\n return await this.getApiResponse(url, \"PUT\", data)\n }\n public async httpPost(url: string, data: any): Promise {\n return await this.getApiResponse(url, \"POST\", data)\n }\n public async httpDelete(url: string, data: any = {}): Promise {\n return await this.getApiResponse(url, \"DELETE\", data)\n }\n public async httpPutVoid(url: string, data: any): Promise {\n await this.sendHttpRequest(url, \"PUT\", data)\n }\n public async httpPostVoid(url: string, data: any): Promise {\n await this.sendHttpRequest(url, \"POST\", data)\n }\n public async httpDeleteVoid(url: string, data: any = {}): Promise {\n await this.sendHttpRequest(url, \"DELETE\", data)\n }\n\n public logout() {\n this.resetState()\n } \n\n private async getAuthToken(): Promise {\n const url = `${this.getBackendApiUrl()}/auth`\n\n // Calls the Auth endpoint to get a valid Acquaint API JWT\n const result = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n method: \"POST\",\n });\n\n this._jwtToken = await result.json();\n }\n\n /** Gets the url for the authentication api endpoint */\n private getBackendApiUrl() :string {\n const domainName = window.location.host.includes('propertybutton.ie') ? 'propertybutton.ie' : 'acquaintcrm.co.uk';\n let subDomain = getEnvironment() === Environment.Production ? 'app' : 'apptest';\n\n const environment = getEnvironment();\n\n switch (environment) {\n case Environment.Development: \n subDomain = 'appdev';\n break;\n case Environment.Staging: \n subDomain = 'apptest';\n break;\n default:\n subDomain = 'app'; \n }\n\n return `https://${subDomain}.${domainName}/api`;\n }\n\n private isJwtTokenRefreshRequired(): boolean {\n const fiveMinutuesInMilliseconds = 300000;\n const nowWithRefreshOffset = Date.now() - fiveMinutuesInMilliseconds;\n return !this._jwtToken.token || new Date(this._jwtToken.utcExpiryDate) <= new Date(new Date(nowWithRefreshOffset).toUTCString());\n }\n private async getApiResponse(url: string, method: string, data: any = null): Promise {\n // Builds an object using the passed generic type from the the response's json body\n const response = await this.sendHttpRequest(url, method, data)\n //console.warn(JSON.parse(await response.text())) \n return await response.json() as T;\n }\n private async sendHttpRequest(url: string, method: string, data: any = null): Promise {\n // Ensure url has been passed\n if (!url) {\n throw 'Url must not be null or blank';\n }\n\n if (url.indexOf('/') === 0) {\n url = url.slice(1, url.length)\n }\n\n // Get URL depending on environment\n const apiUrl = this._baseUrl + url\n let apiResponse: Response = new Response();\n\n // To avoid potential timing issues invalidating jwt tokens, attempt to make the api call a few times if unsuccesful\n for (let retry = 0; retry < this._apiRetryMax + 1; retry++) {\n // Get new jwt token if required\n if (this.isJwtTokenRefreshRequired()) {\n /* To prevent our client recalling the server and getting multiple JWT tokens run ecclusively.\n Once this process is unlocked if this is the first to call it will then call the API, if another process\n unlocks before it will load the jwt so this will skip the auth API call */\n await this.mutex.runExclusive(async () => {\n if (this.isJwtTokenRefreshRequired()) {\n await this.getAuthToken();\n }\n });\n }\n\n // Read the database connector form the cookie if it is not already saved to the client\n if (this._databaseConnectionToken == '') {\n const tokenCookie = this._authenticationCookieManager.getDatabaseConnectorToken();\n this._databaseConnectionToken = (tokenCookie != undefined ? tokenCookie.token : '');\n }\n\n if (data) {\n data = JSON.stringify(data);\n }\n\n // Makes a request to the Acquaint Api , authenticates with the dbConectorToken and Acquaint JWT\n apiResponse = await fetch(apiUrl, {\n method,\n mode: 'cors',\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n 'x-acquaint-database-connector': this._databaseConnectionToken,\n 'content-type': 'application/json'\n },\n body: data,\n });\n\n if (apiResponse.ok === true) {\n // Request successful, so return api response\n break;\n } else {\n // If the Api request failed then throw a new error with the body of the response (this will be our custom error message)\n await this.processFailedApiRequest(apiResponse, retry, apiUrl);\n }\n }\n\n return apiResponse;\n }\n\n private async processFailedApiRequest(apiResponse: Response, retryAttempt: number, apiUrl: string) {\n let responseText = '';\n\n // Only get response text for non-404 responses as the error text for 404 responses are hard coded\n if (apiResponse.status != 404) {\n responseText = await apiResponse.text();\n }\n\n switch (apiResponse.status) {\n case 401:\n case 403:\n // To avoid potential timing issues invalidating jwt tokens, reset the jwt token to cause the apiClient to re-get the jwt token in the next retry\n if (retryAttempt != this._apiRetryMax) {\n this._jwtToken.token = '';\n return;\n }\n\n // Invalid authentication details so log the user out\n console.log(apiResponse)\n console.error(`Unable to make request to API \\n Status: ${apiResponse.status} \\n url: ${apiUrl} \\n DBtoken: ${this._databaseConnectionToken} \\n JWT: ${this._jwtToken.token} \\n Body: ${responseText}`)\n if (confirm(`Unable to make request to API \\n Status: ${apiResponse.status} \\n url: ${apiUrl} \\n DBtoken: ${this._databaseConnectionToken} \\n JWT: ${this._jwtToken.token} \\n Yes to Logout (App may not work) No to continue (Debug)`)) {\n this.resetState();\n }\n\n throw new Error(`${responseText}`); \n case 404:\n throw new DeletedRecordError(`The requested record could not be found, it may have been deleted.`);\n default:\n throw new Error(`${responseText}`);\n }\n }\n\n public async uploadFile(url: string, data: any): Promise {\n // Ensure url has been passed\n if (!url) {\n throw 'Url must not be null or blank';\n }\n\n if (url.indexOf('/') === 0) {\n url = url.slice(1, url.length)\n }\n\n // Get URL depending on environment\n const apiUrl = this._baseUrl + url\n let apiResponse: Response = new Response();\n\n // To avoid potential timing issues invalidating jwt tokens, attempt to make the api call a few times if unsuccesful\n for (let retry = 0; retry < this._apiRetryMax + 1; retry++) {\n // Get new jwt token if required\n if (this.isJwtTokenRefreshRequired()) {\n // To prevent our client recalling the server and getting multiple JWT tokens run ecclusively.\n // Once this process is unlocked if this is the first to call it will then call the API, if another process\n // unlocks before it will load the jwt so this will skip the auth API call\n await this.mutex.runExclusive(async () => {\n if (this.isJwtTokenRefreshRequired()) {\n await this.getAuthToken();\n }\n });\n }\n // Read the database connector form the cookie if it is not already saved to the client\n if (this._databaseConnectionToken == '') {\n const tokenCookie = this._authenticationCookieManager.getDatabaseConnectorToken();\n this._databaseConnectionToken = (tokenCookie != undefined ? tokenCookie.token : '');\n }\n\n //Makes a request to the Acquaint Api , authenticates with the dbConectorToken and Acquaint JWT\n apiResponse = await fetch(apiUrl, {\n method: \"POST\",\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n 'x-acquaint-database-connector': this._databaseConnectionToken,\n },\n body: data,\n });\n\n if (apiResponse.ok === true) {\n // Request successful, so return api response\n break;\n } else {\n // If the Api request failed then throw a new error with the body of the response (this will be our custom error message)\n await this.processFailedApiRequest(apiResponse, retry, apiUrl);\n }\n }\n\n return apiResponse;\n }\n\n public async putFile(url: string, data: any): Promise {\n // Ensure url has been passed\n if (!url) {\n throw 'Url must not be null or blank';\n }\n\n if (url.indexOf('/') === 0) {\n url = url.slice(1, url.length)\n }\n\n // Get URL depending on environment\n const apiUrl = this._baseUrl + url\n let apiResponse: Response = new Response();\n\n // To avoid potential timing issues invalidating jwt tokens, attempt to make the api call a few times if unsuccesful\n for (let retry = 0; retry < this._apiRetryMax + 1; retry++) {\n // Get new jwt token if required\n if (this.isJwtTokenRefreshRequired()) {\n // To prevent our client recalling the server and getting multiple JWT tokens run ecclusively.\n // Once this process is unlocked if this is the first to call it will then call the API, if another process\n // unlocks before it will load the jwt so this will skip the auth API call\n await this.mutex.runExclusive(async () => {\n if (this.isJwtTokenRefreshRequired()) {\n await this.getAuthToken();\n }\n });\n }\n // Read the database connector form the cookie if it is not already saved to the client\n if (this._databaseConnectionToken == '') {\n const tokenCookie = this._authenticationCookieManager.getDatabaseConnectorToken();\n this._databaseConnectionToken = (tokenCookie != undefined ? tokenCookie.token : '');\n }\n\n //Makes a request to the Acquaint Api , authenticates with the dbConectorToken and Acquaint JWT\n apiResponse = await fetch(apiUrl, {\n method: \"PUT\",\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n 'x-acquaint-database-connector': this._databaseConnectionToken,\n },\n body: data,\n });\n\n if (apiResponse.ok === true) {\n // Request successful, so return api response\n break;\n } else {\n // If the Api request failed then throw a new error with the body of the response (this will be our custom error message)\n await this.processFailedApiRequest(apiResponse, retry, apiUrl);\n }\n }\n\n return apiResponse;\n }\n\n private resetState() {\n this._jwtToken = { token: '', expiresIn: 0, utcExpiryDate: '' }\n this._databaseConnectionToken = '';\n this._authenticationCookieManager.resetState()\n }\n\n public async apiTestMethod(url: string, requestType: string, data: any = null) {\n // Ensure url has been passed\n if (!url) {\n throw 'Url must not be null or blank';\n }\n\n if (url.indexOf('/') === 0) {\n url = url.slice(1, url.length)\n }\n\n // Get new jwt token if required\n if (this.isJwtTokenRefreshRequired()) {\n await this.getAuthToken();\n }\n // Read the database connector form the cookie if it is not already saved to the client\n if (this._databaseConnectionToken == '') {\n const tokenCookie = this._authenticationCookieManager.getDatabaseConnectorToken();\n this._databaseConnectionToken = (tokenCookie != undefined ? tokenCookie.token : '');\n }\n\n if (data) {\n data = JSON.stringify(data);\n }\n //Makes a request to the Acquaint Api , authenticates with the dbConectorToken and Acquaint JWT\n const apiResponse = await fetch(url, {\n method: requestType,\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n 'x-acquaint-database-connector': this._databaseConnectionToken,\n 'content-type': 'application/json'\n },\n body: data,\n });\n // If the Api request failed then throw a new error with the body of the response (this will be our custom error message)\n if (apiResponse.ok === false) {\n if (apiResponse.status === 401 || apiResponse.status === 403) {\n // Invalid authentication details so log the user out\n this.resetState();\n }\n\n if (apiResponse.status === 404) {\n throw new Error(`The requested record could not be found, it may have been deleted.`)\n }\n\n throw new Error(`${await apiResponse.text()}`);\n }\n\n return apiResponse\n }\n\n public async validateRecaptchaToken(token :string) {\n const url = `${this.getBackendApiUrl()}/recaptcha`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify({ token: token }),\n });\n const responseContents = await response.text()\n return responseContents == \"true\" ? true : false;\n }\n\n /** Refreshes the database connection token after a user changes password\n * @param newPassword New Password for the currently logged in user */\n public async RefreshDatabaseConnectionToken(newPassword :string) {\n /* To get an updated database connector token, we need to call the login endpoint again\n * For this, we'll need the cached login credentials and the new password */\n const siteDetails = this._authenticationCookieManager.getSiteDetails();\n \n if (!siteDetails) {\n console.error('Unable to read site details from cookie');\n return\n }\n \n const loginData :LoginCredentials = {\n sitePrefix: siteDetails.sitePrefix,\n appPassword: siteDetails.appPassword,\n userName: siteDetails.userName,\n userPassword: newPassword,\n pcid: siteDetails.pcid\n \n }\n const authenticationToken = await this.httpPost(\"/app/auth/login\", loginData)\n \n // Overwrite the database connection token with the new token\n this._authenticationCookieManager.storeLogin(authenticationToken);\n this._databaseConnectionToken = authenticationToken.token;\n }\n}\n\n// Make api client available to Vue via dependency injection\nexport const AcquaintApiClientPlugin: Plugin = {\n install: (app: App) => {\n const api = new AcquaintApiClient();\n app.provide('AcquaintApiClient', api);\n }\n}","export enum HttpMethod {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}","import { Environment } from \"@/enums/system/Environment\";\nimport { HttpMethod } from \"@/enums/system/http/HttpMethod\";\nimport { JwtToken } from \"@/types/authentication/JwtToken\";\nimport { IJwtAuthClient } from \"@/types/services/IJwtAuthClient\";\nimport { IApiClient } from \"@/types/services/IApiClient\";\nimport { getEnvironment } from \"@/utils/system/EnvironmentReader\";\nimport { App, Plugin } from \"vue\";\nimport { LoginCredentials } from \"@/types/authorization/LoginCredentials\";\nimport { Mutex } from 'async-mutex';\nimport { writeCookie } from \"@/utils/cookies/JsonCookieWriter\";\nimport { readCookie } from \"@/utils/cookies/JsonCookieReader\";\n\nexport class AcquaintApiNextClient implements IApiClient, IJwtAuthClient {\n private _mutex = new Mutex();\n private _jwtToken: JwtToken = { token: '', expiresIn: 0, utcExpiryDate: '' }\n private _baseUrl: string\n\n constructor() {\n this._baseUrl = this.getApiBaseUrl();\n }\n\n public async authenticate(credentials: LoginCredentials): Promise {\n const response = await fetch(`${this._baseUrl}/auth/login`, {\n method: HttpMethod.Post,\n mode: 'cors',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify(credentials),\n credentials: 'include'\n });\n\n if (!response.ok) {\n const responseText = await response.text();\n throw Error(responseText);\n }\n\n this._jwtToken = await response.json() as JwtToken;\n\n writeCookie('x-jwt-auth', this._jwtToken, 0);\n\n return this._jwtToken;\n }\n\n public async refreshJwtToken(): Promise {\n const response = await fetch(`${this._baseUrl}/auth/refresh-token`, {\n method: HttpMethod.Post,\n mode: 'cors',\n headers: {\n 'content-type': 'application/json'\n },\n credentials: 'include'\n });\n\n if (!response.ok) {\n const responseText = await response.text();\n throw Error(responseText);\n }\n\n writeCookie('x-jwt-auth', this._jwtToken, 0);\n this._jwtToken = await response.json() as JwtToken;\n return this._jwtToken;\n }\n\n /** Gets the base url to use for api calls based on the current environment */\n private getApiBaseUrl() {\n const environment = getEnvironment();\n\n switch (environment) {\n case Environment.Development:\n return 'https://acquaintapinetcore-dev.azurewebsites.net';\n case Environment.Staging:\n return 'https://acquaintapinetcore-staging.azurewebsites.net';\n default:\n return 'https://acquaintapinetcore.azurewebsites.net'\n }\n }\n\n public async httpGet(url: string): Promise {\n const response = await this.sendHttpRequest(url, HttpMethod.Get);\n return await this.parseResponse(response);\n }\n\n public async getFile(url: string): Promise {\n const response = await this.sendHttpRequest(url, HttpMethod.Get);\n return response.blob();\n }\n\n public async httpPut(url: string, data: any): Promise {\n const response = await this.sendHttpRequest(url, HttpMethod.Put, data);\n return await this.parseResponse(response);\n }\n\n public async httpPost(url: string, data: any): Promise {\n const response = await this.sendHttpRequest(url, HttpMethod.Post, data);\n return await this.parseResponse(response);\n }\n\n public async httpDelete(url: string, data: any): Promise {\n const response = await this.sendHttpRequest(url, HttpMethod.Delete, data);\n return await this.parseResponse(response);\n }\n\n public async httpPutVoid(url: string, data: any): Promise {\n await this.sendHttpRequest(url, HttpMethod.Put, data);\n }\n\n public async httpPostVoid(url: string, data: any): Promise {\n await this.sendHttpRequest(url, HttpMethod.Post, data);\n }\n\n public async httpDeleteVoid(url: string, data: any): Promise {\n await this.sendHttpRequest(url, HttpMethod.Delete, data);\n }\n\n /** Sends a Http Request to the passed url\n * @param url url to send the request to\n * @param method the HTTP Method to use when sending the request\n * @param data data to send in the body of the request (optional)\n * @returns response of the request */\n private async sendHttpRequest(url: string, method: HttpMethod, data: any = null): Promise {\n // Ensure pased url is formatted correctly to avoid unnecessary api errors\n if (!url.startsWith('/')) {\n url = `/${url}`\n }\n\n /* The jwt token may not exist if the login was bypassed due to previous session being alive\n * This is most likely due to timing issues between the 2 api authentication systems */\n if (!this._jwtToken?.token) {\n this.getJwtFromCookie();\n }\n\n // To avoid unauthorised errors ensure Jwt token is valid\n if (this.isJwtTokenRefreshRequired()) {\n /* To prevent our client recalling the server and getting multiple JWT tokens run exclusively.\n Once this process is unlocked if this is the first to call it will then call the API, if another process\n unlocks before it will load the jwt so this will skip the auth API call */\n await this._mutex.runExclusive(async () => {\n if (this.isJwtTokenRefreshRequired()) {\n await this.refreshJwtToken();\n }\n });\n }\n\n if (data) {\n data = JSON.stringify(data);\n }\n\n const response = await fetch(`${this._baseUrl}${url}`, {\n method,\n mode: 'cors',\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n 'content-type': 'application/json'\n },\n body: data\n });\n\n // Report errors back to end user to additional errors processing responses\n if (!response.ok) {\n const responseText = await response.text();\n throw Error(responseText);\n }\n\n return response;\n }\n\n /** Parses the response based on the response content-type header */\n private async parseResponse(response :Response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes('application/json')) {\n return await response.json() as T;\n } else {\n return await response.text() as unknown as T;\n }\n }\n\n /** Sends a Http Request with form data to the passed url\n * @param url url to send the request to\n * @param data form data to send in the body of the request\n * @returns response of the request */\n public async sendFormData(url: string, data: any): Promise {\n // Ensure pased url is formatted correctly to avoid unnecessary api errors\n if (!url.startsWith('/')) {\n url = `/${url}`\n }\n\n /* The jwt token may not exist if the login was bypassed due to previous session being alive\n * This is most likely due to timing issues between the 2 api authentication systems */\n if (!this._jwtToken?.token) {\n this.getJwtFromCookie();\n }\n\n // To avoid unauthorised errors ensure Jwt token is valid\n if (this.isJwtTokenRefreshRequired()) {\n /* To prevent our client recalling the server and getting multiple JWT tokens run exclusively.\n Once this process is unlocked if this is the first to call it will then call the API, if another process\n unlocks before it will load the jwt so this will skip the auth API call */\n await this._mutex.runExclusive(async () => {\n if (this.isJwtTokenRefreshRequired()) {\n await this.refreshJwtToken();\n }\n });\n }\n\n const response = await fetch(`${this._baseUrl}${url}`, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n },\n body: data\n });\n\n // Report errors back to end user to additional errors processing responses\n if (!response.ok) {\n const responseText = await response.text();\n throw Error(responseText);\n }\n\n return response;\n }\n\n /** Sends a Http Request with form data to the passed url\n * @param url url to send the request to\n * @param data form data to send in the body of the request\n * @returns response of the request */\n public async putFormData(url: string, data: any): Promise {\n // Ensure pased url is formatted correctly to avoid unnecessary api errors\n if (!url.startsWith('/')) {\n url = `/${url}`\n }\n\n /* The jwt token may not exist if the login was bypassed due to previous session being alive\n * This is most likely due to timing issues between the 2 api authentication systems */\n if (!this._jwtToken?.token) {\n this.getJwtFromCookie();\n }\n\n // To avoid unauthorised errors ensure Jwt token is valid\n if (this.isJwtTokenRefreshRequired()) {\n /* To prevent our client recalling the server and getting multiple JWT tokens run exclusively.\n Once this process is unlocked if this is the first to call it will then call the API, if another process\n unlocks before it will load the jwt so this will skip the auth API call */\n await this._mutex.runExclusive(async () => {\n if (this.isJwtTokenRefreshRequired()) {\n await this.refreshJwtToken();\n }\n });\n }\n\n const response = await fetch(`${this._baseUrl}${url}`, {\n method: 'PUT',\n mode: 'cors',\n headers: {\n 'Authorization': 'Bearer ' + this._jwtToken.token,\n },\n body: data\n });\n\n // Report errors back to end user to additional errors processing responses\n if (!response.ok) {\n const responseText = await response.text();\n throw Error(responseText);\n }\n\n return response;\n }\n\n /** Attempts to read the cached jwt from a cookie */\n private getJwtFromCookie() {\n const cookieToken: JwtToken | undefined = readCookie('x-jwt-auth');\n\n if (cookieToken) {\n this._jwtToken = cookieToken;\n }\n }\n\n /** Checks whether the current jwt token has expired */\n private isJwtTokenRefreshRequired(): boolean {\n if (!this._jwtToken?.token || !this._jwtToken?.utcExpiryDate) {\n return true;\n }\n\n const fiveMinutuesInMilliseconds = 300000;\n const nowWithRefreshOffset = Date.now() - fiveMinutuesInMilliseconds;\n return new Date(this._jwtToken.utcExpiryDate) <= new Date(new Date(nowWithRefreshOffset).toUTCString());\n }\n}\n\nexport const AcquaintApiNextClientPlugin: Plugin = {\n install: (app: App) => {\n const client = new AcquaintApiNextClient();\n app.provide('AcquaintApiNextClient', client);\n }\n}","import { RouteNames } from \"@/router/RouteNames\";\nimport { IHelpNavigator } from \"@/types/services/IHelpNavigator\";\nimport { App, Plugin } from \"vue\";\n\nexport class HelpNavigator implements IHelpNavigator {\n private readonly _baseUrl = 'https://acquaintweb.scrollhelp.site/home';\n\n public LoadHelpTopicByPageName(pageName: string): void {\n window.open(`${this._baseUrl}/${pageName}`)\n }\n\n public LoadHelpTopicFromCurrentRoute(): void { \n this.LoadHelpTopicByPageName(this.getHelpPageNameFromCurrentRouteName());\n }\n\n /** Gets the help topic page name from the current route */\n private getHelpPageNameFromCurrentRouteName() {\n let route = window.location.pathname.substring(1);\n\n /* When the route contains the id of a record, get the primary route\n * This will determine which help topic to load */\n if (route.includes('/')) {\n route = route.substring(0, route.indexOf('/'));\n }\n\n switch (route) {\n case RouteNames.LoginForm:\n return 'sign-in';\n case RouteNames.ResetPassword:\n case RouteNames.ResetPasswordConfirmation:\n return 'forgotten-password';\n case RouteNames.ContactList:\n case RouteNames.ContactPage:\n case RouteNames.Applicants:\n return 'applicant-list';\n case RouteNames.Configuration:\n return 'system-configuration';\n case RouteNames.CertificateList:\n case RouteNames.CertificatePage:\n return 'certificates';\n case RouteNames.Diary:\n return 'diary';\n case RouteNames.Properties:\n case RouteNames.PropertyPage:\n return 'properties';\n case RouteNames.PropertyOffers:\n return 'property-offers';\n case RouteNames.Tasks:\n return 'task-list';\n default:\n return '';\n }\n }\n}\n\nexport const HelpNavigatorPlugin: Plugin = {\n install: (app: App) => {\n const navigator = new HelpNavigator();\n app.provide('HelpNavigator', navigator);\n }\n}","export const licenseKey = 'ewogICJmb3JtYXQiOiAxLAogICJjdXN0b21lcklkIjogImJmODdmNGNjLWFlNDYtNDhhNy1hZGIzLWMyZWI2ZjMyNjgxZCIsCiAgIm1heFZlcnNpb25BbGxvd2VkIjogMjQxCn0=.gknoqz8+JDDvL5hr2pcnKzj/R6wjZ7A+NeMTrmKCXPg1Qxw/3xDz2DFPD0RbxfdhmksEpSP0FjdSwemAJIzp0vlKxbnAfhKfHpV9psDZjxFSbEmt3IAwJvQ4R46JecUpUNyT7w==';","import 'devextreme/dist/css/dx.common.css';\nimport './themes/generated/theme.base.css';\nimport './themes/generated/theme.additional.css';\nimport './assets/css/dx.material.Acquaint.css';\nimport './assets/css/fontawesome-all.css';\nimport 'vue-tel-input/vue-tel-input.css';\nimport \"../node_modules/devexpress-richedit/dist/dx.richedit.css\";\n\nimport { createApp } from \"vue\";\nimport router from \"./router\";\nimport themes from \"devextreme/ui/themes\";\n\nimport App from \"./App.vue\";\nimport appInfo from \"./app-info\";\nimport { AcquaintApiClientPlugin } from './services/AcquaintApiClient';\nimport { createPinia } from 'pinia';\nimport { AcquaintApiNextClientPlugin } from './services/AcquaintApiNextClient';\nimport { HelpNavigatorPlugin } from './services/HelpNavigator';\nimport config from 'devextreme/core/config'; \nimport { licenseKey } from './devextreme-license'; \n \nconfig({ licenseKey });\n\nthemes.initialized(() => {\n const app = createApp(App);\n const pinia = createPinia();\n\n app.use(router);\n app.use(AcquaintApiClientPlugin);\n app.use(AcquaintApiNextClientPlugin);\n app.use(HelpNavigatorPlugin);\n app.use(pinia);\n app.config.globalProperties.$appInfo = appInfo;\n app.mount('#app');\n});","export enum RouteNames {\n Home = 'home',\n Tasks = 'tasks',\n Keys = 'keys',\n LoginForm = 'login-form',\n ResetPassword = 'reset-password',\n ResetPasswordConfirmation = 'reset-password-confirmation',\n ContactList ='contacts',\n SupportCases = 'support-cases',\n Applicants='applicants',\n Properties='properties',\n ContactPage = 'contact',\n UtilitySwitchesList = 'utility-switches',\n Test = 'test',\n PropertyPage = 'property',\n NotFound = 'not-found',\n Configuration = 'configuration',\n UserManagement = 'user-management',\n UtilitySwitchSupportCases = 'utility-switch-support-cases',\n PropertyOffers = 'property-offers',\n Diary = 'diary',\n CertificateList = 'certificates',\n CertificatePage = 'certificate',\n AppoinmentsPage = 'appointments',\n AutoLogin = 'auto-login',\n WebViewings = 'web-viewings',\n PropertyMarketingList = 'property-marketing',\n WordDocument = 'word-document-page'\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-panel\" }\nconst _hoisted_2 = { class: \"user-info\" }\nconst _hoisted_3 = { class: \"user-name\" }\n\nimport DxContextMenu, { DxPosition } from \"devextreme-vue/context-menu\";\nimport DxList from \"devextreme-vue/list\";\nimport { ref, onMounted, computed } from \"vue\";\nimport { useCurrentUserStore } from '../../stores/CurrentUserStore'\nimport { CurrentUser } from '@/types/user/CurrentUser';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'user-panel',\n props: {\n /** \n * Defines the mode of the menu. \n * Can be used to determine different menu layouts or behaviors.\n * @type {string}\n * @default ''\n */\n menuMode: {\n type: String,\n default: ''\n },\n\n /** \n * An array of menu items to be displayed in the menu.\n * @type {Array}\n * @default []\n */\n menuItems: {\n type: Array,\n default: () => []\n }\n},\n setup(__props) {\n\n\n\nconst currentUser = ref();\nconst currentUserStore = useCurrentUserStore();\n\nonMounted(async () => {\n // Get Current User details from the Current User store\n currentUser.value = await currentUserStore.getCurrentUserDetails()\n})\n\n/*** Gets initials of the currently logged in user */\nconst userInitials = computed(() => {\n if (!currentUser.value?.name) {\n return '';\n }\n\n /* Find the first letter of the first 2 words in the user's name\n * Due to available space, we shouldn't show more than 2 initials */\n const initials = currentUser.value.name.match(/\\b(\\w)/g)?.slice(0, 2)?.join('');\n\n return initials ?? '';\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(userInitials.value), 1)\n ]),\n (__props.menuMode === 'context')\n ? (_openBlock(), _createBlock(_unref(DxContextMenu), {\n key: 0,\n target: \".user-button\",\n items: __props.menuItems,\n width: 100,\n \"show-event\": \"dxclick\",\n \"css-class\": \"user-menu\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxPosition), {\n my: \"top center\",\n at: \"bottom center\"\n })\n ]),\n _: 1\n }, 8, [\"items\"]))\n : _createCommentVNode(\"\", true),\n (__props.menuMode === 'list')\n ? (_openBlock(), _createBlock(_unref(DxList), {\n key: 1,\n class: \"dx-toolbar-menu-action\",\n items: __props.menuItems\n }, null, 8, [\"items\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./user-panel.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./user-panel.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./user-panel.vue?vue&type=style&index=0&id=89ca6084&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { UsersValidation } from 'acquaint-api/validation/UsersValidation';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, inject, ref, watch } from \"vue\";\nimport { ChangePassword } from '../../types/user/ChangePassword';\nimport AcquaintTextbox from '../ui/inputs/acquaint-textbox.vue';\nimport ModalBase from '../ui/modals/modal-base.vue';\n\nconst confirmNewPasswordValidationError = 'Password does not match the New Password';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'change-password',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue',\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\n// Reset filled in data when modal is closed\nwatch(() => showPopup.value, (value) => {\n if (!value) {\n passwordData.value.currentPassword = \"\";\n passwordData.value.newPassword = \"\";\n passwordData.value.confirmNewPassword = \"\";\n }\n});\n\nconst updatePassword = async (e: any) => {\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n try {\n await acquaintApiClient.httpPostVoid(`/app/user/changepassword`, {\n \"currentPassword\": passwordData.value.currentPassword,\n \"newPassword\": passwordData.value.newPassword\n });\n\n /* Changing password will invalidate current database connector token so it needs to refreshed\n * This avoids 401 unauthorized errors occuring */\n await acquaintApiClient.RefreshDatabaseConnectionToken(passwordData.value.newPassword);\n\n // Hide the form as the user has successfully updated their password\n closeForm();\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst passwordData = ref({\n currentPassword: \"\",\n newPassword: \"\",\n confirmNewPassword: \"\"\n});\n\nconst closeForm = () => {\n showPopup.value = false;\n passwordData.value.currentPassword = \"\";\n passwordData.value.newPassword = \"\";\n passwordData.value.confirmNewPassword = \"\";\n};\n\n// Custom error handling for new password fields\nconst newPasswordValidation = () => {\n if (passwordData.value.newPassword === passwordData.value.currentPassword) {\n newPasswordValidationError.value = 'New Password cannot be the same as Current Password';\n return false;\n }\n\n if (passwordData.value.newPassword.length < 4) {\n newPasswordValidationError.value = 'New Password must be a minimum of 4 characters';\n return false;\n }\n\n return true;\n};\n\nconst newPasswordValidationError = ref('');\n\nconst confirmNewPasswordValidation = () => passwordData.value.confirmNewPassword === passwordData.value.newPassword;\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showPopup).value = $event)),\n title: \"Change Password\"\n }, {\n content: _withCtx(() => [\n _createVNode(AcquaintTextbox, {\n modelValue: passwordData.value.currentPassword,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordData.value.currentPassword) = $event)),\n \"field-validation\": _unref(UsersValidation).Password,\n label: \"Current Password\",\n \"validation-group\": \"change-password\"\n }, null, 8, [\"modelValue\", \"field-validation\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: passwordData.value.newPassword,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((passwordData.value.newPassword) = $event)),\n \"field-validation\": _unref(UsersValidation).Password,\n label: \"New Password\",\n \"custom-validation\": newPasswordValidation,\n \"invalid-message\": newPasswordValidationError.value,\n \"validation-group\": \"change-password\"\n }, null, 8, [\"modelValue\", \"field-validation\", \"invalid-message\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: passwordData.value.confirmNewPassword,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((passwordData.value.confirmNewPassword) = $event)),\n \"field-validation\": _unref(UsersValidation).Password,\n label: \"Confirm New Password\",\n \"custom-validation\": confirmNewPasswordValidation,\n \"invalid-message\": confirmNewPasswordValidationError,\n \"validation-group\": \"change-password\"\n }, null, 8, [\"modelValue\", \"field-validation\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: (e) => { updatePassword(e) }, validationGroup: 'change-password' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { closeForm() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./change-password.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./change-password.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n","import { render } from \"./acquaint-logo.vue?vue&type=template&id=d94325d4\"\nconst script = {}\n\nimport \"./acquaint-logo.vue?vue&type=style&index=0&id=d94325d4&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createVNode as _createVNode, withCtx as _withCtx } from \"vue\"\n\nimport { computed, inject, ref, watch } from 'vue';\nimport ModalBase from '../ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { NameValuePair } from '@/types/generic/NameValuePair';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { version } from '../../../package.json';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'system-info-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst systemInfo = ref([]);\n\n/** Calls api to retrieve system info */\nconst getSystemInfo = async () => {\n try {\n return await apiClient.httpGet('app/system/info');\n } catch (err) {\n await displayErrorMessage(getErrorMessage(err));\n return [];\n }\n}\n\n/* When modal is shown, call api to get current system info. \n * This is deliberately not cached, so we can troubleshoot issues */\nwatch(() => props.modelValue, async () => {\n if (!props.modelValue) {\n return;\n }\n\n systemInfo.value = await getSystemInfo();\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n title: \"System Information\",\n width: _unref(ModalWidth).XSmall\n }, {\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(systemInfo.value, (item, index) => {\n return (_openBlock(), _createBlock(AcquaintInfoBox, {\n key: index,\n label: item.name,\n text: item.value\n }, null, 8, [\"label\", \"text\"]))\n }), 128)),\n _createVNode(AcquaintInfoBox, {\n label: \"Version\",\n text: _unref(version)\n }, null, 8, [\"text\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => showModal.value = false },\n shortcut: \"cancel\"\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]))\n}\n}\n\n})","import script from \"./system-info-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./system-info-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2006e3bf\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"grid-loading-pane\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"custom-header\"\n}\nconst _hoisted_3 = { class: \"main-title\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"dx-icon dx-icon-close\" }, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { DxPopover } from 'devextreme-vue/popover';\nimport ScrollView from '../scroll-view.vue';\nimport { computed } from 'vue';\nimport DxLoadIndicator from 'devextreme-vue/load-indicator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'popover-base',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n height: {\n type: String,\n default: 'auto'\n },\n width: {\n type: String,\n default: 'auto'\n },\n target: {\n type: String,\n required: true\n },\n /** \n * Determines whether to show Close Button.\n * @type {boolean}\n * @default true\n */\n showCloseButton: {\n type: Boolean,\n default: true\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n */\n title: {\n type: String,\n required: false\n },\n /** \n * Determines whether the control is loading.\n * @type {boolean}\n * @default false\n */\n loading: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'popupDisplayed'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopOver = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst closeModal = () => {\n showPopOver.value = false;\n};\n\nconst animationConfig = {\n show: {\n type: 'slide',\n from: {\n position: { my: 'top left', at: 'bottom right', of: \".layout-header\" },\n opacity: 0\n },\n to: {\n position: { my: 'top right', at: 'bottom right', of: \".layout-header\" },\n opacity: 1\n }\n },\n hide: {\n type: 'fade',\n from: 1,\n to: 0\n }\n};\n\nconst position = {\n at: 'bottom right',\n offset: {\n x: 0,\n y: 3\n },\n boundaryOffset: {\n x: 0,\n y: 0\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(DxPopover), {\n visible: showPopOver.value,\n \"onUpdate:visible\": _cache[0] || (_cache[0] = ($event: any) => ((showPopOver).value = $event)),\n target: props.target,\n onShowing: _cache[1] || (_cache[1] = ($event: any) => (emit('popupDisplayed'))),\n height: props.height,\n width: props.width,\n \"show-title\": true,\n showCloseButton: props.showCloseButton,\n title: props.title,\n animation: animationConfig,\n position: position\n }, {\n content: _withCtx(() => [\n (!__props.loading)\n ? (_openBlock(), _createBlock(ScrollView, { key: 0 }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"content\")\n ]),\n _: 3\n }))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(DxLoadIndicator), {\n height: 50,\n width: 50\n })\n ]))\n ]),\n title: _withCtx(() => [\n (props.showCloseButton && !props.title)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", { class: \"icon-section\" }, [\n _createElementVNode(\"div\", {\n class: \"close-button-holder\",\n onClick: closeModal\n }, _hoisted_5)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"visible\", \"target\", \"height\", \"width\", \"showCloseButton\", \"title\"]))\n}\n}\n\n})","import script from \"./popover-base.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./popover-base.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./popover-base.vue?vue&type=style&index=0&id=2006e3bf&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2006e3bf\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5f721772\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"modal-title\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-clock\" }),\n /*#__PURE__*/_createTextVNode(),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"Recently Accessed Records\")\n], -1))\nconst _hoisted_2 = { class: \"records-holder\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h6\", null, \"Contacts\", -1))\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-user\" }, null, -1))\nconst _hoisted_7 = { key: 1 }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h6\", null, \"Properties\", -1))\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-house\" }, null, -1))\nconst _hoisted_11 = { key: 2 }\n\nimport { ref, inject, computed } from 'vue';\nimport { PropertySummary as PropertySummaryModel } from '@/types/properties/PropertySummary';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { ContactSummary as ContactSummaryModel } from '@/types/contacts/ContactSummary'\nimport { useRouter } from 'vue-router';\nimport { RouteNames } from '@/router/RouteNames';\nimport { useRecentRecordsStore } from '@/stores/RecentRecordsStore';\nimport popoverBase from '../ui/popovers/popover-base.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'recent-records-popover',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n target: {\n type: String,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst router = useRouter();\nconst propertySummaryData = ref([]);\nconst contactSummary = ref([]);\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst recentRecordsStore = useRecentRecordsStore();\nconst loading = ref(false);\n\n\n\n\n\nconst showPopOver = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst popupDisplayed = async () => {\n // If we have opened the modal previously and fetched the recently accessed records from the store,\n // we will check to see if the data fetched from the store macthes the data we already have. If it\n // does, we does bother looping through the data and calling the getContactData, fetchPropertyData \n // functions or both.\n loading.value = true;\n await displayPropertyData();\n await displayContactsData();\n loading.value = false;\n};\n\nconst displayContactsData = async () => {\n const contactRecords = await recentRecordsStore.readContactRecordsCookie();\n\n // We must reset these as this prevents the same records arrays being displayed multiple times each time the modal is opened. \n contactSummary.value = [];\n\n // We cannot use the forEach array method asynchronously so we must use for loops to fetch each of the recent record's title.\n\n for (let i = 0; i < contactRecords.length; i++) {\n let fetchedContact: ContactSummaryModel | boolean = await getContactData(contactRecords[i]);\n\n if (fetchedContact) {\n contactSummary.value.push(fetchedContact);\n }\n }\n};\n\nconst displayPropertyData = async () => {\n const propertyRecords = await recentRecordsStore.readPropertyRecordsCookie();\n\n propertySummaryData.value = [];\n\n for (let i = 0; i < propertyRecords.length; i++) {\n let fetchedProperty: PropertySummaryModel | boolean = await fetchPropertyData(propertyRecords[i]);\n\n if (fetchedProperty) {\n propertySummaryData.value.push(fetchedProperty);\n }\n }\n};\n\nconst fetchPropertyData = async (id: number) => {\n try {\n return await apiClient.httpGet(`app/properties/${id}/summary`);\n } catch (err) {\n return false\n }\n};\n\nconst getContactData = async (id: number) => {\n try {\n return await apiClient.httpGet(`app/contacts/${id}/summary`);\n } catch (ex) {\n return false\n }\n};\n\nconst loadPropertyRecord = async (propertyId: number) => {\n showPopOver.value = false;\n router.push({ name: RouteNames.PropertyPage, params: { propertyid: propertyId.toString() } });\n};\n\n/** Redirects the user to the contact page */\nconst loadContactRecord = async (contactId: number) => {\n showPopOver.value = false;\n router.push({ name: RouteNames.ContactPage, params: { contactid: contactId.toString() } });\n};\n\nconst showNoDataMessage = computed(() => propertySummaryData.value.length == 0 && contactSummary.value.length == 0)\n\nconst height = computed(() => window.outerHeight)\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(popoverBase, {\n modelValue: showPopOver.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showPopOver).value = $event)),\n target: props.target,\n width: \"370px\",\n height: `${height.value}px`,\n onPopupDisplayed: popupDisplayed,\n loading: loading.value\n }, {\n title: _withCtx(() => [\n _hoisted_1\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_2, [\n (contactSummary.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_3, [\n _hoisted_4,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(contactSummary.value, (contact, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: index,\n onClick: ($event: any) => (loadContactRecord(contact.id))\n }, [\n _hoisted_6,\n _createElementVNode(\"span\", null, _toDisplayString(contact.name), 1)\n ], 8, _hoisted_5))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (propertySummaryData.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_7, [\n _hoisted_8,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(propertySummaryData.value, (property, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: index,\n onClick: ($event: any) => (loadPropertyRecord(property.id))\n }, [\n _hoisted_10,\n _createElementVNode(\"span\", null, _toDisplayString(property.address), 1)\n ], 8, _hoisted_9))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (showNoDataMessage.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \"There are no recently accessed records to display.\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"target\", \"height\", \"loading\"]))\n}\n}\n\n})","import script from \"./recent-records-popover.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./recent-records-popover.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./recent-records-popover.vue?vue&type=style&index=0&id=5f721772&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5f721772\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\nimport _imports_0 from '../../../public/pb-logo.png'\n\n\nconst _hoisted_1 = {\n key: 0,\n class: \"header-component\"\n}\nconst _hoisted_2 = { style: {\"height\":\"2.5rem\",\"width\":\"5.5rem\"} }\nconst _hoisted_3 = {\n key: 1,\n id: \"pb-logo\",\n src: _imports_0\n}\nconst _hoisted_4 = { class: \"site-name\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-microchip-ai ai-button\" }, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-clock\" }, null, -1)\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"help-icon header-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-question-circle\" })\n], -1)\n\nimport { ref, onMounted, computed, inject } from 'vue';\nimport DxButton from \"devextreme-vue/button\";\nimport DxToolbar, { DxItem } from \"devextreme-vue/toolbar\";\nimport UserPanel from './user-panel.vue'\nimport changePassword from '@/components/user/change-password.vue';\nimport { useCurrentUserStore } from '../../stores/CurrentUserStore'\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { useTaskListFiltersStore } from '@/stores/lists/TaskListFiltersStore';\nimport { useApplicantListStore } from '@/stores/lists/ApplicantListStore';\nimport { useContactListFiltersStore } from '@/stores/lists/ContactListFiltersStore';\nimport { usePropertyListFiltersStore } from '@/stores/lists/PropertyListStore';\nimport AcquaintLogo from '@/assets/acquaint-logo.vue';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { useAgentsStore } from '@/stores/utility-switching/AgentsStore';\nimport { useSwitchStatusesStore } from '@/stores/utility-switching/SwitchStatusesStore';\nimport SystemInfoModal from '../system/system-info-modal.vue';\nimport EditUserModal from '@/components/user-management/record/edit-user-modal.vue';\nimport { AppMode } from '@/enums/system/AppMode';\nimport RecentRecordsPopover from '../recent-records/recent-records-popover.vue';\nimport { RouteNames } from '@/router/RouteNames';\nimport { useRouter } from 'vue-router';\nimport { useRecentRecordsStore } from '@/stores/RecentRecordsStore';\nimport { openUtilitySwitchingHelp } from '@/utils/system/helpViewer';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { useContactTypeConfigurationStore } from '@/stores/ContactTypeConfigurationStore';\nimport { HelpNavigator } from '@/services/HelpNavigator';\nimport { useAgencyAccountStore } from '@/stores/utility-switching/AgencyAccountStore';\nimport AiTextGeneratorModal from '../ai/ai-text-generator-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'header-toolbar',\n props: {\n /** \n * Determines whether the menu toggle is enabled. \n * @type {boolean}\n * @default false\n */\n menuToggleEnabled: {\n type: Boolean,\n default: false\n },\n\n /** \n * The title to be displayed in the component. \n * @type {string}\n * @default ''\n */\n title: {\n type: String,\n default: ''\n },\n\n /** \n * Function to handle menu toggling.\n * @type {Function}\n * @required\n */\n toggleMenuFunc: {\n type: Function,\n required: true\n },\n\n /** \n * Function to handle user logout.\n * @type {Function}\n * @required\n */\n logOutFunc: {\n type: Function,\n required: true\n }\n},\n setup(__props) {\n\n\n\nconst currentUser = ref()\nconst currentUserStore = useCurrentUserStore();\nconst taskListFiltersStore = useTaskListFiltersStore();\nconst applicantListFiltersStore = useApplicantListStore()\nconst contactListFiltersStore = useContactListFiltersStore();\nconst propertyListFiltersStore = usePropertyListFiltersStore();\nconst userPermissionsStore = useUserPermissionsStore();\nconst agentsStore = useAgentsStore();\nconst switchStatusesStore = useSwitchStatusesStore();\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst editUserModalOpen = ref(false);\nconst openRecordsPopOver = ref(false);\nconst router = useRouter();\nconst recentRecordsStore = useRecentRecordsStore();\nconst contactTypeStore = useContactTypeConfigurationStore();\nconst agencyAccountStore = useAgencyAccountStore();\nconst openAITextGeneratorModal = ref(false);\n\nconst displayRecordsPopOver = () => {\n openRecordsPopOver.value = !openRecordsPopOver.value;\n};\n\nconst displayAIModal = () => {\n openAITextGeneratorModal.value = true;\n};\n\nonMounted(async () => {\n // Get Current User details from the Current User store\n currentUser.value = await currentUserStore.getCurrentUserDetails()\n})\n\nconst helpNavigator = inject('HelpNavigator') as HelpNavigator;\n\n/** Handles the Click event of the Help icon */\nconst helpIconClick = () => {\n switch (currentUser.value?.appMode) {\n case AppMode.UtilitySwitchingAgent:\n case AppMode.UtilitySwitchingCouncil:\n openUtilitySwitchingHelp();\n break;\n\n default:\n helpNavigator.LoadHelpTopicFromCurrentRoute();\n break;\n }\n};\n\nconst newFeaturesIconClick = () => {\n window.open('https://acquaintweb.scrollhelp.site/home/whats-new');\n};\n\nconst userMenuItems = computed(() => [\n {\n text: \"Profile\",\n icon: \"fas fa-user\",\n onClick: onProfileClick\n },\n {\n text: \"Change Password\",\n icon: \"fas fa-lock\",\n onClick: onChangePasswordClick\n },\n {\n text: 'Configuration',\n icon: '/icons/configuration.svg',\n onClick: onConfigurationClick\n },\n {\n text: \"Purchase SMS Text Credits\",\n icon: \"far fa-mobile\",\n onClick: onSmsTextCreditsClick,\n visible: currentUser.value?.appMode === AppMode.Full\n },\n {\n text: \"Purchase Email Credits\",\n icon: \"fas fa-envelope\",\n onClick: onEmailCreditsClick,\n visible: currentUser.value?.appMode === AppMode.Full\n },\n {\n text: \"Purchase AI Credits\",\n icon: \"fas fa-microchip-ai\",\n onClick: onAICreditsClick,\n visible: currentUser.value?.appMode === AppMode.Full\n },\n {\n text: \"Help\",\n icon: \"fas fa-question-circle\",\n onClick: helpIconClick,\n visible: currentUser.value?.appMode === AppMode.Full\n },\n {\n text: \"What’s New\",\n icon: \"fas fa-sparkles\",\n onClick: newFeaturesIconClick,\n visible: currentUser.value?.appMode === AppMode.Full\n },\n {\n text: \"System Information\",\n icon: \"fas fa-info-circle\",\n onClick: onSystemInfoClick\n },\n {\n text: \"Logout\",\n icon: \"fas fa-sign-out-alt\",\n onClick: onLogoutClick\n }\n]);\n\nconst showChangePasswordModal = ref(false);\n\nfunction onChangePasswordClick() {\n showChangePasswordModal.value = true;\n}\n\nasync function onLogoutClick() {\n try {\n await acquaintApiClient.httpPostVoid(`app/auth/logout`, null);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err), 2000);\n }\n\n // Clear all user related caches so they can be populated when the next user logs in\n currentUserStore.clearCache();\n taskListFiltersStore.clearCache();\n applicantListFiltersStore.clearCache();\n contactListFiltersStore.clearCache();\n propertyListFiltersStore.clearCache();\n userPermissionsStore.clearCache();\n agentsStore.clearCache();\n switchStatusesStore.clearCache();\n recentRecordsStore.clearCache();\n contactTypeStore.clearCache();\n agencyAccountStore.clearCache();\n\n acquaintApiClient.logout();\n}\n\nfunction onProfileClick() {\n editUserModalOpen.value = true;\n}\n\nconst siteName = computed(() => {\n if (!currentUser.value) {\n return '';\n }\n\n return currentUser.value.branchName ? `${currentUser.value.siteName} - ${currentUser.value.branchName}` : currentUser.value.siteName\n});\n\nconst showSystemInfoModal = ref(false);\n\n/* Handles the System Info menu item click. \n * Needs to be a standard function instead of an arrow function otherwise an error occurs */\nfunction onSystemInfoClick() {\n showSystemInfoModal.value = true;\n}\n\n/** Handles the Configuration menu item click. Must be a standard function to avoid DevExpress errors */\nfunction onConfigurationClick() {\n router.push({ name: RouteNames.Configuration });\n}\n\nasync function onSmsTextCreditsClick() {\n const sitePrefix = await currentUserStore.getSitePrefix();\n const siteId = currentUser.value?.siteID ?? 0;\n\n window.open(`https://www.acquaintcrm.co.uk/PurchaseSMSTextCredits.aspx?SitePrefix=${sitePrefix}&SiteID=${siteId}`)\n}\n\nconst onEmailCreditsClick = async () => {\n const sitePrefix = await currentUserStore.getSitePrefix();\n const siteId = currentUser.value?.siteID ?? 0;\n\n window.open(`https://www.acquaintcrm.co.uk/purchaseemailcredits.aspx?SitePrefix=${sitePrefix}&SiteID=${siteId}`)\n};\n\nconst onAICreditsClick = async () => {\n const sitePrefix = await currentUserStore.getSitePrefix();\n const siteId = currentUser.value?.siteID ?? 0;\n\n window.open(`https://www.acquaintcrm.co.uk/PurchaseAICredits.aspx?SitePrefix=${sitePrefix}&SiteID=${siteId}`)\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (currentUser.value)\n ? (_openBlock(), _createElementBlock(\"header\", _hoisted_1, [\n _createVNode(_unref(DxToolbar), { class: \"header-toolbar\" }, {\n menuUserItem: _withCtx(() => [\n _createVNode(UserPanel, {\n \"menu-items\": userMenuItems.value,\n \"menu-mode\": \"list\"\n }, null, 8, [\"menu-items\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n visible: __props.menuToggleEnabled,\n location: \"before\",\n \"css-class\": \"menu-button\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n icon: \"fas fa-bars\",\n \"styling-mode\": \"text\",\n onClick: __props.toggleMenuFunc\n }, null, 8, [\"onClick\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(DxItem), { location: \"before\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n (currentUser.value?.appMode === _unref(AppMode).Full)\n ? (_openBlock(), _createBlock(AcquaintLogo, { key: 0 }))\n : (_openBlock(), _createElementBlock(\"img\", _hoisted_3))\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { location: \"center\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(siteName.value), 1)\n ]),\n _: 1\n }),\n (currentUser.value?.appMode === _unref(AppMode).Full)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 0,\n location: \"after\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"recent-records header-icon\",\n onClick: displayAIModal,\n id: \"recentRecordsIcon\"\n }, _hoisted_6)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (currentUser.value?.appMode === _unref(AppMode).Full)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 1,\n location: \"after\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"recent-records header-icon\",\n onClick: displayRecordsPopOver,\n id: \"recentRecordsIcon\"\n }, _hoisted_8)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (currentUser.value?.appMode !== _unref(AppMode).Full)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 2,\n location: \"after\",\n onClick: helpIconClick\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxItem), {\n location: \"after\",\n \"locate-in-menu\": \"auto\",\n \"menu-item-template\": \"menuUserItem\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", null, [\n _createVNode(_unref(DxButton), {\n class: \"user-button authorization\",\n \"styling-mode\": \"text\"\n }, {\n default: _withCtx(() => [\n _createVNode(UserPanel, {\n \"menu-items\": userMenuItems.value,\n \"menu-mode\": \"context\"\n }, null, 8, [\"menu-items\"])\n ]),\n _: 1\n })\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(changePassword, {\n modelValue: showChangePasswordModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showChangePasswordModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(SystemInfoModal, {\n modelValue: showSystemInfoModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showSystemInfoModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n (currentUser.value)\n ? (_openBlock(), _createBlock(EditUserModal, {\n key: 0,\n modelValue: editUserModalOpen.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((editUserModalOpen).value = $event)),\n userId: currentUser.value.id\n }, null, 8, [\"modelValue\", \"userId\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(RecentRecordsPopover, {\n modelValue: openRecordsPopOver.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((openRecordsPopOver).value = $event)),\n target: \"#recentRecordsIcon\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(AiTextGeneratorModal, {\n modelValue: openAITextGeneratorModal.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((openAITextGeneratorModal).value = $event))\n }, null, 8, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./header-toolbar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./header-toolbar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./header-toolbar.vue?vue&type=style&index=0&id=01ca90ba&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, watch } from 'vue'\nimport FindContactModal from './find-contact-modal.vue';\nimport { useRouter } from 'vue-router';\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult';\nimport { RouteNames } from '@/router/RouteNames';\nimport { useContactRecordNavigationStore } from '@/stores/record-navigation/ContactRecordNavigationStore';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-contact',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * Controls the visibility of the \"New Contact\" button.\n * @type {Boolean}\n * @default false (button is hidden)\n */\n showNewContactButton: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Triggered when the user clicks to open the new contact creation modal.\n * Used to initiate the creation of a new contact.\n */\n 'openNewContactModal'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst contactRecordNavigationStore = useContactRecordNavigationStore();\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nwatch(() => props.modelValue, () => {\n /* If the screen is shown again, we should Clear the cached Record Navigation Store ready for new Navigation */\n if (props.modelValue) {\n contactRecordNavigationStore.clear();\n }\n});\n\nconst router = useRouter();\n\n/** Loads the selected contact */\nconst onContactSelected = (contact: ContactFindResult, ids: number[], index: number) => {\n if (!contact?.id) {\n return;\n }\n\n /* Cache the contacts for the Record Navigation before loading the contact record\n * So that we can navigate between records using next/previous buttons on the contact record */\n contactRecordNavigationStore.cacheContacts(ids, index)\n\n router.push({ name: RouteNames.ContactPage, params: { contactid: contact.id.toString() } });\n};\n\nconst onPrimarySelected = (primaryId: number) => {\n if (!primaryId) {\n return;\n }\n\n contactRecordNavigationStore.cacheContacts([primaryId], 0)\n\n router.push({ name: RouteNames.ContactPage, params: { contactid: primaryId.toString() } });\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(FindContactModal, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n onContactSelected: onContactSelected,\n onPrimaryContactSelected: onPrimarySelected,\n onOpenNewContactModal: _cache[1] || (_cache[1] = ($event: any) => (emit('openNewContactModal'))),\n showNewContactButton: props.showNewContactButton\n }, null, 8, [\"modelValue\", \"showNewContactButton\"]))\n}\n}\n\n})","import script from \"./find-contact.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-contact.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, watch } from 'vue'\nimport FindPropertyModal from './find-property-modal.vue';\nimport { PropertyFindResult } from '@/types/find/properties/PropertyFindResult';\nimport { useRouter } from 'vue-router';\nimport { RouteNames } from '@/router/RouteNames';\nimport { usePropertyRecordNavigationStore } from '@/stores/record-navigation/PropertyRecordNavigationStore';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-property',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst router = useRouter();\nconst recordNavigationStore = usePropertyRecordNavigationStore();\n\nwatch(() => props.modelValue, () => {\n if (props.modelValue) {\n clearRecordNavigationCache();\n }\n});\n\n/** Clear previous cached record navigation to avoid wrong properties appearing when user scrolls between records */\nconst clearRecordNavigationCache = () => recordNavigationStore.clear();\n\n/** Loads the selected property */\nconst onPropertySelected = (property: PropertyFindResult, propertyIds: number[], rowIndex: number) => {\n if (!property?.id) {\n return;\n }\n\n // Cache results so user can scroll between them\n recordNavigationStore.cacheProperties(propertyIds, rowIndex);\n\n router.push({ name: RouteNames.PropertyPage, params: { propertyid: property.id.toString() } });\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(FindPropertyModal, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n onPropertySelected: onPropertySelected\n }, null, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./find-property.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-property.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0489b6db\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"sub-title\" }, \"This process is used to bulk match and market property details to contacts via email. Each email sent will count as 1 credit.\", -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"count-title\" }, \"Number of Contacts to be processed:\", -1))\nconst _hoisted_3 = { class: \"count-fields\" }\n\nimport { computed, ref, inject, onMounted, watch } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport LookupSingleSelect from './ui/lookup/lookup-single-select.vue';\nimport { BranchEmailTemplateFilters } from '@/types/BranchEmailTemplateFilters';\nimport { useCurrentUserStore } from '@/stores/CurrentUserStore';\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { MassMarketingRecord } from '@/types/MassMarketingRecord';\nimport SingleSelect from './ui/dropdowns/single-select.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { standardInfoAlert } from '@/alerts/standardInfoAlert';\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport AcquaintInfoBox from './ui/inputs/acquaint-info-box.vue';\nimport NewEditEmailTemplatesModal from './email/new-edit-email-templates-modal.vue';\nimport { MassApplicantCount } from '@/types/MassApplicantCount';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'match-marketing-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\n\nconst currentUserStore = useCurrentUserStore();\nconst currentUserDetails = ref();\nconst matchMarketRecords = ref([]);\nconst fields = ref({\n branchId: -1,\n emailTemplatedId: -1\n});\nconst credits = ref(0);\nconst emailTemplates = ref([]);\nconst displayTemplateModal = ref(false);\nconst applicantCount = ref({\n salesContacts: 0,\n lettingsContacts: 0\n});\n\nonMounted(async () => {\n currentUserDetails.value = await currentUserStore.getCurrentUserDetails();\n fields.value.branchId = currentUserDetails.value?.siteID ?? -1;\n});\n\nconst sendEmails = async () => {\n try {\n matchMarketRecords.value = await apiNextClient.httpPost('/MatchAndMarkets', fields.value);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n matchMarketRecords.value = [];\n }\n};\n\nconst checkEmailSubmissionSuccess = async () => {\n const sendConfirmationAlert = await displayQuestionAlert('Are you sure you want to send these emails?');\n\n if (!sendConfirmationAlert.isConfirmed) {\n return;\n }\n\n await sendEmails();\n\n if (matchMarketRecords.value.length == 0) {\n return;\n }\n\n const successConfirmationAlert = await standardInfoAlert('Your Property Bulletin Emails are being queued and will be sent shortly.');\n\n if (successConfirmationAlert.isConfirmed || successConfirmationAlert.isDismissed) {\n showModal.value = false;\n }\n};\n\nwatch(() => showModal.value, () => {\n fetchEmailTemplates();\n getEmailCredits();\n fetchContactCount();\n})\n\nconst fetchEmailTemplates = async () => {\n try {\n emailTemplates.value = await apiNextClient.httpGet(`MatchAndMarkets/AllBulletinEmailTemplates`);\n } catch (err) {\n emailTemplates.value = [];\n }\n};\n\nconst getEmailCredits = async () => {\n try {\n credits.value = await apiNextClient.httpGet('/Email/getemailcreditbalance');\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n credits.value = 0;\n }\n};\n\nconst fetchContactCount = async () => {\n try {\n applicantCount.value = await apiNextClient.httpGet(`MatchAndMarkets/contacts/count?siteId=${fields.value.branchId}`);\n } catch (err) {\n applicantCount.value = {\n salesContacts: 0,\n lettingsContacts: 0\n };\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nwatch(() => fields.value.branchId, () => {\n fetchContactCount();\n});\n\nconst onCancelClick = () => showModal.value = false;\n\nconst modalHeight = computed(() => { return window.innerWidth < 768 ? '450px' : '400px' });\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showModal).value = $event)),\n title: \"Match Properties\",\n showCloseConfirmationPrompt: false,\n height: modalHeight.value,\n \"help-page\": \"match-and-marketing\"\n }, {\n content: _withCtx(() => [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(AcquaintInfoBox, {\n text: applicantCount.value.lettingsContacts.toString(),\n label: \"Lettings\",\n width: _unref(FieldSize).Small\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n text: applicantCount.value.salesContacts.toString(),\n label: \"Sales\",\n width: _unref(FieldSize).Small\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n text: credits.value.toString(),\n label: \"Email Credits\",\n width: _unref(FieldSize).Small\n }, null, 8, [\"text\", \"width\"])\n ]),\n _createVNode(LookupSingleSelect, {\n label: \"Branch\",\n modelValue: fields.value.branchId,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((fields.value.branchId) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Sites,\n showClearButton: true,\n allowZeroValue: true\n }, null, 8, [\"modelValue\", \"lookup-source\"]),\n _createVNode(SingleSelect, {\n label: \"Property Bulletin Template\",\n modelValue: fields.value.emailTemplatedId,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((fields.value.emailTemplatedId) = $event)),\n \"data-source\": emailTemplates.value,\n showClearButton: true,\n width: _unref(FieldSize).Full\n }, null, 8, [\"modelValue\", \"data-source\", \"width\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"before\",\n options: { text: 'View Template', onClick: () => { displayTemplateModal.value = true }, disabled: fields.value.emailTemplatedId == -1 }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Send Emails', onClick: () => { checkEmailSubmissionSuccess() }, disabled: fields.value.emailTemplatedId == -1 }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"height\"]),\n _createVNode(NewEditEmailTemplatesModal, {\n modelValue: displayTemplateModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((displayTemplateModal).value = $event)),\n configurationId: fields.value.emailTemplatedId\n }, null, 8, [\"modelValue\", \"configurationId\"])\n ], 64))\n}\n}\n\n})","import script from \"./match-marketing-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./match-marketing-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./match-marketing-modal.vue?vue&type=style&index=0&id=0489b6db&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0489b6db\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"dx-swatch-additional menu-container\" }\n\nimport DxTreeView, { DxItem } from \"devextreme-vue/tree-view\";\nimport { onMounted, ref, watch } from 'vue';\nimport { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\nimport FindContact from \"../find/contacts/find-contact.vue\";\nimport FindProperty from \"../find/properties/find-property.vue\";\nimport editTaskModal from \"../tasks/edit-task-modal.vue\";\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore'\nimport ContactModal from \"@/components/contacts/record/contact-modal.vue\";\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport EditNoteModal from \"../notes/edit-note-modal.vue\";\nimport NewCertificateModal from \"../certificates/new-certificate-modal.vue\";\nimport EditContactDetails from \"../contacts/record/edit-contact-details.vue\";\nimport { RouteNames } from '@/router/RouteNames';\nimport { useContactRecordNavigationStore } from '@/stores/record-navigation/ContactRecordNavigationStore';\nimport NewPropertyWizard from \"../properties/new-property-wizard.vue\";\nimport { usePropertyRecordNavigationStore } from \"@/stores/record-navigation/PropertyRecordNavigationStore\";\nimport displayInfoToast from \"@/alerts/infoToastAlert\";\nimport { useSystemConfigurationStore } from \"@/stores/SystemConfigurationStore\";\nimport { SystemConfiguration } from \"acquaint-api/constants/SystemConfiguration\";\nimport { useLoginStore } from '@/stores/LoginStore';\nimport { AutoLoginAction } from \"@/enums/system/AutoLoginAction\";\nimport MatchMarketingModal from \"../match-marketing-modal.vue\";\nimport NewsConfigurationModal from \"../website-news/news-configuration-modal.vue\";\nimport MarketingEmailDesignerModal from \"../email-marketing/marketing-email-designer-modal.vue\";\nimport QrCodeModal from '@/components/qr-code/qr-code-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'acquaint-nav-menu',\n props: {\n /** \n * Determines whether the component should be displayed in a compact mode.\n * @type {boolean}\n * @required\n */\n compactMode: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Emitted when a generic click action occurs.\n * Can be used for handling click events in the parent component.\n */\n 'click',\n\n /** \n * Emitted when the navigation menu should be closed.\n * Typically used for handling menu visibility on smaller screens.\n */\n 'closeNavigationMenu',\n\n /** \n * Emitted when switching to a tenant profile.\n * Sends relevant IDs for handling tenant-related actions.\n * @param {number} contactId - The ID of the contact associated with the tenant.\n * @param {number} propertyId - The ID of the property linked to the tenant.\n * @param {number} tenancyId - The ID of the tenancy agreement.\n */\n 'tenantSwitchClick',\n\n /** \n * Emitted when switching to a landlord profile.\n * Sends relevant property and tenancy details.\n * @param {number} propertyId - The ID of the property linked to the landlord.\n * @param {number} tenancyId - The ID of the tenancy agreement.\n */\n 'landlordSwitchClick',\n\n /** \n * Emitted when switching to a purchaser profile.\n * Sends contact and property details related to the purchaser.\n * @param {number} contactId - The ID of the contact associated with the purchaser.\n * @param {number} propertyId - The ID of the property linked to the purchaser.\n */\n 'purchaserSwitchClick',\n\n /** \n * Emitted when a new support case should be created.\n * Triggers the UI to display the new support case form.\n */\n 'showNewSupportCase'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst route = useRoute();\nconst router = useRouter();\nconst userPermissionsStore = useUserPermissionsStore();\nconst userPermissions = ref();\nconst contactRecordNavigationStore = useContactRecordNavigationStore();\nconst propertyRecordNavigationStore = usePropertyRecordNavigationStore();\nconst owner = ref(0);\nconst treeViewRef = ref | null>(null);\nconst systemConfigStore = useSystemConfigurationStore();\nconst loginStore = useLoginStore();\nconst showUtilitySwitchingOptions = ref(false);\nconst displayMatchMarketingModal = ref(false);\nconst displayNewsConfigurationModal = ref(false);\nconst displayMarketingEmailDesignerModal = ref(false);\nconst displayQRGeneratorModal = ref(false);\n\nfunction forwardClick(...args: any[]) {\n emit(\"click\", args);\n}\n\nfunction handleItemClick(e: { itemData: { path: RouteLocationRaw; }; event: any; }) {\n if (!e.itemData.path || props.compactMode) {\n return;\n }\n router.push(e.itemData.path);\n\n const pointerEvent = e.event;\n pointerEvent.stopPropagation();\n}\n\nfunction updateSelection() {\n if (!treeViewRef.value || !treeViewRef.value.instance) {\n return;\n }\n\n treeViewRef.value.instance.selectItem(route.path);\n treeViewRef.value.instance.expandItem(route.path);\n}\n\nonMounted(async () => {\n\n updateSelection();\n\n await getUserPermissions();\n\n showUtilitySwitchingOptions.value = !!(await systemConfigStore.getSystemConfigurationValue(SystemConfiguration.PropertyButtonID));\n\n if (props.compactMode) {\n treeViewRef.value.instance.collapseAll();\n }\n\n processAutoLoginAction();\n});\n\nconst processAutoLoginAction = () => {\n const autoLoginData = loginStore.getAutoLoginData();\n\n if (!autoLoginData) {\n return;\n }\n\n switch (autoLoginData.action) {\n case AutoLoginAction.SwitchToTenant:\n expandUtilitySwitchingMenu.value = true;\n emit('tenantSwitchClick', autoLoginData.contactId, autoLoginData.propertyId, autoLoginData.tenancyId);\n break;\n case AutoLoginAction.SwitchToLandlord:\n expandUtilitySwitchingMenu.value = true;\n emit('landlordSwitchClick', autoLoginData.propertyId, autoLoginData.tenancyId);\n break;\n case AutoLoginAction.SwitchToPurchaser:\n expandUtilitySwitchingMenu.value = true;\n emit('purchaserSwitchClick', autoLoginData.contactId, autoLoginData.propertyId);\n break;\n case AutoLoginAction.SwitchesList:\n expandUtilitySwitchingMenu.value = true;\n router.push({ name: RouteNames.UtilitySwitchesList });\n break;\n case AutoLoginAction.SupportCasesList:\n expandUtilitySwitchingMenu.value = true;\n router.push({ name: RouteNames.SupportCases })\n break;\n case AutoLoginAction.CreateSupportCase:\n expandUtilitySwitchingMenu.value = true;\n emit('showNewSupportCase');\n break;\n }\n\n // To prevent the auto login action being processed multiple times, reset it to None\n loginStore.resetAutoLoginAction();\n}\n\n// As the user may not have permission to edit the personal info we should disable the edit button\nconst getUserPermissions = async () => {\n userPermissions.value = await userPermissionsStore.getUserPermissions()\n}\n\nwatch(\n () => route.path,\n () => {\n updateSelection();\n }\n);\n\nwatch(\n () => props.compactMode,\n () => {\n if (props.compactMode) {\n treeViewRef.value.instance.collapseAll();\n } else {\n updateSelection();\n }\n }\n);\n\nconst showCreateTaskModal = ref(false);\nconst showFindContactModal = ref(false);\nconst showFindPropertyModal = ref(false);\nconst showNewContactModal = ref(false);\nconst showNewNoteModal = ref(false);\nconst showNewCertificateModal = ref(false);\nconst displayEditContactModal = ref(false);\nconst reDisplayFindContactModal = ref(false);\nconst showNewPropertyModal = ref(false);\nconst expandUtilitySwitchingMenu = ref(false);\n\nconst createTask = () => showCreateTaskModal.value = true;\n\n// If a user has started to create a new contact, chosen to edit an already existing record, the edit modal must be opened with this selected\n// contact's details.\n\nconst editContactModalId = ref(0);\n\nconst openEditContactModal = (id: number) => {\n editContactModalId.value = id;\n displayEditContactModal.value = true;\n};\n\nconst contactCreated = (newContactId: number, createNewProperty: boolean) => {\n if (!newContactId && reDisplayFindContactModal.value) {\n showFindContactModal.value = true;\n reDisplayFindContactModal.value = false\n return;\n }\n\n if (!newContactId) {\n return;\n }\n\n if (createNewProperty) {\n owner.value = newContactId;\n showNewPropertyModal.value = true;\n return;\n }\n\n // If a user accesses a contact page and then creates a new one, we want to clear the records so that the navigation buttons don't appear.\n // Otherwise they will, and the old count of contacts and the index of the contact the user was on will appear on the new contact's page.\n contactRecordNavigationStore.clear();\n router.push({ name: RouteNames.ContactPage, params: { contactid: newContactId.toString() } });\n reDisplayFindContactModal.value = false\n};\n\nconst openNewContactModal = () => {\n reDisplayFindContactModal.value = true\n showNewContactModal.value = true;\n};\n\nconst newPropertyWizardClose = async (newProperty: boolean, newPropertyId: number) => {\n if (!newProperty) {\n return;\n }\n\n // Cache the properties so users can navigate between records on the property page\n propertyRecordNavigationStore.cacheProperties([newPropertyId], 0);\n\n router.push({ name: RouteNames.PropertyPage, params: { propertyid: newPropertyId.toString() } });\n};\n\nconst createNewProperty = () => {\n // We must reset this to 0 so the owner field is cleared\n owner.value = 0;\n showNewPropertyModal.value = true;\n};\n\nconst onNewAppointmentClick = (e: any) => {\n if (screen.width < 600) {\n emit(\"closeNavigationMenu\", e);\n }\n\n if (router.currentRoute.value.name == RouteNames.Diary) {\n screen.width < 992 ? displayInfoToast('Double tap on a time slot to create an Appointment.') : displayInfoToast('Double click on a time slot to create an Appointment.');\n } else {\n router.push({ name: RouteNames.Diary });\n }\n}\n\nconst onSwitchToTenantClick = () => emit('tenantSwitchClick');\nconst onSwitchToLandlordClick = () => emit('landlordSwitchClick');\nconst onSwitchToPurchaserClick = () => emit('purchaserSwitchClick');\n\nconst openTcfPdf = () => {\n window.open('https://supplierserviceterms.z33.web.core.windows.net/Tenant_Consent_Form.pdf')\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"dx-swatch side-navigation-menu\",\n onClick: forwardClick\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxTreeView), {\n ref_key: \"treeViewRef\",\n ref: treeViewRef,\n \"key-expr\": \"path\",\n \"selection-mode\": \"single\",\n \"focus-state-enabled\": false,\n \"expand-event\": \"click\",\n onItemClick: handleItemClick,\n width: \"100%\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n icon: \"/icons/home.svg\",\n text: \"Home\",\n path: \"/home\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/find.svg\",\n text: \"Find\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n text: \"Contact\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (showFindContactModal.value = true))\n }),\n _createVNode(_unref(DxItem), {\n text: \"Property\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (showFindPropertyModal.value = true))\n })\n ]),\n _: 1\n }),\n (showUtilitySwitchingOptions.value)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 0,\n icon: \"fas fa-wrench\",\n text: \"Utility Switching\",\n expanded: expandUtilitySwitchingMenu.value,\n \"onUpdate:expanded\": _cache[2] || (_cache[2] = ($event: any) => ((expandUtilitySwitchingMenu).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n icon: \"/icons/TenantSwitch.svg\",\n text: \"Switch to Tenant\",\n onClick: onSwitchToTenantClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/LandlordSwitch.svg\",\n text: \"Switch to Landlord\",\n onClick: onSwitchToLandlordClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/PurchaserSwitch.svg\",\n text: \"Switch to Purchaser\",\n onClick: onSwitchToPurchaserClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/Switchover.svg\",\n text: \"Switches\",\n path: \"/switches\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/SupportCase.svg\",\n text: \"Support Cases\",\n path: \"/support-cases\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/Document.svg\",\n text: \"Consent Form\",\n onClick: openTcfPdf\n })\n ]),\n _: 1\n }, 8, [\"expanded\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxItem), {\n icon: \"fas fa-plus\",\n text: \"Create New\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n text: \"Appointment\",\n disabled: !userPermissions.value?.appointments.new,\n onClick: _cache[3] || (_cache[3] = (e) => onNewAppointmentClick(e))\n }, null, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), {\n text: \"Contact\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (showNewContactModal.value = true)),\n disabled: !userPermissions.value?.contacts.new\n }, null, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), {\n text: \"Property\",\n onClick: createNewProperty,\n disabled: !userPermissions.value?.properties.new\n }, null, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), {\n text: \"Note\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (showNewNoteModal.value = true)),\n disabled: !userPermissions.value?.correspondence.new\n }, null, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), {\n disabled: !userPermissions.value?.correspondence.new,\n text: \"Task\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (createTask()))\n }, null, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), {\n text: \"Certificate\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (showNewCertificateModal.value = true))\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), {\n icon: \"fas fa-calendar-alt\",\n text: \"Diary\",\n path: \"/diary\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/contacts.svg\",\n text: \"Contact List\",\n path: \"/contacts\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/houses.svg\",\n text: \"Property List\",\n path: \"/properties\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/applicants.svg\",\n text: \"Applicant List\",\n path: \"/applicants\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/task.svg\",\n text: \"Task List\",\n path: \"/tasks\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-calendar-check\",\n text: \"Appointment List\",\n path: \"/appointments\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"fa-sharp fa-solid fa-money-check-pen\",\n text: \"Property Offers\",\n path: \"/property-offers\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-file-certificate\",\n text: \"Certificate List\",\n path: \"/certificates\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-globe-pointer\",\n text: \"Website Views List\",\n path: \"/web-viewings\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-house-flag\",\n text: \"Property Marketing List\",\n path: \"/property-marketing\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-bullhorn\",\n text: \"Marketing\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n icon: \"far fa-newspaper\",\n text: \"Website News\",\n onClick: _cache[8] || (_cache[8] = () => displayNewsConfigurationModal.value = true)\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-house-user\",\n text: \"Match & Marketing\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (displayMatchMarketingModal.value = true))\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-envelope\",\n text: \"Marketing Email Designer\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (displayMarketingEmailDesignerModal.value = true))\n }),\n _createVNode(_unref(DxItem), {\n icon: \"far fa-qrcode\",\n text: \"QR Code Generator\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (displayQRGeneratorModal.value = true))\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 512)\n ]),\n _createVNode(EditContactDetails, {\n contactId: editContactModalId.value,\n modelValue: displayEditContactModal.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((displayEditContactModal).value = $event))\n }, null, 8, [\"contactId\", \"modelValue\"]),\n _createVNode(editTaskModal, {\n id: 0,\n modelValue: showCreateTaskModal.value,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((showCreateTaskModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(FindContact, {\n modelValue: showFindContactModal.value,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((showFindContactModal).value = $event)),\n onOpenNewContactModal: openNewContactModal,\n showNewContactButton: userPermissions.value?.properties.new ?? false\n }, null, 8, [\"modelValue\", \"showNewContactButton\"]),\n _createVNode(FindProperty, {\n modelValue: showFindPropertyModal.value,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((showFindPropertyModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(ContactModal, {\n modelValue: showNewContactModal.value,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((showNewContactModal).value = $event)),\n onOpenEditContactModal: openEditContactModal,\n onContactCreated: contactCreated\n }, null, 8, [\"modelValue\"]),\n _createVNode(EditNoteModal, {\n modelValue: showNewNoteModal.value,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = ($event: any) => ((showNewNoteModal).value = $event)),\n id: 0\n }, null, 8, [\"modelValue\"]),\n _createVNode(NewCertificateModal, {\n modelValue: showNewCertificateModal.value,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = ($event: any) => ((showNewCertificateModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(NewPropertyWizard, {\n modelValue: showNewPropertyModal.value,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = ($event: any) => ((showNewPropertyModal).value = $event)),\n onModalClosed: newPropertyWizardClose,\n ownerId: owner.value\n }, null, 8, [\"modelValue\", \"ownerId\"]),\n _createVNode(MatchMarketingModal, {\n modelValue: displayMatchMarketingModal.value,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = ($event: any) => ((displayMatchMarketingModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(NewsConfigurationModal, {\n modelValue: displayNewsConfigurationModal.value,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = ($event: any) => ((displayNewsConfigurationModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(MarketingEmailDesignerModal, {\n modelValue: displayMarketingEmailDesignerModal.value,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = ($event: any) => ((displayMarketingEmailDesignerModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(QrCodeModal, {\n modelValue: displayQRGeneratorModal.value,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = ($event: any) => ((displayQRGeneratorModal).value = $event))\n }, null, 8, [\"modelValue\"])\n ]))\n}\n}\n\n})","import script from \"./acquaint-nav-menu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./acquaint-nav-menu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./acquaint-nav-menu.vue?vue&type=style&index=0&id=9f6a855a&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"dx-swatch-additional menu-container\" }\n\nimport { useAgencyAccountStore } from \"@/stores/utility-switching/AgencyAccountStore\";\nimport DxTreeView, { DxItem } from \"devextreme-vue/tree-view\";\nimport { onMounted, ref, watch } from 'vue';\nimport { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'utility-switching-agent-nav-menu',\n props: {\n /** \n * Determines whether the component should be displayed in a compact mode.\n * @type {boolean}\n * @required\n */\n compactMode: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Emitted when a general click action occurs.\n * Can be used to handle generic click events in the parent component.\n */\n 'click',\n /** \n * Emitted when the user switches to a tenant role.\n * Typically used to update the UI or trigger relevant logic in the parent component.\n */\n 'tenantSwitchClick',\n /** \n * Emitted when the user switches to a landlord role.\n * Can be used to update the UI or load specific data related to landlords.\n */\n 'landlordSwitchClick',\n /** \n * Emitted when the user switches to a purchaser role.\n * Allows the parent component to react accordingly\n */\n 'purchaserSwitchClick'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst agencyAccountStore = useAgencyAccountStore();\n\nconst treeViewRef = ref | null>(null);\n\nfunction forwardClick(...args: any[]) {\n emit(\"click\", args);\n}\n\nfunction handleItemClick(e: { itemData: { path: RouteLocationRaw; }; event: any; }) {\n if (!e.itemData.path || props.compactMode) {\n return;\n }\n router.push(e.itemData.path);\n\n const pointerEvent = e.event;\n pointerEvent.stopPropagation();\n}\n\nfunction updateSelection() {\n if (!treeViewRef.value || !treeViewRef.value.instance) {\n return;\n }\n\n // Treat support cases for switches the same as support cases to improve UX\n const routePath = route.path.includes('/support-cases') ? '/support-cases' : route.path;\n\n treeViewRef.value.instance.selectItem(routePath);\n treeViewRef.value.instance.expandItem(routePath);\n}\n\nonMounted(async () => {\n updateSelection();\n if (props.compactMode) {\n treeViewRef.value.instance.collapseAll();\n }\n\n // To improve performance of new switch screens, pre-cache agent account info\n await agencyAccountStore.getAccount();\n});\n\nwatch(\n () => route.path,\n () => {\n updateSelection();\n }\n);\n\nwatch(\n () => props.compactMode,\n () => {\n if (props.compactMode) {\n treeViewRef.value.instance.collapseAll();\n } else {\n updateSelection();\n }\n }\n);\n\nconst onSwitchToTenantClick = () => emit('tenantSwitchClick');\n\nconst onSwitchToLandlordClick = () => emit('landlordSwitchClick');\nconst onSwitchToPurchaserClick = () => emit('purchaserSwitchClick');\n\nconst directConsentUser = () => {\n window.open('https://supplierserviceterms.z33.web.core.windows.net/Tenant_Consent_Form.pdf')\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"dx-swatch side-navigation-menu\",\n onClick: forwardClick\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxTreeView), {\n ref_key: \"treeViewRef\",\n ref: treeViewRef,\n \"key-expr\": \"path\",\n \"selection-mode\": \"single\",\n \"focus-state-enabled\": false,\n \"expand-event\": \"click\",\n onItemClick: handleItemClick,\n width: \"100%\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n icon: \"/icons/home.svg\",\n text: \"Home\",\n path: \"/home\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/TenantSwitch.svg\",\n text: \"Switch to Tenant\",\n onClick: onSwitchToTenantClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/LandlordSwitch.svg\",\n text: \"Switch to Landlord\",\n onClick: onSwitchToLandlordClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/PurchaserSwitch.svg\",\n text: \"Switch to Purchaser\",\n onClick: onSwitchToPurchaserClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/Switchover.svg\",\n text: \"Switches\",\n path: \"/switches\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/SupportCase.svg\",\n text: \"Support Cases\",\n path: \"/support-cases\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/Document.svg\",\n text: \"Consent Form\",\n onClick: directConsentUser\n })\n ]),\n _: 1\n }, 512)\n ])\n ]))\n}\n}\n\n})","import script from \"./utility-switching-agent-nav-menu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./utility-switching-agent-nav-menu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./utility-switching-agent-nav-menu.vue?vue&type=style&index=0&id=6c9d2da3&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"dx-swatch-additional menu-container\" }\n\nimport { useAgencyAccountStore } from \"@/stores/utility-switching/AgencyAccountStore\";\nimport DxTreeView, { DxItem } from \"devextreme-vue/tree-view\";\nimport { onMounted, ref, watch } from 'vue';\nimport { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'utility-switching-council-nav-menu',\n props: {\n /** \n * Determines whether the component should be displayed in a compact mode.\n * @type {boolean}\n * @required\n */\n compactMode: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Emitted when a general click action occurs.\n * Can be used to handle generic click events in the parent component.\n */\n 'click',\n /** \n * Emitted when the user click Surrender (Landlord).\n */\n 'surrenderClick',\n /** \n * Emitted when the user switches to council Purchaser.\n * Can be used to update the UI or load specific data related to landlords.\n */\n 'councilPurchaserSwitchClick',\n /** \n * Emitted when the user switches to council Allocation.\n * Can be used to update the UI or load specific data related to landlords.\n */\n 'councilAllocationSwitchClick'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst agencyAccountStore = useAgencyAccountStore();\nconst treeViewRef = ref | null>(null);\n\nfunction forwardClick(...args: any[]) {\n emit(\"click\", args);\n}\n\nfunction handleItemClick(e: { itemData: { path: RouteLocationRaw; }; event: any; }) {\n if (!e.itemData.path || props.compactMode) {\n return;\n }\n router.push(e.itemData.path);\n\n const pointerEvent = e.event;\n pointerEvent.stopPropagation();\n}\n\nfunction updateSelection() {\n if (!treeViewRef.value || !treeViewRef.value.instance) {\n return;\n }\n\n // Treat support cases for switches the same as support cases to improve UX\n const routePath = route.path.includes('/support-cases') ? '/support-cases' : route.path;\n\n treeViewRef.value.instance.selectItem(routePath);\n treeViewRef.value.instance.expandItem(routePath);\n}\n\nonMounted(async () => {\n updateSelection();\n if (props.compactMode) {\n treeViewRef.value.instance.collapseAll();\n }\n\n // To improve performance of new switch screens, pre-cache agent account info\n await agencyAccountStore.getAccount();\n});\n\nwatch(\n () => route.path,\n () => {\n updateSelection();\n }\n);\n\nwatch(\n () => props.compactMode,\n () => {\n if (props.compactMode) {\n treeViewRef.value.instance.collapseAll();\n } else {\n updateSelection();\n }\n }\n);\n\nconst directConsentUser = () => {\n window.open('https://supplierserviceterms.z33.web.core.windows.net/Tenant_Consent_Form.pdf')\n};\n\nconst surrenderClick = () => {\n emit('surrenderClick');\n}\nconst onSwitchToPurchaserClick = () => emit('councilPurchaserSwitchClick');\nconst onAllocationSwitchClick = () => emit('councilAllocationSwitchClick');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"dx-swatch side-navigation-menu\",\n onClick: forwardClick\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxTreeView), {\n ref_key: \"treeViewRef\",\n ref: treeViewRef,\n \"key-expr\": \"path\",\n \"selection-mode\": \"single\",\n \"focus-state-enabled\": false,\n \"expand-event\": \"click\",\n onItemClick: handleItemClick,\n width: \"100%\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n icon: \"/icons/home.svg\",\n text: \"Home\",\n path: \"/home\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/TenantSwitch.svg\",\n text: \"Allocation (Tenant)\",\n onClick: onAllocationSwitchClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/LandlordSwitch.svg\",\n text: \"Surrender (Landlord)\",\n onClick: surrenderClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/PurchaserSwitch.svg\",\n text: \"Switch to Buyer\",\n onClick: onSwitchToPurchaserClick\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/Switchover.svg\",\n text: \"Switches\",\n path: \"/switches\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/SupportCase.svg\",\n text: \"Support Cases\",\n path: \"/support-cases\"\n }),\n _createVNode(_unref(DxItem), {\n icon: \"/icons/Document.svg\",\n text: \"Consent Form\",\n onClick: directConsentUser\n })\n ]),\n _: 1\n }, 512)\n ])\n ]))\n}\n}\n\n})","import script from \"./utility-switching-council-nav-menu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./utility-switching-council-nav-menu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./utility-switching-council-nav-menu.vue?vue&type=style&index=0&id=f6d5eca8&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"side-nav-outer-toolbar\" }\n\nimport DxDrawer from \"devextreme-vue/drawer\";\nimport DxScrollView from \"devextreme-vue/scroll-view\";\nimport HeaderToolbar from '../components/layout/header-toolbar.vue'\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useRoute } from 'vue-router';\nimport AcquaintNavMenu from \"@/components/layout/acquaint-nav-menu.vue\";\nimport UtilitySwitchingAgentNavMenu from \"@/components/layout/utility-switching-agent-nav-menu.vue\";\nimport UtilitySwitchingCouncilNavMenu from \"@/components/layout/utility-switching-council-nav-menu.vue\";\nimport { useCurrentUserStore } from \"@/stores/CurrentUserStore\";\nimport { CurrentUser } from \"@/types/user/CurrentUser\";\nimport { AppMode } from \"@/enums/system/AppMode\";\nimport TenantSwitchingModal from \"@/components/switches/tenant-switching/tenant-switching-modal.vue\";\nimport LandlordSwitchingModal from \"@/components/switches/landlord-switching/landlord-switching-modal.vue\";\nimport PurchasingSwitchingModal from \"@/components/switches/purchaser-switching/purchasing-switching-modal.vue\";\nimport SurrenderCouncilSwitch from \"@/components/switches/landlord-switching/surrender-council-switch.vue\";\nimport CouncilPurchasingSwitchingModal from \"@/components/switches/purchaser-switching/council-purchasing-switching-modal.vue\";\nimport CouncilAllocationModal from \"@/components/switches/tenant-switching/council-allocation-modal.vue\";\nimport NewSupportCaseModal from \"@/components/support-cases/new-support-case-modal.vue\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'side-nav-outer-toolbar',\n props: {\n title: String,\n isXSmall: Boolean,\n isLarge: Boolean\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nconst route = useRoute();\n\nconst scrollViewRef = ref(null);\nconst menuOpened = ref(props.isLarge);\nconst menuTemporaryOpened = ref(false);\n\nfunction toggleMenu(e: any) {\n const pointerEvent = e.event;\n pointerEvent.stopPropagation();\n if (menuOpened.value) {\n menuTemporaryOpened.value = false;\n }\n menuOpened.value = !menuOpened.value;\n}\n\nfunction handleSideBarClick() {\n if (menuOpened.value === false) {\n menuTemporaryOpened.value = true;\n }\n menuOpened.value = true;\n}\n\nconst drawerOptions = computed(() => {\n const shaderEnabled = !props.isLarge;\n\n return {\n menuMode: props.isLarge ? \"shrink\" : \"overlap\",\n menuRevealMode: props.isXSmall ? \"slide\" : \"expand\",\n minMenuSize: props.isXSmall ? 0 : 60,\n maxMenuSize: props.isXSmall ? 250 : undefined,\n closeOnOutsideClick: shaderEnabled,\n shaderEnabled\n };\n});\n\nwatch(\n () => props.isLarge,\n () => {\n if (!menuTemporaryOpened.value) {\n menuOpened.value = props.isLarge;\n }\n });\n\nwatch(\n () => route.path,\n () => {\n if (menuTemporaryOpened.value || !props.isLarge) {\n menuOpened.value = false;\n menuTemporaryOpened.value = false;\n }\n\n scrollViewRef.value?.instance?.scrollTo(0);\n }\n);\n\nonMounted(async () => {\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n});\n\nconst currentUserStore = useCurrentUserStore();\nconst currentUser = ref();\nconst showTenantSwitchModal = ref(false);\nconst showLandlordSwitchModal = ref(false);\nconst showNewPurchaserSwitchModal = ref(false);\nconst openSurrenderModal = ref(false);\nconst showNewCouncilPurchaserSwitchModal = ref(false);\nconst showNewCouncilAllocationSwitchModal = ref(false);\nconst showNewSupportCaseModal = ref(false);\nconst acquaintDesktopPropertyId = ref(-1);\nconst acquaintDesktopContactId = ref(-1);\nconst acquaintDesktopTenancyId = ref(-1);\n\nconst openPurchaserSwitchFromDesktop = (contactId:number, propertyId:number) =>{\n acquaintDesktopContactId.value = contactId;\n acquaintDesktopPropertyId.value = propertyId;\n showNewPurchaserSwitchModal.value = true;\n};\n\nconst openTenantSwitchFromDesktop = (contactId:number, propertyId:number, tenancyId:number) =>{\n acquaintDesktopContactId.value = contactId;\n acquaintDesktopPropertyId.value = propertyId;\n acquaintDesktopTenancyId.value = tenancyId;\n showTenantSwitchModal.value = true;\n};\n\nconst openLandlordSwitchFromDesktop = (propertyId:number, tenancyId: number = -1) =>{\n acquaintDesktopPropertyId.value = propertyId;\n acquaintDesktopTenancyId.value = tenancyId;\n showLandlordSwitchModal.value = true;\n};\n\nwatch(() => showTenantSwitchModal.value, (newVal: boolean, oldVal: boolean) => {\n if (newVal === oldVal) {\n return;\n }\n\n // To prevent duplicate switches from being submitted, reset cached ids once the modal has been closed\n if (!newVal) {\n resetCachedDesktopIds();\n }\n});\n\nwatch(() => showLandlordSwitchModal.value, (newVal: boolean, oldVal: boolean) => {\n if (newVal === oldVal) {\n return;\n }\n\n // To prevent duplicate switches from being submitted, reset cached ids once the modal has been closed\n if (!newVal) {\n resetCachedDesktopIds();\n }\n});\n\nwatch(() => showNewPurchaserSwitchModal.value, (newVal: boolean, oldVal: boolean) => {\n if (newVal === oldVal) {\n return;\n }\n\n // To prevent duplicate switches from being submitted, reset cached ids once the modal has been closed \n if (!newVal) {\n resetCachedDesktopIds();\n }\n});\n\nconst resetCachedDesktopIds = () => {\n acquaintDesktopContactId.value = 0;\n acquaintDesktopPropertyId.value = 0;\n acquaintDesktopTenancyId.value = 0;\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(HeaderToolbar, {\n class: \"layout-header\",\n \"menu-toggle-enabled\": true,\n \"toggle-menu-func\": toggleMenu,\n title: __props.title\n }, null, 8, [\"title\"]),\n _createVNode(_unref(DxDrawer), {\n class: \"layout-body\",\n position: \"before\",\n template: \"menuTemplate\",\n opened: menuOpened.value,\n \"onUpdate:opened\": _cache[7] || (_cache[7] = ($event: any) => ((menuOpened).value = $event)),\n \"opened-state-mode\": drawerOptions.value.menuMode,\n \"reveal-mode\": drawerOptions.value.menuRevealMode,\n \"min-size\": drawerOptions.value.minMenuSize,\n \"max-size\": drawerOptions.value.maxMenuSize,\n shading: drawerOptions.value.shaderEnabled,\n \"close-on-outside-click\": drawerOptions.value.closeOnOutsideClick\n }, {\n menuTemplate: _withCtx(() => [\n (currentUser.value?.appMode == _unref(AppMode).UtilitySwitchingAgent)\n ? (_openBlock(), _createBlock(UtilitySwitchingAgentNavMenu, {\n key: 0,\n \"compact-mode\": !menuOpened.value,\n onClick: handleSideBarClick,\n onTenantSwitchClick: _cache[0] || (_cache[0] = ($event: any) => (showTenantSwitchModal.value = true)),\n onPurchaserSwitchClick: _cache[1] || (_cache[1] = ($event: any) => (showNewPurchaserSwitchModal.value = true)),\n onLandlordSwitchClick: _cache[2] || (_cache[2] = ($event: any) => (showLandlordSwitchModal.value = true))\n }, null, 8, [\"compact-mode\"]))\n : (currentUser.value?.appMode == _unref(AppMode).UtilitySwitchingCouncil)\n ? (_openBlock(), _createBlock(UtilitySwitchingCouncilNavMenu, {\n key: 1,\n \"compact-mode\": !menuOpened.value,\n onClick: handleSideBarClick,\n onCouncilPurchaserSwitchClick: _cache[3] || (_cache[3] = ($event: any) => (showNewCouncilPurchaserSwitchModal.value = true)),\n onCouncilAllocationSwitchClick: _cache[4] || (_cache[4] = ($event: any) => (showNewCouncilAllocationSwitchModal.value = true)),\n onSurrenderClick: _cache[5] || (_cache[5] = ($event: any) => (openSurrenderModal.value = true))\n }, null, 8, [\"compact-mode\"]))\n : (_openBlock(), _createBlock(AcquaintNavMenu, {\n key: 2,\n \"compact-mode\": !menuOpened.value,\n onClick: handleSideBarClick,\n onCloseNavigationMenu: toggleMenu,\n onTenantSwitchClick: openTenantSwitchFromDesktop,\n onPurchaserSwitchClick: openPurchaserSwitchFromDesktop,\n onLandlordSwitchClick: openLandlordSwitchFromDesktop,\n onShowNewSupportCase: _cache[6] || (_cache[6] = ($event: any) => (showNewSupportCaseModal.value = true))\n }, null, 8, [\"compact-mode\"]))\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(DxScrollView), {\n ref_key: \"scrollViewRef\",\n ref: scrollViewRef,\n class: \"with-footer\"\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\"),\n _renderSlot(_ctx.$slots, \"footer\")\n ]),\n _: 3\n }, 512)\n ]),\n _: 3\n }, 8, [\"opened\", \"opened-state-mode\", \"reveal-mode\", \"min-size\", \"max-size\", \"shading\", \"close-on-outside-click\"])\n ]),\n _createVNode(SurrenderCouncilSwitch, {\n modelValue: openSurrenderModal.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((openSurrenderModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(TenantSwitchingModal, {\n modelValue: showTenantSwitchModal.value,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((showTenantSwitchModal).value = $event)),\n propertyId: acquaintDesktopPropertyId.value,\n contactId: acquaintDesktopContactId.value,\n tenancyId: acquaintDesktopTenancyId.value\n }, null, 8, [\"modelValue\", \"propertyId\", \"contactId\", \"tenancyId\"]),\n _createVNode(LandlordSwitchingModal, {\n modelValue: showLandlordSwitchModal.value,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((showLandlordSwitchModal).value = $event)),\n propertyId: acquaintDesktopPropertyId.value,\n tenancyId: acquaintDesktopTenancyId.value\n }, null, 8, [\"modelValue\", \"propertyId\", \"tenancyId\"]),\n _createVNode(PurchasingSwitchingModal, {\n modelValue: showNewPurchaserSwitchModal.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((showNewPurchaserSwitchModal).value = $event)),\n propertyId: acquaintDesktopPropertyId.value,\n contactId: acquaintDesktopContactId.value\n }, null, 8, [\"modelValue\", \"propertyId\", \"contactId\"]),\n _createVNode(CouncilPurchasingSwitchingModal, {\n modelValue: showNewCouncilPurchaserSwitchModal.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((showNewCouncilPurchaserSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(CouncilAllocationModal, {\n modelValue: showNewCouncilAllocationSwitchModal.value,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((showNewCouncilAllocationSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(NewSupportCaseModal, {\n modelValue: showNewSupportCaseModal.value,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((showNewSupportCaseModal).value = $event))\n }, null, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","import script from \"./side-nav-outer-toolbar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./side-nav-outer-toolbar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./side-nav-outer-toolbar.vue?vue&type=style&index=0&id=08cbb12b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx } from \"vue\"\nimport _imports_0 from '../../public/pb-logo.png'\nimport _imports_1 from '../../public/PoweredBy.png'\n\n\nconst _hoisted_1 = { class: \"dx-card content\" }\nconst _hoisted_2 = { class: \"header\" }\nconst _hoisted_3 = {\n key: 0,\n id: \"pb-login-logo\",\n src: _imports_0\n}\nconst _hoisted_4 = { class: \"title\" }\nconst _hoisted_5 = {\n key: 2,\n class: \"description\"\n}\nconst _hoisted_6 = {\n key: 0,\n class: \"powered-by-login-container\"\n}\nconst _hoisted_7 = /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_1 }, null, -1)\nconst _hoisted_8 = [\n _hoisted_7\n]\n\nimport DxScrollView from \"devextreme-vue/scroll-view\";\n\nimport { useRoute } from 'vue-router';\nimport { watch, ref, computed } from 'vue';\nimport AcquaintLogo from \"@/assets/acquaint-logo.vue\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'single-card',\n setup(__props) {\n\nconst route = useRoute();\n\nconst title = ref(route.meta.title);\nconst description = ref(\"\");\n\n// Note: this is hardcoded to true for now. In the future, this will be determined based on the current url\nconst usePropertyButtonBranding = computed(() => window.location.host.includes('propertybutton.ie'));\n\nwatch(() => route.path,\n () => {\n title.value = route.meta.title;\n description.value = route?.meta?.description?.toString() ?? '';\n }\n);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(DxScrollView), {\n height: \"100%\",\n width: \"100%\",\n class: \"with-footer single-card\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (usePropertyButtonBranding.value)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_3))\n : (_openBlock(), _createBlock(AcquaintLogo, { key: 1 })),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(title.value), 1),\n (description.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(description.value), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _renderSlot(_ctx.$slots, \"default\"),\n (usePropertyButtonBranding.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, _hoisted_8))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 3\n }))\n}\n}\n\n})","import script from \"./single-card.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./single-card.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./single-card.vue?vue&type=style&index=0&id=e97dcd82&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76b4250b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-container\" }\nconst _hoisted_2 = { class: \"content-block\" }\n\nimport InfoCard from '@/components/ui/containers/info-card.vue';\n\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'error-layout',\n setup(__props) {\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(InfoCard, null, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n })\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./error-layout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./error-layout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./error-layout.vue?vue&type=style&index=0&id=76b4250b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-76b4250b\"]])\n\nexport default __exports__","import { createRouter, createWebHistory } from \"vue-router\";\nimport { AuthenticationCookieManager } from \"../services/AuthenticationCookieManager\";\nimport Home from \"../views/home-page.vue\";\nimport NotFoundPage from '../views/not-found-page.vue'\nimport defaultLayout from \"../layouts/side-nav-outer-toolbar.vue\";\nimport simpleLayout from \"../layouts/single-card.vue\";\nimport errorLayout from '../layouts/error-layout.vue'\nimport { RouteNames } from \"./RouteNames\";\nimport { useCurrentUserStore } from \"@/stores/CurrentUserStore\";\nimport { isPropertyButtonUrl } from \"@/utils/system/EnvironmentReader\";\nimport { useLoginStore } from \"@/stores/LoginStore\";\nimport { baseAlert } from \"@/alerts/baseAlert\";\n\nfunction loadView(view :string) {\n return () => import (/* webpackChunkName: \"login\" */ `../views/${view}.vue`)\n}\n\nconst router = createRouter({\n routes: [\n {\n path: \"/home\",\n name: RouteNames.Home,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: Home\n },\n {\n path: \"/tasks\",\n name: RouteNames.Tasks,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('tasks-list')\n },\n {\n path: \"/keys\",\n name: RouteNames.Keys,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('key-list')\n },\n {\n path: \"/contacts\",\n name: RouteNames.ContactList,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('contacts-list')\n },\n {\n path: \"/support-cases\",\n name: RouteNames.SupportCases,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('support-cases-list')\n },\n {\n path: \"/support-cases/:switchid\",\n name: RouteNames.UtilitySwitchSupportCases,\n props: true,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('support-cases-list')\n }, \n {\n path: \"/login-form\",\n name: RouteNames.LoginForm,\n meta: {\n requiresAuth: false,\n layout: simpleLayout,\n title: \"Sign In\"\n },\n component: loadView(\"login-form\"),\n beforeEnter: () => {\n if (isUserLoggedIn()) {\n return { name: RouteNames.Home, replace: true }\n }\n }\n },\n {\n path: \"/auto-login\",\n name: RouteNames.AutoLogin,\n meta: {\n requiresAuth: false,\n layout: simpleLayout,\n title: \"AutoLogin\"\n },\n component: loadView(\"login-form\"),\n },\n {\n path: \"/reset-password\",\n name: RouteNames.ResetPassword,\n meta: {\n requiresAuth: false,\n layout: simpleLayout,\n title: \"Reset Password\"\n },\n component: loadView(\"reset-password-form\")\n },\n {\n path: \"/reset-password-confirmation/:token\",\n name: RouteNames.ResetPasswordConfirmation,\n props: true,\n meta: {\n requiresAuth: false,\n layout: simpleLayout,\n title: \"Reset Password\"\n },\n component: loadView(\"reset-password-confirmation\")\n },\n {\n path: \"/applicants\",\n name: RouteNames.Applicants,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('applicants-list')\n },\n {\n path: \"/properties\",\n name: RouteNames.Properties,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('property-list')\n },\n {\n path: \"/property-offers\",\n name: RouteNames.PropertyOffers,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('property-offers-list')\n },\n {\n path: '/contact/:contactid',\n props: true,\n name: RouteNames.ContactPage,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('contact-page')\n },\n {\n path: '/property/:propertyid',\n props: true,\n name: RouteNames.PropertyPage,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('property-page')\n },\n {\n path: '/certificate/:certificateid',\n props: true,\n name: RouteNames.CertificatePage,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('certificate-page')\n },\n {\n path: '/switches',\n props: true,\n name: RouteNames.UtilitySwitchesList,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('utility-switches-list')\n },\n {\n path: '/appointments',\n props: true,\n name: RouteNames.AppoinmentsPage,\n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('appointments-list')\n },\n {\n path: '/test',\n props: true, \n name: RouteNames.Test, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('test-page')\n },\n {\n path: '/configuration',\n props: true, \n name: RouteNames.Configuration, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('configuration-page')\n },\n {\n path: '/userManagement',\n props: true, \n name: RouteNames.UserManagement, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('user-management')\n },\n {\n path: '/certificates',\n props: true, \n name: RouteNames.CertificateList, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('certificate-list')\n },\n {\n path: '/diary',\n props: true, \n name: RouteNames.Diary, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('diary-page')\n },\n {\n path: '/web-viewings',\n props: true, \n name: RouteNames.WebViewings, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('web-viewings-list')\n },\n {\n path: '/property-marketing',\n props: true, \n name: RouteNames.PropertyMarketingList, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('property-marketing-list')\n },\n {\n path: '/word-document',\n props: true, \n name: RouteNames.WordDocument, \n meta: {\n requiresAuth: true,\n layout: defaultLayout\n },\n component: loadView('word-document-page')\n },\n {\n path: \"/\",\n redirect: \"/home\"\n },\n {\n path: \"/recovery\",\n redirect: \"/home\"\n },\n {\n path: '/:pathMatch(.*)*',\n name: RouteNames.NotFound,\n component: NotFoundPage,\n meta: {\n layout: errorLayout\n }\n }\n ],\n history: createWebHistory()\n});\n\nrouter.beforeEach(() => {\n // To avoid confusion with utility switching customers, ensure browser title is set appropiately\n document.title = isPropertyButtonUrl() ? 'Property Button' : 'Acquaint CRM'\n});\n\nrouter.beforeEach((to, from) => {\n if (to.meta.requiresAuth) {\n if (!isUserLoggedIn()) {\n return { name: 'login-form' };\n }\n }\n});\n\nrouter.beforeEach(async (to) => {\n if (!to.meta.requiresAuth || !isUserLoggedIn()) {\n return;\n }\n\n /* To prevent left nav menu 'flickering' whilst loading for the first time\n * Ensure current user details have been cached */\n const currentUserStore = useCurrentUserStore();\n await currentUserStore.getCurrentUserDetails();\n})\n\nrouter.beforeEach((to, from) => {\n if (to === from) {\n return;\n }\n \n // To improve UX, Close any alerts opened by the previous page\n baseAlert.close();\n});\n\n/** Checks whether the user is currently logged in */\nconst isUserLoggedIn = () => {\n const authenticationCookieManager = new AuthenticationCookieManager();\n const tokenCookie = authenticationCookieManager.getDatabaseConnectorToken();\n\n return !!tokenCookie?.token;\n}\n\nrouter.beforeEach(async (to) => {\n if (to.name != RouteNames.AutoLogin) {\n return;\n }\n\n if (!to.query?.data) {\n return { name: RouteNames.LoginForm }\n }\n\n const loginStore = useLoginStore();\n let loginSuccess = false;\n\n try {\n loginSuccess = await loginStore.autoLogin(to.query.data.toString()); \n } catch(err) {\n console.error(err);\n loginSuccess = false;\n }\n\n if (!loginSuccess) {\n return { name: RouteNames.LoginForm }\n } \n});\n\nexport default router;\n","import Cookies from \"js-cookie\";\nimport router from '../router'\nimport { LoginResponse } from \"@/types/authorization/LoginResponse\"\nimport { SiteDetails } from \"../types/authentication/SiteDetails\";\nimport { UserDetails } from \"../types/authentication/UserDetails\";\nimport { RouteNames } from \"@/router/RouteNames\";\n\n// A class for managering the authcookie\nexport class AuthenticationCookieManager {\n private _databaseConnectorTokenName = \"acquaint-app-database-connector\"\n private _siteDetails = \"acquaint-app-site-details\"\n private _userDetails = \"acquaint-app-user-details\"\n public getApiDetails(): LoginResponse | undefined {\n\n // Trys to read the cookie and returns the details if successful\n try {\n const authenticationDetails = Cookies.get(this._databaseConnectorTokenName) as string;\n\n return JSON.parse(authenticationDetails) as LoginResponse;\n } catch {\n throw new Error(\"Unable to read login details cookie\");\n }\n }\n public getDatabaseConnectorToken(): LoginResponse | undefined {\n try {\n const databaseConnectorToken = this.readCookie(this._databaseConnectorTokenName);\n\n return JSON.parse(databaseConnectorToken) as LoginResponse;\n } catch {\n return undefined\n }\n }\n public getSiteDetails(): SiteDetails | undefined {\n // Trys to read the cookie and returns the details if successful\n try {\n const siteDetails = this.readCookie(this._siteDetails);\n\n return JSON.parse(siteDetails) as SiteDetails;\n } catch {\n return undefined\n }\n }\n public getUserDetails(): UserDetails | undefined {\n try {\n const userDetails = this.readCookie(this._userDetails);\n\n return JSON.parse(userDetails) as UserDetails;\n } catch {\n return undefined\n }\n }\n\n public resetState() {\n Cookies.remove(this._databaseConnectorTokenName);\n\n router.push({ name: RouteNames.LoginForm });\n }\n\n public storeSiteDetails(siteDetails: SiteDetails) {\n const cookieOptions: Cookies.CookieAttributes = (siteDetails.rememberMe ? { sameSite: 'Strict', expires: 31, secure: this.useSecureCookies() } : { sameSite: 'Strict', secure: this.useSecureCookies() });\n\n Cookies.set(this._siteDetails, JSON.stringify(siteDetails), cookieOptions);\n }\n\n public storeLogin(apiAuthenticationToken: LoginResponse) {\n Cookies.set(this._databaseConnectorTokenName, JSON.stringify(apiAuthenticationToken), { sameSite: 'Strict', secure: this.useSecureCookies() });\n }\n\n private readCookie(cookieName: string) {\n // Trys to read the cookie and returns the details if successful\n const cookieValue = Cookies.get(cookieName);\n\n if (cookieValue == undefined) {\n return '';\n }\n\n return cookieValue;\n }\n\n /** Determines whether cookies should be stored securely */\n private useSecureCookies() {\n /* Don't use secure cookies for devs testing on bs-local \n * Otherwise users can't get past the login screen */\n return window.location.hostname != 'bs-local.com';\n }\n}","export default class DeletedRecordError extends Error {\n constructor(message:string) {\n super(message);\n this.name = \"DeletedRecordError\";\n\n Object.setPrototypeOf(this, DeletedRecordError.prototype);\n }\n }","import { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { ContactType } from '@/types/ContactType';\nimport { Mutex } from \"async-mutex\";\nimport { defineStore } from \"pinia\";\nimport { inject, ref } from \"vue\";\n\nexport const useContactTypeConfigurationStore = defineStore('systemCotactType', () => {\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n const mutex = new Mutex();\n const systemContactTypeCache = ref([]);\n\n /** Gets the system type of the passed contact type id */\n const getSystemContactType = async (id: number) => {\n const contactType = await getContactType(id);\n return contactType.typeID;\n };\n\n const getContactType = async (id: number) => {\n const type = await mutex.runExclusive(async () => {\n let cachedType = systemContactTypeCache.value.find(x => x.id === id);\n\n if (cachedType) {\n return cachedType;\n }\n\n cachedType = await getContactTypeFromApi(id);\n systemContactTypeCache.value.push(cachedType);\n return cachedType;\n });\n\n return type;\n }\n\n const getContactTypeFromApi = async (id: number) => {\n return await apiClient.httpGet(`database/types/${id}`)\n };\n\n const clearCache = () => systemContactTypeCache.value = [];\n\n return { getSystemContactType, getContactType, clearCache }\n});","import { Mutex } from \"async-mutex\";\nimport { defineStore } from \"pinia\";\nimport { inject, reactive, ref } from \"vue\";\nimport { CurrentUser } from '@/types/user/CurrentUser'\nimport { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { AuthenticationCookieManager } from \"@/services/AuthenticationCookieManager\";\n\nexport const useCurrentUserStore = defineStore('currentUser', () => {\n const mutex = new Mutex();\n\n const cachedCurrentUser = ref();\n const cachedSitePrefix = ref('');\n const acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n const authenticationCookieManager = reactive(new AuthenticationCookieManager)\n\n /** Gets details for the current user */\n const getCurrentUserDetails = async () => {\n const currentUser = await mutex.runExclusive(async () => {\n // To improve app performance only call api if user's details aren't currently cached\n if(!cachedCurrentUser.value) {\n cachedCurrentUser.value = await getCurrentUserFromApi();\n }\n\n return cachedCurrentUser.value;\n });\n\n return currentUser;\n }\n\n /** Clears the cache */\n const clearCache = () => {\n cachedCurrentUser.value = undefined;\n cachedSitePrefix.value = '';\n }\n\n /** Gets the user's details from the Acquaint Api */\n const getCurrentUserFromApi = async () => {\n return await acquaintApiClient.httpGet('app/user/current');\n }\n\n /** Retrieves the site prefix for the current database */\n const getSitePrefix = async () => {\n const sitePrefix = await mutex.runExclusive(() => {\n // To avoid unnecessary processing, only read cookie if we haven't already got the site prefix\n if (!cachedSitePrefix.value) {\n // Site prefix is stored in a secure cookie during the login process\n const siteDetails = authenticationCookieManager.getSiteDetails();\n \n cachedSitePrefix.value = siteDetails?.sitePrefix ? siteDetails?.sitePrefix : '';\n }\n \n return cachedSitePrefix.value;\n });\n\n return sitePrefix;\n };\n\n return { getCurrentUserDetails, clearCache, getSitePrefix }\n});","import { AutoLoginData } from \"@/types/authorization/AutoLoginData\";\nimport { defineStore } from \"pinia\";\nimport { reactive, ref } from \"vue\";\nimport { baseAlert } from \"@/alerts/baseAlert\";\nimport router from \"@/router\";\nimport { RouteNames } from \"@/router/RouteNames\";\nimport { LoginResponse } from \"@/types/authorization/LoginResponse\";\nimport { getErrorMessage } from \"bright-logic-core/src/errors\";\nimport { inject } from \"vue\";\nimport { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { LoginDetails } from \"@/types/authentication/LoginDetails\";\nimport { AuthenticationCookieManager } from \"@/services/AuthenticationCookieManager\";\nimport { AcquaintApiNextClient } from \"@/services/AcquaintApiNextClient\";\nimport displayErrorMessage from \"@/utils/ErrorHandling\";\nimport { AutoLoginAction } from \"@/enums/system/AutoLoginAction\";\n\nexport const useLoginStore = defineStore('loginStore', () => {\n const autoLoginData = ref();\n const acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n const authenticationCookieManager = reactive(new AuthenticationCookieManager());\n const acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\n\n const login = async (credentials: LoginDetails) => {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n // Login to Acquaint using the form details\n try {\n const authenticationToken = await acquaintApiClient.httpPost(\"/app/auth/login\", credentials)\n\n // Store the user's connector token in the cookie \n authenticationCookieManager.storeLogin(authenticationToken);\n authenticationCookieManager.storeSiteDetails({\n sitePrefix: credentials.sitePrefix,\n appPassword: credentials.appPassword,\n userName: credentials.userName,\n rememberMe: credentials.rememberMe,\n siteName: '',\n pcid: authenticationToken.pcid\n });\n\n /* To avoid multiple pc records being created for the same device by the new api\n * We must set the pc id to the pc id returned by the old api */\n credentials.pcid = authenticationToken.pcid; \n } catch (err) {\n displayErrorMessage(getErrorMessage(err), 11000);\n return false;\n }\n\n await loginToNewAcquaintApi(credentials);\n \n router.push({ name: RouteNames.Home });\n\n return true;\n }\n\n const loginToNewAcquaintApi = async (credentials: LoginDetails) => {\n try {\n await acquaintApiNextClient.authenticate(credentials);\n } catch (err) {\n console.error(getErrorMessage(err));\n }\n }\n\n const autoLogin = async (data: string) => {\n const response = await acquaintApiClient.httpPost('app/auth/validate', {\n data: data\n });\n\n autoLoginData.value = response;\n\n const credentials: LoginDetails = {\n sitePrefix: response.sitePrefix,\n appPassword: response.appPassword,\n userName: response.userName,\n userPassword: response.userPassword,\n rememberMe: false\n }\n\n return await login(credentials);\n }\n\n const getAutoLoginData = () => autoLoginData.value;\n\n const resetAutoLoginAction = () => {\n if (!autoLoginData.value) {\n return;\n }\n\n autoLoginData.value.action = AutoLoginAction.None;\n };\n\n return { getAutoLoginData, login, autoLogin, resetAutoLoginAction }\n});","import { defineStore } from \"pinia\";\nimport { readCookie } from '@/utils/cookies/JsonCookieReader';\nimport { writeCookie } from '@/utils/cookies/JsonCookieWriter';\nimport { ref } from \"vue\";\nimport { useCurrentUserStore } from \"./CurrentUserStore\";\nimport { CurrentUser } from '@/types/user/CurrentUser'\n\nexport const useRecentRecordsStore = defineStore('recentRecords', () => {\n const currentUserStore = useCurrentUserStore();\n const contactsIds = ref([]);\n const propertiesIds = ref([]);\n const currentUser = ref();\n\n const getUserDetails = async ()=>{\n if(!currentUser.value){\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n }\n };\n\n const addContactRecentRecord = async (id:string)=>{\n await getUserDetails();\n\n // If a user closes the app and returns to it, we need repopulate this store list using cookie.\n if(contactsIds.value.length==0){\n contactsIds.value = await readContactRecordsCookie();\n }\n\n // If a contact record is viewed and is viewed again, we need to update its position in the list by removing\n // its id from the list than adding it to the end.\n if(contactsIds.value.find((contactId)=>{return String(contactId) == id})){\n contactsIds.value = contactsIds.value.filter((contactId)=>{return String(contactId) != id});\n }\n \n // We don't want to have too many records being displayed so we remove the earliest contact id to be added.\n // Because the array's first item is the most recently accessed, we remove the last item.\n if(contactsIds.value.length>=10){\n contactsIds.value.pop();\n }\n\n // We add each item to the start of the array so that on the recent records screen, the most recently accessed\n // record appears at the top.\n contactsIds.value.unshift(Number(id));\n writeCookie(`recentlyAccessedContacts${currentUser.value?.id}`, contactsIds.value);\n };\n\n const addPropertyRecentRecord = async (id:string)=>{\n await getUserDetails();\n\n if(propertiesIds.value.length==0){\n propertiesIds.value = await readPropertyRecordsCookie();\n }\n\n if(propertiesIds.value.find((propertyId)=>{return String(propertyId) == id})){\n propertiesIds.value = propertiesIds.value.filter((propertyId)=>{return String(propertyId) != id});\n }\n\n if(propertiesIds.value.length>=10){\n propertiesIds.value.pop();\n }\n\n propertiesIds.value.unshift(Number(id));\n writeCookie(`recentlyAccessedProperties${currentUser.value?.id}`, propertiesIds.value);\n };\n\n const readContactRecordsCookie = async ()=> { \n await getUserDetails();\n const records:number[] = readCookie(`recentlyAccessedContacts${currentUser.value?.id}`)??[]; \n return records \n };\n\n const readPropertyRecordsCookie = async ()=> { \n await getUserDetails();\n const records:number[] = readCookie(`recentlyAccessedProperties${currentUser.value?.id}`)??[]; \n return records \n };\n\n const clearCache = ()=>{\n // We need to clear these arrays when a user logs out so that when if another user log ins on the same device afterwards,\n // the records of the first user don't appear any longer. We also need to reset the currentUser ref to ensure the each user's\n // details are fetched each time they log in so that if multiple users log into the same pc, their cookies are read and updated.\n contactsIds.value = [];\n propertiesIds.value = [];\n currentUser.value = undefined;\n };\n\n return { addContactRecentRecord, addPropertyRecentRecord, readContactRecordsCookie, readPropertyRecordsCookie, clearCache }\n})","import { Mutex } from \"async-mutex\";\nimport { defineStore } from \"pinia\";\nimport { inject, reactive } from \"vue\";\nimport { SystemCode } from '@/types/system/SystemCode';\nimport { CodeType } from \"acquaint-api/constants/CodeType\";\nimport { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\n\nexport const useSystemCodesStore = defineStore('systemCodesStore', () => {\n const mutex = new Mutex();\n\n let systemCodesCache = reactive([]);\n const acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\n /** Retrieves all system codes for the passed code type */\n const getSystemCodesByCodeType = async (codeType :CodeType) => {\n const systemCodes = await mutex.runExclusive(async () => {\n // To improve app performance, only call retrieve system codes from the api if the cache is empty\n if (systemCodesCache.length === 0) {\n systemCodesCache = await getSystemCodesFromApi();\n }\n\n // As a fail safe, ensure the system code cache has been populated\n if (systemCodesCache.length === 0) {\n throw 'No systems codes found in cache';\n }\n\n const requestedSystemCodes = systemCodesCache.filter((item :SystemCode) => item.type == codeType);\n\n if (!requestedSystemCodes) {\n throw `No system codes found matching code type ${codeType}`\n }\n\n // To make this function work with generic filter components it needs to return an array of IDDescription models\n return requestedSystemCodes.map((item) => ({id: item.code, description: item.description }));\n });\n \n return systemCodes;\n }\n\n /** Retrieves the System Code Description for the passed code type and id */\n const getSystemCodeDescriptionByCodeTypeAndID = async (codeType: CodeType, id: Number) => {\n const systemCodeDescription = await mutex.runExclusive(async () => {\n // To improve app performance, only call retrieve system codes from the api if the cache is empty\n if (systemCodesCache.length === 0) {\n systemCodesCache = await getSystemCodesFromApi();\n }\n\n // As a fail safe, ensure the system code cache has been populated\n if (systemCodesCache.length === 0) {\n throw 'No systems codes found in cache';\n }\n\n // The Description we are looking for should be on the first item we find which matches the CodeType and ID\n const systemCode = systemCodesCache.find((item: SystemCode) => item.type == codeType && item.code == id);\n\n // As a fail safe, ensure we have found the correct system code\n if (!systemCode) {\n throw `No system code found matching code type ${codeType} and id ${id}`\n }\n\n return systemCode.description;\n });\n\n return systemCodeDescription;\n }\n\n /** Retrieves all system codes from the Acquaint Api */\n const getSystemCodesFromApi = async () => {\n return await acquaintApiClient.httpGet('app/system/codes');\n }\n\n return { getSystemCodesByCodeType, getSystemCodeDescriptionByCodeTypeAndID }\n});","import { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { Mutex } from \"async-mutex\";\nimport { defineStore } from \"pinia\";\nimport { inject, reactive } from \"vue\";\nimport { SystemConfiguration } from \"acquaint-api/constants/SystemConfiguration\";\nimport { IDValuePair } from \"@/types/generic/IDValuePair\";\n\nexport const useSystemConfigurationStore = defineStore('systemConfiguration', () => {\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n const mutex = new Mutex();\n\n const systemConfigurationCache = reactive([]);\n\n /** Gets a System Configuration value for the currently logged in branch */\n const getSystemConfigurationValue = async (id: SystemConfiguration) => {\n const systemConfigValue = await mutex.runExclusive(async () => {\n // To avoid unnecessary api calls, check cache first\n let cachedValue = systemConfigurationCache.find(item => item.id === id);\n\n /* If cached item found then return it. \n * Note: need to explicitly check for undefined as empty strings are valid values */\n if (cachedValue != undefined) {\n return cachedValue.val;\n }\n\n cachedValue = await getSystemConfigurationValueFromApi(id);\n systemConfigurationCache.push(cachedValue);\n\n return cachedValue.val;\n });\n\n return systemConfigValue;\n }\n\n const getSystemConfigurationValueFromApi = async (id: SystemConfiguration) => {\n return await apiClient.httpGet(`app/system/configuration/branch/${id}`)\n }\n\n const getSystemConfigurationValueWithSiteId = async (id: SystemConfiguration, siteId: number) => {\n const systemConfigValue = await mutex.runExclusive(async () => {\n const idValueItem = await getSystemConfigurationValueFromApiWithSiteId(id, siteId);\n return idValueItem.val;\n });\n\n return systemConfigValue;\n }\n\n const getSystemConfigurationValueFromApiWithSiteId = async (id: SystemConfiguration, siteId: number) => {\n return await apiClient.httpGet(`app/system/configuration/branch/${siteId}/${id}`)\n }\n\n const getSystemConfigurationValueWithCompanyId = async (id :SystemConfiguration, companyId: number) => {\n const systemConfigValue = await mutex.runExclusive(async () => {\n const cachedValue = await getSystemConfigurationValueFromApiWithCompanyId(id, companyId);\n return cachedValue.val;\n });\n\n return systemConfigValue;\n }\n\n const getSystemConfigurationValueFromApiWithCompanyId = async (id:SystemConfiguration, companyId: number) => {\n return await apiClient.httpGet(`app/system/configuration/company/${companyId}/${id}`)\n }\n\n const resetSystemConfigurationCache = (id: SystemConfiguration) => {\n const index = systemConfigurationCache.findIndex(item => item.id === id);\n if (index !== -1) {\n systemConfigurationCache.splice(index, 1); // Remove the item with that ID\n }\n };\n\n return { getSystemConfigurationValue, getSystemConfigurationValueWithSiteId, getSystemConfigurationValueWithCompanyId, resetSystemConfigurationCache }\n});","import { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { Mutex } from \"async-mutex\";\nimport { defineStore } from \"pinia\";\nimport { inject, ref } from \"vue\";\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions'\n\nexport const useUserPermissionsStore = defineStore('userPermissions', () => {\n const mutex = new Mutex();\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n const cachedUserPermissions = ref();\n\n /** Permissions for the currently logged in user */\n const getUserPermissions = async () => {\n const permissions = await mutex.runExclusive(async () => {\n // If we haven't cached the user's permissions before, we need to retrieve them from the api\n if (!cachedUserPermissions.value) {\n cachedUserPermissions.value = await getUserPermissionsFromApi();\n }\n \n return cachedUserPermissions.value;\n });\n\n return permissions;\n };\n\n /** Calls the Acquaint Api to get permissions for the current user */\n const getUserPermissionsFromApi = async () => {\n return await apiClient.httpGet('/app/user/permissions')\n }\n\n /** Clears the cached user permissions */\n const clearCache = () => {\n cachedUserPermissions.value = undefined;\n }\n\n return { getUserPermissions, clearCache}\n});","import { ref } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { ApplicantListFilters } from \"@/types/applicants/ApplicantListFilter\";\nimport { Mutex } from \"async-mutex\";\nimport { readCookie } from \"@/utils/cookies/JsonCookieReader\";\nimport { writeCookie } from \"@/utils/cookies/JsonCookieWriter\";\nimport { useCurrentUserStore } from \"../CurrentUserStore\";\nimport { Id } from '@/types/generic/Id';\n\nexport const useApplicantListStore = defineStore('applicantList', () => {\n const mutex = new Mutex();\n\n const cachedFilters = ref();\n const currentUserStore = useCurrentUserStore();\n const applicantIds = ref([]);\n const displayMatchedApplicants = ref(false);\n const matchedProperty = ref('');\n\n /** Constructs filter name for currently logged in user and site prefix */\n const getFilterName = async () => {\n const filterName = 'x-applicant-list-filters';\n const currentUser = await currentUserStore.getCurrentUserDetails();\n const sitePrefix = await currentUserStore.getSitePrefix();\n\n return [filterName, sitePrefix, currentUser.id].filter(item => !!item).join('-');\n };\n\n /** Gets the previous Applicant List filters */\n const getFilters = async () => {\n const filters = await mutex.runExclusive(async () => {\n // To improve performance, only read the cookie we don't already have the data\n if (!cachedFilters.value) {\n cachedFilters.value = readCookie(await getFilterName());\n }\n\n return cachedFilters.value;\n });\n\n return filters;\n }\n \n /** Stores the current Applicant List filters so filters are remembered \n * when user navigates back to the Applicant List */\n const updateFilters = async (filters :ApplicantListFilters) => {\n await mutex.runExclusive(async () => {\n /* Improve performance by caching the updated filters\n * This means the app won't need to read the cookie unnecessarily */\n cachedFilters.value = filters;\n\n // Update cookie so filters are remembered when user reloads the app\n writeCookie(await getFilterName(), filters);\n });\n }\n\n /** Clears the current Task List filters cache */\n const clearCache = () => cachedFilters.value = undefined;\n\n const storeMatchedApplicants = (ids:Id[], propertyAddress:string)=>{\n displayMatchedApplicants.value = true;\n applicantIds.value = ids;\n matchedProperty.value = propertyAddress;\n };\n\n const fetchMatchedApplicants = ()=>{\n return applicantIds.value;\n };\n\n const displayStandardApplicantList = ()=>{\n displayMatchedApplicants.value = false;\n };\n\n const checkIfMatchedApplicantsToBeDisplayed = ()=>{\n return displayMatchedApplicants.value;\n };\n\n const fetchMatchedProperty = () =>{\n return matchedProperty.value;\n };\n\n return { getFilters, updateFilters, clearCache, storeMatchedApplicants, fetchMatchedApplicants, displayStandardApplicantList, checkIfMatchedApplicantsToBeDisplayed, fetchMatchedProperty }\n});","import { ref } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { ContactListFilters } from \"@/types/contacts/ContactListFilters\";\nimport { Mutex } from \"async-mutex\";\nimport { readCookie } from \"@/utils/cookies/JsonCookieReader\";\nimport { writeCookie } from \"@/utils/cookies/JsonCookieWriter\";\nimport { useCurrentUserStore } from \"../CurrentUserStore\";\n\nexport const useContactListFiltersStore = defineStore('contactListFilters', () => {\n const mutex = new Mutex();\n\n const cachedFilters = ref();\n const currentUserStore = useCurrentUserStore();\n \n /** Constructs filter name for currently logged in user and site prefix */\n const getFilterName = async () => {\n const filterName = 'x-contact-list-filters';\n const currentUser = await currentUserStore.getCurrentUserDetails();\n const sitePrefix = await currentUserStore.getSitePrefix();\n\n return [filterName, sitePrefix, currentUser.id].filter(item => !!item).join('-');\n };\n\n /** Gets the previous Contact List filters */\n const getFilters = async () => {\n const filters = await mutex.runExclusive(async () => {\n // To improve performance, only read the cookie we don't already have the data\n if (!cachedFilters.value) {\n cachedFilters.value = readCookie(await getFilterName());\n }\n\n return cachedFilters.value;\n });\n\n return filters;\n }\n\n /** Stores the current Contact List filters so filters are remembered \n * when user navigates back to the Contact List */\n const updateFilters = async (filters: ContactListFilters) => {\n await mutex.runExclusive(async () => {\n /* Improve performance by caching the updated filters\n * This means the app won't need to read the cookie unnecessarily */\n cachedFilters.value = filters;\n\n // Update cookie so filters are remembered when user reloads the app\n writeCookie(await getFilterName(), filters);\n });\n }\n\n /** Clears the current filters cache */\n const clearCache = () => cachedFilters.value = undefined;\n\n return { getFilters, updateFilters, clearCache }\n});","import { ref } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { PropertyListFilters } from \"@/types/properties/PropertyListFilter\";\nimport { Mutex } from \"async-mutex\";\nimport { readCookie } from \"@/utils/cookies/JsonCookieReader\";\nimport { writeCookie } from \"@/utils/cookies/JsonCookieWriter\";\nimport { useCurrentUserStore } from \"../CurrentUserStore\";\nimport { Id } from '@/types/generic/Id';\n\nexport const usePropertyListFiltersStore = defineStore('propertyListFilters', () => {\n const mutex = new Mutex();\n\n const cachedFilters = ref();\n const currentUserStore = useCurrentUserStore();\n const propertyIds = ref([]);\n const displayMatchedProperties = ref(false);\n const contactName = ref('');\n\n /** Constructs filter name for currently logged in user and site prefix */\n const getFilterName = async () => {\n const filterName = 'x-property-list-filters';\n const currentUser = await currentUserStore.getCurrentUserDetails();\n const sitePrefix = await currentUserStore.getSitePrefix();\n\n return [filterName, sitePrefix, currentUser.id].filter(item => !!item).join('-');\n };\n\n /** Gets the previous Property List filters */\n const getFilters = async () => {\n const filters = await mutex.runExclusive(async () => {\n // To improve performance, only read the cookie we don't already have the data\n if (!cachedFilters.value) {\n cachedFilters.value = readCookie(await getFilterName());\n }\n\n return cachedFilters.value;\n });\n\n return filters;\n }\n\n /** Stores the current Property List filters so filters are remembered \n * when user navigates back to the Property List */\n const updateFilters = async (filters :PropertyListFilters) => {\n await mutex.runExclusive(async () => {\n /* Improve performance by caching the updated filters\n /* This means the app won't need to read the cookie unnessarily */\n cachedFilters.value = filters;\n\n // Update cookie so filters are remembered when user reloads the app\n writeCookie(await getFilterName(), filters);\n });\n }\n\n /** Clears the current filters cache */\n const clearCache = () => cachedFilters.value = undefined;\n\n const storeMatchPropertyIdsAndName = (ids:Id[], name:string) => {\n propertyIds.value = ids;\n contactName.value = name;\n displayMatchedProperties.value = true;\n };\n\n const displayStandardPropertyList = ()=>{\n displayMatchedProperties.value = false;\n };\n\n const fetchMatchPropertyIds = ()=>{\n return propertyIds.value;\n };\n\n const fetchMatchedContact = () =>{\n return contactName.value;\n };\n\n const checkIfMatchedPropertiesToBeDisplayed = ()=>{\n return displayMatchedProperties.value;\n };\n\n return { getFilters, updateFilters, clearCache, storeMatchPropertyIdsAndName, fetchMatchPropertyIds, displayStandardPropertyList, checkIfMatchedPropertiesToBeDisplayed, fetchMatchedContact }\n})","import { computed, ref } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { TaskListFilters } from \"@/types/tasks/TasksListFilters\";\nimport { Mutex } from \"async-mutex\";\nimport { readCookie } from \"@/utils/cookies/JsonCookieReader\";\nimport { writeCookie } from \"@/utils/cookies/JsonCookieWriter\";\nimport { useCurrentUserStore } from \"../CurrentUserStore\";\n\nexport const useTaskListFiltersStore = defineStore('taskListFilters', () => {\n const mutex = new Mutex();\n\n const cachedFilters = ref();\n const currentUserStore = useCurrentUserStore();\n \n /** Constructs filter name for currently logged in user and site prefix */\n const getFilterName = async () => {\n const filterName = 'x-task-list-filters';\n const currentUser = await currentUserStore.getCurrentUserDetails();\n const sitePrefix = await currentUserStore.getSitePrefix();\n\n return [filterName, sitePrefix, currentUser.id].filter(item => !!item).join('-');\n };\n\n /** Gets the previous Task List filters */\n const getFilters = async () => {\n const filters = await mutex.runExclusive(async () => {\n // To improve performance, only read the cookie we don't already have the data\n if (!cachedFilters.value) {\n cachedFilters.value = readCookie(await getFilterName());\n }\n\n return cachedFilters.value;\n });\n\n return filters;\n }\n \n /** Stores the current Task List filters so filters are remembered \n * when user navigates back to the Task List */\n const updateFilters = async (filters :TaskListFilters) => {\n await mutex.runExclusive(async () => {\n /* Improve performance by caching the updated filters\n * This means the app won't need to read the cookie unnecessarily */\n cachedFilters.value = filters;\n\n // Update cookie so filters are remembered when user reloads the app\n writeCookie(await getFilterName(), filters);\n });\n }\n\n /** Clears the current Task List filters cache */\n const clearCache = () => cachedFilters.value = undefined;\n\n return { getFilters, updateFilters, clearCache}\n});","import { defineStore } from \"pinia\";\nimport { reactive } from \"vue\";\nimport { RecordNavigator } from '../../utils/navigation/RecordNavigator'\n\nexport const useContactRecordNavigationStore = defineStore('contactRecordNavigationStore', () => {\n /** Helper class used to navigate the records. \n * Whilst the store could just expose this, I've decided to encapsulate this\n * so that the implementation of the store can be changed without affecting other \n * stores/components that use the navigator class */\n const recordNavigator = reactive(new RecordNavigator)\n\n /** Cache passed array of contact ids */\n const cacheContacts = (contacts :number[], currentIndex :number = 0) => {\n recordNavigator.cacheRecords(contacts, currentIndex)\n } \n\n /** Gets the next contact in the array */\n const getNextContactId = () => recordNavigator.getNextRecord();\n\n /** Gets the previous contact in the array */\n const getPreviousContactId = () => recordNavigator.getPreviousRecord();\n\n /** Checks whether the current contact is the first contact in the array */\n const isFirstContact = () => recordNavigator.isFirstRecord();\n\n /** Checks whether the current contact is the last contact in the array */\n const isLastContact = () => recordNavigator.isLastRecord();\n\n /** Gets the current position in the array */\n const currentPosition = () => recordNavigator.currentPosition();\n\n /** Gets the total count of records in the array */\n const totalCount = () => recordNavigator.totalCount();\n\n /** Checks whether the cache is empty */\n const isEmpty = () => recordNavigator.isEmpty();\n\n /** Clears the cached array of contact ids */\n const clear = () => recordNavigator.clear();\n\n return { cacheContacts, getNextContactId, getPreviousContactId, isFirstContact, isLastContact, currentPosition, totalCount, isEmpty, clear }\n});","import { defineStore } from \"pinia\";\nimport { reactive } from \"vue\";\nimport { RecordNavigator } from '../../utils/navigation/RecordNavigator'\n\nexport const usePropertyRecordNavigationStore = defineStore('propertyRecordNavigationStore', () => {\n // Helper class used to navigate property records. \n const recordNavigator = reactive(new RecordNavigator)\n\n /** Cache passed array of property ids */\n const cacheProperties = (properties :number[], currentIndex :number = 0) => {\n recordNavigator.cacheRecords(properties, currentIndex)\n } \n\n /** Gets the next property in the array */\n const getNextPropertyId = () => recordNavigator.getNextRecord();\n\n /** Gets the previous property in the array */\n const getPreviousPropertyId = () => recordNavigator.getPreviousRecord();\n\n /** Checks whether the current property is the first property in the array */\n const isFirstProperty = () => recordNavigator.isFirstRecord();\n\n /** Checks whether the current property is the last property in the array */\n const isLastProperty = () => recordNavigator.isLastRecord();\n\n /** Gets the current position in the array */\n const currentPosition = () => recordNavigator.currentPosition();\n\n /** Gets the total count of records in the array */\n const totalCount = () => recordNavigator.totalCount();\n\n /** Checks whether the cache is empty */\n const isEmpty = () => recordNavigator.isEmpty();\n\n /** Clears the cached array of property ids */\n const clear = () => recordNavigator.clear();\n\n return { cacheProperties, getNextPropertyId, getPreviousPropertyId, isFirstProperty, isLastProperty, currentPosition, totalCount, isEmpty, clear }\n});","import { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { AgencyAccount } from \"@/types/switches/AgencyAccount\";\nimport { Mutex } from \"async-mutex\";\nimport { defineStore } from \"pinia\";\nimport { inject, ref } from \"vue\";\n\nexport const useAgencyAccountStore = defineStore('agencyAccountStore', () => {\n const mutex = new Mutex();\n\n const cachedAgencyAccount = ref();\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\n const getAccount = async () :Promise => {\n const account = await mutex.runExclusive(async () => {\n if (!cachedAgencyAccount.value) {\n cachedAgencyAccount.value = await getAccountFromApi();\n }\n\n return cachedAgencyAccount.value;\n });\n\n return account;\n }\n\n const getAccountFromApi = async () :Promise => {\n return await apiClient.httpGet('app/utilityswitching/account');\n }\n\n const clearCache = () => cachedAgencyAccount.value = undefined;\n\n return { getAccount, clearCache }\n});","import { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { Agent } from '@/types/utility-switching/Agent';\nimport { Mutex } from 'async-mutex';\nimport { defineStore } from 'pinia'\nimport { inject, ref } from 'vue';\n\nexport const useAgentsStore = defineStore('agentsStore', () => {\n const mutex = new Mutex();\n\n const cachedAgents = ref();\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\n /** Retrieves all Utility Switching Agents */\n const getAgents = async () => {\n const agents = await mutex.runExclusive(async () => {\n // To improve app performance only call api if agent data isn't currently cached\n if (!cachedAgents.value) {\n cachedAgents.value = await getAgentsFromApi();\n }\n\n return cachedAgents.value;\n });\n\n return agents;\n }\n\n /** Retrieves Utility Switching Agents from the Acquaint Api */\n const getAgentsFromApi = async () => {\n return await apiClient.httpGet('app/utilityswitching/agents/list');\n }\n\n const returnAgentName = async (id:string)=>{\n if(!cachedAgents.value){\n await getAgents()\n }\n\n if(!cachedAgents.value){\n return\n }\n\n const selectedAgent:Agent[] = cachedAgents.value.filter((agentPair)=>{\n agentPair.agentID == id;\n });\n\n return selectedAgent[0].name;\n\n };\n\n // const getAgentsName\n\n /** Clears the cached Agent data */\n const clearCache = () => cachedAgents.value = undefined;\n\n return { getAgents, clearCache, returnAgentName }\n});","import { defineStore } from \"pinia\";\nimport { inject, ref } from \"vue\";\nimport { Mutex } from \"async-mutex\";\nimport { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { SwitchStatus } from \"@/types/utility-switching/SwitchStatus\";\nimport { IDDescriptionPair } from \"@/types/generic/IDDescriptionPair\";\n\nexport const useSwitchStatusesStore = defineStore('switchStatusesStore', () => {\n const mutex = new Mutex();\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient\n const cachedStatuses = ref();\n\n /** Retrieves all switch statuses */\n const getSwitchStatuses = async () => {\n const statuses = await mutex.runExclusive(async () => {\n // To improve app performance only call api if data isn't currently cached\n if (!cachedStatuses.value) {\n const rawStatuses = await getSwitchStatusesFromApi();\n cachedStatuses.value = mapRawSwitchStatusesToIDDescriptionPair(rawStatuses);\n }\n\n return cachedStatuses.value;\n });\n\n return statuses;\n }\n\n /** Retrieves all switch statuses from the Acquaint Api */\n const getSwitchStatusesFromApi = async () => await apiClient.httpGet('app/utilityswitching/switches/statuses');\n\n /** Converts the passed array of Switch Statuses to an ID Description Pair\n * @param rawStatuses - The Switch Statuses to convert */\n const mapRawSwitchStatusesToIDDescriptionPair = (rawStatuses: SwitchStatus[]) :IDDescriptionPair[] => {\n return rawStatuses.map(item => { return {id: item.sortIndex, description: item.value} });\n }\n\n /** Clears the cached switch status data */\n const clearCache = () => cachedStatuses.value = undefined;\n\n return { getSwitchStatuses, clearCache }\n});","export enum ModalWidth {\n XSmall = '350px',\n Small = '600px',\n Medium = '850px',\n Large = '1000px',\n MobileFullWidth = '95vw'\n}","import { CountryCode } from \"bright-logic-core/src/CountryCode\";\n\n/** Gets currency format for a specific to use with DevExpress components\n * @param countryCodeId id of the country to retrieve currency format for */\nexport const getCurrencyFormat = (countryCodeId: number | undefined) => {\n switch (countryCodeId) {\n case CountryCode.Ireland:\n return \"€#,##0.00\";\n case CountryCode.UK:\n case CountryCode.Guernsey:\n case CountryCode.Jersey:\n return \"£#,##0.00\";\n default:\n return '';\n }\n}\n/** Converts the passed number into a currency string based on the passed country code */\nexport const formatNumberIntoCurrency = (value: number, countryCodeId: number | undefined) => {\n const poundsFormatConverter = new Intl.NumberFormat(\n 'en-GB', { style: 'currency', currency: 'GBP', }\n );\n\n const eurosFormatConverter = new Intl.NumberFormat(\n 'en', { style: 'currency', currency: 'EUR', }\n );\n\n switch (countryCodeId) {\n case CountryCode.Ireland:\n return eurosFormatConverter.format(value);\n case CountryCode.UK:\n case CountryCode.Guernsey:\n case CountryCode.Jersey:\n return poundsFormatConverter.format(value)\n default:\n return value.toString();\n }\n}","import { standardInfoAlert } from '@/alerts/standardInfoAlert';\n\nexport const DisplayCompanyAlert = async ()=>{\n const companyPrompt = await standardInfoAlert('Your database is setup with more than one company. Please confirm which company this property is assigned to.');\n\n if(companyPrompt.isConfirmed || companyPrompt.isDismissed){\n return true;\n }\n\n return false;\n};","import { toastBaseAlert } from '@/alerts/toastBaseAlert';\n\n/*** Displays an error toast\n * @param text error message to be displayed\n * @param displayTime defines how long the toast is displayed in milliseconds. This is set to 6000 by default */\nexport default function displayErrorMessage(text: string, displayTime: number = 6000) {\n return toastBaseAlert.fire({\n text: text,\n icon: 'error',\n timer: displayTime,\n background: '#f44336'\n });\n}","import moment from 'moment';\nimport { useCurrentUserStore } from '@/stores/CurrentUserStore';\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { ref } from 'vue';\n\nexport async function TimeStamps(bodyText: string) {\n const currentUser = ref();\n const currentUserStore = useCurrentUserStore();\n const timeDate = moment(Date.now()).format('DD/MM/YYYY HH:mm:ss');\n\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n\n /* Only append a new line if there's something already in the text \n * Otherwise, this can look strange for the end user */\n if (bodyText) {\n bodyText += '\\n';\n }\n\n return `${bodyText}${timeDate} ${currentUser.value?.name} :`;\n}","import { Address } from \"@/types/generic/Address\";\n\nconst getDefaultAddressValue = (): Address => {\n return {\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: ''\n };\n}\n\nconst formatAddress = (propertyName: string = '', street: string = '', locality: string = '', town: string = '', region: string = '', postCode: string = '', country: string = '', delimiter: string = ', '): string => {\n return [propertyName, street, locality, town, region, postCode, country]\n .filter(item => !!item)\n .join(delimiter);\n}\n\nexport { getDefaultAddressValue, formatAddress }","import Cookies from \"js-cookie\"\n\n/** Attempts to read a cookie with the passed name and deserialize it from json into the request type \n * If no cookie exists, undefined will be returned */\nexport const readCookie = (cookieName :string) => {\n // Sanity check the cookie name to avoid errors\n if (!cookieName) {\n throw 'cookieName must be entered';\n }\n\n const cookie = Cookies.get(cookieName) as string;\n\n // Cookie doesn't exist so return undefined to avoid deserialize errors\n if (!cookie) {\n return undefined;\n }\n\n try {\n // Attempt to deserialize the cookie into the passed type\n return JSON.parse(cookie) as T;\n } catch {\n /* If this fails as the cookie isn't valid json or doesn't match the request type, return undefined\n * We want to handle the error so the app continues to work,\n * To aid troubleshooting, the error should be written to the console */\n console.error(`Unable to deserialize cookie ${cookieName} into the requested type`);\n return undefined;\n }\n}","import Cookies from \"js-cookie\";\n\n/** Serializes the passed data as json and stores it in a secure cookie */\nexport const writeCookie = (cookieName: string, data: T, expiryDays: number|undefined = 31) => {\n // Sanity check the cookie name to avoid errors\n if (!cookieName) {\n throw 'cookieName must be entered';\n }\n\n // Max expiry date for cookies in IOS and Chrome is 400 days\n const cookieOptions: Cookies.CookieAttributes = ({ sameSite: 'Strict', secure: true });\n\n if(expiryDays) {\n cookieOptions.expires = expiryDays;\n }\n\n // To avoid potential issues with old cookies, clear previous cookie with the same name\n try {\n Cookies.remove(cookieName)\n } catch {\n // Ignore errors if the cookie doesn't exist\n }\n\n Cookies.set(cookieName, JSON.stringify(data), cookieOptions);\n}","import { CorrespondenceFile } from \"@/types/CorrespondenceFile\";\nimport { FileNameParts } from '@/types/FileNameParts';\n\n/** Converts the fileContents in the passed CorrespondenceFile to a blob so it can be downloaded */\nconst convertCorrespondenceFileToBlob = (file: CorrespondenceFile) => {\n /* The file contents are encoded as a base64 string. \n * Before we can create a blob, we must decode it */\n const byteCharacters = atob(file.fileContents);\n\n // Create an array for the byte numbers\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n // Convert the byte numbers into a Uint8Array\n const byteArray = new Uint8Array(byteNumbers);\n\n return new Blob([byteArray], { type: file.contentType });\n};\n\n/** Converts the correspondence file in the passed CorrespondenceFile to a blob so it can be downloaded */\nconst convertCorrespondenceFileToFile = (file: CorrespondenceFile) => {\n const fileName = getFileNameParts(file.fileDownloadName);\n if(!fileName){\n return;\n }\n\n return new File([convertCorrespondenceFileToBlob(file)], fileName.nameWithExtension, { type: file.contentType });\n}\n\n/** Retrieves all file parts for the passed file name */\nconst getFileNameParts = (fullFileName: string): FileNameParts | null => {\n /* ([^\\\\]+) Matches one or more characters that are not a backslash (\\\\). This captures the file name.\n * \\.([^\\\\]+)$ Matches a literal dot (.) followed by one or more characters that are not a backslash (\\\\) \n * until the end of the string. This captures the file extension. */\n const regex = /([^\\\\]+)\\.([^\\\\]+)$/;\n const match = fullFileName.match(regex);\n \n if (!match) {\n return null;\n }\n \n return {\n nameWithExtension: match[0],\n name: match[1],\n extension: match[2]\n }\n};\n\nexport { convertCorrespondenceFileToBlob, getFileNameParts, convertCorrespondenceFileToFile }","import { reactive } from \"vue\";\n\nconst Breakpoints = {\n XSmall: \"(max-width: 599.99px)\",\n Small: \"(min-width: 600px) and (max-width: 959.99px)\",\n Medium: \"(min-width: 960px) and (max-width: 1279.99px)\",\n Large: \"(min-width: 1280px)\"\n};\n\nlet handlers :Function[] = [];\nconst xSmallMedia = reactive(window.matchMedia(Breakpoints.XSmall));\nconst smallMedia = reactive(window.matchMedia(Breakpoints.Small));\nconst mediumMedia = reactive(window.matchMedia(Breakpoints.Medium));\nconst largeMedia = reactive(window.matchMedia(Breakpoints.Large));\n\n[xSmallMedia, smallMedia, mediumMedia, largeMedia].forEach(media => {\n media.addListener(() => {\n handlers.forEach(handler => handler());\n });\n});\n\nexport const sizes = () => {\n return {\n \"screen-x-small\": xSmallMedia.matches,\n \"screen-small\": smallMedia.matches,\n \"screen-medium\": mediumMedia.matches,\n \"screen-large\": largeMedia.matches\n };\n};\n\nexport const subscribe = (handler :Function) => handlers.push(handler);\n\nexport const unsubscribe = (handler :Function) => {\n handlers = handlers.filter(item => item !== handler);\n};\n","export class RecordNavigator {\n private _records :number[] = [];\n private _currentIndex :number = 0;\n\n /** Caches the passed records and the current position in the array */\n cacheRecords(records :number[], currentIndex :number = 0) {\n this._records = records;\n this._currentIndex = currentIndex;\n }\n\n /** Gets the id of the next record */\n getNextRecord() {\n // To avoid errors only go to next record if there's a record to navigate to\n if (this.isLastRecord() || this.isIndexOutOfBounds(this._currentIndex + 1)) {\n return this._records[this._currentIndex];\n }\n\n // Move to the next record\n this._currentIndex++;\n\n return this._records[this._currentIndex];\n }\n\n /** Gets the id of the previous record */\n getPreviousRecord() {\n // To avoid errors only go to next record if there's a record to navigate to\n if (this.isFirstRecord() || this.isIndexOutOfBounds(this._currentIndex - 1)) {\n return this._records[this._currentIndex];\n }\n\n // Move to the previous record\n this._currentIndex--;\n\n return this._records[this._currentIndex];\n }\n\n /** Checks if the current record is the last record in the array */\n isLastRecord() {\n return this._currentIndex === this._records.length -1;\n }\n\n /** Checks if the current record is the first record in the array */\n isFirstRecord() {\n return this._currentIndex === 0;\n }\n\n /** Gets the current position in the array */\n currentPosition() {\n return this._currentIndex + 1;\n }\n\n /** Gets the total count of records in the array */\n totalCount() {\n return this._records.length;\n }\n\n /** Checks and returns whether the cache is empty */\n isEmpty() {\n return (this._records.length === 0);\n }\n\n /** Clears all previous records */\n clear() {\n this._records = [];\n }\n\n /** Checks whether the passed index is out of bounds */\n private isIndexOutOfBounds(index :number) {\n return index < 0 || index > this._records.length - 1 || this._records.length === 0;\n }\n}","import { PropertyData } from '@/types/properties/PropertyData';\nimport { Address } from '@/types/generic/Address';\nimport { Properties } from 'acquaint-api/models/Properties'\n\n/** Maps the passed Property data to an Address model\n * @param property The property model to map data from \n * @returns Address model with mapped data */\nconst mapPropertyToAddress = (property: PropertyData): Address => {\n return {\n countryCode: property.countryCode,\n postCode: property.postcode,\n propertyName: property.propertyName,\n street: property.street,\n locality: property.locality,\n town: property.town,\n region: property.region,\n country: property.country\n }\n}\n\n/** Maps the passed model Address onto the passed Property model\n * @param address The Address model containing data to map\n * @param property The Property model to map address data to\n * @returns Property model populated with mapped data */\nconst mapAddressToProperty = (address: Address, property: PropertyData): PropertyData => {\n property.countryCode = address.countryCode;\n property.postcode = address.postCode;\n property.propertyName = address.propertyName;\n property.street = address.street;\n property.locality = address.locality;\n property.town = address.town;\n property.region = address.region;\n\n return property;\n}\n\n/** Concatenate the passed Property model to a single address string\n * @param Property model to concatenate address for */\nconst mapPropertyToConcatenatedString = (property: Properties) => {\n return [property.propertyName, property.street, property.locality,\n property.town, property.region, property.postcode]\n .filter(item => !!item)\n .join(', ');\n}\n\nexport { mapPropertyToAddress, mapAddressToProperty, mapPropertyToConcatenatedString }","import {Questions} from 'acquaint-api/constants/Questions';\nimport { IDDescriptionPair } from \"@/types/generic/IDDescriptionPair\";\n\nexport default function findQuestionText(id:Number){\n const questionText = Questions.find((question:IDDescriptionPair)=>{ return question.id == id})\n if (questionText){\n return questionText.description;\n } else{\n return \"\";\n }\n}","import { Environment } from \"@/enums/system/Environment\";\n\n/** Gets the Environment the app is currently running in \n * @returns Environment enum value representing the enivronment the app is currently running in */\nconst getEnvironment = () :Environment => {\n if (window.location.host.includes('localhost')) {\n return Environment.Development;\n }\n\n switch (window.location.host) {\n case 'apptest.acquaintcrm.co.uk': return Environment.Staging;\n case 'apptest.propertybutton.ie': return Environment.Staging;\n case 'appdev.acquaintcrm.co.uk': return Environment.Development;\n default: return Environment.Production\n }\n}\n\n/** Checks whether the current url is a property button domain */\nconst isPropertyButtonUrl = () => window.location.host.includes('propertybutton.ie');\n\nexport { getEnvironment, isPropertyButtonUrl }","const openUtilitySwitchingHelp = () => window.open('https://utility-switching-help.scrollhelp.site/home/');\n\nexport { openUtilitySwitchingHelp }","import { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\n\nexport function AddressEnergyTypeMapper(gasFuel:number, electricityFueld:number){\n if(gasFuel && electricityFueld){\n return EnergyTypes.DualFuel;\n } else if (!electricityFueld && gasFuel){\n return EnergyTypes.GasOnly;\n } else if (electricityFueld && !gasFuel){\n return EnergyTypes.ElectricityOnly;\n } else{\n return EnergyTypes.ElectricityOnly;\n }\n}","import { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { PersonalInfo } from '@/types/switches/PersonalInfo';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { PurchaserPersonalInfo } from '@/types/switches/PurchaserPersonalInfo';\n\nconst CollatePropertySwitchTypeReadingsData = (propertyAddress: Address, energyDetails: EnergyDetails, energyType: number, switchPropertyId: number) => {\n return {\n property: {\n address: {\n countryCode: propertyAddress.countryCode,\n postCode: propertyAddress.postCode,\n propertyName: propertyAddress.propertyName,\n street: propertyAddress.street,\n locality: propertyAddress.locality,\n town: propertyAddress.town,\n region: propertyAddress.region,\n country: propertyAddress.country\n },\n mprn: energyDetails.mprn,\n gprn: energyType != EnergyTypes.ElectricityOnly ? energyDetails.gasGPRNNum : '',\n electricMeterType: energyDetails.electricMeterType,\n payAsYouGoGasMeter: energyType != EnergyTypes.ElectricityOnly && energyDetails.payAsYouGo,\n propertyId: switchPropertyId\n },\n switchType: energyType,\n meterReadings: {\n twentyFourHourMeterRead: energyType != EnergyTypes.GasOnly ? Number(energyDetails.twentyfourHMeterRead) : 0,\n nightSaverMeterRead: energyType != EnergyTypes.GasOnly ? Number(energyDetails.nightSaverMeterRead) : 0,\n dayMeterRead: energyType != EnergyTypes.GasOnly ? Number(energyDetails.dayMeterMeterRead) : 0,\n nightMeterRead: energyType != EnergyTypes.GasOnly ? Number(energyDetails.nightMeterRead) : 0,\n peakMeterRead: energyType != EnergyTypes.GasOnly ? Number(energyDetails.peakMeterRead) : 0,\n meterReadingDate: energyDetails.readingDate,\n gasMeterRead: energyType != EnergyTypes.ElectricityOnly ? Number(energyDetails.gasMeterRead) : 0\n }\n }\n};\n\nexport const CollateTenantSubmissionData = (propertyAddress: Address, energyDetails: EnergyDetails, energyType: number, switchPropertyId: number, tenantPersonalInfo: PersonalInfo, landlordPersonalInfo: LandlordPersonalInfo, tenancyId: number) => {\n const propertySwitchTypeReadingsData = CollatePropertySwitchTypeReadingsData(propertyAddress, energyDetails, energyType, switchPropertyId);\n const tenantSwitchSpecificData = {\n tenancyStartDate: tenantPersonalInfo.tenancyStartDate,\n tenant: {\n titleId: tenantPersonalInfo.title,\n firstName: tenantPersonalInfo.firstName,\n lastName: tenantPersonalInfo.lastName,\n telephoneNumber: tenantPersonalInfo.number,\n email: tenantPersonalInfo.email,\n dateOfBirth: tenantPersonalInfo.birthDate,\n criticalCare: tenantPersonalInfo.priorityService,\n tenantId: tenantPersonalInfo.id\n },\n landlord: {\n titleId: landlordPersonalInfo.title,\n firstName: landlordPersonalInfo.firstName,\n lastName: landlordPersonalInfo.lastName,\n telephoneNumber: landlordPersonalInfo.number,\n email: landlordPersonalInfo.email,\n address: {\n countryCode: landlordPersonalInfo.address.countryCode,\n postCode: landlordPersonalInfo.address.postCode,\n propertyName: landlordPersonalInfo.address.propertyName,\n street: landlordPersonalInfo.address.street,\n locality: landlordPersonalInfo.address.locality,\n town: landlordPersonalInfo.address.town,\n region: landlordPersonalInfo.address.region,\n country: landlordPersonalInfo.address.country\n },\n landlordId: landlordPersonalInfo.id\n },\n tenancyId: tenancyId\n };\n\n return { ...tenantSwitchSpecificData, ...propertySwitchTypeReadingsData };\n};\n\nexport const CollateAllocationSubmissionData = (propertyAddress: Address, energyDetails: EnergyDetails, energyType: number, switchPropertyId: number, tenantPersonalInfo: PersonalInfo) => {\n const propertySwitchTypeReadingsData = CollatePropertySwitchTypeReadingsData(propertyAddress, energyDetails, energyType, switchPropertyId);\n const tenantSwitchSpecificData = {\n tenancyStartDate: tenantPersonalInfo.tenancyStartDate,\n tenant: {\n titleId: tenantPersonalInfo.title,\n firstName: tenantPersonalInfo.firstName,\n lastName: tenantPersonalInfo.lastName,\n telephoneNumber: tenantPersonalInfo.number,\n email: tenantPersonalInfo.email,\n dateOfBirth: tenantPersonalInfo.birthDate,\n criticalCare: tenantPersonalInfo.priorityService,\n tenantId: tenantPersonalInfo.id\n }\n };\n\n return { ...tenantSwitchSpecificData, ...propertySwitchTypeReadingsData };\n};\n\nexport const CollateLandlordSubmissionData = (propertyAddress: Address, energyDetails: EnergyDetails, energyType: number, switchPropertyId: number, landlordPersonalInfo: LandlordPersonalInfo, billTo: number, tenancyId: number) => {\n const propertySwitchTypeReadingsData = CollatePropertySwitchTypeReadingsData(propertyAddress, energyDetails, energyType, switchPropertyId);\n const landlordSwitchSpecificData = {\n landlord: {\n titleId: landlordPersonalInfo.title,\n firstName: landlordPersonalInfo.firstName,\n lastName: landlordPersonalInfo.lastName,\n telephoneNumber: landlordPersonalInfo.number,\n email: landlordPersonalInfo.email,\n address: {\n countryCode: landlordPersonalInfo.address.countryCode,\n postCode: landlordPersonalInfo.address.postCode,\n propertyName: landlordPersonalInfo.address.propertyName,\n street: landlordPersonalInfo.address.street,\n locality: landlordPersonalInfo.address.locality,\n town: landlordPersonalInfo.address.town,\n region: landlordPersonalInfo.address.region,\n country: landlordPersonalInfo.address.country\n },\n landlordId: landlordPersonalInfo.id\n },\n billTo: billTo,\n tenancyId: tenancyId\n };\n\n return { ...landlordSwitchSpecificData, ...propertySwitchTypeReadingsData }\n};\n\nexport const CollatePurchaserSubmissionData = (propertyAddress: Address, energyDetails: EnergyDetails, energyType: number, switchPropertyId: number, purchaser: PurchaserPersonalInfo) => {\n const propertySwitchTypeReadingsData = CollatePropertySwitchTypeReadingsData(propertyAddress, energyDetails, energyType, switchPropertyId);\n\n const purchaserSwitchSpecificData = {\n purchaser: {\n titleId: purchaser.title,\n firstName: purchaser.firstName,\n lastName: purchaser.lastName,\n telephoneNumber: purchaser.number,\n email: purchaser.email,\n dateOfBirth: purchaser.birthDate,\n criticalCare: purchaser.priorityService,\n purchaserId: purchaser.id\n }\n }\n return { ...purchaserSwitchSpecificData, ...propertySwitchTypeReadingsData }\n};\n\nexport const CollateCouncilLandlordSubmissionData = (propertyAddress: Address, energyDetails: EnergyDetails, energyType: number, switchPropertyId: number, isNewDevelopment: boolean) => {\n const propertySwitchTypeReadingsData = CollatePropertySwitchTypeReadingsData(propertyAddress, energyDetails, energyType, switchPropertyId);\n\n return { ...propertySwitchTypeReadingsData, isNewDevelopment: isNewDevelopment };\n};","import { EnergyDetails } from \"@/types/switches/EnergyDetails\"\n\nconst getDefaultEnergyDetailsModel = () :EnergyDetails => {\n return {...{\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n }}\n}\n\nexport { getDefaultEnergyDetailsModel }","import { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\n\nexport function FindEnergyTypeText(propertyEnergyType:number){\n switch(propertyEnergyType){\n case EnergyTypes.DualFuel:\n return \"Dual Fuel\";\n case EnergyTypes.ElectricityOnly:\n return \"Electricity Only\";\n case EnergyTypes.GasOnly:\n return \"Gas Only\";\n default: \n return \"Electricity Only\";\n }\n}","import { LandlordPersonalInfo } from \"@/types/switches/LandlordPersonalInfo\";\nimport { PersonalInfo } from \"@/types/switches/PersonalInfo\";\nimport { Contacts } from \"acquaint-api/models/Contacts\";\n\n/*** Maps the passed Acquaint Contact model to a Landlord Personal Info model\n * @param contact - The Acquaint Contact model to map\n * @returns LandlordPersonalInfo model populated with mapped data */\nconst mapAcquaintContactToLandlordPersonalInfo = (contact: Contacts): LandlordPersonalInfo => {\n return {\n id: contact.id,\n title: contact.titleID,\n firstName: contact.firstNames,\n lastName: contact.lastName,\n email: contact.email,\n number: contact.mobileTelephone ?? contact.homeTelephone,\n address: {\n countryCode: contact.homeCountryCode,\n country: contact.homeCountry,\n propertyName: contact.homeProperty,\n street: contact.homeStreet,\n locality: contact.homeLocality,\n town: contact.homeTown,\n region: contact.homeRegion,\n postCode: contact.homePostcode\n }\n }\n}\n\n/*** Maps the passed Acquaint Contact model to the passed Personal Info model\n * @param contact- The Acquaint Contact model to map\n * @param personalInfo - The Personal Info model to map data to */\nconst mapAcquaintContactToPersonalInfo = (contact: Contacts, personalInfo: PersonalInfo) => {\n personalInfo.firstName = contact.firstNames;\n personalInfo.lastName = contact.lastName;\n personalInfo.title = contact.titleID;\n personalInfo.birthDate = contact.birthDate;\n personalInfo.email = contact.email;\n personalInfo.number = contact.mobileTelephone;\n personalInfo.id = contact.id;\n}\n\nexport { mapAcquaintContactToLandlordPersonalInfo, mapAcquaintContactToPersonalInfo }","import { ValidationType } from 'acquaint-api/validation/ValidationType';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport * as BLValidation from \"bright-logic-core/validation/validation\";\nimport { ValidationCallbackParams } from '../../types/validation/ValidationCallbackParams';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\n\nexport function validationCallback(params: ValidationCallbackParams) {\n return validateField(params.value, params.rule.fieldValidation, params.rule.countryCode);\n}\n\nexport function validateField(value: string | number, fieldValidation: FieldValidation, countryCode: CountryCode) {\n switch (fieldValidation.validationType) {\n case ValidationType.Email:\n return typeof (value) === \"number\" ? false : BLValidation.email(value);\n case ValidationType.Currency:\n return BLValidation.currency(value);\n case ValidationType.CurrencyNeg:\n return BLValidation.currencyNeg(value);\n case ValidationType.DateTime:\n return typeof (value) === \"number\" ? false : BLValidation.date(value);\n case ValidationType.NameUpperLowerCase:\n return typeof (value) === \"number\" ? false : BLValidation.nameUpperLowerCase(value);\n case ValidationType.Numeric:\n return BLValidation.numeric(value);\n case ValidationType.NumericNeg:\n return BLValidation.numericNeg(value);\n case ValidationType.Percentage:\n return BLValidation.percentage(value);\n case ValidationType.WebPage:\n return typeof (value) === \"number\" ? false : BLValidation.webPage(value);\n case ValidationType.AccountSortCode:\n return BLValidation.accountSortCode(value);\n case ValidationType.AccountNumber:\n return BLValidation.accountNumber(value);\n case ValidationType.IBAN:\n return typeof (value) === \"number\" ? false : BLValidation.IBAN(value);\n case ValidationType.EPC:\n return BLValidation.EPC(value);\n case ValidationType.PropertyUniqueReferenceNumber:\n return BLValidation.propertyUniqueReferenceNumber(value);\n case ValidationType.BriefYourMarketUserName:\n return typeof (value) === \"number\" ? false : BLValidation.briefYourMarketUserName(value);\n case ValidationType.InternationalPassportNumber:\n return typeof (value) === \"number\" ? false : BLValidation.internationalPassportNumber(value);\n case ValidationType.UserPassword:\n return typeof (value) === \"number\" ? false : BLValidation.userPassword(value);\n case ValidationType.Username:\n return typeof (value) === \"number\" ? false : BLValidation.username(value);\n case ValidationType.MPRN:\n return typeof (value) === \"number\" ? false : BLValidation.mprn(value)\n case ValidationType.GPRN:\n return typeof (value) === \"number\" ? false : BLValidation.gprn(value);\n case ValidationType.PostCode:\n return typeof (value) === \"number\" ? false : validatePostcode(value, countryCode);\n default:\n return true;\n }\n}\n\nexport function validatePostcode(value: string, countryCodeID :number) {\n let outward: string = \"\";\n let inward: string = \"\";\n const eirCodeRegex = new RegExp(/^([A-Za-z])([0-9])([0-9wW])([A-Za-z0-9])([A-Za-z0-9])([A-Za-z0-9])([A-Za-z0-9])$/);\n\n value = value.trim();\n value = value.replaceAll(' ', '')\n\n if (value === \"\") {\n return true;\n }\n\n switch (countryCodeID) {\n case CountryCode.UK:\n case CountryCode.Jersey:\n case CountryCode.Guernsey:\n case CountryCode.Gibraltar:\n case CountryCode.IsleOfMan:\n\n value = value.toUpperCase();\n\n if (value.includes(\"BFPO\")) {\n return true;\n }\n\n if ((value.length >= 5) && (value.length <= 7)) {\n if ((BLValidation.isNumeric(value.charAt(value.length - 3)) === true) && (BLValidation.isNumeric(value.charAt(value.length - 2)) === false) && (BLValidation.isNumeric(value.charAt(value.length - 1)) === false)) {\n outward = value.substring(0, value.length - 3);\n inward = value.substring(value.length - 2);\n }\n }\n\n if ((inward == \"\") || (outward == \"\")) {\n return false;\n }\n\n return true;\n\n case CountryCode.France:\n case CountryCode.Germany:\n case CountryCode.Greece:\n case CountryCode.Italy:\n case CountryCode.Spain:\n case CountryCode.Turkey:\n if ((value.length !== 5) || (BLValidation.isNumeric(value) == false)) {\n return false;\n }\n\n return true;\n\n case CountryCode.Portugal:\n if ((value.length !== 8) || (BLValidation.isNumeric(value.substring(0, 4)) == false) || (value.substring(4, 5) !== '-') || (BLValidation.isNumeric(value.substring(5, 8)) == false)) {\n return false;\n }\n\n return true;\n\n case CountryCode.Ireland:\n value = value.toUpperCase();\n return eirCodeRegex.test(value);\n\n default:\n return true;\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e287af48\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"ai-disclaimer\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", null, \"Artificial Intelligence can make mistakes. Please ensure you check before you apply.\")\n], -1))\nconst _hoisted_2 = { key: 0 }\n\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport FieldValidationFreeTextArea from '../ui/inputs/field-validation-free-text-area.vue';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\nimport { AIPromptsToGenerate } from '@/enums/ai/AIPromptsToGenerate';\nimport { useSystemConfigurationStore } from '@/stores/SystemConfigurationStore';\nimport { SystemConfiguration } from 'acquaint-api/constants/SystemConfiguration';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ai-text-generator-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default 0\n */\n propertyId: {\n type: Number,\n default: 0\n },\n /** Type of prompt to generate */\n promptToGenerate: {\n type: Number,\n default: AIPromptsToGenerate.None\n },\n /** Id of the property room to run the AI generator for. To use this option propertyId must be passed */\n roomId: {\n type: Number,\n default: 0\n },\n /** \n * Determines whether to display apply button.\n * @type {boolean}\n * @default false\n */\n displayApplyButton: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** Triggered when the Apply button is clicked \n @property response {string} AI generated text to be applied in the parent component */\n 'applyAIResponse'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst apiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst request = ref('Write text about');\nconst aiResponse = ref('');\nconst aiCredits = ref();\nconst firstAPICallMade = ref(false);\nconst loading = ref(false);\n\nconst systemConfigurationStore = useSystemConfigurationStore();\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n request.value = 'Write text about';\n aiResponse.value = '';\n aiCredits.value = 0;\n firstAPICallMade.value = false;\n return;\n }\n fecthAICredits();\n\n switch (props.promptToGenerate) {\n case AIPromptsToGenerate.PropertyDescription:\n await fetchPropertyDescriptionPrompt();\n break;\n case AIPromptsToGenerate.PropertyRoomDescription:\n await fetchRoomDescriptionPrompt();\n break;\n case AIPromptsToGenerate.PropertyRoomTemplateDescription:\n await fetchRoomTemplateDescriptionPrompt();\n break;\n }\n});\n\nconst fecthAICredits = async () => {\n try {\n aiCredits.value = await apiNextClient.httpGet('AIResponse/GetAICreditBalance');\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n aiCredits.value = undefined;\n }\n};\n\nconst fetchPropertyDescriptionPrompt = async () => {\n try {\n request.value = await apiNextClient.httpGet(`AIPrompt/${props.propertyId}/Property`);\n } catch (err) {\n request.value = '';\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst fetchRoomDescriptionPrompt = async () => {\n /* For new rooms, there'll be no room description. This will cause the api to return a 404 response\n * Instead, we'll get the default prompt from the system config */\n if (props.roomId === 0) {\n await getDefaultRoomPrompt();\n return;\n }\n\n try {\n request.value = await apiNextClient.httpGet(`AIPrompt/${props.propertyId}/PropertyRoom/${props.roomId}`);\n } catch (err) {\n request.value = '';\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst fetchRoomTemplateDescriptionPrompt = async () => {\n /* For new room templates, there'll be no room description. This will cause the api to return a 404 response\n * Instead, we'll get the default prompt from the system config */\n if (props.roomId === 0) {\n await getDefaultRoomPrompt();\n return;\n }\n\n try {\n request.value = await apiNextClient.httpGet(`/AIPrompt/PropertyRoomTemplate/${props.roomId}`);\n } catch (err) {\n request.value = '';\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst getDefaultRoomPrompt = async () => {\n request.value = await systemConfigurationStore.getSystemConfigurationValue(SystemConfiguration.AIPropertyRoomDescriptionPrompt);\n request.value = request.value.replace(new RegExp('\\\\[RoomDescription\\\\]', 'i'), '');\n}\n\nconst fetchAIResponse = async () => {\n try {\n aiResponse.value = await apiNextClient.httpGet(`AIResponse?input=${request.value}`);\n return true;\n } catch (err) {\n aiResponse.value = '';\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst fetchDisplayAIResponse = async () => {\n loading.value = true;\n\n if (await fetchAIResponse()) {\n firstAPICallMade.value = true;\n fecthAICredits();\n }\n\n loading.value = false;\n};\n\nwatch(() => aiResponse.value, async () => {\n // Prevent blank text being written to the clipboard, as this may cause confusion with users\n if (!showModal.value || !aiResponse.value) {\n return;\n }\n\n await navigator.clipboard.writeText(aiResponse.value);\n});\n\nconst applyAIResponse = () => {\n emit('applyAIResponse', aiResponse.value);\n showModal.value = false;\n};\n\nconst onCancelClick = () => showModal.value = false;\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showModal).value = $event)),\n title: \"AI Text Generator\",\n height: \"600px\",\n saving: loading.value\n }, {\n content: _withCtx(() => [\n _createVNode(AcquaintInfoBox, {\n text: aiCredits.value?.toString() ?? '0',\n label: \"Credits Remaining\",\n width: _unref(FieldSize).Small\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(FieldValidationFreeTextArea, {\n modelValue: request.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((request).value = $event)),\n label: \"Request\",\n height: \"6rem\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).KeyUp\n }, null, 8, [\"modelValue\", \"value-change-event\"]),\n _createVNode(FieldValidationFreeTextArea, {\n \"read-only\": !firstAPICallMade.value,\n modelValue: aiResponse.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((aiResponse).value = $event)),\n label: \"Generated Text\",\n height: \"14rem\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).KeyUp\n }, null, 8, [\"read-only\", \"modelValue\", \"value-change-event\"]),\n _hoisted_1,\n (firstAPICallMade.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, \"This text has been copied to the clipboard.\"))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n visible: props.displayApplyButton,\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Apply Text', onClick: () => { applyAIResponse() }, disabled: aiCredits.value == 0 || !firstAPICallMade.value || loading.value }\n }, null, 8, [\"visible\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Generate Text', onClick: () => { fetchDisplayAIResponse() }, disabled: aiCredits.value == 0 || request.value == '' || loading.value }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"saving\"]))\n}\n}\n\n})","import script from \"./ai-text-generator-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ai-text-generator-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ai-text-generator-modal.vue?vue&type=style&index=0&id=e287af48&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e287af48\"]])\n\nexport default __exports__","export enum CertificateTypesValidation {\n PopertyRequired = 1,\n ContactRequired = 0\n}","export enum NewCertificateTab {\n General,\n Ratings,\n SystemInfo\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-724ce5e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"epc-container\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"epc-group\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"header\" }, \"Energy Efficiency\", -1))\nconst _hoisted_4 = { class: \"input-fields\" }\nconst _hoisted_5 = { class: \"epc-group\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"header\" }, \"Environmental Impact\", -1))\nconst _hoisted_7 = { class: \"input-fields\" }\n\nimport { PropType, computed } from 'vue';\nimport { Certificates } from 'acquaint-api/models/Certificates'\nimport NumberBoxField from '../ui/inputs/number-box-field.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { PropertyUsages } from '@/enums/properties/PropertyUsages';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'epc-input',\n props: {\n /** \n * The value of the component, used with `v-model`. \n * This represents the certificates data being managed.\n * @type {Certificates}\n * @required\n */\n modelValue: {\n type: Object as PropType,\n required: true\n },\n /** \n * Defines the usage type of the property.\n * This is typically an enumeration or numeric identifier indicating how the property is used.\n * @type {number}\n * @required\n */\n propertyUsage: {\n type: Number,\n required: true\n },\n /** \n * A validation group identifier used for form validation purposes.\n * This helps in grouping fields under a specific validation rule set.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Certificates} value - The new value to be updated in the model.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst certificate = computed({\n get: () => props.modelValue,\n set: (value: Certificates) => emit('update:modelValue', value)\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (certificate.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.propertyUsage == _unref(PropertyUsages).Residential)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eerCurrent,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((certificate.value.eerCurrent) = $event)),\n label: \"Current\",\n width: _unref(FieldSize).Small,\n \"max-value\": 100,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"]),\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eerPotential,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((certificate.value.eerPotential) = $event)),\n label: \"Potential\",\n width: _unref(FieldSize).Small,\n \"max-value\": 100,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"section\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eirCurrent,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((certificate.value.eirCurrent) = $event)),\n label: \"Current\",\n width: _unref(FieldSize).Small,\n \"max-value\": 100,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"]),\n (__props.propertyUsage == _unref(PropertyUsages).Residential)\n ? (_openBlock(), _createBlock(NumberBoxField, {\n key: 0,\n modelValue: certificate.value.eirPotential,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((certificate.value.eirPotential) = $event)),\n label: \"Potential\",\n width: _unref(FieldSize).Small,\n \"max-value\": 100,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./epc-input.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./epc-input.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./epc-input.vue?vue&type=style&index=0&id=724ce5e2&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-724ce5e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1836c602\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"ber-container\"\n}\nconst _hoisted_2 = { class: \"ber-group\" }\nconst _hoisted_3 = { class: \"field-container\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \"Energy Rating (kWh/m2/yr)\", -1))\nconst _hoisted_5 = { class: \"field-container\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \"Emissions (kgCO2/m2/yr)\", -1))\nconst _hoisted_7 = { class: \"ber-group\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"header\" }, \"Dual Motif Minimum Values\", -1))\nconst _hoisted_9 = { class: \"field-container\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \"Energy Rating (kWh/m2/yr)\", -1))\nconst _hoisted_11 = { class: \"field-container\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \"Emissions (kgCO2/m2/yr)\", -1))\n\nimport { PropType, computed } from 'vue';\nimport { Certificates } from 'acquaint-api/models/Certificates'\nimport NumberBoxField from '../ui/inputs/number-box-field.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ber-input',\n props: {\n /** The model value representing the certificates data.\n * This prop is required and must be an object of type `Certificates`.\n */\n modelValue: {\n type: Object as PropType,\n required: true\n },\n /** The validation group name to associate with the component.\n * This prop is optional and defaults to an empty string if not provided.\n */\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, usually triggered by a change in the Certificates.\n * @event update:modelValue\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst certificate = computed({\n get: () => props.modelValue,\n set: (value: Certificates) => emit('update:modelValue', value)\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (certificate.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eerCurrent,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((certificate.value.eerCurrent) = $event)),\n label: \"\",\n width: _unref(FieldSize).Small,\n \"min-value\": -9999,\n \"max-value\": 9999,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eirCurrent,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((certificate.value.eirCurrent) = $event)),\n label: \"\",\n width: _unref(FieldSize).Small,\n \"min-value\": -9999,\n \"max-value\": 9999,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ]),\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eerPotential,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((certificate.value.eerPotential) = $event)),\n label: \"Indicator\",\n width: _unref(FieldSize).Small,\n \"max-value\": 10,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ]),\n _createElementVNode(\"section\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eerCurrentMin,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((certificate.value.eerCurrentMin) = $event)),\n label: \"\",\n width: _unref(FieldSize).Small,\n \"min-value\": -9999,\n \"max-value\": 9999,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eirCurrentMin,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((certificate.value.eirCurrentMin) = $event)),\n label: \"\",\n width: _unref(FieldSize).Small,\n \"min-value\": -9999,\n \"max-value\": 9999,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ]),\n _createVNode(NumberBoxField, {\n modelValue: certificate.value.eerPotentialMin,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((certificate.value.eerPotentialMin) = $event)),\n label: \"Indicator\",\n width: _unref(FieldSize).Small,\n \"max-value\": 10,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"validation-group\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ber-input.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ber-input.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ber-input.vue?vue&type=style&index=0&id=1836c602&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1836c602\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { PropType, computed, watch } from 'vue';\nimport { Certificates } from 'acquaint-api/models/Certificates'\nimport { CountryCode } from 'bright-logic-core/src/CountryCode'\nimport EpcInput from './epc-input.vue';\nimport BerInput from './ber-input.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'epc-input-wrapper',\n props: {\n /** \n * The value of the component, used with `v-model`. \n * This represents the certificates data being managed.\n * @type {Certificates}\n * @required\n */\n modelValue: {\n type: Object as PropType,\n required: true\n },\n\n /** \n * Defines the usage type of the property.\n * This is typically an enumeration or numeric identifier indicating how the property is used.\n * @type {number}\n * @required\n */\n propertyUsage: {\n type: Number,\n required: true\n },\n\n /** \n * The country code associated with the property.\n * This should be a numeric code representing a country (e.g., ISO 3166-1 numeric).\n * @type {number}\n * @required\n */\n countryCode: {\n type: Number,\n required: true\n },\n\n /** \n * A validation group identifier used for form validation purposes.\n * This helps in grouping fields under a specific validation rule set.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Certificates} value - The new value to be updated in the model.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst certificate = computed({\n get: () => props.modelValue,\n set: (value: Certificates) => emit('update:modelValue', value)\n});\n\nwatch(() => props.countryCode, () => {\n /* As different countries us the same fields for different information, \n * reset them when the country changes */\n certificate.value.eerCurrent = 0;\n certificate.value.eerCurrentMin = 0;\n certificate.value.eerPotential = 0;\n certificate.value.eerPotentialMin = 0;\n certificate.value.eirCurrent = 0;\n certificate.value.eirCurrentMin = 0;\n certificate.value.eirPotential = 0;\n certificate.value.eirPotentialMin = 0;\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (__props.countryCode == _unref(CountryCode).Ireland)\n ? (_openBlock(), _createBlock(BerInput, {\n key: 0,\n modelValue: certificate.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((certificate).value = $event))\n }, null, 8, [\"modelValue\"]))\n : (_openBlock(), _createBlock(EpcInput, {\n key: 1,\n modelValue: certificate.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((certificate).value = $event)),\n \"property-usage\": __props.propertyUsage\n }, null, 8, [\"modelValue\", \"property-usage\"]))\n}\n}\n\n})","import script from \"./epc-input-wrapper.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./epc-input-wrapper.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4890dab1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tab-container\" }\nconst _hoisted_2 = { class: \"smaller-fields-container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"tab-container\"\n}\nconst _hoisted_4 = { class: \"tab-container\" }\nconst _hoisted_5 = { class: \"smaller-fields-container\" }\n\nimport ModalBase from '../ui/modals/modal-base.vue';\nimport { computed, ref, inject, watch, PropType } from 'vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { Certificate } from '@/types/certificates/Certificate';\nimport PropertyLookup from '../ui/lookup/property-lookup.vue';\nimport ContactLookup from '../ui/lookup/contact-lookup.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport lookupSingleSelect from '../ui/lookup/lookup-single-select.vue';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { CertificateTypes } from '@/types/certificates/CertificateTypes';\nimport { CertificateTypesValidation } from '@/enums/certificates/CertifcateTypesValidation';\nimport { PropertyData } from '@/types/properties/PropertyData';\nimport { CertificatesValidation } from 'acquaint-api/validation/CertificatesValidation';\nimport AcquaintTextbox from '../ui/inputs/acquaint-textbox.vue';\nimport AcquaintDateBox from '../ui/inputs/acquaint-date-box.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport SystemCodeSingleSelect from '../ui/system-codes/system-code-single-select.vue';\nimport moment from 'moment';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport { formatDate } from 'bright-logic-core/src/format';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { NewCertificateTab } from '@/enums/certificates/NewCertificateTab';\nimport { CertificateStatus } from '@/enums/certificates/CertificateStatus'\nimport { CertificateType } from '@/enums/certificates/CertificateType'\nimport { PropertyUsages } from '@/enums/properties/PropertyUsages';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport EpcInputWrapper from './epc-input-wrapper.vue'\nimport { SystemContactTypes } from '@/enums/contacts/SystemContactTypes';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'base-certificate-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the certificate.\n * @type {number}\n * @default 0\n */\n certificateId: {\n type: Number,\n default: 0\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default 0\n */\n propertyId: {\n type: Number,\n default: 0\n },\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @default 0\n */\n contactId: {\n type: Number,\n default: 0\n },\n /** \n * This represents the certificates data being managed.\n * @type {Certificates}\n */\n certificateData: {\n type: Object as PropType\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** Triggered when the modal is closed. This event notifies the parent component that the modal has been closed\n * and provides information about whether the certificate data was modified during the session.\n * @property {boolean} hasChanges - Indicates whether the certificate data was modified compared to its initial state.\n */\n 'modalClosed'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showCertificateModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst enableFields = ref(false);\nconst certificateData = ref();\nconst initalCertificateData = ref()\nconst propertyData = ref();\nconst showCloseConfirmation = ref(false);\nconst keepingModalOpening = ref(false);\n\nwatch(() => showCertificateModal.value, async () => {\n if (!showCertificateModal.value || keepingModalOpening.value) {\n return;\n }\n // This needs to be reset whenever the modal is opened to prevent some of the watches being triggered so that the data doesn't change unncessarily.\n certificateData.value = undefined;\n // initalCertificateData.value = undefined;\n enableFields.value = false;\n // Reset the selected tab back to general for better UX\n selectedTab.value = NewCertificateTab.General;\n\n await fetchIntialCertificateData();\n\n if (initalCertificateData.value) {\n // If this is opened from the certificates tab in a property's page, we must set the the property id\n // to be that of the property whose page the user is on.\n if (props.propertyId > 0) {\n initalCertificateData.value.propertyID = props.propertyId;\n }\n\n if (props.contactId > 0) {\n initalCertificateData.value.contactID = props.contactId;\n }\n\n // If we open the new certificate modal from a property page's certificates tab, we want to fetch the property and set the contact ID\n // here otherwise, the cancel confirmation will appear as the editable data will have the property's contact but not the initial data.\n if (props.propertyId > 0 && props.contactId == 0) {\n await setOriginalContactId(props.propertyId);\n }\n\n // I was getting a date error because some certificates don't have a start or end date, so I've added in this to prevent\n // the error from occuring. This probably isn't entirely necessary given that this is poor data and that users can't create \n // certificates without a start or end date so users shouldn't be able to get into this state anyway.\n initalCertificateData.value.startDate = initalCertificateData.value.startDate ? initalCertificateData.value.startDate : new Date().toISOString();\n initalCertificateData.value.endDate = initalCertificateData.value.endDate ? initalCertificateData.value.endDate : new Date().toISOString();\n\n if (props.certificateId > 0) {\n // We need to fetch the certificate type and update the end date as otherwise the end date for the editable ref thus casuing the save prompt to\n // be opened when it shouldn't be\n await fetchCertificateType(initalCertificateData.value.certificateTypeID);\n\n setInitialEndDateByCertificateTypeDuration();\n }\n\n certificateData.value = JSON.parse(JSON.stringify(initalCertificateData.value));\n }\n});\n\nconst fetchDefaultCertificates = async () => {\n try {\n initalCertificateData.value = await acquaintApiClient.httpGet(`database/certificates/defaultmodel`);\n } catch (err) {\n enableFields.value = true;\n initalCertificateData.value = undefined;\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst fetchCertificateData = async () => {\n try {\n initalCertificateData.value = await acquaintApiClient.httpGet(`database/certificates/${props.certificateId}`);\n return true;\n } catch (err) {\n enableFields.value = true;\n initalCertificateData.value = undefined;\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst fetchIntialCertificateData = async () => {\n if (props.certificateId) {\n return await fetchCertificateData();\n } else {\n return await fetchDefaultCertificates();\n }\n};\n\nconst saveValidation = (e: any) => {\n if (!certificateTypeData.value) {\n displayErrorMessage('We could not fetch the information for the certificate type to validate your new certificate.');\n return false;\n }\n\n if (!certificateData.value?.certificateTypeID) {\n displayErrorMessage('You must enter a certificate type.');\n return false;\n }\n\n if (!certificateData.value?.userID) {\n displayErrorMessage('You must enter the Added By field.');\n return false;\n }\n\n if (!e.validationGroup._validationInfo.result.isValid) {\n return false;\n }\n\n if (certificateTypeData.value.requiresProperty == CertificateTypesValidation.PopertyRequired && !certificateData.value.propertyID) {\n displayErrorMessage('You must link this Certificate to a Property');\n return false;\n }\n\n if (!certificateData.value.contactID) {\n displayErrorMessage('You must link this Certificate to a Contact');\n return false;\n }\n\n return true;\n};\n\nconst saving = ref(false);\n\n/** Handles the Save button click event */\nconst onSaveClick = async (e: any) => {\n const validate = e.validationGroup.validate();\n\n if (!validate.isValid) {\n return;\n }\n\n if (!saveValidation(e)) {\n return;\n }\n\n saving.value = true;\n\n if (!await submitData()) {\n saving.value = false;\n return;\n }\n\n saving.value = false;\n showCloseConfirmation.value = false;\n emit('modalClosed', true);\n closeCertificateModal();\n};\n\n/** Closes the certificate modal */\nconst closeCertificateModal = () => {\n showCertificateModal.value = false;\n};\n\n/** Pushes the updated certificate to the api */\nconst submitData = async () => {\n if (props.certificateId) {\n return await editCertificate();\n } else {\n return await createCertificate();\n }\n};\n\nconst createCertificate = async () => {\n try {\n await acquaintApiClient.httpPost(`database/certificates`, certificateData.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n showCloseConfirmation.value = true;\n return false;\n }\n};\n\nconst editCertificate = async () => {\n try {\n await acquaintApiClient.httpPut(`database/certificates/${props.certificateId}`, certificateData.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n showCloseConfirmation.value = true;\n return false;\n }\n};\n\nconst certificateTypeData = ref();\n\nconst fetchCertificateType = async (certificateTypeId: number) => {\n certificateTypeData.value = await acquaintApiClient.httpGet(`database/certificatetypes/${certificateTypeId}`);\n};\n\nwatch(() => certificateData.value?.certificateTypeID, async (value, oldValue) => {\n // certificateData is set to undefined everytime the modal is opened and so when the id is changed because certificateData is set initalCertificateData\n // we don't bother calling the certiifcate type API and update the end date\n if (oldValue == undefined) {\n return;\n }\n\n // There is no point calling the certificate type API if there is no selected certificate type or certificate default data.\n if (!certificateData.value || !certificateData.value.certificateTypeID || certificateData.value.certificateTypeID == -1) {\n return\n }\n\n await fetchCertificateType(certificateData.value?.certificateTypeID);\n setEndDateByCertificateTypeDuration();\n\n});\n\nconst setEndDateByCertificateTypeDuration = () => {\n if (!certificateData.value || !certificateTypeData.value) {\n return;\n }\n\n certificateData.value.endDate = moment(certificateData.value.startDate, 'YYYY-MM-DD')\n .add(certificateTypeData.value.duration, 'months')\n .subtract(1, 'days')\n .format('YYYY-MM-DD');\n}\n\nconst setInitialEndDateByCertificateTypeDuration = () => {\n if (!initalCertificateData.value || !certificateTypeData.value) {\n return;\n }\n\n initalCertificateData.value.endDate = moment(initalCertificateData.value.startDate, 'YYYY-MM-DD')\n .add(certificateTypeData.value.duration, 'months')\n .subtract(1, 'days')\n .format('YYYY-MM-DD');\n}\n\nconst fetchProperty = async (propertyId: number) => {\n try {\n propertyData.value = await acquaintApiClient.httpGet(`database/properties/${propertyId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst setEditableContactId = async (propertyId: number) => {\n await fetchProperty(propertyId);\n\n if (certificateData.value && propertyData.value) {\n certificateData.value.contactID = propertyData.value.contactID;\n }\n};\n\nconst setOriginalContactId = async (propertyId: number) => {\n await fetchProperty(propertyId);\n\n if (initalCertificateData.value && propertyData.value) {\n initalCertificateData.value.contactID = propertyData.value.contactID;\n }\n}\n\nwatch(() => certificateData.value?.propertyID, async (value, oldValue) => {\n // If we are opening the modal from the certificates tab in a contact's page, we can't allow the contact id to be changed as the user is creating the\n // certificate for that contatct. We also dont want to set the contact id to the contact of the property when we are opening the modal for a certificate\n // that already has a contact\n\n if (!certificateData.value?.propertyID || certificateData.value?.propertyID == -1 || props.contactId > 0 || (!oldValue && certificateData.value.contactID > 0)) {\n return;\n }\n\n\n await setEditableContactId(certificateData.value.propertyID);\n});\n\n\nwatch(() => certificateData.value, () => {\n showCloseConfirmation.value = JSON.stringify(certificateData.value) != JSON.stringify(initalCertificateData.value);\n}, { deep: true });\n\nconst selectedTab = ref(0);\n\nwatch(() => certificateData.value?.endDate, (value, oldValue) => {\n // After the modal has been opened for certificate, we can't updated the status - this was occasionally happening for certificates and so their statuses\n // were being updated because the certificateData object was being set to the initial object not because the user had changed the end date.\n if (!certificateData.value?.endDate || !oldValue) {\n return;\n }\n\n const today = moment(new Date()).format('YYYY-MM-DD');\n\n /* Ensure status is sync'd with the current end date. \n * This maintains data integrity whilst making the screen less confusing for the user */\n if (moment(certificateData.value.endDate).isBefore(today)) {\n certificateData.value.status = CertificateStatus.Expired;\n }\n\n if (moment(certificateData.value.endDate).isSameOrAfter(today)) {\n certificateData.value.status = CertificateStatus.Current;\n }\n\n});\n\nwatch(() => certificateData.value?.startDate, () => {\n if (!certificateData.value?.startDate) {\n return;\n }\n\n setEndDateByCertificateTypeDuration();\n});\n\nconst showRatingsTab = computed(() => certificateData.value?.certificateTypeID === CertificateType.EPC)\n\nconst lockPropertyField = computed(() => props.propertyId > 0 ? true : enableFields.value);\n\nconst lockContactField = computed(() => props.contactId > 0 ? true : enableFields.value);\n\nconst onModalClosed = () => {\n keepingModalOpening.value = false;\n emit('modalClosed', props.certificateData ? JSON.stringify(props.certificateData) != JSON.stringify(initalCertificateData.value) : false);\n};\n\nconst helpPage = computed(() => props.certificateId ? 'certificates' : 'adding-a-certificate');\n\nconst issuerType = computed(() => {\n if (!certificateTypeData.value) {\n return LookupTableSource.Contractors;\n }\n\n switch (certificateTypeData.value.issuerTypeID) {\n case SystemContactTypes.Bank: return LookupTableSource.Bank;\n case SystemContactTypes.Contractor: return LookupTableSource.Contractors;\n case SystemContactTypes.FinancialAdvisor: return LookupTableSource.FinancialAdvisors;\n case SystemContactTypes.InsuranceCompany: return LookupTableSource.InsuranceCompanies;\n case SystemContactTypes.LocalAuthority: return LookupTableSource.LocalAuthorities;\n case SystemContactTypes.MortgageProvider: return LookupTableSource.MortgageProviders;\n case SystemContactTypes.Solicitor: return LookupTableSource.Solicitors;\n case SystemContactTypes.UtilitySupplier: return LookupTableSource.UtilitySupplier;\n case SystemContactTypes.User: return LookupTableSource.Users;\n default: return LookupTableSource.Contractors;\n }\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showCertificateModal.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((showCertificateModal).value = $event)),\n title: \"Certificate\",\n showCloseButton: !saving.value,\n height: \"580px\",\n showCloseConfirmationPrompt: showCloseConfirmation.value,\n onModalClosed: onModalClosed,\n onCancelPromptDenied: _cache[12] || (_cache[12] = ($event: any) => (keepingModalOpening.value = true)),\n saving: saving.value,\n \"help-page\": helpPage.value\n }, {\n content: _withCtx(() => [\n (certificateData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[10] || (_cache[10] = ($event: any) => ((selectedTab).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createVNode(lookupSingleSelect, {\n modelValue: certificateData.value.certificateTypeID,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((certificateData.value.certificateTypeID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).CertificateTypes,\n style: {\"width\":\"22rem\"},\n label: \"Type\",\n readOnly: enableFields.value\n }, null, 8, [\"modelValue\", \"lookup-source\", \"readOnly\"]),\n _createVNode(PropertyLookup, {\n label: \"Property\",\n modelValue: certificateData.value.propertyID,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((certificateData.value.propertyID) = $event)),\n readOnly: lockPropertyField.value,\n displayNavigateIcon: false,\n displayPeek: true\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(ContactLookup, {\n label: \"Contact\",\n modelValue: certificateData.value.contactID,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((certificateData.value.contactID) = $event)),\n readOnly: lockContactField.value,\n findNameOnIdChange: true,\n showNavigateContactIcon: false\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Issuer\",\n modelValue: certificateData.value.issuerID,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((certificateData.value.issuerID) = $event)),\n \"lookup-source\": issuerType.value\n }, null, 8, [\"modelValue\", \"lookup-source\"]),\n _createVNode(AcquaintTextbox, {\n label: \"Reference\",\n modelValue: certificateData.value.reference,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((certificateData.value.reference) = $event)),\n readOnly: enableFields.value,\n fieldValidation: _unref(CertificatesValidation).Reference,\n \"validation-group\": \"new-certificate\"\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AcquaintDateBox, {\n label: \"Start Date\",\n modelValue: certificateData.value.startDate,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((certificateData.value.startDate) = $event)),\n readOnly: enableFields.value,\n fieldValidation: _unref(CertificatesValidation).StartDate,\n width: _unref(FieldSize).SmallMedium,\n \"validation-group\": \"new-certificate\"\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\"]),\n _createVNode(AcquaintDateBox, {\n label: \"Expiry Date\",\n modelValue: certificateData.value.endDate,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((certificateData.value.endDate) = $event)),\n readOnly: enableFields.value,\n fieldValidation: _unref(CertificatesValidation).EndDate,\n width: _unref(FieldSize).SmallMedium,\n \"validation-group\": \"new-certificate\",\n \"min-date\": new Date(certificateData.value.startDate)\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\", \"min-date\"]),\n _createVNode(SystemCodeSingleSelect, {\n label: \"Status\",\n modelValue: certificateData.value.status,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((certificateData.value.status) = $event)),\n readOnly: enableFields.value,\n \"code-type\": _unref(CodeType).CertificateStatus,\n width: _unref(FieldSize).SmallMedium\n }, null, 8, [\"modelValue\", \"readOnly\", \"code-type\", \"width\"])\n ])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), {\n Title: \"Ratings\",\n disabled: !showRatingsTab.value\n }, {\n default: _withCtx(() => [\n (showRatingsTab.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_3, [\n _createVNode(EpcInputWrapper, {\n modelValue: certificateData.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((certificateData).value = $event)),\n \"property-usage\": propertyData.value?.usage ?? _unref(PropertyUsages).Residential,\n \"country-code\": propertyData.value?.countryCode ?? _unref(CountryCode).UK,\n \"validation-group\": \"new-certificate\"\n }, null, 8, [\"modelValue\", \"property-usage\", \"country-code\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), { Title: \"System Info\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(AcquaintInfoBox, {\n label: \"Date Added\",\n text: _unref(formatDate)(certificateData.value.addedDate, true),\n width: _unref(FieldSize).Medium\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n label: \"Date Updated\",\n text: _unref(formatDate)(certificateData.value.updatedDate, true),\n width: _unref(FieldSize).Medium\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(lookupSingleSelect, {\n modelValue: certificateData.value.userID,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((certificateData.value.userID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Users,\n width: _unref(FieldSize).Medium,\n label: \"Added By\",\n readOnly: true\n }, null, 8, [\"modelValue\", \"lookup-source\", \"width\"])\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\"]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: onSaveClick, disabled: saving.value, validationGroup: 'new-certificate' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => closeCertificateModal(), disabled: saving.value }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseButton\", \"showCloseConfirmationPrompt\", \"saving\", \"help-page\"]))\n}\n}\n\n})","import script from \"./base-certificate-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./base-certificate-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./base-certificate-modal.vue?vue&type=style&index=0&id=4890dab1&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4890dab1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed } from 'vue';\nimport BaseCertificateModal from './base-certificate-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-certificate-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n /** \n * The unique identifier for the property.\n * Defaults to `0` if not provided.\n * @type {number}\n * @default 0\n */\n propertyId:{\n type: Number,\n default: 0\n },\n /** \n * The unique identifier for the contact associated with the property.\n * Defaults to `0` if not provided.\n * @type {number}\n * @default 0\n */\n contactId:{\n type: Number,\n default: 0\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted when the modal is closed.\n * This can be used to notify the parent component that the modal has been dismissed.\n * @property {boolean} certificateCreated - Indicates whether a certificate was successfully created before closing.\n */\n 'modalClosed'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst modalClosed = (certificateCreated: boolean) => {\n emit('modalClosed', certificateCreated);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(BaseCertificateModal, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n propertyId: Number(props.propertyId),\n contactId: props.contactId,\n onModalClosed: modalClosed\n }, null, 8, [\"modelValue\", \"propertyId\", \"contactId\"]))\n}\n}\n\n})","import script from \"./new-certificate-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-certificate-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { TaskTemplatesValidation } from 'acquaint-api/validation/TaskTemplatesValidation';\nimport { TaskTemplates } from 'acquaint-api/models/TaskTemplates';\nimport AcquaintTextArea from '../ui/inputs/acquaint-text-area.vue';\nimport LookupSingleSelect from '../ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-edit-task-templates-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the task configuration.\n * @type {number}\n * @required\n */\n configurationId: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when an existing template configuration has been successfully edited.\n * This notifies the parent component to refresh or update the template configuration details.\n * @property {boolean} inActive - Indicates whether the template configuration is inactive after the edit.\n */\n 'configurationItemEdited',\n /** \n * Emitted when a new template configuration has been successfully created.\n * This notifies the parent component to handle the creation of a new template configuration.\n */\n 'configurationItemCreated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst itemData = ref();\nconst lockedByAnotherUser = ref(false)\nconst lockDescriptionField = ref(false);\nconst keepingModalOpening = ref(false);\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst submissionResponse = ref();\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst lockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/tasktemplates/${props.configurationId}/lock`, { lock: true, extraInfo: '' });\n } catch (err) {\n lockedByAnotherUser.value = true;\n lockDescriptionField.value = true;\n displayErrorMessage('These details are already being edited by another user.');\n }\n};\n\nconst unLockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/tasktemplates/${props.configurationId}/lock`, { lock: false, extraInfo: '' });\n } catch (err) {\n displayErrorMessage('We were unable to unlock these details.');\n }\n};\n\nconst fetchItemData = async () => {\n try {\n if (props.configurationId == 0) {\n itemData.value = await acquaintApiClient.httpGet(`database/tasktemplates/defaultmodel`);\n } else {\n itemData.value = await acquaintApiClient.httpGet(`database/tasktemplates/${props.configurationId}`);\n }\n } catch (err) {\n itemData.value = undefined;\n if (props.configurationId == 0) {\n displayErrorMessage('The selected details could not be fetched');\n } else {\n displayErrorMessage('We could not fetch the default data');\n }\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (keepingModalOpening.value) {\n return\n }\n\n if (showModal.value) {\n lockedByAnotherUser.value = false;\n lockDescriptionField.value = false;\n\n await fetchItemData();\n\n if (props.configurationId == 0) {\n return;\n }\n\n if (props.configurationId < 1000) {\n lockDescriptionField.value = true;\n displayErrorMessage(\"You cannot fully edit this system record's description as Acquaint created and maintains it for data integrity purposes.\");\n return\n }\n\n await lockConfigurationItem();\n }\n});\n\nconst saveDetails = async (e: any) => {\n const validation: ValidatedEvent = e.validationGroup.validate();\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (!await callSaveApi()) {\n return;\n }\n\n lockedByAnotherUser.value = true;\n\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n emit('configurationItemEdited', itemData.value?.inActive);\n } else {\n emit('configurationItemCreated');\n }\n\n showModal.value = false;\n};\n\nconst callSaveApi = async () => {\n try {\n if (props.configurationId == 0) {\n submissionResponse.value = await acquaintApiClient.httpPost(`database/tasktemplates`, itemData.value);\n } else {\n submissionResponse.value = await acquaintApiClient.httpPut(`database/tasktemplates/${props.configurationId}`, itemData.value);\n }\n return true;\n } catch (err) {\n if (props.configurationId == 0) {\n displayErrorMessage('A new system item could not be created.');\n } else {\n displayErrorMessage('The selected details could not be edited.');\n }\n return false;\n }\n}\nconst cancelClick = () => {\n showModal.value = false;\n};\n\nconst keepEnteredInformation = () => {\n keepingModalOpening.value = true;\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst modalClosed = async () => {\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n }\n keepingModalOpening.value = false;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n title: \"Task Templates\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n showCloseConfirmationPrompt: !lockedByAnotherUser.value,\n height: \"515px\",\n onCancelConfirmationModal: keepEnteredInformation,\n onModalClosed: modalClosed,\n width: _unref(ModalWidth).XSmall,\n onCancelPromptDenied: cancelPromptDenied\n }, {\n content: _withCtx(() => [\n (itemData.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(TaskTemplatesValidation).Description,\n label: \"Description\",\n modelValue: itemData.value.description,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((itemData.value.description) = $event)),\n readOnly: lockDescriptionField.value,\n validationGroup: \"TaskTemplatesValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(TaskTemplatesValidation).Subject,\n label: \"Subject\",\n modelValue: itemData.value.subject,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((itemData.value.subject) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"TaskTemplatesValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(AcquaintTextArea, {\n fieldValidation: _unref(TaskTemplatesValidation).Body,\n label: \"Body\",\n modelValue: itemData.value.body,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((itemData.value.body) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"TaskTemplatesValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(LookupSingleSelect, {\n \"lookup-source\": _unref(LookupTableSource).TaskTypes,\n fieldValidation: _unref(TaskTemplatesValidation).TaskTypeID,\n label: \"Type\",\n modelValue: itemData.value.taskTypeID,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((itemData.value.taskTypeID) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"TaskTemplatesValidationGroup\"\n }, null, 8, [\"lookup-source\", \"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Inactive\",\n labelWidth: \"7.5rem\",\n modelValue: itemData.value.inActive,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((itemData.value.inActive) = $event)),\n readOnly: lockedByAnotherUser.value\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: lockedByAnotherUser.value, onClick: (e) => { saveDetails(e) }, validationGroup: 'TaskTemplatesValidationGroup' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\", \"width\"]))\n}\n}\n\n})","import script from \"./new-edit-task-templates-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-edit-task-templates-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-18730233\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toggle-container\" }\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { DxToolbarItem } from 'devextreme-vue/popup'\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport NewEditTaskTemplatesModal from './new-edit-task-templates-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'task-templates-configuration-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * Determines whether the \"Select\" button should be displayed.\n * If `true`, the button will be visible; otherwise, it will be hidden.\n * @type {boolean}\n * @default false\n */\n showSelectButton: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when a configuration item is selected.\n * This notifies the parent component of the selected item's details.\n * @property {number} id - The unique identifier of the selected configuration item.\n */\n 'emitSelectedDetails'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst userPermissionsStore = useUserPermissionsStore();\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst taskTemplatesList = ref([]);\nconst showInactiveItems = ref(false);\nconst userPermissions = ref();\nconst editNewModalId = ref(0);\nconst selectedConfigurationItem = ref({ id: 0, description: '' });\nconst displayEditNewModal = ref(false);\n\nconst disableEdit = computed(() => { return selectedConfigurationItem.value.id == 0 });\n\nconst showInactive = ref(0);\n\nconst fetchConfigurationList = async () => {\n try {\n taskTemplatesList.value = await acquaintApiClient.httpGet\n (`app/system/lookup/${LookupTableSource.TaskTemplates}?includeinactive=${showInactiveItems.value}`);\n } catch (err) {\n displayErrorMessage('The selected details could not be fetched');\n taskTemplatesList.value = [];\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (showModal.value) {\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n fetchConfigurationList();\n }\n});\n\nconst configurationItemSelected = (e: any) => {\n if (!e) {\n return\n }\n selectedConfigurationItem.value = e;\n};\n\nconst configurationItemDoubleClicked = (e: any) => {\n if (!e) {\n return\n }\n\n /* Double click needs to work differently depending on the mode the modal is in\n * Select mode needs to emit the clicked value\n * Config mode needs to load the edit modal */\n if (props.showSelectButton) {\n emit('emitSelectedDetails', e.id);\n showModal.value = false;\n } else {\n selectedConfigurationItem.value = e;\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n }\n};\n\nconst openEditModal = () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.edit) {\n displayErrorMessage(\"Sorry, you do not have the permission to edit these details.\");\n return;\n }\n\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n};\n\nconst openNewModal = () => {\n\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.new) {\n displayErrorMessage(\"Sorry, you do not have the permission to create a new system item.\");\n\n return;\n }\n\n editNewModalId.value = 0;\n displayEditNewModal.value = true;\n};\n\nconst deleteConfigurationItem = async () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.delete) {\n displayErrorMessage(\"Sorry, you do not have the permission to delete these details.\");\n return;\n }\n\n if (selectedConfigurationItem.value.id < 1000) {\n displayErrorMessage(\"Sorry, you can't delete this system item as it is required by Acquaint. However you may edit it, and set it as Inactive to remove it from this list.\")\n }\n\n const question = await displayQuestionAlert('Are you sure you want to delete these details?');\n\n if (!question.isConfirmed) {\n return;\n }\n\n if (await callDeletApi()) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n }\n};\n\nconst callDeletApi = async () => {\n try {\n await acquaintApiClient.httpDeleteVoid(`database/tasktemplates/${selectedConfigurationItem.value.id}`);\n return true;\n } catch (err) {\n displayErrorMessage(\"Sorry, these details cannot be deleted as they are referenced elsewhere.\");\n return false;\n }\n};\n\nconst inactiveToggleValueChange = async () => {\n showInactiveItems.value = showInactive.value ? true : false;\n await fetchConfigurationList();\n\n if (showInactive.value) {\n return;\n }\n\n const findInactiveItem = taskTemplatesList.value?.find((item) => { return item.id == selectedConfigurationItem.value.id });\n\n if (!findInactiveItem) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n};\n\nconst newItemCreated = () => {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n};\n\nconst editItem = (inActive: number) => {\n if (inActive && !showInactiveItems.value) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n\n fetchConfigurationList();\n};\n\nconst onSelectClick = () => {\n emit('emitSelectedDetails', selectedConfigurationItem.value.id);\n showModal.value = false;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"Task/Notes Templates\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n \"show-close-button\": true,\n height: \"460px\"\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createVNode(GridBase, {\n dataSource: taskTemplatesList.value,\n onRowClick: configurationItemDoubleClicked,\n onRowSelected: configurationItemSelected,\n onAdaptiveRowSelection: configurationItemSelected,\n \"id-column-name\": \"id\",\n showColumnHeaders: false,\n \"pre-selected-id\": selectedConfigurationItem.value.id\n }, {\n \"header-content\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(SwitchToggle, {\n label: \"Show Inactive\",\n modelValue: showInactive.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showInactive).value = $event)),\n readOnly: false,\n onOnVaueChange: inactiveToggleValueChange,\n \"margin-bottom\": \"0rem\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"\",\n \"hiding-priority\": 8,\n width: \"100%\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"Id\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"dataSource\", \"pre-selected-id\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: {\n text: 'Select', disabled: disableEdit.value, visible: __props.showSelectButton,\n onClick: () => onSelectClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Delete', disabled: disableEdit.value, onClick: () => { deleteConfigurationItem() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Edit', disabled: disableEdit.value, onClick: () => { openEditModal() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'New', onClick: () => { openNewModal() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { showModal.value = false } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(NewEditTaskTemplatesModal, {\n modelValue: displayEditNewModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((displayEditNewModal).value = $event)),\n configurationId: editNewModalId.value,\n onConfigurationItemCreated: newItemCreated,\n onConfigurationItemEdited: editItem\n }, null, 8, [\"modelValue\", \"configurationId\"])\n ], 64))\n}\n}\n\n})","import script from \"./task-templates-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./task-templates-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./task-templates-configuration-modal.vue?vue&type=style&index=0&id=18730233&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-18730233\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"popup-info\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Email\", -1)\nconst _hoisted_3 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\nconst _hoisted_4 = { class: \"popup-info\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Mobile Telephone\", -1)\nconst _hoisted_6 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\nconst _hoisted_7 = { class: \"popup-info\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Home Telephone\", -1)\nconst _hoisted_9 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\nconst _hoisted_10 = { class: \"popup-info\" }\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Business Telephone\", -1)\nconst _hoisted_12 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\nconst _hoisted_13 = { class: \"popup-info\" }\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Alt Telephone\", -1)\nconst _hoisted_15 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\n\nimport { computed, inject, ref, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { DxTextBox, DxButton } from 'devextreme-vue/text-box';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { Contacts } from 'acquaint-api/models/Contacts';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'contacts-peek-popup',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @required\n */\n contactId: {\n type: Number,\n required: true\n },\n\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @required\n */\n title: {\n type: String,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst contactData = ref();\n\n\n\n\n\nconst showPeek = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst closePeek = () => {\n showPeek.value = false\n};\n\n//When the peek popup is visible, the data is fetched\nwatch(() => showPeek.value, async () => {\n if (!showPeek.value) {\n return\n }\n\n await getContactData();\n});\n\nconst displayedTitle = computed(() => { return `${props.title} (${props.contactId})` });\n\nconst getContactData = async () => {\n try {\n contactData.value = await apiClient.httpGet(`database/contacts/${props.contactId}`)\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n contactData.value = undefined;\n }\n};\n\nconst emailContact = () => {\n if (!contactData.value?.email) {\n return;\n }\n\n window.open(`mailto:${contactData.value.email}`);\n};\n\n\nconst telehoneContact = (telephoneNumber: string | undefined) => {\n if (!telephoneNumber) {\n return;\n }\n\n window.open(`tel:${telephoneNumber}`);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n title: displayedTitle.value,\n modelValue: showPeek.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showPeek).value = $event)),\n showCloseButton: true\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(DxTextBox), {\n value: contactData.value?.email ?? '',\n readOnly: true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"property-lookup\",\n position: \"after\",\n options: {\n icon: 'email',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n onClick: () => emailContact()\n }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(DxTextBox), {\n value: contactData.value?.mobileTelephone ?? '',\n readOnly: true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"property-lookup\",\n position: \"after\",\n options: {\n icon: 'tel',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n onClick: () => telehoneContact(contactData.value?.mobileTelephone)\n }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_unref(DxTextBox), {\n value: contactData.value?.homeTelephone ?? '',\n readOnly: true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"property-lookup\",\n position: \"after\",\n options: {\n icon: 'tel',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n onClick: () => telehoneContact(contactData.value?.homeTelephone)\n }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(DxTextBox), {\n value: contactData.value?.businessTelephone ?? '',\n readOnly: true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"property-lookup\",\n position: \"after\",\n options: {\n icon: 'tel',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n onClick: () => telehoneContact(contactData.value?.businessTelephone)\n }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(_unref(DxTextBox), {\n value: contactData.value?.homeTelephoneAlt ?? '',\n readOnly: true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"property-lookup\",\n position: \"after\",\n options: {\n icon: 'tel',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n onClick: () => telehoneContact(contactData.value?.homeTelephoneAlt)\n }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => { closePeek() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"title\", \"modelValue\"]))\n}\n}\n\n})","import script from \"./contacts-peek-popup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./contacts-peek-popup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./contacts-peek-popup.vue?vue&type=style&index=0&id=1f99c7db&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { ref, inject } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { MergeField } from '@/types/MergeField';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\n\nexport const useMergeFieldsStore = defineStore('mergeFields', () => {\n const mergeFields = ref([]);\n const apiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\n\n const fetchMergeFields = async ()=>{\n try{\n mergeFields.value = await apiNextClient.httpGet('mergefields');\n } catch(err){\n displayErrorMessage(getErrorMessage(err));\n mergeFields.value = [];\n }\n };\n\n const returnMergeFields = async ()=>{\n if(mergeFields.value.length == 0){\n await fetchMergeFields();\n }\n\n return mergeFields.value;\n };\n\n return { returnMergeFields };\n});\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dee4abb8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mergeFieldsGrid\" }\n\nimport { computed, ref, watch } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { MergeField } from '@/types/MergeField';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { DxColumn } from 'devextreme-vue/data-grid';\nimport { useMergeFieldsStore } from '@/stores/MergeFieldsStore';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'merge-fields-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when a merge field is selected and added. \n * @property {string} description - The description of the selected merge field.\n */\n 'addMergeField'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst onCancelClick = () => showModal.value = false;\n\nconst mergeFields = ref([]);\nconst selectedMergeField = ref({ description: '', fieldName: '' });\nconst mergeFieldsStore = useMergeFieldsStore();\n\nconst onSelectClick = () => {\n emit('addMergeField', selectedMergeField.value.description);\n showModal.value = false;\n};\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n return;\n }\n\n if (mergeFields.value.length == 0) {\n mergeFields.value = await mergeFieldsStore.returnMergeFields();\n }\n\n selectedMergeField.value = { description: '', fieldName: '' };\n});\n\nconst fieldSelected = (e: MergeField) => {\n if (!e) {\n return;\n }\n selectedMergeField.value = e;\n};\n\nconst fieldDoubleClicked = (e: MergeField) => {\n if (!e) {\n return;\n }\n selectedMergeField.value = e;\n emit('addMergeField', selectedMergeField.value.fieldName);\n showModal.value = false;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n title: \"Merge Fields\",\n height: \"480px\"\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createVNode(GridBase, {\n dataSource: mergeFields.value,\n onRowSelected: fieldSelected,\n onRowClick: fieldDoubleClicked,\n idColumnName: \"fieldName\",\n \"enable-key-press-detection\": true\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"Description\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"fieldName\",\n caption: \"Field Name\",\n visible: false\n })\n ]),\n _: 1\n }, 8, [\"dataSource\"])\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Select', visible: selectedMergeField.value.fieldName != '', onClick: () => { onSelectClick() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./merge-fields-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./merge-fields-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./merge-fields-modal.vue?vue&type=style&index=0&id=dee4abb8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dee4abb8\"]])\n\nexport default __exports__","export enum ContactModalPages {\n MainDetails = 'Main Details',\n PropertyRequirements = 'Property Requirements',\n Address = 'Address',\n Marketing = 'Marketing Preferences',\n SystemInfo = 'System Info'\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, ref, inject, onMounted } from 'vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport SingleSelect from '../dropdowns/single-select.vue';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-contact-type-lookup',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the input control is required.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Number} value - The new value to be updated in the model.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst selectedValueId = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient\nconst lookupItems = ref([]);\n\nonMounted(async () => {\n // Call api for a list of lookup items to display. These aren't cached as there may be a lot of data\n lookupItems.value = await apiClient.httpGet(`/ContactTypes/NewContact`);\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SingleSelect, {\n modelValue: selectedValueId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedValueId).value = $event)),\n \"data-source\": lookupItems.value,\n readOnly: props.readOnly,\n label: __props.label,\n requiredInput: props.requiredInput,\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"data-source\", \"readOnly\", \"label\", \"requiredInput\", \"validationGroup\"]))\n}\n}\n\n})","import script from \"./new-contact-type-lookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-contact-type-lookup.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b104edec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"modal-header\" }, [\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"Duplicate Contacts\")\n], -1))\nconst _hoisted_2 = {\n key: 0,\n class: \"top-sub-heading\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"top-sub-heading\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Would you like to modify one of existing Contacts below, or continue adding a New Contact?\", -1))\n\nimport { PropType, computed, ref } from 'vue';\nimport { DuplicateContact } from '@/types/contacts/DuplicateContact';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport gridBase from '@/components/ui/grid/grid-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'duplicate-contact-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * An array of duplicate contact records.\n * @type {DuplicateContact[]}\n * @required\n */\n contacts: {\n type: Array as PropType,\n required: true\n },\n /** \n * The title of the field being displayed.\n * @type {string}\n * @required\n */\n titleField: {\n type: String,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted when a contact is selected, and notifies the parent component.\n * @property {number} id - The unique identifier of the newly created contact.\n */\n 'selectContact'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst openModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst selectedContact = ref();\n\nconst updateEditModalWithSelectedDetails = (id: number) => {\n if (id == -1) {\n return\n }\n openModal.value = false;\n selectedContact.value = undefined;\n emit('selectContact', id);\n};\n\nconst onRowClick = (e: any) => {\n updateEditModalWithSelectedDetails(e.id);\n};\n\nconst onRowSelected = (e: any) => {\n selectedContact.value = e;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n modelValue: openModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((openModal).value = $event)),\n title: \"\",\n showCloseButton: true,\n width: _unref(ModalWidth).Small,\n height: \"25rem\"\n }, {\n \"main-title\": _withCtx(() => [\n _hoisted_1\n ]),\n \"sub-title\": _withCtx(() => [\n (props.contacts.length > 1)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, \"Contacts have been found with similar \" + _toDisplayString(props.titleField) + \"s to the Contact you are adding.\", 1))\n : _createCommentVNode(\"\", true),\n (props.contacts.length == 1)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_3, \" A contact has been found with a similar \" + _toDisplayString(props.titleField) + \" to the Contact you are adding.\", 1))\n : _createCommentVNode(\"\", true),\n _hoisted_4\n ]),\n \"non-scrollable-content\": _withCtx(() => [\n _createVNode(gridBase, {\n \"data-source\": props.contacts,\n \"id-column-name\": \"id\",\n \"show-column-filters\": false,\n \"show-search-panel\": false,\n onRowClick: onRowClick,\n onRowSelected: onRowSelected,\n onAdaptiveRowSelection: onRowSelected\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"name\",\n caption: \"Name\",\n \"hiding-priority\": 9,\n width: \"200px\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"address\",\n caption: \"Address\",\n \"hiding-priority\": 5\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"email\",\n caption: \"Email\",\n \"hiding-priority\": 7,\n width: \"150px\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"mobile\",\n caption: \"Mobile\",\n \"hiding-priority\": 6,\n width: \"100px\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"type\",\n caption: \"Type\",\n \"hiding-priority\": 4\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"status\",\n caption: \"Status\",\n \"hiding-priority\": 3\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"ID\",\n \"hiding-priority\": 2\n })\n ]),\n _: 1\n }, 8, [\"data-source\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Continue Adding', onClick: () => { openModal.value = false } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Edit Selected', disabled: !selectedContact.value, onClick: () => updateEditModalWithSelectedDetails(selectedContact.value?.id ?? -1) }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]))\n}\n}\n\n})","import script from \"./duplicate-contact-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./duplicate-contact-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./duplicate-contact-modal.vue?vue&type=style&index=0&id=b104edec&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b104edec\"]])\n\nexport default __exports__","export enum ContactType {\n LocalAuthority = 4,\n Vendor = 12,\n Landlord = 13\n}","export enum EmailTemplates {\n gdprMailingList = 125\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3c563b5c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tab-page\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"title\" }, \"Contact Details\", -1))\nconst _hoisted_3 = { class: \"main-details\" }\nconst _hoisted_4 = { class: \"tab-page\" }\nconst _hoisted_5 = { class: \"main-details\" }\nconst _hoisted_6 = { class: \"tab-page\" }\nconst _hoisted_7 = { class: \"tab-page\" }\nconst _hoisted_8 = { class: \"tab-page\" }\n\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { computed, watch, ref, inject } from 'vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport lookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport EditAddress from '@/components/ui/address/edit-address.vue';\nimport { EditAddressValidation } from '@/types/validation/EditAddressValidation';\nimport { Address } from '@/types/generic/Address';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { NewContactModel } from '@/types/contacts/NewContactModel';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport QuestionModal from '@/components/ui/modals/question-modal.vue';\nimport MarketingPreferenceToggles from './marketing-preference-toggles.vue';\nimport findQuestionText from '@/utils/system-text/FindQuestionText';\nimport BedroomsSelect from '@/components/ui/dropdowns/bedrooms-select.vue';\nimport CurrencyInput from '../../ui/inputs/currency-input.vue';\nimport SystemCodeSingleSelect from '../../ui/system-codes/system-code-single-select.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport { Id } from '@/types/generic/Id';\nimport { ContactModalPages } from '@/enums/contacts/ContactModalPages';\nimport { PropertyUsages } from '@/enums/properties/PropertyUsages';\nimport { PropertyCategories } from '@/enums/properties/PropertyCategories';\nimport NewContactTypeLookup from '@/components/ui/lookup/new-contact-type-lookup.vue';\nimport { SystemContactTypes } from '@/enums/contacts/SystemContactTypes';\nimport { useContactTypeConfigurationStore } from '@/stores/ContactTypeConfigurationStore';\nimport { ContactType } from '@/types/ContactType';\nimport { DuplicateContact } from '@/types/contacts/DuplicateContact';\nimport DuplicateContactModal from './duplicate-contact-modal.vue';\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport moment from 'moment';\nimport LookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { ContactType as ContactTypeId } from '@/enums/contacts/ContactType';\nimport EmailFormModal from '@/components/email/email-form-modal.vue';\nimport { EmailTemplates } from '@/enums/contacts/EmailTemplates';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\nconst originalMaxPrice = 99999999;\nconst originalMinBedrooms = 0;\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'contact-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n\n /** \n * Determines if input fields should be locked (disabled).\n * @type {boolean}\n * @default false\n */\n lockInputs: {\n type: Boolean,\n default: false\n },\n\n /** \n * Indicates whether the user is the owner.\n * @type {boolean}\n * @default false\n */\n isOwner: {\n type: Boolean,\n default: false\n },\n\n /** \n * Controls the visibility of the \"Add Property\" prompt.\n * @type {boolean}\n * @default true\n */\n showAddPropertyPrompt: {\n type: Boolean,\n default: true\n },\n\n /** \n * Indicates whether the user is an applicant.\n * @type {boolean}\n * @default false\n */\n isApplicant: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n\n /** \n * Emitted when a new contact is successfully created.\n * Notifies the parent component and provides the new contact ID.\n * @property {number} contactId - The unique identifier of the newly created contact.\n * @property {boolean} addProperty - Indicates if a property should be added after closing.\n */\n 'contactCreated', \n\n /** \n * Emitted when the user selects a contact to edit.\n * Notifies the parent component to open the edit contact modal.\n * @property {number} contactId - The unique identifier of the selected contact.\n */\n 'openEditContactModal', \n\n /** \n * Emitted when a new contact is created and the GDPR email needs to be sent.\n * Notifies the parent component to trigger the email process.\n * @property {number} contactId - The unique identifier of the newly created contact.\n */\n 'emailNewContact'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst defaultContactData = ref();\nconst newContactData = ref();\nconst saving = ref(false);\nconst locked = ref(false);\nconst toggledField = ref('');\nconst showMarketingPrompt = ref(false);\nconst marketingPromptShown = ref(false);\nconst selectedTabPanel = ref(0);\nconst contactTypeStore = useContactTypeConfigurationStore();\nconst contactType = ref();\nconst openDuplicateContactModal = ref(false);\nconst duplicateRecords = ref([]);\nconst duplicateModalTitleField = ref('');\nconst displayEmailForm = ref(false);\nconst newContactId = ref(-1);\n\nconst fetchContactType = async () => {\n if (!newContactData.value) {\n return;\n }\n\n contactType.value = await contactTypeStore.getContactType(newContactData.value.typeID);\n};\n\n/** Checks if the conatct data has been updated since loading */\nconst contactDataChanged = computed(() => newContactData.value && defaultContactData.value ? JSON.stringify(newContactData.value) != JSON.stringify(defaultContactData.value) : false);\n\nconst propertyRequirementsDataChanged = computed(() => maxPrice.value != originalMaxPrice || minBedrooms.value != originalMinBedrooms || propertyUsage.value != originalPropertyUsage || propertyCategory.value != originalPropertyCategory);\n\nconst emptyApiModel: NewContactModel = {\n firstNames: \"\",\n lastName: \"\",\n titleId: 0,\n salutation: \"\",\n email: \"\",\n mobile: \"\",\n homeTelephone: \"\",\n homeAddress: {\n countryCode: CountryCode.UK,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n },\n companyName: \"\",\n businessTelephone: \"\",\n businessAddress: {\n countryCode: CountryCode.UK,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n },\n mailingAddress: 0,\n dateOfBirth: \"\",\n typeId: 0,\n requirements: {\n category: 0,\n usage: 5,\n maxPrice: 99999999,\n minBedrooms: 0\n },\n marketingPreferences: {\n post: false,\n email: false,\n smsText: false,\n telephone: false,\n passDetailsToThirdParties: false,\n passDetailsToIFA: false,\n passDetailsToConveyancer: false\n },\n assignedUserId: -1,\n siteId: -1\n};\n\nconst apiData = ref();\nconst resetValidState = ref(false);\nconst originalPropertyUsage = PropertyUsages.Residential;\nconst originalPropertyCategory = PropertyCategories.Buy;\n\nconst maxPrice = ref(99999999);\nconst minBedrooms = ref(0);\nconst propertyUsage = ref(PropertyUsages.Residential);\nconst propertyCategory = ref(PropertyCategories.Buy);\n\nconst validation = ref({\n propertyName: ContactsValidation.HomeProperty,\n street: ContactsValidation.HomeStreet,\n locality: ContactsValidation.HomeLocality,\n town: ContactsValidation.HomeTown,\n region: ContactsValidation.HomeRegion,\n postcode: ContactsValidation.HomePostcode\n});\nconst address = ref
({\n countryCode: CountryCode.UK,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nwatch(() => props.lockInputs, () => {\n locked.value = props.lockInputs;\n});\n\nconst mapModel = () => {\n\n if (!apiData.value || !newContactData.value) {\n return\n }\n\n // If a user has entered a company name, the business telphone model value needs to be set to\n // the entered telephone number\n if (newContactData.value.businessCompany) {\n apiData.value.businessTelephone = homeBusinessTelephoneNumber.value;\n apiData.value.businessAddress.propertyName = address.value.propertyName\n apiData.value.businessAddress.street = address.value.street;\n apiData.value.businessAddress.locality = address.value.locality;\n apiData.value.businessAddress.town = address.value.town;\n apiData.value.businessAddress.region = address.value.region;\n apiData.value.businessAddress.postCode = address.value.postCode;\n apiData.value.businessAddress.countryCode = address.value.countryCode;\n } else {\n apiData.value.homeTelephone = homeBusinessTelephoneNumber.value;\n apiData.value.homeAddress.propertyName = address.value.propertyName\n apiData.value.homeAddress.street = address.value.street;\n apiData.value.homeAddress.locality = address.value.locality;\n apiData.value.homeAddress.town = address.value.town;\n apiData.value.homeAddress.region = address.value.region;\n apiData.value.homeAddress.postCode = address.value.postCode;\n apiData.value.homeAddress.countryCode = address.value.countryCode;\n }\n\n apiData.value.companyName = newContactData.value.businessCompany,\n apiData.value.firstNames = newContactData.value.firstNames,\n apiData.value.lastName = newContactData.value.lastName,\n apiData.value.titleId = newContactData.value.titleID,\n apiData.value.salutation = newContactData.value.salutation,\n apiData.value.email = newContactData.value.email,\n apiData.value.mobile = newContactData.value.mobileTelephone,\n apiData.value.mailingAddress = newContactData.value.mailingAddress,\n apiData.value.dateOfBirth = newContactData.value.birthDate,\n apiData.value.typeId = newContactData.value.typeID\n apiData.value.requirements.category = propertyCategory.value;\n apiData.value.requirements.usage = propertyUsage.value;\n apiData.value.requirements.maxPrice = maxPrice.value;\n apiData.value.requirements.minBedrooms = minBedrooms.value;\n apiData.value.marketingPreferences.email = newContactData.value.emailingList == 1;\n apiData.value.marketingPreferences.smsText = newContactData.value.smsList == 1;\n apiData.value.marketingPreferences.telephone = newContactData.value.telephoneList == 1;\n apiData.value.marketingPreferences.passDetailsToThirdParties = newContactData.value.passDataTo3rdParties == 1;\n apiData.value.marketingPreferences.passDetailsToIFA = newContactData.value.passDataToIFA == 1;\n apiData.value.marketingPreferences.passDetailsToConveyancer = newContactData.value.passDataToConveyancer == 1;\n apiData.value.marketingPreferences.post = newContactData.value.mailingList == 1;\n apiData.value.assignedUserId = newContactData.value.assignedUserID;\n apiData.value.siteId = newContactData.value.siteID;\n};\n\nconst createContact = async (e: any) => {\n const validate = e.validationGroup.validate();\n\n if (!e.validationGroup._validationInfo.result && !validate.isValid || !apiData.value) {\n return;\n }\n\n mapModel();\n let response: Id = { id: -1 }\n\n if (apiData.value.dateOfBirth == '') {\n apiData.value.dateOfBirth = moment('01/01/1900').format('DD/MM/YYYY');\n }\n\n try {\n saving.value = true;\n locked.value = true;\n response = await acquaintApiClient.httpPost(`app/contacts`, apiData.value);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n } finally {\n saving.value = false;\n locked.value = false;\n }\n\n if (response.id == -1) {\n return;\n }\n\n let addPropertyAfterClose = false;\n\n if (await isAddPropertyPromptRequired()) {\n addPropertyAfterClose = await displayAddPropertyPrompt();\n }\n\n if (apiData.value.email != '') {\n const gdprAlert = await displayQuestionAlert('For General Data Protection Regulations (GDPR) would you like to send this Contact the Marketing Preferences Email which will allow them to update their preferences?')\n\n if (gdprAlert.isConfirmed) {\n emit('emailNewContact', response.id);\n newContactId.value = response.id;\n displayEmailForm.value = true;\n }\n }\n\n showCloseConfirmationPrompt.value = false;\n showModal.value = false;\n emit('contactCreated', response.id, addPropertyAfterClose);\n};\n\nconst isAddPropertyPromptRequired = async () => {\n if (!props.showAddPropertyPrompt || !contactType.value) {\n return false;\n }\n\n return contactType.value.typeID == SystemContactTypes.Landlord || contactType.value.typeID == SystemContactTypes.Vendor;\n}\n\nconst displayAddPropertyPrompt = async () => {\n const result = await displayQuestionAlert(\"Would you like to add this Contact's property now?\");\n return result.isConfirmed;\n}\n\nconst showCloseConfirmationPrompt = ref(false);\n\nconst closeModal = () => {\n showModal.value = false;\n};\n\nconst fetchDefaultData = async () => {\n try {\n defaultContactData.value = await acquaintApiClient.httpGet(`database/contacts/defaultmodel`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err))\n }\n};\n\nconst cancelPromptAccepted = () => {\n showCloseConfirmationPrompt.value = false;\n};\n\nconst cancelPromptDenied = () => {\n showCloseConfirmationPrompt.value = true;\n};\n\n\n// If we show the cancel confirmation modal and users wish to keep the modal open and not lose their changes, we do not wishe to reset the data.\nwatch(() => propertyRequirementsDataChanged.value, () => {\n showCloseConfirmationPrompt.value = propertyRequirementsDataChanged.value;\n});\n\nwatch(() => contactDataChanged.value, () => {\n showCloseConfirmationPrompt.value = contactDataChanged.value;\n})\n\nwatch(() => showModal.value, async () => {\n\n // If we show the cancel confirmation modal and users wish to keep the modal open and not lose their changes, we do not wishe to reset the data.\n // This prevents the reset of the inputs when the cancel confirmation modal appears.\n if (showCloseConfirmationPrompt.value || !showModal.value) {\n return\n }\n\n // We need to excute this code and pass this ref down to the textboxes for the three name fields as otherwise, if a user enters just a first anme into\n // the first field and no data into the other 2 name fields, error icons will appear in these remaining fields if the modal is openend again.\n resetValidState.value = true;\n setTimeout(() => {\n resetValidState.value = false\n }, 500);\n\n marketingPromptShown.value = false;\n\n // This takes users back to the main details tab when they open the modal after closing it.\n selectedTabPanel.value = 0;\n\n // The modal's inputs should be cleared when its closed.\n // To reset the contact data's, we must use parse and stringify to make vue's reactivity work,\n // otherwise, newContactData won't be reset\n\n if (!defaultContactData.value) {\n await fetchDefaultData();\n }\n\n newContactData.value = JSON.parse(JSON.stringify(defaultContactData.value));\n\n await fetchContactType();\n\n address.value = {\n countryCode: defaultContactData.value?.homeCountryCode ?? 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: ''\n };\n\n apiData.value = JSON.parse(JSON.stringify(emptyApiModel));\n\n maxPrice.value = 99999999;\n minBedrooms.value = 0;\n propertyUsage.value = PropertyUsages.Residential;\n homeBusinessTelephoneNumber.value = '';\n\n if (props.isOwner && newContactData.value) {\n newContactData.value.typeID = ContactTypeId.Vendor;\n }\n\n setDefaultCategoryBasedOnContactType();\n});\n\n// Salutation must include the first name\nwatch(() => newContactData.value?.firstNames, () => {\n if (newContactData.value) {\n newContactData.value.salutation = newContactData.value?.firstNames;\n }\n});\n\nconst onToggled = (e: number, fieldName: string) => {\n // Store toggled field so we know which field to reset if user clicks no to prompt\n toggledField.value = fieldName;\n\n // We should only show the marketing modal if a user has agreed to certain peice of marketing.\n if (e && !marketingPromptShown.value) {\n showMarketingPrompt.value = true;\n }\n};\n\nconst noConsent = async () => {\n if (!newContactData.value) {\n return\n }\n\n // Only reset the toggled field instead of all fields when user clicks no to the verbal consent prompt\n switch (toggledField.value) {\n case 'passDataToConveyancer':\n newContactData.value.passDataToConveyancer = 0;\n break;\n case 'mailingList':\n newContactData.value.mailingList = 0;\n break;\n case 'emailingList':\n newContactData.value.emailingList = 0;\n break;\n case 'smsList':\n newContactData.value.smsList = 0;\n break;\n case 'telephoneList':\n newContactData.value.telephoneList = 0;\n break;\n case 'passDataTo3rdParties':\n newContactData.value.passDataTo3rdParties = 0;\n break;\n case 'passDataToIFA':\n newContactData.value.passDataToIFA = 0;\n break;\n }\n\n marketingPromptShown.value = false;\n toggledField.value = '';\n};\n\nconst enableMarketing = () => {\n marketingPromptShown.value = true;\n};\n\nconst marketingConsentMessage = findQuestionText(211);\n\nconst selectChange = (e: any) => {\n switch (e.addedItems[0].title) {\n case ContactModalPages.MainDetails:\n selectedTabPanel.value = 0;\n break;\n case ContactModalPages.PropertyRequirements:\n selectedTabPanel.value = 1;\n break;\n case ContactModalPages.Address:\n selectedTabPanel.value = 2;\n break;\n case ContactModalPages.Marketing:\n selectedTabPanel.value = 3;\n break;\n case ContactModalPages.SystemInfo:\n selectedTabPanel.value = 4;\n break;\n }\n};\n\nconst homeBusinessTelephoneNumber = ref('');\n\nconst disablePropertyRequirementsTab = computed(() => contactType.value?.typeID == SystemContactTypes.Applicant ||\n contactType.value?.typeID == SystemContactTypes.Landlord ||\n contactType.value?.typeID == SystemContactTypes.Vendor ||\n contactType.value?.typeID == SystemContactTypes.EstateAgent);\n\nwatch(() => newContactData.value?.typeID, async () => {\n await fetchContactType();\n setDefaultCategoryBasedOnContactType();\n});\n\nconst setDefaultCategoryBasedOnContactType = () => {\n switch (contactType.value?.propertyCategory) {\n case 1:\n propertyCategory.value = PropertyCategories.Buy;\n break;\n case 2:\n propertyCategory.value = PropertyCategories.Rent;\n break;\n default:\n propertyCategory.value = PropertyCategories.Buy;\n break;\n }\n}\n\nconst nameFieldRequired = computed(() => { return !newContactData.value?.lastName && !newContactData.value?.businessCompany });\nconst secondNameFieldRequired = computed(() => { return !newContactData.value?.firstNames && !newContactData.value?.businessCompany });\nconst companyNameFieldRequired = computed(() => { return !newContactData.value?.firstNames && !newContactData.value?.lastName });\n\n// Salutation must include the first name\nwatch(() => newContactData.value?.firstNames, (newValue) => {\n\n if (newContactData.value) {\n newContactData.value.salutation = newContactData.value?.firstNames;\n }\n\n if (!newContactData.value || !newValue || !newContactData.value.lastName) {\n return\n }\n nameFieldsCheckForDuplicate();\n\n});\n\nwatch(() => newContactData.value?.lastName, (newValue) => {\n if (!newContactData.value || !newValue || !newContactData.value.firstNames) {\n return\n }\n\n nameFieldsCheckForDuplicate();\n});\n\nconst nameFieldsCheckForDuplicate = async () => {\n\n duplicateRecords.value = [];\n\n try {\n duplicateRecords.value = await acquaintApiClient.httpPost('app/contacts/duplicatechecks/namecheck', {\n firstName: newContactData.value?.firstNames,\n lastName: newContactData.value?.lastName\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err))\n }\n\n if (duplicateRecords.value?.length > 0) {\n duplicateModalTitleField.value = \"name\"\n openDuplicateContactModal.value = true;\n }\n};\n\nwatch(() => newContactData.value?.businessCompany, (newValue) => {\n if (!newContactData.value || !newValue || (newContactData.value.lastName && newContactData.value.firstNames)) {\n return\n }\n\n companyNameFieldsCheckForDuplicate();\n});\n\nconst companyNameFieldsCheckForDuplicate = async () => {\n\n duplicateRecords.value = [];\n\n try {\n duplicateRecords.value = await acquaintApiClient.httpPost('app/contacts/duplicatechecks/companycheck', {\n companyName: newContactData.value?.businessCompany\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err))\n }\n\n if (duplicateRecords.value?.length > 0) {\n duplicateModalTitleField.value = \"company name\"\n openDuplicateContactModal.value = true;\n }\n};\n\nwatch(() => newContactData.value?.email, (newValue) => {\n if (!newValue) {\n return\n }\n\n emailFieldsCheckForDuplicate();\n});\n\nconst emailFieldsCheckForDuplicate = async () => {\n\n duplicateRecords.value = [];\n\n try {\n duplicateRecords.value = await acquaintApiClient.httpPost('app/contacts/duplicatechecks/emailcheck', {\n email: newContactData.value?.email\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err))\n }\n\n if (duplicateRecords.value?.length > 0) {\n duplicateModalTitleField.value = \"email\"\n openDuplicateContactModal.value = true;\n }\n};\n\nwatch(() => newContactData.value?.mobileTelephone, (newValue) => {\n if (newValue == '') {\n return\n }\n\n mobileNumberFieldCheckForDuplicate();\n});\n\nconst mobileNumberFieldCheckForDuplicate = async () => {\n duplicateRecords.value = [];\n\n try {\n duplicateRecords.value = await acquaintApiClient.httpPost('app/contacts/duplicatechecks/mobilecheck', {\n mobile: newContactData.value?.mobileTelephone\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err))\n }\n\n if (duplicateRecords.value?.length > 0) {\n duplicateModalTitleField.value = \"mobile\"\n openDuplicateContactModal.value = true;\n }\n};\n\n// If a user has started to create a new contact, chosen to edit an already existing record, the edit modal must be opened with this selected\n// contact's details.\nconst selectContact = (id: number) => {\n showCloseConfirmationPrompt.value = false;\n showModal.value = false;\n emit('openEditContactModal', id)\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = ($event: any) => ((showModal).value = $event)),\n title: \"Contact\",\n width: _unref(ModalWidth).Small,\n showCloseButton: !saving.value,\n height: \"65vh\",\n saving: saving.value,\n showCloseConfirmationPrompt: showCloseConfirmationPrompt.value,\n \"help-page\": \"adding-a-contact\",\n onCancelPromptAccepted: cancelPromptAccepted,\n onCancelPromptDenied: cancelPromptDenied\n }, {\n content: _withCtx(() => [\n (newContactData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n width: \"100%\",\n selectedIndex: selectedTabPanel.value,\n onSelectionChanged: selectChange\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"Main Details\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"section\", _hoisted_3, [\n _createElementVNode(\"div\", null, [\n _createVNode(AcquaintTextbox, {\n modelValue: newContactData.value.firstNames,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((newContactData.value.firstNames) = $event)),\n label: \"First Name\",\n fieldValidation: _unref(ContactsValidation).FirstNames,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n resetValid: resetValidState.value,\n \"required-input\": nameFieldRequired.value,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\", \"resetValid\", \"required-input\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: newContactData.value.lastName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((newContactData.value.lastName) = $event)),\n label: \"Last Name\",\n fieldValidation: _unref(ContactsValidation).LastName,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n \"required-input\": secondNameFieldRequired.value,\n resetValid: resetValidState.value,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\", \"required-input\", \"resetValid\", \"value-change-event\"]),\n _createVNode(lookupSingleSelect, {\n modelValue: newContactData.value.titleID,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((newContactData.value.titleID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n label: \"Title\",\n readOnly: locked.value,\n width: _unref(FieldSize).Large,\n requiredInput: true,\n showSearch: false,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"lookup-source\", \"readOnly\", \"width\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: newContactData.value.salutation,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newContactData.value.salutation) = $event)),\n label: \"Salutation\",\n fieldValidation: _unref(ContactsValidation).Salutation,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"])\n ]),\n _createElementVNode(\"div\", null, [\n _createVNode(AcquaintTextbox, {\n modelValue: newContactData.value.businessCompany,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((newContactData.value.businessCompany) = $event)),\n label: \"Company Name\",\n fieldValidation: _unref(ContactsValidation).BusinessCompany,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n resetValid: resetValidState.value,\n \"required-input\": companyNameFieldRequired.value,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\", \"resetValid\", \"required-input\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: newContactData.value.email,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((newContactData.value.email) = $event)),\n label: \"Email\",\n fieldValidation: _unref(ContactsValidation).Email,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: newContactData.value.mobileTelephone,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((newContactData.value.mobileTelephone) = $event)),\n label: \"Mobile Telephone\",\n fieldValidation: _unref(ContactsValidation).HomeTelephone,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: homeBusinessTelephoneNumber.value,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((homeBusinessTelephoneNumber).value = $event)),\n label: \" Telephone\",\n fieldValidation: _unref(ContactsValidation).BusinessTelephone,\n width: _unref(FieldSize).Large,\n readOnly: locked.value,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\", \"value-change-event\"]),\n _createVNode(NewContactTypeLookup, {\n label: \"Type\",\n modelValue: newContactData.value.typeID,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((newContactData.value.typeID) = $event)),\n readOnly: locked.value || props.isApplicant,\n width: _unref(FieldSize).Large,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"readOnly\", \"width\"])\n ])\n ])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), {\n title: \"Property Requirements\",\n disabled: !disablePropertyRequirementsTab.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", null, [\n _createVNode(SystemCodeSingleSelect, {\n label: \"Category\",\n \"code-type\": _unref(CodeType).ContactCategory,\n modelValue: propertyCategory.value,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((propertyCategory).value = $event))\n }, null, 8, [\"code-type\", \"modelValue\"]),\n _createVNode(BedroomsSelect, {\n modelValue: minBedrooms.value,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((minBedrooms).value = $event)),\n label: \"Min Bedrooms\",\n readOnly: locked.value\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ]),\n _createElementVNode(\"div\", null, [\n _createVNode(SystemCodeSingleSelect, {\n label: \"Usage\",\n modelValue: propertyUsage.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((propertyUsage).value = $event)),\n \"code-type\": _unref(CodeType).PropertyUsage\n }, null, 8, [\"modelValue\", \"code-type\"]),\n _createVNode(CurrencyInput, {\n modelValue: maxPrice.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((maxPrice).value = $event)),\n label: \"Max Price\",\n minValue: 0,\n maxValue: 99999999,\n readOnly: locked.value\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_unref(DxItem), { title: \"Address\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(EditAddress, {\n modelValue: address.value,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((address).value = $event)),\n validation: validation.value,\n \"read-only\": props.lockInputs,\n width: _unref(FieldSize).Large,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"validation\", \"read-only\", \"width\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Marketing Preferences\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(MarketingPreferenceToggles, {\n modelValue: newContactData.value,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((newContactData).value = $event)),\n readOnly: locked.value,\n onOnValueChange: onToggled\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"System Info\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(LookupSingleSelect, {\n modelValue: newContactData.value.assignedUserID,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((newContactData.value.assignedUserID) = $event)),\n label: \"Assigned User\",\n lookupSource: _unref(LookupTableSource).Users,\n width: _unref(FieldSize).Medium\n }, null, 8, [\"modelValue\", \"lookupSource\", \"width\"]),\n _createVNode(LookupSingleSelect, {\n modelValue: newContactData.value.siteID,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((newContactData.value.siteID) = $event)),\n label: \"Site/Branch\",\n lookupSource: _unref(LookupTableSource).Sites,\n width: _unref(FieldSize).Medium,\n allowZeroValue: true,\n \"validation-group\": \"contact-modal\"\n }, null, 8, [\"modelValue\", \"lookupSource\", \"width\"])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\"]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: (e) => { createContact(e) }, disabled: saving.value, validationGroup: 'contact-modal' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { closeModal() }, disabled: saving.value }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"showCloseButton\", \"saving\", \"showCloseConfirmationPrompt\"]),\n _createVNode(DuplicateContactModal, {\n modelValue: openDuplicateContactModal.value,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = ($event: any) => ((openDuplicateContactModal).value = $event)),\n contacts: duplicateRecords.value,\n onSelectContact: selectContact,\n titleField: duplicateModalTitleField.value\n }, null, 8, [\"modelValue\", \"contacts\", \"titleField\"]),\n _createVNode(QuestionModal, {\n modelValue: showMarketingPrompt.value,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = ($event: any) => ((showMarketingPrompt).value = $event)),\n title: \"Marketing Preferences\",\n confirmButtonText: \"Yes\",\n rejectButtonText: \"No\",\n onConfirm: enableMarketing,\n onReject: noConsent,\n messageText: _unref(marketingConsentMessage)\n }, null, 8, [\"modelValue\", \"messageText\"]),\n _createVNode(EmailFormModal, {\n modelValue: displayEmailForm.value,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = ($event: any) => ((displayEmailForm).value = $event)),\n contactList: [newContactId.value],\n emailTemplateId: _unref(EmailTemplates).gdprMailingList\n }, null, 8, [\"modelValue\", \"contactList\", \"emailTemplateId\"])\n ], 64))\n}\n}\n\n})","import script from \"./contact-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./contact-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./contact-modal.vue?vue&type=style&index=0&id=3c563b5c&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3c563b5c\"]])\n\nexport default __exports__","export enum HomeBusinessAddress {\n homeMailingAddress = 0,\n businessMailingAddress = 1\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-777fb381\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { class: \"column-container\" }\nconst _hoisted_3 = { class: \"column\" }\nconst _hoisted_4 = { class: \"column\" }\nconst _hoisted_5 = { class: \"column-container\" }\nconst _hoisted_6 = { class: \"column\" }\nconst _hoisted_7 = { class: \"column\" }\nconst _hoisted_8 = { class: \"column-container\" }\nconst _hoisted_9 = { class: \"column\" }\nconst _hoisted_10 = { class: \"column\" }\n\nimport { ref, inject, computed, watch, PropType } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport editAddress from '@/components/ui/address/edit-address.vue';\nimport { Address } from '@/types/generic/Address';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport { EditAddressValidation } from '@/types/validation/EditAddressValidation';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport acquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport switchToggle from '@/components/ui/toggles/switch-toggle.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport lookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport AcquaintDateBox from '@/components/ui/inputs/acquaint-date-box.vue';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport { HomeBusinessAddress } from '@/enums/HomeBusinessAddress';\nimport TabPanel from '@/components/ui/containers/tab-panel.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'edit-contact-details',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The contact object containing details about the contact.\n * @type {Contacts}\n */\n contact: {\n type: Object as PropType\n },\n /** \n * Determines whether to show the address by default.\n * @type {boolean}\n * @default true\n */\n showAddressField: {\n type: Boolean,\n default: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted when the modal is closed.\n * Notifies the parent component whether data should be updated.\n */\n 'modalClosed'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst originalContactData = ref()\nconst contactData = ref();\nconst homeMailingAddress = ref(0);\nconst businessMailingAddress = ref(0);\nconst saved = ref(false);\nconst maxBirthDate = ref(new Date(Date.now()));\nconst showCloseConfirmationPrompt = ref(false);\nconst keepingModalOpening = ref(false);\nconst selectedTab = ref(0);\n\n\n\n\n\nconst showContactModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst getContactData = async () => {\n try {\n originalContactData.value = await apiClient.httpGet(`database/contacts/${props.contact?.id}`)\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n originalContactData.value = undefined;\n }\n};\n\nconst submitContactData = async () => {\n try {\n await apiClient.httpPut(`database/contacts/${props.contact?.id}`, contactData.value);\n saved.value = true;\n return true;\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n showCloseConfirmationPrompt.value = true;\n return false;\n }\n};\n\nconst homeAddress = ref
({\n countryCode: CountryCode.UK,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst workAddress = ref
({\n countryCode: CountryCode.UK,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\n//When a home or work address is selected or a postcode is simply entered for either, the contact data is updated to reflect the data that has been entered.\n\nwatch(() => homeAddress.value, () => {\n if (!contactData.value || !homeAddress.value) {\n return\n }\n\n contactData.value.homeProperty = homeAddress.value.propertyName\n contactData.value.homeStreet = homeAddress.value.street;\n contactData.value.homeLocality = homeAddress.value.locality;\n contactData.value.homeTown = homeAddress.value.town;\n contactData.value.homeRegion = homeAddress.value.region;\n contactData.value.homePostcode = homeAddress.value.postCode;\n contactData.value.homeCountryCode = homeAddress.value.countryCode;\n}, { deep: true });\n\nwatch(() => workAddress.value, () => {\n if (!contactData.value || !workAddress.value) {\n return\n }\n\n contactData.value.businessProperty = workAddress.value.propertyName\n contactData.value.businessStreet = workAddress.value.street;\n contactData.value.businessLocality = workAddress.value.locality;\n contactData.value.businessTown = workAddress.value.town;\n contactData.value.businessRegion = workAddress.value.region;\n contactData.value.businessPostcode = workAddress.value.postCode;\n contactData.value.businessCountryCode = workAddress.value.countryCode;\n}, { deep: true });\n\nwatch(() => props.modelValue, async () => {\n if (!props.modelValue || keepingModalOpening.value) {\n return;\n }\n\n selectedTab.value = 0;\n await getContactData();\n\n if (!originalContactData.value) {\n contactData.value = undefined;\n return\n }\n\n //When the contact data has beeen retrieved from the API, the address details for the edit adress components must be updated.\n\n homeAddress.value.countryCode = originalContactData.value.homeCountryCode;\n homeAddress.value.postCode = originalContactData.value.homePostcode;\n homeAddress.value.propertyName = originalContactData.value.homeProperty;\n homeAddress.value.street = originalContactData.value.homeStreet;\n homeAddress.value.locality = originalContactData.value.homeLocality;\n homeAddress.value.town = originalContactData.value.homeTown;\n homeAddress.value.region = originalContactData.value.homeRegion;\n\n workAddress.value.countryCode = originalContactData.value.businessCountryCode;\n workAddress.value.postCode = originalContactData.value.businessPostcode;\n workAddress.value.propertyName = originalContactData.value.businessProperty;\n workAddress.value.street = originalContactData.value.businessStreet;\n workAddress.value.locality = originalContactData.value.businessLocality;\n workAddress.value.town = originalContactData.value.businessTown;\n workAddress.value.region = originalContactData.value.businessRegion;\n\n contactData.value = JSON.parse(JSON.stringify(originalContactData.value));\n\n saved.value = false;\n\n if (contactData.value?.mailingAddress) {\n businessMailingAddress.value = 1;\n homeMailingAddress.value = 0;\n } else if (contactData.value?.mailingAddress == 0) {\n homeMailingAddress.value = 1;\n businessMailingAddress.value = 0;\n }\n\n});\n\n\nconst validation = ref({\n propertyName: ContactsValidation.HomeProperty,\n street: ContactsValidation.HomeStreet,\n locality: ContactsValidation.HomeLocality,\n town: ContactsValidation.HomeTown,\n region: ContactsValidation.HomeRegion,\n postcode: ContactsValidation.HomePostcode\n});\n\nconst saving = ref(false);\n\nconst submitChanges = async (e: any) => {\n saving.value = true;\n const validate = e.validationGroup.validate();\n\n if (e.validationGroup._validationInfo.result && validate.isValid) {\n if (await submitContactData()) {\n emit('modalClosed', true, contactData.value);\n showCloseConfirmationPrompt.value = false;\n showContactModal.value = false;\n }\n }\n saving.value = false;\n};\n\nconst cancel = () => {\n showContactModal.value = false;\n};\n\nconst modalClosed = async () => {\n emit('modalClosed', JSON.stringify(originalContactData.value) != JSON.stringify(props.contact));\n keepingModalOpening.value = false;\n showCloseConfirmationPrompt.value = false;\n};\n\n//If the mailing address toggle has been toggled on in the home address tab, the mailing address toggle has been toggled on in the work address tab is toggled off\n//The businessMailingAddress.value is either 0 or 1 depending which toggle is set to being on\n\nwatch(() => homeMailingAddress.value, () => {\n if (!contactData.value) {\n return\n }\n\n showCloseConfirmationPrompt.value = !saved.value && JSON.stringify(originalContactData.value) != JSON.stringify(contactData.value);\n\n if (homeMailingAddress.value == 0) {\n businessMailingAddress.value = 1;\n } else if (homeMailingAddress.value == 1) {\n contactData.value.mailingAddress = HomeBusinessAddress.homeMailingAddress;\n businessMailingAddress.value = 0;\n }\n});\n\nwatch(() => homeMailingAddress.value, () => {\n showCloseConfirmationPrompt.value = !saved.value && JSON.stringify(originalContactData.value) != JSON.stringify(contactData.value);\n});\n\nwatch(() => businessMailingAddress.value, () => {\n showCloseConfirmationPrompt.value = !saved.value && JSON.stringify(originalContactData.value) != JSON.stringify(contactData.value);\n}, { deep: true })\n\nwatch(() => businessMailingAddress.value, () => {\n if (!contactData.value) {\n return\n }\n\n showCloseConfirmationPrompt.value = !saved.value && JSON.stringify(originalContactData.value) != JSON.stringify(contactData.value);\n\n if (businessMailingAddress.value == 0) {\n homeMailingAddress.value = 1;\n } else if (businessMailingAddress.value == 1) {\n contactData.value.mailingAddress = HomeBusinessAddress.businessMailingAddress;\n homeMailingAddress.value = 0;\n }\n\n}, { deep: true });\n\nwatch(() => contactData.value, () => {\n showCloseConfirmationPrompt.value = JSON.stringify(originalContactData.value) != JSON.stringify(contactData.value);\n}, { deep: true });\n\nconst emailFieldUnfocused = () => {\n if (contactData.value && contactData.value.emailAlt != '' && contactData.value.email == '') {\n contactData.value.email = contactData.value.emailAlt;\n contactData.value.emailAlt = '';\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n modelValue: showContactModal.value,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = ($event: any) => ((showContactModal).value = $event)),\n title: \"Personal Information\",\n width: _unref(ModalWidth).Large,\n height: \"72vh\",\n saving: saving.value,\n showCloseConfirmationPrompt: showCloseConfirmationPrompt.value,\n onCancelPromptDenied: _cache[23] || (_cache[23] = ($event: any) => (keepingModalOpening.value = true)),\n onModalClosed: modalClosed,\n showCloseButton: true\n }, {\n content: _withCtx(() => [\n (contactData.value && homeAddress.value && workAddress.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n (contactData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[21] || (_cache[21] = ($event: any) => ((selectedTab).value = $event)),\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"Main Details\" }, {\n default: _withCtx(() => [\n _createVNode(TabPanel, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.lastName,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((contactData.value.lastName) = $event)),\n label: \"Last Name\",\n fieldValidation: _unref(ContactsValidation).LastName,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.firstNames,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((contactData.value.firstNames) = $event)),\n label: \"First Names\",\n fieldValidation: _unref(ContactsValidation).LastName,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(lookupSingleSelect, {\n modelValue: contactData.value.titleID,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((contactData.value.titleID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n label: \"Title\",\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"lookup-source\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.salutation,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((contactData.value.salutation) = $event)),\n label: \"Salutation\",\n fieldValidation: _unref(ContactsValidation).Salutation,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(lookupSingleSelect, {\n modelValue: contactData.value.sourceID,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((contactData.value.sourceID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Sources,\n label: \"Source\",\n width: _unref(FieldSize).XLarge\n }, null, 8, [\"modelValue\", \"lookup-source\", \"width\"]),\n _createVNode(AcquaintDateBox, {\n modelValue: contactData.value.birthDate,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((contactData.value.birthDate) = $event)),\n validationGroup: \"editContactDetails\",\n \"field-validation\": _unref(ContactsValidation).BirthDate,\n width: _unref(FieldSize).Medium,\n label: \"Birth Date\",\n \"max-date\": maxBirthDate.value\n }, null, 8, [\"modelValue\", \"field-validation\", \"width\", \"max-date\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.mobileTelephone,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((contactData.value.mobileTelephone) = $event)),\n label: \"Mobile\",\n fieldValidation: _unref(ContactsValidation).MobileTelephone,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.email,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((contactData.value.email) = $event)),\n label: \"Email #1\",\n onOnUnfocused: emailFieldUnfocused,\n fieldValidation: _unref(ContactsValidation).Email,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.emailAlt,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((contactData.value.emailAlt) = $event)),\n label: \"Email #2\",\n onOnUnfocused: emailFieldUnfocused,\n fieldValidation: _unref(ContactsValidation).EmailAlt,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.webPage,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((contactData.value.webPage) = $event)),\n label: \"Web Page\",\n fieldValidation: _unref(ContactsValidation).WebPage,\n validationGroup: \"editContactDetails\",\n width: _unref(FieldSize).XLarge\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.businessTelephone,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((contactData.value.businessTelephone) = $event)),\n label: \"Business Telephone\",\n fieldValidation: _unref(ContactsValidation).BusinessTelephone,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"])\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), {\n title: \"Home Address\",\n visible: props.showAddressField\n }, {\n default: _withCtx(() => [\n _createVNode(TabPanel, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(editAddress, {\n modelValue: homeAddress.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((homeAddress).value = $event)),\n validation: validation.value,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"validation\", \"width\"]),\n _createVNode(switchToggle, {\n modelValue: homeMailingAddress.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((homeMailingAddress).value = $event)),\n label: \"Mailing Address\",\n readOnly: false\n }, null, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.homeTelephone,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((contactData.value.homeTelephone) = $event)),\n label: \"Home Telephone\",\n fieldValidation: _unref(ContactsValidation).HomeTelephone,\n validationGroup: \"editContactDetails\",\n width: _unref(FieldSize).XLarge\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.homeTelephoneAlt,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((contactData.value.homeTelephoneAlt) = $event)),\n label: \"Alt Telephone\",\n fieldValidation: _unref(ContactsValidation).HomeTelephoneAlt,\n validationGroup: \"editContactDetails\",\n width: _unref(FieldSize).XLarge\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"])\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(DxItem), {\n title: \"Business Address\",\n visible: props.showAddressField\n }, {\n default: _withCtx(() => [\n _createVNode(TabPanel, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(editAddress, {\n modelValue: workAddress.value,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((workAddress).value = $event)),\n validation: validation.value,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"validation\", \"width\"]),\n _createVNode(switchToggle, {\n modelValue: businessMailingAddress.value,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((businessMailingAddress).value = $event)),\n label: \"Mailing Address\",\n readOnly: false\n }, null, 8, [\"modelValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.businessCompany,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = ($event: any) => ((contactData.value.businessCompany) = $event)),\n label: \"Company Name\",\n fieldValidation: _unref(ContactsValidation).BusinessCompany,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.businessDepartment,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = ($event: any) => ((contactData.value.businessDepartment) = $event)),\n label: \"Department\",\n fieldValidation: _unref(ContactsValidation).BusinessDepartment,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.businessJobTitle,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = ($event: any) => ((contactData.value.businessJobTitle) = $event)),\n label: \"Job Title\",\n fieldValidation: _unref(ContactsValidation).BusinessJobTitle,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"]),\n _createVNode(acquaintTextbox, {\n modelValue: contactData.value.businessQualifications,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = ($event: any) => ((contactData.value.businessQualifications) = $event)),\n label: \"Qualifications\",\n fieldValidation: _unref(ContactsValidation).BusinessQualifications,\n width: _unref(FieldSize).XLarge,\n validationGroup: \"editContactDetails\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\"])\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }, 8, [\"selectedIndex\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: saving.value, onClick: (e) => { submitChanges(e) }, validationGroup: 'editContactDetails' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', disabled: saving.value, onClick: () => { cancel() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"saving\", \"showCloseConfirmationPrompt\"]))\n}\n}\n\n})","import script from \"./edit-contact-details.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./edit-contact-details.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./edit-contact-details.vue?vue&type=style&index=0&id=777fb381&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-777fb381\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-97a11e74\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"preferences-section\" }\nconst _hoisted_2 = { class: \"field-container\" }\nconst _hoisted_3 = { class: \"field-container\" }\n\nimport { PropType, computed } from 'vue';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport SwitchToggle from '@/components/ui/toggles/switch-toggle.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'marketing-preference-toggles',\n props: {\n /** \n * The contact object used with `v-model` to manage the contact information.\n * @type {Contacts}\n * @required\n */\n modelValue: {\n type: Object as PropType,\n required: true\n },\n /** \n * A boolean flag to manage input element in the UI.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Contacts} value - The new value to be updated in the model.\n */\n 'update:modelValue', \n /** \n * Emitted when the value of a field changes.\n * Notifies the parent component with the updated value and the field name.\n * @property {number} e - The updated value of the field.\n * @property {string} fieldName - The name of the field being updated.\n */\n 'onValueChange'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst contactData = computed({\n get: () => props.modelValue,\n set: (value: Contacts) => emit('update:modelValue', value)\n});\n\nconst onValueChange = (e: number, fieldName: string) => {\n emit('onValueChange', e, fieldName);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(SwitchToggle, {\n label: \"Mailing List\",\n labelWidth: \"7.5rem\",\n modelValue: contactData.value.mailingList,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((contactData.value.mailingList) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[1] || (_cache[1] = (e) => onValueChange(e, 'mailingList'))\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Emailing List\",\n labelWidth: \"7.5rem\",\n modelValue: contactData.value.emailingList,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((contactData.value.emailingList) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[3] || (_cache[3] = (e) => onValueChange(e, 'emailingList'))\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"SMS Text List\",\n labelWidth: \"7.5rem\",\n modelValue: contactData.value.smsList,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((contactData.value.smsList) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[5] || (_cache[5] = (e) => onValueChange(e, 'smsList'))\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Telephone List\",\n labelWidth: \"7.5rem\",\n modelValue: contactData.value.telephoneList,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((contactData.value.telephoneList) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[7] || (_cache[7] = (e) => onValueChange(e, 'telephoneList'))\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(SwitchToggle, {\n label: \"Pass Details to 3rd Parties\",\n labelWidth: \"12rem\",\n modelValue: contactData.value.passDataTo3rdParties,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((contactData.value.passDataTo3rdParties) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[9] || (_cache[9] = (e) => onValueChange(e, 'passDataTo3rdParties'))\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Pass Details to IFA\",\n labelWidth: \"12rem\",\n modelValue: contactData.value.passDataToIFA,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((contactData.value.passDataToIFA) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[11] || (_cache[11] = (e) => onValueChange(e, 'passDataToIFA'))\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Pass Details to Conveyancer\",\n labelWidth: \"12rem\",\n modelValue: contactData.value.passDataToConveyancer,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((contactData.value.passDataToConveyancer) = $event)),\n readOnly: props.readOnly,\n onOnVaueChange: _cache[13] || (_cache[13] = (e) => onValueChange(e, 'passDataToConveyancer'))\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./marketing-preference-toggles.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./marketing-preference-toggles.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./marketing-preference-toggles.vue?vue&type=style&index=0&id=97a11e74&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-97a11e74\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, ref, inject, watch } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport FindContactModal from '../find/contacts/find-contact-modal.vue';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult'\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { ContactsToCopyTo } from '@/types/emails/ContactsToCopyTo';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport displayInfoToast from '@/alerts/infoToastAlert';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport { IdNamePair } from '@/types/generic/IdNamePair';\nimport GridMenu from '../ui/grid/grid-menu.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'select-cc-contacts-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n\n /** \n * Determines whether the content should be copied to another location or component.\n * @type {boolean}\n * @default true\n */\n copyTo: {\n type: Boolean,\n default: true,\n },\n\n /** \n * Determines whether lists should be cleared or reset.\n * @type {boolean}\n * @default false\n */\n clearLists: {\n type: Boolean,\n default: false,\n },\n\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @default -1\n */\n contactId: {\n type: Number,\n default: -1,\n },\n\n /** \n * Determines whether the action or component is intended for email-related functionality.\n * @type {boolean}\n * @default true\n */\n forEmail: {\n type: Boolean,\n default: true,\n },\n\n /** \n * Indicates whether the contact is the primary contact.\n * @type {boolean}\n * @required\n */\n isPrimaryContact: {\n type: Boolean,\n required: true,\n },\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n\n /** \n * Emitted when saving contacts with visible email addresses (CC).\n * @property {Array} contactNames - The names of the contacts being saved.\n * @property {Array} contactNamesEmails - The email addresses of the contacts being saved.\n * @property {Array} contactIds - The unique IDs of the contacts being saved.\n */\n 'saveCopyToContacts',\n\n /** \n * Emitted when saving contacts without visible email addresses (BCC).\n * @property {Array} contactNames - The names of the contacts being saved.\n * @property {Array} contactIds - The unique IDs of the contacts being saved.\n */\n 'saveBlindCopyToContacts',\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst apiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\n\nconst openfindContactModal = ref(false);\nconst ccContacts = ref([]);\nconst bccContacts = ref([]);\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst fullContactInfo = ref();\nconst selectedContactId = ref(-1);\nconst loading = ref(false);\nconst fetchedLinkedContacts = ref([]);\nconst gridBaseKey = ref(0);\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst onCancelClick = () => showModal.value = false;\n\nconst addContact = () => {\n openfindContactModal.value = true;\n};\n\nconst contactsToDisplay = computed(() => { return props.copyTo ? ccContacts.value : bccContacts.value });\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n return;\n }\n});\n\nwatch(() => props.clearLists, () => {\n if (props.clearLists) {\n bccContacts.value = [];\n ccContacts.value = [];\n }\n});\n\nconst contactNames = computed(() => {\n let names = '';\n const contacts = props.copyTo ? ccContacts.value : bccContacts.value;\n contacts.forEach((contact, index) => {\n // If the contact is the first and only item or the last item, we don't want to add a comma after the name\n if (index == 0 && contacts.length == 1 || index == contacts.length - 1) {\n names = names + `${contact.firstName} ${contact.lastName}`;\n } else {\n names = names + `${contact.firstName} ${contact.lastName}, `;\n }\n });\n\n return names;\n});\n\nconst contactNamesEmails = computed(() => {\n let names = '';\n const contacts = props.copyTo ? ccContacts.value : bccContacts.value;\n contacts.forEach((contact, index) => {\n // If the contact is the first and only item or the last item, we don't want to add a comma after the name\n if (index == 0 && contacts.length == 1 || index == contacts.length - 1) {\n names = names + `${contact.firstName} ${contact.lastName} - ${contact.email} ${contact.altEmail}`;\n } else {\n names = names + `${contact.firstName} ${contact.lastName} ${contact.email} ${contact.altEmail}, `;\n }\n });\n\n return names;\n});\n\nconst contactIds = computed(() => {\n let ids: number[] = [];\n const contacts = props.copyTo ? ccContacts.value : bccContacts.value;\n contacts.forEach((contact) => {\n ids.push(contact.id);\n });\n return ids;\n});\n\nconst onSaveClick = () => {\n if (props.copyTo) {\n emit('saveCopyToContacts', contactNames.value, contactNamesEmails.value, contactIds.value);\n } else {\n emit('saveBlindCopyToContacts', contactNames.value, contactIds.value);\n }\n\n showModal.value = false;\n};\n\nconst fetchMainData = async (contactId: number) => {\n try {\n fullContactInfo.value = await apiClient.httpGet(`database/contacts/${contactId}`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n fullContactInfo.value = undefined;\n }\n};\n\nconst contactSelected = (selectedContact: ContactFindResult) => {\n if (!selectedContact) {\n return;\n }\n\n selectedContactId.value = selectedContact.id;\n};\n\nconst deleteContact = () => {\n if (props.copyTo) {\n ccContacts.value = ccContacts.value.filter((contact) => { return contact.id != selectedContactId.value });\n selectedContactId.value = -1;\n } else {\n bccContacts.value = bccContacts.value.filter((contact) => { return contact.id != selectedContactId.value });\n selectedContactId.value = -1;\n }\n};\n\nconst primaryContactSelected = (id: number) => {\n if (!id) {\n return;\n }\n\n addContactToList(id);\n}\n\nconst addContactToList = async (id: number) => {\n loading.value = true;\n\n await fetchMainData(id);\n\n if (!fullContactInfo.value) {\n loading.value = false;\n return;\n }\n\n if (fullContactInfo.value.email == '' && props.forEmail) {\n loading.value = false;\n displayInfoToast('Sorry, this Contact does not have an Email address.');\n return;\n }\n\n if (fullContactInfo.value.mobileTelephone == '' && !props.forEmail) {\n loading.value = false;\n displayInfoToast('Sorry, this Contact does not have a Mobile Number.');\n return;\n }\n\n if (props.copyTo) {\n ccContacts.value.push({\n id: fullContactInfo.value.id,\n firstName: fullContactInfo.value.firstNames,\n lastName: fullContactInfo.value.lastName,\n company: fullContactInfo.value.businessCompany,\n email: fullContactInfo.value.email,\n altEmail: fullContactInfo.value.emailAlt\n });\n } else {\n bccContacts.value.push({\n id: fullContactInfo.value.id,\n firstName: fullContactInfo.value.firstNames,\n lastName: fullContactInfo.value.lastName,\n company: fullContactInfo.value.businessCompany,\n email: fullContactInfo.value.email,\n altEmail: fullContactInfo.value.emailAlt\n });\n }\n\n loading.value = false;\n};\n\nconst contactToBeAdded = async (selectedContact: ContactFindResult) => {\n if (!selectedContact) {\n return;\n }\n\n addContactToList(selectedContact.id);\n};\n\nconst fetchLinkedContacts = async () => {\n try {\n fetchedLinkedContacts.value = await apiNextClient.httpGet(`/contacts/${props.contactId}/links`);\n } catch (err) {\n displayErrorMessage('The linked contacts could not be fetched');\n fetchedLinkedContacts.value = [];\n }\n};\n\nconst addAllLinks = async () => {\n loading.value = true;\n await fetchLinkedContacts();\n\n if (fetchedLinkedContacts.value.length == 0) {\n loading.value = false;\n displayErrorMessage('The linked contacts could not be fetched.')\n return;\n }\n\n // After fetching the linked contacts, we fetch the data of each contact and add it the table\n for (let i = 0; i < fetchedLinkedContacts.value.length; i++) {\n\n // We must check if the linked contact is already displayed in the table and if it is, we \n // can't call the api to then add it's details to the table.\n let contactInTable: ContactsToCopyTo | undefined;\n\n if (props.copyTo) {\n contactInTable = ccContacts.value.find((contact) => { return contact.id == fetchedLinkedContacts.value[i].id });\n } else {\n contactInTable = bccContacts.value.find((contact) => { return contact.id == fetchedLinkedContacts.value[i].id });\n }\n\n if (contactInTable) {\n continue;\n }\n\n let linkedContactData: Contacts | undefined;\n\n linkedContactData = await fetchLinkedContactData(fetchedLinkedContacts.value[i].id);\n\n if (!linkedContactData) {\n continue;\n }\n\n if (props.forEmail && linkedContactData.email == '') {\n continue;\n } else if (!props.forEmail && linkedContactData.mobileTelephone == '') {\n continue;\n }\n\n if (props.copyTo) {\n ccContacts.value.push({\n id: linkedContactData?.id,\n firstName: linkedContactData.firstNames,\n lastName: linkedContactData.lastName,\n company: linkedContactData.businessCompany,\n email: linkedContactData?.email,\n altEmail: linkedContactData?.emailAlt\n });\n } else {\n bccContacts.value.push({\n id: linkedContactData?.id,\n firstName: linkedContactData.firstNames,\n lastName: linkedContactData.lastName,\n company: linkedContactData.businessCompany,\n email: linkedContactData?.email,\n altEmail: linkedContactData?.emailAlt\n });\n }\n }\n loading.value = false;\n gridBaseKey.value++;\n};\n\nconst fetchLinkedContactData = async (contactId: number) => {\n try {\n return await apiClient.httpGet(`database/contacts/${contactId}`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n return undefined;\n }\n};\n\nconst dropdownMenu = computed(() => {\n const menuItems = [];\n\n if (props.isPrimaryContact) {\n menuItems.push({\n text: 'Add All Links',\n key: 'addAllLinks',\n icon: 'fas fa-users'\n });\n }\n\n menuItems.push(\n {\n text: 'Add',\n key: 'addContact',\n icon: 'fas fa-plus'\n },\n {\n text: 'Delete',\n key: 'deleteContact',\n icon: 'fas fa-trash'\n }\n );\n\n return menuItems;\n});\n\nconst onMenuItemClick = (key: string) => {\n switch (key) {\n case 'addContact':\n addContact();\n break;\n case 'addAllLinks':\n addAllLinks();\n break;\n case 'deleteContact':\n deleteContact();\n break;\n }\n};\n\nconst modalTitle = computed(() => { return props.forEmail ? \"Contacts to Copy Email To\" : \"Contacts to Copy SMS To\" });\n\nconst menuId = computed(() => {\n const method = props.forEmail ? 'email' : 'sms';\n const type = props.copyTo ? 'cc' : 'bcc';\n\n return `${method}-${type}-contacts-btn`;\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n title: modalTitle.value,\n height: \"360px\"\n }, {\n content: _withCtx(() => [\n (_openBlock(), _createBlock(GridBase, {\n key: gridBaseKey.value,\n loading: loading.value,\n dataSource: contactsToDisplay.value,\n onRowSelected: contactSelected,\n \"id-column-name\": \"id\",\n showColumnHeaders: true\n }, {\n \"header-content\": _withCtx(() => [\n _createVNode(GridMenu, {\n \"menu-items\": dropdownMenu.value,\n onItemClicked: onMenuItemClick,\n class: \"grid-menu-button\",\n id: menuId.value\n }, null, 8, [\"menu-items\", \"id\"])\n ]),\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"lastName\",\n caption: \"Last Name\",\n \"hiding-priority\": 8\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"firstName\",\n caption: \"First Name\",\n \"hiding-priority\": 8\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"company\",\n caption: \"Company\",\n \"hiding-priority\": 8\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"email\",\n caption: \"Email\",\n \"hiding-priority\": 8,\n visible: false\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"altEmail\",\n caption: \"AltEmail\",\n \"hiding-priority\": 8,\n visible: false\n })\n ]),\n _: 1\n }, 8, [\"loading\", \"dataSource\"]))\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: () => { onSaveClick() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"title\"]),\n _createVNode(FindContactModal, {\n modelValue: openfindContactModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((openfindContactModal).value = $event)),\n onContactSelected: contactToBeAdded,\n onPrimaryContactSelected: primaryContactSelected,\n \"current-contact-id\": props.contactId\n }, null, 8, [\"modelValue\", \"current-contact-id\"])\n ], 64))\n}\n}\n\n})","import script from \"./select-cc-contacts-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./select-cc-contacts-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export enum MarketingEmailType {\n PropertyBulletin = 0,\n PropertyDetails = 1,\n DevelopmentDetail = 2,\n Newsletter = 3,\n PropertyFeedbackRequest = 4\n}","export enum MarketingEmailTabs {\n General,\n Menu,\n Details,\n SocialMedia\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76fead96\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"marketing-email-designer-content\" }\nconst _hoisted_2 = { class: \"panel\" }\nconst _hoisted_3 = { class: \"panel\" }\nconst _hoisted_4 = { class: \"panel\" }\nconst _hoisted_5 = { class: \"panel\" }\nconst _hoisted_6 = { class: \"panel preview-tab\" }\nconst _hoisted_7 = { class: \"preview-body-container\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"preview-body\" }, null, -1))\n\nimport { computed, inject, watch, ref } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport SystemCodeSingleSelect from '../ui/system-codes/system-code-single-select.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport FieldValidationFreeTextbox from '../ui/inputs/field-validation-free-textbox.vue';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { EmailMarketingSettings } from '@/types/emails/EmailMarketingSettings';\nimport ColourPicker from '../ui/inputs/colour-picker.vue';\nimport ScrollView from '../ui/scroll-view.vue';\nimport { Body } from '@/types/generic/Body';\nimport { MarketingEmailType } from '@/enums/emails/MarketingEmailType';\nimport { MarketingEmailTabs } from '@/enums/emails/MarketingEmailTabs';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'marketing-email-designer-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst onCancelClick = () => showModal.value = false;\n\nconst marketingEmailDesignerData = ref();\nconst selectedTab = ref(MarketingEmailTabs.General);\nconst emailType = ref(MarketingEmailType.PropertyBulletin);\nconst previewContent = ref({ body: '' });\nconst loadingData = ref(false);\nconst showCloseConfirmationPrompt = ref(true);\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n return;\n }\n\n marketingEmailDesignerData.value = undefined;\n loadingData.value = true;\n showCloseConfirmationPrompt.value = true;\n\n if (!await fetchMarketingEmailDesignerData()) {\n return;\n }\n\n selectedTab.value = MarketingEmailTabs.General;\n\n // We are using the PropertyBulletin enum value as the default value. If a user opens the modal and type\n // value is already set to this enum value, we will call the fetchAndDisplayPreviewContent function. \n // Otherwise, we will set the type value to PropertyBulletin enum value, which will trigger the \n // fetchAndDisplayPreviewContent function to be called in the watch on the email type ref\n emailType.value = MarketingEmailType.PropertyBulletin;\n await fetchAndDisplayPreviewContent();\n\n loadingData.value = false;\n})\n\nconst fetchMarketingEmailDesignerData = async () => {\n try {\n marketingEmailDesignerData.value = await apiClient.httpGet('app/marketing/emaildesigner/settings');\n return true;\n } catch (err) {\n marketingEmailDesignerData.value = undefined;\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst fetchAndDisplayPreviewContent = async () => {\n await fetchPreviewEmailContent();\n\n var divToInsertHTMLInto = document.getElementById('preview-body');\n\n if (divToInsertHTMLInto) {\n divToInsertHTMLInto.innerHTML = previewContent.value.body;\n }\n};\n\nconst fetchPreviewEmailContent = async () => {\n try {\n previewContent.value = await apiClient.httpPost('app/marketing/emaildesigner/preview', { ...marketingEmailDesignerData.value, emailType: emailType.value });\n } catch (err) {\n previewContent.value = { body: '' };\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nwatch(() => emailType.value, () => {\n if (loadingData.value) {\n return;\n }\n\n fetchAndDisplayPreviewContent()\n});\n\nwatch(() => marketingEmailDesignerData.value, (value, oldValue) => {\n // When the modal is first opened, marketingEmailDesignerData is undefined and we don't want to call \n // fetchAndDisplayPreviewContent here then, only when a changes are made by the user.\n if (!oldValue || !value || loadingData.value) {\n return;\n }\n\n fetchAndDisplayPreviewContent()\n}, { deep: true });\n\nconst updateMarketingEmailDesignerData = async () => {\n try {\n await apiClient.httpPutVoid('app/marketing/emaildesigner/settings', marketingEmailDesignerData.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onSaveClick = async () => {\n if (await updateMarketingEmailDesignerData()) {\n showCloseConfirmationPrompt.value = false;\n showModal.value = false;\n }\n};\n\nconst emailTypeIdsToExclude: number[] = [MarketingEmailType.PropertyFeedbackRequest];\n\nconst tabPanelWidth = computed(() => {\n return screen.width <= 600 ? '100%' : '15rem';\n});\n\nconst scrollDirection = computed(() => {\n return screen.width <= 600 ? 'both' : 'vertical';\n});\n\nconst hideBlurInPreviewTab = computed(() => {\n return screen.width <= 600 ? true : false;\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = ($event: any) => ((showModal).value = $event)),\n title: \"Marketing Email Designer\",\n height: \"700px\",\n width: _unref(ModalWidth).Large,\n showCloseConfirmationPrompt: showCloseConfirmationPrompt.value\n }, {\n content: _withCtx(() => [\n _createVNode(SystemCodeSingleSelect, {\n \"code-type\": _unref(CodeType).MarketingEmailType,\n \"ids-to-exclude\": emailTypeIdsToExclude,\n label: \"Type\",\n modelValue: emailType.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((emailType).value = $event)),\n readOnly: false\n }, null, 8, [\"code-type\", \"modelValue\"]),\n _createElementVNode(\"section\", _hoisted_1, [\n (marketingEmailDesignerData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[19] || (_cache[19] = ($event: any) => ((selectedTab).value = $event)),\n width: tabPanelWidth.value\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.backgroundColour,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((marketingEmailDesignerData.value.backgroundColour) = $event)),\n label: \"Outer Background Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.bodyColour,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((marketingEmailDesignerData.value.bodyColour) = $event)),\n label: \"Body Background Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.bodyTextColour,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((marketingEmailDesignerData.value.bodyTextColour) = $event)),\n label: \"Body Text Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.footerDividerColour,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((marketingEmailDesignerData.value.footerDividerColour) = $event)),\n label: \"Footer Background Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.footerTextColour,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((marketingEmailDesignerData.value.footerTextColour) = $event)),\n label: \"Footer Text Colour\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Menu\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.menuColour,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((marketingEmailDesignerData.value.menuColour) = $event)),\n label: \"Background Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.menuItemColour,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((marketingEmailDesignerData.value.menuItemColour) = $event)),\n label: \"Button Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.menuItemTextColour,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((marketingEmailDesignerData.value.menuItemTextColour) = $event)),\n label: \"Button Text Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.menuItemSeperatorColour,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((marketingEmailDesignerData.value.menuItemSeperatorColour) = $event)),\n label: \"Button Seperator Colour\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Details\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.detailBorderColour,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((marketingEmailDesignerData.value.detailBorderColour) = $event)),\n label: \"Detail Border Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.detailBackgroundColour,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((marketingEmailDesignerData.value.detailBackgroundColour) = $event)),\n label: \"Detail Background Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.headingColour,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((marketingEmailDesignerData.value.headingColour) = $event)),\n label: \"Detail Heading Colour\"\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n modelValue: marketingEmailDesignerData.value.detailTextColour,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((marketingEmailDesignerData.value.detailTextColour) = $event)),\n label: \"Detail Text Colour\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Social Media\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(SystemCodeSingleSelect, {\n \"code-type\": _unref(CodeType).MarketingEmailSocialMediaIconStyle,\n label: \"Icon Style\",\n modelValue: marketingEmailDesignerData.value.socialMediaIconStyle,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((marketingEmailDesignerData.value.socialMediaIconStyle) = $event)),\n readOnly: false\n }, null, 8, [\"code-type\", \"modelValue\"]),\n _createVNode(FieldValidationFreeTextbox, {\n label: \"Facebook URL\",\n modelValue: marketingEmailDesignerData.value.facebookUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((marketingEmailDesignerData.value.facebookUrl) = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(FieldValidationFreeTextbox, {\n label: \"Twitter URL\",\n modelValue: marketingEmailDesignerData.value.twitterUrl,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((marketingEmailDesignerData.value.twitterUrl) = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(FieldValidationFreeTextbox, {\n label: \"LinkedIn URL\",\n modelValue: marketingEmailDesignerData.value.linkedInUrl,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = ($event: any) => ((marketingEmailDesignerData.value.linkedInUrl) = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(FieldValidationFreeTextbox, {\n label: \"Instagram URL\",\n modelValue: marketingEmailDesignerData.value.instagramUrl,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = ($event: any) => ((marketingEmailDesignerData.value.instagramUrl) = $event))\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\", \"width\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(ScrollView, {\n scrollDirection: scrollDirection.value,\n hideBlur: hideBlurInPreviewTab.value\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"scrollDirection\", \"hideBlur\"])\n ])\n ])\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: () => { onSaveClick() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"showCloseConfirmationPrompt\"]))\n}\n}\n\n})","import script from \"./marketing-email-designer-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./marketing-email-designer-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./marketing-email-designer-modal.vue?vue&type=style&index=0&id=76fead96&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-76fead96\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b6f97d5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = {\n key: 0,\n class: \"advert-specific-section\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"image-title\" }, \"Image\", -1))\nconst _hoisted_4 = [\"src\"]\nconst _hoisted_5 = { class: \"image-navigator\" }\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { MarketingEmailItemsValidation } from 'acquaint-api/validation/MarketingEmailItemsValidation';\nimport { MarketingEmailItems } from 'acquaint-api/models/MarketingEmailItems';\nimport AcquaintTextArea from '../ui/inputs/acquaint-text-area.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport SystemCodeSingleSelect from '../ui/system-codes/system-code-single-select.vue';\nimport { MarketingEmailItemType } from '@/enums/emails/MarketingEmailItemType';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-edit-marketing-email-items-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the marketing email.\n * @type {number}\n * @required\n */\n configurationId: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when an existing template configuration has been successfully edited.\n * This notifies the parent component to refresh or update the template configuration details.\n */\n 'configurationItemEdited',\n /** \n * Emitted when a new template configuration has been successfully created.\n * This notifies the parent component to handle the creation of a new template configuration.\n */\n 'configurationItemCreated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst itemData = ref();\nconst lockedByAnotherUser = ref(false)\nconst keepingModalOpening = ref(false);\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst lockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/marketingemailitems/${props.configurationId}/lock`, { lock: true, extraInfo: '' });\n } catch (err) {\n lockedByAnotherUser.value = true;\n displayErrorMessage('These details are already being edited by another user.');\n }\n};\n\nconst unLockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/marketingemailitems/${props.configurationId}/lock`, { lock: false, extraInfo: '' });\n } catch (err) {\n displayErrorMessage('We were unable to unlock these details.');\n }\n};\n\nconst fetchItemData = async () => {\n try {\n if (props.configurationId == 0) {\n itemData.value = await acquaintApiClient.httpGet(`database/marketingemailitems/defaultmodel`);\n } else {\n itemData.value = await acquaintApiClient.httpGet(`database/marketingemailitems/${props.configurationId}`);\n }\n } catch (err) {\n itemData.value = undefined;\n if (props.configurationId == 0) {\n displayErrorMessage('The selected details could not be fetched');\n } else {\n displayErrorMessage('We could not fetch the default data');\n }\n }\n};\n\n// We need to add 1 to the image value to get the correct index as the url uses base 1 rahter than base 0\nconst imageURL = computed(() => {\n const imageIndex = itemData.value ? itemData.value.image + 1 : 0;\n return `https://webutils.acquaintcrm.co.uk/images/marketingemails/image${imageIndex}.jpg`\n});\n\nconst displayPreviousImage = () => {\n if (!itemData.value) {\n return;\n }\n\n // If we are viewing the first image, we need to display the last image after pressing the back button\n if (itemData.value.image == 0) {\n itemData.value.image = 94;\n return;\n }\n\n itemData.value.image--;\n};\n\nconst displayNextImage = () => {\n if (!itemData.value) {\n return;\n }\n\n // If we are viewing the last image, we need to display the first image after pressing the next button\n if (itemData.value.image == 94) {\n itemData.value.image = 0;\n return;\n }\n\n itemData.value.image++;\n};\n\nwatch(() => showModal.value, async () => {\n if (keepingModalOpening.value || !showModal.value) {\n return\n }\n\n lockedByAnotherUser.value = false;\n\n await fetchItemData();\n\n if (props.configurationId == 0) {\n return;\n }\n\n await lockConfigurationItem();\n});\n\n// We need to ensure that the image is set to the first image when it's displayed after being hidden\nwatch(() => itemData.value?.type, (value, preValue) => {\n if (itemData.value && value == MarketingEmailItemType.Advert && preValue == MarketingEmailItemType.MenuItem) {\n itemData.value.image = 0;\n }\n});\n\nconst saveDetails = async (e: any) => {\n const validation: ValidatedEvent = e.validationGroup.validate();\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (!await callSaveApi()) {\n return;\n }\n\n lockedByAnotherUser.value = true;\n\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n emit('configurationItemEdited');\n } else {\n emit('configurationItemCreated');\n }\n\n showModal.value = false;\n};\n\nconst callSaveApi = async () => {\n try {\n if (props.configurationId == 0) {\n itemData.value = await acquaintApiClient.httpPost(`database/marketingemailitems`, itemData.value);\n } else {\n itemData.value = await acquaintApiClient.httpPut(`database/marketingemailitems/${props.configurationId}`, itemData.value);\n }\n return true;\n } catch (err) {\n if (props.configurationId == 0) {\n displayErrorMessage('A new system item could not be created.');\n } else {\n displayErrorMessage('The selected details could not be edited.');\n }\n return false;\n }\n}\nconst cancelClick = () => {\n showModal.value = false;\n};\n\nconst keepEnteredInformation = () => {\n keepingModalOpening.value = true;\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst modalClosed = async () => {\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n }\n keepingModalOpening.value = false;\n};\n\n// Because the body field and images can either be hidden or displayed, we need to change the modal height on large devices depending on whether they are shown or not.\nconst modalHeight = computed(() => {\n return itemData.value?.type == MarketingEmailItemType.Advert ? '560px' : '300px';\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n title: \"Marketing Email Item\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n showCloseConfirmationPrompt: !lockedByAnotherUser.value,\n height: modalHeight.value,\n onCancelConfirmationModal: keepEnteredInformation,\n onModalClosed: modalClosed,\n onCancelPromptDenied: cancelPromptDenied\n }, {\n content: _withCtx(() => [\n (itemData.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(MarketingEmailItemsValidation).Description,\n label: \"Description\",\n modelValue: itemData.value.description,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((itemData.value.description) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"MarketingEmailItemsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(SystemCodeSingleSelect, {\n \"code-type\": _unref(CodeType).MarketingEmailItemType,\n fieldValidation: _unref(MarketingEmailItemsValidation).Type,\n label: \"Type\",\n modelValue: itemData.value.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((itemData.value.type) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"MarketingEmailItemsValidationGroup\"\n }, null, 8, [\"code-type\", \"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(MarketingEmailItemsValidation).URL,\n label: \"URL\",\n modelValue: itemData.value.url,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((itemData.value.url) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"MarketingEmailItemsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n (itemData.value.type == _unref(MarketingEmailItemType).Advert)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_2, [\n _createVNode(AcquaintTextArea, {\n fieldValidation: _unref(MarketingEmailItemsValidation).Body,\n label: \"Body\",\n modelValue: itemData.value.body,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((itemData.value.body) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"MarketingEmailItemsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _hoisted_3,\n _createElementVNode(\"img\", {\n src: imageURL.value,\n height: \"150\",\n width: \"200\"\n }, null, 8, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"i\", {\n class: \"fas fa-chevron-left\",\n onClick: displayPreviousImage\n }),\n _createElementVNode(\"span\", null, _toDisplayString(itemData.value.image + 1) + \"/\" + _toDisplayString(95), 1),\n _createElementVNode(\"i\", {\n class: \"fas fa-chevron-right\",\n onClick: displayNextImage\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: lockedByAnotherUser.value, onClick: (e) => { saveDetails(e) }, validationGroup: 'MarketingEmailItemsValidationGroup' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\", \"height\"]))\n}\n}\n\n})","import script from \"./new-edit-marketing-email-items-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-edit-marketing-email-items-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./new-edit-marketing-email-items-modal.vue?vue&type=style&index=0&id=3b6f97d5&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b6f97d5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, ref, inject, watch, PropType } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { DxToolbarItem } from 'devextreme-vue/popup'\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport NewEditMarketingEmailItemsModal from './new-edit-marketing-email-items-modal.vue';\nimport { MarketingEmailItemType } from '@/enums/emails/MarketingEmailItemType';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport { DxContextMenu } from 'devextreme-vue/context-menu';\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'marketing-email-items-configuration-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The type of marketing email item.\n * @type {MarketingEmailItemType}\n * @required\n * @default undefined\n */\n itemType: {\n type: Number as PropType,\n default: undefined,\n require: false\n },\n /** \n * Determines whether the \"Select\" button should be displayed.\n * @type {boolean}\n * @default false\n */\n showSelectButton: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted when a template is selected. \n * @property {number} selectedConfigurationItem.id - The id of the selected template.\n * @property {string} selectedConfigurationItem.description - The id of the selected template\n */\n 'configurationSelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst userPermissionsStore = useUserPermissionsStore();\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst marketingEmailItemsList = ref([]);\nconst userPermissions = ref();\nconst editNewModalId = ref(0);\nconst selectedConfigurationItem = ref({ id: 0, description: '' });\nconst displayEditNewModal = ref(false);\nconst showFunctionsMenu = ref(false);\nconst contextMenuId = ref('marketing-email-configuration-action-menu');\n\nconst disableEdit = computed(() => { return selectedConfigurationItem.value.id == 0 });\n\nconst fetchConfigurationList = async () => {\n try {\n if (props.itemType == undefined) {\n marketingEmailItemsList.value = await acquaintApiClient.httpGet\n (`app/system/lookup/${LookupTableSource.MarketingEmailItems}`);\n } else {\n marketingEmailItemsList.value = await acquaintApiNextClient.httpGet(`MarketingEmailItems/${props.itemType}`);\n }\n } catch (err) {\n displayErrorMessage('The selected details could not be fetched');\n marketingEmailItemsList.value = [];\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (showModal.value) {\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n fetchConfigurationList();\n }\n});\n\nconst configurationItemSelected = (e: any) => {\n if (!e) {\n return\n }\n selectedConfigurationItem.value = e;\n};\n\nconst configurationItemDoubleClicked = (e: any) => {\n if (!e) {\n return\n }\n\n selectedConfigurationItem.value = e;\n editNewModalId.value = selectedConfigurationItem.value.id;\n if (props.showSelectButton) {\n emit('configurationSelected', selectedConfigurationItem.value.id, selectedConfigurationItem.value.description);\n showModal.value = false;\n }\n else {\n displayEditNewModal.value = true;\n }\n};\n\nconst openEditModal = () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.edit) {\n displayErrorMessage(\"Sorry, you do not have the permission to edit these details.\");\n return;\n }\n\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n};\n\nconst openNewModal = () => {\n\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.new) {\n displayErrorMessage(\"Sorry, you do not have the permission to create a new system item.\");\n\n return;\n }\n\n editNewModalId.value = 0;\n displayEditNewModal.value = true;\n};\n\nconst deleteConfigurationItem = async () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.delete) {\n displayErrorMessage(\"Sorry, you do not have the permission to delete these details.\");\n return;\n }\n\n if (selectedConfigurationItem.value.id < 1000) {\n displayErrorMessage(\"Sorry, you can't delete this system item as it is required by Acquaint. However you may edit it, and set it as Inactive to remove it from this list.\")\n }\n\n const question = await displayQuestionAlert('Are you sure you want to delete these details?');\n\n if (!question.isConfirmed) {\n return;\n }\n\n if (await callDeletApi()) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n }\n};\n\nconst callDeletApi = async () => {\n try {\n await acquaintApiClient.httpDeleteVoid(`database/marketingemailitems/${selectedConfigurationItem.value.id}`);\n return true;\n } catch (err) {\n displayErrorMessage(\"Sorry, these details cannot be deleted as they are referenced elsewhere.\");\n return false;\n }\n};\n\nconst newItemCreated = () => {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n};\n\nconst editItem = (inActive: number) => {\n if (inActive) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n\n fetchConfigurationList();\n};\n\n\nconst menuItems = computed(() => {\n const menu: ContextMenuItem[] = [\n {\n text: 'Edit',\n key: 'edit',\n disabled: disableEdit.value,\n icon: ''\n },\n {\n text: 'Delete',\n key: 'delete',\n disabled: disableEdit.value,\n icon: ''\n }\n ];\n return menu;\n});\nconst onMenuItemClick = (e: any) => {\n switch (e.itemData.key) {\n case 'edit':\n openEditModal();\n break;\n case 'delete':\n deleteConfigurationItem();\n break;\n }\n};\nconst editDeleteButtonsPositioning = computed(() => {\n return props.showSelectButton ? 'before' : 'after';\n});\nconst selectItem = () => {\n emit('configurationSelected', selectedConfigurationItem.value.id, selectedConfigurationItem.value.description);\n showModal.value = false;\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"Marketing Email Items\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n \"show-close-button\": true,\n height: \"460px\"\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createVNode(GridBase, {\n dataSource: marketingEmailItemsList.value,\n onRowClick: configurationItemDoubleClicked,\n onRowSelected: configurationItemSelected,\n onAdaptiveRowSelection: configurationItemSelected,\n \"id-column-name\": \"id\",\n showColumnHeaders: false,\n \"pre-selected-id\": selectedConfigurationItem.value.id\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"\",\n \"hiding-priority\": 8,\n width: \"100%\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"Id\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"dataSource\", \"pre-selected-id\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Select', disabled: disableEdit.value, visible: __props.showSelectButton, onClick: () => { selectItem() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { elementAttr: { id: contextMenuId.value }, visible: __props.showSelectButton, text: 'Actions', onClick: () => { showFunctionsMenu.value = !showFunctionsMenu.value; } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: editDeleteButtonsPositioning.value,\n options: { text: 'Delete', visible: !__props.showSelectButton, disabled: disableEdit.value, onClick: () => { deleteConfigurationItem() } }\n }, null, 8, [\"location\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: editDeleteButtonsPositioning.value,\n options: { text: 'Edit', visible: !__props.showSelectButton, disabled: disableEdit.value, onClick: () => { openEditModal() } }\n }, null, 8, [\"location\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'New', onClick: () => { openNewModal() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { showModal.value = false } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(NewEditMarketingEmailItemsModal, {\n modelValue: displayEditNewModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((displayEditNewModal).value = $event)),\n configurationId: editNewModalId.value,\n onConfigurationItemCreated: newItemCreated,\n onConfigurationItemEdited: editItem\n }, null, 8, [\"modelValue\", \"configurationId\"]),\n _createVNode(_unref(DxContextMenu), {\n visible: showFunctionsMenu.value,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((showFunctionsMenu).value = $event)),\n \"data-source\": menuItems.value,\n target: `#${contextMenuId.value}`,\n position: { my: 'bottom right', at: 'top right' },\n onItemClick: onMenuItemClick\n }, null, 8, [\"visible\", \"data-source\", \"target\"])\n ], 64))\n}\n}\n\n})","import script from \"./marketing-email-items-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./marketing-email-items-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export enum EmailTab {\n Customise,\n Settings,\n Attachments,\n Preview\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, toDisplayString as _toDisplayString, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1af5fd7e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tab-container\" }\nconst _hoisted_2 = { class: \"dual-field-container\" }\nconst _hoisted_3 = { class: \"column\" }\nconst _hoisted_4 = { class: \"column\" }\nconst _hoisted_5 = { class: \"dual-field-container\" }\nconst _hoisted_6 = { class: \"column\" }\nconst _hoisted_7 = { class: \"column\" }\nconst _hoisted_8 = { class: \"tab-container\" }\nconst _hoisted_9 = { class: \"setting-toggles\" }\nconst _hoisted_10 = { class: \"tab-container\" }\nconst _hoisted_11 = { class: \"tab-container\" }\nconst _hoisted_12 = { key: 0 }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Message Body\", -1))\nconst _hoisted_14 = { class: \"preview-body-container\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"preview-body\" }, null, -1))\nconst _hoisted_16 = {\n key: 2,\n class: \"navigator-excluder-section\"\n}\nconst _hoisted_17 = { class: \"contact-navigator\" }\nconst _hoisted_18 = { class: \"tab-container email-container\" }\nconst _hoisted_19 = { class: \"email-cell\" }\nconst _hoisted_20 = { class: \"email\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = { class: \"include-cell\" }\n\nimport { computed, ref, watch, inject, onMounted, PropType } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport AcquaintTextbox from '../ui/inputs/acquaint-textbox.vue';\nimport ContactLookup from '../ui/lookup/contact-lookup.vue';\nimport PropertyLookup from '../ui/lookup/property-lookup.vue';\nimport HtmlEditor from '../html-editor/html-editor.vue';\nimport SwitchToggle from '@/components/ui/toggles/switch-toggle.vue';\nimport SelectCcContactsModal from '../contacts/select-cc-contacts-modal.vue';\nimport MergeFieldsModal from '../contacts/merge-fields-modal.vue';\nimport { EmailForm } from '@/types/emails/EmailForms';\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult';\nimport { EmailsValidation } from 'acquaint-api/validation/EmailsValidation';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport { ContactSummary } from '@/types/contacts/ContactSummary'\nimport { useCurrentUserStore } from '@/stores/CurrentUserStore';\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { EmailPreviewFields } from '@/types/emails/EmailPreviewFields';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport FileUpload from '../ui/inputs/file-upload.vue';\nimport { EmailTab } from '@/enums/correspondence/EmailTab'\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { CorrespondenceEmail } from '@/types/CorrespondenceEmail';\nimport { formatDate } from 'bright-logic-core/src/format';\nimport { UserDetails } from '@/types/users/UserDetails';\nimport { EmailTemplateFile } from '@/types/EmailTemplateFile';\nimport { getFileNameParts, convertCorrespondenceFileToBlob } from '@/utils/files/CorrespondenceFileConverter';\nimport { saveAs } from 'file-saver-es';\nimport { FileNameId } from '@/types/FileNameId';\nimport { EmailSignatures } from 'acquaint-api/models/EmailSignatures';\nimport { SelectedEmailAction } from '@/enums/emails/SelectedEmailAction';\nimport { standardInfoAlert } from '@/alerts/standardInfoAlert';\nimport { BulkEmailResponse } from '@/types/emails/BulkEmailResponse';\nimport { Body } from '@/types/generic/Body';\nimport { PropertyBulletinPreview } from '@/types/emails/PropertyBulletinPreview';\nimport { EmailTemplateTypes } from '@/enums/emails/EmailTemplateTypes';\nimport ScrollView from '../ui/scroll-view.vue';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { MatchedContacts } from '@/types/matching/MatchedContacts';\nimport { DisplayedMatchContacts } from '@/types/matching/DisplayedMatchedContacts';\nimport EditContactDetails from '../contacts/record/edit-contact-details.vue';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { useSystemConfigurationStore } from '@/stores/SystemConfigurationStore';\nimport { SystemConfiguration } from 'acquaint-api/constants/SystemConfiguration';\nimport { EmailTemplate } from '@/types/EmailTemplate';\nimport AITextGeneratorModal from '../ai/ai-text-generator-modal.vue';\nimport { CorrespondenceFile } from '@/types/CorrespondenceFile';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'email-form-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n\n /** \n * The ID of the email template to be used.\n * @type {number}\n * @required\n */\n emailTemplateId: {\n type: Number,\n required: true,\n },\n\n /** \n * The ID of the property related to the email or action.\n * @type {number}\n * @default 0\n */\n propertyRelatedToId: {\n type: Number,\n default: 0,\n },\n\n /** \n * A list of contact IDs to be used for the email or action.\n * @type {number[]}\n * @default [] (empty array)\n */\n contactList: {\n type: Array as PropType,\n default: () => [],\n },\n\n /** \n * A list of matched contacts for bulk email operations.\n * @type {MatchedContacts[]}\n * @default [] (empty array)\n */\n contactEnMasseList: {\n type: Array as PropType,\n default: () => [],\n },\n\n /** \n * The email object to be forwarded.\n * @type {CorrespondenceEmail}\n * @default {} (empty object)\n */\n emailToForward: {\n type: Object as PropType,\n default: () => ({}),\n },\n\n /** \n * The ID of the user performing the action.\n * @type {number}\n * @default 0\n */\n userId: {\n type: Number,\n default: 0,\n },\n\n /** \n * The ID of the email to be forwarded.\n * @type {number}\n * @default 0\n */\n emailToForwardId: {\n type: Number,\n default: 0,\n },\n\n /** \n * The selected email action (e.g., new, reply, forward).\n * @type {SelectedEmailAction}\n * @default SelectedEmailAction.New\n */\n actionSelected: {\n type: Number,\n default: SelectedEmailAction.New,\n },\n\n /** \n * The unique identifier for the certificate.\n * @type {number}\n * @default 0\n */\n certificateId: {\n type: Number,\n default: 0,\n },\n\n /** \n * A list of file IDs associated with the correspondence.\n * @type {number[]}\n * @default [] (empty array)\n */\n correspondenceFileIDs: {\n type: Array as PropType,\n default: () => [],\n },\n\n /** \n * Determines whether the \"Select Contacts\" tab should be displayed.\n * @type {boolean}\n * @default false\n */\n displaySelectContactsTab: {\n type: Boolean,\n default: false,\n },\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when the email has been sent.\n * This can be used to notify the parent component that the email has been sent.\n */\n 'emailSent',\n /** \n * Emitted when the modal is closed.\n * This can be used to notify the parent component that the modal has been dismissed.\n */\n 'modalClosed'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst keepingModalOpening = ref(false);\nconst currentUserStore = useCurrentUserStore();\nconst currentUser = ref();\nconst selectedTab = ref(EmailTab.Customise);\nconst openSelectCcContactModal = ref(false);\nconst updateCopyContacts = ref(false);\nconst copyToContactNames = ref('');\nconst blindCopyToContactsNames = ref('');\nconst copyToContactsNamesEmails = ref('');\nconst addMergeFieldToSubject = ref(true);\nconst clearLists = ref(false);\nconst showCloseConfirmationPrompt = ref(true);\nconst attachments = ref([]);\nconst azureEmailAddress = ref('');\nconst apiAttachmentsList = ref([]);\nconst originalCorrespondenceFileList = ref([])\n// The value of the ref is set when a file is double selected and downloaded.\nconst downloadedFile = ref();\n// We have the originalFilesIdsNames so that we can determine whether a file to be downloaded was fetched from the API and\n// therefore if we need to call the download API or just save the file using saveAs.\nconst originalFilesIdsNames = ref([]);\nconst resetFileField = ref(false);\nconst selectedContactId = ref(0);\nconst contactNamesEmails = ref([]);\nconst contactSummary = ref();\nconst userDetails = ref();\nconst emailSignature = ref();\nconst displayEditContactModal = ref(false);\nconst contactToEmail = ref();\nconst previouslyNavigatedThroughIds = ref([]);\nconst emailForm = ref({\n contactId: 0,\n templateId: 0,\n subject: '',\n body: '',\n propertyId: 0,\n workOrderId: 0,\n propertyOfferId: 0,\n certificateId: 0,\n tenancyId: 0,\n appointmentId: 0,\n cCs: [],\n bcCs: [],\n setAsHighPriority: false,\n requestReadReceipt: false,\n autoCcLinkedContacts: true,\n contactDocumentIds: []\n\n});\nconst openMergeFieldsModal = ref(false);\nconst emailTemplate = ref();\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst apiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst bodyMergeFieldToAdd = ref('');\nconst sendingOrSaving = ref(false);\nconst credits = ref(0);\nconst filesToSubmit = ref(new FormData());\nconst currentContactPosition = ref(1);\nconst toEditEmailId = ref(-1);\nconst copiedContactList = ref([]);\nconst systemConfigurationStore = useSystemConfigurationStore();\nconst propertyBulletinText = ref({\n body: '',\n noPropertiesFound: false\n});\nconst emailPreviewFields = ref({\n subject: \"\",\n body: \"\"\n});\nconst showPreviewTab = ref(true);\nconst propertyDetails = ref({ body: '' });\nconst newsLetterBody = ref({ body: '' });\nconst displayAIModal = ref(false);\nconst loading = ref(false);\n\nonMounted(async () => {\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n});\n\n// This retrieves and displays the data\nwatch(() => showModal.value, async () => {\n if (keepingModalOpening.value || !showModal.value) {\n clearLists.value = true;\n setTimeout(() => { clearLists.value = false }, 100)\n return;\n }\n\n loading.value = true;\n\n await resetEmailFormToDefaults();\n await fetchEmailTemplateData();\n await getEmailCredits();\n\n if (azureEmailAddress.value == '') {\n await fetchAzureEmailFromAddress();\n }\n\n cloneContactList();\n\n // So users can preview what properties are going to be sent, default property bulletin templates to the preview tab\n selectedTab.value = isMarketingHtmlEmailTemplate.value ? EmailTab.Preview : EmailTab.Customise;\n\n await moveDataToEmailForm();\n\n loading.value = false;\n\n // This must be called after the loading value has been reset. Otherwise the preview won't be generated\n await fetchPreviewSubjectBody();\n});\n\nconst resetEmailFormToDefaults = async () => {\n const autoCC = await systemConfigurationStore.getSystemConfigurationValue(SystemConfiguration.AutoCCLinkedContactsInBulkEmails);\n\n // If multiple contact have been passed down, we want the contact lookup up to be empty\n emailForm.value = {\n contactId: 0,\n templateId: 0,\n subject: '',\n body: '',\n propertyId: props.propertyRelatedToId,\n workOrderId: 0,\n propertyOfferId: 0,\n certificateId: props.certificateId,\n tenancyId: 0,\n appointmentId: 0,\n cCs: [],\n bcCs: [],\n setAsHighPriority: false,\n requestReadReceipt: false,\n autoCcLinkedContacts: Number(autoCC) ? true : false,\n contactDocumentIds: []\n };\n\n if (props.displaySelectContactsTab) {\n emailForm.value.contactId = props.contactEnMasseList.length > 1 ? 0 : props.contactEnMasseList[0].id;\n } else {\n emailForm.value.contactId = props.contactList.length > 1 ? 0 : props.contactList[0];\n }\n\n showPreviewTab.value = true;\n resetFileField.value = true;\n attachments.value = [];\n apiAttachmentsList.value = [];\n originalFilesIdsNames.value = [];\n filesToSubmit.value = new FormData();\n setTimeout(() => { resetFileField.value = false; }, 200);\n copyToContactsNamesEmails.value = '';\n copyToContactNames.value = '';\n blindCopyToContactsNames.value = '';\n showCloseConfirmationPrompt.value = true;\n addMergeFieldToSubject.value = true;\n selectedContactId.value = props.displaySelectContactsTab ? props.contactEnMasseList[0].id : props.contactList[0];\n contactNamesEmails.value = [];\n contactSummary.value = undefined;\n previouslyNavigatedThroughIds.value = [];\n copiedContactList.value = []\n};\n\nconst cloneContactList = () => {\n if (props.displaySelectContactsTab) {\n copiedContactList.value = props.contactEnMasseList.map((contact) => {\n return {\n id: contact.id,\n name: contact.name ?? '',\n email: contact.email ?? '',\n emailAlt: contact.emailAlt ?? '',\n include: true\n };\n });\n } else {\n copiedContactList.value = [];\n }\n};\n\nconst moveDataToEmailForm = async () => {\n emailForm.value.templateId = emailTemplate.value?.id ?? -1;\n emailForm.value.subject = emailTemplate.value?.subject ?? '';\n emailForm.value.cCs = emailTemplate.value?.cc ? [Number(emailTemplate.value.cc)] : [];\n emailForm.value.bcCs = emailTemplate.value?.bcc ? [Number(emailTemplate.value.bcc)] : [];\n\n if (emailTemplate.value && !isMarketingHtmlEmailTemplate.value) {\n await fetchEmailSignature();\n\n emailForm.value.body = emailSignature.value?.header != '' ? `${emailSignature.value?.header}

` : '';\n emailForm.value.body = emailForm.value.body + `${emailTemplate.value.body.replaceAll('&edsp;', '')}`;\n\n if (emailSignature.value?.body == '') {\n return;\n }\n\n emailForm.value.body = emailForm.value.body + `

${emailSignature.value?.body}`;\n }\n\n if (isMarketingHtmlEmailTemplate.value) {\n emailForm.value.body = emailTemplate.value ? `${emailTemplate.value.body.replaceAll('&edsp;', '')}` : '';\n }\n\n if (props.actionSelected == SelectedEmailAction.New) {\n await populateOriginalAttachmentsList();\n } else if (props.actionSelected != SelectedEmailAction.New) {\n await displayForwardedEmailAttachments();\n await fetchUserDetails();\n emailForm.value.subject = props.emailToForward.subject;\n const subjectInBody = props.emailToForward.subject.includes('Fw: ') ? props.emailToForward.subject.replace('FW: ', '') : props.emailToForward.subject.replace('RE: ', '');\n emailForm.value.body = `${emailTemplate.value?.body ?? ''}` + `${userDetails.value ? `

From: ${userDetails.value.firstNames} ${userDetails.value?.lastName}` : ''}` + \"
\" +\n `Date Sent: ${formatDate(props.emailToForward.addedDate, true)}` + \"
\" +\n `To: ${props.emailToForward.email}` + \"
\" +\n `Subject: ${subjectInBody}` + \"
\" + props.emailToForward.body + \"
\";\n }\n\n // When the modal is opened from the property page, multiple contacts can be provided.\n // When a contact is opened from a contact page, only one contact is provided\n await updatedNamesEmailList(props.displaySelectContactsTab ? props.contactEnMasseList[0].id : props.contactList[0]);\n}\n\nconst isMarketingHtmlEmailTemplate = computed(() => {\n if (!emailTemplate.value) {\n return false;\n }\n\n return emailTemplate.value.typeId == EmailTemplateTypes.PropertyBulletinAllProperties ||\n emailTemplate.value.typeId == EmailTemplateTypes.PropertyBulletinMatchedProperties ||\n emailTemplate.value.typeId == EmailTemplateTypes.PropertyDetails ||\n emailTemplate.value?.typeId == EmailTemplateTypes.NewsLetter\n});\n\n// Functions fetch data to be displayed\nconst updatedNamesEmailList = async (contactId: number) => {\n const summary = await fetchSendToContactData(contactId);\n\n if (summary) {\n contactNamesEmails.value.push(`${summary.name} - ${summary.emailAddress}`);\n }\n\n // This will probably have to change when we have an api for sending multiple emails\n if (props.contactList.length == 1 || props.contactEnMasseList.length == 1) {\n contactSummary.value = summary;\n }\n\n if (contactNamesEmails.value.length == 0 || !contactNamesEmails.value[currentContactPosition.value - 1].includes('@')) {\n await standardInfoAlert(`${summary?.name} has no email address and cannot be emailed.`)\n }\n};\n\nconst fetchSendToContactData = async (id: number) => {\n try {\n return await apiClient.httpGet(`app/contacts/${id}/summary`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n return undefined;\n }\n};\n\nconst fetchAzureEmailFromAddress = async () => {\n try {\n azureEmailAddress.value = await apiNextClient.httpGet('/Email/GetAzureEmailFromAddress');\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n azureEmailAddress.value = '';\n }\n};\n\nconst fetchUserDetails = async () => {\n try {\n userDetails.value = await apiClient.httpGet(`app/user/record/${props.userId}`);\n } catch (err) {\n userDetails.value = undefined;\n }\n};\n\nconst fetchEmailSignature = async () => {\n try {\n emailSignature.value = await apiNextClient.httpGet(`EmailSignatures/${emailTemplate.value?.emailSignatureId}`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n emailSignature.value = undefined;\n }\n};\n\nconst fetchEmailTemplateData = async () => {\n try {\n emailTemplate.value = await apiNextClient.httpGet(`EmailTemplates/${props.emailTemplateId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n emailTemplate.value = undefined;\n }\n};\n\nconst getEmailCredits = async () => {\n credits.value = await apiNextClient.httpGet('/Email/getemailcreditbalance');\n};\n\n// Functions for getting and displaying the appropriate files.\nconst populateOriginalAttachmentsList = async () => {\n sendingOrSaving.value = true;\n await fetchEmailAttachmentsList();\n\n // This is triggered when users are sending attachments from a correspondence list e.g. multiple attachments or a doc/docx as a PDF.\n if (props.correspondenceFileIDs.length > 0) {\n for (let i = 0; i < props.correspondenceFileIDs.length; i++) {\n const attachment: undefined | CorrespondenceFile = await fetchCorrespondenceFile(props.correspondenceFileIDs[i]);\n\n if (!attachment) {\n continue;\n }\n\n apiAttachmentsList.value.push({ id: props.correspondenceFileIDs[i], emailId: props.correspondenceFileIDs[i], attachedFile: attachment });\n }\n }\n await populateAttachmentsList(apiAttachmentsList.value);\n sendingOrSaving.value = false;\n};\n\nconst fetchEmailAttachmentsList = async () => {\n try {\n apiAttachmentsList.value = await apiNextClient.httpGet(`email/${props.emailTemplateId}/emailattachments`);\n } catch (err) {\n displayErrorMessage('Unable to retrieve attachments for the selected template. To resolve this please check the Email Template configuration. You are still able to send this email.');\n apiAttachmentsList.value = [];\n }\n};\n\nconst fetchCorrespondenceFile = async (fileId: number) => {\n try {\n return await apiNextClient.httpGet(`ContactDocument/${fileId}`);\n } catch (err) {\n displayErrorMessage('The correspondence file could not be fetched.');\n return;\n }\n};\n\nconst fetchForwardedEmailAttachmentsList = async (): Promise => {\n try {\n return await apiNextClient.httpGet(`email/${props.emailToForwardId}/contactemailattachments`);\n } catch (err) {\n displayErrorMessage('The attachments list could not be fetched.');\n return [];\n }\n};\n\nconst populateAttachmentsList = async (attachmentList: EmailTemplateFile[]) => {\n if (attachmentList.length == 0) {\n return;\n }\n\n attachmentList.forEach((file) => {\n if (!file.attachedFile) {\n return;\n }\n\n const fileName = getFileNameParts(file.attachedFile.fileDownloadName);\n\n if (!fileName) {\n displayErrorMessage(`${file.attachedFile.fileDownloadName} could not be attached as there is a problem with it's name. You are still able to send this email.`);\n return;\n }\n\n // When a user is sending a .docx file as a PDF from a correspondence list screen, we want the file displayed to the user in the file uploader component\n // so they can download it locally and view it but we don't want the file being uploaded to the bulk email attachments endpoint\n originalFilesIdsNames.value.push({ id: file.id, name: fileName.nameWithExtension });\n attachments.value.push(new File([file.attachedFile.fileContents], fileName.nameWithExtension, { type: file.attachedFile.contentType }));\n\n const correspondenceAttachment = props.correspondenceFileIDs.find((id) => { return id == file.id });\n if (correspondenceAttachment) {\n originalCorrespondenceFileList.value.push(new File([file.attachedFile.fileContents], fileName.nameWithExtension, { type: file.attachedFile.contentType }))\n }\n });\n};\n\nconst displayForwardedEmailAttachments = async () => {\n if (props.actionSelected == SelectedEmailAction.Reply) {\n return;\n }\n\n const list: EmailTemplateFile[] = await fetchForwardedEmailAttachmentsList();\n\n populateAttachmentsList(list);\n};\n\n\n// Code for saving data\nconst onSendClick = async (e: any) => {\n // We seem to have two checks for this now, will check next week if this one is actually still necessary, which I doubt\n // Currently, we are only checking if the first contact has given permission as we don't have\n // the API for sending multiple emails\n\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n selectedTab.value = EmailTab.Customise;\n return;\n }\n\n let emailFormsToSubmit: EmailForm[] = [];\n\n if (emailTemplate.value?.typeId == EmailTemplateTypes.PropertyBulletinAllProperties ||\n emailTemplate.value?.typeId == EmailTemplateTypes.PropertyBulletinMatchedProperties) {\n emailForm.value.body = propertyBulletinText.value.body;\n } else if (emailTemplate.value?.typeId == EmailTemplateTypes.PropertyDetails) {\n emailForm.value.body = propertyDetails.value.body;\n } else if (emailTemplate.value?.typeId == EmailTemplateTypes.NewsLetter) {\n emailForm.value.body = newsLetterBody.value.body;\n }\n\n // The selected correspondence list document needs to be sent as a PDF\n if (props.correspondenceFileIDs.length > 0) {\n emailForm.value.contactDocumentIds = [...props.correspondenceFileIDs];\n }\n\n if (props.displaySelectContactsTab) {\n copiedContactList.value.forEach((contact) => {\n if (!contact.include) {\n return;\n }\n\n emailFormsToSubmit.push({\n contactId: contact.id,\n templateId: props.emailTemplateId,\n subject: emailForm.value.subject,\n body: emailForm.value.body,\n propertyId: props.propertyRelatedToId,\n workOrderId: emailForm.value.workOrderId,\n propertyOfferId: emailForm.value.propertyId,\n certificateId: props.certificateId,\n tenancyId: emailForm.value.tenancyId,\n appointmentId: emailForm.value.appointmentId,\n cCs: emailForm.value.cCs,\n bcCs: emailForm.value.bcCs,\n setAsHighPriority: emailForm.value.setAsHighPriority,\n requestReadReceipt: emailForm.value.requestReadReceipt,\n autoCcLinkedContacts: emailForm.value.autoCcLinkedContacts,\n contactDocumentIds: emailForm.value.contactDocumentIds\n })\n });\n } else {\n props.contactList.forEach((contact) => {\n emailFormsToSubmit.push({\n contactId: contact,\n templateId: props.emailTemplateId,\n subject: emailForm.value.subject,\n body: emailForm.value.body,\n propertyId: props.propertyRelatedToId,\n workOrderId: emailForm.value.workOrderId,\n propertyOfferId: emailForm.value.propertyId,\n certificateId: props.certificateId,\n tenancyId: emailForm.value.tenancyId,\n appointmentId: emailForm.value.appointmentId,\n cCs: emailForm.value.cCs,\n bcCs: emailForm.value.bcCs,\n setAsHighPriority: emailForm.value.setAsHighPriority,\n requestReadReceipt: emailForm.value.requestReadReceipt,\n autoCcLinkedContacts: emailForm.value.autoCcLinkedContacts,\n contactDocumentIds: emailForm.value.contactDocumentIds\n })\n });\n }\n\n if (await sendEmail(emailFormsToSubmit)) {\n showCloseConfirmationPrompt.value = false;\n showModal.value = false;\n emit('emailSent');\n emit('modalClosed');\n }\n};\n\nconst sendEmail = async (emailFormsToSubmit: EmailForm[]) => {\n try {\n sendingOrSaving.value = true;\n\n const response = await apiNextClient.httpPost('bulkemail/AddBulkEmails', emailFormsToSubmit);\n\n await uploadAttachments(response.id);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n } finally {\n sendingOrSaving.value = false;\n }\n};\n\n// Code for uploading files\nconst uploadAttachments = async (emailId: number) => {\n if (!attachments.value || attachments.value.length == 0) {\n return;\n }\n\n if (await populateFilesList()) {\n await callAttachmentsApi(emailId);\n }\n};\n\nconst populateFilesList = async () => {\n let bulkEmailAttachment = 0;\n attachments.value?.forEach((file) => {\n const correspondencAttachment = originalCorrespondenceFileList.value.find((originalCorrespondenceAttachment) => { return originalCorrespondenceAttachment.name == file.name });\n if (!correspondencAttachment) {\n filesToSubmit.value.append(file.name, file);\n bulkEmailAttachment++;\n }\n });\n return bulkEmailAttachment;\n};\n\nconst callAttachmentsApi = async (emailId: number) => {\n try {\n await apiNextClient.sendFormData(`bulkemail/${emailId}/UploadBulkEmailAttachments`, filesToSubmit.value);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\n\n// This next section is for functions triggered by user interactions with the modal.\n\n// These are trigegered when users add contacts to the CC and BCC fields \nconst selectBlindCopyToContacts = () => {\n if (props.contactList.length > 1 || props.contactEnMasseList.length > 1) {\n return;\n }\n\n updateCopyContacts.value = false;\n openSelectCcContactModal.value = true;\n};\n\nconst selectCopyToContacts = () => {\n if (props.contactList.length > 1 || props.contactEnMasseList.length > 1) {\n return;\n }\n\n updateCopyContacts.value = true;\n openSelectCcContactModal.value = true;\n};\n\nconst updateCopyToContacts = (contacts: string, namesEmails: string, copyToContactIds: number[]) => {\n copyToContactNames.value = contacts;\n emailForm.value.cCs = copyToContactIds;\n copyToContactsNamesEmails.value = namesEmails;\n};\n\nconst updateBlindCopyToContacts = (contacts: string, blindCopyToContactsIds: number[]) => {\n emailForm.value.bcCs = blindCopyToContactsIds;\n blindCopyToContactsNames.value = contacts;\n};\n\n// When the values of these fields change, we need to update the preview email body and subject displayed in the preview tab.\nwatch(() => emailForm.value.subject, async () => {\n await fetchPreviewSubjectBody();\n});\n\nwatch(() => emailForm.value.body, async () => {\n await fetchPreviewSubjectBody();\n});\n\nwatch(() => emailForm.value.propertyId, async () => {\n await fetchPreviewSubjectBody();\n});\n\nconst fetchPreviewSubjectBody = async () => {\n if (loading.value) {\n return;\n }\n\n await fetchAndDisplayDetailsBulletinNewsLetter();\n\n try {\n emailPreviewFields.value = await apiClient.httpPost(`app/correspondence/email/preview/mergefields`, {\n subject: emailForm.value.subject,\n body: emailForm.value.body,\n contactId: selectedContactId.value,\n propertyId: emailForm.value.propertyId,\n propertyOfferId: emailForm.value.propertyOfferId,\n appointmentId: emailForm.value.appointmentId,\n workOrderId: emailForm.value.workOrderId,\n certificateId: emailForm.value.certificateId,\n tenancyId: emailForm.value.tenancyId\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n emailPreviewFields.value = {\n subject: \"\",\n body: \"\"\n };\n }\n};\n\nconst fetchNewsLetterPreviewBody = async () => {\n try {\n newsLetterBody.value = await apiClient.httpPost('app/correspondence/email/newsletter', {\n templateId: props.emailTemplateId,\n body: emailForm.value.body\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return { body: '' };\n }\n};\n\nconst fetchAndDisplayDetailsBulletinNewsLetter = async () => {\n if (emailTemplate.value?.typeId == EmailTemplateTypes.PropertyBulletinAllProperties || emailTemplate.value?.typeId == EmailTemplateTypes.PropertyBulletinMatchedProperties) {\n await fetchPropertyBulletinText();\n emailPreviewFields.value.body = propertyBulletinText.value.body;\n } else if (emailTemplate.value?.typeId == EmailTemplateTypes.PropertyDetails && emailForm.value.propertyId > 0) {\n await fetchPropertyDetails();\n emailPreviewFields.value.body = propertyDetails.value.body;\n } else if (emailTemplate.value?.typeId == EmailTemplateTypes.NewsLetter) {\n await fetchNewsLetterPreviewBody();\n emailPreviewFields.value.body = newsLetterBody.value.body;\n }\n\n var divToInsertHTMLInto = document.getElementById('preview-body');\n\n if (divToInsertHTMLInto) {\n divToInsertHTMLInto.innerHTML = emailPreviewFields.value.body;\n }\n};\n\nconst fetchPropertyDetails = async () => {\n try {\n propertyDetails.value = await apiClient.httpPost('app/correspondence/email/propertydetails', {\n templateId: props.emailTemplateId,\n propertyId: emailForm.value.propertyId,\n body: emailForm.value.body\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n propertyDetails.value = { body: '' }\n }\n};\n\nconst fetchPropertyBulletinText = async () => {\n try {\n propertyBulletinText.value = await apiClient.httpPost(`app/correspondence/email/propertybulletin`, {\n contactId: selectedContactId.value,\n templateId: props.emailTemplateId,\n includeValuations: true,\n includeInstructed: true,\n body: emailForm.value.body\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n propertyBulletinText.value = { body: '', noPropertiesFound: false };\n }\n};\n\n// Code for adding merge fields\nconst addMergeField = (mergeField: String) => {\n if (addMergeFieldToSubject.value) {\n emailForm.value.subject = `${emailForm.value.subject} [${mergeField}]`;\n return;\n }\n\n bodyMergeFieldToAdd.value = `[${mergeField}]`;\n\n setTimeout(() => { bodyMergeFieldToAdd.value = '' }, 250)\n};\n\nconst onInsertField = () => {\n openMergeFieldsModal.value = true\n};\n\nconst onHtmlEditorFocused = () => {\n addMergeFieldToSubject.value = false;\n};\n\nconst onSubjectFieldFocused = () => {\n addMergeFieldToSubject.value = true;\n};\n\n// We need to add the selected contact's name and email address so we can display it in the preview tab at the appropriate time (when a user navighates to the contact). \nconst contactToSendToSelected = (selectedContact: ContactFindResult) => {\n if (!selectedContact) {\n return;\n }\n\n contactNamesEmails.value.push(`${selectedContact.name} ${selectedContact.emailAddress}`);\n};\n\n// Triggered when a user adds or removes an attachment from the\nconst onAttachmentsChanged = (e: File[]) => {\n attachments.value = [...e];\n};\n\n// Double clicking a file should download it.\n// First, we must check if the file to be downloaded is present in the original list of files fetched from the API.\n// If it's present we can use the API to downloard the file so that we can get the correct file extension, otherwise,\n// we just use the saveAs method. \nconst downloadAttachment = async (fileToDownload: File) => {\n const fileNameId = originalFilesIdsNames.value.find((record) => { return record.name == fileToDownload.name });\n\n // If we are emailing a correspondence list item or if we've jsut attached a document, we can't make the API call below as it'll fail - it's fetching the email template attachments.\n\n const correspondenceAttachment = props.correspondenceFileIDs.find((id) => { return id == fileNameId?.id });\n if (!fileNameId || correspondenceAttachment) {\n saveAs(fileToDownload, fileToDownload.name);\n return;\n }\n\n await callDownloadApi(fileNameId.id);\n\n if (!downloadedFile.value) {\n return;\n }\n\n const blobToDownload = convertCorrespondenceFileToBlob(downloadedFile.value.attachedFile);\n const fileNameParts = getFileNameParts(downloadedFile.value.attachedFile.fileDownloadName);\n\n if (fileNameParts) {\n saveAs(blobToDownload, fileNameParts.nameWithExtension);\n }\n};\n\nconst callDownloadApi = async (id: number) => {\n try {\n downloadedFile.value = await apiNextClient.httpGet(`email/${id}/emailattachment`)\n } catch (err) {\n displayErrorMessage('The attachment could not be downloaded.');\n downloadedFile.value = undefined;\n }\n};\n\n// Functions for when users navigate through contacts on the preview tab\n// The preview body must be updated whenever the displayed contact is changed\nwatch(() => selectedContactId.value, async () => {\n let foundIndex = 0;\n\n if (props.displaySelectContactsTab) {\n foundIndex = props.contactEnMasseList.findIndex((contact) => { return contact.id == selectedContactId.value });\n } else {\n foundIndex = props.contactList.findIndex((contact) => { return contact == selectedContactId.value });\n }\n\n currentContactPosition.value = foundIndex ? foundIndex + 1 : 1;\n\n fetchPreviewSubjectBody();\n});\n\nconst displayPreviousContact = () => {\n if (currentContactPosition.value == 1) {\n return;\n }\n\n selectedContactId.value = props.displaySelectContactsTab ? props.contactEnMasseList[currentContactPosition.value - 2].id : props.contactList[currentContactPosition.value - 2];\n};\n\nconst displayNextContact = () => {\n if ((!props.displaySelectContactsTab && currentContactPosition.value == props.contactList.length) || (props.displaySelectContactsTab && currentContactPosition.value == props.contactEnMasseList.length)) {\n return;\n }\n\n selectedContactId.value = props.displaySelectContactsTab ? props.contactEnMasseList[currentContactPosition.value].id : props.contactList[currentContactPosition.value];\n\n // We don't want to update the list with the same contact info twice or more often\n if (!previouslyNavigatedThroughIds.value.find((id) => { return id == selectedContactId.value })) {\n updatedNamesEmailList(selectedContactId.value);\n previouslyNavigatedThroughIds.value.push(selectedContactId.value);\n }\n};\n\n// Match contacts tab - functions relate to the editing of contact data\n\nconst editMatchedContactEmail = async (contact: MatchedContacts) => {\n if (!await lockContact(contact.id)) {\n return;\n }\n\n await fetchMainData(contact.id);\n\n if (contactToEmail.value) {\n displayEditContactModal.value = true;\n toEditEmailId.value = contact.id;\n }\n};\n\nconst editContactModalClosed = (contactUpdated: boolean, contact: Contacts) => {\n unLockContact();\n\n // Here we need to update the list with the correct email for the updated contact\n if (contact) {\n const index = copiedContactList.value.findIndex((matchedContact) => {\n return matchedContact.id == contact.id;\n });\n\n copiedContactList.value[index].email = contact.email;\n\n // The email displayed in the preview tab must also be updated\n if (contactNamesEmails.value.length >= index + 1) {\n contactNamesEmails.value[index] = `${contact.firstNames} ${contact.lastName} - ${contact.email}, ${contact.emailAlt}`;\n }\n }\n\n // We must reset these to ensure that the selected contact's are displayed in the edit modal\n contactToEmail.value = undefined;\n toEditEmailId.value = -1;\n};\n\nconst fetchMainData = async (contactId: number) => {\n try {\n contactToEmail.value = await apiClient.httpGet(`database/contacts/${contactId}`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n contactToEmail.value = undefined;\n }\n};\n\n// Locking fucntions\nconst lockContact = async (contactId: number) => {\n try {\n await apiClient.httpPostVoid(`database/contacts/${contactId}/lock`, {\n lock: true,\n extraInfo: ''\n });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst unLockContact = async () => {\n try {\n await apiClient.httpPostVoid(`database/contacts/${toEditEmailId.value}/lock`, {\n lock: false,\n extraInfo: ''\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\n// This function handles users confirming they wish to keep the modal open.\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\n/** Closes the task modal */\nconst modalClosed = () => {\n showPreviewTab.value = false;\n keepingModalOpening.value = false;\n emit('modalClosed');\n};\n\nconst onCancelClick = () => {\n emit('modalClosed');\n showModal.value = false;\n};\n\n// If we are displaying a list of matched contacts, we don't need a 'To' field value\nconst toFieldRequierd = computed(() => { return props.displaySelectContactsTab ? props.contactEnMasseList.length == 1 : props.contactList.length == 1 });\n\nconst sendButtonDisabled = computed(() => {\n var result = sendingOrSaving.value || credits.value <= 0 || contactNamesEmails.value.length == 0 || currentContactPosition.value == 0 ||\n (contactNamesEmails.value[currentContactPosition.value - 1] && !contactNamesEmails.value[currentContactPosition.value - 1].includes('@') ||\n (emailTemplate.value?.typeId == EmailTemplateTypes.PropertyBulletinAllProperties ||\n emailTemplate.value?.typeId == EmailTemplateTypes.PropertyBulletinMatchedProperties && propertyBulletinText.value.noPropertiesFound\n )\n ) || emailTemplate.value?.typeId == EmailTemplateTypes.PropertyDetails && emailForm.value.propertyId == 0;\n return result;\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((showModal).value = $event)),\n title: \"Email\",\n height: \"835px\",\n width: _unref(ModalWidth).Large,\n showCloseConfirmationPrompt: showCloseConfirmationPrompt.value,\n saving: sendingOrSaving.value,\n maxHeight: \"90vh\",\n customCloseConfirmationText: \"Are you sure you want to close this email without sending?\",\n onCancelPromptDenied: cancelPromptDenied,\n onModalClosed: modalClosed,\n \"help-page\": \"emailing\",\n \"loading-content\": loading.value\n }, {\n content: _withCtx(() => [\n _createVNode(_unref(DxTabPanel), {\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[9] || (_cache[9] = ($event: any) => ((selectedTab).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"Customise\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(AcquaintInfoBox, {\n text: credits.value.toString(),\n label: \"Credits\",\n width: _unref(FieldSize).Small\n }, null, 8, [\"text\", \"width\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ContactLookup, {\n modelValue: emailForm.value.contactId,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((emailForm.value.contactId) = $event)),\n label: \"To\",\n validationGroup: \"emailFormGroup\",\n readOnly: props.contactList.length > 0 || props.contactEnMasseList.length > 0,\n onContactSelected: contactToSendToSelected,\n isRequired: toFieldRequierd.value,\n showNavigateContactIcon: false,\n findNameOnIdChange: true\n }, null, 8, [\"modelValue\", \"readOnly\", \"isRequired\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(AcquaintInfoBox, {\n label: \"From\",\n text: azureEmailAddress.value\n }, null, 8, [\"text\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(AcquaintInfoBox, {\n label: \"Copy To (CC)\",\n text: copyToContactNames.value,\n icon: \"spindown\",\n onIconClicked: selectCopyToContacts\n }, null, 8, [\"text\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(AcquaintInfoBox, {\n label: \"Blind Copy (BCC)\",\n text: blindCopyToContactsNames.value,\n icon: \"spindown\",\n onIconClicked: selectBlindCopyToContacts\n }, null, 8, [\"text\"])\n ])\n ]),\n _createVNode(AcquaintTextbox, {\n label: \"Subject\",\n modelValue: emailForm.value.subject,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((emailForm.value.subject) = $event)),\n requiredInput: true,\n fieldValidation: _unref(EmailsValidation).Subject,\n onOnFocused: onSubjectFieldFocused,\n validationGroup: \"emailFormGroup\"\n }, null, 8, [\"modelValue\", \"fieldValidation\"]),\n _createVNode(HtmlEditor, {\n modelValue: emailForm.value.body,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((emailForm.value.body) = $event)),\n label: \"Body\",\n \"display-a-i-modal\": true,\n insertTextAtCursorPosition: bodyMergeFieldToAdd.value,\n onOnFocused: onHtmlEditorFocused,\n onAiIconClick: _cache[3] || (_cache[3] = () => displayAIModal.value = true)\n }, null, 8, [\"modelValue\", \"insertTextAtCursorPosition\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Settings\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(PropertyLookup, {\n modelValue: emailForm.value.propertyId,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((emailForm.value.propertyId) = $event)),\n label: \"Property Related\",\n required: emailTemplate.value?.typeId == _unref(EmailTemplateTypes).PropertyDetails,\n validationGroup: \"emailFormGroup\"\n }, null, 8, [\"modelValue\", \"required\"]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(SwitchToggle, {\n label: \"Request Read Receipt\",\n labelWidth: \"9.5rem\",\n modelValue: emailForm.value.requestReadReceipt,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((emailForm.value.requestReadReceipt) = $event)),\n \"read-only\": false\n }, null, 8, [\"modelValue\"]),\n _createVNode(SwitchToggle, {\n label: \"Set as High Importance\",\n labelWidth: \"9.5rem\",\n modelValue: emailForm.value.setAsHighPriority,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((emailForm.value.setAsHighPriority) = $event)),\n \"read-only\": false\n }, null, 8, [\"modelValue\"]),\n _createVNode(SwitchToggle, {\n label: \"Auto CC Linked Contacts\",\n labelWidth: \"9.5rem\",\n modelValue: emailForm.value.autoCcLinkedContacts,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((emailForm.value.autoCcLinkedContacts) = $event)),\n \"read-only\": false\n }, null, 8, [\"modelValue\"])\n ])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Attachments\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(FileUpload, {\n onFilesChanged: onAttachmentsChanged,\n reset: resetFileField.value,\n defaultFiles: attachments.value,\n onFileDoubleClicked: downloadAttachment\n }, null, 8, [\"reset\", \"defaultFiles\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), {\n title: \"Preview\",\n visible: showPreviewTab.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(AcquaintInfoBox, {\n text: credits.value.toString(),\n label: \"Credits\",\n width: _unref(FieldSize).Small\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n label: \"To\",\n text: contactNamesEmails.value[currentContactPosition.value - 1]\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n label: \"Copy To (CC)\",\n text: copyToContactsNamesEmails.value\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n label: \"Subject\",\n text: emailPreviewFields.value.subject\n }, null, 8, [\"text\"]),\n (isMarketingHtmlEmailTemplate.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(ScrollView, null, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ])\n ]))\n : (_openBlock(), _createBlock(HtmlEditor, {\n key: 1,\n label: \"Message Body\",\n modelValue: emailPreviewFields.value.body,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((emailPreviewFields.value.body) = $event)),\n \"read-only\": true\n }, null, 8, [\"modelValue\"])),\n (props.contactList.length > 0 || props.contactEnMasseList.length > 0)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"i\", {\n class: \"fas fa-chevron-left\",\n onClick: displayPreviousContact\n }),\n _createElementVNode(\"span\", null, _toDisplayString(currentContactPosition.value) + \"/\" + _toDisplayString(props.displaySelectContactsTab ?\n props.contactEnMasseList.length : props.contactList.length), 1),\n _createElementVNode(\"i\", {\n class: \"fas fa-chevron-right\",\n onClick: displayNextContact\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(DxItem), {\n title: \"Selected Contacts\",\n visible: props.displaySelectContactsTab,\n height: \"700px\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_18, [\n _createVNode(GridBase, {\n \"data-source\": copiedContactList.value,\n wordWrapEnabled: true,\n customColumnSlots: ['emailCell', 'includeCell'],\n displayPages: true\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"Id\",\n visible: false\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"name\",\n caption: \"Name\",\n \"hiding-priority\": 6,\n width: \"350px\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"email\",\n caption: \"Email\",\n \"hiding-priority\": 5,\n \"cell-template\": \"emailCell\",\n width: \"475px\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"include\",\n caption: \"Include\",\n \"hiding-priority\": 5,\n \"cell-template\": \"includeCell\"\n })\n ]),\n emailCellData: _withCtx(({ data }) => [\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(data.email), 1),\n _createElementVNode(\"i\", {\n class: \"fas fa-pencil-alt\",\n onClick: ($event: any) => (editMatchedContactEmail(data))\n }, null, 8, _hoisted_21)\n ])\n ]),\n includeCellData: _withCtx(({ data }) => [\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(SwitchToggle, {\n label: \"\",\n labelWidth: \"0rem\",\n modelValue: data.include,\n \"onUpdate:modelValue\": ($event: any) => ((data.include) = $event),\n \"read-only\": false\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ])\n ]),\n _: 1\n }, 8, [\"data-source\"])\n ])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }, 8, [\"selectedIndex\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"before\",\n options: { text: 'Insert Field', onClick: () => { onInsertField() }, disabled: sendingOrSaving.value, visible: selectedTab.value == 0 }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Send', onClick: (e) => { onSendClick(e) }, disabled: sendButtonDisabled.value, validationGroup: 'emailFormGroup' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() }, disabled: sendingOrSaving.value }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"showCloseConfirmationPrompt\", \"saving\", \"loading-content\"]),\n _createVNode(AITextGeneratorModal, {\n modelValue: displayAIModal.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((displayAIModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(SelectCcContactsModal, {\n modelValue: openSelectCcContactModal.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((openSelectCcContactModal).value = $event)),\n onSaveCopyToContacts: updateCopyToContacts,\n isPrimaryContact: contactSummary.value?.isPrimaryContact ?? false,\n onSaveBlindCopyToContacts: updateBlindCopyToContacts,\n copyTo: updateCopyContacts.value,\n clearLists: clearLists.value,\n contactId: selectedContactId.value\n }, null, 8, [\"modelValue\", \"isPrimaryContact\", \"copyTo\", \"clearLists\", \"contactId\"]),\n _createVNode(MergeFieldsModal, {\n modelValue: openMergeFieldsModal.value,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((openMergeFieldsModal).value = $event)),\n onAddMergeField: addMergeField\n }, null, 8, [\"modelValue\"]),\n (contactToEmail.value)\n ? (_openBlock(), _createBlock(EditContactDetails, {\n key: 0,\n modelValue: displayEditContactModal.value,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((displayEditContactModal).value = $event)),\n showAddressField: false,\n onModalClosed: editContactModalClosed,\n contact: contactToEmail.value\n }, null, 8, [\"modelValue\", \"contact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./email-form-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./email-form-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./email-form-modal.vue?vue&type=style&index=0&id=1af5fd7e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1af5fd7e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b7152414\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"panel\" }\nconst _hoisted_2 = { class: \"panel\" }\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { EmailSignaturesValidation } from 'acquaint-api/validation/EmailSignaturesValidation';\nimport { EmailSignatures } from 'acquaint-api/models/EmailSignatures';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport HtmlEditor from '../html-editor/html-editor.vue';\nimport MergeFieldsModal from '../contacts/merge-fields-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-edit-email-signatures-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the template.\n * @type {number}\n * @required\n */\n configurationId: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when an existing template configuration has been successfully edited.\n * This notifies the parent component to refresh or update the template configuration details.\n * @property {boolean} inActive - Indicates whether the template configuration is inactive after the edit.\n */\n 'configurationItemEdited',\n /** \n * Emitted when a new template configuration has been successfully created.\n * This notifies the parent component to handle the creation of a new template configuration.\n */\n 'configurationItemCreated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst itemData = ref();\nconst lockedByAnotherUser = ref(false)\nconst keepingModalOpening = ref(false);\nconst submissionResponse = ref();\nconst selectedTab = ref(0);\nconst openMergeFieldsModal = ref(false);\nconst footerMergeFieldToAdd = ref('');\nconst headerMergeFieldToAdd = ref('');\n\nconst lockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/emailsignatures/${props.configurationId}/lock`, { lock: true, extraInfo: '' });\n } catch (err) {\n lockedByAnotherUser.value = true;\n displayErrorMessage('These details are already being edited by another user.');\n }\n};\n\nconst unLockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/emailsignatures/${props.configurationId}/lock`, { lock: false, extraInfo: '' });\n } catch (err) {\n displayErrorMessage('We were unable to unlock these details.');\n }\n};\n\nconst fetchItemData = async () => {\n try {\n if (props.configurationId == 0) {\n itemData.value = await acquaintApiClient.httpGet(`database/emailsignatures/defaultmodel`);\n } else {\n itemData.value = await acquaintApiNextClient.httpGet(`EmailSignatures/${props.configurationId}`);\n }\n } catch (err) {\n itemData.value = undefined;\n if (props.configurationId == 0) {\n displayErrorMessage('The selected details could not be fetched');\n } else {\n displayErrorMessage('We could not fetch the default data');\n }\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (keepingModalOpening.value) {\n return\n }\n\n if (showModal.value) {\n lockedByAnotherUser.value = false;\n selectedTab.value = 0;\n\n await fetchItemData();\n\n if (props.configurationId == 0) {\n return;\n }\n\n await lockConfigurationItem();\n }\n});\n\nconst saveDetails = async (e: any) => {\n const validation: ValidatedEvent = e.validationGroup.validate();\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (!await callSaveApi()) {\n return;\n }\n\n lockedByAnotherUser.value = true;\n\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n emit('configurationItemEdited', itemData.value?.inactive);\n } else {\n emit('configurationItemCreated');\n }\n\n showModal.value = false;\n};\n\nconst callSaveApi = async () => {\n try {\n if (props.configurationId == 0) {\n submissionResponse.value = await acquaintApiClient.httpPost(`database/emailsignatures`, itemData.value);\n } else {\n submissionResponse.value = await acquaintApiClient.httpPut(`database/emailsignatures/${props.configurationId}`, itemData.value);\n }\n return true;\n } catch (err) {\n if (props.configurationId == 0) {\n displayErrorMessage('A new system item could not be created.');\n } else {\n displayErrorMessage('The selected details could not be edited.');\n }\n return false;\n }\n}\nconst cancelClick = () => {\n showModal.value = false;\n};\n\nconst keepEnteredInformation = () => {\n keepingModalOpening.value = true;\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst modalClosed = async () => {\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n }\n keepingModalOpening.value = false;\n};\n\nconst insertField = () => {\n openMergeFieldsModal.value = true\n};\n\nconst addMergeField = (mergeField: String) => {\n if (!itemData.value) {\n return;\n }\n\n if (selectedTab.value == 0) {\n footerMergeFieldToAdd.value = `[${mergeField}]`;\n setTimeout(() => { footerMergeFieldToAdd.value = '' }, 250);\n } else {\n headerMergeFieldToAdd.value = `[${mergeField}]`;\n setTimeout(() => { headerMergeFieldToAdd.value = '' }, 250);\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"Email Signatures\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n showCloseConfirmationPrompt: !lockedByAnotherUser.value,\n height: \"650px\",\n onCancelConfirmationModal: keepEnteredInformation,\n onModalClosed: modalClosed,\n width: _unref(ModalWidth).Small,\n onCancelPromptDenied: cancelPromptDenied\n }, {\n content: _withCtx(() => [\n (itemData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[4] || (_cache[4] = ($event: any) => ((selectedTab).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"Footer\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(EmailSignaturesValidation).Description,\n label: \"Description\",\n modelValue: itemData.value.description,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((itemData.value.description) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailSignaturesValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Inactive\",\n modelValue: itemData.value.inactive,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((itemData.value.inactive) = $event)),\n readOnly: lockedByAnotherUser.value\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(HtmlEditor, {\n label: \"Footer\",\n modelValue: itemData.value.body,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((itemData.value.body) = $event)),\n readOnly: lockedByAnotherUser.value,\n insertTextAtCursorPosition: footerMergeFieldToAdd.value\n }, null, 8, [\"modelValue\", \"readOnly\", \"insertTextAtCursorPosition\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Header\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(HtmlEditor, {\n label: \"Header\",\n modelValue: itemData.value.header,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((itemData.value.header) = $event)),\n readOnly: lockedByAnotherUser.value,\n insertTextAtCursorPosition: headerMergeFieldToAdd.value\n }, null, 8, [\"modelValue\", \"readOnly\", \"insertTextAtCursorPosition\"])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\"]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"before\",\n options: { text: 'Insert Field', onClick: () => { insertField() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: lockedByAnotherUser.value, onClick: (e) => { saveDetails(e) }, validationGroup: 'EmailSignaturesValidationGroup' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\", \"width\"]),\n _createVNode(MergeFieldsModal, {\n modelValue: openMergeFieldsModal.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((openMergeFieldsModal).value = $event)),\n onAddMergeField: addMergeField\n }, null, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","import script from \"./new-edit-email-signatures-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-edit-email-signatures-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./new-edit-email-signatures-modal.vue?vue&type=style&index=0&id=b7152414&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b7152414\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-42a6d4d6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toggle-container\" }\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { DxToolbarItem } from 'devextreme-vue/popup'\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport NewEditEmailSignaturesModal from './new-edit-email-signatures-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'email-signatures-configuration-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * Determines whether the modal will be displayed in Configuration Screen or not.\n * @type {boolean}\n * @default false\n */\n displayedInConfigurationScreen: {\n type: Boolean,\n default: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when a signature object is selected. \n * @property {IDDescriptionPair} selectedConfigurationItem - The object of the selected signature.\n */\n 'signatureSelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst userPermissionsStore = useUserPermissionsStore();\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst emailSignaturesList = ref([]);\nconst showInactiveItems = ref(false);\nconst userPermissions = ref();\nconst editNewModalId = ref(0);\nconst selectedConfigurationItem = ref({ id: 0, description: '' });\nconst displayEditNewModal = ref(false);\n\nconst disableEdit = computed(() => { return selectedConfigurationItem.value.id == 0 });\n\nconst showInactive = ref(0);\n\nconst fetchConfigurationList = async () => {\n try {\n emailSignaturesList.value = await acquaintApiClient.httpGet\n (`app/system/lookup/${LookupTableSource.EmailSignatures}?includeinactive=${showInactiveItems.value}`);\n } catch (err) {\n displayErrorMessage('The selected details could not be fetched');\n emailSignaturesList.value = [];\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (showModal.value) {\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n fetchConfigurationList();\n }\n});\n\nconst configurationItemSelected = (e: any) => {\n if (!e) {\n return\n }\n selectedConfigurationItem.value = e;\n};\n\nconst configurationItemDoubleClicked = (e: any) => {\n if (!e) {\n return\n }\n\n if (!props.displayedInConfigurationScreen) {\n showModal.value = false;\n emit('signatureSelected', e)\n return;\n }\n\n selectedConfigurationItem.value = e;\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n};\n\nconst openEditModal = () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.edit) {\n displayErrorMessage(\"Sorry, you do not have the permission to edit these details.\");\n return;\n }\n\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n};\n\nconst openNewModal = () => {\n\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.new) {\n displayErrorMessage(\"Sorry, you do not have the permission to create a new system item.\");\n\n return;\n }\n\n editNewModalId.value = 0;\n displayEditNewModal.value = true;\n};\n\nconst deleteConfigurationItem = async () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.delete) {\n displayErrorMessage(\"Sorry, you do not have the permission to delete these details.\");\n return;\n }\n\n if (selectedConfigurationItem.value.id < 1000) {\n displayErrorMessage(\"Sorry, you can't delete this system item as it is required by Acquaint. However you may edit it, and set it as Inactive to remove it from this list.\")\n }\n\n const question = await displayQuestionAlert('Are you sure you want to delete these details?');\n\n if (!question.isConfirmed) {\n return;\n }\n\n if (await callDeletApi()) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n }\n};\n\nconst callDeletApi = async () => {\n try {\n await acquaintApiClient.httpDeleteVoid(`database/emailsignatures/${selectedConfigurationItem.value.id}`);\n return true;\n } catch (err) {\n displayErrorMessage(\"Sorry, these details cannot be deleted as they are referenced elsewhere.\");\n return false;\n }\n};\n\nconst inactiveToggleValueChange = async () => {\n showInactiveItems.value = showInactive.value ? true : false;\n await fetchConfigurationList();\n\n if (showInactive.value) {\n return;\n }\n\n const findInactiveItem = emailSignaturesList.value?.find((item) => { return item.id == selectedConfigurationItem.value.id });\n\n if (!findInactiveItem) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n};\n\nconst newItemCreated = () => {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n};\n\nconst editItem = (inActive: number) => {\n if (inActive && !showInactiveItems.value) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n\n fetchConfigurationList();\n};\n\nconst onSelectButtonClick = () => {\n emit('signatureSelected', selectedConfigurationItem.value);\n showModal.value = false;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"Email Signatures\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n \"show-close-button\": true,\n height: \"460px\"\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createVNode(GridBase, {\n dataSource: emailSignaturesList.value,\n onRowClick: configurationItemDoubleClicked,\n onRowSelected: configurationItemSelected,\n onAdaptiveRowSelection: configurationItemSelected,\n \"id-column-name\": \"id\",\n showColumnHeaders: false,\n \"pre-selected-id\": selectedConfigurationItem.value.id\n }, {\n \"header-content\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(SwitchToggle, {\n label: \"Show Inactive\",\n modelValue: showInactive.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showInactive).value = $event)),\n readOnly: false,\n onOnVaueChange: inactiveToggleValueChange,\n \"margin-bottom\": \"0rem\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"\",\n \"hiding-priority\": 8,\n width: \"100%\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"Id\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"dataSource\", \"pre-selected-id\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Select', visible: !props.displayedInConfigurationScreen, disabled: disableEdit.value, onClick: () => { onSelectButtonClick() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Delete', disabled: disableEdit.value, onClick: () => { deleteConfigurationItem() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Edit', disabled: disableEdit.value, onClick: () => { openEditModal() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'New', onClick: () => { openNewModal() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { showModal.value = false } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(NewEditEmailSignaturesModal, {\n modelValue: displayEditNewModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((displayEditNewModal).value = $event)),\n configurationId: editNewModalId.value,\n onConfigurationItemCreated: newItemCreated,\n onConfigurationItemEdited: editItem\n }, null, 8, [\"modelValue\", \"configurationId\"])\n ], 64))\n}\n}\n\n})","import script from \"./email-signatures-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./email-signatures-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./email-signatures-configuration-modal.vue?vue&type=style&index=0&id=42a6d4d6&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-42a6d4d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"email-items-header-container\" }\nconst _hoisted_2 = { class: \"button-container\" }\nconst _hoisted_3 = { class: \"group-content\" }\n\nimport { PropType, ref, computed } from \"vue\";\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\nimport GridBase from '../grid/grid-base.vue';\nimport { DxColumn } from 'devextreme-vue/data-grid';\nimport GridMenu from '../grid/grid-menu.vue';\nimport { EmailItem } from \"@/types/emails/EmailItem\";\nimport DxButton from 'devextreme-vue/button';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'email-items',\n props: {\n dataSource: {\n type: Array as PropType,\n required: true\n },\n groupHeader: {\n type: String,\n required: true\n },\n aliasName: {\n type: String,\n required: true\n }\n},\n emits: [\"row-selected\", \"rowClick\", \"menuItemClick\", \"onRowReorder\"],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst exportGrid = ref(false);\nconst loading = ref();\n\n\nconst contextMenuId = computed(() => `${props.aliasName}-email-modal-email-items-list`);\n\nconst originalMenuItems = ref([\n { key: 'new', text: 'New', icon: 'fas fa-plus' },\n { key: 'edit', text: 'Edit', icon: 'fas fa-pencil' },\n { key: 'delete', text: 'Delete', icon: 'fas fa-trash' },\n { key: 'export', text: 'Export to Excel', icon: 'fas fa-download' },\n { key: 'refresh', text: 'Refresh', icon: 'fas fa-redo' },\n]);\n\nconst menuItems = computed(() => {\n return originalMenuItems.value.map(item => ({\n ...item,\n key: `${props.aliasName}-${item.key}`\n }));\n});\n\nconst handleRowSelected = (row: EmailItem) => {\n if (!row) return;\n\n emit(\"row-selected\", row);\n};\n\nconst handleRowClick = (row: EmailItem) => {\n if (!row) return;\n\n emit(\"rowClick\", row);\n};\n\nconst onMenuItemClicked = async (key: string) => {\n if (key.includes('export')) {\n exportGrid.value = true;\n } else {\n emit('menuItemClick', key);\n }\n};\n\nconst descriptionWidth = computed(()=>{\n return screen.width <= 600 ? '100%':'300px';\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxButton), {\n icon: \"fas fa-plus\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('menuItemClick', `${props.aliasName}-new`)))\n }),\n _createVNode(GridMenu, {\n \"menu-items\": menuItems.value,\n onItemClicked: onMenuItemClicked,\n \"button-icon\": \"fas fa-bars\",\n id: contextMenuId.value\n }, null, 8, [\"menu-items\", \"id\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(GridBase, {\n dataSource: __props.dataSource,\n \"id-column-name\": \"marketingEmailItemId\",\n loading: loading.value,\n \"show-action-button\": true,\n \"column-auto-width\": true,\n onRowSelected: handleRowSelected,\n onRowClick: handleRowClick,\n showSearchPanel: true,\n \"run-export\": exportGrid.value,\n \"onUpdate:runExport\": _cache[1] || (_cache[1] = ($event: any) => ((exportGrid).value = $event)),\n onOnRowReorder: _cache[2] || (_cache[2] = (e) => emit('onRowReorder', e)),\n allowReordering: true\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"marketingEmailItemId\",\n caption: \"MarketingEmailItemId\",\n visible: false\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"Description\",\n width: descriptionWidth.value,\n \"hiding-priority\": 3\n }, null, 8, [\"width\"]),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"url\",\n caption: \"URL\",\n \"hiding-priority\": 2\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"displayOrder\",\n caption: \"Order\",\n width: \"175px\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"dataSource\", \"loading\", \"run-export\"])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./email-items.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./email-items.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./email-items.vue?vue&type=style&index=0&id=a69584ca&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"newsltters-header-container\" }\nconst _hoisted_2 = { class: \"button-container\" }\nconst _hoisted_3 = { class: \"grid-container\" }\n\nimport { PropType, ref } from 'vue';\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\nimport GridBase from '../grid/grid-base.vue';\nimport { DxColumn } from 'devextreme-vue/data-grid';\nimport { Newsletter } from '@/types/emails/Newsletter';\nimport GridMenu from '../grid/grid-menu.vue';\nimport DxButton from 'devextreme-vue/button';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'newsletter-articles',\n props: {\n dataSource: {\n type: Array as PropType,\n required: true\n },\n},\n emits: [\"newsletterRowSelected\", \"newsletterRowClick\", \"newsLetterMenuItemClick\", \"onRowReorder\"],\n setup(__props, { emit }) {\n\n\n\nconst exportGrid = ref(false);\nconst loading = ref();\n\n\nconst contextMenuId = ref('newsletter-article-modal-menu-item');\nconst menuItems = ref([\n { key: 'new', text: 'New', icon: 'fas fa-plus' },\n { key: 'edit', text: 'Edit', icon: 'fas fa-pencil' },\n { key: 'delete', text: 'Delete', icon: 'fas fa-trash' },\n { key: 'export', text: 'Export to Excel', icon: 'fas fa-download' },\n { key: 'refresh', text: 'Refresh', icon: 'fas fa-redo' },\n]);\n\nconst handleRowSelected = (row: Newsletter) => {\n if (!row) return;\n\n emit(\"newsletterRowSelected\", row);\n};\n\nconst handleRowClick = (row: Newsletter) => {\n if (!row) return;\n\n emit(\"newsletterRowClick\", row);\n};\n\nconst onMenuItemClicked = async (key: string) => {\n switch (key) {\n case 'export':\n exportGrid.value = true;\n break;\n default:\n emit('newsLetterMenuItemClick', key);\n }\n};\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxButton), {\n icon: \"fas fa-plus\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('newsLetterMenuItemClick', 'new')))\n }),\n _createVNode(GridMenu, {\n \"menu-items\": menuItems.value,\n onItemClicked: onMenuItemClicked,\n \"button-icon\": \"fas fa-bars\",\n id: contextMenuId.value\n }, null, 8, [\"menu-items\", \"id\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(GridBase, {\n dataSource: __props.dataSource,\n \"id-column-name\": \"newsId\",\n loading: loading.value,\n \"show-action-button\": true,\n \"column-auto-width\": true,\n onRowSelected: handleRowSelected,\n onRowClick: handleRowClick,\n showSearchPanel: true,\n \"run-export\": exportGrid.value,\n \"onUpdate:runExport\": _cache[1] || (_cache[1] = ($event: any) => ((exportGrid).value = $event)),\n allowReordering: true,\n onOnRowReorder: _cache[2] || (_cache[2] = (e) => emit('onRowReorder', e))\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"newsId\",\n caption: \"NewsId\",\n visible: false\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"subject\",\n caption: \"Subject\",\n \"hiding-priority\": 2\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"displayOrder\",\n caption: \"Order\",\n alignment: \"center\",\n width: \"175px\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"dataSource\", \"loading\", \"run-export\"])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./newsletter-articles.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./newsletter-articles.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./newsletter-articles.vue?vue&type=style&index=0&id=5111b3c9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-38625664\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"panel\" }\n\nimport { computed, ref, inject, watch, PropType } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport NumberDropdown from '../ui/dropdowns/number-dropdown.vue';\nimport { MarketingEmailItems } from 'acquaint-api/models/MarketingEmailItems'\nimport { EmailItems } from 'acquaint-api/models/EmailItems'\nimport { MarketingEmailItemType } from '@/enums/emails/MarketingEmailItemType';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport MarketingEmailItemsConfigurationModal from '../email-marketing/marketing-email-items-configuration-modal.vue';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport { EmailItem } from '@/types/emails/EmailItem';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'mailshot-item-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n\n /** \n * The unique identifier for the email.\n * Used to fetch or reference a specific email item.\n * @type {number}\n * @required\n */\n emailId: {\n type: Number,\n required: true\n },\n\n /** \n * The selected email item data.\n * Contains details about the email currently being interacted with.\n * @type {EmailItem}\n * @required\n */\n selectedEmailItem: {\n type: Object as PropType,\n required: true\n },\n\n /** \n * Represents an action key related to the email item.\n * Used for tracking specific actions performed on the email.\n * @type {string}\n * @default ''\n */\n actionKey: {\n type: String,\n default: ''\n },\n\n /** \n * The type of marketing email item.\n * Used to determine the category or nature of the email.\n * @type {MarketingEmailItemType}\n * @required\n * @default undefined\n */\n itemType: {\n type: Number as PropType,\n required: true,\n default: undefined\n },\n\n /** \n * The total number of menu items associated with the email.\n * Helps in managing the available actions or links in the email.\n * @type {number}\n * @required\n */\n totalMenuItems: {\n type: Number,\n required: true\n },\n\n /** \n * The total number of adverts included in the email.\n * Used to keep track of marketing content within the email.\n * @type {number}\n * @required\n */\n totalAdverts: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted to notify the parent component that data needs to be refreshed.\n * Typically triggered after updates were made.\n */\n 'refreshEmailItemsData'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst maxOrderNumber = ref(0);\nconst selectedType = ref(0);\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\nconst isNewItem = computed(() => props.actionKey.includes('new'));\nconst dropdownIcon = computed(() => { return props.actionKey.includes('new') ? 'fa-sharp fa-solid fa-caret-down' : '' });\nconst selectedItemDescription = ref('');\n\nconst openMarketingEmailItemsModal = ref(false);\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst marketingEmailItemData = ref();\nconst marketingEmailItems = ref([]);\nconst emailItemData = ref({\n emailID: 0,\n marketingEmailItemID: 0,\n displayOrder: 0\n});\n\nconst lockEmailItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/emailitems/${props.emailId}/${props.selectedEmailItem?.marketingEmailItemId}/lock`, { lock: true, extraInfo: '' });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst unlockEmailItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/emailitems/${props.emailId}/${props.selectedEmailItem?.marketingEmailItemId}/lock`, { lock: false, extraInfo: '' });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst fetchEmailItems = async () => {\n try {\n if (isNewItem.value) {\n emailItemData.value = await acquaintApiClient.httpGet(`database/emailItems/defaultmodel`);\n emailItemData.value.displayOrder = maxOrderNumber.value;\n } else {\n emailItemData.value = await acquaintApiClient.httpGet(`database/emailItems/${props.emailId}/${props.selectedEmailItem?.marketingEmailItemId}`);\n }\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst fetchMarketingIDDescriptionPairs = async () => {\n try {\n marketingEmailItems.value = await acquaintApiNextClient.httpGet(`MarketingEmailItems/${props.itemType}`);\n } catch (err) {\n marketingEmailItemData.value = undefined;\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n return\n }\n\n if (props.itemType != undefined) {\n selectedType.value = props.itemType;\n }\n await loadData();\n});\n\nwatch(selectedType, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n loadData();\n }\n});\n\nconst loadData = async () => {\n if (selectedType.value == MarketingEmailItemType.MenuItem) {\n maxOrderNumber.value = props.totalMenuItems ? props.totalMenuItems : 0;\n } else {\n maxOrderNumber.value = props.totalAdverts ? props.totalAdverts : 0;\n }\n if (isNewItem.value) {\n selectedItemDescription.value = '';\n maxOrderNumber.value = maxOrderNumber.value ? maxOrderNumber.value + 1 : 1;\n } else {\n selectedItemDescription.value = props.selectedEmailItem?.description ? props.selectedEmailItem?.description : '';\n }\n await fetchEmailItems();\n await fetchMarketingIDDescriptionPairs();\n}\n\nconst cancelClick = async () => {\n await unlockEmailItem();\n showModal.value = false;\n};\n\nconst modalClosed = async () => {\n await unlockEmailItem();\n};\n\nconst saveDetails = async () => {\n if (await callSaveApi()) {\n await unlockEmailItem();\n showModal.value = false;\n }\n};\n\nconst callSaveApi = async () => {\n if (props.actionKey.includes('new')) {\n return await callCreateEmailItemApi();\n } else if (props.actionKey.includes('edit')) {\n return await callEditEmailItemApi();\n }\n};\n\nconst callCreateEmailItemApi = async () => {\n try {\n emailItemData.value.emailID = props.emailId;\n emailItemData.value = await acquaintApiClient.httpPost(`database/emailItems`, emailItemData.value);\n emit('refreshEmailItemsData');\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst callEditEmailItemApi = async () => {\n try {\n if (!await lockEmailItem()) {\n return false;\n }\n\n emailItemData.value = await acquaintApiClient.httpPut(`database/emailItems/${props.emailId}/${props.selectedEmailItem?.marketingEmailItemId}`, emailItemData.value);\n emit('refreshEmailItemsData');\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onConfigurationSelected = (marketingItemId: number, description: string) => {\n selectedItemDescription.value = description;\n emailItemData.value.emailID = props.emailId;\n emailItemData.value.displayOrder = maxOrderNumber.value;\n emailItemData.value.marketingEmailItemID = marketingItemId;\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n title: \"Mailshot Item\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n height: \"350px\",\n onModalClosed: modalClosed,\n width: _unref(ModalWidth).Small\n }, {\n content: _withCtx(() => [\n (emailItemData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General Details\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createVNode(AcquaintInfoBox, {\n text: selectedItemDescription.value,\n label: \"Item\",\n icon: dropdownIcon.value,\n onIconClicked: _cache[0] || (_cache[0] = () => { openMarketingEmailItemsModal.value = true; })\n }, null, 8, [\"text\", \"icon\"]),\n _createVNode(NumberDropdown, {\n label: \"Order\",\n itemNumber: maxOrderNumber.value,\n \"allow-zero-value\": false,\n modelValue: emailItemData.value.displayOrder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((emailItemData.value.displayOrder) = $event))\n }, null, 8, [\"itemNumber\", \"modelValue\"])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: () => { saveDetails() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]),\n _createVNode(MarketingEmailItemsConfigurationModal, {\n modelValue: openMarketingEmailItemsModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((openMarketingEmailItemsModal).value = $event)),\n \"item-type\": __props.itemType,\n \"show-select-button\": true,\n onConfigurationSelected: onConfigurationSelected\n }, null, 8, [\"modelValue\", \"item-type\"])\n ], 64))\n}\n}\n\n})","import script from \"./mailshot-item-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./mailshot-item-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./mailshot-item-modal.vue?vue&type=style&index=0&id=38625664&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-38625664\"]])\n\nexport default __exports__","export enum EmailType {\n FreeFormat = 0,\n PropertyBulletinMatched = 1,\n PropertyDetails = 2,\n DevelopmentDetails = 3,\n PropertyBulletinAll = 4,\n PropertyDetailsFreeFormat = 5,\n Newsletter = 6,\n PropertyFeedbackRequest = 7\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5f53d85f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"panel\" }\n\nimport { computed, ref, inject, watch, PropType } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport NumberDropdown from '../ui/dropdowns/number-dropdown.vue';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { EmailNewsletterItems } from 'acquaint-api/models/EmailNewsletterItems'\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport NewsConfigurationModal from \"../website-news/news-configuration-modal.vue\";\nimport { Newsletter } from '@/types/emails/Newsletter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'newsletter-article-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The total number of newsletters.\n * @type {number}\n * @default 0\n */\n totalNewsletters: {\n type: Number,\n default: 0\n },\n\n /** \n * The unique identifier for the email.\n * Used to fetch or reference a specific email item.\n * @type {number}\n * @required\n */\n emailId: {\n type: Number,\n required: true\n },\n\n /** \n * The selected newsletter item.\n * Contains details about the newsletter currently being interacted with.\n * @type {Newsletter}\n * @required\n */\n selectedNewsletterItem: {\n type: Object as PropType,\n required: true\n },\n\n /** \n * Represents an action key related to the newsletter item.\n * Used for tracking specific actions performed on the newsletter.\n * @type {string}\n * @default ''\n */\n actionKey: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted to notify the parent component that data needs to be refreshed.\n * Typically triggered after updates were made.\n */\n 'refreshNewsletterData'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst selectedItemDescription = ref('');\nconst displayNewsConfigurationModal = ref(false);\nconst maxOrderNumber = ref(0);\nconst emailNewsletterItem = ref({\n emailID: 0,\n newsID: 0,\n displayOrder: 0\n});\n\n\nconst isNewItem = computed(() => props.actionKey == 'new');\nconst dropdownIcon = computed(() => { return props.actionKey == 'new' ? 'fa-sharp fa-solid fa-caret-down' : '' });\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst lockEmailNewsletterItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/EmailNewsletterItems/${props.emailId}/${props.selectedNewsletterItem.newsId}/lock`, { lock: true, extraInfo: '' });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst unlockNewsletterItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/EmailNewsletterItems/${props.emailId}/${props.selectedNewsletterItem.newsId}/lock`, { lock: false, extraInfo: '' });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst fetchNewsletterItem = async () => {\n try {\n if (isNewItem.value) {\n emailNewsletterItem.value = await acquaintApiClient.httpGet(`database/EmailNewsletterItems/defaultmodel`);\n emailNewsletterItem.value.displayOrder = maxOrderNumber.value;\n } else {\n emailNewsletterItem.value = await acquaintApiClient.httpGet(`database/EmailNewsletterItems/${props.emailId}/${props.selectedNewsletterItem.newsId}`);\n }\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n return\n }\n maxOrderNumber.value = props.totalNewsletters ? props.totalNewsletters : 0;\n if (isNewItem.value) {\n selectedItemDescription.value = '';\n maxOrderNumber.value = maxOrderNumber.value + 1;\n } else {\n selectedItemDescription.value = props.selectedNewsletterItem.subject;\n }\n\n await fetchNewsletterItem();\n});\n\nconst cancelClick = async () => {\n await unlockNewsletterItem();\n showModal.value = false;\n\n};\n\nconst modalClosed = async () => {\n await unlockNewsletterItem();\n showModal.value = false;\n};\nconst saveDetails = async () => {\n if (await callSaveApi()) {\n await unlockNewsletterItem();\n showModal.value = false;\n }\n};\n\nconst callSaveApi = async () => {\n var result = false;\n switch (props.actionKey) {\n case 'new':\n result = await callCreateEmailNewsletterItemApi();\n break;\n case 'edit':\n result = await callEditEmailNewsletterApi();\n break;\n }\n return result;\n};\nconst callCreateEmailNewsletterItemApi = async () => {\n try {\n emailNewsletterItem.value.emailID = props.emailId;\n emailNewsletterItem.value = await acquaintApiClient.httpPost(`database/EmailNewsletterItems`, emailNewsletterItem.value);\n emit('refreshNewsletterData');\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst callEditEmailNewsletterApi = async () => {\n try {\n if (!await lockEmailNewsletterItem()) {\n return false;\n }\n\n emailNewsletterItem.value = await acquaintApiClient.httpPut(`database/EmailNewsletterItems/${props.emailId}/${props.selectedNewsletterItem.newsId}`, emailNewsletterItem.value);\n emit('refreshNewsletterData');\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onConfigurationSelected = (newsId: number, description: string) => {\n selectedItemDescription.value = description;\n emailNewsletterItem.value.emailID = props.emailId;\n emailNewsletterItem.value.displayOrder = maxOrderNumber.value;\n emailNewsletterItem.value.newsID = newsId;\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"Newsletter Article\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n height: \"300px\",\n onModalClosed: modalClosed,\n width: _unref(ModalWidth).Small\n }, {\n content: _withCtx(() => [\n (emailNewsletterItem.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General Details\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createVNode(AcquaintInfoBox, {\n text: selectedItemDescription.value,\n label: \"News Article\",\n icon: dropdownIcon.value,\n onIconClicked: _cache[0] || (_cache[0] = () => { displayNewsConfigurationModal.value = true; })\n }, null, 8, [\"text\", \"icon\"]),\n _createVNode(NumberDropdown, {\n label: \"Order\",\n itemNumber: maxOrderNumber.value,\n \"allow-zero-value\": false,\n modelValue: emailNewsletterItem.value.displayOrder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((emailNewsletterItem.value.displayOrder) = $event))\n }, null, 8, [\"itemNumber\", \"modelValue\"])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: () => { saveDetails() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]),\n _createVNode(NewsConfigurationModal, {\n modelValue: displayNewsConfigurationModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((displayNewsConfigurationModal).value = $event)),\n \"show-select-button\": true,\n onConfigurationSelected: onConfigurationSelected\n }, null, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","import script from \"./newsletter-article-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./newsletter-article-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./newsletter-article-modal.vue?vue&type=style&index=0&id=5f53d85f&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5f53d85f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-31524405\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'display-html',\n props: {\n htmlContent: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"html-content\",\n innerHTML: _ctx.htmlContent\n }, null, 8, _hoisted_1))\n}\n}\n\n})","import script from \"./display-html.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./display-html.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./display-html.vue?vue&type=style&index=0&id=31524405&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-31524405\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9e407b5c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tab-content\" }\nconst _hoisted_2 = { class: \"smaller-fields-container\" }\nconst _hoisted_3 = { class: \"tab-content\" }\nconst _hoisted_4 = { class: \"tab-content\" }\nconst _hoisted_5 = { class: \"tab-content\" }\nconst _hoisted_6 = { class: \"tab-content\" }\nconst _hoisted_7 = { class: \"tab-content\" }\nconst _hoisted_8 = { class: \"tab-content\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"preview-body-container\"\n}\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { EmailsValidation } from 'acquaint-api/validation/EmailsValidation';\nimport { Emails } from 'acquaint-api/models/Emails';\nimport SystemCodeSingleSelect from '../ui/system-codes/system-code-single-select.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport NumberDropdown from '../ui/dropdowns/number-dropdown.vue';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport HtmlEditor from '../html-editor/html-editor.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport LookupSingleSelect from '../ui/lookup/lookup-single-select.vue';\nimport MergeFieldsModal from '../contacts/merge-fields-modal.vue';\nimport FileUpload from '../ui/inputs/file-upload.vue';\nimport { saveAs } from 'file-saver-es';\nimport { EmailTemplateFile } from '@/types/EmailTemplateFile';\nimport { convertCorrespondenceFileToBlob, getFileNameParts } from '@/utils/files/CorrespondenceFileConverter';\nimport { FileNameId } from '@/types/FileNameId';\nimport EmailSignaturesConfigurationModal from './email-signatures-configuration-modal.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { EmailTemplate } from '@/types/EmailTemplate';\nimport { DefaultEmailTemplate } from '@/types/DefaultEmailTemplate';\nimport AITextGeneratorModal from '../ai/ai-text-generator-modal.vue';\nimport { EmailSignatures } from 'acquaint-api/models/EmailSignatures';\nimport EmailItemsComponent from '../ui/emails/email-items.vue';\nimport NewsletterComponent from '../ui/emails/newsletter-articles.vue'\nimport { EmailItems } from '@/types/emails/EmailItems';\nimport MailshotItemModal from './mailshot-item-modal.vue';\nimport { MarketingEmailItemType } from '@/enums/emails/MarketingEmailItemType';\nimport { EmailItem } from '@/types/emails/EmailItem';\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport { EmailType } from '@/enums/emails/EmailType';\nimport { Newsletter } from '@/types/emails/Newsletter';\nimport NewsletterArticleModal from './newsletter-article-modal.vue';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { standardInfoAlert } from '@/alerts/standardInfoAlert';\nimport { Body } from '@/types/generic/Body';\nimport { EmailPreviewFields } from '@/types/emails/EmailPreviewFields';\nimport ScrollView from '../ui/scroll-view.vue';\nimport DisplayHtml from '../ui/display-html.vue';\nimport { PropertyBulletinPreview } from '@/types/emails/PropertyBulletinPreview';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-edit-email-templates-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the email template.\n * @type {number}\n * @required\n */\n configurationId: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when an existing template configuration has been successfully edited.\n * This notifies the parent component to refresh or update the template configuration details.\n * @property {boolean} inActive - Indicates whether the template configuration is inactive after the edit.\n */\n 'configurationItemEdited',\n /** \n * Emitted when a new template configuration has been successfully created.\n * This notifies the parent component to handle the creation of a new template configuration.\n */\n 'configurationItemCreated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst itemData = ref();\nconst lockedByAnotherUser = ref(false)\nconst keepingModalOpening = ref(false);\nconst submissionResponse = ref();\nconst selectedTab = ref(0);\nconst previewFieldValue = ref('');\nconst addMergeFieldToSubject = ref(true);\nconst openMergeFieldsModal = ref(false);\nconst bodyMergeFieldToAdd = ref('');\nconst attachmentsList = ref([]);\nconst resetAttachments = ref(false);\nconst displaySignaturesModal = ref(false);\nconst displayAIModal = ref(false);\nconst emailSignature = ref();\nconst selectedSignature = ref({ id: -1, description: '' });\n//Email items variables\nconst userPermissionsStore = useUserPermissionsStore();\nconst displayMailshotModal = ref(false);\nconst userPermissions = ref();\nconst emailItemType = ref();\nconst emailItemActionKey = ref();\n// const showPreviewContent = ref(false);\n\nconst initialEmailItem = {\n marketingEmailItemId: 0,\n description: '',\n displayOrder: 0,\n url: ''\n};\n\nconst selectedEmailItem = ref({ ...initialEmailItem });\nconst selectedMenuItemsEmailItem = ref({ ...initialEmailItem });\nconst selectedAdvertsEmailItem = ref({ ...initialEmailItem });\n\n//Preview Tab\nconst emailPreviewFields = ref({\n subject: \"\",\n body: \"\"\n});\nconst propertyBulletinText = ref({\n body: '',\n noPropertiesFound: false\n});\n\nconst propertyDetails = ref({ body: '' });\n\n// File objects that are only populated when the record is being saved and the appropriate files\n// need to be submitted to the save and delete attachment APIs\nconst filesToSubmitToApi = ref(new FormData());\n\n// This lists files to be submitted to the APIs before they are added to the FormData objects.\n// I thought it would be worth having these so it is easy to add and remove items from the list\nconst filesToUpload = ref([]);\nconst filesToDelete = ref([]);\n\n// The value of the ref is set when a file is double selected and downloaded.\nconst downloadedFile = ref();\n\n// List of all attached files including all those saved in the database and those added to the\n// list when the modal is in edit mode but not yet added to the database\nconst filesDisplayed = ref([]);\n// We have the original version so that we can determine which files were fetched from the API and\n// therefore which files should populate the filesToDelete and filesToUpload lists be uploaded\n// or deleted\nconst originalFilesIdsNames = ref([]);\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\n\n// The following functions are involved in fetching and displaying the correct data in the form\n\nconst lockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/emails/${props.configurationId}/lock`, { lock: true, extraInfo: '' });\n return true;\n } catch (err) {\n lockedByAnotherUser.value = true;\n displayErrorMessage('These details are already being edited by another user.');\n return false;\n }\n};\n\nconst unLockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/emails/${props.configurationId}/lock`, { lock: false, extraInfo: '' });\n } catch (err) {\n displayErrorMessage('We were unable to unlock these details.');\n }\n};\n\nconst fetchItemData = async () => {\n try {\n if (props.configurationId == 0) {\n const defaultData = await acquaintApiClient.httpGet(`database/emails/defaultmodel`);\n\n /* As the default email template endpoint returns slightly different fieldnames to the email templates endpoint, \n * we need to map some fields manually */\n itemData.value = {\n ...defaultData,\n emailSignatureId: defaultData.emailSignatureID,\n contentTypeId: defaultData.contentTypeID,\n typeId: defaultData.typeID,\n autoAttachDocumentId: defaultData.autoAttachDocumentID,\n mailshotGroupId: defaultData.mailshotGroupID\n }\n } else {\n itemData.value = await acquaintApiNextClient.httpGet(`EmailTemplates/${props.configurationId}`);\n }\n } catch (err) {\n itemData.value = undefined;\n if (props.configurationId > 0) {\n displayErrorMessage('The selected details could not be fetched');\n } else {\n displayErrorMessage('We could not fetch the default data');\n }\n }\n};\n\nconst fetchSignature = async () => {\n try {\n selectedSignature.value = await acquaintApiClient.httpGet(`app/system/lookup/${LookupTableSource.EmailSignatures}/${itemData.value?.emailSignatureId}`);\n } catch (err) {\n selectedSignature.value = { id: -1, description: '' };\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nconst fetchEmailSignatureHeaderFooter = async () => {\n try {\n emailSignature.value = await acquaintApiNextClient.httpGet(`EmailSignatures/${itemData.value?.emailSignatureId}`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n emailSignature.value = undefined;\n }\n};\n\nconst fetchEmailAttachmentsList = async () => {\n try {\n attachmentsList.value = await acquaintApiNextClient.httpGet(`email/${props.configurationId}/emailattachments`);\n } catch (err) {\n displayErrorMessage('The attachments list could not be fetched.');\n attachmentsList.value = [];\n }\n};\n\nconst populateDisplayedAttachmentsList = async () => {\n await fetchEmailAttachmentsList();\n\n await populateOriginalAttachmentsList();\n};\n\nconst populateOriginalAttachmentsList = async () => {\n\n if (attachmentsList.value.length > 0) {\n\n attachmentsList.value.forEach((file) => {\n const fileName = getFileNameParts(file.attachedFile.fileDownloadName);\n\n if (!fileName) {\n return;\n }\n\n originalFilesIdsNames.value.push({ id: file.id, name: fileName.name });\n filesDisplayed.value.push(new File([file.attachedFile.fileContents], fileName.name, { type: file.attachedFile.contentType }));\n });\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (!props.modelValue || keepingModalOpening.value) {\n return\n }\n\n if (showModal.value) {\n selectedTab.value = 0;\n previewFieldValue.value = '';\n lockedByAnotherUser.value = false;\n addMergeFieldToSubject.value = true;\n attachmentsList.value = [];\n filesDisplayed.value = [];\n originalFilesIdsNames.value = [];\n filesToUpload.value = [];\n filesToDelete.value = [];\n filesToSubmitToApi.value = new FormData();\n resetAttachments.value = true;\n selectedSignature.value = { id: -1, description: '' };\n setTimeout(() => { resetAttachments.value = false }, 100);\n\n await fetchNewletterItems();\n await fetchEmailItems();\n await fetchItemData();\n await fetchSignature();\n if (itemData.value) {\n itemData.value.emailSignatureId = selectedSignature.value.id;\n }\n await updatePreview();\n\n await populateDisplayedAttachmentsList();\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n if (props.configurationId == 0) {\n return;\n }\n\n await lockConfigurationItem();\n }\n});\n\n\n// The following functions are involved in saving the form data \n\nconst saveDetails = async (e: any) => {\n const validation: ValidatedEvent = e.validationGroup.validate();\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (filesToUpload.value.length > 0) {\n filesToUpload.value.forEach((file) => {\n filesToSubmitToApi.value.append(file.name, file);\n });\n\n await createEmailAttachments(filesToSubmitToApi.value);\n }\n\n for (let i = 0; i < filesToDelete.value.length; i++) {\n await deleteEmailAttachments(filesToDelete.value[i]);\n }\n\n if (!await callSaveApi()) {\n return;\n }\n\n lockedByAnotherUser.value = true;\n\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n emit('configurationItemEdited', itemData.value?.inActive);\n } else {\n emit('configurationItemCreated');\n }\n\n showModal.value = false;\n};\n\nconst createEmailAttachments = async (files: FormData) => {\n try {\n await acquaintApiNextClient.sendFormData(`email/${props.configurationId}/emailattachments`, files)\n } catch (err) {\n displayErrorMessage(`The added attachments could not be created.`)\n }\n};\n\nconst deleteEmailAttachments = async (id: number) => {\n try {\n await acquaintApiNextClient.httpDelete(`email/${id}/deleteemailattachment`, null)\n } catch (err) {\n displayErrorMessage(`The removed attachments could not be deleted.`)\n }\n};\n\nconst callSaveApi = async () => {\n try {\n if (props.configurationId == 0) {\n submissionResponse.value = await acquaintApiClient.httpPost(`database/emails`, itemData.value);\n } else {\n submissionResponse.value = await acquaintApiClient.httpPut(`database/emails/${props.configurationId}`, itemData.value);\n }\n return true;\n } catch (err) {\n if (props.configurationId == 0) {\n displayErrorMessage('A new system item could not be created.');\n } else {\n displayErrorMessage('The selected details could not be edited.');\n }\n return false;\n }\n};\n\n// Other functions\nconst cancelClick = () => {\n showModal.value = false;\n};\n\nconst keepEnteredInformation = () => {\n keepingModalOpening.value = true;\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst modalClosed = async () => {\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n }\n keepingModalOpening.value = false;\n};\n\n\n// These functions are involved in inserting merge fields into the appropriate fields.\n\nconst subjectFieldFocused = () => {\n addMergeFieldToSubject.value = true;\n};\n\nconst bodyFieldFocused = () => {\n addMergeFieldToSubject.value = false;\n};\n\nconst insertField = () => {\n openMergeFieldsModal.value = true\n};\n\nconst addMergeField = (mergeField: String) => {\n if (!itemData.value) {\n return;\n }\n\n if (addMergeFieldToSubject.value && itemData.value) {\n itemData.value.subject = `${itemData.value.subject} [${mergeField}]`;\n return;\n }\n\n bodyMergeFieldToAdd.value = `[${mergeField}]`;\n\n setTimeout(() => { bodyMergeFieldToAdd.value = '' }, 250)\n};\n\n\n// Double clicking a file should download it.\n// First, we must check if the file to be downloaded is present in the original list of files fetched from the API.\n// If it's present we can use the API to downloard the file so that we can get the correct file extension, otherwise,\n// we just use the saveAs method. \nconst downloadAttachment = async (fileToDownload: File) => {\n const fileNameId = originalFilesIdsNames.value.find((record) => { return record.name == fileToDownload.name });\n\n if (!fileNameId) {\n saveAs(fileToDownload, fileToDownload.name);\n return;\n }\n\n await callDownloadApi(fileNameId.id);\n\n if (!downloadedFile.value) {\n return;\n }\n\n const blobToDownload = convertCorrespondenceFileToBlob(downloadedFile.value.attachedFile);\n const fileNameParts = getFileNameParts(downloadedFile.value.attachedFile.fileDownloadName);\n\n if (fileNameParts) {\n saveAs(blobToDownload, fileNameParts.nameWithExtension);\n }\n};\n\nconst callDownloadApi = async (id: number) => {\n try {\n downloadedFile.value = await acquaintApiNextClient.httpGet(`email/${id}/emailattachment`)\n } catch (err) {\n displayErrorMessage('The attachment could not be downloaded.');\n downloadedFile.value = undefined;\n }\n};\n\nconst populateToSubmitList = async (e: File[]) => {\n // If a file in the file uploader component cannot be found in the list we have in this form component, that indicates\n // the file has been added. We need to add it to a list of files to submit when the template data is saved.\n\n for (let i = 0; i < e.length; i++) {\n const foundFile = filesDisplayed.value.find((displayedFile) => { return e[i].name == displayedFile.name });\n\n if (foundFile) {\n continue;\n }\n\n filesToUpload.value.push(e[i]);\n }\n};\n\nconst populateToDeleteList = async (e: File[]) => {\n // If we have a file in the list file here but not in the file uploader component, that inicates that the file\n // has been deleted as this second component has the most recent list of files.\n\n for (let i = 0; i < filesDisplayed.value.length; i++) {\n // If the file is in both lists, we want to continue the loop to handle the next file in \n // the loop\n const fileToBeKept = e.find((file) => { return file.name == filesDisplayed.value[i].name });\n if (fileToBeKept) {\n continue;\n }\n\n const isFileInOriginalList = originalFilesIdsNames.value.find((file) => { return file.name == filesDisplayed.value[i].name });\n\n // If the file was fetched from the API, we must add it to this list to delete it from the database\n // Otherwise, we must remove the file from the filesToUpload list to prevent it from being uploaded\n if (isFileInOriginalList) {\n filesToDelete.value.push(isFileInOriginalList.id);\n } else {\n filesToUpload.value = filesToUpload.value.filter((file) => { return file.name != filesDisplayed.value[i].name });\n }\n }\n};\n\n// This functions ensures the correct list of files is saved by the APIs.\nconst filesUpdated = async (e: File[]) => {\n if (!e || e && e.length == 0) {\n if (e.length < filesDisplayed.value.length) {\n await populateToDeleteList(e);\n }\n filesDisplayed.value = [...e];\n return;\n }\n\n // If the most recent version of the file list (e) has fewer files than filesDisplayed, a file\n // has been removed, otherwise, a file has been added.\n if (e.length < filesDisplayed.value.length) {\n await populateToDeleteList(e);\n } else if (e.length > filesDisplayed.value.length) {\n await populateToSubmitList(e);\n }\n\n filesDisplayed.value = [...e];\n};\n\n// We must update the displayed signature and the id of the object to be saved.\nconst signatureSelected = (e: IDDescriptionPair) => {\n if (!e || !itemData.value) {\n selectedSignature.value = { id: -1, description: '' };\n return;\n }\n selectedSignature.value = e;\n itemData.value.emailSignatureId = e.id;\n};\n\n// This code takes the body text and selected email signature to set the preview text.\nwatch(() => itemData.value?.body, async () => {\n await updatePreview();\n});\n\nwatch(() => itemData.value?.emailSignatureId, async () => {\n await updatePreview();\n});\n\nconst getPreviewForStandardEmail = async () => {\n await fetchEmailSignatureHeaderFooter();\n if (itemData.value && emailSignature.value) {\n previewFieldValue.value = emailSignature.value?.header != '' ? `${emailSignature.value?.header}
${itemData.value.body}` : itemData.value.body;\n\n if (emailSignature.value?.body == '') {\n return;\n }\n\n previewFieldValue.value = previewFieldValue.value + `
${emailSignature.value?.body}`;\n }\n};\n\n//Email Items Tab variables and methods\nconst emailItems = ref({\n menuItems: [],\n adverts: []\n});\nconst fetchEmailItems = async () => {\n try {\n if (!props.configurationId) {\n return;\n }\n emailItems.value = await acquaintApiNextClient.httpGet(`emailItems/${props.configurationId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n emailItems.value = {\n menuItems: [],\n adverts: []\n };\n }\n}\n\nconst onMenuItemsRowDbClick = (selectedRow: EmailItem) => {\n selectedMenuItemsEmailItem.value = selectedRow;\n selectedEmailItem.value = selectedRow;\n emailItemType.value = MarketingEmailItemType.MenuItem;\n editEmailItem('mn-edit');\n};\nconst onMenuItemsRowSelected = (selectedRow: EmailItem) => {\n emailItemType.value = MarketingEmailItemType.MenuItem;\n selectedMenuItemsEmailItem.value = selectedRow;\n}\n\nconst onMenuItemsDropdownClicked = async (key: string) => {\n emailItemType.value = MarketingEmailItemType.MenuItem;\n emailItemsDropdownClicked(key);\n};\n\nconst onAdvertsRowDbClick = (selectedRow: EmailItem) => {\n emailItemType.value = MarketingEmailItemType.Advert;\n selectedAdvertsEmailItem.value = selectedRow;\n selectedEmailItem.value = selectedRow;\n editEmailItem('ad-edit');\n};\n\n\nconst onAdvertsRowSelected = (selectedRow: EmailItem) => {\n emailItemType.value = MarketingEmailItemType.Advert;\n selectedAdvertsEmailItem.value = selectedRow;\n}\n\nconst onAdvertsDropdownClicked = async (key: string) => {\n emailItemType.value = MarketingEmailItemType.Advert;\n emailItemsDropdownClicked(key);\n};\n\nconst emailItemsDropdownClicked = async (key: string) => {\n switch (key) {\n case 'ad-new':\n case 'mn-new':\n createEmailItem(key);\n break;\n case 'ad-edit':\n selectedEmailItem.value = selectedAdvertsEmailItem.value;\n editEmailItem(key);\n break;\n case 'mn-edit':\n selectedEmailItem.value = selectedMenuItemsEmailItem.value;\n editEmailItem(key);\n break;\n case 'ad-delete':\n selectedEmailItem.value = selectedAdvertsEmailItem.value;\n deleteEmailItem(key);\n break;\n case 'mn-delete':\n selectedEmailItem.value = selectedMenuItemsEmailItem.value;\n deleteEmailItem(key);\n break;\n case 'ad-refresh':\n case 'mn-refresh':\n await onRefreshEmailItemsData();\n break;\n }\n}\n\nconst editEmailItem = (key: string) => {\n if (!selectedEmailItem.value.marketingEmailItemId) {\n standardInfoAlert('Please select an item to edit.');\n return;\n }\n emailItemActionKey.value = key;\n displayMailshotModal.value = true;\n};\n\nconst deleteEmailItem = async (key: string) => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.delete) {\n displayErrorMessage(\"Sorry, you do not have the permission to delete this item.\");\n return;\n }\n if (!selectedEmailItem.value.marketingEmailItemId) {\n standardInfoAlert('Please select an item to delete.');\n return;\n }\n const question = await displayQuestionAlert('Are you sure you want to delete this item?');\n\n if (!question.isConfirmed) {\n return;\n }\n\n if (await callDeletApi()) {\n await fetchEmailItems();\n selectedEmailItem.value = { ...initialEmailItem };\n if (key == 'ad-delete') {\n selectedAdvertsEmailItem.value = { ...initialEmailItem };\n } else if (key == 'mn-delete') {\n selectedMenuItemsEmailItem.value = { ...initialEmailItem };\n }\n\n await updatePreview();\n }\n};\n\nconst callDeletApi = async () => {\n try {\n if (!await lockEmailItem()) {\n return false;\n }\n await acquaintApiClient.httpDeleteVoid(`database/emailitems/${props.configurationId}/${selectedEmailItem.value.marketingEmailItemId}`);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst createEmailItem = (key: string) => {\n emailItemActionKey.value = key;\n displayMailshotModal.value = true;\n};\n\nconst onRefreshEmailItemsData = async () => {\n await fetchEmailItems();\n selectedEmailItem.value = { ...initialEmailItem };\n displayMailshotModal.value = false;\n\n await updatePreview();\n}\n\nconst lockEmailItem = async () => {\n try {\n if (!selectedEmailItem.value.marketingEmailItemId) return;\n\n await acquaintApiClient.httpPostVoid(`database/emailitems/${props.configurationId}/${selectedEmailItem.value.marketingEmailItemId}/lock`, { lock: true, extraInfo: '' });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\n//Newsletter article variables and methods\nconst displayNewsletterModal = ref(false);\nconst newsletterActionKey = ref('');\nconst initialNewsletterItem = {\n newsId: 0,\n subject: '',\n displayOrder: 0\n}\nconst selectedNewsletterItem = ref({ ...initialNewsletterItem });\n\nconst initialNewsletterItems = [\n {\n newsId: 0,\n subject: '',\n displayOrder: 0\n }\n];\nconst emailNewsletterItems = ref([...initialNewsletterItems]);\n\nconst fetchNewletterItems = async () => {\n try {\n if (!props.configurationId) {\n return;\n }\n emailNewsletterItems.value = await acquaintApiNextClient.httpGet(`emails/${props.configurationId}/newsletter/items`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n emailNewsletterItems.value = [...initialNewsletterItems];\n }\n}\n\nconst onNewsletterRowSelected = (e: Newsletter) => {\n selectedNewsletterItem.value = e;\n}\n\nconst onNewsletterRowDbClick = (e: Newsletter) => {\n newsletterActionKey.value = 'edit';\n selectedNewsletterItem.value = e;\n editNewsletterItem();\n}\nconst onNewsletterMenuItemClicked = async (key: string) => {\n switch (key) {\n case 'new':\n createNewsletterItem();\n break;\n case 'edit':\n editNewsletterItem();\n break;\n case 'delete':\n deleteNewsletterItem();\n break;\n case 'refresh':\n await onRefreshNewsletterData();\n break;\n }\n}\n\nconst createNewsletterItem = () => {\n newsletterActionKey.value = 'new';\n displayNewsletterModal.value = true;\n};\n\nconst editNewsletterItem = () => {\n if (!selectedNewsletterItem.value.newsId) {\n standardInfoAlert('Please select an item to edit.');\n return;\n }\n newsletterActionKey.value = 'edit';\n displayNewsletterModal.value = true;\n};\n\nconst onRefreshNewsletterData = async () => {\n await fetchNewletterItems();\n selectedNewsletterItem.value = { ...initialNewsletterItem };\n displayNewsletterModal.value = false;\n\n await updatePreview();\n}\n\nconst deleteNewsletterItem = async () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.delete) {\n displayErrorMessage(\"Sorry, you do not have the permission to delete this item.\");\n return;\n }\n\n if (!selectedNewsletterItem.value.newsId) {\n standardInfoAlert('Please select an item to delete.');\n return;\n }\n\n const question = await displayQuestionAlert('Are you sure you want to delete this item?');\n\n if (!question.isConfirmed) {\n return;\n }\n\n if (await callDeletNewsletterApi()) {\n await fetchNewletterItems();\n await updatePreview();\n selectedNewsletterItem.value = { ...initialNewsletterItem };\n }\n};\n\nconst callDeletNewsletterApi = async () => {\n try {\n if (!await lockNewsletterItem()) {\n return false;\n }\n await acquaintApiClient.httpDeleteVoid(`database/EmailNewsletterItems/${props.configurationId}/${selectedNewsletterItem.value.newsId}`);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\nconst lockNewsletterItem = async () => {\n try {\n if (!selectedNewsletterItem.value.newsId) return;\n\n await acquaintApiClient.httpPostVoid(`database/EmailNewsletterItems/${props.configurationId}/${selectedNewsletterItem.value.newsId}/lock`, { lock: true, extraInfo: '' });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst updatePreview = async () => {\n if (itemData.value?.typeId == EmailType.PropertyBulletinAll || itemData.value?.typeId == EmailType.PropertyBulletinMatched) {\n await fetchPropertyBulletinText();\n emailPreviewFields.value.body = propertyBulletinText.value.body;\n }\n else if (itemData.value?.typeId == EmailType.PropertyDetails) {\n await fetchPropertyDetails();\n emailPreviewFields.value.body = propertyDetails.value.body;\n } else if (itemData.value?.typeId == EmailType.Newsletter) {\n const newsLetterBody: Body = await fetchNewsLetterPreviewBody();\n emailPreviewFields.value.body = newsLetterBody.body;\n } else {\n await getPreviewForStandardEmail();\n }\n};\n\nconst fetchPropertyBulletinText = async () => {\n try {\n propertyBulletinText.value = await acquaintApiClient.httpPost(`app/correspondence/email/propertybulletin`, {\n contactId: 0,\n templateId: props.configurationId,\n includeValuations: true,\n includeInstructed: true,\n body: itemData.value?.body\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n propertyBulletinText.value = { body: '', noPropertiesFound: false };\n }\n};\n\nconst fetchPropertyDetails = async () => {\n try {\n propertyDetails.value = await acquaintApiClient.httpPost('app/correspondence/email/propertydetails', {\n templateId: props.configurationId,\n propertyId: 0,\n body: itemData.value?.body\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n propertyDetails.value = { body: '' }\n }\n};\n\nconst fetchNewsLetterPreviewBody = async (): Promise => {\n try {\n return await acquaintApiClient.httpPost('app/correspondence/email/newsletter', {\n templateId: props.configurationId,\n body: itemData.value?.body\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return { body: '' };\n }\n};\n\nconst onAdvertRowReorder = async (e: any) => {\n reOrderMenuItemsOrAdvertList(e, emailItems.value.adverts)\n};\nconst onMenuItemsRowReorder = async (e: any) => {\n reOrderMenuItemsOrAdvertList(e, emailItems.value.menuItems)\n};\nconst reOrderMenuItemsOrAdvertList = async (e: any, list: EmailItem[]) => {\n const visibleRows = e.component.getVisibleRows();\n const toIndex = list.findIndex((item) => item.marketingEmailItemId === visibleRows[e.toIndex].data.marketingEmailItemId);\n await callEditEmailItemApi(toIndex + 1, e.itemData.marketingEmailItemId);\n fetchEmailItems();\n await updatePreview();\n};\n\nconst callEditEmailItemApi = async (newOrderPosition: number, recordId: number) => {\n try {\n await acquaintApiClient.httpPut(`database/emailItems/${props.configurationId}/${recordId}`, {\n emailID: props.configurationId,\n marketingEmailItemID: recordId,\n displayOrder: newOrderPosition\n });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onNewsLetterRowReorder = async (e: any) => {\n const visibleRows = e.component.getVisibleRows();\n const toIndex = emailNewsletterItems.value.findIndex((item) => item.newsId === visibleRows[e.toIndex].data.newsId);\n await callEditEmailNewsletterApi(toIndex + 1, e.itemData.newsId);\n fetchNewletterItems();\n await updatePreview();\n};\n\nconst callEditEmailNewsletterApi = async (newOrderPosition: number, newsId: number) => {\n try {\n await acquaintApiClient.httpPut(`database/EmailNewsletterItems/${props.configurationId}/${newsId}`, {\n emailID: props.configurationId,\n newsID: newsId,\n displayOrder: newOrderPosition\n });\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onTypeChanged = async () => {\n await updatePreview();\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"Email Templates\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n showCloseConfirmationPrompt: !lockedByAnotherUser.value,\n height: \"630px\",\n onCancelConfirmationModal: keepEnteredInformation,\n onModalClosed: modalClosed,\n width: _unref(ModalWidth).Large,\n onCancelPromptDenied: cancelPromptDenied\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n (itemData.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[17] || (_cache[17] = ($event: any) => ((selectedTab).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(EmailsValidation).Description,\n label: \"Description\",\n modelValue: itemData.value.description,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((itemData.value.description) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(AcquaintInfoBox, {\n icon: \"chevrondown\",\n label: \"Signature\",\n text: selectedSignature.value.description,\n width: _unref(FieldSize).Large,\n onIconClicked: _cache[1] || (_cache[1] = ($event: any) => (displaySignaturesModal.value = true))\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(LookupSingleSelect, {\n label: \"Group\",\n lookupSource: _unref(LookupTableSource).TemplateGroups,\n modelValue: itemData.value.mailshotGroupId,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((itemData.value.mailshotGroupId) = $event)),\n width: _unref(FieldSize).Large\n }, null, 8, [\"lookupSource\", \"modelValue\", \"width\"]),\n _createVNode(SystemCodeSingleSelect, {\n \"code-type\": _unref(CodeType).ContentType,\n fieldValidation: _unref(EmailsValidation).ContentTypeID,\n label: \"Content Type\",\n modelValue: itemData.value.contentTypeId,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((itemData.value.contentTypeId) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"code-type\", \"fieldValidation\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(NumberDropdown, {\n modelValue: itemData.value.followUpTaskInterval,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((itemData.value.followUpTaskInterval) = $event)),\n itemNumber: 360,\n itemLabelExtension: \"Days\",\n label: \"Follow-up Task Interval\",\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(SystemCodeSingleSelect, {\n \"code-type\": _unref(CodeType).TaskPriority,\n label: \"Follow-up Task Priority\",\n modelValue: itemData.value.followUpTaskPriority,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((itemData.value.followUpTaskPriority) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"code-type\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(SystemCodeSingleSelect, {\n \"code-type\": _unref(CodeType).EmailType,\n fieldValidation: _unref(EmailsValidation).TypeID,\n label: \"Type\",\n modelValue: itemData.value.typeId,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((itemData.value.typeId) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\",\n onValueChanged: onTypeChanged\n }, null, 8, [\"code-type\", \"fieldValidation\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(EmailsValidation).FromEmail,\n label: \"From Email\",\n modelValue: itemData.value.fromEmail,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((itemData.value.fromEmail) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(EmailsValidation).CC,\n label: \"CC Email\",\n modelValue: itemData.value.cc,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((itemData.value.cc) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(EmailsValidation).BCC,\n label: \"BCC Email\",\n modelValue: itemData.value.bcc,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((itemData.value.bcc) = $event)),\n width: _unref(FieldSize).Large,\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"width\", \"readOnly\"])\n ]),\n _createVNode(SwitchToggle, {\n label: \"Save as Correspondence\",\n labelWidth: \"9.5rem\",\n modelValue: itemData.value.saveAsCorrespondence,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((itemData.value.saveAsCorrespondence) = $event)),\n readOnly: lockedByAnotherUser.value\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"New Properties Only\",\n labelWidth: \"9.5rem\",\n modelValue: itemData.value.newPropertiesOnly,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((itemData.value.newPropertiesOnly) = $event)),\n readOnly: lockedByAnotherUser.value\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(SwitchToggle, {\n label: \"Inactive\",\n labelWidth: \"9.5rem\",\n modelValue: itemData.value.inActive,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((itemData.value.inActive) = $event)),\n readOnly: lockedByAnotherUser.value\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Email\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_3, [\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(EmailsValidation).Subject,\n label: \"Subject\",\n modelValue: itemData.value.subject,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((itemData.value.subject) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"EmailsValidationGroup\",\n onOnFocused: subjectFieldFocused\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(HtmlEditor, {\n label: \"Body\",\n modelValue: itemData.value.body,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((itemData.value.body) = $event)),\n insertTextAtCursorPosition: bodyMergeFieldToAdd.value,\n onOnFocused: bodyFieldFocused,\n \"display-a-i-modal\": true,\n onAiIconClick: _cache[15] || (_cache[15] = () => displayAIModal.value = true)\n }, null, 8, [\"modelValue\", \"insertTextAtCursorPosition\"])\n ])\n ]),\n _: 1\n }),\n (itemData.value.id > 0 && itemData.value.typeId !== _unref(EmailType).FreeFormat)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 0,\n title: \"Menu Items\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_4, [\n _createVNode(EmailItemsComponent, {\n \"data-source\": emailItems.value?.menuItems,\n \"group-header\": 'Menu Items',\n \"alias-name\": 'mn',\n onRowClick: onMenuItemsRowDbClick,\n onRowSelected: onMenuItemsRowSelected,\n onMenuItemClick: onMenuItemsDropdownClicked,\n onOnRowReorder: onMenuItemsRowReorder\n }, null, 8, [\"data-source\"])\n ])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (itemData.value.id > 0 && itemData.value.typeId !== _unref(EmailType).FreeFormat)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 1,\n title: \"Adverts\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_5, [\n _createVNode(EmailItemsComponent, {\n \"data-source\": emailItems.value?.adverts,\n \"group-header\": 'Adverts',\n \"alias-name\": 'ad',\n onRowClick: onAdvertsRowDbClick,\n onRowSelected: onAdvertsRowSelected,\n onMenuItemClick: onAdvertsDropdownClicked,\n onOnRowReorder: onAdvertRowReorder\n }, null, 8, [\"data-source\"])\n ])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (itemData.value.id > 0 && itemData.value.typeId == _unref(EmailType).Newsletter)\n ? (_openBlock(), _createBlock(_unref(DxItem), {\n key: 2,\n title: \"Articles\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_6, [\n _createVNode(NewsletterComponent, {\n \"data-source\": emailNewsletterItems.value,\n onNewsLetterMenuItemClick: onNewsletterMenuItemClicked,\n onNewsletterRowClick: onNewsletterRowDbClick,\n onNewsletterRowSelected: onNewsletterRowSelected,\n onOnRowReorder: onNewsLetterRowReorder\n }, null, 8, [\"data-source\"])\n ])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxItem), { title: \"Attachments\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_7, [\n _createVNode(FileUpload, {\n onFilesChanged: filesUpdated,\n reset: resetAttachments.value,\n readOnly: lockedByAnotherUser.value,\n onFileDoubleClicked: downloadAttachment,\n defaultFiles: filesDisplayed.value\n }, null, 8, [\"reset\", \"readOnly\", \"defaultFiles\"])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"Preview\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_8, [\n (itemData.value?.typeId == _unref(EmailType).PropertyBulletinAll ||\n itemData.value?.typeId == _unref(EmailType).PropertyBulletinMatched ||\n itemData.value?.typeId == _unref(EmailType).PropertyDetails ||\n itemData.value?.typeId == _unref(EmailType).Newsletter)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(ScrollView, null, {\n default: _withCtx(() => [\n _createVNode(DisplayHtml, {\n \"html-content\": emailPreviewFields.value.body\n }, null, 8, [\"html-content\"])\n ]),\n _: 1\n })\n ]))\n : (_openBlock(), _createBlock(HtmlEditor, {\n key: 1,\n modelValue: previewFieldValue.value,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((previewFieldValue).value = $event)),\n readOnly: true,\n height: \"435px\"\n }, null, 8, [\"modelValue\"]))\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\"]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"before\",\n options: { text: 'Insert Field', visible: selectedTab.value == 1, disabled: lockedByAnotherUser.value, onClick: () => { insertField() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: lockedByAnotherUser.value, onClick: (e) => { saveDetails(e) }, validationGroup: 'EmailsValidationGroup' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\", \"width\"]),\n _createVNode(AITextGeneratorModal, {\n modelValue: displayAIModal.value,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = ($event: any) => ((displayAIModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(MergeFieldsModal, {\n modelValue: openMergeFieldsModal.value,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = ($event: any) => ((openMergeFieldsModal).value = $event)),\n onAddMergeField: addMergeField\n }, null, 8, [\"modelValue\"]),\n _createVNode(EmailSignaturesConfigurationModal, {\n modelValue: displaySignaturesModal.value,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = ($event: any) => ((displaySignaturesModal).value = $event)),\n onSignatureSelected: signatureSelected,\n \"displayed-in-configuration-screen\": false\n }, null, 8, [\"modelValue\"]),\n _createVNode(MailshotItemModal, {\n modelValue: displayMailshotModal.value,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = ($event: any) => ((displayMailshotModal).value = $event)),\n \"action-key\": emailItemActionKey.value,\n \"email-id\": __props.configurationId,\n \"item-type\": emailItemType.value,\n \"selected-email-item\": selectedEmailItem.value,\n \"total-adverts\": emailItems.value?.adverts.length,\n \"total-menu-items\": emailItems.value?.menuItems.length,\n onRefreshEmailItemsData: onRefreshEmailItemsData\n }, null, 8, [\"modelValue\", \"action-key\", \"email-id\", \"item-type\", \"selected-email-item\", \"total-adverts\", \"total-menu-items\"]),\n _createVNode(NewsletterArticleModal, {\n modelValue: displayNewsletterModal.value,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = ($event: any) => ((displayNewsletterModal).value = $event)),\n \"action-key\": newsletterActionKey.value,\n \"total-newsletters\": emailNewsletterItems.value.length,\n \"email-id\": __props.configurationId,\n \"selected-newsletter-item\": selectedNewsletterItem.value,\n onRefreshNewsletterData: onRefreshNewsletterData\n }, null, 8, [\"modelValue\", \"action-key\", \"total-newsletters\", \"email-id\", \"selected-newsletter-item\"])\n ], 64))\n}\n}\n\n})","import script from \"./new-edit-email-templates-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-edit-email-templates-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./new-edit-email-templates-modal.vue?vue&type=style&index=0&id=9e407b5c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9e407b5c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"file-container\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"header\" }, \" File Attachments \", -1)\nconst _hoisted_3 = { class: \"file-uploaders-container\" }\nconst _hoisted_4 = { class: \"file-container\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"header\" }, \" Tenant Consent Form \", -1)\nconst _hoisted_6 = { class: \"file-uploaders-container\" }\n\nimport FileUpload from '../ui/inputs/file-upload.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'document-upload',\n props: {\n /** \n * Determines if the component control should be in read-only mode.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n\n /** \n * Controls whether only TCF (specific data or format) should be displayed.\n * @type {boolean}\n * @default false\n */\n onlyShowTcf: {\n type: Boolean,\n default: false\n },\n\n /** \n * Indicates if the component should trigger a reset action.\n * @type {boolean}\n * @default false\n */\n reset: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Emits an event when the list of documents is changed.\n * This is used to notify the parent component about document updates.\n * @param {File[]} e - The updated list of files.\n */\n 'documentsChanged',\n /** \n * Emits an event when the TCF (specific file type or format) is changed.\n * This is used to notify the parent component about TCF-related updates.\n * @param {File[]} e - The updated list of TCF files.\n */\n 'tcfChanged'\n],\n setup(__props, { emit }) {\n\n\n\n\n\n/** Handles the Files Changed event of the Document upload component */\nconst onDocumentsChanged = (e: File[]) => {\n emit('documentsChanged', e)\n}\n\n/** Handles the Files Change event of the TCF upload component */\nconst onTcfChanged = (e: File[]) => {\n emit('tcfChanged', e);\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (!__props.onlyShowTcf)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(FileUpload, {\n text: \"Upload Files\",\n \"read-only\": __props.readOnly,\n onFilesChanged: onDocumentsChanged,\n reset: __props.reset\n }, null, 8, [\"read-only\", \"reset\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(FileUpload, {\n text: \"Upload TCF\",\n multiple: false,\n \"read-only\": __props.readOnly,\n onFilesChanged: onTcfChanged,\n reset: __props.reset\n }, null, 8, [\"read-only\", \"reset\"])\n ])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./document-upload.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./document-upload.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./document-upload.vue?vue&type=style&index=0&id=762f7552&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { ref, computed, PropType, watch, onMounted } from 'vue';\nimport GridFiltersBase from '../../ui/grid/grid-filters-base.vue';\nimport lookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { FindContactFilters } from '@/types/contacts/FindContactFilters';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'filter-contact-find-results',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * Filters applied to the contact filter.\n @type {FindContactFilters} - An object defining the filter criteria. \n */\n filters: {\n type: Object as PropType\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Emitted when filters are applied in the modal.\n * @property {Object} filters - The filter values applied to the contact list.\n */\n 'filtersApplied'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nonMounted(async () => {\n clonePropFilters();\n})\n\nwatch(() => props.modelValue, () => {\n if (!props.modelValue) {\n return;\n }\n // Need to clone the passed filters to avoid them updating before the user clicks the apply button\n clonePropFilters();\n});\n\n/** Clones the prop filters so changes aren't applied until the user clicks the apply button */\nconst clonePropFilters = () => {\n /* To clone filters we can't use the spread command, as this only does a shallow clone.\n * To do a deep clone, we need to convert the filters to json and back to an array */\n if (props.filters) {\n modalFilter.value = JSON.parse(JSON.stringify(props.filters))\n }\n}\n\n/** Handles the filters applied event from the grid filters base */\nconst onFiltersApplied = () => emit('filtersApplied', modalFilter.value);\n\n/** Handles the clear filters event from the grid filters base */\nconst onClearFilters = () => {\n modalFilter.value.type = { id: -1, description: '' };\n modalFilter.value.status = { id: -1, description: '' };\n modalFilter.value.branch = { id: -1, description: '' }\n}\n\nconst modalFilter = ref({\n type: { id: -1, description: '' },\n status: { id: -1, description: '' },\n branch: { id: -1, description: '' }\n});\n\nconst showFilters = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst typeValueChanged = (selectedDescription: string) => {\n modalFilter.value.type.description = selectedDescription;\n};\n\nconst statusValueChanged = (selectedDescription: string) => {\n modalFilter.value.status.description = selectedDescription;\n};\n\nconst branchValueChanged = (selectedDescription: string) => {\n modalFilter.value.branch.description = selectedDescription;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(GridFiltersBase, {\n \"data-source\": \"modalFilter\",\n modelValue: showFilters.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showFilters).value = $event)),\n title: \"Find Contact Filters\",\n onClearFilters: onClearFilters,\n onFiltersApplied: onFiltersApplied\n }, {\n filters: _withCtx(() => [\n _createVNode(lookupSingleSelect, {\n label: \"Type\",\n modelValue: modalFilter.value.type.id,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((modalFilter.value.type.id) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Types,\n showClearButton: true,\n onValueChanged: typeValueChanged\n }, null, 8, [\"modelValue\", \"lookup-source\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Status\",\n modelValue: modalFilter.value.status.id,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((modalFilter.value.status.id) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Statuses,\n showClearButton: true,\n onValueChanged: statusValueChanged\n }, null, 8, [\"modelValue\", \"lookup-source\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Branch\",\n modelValue: modalFilter.value.branch.id,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((modalFilter.value.branch.id) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Sites,\n showClearButton: true,\n onValueChanged: branchValueChanged\n }, null, 8, [\"modelValue\", \"lookup-source\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./filter-contact-find-results.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./filter-contact-find-results.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-327d2384\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"find-contacts-container\" }\n\nimport { computed, ref, inject, watch } from 'vue'\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult'\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport FindInput from '../find-input.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport FindContactResults from './find-contact-results.vue';\nimport { ContactFindQuery } from '@/types/find/contacts/ContactFindQuery';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport FilterContactFindResults from './filter-contact-find-results.vue';\nimport { FindContactFilters } from '@/types/contacts/FindContactFilters';\nimport GridFilterSummary from '@/components/ui/grid/grid-filter-summary.vue';\nimport { GridFilter } from '@/types/ui/GridFilter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-contact-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n\n /** \n * Restricts the type of contacts that can be found.\n * @type {Number}\n * @default 0 (no restriction)\n */\n findTypeRestriction: {\n type: Number,\n default: 0\n },\n\n /** \n * The title displayed for the find contact component.\n * @type {String}\n * @default 'Find Contact'\n */\n title: {\n type: String,\n default: 'Find Contact'\n },\n\n /** \n * The ID of the currently selected contact.\n * @type {Number}\n * @default 0 (no contact selected)\n */\n currentContactId: {\n type: Number,\n default: 0\n },\n\n /** \n * Controls the visibility of the \"New Contact\" button.\n * @type {Boolean}\n * @default false (button is hidden)\n */\n showNewContactButton: {\n type: Boolean,\n default: false\n },\n\n /** \n * Specifies the type of contact to search for.\n * @type {Number}\n * @default -1 (no specific type)\n */\n typeToFind: {\n type: Number,\n default: -1\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Triggered when a contact is selected from the list.\n * @param {Object} selectedContact - The selected contact object.\n * @param {Array} contactIds - List of all contact IDs.\n * @param {Number} index - The index of the selected contact.\n */\n 'contactSelected',\n /** \n * Triggered when the user clicks to open the new contact creation modal.\n * Used to initiate the creation of a new contact.\n */\n 'openNewContactModal',\n /** \n * Triggered when a primary contact is selected.\n * @param {Number} linkedTo - ID of the primary contact linked to the selected one.\n * @param {String} primaryContactName - The name or description of the primary contact.\n */\n 'primaryContactSelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst contacts = ref([]);\nconst searching = ref(false);\n/** Stores the current index of the row selected, used for the Contact Record Navigation Store on the Find Contact screen */\nconst index = ref(0);\nconst selectedContact = ref();\nconst primaryContactName = ref();\nconst selectedContactFurtherDetails = ref();\nconst showFiltersModal = ref(false);\nconst filters = ref({\n type: { id: props.typeToFind, description: '' },\n status: { id: -1, description: '' },\n branch: { id: -1, description: '' }\n});\n\nconst searchQuery = ref('');\n\nconst onInputChanged = async (query: string) => {\n searchQuery.value = query;\n // To avoid unnecessary api calls, only perform search if user has entered more than 2 characters\n if (!searchQuery.value || searchQuery.value.length < 2) {\n selectedContact.value = undefined;\n contacts.value = [];\n return;\n }\n\n // Get results back from api\n await fetchContacts();\n}\n\nconst fetchContacts = async () => {\n searching.value = true;\n const query: ContactFindQuery = {\n textToFind: searchQuery.value,\n maxResults: 200,\n findTypeRestriction: props.findTypeRestriction,\n currentContactId: props.currentContactId,\n filters: {\n statusID: filters.value.status.id,\n typeID: filters.value.type.id,\n userID: -1,\n branchID: filters.value.branch.id\n }\n };\n\n try {\n contacts.value = await apiClient.httpPost('find/contact', query);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n contacts.value = [];\n }\n searching.value = false;\n};\n\n/** Handles the Select button click event */\nconst onSelectClick = async () => {\n if (!selectedContact.value) {\n return;\n }\n\n await checkIfContactIsLinked(selectedContact.value);\n}\n\n/** Handles the row click event of the Find Contact Results */\nconst onRowClick = async (e: ContactFindResult) => {\n if (!e) {\n return;\n }\n\n await checkIfContactIsLinked(e);\n\n};\n\n/** Handles the row selected event of the Find Contact Results */\nconst onRowSelected = async (e: ContactFindResult, rowIndex: number) => {\n if (e) {\n selectedContact.value = e;\n }\n // store the index of the Row selected, so we can use this in the Contact Record Navigation Store on the Find Contact screen\n index.value = rowIndex;\n}\n\n// Handles the user clicking on the ... button on a row, the if statement ensure that if e is undefined, it doesnt disbale the select button\nconst adaptiveRowSelection = async (e: ContactFindResult) => {\n if (!e) {\n return;\n }\n\n selectedContact.value = e;\n}\n\n/** Emits the selected contact and closes the modal */\nconst emitSelectedContact = () => {\n showModal.value = false;\n emit('contactSelected', selectedContact.value, contacts.value.map((item) => (item.id)), index.value);\n contacts.value = [];\n}\n\nconst closeModal = () => {\n emit('contactSelected', undefined);\n showModal.value = false;\n contacts.value = [];\n};\n\nwatch(() => showModal.value, (value) => {\n if (!value) {\n selectedContact.value = undefined;\n contacts.value = [];\n filters.value = {\n type: { id: props.typeToFind, description: '' },\n status: { id: -1, description: '' },\n branch: { id: -1, description: '' }\n }\n }\n});\n\nconst onNewContactClick = () => {\n showModal.value = false;\n emit('openNewContactModal');\n};\n\n// Code that displays a primary contact prompt if the contact selected is a linked contact\n\nconst fetchContactDetails = async (contactId: number) => {\n try {\n selectedContactFurtherDetails.value = await apiClient.httpGet(`database/contacts/${contactId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n selectedContact.value = undefined;\n }\n};\n\nconst fetchPrimaryContactName = async (contactId: number) => {\n try {\n primaryContactName.value = await apiClient.httpGet(`/app/contacts/${contactId}/name`)\n return true;\n } catch (err) {\n primaryContactName.value = undefined;\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst checkIfContactIsLinked = async (e: ContactFindResult) => {\n // We want to check to see if the the property is a link and if its is, we will inform the user of this.\n\n await fetchContactDetails(e.id);\n\n if (selectedContactFurtherDetails.value?.linkedTo) {\n\n // If we cannot fetch the primary contact's name, we wont display the prompt as there isn't any point.\n if (!await fetchPrimaryContactName(selectedContactFurtherDetails.value?.linkedTo)) {\n selectedContact.value = e;\n emitSelectedContact();\n return;\n }\n\n displayQuestionAlert(`This contact is a Link. Would you prefer to use the Primary record instead? \\n \\n ${primaryContactName.value?.description ?? ''}`).then((result) => {\n if (!result.isConfirmed) {\n selectedContact.value = e;\n emitSelectedContact();\n return;\n }\n\n selectedContact.value = {\n id: selectedContactFurtherDetails.value?.linkedTo ?? 0,\n name: '',\n address: '',\n telephoneNumber: '',\n mobileNumber: '',\n emailAddress: '',\n type: { id: 0, description: '' },\n status: { id: 0, description: '' },\n altReference: '',\n isRestricted: false,\n marketingPreferences: {\n email: false,\n telephone: false,\n smsText: false,\n confirmed: false\n }\n }\n\n emit('primaryContactSelected', selectedContactFurtherDetails.value?.linkedTo, primaryContactName.value?.description);\n showModal.value = false;\n });\n } else {\n selectedContact.value = e;\n emitSelectedContact();\n }\n};\n\nconst filtersApplied = async (selectedFilters: FindContactFilters) => {\n filters.value = JSON.parse(JSON.stringify(selectedFilters));\n\n // There is no point in calling the API after the filters have been updated if there are no search\n // results already to filter\n if (contacts.value.length > 0) {\n await fetchContacts();\n }\n};\n\nconst summaryFilters = computed(() => {\n const gridFilters: GridFilter[] = [];\n\n // No filters so return blank array so summary shows All\n if (!filters.value) {\n return [];\n }\n\n if (filters.value.status.id > -1) {\n gridFilters.push({ title: 'Statuses', values: [filters.value.status], dataSource: [] });\n }\n if (filters.value.type.id > -1) {\n gridFilters.push({ title: 'Types', values: [filters.value.type], dataSource: [] });\n }\n if (filters.value.branch.id > -1) {\n gridFilters.push({ title: 'Branches', values: [filters.value.branch], dataSource: [] });\n }\n\n return gridFilters;\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n title: props.title,\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n height: \"80vh\",\n \"show-close-button\": true,\n onModalClosed: _cache[2] || (_cache[2] = ($event: any) => (emit('contactSelected', undefined)))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n (showModal.value)\n ? (_openBlock(), _createBlock(FindInput, {\n key: 0,\n onChanged: onInputChanged\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(GridFilterSummary, {\n rowCount: contacts.value.length,\n filters: summaryFilters.value,\n onFilterClick: _cache[0] || (_cache[0] = ($event: any) => (showFiltersModal.value = true)),\n dropdownMenuDisable: false,\n showMenu: false\n }, null, 8, [\"rowCount\", \"filters\"]),\n _createVNode(FindContactResults, {\n data: contacts.value,\n searching: searching.value,\n onRowClick: onRowClick,\n onRowSelected: onRowSelected,\n onAdaptiveRowSelection: adaptiveRowSelection\n }, null, 8, [\"data\", \"searching\"])\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: {\n text: 'New Contact',\n disabled: false,\n visible: props.showNewContactButton,\n onClick: () => onNewContactClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: {\n text: 'Select',\n disabled: !selectedContact.value,\n onClick: () => onSelectClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => closeModal() }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"title\", \"modelValue\"]),\n _createVNode(FilterContactFindResults, {\n modelValue: showFiltersModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showFiltersModal).value = $event)),\n filters: filters.value,\n onFiltersApplied: filtersApplied\n }, null, 8, [\"modelValue\", \"filters\"])\n ], 64))\n}\n}\n\n})","import script from \"./find-contact-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-contact-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./find-contact-modal.vue?vue&type=style&index=0&id=327d2384&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-327d2384\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult';\nimport GridBase from '@/components/ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-contact-results',\n props: {\n /** \n * An array containing the search results for contacts.\n * Each item in the array represents a contact found during the search.\n * @type {ContactFindResult[]}\n * @required\n */\n data: {\n type: Array as PropType,\n required: true\n },\n\n /** \n * Indicates whether a search operation is currently in progress.\n * @type {boolean}\n * @default false\n */\n searching: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Emits an event when a row is clicked.\n * Passes the selected contact data to the parent component.\n * @param {ContactFindResult} e - The clicked row's contact data.\n */\n 'rowClick',\n /** \n * Emits an event when a row is selected.\n * Sends both the contact data and the row index to the parent component.\n * @param {ContactFindResult} e - The selected row's contact data.\n * @param {number} rowIndex - The index of the selected row.\n */\n 'rowSelected',\n /** \n * Emits an event when a row is selected adaptively.\n * This can be used for dynamic selection behavior in the UI.\n * @param {ContactFindResult} e - The adaptively selected row's contact data.\n */\n 'adaptiveRowSelection'\n],\n setup(__props, { emit }) {\n\n\n\n\n\n\n/** Handles the grid row click event */\nconst onRowClick = (e: ContactFindResult) => emit('rowClick', e);\n\n/** Handles the grid row selected event */\nconst onRowSelected = (e: ContactFindResult, rowIndex: number) => {\n emit('rowSelected', e, rowIndex);\n}\n\n// Handles the event triggered when the user clicks on the ... button on a row\nconst adaptiveRowSelection = (e: ContactFindResult) => emit('adaptiveRowSelection', e);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(GridBase, {\n \"data-source\": __props.data,\n \"id-column-name\": \"id\",\n loading: __props.searching,\n \"show-column-filters\": false,\n \"show-search-panel\": false,\n \"word-wrap-enabled\": true,\n onRowClick: onRowClick,\n onRowSelected: onRowSelected,\n onAdaptiveRowSelection: adaptiveRowSelection\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"name\",\n caption: \"Name\",\n width: \"270px\",\n \"hiding-priority\": 9\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"type.description\",\n caption: \"Type\",\n \"hiding-priority\": 8\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"status.description\",\n caption: \"Status\",\n \"hiding-priority\": 7\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"address\",\n caption: \"Address\",\n \"hiding-priority\": 6,\n width: \"200\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"telephoneNumber\",\n caption: \"Telephone\",\n \"hiding-priority\": 5\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"mobileNumber\",\n caption: \"Mobile\",\n \"hiding-priority\": 4\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"emailAddress\",\n caption: \"Email\",\n \"hiding-priority\": 3\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"ID\",\n \"hiding-priority\": 2\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"altReference\",\n caption: \"Alt. Reference\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"data-source\", \"loading\"]))\n}\n}\n\n})","import script from \"./find-contact-results.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-contact-results.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4473beb0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"input-container\" }\nconst _hoisted_2 = { class: \"dx-field-item-label\" }\n\nimport { ref, watch } from 'vue';\nimport DxTextBox from 'devextreme-vue/text-box';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-input',\n props: {\n /** \n * The label displayed for the find input control.\n * @type {String}\n * @default 'Text To Find'\n */\n label: {\n type: String,\n default: 'Text To Find'\n },\n /** \n * Determines if the control should be in read-only mode.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * Used to reset find value using the parent resetString variable.\n * @type {string}\n * @default ''\n */\n resetString: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Triggered when the input value changes.\n * Emits the updated value after the user stops typing for a short delay.\n */\n 'changed', \n\n /** \n * Triggered when the input field is cleared.\n * Emits the cleared value (usually an empty string or null).\n */\n 'clearedInput'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst findValue = ref('')\nconst valueChangedTimer = ref(0);\n\n \n\nwatch(() => props.resetString, () => {\n findValue.value = props.resetString;\n},\n { deep: true });\n\n/** Handles the Value Changed event from the DxTextbox component */\nconst onValueChanged = (e: any) => {\n if (!e.value) {\n emit('clearedInput', e.value)\n }\n\n // To prevent searching whilst user is typing, reset the timer each time the input text is changed\n clearTimeout(valueChangedTimer.value)\n\n // To improve performance, only emit changed value when user stops typing\n valueChangedTimer.value = window.setTimeout(() => emit('changed', e.value), 800);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(props.label), 1),\n _createVNode(_unref(DxTextBox), {\n value: findValue.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((findValue).value = $event)),\n \"value-change-event\": \"keyup\",\n onValueChanged: onValueChanged,\n \"max-length\": 200,\n \"show-clear-button\": true,\n readOnly: props.readOnly\n }, null, 8, [\"value\", \"readOnly\"])\n ]))\n}\n}\n\n})","import script from \"./find-input.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-input.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./find-input.vue?vue&type=style&index=0&id=4473beb0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4473beb0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { PropType } from 'vue'\nimport { PropertyFindResult } from '@/types/find/properties/PropertyFindResult';\nimport GridBase from '@/components/ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-property-results',\n props: {\n /** \n * An array containing the search results for properties.\n * Each item in the array represents a property found during the search.\n * @type {PropertyFindResult[]}\n * @required\n */\n data: {\n type: Array as PropType,\n required: true\n },\n /** \n * Indicates whether a search operation is currently in progress.\n * @type {boolean}\n * @default false\n */\n searching: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Emits an event when a row is clicked.\n * Passes the selected property data to the parent component.\n * @param {PropertyFindResult} e - The clicked row's property data.\n */\n 'rowClick', \n /** \n * Emits an event when a row is selected.\n * Sends both the property data and the row index to the parent component.\n * @param {PropertyFindResult} e - The selected row's property data.\n * @param {number} rowIndex - The index of the selected row.\n */\n 'rowSelected', \n /** \n * Emits an event when a row is selected adaptively.\n * This can be used for dynamic selection behavior in the UI.\n * @param {PropertyFindResult} e - The adaptively selected row's property data.\n */\n 'adaptiveRowSelection'\n],\n setup(__props, { emit }) {\n\n\n\n\n\n/** Handles the grid row click event */\nconst onRowClick = (e: PropertyFindResult) => emit('rowClick', e);\n\n/** Handles the grid row selected event */\nconst onRowSelected = (e: PropertyFindResult, rowIndex: number) => emit('rowSelected', e, rowIndex);\n\n// Handles the event triggered when the user clicks on the ... button on a row\nconst adaptiveRowSelection = (e: PropertyFindResult) => emit('adaptiveRowSelection', e);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(GridBase, {\n \"data-source\": __props.data,\n \"id-column-name\": \"id\",\n loading: __props.searching,\n \"show-column-filters\": false,\n \"show-search-panel\": false,\n onRowClick: onRowClick,\n onRowSelected: onRowSelected,\n onAdaptiveRowSelection: adaptiveRowSelection\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"address\",\n caption: \"Address\",\n \"hiding-priority\": 6\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"category.description\",\n caption: \"Category\",\n \"hiding-priority\": 5\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"status.description\",\n caption: \"Status\",\n \"hiding-priority\": 4\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"price\",\n caption: \"Price\",\n \"hiding-priority\": 3,\n width: \"200\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"owner\",\n caption: \"Owner\",\n \"hiding-priority\": 2\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"ID\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"data-source\", \"loading\"]))\n}\n}\n\n})","import script from \"./find-property-results.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-property-results.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { ref, computed, PropType, watch, onMounted } from 'vue';\nimport GridFiltersBase from '../../ui/grid/grid-filters-base.vue';\nimport lookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport SystemCodeSingleSelect from '@/components/ui/system-codes/system-code-single-select.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport { FindPropertiesFilters } from '@/types/properties/FindPropertiesFilters';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-property-filters-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * Filters applied to the property.\n @type {FindPropertiesFilters} - An object defining the filter criteria. \n */\n filters: {\n type: Object as PropType\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Triggered when filters are applied from the grid filters base.\n * @event filtersApplied \n * @property {FindPropertiesFilters} filters - The applied filters from the modal. \n */\n 'filtersApplied'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nonMounted(async () => {\n clonePropFilters();\n})\n\nwatch(() => props.modelValue, () => {\n if (!props.modelValue) {\n return;\n }\n // Need to clone the passed filters to avoid them updating before the user clicks the apply button\n clonePropFilters();\n});\n\n/** Clones the prop filters so changes aren't applied until the user clicks the apply button */\nconst clonePropFilters = () => {\n /* To clone filters we can't use the spread command, as this only does a shallow clone.\n * To do a deep clone, we need to convert the filters to json and back to an array */\n if (props.filters) {\n modalFilter.value = JSON.parse(JSON.stringify(props.filters))\n }\n}\n\n/** Handles the filters applied event from the grid filters base */\nconst onFiltersApplied = () => emit('filtersApplied', modalFilter.value);\n\n/** Handles the clear filters event from the grid filters base */\nconst onClearFilters = () => {\n modalFilter.value.category = { id: -1, description: '' };\n modalFilter.value.status = { id: -1, description: '' };\n modalFilter.value.branch = { id: -1, description: '' }\n}\n\nconst modalFilter = ref({\n category: { id: -1, description: '' },\n status: { id: -1, description: '' },\n branch: { id: -1, description: '' }\n});\n\nconst showFilters = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst categoryValueChanged = (selectedDescription: string) => {\n modalFilter.value.category.description = selectedDescription;\n};\n\nconst statusValueChanged = (selectedDescription: string) => {\n modalFilter.value.status.description = selectedDescription;\n};\n\nconst branchValueChanged = (selectedDescription: string) => {\n modalFilter.value.branch.description = selectedDescription;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(GridFiltersBase, {\n \"data-source\": \"modalFilter\",\n modelValue: showFilters.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showFilters).value = $event)),\n title: \"Find Property Filters\",\n onClearFilters: onClearFilters,\n onFiltersApplied: onFiltersApplied\n }, {\n filters: _withCtx(() => [\n _createVNode(SystemCodeSingleSelect, {\n label: \"Category\",\n modelValue: modalFilter.value.category.id,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((modalFilter.value.category.id) = $event)),\n \"code-type\": _unref(CodeType).PropertyCategory,\n showClearButton: true,\n onValueChanged: categoryValueChanged\n }, null, 8, [\"modelValue\", \"code-type\"]),\n _createVNode(SystemCodeSingleSelect, {\n label: \"Status\",\n modelValue: modalFilter.value.status.id,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((modalFilter.value.status.id) = $event)),\n \"code-type\": _unref(CodeType).PropertyStatus,\n showClearButton: true,\n onValueChanged: statusValueChanged\n }, null, 8, [\"modelValue\", \"code-type\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Branch\",\n modelValue: modalFilter.value.branch.id,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((modalFilter.value.branch.id) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Sites,\n showClearButton: true,\n onValueChanged: branchValueChanged\n }, null, 8, [\"modelValue\", \"lookup-source\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./find-property-filters-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-property-filters-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2056ef5c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"find-properties-container\" }\n\nimport { computed, ref, inject, watch } from 'vue'\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { PropertyFindResult } from '@/types/find/properties/PropertyFindResult';\nimport { PropertyFindQuery } from '@/types/find/properties/PropertyFindQuery';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport FindInput from '../find-input.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport FindPropertyResults from './find-property-results.vue';\nimport GridFilterSummary from '@/components/ui/grid/grid-filter-summary.vue';\nimport { GridFilter } from '@/types/ui/GridFilter';\nimport { FindPropertiesFilters } from '@/types/properties/FindPropertiesFilters';\nimport FindPropertyFiltersModal from './find-property-filters-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-property-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The title displayed for the find property component.\n * @type {String}\n * @default 'Find Property'\n */\n title: {\n type: String,\n default: 'Find Property'\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Triggered when a property is selected from the list.\n * @param {Object} selectedProperty - The selected property object.\n * @param {Array} propertyIds - List of all property IDs.\n * @param {Number} index - The index of the selected property.\n */\n 'propertySelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst properties = ref([]);\nconst searching = ref(false);\nconst selectedProperty = ref();\nconst currentIndex = ref(0);\nconst showFiltersModal = ref(false);\nconst searchQuery = ref('');\nconst searchFilters = ref({\n category: { id: -1, description: '' },\n status: { id: -1, description: '' },\n branch: { id: -1, description: '' }\n});\n\nconst onInputChanged = async (value: string) => {\n searchQuery.value = value;\n\n // To avoid unnecessary api calls, only perform search if user has entered more than 2 characters\n if (!value || value.length < 2) {\n selectedProperty.value = undefined;\n properties.value = [];\n return;\n }\n\n fetchProperties();\n}\n\nconst fetchProperties = async () => {\n searching.value = true;\n\n const query: PropertyFindQuery = {\n textToFind: searchQuery.value,\n maxResults: 200,\n filters: {\n branchID: searchFilters.value.branch.id,\n category: searchFilters.value.category.id,\n status: searchFilters.value.status.id\n }\n };\n\n // Get results back from api\n try {\n properties.value = await apiClient.httpPost('find/property', query);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n }\n\n searching.value = false;\n};\n\n/** Handles the Select button click event */\nconst onSelectClick = () => {\n emitSelectedProperty();\n}\n\n/** Handles the row click event of the Find Property Results */\nconst onRowClick = (e: PropertyFindResult) => {\n selectedProperty.value = e;\n emitSelectedProperty();\n};\n\n/** Handles the row selected event of the Find Property Results, the if statement ensure that if e is undefined, it doesnt disbale the select button */\nconst onRowSelected = (e: PropertyFindResult, rowIndex: number) => {\n if (e) {\n selectedProperty.value = e;\n }\n\n currentIndex.value = rowIndex;\n}\n\n// Handles the user clicking on the ... button on a row, the if statement ensure that if e is undefined, it doesnt disbale the select button\nconst adaptiveRowSelection = (e: PropertyFindResult) => {\n if (e) {\n selectedProperty.value = e;\n }\n}\n\n/** Emits the selected Property and closes the modal */\nconst emitSelectedProperty = () => {\n showModal.value = false;\n emit('propertySelected', selectedProperty.value, properties.value.map(item => item.id), currentIndex.value);\n properties.value = [];\n}\n\nconst closeModal = () => {\n showModal.value = false;\n properties.value = [];\n};\n\nwatch(() => showModal.value, (value) => {\n if (!value) {\n properties.value = [];\n }\n});\n\nconst summaryFilters = computed(() => {\n const gridFilters: GridFilter[] = [];\n\n // No filters so return blank array so summary shows All\n if (searchFilters.value.status.id == -1 && searchFilters.value.branch.id == -1 && searchFilters.value.category.id == -1) {\n return [];\n }\n\n if (searchFilters.value.status.id > -1) {\n gridFilters.push({ title: 'Status', values: [searchFilters.value.status], dataSource: [] });\n }\n if (searchFilters.value.branch.id > -1) {\n gridFilters.push({ title: 'Type', values: [searchFilters.value.branch], dataSource: [] });\n }\n if (searchFilters.value.category.id > -1) {\n gridFilters.push({ title: 'Branch', values: [searchFilters.value.category], dataSource: [] });\n }\n\n return gridFilters;\n});\n\nconst filtersApplied = (filtersApplied: FindPropertiesFilters) => {\n searchFilters.value = JSON.parse(JSON.stringify(filtersApplied));\n\n if (properties.value.length > 0) {\n fetchProperties();\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n title: props.title,\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n height: \"80vh\",\n onModalClosed: _cache[2] || (_cache[2] = ($event: any) => (emit('propertySelected', undefined)))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n (showModal.value)\n ? (_openBlock(), _createBlock(FindInput, {\n key: 0,\n onChanged: onInputChanged\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(GridFilterSummary, {\n rowCount: properties.value.length,\n filters: summaryFilters.value,\n onFilterClick: _cache[0] || (_cache[0] = ($event: any) => (showFiltersModal.value = true)),\n dropdownMenuDisable: false,\n showMenu: false\n }, null, 8, [\"rowCount\", \"filters\"]),\n _createVNode(FindPropertyResults, {\n data: properties.value,\n searching: searching.value,\n onRowClick: onRowClick,\n onRowSelected: onRowSelected,\n onAdaptiveRowSelection: adaptiveRowSelection\n }, null, 8, [\"data\", \"searching\"])\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: {\n text: 'Select',\n disabled: !selectedProperty.value,\n onClick: () => onSelectClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => closeModal() }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"title\", \"modelValue\"]),\n _createVNode(FindPropertyFiltersModal, {\n modelValue: showFiltersModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showFiltersModal).value = $event)),\n filters: searchFilters.value,\n onFiltersApplied: filtersApplied\n }, null, 8, [\"modelValue\", \"filters\"])\n ], 64))\n}\n}\n\n})","import script from \"./find-property-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-property-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./find-property-modal.vue?vue&type=style&index=0&id=2056ef5c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2056ef5c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2def785e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"symbols-picker-content\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = [\"onClick\"]\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = [\"onClick\"]\nconst _hoisted_14 = [\"onClick\"]\n\nimport ModalBase from '../ui/modals/modal-base.vue';\nimport { computed } from 'vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'symbol-selector-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Triggered when a symbol is selected.\n * Passes the selected icon as a parameter to the parent component.\n */\n 'symbolSelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst addIconTotText = (icon:string)=>{\n emit('symbolSelected', icon);\n showModal.value = false;\n};\n\nconst firstRowSymbols = [' ', '\"', '¡', '¢', '£', '¤', '¥', '¦', '§', '©'];\nconst secondRowSymbols = ['¨', 'ª', '«', '¬', '®', '¯', '°', '±', '²','³'];\nconst thirdRowSymbols = ['´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½'];\nconst fourthRowSymbols = ['¾', '¿', '×', 'Ø', '÷', 'ø', 'ƒ', 'ˆ', '˜', '–'];\nconst fithRowSymbols = ['—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '•'];\nconst sixthRowSymbols = ['…', '‰', '‹', '›', '€', '™', 'À', 'Á', 'Â', 'Ã'];\nconst seventhRowSymbols = ['Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í'];\nconst eigthRowSymbols = ['Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Õ', 'Ô', 'Ö', '×'];\nconst ninthRowSymbols = ['Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á'];\nconst tenthRowSymbols = ['â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é','ê', 'ë'];\nconst elventhRowSymbols = ['ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô'];\nconst twelthRowSymbols = ['õ', 'ö', '÷','ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ'];\nconst thirteenthRowSymbols = ['ÿ', 'Œ', 'œ', 'Š', 'š', 'Ÿ', '¢','Ω', '@' ];\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n title: \"Symbols\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n width: _unref(ModalWidth).XSmall\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(firstRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_2)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(secondRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_3)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(thirdRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_4)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fourthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_5)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(fithRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_6)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(sixthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_7)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(seventhRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_8)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(eigthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_9)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ninthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_10)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(tenthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_11)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(elventhRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_12)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(twelthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_13)\n }), 64))\n ]),\n _createElementVNode(\"tr\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(thirteenthRowSymbols, (symbol, index) => {\n return _createElementVNode(\"td\", {\n key: index,\n onClick: ($event: any) => (addIconTotText(symbol))\n }, [\n _createElementVNode(\"div\", null, _toDisplayString(symbol), 1)\n ], 8, _hoisted_14)\n }), 64))\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]))\n}\n}\n\n})","import script from \"./symbol-selector-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./symbol-selector-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./symbol-selector-modal.vue?vue&type=style&index=0&id=2def785e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2def785e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, ref, watch } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport FieldValidationFreeTextArea from '../ui/inputs/field-validation-free-text-area.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'edit-html-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n /** \n * The html content from parent component.\n * @type {String}\n * @required\n */\n displayedHtml: {\n type: String,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n /** \n * Emitted when the modal is closed.\n * This can be used to notify the parent component that the modal has been dismissed.\n */\n 'modalClosed', \n /** \n * Emitted when the html content has changed.\n * This can be used to notify the parent component that the data has been updated.\n */\n 'htmlUpdated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst displayCancelConfirmationModal = ref(false);\nconst keepingModalOpening = ref(false);\nconst saving = ref(false);\nconst editableHtml = ref('');\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst onCancelClick = () => showModal.value = false;\n\nwatch(() => showModal.value, () => {\n if (!showModal.value || keepingModalOpening.value) {\n return;\n }\n editableHtml.value = props.displayedHtml;\n});\n\nwatch(()=> editableHtml.value, () => {\n displayCancelConfirmationModal.value = editableHtml.value != props.displayedHtml;\n}, { deep: true });\n\nconst modalClosed = async () => {\n keepingModalOpening.value = false;\n displayCancelConfirmationModal.value = false;\n emit('modalClosed');\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst onSaveClick = async () => {\n displayCancelConfirmationModal.value = false; \n showModal.value = false;\n emit('htmlUpdated', editableHtml.value);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n title: \"HTML\",\n onCancelPromptDenied: cancelPromptDenied,\n onModalClosed: modalClosed,\n showCloseConfirmationPrompt: displayCancelConfirmationModal.value\n }, {\n content: _withCtx(() => [\n _createVNode(FieldValidationFreeTextArea, {\n modelValue: editableHtml.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((editableHtml).value = $event)),\n height: \"25rem\"\n }, null, 8, [\"modelValue\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: () => { onSaveClick() }, disabled: saving.value }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() }, disabled: saving.value }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\"]))\n}\n}\n\n})","import script from \"./edit-html-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./edit-html-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3caab686\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"html-input\" }\nconst _hoisted_2 = { class: \"label-title-icon\" }\nconst _hoisted_3 = { class: \"label\" }\nconst _hoisted_4 = { class: \"ai-button-container\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa-brands fa-html5\" }, null, -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = {\n key: 0,\n id: \"htmlEditorToolbarFooter\"\n}\n\nimport { DxHtmlEditor, DxToolbar, DxMediaResizing, DxItem, DxImageUpload } from 'devextreme-vue/html-editor';\nimport { ref, computed, watch, onMounted } from 'vue';\nimport SymbolSelectorModal from './symbol-selector-modal.vue';\nimport EditHtmlModal from './edit-html-modal.vue';\nimport Quill from 'devextreme-quill';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'html-editor',\n props: {\n /** \n * The string value used with `v-model` to bind the component state.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n /** \n * The label displayed for the html editor control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines if the html editor control should be in read-only mode.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The text to be inserted at the current cursor position.\n * @type {String}\n * @default ''\n */\n insertTextAtCursorPosition: {\n type: String,\n default: ''\n },\n /** \n * Defines the height of the component.\n * @type {String}\n * @default '360px'\n */\n height: {\n type: String,\n default: '360px'\n },\n /** \n * Controls the visibility of the AI modal.\n * @type {Boolean}\n * @default false\n */\n displayAIModal: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {string} value - Indicates whether the modal has been changed.\n */\n 'update:modelValue',\n /** \n * Triggered when the HTML editor gains focus.\n * Can be used to handle UI changes or fetch necessary data.\n */\n 'onFocused',\n /** \n * Triggered when the AI icon is clicked.\n * Can be used to open an AI-powered modal or trigger related actions.\n */\n 'aiIconClick'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst htmlMarkup = computed({\n get: () => props.modelValue,\n set: (val: string) => emit('update:modelValue', val)\n});\n\n\n\nonMounted(() => {\n setToolbarPosition();\n});\n\nwatch(() => window.screen.width, () => {\n setToolbarPosition();\n});\n\nconst setToolbarPosition = () => {\n if (window.screen.width <= 600) {\n htmlToolbarContainer.value = \"#htmlEditorToolbarFooter\";\n } else {\n htmlToolbarContainer.value = \"\";\n }\n};\n\nconst sizeValues = ['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt'];\nconst fontValues = ['Arial', 'Courier New', 'Georgia', 'Impact', 'Lucida Console', 'Tahoma', 'Times New Roman', 'Verdana'];\nconst headerValues = [false, 1, 2, 3, 4, 5];\nconst isMultiline = ref(true);\nconst fontSizeOptions = { inputAttr: { 'aria-label': 'Font size' } };\nconst fontFamilyOptions = { inputAttr: { 'aria-label': 'Font family' } };\nconst headerOptions = { inputAttr: { 'aria-label': 'Font family' } };\nconst displayIconSelector = ref(false);\nconst cursorPosition = ref();\nconst displayEditHtmlModal = ref(false);\nconst htmlEditor = ref();\nconst htmlToolbarContainer = ref('');\n\nconst symbolSelected = (symbol: string) => {\n if (!cursorPosition.value) {\n htmlMarkup.value = htmlMarkup.value + symbol;\n return;\n }\n\n htmlEditor.value?.instance?.insertText(cursorPosition.value.index, symbol, {});\n};\n\nconst openSymbolModal = () => {\n cursorPosition.value = htmlEditor.value?.instance?.getSelection();\n displayIconSelector.value = true\n};\n\nconst htmlUpdated = (updatedHtml: string) => {\n htmlMarkup.value = updatedHtml;\n};\n\nwatch(() => props.insertTextAtCursorPosition, () => {\n if (props.insertTextAtCursorPosition == '') {\n return;\n }\n\n if (!cursorPosition.value) {\n htmlMarkup.value = htmlMarkup.value + props.insertTextAtCursorPosition;\n return;\n }\n\n htmlEditor.value?.instance?.insertText(cursorPosition.value.index, props.insertTextAtCursorPosition, {});\n});\n\nconst getCursorPosition = () => {\n cursorPosition.value = htmlEditor.value?.instance?.getSelection();\n};\n\n/* By default hitting enter will create new

tags. \n * However, this leads to double lines appearing when the recipient views the email\n * The suggested workaround is to configure the underlying library Quill to use divs instead of p tags\n * https://supportcenter.devexpress.com/ticket/details/t753871/htmleditor-how-to-insert-the-br-tag-when-the-enter-key-is-pressed */\nlet Block = Quill.import('blots/block');\nBlock.tagName = 'div';\nQuill.register(Block);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(props.label), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n (props.displayAIModal)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa-sharp fa-thin fa-microchip-ai ai-button\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('aiIconClick')))\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createVNode(_unref(DxHtmlEditor), {\n ref_key: \"htmlEditor\",\n ref: htmlEditor,\n onValueChanged: getCursorPosition,\n value: htmlMarkup.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((htmlMarkup).value = $event)),\n height: props.height,\n valueType: \"html\",\n readOnly: props.readOnly,\n onFocusIn: _cache[3] || (_cache[3] = ($event: any) => (emit('onFocused')))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxMediaResizing), { enabled: true }),\n _createVNode(_unref(DxImageUpload), {\n tabs: ['file', 'url'],\n \"file-upload-mode\": \"base64\"\n }),\n (!props.readOnly)\n ? (_openBlock(), _createBlock(_unref(DxToolbar), {\n key: 0,\n multiline: isMultiline.value,\n container: htmlToolbarContainer.value\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { name: \"undo\" }),\n _createVNode(_unref(DxItem), { name: \"redo\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), {\n name: \"size\",\n \"accepted-values\": sizeValues,\n options: fontSizeOptions\n }),\n _createVNode(_unref(DxItem), {\n name: \"font\",\n \"accepted-values\": fontValues,\n options: fontFamilyOptions\n }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"bold\" }),\n _createVNode(_unref(DxItem), { name: \"italic\" }),\n _createVNode(_unref(DxItem), { name: \"strike\" }),\n _createVNode(_unref(DxItem), { name: \"underline\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"alignLeft\" }),\n _createVNode(_unref(DxItem), { name: \"alignCenter\" }),\n _createVNode(_unref(DxItem), { name: \"alignRight\" }),\n _createVNode(_unref(DxItem), { name: \"alignJustify\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"orderedList\" }),\n _createVNode(_unref(DxItem), { name: \"bulletList\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), {\n name: \"header\",\n \"accepted-values\": headerValues,\n options: headerOptions\n }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"color\" }),\n _createVNode(_unref(DxItem), { name: \"background\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"link\" }),\n _createVNode(_unref(DxItem), { name: \"image\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"clear\" }),\n _createVNode(_unref(DxItem), { name: \"codeBlock\" }),\n _createVNode(_unref(DxItem), { name: \"blockquote\" }),\n _createVNode(_unref(DxItem), { name: \"separator\" }),\n _createVNode(_unref(DxItem), { name: \"symbols\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"custom-header-icon\",\n onClick: openSymbolModal,\n id: \"symbolsIcon\"\n }, \" Ω \")\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { name: \"html\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"custom-header-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (displayEditHtmlModal.value = true)),\n id: \"symbolsIcon\"\n }, _hoisted_6)\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { name: \"increaseIndent\" }),\n _createVNode(_unref(DxItem), { name: \"decreaseIndent\" }),\n _createVNode(_unref(DxItem), { name: \"subscript\" }),\n _createVNode(_unref(DxItem), { name: \"superscript\" }),\n _createVNode(_unref(DxItem), { name: \"insertTable\" }),\n _createVNode(_unref(DxItem), { name: \"deleteTable\" }),\n _createVNode(_unref(DxItem), { name: \"insertRowAbove\" }),\n _createVNode(_unref(DxItem), { name: \"insertRowBelow\" }),\n _createVNode(_unref(DxItem), { name: \"deleteRow\" }),\n _createVNode(_unref(DxItem), { name: \"insertColumnLeft\" }),\n _createVNode(_unref(DxItem), { name: \"insertColumnRight\" }),\n _createVNode(_unref(DxItem), { name: \"deleteColumn\" })\n ]),\n _: 1\n }, 8, [\"multiline\", \"container\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"value\", \"height\", \"readOnly\"]),\n (htmlToolbarContainer.value != '')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(EditHtmlModal, {\n modelValue: displayEditHtmlModal.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((displayEditHtmlModal).value = $event)),\n \"displayed-html\": htmlMarkup.value,\n onHtmlUpdated: htmlUpdated\n }, null, 8, [\"modelValue\", \"displayed-html\"]),\n _createVNode(SymbolSelectorModal, {\n modelValue: displayIconSelector.value,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((displayIconSelector).value = $event)),\n onSymbolSelected: symbolSelected\n }, null, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","import script from \"./html-editor.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./html-editor.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./html-editor.vue?vue&type=style&index=0&id=3caab686&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3caab686\"]])\n\nexport default __exports__","\n","import { render } from \"./support-case-icon.vue?vue&type=template&id=78aab37a\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import { render } from \"./utility-switch-icon.vue?vue&type=template&id=9574f702\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export enum TasksNotes {\n Task = 0,\n Note = 1\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, mergeProps as _mergeProps, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d1c98b96\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"note-modal-content\"\n}\nconst _hoisted_2 = { class: \"small-field-container\" }\n\nimport { inject, ref, computed, watch } from 'vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport modalBase from '../ui/modals/modal-base.vue';\nimport lookupSingleSelect from '../ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport propertyLookup from '../ui/lookup/property-lookup.vue';\nimport contactLookup from '../ui/lookup/contact-lookup.vue';\nimport { ContactTasks } from 'acquaint-api/models/ContactTasks';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { IDDescriptionPair } from \"@/types/generic/IDDescriptionPair\";\nimport switchToggle from '../ui/toggles/switch-toggle.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport AcquaintTextArea from '@/components/ui/inputs/acquaint-text-area.vue';\nimport { ContactTasksValidation } from 'acquaint-api/validation/ContactTasksValidation';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport FieldValidationFreeDateBox from '../ui/inputs/field-validation-free-date-box.vue';\nimport { TimeStamps } from '@/utils/TimeStamp';\nimport { TasksNotes } from '@/enums/TasksNotes';\nimport { ValidationCallbackParams } from '../../types/validation/ValidationCallbackParams';\nimport { useSystemConfigurationStore } from '@/stores/SystemConfigurationStore';\nimport { SystemConfiguration } from 'acquaint-api/constants/SystemConfiguration';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { TaskTemplates } from 'acquaint-api/models/TaskTemplates';\nimport TaskTemplatesConfigurationModal from '../contact-configuration/task-templates-configuration-modal.vue';\nimport { DxContextMenu } from 'devextreme-vue/context-menu';\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\n\nconst systemUserId = 999999999;\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'edit-note-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the notes.\n * @type {number}\n * @required\n */\n id: {\n type: Number,\n required: true\n },\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @default 0\n */\n contactId: {\n type: Number,\n default: 0\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @required\n */\n propertyID: {\n type: Number,\n default: 0\n },\n /** \n * The unique identifier for the certificate.\n * @type {number}\n * @required\n */\n certificateID: {\n type: Number,\n default: 0\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Triggered when the note is saved. This event passes whether the note is related to the provided contact and property.\n * @property {boolean} contactMatch - Indicates whether the note is related to the provided contact ID.\n * @property {boolean} propertyMatch - Indicates whether the note is related to the provided property ID.\n */\n 'saveNote'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst systemConfigStore = useSystemConfigurationStore();\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst noteDetails = ref();\nconst initalNoteDetails = ref();\nconst ownerName = ref();\nconst saving = ref(false);\nconst showCloseConfirmation = ref(false);\nconst keepingModalOpening = ref(false);\nconst focusBodyField = ref(false);\nconst resetValid = ref(false);\nconst contactRequired = ref(false);\nconst openTemplateModal = ref(false);\nconst taskTemplate = ref({\n id: 0,\n description: '',\n subject: '',\n body: '',\n taskTypeID: 0,\n inActive: 0,\n});\nconst showFunctionsMenu = ref(false);\nconst contextMenuId = ref('note-modal-functions-list');\n\nconst showNoteModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nwatch(() => showNoteModal.value, async () => {\n // Avoid unnecessary api calls by only calling api when modal is shown\n if (!showNoteModal.value || keepingModalOpening.value) {\n return;\n }\n\n contextMenuId.value = `note-modal-functions-list-${Date.now()}`\n\n contactRequired.value = false;\n\n await populateData();\n resetValid.value = true;\n\n setTimeout(() => { resetValid.value = false }, 100);\n await fetchOwnerName();\n});\n\n\n// Functions for fetching the data\n\nconst fetchData = async () => {\n try {\n if (props.id != 0) {\n initalNoteDetails.value = await acquaintApiClient.httpGet(`database/contacttasks/${props.id}`);\n } else {\n initalNoteDetails.value = await acquaintApiClient.httpGet('database/contacttasks/defaultmodel');\n }\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst populateData = async () => {\n if (!await fetchData()) {\n initalNoteDetails.value = undefined;\n noteDetails.value = undefined;\n return;\n }\n\n // Set this new Task record to be a note record.\n if (initalNoteDetails.value) {\n /* Get default note type from system config and assign it to the model\n * Note: the system config store alwayrs returns a string. \n * To maintain type safety this needs to be converted to a number */\n const defaultTaskTypeId = await systemConfigStore.getSystemConfigurationValue(SystemConfiguration.DefaultNoteType);\n initalNoteDetails.value.taskTypeID = Number(defaultTaskTypeId);\n\n initalNoteDetails.value.type = TasksNotes.Note;\n\n if (props.contactId > -1) {\n initalNoteDetails.value.contactID = props.contactId;\n }\n\n if (props.propertyID > 0) {\n initalNoteDetails.value.propertyID = props.propertyID;\n }\n\n if (props.certificateID > 0) {\n initalNoteDetails.value.certificateID = props.certificateID;\n }\n\n noteDetails.value = JSON.parse(JSON.stringify(initalNoteDetails.value));\n }\n};\n\nconst fetchOwnerName = async () => {\n // Ignore system user as this will cause api to error\n if (noteDetails.value?.userID === systemUserId) {\n ownerName.value = { id: systemUserId, description: 'System User' };\n return;\n }\n\n try {\n ownerName.value = await acquaintApiClient.httpGet(`app/contacts/${noteDetails.value?.userID}/name`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\n// After a template has been selected, we must replace the note's subject and body with the template's subject and body\nconst fetchItemData = async (templateId: number) => {\n try {\n taskTemplate.value = await acquaintApiClient.httpGet(`database/tasktemplates/${templateId}`);\n return true;\n } catch (err) {\n taskTemplate.value = {\n id: 0,\n description: '',\n subject: '',\n body: '',\n taskTypeID: 0,\n inActive: 0,\n };\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst populateSubjectBodyFields = async (templateId: number) => {\n if (await fetchItemData(templateId) && noteDetails.value) {\n noteDetails.value.subject = taskTemplate.value.subject;\n noteDetails.value.body = taskTemplate.value.body;\n }\n};\n\n\n//Functions for saving the record\n\n/** Pushes the updated task to the api */\nconst submitData = async () => {\n try {\n if (props.id > 0) {\n await acquaintApiClient.httpPut(`database/contacttasks/${props.id}`, noteDetails.value);\n } else {\n await acquaintApiClient.httpPost(`database/contacttasks`, noteDetails.value);\n }\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\n/** Handles the Save button click event */\nconst onSaveClick = async (e: any) => {\n contactRequired.value = true;\n const validate = e.validationGroup.validate();\n\n if (!e.validationGroup._validationInfo.result.isValid || !validate.isValid) {\n return\n }\n\n if (!noteDetails.value?.contactID && !noteDetails.value?.propertyID) {\n displayErrorMessage('You must link the Note to either a Contact or Property.');\n return\n }\n\n if (!await submitData()) {\n return\n }\n\n showCloseConfirmation.value = false;\n closeTaskModal();\n emit('saveNote', noteDetails.value?.contactID == props.contactId, noteDetails.value?.propertyID == props.propertyID)\n};\n\n\n// Code relating to the closure of the modal\n\n/** Closes the task modal */\nconst closeTaskModal = () => {\n showNoteModal.value = false;\n};\n\nwatch(() => noteDetails.value, (value) => {\n showCloseConfirmation.value = JSON.stringify(value) != JSON.stringify(initalNoteDetails.value);\n}, { deep: true });\n\n\n/** Adds a date stamp to the end of the current taskbody */\n\nconst dateStamp = async () => {\n if (!noteDetails.value) {\n return\n }\n\n noteDetails.value.body = await TimeStamps(noteDetails.value.body);\n focusBodyField.value = true;\n\n setTimeout(() => {\n focusBodyField.value = false;\n }, 50)\n};\n\n\n// Code for validating the data before it is submitted\n\n// This function is passed down to either the body or subject field and is used in their respective custom rule tag. \n// Either has to have text in it. True is returned when text has been entered (the value is valid) otherwise, false is returned and a user error message appears.\n\nconst customValidationFunction = (params: ValidationCallbackParams) => {\n return typeof (params.value) === 'string' ? params.value.length > 0 : false;\n};\n\nconst requiredMessage = ref(\"The subject or the body field is required\");\n\n//If the subject field does have text in it, the customValidationFunction will not passed down to the body field, requiring the user to enter a value, as only one of the two fields needs to have text in it\nconst conditionalBodyValidation = computed(() => {\n return noteDetails.value?.subject ? undefined : {\n customValidation: customValidationFunction\n }\n});\n\n//If the body field does have text in it, the customValidationFunction will not be passed down to the subject field, requiring the user to enter a value, as only one of the two fields needs to have text in it\nconst conditionalSubjectValidation = computed(() => {\n return noteDetails.value?.body ? undefined : {\n customValidation: customValidationFunction\n }\n});\n\n// This code handles the actions footer menu.\nconst menuItems: ContextMenuItem[] = [\n {\n text: 'Template',\n key: 'template',\n icon: ''\n },\n {\n text: 'Date Stamp',\n key: 'dateStamp',\n icon: ''\n }\n];\n\nconst onMenuItemClick = (e: any) => {\n switch (e.itemData.key) {\n case 'template':\n openTemplateModal.value = true;\n break;\n case 'dateStamp':\n dateStamp();\n break;\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n modelValue: showNoteModal.value,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((showNoteModal).value = $event)),\n title: \"Note\",\n width: _unref(ModalWidth).Small,\n height: \"650px\",\n saving: saving.value,\n showCloseConfirmationPrompt: showCloseConfirmation.value,\n onModalClosed: _cache[11] || (_cache[11] = ($event: any) => (keepingModalOpening.value = false)),\n onCancelPromptDenied: _cache[12] || (_cache[12] = ($event: any) => (keepingModalOpening.value = true)),\n \"help-page\": \"notes\"\n }, {\n content: _withCtx(() => [\n (noteDetails.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(contactLookup, {\n label: \"Contact\",\n findNameOnIdChange: true,\n modelValue: noteDetails.value.contactID,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((noteDetails.value.contactID) = $event)),\n readOnly: false,\n isRequired: contactRequired.value,\n showNavigateContactIcon: false\n }, null, 8, [\"modelValue\", \"isRequired\"]),\n _createVNode(propertyLookup, {\n label: \"Property\",\n modelValue: noteDetails.value.propertyID,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((noteDetails.value.propertyID) = $event)),\n displayNavigateIcon: false,\n displayPeek: true\n }, null, 8, [\"modelValue\"]),\n _createVNode(AcquaintTextbox, _mergeProps({\n label: \"Subject\",\n fieldValidation: _unref(ContactTasksValidation).Subject,\n modelValue: noteDetails.value.subject,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((noteDetails.value.subject) = $event)),\n invalidMessage: requiredMessage.value\n }, conditionalSubjectValidation.value, {\n resetValid: resetValid.value,\n \"validation-group\": \"edit-note-modal\"\n }), null, 16, [\"fieldValidation\", \"modelValue\", \"invalidMessage\", \"resetValid\"]),\n _createVNode(AcquaintTextArea, _mergeProps({\n label: \"Body\",\n fieldValidation: _unref(ContactTasksValidation).Body,\n modelValue: noteDetails.value.body,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((noteDetails.value.body) = $event)),\n invalidMessage: requiredMessage.value\n }, conditionalBodyValidation.value, {\n focusInput: focusBodyField.value,\n resetValid: resetValid.value,\n \"validation-group\": \"edit-note-modal\"\n }), null, 16, [\"fieldValidation\", \"modelValue\", \"invalidMessage\", \"focusInput\", \"resetValid\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", null, [\n _createVNode(FieldValidationFreeDateBox, {\n includeTime: true,\n label: \"Date Added\",\n modelValue: noteDetails.value.addedDate,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((noteDetails.value.addedDate) = $event)),\n readOnly: true,\n width: _unref(FieldSize).Large\n }, null, 8, [\"modelValue\", \"width\"]),\n _createVNode(FieldValidationFreeDateBox, {\n includeTime: true,\n label: \"Date Updated\",\n modelValue: noteDetails.value.updatedDate,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((noteDetails.value.updatedDate) = $event)),\n readOnly: true,\n width: _unref(FieldSize).Large\n }, null, 8, [\"modelValue\", \"width\"])\n ]),\n _createElementVNode(\"div\", null, [\n _createVNode(lookupSingleSelect, {\n modelValue: noteDetails.value.taskTypeID,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((noteDetails.value.taskTypeID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).TaskTypes,\n label: \"Type\",\n requiredInput: true,\n width: _unref(FieldSize).Large,\n \"validation-group\": \"edit-note-modal\"\n }, null, 8, [\"modelValue\", \"lookup-source\", \"width\"]),\n _createVNode(lookupSingleSelect, {\n modelValue: noteDetails.value.userID,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((noteDetails.value.userID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Users,\n label: \"Owner\",\n readOnly: true,\n updateTableSourceOnIdChange: true,\n width: _unref(FieldSize).Large,\n \"validation-group\": \"edit-note-modal\"\n }, null, 8, [\"modelValue\", \"lookup-source\", \"width\"])\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createVNode(switchToggle, {\n label: \"Always Show At Top\",\n modelValue: noteDetails.value.alwaysShowAtTop,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((noteDetails.value.alwaysShowAtTop) = $event)),\n readOnly: false\n }, null, 8, [\"modelValue\"]),\n _createVNode(switchToggle, {\n label: \"Desktop Alert\",\n modelValue: noteDetails.value.desktopAlert,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((noteDetails.value.desktopAlert) = $event)),\n readOnly: false\n }, null, 8, [\"modelValue\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { elementAttr: { id: contextMenuId.value }, text: 'Actions', onClick: () => { showFunctionsMenu.value = !showFunctionsMenu.value; } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: onSaveClick, validationGroup: 'edit-note-modal' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { closeTaskModal() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"saving\", \"showCloseConfirmationPrompt\"]),\n _createVNode(TaskTemplatesConfigurationModal, {\n modelValue: openTemplateModal.value,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((openTemplateModal).value = $event)),\n onEmitSelectedDetails: populateSubjectBodyFields,\n showSelectButton: true\n }, null, 8, [\"modelValue\"]),\n _createVNode(_unref(DxContextMenu), {\n visible: showFunctionsMenu.value,\n \"onUpdate:visible\": _cache[14] || (_cache[14] = ($event: any) => ((showFunctionsMenu).value = $event)),\n \"data-source\": menuItems,\n target: `#${contextMenuId.value}`,\n position: { my: 'bottom right', at: 'top right' },\n onItemClick: onMenuItemClick\n }, null, 8, [\"visible\", \"target\"])\n ], 64))\n}\n}\n\n})","import script from \"./edit-note-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./edit-note-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./edit-note-modal.vue?vue&type=style&index=0&id=d1c98b96&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-d1c98b96\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3f4fe3a9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = { class: \"progress-bar-container\" }\nconst _hoisted_3 = { class: \"owner-page\" }\nconst _hoisted_4 = { class: \"wizard-page\" }\nconst _hoisted_5 = { class: \"wizard-page\" }\nconst _hoisted_6 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_7 = { class: \"button-holder\" }\nconst _hoisted_8 = { class: \"steps\" }\n\nimport { computed, inject, ref, watch } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport TenantSwitchProgress from '../switches/tenant-switch-progress.vue';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport ContactLookup from '../ui/lookup/contact-lookup.vue';\nimport { DxButton } from 'devextreme-vue';\nimport ContactModal from '../contacts/record/contact-modal.vue';\nimport EditAddress from '../ui/address/edit-address.vue';\nimport CurrencyInput from '../ui/inputs/currency-input.vue';\nimport BedroomsSelect from '../ui/dropdowns/bedrooms-select.vue';\nimport SystemCodeSingleSelect from '../ui/system-codes/system-code-single-select.vue';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport LookupSingleSelect from '../ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { Address } from '@/types/generic/Address';\nimport { EditAddressValidation } from '@/types/validation/EditAddressValidation';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { PropertiesValidation } from 'acquaint-api/validation/PropertiesValidation';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { PropertyCategory } from 'acquaint-api/constants/PropertyCategory'\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult';\nimport { PropertyStatus } from 'acquaint-api/constants/PropertyStatus';\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport { useContactTypeConfigurationStore } from '@/stores/ContactTypeConfigurationStore';\nimport { SystemContactTypes } from '@/enums/contacts/SystemContactTypes';\nimport { DisplayCompanyAlert } from '@/utils/DisplayCompanyAlert';\nimport SelectCompanyModal from './select-company-modal.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-property-wizard',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n /** \n * The unique identifier for the ower.\n * @type {number}\n * @required\n */\n ownerId: {\n type: Number,\n default: 0\n },\n /** \n * A boolean that determines whether the contact lookup is read only.\n * @type {boolean}\n * @default false\n */\n contactLookupReadOnly: {\n type: Boolean,\n default: false,\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n 'modalClosed'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst apiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst displayCancelConfirmationModal = ref(false);\nconst keepingModalOpening = ref(false);\nconst saving = ref(false);\nconst selectedIndex = ref(0);\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst editableData = ref();\nconst originalData = ref();\nconst displayNewContactModal = ref(false);\nconst isContactEntered = ref(false);\nconst selectedContact = ref();\nconst ownerDetails = ref();\nconst displayCompaniesModal = ref(false);\nconst contactTypeConfigurationStore = useContactTypeConfigurationStore();\nconst companies = ref([])\nconst addressModel = ref

({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: '',\n});\n\nconst addressValidation = ref({\n propertyName: PropertiesValidation.PropertyName,\n street: PropertiesValidation.Street,\n locality: PropertiesValidation.Locality,\n town: PropertiesValidation.Town,\n region: PropertiesValidation.Region,\n postcode: PropertiesValidation.Postcode\n});\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'owner'\n },\n {\n template: 'address'\n },\n {\n template: 'mainDetails'\n }\n]);\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\n\nwatch(() => selectedIndex.value, () => {\n switch (selectedIndex.value) {\n case 0: {\n stageTwo.value = 0;\n stageThree.value = 0;\n break;\n }\n case 1: {\n stageTwo.value = 1;\n stageThree.value = 0;\n break;\n }\n case 2: {\n triggerCompanyModalToOpen(editableData.value?.category ?? 0);\n stageTwo.value = 1;\n stageThree.value = 1;\n break;\n }\n }\n});\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value || keepingModalOpening.value) {\n return;\n }\n\n // We must reset \n stageTwo.value = 0;\n stageThree.value = 0;\n selectedIndex.value = 0;\n isContactEntered.value = false;\n selectedContact.value = undefined;\n editableData.value = undefined;\n\n await fetchDefaultData();\n\n if (!originalData.value) {\n addressModel.value.countryCode = 0;\n addressModel.value.country = '';\n addressModel.value.propertyName = '';\n addressModel.value.street = '';\n addressModel.value.locality = '';\n addressModel.value.town = '';\n addressModel.value.region = '';\n addressModel.value.postCode = '';\n return;\n }\n\n addressModel.value.countryCode = originalData.value?.countryCode ?? 0;\n addressModel.value.country = originalData.value?.country ?? '';\n addressModel.value.propertyName = originalData.value?.propertyName ?? '';\n addressModel.value.street = originalData.value?.street ?? '';\n addressModel.value.locality = originalData.value?.locality ?? '';\n addressModel.value.town = originalData.value?.town ?? '';\n addressModel.value.region = originalData.value?.region ?? '';\n addressModel.value.postCode = originalData.value?.postcode ?? '';\n\n editableData.value = JSON.parse(JSON.stringify(originalData.value));\n\n if (!props.ownerId) {\n return;\n }\n\n if (!editableData.value) {\n return;\n }\n\n editableData.value.contactID = props.ownerId;\n\n await fetchOwnersDetails();\n\n const typeOfOwnerType = ownerDetails.value ? await contactTypeConfigurationStore.getSystemContactType(ownerDetails.value.typeID) : -1;\n\n if (typeOfOwnerType != SystemContactTypes.Vendor || (typeOfOwnerType == SystemContactTypes.Vendor && ownerHasNoHomeAddress.value)) {\n return\n }\n\n selectedIndex.value++;\n\n let alert = await displayQuestionAlert(\"Do you wish to use the Contact’s home address as the address for this property?\");\n\n if (alert.isConfirmed) {\n fillAddressFields();\n }\n});\n\nconst ownerHasNoHomeAddress = computed(() => {\n return ownerDetails.value?.homeCountry == '' && ownerDetails.value?.homeLocality == '' &&\n ownerDetails.value?.homePostcode == '' && ownerDetails.value?.homeProperty == '' &&\n ownerDetails.value?.homeRegion == '' && ownerDetails.value?.homeStreet == '' &&\n ownerDetails.value?.homeTown == '';\n});\n\nconst fetchOwnersDetails = async () => {\n try {\n ownerDetails.value = await apiClient.httpGet(`database/contacts/${props.ownerId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n ownerDetails.value = undefined;\n }\n};\n\nconst fillAddressFields = async () => {\n addressModel.value.countryCode = ownerDetails.value?.homeCountryCode ?? 0;\n addressModel.value.country = ownerDetails.value?.homeCountry ?? '';\n addressModel.value.propertyName = ownerDetails.value?.homeProperty ?? '';\n addressModel.value.street = ownerDetails.value?.homeStreet ?? '';\n addressModel.value.locality = ownerDetails.value?.homeLocality ?? '';\n addressModel.value.town = ownerDetails.value?.homeTown ?? '';\n addressModel.value.region = ownerDetails.value?.homeRegion ?? '';\n addressModel.value.postCode = ownerDetails.value?.homePostcode ?? '';\n};\n\nwatch(() => editableData.value, () => {\n displayCancelConfirmationModal.value = JSON.stringify(editableData.value) !=\n JSON.stringify(originalData.value);\n}, { deep: true });\n\nconst modalClosed = async () => {\n keepingModalOpening.value = false;\n displayCancelConfirmationModal.value = false;\n emit('modalClosed', false);\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst fetchDefaultData = async () => {\n try {\n originalData.value = await apiClient.httpGet(`database/properties/defaultmodel`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n originalData.value = undefined;\n }\n};\n\nconst submitData = async () => {\n try {\n editableData.value = await apiClient.httpPost(`database/properties`, editableData.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onNavigateClick = (direction: number, e: any) => {\n if (!direction) {\n selectedIndex.value--;\n return;\n }\n\n if (editableData.value?.contactID == 0) {\n isContactEntered.value = true;\n return;\n }\n\n isContactEntered.value = false;\n\n if (selectedIndex.value > 0) {\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n }\n\n if (selectedIndex.value == 2) {\n saveProperty();\n return;\n }\n\n selectedIndex.value++;\n};\n\nconst saveProperty = async () => {\n saving.value = true;\n\n if (!editableData.value) {\n return;\n }\n\n editableData.value.countryCode = addressModel.value.countryCode;\n editableData.value.country = addressModel.value.country;\n editableData.value.propertyName = addressModel.value.propertyName;\n editableData.value.street = addressModel.value.street;\n editableData.value.locality = addressModel.value.locality;\n editableData.value.town = addressModel.value.town;\n editableData.value.postcode = addressModel.value.postCode;\n editableData.value.region = addressModel.value.region;\n\n if (await submitData()) {\n displayCancelConfirmationModal.value = false;\n emit('modalClosed', true, editableData.value?.id ?? 0);\n showModal.value = false;\n }\n saving.value = false;\n};\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case 2:\n return 'Save';\n default:\n return 'Next'\n }\n});\n\nconst existingContactSelected = (selectedContact: ContactFindResult) => {\n if (!selectedContact) {\n return;\n }\n\n if (editableData.value) {\n editableData.value.contactID = selectedContact.id;\n }\n};\n\nconst newContactCreated = (newContactId: number) => {\n if (!newContactId) {\n return;\n }\n\n if (editableData.value) {\n editableData.value.contactID = newContactId;\n }\n};\n\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case 0:\n return 'ownerPage';\n case 1:\n return 'address';\n case 2:\n return 'mainDetails';\n default:\n return '';\n }\n});\n\nconst pageNumber = computed(() => {\n let number = selectedIndex.value;\n return number + 1\n});\n\nconst fetchCompanies = async (propertyCategory: number) => {\n try {\n companies.value = await apiNextClient.httpGet(`companies/lookup/category/${propertyCategory}`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n companies.value = [];\n }\n};\n\nconst triggerCompanyModalToOpen = async (propertyCategory: number) => {\n await fetchCompanies(propertyCategory);\n\n // We don't want to display the modal if there is only one company, we will just set the company\n // id to the id of the single company.\n if (companies.value.length > 1) {\n displayCompaniesModal.value = await DisplayCompanyAlert();\n return;\n }\n\n if (!editableData.value) {\n return;\n }\n\n if (companies.value.length == 1) {\n editableData.value.companyID = companies.value[0].id;\n }\n};\n\nwatch(() => editableData.value?.category, (value, oldValue) => {\n if (oldValue == undefined || value == undefined) {\n return;\n }\n\n triggerCompanyModalToOpen(value);\n});\n\nconst companySelected = (companyId: number) => {\n if (editableData.value == undefined) {\n return;\n }\n\n editableData.value.companyID = companyId;\n};\n\nconst createNewContact = () => {\n displayNewContactModal.value = true\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = ($event: any) => ((showModal).value = $event)),\n title: \"Property\",\n onCancelPromptDenied: cancelPromptDenied,\n onModalClosed: modalClosed,\n showCloseConfirmationPrompt: displayCancelConfirmationModal.value,\n height: \"565px\",\n maxHeight: \"95vh\",\n \"help-page\": \"adding-a-property\"\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Owner\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property Address\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Main Details\",\n number: 3,\n progress: -1\n }, null, 8, [\"index\"])\n ]),\n (editableData.value)\n ? (_openBlock(), _createBlock(_unref(DxMultiView), {\n key: 0,\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[11] || (_cache[11] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n owner: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ContactLookup, {\n label: \"Select an existing contact\",\n modelValue: editableData.value.contactID,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((editableData.value.contactID) = $event)),\n readOnly: __props.contactLookupReadOnly,\n isRequired: isContactEntered.value,\n findNameOnIdChange: true,\n onContactSelected: existingContactSelected,\n showClearIcon: true,\n onNavigateToContact: _cache[1] || (_cache[1] = ($event: any) => (emit('modalClosed', false)))\n }, null, 8, [\"modelValue\", \"readOnly\", \"isRequired\"]),\n _createVNode(_unref(DxButton), {\n text: \"New Contact\",\n onClick: createNewContact,\n disabled: props.contactLookupReadOnly\n }, null, 8, [\"disabled\"])\n ])\n ]),\n address: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EditAddress, {\n modelValue: addressModel.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((addressModel).value = $event)),\n validation: addressValidation.value,\n validationGroup: buttonValidationGroup.value\n }, null, 8, [\"modelValue\", \"validation\", \"validationGroup\"])\n ])\n ]),\n mainDetails: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(SystemCodeSingleSelect, {\n label: \"Category\",\n modelValue: editableData.value.category,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((editableData.value.category) = $event)),\n \"code-type\": _unref(CodeType).PropertyCategory\n }, null, 8, [\"modelValue\", \"code-type\"]),\n (editableData.value.category == _unref(PropertyCategory).ForSale)\n ? (_openBlock(), _createBlock(SystemCodeSingleSelect, {\n key: 0,\n label: \"Tenure\",\n modelValue: editableData.value.tenure,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((editableData.value.tenure) = $event)),\n \"code-type\": _unref(CodeType).PropertyTenure\n }, null, 8, [\"modelValue\", \"code-type\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(SystemCodeSingleSelect, {\n label: \"Status\",\n modelValue: editableData.value.status,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((editableData.value.status) = $event)),\n \"code-type\": _unref(CodeType).PropertyStatus,\n idsToExclude: [_unref(PropertyStatus).Completed, _unref(PropertyStatus).UnderOffer]\n }, null, 8, [\"modelValue\", \"code-type\", \"idsToExclude\"]),\n _createVNode(LookupSingleSelect, {\n label: \"Area\",\n modelValue: editableData.value.propertyAreaID,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((editableData.value.propertyAreaID) = $event)),\n lookupSource: _unref(LookupTableSource).PropertyAreas\n }, null, 8, [\"modelValue\", \"lookupSource\"]),\n _createVNode(LookupSingleSelect, {\n label: \"Type\",\n modelValue: editableData.value.type,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((editableData.value.type) = $event)),\n lookupSource: _unref(LookupTableSource).PropertyTypes\n }, null, 8, [\"modelValue\", \"lookupSource\"]),\n _createVNode(CurrencyInput, {\n label: \"Price\",\n modelValue: editableData.value.price,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((editableData.value.price) = $event)),\n \"max-value\": 9999999999\n }, null, 8, [\"modelValue\"]),\n (editableData.value.category == _unref(PropertyCategory).ToLet)\n ? (_openBlock(), _createBlock(SystemCodeSingleSelect, {\n key: 1,\n label: \"Frequency\",\n modelValue: editableData.value.priceFrequency,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((editableData.value.priceFrequency) = $event)),\n \"code-type\": _unref(CodeType).PropertyPriceFrequency\n }, null, 8, [\"modelValue\", \"code-type\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(BedroomsSelect, {\n label: \"Bedrooms\",\n modelValue: editableData.value.bedrooms,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((editableData.value.bedrooms) = $event))\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"section\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: _normalizeClass({ hideButton: selectedIndex.value == 0 })\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[12] || (_cache[12] = (e) => onNavigateClick(0, e)),\n icon: \"spinleft\",\n disabled: saving.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(pageNumber.value) + \" of 3\", 1),\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[13] || (_cache[13] = (e) => onNavigateClick(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: saving.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\"]),\n _createVNode(ContactModal, {\n modelValue: displayNewContactModal.value,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((displayNewContactModal).value = $event)),\n onContactCreated: newContactCreated,\n isOwner: true,\n showAddPropertyPrompt: false\n }, null, 8, [\"modelValue\"]),\n (editableData.value)\n ? (_openBlock(), _createBlock(SelectCompanyModal, {\n key: 0,\n modelValue: displayCompaniesModal.value,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = ($event: any) => ((displayCompaniesModal).value = $event)),\n propertyCategory: editableData.value.category,\n onCompanySelected: companySelected,\n companies: companies.value\n }, null, 8, [\"modelValue\", \"propertyCategory\", \"companies\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./new-property-wizard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-property-wizard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./new-property-wizard.vue?vue&type=style&index=0&id=3f4fe3a9&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3f4fe3a9\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"property-peek-fields\"\n}\n\nimport { computed, inject, ref, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { PropertySummary } from '@/types/properties/PropertySummary';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'property-peek-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @required\n */\n propertyId: {\n type: Number,\n required: true\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @default: 'Property Peek'\n */\n title: {\n type: String,\n default: 'Property Peek'\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst propertySummary = ref();\n\n\n\n\n\nconst showPeek = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst closePeek = () => {\n showPeek.value = false\n};\n\n// When the peek popup is visible, the data is fetched\nwatch(() => showPeek.value, async () => {\n if (!showPeek.value) {\n return\n }\n\n await getPropertyData();\n})\n\nconst getPropertyData = async () => {\n try {\n propertySummary.value = await apiClient.httpGet(`app/properties/${props.propertyId}/summary`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n propertySummary.value = undefined;\n }\n};\n\nconst sendEmail = () => {\n window.open(`mailto:${propertySummary.value?.address}`);\n};\n\n\nconst callTelephone = () => {\n window.open(`tel:${propertySummary.value?.owner.telephoneNumber}`);\n};\n\nconst callMobile = () => {\n window.open(`tel:${propertySummary.value?.owner.telephoneNumber}`);\n};\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n title: \"\",\n modelValue: showPeek.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showPeek).value = $event)),\n showCloseButton: true,\n height: \"530px\"\n }, {\n \"main-title\": _withCtx(() => [\n _createTextVNode(_toDisplayString(props.title), 1)\n ]),\n content: _withCtx(() => [\n (propertySummary.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.category.description,\n label: \"Category\"\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.type.description,\n label: \"Type\"\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.status.description,\n label: \"Status\"\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.owner.name,\n label: \"Owner\"\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.owner.mobileNumber,\n label: \"Mobile\",\n icon: \"tel\",\n onIconClicked: callMobile\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.owner.telephoneNumber,\n label: \"Telephone\",\n icon: \"tel\",\n onIconClicked: callTelephone\n }, null, 8, [\"text\"]),\n _createVNode(AcquaintInfoBox, {\n text: propertySummary.value.owner.emailAddress,\n label: \"Email\",\n icon: \"email\",\n onIconClicked: sendEmail\n }, null, 8, [\"text\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => { closePeek() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./property-peek-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./property-peek-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, PropType, ref, watch } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { DxColumn } from 'devextreme-vue/data-grid';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'select-company-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n companies: {\n type: Array as PropType,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n 'companySelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n});\n\nconst selectedCompanyId = ref(0);\nconst gridKey = ref(0);\n\nwatch(() => showModal.value, () => {\n if (!showModal.value) {\n return;\n }\n\n selectedCompanyId.value = 0;\n gridKey.value++;\n});\n\nconst onCancelClick = () => showModal.value = false;\n\nconst doubleClick = (company: IDDescriptionPair) => {\n if (!company) {\n return;\n }\n\n emit('companySelected', company.id);\n showModal.value = false;\n};\n\nconst companySelected = (company: IDDescriptionPair) => {\n if (!company) {\n return;\n }\n\n selectedCompanyId.value = company.id;\n};\n\nconst onSelectClick = () => {\n emit('companySelected', selectedCompanyId.value);\n showModal.value = false;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n height: \"325px\",\n title: \"Companies\",\n width: _unref(ModalWidth).XSmall\n }, {\n content: _withCtx(() => [\n (_openBlock(), _createBlock(GridBase, {\n key: gridKey.value,\n dataSource: props.companies,\n onRowClick: doubleClick,\n onRowSelected: companySelected,\n showColumnHeaders: false\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n visible: false\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"\"\n })\n ]),\n _: 1\n }, 8, [\"dataSource\"]))\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Select', onClick: () => { onSelectClick() }, disabled: selectedCompanyId.value == 0 }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]))\n}\n}\n\n})","import script from \"./select-company-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./select-company-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","/** Displays the image in a new window and issues a browser print command\n * @param blob - image blob to print\n * @param title - title of the new browser window */\nconst printBlobImage = (blob: Blob, title: string = 'Print Image') => {\n /* As URL.createObjectURL ties the image to the document of the current window\n * We must use a file reader to get the contents of the image */\n const reader = new window.FileReader();\n reader.onloadend = function () {\n const base64data = reader.result;\n\n if (!base64data) {\n return;\n }\n\n printImageInNewWindow(base64data.toString(), title);\n }\n\n reader.readAsDataURL(blob);\n}\n\nconst printImageInNewWindow = (imageSrc: string, title: string) => {\n const tempHtml = `\n \n \n ${title}\n \n \n \n \n \n \n `;\n const tempWindow = window.open(\"about:blank\", \"_blank\");\n tempWindow?.document.write(tempHtml);\n tempWindow?.document.close();\n}\n\n/** Copies the passed blob to the clipboard */\nconst copyBlobImageToClipboard = async (blob: Blob, isPng: boolean) => {\n if (!isPng) {\n /* As only copying png files to the clipboard is supported by all browsers\n * We must convert the blob to a png blob first.\n * See https://frontendmasters.com/blog/writing-to-the-clipboard-in-javascript/\n */\n const pngBlob = await convertImageBlobToPngBlob(blob);\n\n if (!pngBlob) {\n return;\n }\n\n blob = pngBlob;\n }\n\n navigator.clipboard.write([\n new ClipboardItem({\n 'image/png': blob\n })\n ]);\n}\n\nconst convertImageBlobToPngBlob = async(blob: Blob) => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return undefined;\n }\n\n // Convert blob to a bitmap image so we can set the correct height and width of the canvas\n const bitmap = await createImageBitmap(blob)\n canvas.width = bitmap.width;\n canvas.height = bitmap.height;\n\n ctx.drawImage(bitmap, 0, 0);\n\n const pngBlob = await new Promise(resolve => canvas.toBlob(resolve, 'image/png'));\n\n // We must cast pngBlob to a Blob type, otherwise Typescript will cause compile errors\n return pngBlob as Blob;\n}\n\nexport { printBlobImage, copyBlobImageToClipboard }","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1aba4a7b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"qr-modal-tab\" }\nconst _hoisted_2 = { class: \"qr-modal-tab code-container\" }\nconst _hoisted_3 = [\"src\"]\n\nimport { computed, inject, watch, ref } from 'vue';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { copyBlobImageToClipboard, printBlobImage } from '@/utils/files/BlobImageUtils';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport FieldValidationFreeTextArea from '@/components/ui/inputs/field-validation-free-text-area.vue';\nimport { DxContextMenu } from 'devextreme-vue/context-menu';\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'qr-code-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true,\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default -1\n */\n propertyId: {\n type: Number,\n default: -1\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst url = ref('');\nconst qrCode = ref();\nconst textForCodeGeneration = ref('')\nconst selectedTab = ref(0);\nconst contextMenuId = ref('qr-code-generator-modal');\nconst showFunctionsMenu = ref(false);\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value) {\n cleanUpQRCode();\n return;\n }\n\n if (props.propertyId > -1) {\n selectedTab.value = 1;\n await createQrCode();\n } else {\n selectedTab.value = 0;\n }\n});\n\n/*** Creates a QR Code image by using createObjectURL to display data returned by api */\nconst createQrCode = async () => {\n // We want the qr code tab to be displayed automatically if both tabs can be accessed by the user\n selectedTab.value = 1;\n qrCode.value = props.propertyId > -1 ? await getPropertyQrCode() : await createQRUsingText();\n\n if (!qrCode.value) {\n url.value = '';\n return;\n }\n\n url.value = URL.createObjectURL(qrCode.value);\n};\n\nconst getPropertyQrCode = async () => {\n try {\n return await apiClient.getFile(`app/qrcode/property/${props.propertyId}`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return;\n }\n};\n\nconst createQRUsingText = () => {\n try {\n return apiClient.getFile(`app/qrcode/custom?data=${textForCodeGeneration.value}`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return;\n }\n};\n\n/*** Releases memory used by creating an object url to display the QR Code\n * See https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL_static */\nconst cleanUpQRCode = () => {\n if (!url.value) {\n return;\n }\n\n URL.revokeObjectURL(url.value);\n url.value = '';\n qrCode.value = undefined;\n};\n\nconst onCopyClick = () => {\n if (!qrCode.value) {\n return;\n }\n\n copyBlobImageToClipboard(qrCode.value, false);\n};\n\nconst onPrintClick = () => {\n if (!qrCode.value) {\n return;\n }\n\n printBlobImage(qrCode.value, 'Print QR Code');\n};\n\n// This code handles the footer action menu.\nconst menuItems = computed(() => {\n const menu: ContextMenuItem[] = [\n {\n text: 'Create',\n key: 'create',\n disabled: textForCodeGeneration.value == '',\n icon: ''\n },\n {\n text: 'Copy',\n key: 'copy',\n disabled: url.value == '',\n icon: ''\n },\n {\n text: 'Print',\n key: 'print',\n disabled: url.value == '',\n icon: ''\n }\n ];\n\n return menu;\n});\n\nconst onMenuItemClick = (e: any) => {\n switch (e.itemData.key) {\n case 'create':\n createQrCode();\n break;\n case 'copy':\n onCopyClick();\n break;\n case 'print':\n onPrintClick();\n break;\n }\n};\n\nconst onCancelClick = () => showModal.value = false;\n\nconst copyPrintButtonPositions = computed(() => { return props.propertyId == -1 ? 'before' : 'after' });\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showModal).value = $event)),\n title: \"QR Code Generator\",\n width: _unref(ModalWidth).XSmall,\n height: \"370px\"\n }, {\n content: _withCtx(() => [\n _createVNode(_unref(DxTabPanel), {\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[1] || (_cache[1] = ($event: any) => ((selectedTab).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n title: \"Text\",\n visible: props.propertyId == -1\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(FieldValidationFreeTextArea, {\n height: \"11rem\",\n label: \"Text To Encode\",\n modelValue: textForCodeGeneration.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((textForCodeGeneration).value = $event))\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_unref(DxItem), { title: \"QR Code\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n (url.value)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: url.value,\n width: \"205\",\n height: \"205\"\n }, null, 8, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: {\n elementAttr: { id: contextMenuId.value }, text: 'Actions', onClick: () => { showFunctionsMenu.value = !showFunctionsMenu.value; },\n visible: props.propertyId == -1\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: copyPrintButtonPositions.value,\n options: {\n text: 'Copy', onClick: () => { onCopyClick() },\n visible: props.propertyId > -1\n }\n }, null, 8, [\"location\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: copyPrintButtonPositions.value,\n options: {\n text: 'Print', onClick: () => { onPrintClick() },\n visible: props.propertyId > -1\n }\n }, null, 8, [\"location\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]),\n _createVNode(_unref(DxContextMenu), {\n visible: showFunctionsMenu.value,\n \"onUpdate:visible\": _cache[3] || (_cache[3] = ($event: any) => ((showFunctionsMenu).value = $event)),\n \"data-source\": menuItems.value,\n target: `#${contextMenuId.value}`,\n position: { my: 'bottom right', at: 'top right' },\n onItemClick: onMenuItemClick\n }, null, 8, [\"visible\", \"data-source\", \"target\"])\n ], 64))\n}\n}\n\n})","import script from \"./qr-code-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./qr-code-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./qr-code-modal.vue?vue&type=style&index=0&id=1aba4a7b&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1aba4a7b\"]])\n\nexport default __exports__","import { IDDescriptionPair } from \"@/types/generic/IDDescriptionPair\";\nimport { SupportCaseReason } from \"@/types/utility-switching/SupportCaseReason\";\n\n/** Maps the passed Support Case Reasons array to an array of IDDescriptionPair models\n * @param caseReasons The SupportCaseReasons array to map\n * @returns An array of IDDescriptionPair models, populated with mapped data */\nconst mapSupportCaseReasonsToIDDescriptionPairArray = (caseReasons :SupportCaseReason[]) :IDDescriptionPair[] => {\n return caseReasons.map(item => {\n return { id: item.sortIndex, description: item.value }\n });\n}\n\nexport { mapSupportCaseReasonsToIDDescriptionPairArray }","import { inject, ref } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { IDDescriptionPair } from \"@/types/generic/IDDescriptionPair\";\nimport { AcquaintApiClient } from \"@/services/AcquaintApiClient\";\nimport { Mutex } from \"async-mutex\";\nimport { SupportCaseReason } from \"@/types/utility-switching/SupportCaseReason\";\nimport { mapSupportCaseReasonsToIDDescriptionPairArray } from \"@/utils/utility-switching/support-cases/SupportCaseReasonMapper\";\nimport { SecondarySupportCaseReasonCacheItem } from \"@/types/utility-switching/SecondarySupportCaseReasonCacheItem\";\n\nexport const useSupportCaseReasonsStore = defineStore('supportCaseReasonsStore', () => {\n const apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n const mutex = new Mutex();\n const primaryCaseReasons = ref();\n const secondaryCaseReasons = ref([]);\n\n /** Gets all primary Support Case Reasons */\n const getPrimarySupportCaseReasons = async () => {\n const reasons = mutex.runExclusive(async () => {\n // Improve performance by only calling api if primary case reasons haven't been retrieved previously\n if (!primaryCaseReasons.value) {\n const caseReasons = await getPrimarySupportCaseReasonsFromApi();\n primaryCaseReasons.value = mapSupportCaseReasonsToIDDescriptionPairArray(caseReasons);\n }\n\n return primaryCaseReasons.value;\n });\n\n return reasons;\n }\n\n /** Calls api to retrieve all primary support case reasons */\n const getPrimarySupportCaseReasonsFromApi = async () => {\n return await apiClient.httpGet('app/utilityswitching/supportcases/reasons');\n }\n\n /** Gets the Secondary support Case Reasons for the passed Primary Support Case Reason\n * @param primaryCaseReasonId Id of the Primary Support Case Reason to retrieve Secondary Support Case Reasons for */\n const getSecondarySupportCaseReasons = async (primaryCaseReasonId :number) => {\n /* Ids are only valid if they're greater than 0\n * To prevent api errors, we should only call the api if the id is valid */\n if (primaryCaseReasonId < 0) {\n return [];\n }\n\n // To improve performance and avoid unnecessary api calls, check the cache for secondary case reasons first\n const secondaryCaseReasonCacheItem = secondaryCaseReasons.value.find(item => item.primarySupportCaseReasonId === primaryCaseReasonId);\n \n if (secondaryCaseReasonCacheItem) {\n return secondaryCaseReasonCacheItem.values;\n }\n\n // Secondary reasons aren't in the cache, so call api and cache data to improve performance of future lookups\n const caseReasons = await getSecondarySupportCaseReasonsFromApi(primaryCaseReasonId);\n const mappedCaseReasons = mapSupportCaseReasonsToIDDescriptionPairArray(caseReasons);\n\n secondaryCaseReasons.value.push({\n primarySupportCaseReasonId: primaryCaseReasonId,\n values: mappedCaseReasons\n });\n\n return mappedCaseReasons;\n }\n\n /** Calls api to retrieve the secondary support case reasons for the passed primary case reason id\n * @param primaryCaseReasonId Id of the Primary Support Case Reason to retrieve Secondary Support Case Reasons for */\n const getSecondarySupportCaseReasonsFromApi = async (primaryCaseReasonId :number) => {\n return await apiClient.httpGet(`app/utilityswitching/supportcases/reasons/${primaryCaseReasonId}`);\n }\n\n /** Gets the description for a Primary Support Case Reason\n * @param reasonId Id of the Primary Support Case Reason to get description for */\n const getPrimarySupportCaseReasonDescription = async (reasonId :number) => {\n if (!primaryCaseReasons.value) {\n await getPrimarySupportCaseReasons();\n }\n\n const record = primaryCaseReasons.value?.find(item => item.id === reasonId);\n return record ? record.description : '';\n }\n\n /** Gets the description for a Secondary Support Case Reason\n * @param primaryCaseReasonId - Id of the Primary Support Case Reason linked to the Secondary Case Reason\n * @param secondaryCaseReasonId - Id of the Secondary Support Case Reason to retrieve the description for */\n const getSecondarySupportCaseReasonDescription = async (primaryCaseReasonId: number, secondaryCaseReasonId: number) => {\n const secondaryCaseReasons = await getSecondarySupportCaseReasons(primaryCaseReasonId);\n const record = secondaryCaseReasons.find(item => item.id === secondaryCaseReasonId);\n return record ? record.description : '';\n }\n\n return { getPrimarySupportCaseReasons, getSecondarySupportCaseReasons, getPrimarySupportCaseReasonDescription, getSecondarySupportCaseReasonDescription }\n});","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { PropType, computed, onMounted, ref } from 'vue';\nimport SingleSelect from '../single-select.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { useSupportCaseReasonsStore } from '@/stores/utility-switching/SupportCaseReasonsStore';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'support-case-reasons-single-select',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Number} value - The new value to be updated in the model.\n */\n 'update:modelValue',\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst selectedReasonId = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst supportReasonsCasesStore = useSupportCaseReasonsStore();\nconst supportCaseReasons = ref([]);\n\nonMounted(async () => {\n supportCaseReasons.value = await supportReasonsCasesStore.getPrimarySupportCaseReasons();\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SingleSelect, {\n modelValue: selectedReasonId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedReasonId).value = $event)),\n \"data-source\": supportCaseReasons.value,\n width: __props.width,\n label: __props.label,\n showClearButton: false,\n \"read-only\": __props.readOnly,\n \"allow-zero-value\": true,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"data-source\", \"width\", \"label\", \"read-only\", \"validation-group\"]))\n}\n}\n\n})","import script from \"./support-case-reasons-single-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./support-case-reasons-single-select.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { PropType, computed, watch, ref } from 'vue';\nimport SingleSelect from '../single-select.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { useSupportCaseReasonsStore } from '@/stores/utility-switching/SupportCaseReasonsStore';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'secondary-support-case-reasons-single-select',\n props: {\n /** \n * The numeric value bound to `v-model`.\n * Typically represents an ID or a selected value within the component.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n\n /** \n * The ID of the primary support case reason.\n * Used to associate the component with a specific case reason.\n * @type {number}\n * @required\n */\n primarySupportCaseReasonId: {\n type: Number,\n required: true\n },\n\n /** \n * The label displayed for the control.\n * Provides a description or title for the input field.\n * @type {string}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * Controls the display size of the input component.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n\n /** \n * Determines whether the control is read-only.\n * If `true`, the input is disabled, preventing user modifications.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n\n /** \n * The validation group name used for form validation.\n * Helps group validation rules within a form.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Number} value - The new value to be updated in the model.\n */\n 'update:modelValue',\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst selectedReasonId = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst supportReasonsCasesStore = useSupportCaseReasonsStore();\nconst supportCaseReasons = ref([]);\nconst retrievingData = ref(false);\n\nconst singleSelectReadOnly = computed(() => retrievingData.value || props.readOnly);\n\n// When primary case reason changes, re-populate the secondary support case reasons\nwatch(() => props.primarySupportCaseReasonId, async () => {\n retrievingData.value = true\n\n supportCaseReasons.value = await supportReasonsCasesStore.getSecondarySupportCaseReasons(props.primarySupportCaseReasonId);\n\n // Reset selected reason id to improve UX and to avoid invalid items being selected\n selectedReasonId.value = supportCaseReasons.value?.length ? supportCaseReasons.value[0].id : -1;\n\n retrievingData.value = false;\n}, { immediate: true });\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SingleSelect, {\n modelValue: selectedReasonId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedReasonId).value = $event)),\n \"data-source\": supportCaseReasons.value,\n width: __props.width,\n label: __props.label,\n showClearButton: false,\n \"read-only\": singleSelectReadOnly.value,\n \"allow-zero-value\": true,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"data-source\", \"width\", \"label\", \"read-only\", \"validation-group\"]))\n}\n}\n\n})","import script from \"./secondary-support-case-reasons-single-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./secondary-support-case-reasons-single-select.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3447cb5e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"support-case-container\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Subject\", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Description\", -1))\n\nimport { computed, inject, ref, watch } from 'vue';\nimport ModalBase from '../ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { NewSupportCase } from '@/types/utility-switching/NewSupportCase';\nimport { DxTextArea, DxTextBox, DxValidator } from 'devextreme-vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { DxRequiredRule } from 'devextreme-vue/validator';\nimport SupportCaseReasonsSingleSelect from '../ui/dropdowns/utility-switching/support-case-reasons-single-select.vue';\nimport SecondarySupportCaseReasonsSingleSelect from '../ui/dropdowns/utility-switching/secondary-support-case-reasons-single-select.vue';\nimport { useSupportCaseReasonsStore } from '@/stores/utility-switching/SupportCaseReasonsStore';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { NewSupportCaseResponse } from '@/types/utility-switching/NewSupportCaseResponse';\nimport { SupportCaseDocumentType } from '@/enums/utility-switching/SupportCaseDocumentType';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport DocumentUpload from '../file-uploader/document-upload.vue';\n\nconst validationGroup = 'new-support-case';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-support-case-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the swith target.\n * @type {string}\n * @default ''\n */\n switchId: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue', \n\n /** \n * Triggered when the new case creation operation is successful.\n * This informs the parent component that the operation is success.\n */\n 'newCaseCreated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst supportCase = ref({\n switchID: '',\n reason: '',\n secondaryReason: '',\n subject: '',\n description: ''\n});\n\nconst reasonId = ref(-1);\nconst secondaryReasonId = ref(-1);\nconst documents = ref();\nconst tcf = ref();\nconst saving = ref(false);\n\nconst caseReasonsStore = useSupportCaseReasonsStore();\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\n/** Handles the Click event of the Save button */\nconst onSaveClick = async (e: any) => {\n const validate = e.validationGroup.validate();\n\n if (!validate.isValid) {\n return;\n }\n\n if (await saveDetails()) {\n emit('newCaseCreated');\n showModal.value = false;\n }\n}\n\n/** Calls apis to save new Support Case and upload attached documents */\nconst saveDetails = async () => {\n try {\n saving.value = true;\n\n const response = await createSupportCase();\n\n // Upload any attached files\n if (documents.value) {\n for (let i = 0; i < documents.value.length; i++) {\n await uploadDocument(response.homeMoverCaseID, SupportCaseDocumentType.Other, documents.value[i])\n }\n }\n\n if (tcf.value && tcf.value.length > 0) {\n await uploadDocument(response.homeMoverCaseID, SupportCaseDocumentType.Tcf, tcf.value[0]);\n }\n\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err))\n return false;\n } finally {\n saving.value = false;\n }\n}\n\n/** Calls the New Support Case endpoint to create a Support Case */\nconst createSupportCase = async () => {\n return await apiClient.httpPost('app/utilityswitching/supportcase', supportCase.value);\n}\n\n/** Uploads a document for the newly created support case\n * @param supportCaseId Id of the Support Case to upload the document to\n * @param documentType Type of document being uploaded\n * @param document The document to upload to the Support Case */\nconst uploadDocument = async (supportCaseId: string, documentType: SupportCaseDocumentType, document: File) => {\n await apiClient.uploadFile(`app/utilityswitching/supportcases/documents/${supportCaseId}/${documentType}`, document);\n}\n\n/** Handles the Click event of the Cancel button */\nconst onCancelClick = () => {\n showModal.value = false;\n}\n\n// When modal is closed/opened reset data to avoid confusing users\nwatch(() => props.modelValue, () => {\n supportCase.value = {\n switchID: props.switchId,\n reason: '',\n secondaryReason: '',\n subject: '',\n description: ''\n }\n\n secondaryReasonId.value = -1;\n\n /* Ensure reason id is properly reset by changing the value based on whether the modal is shown or not\n * This prevents a blank reason from being sent to the api, which causes a bad request error*/\n reasonId.value = props.modelValue ? 0 : -1;\n\n tcf.value = [];\n documents.value = [];\n});\n\n/* New Support Case api requires the description of the reason to be sent instead of the id\n * This is due to how the salesforce api works. To avoid issues, when the reason changes, get the description */\nwatch(() => reasonId.value, async () => {\n supportCase.value.reason = await caseReasonsStore.getPrimarySupportCaseReasonDescription(reasonId.value);\n\n // We need to manually trigger this due to a race condition with the watch on the secondaryReasonId\n supportCase.value.secondaryReason = await caseReasonsStore.getSecondarySupportCaseReasonDescription(reasonId.value, secondaryReasonId.value);\n}, { immediate: true });\n\n/** Similar to the primary case reason, we need to get the description \n * so it can be sent to the New Support Case api */\nwatch(() => secondaryReasonId.value, async () => {\n supportCase.value.secondaryReason = await caseReasonsStore.getSecondarySupportCaseReasonDescription(reasonId.value, secondaryReasonId.value);\n}, { immediate: true });\n\n/** Handles the Document Changed event of the Document upload component */\nconst onDocumentsChanged = (e: File[]) => {\n documents.value = e;\n}\n\n/** Handles the TCF Changed event of the Document upload component */\nconst onTcfChanged = (e: File[]) => {\n tcf.value = e;\n}\n\nwatch(() => showModal.value, () => {\n resetUploadedFiles.value = !showModal.value;\n});\n\nconst onModalClosed = () => {\n // To avoid previous validation errors being displayed, reset the validator when the modal closes\n if (validator.value?.instance) {\n validator.value.instance.reset();\n }\n}\n\nconst resetUploadedFiles = ref(false);\n\nconst validator = ref();\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((showModal).value = $event)),\n title: \"New Support Case\",\n width: _unref(ModalWidth).Medium,\n height: \"75vh\",\n onModalClosed: onModalClosed\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(SupportCaseReasonsSingleSelect, {\n modelValue: reasonId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((reasonId).value = $event)),\n label: \"Reason\",\n \"read-only\": saving.value,\n \"validation-group\": validationGroup\n }, null, 8, [\"modelValue\", \"read-only\"]),\n _createVNode(SecondarySupportCaseReasonsSingleSelect, {\n modelValue: secondaryReasonId.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((secondaryReasonId).value = $event)),\n \"read-only\": saving.value,\n \"primary-support-case-reason-id\": reasonId.value,\n label: \"Secondary Reason\",\n \"validation-group\": validationGroup\n }, null, 8, [\"modelValue\", \"read-only\", \"primary-support-case-reason-id\"]),\n _createElementVNode(\"div\", null, [\n _hoisted_2,\n _createVNode(_unref(DxTextBox), {\n value: supportCase.value.subject,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((supportCase.value.subject) = $event)),\n width: _unref(FieldSize).Full,\n \"read-only\": saving.value\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n ref_key: \"validator\",\n ref: validator,\n \"validation-group\": validationGroup\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxRequiredRule), { message: \"\" })\n ]),\n _: 1\n }, 512)\n ]),\n _: 1\n }, 8, [\"value\", \"width\", \"read-only\"])\n ]),\n _createElementVNode(\"div\", null, [\n _hoisted_3,\n _createVNode(_unref(DxTextArea), {\n modelValue: supportCase.value.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((supportCase.value.description) = $event)),\n height: \"175px\",\n width: _unref(FieldSize).Full,\n \"read-only\": saving.value\n }, null, 8, [\"modelValue\", \"width\", \"read-only\"])\n ]),\n _createVNode(DocumentUpload, {\n \"read-only\": saving.value,\n onDocumentsChanged: onDocumentsChanged,\n onTcfChanged: onTcfChanged,\n reset: resetUploadedFiles.value\n }, null, 8, [\"read-only\", \"reset\"])\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxLoadIndicator\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { visible: saving.value, width: 24, height: 24 }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: saving.value, validationGroup: validationGroup, onClick: (e) => { onSaveClick(e); } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', disabled: saving.value, onClick: () => { onCancelClick() } },\n shortcut: \"cancel\"\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]))\n}\n}\n\n})","import script from \"./new-support-case-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-support-case-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./new-support-case-modal.vue?vue&type=style&index=0&id=3447cb5e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3447cb5e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a5cefb7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"consent-title\" }, \"Please confirm compliance with Data Protection Regulations\", -1))\nconst _hoisted_2 = { class: \"consent-info-box\" }\nconst _hoisted_3 = { class: \"consent-form-checkbox\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"I Confirm\", -1))\nconst _hoisted_5 = { class: \"consent-info-box\" }\nconst _hoisted_6 = { class: \"consent-form-checkbox\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"I Confirm\", -1))\n\nimport { DxValidator } from 'devextreme-vue';\nimport { DxRequiredRule } from 'devextreme-vue/validator';\nimport { DxCheckBox } from 'devextreme-vue/check-box';\nimport { TenantSwitchConsent } from '@/types/switches/TenantSwitchConsent';\nimport { computed, PropType, ref } from 'vue';\nimport scrollView from '@/components/ui/scroll-view.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'consent-page',\n props: {\n /** \n * The object representing tenant switch consent data.\n * Used with `v-model` to track and update consent-related information.\n * @type {TenantSwitchConsent}\n * @required\n */\n modelValue: {\n type: Object as PropType,\n required: true\n },\n\n /** \n * The validation group name used for form validation.\n * Helps in grouping form fields for validation purposes.\n * @type {string}\n * @required\n */\n validationGroup: {\n type: String,\n required: true\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, usually triggered by a change in the filters.\n * @event update:modelValue\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\n\nconst dateRegulationsConsent = computed({\n get: () => props.modelValue,\n set: (value: TenantSwitchConsent) => emit('update:modelValue', value)\n});\n\n\nconst screeWidth=ref(screen.width);\n\nconst smallScreen = computed(()=>screeWidth.value<769)\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"consent-page\", {smallScreen:smallScreen.value}])\n }, [\n _hoisted_1,\n _createElementVNode(\"div\", _hoisted_2, [\n _createTextVNode(\" In submitting this form, I confirm that any personal data is being shared with Property Button in compliance with Irish data protection regulations and that, where necessary, the consent of the person(s) involved has been secured. I further confirm that Property Button can share this data with utility and other service providers and that, where necessary, consent for this further transfer has been secured. \"),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(DxCheckBox), {\n value: dateRegulationsConsent.value.personalDataComplient\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxRequiredRule))\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_4\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createTextVNode(\" I confirm that the tenant or owner has been informed that they will receive communication from Property Button by SMS, email and/or telephone to help them set up their utility services. I further confirm that the tenant or owner has been informed that service may be set up on their behalf should Property Button prove unable to contact them within 24 hours of this form being submitted. \"),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(DxCheckBox), {\n value: dateRegulationsConsent.value.receiveCommunication\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxRequiredRule))\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_7\n ])\n ])\n ], 2)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./consent-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./consent-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./consent-page.vue?vue&type=style&index=0&id=1a5cefb7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1a5cefb7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2686a7de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_2 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\nconst _hoisted_3 = { class: \"verify-button\" }\n\nimport { ref, inject, PropType, watch } from 'vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport DxTextBox from 'devextreme-vue/text-box';\nimport DxButton from 'devextreme-vue/button';\nimport { CountryCodes } from '@/enums/system/CountryCodes';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { Address } from '@/types/generic/Address';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { DxRequiredRule, DxNumericRule } from 'devextreme-vue/validator';\nimport { DxValidator } from 'devextreme-vue';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'mprn-property-lookup',\n props: {\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n address: {\n type: Object as PropType
,\n required: true\n },\n validationGroup: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the control is numeric field.\n * @type {boolean}\n * @default false\n */\n numericalField: {\n type: Boolean,\n required: false,\n },\n invalidMessage: {\n type: String,\n required: false\n },\n /** \n * Determines whether the MPRN Lookup is disabled.\n * @type {boolean}\n * @default false\n */\n disableMprnLookup: {\n type: Boolean,\n default: false\n },\n mprn: {\n type: String,\n default: ''\n }\n},\n emits: ['propertyFound', 'searchFailed', 'mprnUpdated', 'update:disableMprnLookup'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst mprn = ref('');\nconst propertyDetails = ref();\n\nconst requestBody = ref({\n countryCode: CountryCodes.ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\"\n});\n\nwatch(() => props.address, () => {\n requestBody.value.propertyName = props.address.propertyName;\n requestBody.value.street = props.address.street;\n requestBody.value.locality = props.address.locality;\n requestBody.value.town = props.address.town;\n requestBody.value.region = props.address.region;\n requestBody.value.postCode = props.address.postCode;\n});\n\nconst getPropertyAddress = async () => {\n try {\n propertyDetails.value = await apiClient.httpPost(`app/utilityswitching/mprnlookup/${mprn.value}`, requestBody.value);\n } catch (err) {\n emit('searchFailed');\n }\n};\n\nconst searchClick = async () => {\n // This avoids unnecessary API calls\n if (props.readOnly || !mprn.value.match(/^[0-9]{11}$/)) {\n emit('searchFailed');\n return\n }\n\n /* Set searching flag so only 1 lookup can be processed at a time\n * this prevents users from seeing multiple mprn confirmation alerts */\n searching.value = true;\n\n propertyDetails.value = undefined;\n\n await getPropertyAddress();\n\n if (propertyDetails.value && mprn.value) {\n emit('propertyFound', propertyDetails.value, mprn.value);\n }\n\n searching.value = false;\n};\n\nconst searching = ref(false);\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return mprn.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\n\nconst isValid = ref(true);\n\nconst mprnUpdated = () => {\n emit('mprnUpdated');\n};\n\nwatch(() => props.mprn, () => {\n mprn.value = props.mprn;\n}, { immediate: true });\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(__props.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxTextBox), {\n value: mprn.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((mprn).value = $event)),\n width: _unref(FieldSize).Large,\n isValid: isValid.value,\n hint: validationErrors.value,\n \"max-length\": \"11\",\n onValueChanged: mprnUpdated\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxRequiredRule)),\n (props.numericalField)\n ? (_openBlock(), _createBlock(_unref(DxNumericRule), {\n key: 0,\n message: props.invalidMessage\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\", \"width\", \"isValid\", \"hint\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(DxButton), {\n text: \"Verify\",\n onClick: searchClick\n })\n ])\n ], 64))\n}\n}\n\n})","import script from \"./mprn-property-lookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./mprn-property-lookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./mprn-property-lookup.vue?vue&type=style&index=0&id=2686a7de&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2686a7de\"]])\n\nexport default __exports__","export enum ElectricityMeterTypes {\n Standard=0,\n Smart=2,\n DayNight=3,\n DayNightPeak=4,\n StandardNightSaver=5\n}","import { baseAlert } from \"./baseAlert\";\n\nexport const tenantSwitchConfirmAddress = (mprnAddress: string, width:string) => {\n return baseAlert.fire({\n icon:'question',\n html: 'Please confirm that this is the correct property address:

' + mprnAddress,\n color: 'black',\n confirmButtonText: 'Yes',\n denyButtonText: 'No',\n showConfirmButton: true,\n showDenyButton: true,\n width: width,\n });\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52ed47f5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"lookup-section\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"title\" }, \"Please enter the MPRN and click Verify to help us locate the energy meter for the property\", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = {\n key: 0,\n class: \"title\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", null, [\n /*#__PURE__*/_createElementVNode(\"p\", null, \"Please enter the 11-digit MPRN in the format: 10XXXXXXXXX\")\n], -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-times-circle\" }, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"The provided MPRN and property address do not match!\", -1))\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Please contact Property Button helpdesk at +35319696091, or reach out to us at 'support@propertybutton.ie'.\", -1))\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-times-circle\" }, null, -1))\nconst _hoisted_13 = [\n _hoisted_12\n]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"address-title\" }, \"Address\", -1))\nconst _hoisted_15 = { key: 0 }\nconst _hoisted_16 = { key: 0 }\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { key: 4 }\nconst _hoisted_21 = { key: 5 }\nconst _hoisted_22 = { class: \"property-energy-information\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"ul\", null, [\n /*#__PURE__*/_createElementVNode(\"li\", null, \"MPRN:\"),\n /*#__PURE__*/_createElementVNode(\"li\", null, \"Status:\"),\n /*#__PURE__*/_createElementVNode(\"li\", null, \"Meter:\"),\n /*#__PURE__*/_createElementVNode(\"li\", null, \"Meter No:\")\n], -1))\nconst _hoisted_24 = { key: 0 }\nconst _hoisted_25 = {\n key: 0,\n class: \"further-energy-info\"\n}\nconst _hoisted_26 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", {\n id: \"meter-readings-only\",\n class: \"further-energy-info-title\"\n}, \"Please enter Meter Readings\", -1))\nconst _hoisted_28 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"Meter Reading Date\", -1))\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h4\", null, \"Pay as you go Meter\", -1))\nconst _hoisted_30 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1))\nconst _hoisted_31 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Please select 'YES' if the tenant's meter \", -1))\nconst _hoisted_32 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_33 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"is configured as a 'Pay as you Go' meter.\", -1))\nconst _hoisted_34 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_35 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Giving us this information in advance will\", -1))\nconst _hoisted_36 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_37 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"reduce the amount of time your switch will\", -1))\nconst _hoisted_38 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_39 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"take to be approved by a supplier.\", -1))\nconst _hoisted_40 = {\n key: 0,\n class: \"housing-development-container\"\n}\nconst _hoisted_41 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h4\", null, \"New Development Property\", -1))\nconst _hoisted_42 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1))\nconst _hoisted_43 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Select YES if the property is being switched\", -1))\nconst _hoisted_44 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_45 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"from a developers name for the first time.\", -1))\n\nimport SelectOption from '@/components/ui/inputs/select-option.vue';\nimport MprnPropertyLookup from '@/components/ui/lookup/mprn-property-lookup.vue';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ElectricityMeterTypes } from '@/enums/utility-switching/ElectricityMeterTypes';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { PropType, computed, onMounted, ref, watch } from 'vue';\nimport FieldValidationFreeDateBox from '../ui/inputs/field-validation-free-date-box.vue';\nimport { tenantSwitchConfirmAddress } from '@/alerts/tenantSwitchConfirmAddress';\nimport FieldValidationFreeTextbox from '../ui/inputs/field-validation-free-textbox.vue';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { SelectOptionReponses } from '@/enums/SelectOptionResponses';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'energy-details-page',\n props: {\n energy: {\n type: Object as PropType,\n required: true\n },\n address: {\n type: Object as PropType

,\n required: true\n },\n validationGroup: {\n type: String,\n default: ''\n },\n /** \n * The boolean value indicates whether the address should be validated.\n * @type {boolean}\n * @required\n */\n addressValidated: {\n type: Boolean,\n required: true\n },\n /** \n * The number value indicates the energy type.\n * @type {number}\n * @default -1\n */\n energyType: {\n type: Number,\n required: true\n },\n /** \n * The number value indicates the gas meter type.\n * @type {number}\n * @default -1\n */\n gasMeterType: {\n type: Number,\n default: -1\n },\n /** \n * The boolean value indicates whether to show housing development question.\n * @type {boolean}\n * @default false\n */\n showHousingDevelopmentQuestion: {\n type: Boolean,\n default: false\n },\n /** \n * The number value indicates the housing development selected option.\n * @type {number}\n * @default -1\n */\n housingDevelopmentSelectedOption: {\n type: Number,\n default: -1\n }\n},\n emits: ['update:energy', 'update:addressValidated', 'disableNextButton', 'payAsYouGoSelected', 'update:energyType', 'updateNewHousingDevelopment'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nonMounted(() => {\n closeError.value = true;\n});\n\nconst addressValid = computed({\n get: () => props.addressValidated,\n set: (value: Boolean) => emit('update:addressValidated', value)\n});\n\n\n\nconst energyInformation = computed({\n get: () => props.energy,\n set: (value: EnergyDetails) => emit('update:energy', value)\n});\n\nconst paygOptionSelected = (buttonSelected: number) => {\n energyInformation.value.payAsYouGo = buttonSelected === SelectOptionReponses.Yes;\n emit('payAsYouGoSelected')\n};\n\nconst energyType = computed({\n get: () => props.energyType,\n set: (value: Number) => emit('update:energyType', value)\n});\n\nconst energyTypeSelected = (buttonSelected: number) => {\n energyType.value = buttonSelected;\n\n switch (buttonSelected) {\n case EnergyTypes.DualFuel:\n energyInformation.value.energyType = 'Dual Fuel';\n break;\n case EnergyTypes.ElectricityOnly:\n energyInformation.value.energyType = 'Electricity Only';\n break;\n case EnergyTypes.GasOnly:\n energyInformation.value.energyType = 'Gas Only';\n break;\n }\n}\n\nconst currrentDate = ref(new Date(new Date(Date.now()).setHours(23, 59, 59, 59)));\nconst mprnAddressInformation = ref();\nconst selectedMprn = ref('');\nconst searchSuccess = ref(false);\nconst invalidMprnEntered = ref(false);\n\nconst propertyFound = (addressInformation: MprnLookupResponse, mprn: string) => {\n addressValid.value = true;\n invalidMprnEntered.value = false;\n closeError.value = false;\n mprnAddressInformation.value = addressInformation;\n selectedMprn.value = mprn;\n searchSuccess.value = true;\n energyInformation.value.mprn = mprn;\n energyInformation.value.electricMeterType = addressInformation.electricMeterType;\n\n // If the address doen't match the address entered on the first page, a popup will appear so the\n // user can confirm the address\n if (!mprnAddressInformation.value.addressMatched) {\n tenantSwitchConfirmAddress(`${formattedMprnAddress.value}`, popupWidth.value).then((result: any) => {\n if (result.isConfirmed) {\n addressValid.value = true;\n emit('disableNextButton', false, mprnAddressInformation.value);\n emit('disableNextButton', false, mprnAddressInformation.value);\n } else {\n addressValid.value = false;\n emit('disableNextButton', true);\n emit('disableNextButton', true);\n }\n });\n } else {\n emit('disableNextButton', false, mprnAddressInformation.value);\n emit('disableNextButton', false, mprnAddressInformation.value);\n }\n};\n\n/** MPRN address without null/empty values, separated by commas */\nconst formattedMprnAddress = computed(() => {\n if (!mprnAddressInformation.value) {\n return '';\n }\n return [mprnAddressInformation.value.addressPropertyName, mprnAddressInformation.value.addressStreet, mprnAddressInformation.value.addressLocality,\n mprnAddressInformation.value.addressTown, mprnAddressInformation.value.addressRegion, mprnAddressInformation.value.addressPostcode]\n .filter(item => !!item).join(', ')\n});\n\nconst closeError = ref(false);\n\nconst closeErrorMessage = () => {\n closeError.value = true;\n}\n\nconst screeWidth = ref(screen.width);\n\nconst smallScreen = computed(() => screeWidth.value < 875);\n\nconst popupWidth = computed(() => smallScreen.value ? '75vw' : '32.5vw');\n\nconst showTwentyFourMeterRead = computed(() => {\n if (!mprnAddressInformation.value) {\n return false;\n }\n\n return (mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.Standard ||\n mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.Smart ||\n mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.StandardNightSaver) && (energyType.value == EnergyTypes.ElectricityOnly || energyType.value == EnergyTypes.DualFuel);\n});\n\nconst showNightMeterRead = computed(() => {\n if (!mprnAddressInformation.value) {\n return false;\n }\n\n return (mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.DayNight ||\n mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.DayNightPeak) && (energyType.value == EnergyTypes.ElectricityOnly || energyType.value == EnergyTypes.DualFuel);\n});\n\nconst showDayMeterRead = computed(() => {\n if (!mprnAddressInformation.value) {\n return false;\n }\n\n return (mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.DayNight ||\n mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.DayNightPeak) && (energyType.value == EnergyTypes.ElectricityOnly || energyType.value == EnergyTypes.DualFuel);\n});\n\nconst showPeakMeterRead = computed(() => {\n if (!mprnAddressInformation.value) {\n return false;\n }\n\n return mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.DayNightPeak && (energyType.value == EnergyTypes.ElectricityOnly || energyType.value == EnergyTypes.DualFuel);\n});\n\nconst showNightSaveMeter = computed(() => {\n if (!mprnAddressInformation.value) {\n return false;\n }\n\n return mprnAddressInformation.value.electricMeterType == ElectricityMeterTypes.StandardNightSaver && (energyType.value == EnergyTypes.ElectricityOnly || energyType.value == EnergyTypes.DualFuel);\n});\n\nconst showGasFields = computed(() => {\n return energyType.value == EnergyTypes.GasOnly || energyType.value == EnergyTypes.DualFuel;\n});\n\nconst searchFailed = () => {\n searchSuccess.value = false;\n invalidMprnEntered.value = true;\n closeError.value = false;\n};\n\n// If a user changes their searched for MPRN number without searching for it another time, they cannot progress forwards until they research the MPRN number\nconst mprnUpdated = () => {\n if (selectedMprn.value) {\n emit('disableNextButton', true);\n }\n\n searchSuccess.value = false;\n};\n\nconst meterType = computed(() => {\n\n if (!mprnAddressInformation.value) {\n return '';\n }\n\n switch (mprnAddressInformation.value.electricMeterType) {\n case ElectricityMeterTypes.StandardNightSaver:\n return 'Gen 24hr Meter + Night Saver';\n case ElectricityMeterTypes.Standard:\n return 'Gen 24Hr Meter';\n case ElectricityMeterTypes.Smart:\n return 'Half Hourly Smart Meter';\n case ElectricityMeterTypes.DayNight:\n return 'Day/Night Meter';\n case ElectricityMeterTypes.DayNightPeak:\n return 'Day/Night/Peak Bi-Monthly Smart Meter';\n default:\n return '';\n }\n});\n\nconst setPaygNo = computed(() => {\n switch (props.gasMeterType) {\n case GasMeterTypes.smart:\n return true\n case GasMeterTypes.standard:\n return true\n default:\n return false\n }\n});\n\nconst pAYGValue = computed(() => { return props.gasMeterType == GasMeterTypes.smart || props.gasMeterType == GasMeterTypes.standard ? 2 : props.gasMeterType });\n\nconst updateNewHousingDevelopmentOption = (buttonSelected: number) => {\n emit('updateNewHousingDevelopment', buttonSelected === SelectOptionReponses.Yes);\n};\n\n// When address changes, force users to revalidate the mprn number\nwatch(() => props.address, () => {\n addressValid.value = false;\n searchSuccess.value = false;\n}, { deep: true });\n\n// This ensures 'No' is selected by default when a user confirms an address is an Acquaint address.\nconst defaultHousingOption = computed(() => props.housingDevelopmentSelectedOption == SelectOptionReponses.No);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", {\n class: _normalizeClass([\"energy-details\", { smallScreen: smallScreen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _hoisted_2,\n _hoisted_3,\n _createVNode(MprnPropertyLookup, {\n numericalField: true,\n address: props.address,\n label: \"MPRN\",\n mprn: __props.energy.mprn,\n onPropertyFound: propertyFound,\n validationGroup: props.validationGroup,\n invalidMessage: \"Please enter the 11-digit MPRN in the format: 10XXXXXXXXX\",\n onSearchFailed: searchFailed,\n onMprnUpdated: mprnUpdated\n }, null, 8, [\"address\", \"mprn\", \"validationGroup\"]),\n _hoisted_4,\n (searchSuccess.value && addressValid.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_5, \"Property Details\"))\n : _createCommentVNode(\"\", true),\n _hoisted_6,\n (invalidMprnEntered.value && !closeError.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"error-message invalid-message\", { smallError: smallScreen.value }])\n }, [\n _hoisted_7,\n _createElementVNode(\"span\", { onClick: closeErrorMessage }, _hoisted_9)\n ], 2))\n : _createCommentVNode(\"\", true),\n (!addressValid.value && !closeError.value && searchSuccess.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: _normalizeClass([\"error-message mprn-mismatch-error\", { smallError: smallScreen.value }])\n }, [\n _createElementVNode(\"div\", null, [\n _hoisted_10,\n _hoisted_11,\n _createElementVNode(\"p\", null, \"Please reference the MPRN number: \" + _toDisplayString(selectedMprn.value), 1)\n ]),\n _createElementVNode(\"span\", { onClick: closeErrorMessage }, _hoisted_13)\n ], 2))\n : _createCommentVNode(\"\", true),\n (searchSuccess.value && addressValid.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: _normalizeClass([\"property-information\", { smallScreen: smallScreen.value }])\n }, [\n _createElementVNode(\"div\", null, [\n _hoisted_14,\n (mprnAddressInformation.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_15, [\n (mprnAddressInformation.value.addressPropertyName)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_16, _toDisplayString(mprnAddressInformation.value.addressPropertyName), 1))\n : _createCommentVNode(\"\", true),\n (mprnAddressInformation.value.addressStreet)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_17, _toDisplayString(mprnAddressInformation.value.addressStreet), 1))\n : _createCommentVNode(\"\", true),\n (mprnAddressInformation.value.addressLocality)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_18, _toDisplayString(mprnAddressInformation.value.addressLocality), 1))\n : _createCommentVNode(\"\", true),\n (mprnAddressInformation.value.addressTown)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_19, _toDisplayString(mprnAddressInformation.value.addressTown), 1))\n : _createCommentVNode(\"\", true),\n (mprnAddressInformation.value.addressRegion)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_20, _toDisplayString(mprnAddressInformation.value.addressRegion), 1))\n : _createCommentVNode(\"\", true),\n (mprnAddressInformation.value.addressPostcode)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_21, _toDisplayString(mprnAddressInformation.value.addressPostcode), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_22, [\n _hoisted_23,\n (mprnAddressInformation.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_24, [\n _createElementVNode(\"li\", null, _toDisplayString(selectedMprn.value), 1),\n _createElementVNode(\"li\", null, _toDisplayString(mprnAddressInformation.value.electricEnergised ? 'Energised' : 'Non-Energised'), 1),\n _createElementVNode(\"li\", null, _toDisplayString(meterType.value), 1),\n _createElementVNode(\"li\", null, _toDisplayString(mprnAddressInformation.value.electricMeterSerialNumber), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2))\n : _createCommentVNode(\"\", true)\n ]),\n (searchSuccess.value && addressValid.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [\n _createVNode(SelectOption, {\n title: \"Please select the type of Energy at this Property\",\n boldTitle: true,\n selectBoxOneText: \"Dual Fuel\",\n selectBoxTwoText: \"Electricity Only\",\n selectBoxThreeText: \"Gas Only\",\n width: \"105px\",\n onButtonSelected: energyTypeSelected,\n value: energyType.value\n }, null, 8, [\"value\"]),\n _hoisted_26,\n _hoisted_27,\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"gas-readings\", { smallScreen: smallScreen.value }])\n }, [\n _createElementVNode(\"div\", null, [\n (showTwentyFourMeterRead.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 0,\n placeholder: \"5 digits required...\",\n modelValue: energyInformation.value.twentyfourHMeterRead,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((energyInformation.value.twentyfourHMeterRead) = $event)),\n label: \"24H Meter Read\",\n maxLength: \"5\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 5-digit 24H meter read in the format: 12345\",\n minLength: \"5\",\n displayLeadingZeros: true\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true),\n (showDayMeterRead.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 1,\n placeholder: \"5 digits required...\",\n modelValue: energyInformation.value.dayMeterMeterRead,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((energyInformation.value.dayMeterMeterRead) = $event)),\n label: \"Day Meter Read\",\n maxLength: \"5\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 5-digit Day meter read in the format: 12345\",\n minLength: \"5\",\n displayLeadingZeros: true\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true),\n (showPeakMeterRead.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 2,\n placeholder: \"5 digits required...\",\n modelValue: energyInformation.value.peakMeterRead,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((energyInformation.value.peakMeterRead) = $event)),\n label: \"Peak Meter Read\",\n maxLength: \"5\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 5-digit Peak meter read in the format: 12345\",\n minLength: \"5\",\n displayLeadingZeros: true\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true),\n (showNightMeterRead.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 3,\n placeholder: \"5 digits required...\",\n modelValue: energyInformation.value.nightMeterRead,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((energyInformation.value.nightMeterRead) = $event)),\n label: \"Night Meter Read\",\n maxLength: \"5\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 5-digit Night meter read in the format: 12345\",\n minLength: \"5\",\n displayLeadingZeros: true\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true),\n (showNightSaveMeter.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 4,\n placeholder: \"5 digits required...\",\n modelValue: energyInformation.value.nightSaverMeterRead,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((energyInformation.value.nightSaverMeterRead) = $event)),\n label: \"Night Saver Meter Read\",\n maxLength: \"5\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 5-digit Night Saver meter read in the format: 12345\",\n minLength: \"5\",\n displayLeadingZeros: true\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", null, [\n (showGasFields.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 0,\n placeholder: \"7 digits required...\",\n modelValue: energyInformation.value.gasGPRNNum,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((energyInformation.value.gasGPRNNum) = $event)),\n label: \"Gas GPRN Number\",\n maxLength: \"7\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 7-digit GPRN number in the format 1234567\",\n minLength: \"7\"\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true),\n (showGasFields.value)\n ? (_openBlock(), _createBlock(FieldValidationFreeTextbox, {\n key: 1,\n placeholder: \"5 digits required...\",\n modelValue: energyInformation.value.gasMeterRead,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((energyInformation.value.gasMeterRead) = $event)),\n label: \"Gas Meter Read\",\n maxLength: \"5\",\n validationGroup: props.validationGroup,\n \"required-input\": true,\n width: _unref(FieldSize).Small,\n numericalField: true,\n invalidNumericalMessage: \"Please enter the 5-digit Gas Meter Read in the format 12345\",\n minLength: \"5\",\n displayLeadingZeros: true\n }, null, 8, [\"modelValue\", \"validationGroup\", \"width\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"date-payg-container\", { smallScreen: smallScreen.value }])\n }, [\n _createElementVNode(\"div\", null, [\n _hoisted_28,\n _createVNode(FieldValidationFreeDateBox, {\n modelValue: energyInformation.value.readingDate,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((energyInformation.value.readingDate) = $event)),\n width: _unref(FieldSize).Small,\n validationGroup: props.validationGroup,\n required: true,\n maxDate: currrentDate.value\n }, null, 8, [\"modelValue\", \"width\", \"validationGroup\", \"maxDate\"])\n ]),\n (energyType.value != _unref(EnergyTypes).ElectricityOnly)\n ? (_openBlock(), _createBlock(SelectOption, {\n key: 0,\n title: \"Pay as you go Gas Meter?\",\n selectBoxTwoText: \"No\",\n selectBoxOneText: \"Yes\",\n width: \"105px\",\n onButtonSelected: paygOptionSelected,\n useToolTip: true,\n toolTipId: \"meter\",\n toolTipTarget: \"#meter\",\n \"selected-by-default\": setPaygNo.value,\n showAskterisk: true,\n boldTitle: true,\n value: pAYGValue.value,\n titleSpacing: \"flex-start\"\n }, {\n \"tooltip-content\": _withCtx(() => [\n _hoisted_29,\n _hoisted_30,\n _hoisted_31,\n _hoisted_32,\n _hoisted_33,\n _hoisted_34,\n _hoisted_35,\n _hoisted_36,\n _hoisted_37,\n _hoisted_38,\n _hoisted_39\n ]),\n _: 1\n }, 8, [\"selected-by-default\", \"value\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (props.showHousingDevelopmentQuestion)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_40, [\n _createVNode(SelectOption, {\n title: \"Is this property part of a new housing development?\",\n selectBoxTwoText: \"No\",\n selectBoxOneText: \"Yes\",\n width: \"105px\",\n onButtonSelected: updateNewHousingDevelopmentOption,\n useToolTip: true,\n toolTipId: \"housingDevelopment\",\n toolTipTarget: \"#housingDevelopment\",\n showAskterisk: true,\n boldTitle: true,\n titleSpacing: \"flex-start\",\n selectedByDefault: defaultHousingOption.value,\n value: props.housingDevelopmentSelectedOption\n }, {\n \"tooltip-content\": _withCtx(() => [\n _hoisted_41,\n _hoisted_42,\n _hoisted_43,\n _hoisted_44,\n _hoisted_45\n ]),\n _: 1\n }, 8, [\"selectedByDefault\", \"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./energy-details-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./energy-details-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./energy-details-page.vue?vue&type=style&index=0&id=52ed47f5&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52ed47f5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-70489f62\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"column\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"Landlord Details\", -1))\nconst _hoisted_3 = {\n key: 0,\n class: \"lookup-container\"\n}\nconst _hoisted_4 = { class: \"telephone-input-container\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"Phone or Mobile Number\", -1))\n\nimport { PropType, computed, ref, onMounted, watch, inject } from 'vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport ScrollView from '@/components/ui/scroll-view.vue';\nimport LookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport SwitchContactLookup from '@/components/ui/lookup/switch-contact-lookup.vue';\nimport { ContactFindTypeRestriction } from '@/enums/contacts/ContactFindTypeRestriction';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { mapAcquaintContactToLandlordPersonalInfo } from '@/utils/utility-switching/SwitchContactMapper';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { VueTelInput } from 'vue-tel-input';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'landlord-details-landlord-switch',\n props: {\n landlordDetails: {\n type: Object as PropType,\n required: true\n },\n telephoneNumberValid:{\n type:Boolean,\n required:true\n }\n},\n emits: ['update:landlordDetails', 'update:telephoneNumberValid'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\n\n\n\n\n\nconst landlordPersonalInfo = computed({\n get: () => props.landlordDetails,\n set: (value: LandlordPersonalInfo) => emit('update:landlordDetails', value)\n});\n\nconst screenWidth = ref(screen.width);\nconst smallScreen = computed(() => screenWidth.value < 769);\n\nconst onContactSelected = (e: Contacts) => {\n landlordPersonalInfo.value = mapAcquaintContactToLandlordPersonalInfo(e);\n}\n\nconst fetchDetailsFillFields = async () => {\n if (landlordPersonalInfo.value.id <= 0) {\n return\n }\n\n let selectedPropertyLandlord: Contacts;\n\n try {\n selectedPropertyLandlord = await apiClient.httpGet(`database/contacts/${landlordPersonalInfo.value.id}`);\n } catch (err) {\n return\n }\n\n if (selectedPropertyLandlord) {\n landlordPersonalInfo.value = mapAcquaintContactToLandlordPersonalInfo(selectedPropertyLandlord);\n }\n};\n\nonMounted(() => {\n fetchDetailsFillFields();\n});\n\nwatch(() => landlordPersonalInfo.value.id, () => {\n fetchDetailsFillFields();\n});\n\nconst preferredTelehoneNumbers = ['IE', 'GB', 'FR', 'DE', 'ES', 'PL'];\n\nconst telehpneInputOptions = {\n required:true\n};\n\nconst telephoneNumberValid = computed({\n get:()=>props.telephoneNumberValid == undefined || props.telephoneNumberValid == false ? false:true,\n set:(value:Boolean)=>emit('update:telephoneNumberValid', value == undefined || value == false ? false:true)\n});\n\nconst phoneNumberValidated = (e:any)=>{\n telephoneNumberValid.value = e.valid;\n};\n\nconst showLandlordLookup = ref(false);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ScrollView, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", {\n class: _normalizeClass([\"landlord-details\", { smallScreen: smallScreen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _hoisted_2,\n (showLandlordLookup.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(SwitchContactLookup, {\n \"find-type-restriction\": _unref(ContactFindTypeRestriction).PropertyOwners,\n label: \"Look up Landlord\",\n \"results-max-width\": \"50%\",\n onContactSelected: onContactSelected,\n toolTipId: \"landlordDetailsSwitch\",\n toolTipTarget: \"#landlordDetailsSwitch\"\n }, {\n \"tooltip-content\": _withCtx(() => [\n _createTextVNode(\"Search for an existing contact to pre-fill the information below.\")\n ]),\n _: 1\n }, 8, [\"find-type-restriction\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(LookupSingleSelect, {\n modelValue: landlordPersonalInfo.value.title,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((landlordPersonalInfo.value.title) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n requiredInput: false,\n validationGroup: \"landlord\",\n label: \"Title\",\n \"allow-zero-value\": true\n }, null, 8, [\"modelValue\", \"lookup-source\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.firstName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((landlordPersonalInfo.value.firstName) = $event)),\n fieldValidation: _unref(ContactsValidation).FirstNames,\n label: \"First Name\",\n requiredInput: true,\n validationGroup: \"landlord\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.lastName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((landlordPersonalInfo.value.lastName) = $event)),\n fieldValidation: _unref(ContactsValidation).LastName,\n label: \"Last Name\",\n requiredInput: true,\n validationGroup: \"landlord\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(VueTelInput), {\n defaultCountry: 353,\n inputOptions: telehpneInputOptions,\n modelValue: landlordPersonalInfo.value.number,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((landlordPersonalInfo.value.number) = $event)),\n mode: \"international\",\n \"valid-characters-only\": true,\n onValidate: phoneNumberValidated,\n preferredCountries: preferredTelehoneNumbers\n }, null, 8, [\"modelValue\"])\n ])\n ])\n ], 2)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./landlord-details-landlord-switch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./landlord-details-landlord-switch.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./landlord-details-landlord-switch.vue?vue&type=style&index=0&id=70489f62&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-70489f62\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77e3f72f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"bill-to-card\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"contents\" }\nconst _hoisted_4 = { class: \"blurb\" }\n\nimport { DxCheckBox } from 'devextreme-vue';\nimport { computed } from 'vue';\n\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'bill-to-card',\n props: {\n /** \n * The boolean value indicates whether the component is checked.\n * @type {boolean}\n * @default true\n */\n checked: {\n type: Boolean,\n required: true\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @required\n */\n title: {\n type: String,\n required: true\n },\n blurb: {\n type: String,\n default: ''\n }\n},\n emits: ['update:checked'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst checkedComputed = computed({\n get: () => props.checked,\n set: (value: boolean) => emit('update:checked', value)\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(__props.title), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(__props.blurb), 1),\n _createVNode(_unref(DxCheckBox), {\n value: checkedComputed.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((checkedComputed).value = $event))\n }, null, 8, [\"value\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./bill-to-card.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bill-to-card.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./bill-to-card.vue?vue&type=style&index=0&id=77e3f72f&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77e3f72f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0818eda8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"options-container\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title-container\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", null, \"Bill To\"),\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fas fa-info-circle info-icon\",\n id: \"billTo\"\n })\n], -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"The option selected will be passed onto the Energy Supplier of the Property.\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Any bills for this account will be sent to the selected address.\", -1))\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"If there is an issue with your Agency Billing address, please let us know by emailing support@propertybutton.ie\", -1))\n\nimport { PropType, computed, onMounted, ref, watch } from 'vue';\nimport BillToCard from './bill-to-card.vue';\nimport { useAgencyAccountStore } from '@/stores/utility-switching/AgencyAccountStore';\nimport { AgencyAccount } from '@/types/switches/AgencyAccount';\nimport { SwitchBillTo } from '@/enums/utility-switching/SwitchBillTo';\nimport { DxTooltip } from 'devextreme-vue/tooltip';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { formatAddress } from '@/utils/address/AddressFormatter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'bill-to-select',\n props: {\n modelValue: {\n type: Number as PropType,\n required: true\n },\n landlord: {\n type: Object as PropType,\n required: true\n }\n},\n emits: ['update:modelValue'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst billTo = computed({\n get: () => props.modelValue,\n set: (value: SwitchBillTo) => emit('update:modelValue', value)\n});\n\nconst landlordChecked = ref(false);\nconst agencyChecked = ref(false);\n\nconst agencyAccountStore = useAgencyAccountStore();\nconst account = ref();\nconst loading = ref(false);\n\nonMounted(async () => {\n account.value = await agencyAccountStore.getAccount();\n});\n\nwatch(() => props.modelValue, () => {\n loading.value = true;\n\n switch (props.modelValue) {\n case SwitchBillTo.Landlord:\n landlordChecked.value = true;\n agencyChecked.value = false;\n break;\n case SwitchBillTo.LandlordCOAgency:\n landlordChecked.value = false;\n agencyChecked.value = true;\n break;\n }\n\n loading.value = false;\n}, { immediate: true })\n\nwatch(() => landlordChecked.value, () => {\n if (loading.value) {\n return;\n }\n\n if (landlordChecked.value) {\n billTo.value = SwitchBillTo.Landlord;\n } else {\n /* The options need to be treated as a radio button. \n If we untick the option, it needs to tick the other option */\n agencyChecked.value = true;\n }\n})\n\nwatch(() => agencyChecked.value, () => {\n if (loading.value) {\n return;\n }\n\n if (agencyChecked.value) {\n billTo.value = SwitchBillTo.LandlordCOAgency;\n } else {\n /* The options need to be treated as a radio button. \n If we untick the option, it needs to tick the other option */\n landlordChecked.value = true;\n }\n});\n\nconst agencyBlurb = computed(() => {\n if (!account.value) {\n return ''\n }\n\n const agencyAddress = formatAddress('', account.value.address.street, '', account.value.address.city,\n account.value.address.county, account.value.address.postalCode)\n\n // To make the blurb clearer for the end user and to match summary step, display landlord c/o agency if landlord details passed\n const agencyName = landlordName.value ? `CO ${landlordName.value} ` : '';\n\n return [agencyName, agencyAddress, account.value.phone]\n .filter(item => !!item)\n .join('\\n');\n});\n\nconst landlordBlurb = computed(() => {\n if (!props.landlord) {\n return '';\n }\n\n const landlordAddress = formatAddress(props.landlord.address.propertyName, props.landlord.address.street,\n props.landlord.address.locality, props.landlord.address.town,\n props.landlord.address.region, props.landlord.address.postCode)\n\n return [landlordName.value, landlordAddress, props.landlord.number]\n .filter(item => !!item)\n .join('\\n');\n});\n\nconst landlordName = computed(() => {\n if (!props.landlord) {\n return '';\n }\n\n return (props.landlord.firstName + ' ' + props.landlord.lastName).trim();\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createVNode(BillToCard, {\n checked: landlordChecked.value,\n \"onUpdate:checked\": _cache[0] || (_cache[0] = ($event: any) => ((landlordChecked).value = $event)),\n title: \"Landlord\",\n blurb: landlordBlurb.value\n }, null, 8, [\"checked\", \"blurb\"]),\n _createVNode(BillToCard, {\n checked: agencyChecked.value,\n \"onUpdate:checked\": _cache[1] || (_cache[1] = ($event: any) => ((agencyChecked).value = $event)),\n title: \"Agency\",\n blurb: agencyBlurb.value\n }, null, 8, [\"checked\", \"blurb\"]),\n _createVNode(_unref(DxTooltip), {\n target: \"#billTo\",\n \"show-event\": \"mouseenter\",\n width: \"275px\",\n \"hide-event\": \"mouseleave\"\n }, {\n default: _withCtx(() => [\n _hoisted_3,\n _hoisted_4,\n _hoisted_5,\n _hoisted_6,\n _hoisted_7\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./bill-to-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bill-to-select.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./bill-to-select.vue?vue&type=style&index=0&id=0818eda8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0818eda8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, PropType } from 'vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport SingleSelect from './single-select.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'irish-counties-single-select',\n props: {\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific input control is required field.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default 'County'\n */\n label: {\n type: String,\n default: 'County'\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst county = computed({\n get: () => props.modelValue,\n set: (value: string) => emit('update:modelValue', value)\n})\n\nconst irishCounties: IDDescriptionPair[] = [\n { id: 0, description: '' },\n { id: 1, description: 'County Carlow' },\n { id: 2, description: 'County Cavan' },\n { id: 3, description: 'County Clare' },\n { id: 4, description: 'County Cork' },\n { id: 5, description: 'County Donegal' },\n { id: 6, description: 'County Dublin' },\n { id: 7, description: 'County Galway' },\n { id: 8, description: 'County Kerry' },\n { id: 9, description: 'County Kildare' },\n { id: 10, description: 'County Kilkenny' },\n { id: 11, description: 'County Laois' },\n { id: 12, description: 'County Leitrim' },\n { id: 13, description: 'County Limerick' },\n { id: 14, description: 'County Longford' },\n { id: 15, description: 'County Louth' },\n { id: 16, description: 'County Mayo' },\n { id: 17, description: 'County Meath' },\n { id: 18, description: 'County Monaghan' },\n { id: 19, description: 'County Offaly' },\n { id: 20, description: 'County Roscommon' },\n { id: 21, description: 'County Sligo' },\n { id: 22, description: 'County Tipperary' },\n { id: 23, description: 'County Waterford' },\n { id: 24, description: 'County Westmeath' },\n { id: 25, description: 'County Wexford' },\n { id: 26, description: 'County Wicklow' }\n]\n\nconst selectedCountyId = computed({\n get: () => getCountyId(),\n set: (value: number) => county.value = getCountyDescription(value)\n});\n\nconst getCountyId = () => {\n /* Historical data may not contain 'County' as we didn't enforce this previously\n * This won't account for Co. or Co. However, Jim previously said ignore this */\n const normalizedDescription = county.value.includes('County ') ? county.value : `County ${county.value}`\n const matchedCounty = irishCounties.find(x => x.description === normalizedDescription);\n\n if (matchedCounty) {\n return matchedCounty.id;\n }\n\n county.value = '';\n return 0;\n}\n\nconst getCountyDescription = (countyId: number) => {\n return irishCounties.find(x => x.id === countyId)?.description ?? '';\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SingleSelect, {\n modelValue: selectedCountyId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedCountyId).value = $event)),\n \"data-source\": irishCounties,\n width: props.width,\n \"allow-zero-value\": !__props.requiredInput,\n \"required-input\": __props.requiredInput,\n label: __props.label,\n \"validation-group\": __props.validationGroup\n }, null, 8, [\"modelValue\", \"width\", \"allow-zero-value\", \"required-input\", \"label\", \"validation-group\"]))\n}\n}\n\n})","import script from \"./irish-counties-single-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./irish-counties-single-select.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a9e4f50e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"billing-details-container\" }\nconst _hoisted_2 = { class: \"column\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"column\"\n}\nconst _hoisted_4 = { class: \"lookup-container\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \"Search for an address or enter an address manually\", -1))\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"Address\", -1))\n\nimport { PropType, computed } from 'vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { Address } from '@/types/generic/Address';\nimport AutoAddressWrapper from '@/components/ui/address/auto-address-wrapper.vue';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport { SwitchBillTo } from '@/enums/utility-switching/SwitchBillTo';\nimport BillToSelect from './bill-to-select.vue';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\nimport IrishCountiesSingleSelect from '@/components/ui/dropdowns/irish-counties-single-select.vue';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'billing-address-page',\n props: {\n landlordAddress: {\n type: Object as PropType
,\n required: true\n },\n billTo: {\n type: Number,\n required: true\n },\n landlord: {\n type: Object as PropType,\n required: true\n }\n},\n emits: ['update:landlordAddress', 'update:billTo'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst landlordAddress = computed({\n get: () => props.landlordAddress,\n set: (value: Address) => emit('update:landlordAddress', value)\n});\n\nconst billTo = computed({\n get: () => props.billTo,\n set: (value: Number) => emit('update:billTo', value)\n});\n\nconst onAddressFound = (e: Address) => {\n landlordAddress.value = e;\n};\n\n// To avoid user confusion, only show address fields when billing the landlord\nconst showAddressFields = computed(() => props.billTo === SwitchBillTo.Landlord)\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(BillToSelect, {\n modelValue: billTo.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((billTo).value = $event)),\n landlord: __props.landlord\n }, null, 8, [\"modelValue\", \"landlord\"])\n ]),\n (showAddressFields.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(AutoAddressWrapper, { onOnAddressFound: onAddressFound })\n ]),\n _hoisted_6,\n _createVNode(AcquaintTextbox, {\n modelValue: landlordAddress.value.propertyName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((landlordAddress.value.propertyName) = $event)),\n label: \"Property Name\",\n fieldValidation: _unref(ContactsValidation).HomeProperty,\n validationGroup: \"billing\",\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordAddress.value.street,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((landlordAddress.value.street) = $event)),\n label: \"Street\",\n validationGroup: \"billing\",\n fieldValidation: _unref(ContactsValidation).HomeStreet,\n requiredInput: true,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordAddress.value.locality,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((landlordAddress.value.locality) = $event)),\n label: \"Locality\",\n validationGroup: \"billing\",\n fieldValidation: _unref(ContactsValidation).HomeLocality,\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordAddress.value.town,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((landlordAddress.value.town) = $event)),\n fieldValidation: _unref(ContactsValidation).HomeTown,\n label: \"Town\",\n validationGroup: \"billing\",\n requiredInput: true,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(IrishCountiesSingleSelect, {\n modelValue: landlordAddress.value.region,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((landlordAddress.value.region) = $event)),\n label: \"County\",\n validationGroup: \"billing\",\n requiredInput: true\n }, null, 8, [\"modelValue\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordAddress.value.postCode,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((landlordAddress.value.postCode) = $event)),\n fieldValidation: _unref(ContactsValidation).HomePostcode,\n label: \"Eircode\",\n validationGroup: \"billing\",\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change,\n \"country-code\": _unref(CountryCode).Ireland\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"value-change-event\", \"country-code\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./billing-address-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./billing-address-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./billing-address-page.vue?vue&type=style&index=0&id=a9e4f50e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a9e4f50e\"]])\n\nexport default __exports__","export enum LandlordSwitchStep {\n PropertyLookup,\n Energy, \n Landlord,\n Billing, \n Summary,\n Confirmation\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-560d1ac2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = { class: \"progress-bar-container\" }\nconst _hoisted_3 = { class: \"switch-page\" }\nconst _hoisted_4 = { class: \"switch-page\" }\nconst _hoisted_5 = { class: \"switch-page\" }\nconst _hoisted_6 = { class: \"switch-page\" }\nconst _hoisted_7 = { class: \"switch-page\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"switch-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page-title\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"tick-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-check-circle\" })\n ]),\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"THANKS FOR SUBMITTING THE SWITCH INFORMATION.\")\n ]),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"What happens next?\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"You will receive a confirmation email to confirm that we have received this switch. Property Button will act to process this request within 1 business day.\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"All requests are time sensitive as electricity and gas reads are only valid for 3 days by all suppliers from the date taken.\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"Uploading a switch with missing or incorrect information required by energy suppliers, may result in a delay processing the request.\")\n ])\n], -1))\nconst _hoisted_9 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_10 = { class: \"steps\" }\nconst _hoisted_11 = { class: \"right-hand-buttons\" }\nconst _hoisted_12 = { class: \"right-button\" }\n\nimport { baseAlert } from '@/alerts/baseAlert';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { DxButton } from 'devextreme-vue';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '../../ui/modals/modal-base.vue';\nimport EnergyDetailsPage from '../energy-details-page.vue';\nimport SummaryPage from '../summary-page.vue';\nimport TenantSwitchProgress from '../tenant-switch-progress.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { SubmissionResponse } from '@/types/utility-switching/SubmissionResponse';\nimport { LandlordSwitchSubmitData } from '@/types/utility-switching/LandlordSwitchSubmitData';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { AddressEnergyTypeMapper } from '@/utils/utility-switching/AddressEnergyTypeMapper';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport { FindEnergyTypeText } from '@/utils/utility-switching/FindEnergyTypeText';\nimport LandlordDetailsPage from './landlord-details-landlord-switch.vue';\nimport PropertyLookupPage from '../property-lookup-page.vue';\nimport BillingAddressPage from './billing-address-page.vue';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { CollateLandlordSubmissionData } from '@/utils/utility-switching/CollateSwitchSubmissionData';\nimport { SwitchBillTo } from '@/enums/utility-switching/SwitchBillTo';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { getDefaultAddressValue } from '@/utils/address/AddressFormatter';\nimport { LandlordSwitchStep } from '@/enums/utility-switching/LandlordSwitchStep';\nimport { SwitchPage } from '@/enums/utility-switching/SwitchPage';\nimport { getDefaultEnergyDetailsModel } from '@/utils/utility-switching/EnergyDetailsMapper';\nimport displayErrorMessage from '@/utils/ErrorHandling';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'landlord-switching-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default -1\n */\n propertyId: {\n type: Number,\n default: -1\n },\n\n /** \n * The unique identifier for the tenancy.\n * @type {number}\n * @default -1\n */\n tenancyId: {\n type: Number,\n default: -1\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst disableSummaryEditButtons = ref(false);\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'property'\n },\n {\n template: 'energy'\n },\n {\n template: 'landlord'\n },\n {\n template: 'billing'\n },\n {\n template: 'switch-summary'\n },\n {\n template: 'confirmation'\n }\n]);\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case LandlordSwitchStep.Summary:\n return 'Submit';\n case LandlordSwitchStep.Confirmation:\n return 'Done';\n default:\n return 'Next'\n }\n});\n\nconst selectedIndex = ref(0);\n\n// This assigns the next button its validation group so that it can calidate the right group of of input fields\n// e.g. the inputs are within the group 'propertyGroup' and they need to be validated before the user can go onto\n// the next page\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case LandlordSwitchStep.PropertyLookup:\n return 'propertyGroup';\n case LandlordSwitchStep.Energy:\n return 'energy';\n case LandlordSwitchStep.Landlord:\n return 'landlord';\n case LandlordSwitchStep.Billing:\n return 'billing';\n default:\n return '';\n }\n});\n\n\nconst submitSwitchDetails = async () => {\n // We must disable the summary edit buttons and the nav buttons to prevent users from making changes while the api submission call is being made\n disableSummaryEditButtons.value = true;\n nextButtonLocked.value = true;\n backButtonDisabled.value = true;\n\n let submitData: LandlordSwitchSubmitData = CollateLandlordSubmissionData(propertyAddress.value, energyDetails.value, energyType.value,\n switchPropertyId.value, landlordPersonalInfo.value, billTo.value,\n props.tenancyId);\n\n let submissionRepsonse: SubmissionResponse = {\n switchOverID: '',\n caseID: ''\n };\n\n try {\n submissionRepsonse = await apiClient.httpPost('app/utilityswitching/switches/landlord', submitData);\n } catch (err) {\n displayErrorMessage('We cannot submit your switch');\n }\n\n if (submissionRepsonse.caseID) {\n stageSix.value = 1;\n selectedIndex.value = 5;\n showCloseConfirmationPrompt.value = false;\n }\n\n // We must reset these to ensure that the summary edit buttons and the nav buttons are enabled if a user submits a switch and then starts a new one\n // or if the submission fails\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n};\n\nconst navigate = async (navigateDirection: number, e: any) => {\n if (navigateDirection > 0) {\n // We must close the alert on the enrgy page if it is open and prevent any validation from occurring, as the app will otherise\n // err, and prevent the user from progressing forwards\n if (baseAlert.isVisible()) {\n baseAlert.close();\n return\n }\n\n const validation: ValidatedEvent = e.validationGroup?.validate();\n\n // Don't continue if user has entered invalid data\n if (validation && !validation.isValid) {\n return;\n }\n\n if (selectedIndex.value == LandlordSwitchStep.Landlord && !landlordTelephoneNumberValid.value) {\n displayErrorMessage('Please enter a valid telephone number.');\n return;\n }\n\n // Force users to select whether the property has a pay as you go meter\n if (selectedIndex.value === LandlordSwitchStep.Energy && !payAsYouGoSelected.value && energyType.value != EnergyTypes.ElectricityOnly) {\n displayErrorMessage('Please select whether the property has a Pay as you go Meter');\n return;\n }\n\n // If the user is moving forwards, the progress bars must have their values updated to 1 (a value of 1 makes a progress bar fill in)\n switch (selectedIndex.value) {\n case LandlordSwitchStep.PropertyLookup:\n stageTwo.value = 1;\n break;\n case LandlordSwitchStep.Energy:\n stageThree.value = 1;\n break;\n case LandlordSwitchStep.Landlord:\n stageFour.value = 1;\n break;\n case LandlordSwitchStep.Billing:\n stageFive.value = 1;\n break;\n }\n }\n\n if (selectedIndex.value == LandlordSwitchStep.Summary && navigateDirection > 0) {\n await submitSwitchDetails();\n return\n }\n\n if (selectedIndex.value == LandlordSwitchStep.Confirmation && navigateDirection > 0) {\n closeModal();\n }\n\n selectedIndex.value = selectedIndex.value + navigateDirection;\n\n // If the user is moving backwards, the progress bars must have their values updated to 0 (a value of 0 makes a progress bar empty itself)\n if (navigateDirection < 0) {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n\n switch (selectedIndex.value) {\n case LandlordSwitchStep.PropertyLookup:\n stageTwo.value = 0;\n break;\n case LandlordSwitchStep.Energy:\n stageThree.value = 0;\n break;\n case LandlordSwitchStep.Landlord:\n stageFour.value = 0;\n break;\n case LandlordSwitchStep.Billing:\n stageFive.value = 0;\n break;\n }\n }\n};\n\n// When closing the modal, we must reset each progress bar \nconst closeModal = () => {\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n showCloseConfirmationPrompt.value = false;\n showPopup.value = false;\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n};\n\nconst resetToDefaultState = () => {\n // We must reset this to ensure that the summary edit/nav buttons are enabled if a user submits a switch and then starts a new one\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n\n //All values must be reset when the modal closes\n selectedIndex.value = LandlordSwitchStep.PropertyLookup;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n\n // Need to clone the empty address, to avoid the addresses using the same variable in memory\n propertyAddress.value = {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n };\n\n billTo.value = SwitchBillTo.Landlord;\n\n landlordPersonalInfo.value = {\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n address: {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n }\n }\n\n energyDetails.value = getDefaultEnergyDetailsModel();\n\n payAsYouGoSelected.value = false;\n showCloseConfirmationPrompt.value = true;\n}\n\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst stageFour = ref(0);\nconst stageFive = ref(0);\nconst stageSix = ref(0);\n\n//selectedIndex starts at 0 so we have to add 1 to it when displaying the stage to the user\nconst switchStage = ref(1);\n\n// When we get to the energy page, the next page needs to be disabled (to prevent users from not searching for an MPRN number)\n// and the appropriate progress bars needs to be reset when users return to previous pages from the summary page (only four \n// pages can be accessed from the summary page)\nwatch(() => selectedIndex.value, () => {\n switchStage.value = selectedIndex.value + 1;\n\n switch (selectedIndex.value) {\n case LandlordSwitchStep.PropertyLookup: {\n nextButtonLocked.value = false;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case LandlordSwitchStep.Energy: {\n // If we don't already have an energy page postcode (i.e. a user hasn't already searched for their MPRN number and found an address and has confirmed it)\n // The next button is disbled. If a user finds and confirms an address and progresses to the summary page then returns to the energy page, the next button,\n // isn't disabled.\n if (!mprnAddress.value.postCode) {\n nextButtonLocked.value = true;\n }\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case LandlordSwitchStep.Landlord: {\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case LandlordSwitchStep.Billing: {\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n }\n});\n\nconst propertyAddress = ref
({\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst landlordPersonalInfo = ref({\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n address: {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n }\n});\n\nconst billTo = ref(SwitchBillTo.Landlord);\n\nconst billToLandlord = computed(() => billTo.value == SwitchBillTo.Landlord);\n\nconst energyDetails = ref({\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n});\n\nconst mprnAddress = ref
({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: \"\"\n});\n\n// This ref confirms whether or not a the address found by the MPRN has been confirmed to be the correct one\n// on the energy page.\nconst addressValidated = ref(true);\n\nconst nextButtonLocked = ref(false);\nconst backButtonDisabled = ref(false);\n\n/* This is triggered by the user answering the address confirmation modal (i.e. the user\n * has confirmed the address found by the MPRN lookup does not match the previously entered address)\n * or by the MPRN address matching the entered address. For example, if both addresses match,\n * the next button is unlocked. This is true for when the user confirm the address using the popup.\n * Otherwise, the button remains unlocked. \n * This is also triggered when users lookup an MpRN number and then change it\n * without looking it up again - the next button remains unlocked until they do */\nconst disableNextButton = (inValid: boolean, selectedProperty: MprnLookupResponse) => {\n if (selectedIndex.value != LandlordSwitchStep.Energy) {\n return;\n }\n\n nextButtonLocked.value = inValid;\n\n if (selectedProperty) {\n mprnAddress.value.propertyName = selectedProperty.addressPropertyName;\n mprnAddress.value.street = selectedProperty.addressStreet;\n mprnAddress.value.locality = selectedProperty.addressLocality;\n mprnAddress.value.town = selectedProperty.addressTown;\n mprnAddress.value.region = selectedProperty.addressRegion;\n mprnAddress.value.postCode = selectedProperty.addressPostcode;\n } else {\n mprnAddress.value = getDefaultAddressValue();\n }\n};\n\nconst payAsYouGoSelected = ref(false)\n\nconst onPayAsYouGoSelected = () => payAsYouGoSelected.value = true;\n\nconst energyType = ref(EnergyTypes.ElectricityOnly);\n\nconst switchPropertyId = ref(0);\n\nconst gasMeterType = ref(-1);\n\nconst resetEnergyFields = () => {\n gasMeterType.value = -1;\n switchPropertyId.value = 0;\n payAsYouGoSelected.value = false;\n energyDetails.value = getDefaultEnergyDetailsModel();\n};\n\n// The correct energy type option on the energy page is pre-selected when the user selects a property from the seacrh dropdown\nconst propertySelected = (selectedProperty: Properties) => {\n resetEnergyFields();\n\n if (!selectedProperty) {\n return;\n }\n\n energyType.value = AddressEnergyTypeMapper(selectedProperty.gas, selectedProperty.electric);\n energyDetails.value.energyType = FindEnergyTypeText(energyType.value);\n energyDetails.value.mprn = selectedProperty.utilitySupplierElectricityRef;\n energyDetails.value.gasGPRNNum = selectedProperty.utilitySupplierGasRef;\n landlordPersonalInfo.value.id = selectedProperty.contactID;\n switchPropertyId.value = selectedProperty.id;\n\n if (selectedProperty.gasMeterType == GasMeterTypes.payg || selectedProperty.gasMeterType == GasMeterTypes.standard || selectedProperty.gasMeterType == GasMeterTypes.smart) {\n gasMeterType.value = selectedProperty.gasMeterType;\n payAsYouGoSelected.value = true;\n }\n\n // As the property has been changed, the previous mprn address is no longer valid\n mprnAddress.value = getDefaultAddressValue();\n};\n\nconst showCloseConfirmationPrompt = ref(true);\n\nconst onModalClosed = () => {\n resetToDefaultState();\n\n // Ensure all fields are reset by incrementing the content key\n contentRenderKey.value++;\n}\n\nconst contentRenderKey = ref(0);\nconst landlordTelephoneNumberValid = ref(false);\n\nconst newSwitchOver = () => {\n closeModal();\n setTimeout(() => {\n showPopup.value = true;\n }, 300);\n};\n\nconst updatePageNumber = (changeToPage: string) => {\n switch (changeToPage) {\n case SwitchPage.PropertyPage:\n selectedIndex.value = LandlordSwitchStep.PropertyLookup;\n break;\n case SwitchPage.EnergyPage:\n selectedIndex.value = LandlordSwitchStep.Energy;\n break;\n case SwitchPage.LandlordPage:\n selectedIndex.value = LandlordSwitchStep.Landlord;\n break;\n case SwitchPage.BillingPage:\n selectedIndex.value = LandlordSwitchStep.Billing;\n break;\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((showPopup).value = $event)),\n showCloseButton: true,\n title: \"New Landlord Switch\",\n height: \"78vh\",\n width: _unref(ModalWidth).Medium,\n \"show-close-confirmation-prompt\": showCloseConfirmationPrompt.value,\n onModalClosed: onModalClosed,\n key: contentRenderKey.value\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Landlord\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Billing\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 6,\n progress: -1\n }, null, 8, [\"index\"])\n ]),\n _createVNode(_unref(DxMultiView), {\n height: \"calc(100% - 40px)\",\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[8] || (_cache[8] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n property: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PropertyLookupPage, {\n modelValue: propertyAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n validationGroup: \"propertyGroup\",\n propertyId: props.propertyId,\n onPropertySelected: propertySelected,\n onChoseNotToUseExistingProperty: resetEnergyFields\n }, null, 8, [\"modelValue\", \"propertyId\"])\n ])\n ]),\n energy: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EnergyDetailsPage, {\n energy: energyDetails.value,\n \"onUpdate:energy\": _cache[1] || (_cache[1] = ($event: any) => ((energyDetails).value = $event)),\n address: propertyAddress.value,\n \"address-validated\": addressValidated.value,\n \"onUpdate:addressValidated\": _cache[2] || (_cache[2] = ($event: any) => ((addressValidated).value = $event)),\n validationGroup: \"energy\",\n \"energy-type\": energyType.value,\n \"onUpdate:energyType\": _cache[3] || (_cache[3] = ($event: any) => ((energyType).value = $event)),\n onDisableNextButton: disableNextButton,\n onPayAsYouGoSelected: onPayAsYouGoSelected,\n gasMeterType: gasMeterType.value\n }, null, 8, [\"energy\", \"address\", \"address-validated\", \"energy-type\", \"gasMeterType\"])\n ])\n ]),\n landlord: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(LandlordDetailsPage, {\n \"landlord-details\": landlordPersonalInfo.value,\n \"onUpdate:landlordDetails\": _cache[4] || (_cache[4] = ($event: any) => ((landlordPersonalInfo).value = $event)),\n \"telephone-number-valid\": landlordTelephoneNumberValid.value,\n \"onUpdate:telephoneNumberValid\": _cache[5] || (_cache[5] = ($event: any) => ((landlordTelephoneNumberValid).value = $event))\n }, null, 8, [\"landlord-details\", \"telephone-number-valid\"])\n ])\n ]),\n billing: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(BillingAddressPage, {\n \"landlord-address\": landlordPersonalInfo.value.address,\n \"onUpdate:landlordAddress\": _cache[6] || (_cache[6] = ($event: any) => ((landlordPersonalInfo.value.address) = $event)),\n landlord: landlordPersonalInfo.value,\n \"bill-to\": billTo.value,\n \"onUpdate:billTo\": _cache[7] || (_cache[7] = ($event: any) => ((billTo).value = $event))\n }, null, 8, [\"landlord-address\", \"landlord\", \"bill-to\"])\n ])\n ]),\n \"switch-summary\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(SummaryPage, {\n energySelectedAddress: mprnAddress.value,\n landlordPersonalInfo: landlordPersonalInfo.value,\n energyType: energyDetails.value.energyType,\n displayTcf: false,\n displayBillingAddress: true,\n billingInformation: billTo.value,\n billToLandlord: billToLandlord.value,\n onUpdatePageNumber: updatePageNumber,\n disableEditButtons: disableSummaryEditButtons.value\n }, null, 8, [\"energySelectedAddress\", \"landlordPersonalInfo\", \"energyType\", \"billingInformation\", \"billToLandlord\", \"disableEditButtons\"])\n ])\n ]),\n confirmation: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"])\n ]),\n _createElementVNode(\"section\", _hoisted_9, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"left-button\", { hideButton: selectedIndex.value == _unref(LandlordSwitchStep).PropertyLookup || selectedIndex.value == _unref(LandlordSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[9] || (_cache[9] = (e) => navigate(-1, e)),\n icon: \"spinleft\",\n disabled: backButtonDisabled.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(switchStage.value) + \" of 6\", 1),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"new-switchover\", { hideButton: selectedIndex.value < _unref(LandlordSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"New Switch\",\n onClick: newSwitchOver\n })\n ], 2),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[10] || (_cache[10] = (e) => navigate(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: nextButtonLocked.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./landlord-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./landlord-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./landlord-switching-modal.vue?vue&type=style&index=0&id=560d1ac2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-560d1ac2\"]])\n\nexport default __exports__","export enum SurrenderSwitchStep {\n Property,\n Energy,\n Summary,\n Confirmation\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-33b53685\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = { class: \"progress-bar-container\" }\nconst _hoisted_3 = { class: \"switch-page\" }\nconst _hoisted_4 = { class: \"switch-page\" }\nconst _hoisted_5 = { class: \"switch-page\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"switch-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page-title\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"tick-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-check-circle\" })\n ]),\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"THANKS FOR SUBMITTING THE SWITCH INFORMATION.\")\n ]),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"What happens next?\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"You will receive a confirmation email to confirm that we have received this switch. Property Button will act to process this request within 1 business day.\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"All requests are time sensitive as electricity and gas reads are only valid for 3 days by all suppliers from the date taken.\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"Uploading a switch with missing or incorrect information required by energy suppliers, may result in a delay processing the request.\")\n ])\n], -1))\nconst _hoisted_7 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_8 = { class: \"steps\" }\nconst _hoisted_9 = { class: \"right-hand-buttons\" }\nconst _hoisted_10 = { class: \"right-button\" }\n\nimport { baseAlert } from '@/alerts/baseAlert';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { DxButton } from 'devextreme-vue';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '../../ui/modals/modal-base.vue';\nimport EnergyDetailsPage from '../energy-details-page.vue';\nimport SummaryPage from '../summary-page.vue';\nimport TenantSwitchProgress from '../tenant-switch-progress.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { SubmissionResponse } from '@/types/utility-switching/SubmissionResponse';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { AddressEnergyTypeMapper } from '@/utils/utility-switching/AddressEnergyTypeMapper';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport { FindEnergyTypeText } from '@/utils/utility-switching/FindEnergyTypeText';\nimport PropertyLookupPage from '../property-lookup-page.vue';\nimport { CollateCouncilLandlordSubmissionData } from '@/utils/utility-switching/CollateSwitchSubmissionData';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { getDefaultAddressValue } from '@/utils/address/AddressFormatter';\nimport { SurrenderSwitchStep } from '@/enums/utility-switching/SurrenderSwitchStep';\nimport { CouncilLandlordSwitch } from '@/types/utility-switching/CouncilLandlordSwitch';\nimport { SwitchPage } from '@/enums/utility-switching/SwitchPage';\nimport { getDefaultEnergyDetailsModel } from '@/utils/utility-switching/EnergyDetailsMapper';\nimport { SelectOptionReponses } from '@/enums/SelectOptionResponses';\nimport displayErrorMessage from '@/utils/ErrorHandling';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'surrender-council-switch',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst disableSummaryEditButtons = ref(false);\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'property'\n },\n {\n template: 'energy'\n },\n {\n template: 'switch-summary'\n },\n {\n template: 'confirmation'\n }\n]);\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case SurrenderSwitchStep.Summary:\n return 'Submit';\n case SurrenderSwitchStep.Confirmation:\n return 'Done';\n default:\n return 'Next'\n }\n});\n\nconst selectedIndex = ref(0);\n\n// This assigns the next button its validation group so that it can calidate the right group of of input fields\n// e.g. the inputs are within the group 'propertyGroup' and they need to be validated before the user can go onto\n// the next page\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case SurrenderSwitchStep.Property:\n return 'property';\n case SurrenderSwitchStep.Energy:\n return 'energy';\n default:\n return '';\n }\n});\n\nconst submitSwitchDetails = async () => {\n // We must disable the summary edit buttons and the nav buttons to prevent users from making changes while the api submission call is being made\n disableSummaryEditButtons.value = true;\n nextButtonLocked.value = true;\n backButtonDisabled.value = true;\n let submissionRepsonse: SubmissionResponse = {\n switchOverID: '',\n caseID: ''\n };\n\n let submitData: CouncilLandlordSwitch = CollateCouncilLandlordSubmissionData(propertyAddress.value, energyDetails.value, energyType.value, switchPropertyId.value, isNewDevelopment.value);\n\n try {\n submissionRepsonse = await apiClient.httpPost('app/utilityswitching/switches/council/surrender', submitData);\n } catch (err) {\n displayErrorMessage('We cannot submit your switch');\n }\n\n if (submissionRepsonse.caseID) {\n stageFour.value = 1;\n selectedIndex.value = selectedIndex.value + 1;\n }\n\n // We must reset these to ensure that the summary edit buttons and the nav buttons are enabled if a user submits a switch and then starts a new one\n // or if the submission fails\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n};\n\n\nconst navigate = async (navigateDirection: number, e: any) => {\n if (navigateDirection > 0) {\n // We must close the alert on the enrgy page if it is open and prevent any validation from occurring, as the app will otherise\n // err, and prevent the user from progressing forwards\n if (baseAlert.isVisible()) {\n baseAlert.close();\n return\n }\n\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n // Force users to select whether the property has a pay as you go meter\n if (selectedIndex.value === SurrenderSwitchStep.Energy && !payAsYouGoSelected.value && energyType.value != EnergyTypes.ElectricityOnly) {\n displayErrorMessage('Please select whether the property has a Pay as you go Meter');\n return;\n }\n\n if (selectedIndex.value === SurrenderSwitchStep.Energy && !housingDevelopmentOptionSelected.value) {\n displayErrorMessage('Please select whether the property is a part of a new housing development.');\n return;\n }\n\n // If the user is moving forwards, the progress bars must have their values updated to 1 (a value of 1 makes a progress bar fill in)\n switch (selectedIndex.value) {\n case SurrenderSwitchStep.Property:\n stageTwo.value = 1;\n break;\n case SurrenderSwitchStep.Energy:\n stageThree.value = 1;\n break;\n }\n }\n\n if (selectedIndex.value == SurrenderSwitchStep.Summary && navigateDirection > 0) {\n await submitSwitchDetails();\n return\n }\n\n if (selectedIndex.value == SurrenderSwitchStep.Confirmation && navigateDirection > 0) {\n closeModal();\n }\n\n selectedIndex.value = selectedIndex.value + navigateDirection;\n\n // If the user is moving backwards, the progress bars must have their values updated to 0 (a value of 0 makes a progress bar empty itself)\n if (navigateDirection < 0) {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n\n switch (selectedIndex.value) {\n case SurrenderSwitchStep.Property:\n stageTwo.value = 0;\n break;\n case SurrenderSwitchStep.Energy:\n stageThree.value = 0;\n break;\n }\n }\n};\n\n// When closing the modal, we must reset each progress bar \nconst closeModal = () => {\n housingDevelopmentOptionSelected.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n showCloseConfirmationPrompt.value = false;\n showPopup.value = false;\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n};\n\nconst resetToDefaultState = () => {\n // We must reset this to ensure that the summary edit/nav buttons are enabled if a user submits a switch and then starts a new one\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n\n //All values must be reset when the modal closes\n selectedIndex.value = SurrenderSwitchStep.Property;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n\n // Need to clone the empty address, to avoid the addresses using the same variable in memory\n propertyAddress.value = {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n };\n\n energyDetails.value = getDefaultEnergyDetailsModel();\n numericalHousingDevelopmentOptionSelected.value = -1;\n housingDevelopmentOptionSelected.value = false;\n isNewDevelopment.value = false;\n payAsYouGoSelected.value = false;\n showCloseConfirmationPrompt.value = true;\n}\n\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst stageFour = ref(0);\n\n\n//selectedIndex starts at 0 so we have to add 1 to it when displaying the stage to the user\nconst switchStage = ref(1);\n\n// When we get to the energy page, the next page needs to be disabled (to prevent users from not searching for an MPRN number)\n// and the appropriate progress bars needs to be reset when users return to previous pages from the summary page (only four \n// pages can be accessed from the summary page)\nwatch(() => selectedIndex.value, () => {\n switchStage.value = selectedIndex.value + 1;\n\n switch (selectedIndex.value) {\n case SurrenderSwitchStep.Property: {\n nextButtonLocked.value = false;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n break;\n }\n case SurrenderSwitchStep.Energy: {\n // If we don't already have an energy page postcode (i.e. a user hasn't already searched for their MPRN number and found an address and has confirmed it)\n // The next button is disbled. If a user finds and confirms an address and progresses to the summary page then returns to the energy page, the next button,\n // isn't disabled.\n if (!mprnAddress.value.postCode) {\n nextButtonLocked.value = true;\n }\n stageThree.value = 0;\n stageFour.value = 0;\n break;\n }\n }\n});\n\nconst propertyAddress = ref
({\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst energyDetails = ref({\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n});\n\nconst mprnAddress = ref
({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: \"\"\n});\n\nconst housingDevelopmentOptionSelected = ref(false);\nconst numericalHousingDevelopmentOptionSelected = ref(-1);\n\nconst isNewDevelopment = ref(false);\n\n// This ref confirms whether or not a the address found by the MPRN has been confirmed to be the correct one\n// on the energy page.\nconst addressValidated = ref(true);\n\nconst nextButtonLocked = ref(false);\nconst backButtonDisabled = ref(false);\n\n/* This is triggered by the user answering the address confirmation modal (i.e. the user\n * has confirmed the address found by the MPRN lookup does not match the previously entered address)\n * or by the MPRN address matching the entered address. For example, if both addresses match,\n * the next button is unlocked. This is true for when the user confirm the address using the popup.\n * Otherwise, the button remains unlocked. \n * This is also triggered when users lookup an MpRN number and then change it\n * without looking it up again - the next button remains unlocked until they do */\nconst disableNextButton = (inValid: boolean, selectedProperty: MprnLookupResponse) => {\n if (selectedIndex.value != SurrenderSwitchStep.Energy) {\n return;\n }\n\n nextButtonLocked.value = inValid;\n\n if (selectedProperty) {\n mprnAddress.value.propertyName = selectedProperty.addressPropertyName;\n mprnAddress.value.street = selectedProperty.addressStreet;\n mprnAddress.value.locality = selectedProperty.addressLocality;\n mprnAddress.value.town = selectedProperty.addressTown;\n mprnAddress.value.region = selectedProperty.addressRegion;\n mprnAddress.value.postCode = selectedProperty.addressPostcode;\n } else {\n mprnAddress.value = getDefaultAddressValue();\n }\n};\n\nconst payAsYouGoSelected = ref(false)\n\nconst onPayAsYouGoSelected = () => payAsYouGoSelected.value = true;\n\nconst energyType = ref(EnergyTypes.ElectricityOnly);\n\nconst switchPropertyId = ref(0);\n\nconst gasMeterType = ref(-1);\n\n// The correct energy type option on the energy page is pre-selected when the user selects a property from the seacrh dropdown\nconst propertySelected = (selectedProperty: Properties) => {\n updateNewHousingDevelopment(false);\n resetEnergyFields()\n\n if (!selectedProperty) {\n return;\n }\n\n energyType.value = AddressEnergyTypeMapper(selectedProperty.gas, selectedProperty.electric);\n energyDetails.value.energyType = FindEnergyTypeText(energyType.value);\n energyDetails.value.mprn = selectedProperty.utilitySupplierElectricityRef;\n energyDetails.value.gasGPRNNum = selectedProperty.utilitySupplierGasRef;\n switchPropertyId.value = selectedProperty.id;\n\n // payAsYouGoSelected is set to true so that when the user clicks next in the energy page, they don't have click payg option - see the if statement in line 141\n if (selectedProperty.gasMeterType == GasMeterTypes.payg || selectedProperty.gasMeterType == GasMeterTypes.standard || selectedProperty.gasMeterType == GasMeterTypes.smart) {\n gasMeterType.value = selectedProperty.gasMeterType;\n payAsYouGoSelected.value = true;\n }\n\n // As the property has been changed, the previous mprn address is no longer valid\n mprnAddress.value = getDefaultAddressValue();\n};\n\nconst resetEnergyFields = () => {\n gasMeterType.value = -1;\n switchPropertyId.value = 0;\n payAsYouGoSelected.value = false;\n energyDetails.value = getDefaultEnergyDetailsModel();\n numericalHousingDevelopmentOptionSelected.value = -1;\n housingDevelopmentOptionSelected.value = false;\n isNewDevelopment.value = false;\n};\n\nconst showCloseConfirmationPrompt = ref(true);\n\nconst onModalClosed = () => {\n resetToDefaultState();\n\n // Ensure all fields are reset by incrementing the content key\n contentRenderKey.value++;\n}\n\nconst contentRenderKey = ref(0);\n\nconst newSwitchOver = () => {\n closeModal();\n setTimeout(() => {\n showPopup.value = true;\n }, 300);\n};\n\nconst updateNewHousingDevelopment = (selectedValue: boolean) => {\n // We must set housingDevelopmentOptionSelected to true each time a user selects a housing option so that we know \n // they can progress past the energy page - they can't if no option has been selected.\n housingDevelopmentOptionSelected.value = true;\n isNewDevelopment.value = selectedValue;\n\n // This is set to 1 or 2 dpedning on which option was selected so that if one of the options is selected by default\n // when an address is confirmed, this be reflected on the energy page.\n numericalHousingDevelopmentOptionSelected.value = isNewDevelopment.value ? SelectOptionReponses.Yes : SelectOptionReponses.No;\n};\n\nconst updatePageNumber = (changeToPage: string) => {\n switch (changeToPage) {\n case SwitchPage.PropertyPage:\n selectedIndex.value = SurrenderSwitchStep.Property;\n break;\n case SwitchPage.EnergyPage:\n selectedIndex.value = SurrenderSwitchStep.Energy;\n break;\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((showPopup).value = $event)),\n showCloseButton: true,\n title: \"New Surrender Switch\",\n height: \"78vh\",\n width: _unref(ModalWidth).Medium,\n \"show-close-confirmation-prompt\": showCloseConfirmationPrompt.value,\n onModalClosed: onModalClosed,\n key: contentRenderKey.value\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 4,\n progress: -1\n }, null, 8, [\"index\"])\n ]),\n _createVNode(_unref(DxMultiView), {\n height: \"calc(100% - 40px)\",\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[4] || (_cache[4] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n property: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PropertyLookupPage, {\n modelValue: propertyAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n validationGroup: \"property\",\n onPropertySelected: propertySelected,\n onChoseNotToUseExistingProperty: resetEnergyFields\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n energy: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EnergyDetailsPage, {\n energy: energyDetails.value,\n \"onUpdate:energy\": _cache[1] || (_cache[1] = ($event: any) => ((energyDetails).value = $event)),\n address: propertyAddress.value,\n \"address-validated\": addressValidated.value,\n \"onUpdate:addressValidated\": _cache[2] || (_cache[2] = ($event: any) => ((addressValidated).value = $event)),\n validationGroup: \"energy\",\n \"energy-type\": energyType.value,\n \"onUpdate:energyType\": _cache[3] || (_cache[3] = ($event: any) => ((energyType).value = $event)),\n onDisableNextButton: disableNextButton,\n onPayAsYouGoSelected: onPayAsYouGoSelected,\n gasMeterType: gasMeterType.value,\n onUpdateNewHousingDevelopment: updateNewHousingDevelopment,\n housingDevelopmentSelectedOption: numericalHousingDevelopmentOptionSelected.value,\n showHousingDevelopmentQuestion: true\n }, null, 8, [\"energy\", \"address\", \"address-validated\", \"energy-type\", \"gasMeterType\", \"housingDevelopmentSelectedOption\"])\n ])\n ]),\n \"switch-summary\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(SummaryPage, {\n energySelectedAddress: mprnAddress.value,\n energyType: energyDetails.value.energyType,\n displayTcf: false,\n onUpdatePageNumber: updatePageNumber,\n disableEditButtons: disableSummaryEditButtons.value\n }, null, 8, [\"energySelectedAddress\", \"energyType\", \"disableEditButtons\"])\n ])\n ]),\n confirmation: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"])\n ]),\n _createElementVNode(\"section\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"left-button\", { hideButton: selectedIndex.value == _unref(SurrenderSwitchStep).Property || selectedIndex.value == _unref(SurrenderSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[5] || (_cache[5] = (e) => navigate(-1, e)),\n icon: \"spinleft\",\n disabled: backButtonDisabled.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(switchStage.value) + \" of 4\", 1),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"new-switchover\", { hideButton: selectedIndex.value < _unref(SurrenderSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"New Switch\",\n onClick: newSwitchOver\n })\n ], 2),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[6] || (_cache[6] = (e) => navigate(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: nextButtonLocked.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./surrender-council-switch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./surrender-council-switch.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./surrender-council-switch.vue?vue&type=style&index=0&id=33b53685&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-33b53685\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-10d4f969\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"title auto-address-header\" }, \"Please enter the full address or eircode of the property\", -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \" \", -1))\nconst _hoisted_3 = { class: \"address-container\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"title\" }, \"Property Address\", -1))\n\nimport { onMounted } from 'vue';\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport AutoAddressWrapper from '@/components/ui/address/auto-address-wrapper.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { Address } from '@/types/generic/Address';\nimport { NewRecord } from '@/types/generic/NewRecord';\nimport { PropertiesValidation } from 'acquaint-api/validation/PropertiesValidation';\nimport { PropType, computed, inject, ref } from 'vue';\nimport { Properties } from 'acquaint-api/models/Properties'\nimport { mapPropertyToConcatenatedString } from '@/utils/properties/PropertyAddressMapper';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'property-lookup-page',\n props: {\n modelValue: {\n type: Object as PropType
,\n required: true\n },\n validationGroup: {\n type: String,\n default: ''\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default -1\n */\n propertyId: {\n type: Number,\n default: -1\n }\n},\n emits: ['update:modelValue', 'propertySelected', 'choseNotToUseExistingProperty'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst address = computed({\n get: () => props.modelValue,\n set: (value: Address) => emit('update:modelValue', value)\n});\n\nonMounted(() => {\n if (props.propertyId <= 0) {\n return;\n }\n\n autoFillPropertyFields();\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst propertyData = ref();\n\nconst fetchPropertyDetails = async () => {\n try {\n propertyData.value = await apiClient.httpGet(`database/properties/${props.propertyId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n propertyData.value = undefined;\n }\n};\n\nconst autoFillPropertyFields = async () => {\n await fetchPropertyDetails();\n\n if (propertyData.value) {\n address.value.propertyName = propertyData.value.propertyName;\n address.value.street = propertyData.value.street;\n address.value.locality = propertyData.value.locality;\n address.value.town = propertyData.value.town;\n address.value.region = propertyData.value.region;\n address.value.country = propertyData.value.country;\n address.value.countryCode = propertyData.value.countryCode;\n address.value.postCode = propertyData.value.postcode;\n emit('propertySelected', propertyData.value);\n }\n};\n\nconst onAddressFound = async (e: Address) => {\n address.value = e;\n\n // To avoid creating duplicate property records, check if the address has been used previously\n const existingProperty = await matchAddressToExistingProperty(e);\n\n if (!existingProperty) {\n emit('propertySelected');\n return\n }\n\n // As the matching process may retrieve the wrong property, we always need to ask the user for confirmation\n if (await askUserToUseExistingProperty(existingProperty)) {\n emit('propertySelected', existingProperty)\n } else {\n emit('choseNotToUseExistingProperty');\n }\n};\n\n/** Attempts to match the found address to an existing property\n * @param address the Address model used in matching process\n * @returns Property model populated with matched data */\nconst matchAddressToExistingProperty = async (address: Address): Promise => {\n const response = await apiClient.httpPost('app/utilityswitching/addresslookup/match/property', address);\n\n if (!response.id) {\n return;\n }\n\n return await apiClient.httpGet(`database/properties/${response.id}`)\n}\n\n/** Displays a prompt asking the user if they would like to use the matched property\n * @param property Existing Property record\n * @returns Boolean indicating whether the user wishes to use the matched property */\nconst askUserToUseExistingProperty = async (property: Properties) => {\n const message = 'An existing property has been found with a matching address. \\n\\n' +\n mapPropertyToConcatenatedString(property) +\n '\\n\\nWould you like to reuse this property?'\n\n const promptResult = await displayQuestionAlert(message);\n\n return promptResult.isConfirmed;\n};\n\nconst screenWidth = ref(screen.width);\n\nconst onSearchCompleted = () => {\n resetScroll.value = true;\n}\n\nconst resetScroll = ref(false);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, {\n \"reset-scroll\": resetScroll.value,\n \"onUpdate:resetScroll\": _cache[7] || (_cache[7] = ($event: any) => ((resetScroll).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"property-lookup-container\", { smallerDevices: screenWidth.value < 875 }])\n }, [\n _createElementVNode(\"section\", null, [\n _hoisted_1,\n _hoisted_2,\n _createVNode(AutoAddressWrapper, {\n onOnAddressFound: _cache[0] || (_cache[0] = (e) => onAddressFound(e)),\n onOnSearchCompleted: onSearchCompleted\n })\n ]),\n _createElementVNode(\"section\", _hoisted_3, [\n _hoisted_4,\n _createVNode(AcquaintTextbox, {\n modelValue: address.value.propertyName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((address.value.propertyName) = $event)),\n label: \"Property Name\",\n fieldValidation: _unref(PropertiesValidation).PropertyName,\n validationGroup: props.validationGroup,\n requiredInput: false,\n width: _unref(FieldSize).Large,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"width\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: address.value.street,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((address.value.street) = $event)),\n label: \"Street\",\n validationGroup: props.validationGroup,\n fieldValidation: _unref(PropertiesValidation).Street,\n requiredInput: true,\n width: _unref(FieldSize).Large,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"validationGroup\", \"fieldValidation\", \"width\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: address.value.locality,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((address.value.locality) = $event)),\n label: \"Locality\",\n validationGroup: props.validationGroup,\n fieldValidation: _unref(PropertiesValidation).Locality,\n requiredInput: false,\n width: _unref(FieldSize).Large,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"validationGroup\", \"fieldValidation\", \"width\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: address.value.town,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((address.value.town) = $event)),\n fieldValidation: _unref(PropertiesValidation).Town,\n label: \"Town\",\n validationGroup: props.validationGroup,\n requiredInput: true,\n width: _unref(FieldSize).Large,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"width\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: address.value.region,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((address.value.region) = $event)),\n fieldValidation: _unref(PropertiesValidation).Region,\n label: \"County\",\n validationGroup: props.validationGroup,\n requiredInput: false,\n width: _unref(FieldSize).Large,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"width\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: address.value.postCode,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((address.value.postCode) = $event)),\n fieldValidation: _unref(PropertiesValidation).Postcode,\n label: \"Eircode\",\n validationGroup: props.validationGroup,\n width: _unref(FieldSize).Large,\n \"country-code\": _unref(CountryCode).Ireland,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"width\", \"country-code\", \"value-change-event\"])\n ])\n ], 2)\n ]),\n _: 1\n }, 8, [\"reset-scroll\"]))\n}\n}\n\n})","import script from \"./property-lookup-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./property-lookup-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./property-lookup-page.vue?vue&type=style&index=0&id=10d4f969&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-10d4f969\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-38746f2a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = { class: \"progress-bar-container\" }\nconst _hoisted_3 = { class: \"switch-page\" }\nconst _hoisted_4 = { class: \"switch-page\" }\nconst _hoisted_5 = { class: \"switch-page\" }\nconst _hoisted_6 = { class: \"switch-page\" }\nconst _hoisted_7 = { class: \"switch-page\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"switch-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page-title\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"tick-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-check-circle\" })\n ]),\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"THANKS FOR SUBMITTING THE SWITCH INFORMATION.\")\n ]),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"What happens next?\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"The Purchaser will receive SMS and email communication from Property Button shortly with details of how they can log into the Property Button platform to order their energy and media products.\")\n ])\n], -1))\nconst _hoisted_9 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_10 = { class: \"steps\" }\nconst _hoisted_11 = { class: \"right-hand-buttons\" }\nconst _hoisted_12 = { class: \"right-button\" }\n\nimport { baseAlert } from '@/alerts/baseAlert';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { TenantSwitchConsent } from '@/types/switches/TenantSwitchConsent';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { DxButton } from 'devextreme-vue';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '../../ui/modals/modal-base.vue';\nimport ConsentPage from '../consent-page.vue';\nimport EnergyDetailsPage from '../energy-details-page.vue';\nimport PurchaserSummary from './purchaser-summary.vue';\nimport TenantSwitchProgress from '../tenant-switch-progress.vue';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { AddressEnergyTypeMapper } from '@/utils/utility-switching/AddressEnergyTypeMapper';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport { FindEnergyTypeText } from '@/utils/utility-switching/FindEnergyTypeText';\nimport PropertyLookupPage from '../property-lookup-page.vue';\nimport { SubmissionResponse } from '@/types/utility-switching/SubmissionResponse';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { PurchaserPersonalInfo } from '@/types/switches/PurchaserPersonalInfo';\nimport PurchaserDetails from './purchaser-details.vue';\nimport { CollatePurchaserSubmissionData } from '@/utils/utility-switching/CollateSwitchSubmissionData';\nimport { PurchaserSubmission } from '@/types/utility-switching/PurchaserSubmission';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { getDefaultAddressValue } from '@/utils/address/AddressFormatter';\nimport { PurchaserSwitchStep } from '@/enums/utility-switching/PurchaserSwitchStep';\nimport { getDefaultEnergyDetailsModel } from '@/utils/utility-switching/EnergyDetailsMapper';\nimport displayErrorMessage from '@/utils/ErrorHandling';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'council-purchasing-switching-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst disableSummaryEditButtons = ref(false);\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'property'\n },\n {\n template: 'energy'\n },\n {\n template: 'purchaser'\n },\n {\n template: 'consent'\n },\n {\n template: 'switch-summary'\n },\n {\n template: 'confirmation'\n }\n]);\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.Summary:\n return 'Submit';\n case PurchaserSwitchStep.Confirmation:\n return 'Done';\n default:\n return 'Next'\n }\n});\n\nconst selectedIndex = ref(0);\n\n// This assigns the next button its validation group so that it can calidate the right group of of input fields\n// e.g. the inputs are within the group 'propertyGroup' and they need to be validated before the user can go onto\n// the next page\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup:\n return 'propertyGroup';\n case PurchaserSwitchStep.Energy:\n return 'energy';\n case PurchaserSwitchStep.Purchaser:\n return 'purchaser';\n case PurchaserSwitchStep.Consent:\n return 'consent';\n default:\n return '';\n }\n});\n\n\nconst submitSwitchDetails = async () => {\n // We must disable the summary edit buttons and the nav buttons to prevent users from making changes while the api submission call is being made\n disableSummaryEditButtons.value = true;\n nextButtonLocked.value = true;\n backButtonDisabled.value = true;\n let submissionRepsonse: SubmissionResponse = {\n switchOverID: '',\n caseID: ''\n }\n\n let submitData: PurchaserSubmission = CollatePurchaserSubmissionData(propertyAddress.value, energyDetails.value, energyType.value, switchPropertyId.value, purchaserPersonalInfo.value);\n\n try {\n submissionRepsonse = await apiClient.httpPost('app/utilityswitching/switches/council/buyer', submitData);\n } catch (err) {\n displayErrorMessage('We cannot submit your switch');\n }\n\n // If the api submission was successful, we can take users to the confirmation page.\n if (submissionRepsonse.caseID) {\n stageSix.value = 1;\n selectedIndex.value = selectedIndex.value + 1;\n }\n\n // We must reset these to ensure that the summary edit buttons and the nav buttons are enabled if a user submits a switch and then starts a new one\n // or if the submission fails\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n};\n\nconst navigate = async (navigateDirection: number, e: any) => {\n if (navigateDirection > 0) {\n // We must close the alert on the enrgy page if it is open and prevent any validation from occurring, as the app will otherise\n // err, and prevent the user from progressing forwards\n if (baseAlert.isVisible()) {\n baseAlert.close();\n return\n }\n\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (selectedIndex.value == PurchaserSwitchStep.Purchaser && !purchaserTelephoneNumberValid.value) {\n displayErrorMessage('Please enter a valid telephone number.');\n return;\n }\n\n // Force users to select whether the property has a pay as you go meter\n if (selectedIndex.value === PurchaserSwitchStep.Energy && !payAsYouGoSelected.value && energyType.value != EnergyTypes.ElectricityOnly) {\n displayErrorMessage('Please select whether the property has a Pay as you go Meter');\n return;\n }\n\n // If the user is moving forwards, the progress bars must have their values updated to 1 (a value of 1 makes a progress bar fill in)\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup:\n stageTwo.value = 1;\n break;\n case PurchaserSwitchStep.Energy:\n stageThree.value = 1;\n break;\n case PurchaserSwitchStep.Purchaser:\n stageFour.value = 1;\n break;\n case PurchaserSwitchStep.Consent:\n stageFive.value = 1;\n break;\n }\n }\n\n if (selectedIndex.value == PurchaserSwitchStep.Summary && navigateDirection > 0) {\n await submitSwitchDetails();\n return;\n }\n\n if (selectedIndex.value == PurchaserSwitchStep.Confirmation && navigateDirection > 0) {\n closeModal();\n }\n\n selectedIndex.value = selectedIndex.value + navigateDirection;\n\n // If the user is moving backwards, the progress bars must have their values updated to 0 (a value of 0 makes a progress bar empty itself)\n if (navigateDirection < 0) {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup:\n stageTwo.value = 0;\n break;\n case PurchaserSwitchStep.Energy:\n stageThree.value = 0;\n break;\n case PurchaserSwitchStep.Purchaser:\n stageFour.value = 0;\n break;\n case PurchaserSwitchStep.Consent:\n stageFive.value = 0;\n break;\n }\n }\n};\n\n// When closing the modal, we must reset each progress bar \nconst closeModal = () => {\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n showCloseConfirmationPrompt.value = false;\n showPopup.value = false;\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n};\n\nconst resetToDefaultState = () => {\n // We must reset this to ensure that the summary edit/nav buttons are enabled if a user submits a switch and then starts a new one\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n\n //All values must be reset when the modal closes\n selectedIndex.value = 0;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n\n dateRegulationsConsent.value = {\n personalDataComplient: false,\n receiveCommunication: false\n }\n\n // Need to clone the empty address, to avoid the addresses using the same variable in memory\n propertyAddress.value = {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n };\n\n purchaserPersonalInfo.value = {\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n birthDate: \"\",\n priorityService: false\n }\n\n energyDetails.value = getDefaultEnergyDetailsModel();\n\n payAsYouGoSelected.value = false;\n showCloseConfirmationPrompt.value = true;\n}\n\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst stageFour = ref(0);\nconst stageFive = ref(0);\nconst stageSix = ref(0);\n\n//selectedIndex starts at 0 so we have to add 1 to it when displaying the stage to the user\nconst switchStage = ref(1);\n\n// When we get to the energy page, the next page needs to be disabled (to prevent users from not searching for an MPRN number)\n// and the appropriate progress bars needs to be reset when users return to previous pages from the summary page (only four \n// pages can be accessed from the summary page)\nwatch(() => selectedIndex.value, () => {\n switchStage.value = selectedIndex.value + 1;\n\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup: {\n nextButtonLocked.value = false;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case PurchaserSwitchStep.Energy: {\n /* Ensure user has performed the mprn lookup. Otherwise they can skip an important step/process\n * which could cause liability implications for PB */\n if (mprnAddressEmpty.value) {\n nextButtonLocked.value = true;\n }\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case PurchaserSwitchStep.Purchaser: {\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n }\n});\n\n/** Checks whether the mprn address is empty */\nconst mprnAddressEmpty = computed(() => {\n return [mprnAddress.value.propertyName, mprnAddress.value.street,\n mprnAddress.value.locality, mprnAddress.value.town, mprnAddress.value.region]\n .every(item => !item);\n})\n\nconst propertyAddress = ref
({\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst purchaserPersonalInfo = ref({\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n birthDate: \"\",\n priorityService: false\n});\n\nconst energyDetails = ref({\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n});\n\nconst dateRegulationsConsent = ref({\n personalDataComplient: false,\n receiveCommunication: false\n});\n\nconst mprnAddress = ref
({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: \"\"\n});\n\n// This ref confirms whether or not a the address found by the MPRN has been confirmed to be the correct one\n// on the energy page.\nconst addressValidated = ref(true);\n\nconst nextButtonLocked = ref(false);\nconst backButtonDisabled = ref(false);\n\n/* This is triggered by the user answering the address confirmation modal (i.e. the user\n * has confirmed the address found by the MPRN lookup does not match the previously entered address)\n * or by the MPRN address matching the entered address. For example, if both addresses match,\n * the next button is unlocked. This is true for when the user confirm the address using the popup.\n * Otherwise, the button remains unlocked. \n * This is also triggered when users lookup an MpRN number and then change it\n * without looking it up again - the next button remains unlocked until they do */\nconst disableNextButton = (inValid: boolean, selectedProperty: MprnLookupResponse) => {\n if (selectedIndex.value != PurchaserSwitchStep.Energy) {\n return;\n }\n\n nextButtonLocked.value = inValid;\n\n if (selectedProperty) {\n mprnAddress.value.propertyName = selectedProperty.addressPropertyName;\n mprnAddress.value.street = selectedProperty.addressStreet;\n mprnAddress.value.locality = selectedProperty.addressLocality;\n mprnAddress.value.town = selectedProperty.addressTown;\n mprnAddress.value.region = selectedProperty.addressRegion;\n mprnAddress.value.postCode = selectedProperty.addressPostcode;\n } else {\n mprnAddress.value = getDefaultAddressValue();\n }\n};\n\nconst payAsYouGoSelected = ref(false)\n\nconst onPayAsYouGoSelected = () => payAsYouGoSelected.value = true;\n\nconst energyType = ref(EnergyTypes.ElectricityOnly);\n\nconst switchPropertyId = ref(0);\n\nconst gasMeterType = ref(-1);\n\nconst resetEnergyFields = () => {\n gasMeterType.value = -1;\n switchPropertyId.value = 0;\n payAsYouGoSelected.value = false;\n energyDetails.value = getDefaultEnergyDetailsModel();\n};\n\n// The correct energy type option on the energy page is pre-selected when the user selects a property from the seacrh dropdown\nconst propertySelected = (selectedProperty: Properties) => {\n resetEnergyFields();\n\n if (!selectedProperty) {\n return;\n }\n\n energyType.value = AddressEnergyTypeMapper(selectedProperty.gas, selectedProperty.electric);\n energyDetails.value.energyType = FindEnergyTypeText(energyType.value);\n energyDetails.value.mprn = selectedProperty.utilitySupplierElectricityRef;\n energyDetails.value.gasGPRNNum = selectedProperty.utilitySupplierGasRef;\n switchPropertyId.value = selectedProperty.id;\n\n if (selectedProperty.gasMeterType == GasMeterTypes.payg || selectedProperty.gasMeterType == GasMeterTypes.standard || selectedProperty.gasMeterType == GasMeterTypes.smart) {\n gasMeterType.value = selectedProperty.gasMeterType;\n payAsYouGoSelected.value = true;\n }\n\n // As the property has been changed, the previous mprn address is no longer valid\n mprnAddress.value = getDefaultAddressValue();\n};\n\nconst showCloseConfirmationPrompt = ref(true);\n\nconst onModalClosed = () => {\n resetToDefaultState();\n\n // Ensure all fields are reset by incrementing the content key\n contentRenderKey.value++;\n}\n\nconst contentRenderKey = ref(0);\nconst purchaserTelephoneNumberValid = ref(false);\n\nconst newSwitchOver = () => {\n closeModal();\n setTimeout(() => {\n showPopup.value = true;\n }, 300);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((showPopup).value = $event)),\n showCloseButton: true,\n title: \"New Buyer Switch\",\n height: \"82vh\",\n width: _unref(ModalWidth).Medium,\n \"show-close-confirmation-prompt\": showCloseConfirmationPrompt.value,\n onModalClosed: onModalClosed,\n key: contentRenderKey.value\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Purchaser\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Consent\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 6,\n progress: -1\n }, null, 8, [\"index\"])\n ]),\n _createVNode(_unref(DxMultiView), {\n height: \"calc(100% - 40px)\",\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[8] || (_cache[8] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n property: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PropertyLookupPage, {\n modelValue: propertyAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n validationGroup: \"propertyGroup\",\n onPropertySelected: propertySelected,\n onChoseNotToUseExistingProperty: resetEnergyFields\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n energy: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EnergyDetailsPage, {\n energy: energyDetails.value,\n \"onUpdate:energy\": _cache[1] || (_cache[1] = ($event: any) => ((energyDetails).value = $event)),\n address: propertyAddress.value,\n \"address-validated\": addressValidated.value,\n \"onUpdate:addressValidated\": _cache[2] || (_cache[2] = ($event: any) => ((addressValidated).value = $event)),\n validationGroup: \"energy\",\n \"energy-type\": energyType.value,\n \"onUpdate:energyType\": _cache[3] || (_cache[3] = ($event: any) => ((energyType).value = $event)),\n onDisableNextButton: disableNextButton,\n onPayAsYouGoSelected: onPayAsYouGoSelected,\n gasMeterType: gasMeterType.value\n }, null, 8, [\"energy\", \"address\", \"address-validated\", \"energy-type\", \"gasMeterType\"])\n ])\n ]),\n purchaser: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(PurchaserDetails, {\n purchaser: true,\n title: \"Purchaser\",\n \"telephone-number-valid\": purchaserTelephoneNumberValid.value,\n \"onUpdate:telephoneNumberValid\": _cache[4] || (_cache[4] = ($event: any) => ((purchaserTelephoneNumberValid).value = $event)),\n purchaserDetails: purchaserPersonalInfo.value,\n \"onUpdate:purchaserDetails\": _cache[5] || (_cache[5] = ($event: any) => ((purchaserPersonalInfo).value = $event)),\n validationGroup: \"purchaser\"\n }, null, 8, [\"telephone-number-valid\", \"purchaserDetails\"])\n ])\n ]),\n consent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(ConsentPage, {\n modelValue: dateRegulationsConsent.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((dateRegulationsConsent).value = $event)),\n validationGroup: \"consent\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n \"switch-summary\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(PurchaserSummary, {\n energySelectedAddress: mprnAddress.value,\n modelValue: selectedIndex.value,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((selectedIndex).value = $event)),\n energyType: energyDetails.value.energyType,\n purchaserPersonalInfo: purchaserPersonalInfo.value,\n disableEditButtons: disableSummaryEditButtons.value\n }, null, 8, [\"energySelectedAddress\", \"modelValue\", \"energyType\", \"purchaserPersonalInfo\", \"disableEditButtons\"])\n ])\n ]),\n confirmation: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"])\n ]),\n _createElementVNode(\"section\", _hoisted_9, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"left-button\", { hideButton: selectedIndex.value == _unref(PurchaserSwitchStep).PropertyLookup || selectedIndex.value == _unref(PurchaserSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[9] || (_cache[9] = (e) => navigate(-1, e)),\n icon: \"spinleft\",\n disabled: backButtonDisabled.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(switchStage.value) + \" of \" + _toDisplayString(pages.value.length), 1),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"new-switchover\", { hideButton: selectedIndex.value < _unref(PurchaserSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"New Switch\",\n onClick: newSwitchOver\n })\n ], 2),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[10] || (_cache[10] = (e) => navigate(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: nextButtonLocked.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./council-purchasing-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./council-purchasing-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./council-purchasing-switching-modal.vue?vue&type=style&index=0&id=38746f2a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-38746f2a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58b93e7a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"title\" }\nconst _hoisted_2 = { class: \"generic-details-container\" }\nconst _hoisted_3 = { class: \"column\" }\nconst _hoisted_4 = { class: \"telephone-input-container\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"Phone or Mobile Number\", -1))\nconst _hoisted_6 = { class: \"column\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h4\", null, \"Priority Services\", -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Electricity Suppliers maintain a 'Priority\", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Services Register' for customers who are\", -1))\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"critically dependent on electrical equipment\", -1))\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"in their homes. Please indicate if this applies\", -1))\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"at the property.\", -1))\n\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { PropType, computed, ref } from 'vue';\nimport { VueTelInput } from 'vue-tel-input';\nimport LookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { PurchaserPersonalInfo } from '@/types/switches/PurchaserPersonalInfo';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport SwitchContactLookup from '@/components/ui/lookup/switch-contact-lookup.vue';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { ContactFindTypeRestriction } from '@/enums/contacts/ContactFindTypeRestriction';\nimport SelectOption from '@/components/ui/inputs/select-option.vue';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport FieldValidationFreeDateBox from '../../ui/inputs/field-validation-free-date-box.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'purchaser-details',\n props: {\n purchaserDetails: {\n type: Object as PropType,\n required: true\n },\n /** \n * The boolean value indicates whether the telephone number is valid\n * @type {boolean}\n * @required\n */\n telephoneNumberValid: {\n type: Boolean,\n required: true\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @default: ''\n */\n title: {\n type: String,\n default: ''\n },\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n},\n emits: ['update:purchaserDetails', 'update:telephoneNumberValid'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst purchaserDetails = computed({\n get: () => props.purchaserDetails,\n set: (value: PurchaserPersonalInfo) => emit('update:purchaserDetails', value)\n});\n\nconst preferredTelehoneNumbers = ['IE', 'GB', 'FR', 'DE', 'ES', 'PL'];\n\nconst telehpneInputOptions = {\n required: true\n};\n\nconst telephoneNumberValid = computed({\n get: () => props.telephoneNumberValid == undefined || props.telephoneNumberValid == false ? false : true,\n set: (value: Boolean) => emit('update:telephoneNumberValid', value == undefined || value == false ? false : true)\n});\n\nconst phoneNumberValidated = (e: any) => {\n telephoneNumberValid.value = e.valid;\n};\n\nconst onContactSelected = async (e: Contacts) => {\n purchaserDetails.value.firstName = e.firstNames;\n purchaserDetails.value.lastName = e.lastName;\n purchaserDetails.value.title = e.titleID;\n purchaserDetails.value.email = e.email;\n purchaserDetails.value.number = e.mobileTelephone;\n purchaserDetails.value.id = e.id;\n purchaserDetails.value.birthDate = e.birthDate;\n};\n\nconst lookupLabel = computed(() => { return `Look up ${props.title}` });\n\nconst tenantMaxBirthDate = new Date(new Date().setFullYear(new Date().getFullYear() - 18));\n\nconst onCriticalCareSelected = (selectedOption: number) => purchaserDetails.value.priorityService = selectedOption === 1;\n\nconst criticalCareToggleValue = computed(() => purchaserDetails.value.priorityService ? 1 : 2);\n\nconst showPurchaserLookup = ref(false);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, _toDisplayString(props.title) + \" Details\", 1),\n _createElementVNode(\"section\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (showPurchaserLookup.value)\n ? (_openBlock(), _createBlock(SwitchContactLookup, {\n key: 0,\n \"find-type-restriction\": _unref(ContactFindTypeRestriction).Purchasers,\n label: lookupLabel.value,\n onContactSelected: onContactSelected,\n toolTipId: \"purchaseDetails\",\n toolTipTarget: \"#purchaseDetails\"\n }, {\n \"tooltip-content\": _withCtx(() => [\n _createTextVNode(\"Search for an existing contact to pre-fill the information below.\")\n ]),\n _: 1\n }, 8, [\"find-type-restriction\", \"label\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(LookupSingleSelect, {\n modelValue: purchaserDetails.value.title,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((purchaserDetails.value.title) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n requiredInput: false,\n validationGroup: props.validationGroup,\n label: \"Title\",\n \"allow-zero-value\": true\n }, null, 8, [\"modelValue\", \"lookup-source\", \"validationGroup\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: purchaserDetails.value.firstName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((purchaserDetails.value.firstName) = $event)),\n fieldValidation: _unref(ContactsValidation).FirstNames,\n label: \"First Name\",\n requiredInput: true,\n validationGroup: props.validationGroup,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: purchaserDetails.value.lastName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((purchaserDetails.value.lastName) = $event)),\n fieldValidation: _unref(ContactsValidation).LastName,\n label: \"Last Name\",\n requiredInput: true,\n validationGroup: props.validationGroup,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(VueTelInput), {\n defaultCountry: 353,\n inputOptions: telehpneInputOptions,\n modelValue: purchaserDetails.value.number,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((purchaserDetails.value.number) = $event)),\n mode: \"international\",\n \"valid-characters-only\": true,\n onValidate: phoneNumberValidated,\n preferredCountries: preferredTelehoneNumbers\n }, null, 8, [\"modelValue\"])\n ]),\n _createVNode(AcquaintTextbox, {\n modelValue: purchaserDetails.value.email,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((purchaserDetails.value.email) = $event)),\n fieldValidation: _unref(ContactsValidation).Email,\n label: \"Email\",\n validationGroup: props.validationGroup,\n requiredInput: true,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createVNode(FieldValidationFreeDateBox, {\n label: \"Date of Birth\",\n fieldValidation: _unref(ContactsValidation).BirthDate,\n modelValue: purchaserDetails.value.birthDate,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((purchaserDetails.value.birthDate) = $event)),\n required: true,\n maxDate: _unref(tenantMaxBirthDate),\n width: _unref(FieldSize).Small,\n validationGroup: props.validationGroup\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"maxDate\", \"width\", \"validationGroup\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(SelectOption, {\n useToolTip: true,\n toolTipId: \"priorityServices\",\n toolTipTarget: \"#priorityServices\",\n title: \"Priority Services (Critical Care)\",\n selectBoxOneText: \"Yes\",\n selectBoxTwoText: \"No\",\n value: criticalCareToggleValue.value,\n onButtonSelected: onCriticalCareSelected,\n width: \"180px\"\n }, {\n \"tooltip-content\": _withCtx(() => [\n _hoisted_7,\n _hoisted_8,\n _hoisted_9,\n _hoisted_10,\n _hoisted_11,\n _hoisted_12,\n _hoisted_13,\n _hoisted_14,\n _hoisted_15,\n _hoisted_16,\n _hoisted_17\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ])\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./purchaser-details.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./purchaser-details.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./purchaser-details.vue?vue&type=style&index=0&id=58b93e7a&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-58b93e7a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6570ad6c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h6\", { id: \"summary-page-title\" }, \"Summary\", -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_3 = { class: \"summary-page-block\" }\nconst _hoisted_4 = { class: \"summary-box\" }\nconst _hoisted_5 = { class: \"summary-box-title\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Property Address\", -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"summary-information\" }\nconst _hoisted_10 = { class: \"summary-box\" }\nconst _hoisted_11 = { class: \"summary-box-title\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Purchaser Details\", -1))\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_14 = [\n _hoisted_13\n]\nconst _hoisted_15 = { class: \"summary-information\" }\nconst _hoisted_16 = { class: \"summary-page-block\" }\nconst _hoisted_17 = { class: \"summary-box\" }\nconst _hoisted_18 = { class: \"summary-box-title\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Energy Details\", -1))\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_21 = [\n _hoisted_20\n]\nconst _hoisted_22 = { class: \"summary-information\" }\n\nimport { PropType, computed, ref } from 'vue';\nimport { Address } from '@/types/generic/Address';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport { GenericPersonalDetails } from '@/types/switches/GenericPersonalDetails';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'purchaser-summary',\n props: {\n energySelectedAddress:{\n type: Object as PropType
,\n required: true\n },\n purchaserPersonalInfo:{\n type: Object as PropType,\n required: true\n },\n energyType:{\n type:String,\n required:true\n },\n modelValue:{\n type:Number,\n required:true\n },\n disableEditButtons:{\n type:Boolean,\n default:false\n }\n},\n emits: ['update:modelValue'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst pageId = computed({\n get:()=>props.modelValue,\n set:(value:number)=>emit('update:modelValue', value)\n});\n\nconst editDetails = (pageNumber:number) =>{\n if(props.disableEditButtons){\n return\n }\n pageId.value = pageNumber;\n};\n\nconst screeWidth=ref(screen.width);\n\nconst smallScreen = computed(()=>screeWidth.value<875);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"section\", {\n class: _normalizeClass([\"summary-page\", {smallScreen:smallScreen.value}])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"section\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (editDetails(0))),\n class: \"icon\"\n }, _hoisted_8)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.propertyName), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.street), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.locality), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.town), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.locality), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.region), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.postCode), 1)\n ])\n ])\n ]),\n _createElementVNode(\"section\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (editDetails(2))),\n class: \"icon\"\n }, _hoisted_14)\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(props.purchaserPersonalInfo.firstName) + \" \" + _toDisplayString(props.purchaserPersonalInfo.lastName), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.purchaserPersonalInfo.number), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.purchaserPersonalInfo.email), 1)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"section\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createElementVNode(\"span\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (editDetails(1))),\n class: \"icon\"\n }, _hoisted_21)\n ]),\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(props.energyType), 1)\n ])\n ])\n ])\n ])\n ], 2)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./purchaser-summary.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./purchaser-summary.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./purchaser-summary.vue?vue&type=style&index=0&id=6570ad6c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6570ad6c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6a250a1f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = { class: \"progress-bar-container\" }\nconst _hoisted_3 = { class: \"switch-page\" }\nconst _hoisted_4 = { class: \"switch-page\" }\nconst _hoisted_5 = { class: \"switch-page\" }\nconst _hoisted_6 = { class: \"switch-page\" }\nconst _hoisted_7 = { class: \"switch-page\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"switch-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page-title\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"tick-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-check-circle\" })\n ]),\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"THANKS FOR SUBMITTING THE SWITCH INFORMATION.\")\n ]),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"What happens next?\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"The Purchaser will receive SMS and email communication from Property Button shortly with details of how they can log into the Property Button platform to order their energy and media products.\")\n ])\n], -1))\nconst _hoisted_9 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_10 = { class: \"steps\" }\nconst _hoisted_11 = { class: \"right-hand-buttons\" }\nconst _hoisted_12 = { class: \"right-button\" }\n\nimport { baseAlert } from '@/alerts/baseAlert';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { TenantSwitchConsent } from '@/types/switches/TenantSwitchConsent';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { DxButton } from 'devextreme-vue';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '../../ui/modals/modal-base.vue';\nimport ConsentPage from '../consent-page.vue';\nimport EnergyDetailsPage from '../energy-details-page.vue';\nimport PurchaserSummary from './purchaser-summary.vue';\nimport TenantSwitchProgress from '../tenant-switch-progress.vue';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { AddressEnergyTypeMapper } from '@/utils/utility-switching/AddressEnergyTypeMapper';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport { FindEnergyTypeText } from '@/utils/utility-switching/FindEnergyTypeText';\nimport PropertyLookupPage from '../property-lookup-page.vue';\nimport { SubmissionResponse } from '@/types/utility-switching/SubmissionResponse';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { PurchaserPersonalInfo } from '@/types/switches/PurchaserPersonalInfo';\nimport PurchaserDetails from './purchaser-details.vue';\nimport { CollatePurchaserSubmissionData } from '@/utils/utility-switching/CollateSwitchSubmissionData';\nimport { PurchaserSubmission } from '@/types/utility-switching/PurchaserSubmission';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { getDefaultAddressValue } from '@/utils/address/AddressFormatter';\nimport { PurchaserSwitchStep } from '@/enums/utility-switching/PurchaserSwitchStep';\nimport { getDefaultEnergyDetailsModel } from '@/utils/utility-switching/EnergyDetailsMapper';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'purchasing-switching-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default -1\n */\n propertyId: {\n type: Number,\n default: -1\n },\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @default -1\n */\n contactId: {\n type: Number,\n default: -1\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nwatch(() => showPopup.value, () => {\n if (props.contactId <= 0 || !showPopup.value) {\n return;\n }\n\n autoFillPurchaserDetails();\n});\n\nconst fetchMainData = async () => {\n try {\n purchaserDetails.value = await apiClient.httpGet(`database/contacts/${props.contactId}`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n purchaserDetails.value = undefined;\n }\n};\n\nconst autoFillPurchaserDetails = async () => {\n await fetchMainData();\n\n if (purchaserDetails.value) {\n purchaserPersonalInfo.value.id = purchaserDetails.value.id;\n purchaserPersonalInfo.value.title = purchaserDetails.value.titleID;\n purchaserPersonalInfo.value.firstName = purchaserDetails.value.firstNames;\n purchaserPersonalInfo.value.lastName = purchaserDetails.value.lastName;\n purchaserPersonalInfo.value.number = purchaserDetails.value.mobileTelephone;\n purchaserPersonalInfo.value.email = purchaserDetails.value.email;\n purchaserPersonalInfo.value.birthDate = purchaserDetails.value.birthDate;\n }\n};\n\nconst disableSummaryEditButtons = ref(false);\nconst purchaserDetails = ref();\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'property'\n },\n {\n template: 'energy'\n },\n {\n template: 'purchaser'\n },\n {\n template: 'consent'\n },\n {\n template: 'switch-summary'\n },\n {\n template: 'confirmation'\n }\n]);\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.Summary:\n return 'Submit';\n case PurchaserSwitchStep.Confirmation:\n return 'Done';\n default:\n return 'Next'\n }\n});\n\nconst selectedIndex = ref(0);\n\n// This assigns the next button its validation group so that it can calidate the right group of of input fields\n// e.g. the inputs are within the group 'propertyGroup' and they need to be validated before the user can go onto\n// the next page\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup:\n return 'propertyGroup';\n case PurchaserSwitchStep.Energy:\n return 'energy';\n case PurchaserSwitchStep.Purchaser:\n return 'purchaser';\n case PurchaserSwitchStep.Consent:\n return 'consent';\n default:\n return '';\n }\n});\n\nconst submitSwitchDetails = async () => {\n // We must disable the summary edit buttons and the nav buttons to prevent users from making changes while the api submission call is being made\n disableSummaryEditButtons.value = true;\n nextButtonLocked.value = true;\n backButtonDisabled.value = true;\n let submissionRepsonse: SubmissionResponse = {\n switchOverID: '',\n caseID: ''\n }\n\n let submitData: PurchaserSubmission = CollatePurchaserSubmissionData(propertyAddress.value, energyDetails.value, energyType.value, switchPropertyId.value, purchaserPersonalInfo.value);\n\n try {\n submissionRepsonse = await apiClient.httpPost('app/utilityswitching/switches/purchaser', submitData);\n } catch (err) {\n displayErrorMessage('We cannot submit your switch');\n }\n\n // If the api submission was successful, we can take users to the confirmation page.\n if (submissionRepsonse.caseID) {\n stageSix.value = 1;\n selectedIndex.value = selectedIndex.value + 1;\n showCloseConfirmationPrompt.value = false;\n }\n\n // We must reset these to ensure that the summary edit buttons and the nav buttons are enabled if a user submits a switch and then starts a new one\n // or if the submission fails\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n};\n\nconst navigate = async (navigateDirection: number, e: any) => {\n if (navigateDirection > 0) {\n // We must close the alert on the enrgy page if it is open and prevent any validation from occurring, as the app will otherise\n // err, and prevent the user from progressing forwards\n if (baseAlert.isVisible()) {\n baseAlert.close();\n return\n }\n\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (selectedIndex.value == PurchaserSwitchStep.Purchaser && !purchaserTelephoneNumberValid.value) {\n displayErrorMessage('Please enter a valid telephone number.');\n return;\n }\n\n // Force users to select whether the property has a pay as you go meter\n if (selectedIndex.value === PurchaserSwitchStep.Energy && !payAsYouGoSelected.value && energyType.value != EnergyTypes.ElectricityOnly) {\n displayErrorMessage('Please select whether the property has a Pay as you go Meter');\n return;\n }\n\n // If the user is moving forwards, the progress bars must have their values updated to 1 (a value of 1 makes a progress bar fill in)\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup:\n stageTwo.value = 1;\n break;\n case PurchaserSwitchStep.Energy:\n stageThree.value = 1;\n break;\n case PurchaserSwitchStep.Purchaser:\n stageFour.value = 1;\n break;\n case PurchaserSwitchStep.Consent:\n stageFive.value = 1;\n break;\n }\n }\n\n if (selectedIndex.value == PurchaserSwitchStep.Summary && navigateDirection > 0) {\n await submitSwitchDetails();\n return;\n }\n\n if (selectedIndex.value == PurchaserSwitchStep.Confirmation && navigateDirection > 0) {\n closeModal();\n }\n\n selectedIndex.value = selectedIndex.value + navigateDirection;\n\n // If the user is moving backwards, the progress bars must have their values updated to 0 (a value of 0 makes a progress bar empty itself)\n if (navigateDirection < 0) {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup:\n stageTwo.value = 0;\n break;\n case PurchaserSwitchStep.Energy:\n stageThree.value = 0;\n break;\n case PurchaserSwitchStep.Purchaser:\n stageFour.value = 0;\n break;\n case PurchaserSwitchStep.Consent:\n stageFive.value = 0;\n break;\n }\n }\n};\n\n// When closing the modal, we must reset each progress bar \nconst closeModal = () => {\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n showCloseConfirmationPrompt.value = false;\n showPopup.value = false;\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n};\n\nconst resetToDefaultState = () => {\n // We must reset this to ensure that the summary edit/nav buttons are enabled if a user submits a switch and then starts a new one\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n\n //All values must be reset when the modal closes\n selectedIndex.value = 0;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n\n dateRegulationsConsent.value = {\n personalDataComplient: false,\n receiveCommunication: false\n }\n\n // Need to clone the empty address, to avoid the addresses using the same variable in memory\n propertyAddress.value = {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n };\n\n purchaserPersonalInfo.value = {\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n birthDate: \"\",\n priorityService: false\n }\n\n energyDetails.value = getDefaultEnergyDetailsModel();\n\n payAsYouGoSelected.value = false;\n showCloseConfirmationPrompt.value = true;\n}\n\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst stageFour = ref(0);\nconst stageFive = ref(0);\nconst stageSix = ref(0);\n\n//selectedIndex starts at 0 so we have to add 1 to it when displaying the stage to the user\nconst switchStage = ref(1);\n\n// When we get to the energy page, the next page needs to be disabled (to prevent users from not searching for an MPRN number)\n// and the appropriate progress bars needs to be reset when users return to previous pages from the summary page (only four \n// pages can be accessed from the summary page)\nwatch(() => selectedIndex.value, () => {\n switchStage.value = selectedIndex.value + 1;\n\n switch (selectedIndex.value) {\n case PurchaserSwitchStep.PropertyLookup: {\n nextButtonLocked.value = false;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case PurchaserSwitchStep.Energy: {\n /* Ensure user has performed the mprn lookup. Otherwise they can skip an important step/process\n * which could cause liability implications for PB */\n if (mprnAddressEmpty.value) {\n nextButtonLocked.value = true;\n }\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n case PurchaserSwitchStep.Purchaser: {\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n break;\n }\n }\n});\n\n/** Checks whether the mprn address is empty */\nconst mprnAddressEmpty = computed(() => {\n return [mprnAddress.value.propertyName, mprnAddress.value.street,\n mprnAddress.value.locality, mprnAddress.value.town, mprnAddress.value.region]\n .every(item => !item);\n})\n\nconst propertyAddress = ref
({\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst purchaserPersonalInfo = ref({\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n birthDate: \"\",\n priorityService: false\n});\n\nconst energyDetails = ref({\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n});\n\nconst dateRegulationsConsent = ref({\n personalDataComplient: false,\n receiveCommunication: false\n});\n\nconst mprnAddress = ref
({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: \"\"\n});\n\n// This ref confirms whether or not a the address found by the MPRN has been confirmed to be the correct one\n// on the energy page.\nconst addressValidated = ref(true);\n\nconst nextButtonLocked = ref(false);\nconst backButtonDisabled = ref(false);\n\n/* This is triggered by the user answering the address confirmation modal (i.e. the user\n * has confirmed the address found by the MPRN lookup does not match the previously entered address)\n * or by the MPRN address matching the entered address. For example, if both addresses match,\n * the next button is unlocked. This is true for when the user confirm the address using the popup.\n * Otherwise, the button remains unlocked. \n * This is also triggered when users lookup an MpRN number and then change it\n * without looking it up again - the next button remains unlocked until they do */\nconst disableNextButton = (inValid: boolean, selectedProperty: MprnLookupResponse) => {\n if (selectedIndex.value != PurchaserSwitchStep.Energy) {\n return;\n }\n\n nextButtonLocked.value = inValid;\n\n if (selectedProperty) {\n mprnAddress.value.propertyName = selectedProperty.addressPropertyName;\n mprnAddress.value.street = selectedProperty.addressStreet;\n mprnAddress.value.locality = selectedProperty.addressLocality;\n mprnAddress.value.town = selectedProperty.addressTown;\n mprnAddress.value.region = selectedProperty.addressRegion;\n mprnAddress.value.postCode = selectedProperty.addressPostcode;\n } else {\n mprnAddress.value = getDefaultAddressValue();\n }\n};\n\nconst payAsYouGoSelected = ref(false)\n\nconst onPayAsYouGoSelected = () => payAsYouGoSelected.value = true;\n\nconst energyType = ref(EnergyTypes.ElectricityOnly);\n\nconst switchPropertyId = ref(0);\n\nconst gasMeterType = ref(-1);\n\nconst resetEnergyFields = () => {\n gasMeterType.value = -1;\n switchPropertyId.value = 0;\n payAsYouGoSelected.value = false;\n energyDetails.value = getDefaultEnergyDetailsModel();\n};\n\n// The correct energy type option on the energy page is pre-selected when the user selects a property from the seacrh dropdown\nconst propertySelected = (selectedProperty: Properties) => {\n resetEnergyFields();\n\n if (!selectedProperty) {\n return;\n }\n\n energyType.value = AddressEnergyTypeMapper(selectedProperty.gas, selectedProperty.electric);\n energyDetails.value.energyType = FindEnergyTypeText(energyType.value);\n energyDetails.value.mprn = selectedProperty.utilitySupplierElectricityRef;\n energyDetails.value.gasGPRNNum = selectedProperty.utilitySupplierGasRef;\n switchPropertyId.value = selectedProperty.id;\n\n if (selectedProperty.gasMeterType == GasMeterTypes.payg || selectedProperty.gasMeterType == GasMeterTypes.standard || selectedProperty.gasMeterType == GasMeterTypes.smart) {\n gasMeterType.value = selectedProperty.gasMeterType;\n payAsYouGoSelected.value = true;\n }\n\n // As the property has been changed, the previous mprn address is no longer valid\n mprnAddress.value = getDefaultAddressValue();\n};\n\nconst showCloseConfirmationPrompt = ref(true);\n\nconst onModalClosed = () => {\n resetToDefaultState();\n\n // Ensure all fields are reset by incrementing the content key\n contentRenderKey.value++;\n}\n\nconst contentRenderKey = ref(0);\nconst purchaserTelephoneNumberValid = ref(false);\n\nconst newSwitchOver = () => {\n closeModal();\n setTimeout(() => {\n showPopup.value = true;\n }, 300);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((showPopup).value = $event)),\n showCloseButton: true,\n title: \"New Purchaser Switch\",\n height: \"82vh\",\n width: _unref(ModalWidth).Medium,\n \"show-close-confirmation-prompt\": showCloseConfirmationPrompt.value,\n onModalClosed: onModalClosed,\n key: contentRenderKey.value\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Purchaser\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Consent\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 6,\n progress: -1\n }, null, 8, [\"index\"])\n ]),\n _createVNode(_unref(DxMultiView), {\n height: \"calc(100% - 40px)\",\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[8] || (_cache[8] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n property: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PropertyLookupPage, {\n modelValue: propertyAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n validationGroup: \"propertyGroup\",\n propertyId: props.propertyId,\n onPropertySelected: propertySelected,\n onChoseNotToUseExistingProperty: resetEnergyFields\n }, null, 8, [\"modelValue\", \"propertyId\"])\n ])\n ]),\n energy: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EnergyDetailsPage, {\n energy: energyDetails.value,\n \"onUpdate:energy\": _cache[1] || (_cache[1] = ($event: any) => ((energyDetails).value = $event)),\n address: propertyAddress.value,\n \"address-validated\": addressValidated.value,\n \"onUpdate:addressValidated\": _cache[2] || (_cache[2] = ($event: any) => ((addressValidated).value = $event)),\n validationGroup: \"energy\",\n \"energy-type\": energyType.value,\n \"onUpdate:energyType\": _cache[3] || (_cache[3] = ($event: any) => ((energyType).value = $event)),\n onDisableNextButton: disableNextButton,\n onPayAsYouGoSelected: onPayAsYouGoSelected,\n gasMeterType: gasMeterType.value\n }, null, 8, [\"energy\", \"address\", \"address-validated\", \"energy-type\", \"gasMeterType\"])\n ])\n ]),\n purchaser: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(PurchaserDetails, {\n purchaser: true,\n title: \"Purchaser\",\n \"telephone-number-valid\": purchaserTelephoneNumberValid.value,\n \"onUpdate:telephoneNumberValid\": _cache[4] || (_cache[4] = ($event: any) => ((purchaserTelephoneNumberValid).value = $event)),\n purchaserDetails: purchaserPersonalInfo.value,\n \"onUpdate:purchaserDetails\": _cache[5] || (_cache[5] = ($event: any) => ((purchaserPersonalInfo).value = $event)),\n validationGroup: \"purchaser\"\n }, null, 8, [\"telephone-number-valid\", \"purchaserDetails\"])\n ])\n ]),\n consent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(ConsentPage, {\n modelValue: dateRegulationsConsent.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((dateRegulationsConsent).value = $event)),\n validationGroup: \"consent\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n \"switch-summary\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(PurchaserSummary, {\n energySelectedAddress: mprnAddress.value,\n modelValue: selectedIndex.value,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((selectedIndex).value = $event)),\n energyType: energyDetails.value.energyType,\n purchaserPersonalInfo: purchaserPersonalInfo.value,\n disableEditButtons: disableSummaryEditButtons.value\n }, null, 8, [\"energySelectedAddress\", \"modelValue\", \"energyType\", \"purchaserPersonalInfo\", \"disableEditButtons\"])\n ])\n ]),\n confirmation: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"])\n ]),\n _createElementVNode(\"section\", _hoisted_9, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"left-button\", { hideButton: selectedIndex.value == _unref(PurchaserSwitchStep).PropertyLookup || selectedIndex.value == _unref(PurchaserSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[9] || (_cache[9] = (e) => navigate(-1, e)),\n icon: \"spinleft\",\n disabled: backButtonDisabled.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(switchStage.value) + \" of \" + _toDisplayString(pages.value.length), 1),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"new-switchover\", { hideButton: selectedIndex.value < _unref(PurchaserSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"New Switch\",\n onClick: newSwitchOver\n })\n ], 2),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[10] || (_cache[10] = (e) => navigate(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: nextButtonLocked.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./purchasing-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./purchasing-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./purchasing-switching-modal.vue?vue&type=style&index=0&id=6a250a1f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6a250a1f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-28ed5432\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h6\", { id: \"summary-page-title\" }, \"Summary\", -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_3 = { class: \"summary-page-block\" }\nconst _hoisted_4 = { class: \"summary-box\" }\nconst _hoisted_5 = { class: \"summary-box-title\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Property Address\", -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"summary-information\" }\nconst _hoisted_10 = { class: \"summary-box\" }\nconst _hoisted_11 = { class: \"summary-box-title\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Energy Details\", -1))\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_14 = [\n _hoisted_13\n]\nconst _hoisted_15 = { class: \"summary-information\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"summary-box\"\n}\nconst _hoisted_17 = { class: \"summary-box-title\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Tenant Details\", -1))\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_20 = [\n _hoisted_19\n]\nconst _hoisted_21 = { class: \"summary-information\" }\nconst _hoisted_22 = { class: \"summary-page-block\" }\nconst _hoisted_23 = {\n key: 0,\n class: \"summary-box\"\n}\nconst _hoisted_24 = { class: \"summary-box-title\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Landlord Details\", -1))\nconst _hoisted_26 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_27 = [\n _hoisted_26\n]\nconst _hoisted_28 = { class: \"summary-information\" }\nconst _hoisted_29 = { key: 0 }\nconst _hoisted_30 = {\n key: 1,\n class: \"summary-box\"\n}\nconst _hoisted_31 = { class: \"summary-box-title\" }\nconst _hoisted_32 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"TCF\", -1))\nconst _hoisted_33 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_34 = [\n _hoisted_33\n]\nconst _hoisted_35 = { class: \"summary-information\" }\nconst _hoisted_36 = {\n key: 2,\n class: \"summary-box\"\n}\nconst _hoisted_37 = { class: \"summary-box-title\" }\nconst _hoisted_38 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Billing Details\", -1))\nconst _hoisted_39 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-edit\" }, null, -1))\nconst _hoisted_40 = [\n _hoisted_39\n]\nconst _hoisted_41 = { class: \"summary-information\" }\nconst _hoisted_42 = { key: 0 }\nconst _hoisted_43 = { key: 1 }\n\nimport { PropType, computed, onMounted, ref } from 'vue';\nimport { PersonalInfo } from '@/types/switches/PersonalInfo';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { Address } from '@/types/generic/Address';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport { SwitchBillTo } from '@/enums/utility-switching/SwitchBillTo';\nimport { SwitchPage } from '@/enums/utility-switching/SwitchPage';\nimport { useAgencyAccountStore } from '@/stores/utility-switching/AgencyAccountStore';\nimport { AgencyAccount } from '@/types/switches/AgencyAccount';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'summary-page',\n props: {\n energySelectedAddress:{\n type: Object as PropType
,\n required: true\n },\n landlordPersonalInfo:{\n type: Object as PropType,\n },\n tenantPersonalInfo:{\n type: Object as PropType\n },\n energyType:{\n type:String,\n required:true\n },\n tcfUploaded:{\n type:Boolean,\n default: false\n },\n displayTcf:{\n type:Boolean,\n required:true\n },\n displayBillingAddress:{\n type:Boolean,\n default:false\n },\n billToLandlord:{\n type:Boolean,\n default:false\n },\n billingInformation:{\n type:Number,\n default:-1\n },\n disableEditButtons:{\n type:Boolean,\n default:false\n }\n},\n emits: ['updatePageNumber'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst editDetails = (page:string) =>{\n if(props.disableEditButtons){\n return\n }\n \n emit('updatePageNumber', page)\n};\n\nconst screeWidth=ref(screen.width);\n\nconst smallScreen = computed(()=>screeWidth.value<875);\n\nconst billToText = computed(()=>{\n switch(props.billingInformation){\n case SwitchBillTo.Landlord:\n return 'Landlord';\n case SwitchBillTo.LandlordCOAgency:\n return `CO ${props.landlordPersonalInfo?.firstName} ${props.landlordPersonalInfo?.lastName}`\n default:\n return 'Landlord';\n }\n});\n\nconst agencyAccountStore = useAgencyAccountStore();\nconst agencyAccount = ref();\n\nonMounted(async () => {\n try {\n agencyAccount.value = await agencyAccountStore.getAccount();\n } catch (err) {\n console.error(getErrorMessage(err))\n }\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"section\", {\n class: _normalizeClass([\"summary-page\", {smallScreen:smallScreen.value}])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"section\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (editDetails(_unref(SwitchPage).PropertyPage))),\n class: \"icon\"\n }, _hoisted_8)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.propertyName), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.street), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.locality), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.town), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.region), 1),\n _createElementVNode(\"li\", null, _toDisplayString(__props.energySelectedAddress.postCode), 1)\n ])\n ])\n ]),\n _createElementVNode(\"section\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (editDetails(_unref(SwitchPage).EnergyPage))),\n class: \"icon\"\n }, _hoisted_14)\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(props.energyType), 1)\n ])\n ])\n ]),\n (props.tenantPersonalInfo)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"span\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (editDetails(_unref(SwitchPage).TenantPage))),\n class: \"icon\"\n }, _hoisted_20)\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(props.tenantPersonalInfo.firstName) + \" \" + _toDisplayString(props.tenantPersonalInfo.lastName), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.tenantPersonalInfo.number), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.tenantPersonalInfo.email), 1),\n _createElementVNode(\"li\", null, \" Tenancy Start Date: \" + _toDisplayString(new Date(props.tenantPersonalInfo.tenancyStartDate).toLocaleDateString('en-gb')), 1),\n _createElementVNode(\"li\", null, \" Critical Care: \" + _toDisplayString(props.tenantPersonalInfo.priorityService ? 'Yes':'No'), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_22, [\n (props.landlordPersonalInfo)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_23, [\n _createElementVNode(\"div\", _hoisted_24, [\n _hoisted_25,\n _createElementVNode(\"span\", {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (editDetails(_unref(SwitchPage).LandlordPage))),\n class: \"icon\"\n }, _hoisted_27)\n ]),\n _createElementVNode(\"div\", _hoisted_28, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.firstName) + \" \" + _toDisplayString(props.landlordPersonalInfo.lastName), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.number), 1),\n (props.landlordPersonalInfo.email)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_29, _toDisplayString(props.landlordPersonalInfo.email), 1))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (props.displayTcf)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_30, [\n _createElementVNode(\"div\", _hoisted_31, [\n _hoisted_32,\n _createElementVNode(\"span\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (editDetails(_unref(SwitchPage).TcfPage))),\n class: \"icon\"\n }, _hoisted_34)\n ]),\n _createElementVNode(\"div\", _hoisted_35, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, \"TCF Added: \" + _toDisplayString(props.tcfUploaded? 'Yes':'No'), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (props.displayBillingAddress && props.landlordPersonalInfo)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_36, [\n _createElementVNode(\"div\", _hoisted_37, [\n _hoisted_38,\n _createElementVNode(\"span\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (editDetails(_unref(SwitchPage).BillingPage))),\n class: \"icon\"\n }, _hoisted_40)\n ]),\n _createElementVNode(\"div\", _hoisted_41, [\n _createElementVNode(\"span\", null, \"To be Billed: \" + _toDisplayString(billToText.value), 1),\n (props.billingInformation === _unref(SwitchBillTo).Landlord)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_42, [\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.address.propertyName), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.address.street), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.address.locality), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.address.town), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.address.region), 1),\n _createElementVNode(\"li\", null, _toDisplayString(props.landlordPersonalInfo.address.postCode), 1)\n ]))\n : (agencyAccount.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_43, [\n _createElementVNode(\"li\", null, _toDisplayString(agencyAccount.value.address.street), 1),\n _createElementVNode(\"li\", null, _toDisplayString(agencyAccount.value.address.city), 1),\n _createElementVNode(\"li\", null, _toDisplayString(agencyAccount.value.address.county), 1),\n _createElementVNode(\"li\", null, _toDisplayString(agencyAccount.value.address.postalCode), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./summary-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./summary-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./summary-page.vue?vue&type=style&index=0&id=28ed5432&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-28ed5432\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, unref as _unref, createBlock as _createBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7169fc77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"progress-title-number-container\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = {\n key: 1,\n class: \"fas fa-check\"\n}\n\nimport { DxProgressBar } from 'devextreme-vue/progress-bar';\nimport { computed, ref } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'tenant-switch-progress',\n props: {\n index:{\n type:Number,\n required:true\n },\n title:{\n type:String,\n required:true\n },\n number:{\n type:Number,\n required:true\n },\n progress:{\n type:Number,\n required:true\n }\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nconst screeWidth=ref(screen.width);\n\nconst comparisonIndex = computed(()=>{return props.number-1});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([{pageNumberCompleted: __props.index>comparisonIndex.value, pageNumberReached: __props.index==comparisonIndex.value}, \"page-number\"])\n }, [\n (__props.index <= comparisonIndex.value)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, _toDisplayString(__props.number), 1))\n : _createCommentVNode(\"\", true),\n (__props.index>comparisonIndex.value)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_3))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"span\", null, _toDisplayString(__props.title), 1)\n ]),\n (__props.progress != -1 && screeWidth.value>=768)\n ? (_openBlock(), _createBlock(_unref(DxProgressBar), {\n key: 0,\n class: \"progress-bar\",\n value: __props.progress,\n showStatus: false,\n width: \"10%\",\n max: 1\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./tenant-switch-progress.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./tenant-switch-progress.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./tenant-switch-progress.vue?vue&type=style&index=0&id=7169fc77&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7169fc77\"]])\n\nexport default __exports__","export enum CouncilTenantSwitchStep {\n PropertyLookup,\n Energy,\n Tenant,\n Tcf, \n Consent,\n Summary,\n Confirmation\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-738e4067\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"progress-bar-container\"\n}\nconst _hoisted_3 = { class: \"switch-page\" }\nconst _hoisted_4 = { class: \"switch-page\" }\nconst _hoisted_5 = { class: \"switch-page\" }\nconst _hoisted_6 = { class: \"switch-page\" }\nconst _hoisted_7 = {\n key: 0,\n id: \"tcf-message\"\n}\nconst _hoisted_8 = { class: \"switch-page\" }\nconst _hoisted_9 = { class: \"switch-page\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"switch-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page-title\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"tick-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-check-circle\" })\n ]),\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"THANKS FOR SUBMITTING THE SWITCH INFORMATION.\")\n ]),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"What happens next?\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"The Tenant will receive SMS and email communication from Property Button shortly with details of how they can log into the Property Button platform to order their energy and media products.\")\n ])\n], -1))\nconst _hoisted_11 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_12 = { class: \"steps\" }\nconst _hoisted_13 = { class: \"right-hand-buttons\" }\nconst _hoisted_14 = { class: \"right-button\" }\n\nimport { baseAlert } from '@/alerts/baseAlert';\nimport DocumentUpload from '@/components/file-uploader/document-upload.vue';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { PersonalInfo } from '@/types/switches/PersonalInfo';\nimport { TenantSwitchConsent } from '@/types/switches/TenantSwitchConsent';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { DxButton } from 'devextreme-vue';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '../../ui/modals/modal-base.vue';\nimport ConsentPage from '../consent-page.vue';\nimport EnergyDetailsPage from '../energy-details-page.vue';\nimport SummaryPage from '../summary-page.vue';\nimport TenantDetailsPage from './tenant-details-page.vue';\nimport TenantSwitchProgress from '../tenant-switch-progress.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AllocationSwitchSubmitData } from '@/types/utility-switching/AllocationSwitchSubmitData';\nimport { SubmissionResponse } from '@/types/utility-switching/SubmissionResponse';\nimport { CollateAllocationSubmissionData } from '@/utils/utility-switching/CollateSwitchSubmissionData';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { AddressEnergyTypeMapper } from '@/utils/utility-switching/AddressEnergyTypeMapper';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport { FindEnergyTypeText } from '@/utils/utility-switching/FindEnergyTypeText';\nimport PropertyLookupPage from '../property-lookup-page.vue';\nimport { SupportCaseDocumentType } from '@/enums/utility-switching/SupportCaseDocumentType';\nimport { standardInfoAlert } from '@/alerts/standardInfoAlert';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { CouncilTenantSwitchStep } from '@/enums/utility-switching/CouncilTenantSwitchStep';\nimport { getDefaultAddressValue } from '@/utils/address/AddressFormatter';\nimport { SwitchPage } from '@/enums/utility-switching/SwitchPage';\nimport { getDefaultEnergyDetailsModel } from '@/utils/utility-switching/EnergyDetailsMapper';\nimport displayErrorMessage from '@/utils/ErrorHandling';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'council-allocation-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst disableSummaryEditButtons = ref(false);\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'property'\n },\n {\n template: 'energy'\n },\n {\n template: 'tenant'\n },\n {\n template: 'tcf'\n },\n {\n template: 'consent'\n },\n {\n template: 'switch-summary'\n },\n {\n template: 'confirmation'\n }\n]);\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case CouncilTenantSwitchStep.Summary:\n return 'Submit';\n case CouncilTenantSwitchStep.Confirmation:\n return 'Done';\n default:\n return 'Next'\n }\n});\n\nconst selectedIndex = ref(0);\n\n// This assigns the next button its validation group so that it can calidate the right group of of input fields\n// e.g. the inputs are within the group 'propertyGroup' and they need to be validated before the user can go onto\n// the next page\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case CouncilTenantSwitchStep.PropertyLookup:\n return 'propertyGroup';\n case CouncilTenantSwitchStep.Energy:\n return 'energy';\n case CouncilTenantSwitchStep.Tenant:\n return 'tenant';\n case CouncilTenantSwitchStep.Consent:\n return 'consent';\n default:\n return '';\n }\n});\n\nconst submissionRepsonse = ref({\n switchOverID: '',\n caseID: ''\n});\nconst tcfUploadFailed = ref(false);\n\nconst submitSwitchDetails = async () => {\n // We must disable the summary edit buttons and the nav buttons to prevent users from making changes while the api submission call is being made\n disableSummaryEditButtons.value = true;\n nextButtonLocked.value = true;\n backButtonDisabled.value = true;\n\n submissionRepsonse.value = {\n switchOverID: '',\n caseID: ''\n }\n\n let submitData: AllocationSwitchSubmitData = CollateAllocationSubmissionData(propertyAddress.value, energyDetails.value, energyType.value, switchPropertyId.value, tenantPersonalInfo.value);\n\n try {\n submissionRepsonse.value = await apiClient.httpPost('app/utilityswitching/switches/council/allocation', submitData);\n } catch (err) {\n displayErrorMessage('We cannot submit your switch');\n }\n\n // If a tcf file has been added, we will upload it and check if it's successful, otherwise there's no point calling the tcf API\n if (submissionRepsonse.value.caseID && tcf.value && tcf.value.length > 0) {\n // We should reset this variable so that if a user submits a second switch, whether or not\n // the users second tcf has been successfully uploaded will be dealt with appropriately\n tcfUploadFailed.value = false;\n await uploadDocument(SupportCaseDocumentType.Tcf, tcf.value[0]);\n checkTcfUpload();\n } else if (submissionRepsonse.value.caseID && (!tcf.value || tcf.value.length == 0)) {\n selectedIndex.value = selectedIndex.value + 1;\n stageSeven.value = 1;\n }\n\n // We must reset these to ensure that the summary edit buttons and the nav buttons are enabled if a user submits a switch and then starts a new one\n // or if the submission fails\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n};\n\nconst checkTcfUpload = () => {\n if (tcfUploadFailed.value) {\n standardInfoAlert(\"Your switch was successfully submitted but your TCF was unsuccessfully submitted, please contact support.\")\n .then((result) => {\n if (result.isConfirmed) {\n selectedIndex.value = selectedIndex.value + 1;\n stageSeven.value = 1;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n }\n })\n } else {\n selectedIndex.value = selectedIndex.value + 1;\n stageSeven.value = 1;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n }\n};\n\nconst uploadDocument = async (documentType: SupportCaseDocumentType, document: File) => {\n try {\n await apiClient.uploadFile(`app/utilityswitching/supportcases/documents/${submissionRepsonse.value?.caseID}/${documentType}`, document);\n } catch (err) {\n tcfUploadFailed.value = true;\n }\n}\n\n\nconst navigate = async (navigateDirection: number, e: any) => {\n if (navigateDirection > 0) {\n // We must close the alert on the enrgy page if it is open and prevent any validation from occurring, as the app will otherise\n // err, and prevent the user from progressing forwards\n if (baseAlert.isVisible()) {\n baseAlert.close();\n return\n }\n\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (selectedIndex.value == CouncilTenantSwitchStep.Tenant && !tenantTelephoneNumberValid.value) {\n displayErrorMessage('Please enter a valid telephone number.');\n return;\n }\n\n // Force users to select whether the property has a pay as you go meter\n if (selectedIndex.value === CouncilTenantSwitchStep.Energy && !payAsYouGoSelected.value && energyType.value != EnergyTypes.ElectricityOnly) {\n displayErrorMessage('Please select whether the property has a Pay as you go Meter');\n return;\n }\n\n // If the user is moving forwards, the progress bars must have their values updated to 1 (a value of 1 makes a progress bar fill in)\n switch (selectedIndex.value) {\n case CouncilTenantSwitchStep.PropertyLookup:\n stageTwo.value = 1;\n break;\n case CouncilTenantSwitchStep.Energy:\n stageThree.value = 1;\n break;\n case CouncilTenantSwitchStep.Tenant:\n stageFour.value = 1;\n break;\n case CouncilTenantSwitchStep.Tcf:\n stageFive.value = 1;\n break;\n case CouncilTenantSwitchStep.Consent:\n stageSix.value = 1;\n break;\n }\n }\n\n if (selectedIndex.value == CouncilTenantSwitchStep.Summary && navigateDirection > 0) {\n await submitSwitchDetails();\n return\n }\n\n if (selectedIndex.value == CouncilTenantSwitchStep.Confirmation && navigateDirection > 0) {\n closeModal();\n }\n\n selectedIndex.value = selectedIndex.value + navigateDirection;\n\n // If the user is moving backwards, the progress bars must have their values updated to 0 (a value of 0 makes a progress bar empty itself)\n if (navigateDirection < 0) {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n\n switch (selectedIndex.value) {\n case CouncilTenantSwitchStep.PropertyLookup:\n stageTwo.value = 0;\n break;\n case CouncilTenantSwitchStep.Energy:\n stageThree.value = 0;\n break;\n case CouncilTenantSwitchStep.Tenant:\n stageFour.value = 0;\n break;\n case CouncilTenantSwitchStep.Tcf:\n stageFive.value = 0;\n break;\n case CouncilTenantSwitchStep.Consent:\n stageSix.value = 0;\n break;\n }\n }\n};\n\n// When closing the modal, we must reset each progress bar \nconst closeModal = () => {\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n showCloseConfirmationPrompt.value = false;\n showPopup.value = false;\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n};\n\nconst resetToDefaultState = () => {\n // We must reset this to ensure that the summary edit/nav buttons are enabled if a user submits a switch and then starts a new one\n disableSummaryEditButtons.value = false; \n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n\n //All values must be reset when the modal closes\n selectedIndex.value = CouncilTenantSwitchStep.PropertyLookup;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n\n dateRegulationsConsent.value = {\n personalDataComplient: false,\n receiveCommunication: false\n }\n\n // Need to clone the empty address, to avoid the addresses using the same variable in memory\n propertyAddress.value = {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n };\n\n tenantPersonalInfo.value = {\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n tenancyStartDate: '',\n priorityService: false,\n birthDate: ''\n }\n\n energyDetails.value = getDefaultEnergyDetailsModel();\n\n payAsYouGoSelected.value = false;\n showCloseConfirmationPrompt.value = true;\n tcfUploadFailed.value = false;\n}\n\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst stageFour = ref(0);\nconst stageFive = ref(0);\nconst stageSix = ref(0);\nconst stageSeven = ref(0);\n\n//selectedIndex starts at 0 so we have to add 1 to it when displaying the stage to the user\nconst switchStage = ref(1);\n\n// When we get to the energy page, the next page needs to be disabled (to prevent users from not searching for an MPRN number)\n// and the appropriate progress bars needs to be reset when users return to previous pages from the summary page (only four \n// pages can be accessed from the summary page)\nwatch(() => selectedIndex.value, () => {\n switchStage.value = selectedIndex.value + 1;\n\n switch (selectedIndex.value) {\n case CouncilTenantSwitchStep.PropertyLookup: {\n nextButtonLocked.value = false;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n break;\n } \n case CouncilTenantSwitchStep.Energy: {\n /* Ensure user has performed the mprn lookup. Otherwise they can skip an important step/process\n * which could cause liability implications for PB */\n if (mprnAddressEmpty.value) {\n nextButtonLocked.value = true;\n }\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n break;\n } \n case CouncilTenantSwitchStep.Tenant: {\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n break;\n }\n case CouncilTenantSwitchStep.Tcf: {\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n break;\n } \n }\n});\n\n/** Checks whether the mprn address is empty */\nconst mprnAddressEmpty = computed(() => {\n return [mprnAddress.value.propertyName, mprnAddress.value.street,\n mprnAddress.value.locality, mprnAddress.value.town, mprnAddress.value.region]\n .every(item => !item);\n})\n\nconst propertyAddress = ref
({\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst tenantPersonalInfo = ref({\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n tenancyStartDate: '',\n priorityService: false,\n birthDate: ''\n});\n\nconst energyDetails = ref({\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n});\n\nconst dateRegulationsConsent = ref({\n personalDataComplient: false,\n receiveCommunication: false\n});\n\nconst mprnAddress = ref
({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: \"\"\n});\n\n// This ref confirms whether or not a the address found by the MPRN has been confirmed to be the correct one\n// on the energy page.\nconst addressValidated = ref(true);\n\nconst nextButtonLocked = ref(false);\nconst backButtonDisabled = ref(false);\n\n/* This is triggered by the user answering the address confirmation modal (i.e. the user\n * has confirmed the address found by the MPRN lookup does not match the previously entered address)\n * or by the MPRN address matching the entered address. For example, if both addresses match,\n * the next button is unlocked. This is true for when the user confirm the address using the popup.\n * Otherwise, the button remains unlocked. \n * This is also triggered when users lookup an MpRN number and then change it\n * without looking it up again - the next button remains unlocked until they do */\nconst disableNextButton = (inValid: boolean, selectedProperty: MprnLookupResponse) => {\n if (selectedIndex.value != CouncilTenantSwitchStep.Energy) {\n return;\n }\n\n nextButtonLocked.value = inValid;\n\n if (selectedProperty) {\n mprnAddress.value.propertyName = selectedProperty.addressPropertyName;\n mprnAddress.value.street = selectedProperty.addressStreet;\n mprnAddress.value.locality = selectedProperty.addressLocality;\n mprnAddress.value.town = selectedProperty.addressTown;\n mprnAddress.value.region = selectedProperty.addressRegion;\n mprnAddress.value.postCode = selectedProperty.addressPostcode;\n } else {\n mprnAddress.value = getDefaultAddressValue();\n }\n};\n\nconst tcf = ref();\n\n/** Handles the TCF Changed event of the Document upload component */\nconst onTcfChanged = (e: File[]) => {\n tcf.value = e;\n};\n\nconst payAsYouGoSelected = ref(false)\n\nconst onPayAsYouGoSelected = () => payAsYouGoSelected.value = true;\n\nconst energyType = ref(EnergyTypes.ElectricityOnly);\n\nconst switchPropertyId = ref(0);\n\nconst gasMeterType = ref(-1);\n\nconst resetEnergyFields = () =>{\n gasMeterType.value = -1;\n switchPropertyId.value = 0;\n payAsYouGoSelected.value = false;\n energyDetails.value = getDefaultEnergyDetailsModel();\n};\n\n// The correct energy type option on the energy page is pre-selected when the user selects a property from the seacrh dropdown\nconst propertySelected = (selectedProperty: Properties) => {\n resetEnergyFields();\n\n if (!selectedProperty) {\n return\n }\n \n energyType.value = AddressEnergyTypeMapper(selectedProperty.gas, selectedProperty.electric);\n energyDetails.value.energyType = FindEnergyTypeText(energyType.value);\n energyDetails.value.mprn = selectedProperty.utilitySupplierElectricityRef;\n energyDetails.value.gasGPRNNum = selectedProperty.utilitySupplierGasRef;\n switchPropertyId.value = selectedProperty.id;\n\n if (selectedProperty.gasMeterType == GasMeterTypes.payg || selectedProperty.gasMeterType == GasMeterTypes.standard || selectedProperty.gasMeterType == GasMeterTypes.smart) {\n gasMeterType.value = selectedProperty.gasMeterType;\n payAsYouGoSelected.value = true;\n }\n\n // As the property has been changed, the previous mprn address is no longer valid\n mprnAddress.value = getDefaultAddressValue();\n};\n\nconst showCloseConfirmationPrompt = ref(true);\n\nconst onModalClosed = () => {\n resetToDefaultState();\n\n // Ensure all fields are reset by incrementing the content key\n contentRenderKey.value++;\n}\n\nconst contentRenderKey = ref(0);\nconst tenantTelephoneNumberValid = ref(false);\n\nconst newSwitchOver = () => {\n closeModal();\n setTimeout(() => {\n showPopup.value = true;\n }, 300);\n};\n\nconst tcfUploaded = computed(() => { return (!tcf.value || tcf.value.length == 0) });\n\nconst screenWidth = ref(screen.width);\n\nconst updatePageNumber = (changeToPage:string)=>{\n switch(changeToPage){\n case SwitchPage.PropertyPage:\n selectedIndex.value = CouncilTenantSwitchStep.PropertyLookup;\n break;\n case SwitchPage.EnergyPage:\n selectedIndex.value = CouncilTenantSwitchStep.Energy;\n break;\n case SwitchPage.TenantPage:\n selectedIndex.value = CouncilTenantSwitchStep.Tenant;\n break;\n case SwitchPage.TcfPage:\n selectedIndex.value = CouncilTenantSwitchStep.Tcf;\n break;\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((showPopup).value = $event)),\n showCloseButton: true,\n title: \"New Allocation Switch\",\n height: \"80vh\",\n width: _unref(ModalWidth).Medium,\n \"show-close-confirmation-prompt\": showCloseConfirmationPrompt.value,\n onModalClosed: onModalClosed,\n key: contentRenderKey.value\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n (screenWidth.value < 768)\n ? (_openBlock(), _createElementBlock(\"section\", {\n key: 0,\n class: _normalizeClass([\"progress-bar-container\", { smallScreensProgressContainer: screenWidth.value < 768 }])\n }, [\n _createElementVNode(\"div\", null, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Tenant\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"TCF\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Consent\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"])\n ]),\n _createElementVNode(\"div\", null, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 6,\n progress: stageSeven.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 7,\n progress: -1\n }, null, 8, [\"index\"])\n ])\n ], 2))\n : _createCommentVNode(\"\", true),\n (screenWidth.value >= 768)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Tenant\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"TCF\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Consent\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 6,\n progress: stageSeven.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 7,\n progress: -1\n }, null, 8, [\"index\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxMultiView), {\n height: \"calc(100% - 40px)\",\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[7] || (_cache[7] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n property: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PropertyLookupPage, {\n modelValue: propertyAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n validationGroup: \"propertyGroup\",\n onPropertySelected: propertySelected,\n onChoseNotToUseExistingProperty: resetEnergyFields\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n energy: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EnergyDetailsPage, {\n energy: energyDetails.value,\n \"onUpdate:energy\": _cache[1] || (_cache[1] = ($event: any) => ((energyDetails).value = $event)),\n address: propertyAddress.value,\n \"address-validated\": addressValidated.value,\n \"onUpdate:addressValidated\": _cache[2] || (_cache[2] = ($event: any) => ((addressValidated).value = $event)),\n validationGroup: \"energy\",\n \"energy-type\": energyType.value,\n \"onUpdate:energyType\": _cache[3] || (_cache[3] = ($event: any) => ((energyType).value = $event)),\n onDisableNextButton: disableNextButton,\n onPayAsYouGoSelected: onPayAsYouGoSelected,\n gasMeterType: gasMeterType.value\n }, null, 8, [\"energy\", \"address\", \"address-validated\", \"energy-type\", \"gasMeterType\"])\n ])\n ]),\n tenant: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(TenantDetailsPage, {\n \"personal-info\": tenantPersonalInfo.value,\n \"onUpdate:personalInfo\": _cache[4] || (_cache[4] = ($event: any) => ((tenantPersonalInfo).value = $event)),\n \"telephone-number-valid\": tenantTelephoneNumberValid.value,\n \"onUpdate:telephoneNumberValid\": _cache[5] || (_cache[5] = ($event: any) => ((tenantTelephoneNumberValid).value = $event))\n }, null, 8, [\"personal-info\", \"telephone-number-valid\"])\n ])\n ]),\n tcf: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(DocumentUpload, {\n onTcfChanged: onTcfChanged,\n onlyShowTcf: true\n }),\n (!tcf.value || (tcf.value && tcf.value.length == 0))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \"No File Selected [Max 4.5MB]\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n consent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(ConsentPage, {\n modelValue: dateRegulationsConsent.value,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((dateRegulationsConsent).value = $event)),\n validationGroup: \"consent\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n \"switch-summary\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(SummaryPage, {\n energySelectedAddress: mprnAddress.value,\n disableEditButtons: disableSummaryEditButtons.value,\n tenantPersonalInfo: tenantPersonalInfo.value,\n energyType: energyDetails.value.energyType,\n onUpdatePageNumber: updatePageNumber,\n tcfUploaded: !tcfUploaded.value,\n displayTcf: true\n }, null, 8, [\"energySelectedAddress\", \"disableEditButtons\", \"tenantPersonalInfo\", \"energyType\", \"tcfUploaded\"])\n ])\n ]),\n confirmation: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"])\n ]),\n _createElementVNode(\"section\", _hoisted_11, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"left-button\", { hideButton: selectedIndex.value == 0 || selectedIndex.value == _unref(CouncilTenantSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[8] || (_cache[8] = (e) => navigate(-1, e)),\n icon: \"spinleft\",\n disabled: backButtonDisabled.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(switchStage.value) + \" of 7\", 1),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"new-switchover\", { hideButton: selectedIndex.value < _unref(CouncilTenantSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"New Switch\",\n onClick: newSwitchOver\n })\n ], 2),\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[9] || (_cache[9] = (e) => navigate(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: nextButtonLocked.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./council-allocation-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./council-allocation-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./council-allocation-modal.vue?vue&type=style&index=0&id=738e4067&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-738e4067\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5eb90610\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"title\" }, \"Tenant Details\", -1))\nconst _hoisted_2 = { class: \"input-results-address-container\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"This will be used for billing.\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"This will be used for billing.\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"Phone or Mobile Number\", -1))\nconst _hoisted_6 = { class: \"tenant-details-fields-container\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h4\", null, \"Priority Services\", -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Electricity Suppliers maintain a 'Priority\", -1))\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Services Register' for customers who are\", -1))\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"critically dependent on electrical equipment\", -1))\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"in their homes. Please indicate if this applies\", -1))\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"at the property.\", -1))\n\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport SelectOption from '@/components/ui/inputs/select-option.vue';\nimport lookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport SwitchContactLookup from '@/components/ui/lookup/switch-contact-lookup.vue';\nimport scrollView from '@/components/ui/scroll-view.vue';\nimport { ContactFindTypeRestriction } from '@/enums/contacts/ContactFindTypeRestriction';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { PersonalInfo } from '@/types/switches/PersonalInfo';\nimport { mapAcquaintContactToPersonalInfo } from '@/utils/utility-switching/SwitchContactMapper';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport { PropType, computed, inject, ref } from 'vue';\nimport FieldValidationFreeDateBox from '../../ui/inputs/field-validation-free-date-box.vue';\nimport { VueTelInput } from 'vue-tel-input';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { ContactPropertyRequirements } from 'acquaint-api/models/ContactPropertyRequirements'\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'tenant-details-page',\n props: {\n personalInfo: {\n type: Object as PropType,\n required: true\n },\n telephoneNumberValid:{\n type:Boolean,\n required:true\n }\n},\n emits: ['update:personalInfo', 'update:telephoneNumberValid'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst tenantPersonalInfo = computed({\n get: () => props.personalInfo,\n set: (value: PersonalInfo) => emit('update:personalInfo', value)\n});\n\nconst screenWidth = ref(screen.width);\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst onContactSelected = async (e: Contacts) => {\n mapAcquaintContactToPersonalInfo(e, tenantPersonalInfo.value);\n tenantPersonalInfo.value.priorityService = await selectedContactRequiresCriticalCare(e.id);\n}\n\nconst tenantMaxBirthDate = new Date(new Date().setFullYear(new Date().getFullYear() - 18));\n\nconst onCriticalCareSelected = (selectedOption: number) => tenantPersonalInfo.value.priorityService = selectedOption === 1;\n\n/** Checks whether the passed contact requires critical care\n * @param contactId - Id of the Contact to check for critical care\n */\nconst selectedContactRequiresCriticalCare = async (contactId: number) => {\n // Contact's in Acquaint must have an id greater than 0\n if (contactId <= 0) {\n return false;\n }\n\n try {\n const requirements = await apiClient.httpGet(`database/contactpropertyrequirements/${contactId}`)\n return requirements?.criticalCare === 1;\n } catch {\n return false;\n }\n}\n\nconst criticalCareToggleValue = computed(() => tenantPersonalInfo.value.priorityService ? 1 : 2)\n\nconst telehpneInputOptions = {\n required:true\n};\n\nconst telephoneNumberValid = computed({\n get:()=>props.telephoneNumberValid == undefined || props.telephoneNumberValid == false ? false:true,\n set:(value:Boolean)=>emit('update:telephoneNumberValid', value == undefined || value == false ? false:true)\n});\n\nconst phoneNumberValidated = (e:any)=>{\n telephoneNumberValid.value = e.valid;\n};\n\nconst preferredTelehoneNumbers = ['IE', 'GB', 'FR', 'DE', 'ES', 'PL'];\n\nconst showTenantLookup = ref(false);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(scrollView, null, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", null, [\n _hoisted_1,\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"tenant-details-container\", { smallScreen: screenWidth.value < 875 }])\n }, [\n _createElementVNode(\"section\", _hoisted_2, [\n (showTenantLookup.value)\n ? (_openBlock(), _createBlock(SwitchContactLookup, {\n key: 0,\n \"find-type-restriction\": _unref(ContactFindTypeRestriction).Tenants,\n label: \"Look up Tenant\",\n onContactSelected: onContactSelected,\n toolTipTarget: \"#tenantSearch\",\n toolTipId: \"tenantSearch\"\n }, {\n \"tooltip-content\": _withCtx(() => [\n _createTextVNode(\"Search for an existing contact to pre-fill the information below.\")\n ]),\n _: 1\n }, 8, [\"find-type-restriction\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(lookupSingleSelect, {\n modelValue: tenantPersonalInfo.value.title,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((tenantPersonalInfo.value.title) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n label: \"Title\",\n requiredInput: false,\n validationGroup: \"tenant\",\n \"allow-zero-value\": true\n }, null, 8, [\"modelValue\", \"lookup-source\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(ContactsValidation).FirstNames,\n modelValue: tenantPersonalInfo.value.firstName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((tenantPersonalInfo.value.firstName) = $event)),\n label: \"First Name\",\n requiredInput: true,\n validationGroup: \"tenant\",\n useToolTip: true,\n toolTipId: \"firstName\",\n toolTipTarget: \"#firstName\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, {\n \"tooltip-content\": _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"fieldValidation\", \"modelValue\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(ContactsValidation).LastName,\n modelValue: tenantPersonalInfo.value.lastName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((tenantPersonalInfo.value.lastName) = $event)),\n label: \"Last Name\",\n requiredInput: true,\n validationGroup: \"tenant\",\n useToolTip: true,\n toolTipId: \"secondName\",\n toolTipTarget: \"#secondName\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, {\n \"tooltip-content\": _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"fieldValidation\", \"modelValue\", \"value-change-event\"]),\n _hoisted_5,\n _createVNode(_unref(VueTelInput), {\n defaultCountry: 353,\n inputOptions: telehpneInputOptions,\n modelValue: tenantPersonalInfo.value.number,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((tenantPersonalInfo.value.number) = $event)),\n mode: \"international\",\n \"valid-characters-only\": true,\n onValidate: phoneNumberValidated,\n preferredCountries: preferredTelehoneNumbers\n }, null, 8, [\"modelValue\"]),\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(ContactsValidation).Email,\n modelValue: tenantPersonalInfo.value.email,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((tenantPersonalInfo.value.email) = $event)),\n label: \"Email\",\n requiredInput: true,\n isEmail: false,\n validationGroup: \"tenant\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"value-change-event\"]),\n _createVNode(FieldValidationFreeDateBox, {\n label: \"Date of Birth\",\n fieldValidation: _unref(ContactsValidation).BirthDate,\n modelValue: tenantPersonalInfo.value.birthDate,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((tenantPersonalInfo.value.birthDate) = $event)),\n width: _unref(FieldSize).Small,\n required: true,\n maxDate: _unref(tenantMaxBirthDate),\n validationGroup: \"tenant\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"width\", \"maxDate\"])\n ]),\n _createElementVNode(\"section\", _hoisted_6, [\n _createElementVNode(\"div\", null, [\n _createVNode(FieldValidationFreeDateBox, {\n modelValue: tenantPersonalInfo.value.tenancyStartDate,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((tenantPersonalInfo.value.tenancyStartDate) = $event)),\n label: \"Tenancy Start Date\",\n width: _unref(FieldSize).Small,\n required: true,\n validationGroup: \"tenant\"\n }, null, 8, [\"modelValue\", \"width\"])\n ]),\n _hoisted_7,\n _createVNode(SelectOption, {\n useToolTip: true,\n toolTipId: \"priorityServices\",\n toolTipTarget: \"#priorityServices\",\n title: \"Priority Services (Critical Care)\",\n selectBoxOneText: \"Yes\",\n selectBoxTwoText: \"No\",\n value: criticalCareToggleValue.value,\n onButtonSelected: onCriticalCareSelected\n }, {\n \"tooltip-content\": _withCtx(() => [\n _hoisted_8,\n _hoisted_9,\n _hoisted_10,\n _hoisted_11,\n _hoisted_12,\n _hoisted_13,\n _hoisted_14,\n _hoisted_15,\n _hoisted_16,\n _hoisted_17,\n _hoisted_18\n ]),\n _: 1\n }, 8, [\"value\"])\n ])\n ], 2)\n ])\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./tenant-details-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./tenant-details-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./tenant-details-page.vue?vue&type=style&index=0&id=5eb90610&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5eb90610\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7aadabc2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"column\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"lookup-container\"\n}\nconst _hoisted_4 = { class: \"telephone-input-container\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"asteriskVisible\" }, \"Phone or Mobile Number\", -1))\nconst _hoisted_6 = { class: \"column address-container\" }\nconst _hoisted_7 = { class: \"lookup-container\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"label\" }, \"Search for an address or enter an address manually\", -1))\nconst _hoisted_9 = { class: \"title\" }\n\nimport { PropType, computed, ref, onMounted, watch, inject } from 'vue';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport ScrollView from '@/components/ui/scroll-view.vue';\nimport LookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport SwitchContactLookup from '@/components/ui/lookup/switch-contact-lookup.vue';\nimport { ContactFindTypeRestriction } from '@/enums/contacts/ContactFindTypeRestriction';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { mapAcquaintContactToLandlordPersonalInfo } from '@/utils/utility-switching/SwitchContactMapper';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport AutoAddressWrapper from '@/components/ui/address/auto-address-wrapper.vue';\nimport { Address } from '@/types/generic/Address';\nimport { VueTelInput } from 'vue-tel-input';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'property-owner-details-page',\n props: {\n /** \n * The object containing personal information about the landlord.\n * This typically includes name, contact details, and address.\n * @type {LandlordPersonalInfo}\n * @required\n */\n landlordDetails: {\n type: Object as PropType,\n required: true\n },\n\n /** \n * A boolean indicating whether the provided telephone number is valid.\n * This may be used for form validation or displaying error messages.\n * @type {boolean}\n * @required\n */\n telephoneNumberValid: {\n type: Boolean,\n required: true\n },\n\n /** \n * The title displayed for the landlord details section.\n * @type {string}\n * @default ''\n */\n title: {\n type: String,\n default: ''\n },\n\n /** \n * The validation group name used for form validation.\n * This helps organize validation rules within a specific form section.\n * @type {string}\n * @required\n */\n validationGroup: {\n type: String,\n required: true\n },\n\n /** \n * The label to be used when displaying the owner's information.\n * This is useful for customizing how the landlord is referenced in the UI.\n * @type {string}\n * @required\n */\n ownerLabel: {\n type: String,\n required: true\n }\n},\n emits: [\n /**\n * Emits an event to update the landlord's personal details in the parent component.\n * This is typically used in a two-way binding pattern (e.g., with `v-model`). \n */\n 'update:landlordDetails',\n\n /**\n * Emits an event to update the validation status of the telephone number in the parent component.\n * This ensures the parent component is aware of whether the telephone number is valid or not.\n * This is typically used in a two-way binding pattern (e.g., with `v-model`). \n */\n 'update:telephoneNumberValid'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst landlordPersonalInfo = computed({\n get: () => props.landlordDetails,\n set: (value: LandlordPersonalInfo) => emit('update:landlordDetails', value)\n});\n\nconst telephoneNumberValid = computed({\n get: () => props.telephoneNumberValid == undefined || props.telephoneNumberValid == false ? false : true,\n set: (value: Boolean) => emit('update:telephoneNumberValid', value == undefined || value == false ? false : true)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst screenWidth = ref(screen.width);\n\nconst onContactSelected = (e: Contacts) => {\n landlordPersonalInfo.value = mapAcquaintContactToLandlordPersonalInfo(e);\n}\n\nconst fetchDetailsFillFields = async () => {\n if (landlordPersonalInfo.value.id <= 0) {\n return\n }\n\n let selectedPropertyLandlord: Contacts;\n\n try {\n selectedPropertyLandlord = await apiClient.httpGet(`database/contacts/${landlordPersonalInfo.value.id}`);\n } catch (err) {\n return\n }\n\n if (selectedPropertyLandlord) {\n landlordPersonalInfo.value = mapAcquaintContactToLandlordPersonalInfo(selectedPropertyLandlord);\n }\n};\n\nonMounted(() => {\n fetchDetailsFillFields();\n});\n\nwatch(() => landlordPersonalInfo.value.id, () => {\n fetchDetailsFillFields();\n});\n\nconst onAddressFound = (e: Address) => {\n landlordPersonalInfo.value.address = e;\n};\n\nconst preferredTelehoneNumbers = ['IE', 'GB', 'FR', 'DE', 'ES', 'PL'];\n\nconst telehpneInputOptions = {\n required: true\n};\n\n\n\nconst phoneNumberValidated = (e: any) => {\n telephoneNumberValid.value = e.valid;\n};\n\nconst onSearchCompleted = () => {\n resetScroll.value = true;\n}\n\nconst resetScroll = ref(false);\n\nconst showOwnerLookup = ref(false);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ScrollView, {\n \"reset-scroll\": resetScroll.value,\n \"onUpdate:resetScroll\": _cache[11] || (_cache[11] = ($event: any) => ((resetScroll).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"section\", {\n class: _normalizeClass([\"landlord-details\", { smallScreen: screenWidth.value < 875 }])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(props.title), 1),\n (showOwnerLookup.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(SwitchContactLookup, {\n \"find-type-restriction\": _unref(ContactFindTypeRestriction).PropertyOwners,\n label: `Look up ${__props.ownerLabel}`,\n \"results-max-width\": \"50%\",\n onContactSelected: onContactSelected,\n toolTipTarget: \"#landlordSearch\",\n toolTipId: \"landlordSearch\"\n }, {\n \"tooltip-content\": _withCtx(() => [\n _createTextVNode(\"Search for an existing contact to pre-fill the information below.\")\n ]),\n _: 1\n }, 8, [\"find-type-restriction\", \"label\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(LookupSingleSelect, {\n modelValue: landlordPersonalInfo.value.title,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((landlordPersonalInfo.value.title) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n label: \"Title\",\n requiredInput: false,\n validationGroup: props.validationGroup,\n \"allow-zero-value\": true\n }, null, 8, [\"modelValue\", \"lookup-source\", \"validationGroup\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.firstName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((landlordPersonalInfo.value.firstName) = $event)),\n fieldValidation: _unref(ContactsValidation).FirstNames,\n label: \"First Name\",\n requiredInput: true,\n validationGroup: props.validationGroup,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.lastName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((landlordPersonalInfo.value.lastName) = $event)),\n fieldValidation: _unref(ContactsValidation).LastName,\n label: \"Last Name\",\n requiredInput: true,\n validationGroup: props.validationGroup,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_unref(VueTelInput), {\n defaultCountry: 353,\n inputOptions: telehpneInputOptions,\n modelValue: landlordPersonalInfo.value.number,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((landlordPersonalInfo.value.number) = $event)),\n mode: \"international\",\n \"valid-characters-only\": true,\n onValidate: phoneNumberValidated,\n preferredCountries: preferredTelehoneNumbers\n }, null, 8, [\"modelValue\"])\n ]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.email,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((landlordPersonalInfo.value.email) = $event)),\n fieldValidation: _unref(ContactsValidation).Email,\n label: \"Email\",\n validationGroup: props.validationGroup,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(AutoAddressWrapper, {\n onOnAddressFound: onAddressFound,\n onOnSearchCompleted: onSearchCompleted\n })\n ]),\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString(__props.ownerLabel) + \" Address\", 1),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.address.propertyName,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((landlordPersonalInfo.value.address.propertyName) = $event)),\n label: \"Property Name\",\n fieldValidation: _unref(ContactsValidation).HomeProperty,\n validationGroup: props.validationGroup,\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.address.street,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((landlordPersonalInfo.value.address.street) = $event)),\n label: \"Street\",\n validationGroup: props.validationGroup,\n fieldValidation: _unref(ContactsValidation).HomeStreet,\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"validationGroup\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.address.locality,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((landlordPersonalInfo.value.address.locality) = $event)),\n label: \"Locality\",\n validationGroup: props.validationGroup,\n fieldValidation: _unref(ContactsValidation).HomeLocality,\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"validationGroup\", \"fieldValidation\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.address.town,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((landlordPersonalInfo.value.address.town) = $event)),\n fieldValidation: _unref(ContactsValidation).HomeTown,\n label: \"Town\",\n validationGroup: props.validationGroup,\n requiredInput: true,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.address.region,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((landlordPersonalInfo.value.address.region) = $event)),\n fieldValidation: _unref(ContactsValidation).HomeRegion,\n label: \"County\",\n validationGroup: props.validationGroup,\n requiredInput: true,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"]),\n _createVNode(AcquaintTextbox, {\n modelValue: landlordPersonalInfo.value.address.postCode,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((landlordPersonalInfo.value.address.postCode) = $event)),\n fieldValidation: _unref(ContactsValidation).HomePostcode,\n label: \"Eircode\",\n validationGroup: props.validationGroup,\n requiredInput: false,\n \"value-change-event\": _unref(TextboxValueChangeEvent).Change\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"validationGroup\", \"value-change-event\"])\n ])\n ], 2)\n ]),\n _: 1\n }, 8, [\"reset-scroll\"]))\n}\n}\n\n})","import script from \"./property-owner-details-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./property-owner-details-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./property-owner-details-page.vue?vue&type=style&index=0&id=7aadabc2&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7aadabc2\"]])\n\nexport default __exports__","export enum TenantSwitchStep {\n PropertyLookup,\n Energy,\n Tenant,\n Landlord,\n Tcf, \n Consent,\n Summary,\n Confirmation\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-409318d7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-switch-container\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"progress-bar-container\"\n}\nconst _hoisted_3 = { class: \"switch-page\" }\nconst _hoisted_4 = { class: \"switch-page\" }\nconst _hoisted_5 = { class: \"switch-page\" }\nconst _hoisted_6 = { class: \"switch-page\" }\nconst _hoisted_7 = { class: \"switch-page\" }\nconst _hoisted_8 = {\n key: 0,\n id: \"tcf-message\"\n}\nconst _hoisted_9 = { class: \"switch-page\" }\nconst _hoisted_10 = { class: \"switch-page\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"switch-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"confirmation-page-title\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"tick-icon\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-check-circle\" })\n ]),\n /*#__PURE__*/_createElementVNode(\"h6\", null, \"THANKS FOR SUBMITTING THE SWITCH INFORMATION.\")\n ]),\n /*#__PURE__*/_createElementVNode(\"span\", null, \"What happens next?\"),\n /*#__PURE__*/_createElementVNode(\"p\", null, \"The Tenant will receive SMS and email communication from Property Button shortly with details of how they can log into the Property Button platform to order their energy and media products.\")\n ])\n], -1))\nconst _hoisted_12 = { class: \"tenant-switch-footer-container\" }\nconst _hoisted_13 = { class: \"steps\" }\nconst _hoisted_14 = { class: \"right-hand-buttons\" }\nconst _hoisted_15 = { class: \"right-button\" }\n\nimport { baseAlert } from '@/alerts/baseAlert';\nimport DocumentUpload from '@/components/file-uploader/document-upload.vue';\nimport { Address } from '@/types/generic/Address';\nimport { EnergyDetails } from '@/types/switches/EnergyDetails';\nimport { LandlordPersonalInfo } from '@/types/switches/LandlordPersonalInfo';\nimport { MprnLookupResponse } from '@/types/switches/MprnLookupResponse';\nimport { PersonalInfo } from '@/types/switches/PersonalInfo';\nimport { TenantSwitchConsent } from '@/types/switches/TenantSwitchConsent';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { QuestionsWizardData } from '@/types/wizard/question-wizard-data';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { DxButton } from 'devextreme-vue';\nimport DxMultiView from 'devextreme-vue/multi-view';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { computed, ref, watch, inject } from 'vue';\nimport ModalBase from '../../ui/modals/modal-base.vue';\nimport ConsentPage from '../consent-page.vue';\nimport EnergyDetailsPage from '../energy-details-page.vue';\nimport SummaryPage from '../summary-page.vue';\nimport TenantDetailsPage from './tenant-details-page.vue';\nimport TenantSwitchProgress from '../tenant-switch-progress.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { TenantSwitchSubmitData } from '@/types/utility-switching/TenantSwitchSubmitData';\nimport { SubmissionResponse } from '@/types/utility-switching/SubmissionResponse';\nimport { CollateTenantSubmissionData } from '@/utils/utility-switching/CollateSwitchSubmissionData';\nimport { EnergyTypes } from '@/enums/utility-switching/EnergyTypes';\nimport { AddressEnergyTypeMapper } from '@/utils/utility-switching/AddressEnergyTypeMapper';\nimport { Properties } from 'acquaint-api/models/Properties';\nimport { FindEnergyTypeText } from '@/utils/utility-switching/FindEnergyTypeText';\nimport PropertyOwnerDetailsPage from '../property-owner-details-page.vue';\nimport PropertyLookupPage from '../property-lookup-page.vue';\nimport { SupportCaseDocumentType } from '@/enums/utility-switching/SupportCaseDocumentType';\nimport { standardInfoAlert } from '@/alerts/standardInfoAlert';\nimport { GasMeterTypes } from '@/enums/utility-switching/GasMeterTypes';\nimport { TenantSwitchStep } from '@/enums/utility-switching/TenantSwitchStep';\nimport { getDefaultAddressValue } from '@/utils/address/AddressFormatter';\nimport { SwitchPage } from '@/enums/utility-switching/SwitchPage';\nimport { getDefaultEnergyDetailsModel } from '@/utils/utility-switching/EnergyDetailsMapper';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { Tenancies } from 'acquaint-api/models/Tenancies';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'tenant-switching-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default -1\n */\n propertyId: {\n type: Number,\n default: -1\n },\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @default -1\n */\n contactId: {\n type: Number,\n default: -1\n },\n /** \n * The unique identifier for the tenancy.\n * @type {number}\n * @default -1\n */\n tenancyId: {\n type: Number,\n default: -1\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\n// If user comes to the app from Desktop Acquaint and are taken immediately to this wizard, \n// we must auto-fill the tenant info using the contact they selected in Desktop\nconst fetchTenantInformation = async () => {\n try {\n tenantApiInfo.value = await apiClient.httpGet(`database/contacts/${props.contactId}`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n tenantApiInfo.value = undefined;\n }\n};\n\nconst fetchTenancyInformation = async () => {\n try {\n tenancyInformation.value = await apiClient.httpGet(`database/tenancies/${props.tenancyId}`);\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex));\n tenancyInformation.value = undefined;\n }\n};\n\nconst autoFillFields = async () => {\n if (props.contactId > 0) {\n await fetchTenantInformation();\n }\n\n if (props.tenancyId > 0) {\n await fetchTenancyInformation();\n }\n\n if (tenantApiInfo.value) {\n tenantPersonalInfo.value.id = props.contactId;\n tenantPersonalInfo.value.title = tenantApiInfo.value.titleID;\n tenantPersonalInfo.value.firstName = tenantApiInfo.value.firstNames;\n tenantPersonalInfo.value.lastName = tenantApiInfo.value.lastName;\n tenantPersonalInfo.value.number = tenantApiInfo.value.mobileTelephone;\n tenantPersonalInfo.value.email = tenantApiInfo.value.email;\n tenantPersonalInfo.value.birthDate = tenantApiInfo.value.birthDate;\n }\n\n if (tenancyInformation.value) {\n tenantPersonalInfo.value.tenancyStartDate = tenancyInformation.value.startDate;\n }\n};\n\nwatch(() => showPopup.value, () => {\n if (!showPopup.value) {\n return;\n }\n\n autoFillFields();\n});\n\nconst tenantApiInfo = ref();\nconst tenancyInformation = ref();\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient;\n\nconst disableSummaryEditButtons = ref(false);\n\n// Each page must be assigned a template name for it to appear\nconst pages = ref([\n {\n template: 'property'\n },\n {\n template: 'energy'\n },\n {\n template: 'tenant'\n },\n {\n template: 'landlord'\n },\n {\n template: 'tcf'\n },\n {\n template: 'consent'\n },\n {\n template: 'switch-summary'\n },\n {\n template: 'confirmation'\n }\n]);\n\nconst nextSubmitButtonText = computed(() => {\n switch (selectedIndex.value) {\n case TenantSwitchStep.Summary:\n return 'Submit';\n case TenantSwitchStep.Confirmation:\n return 'Done';\n default:\n return 'Next'\n }\n});\n\nconst selectedIndex = ref(0);\n\n// This assigns the next button its validation group so that it can calidate the right group of of input fields\n// e.g. the inputs are within the group 'propertyGroup' and they need to be validated before the user can go onto\n// the next page\nconst buttonValidationGroup = computed(() => {\n switch (selectedIndex.value) {\n case TenantSwitchStep.PropertyLookup:\n return 'propertyGroup';\n case TenantSwitchStep.Energy:\n return 'energy';\n case TenantSwitchStep.Tenant:\n return 'tenant';\n case TenantSwitchStep.Landlord:\n return 'landlord';\n case TenantSwitchStep.Consent:\n return 'consent';\n default:\n return '';\n }\n});\n\nconst submissionRepsonse = ref();\nconst tcfUploadFailed = ref(false);\n\nconst submitSwitchDetails = async () => {\n // We must disable the summary edit buttons and the nav buttons to prevent users from making changes while the api submission call is being made\n disableSummaryEditButtons.value = true;\n nextButtonLocked.value = true;\n backButtonDisabled.value = true;\n\n let submitData: TenantSwitchSubmitData = CollateTenantSubmissionData(propertyAddress.value, energyDetails.value, energyType.value, switchPropertyId.value,\n tenantPersonalInfo.value, landlordPersonalInfo.value, props.tenancyId);\n\n try {\n submissionRepsonse.value = await apiClient.httpPost('app/utilityswitching/switches/tenant', submitData);\n } catch (err) {\n displayErrorMessage('We cannot submit your switch');\n }\n\n // If a tcf file has been added, we will upload it and check if it's successful, otherwise there's no point calling the tcf API\n if (submissionRepsonse.value?.caseID && tcf.value && tcf.value.length > 0) {\n await uploadDocument(SupportCaseDocumentType.Tcf, tcf.value[0]);\n checkTcfUpload();\n } else if (submissionRepsonse.value?.caseID && (!tcf.value || tcf.value.length == 0)) {\n selectedIndex.value = selectedIndex.value + 1;\n stageEight.value = 1;\n }\n\n if (submissionRepsonse.value?.caseID) {\n showCloseConfirmationPrompt.value = false;\n }\n\n // We must reset these to ensure that the summary edit buttons and the nav buttons are enabled if a user submits a switch and then starts a new one\n // or if the submission fails\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n tcfUploadFailed.value = false;\n};\n\nconst checkTcfUpload = () => {\n if (tcfUploadFailed.value) {\n standardInfoAlert(\"Your switch was successfully submitted but your TCF was unsuccessfully submitted, please contact support.\")\n .then((result) => {\n if (result.isConfirmed) {\n selectedIndex.value = selectedIndex.value + 1;\n stageEight.value = 1;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n }\n })\n } else {\n selectedIndex.value = selectedIndex.value + 1;\n stageEight.value = 1;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n }\n};\n\nconst uploadDocument = async (documentType: SupportCaseDocumentType, document: File) => {\n try {\n await apiClient.uploadFile(`app/utilityswitching/supportcases/documents/${submissionRepsonse.value?.caseID}/${documentType}`, document);\n } catch (err) {\n tcfUploadFailed.value = true;\n }\n}\n\n\nconst navigate = async (navigateDirection: number, e: any) => {\n if (navigateDirection > 0) {\n // We must close the alert on the enrgy page if it is open and prevent any validation from occurring, as the app will otherise\n // err, and prevent the user from progressing forwards\n if (baseAlert.isVisible()) {\n baseAlert.close();\n return\n }\n\n const validation: ValidatedEvent = e.validationGroup.validate();\n\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (selectedIndex.value == TenantSwitchStep.Tenant && !tenantTelephoneNumberValid.value) {\n displayErrorMessage('Please enter a valid telephone number.');\n return;\n }\n\n if (selectedIndex.value == TenantSwitchStep.Landlord && !landlordTelephoneNumberValid.value) {\n displayErrorMessage('Please enter a valid telephone number.');\n return;\n }\n\n // Force users to select whether the property has a pay as you go meter\n if (selectedIndex.value === TenantSwitchStep.Energy && !payAsYouGoSelected.value && energyType.value != EnergyTypes.ElectricityOnly) {\n displayErrorMessage('Please select whether the property has a Pay as you go Meter');\n return;\n }\n\n // If the user is moving forwards, the progress bars must have their values updated to 1 (a value of 1 makes a progress bar fill in)\n switch (selectedIndex.value) {\n case TenantSwitchStep.PropertyLookup:\n stageTwo.value = 1;\n break;\n case TenantSwitchStep.Energy:\n stageThree.value = 1;\n break;\n case TenantSwitchStep.Tenant:\n stageFour.value = 1;\n break;\n case TenantSwitchStep.Landlord:\n stageFive.value = 1;\n break;\n case TenantSwitchStep.Tcf:\n stageSix.value = 1;\n break;\n case TenantSwitchStep.Consent:\n stageSeven.value = 1;\n break;\n }\n }\n\n if (selectedIndex.value == TenantSwitchStep.Summary && navigateDirection > 0) {\n await submitSwitchDetails();\n return\n }\n\n if (selectedIndex.value == TenantSwitchStep.Confirmation && navigateDirection > 0) {\n closeModal();\n }\n\n selectedIndex.value = selectedIndex.value + navigateDirection;\n\n // If the user is moving backwards, the progress bars must have their values updated to 0 (a value of 0 makes a progress bar empty itself)\n if (navigateDirection < 0) {\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n\n switch (selectedIndex.value) {\n case TenantSwitchStep.PropertyLookup:\n stageTwo.value = 0;\n break;\n case TenantSwitchStep.Energy:\n stageThree.value = 0;\n break;\n case TenantSwitchStep.Tenant:\n stageFour.value = 0;\n break;\n case TenantSwitchStep.Landlord:\n stageFive.value = 0;\n break;\n case TenantSwitchStep.Tcf:\n stageSix.value = 0;\n break;\n case TenantSwitchStep.Consent:\n stageSeven.value = 0;\n break;\n }\n }\n};\n\n// When closing the modal, we must reset each progress bar \nconst closeModal = () => {\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n showCloseConfirmationPrompt.value = false;\n showPopup.value = false;\n if (baseAlert.isVisible()) {\n baseAlert.close();\n }\n};\n\nconst resetToDefaultState = () => {\n // We must reset this to ensure that the summary edit/nav buttons are enabled if a user submits a switch and then starts a new one\n disableSummaryEditButtons.value = false;\n nextButtonLocked.value = false;\n backButtonDisabled.value = false;\n\n //All values must be reset when the modal closes\n selectedIndex.value = TenantSwitchStep.PropertyLookup;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n stageEight.value = 0;\n\n dateRegulationsConsent.value = {\n personalDataComplient: false,\n receiveCommunication: false\n }\n\n // Need to clone the empty address, to avoid the addresses using the same variable in memory\n propertyAddress.value = {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n };\n\n tenantPersonalInfo.value = {\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n tenancyStartDate: '',\n priorityService: false,\n birthDate: ''\n }\n\n landlordPersonalInfo.value = {\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n address: {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"Ireland\"\n }\n }\n\n energyDetails.value = getDefaultEnergyDetailsModel();\n\n payAsYouGoSelected.value = false;\n showCloseConfirmationPrompt.value = true;\n tcfUploadFailed.value = false;\n}\n\n// These are the progress bar statuses, if a bar's status is 0, the bar is has no progress and\n// when it is 1, the bar has been 100% completed.\nconst stageTwo = ref(0);\nconst stageThree = ref(0);\nconst stageFour = ref(0);\nconst stageFive = ref(0);\nconst stageSix = ref(0);\nconst stageSeven = ref(0);\nconst stageEight = ref(0);\n\n//selectedIndex starts at 0 so we have to add 1 to it when displaying the stage to the user\nconst switchStage = ref(1);\n\n// When we get to the energy page, the next page needs to be disabled (to prevent users from not searching for an MPRN number)\n// and the appropriate progress bars needs to be reset when users return to previous pages from the summary page (only four \n// pages can be accessed from the summary page)\nwatch(() => selectedIndex.value, () => {\n switchStage.value = selectedIndex.value + 1;\n\n switch (selectedIndex.value) {\n case TenantSwitchStep.PropertyLookup: {\n nextButtonLocked.value = false;\n stageTwo.value = 0;\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n stageEight.value = 0;\n break;\n }\n case TenantSwitchStep.Energy: {\n /* Ensure user has performed the mprn lookup. Otherwise they can skip an important step/process\n * which could cause liability implications for PB */\n if (mprnAddressEmpty.value) {\n nextButtonLocked.value = true;\n }\n stageThree.value = 0;\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n stageEight.value = 0;\n break;\n }\n case TenantSwitchStep.Tenant: {\n stageFour.value = 0;\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n stageEight.value = 0;\n break;\n }\n case TenantSwitchStep.Landlord: {\n stageFive.value = 0;\n stageSix.value = 0;\n stageSeven.value = 0;\n stageEight.value = 0;\n break;\n }\n }\n});\n\n/** Checks whether the mprn address is empty */\nconst mprnAddressEmpty = computed(() => {\n return [mprnAddress.value.propertyName, mprnAddress.value.street,\n mprnAddress.value.locality, mprnAddress.value.town, mprnAddress.value.region]\n .every(item => !item);\n})\n\nconst propertyAddress = ref
({\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n});\n\nconst tenantPersonalInfo = ref({\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n tenancyStartDate: '',\n priorityService: false,\n birthDate: ''\n});\n\nconst landlordPersonalInfo = ref({\n id: 0,\n title: 0,\n firstName: \"\",\n lastName: \"\",\n number: \"\",\n email: \"\",\n address: {\n countryCode: CountryCode.Ireland,\n postCode: \"\",\n propertyName: \"\",\n street: \"\",\n locality: \"\",\n town: \"\",\n region: \"\",\n country: \"\"\n }\n});\n\nconst energyDetails = ref({\n nightSaverMeterRead: '',\n twentyfourHMeterRead: '',\n gasGPRNNum: '',\n gasMeterRead: '',\n readingDate: '',\n payAsYouGo: false,\n energyType: 'Electricity Only',\n nightMeterRead: '',\n peakMeterRead: '',\n dayMeterMeterRead: '',\n mprn: '',\n electricMeterType: 0\n});\n\nconst dateRegulationsConsent = ref({\n personalDataComplient: false,\n receiveCommunication: false\n});\n\nconst mprnAddress = ref
({\n countryCode: 0,\n postCode: '',\n propertyName: '',\n street: '',\n locality: '',\n town: '',\n region: '',\n country: \"\"\n});\n\n// This ref confirms whether or not a the address found by the MPRN has been confirmed to be the correct one\n// on the energy page.\nconst addressValidated = ref(true);\n\nconst nextButtonLocked = ref(false);\nconst backButtonDisabled = ref(false);\n\n/* This is triggered by the user answering the address confirmation modal (i.e. the user\n * has confirmed the address found by the MPRN lookup does not match the previously entered address)\n * or by the MPRN address matching the entered address. For example, if both addresses match,\n * the next button is unlocked. This is true for when the user confirm the address using the popup.\n * Otherwise, the button remains unlocked. \n * This is also triggered when users lookup an MpRN number and then change it\n * without looking it up again - the next button remains unlocked until they do */\nconst disableNextButton = (inValid: boolean, selectedProperty: MprnLookupResponse) => {\n if (selectedIndex.value != TenantSwitchStep.Energy) {\n return;\n }\n\n nextButtonLocked.value = inValid;\n\n if (selectedProperty) {\n mprnAddress.value.propertyName = selectedProperty.addressPropertyName;\n mprnAddress.value.street = selectedProperty.addressStreet;\n mprnAddress.value.locality = selectedProperty.addressLocality;\n mprnAddress.value.town = selectedProperty.addressTown;\n mprnAddress.value.region = selectedProperty.addressRegion;\n mprnAddress.value.postCode = selectedProperty.addressPostcode;\n } else {\n mprnAddress.value = getDefaultAddressValue();\n }\n};\n\nconst tcf = ref();\n\n/** Handles the TCF Changed event of the Document upload component */\nconst onTcfChanged = (e: File[]) => {\n tcf.value = e;\n};\n\nconst payAsYouGoSelected = ref(false)\nconst onPayAsYouGoSelected = () => payAsYouGoSelected.value = true;\n\nconst energyType = ref(EnergyTypes.ElectricityOnly);\nconst switchPropertyId = ref(0);\nconst gasMeterType = ref(-1);\n\nconst resetEnergyFields = () => {\n gasMeterType.value = -1;\n switchPropertyId.value = 0;\n payAsYouGoSelected.value = false;\n energyDetails.value = getDefaultEnergyDetailsModel();\n};\n\n// The correct energy type option on the energy page is pre-selected when the user selects a property from the seacrh dropdown\nconst propertySelected = (selectedProperty: Properties) => {\n resetEnergyFields();\n\n if (!selectedProperty) {\n return;\n }\n\n energyType.value = AddressEnergyTypeMapper(selectedProperty.gas, selectedProperty.electric);\n energyDetails.value.energyType = FindEnergyTypeText(energyType.value);\n energyDetails.value.mprn = selectedProperty.utilitySupplierElectricityRef;\n energyDetails.value.gasGPRNNum = selectedProperty.utilitySupplierGasRef;\n landlordPersonalInfo.value.id = selectedProperty.contactID;\n switchPropertyId.value = selectedProperty.id;\n\n if (selectedProperty.gasMeterType == GasMeterTypes.payg || selectedProperty.gasMeterType == GasMeterTypes.standard || selectedProperty.gasMeterType == GasMeterTypes.smart) {\n gasMeterType.value = selectedProperty.gasMeterType;\n payAsYouGoSelected.value = true;\n }\n\n // As the property has been changed, the previous mprn address is no longer valid\n mprnAddress.value = getDefaultAddressValue();\n};\n\nconst showCloseConfirmationPrompt = ref(true);\n\nconst onModalClosed = () => {\n resetToDefaultState();\n\n // Ensure all fields are reset by incrementing the content key\n contentRenderKey.value++;\n}\n\nconst contentRenderKey = ref(0);\nconst tenantTelephoneNumberValid = ref(false);\nconst landlordTelephoneNumberValid = ref(false);\n\nconst newSwitchOver = () => {\n closeModal();\n setTimeout(() => {\n showPopup.value = true;\n }, 300);\n};\n\nconst tcfUploaded = computed(() => { return (!tcf.value || tcf.value.length == 0) });\n\nconst updatePageNumber = (changeToPage: string) => {\n switch (changeToPage) {\n case SwitchPage.PropertyPage:\n selectedIndex.value = TenantSwitchStep.PropertyLookup;\n break;\n case SwitchPage.EnergyPage:\n selectedIndex.value = TenantSwitchStep.Energy;\n break;\n case SwitchPage.TenantPage:\n selectedIndex.value = TenantSwitchStep.Tenant;\n break;\n case SwitchPage.LandlordPage:\n selectedIndex.value = TenantSwitchStep.Landlord;\n break;\n case SwitchPage.TcfPage:\n selectedIndex.value = TenantSwitchStep.Tcf;\n break;\n }\n};\n\nconst screenWidth = ref(screen.width);\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((showPopup).value = $event)),\n showCloseButton: true,\n title: \"New Tenant Switch\",\n height: \"80vh\",\n width: _unref(ModalWidth).Medium,\n \"show-close-confirmation-prompt\": showCloseConfirmationPrompt.value,\n onModalClosed: onModalClosed,\n key: contentRenderKey.value\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n (screenWidth.value < 768)\n ? (_openBlock(), _createElementBlock(\"section\", {\n key: 0,\n class: _normalizeClass([\"progress-bar-container\", { smallScreensProgressContainer: screenWidth.value < 768 }])\n }, [\n _createElementVNode(\"div\", null, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Tenant\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Landlord\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"TCF\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Consent\",\n number: 6,\n progress: stageSeven.value\n }, null, 8, [\"index\", \"progress\"])\n ]),\n _createElementVNode(\"div\", null, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 7,\n progress: stageEight.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 8,\n progress: -1\n }, null, 8, [\"index\"])\n ])\n ], 2))\n : _createCommentVNode(\"\", true),\n (screenWidth.value >= 768)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_2, [\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Property\",\n number: 1,\n progress: stageTwo.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Energy\",\n number: 2,\n progress: stageThree.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Tenant\",\n number: 3,\n progress: stageFour.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Landlord\",\n number: 4,\n progress: stageFive.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"TCF\",\n number: 5,\n progress: stageSix.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Consent\",\n number: 6,\n progress: stageSeven.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Summary\",\n number: 7,\n progress: stageEight.value\n }, null, 8, [\"index\", \"progress\"]),\n _createVNode(TenantSwitchProgress, {\n index: selectedIndex.value,\n title: \"Confirmation\",\n number: 8,\n progress: -1\n }, null, 8, [\"index\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxMultiView), {\n height: \"calc(100% - 40px)\",\n width: \"100%\",\n \"selected-index\": selectedIndex.value,\n \"onUpdate:selectedIndex\": _cache[9] || (_cache[9] = ($event: any) => ((selectedIndex).value = $event)),\n loop: false,\n \"animation-enabled\": true,\n \"data-source\": pages.value,\n \"swipe-enabled\": false\n }, {\n property: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PropertyLookupPage, {\n modelValue: propertyAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n validationGroup: \"propertyGroup\",\n propertyId: props.propertyId,\n onPropertySelected: propertySelected,\n onChoseNotToUseExistingProperty: resetEnergyFields\n }, null, 8, [\"modelValue\", \"propertyId\"])\n ])\n ]),\n energy: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(EnergyDetailsPage, {\n energy: energyDetails.value,\n \"onUpdate:energy\": _cache[1] || (_cache[1] = ($event: any) => ((energyDetails).value = $event)),\n address: propertyAddress.value,\n \"address-validated\": addressValidated.value,\n \"onUpdate:addressValidated\": _cache[2] || (_cache[2] = ($event: any) => ((addressValidated).value = $event)),\n validationGroup: \"energy\",\n \"energy-type\": energyType.value,\n \"onUpdate:energyType\": _cache[3] || (_cache[3] = ($event: any) => ((energyType).value = $event)),\n onDisableNextButton: disableNextButton,\n onPayAsYouGoSelected: onPayAsYouGoSelected,\n gasMeterType: gasMeterType.value\n }, null, 8, [\"energy\", \"address\", \"address-validated\", \"energy-type\", \"gasMeterType\"])\n ])\n ]),\n tenant: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(TenantDetailsPage, {\n \"personal-info\": tenantPersonalInfo.value,\n \"onUpdate:personalInfo\": _cache[4] || (_cache[4] = ($event: any) => ((tenantPersonalInfo).value = $event)),\n \"telephone-number-valid\": tenantTelephoneNumberValid.value,\n \"onUpdate:telephoneNumberValid\": _cache[5] || (_cache[5] = ($event: any) => ((tenantTelephoneNumberValid).value = $event))\n }, null, 8, [\"personal-info\", \"telephone-number-valid\"])\n ])\n ]),\n landlord: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(PropertyOwnerDetailsPage, {\n \"landlord-details\": landlordPersonalInfo.value,\n \"onUpdate:landlordDetails\": _cache[6] || (_cache[6] = ($event: any) => ((landlordPersonalInfo).value = $event)),\n validationGroup: \"landlord\",\n \"telephone-number-valid\": landlordTelephoneNumberValid.value,\n \"onUpdate:telephoneNumberValid\": _cache[7] || (_cache[7] = ($event: any) => ((landlordTelephoneNumberValid).value = $event)),\n title: \"Landlord Details\",\n \"owner-label\": \"Landlord\"\n }, null, 8, [\"landlord-details\", \"telephone-number-valid\"])\n ])\n ]),\n tcf: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(DocumentUpload, {\n onTcfChanged: onTcfChanged,\n onlyShowTcf: true\n }),\n (!tcf.value || (tcf.value && tcf.value.length == 0))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"No File Selected [Max 4.5MB]\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n consent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(ConsentPage, {\n modelValue: dateRegulationsConsent.value,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((dateRegulationsConsent).value = $event)),\n validationGroup: \"consent\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n \"switch-summary\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(SummaryPage, {\n energySelectedAddress: mprnAddress.value,\n landlordPersonalInfo: landlordPersonalInfo.value,\n tenantPersonalInfo: tenantPersonalInfo.value,\n energyType: energyDetails.value.energyType,\n tcfUploaded: !tcfUploaded.value,\n displayTcf: true,\n onUpdatePageNumber: updatePageNumber,\n disableEditButtons: disableSummaryEditButtons.value\n }, null, 8, [\"energySelectedAddress\", \"landlordPersonalInfo\", \"tenantPersonalInfo\", \"energyType\", \"tcfUploaded\", \"disableEditButtons\"])\n ])\n ]),\n confirmation: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }, 8, [\"selected-index\", \"data-source\"])\n ]),\n _createElementVNode(\"section\", _hoisted_12, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"left-button\", { hideButton: selectedIndex.value == _unref(TenantSwitchStep).PropertyLookup || selectedIndex.value == _unref(TenantSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"Back\",\n onClick: _cache[10] || (_cache[10] = (e) => navigate(-1, e)),\n icon: \"spinleft\",\n disabled: backButtonDisabled.value\n }, null, 8, [\"disabled\"])\n ], 2),\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(switchStage.value) + \" of 8\", 1),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"new-switchover\", { hideButton: selectedIndex.value < _unref(TenantSwitchStep).Confirmation }])\n }, [\n _createVNode(_unref(DxButton), {\n text: \"New Switch\",\n onClick: newSwitchOver\n })\n ], 2),\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(_unref(DxButton), {\n text: nextSubmitButtonText.value,\n onClick: _cache[11] || (_cache[11] = (e) => navigate(1, e)),\n icon: \"spinright\",\n rtlEnabled: true,\n validationGroup: buttonValidationGroup.value,\n disabled: nextButtonLocked.value\n }, null, 8, [\"text\", \"validationGroup\", \"disabled\"])\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./tenant-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./tenant-switching-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./tenant-switching-modal.vue?vue&type=style&index=0&id=409318d7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-409318d7\"]])\n\nexport default __exports__","export enum TaskStatus {\n Outstanding = 0,\n Completed = 1\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, mergeProps as _mergeProps, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-84e9f07a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"tab-container\" }\nconst _hoisted_2 = { class: \"small-field-container\" }\nconst _hoisted_3 = { class: \"field-column\" }\nconst _hoisted_4 = { class: \"showAtTopContainer\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Always Show At Top\", -1))\nconst _hoisted_6 = { class: \"field-column\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Completed\", -1))\nconst _hoisted_8 = { class: \"tab-container\" }\n\nimport { inject, ref, computed, watch, onMounted } from 'vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport modalBase from '../ui/modals/modal-base.vue';\nimport lookupSingleSelect from '../ui/lookup/lookup-single-select.vue';\nimport systemCodeSingleSelect from '../ui/system-codes/system-code-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport propertyLookup from '../ui/lookup/property-lookup.vue';\nimport contactLookup from '../ui/lookup/contact-lookup.vue';\nimport { ContactTasks } from 'acquaint-api/models/ContactTasks';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport { IDDescriptionPair } from \"@/types/generic/IDDescriptionPair\";\nimport { formatDate } from 'bright-logic-core/src/format';\nimport switchToggle from '../ui/toggles/switch-toggle.vue';\nimport dateToggle from '@/components/ui/toggles/date-toggle.vue';\nimport { TaskStatus } from '@/enums/tasks/TaskStatus'\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport AcquaintTextArea from '@/components/ui/inputs/acquaint-text-area.vue';\nimport { ContactTasksValidation } from 'acquaint-api/validation/ContactTasksValidation';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { ValidationCallbackParams } from '../../types/validation/ValidationCallbackParams';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport AcquaintDateBox from '../ui/inputs/acquaint-date-box.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport AcquaintInfoBox from '../ui/inputs/acquaint-info-box.vue';\nimport { useSystemConfigurationStore } from '@/stores/SystemConfigurationStore';\nimport { SystemConfiguration } from 'acquaint-api/constants/SystemConfiguration';\nimport { useCurrentUserStore } from '../../stores/CurrentUserStore'\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport { TimeStamps } from '@/utils/TimeStamp';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\nimport { TaskTypes } from 'acquaint-api/models/TaskTypes';\nimport TaskTemplatesConfigurationModal from '../contact-configuration/task-templates-configuration-modal.vue';\nimport { TaskTemplates } from 'acquaint-api/models/TaskTemplates';\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\nimport { DxContextMenu } from 'devextreme-vue/context-menu';\n\nconst systemUserId = 999999999;\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'edit-task-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the task.\n * @type {number}\n * @required\n */\n id: {\n type: Number,\n required: true\n },\n /** \n * The unique identifier for the contact.\n * @type {number}\n * @default 0\n */\n contactID: {\n type: Number,\n default: 0\n },\n /** \n * The unique identifier for the property.\n * @type {number}\n * @default 0\n */\n propertyID: {\n type: Number,\n default: 0\n },\n /** \n * The boolean value indicates whether to open the modal from contact page.\n * @type {boolean}\n * @default false\n */\n openedFromContactPage: {\n type: Boolean,\n default: false\n },\n /** \n * The unique identifier for the certificate.\n * @type {number}\n * @default 0\n */\n certificateID: {\n type: Number,\n default: 0\n }\n},\n emits: ['update:modelValue', 'SaveClick', 'createdTask', 'refreshCorrespondenceTab'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst systemConfigStore = useSystemConfigurationStore();\nconst taskDetails = ref();\nconst originalTaskJson = ref();\nconst ownerName = ref();\nconst maxDate = ref(new Date(new Date(Date.now()).setHours(23, 59, 59, 59)));\nconst createdTask = ref()\nconst currentUser = ref()\nconst currentUserStore = useCurrentUserStore();\nconst userPermissionsStore = useUserPermissionsStore();\nconst userPermissions = ref();\nconst readOnly = ref(false);\nconst showCloseConfirmationPrompt = ref(false);\nconst keepingModalOpening = ref(false);\nconst selectedTab = ref(0);\nconst focusBodyField = ref(false);\nconst resetValid = ref(false);\nconst openTemplateModal = ref(false);\nconst taskTypeData = ref({\n id: 0,\n description: '',\n updateMailingCheckedDate: 0,\n inActive: 0\n});\nconst taskTemplate = ref({\n id: 0,\n description: '',\n subject: '',\n body: '',\n taskTypeID: 0,\n inActive: 0,\n});\nconst showFunctionsMenu = ref(false);\nconst contextMenuId = ref('task-actions-menu');\n\nonMounted(async () => {\n // Get Current User details from the Current User store\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n});\n\nconst saving = ref(false);\n\n\n\nconst showTaskModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\n\n\nonMounted(async () => {\n // Get Current User details from the Current User store\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n});\n\nwatch(() => showTaskModal.value, async () => {\n\n if (keepingModalOpening.value || !showTaskModal.value || !userPermissions.value) {\n return\n }\n\n selectedTab.value = 0;\n showCloseConfirmationPrompt.value = false;\n\n taskTypeData.value = {\n id: 0,\n description: '',\n updateMailingCheckedDate: 0,\n inActive: 0\n };\n\n if (!userPermissions.value.correspondence.edit) {\n readOnly.value = true;\n }\n\n // Fetching Data\n await populateData();\n\n await fetchOwnerName();\n resetCompletedDateForOutstandingTasks();\n\n // No need to lock a record if we're in read only mode, as users can't change data\n if (!readOnly.value) {\n await lockTaskRecord()\n }\n\n\n contextMenuId.value = `task-actions-menu-${Date.now()}`\n});\n\n\n// Functions for retrieving data\n\n//When a row is deleted, its details are passed down and a user may view it again, if so, the fields will be field with its details\nconst fetchData = async () => {\n try {\n if (props.id != 0) {\n originalTaskJson.value = await acquaintApiClient.httpGet(`database/contacttasks/${props.id}`);\n } else if (props.id == 0) {\n originalTaskJson.value = await acquaintApiClient.httpGet('database/contacttasks/defaultmodel');\n }\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst populateData = async () => {\n if (await fetchData()) {\n //If the contact id is passed down, e.g when a user is creating a new task from the contact page, the contact lookup will be automatically be field with the contact's name\n if (props.contactID && originalTaskJson.value) {\n originalTaskJson.value.contactID = props.contactID;\n }\n\n if (props.propertyID && originalTaskJson.value) {\n originalTaskJson.value.propertyID = props.propertyID;\n }\n\n if (props.certificateID && originalTaskJson.value) {\n originalTaskJson.value.certificateID = props.certificateID;\n }\n\n // As the api won't do this for us, we need to manually set the default task type\n await setDefaultTaskType();\n\n // We need to clone the original object and edit the clone so we compare them to determine whether or not the cancel prompt needs to be displayed.\n taskDetails.value = JSON.parse(JSON.stringify(originalTaskJson.value));\n resetValid.value = true;\n\n setTimeout(() => { resetValid.value = false }, 100);\n } else {\n originalTaskJson.value = undefined;\n taskDetails.value = undefined;\n }\n};\n\n/** Sets the default task type for new task records */\nconst setDefaultTaskType = async () => {\n // Avoid unnecessary processing if task details haven't been retrieved\n if (!originalTaskJson.value) {\n return;\n }\n\n /* Get default task type from system config and assign it to the model\n * Note: the system config store alwayrs returns a string. \n * To maintain type safety this needs to be converted to a number */\n const defaultTaskTypeId = await systemConfigStore.getSystemConfigurationValue(SystemConfiguration.DefaultTaskType);\n originalTaskJson.value.taskTypeID = Number(defaultTaskTypeId);\n};\n\nconst fetchOwnerName = async () => {\n // Ignore system user as this will cause api to error\n if (taskDetails.value?.userID === systemUserId) {\n ownerName.value = { id: systemUserId, description: 'System User' };\n return;\n }\n\n try {\n ownerName.value = await acquaintApiClient.httpGet(`app/contacts/${taskDetails.value?.userID}/name`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\n/** Resets the Completed Date for Outstanding Tasks to address a discrepancy in Acquaint Desktop */\nconst resetCompletedDateForOutstandingTasks = () => {\n /* As Desktop Acquaint seems to retain the Completed Date value in the Database,\n * when Tasks have been changed from Completed to Outstanding,\n * we should reset the Completed Date to show a blank Date on the form */\n if (taskDetails.value?.status === TaskStatus.Outstanding) {\n taskDetails.value.completedDate = \"\";\n }\n};\n\n\n// Locking and unlocking functions\n\n// Api wont be called if a user is creating a new task\nconst lockTaskRecord = async () => {\n if (props.id == 0) {\n return\n }\n try {\n await acquaintApiClient.httpPostVoid(`database/contacttasks/${props.id}/lock`, {\n lock: true,\n extraInfo: \"\"\n });\n } catch (err: any) {\n displayErrorMessage(getErrorMessage(err))\n readOnly.value = true\n }\n\n};\n\n// If the user was able to edit the record because it hadn't been locked by another user, the record will be unlocked for other users to edit when closing the edit modal. \nconst unlockTaskRecord = async () => {\n\n if (readOnly.value) {\n readOnly.value = false\n return\n }\n\n try {\n await acquaintApiClient.httpPostVoid(`database/contacttasks/${props.id}/lock`, {\n lock: false,\n extraInfo: \"\"\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\n// Functions for saving task records\nconst updateDates = async () => {\n try {\n await acquaintApiNextClient.httpPutVoid(`contacts/${taskDetails.value?.contactID}/updaterenewalcheckeddates`, null);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\n// If the selected task's update field is 1 (true), we must update the selected contact's renewal/last checked date\nconst updateContactRenewalDate = async () => {\n if (taskTypeData.value.id > 0 && taskTypeData.value.updateMailingCheckedDate && props.openedFromContactPage && taskDetails.value) {\n return await updateDates();\n } else {\n return false;\n }\n};\n\n/** If a task is updated (the id is not 0), it is pushed to one api, if a new task is created, it is pushed to another */\nconst submitData = async () => {\n saving.value = true;\n readOnly.value = true;\n createdTask.value = undefined;\n\n try {\n if (props.id == 0) {\n createdTask.value = await acquaintApiClient.httpPost('database/contacttasks', taskDetails.value);\n } else {\n await acquaintApiClient.httpPut(`database/contacttasks/${props.id}`, taskDetails.value);\n }\n return true\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false\n } finally {\n saving.value = false;\n readOnly.value = false;\n }\n};\n\n/** Handles the Save button click event */\nconst onSaveClick = async (e: any) => {\n const validate = e.validationGroup.validate();\n\n if (!e.validationGroup._validationInfo.result || !validate.isValid) {\n return;\n }\n\n if (!await submitData()) {\n return;\n }\n\n if (props.id == 0) {\n // As a new task has been created, we want to update the selected contact's renewal date\n const renewalDateUpdated = await updateContactRenewalDate();\n\n // If the selected contact remains to be the same as the one displayed on the contact page, we want to trigger the contact page to be refreshed if the update\n // renewal dates API call is successful. We also need to emit a b\n emit('createdTask', createdTask.value?.id, taskDetails.value?.contactID == props.contactID ? renewalDateUpdated : false);\n // Instead of emitting lots of data, I felt it would be easier to have two seperate emits. This 2nd one triggers the correpsondence page to be refreshed in either \n // the currently accessed property or contact pages if the selected id matches the id of the record displayed.\n emit('refreshCorrespondenceTab', taskDetails.value?.contactID == props.contactID, taskDetails.value?.propertyID == props.propertyID)\n }\n\n showCloseConfirmationPrompt.value = false;\n showTaskModal.value = false;\n emit('SaveClick');\n};\n\n\n// Functions relaated to the closing of the modal.\n\n/** Closes the task modal */\nconst modalClosed = () => {\n readOnly.value = false;\n keepingModalOpening.value = false;\n\n if (props.id == 0) {\n return;\n }\n\n unlockTaskRecord();\n};\n\nconst cancelClick = () => {\n showTaskModal.value = false;\n};\n\n// This function handles users confirming they wish to keep the modal open.\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\n/** Checks if the Task data has been updated since loading */\nwatch(() => taskDetails.value, (value) => {\n showCloseConfirmationPrompt.value = JSON.stringify(originalTaskJson.value) != JSON.stringify(value);\n}, { deep: true });\n\n\n// Code relating to the display and updating of data\n\nconst minDueDate = computed(() => taskDetails.value?.startDate ? new Date(taskDetails.value.startDate) : new Date('1900-01-01'));\n\n/** Adds a date stamp to the end of the current taskbody */\nconst dateStamp = async () => {\n if (!taskDetails.value) {\n return\n }\n\n taskDetails.value.body = await TimeStamps(taskDetails.value.body);\n focusBodyField.value = true;\n\n setTimeout(() => {\n focusBodyField.value = false;\n }, 50)\n};\n\nconst formattedAddedDate = computed(() => taskDetails.value ? formatDate(taskDetails.value.addedDate) : \"\");\nconst formattedUpdatedDate = computed(() => taskDetails.value ? formatDate(taskDetails.value.updatedDate) : \"\");\n\n//This function ensures that a user cannot enter a due date that is earlier than the start date\nconst startDateChanged = () => {\n if (!taskDetails.value) {\n return;\n }\n\n if (new Date(taskDetails.value.dueDate) < new Date(taskDetails.value.startDate)) {\n taskDetails.value.dueDate = taskDetails.value.startDate\n }\n};\n\n// watch to see if the completed date field has changed, so we can set the status to reflect the Completed Date\nwatch(() => taskDetails.value?.completedDate, () => {\n if (!taskDetails.value) {\n return;\n }\n\n // set the status to reflect the Completed Date\n taskDetails.value.status = taskDetails.value.completedDate === \"\" ? TaskStatus.Outstanding : TaskStatus.Completed\n});\n\n// If the modal is opened from a contact page in order to create a new task, we must fetch the\n// selected type's data so that we can determine whether or not the mailing renewal date should\n// be updated to the current date.\nwatch(() => taskDetails.value?.taskTypeID, () => {\n // Each selectable task type has an id greater than 0 so this prevents the API from errroring\n if (!taskDetails.value || taskDetails.value.taskTypeID == 0 || !props.openedFromContactPage) {\n return;\n }\n\n fetchTaskTypeData();\n});\n\nconst fetchTaskTypeData = async () => {\n try {\n taskTypeData.value = await acquaintApiClient.httpGet(`database/tasktypes/${taskDetails.value?.taskTypeID}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n taskTypeData.value = {\n id: 0,\n description: '',\n updateMailingCheckedDate: 0,\n inActive: 0\n };\n }\n};\n\n// After a template has been selected, we must replace the task's subject and body with the template's subject and body\nconst fetchItemData = async (templateId: number) => {\n try {\n taskTemplate.value = await acquaintApiClient.httpGet(`database/tasktemplates/${templateId}`);\n return true;\n } catch (err) {\n taskTemplate.value = {\n id: 0,\n description: '',\n subject: '',\n body: '',\n taskTypeID: 0,\n inActive: 0,\n };\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst populateSubjectBodyFields = async (templateId: number) => {\n if (await fetchItemData(templateId) && taskDetails.value) {\n taskDetails.value.subject = taskTemplate.value.subject;\n taskDetails.value.body = taskTemplate.value.body;\n }\n};\n\nconst requiredMessage = ref(\"The subject or the body field is required\");\n\n// This function is passed down to either the body or subject field and is used in their respective custom rule tag. \n// Either has to have text in it. True is returned when text has been entered (the value is valid) otherwise, false is returned and a user error message appears.\n\nconst customValidationFunction = (params: ValidationCallbackParams) => {\n return typeof (params.value) === 'string' ? params.value.length > 0 : false;\n};\n\n\n//If the subject field does have text in it, the customValidationFunction will not passed down to the body field, requiring the user to enter a value, as only one of the two fields needs to have text in it\nconst conditioanlBodyValidation = computed(() => {\n if (taskDetails.value?.subject) {\n return\n }\n return {\n customValidation: customValidationFunction\n }\n});\n\n//If the body field does have text in it, the customValidationFunction will not be passed down to the subject field, requiring the user to enter a value, as only one of the two fields needs to have text in it\nconst conditioanlSubjectValidation = computed(() => {\n if (taskDetails.value?.body) {\n return\n }\n return {\n customValidation: customValidationFunction\n }\n});\n\n\n// This code handles the actions footer menu.\nconst menuItems: ContextMenuItem[] = [\n {\n text: 'Template',\n key: 'template',\n icon: ''\n },\n {\n text: 'Date Stamp',\n key: 'dateStamp',\n icon: ''\n }\n];\n\nconst onMenuItemClick = (e: any) => {\n switch (e.itemData.key) {\n case 'template':\n openTemplateModal.value = true;\n break;\n case 'dateStamp':\n dateStamp();\n break;\n }\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n modelValue: showTaskModal.value,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((showTaskModal).value = $event)),\n title: \"Task\",\n width: _unref(ModalWidth).Small,\n height: \"750px\",\n saving: saving.value,\n showCloseConfirmationPrompt: showCloseConfirmationPrompt.value,\n onCancelPromptDenied: cancelPromptDenied,\n onModalClosed: modalClosed,\n \"help-page\": \"task-list\"\n }, {\n content: _withCtx(() => [\n (taskDetails.value)\n ? (_openBlock(), _createBlock(_unref(DxTabPanel), {\n key: 0,\n \"scroll-by-content\": true,\n \"show-nav-buttons\": true,\n \"swipe-enabled\": false,\n selectedIndex: selectedTab.value,\n \"onUpdate:selectedIndex\": _cache[11] || (_cache[11] = ($event: any) => ((selectedTab).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(contactLookup, {\n modelValue: taskDetails.value.contactID,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((taskDetails.value.contactID) = $event)),\n readOnly: readOnly.value,\n findNameOnIdChange: true,\n label: \"Contact\",\n showNavigateContactIcon: false\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(propertyLookup, {\n modelValue: taskDetails.value.propertyID,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((taskDetails.value.propertyID) = $event)),\n readOnly: readOnly.value,\n displayPeek: true,\n label: \"Property\",\n onNavigateToProperty: unlockTaskRecord,\n displayNavigateIcon: false\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, _mergeProps({\n fieldValidation: _unref(ContactTasksValidation).Subject,\n modelValue: taskDetails.value.subject,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((taskDetails.value.subject) = $event)),\n \"read-only\": readOnly.value\n }, conditioanlSubjectValidation.value, {\n invalidMessage: requiredMessage.value,\n label: \"Subject\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).KeyUp,\n resetValid: resetValid.value,\n \"validation-group\": \"edit-task-modal\"\n }), null, 16, [\"fieldValidation\", \"modelValue\", \"read-only\", \"invalidMessage\", \"value-change-event\", \"resetValid\"]),\n _createVNode(AcquaintTextArea, _mergeProps({\n fieldValidation: _unref(ContactTasksValidation).Body,\n modelValue: taskDetails.value.body,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((taskDetails.value.body) = $event)),\n \"read-only\": readOnly.value\n }, conditioanlBodyValidation.value, {\n invalidMessage: requiredMessage.value,\n label: \"Body\",\n \"value-change-event\": _unref(TextboxValueChangeEvent).KeyUp,\n focusInput: focusBodyField.value,\n resetValid: resetValid.value,\n \"validation-group\": \"edit-task-modal\"\n }), null, 16, [\"fieldValidation\", \"modelValue\", \"read-only\", \"invalidMessage\", \"value-change-event\", \"focusInput\", \"resetValid\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(lookupSingleSelect, {\n modelValue: taskDetails.value.assignedUserID,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((taskDetails.value.assignedUserID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Users,\n style: {\"width\":\"18rem\"},\n readOnly: readOnly.value,\n label: \"Assigned To\",\n \"validation-group\": \"edit-task-modal\"\n }, null, 8, [\"modelValue\", \"lookup-source\", \"readOnly\"]),\n _createVNode(lookupSingleSelect, {\n modelValue: taskDetails.value.taskTypeID,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((taskDetails.value.taskTypeID) = $event)),\n \"lookup-source\": _unref(LookupTableSource).TaskTypes,\n style: {\"width\":\"18rem\"},\n resetValid: resetValid.value,\n readOnly: readOnly.value,\n label: \"Type\",\n \"validation-group\": \"edit-task-modal\"\n }, null, 8, [\"modelValue\", \"lookup-source\", \"resetValid\", \"readOnly\"]),\n _createVNode(systemCodeSingleSelect, {\n modelValue: taskDetails.value.priority,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((taskDetails.value.priority) = $event)),\n \"code-type\": _unref(CodeType).TaskPriority,\n style: {\"width\":\"10rem\"},\n readOnly: readOnly.value,\n label: \"Priority\"\n }, null, 8, [\"modelValue\", \"code-type\", \"readOnly\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(switchToggle, {\n modelValue: taskDetails.value.alwaysShowAtTop,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((taskDetails.value.alwaysShowAtTop) = $event)),\n readOnly: readOnly.value\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(AcquaintDateBox, {\n modelValue: taskDetails.value.startDate,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((taskDetails.value.startDate) = $event)),\n \"field-validation\": _unref(ContactTasksValidation).StartDate,\n label: \"Start Date\",\n onValueSelected: startDateChanged,\n width: _unref(FieldSize).Medium,\n \"read-only\": readOnly.value,\n \"include-time\": true,\n \"validation-group\": \"edit-task-modal\"\n }, null, 8, [\"modelValue\", \"field-validation\", \"width\", \"read-only\"]),\n _createVNode(AcquaintDateBox, {\n modelValue: taskDetails.value.dueDate,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((taskDetails.value.dueDate) = $event)),\n \"field-validation\": _unref(ContactTasksValidation).DueDate,\n label: \"Due Date\",\n onValueSelected: startDateChanged,\n width: _unref(FieldSize).Medium,\n \"read-only\": readOnly.value,\n \"min-date\": minDueDate.value,\n \"validation-group\": \"edit-task-modal\"\n }, null, 8, [\"modelValue\", \"field-validation\", \"width\", \"read-only\", \"min-date\"]),\n _hoisted_7,\n _createVNode(dateToggle, {\n modelValue: taskDetails.value.completedDate,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((taskDetails.value.completedDate) = $event)),\n \"field-validation\": _unref(ContactTasksValidation).CompletedDate,\n maxDate: maxDate.value,\n width: _unref(FieldSize).Medium,\n readOnly: readOnly.value\n }, null, 8, [\"modelValue\", \"field-validation\", \"maxDate\", \"width\", \"readOnly\"])\n ])\n ])\n ])\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), { title: \"System Info\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(AcquaintInfoBox, {\n text: taskDetails.value.id.toString(),\n width: _unref(FieldSize).Large,\n label: \"ID\"\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n text: formattedAddedDate.value,\n width: _unref(FieldSize).Large,\n label: \"Added Date\"\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n text: formattedUpdatedDate.value,\n width: _unref(FieldSize).Large,\n label: \"Updated Date\"\n }, null, 8, [\"text\", \"width\"]),\n _createVNode(AcquaintInfoBox, {\n text: ownerName.value?.description ? ownerName.value.description : '',\n width: _unref(FieldSize).Large,\n label: \"Owner\"\n }, null, 8, [\"text\", \"width\"])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"selectedIndex\"]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { elementAttr: { id: contextMenuId.value }, text: 'Actions', onClick: () => { showFunctionsMenu.value = !showFunctionsMenu.value; } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: saving.value, onClick: (e) => { onSaveClick(e); }, validationGroup: 'edit-task-modal' },\n visible: !readOnly.value\n }, null, 8, [\"options\", \"visible\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', disabled: saving.value, onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"saving\", \"showCloseConfirmationPrompt\"]),\n _createVNode(TaskTemplatesConfigurationModal, {\n modelValue: openTemplateModal.value,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((openTemplateModal).value = $event)),\n onEmitSelectedDetails: populateSubjectBodyFields,\n showSelectButton: true\n }, null, 8, [\"modelValue\"]),\n _createVNode(_unref(DxContextMenu), {\n visible: showFunctionsMenu.value,\n \"onUpdate:visible\": _cache[14] || (_cache[14] = ($event: any) => ((showFunctionsMenu).value = $event)),\n \"data-source\": menuItems,\n target: `#${contextMenuId.value}`,\n position: { my: 'bottom right', at: 'top right' },\n onItemClick: onMenuItemClick\n }, null, 8, [\"visible\", \"target\"])\n ], 64))\n}\n}\n\n})","import script from \"./edit-task-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./edit-task-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./edit-task-modal.vue?vue&type=style&index=0&id=84e9f07a&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-84e9f07a\"]])\n\nexport default __exports__","\n\n","import { render } from \"./auto-address.vue?vue&type=template&id=bbdd5572\"\nimport script from \"./auto-address.vue?vue&type=script&lang=js\"\nexport * from \"./auto-address.vue?vue&type=script&lang=js\"\n\nimport \"./auto-address.vue?vue&type=style&index=0&id=bbdd5572&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { inject } from 'vue';\nimport AutoAddress from './auto-address.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { Address } from '@/types/generic/Address';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'auto-address-wrapper',\n emits: ['onAddressFound', 'onSearchCompleted'],\n setup(__props, { emit }) {\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\n\n\n\nconst onAddressFound = async (e: any) => {\n // Nothing found so quit to prevent api errors\n if (!e?.addressId) {\n return;\n }\n\n // Call api to reformat the selected address to avoid duplicating the logic \n const address = await apiClient.httpPost
('app/utilityswitching/addresslookup/format', e);\n\n emit('onAddressFound', address)\n}\n\nconst onSearchCompleted = () => {\n emit('onSearchCompleted');\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(AutoAddress, {\n licencekey: \"67EC65D2-7228-BEED-4EC5-2087E8E0F39A\",\n \"vanity-mode\": true,\n \"address-profile\": \"Demo5LineV3\",\n onOnAddressFound: onAddressFound,\n onOnSearchCompleted: onSearchCompleted,\n addressFoundLabel: \"Success! The property was found.\",\n placeHolderLabel: \"\",\n inputRequiredLabel: \"Enter a full address or eircode to begin your search.\",\n noEircodeAppendedLabel: \"Address found, but no eircode available\",\n nuaAddressFoundLabel: \"We've found the address, please add your eircode in the text box below if you know it\"\n }))\n}\n}\n\n})","import script from \"./auto-address-wrapper.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./auto-address-wrapper.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7908f830\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"find-contacts-container\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"no-results\"\n}\n\nimport { computed, PropType, ref } from 'vue'\nimport GridBase from '@/components/ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { AddressLookupResult } from '@/types/address-lookup/AddressLookupResult';\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'find-postcode-modal',\n props: {\n data: {\n type: Array as PropType,\n },\n searching: {\n type: Boolean,\n default: false\n },\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @default false\n */\n modelValue: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'rowClick', 'postcodeSelected'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n})\n\nconst postcodeSelected = ref()\n\n/** Handles the grid row click event */\nconst onRowClick = (e: AddressLookupResult) => emit('rowClick', e);\n\n/** Handles the grid row selected event */\nconst onRowSelected = (e: AddressLookupResult) => {\n if (e) {\n postcodeSelected.value = e;\n }\n}\n\n// Handles the event triggered when the user clicks on the ... button on a row\nconst adaptiveRowSelection = (e: AddressLookupResult) => {\n if (e) {\n postcodeSelected.value = e;\n }\n}\n\nconst onSelectClick = () => {\n emitSelectedProperty()\n}\n\nconst closeModal = () => {\n showModal.value = false\n};\n\nconst emitSelectedProperty = () => {\n showModal.value = false;\n emit('postcodeSelected', postcodeSelected.value);\n}\n\n/** Determines whether any address results have been found */\nconst addressResultsFound = computed(() => {\n if (!props.data) {\n return false;\n }\n\n /* Sometimes the api can return an array with 1 item but no details\n * To prevent a DevExpress error, we need to ensure the display address is set for every record \n * blank display addresses are allowed as this doesn't cause an error */\n return props.data.every(item => item.displayAddress != null);\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n title: \"Find Address\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event)),\n height: \"80vh\"\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n (addressResultsFound.value)\n ? (_openBlock(), _createBlock(GridBase, {\n key: 0,\n \"data-source\": __props.data,\n loading: __props.searching,\n \"show-column-filters\": false,\n \"id-column-name\": \"displayAddress\",\n onRowClick: onRowClick,\n onRowSelected: onRowSelected,\n onAdaptiveRowSelection: adaptiveRowSelection\n }, {\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"displayAddress\",\n caption: \"Address\"\n })\n ]),\n _: 1\n }, 8, [\"data-source\", \"loading\"]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, \" No results found\"))\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: {\n text: 'Select',\n disabled: !postcodeSelected.value,\n onClick: () => onSelectClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => closeModal() }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","import script from \"./find-postcode-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./find-postcode-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./find-postcode-modal.vue?vue&type=style&index=0&id=7908f830&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7908f830\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"input-container\" }\n\nimport { ref, inject, watch, computed, PropType } from 'vue';\nimport FindPostcodeModal from './find-postcode-modal.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AddressLookupResult } from '@/types/address-lookup/AddressLookupResult';\nimport { AddressLookupQuery } from '@/types/address-lookup/AddressLookupQuery';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { DxButton } from 'devextreme-vue/text-box';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport AcquaintTextbox from '../../inputs/acquaint-textbox.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxCustomRule, DxRequiredRule } from 'devextreme-vue/validator';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { validationCallback } from '@/utils/validation/FieldValidator';\nimport { validatePostcode } from '@/utils/validation/FieldValidator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'postcode-lookup',\n props: {\n /** \n * The countryCode allowed value for the input.\n * @type {number}\n * @required\n */\n countryCode: {\n type: Number,\n required: true\n },\n /** \n * The string value used with `v-model` to control the component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n /** \n * The validation rules and constraints applied to the field. Defines the validation logic to ensure correct user input.\n * @type {FieldValidation}\n * @required\n */\n fieldValidation: {\n type: Object as PropType,\n required: true\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n default: ''\n },\n /** \n * The label displayed for the postcode control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * The boolean value indicates whether allow to automatically select address.\n * @type {boolean}\n * @default true\n */\n autoSelectAddress: {\n type: Boolean,\n default: true\n }\n},\n emits: ['update:modelValue', 'selectAddress'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"6487cc7c\": (props.width)\n}))\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst showModal = ref(false);\nconst addresses = ref();\nconst searching = ref(false);\n\n\n\nconst postcode = computed({\n get: () => props.modelValue,\n set: (e: string) => emit('update:modelValue', e)\n})\n\n\n\n/** Handles the address selected event of the find postcode modal */\nconst onPostcodeSelected = (e: AddressLookupResult) => {\n emit('selectAddress', e);\n}\n\nconst onSearch = async () => {\n // Avoid unnecessary api calls when no postcode entered\n if (!postcode.value) {\n return;\n }\n\n searching.value = true;\n\n // For backwards compatibility with Acquaint App, ensure modal is shown when searching for an address without auto selecting\n if (!props.autoSelectAddress) {\n showModal.value = true;\n }\n\n const query: AddressLookupQuery = {\n postcode: postcode.value,\n countryCode: props.countryCode\n };\n\n // Get results back from api\n try {\n addresses.value = await apiClient.httpPost('App/AddressLookup', query);\n } catch (error) {\n displayErrorMessage(getErrorMessage(error));\n }\n\n // To improve UX, auto select first result, if option has been set \n if (props.autoSelectAddress && addresses.value && singleLookupResult.value) {\n emit('selectAddress', addresses.value[0]);\n return;\n }\n\n showModal.value = true;\n searching.value = false;\n};\n\n/* Determines whether the api returned a single lookup result\n * Need to check on display address as sometimes the api returns an array with 1 result but no data */\nconst singleLookupResult = computed(() => addresses.value && addresses.value.length === 1 && addresses.value[0].displayAddress);\n\nconst rowClick = (e: AddressLookupResult) => {\n emit('selectAddress', e);\n addresses.value = [];\n showModal.value = false;\n};\n\nwatch(() => showModal.value, () => {\n // When closing reset previous address results to avoid confusion when next lookup is perfromed\n if (!showModal.value) {\n addresses.value = [];\n }\n});\n\nconst computedLabel = computed(() => props.countryCode === CountryCode.Ireland ? 'Eircode' : 'Postcode');\n\nconst buttonOptions = computed(() => {\n return {\n icon: 'search',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: props.readOnly,\n onClick: async () => await onSearch()\n }\n});\n\n/** Callback function for postcode validation. This can't be handled by normal validation as it changes depending on country code */\nconst postcodeValidationCallback = () => validatePostcode(postcode.value, props.countryCode);\nconst requiredMessage = computed(() => `Postcode is required`);\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return postcode.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, _toDisplayString(props.label ? props.label : computedLabel.value), 1),\n _createVNode(AcquaintTextbox, {\n modelValue: postcode.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((postcode).value = $event)),\n \"field-validation\": __props.fieldValidation,\n \"custom-validation\": postcodeValidationCallback,\n readOnly: __props.readOnly,\n width: __props.width\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"addressLookup\",\n position: \"after\",\n options: buttonOptions.value\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (__props.fieldValidation.isRequired)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxCustomRule), {\n fieldValidation: __props.fieldValidation,\n \"validation-callback\": _unref(validationCallback),\n reevaluate: true\n }, null, 8, [\"fieldValidation\", \"validation-callback\"])\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"field-validation\", \"readOnly\", \"width\"])\n ]),\n _createVNode(FindPostcodeModal, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n onPostcodeSelected: onPostcodeSelected,\n data: addresses.value,\n onRowClick: rowClick,\n searching: searching.value\n }, null, 8, [\"modelValue\", \"data\", \"searching\"])\n ], 64))\n}\n}\n\n})","import script from \"./postcode-lookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./postcode-lookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./postcode-lookup.vue?vue&type=style&index=0&id=42376f48&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { PropType, computed, watch } from 'vue';\nimport { Address } from '@/types/generic/Address';\nimport postcodeLookup from './postcode/postcode-lookup.vue';\nimport { AddressLookupResult } from '@/types/address-lookup/AddressLookupResult';\nimport acquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport countrySelect from '@/components/ui/dropdowns/country-select.vue';\nimport { EditAddressValidation } from '@/types/validation/EditAddressValidation';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'edit-address',\n props: {\n /** \n * The address object containing the property details used with `v-model`.\n * This is required.\n * @type {Address}\n * @required\n */\n modelValue: {\n type: Object as PropType
,\n required: true\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n validation: {\n type: Object as PropType,\n required: true\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst addressDetails = computed({\n get: () => props.modelValue,\n set: (value: Address) => emit('update:modelValue', value)\n});\n\nconst selectAddress = (e: AddressLookupResult) => {\n addressDetails.value.propertyName = e.propertyName;\n addressDetails.value.street = e.street;\n addressDetails.value.locality = e.locality;\n addressDetails.value.town = e.town;\n addressDetails.value.region = e.region;\n};\n\n/* If, for example, a user enters in a UK address and then changes the country to, for example, Ireland, \n * the selected address is reset to avoid them saving an invalid address */\nwatch(() => addressDetails.value.countryCode, (value, prevValue) => {\n if (!addressDetails.value.postCode && value == prevValue) {\n return\n }\n\n addressDetails.value.postCode = \"\"\n addressDetails.value.propertyName = \"\";\n addressDetails.value.street = \"\";\n addressDetails.value.locality = \"\";\n addressDetails.value.town = \"\";\n addressDetails.value.region = \"\";\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(countrySelect, {\n modelValue: addressDetails.value.countryCode,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((addressDetails.value.countryCode) = $event)),\n readOnly: props.readOnly,\n width: __props.width\n }, null, 8, [\"modelValue\", \"readOnly\", \"width\"]),\n _createVNode(postcodeLookup, {\n modelValue: addressDetails.value.postCode,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((addressDetails.value.postCode) = $event)),\n countryCode: addressDetails.value.countryCode,\n \"field-validation\": __props.validation.postcode,\n \"read-only\": props.readOnly,\n width: __props.width,\n onSelectAddress: selectAddress,\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"countryCode\", \"field-validation\", \"read-only\", \"width\", \"validationGroup\"]),\n _createVNode(acquaintTextbox, {\n modelValue: addressDetails.value.propertyName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((addressDetails.value.propertyName) = $event)),\n readOnly: props.readOnly,\n fieldValidation: props.validation?.propertyName,\n width: __props.width,\n label: \"Property Name\",\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\", \"validationGroup\"]),\n _createVNode(acquaintTextbox, {\n modelValue: addressDetails.value.street,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((addressDetails.value.street) = $event)),\n readOnly: props.readOnly,\n fieldValidation: props.validation?.street,\n width: __props.width,\n label: \"Street\",\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\", \"validationGroup\"]),\n _createVNode(acquaintTextbox, {\n modelValue: addressDetails.value.locality,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((addressDetails.value.locality) = $event)),\n readOnly: props.readOnly,\n fieldValidation: props.validation?.locality,\n width: __props.width,\n label: \"Locality\",\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\", \"validationGroup\"]),\n _createVNode(acquaintTextbox, {\n modelValue: addressDetails.value.town,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((addressDetails.value.town) = $event)),\n readOnly: props.readOnly,\n fieldValidation: props.validation?.town,\n width: __props.width,\n label: \"Town\",\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\", \"validationGroup\"]),\n _createVNode(acquaintTextbox, {\n modelValue: addressDetails.value.region,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((addressDetails.value.region) = $event)),\n readOnly: props.readOnly,\n fieldValidation: props.validation?.region,\n width: __props.width,\n label: \"Region\",\n validationGroup: props.validationGroup\n }, null, 8, [\"modelValue\", \"readOnly\", \"fieldValidation\", \"width\", \"validationGroup\"])\n ], 64))\n}\n}\n\n})","import script from \"./edit-address.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./edit-address.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5d5d6a0e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dx-card card-container\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"title-container\"\n}\nconst _hoisted_3 = { class: \"title-icon-container\" }\nconst _hoisted_4 = { class: \"button-container\" }\nconst _hoisted_5 = { class: \"card-content-container\" }\n\nimport DxButton from 'devextreme-vue/button';\nimport { computed } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'info-card',\n props: {\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @default: ''\n */\n title: {\n type: String,\n default: ''\n },\n /** \n * Determines whether to show the edit button.\n * @type {boolean}\n * @default false\n */\n showEditButton: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to disable the edit button.\n * @type {boolean}\n * @default false\n */\n disableEditButton: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: '100%'\n },\n /** \n * Determines whether to apply edge to edge on content.\n * @type {boolean}\n * @default false\n */\n edgeToEdgeContent: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to display icon after title.\n * @type {boolean}\n * @default false\n */\n iconAfterTitle: {\n type: Boolean,\n default: false\n }\n},\n emits: ['editClicked'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"3d456312\": (__props.width),\n \"7e639f10\": (iconTitleContainerFlexDirection.value),\n \"5fd25e5a\": (contentMargin.value)\n}))\n\n\n\n\n\nconst contentMargin = computed(() => props.edgeToEdgeContent ? '0rem' : '0.4rem 0.75rem');\n\nconst iconTitleContainerFlexDirection = computed(() => props.iconAfterTitle ? 'row-reverse' : 'row');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.title)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"icon\"),\n _createElementVNode(\"h6\", null, _toDisplayString(__props.title), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (__props.showEditButton)\n ? (_openBlock(), _createBlock(_unref(DxButton), {\n key: 0,\n disabled: __props.disableEditButton,\n icon: \"fas fa-pencil-alt\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('editClicked')))\n }, null, 8, [\"disabled\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ]))\n}\n}\n\n})","import script from \"./info-card.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./info-card.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./info-card.vue?vue&type=style&index=0&id=5d5d6a0e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d5d6a0e\"]])\n\nexport default __exports__","\n\n","import { render } from \"./tab-panel.vue?vue&type=template&id=60eed17c&scoped=true\"\nconst script = {}\n\nimport \"./tab-panel.vue?vue&type=style&index=0&id=60eed17c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-60eed17c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { class: \"bedrooms-select-dropdown\" }\n\nimport { computed, ref, PropType } from 'vue';\nimport singleSelect from './single-select.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'bedrooms-select',\n props: {\n /** \n * The number value used with `v-model` to the component.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * A custom validation function for validating the input field.\n * @type {Function}\n * @optional\n */\n customValidation: {\n type: Function,\n required: false\n },\n\n /** \n * A custom error message to display when validation fails.\n * @type {string}\n * @default ''\n */\n customErrorMessage: {\n type: String,\n default: ''\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst value = computed({\n get: () => props.modelValue,\n set: (value: Number) => emit('update:modelValue', value)\n});\n\nconst numberArray = ref([]);\n\n/* Run this immediately to populate the number array. \n * Without this, the v-model on the single-select doesn't work correctly */\nfor (let i = 0; i <= 15; i++) {\n const description = i === 0 ? 'Studio/0' : i.toString();\n numberArray.value.push({ id: i, description: description });\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(props.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(singleSelect, {\n modelValue: value.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n dataSource: numberArray.value,\n width: props.width,\n readOnly: props.readOnly,\n customValidation: props.customValidation,\n invalidMessage: props.customErrorMessage,\n \"allow-zero-value\": true,\n showSearch: false\n }, null, 8, [\"modelValue\", \"dataSource\", \"width\", \"readOnly\", \"customValidation\", \"invalidMessage\"])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./bedrooms-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bedrooms-select.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"input-container\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"Country\", -1)\n\nimport singleSelect from '@/components/ui/dropdowns/single-select.vue';\nimport { onMounted, ref, inject, computed, PropType } from 'vue';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { Country } from '@/types/generic/Country';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'country-select',\n props: {\n modelValue:{\n type: Number, \n required: true\n },\n readOnly:{\n type: Boolean, \n default: false\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n }\n},\n emits: ['update:modelValue', 'valueChanged'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"3a6447fb\": (props.width)\n}))\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst dropdownDataSource = ref([]);\n\nonMounted(async () => {\n try {\n dropdownDataSource.value = await acquaintApiClient.httpGet(`app/system/countries`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n});\n\n\n\n\n\nconst countryCode = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst valueChanged = (description:string)=>{\n emit('valueChanged', description);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createVNode(singleSelect, {\n readOnly: props.readOnly,\n modelValue: countryCode.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((countryCode).value = $event)),\n dataSource: dropdownDataSource.value,\n onValueChanged: valueChanged,\n width: __props.width\n }, null, 8, [\"readOnly\", \"modelValue\", \"dataSource\", \"width\"])\n ]))\n}\n}\n\n})","import script from \"./country-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./country-select.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./country-select.vue?vue&type=style&index=0&id=7f5c7dd1&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { watch, ref, computed, onMounted, PropType } from 'vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport SingleSelect from './single-select.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'number-dropdown',\n props: {\n /** \n * The numeric value bound to `v-model`.\n * Represents the selected or inputted value within the component.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n\n /** \n * The unique identifier or sequence number for the item.\n * Typically used for ordering or referencing specific elements.\n * @type {number}\n * @required\n */\n itemNumber: {\n type: Number,\n required: true\n },\n\n /** \n * An additional string appended to the item label.\n * Can be used to provide extra context or formatting.\n * @type {string}\n * @default ''\n */\n itemLabelExtension: {\n type: String,\n default: ''\n },\n\n /** \n * The label displayed for the control.\n * Used as a descriptive text for the input field.\n * @type {string}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n\n /** \n * Determines whether the control is read-only.\n * If `true`, user input is disabled.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n\n /** \n * Determines whether the control allows zero as a valid value.\n * If `false`, zero may be restricted as input.\n * @type {boolean}\n * @default true\n */\n allowZeroValue: {\n type: Boolean,\n default: true\n },\n\n /** \n * A custom initial value for the input field.\n * Typically used when a specific first value needs to be prefilled.\n * @type {string}\n * @default ''\n */\n customFirstValue: {\n type: String,\n default: ''\n },\n\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * Controls the display size of the input component.\n * @type {FieldSize}\n * @default FieldSize.Large\n */\n width: {\n type: String as PropType,\n default: FieldSize.Large\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Number} value - The new value to be updated in the model.\n */\n 'update:modelValue',\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst dataSource = ref([]);\n\nonMounted(() => {\n populateDataSource();\n});\n\nconst populateDataSource = () => {\n dataSource.value = [];\n\n for (let i = 0; i <= props.itemNumber; i++) {\n dataSource.value.push({ id: i, description: `${i} ${props.itemLabelExtension}` });\n }\n\n if (!props.allowZeroValue) {\n dataSource.value.shift();\n }\n\n if (props.customFirstValue && props.allowZeroValue) {\n dataSource.value[0].description = props.customFirstValue;\n }\n}\n\nwatch(() => props.itemNumber, () => {\n populateDataSource();\n});\n\nconst selectedNumber = computed({\n get: () => props.modelValue,\n set: (value: Number) => emit('update:modelValue', value)\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (dataSource.value.length > 0)\n ? (_openBlock(), _createBlock(SingleSelect, {\n key: 0,\n modelValue: selectedNumber.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedNumber).value = $event)),\n \"data-source\": dataSource.value,\n width: props.width,\n label: props.label,\n readOnly: props.readOnly,\n \"allow-zero-value\": props.allowZeroValue\n }, null, 8, [\"modelValue\", \"data-source\", \"width\", \"label\", \"readOnly\", \"allow-zero-value\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./number-dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./number-dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-713463ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"single-select-container\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_3 = { class: \"dropdown-container\" }\n\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { DxSelectBox } from 'devextreme-vue/select-box';\nimport { DxCustomRule } from 'devextreme-vue/validator';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { PropType, computed, ref, watch } from 'vue';\nimport { DxValidator } from 'devextreme-vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'single-select',\n props: {\n /** \n * The number value used with `v-model` to the component.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n dataSource: {\n type: Array as PropType,\n required: true\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether show Clear button.\n * @type {boolean}\n * @default false\n */\n showClearButton: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the specific input control is required field.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * Determines whether to show search textbox.\n * @type {boolean}\n * @default false\n */\n showSearch: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the specific control allow zero value.\n * @type {boolean}\n * @default false\n */\n allowZeroValue: {\n type: Boolean,\n default: false\n },\n /** \n * A custom validation function for validating the input field.\n * @type {Function}\n * @optional\n */\n customValidation: {\n type: Function,\n required: false\n },\n invalidMessage: {\n type: String,\n required: false\n },\n bottomMargin: {\n type: String,\n default: '0.5rem'\n },\n /** \n * Determines whether allow reset valid.\n * @type {boolean}\n * @default false\n */\n resetValid: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'iconClicked', 'valueChanged'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"7c0ef2bb\": (props.width),\n \"3c9a2d24\": (props.bottomMargin)\n}))\n\n\n\n\n\nconst selectedValueID = computed({\n get: () => props.modelValue,\n set: (value: Number) => emit('update:modelValue', value)\n});\n\nconst dropdownOpened = ref(false);\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\nwatch(() => props.resetValid, () => {\n if (props.resetValid) {\n isValid.value = true;\n return\n }\n});\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return selectedValueID.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n if (props.resetValid) {\n isValid.value = true;\n return\n }\n\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n\n },\n validationRequestsCallbacks: [],\n};\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\nconst inputEntered = () => {\n return props.allowZeroValue ? selectedValueID.value >= 0 : selectedValueID.value > 0;\n};\n\nconst onValueChanged = (e: any) => {\n if (e.value === null) {\n selectedValueID.value = -1;\n }\n};\n\nwatch(()=>selectedValueID.value, ()=>{\n const selectedIdDescriptionPair = props.dataSource.find((item)=>{return item.id == selectedValueID.value});\n emit('valueChanged', selectedIdDescriptionPair?.description ?? '');\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass({ asteriskVisible: props.requiredInput })\n }, _toDisplayString(__props.label), 3)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(DxSelectBox), {\n value: selectedValueID.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((selectedValueID).value = $event)),\n opened: dropdownOpened.value,\n \"onUpdate:opened\": _cache[1] || (_cache[1] = ($event: any) => ((dropdownOpened).value = $event)),\n \"data-source\": __props.dataSource,\n \"value-expr\": \"id\",\n readOnly: props.readOnly,\n \"display-expr\": \"description\",\n width: __props.width,\n isValid: isValid.value,\n hint: validationErrors.value,\n showClearButton: __props.showClearButton,\n onValueChanged: onValueChanged,\n \"search-enabled\": __props.showSearch,\n \"search-expr\": \"description\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxCustomRule), {\n reevaluate: true,\n message: requiredMessage.value,\n validationCallback: inputEntered\n }, null, 8, [\"message\"]),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 0,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\", \"opened\", \"data-source\", \"readOnly\", \"width\", \"isValid\", \"hint\", \"showClearButton\", \"search-enabled\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./single-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./single-select.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./single-select.vue?vue&type=style&index=0&id=713463ba&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-713463ba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, renderList as _renderList, createSlots as _createSlots, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"container\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"grid-loading-pane\"\n}\n\nimport { PropType, ref, watch, computed, useSlots } from 'vue';\nimport DxDataGrid, { DxFilterRow, DxScrolling, DxSearchPanel, DxToolbar, DxItem, DxRowDragging } from \"devextreme-vue/data-grid\";\nimport DxLoadIndicator from 'devextreme-vue/load-indicator';\nimport { Workbook } from 'exceljs';\nimport { exportDataGrid } from 'devextreme/excel_exporter';\nimport { saveAs } from 'file-saver-es';\nimport { KeyDownEvent, Column } from 'devextreme/ui/data_grid';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'grid-base',\n props: {\n dataSource: {\n type: Array as PropType,\n required: false\n },\n idColumnName: {\n type: String,\n default: 'id'\n },\n preSelectedId: {\n type: Number,\n default: -1\n },\n /** \n * Determines whether the component status is loading.\n * @type {boolean}\n * @default false\n */\n loading: {\n type: Boolean,\n default: false\n },\n customColumnSlots: {\n type: Array as PropType\n },\n name: {\n type: String,\n default: 'DataGrid'\n },\n /** \n * Determines whether to run export grid.\n * @type {boolean}\n * @default true\n */\n runExport: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether the word wrap is enabled.\n * @type {boolean}\n * @default false\n */\n wordWrapEnabled: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show column filters.\n * @type {boolean}\n * @default false\n */\n showColumnFilters: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show search panel.\n * @type {boolean}\n * @default true\n */\n showSearchPanel: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether to show column headers.\n * @type {boolean}\n * @default true\n */\n showColumnHeaders: {\n type: Boolean,\n default: true\n },\n noDataText: {\n type: String,\n default: 'No records found'\n },\n /** \n * Determines whether key press detection fearture is enabled.\n * @type {boolean}\n * @default false\n */\n enableKeyPressDetection: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the reordering is allowed.\n * @type {boolean}\n * @default false\n */\n allowReordering: {\n type: Boolean,\n default: false\n }\n},\n emits: ['rowClick', 'rowSelected', 'update:runExport', 'onRowReorder', 'adaptiveRowSelection', 'keyPressed'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst rowToSelectId = ref();\n\nconst selectedIdHasTruthyValue = computed(() => { return typeof rowToSelectId.value == 'number' && rowToSelectId.value > -1 || typeof rowToSelectId.value == 'string' && rowToSelectId.value != '' });\n\nwatch(() => props.loading, () => {\n rowToSelectId.value = undefined;\n});\n\nwatch(() => rowToSelectId.value, async () => {\n if (selectedIdHasTruthyValue.value || !grid.value) {\n const selection = await grid.value.instance.selectRows(rowToSelectId.value, false);\n selectedRow.value = selection[0];\n emit('rowSelected', selectedRow.value);\n }\n});\n\n/** Handles the row double click event */\nconst onRowDoubleClick = (e: any) => emit('rowClick', e.data);\n\nconst getCustomColumnDataSlotName = (slotName: string) => `${slotName}Data`;\n\nconst selectedRow = ref();\n\n/** Handles the row selection changed event */\nconst onSelectionChanged = (e: any) => {\n if (selectedIdHasTruthyValue.value) {\n return;\n }\n // Retrieve row details for action button slot including the index of the Row\n selectedRow.value = e.selectedRowsData[0];\n // As we don't want to just get the index of the visible rows on the screen\n // We should use get Global Row Index By Key to retrieve the global index of the row\n e.component.getController('data').getGlobalRowIndexByKey(e.selectedRowKeys[0]).done((rowIndex: any) => emit('rowSelected', selectedRow.value, rowIndex))\n};\n\nconst focusedRowId = computed(() => { return selectedIdHasTruthyValue.value ? rowToSelectId.value : props.preSelectedId })\n\nconst grid = ref>(null);\n\n/** File name for excel export - this includes current date/time so users can download the same grid multiple times */\nconst excelExportFileName = () => `${props.name}-${new Date().toISOString()}.xlsx`;\n\n/* When parent component sets runExport prop to true, export the grid to excel\n * This overcomes the issue of having a menu external to the grid*/\nwatch(() => props.runExport, async () => {\n if (!props.runExport) {\n return;\n }\n\n await exportGridToExcel();\n});\n\n/** Exports the data displayed in the grid to an XLSX file */\nconst exportGridToExcel = async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Data');\n\n await exportDataGrid({\n component: grid.value.instance,\n worksheet: worksheet,\n encodeExecutableContent: true\n });\n\n const buffer = await workbook.xlsx.writeBuffer();\n\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), excelExportFileName());\n\n // reset v-model property so user can click the export menu item again\n runExportToExcel.value = false\n}\n\nconst runExportToExcel = computed({\n get: () => props.runExport,\n set: (value: boolean) => emit('update:runExport', value)\n});\n\nconst selectPreviousRow = (e: any) => {\n if (props.preSelectedId) {\n e.component.selectRows(props.preSelectedId, false)\n }\n};\n\n// showHiddenInformationClick gets called when the user clicks on the ... button to reveal a row's hidden data\n// The function finds the row out of all the visible rows and emits its data \nconst showHiddenInformationClick = (e: any) => {\n const visibleRows = grid.value.instance.getVisibleRows();\n const selectedRow = visibleRows.find((row: any) => {\n return row.rowType == \"detailAdaptive\"\n });\n if (selectedRow) {\n emit('adaptiveRowSelection', selectedRow.data)\n }\n e.formOptions.colCount = 1;\n};\n\n/** Determines the position of the search panel in the grid toolbar */\nconst searchPosition = computed(() => {\n return isHeaderContentSlotUsed() ? 'before' : 'after';\n});\n\n/** Checks whether the Header Content slot has been used */\nconst isHeaderContentSlotUsed = () => {\n const slots = useSlots();\n return slots['header-content']\n}\n\n/** Determines whether the grid toolbar should be shown */\nconst showToolbar = computed(() => isHeaderContentSlotUsed() || props.showSearchPanel);\n\nconst onKeyDown = async (e: KeyDownEvent) => {\n if (!props.enableKeyPressDetection || !props.dataSource || props.dataSource.length == 0 || !grid.value || !e.event) {\n return;\n }\n const firstVisibleColumn = getFirstVisibleTextColumn();\n\n if (firstVisibleColumn?.dataField == undefined) {\n return;\n }\n\n const foundRecord = getFirstRecordStartingWithPressedKey(e.event.key, firstVisibleColumn.dataField);\n\n if (!foundRecord) {\n return;\n }\n\n rowToSelectId.value = foundRecord[props.idColumnName];\n}\n\nconst getFirstVisibleTextColumn = () => {\n // We need to programatically fetch the columns then find the first column that is visible. We take that column's data field and use it\n // to find the first row that contains the specified key as it's first letter.\n const displayedColumns: Column[] = grid.value.instance.getVisibleColumns();\n return displayedColumns.find(column => column.visible && column.dataType == 'string');\n}\n\nconst getFirstRecordStartingWithPressedKey = (key: string, columnName: string) => {\n return props.dataSource?.find(record => record[columnName].charAt(0).toUpperCase() == key.toUpperCase());\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (!__props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(DxDataGrid), {\n ref_key: \"grid\",\n ref: grid,\n class: \"dx-card wide-card\",\n \"data-source\": __props.dataSource,\n \"key-expr\": __props.idColumnName,\n \"focused-row-key\": focusedRowId.value,\n \"show-borders\": false,\n \"focused-row-enabled\": true,\n \"column-auto-width\": false,\n \"column-hiding-enabled\": true,\n style: {\"height\":\"100%\"},\n selection: { mode: 'single' },\n onRowDblClick: onRowDoubleClick,\n onSelectionChanged: onSelectionChanged,\n hoverStateEnabled: true,\n wordWrapEnabled: __props.wordWrapEnabled,\n onContentReady: selectPreviousRow,\n onAdaptiveDetailRowPreparing: showHiddenInformationClick,\n \"show-column-headers\": __props.showColumnHeaders,\n \"no-data-text\": __props.noDataText,\n onKeyDown: onKeyDown\n }, _createSlots({\n \"header-content\": _withCtx(() => [\n _renderSlot(_ctx.$slots, \"header-content\")\n ]),\n default: _withCtx(() => [\n _createVNode(_unref(DxScrolling), { mode: \"virtual\" }),\n _createVNode(_unref(DxFilterRow), { visible: __props.showColumnFilters }, null, 8, [\"visible\"]),\n (showToolbar.value)\n ? (_openBlock(), _createBlock(_unref(DxToolbar), { key: 0 }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), {\n location: searchPosition.value,\n name: \"searchPanel\"\n }, null, 8, [\"location\"]),\n _createVNode(_unref(DxItem), {\n location: \"after\",\n template: \"header-content\"\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxRowDragging), {\n \"allow-reordering\": props.allowReordering,\n \"show-drag-icons\": false,\n \"on-reorder\": (e) => emit('onRowReorder', e)\n }, null, 8, [\"allow-reordering\", \"on-reorder\"]),\n _createVNode(_unref(DxSearchPanel), { visible: __props.showSearchPanel }, null, 8, [\"visible\"]),\n _renderSlot(_ctx.$slots, \"columns\"),\n _renderSlot(_ctx.$slots, \"action-button\", { row: selectedRow.value })\n ]),\n _: 2\n }, [\n _renderList(__props.customColumnSlots, (slot, index) => {\n return {\n name: slot,\n fn: _withCtx(({ data }) => [\n _renderSlot(_ctx.$slots, getCustomColumnDataSlotName(slot), {\n data: data.row.data\n })\n ])\n }\n })\n ]), 1032, [\"data-source\", \"key-expr\", \"focused-row-key\", \"wordWrapEnabled\", \"show-column-headers\", \"no-data-text\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_unref(DxLoadIndicator), {\n height: 50,\n width: 50\n })\n ]))\n}\n}\n\n})","import script from \"./grid-base.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./grid-base.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./grid-base.vue?vue&type=style&index=0&id=604c3ad8&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-33252e3c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"filter-container\" }\nconst _hoisted_2 = { class: \"row-count\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fas fa-list\" }, null, -1))\nconst _hoisted_4 = {\n key: 0,\n class: \"info\"\n}\nconst _hoisted_5 = {\n key: 0,\n class: \"filter\"\n}\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"small-screen-list\"\n}\nconst _hoisted_8 = {\n key: 0,\n class: \"filter\"\n}\nconst _hoisted_9 = [\"id\"]\nconst _hoisted_10 = { key: 0 }\nconst _hoisted_11 = { class: \"button-container\" }\nconst _hoisted_12 = { class: \"tooltip\" }\n\nimport { PropType, computed, ref } from 'vue';\nimport { GridFilter } from '@/types/ui/GridFilter';\nimport DxButton from 'devextreme-vue/button';\nimport GridMenu from './grid-menu.vue';\nimport { ContextMenuItem } from '../../../types/ui/menus/ContextMenuItem';\nimport { DxTooltip } from 'devextreme-vue/tooltip';\nimport { ListFilterKeys } from '@/enums/ListFilterKeys';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'grid-filter-summary',\n props: {\n /** \n * Filters applied to the filter list.\n * @type {GridFilter} - An object defining the filter criteria. \n * @required\n */\n filters: {\n type: Array as PropType | undefined,\n required: true,\n },\n /** \n * Determines whether the filters should be displayed.\n * @type {boolean}\n * @default false\n */\n displayFilters: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether the filters should be disabled.\n * @type {boolean}\n * @default false\n */\n disableFilters: {\n type: Boolean,\n default: false\n },\n /** \n * The number of rows displayed in the component.\n * @type {number}\n * @required\n */\n rowCount: {\n type: Number,\n required: true\n },\n menuItems: {\n type: Array as PropType\n },\n /** \n * Determines whether to show generic menu items.\n * @type {boolean}\n * @default true\n */\n showGenericMenuItems: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether to show export item.\n * @type {boolean}\n * @default true\n */\n showExportItem: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether to display 'New' button.\n * @type {boolean}\n * @default false\n */\n displayNewButton: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the 'New' button should be disabled.\n * @type {boolean}\n * @default false\n */\n disableNewButton: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the dropdown menu button should be disabled.\n * @type {boolean}\n * @default false\n */\n dropdownMenuDisable: {\n type: Boolean,\n required: true\n },\n newButtonText: {\n type: String,\n default: ''\n },\n /** \n * Determines whether to show menu button.\n * @type {boolean}\n * @default false\n */\n showMenu: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether the header should be dark.\n * @type {boolean}\n * @default false\n */\n darkHeader: {\n type: Boolean,\n default: true\n },\n gridMenuId: {\n type: String,\n default: 'grid-menu-button'\n },\n myPosition: {\n type: String,\n default: 'top right'\n },\n atPosition: {\n type: String,\n default: 'bottom right'\n },\n /** \n * Determines whether to show filter column.\n * @type {boolean}\n * @default false\n */\n showFilterColumn: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Emitted when filter item is clicked\n * @event filterClick\n */\n 'filterClick',\n /** \n * Emitted when a menu item is clicked, passing the clicked item's key.\n * @event menuItemClick\n * @param {string} key - The key of the clicked menu item.\n */\n 'menuItemClick',\n\n /** \n * Emitted when the \"new\" button is clicked to trigger a new action or record.\n * @event newButtonClicked\n */\n 'newButtonClicked'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"6d6ffcba\": (headerBackgroundColour.value),\n \"7c047122\": (headerTextColour.value),\n \"b7fbe54c\": (buttonBorder.value)\n}))\n\n\n\nconst enableColumnIsShown = ref(false);\n\n\n// const filterColumnIsShown = ref(false);\n\n/** Handles the filter button click event */\nconst onFilterClick = () => emit('filterClick');\n\n/** Handles the menu item click event */\nconst onMenuItemClick = (key: string) => {\n if (key == ListFilterKeys.Enable || key == ListFilterKeys.Disable) {\n enableColumnIsShown.value = !enableColumnIsShown.value;\n }\n\n // The enable column is displayed when the following two options are selected but only when it's already being hidden.\n if ((!enableColumnIsShown.value && key == ListFilterKeys.UnselectAllRows) || (!enableColumnIsShown.value && key == ListFilterKeys.SelectAllRows)) {\n enableColumnIsShown.value = true;\n }\n\n emit('menuItemClick', key)\n};\n\n/** Checks whether all prop filters are empty */\nconst areAllFiltersEmpty = computed(() => {\n return props.filters.every(filter => !filter.values || filter.values.length === 0)\n});\n\nconst newButtonClick = () => {\n emit('newButtonClicked');\n};\n\nconst menuItems = computed(() => {\n if (!props.showMenu) {\n return [];\n }\n\n if (!props.showGenericMenuItems) {\n return props.menuItems;\n }\n\n const compuputedItems: ContextMenuItem[] = [{\n text: 'Refresh',\n key: 'refresh',\n icon: 'fas fa-redo'\n }];\n\n if (props.showExportItem) {\n compuputedItems.push({\n text: 'Export to Excel',\n key: 'export',\n icon: 'fas fa-download'\n });\n }\n\n if (props.showFilterColumn) {\n compuputedItems.push({\n text: 'Filter Rows',\n key: ListFilterKeys.FilterRows,\n icon: 'fas fa-regular fa-square-check',\n disabled: false,\n items: [\n {\n text: enableColumnIsShown.value ? 'Disable' : 'Enable',\n key: enableColumnIsShown.value ? ListFilterKeys.Disable : ListFilterKeys.Enable,\n icon: enableColumnIsShown.value ? 'fas fa-regular fa-xmark' : 'fas fa-regular fa-check',\n disabled: false\n }\n ]\n });\n }\n\n if (enableColumnIsShown.value) {\n const index = compuputedItems.findIndex((item) => { return item.key == ListFilterKeys.FilterRows });\n compuputedItems[index].items?.push(\n {\n text: 'Select All',\n key: ListFilterKeys.SelectAllRows,\n icon: 'fas fa-regular fa-square-check',\n disabled: false\n },\n {\n text: 'Unselect All',\n key: ListFilterKeys.UnselectAllRows,\n icon: 'fas fa-regular fa-square',\n disabled: false\n }\n );\n }\n\n if (props.showFilterColumn && !enableColumnIsShown.value) {\n const index = compuputedItems.findIndex((item) => { return item.key == ListFilterKeys.FilterRows });\n if (index) {\n compuputedItems[index].items = compuputedItems[index].items?.splice(0, 2);\n }\n }\n\n return props.menuItems ? props.menuItems.concat(compuputedItems) : compuputedItems;\n});\n\nconst screenWidth = ref(screen.width);\n\nconst headerBackgroundColour = computed(() => props.darkHeader ? '#212d53' : 'white');\nconst headerTextColour = computed(() => props.darkHeader ? 'white' : '#212d53')\nconst buttonBorder = computed(() => props.darkHeader ? 'unset' : '1px solid #e0e0e0');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(props.rowCount), 1)\n ]),\n (screenWidth.value > 750)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.filters, (filter, index) => {\n return (_openBlock(), _createElementBlock(\"span\", { key: index }, [\n (filter.values?.length > 0)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString(filter.title) + \" : \" + _toDisplayString(filter.values.map(item => item.description).join(', ')), 1))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n (areAllFiltersEmpty.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \"All\"))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.filters, (filter, index) => {\n return (_openBlock(), _createElementBlock(\"span\", { key: index }, [\n (filter.values?.length > 0)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_8, [\n _createTextVNode(_toDisplayString(filter.title) + \" \", 1),\n _createElementVNode(\"i\", {\n class: \"fas fa-info-circle info-icon\",\n id: filter.title.replace(' ', '')\n }, null, 8, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n (areAllFiltersEmpty.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \"All\"))\n : _createCommentVNode(\"\", true)\n ])),\n _createElementVNode(\"div\", _hoisted_11, [\n _renderSlot(_ctx.$slots, \"custom-buttons\"),\n (props.displayNewButton)\n ? (_openBlock(), _createBlock(_unref(DxButton), {\n key: 0,\n icon: \"fas fa-plus\",\n onClick: newButtonClick,\n disabled: props.disableNewButton,\n text: __props.newButtonText\n }, null, 8, [\"disabled\", \"text\"]))\n : _createCommentVNode(\"\", true),\n (menuItems.value && menuItems.value.length > 0)\n ? (_openBlock(), _createBlock(GridMenu, {\n key: 1,\n \"menu-items\": menuItems.value,\n onItemClicked: onMenuItemClick,\n disabled: props.dropdownMenuDisable,\n class: \"grid-menu-button\",\n id: props.gridMenuId,\n atPosition: props.atPosition,\n myPosition: props.myPosition\n }, null, 8, [\"menu-items\", \"disabled\", \"id\", \"atPosition\", \"myPosition\"]))\n : _createCommentVNode(\"\", true),\n (props.displayFilters)\n ? (_openBlock(), _createBlock(_unref(DxButton), {\n key: 2,\n icon: \"fas fa-filter\",\n onClick: onFilterClick,\n disabled: props.disableFilters\n }, null, 8, [\"disabled\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.filters, (filter, index) => {\n return (_openBlock(), _createBlock(_unref(DxTooltip), {\n key: index,\n target: `#${filter.title.replace(' ', '')}`,\n \"show-event\": { name: 'mouseenter click' },\n \"hide-event\": \"mouseleave\",\n width: \"275px\",\n \"hide-on-outside-click\": true\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(filter.values, (value, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(value.description), 1))\n }), 128))\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"target\"]))\n }), 128))\n ], 64))\n}\n}\n\n})","import script from \"./grid-filter-summary.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./grid-filter-summary.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./grid-filter-summary.vue?vue&type=style&index=0&id=33252e3c&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-33252e3c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1e24965d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"filters\" }\n\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { computed } from 'vue';\nimport ModalBase from '../modals/modal-base.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'grid-filters-base',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @required\n */\n title: {\n type: String,\n required: true\n }\n},\n emits: ['update:modelValue', 'filtersApplied', 'clearFilters'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\n/** Handles the Clear button click event */\nconst clearFilters = () => {\n emit('clearFilters');\n}\n\nconst applyFilters = () => {\n showPopup.value = false;\n emit('filtersApplied');\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showPopup.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showPopup).value = $event)),\n title: __props.title\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"filters\")\n ])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Clear', onClick: () => clearFilters() }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Apply', onClick: () => applyFilters() }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Close', onClick: () => showPopup.value = false }\n }, null, 8, [\"options\"])\n ]),\n _: 3\n }, 8, [\"modelValue\", \"title\"]))\n}\n}\n\n})","import script from \"./grid-filters-base.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./grid-filters-base.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./grid-filters-base.vue?vue&type=style&index=0&id=1e24965d&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1e24965d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-409e9514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\"]\n\nimport { PropType, computed, ref } from 'vue';\nimport { ContextMenuItem } from '../../../types/ui/menus/ContextMenuItem'\nimport { DxContextMenu } from 'devextreme-vue/context-menu';\nimport { DxButton } from 'devextreme-vue/button';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'grid-menu',\n props: {\n /** \n * The menu items to be displayed in the dropdown menu.\n * @type {ContextMenuItem[]}\n * @default {[]}\n */\n menuItems: {\n type: Array as PropType,\n required: true\n },\n /** \n * Determines whether the item should be disabled.\n * @type {boolean}\n * @default false\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /** \n * The unique identifier for the current item.\n * @type {string}\n * @default 'grid-menu-button'\n */\n id: {\n type: String,\n default: 'grid-menu-button'\n },\n buttonIcon: {\n type: String,\n default: 'fas fa-bars'\n },\n buttonText: {\n type: String,\n default: ''\n },\n myPosition: {\n type: String,\n default: 'top right'\n },\n atPosition: {\n type: String,\n default: 'bottom right'\n }\n},\n emits: ['itemClicked'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst menuPosition = computed(() => {\n const isMobile = window.innerWidth < 768;\n return {\n my: isMobile ? 'left top' : props.myPosition,\n at: isMobile ? 'left bottom' : props.atPosition,\n collision: 'fit flip',\n };\n});\n\n\n\nconst showMenu = ref(false);\n\n/** Handles the menu button click event to show the context menu */\nconst onMenuButtonClick = () => showMenu.value = !showMenu.value;\n\n/** Handles the menu item click event */\nconst onMenuItemClick = (e: any) => {\n emit('itemClicked', e.itemData.key);\n}\n\nconst buttonClass = computed(() => !props.buttonIcon && props.buttonText ? 'text-button' : '');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", { id: __props.id }, [\n _createVNode(_unref(DxButton), {\n class: _normalizeClass(buttonClass.value),\n icon: __props.buttonIcon,\n onClick: onMenuButtonClick,\n disabled: __props.disabled,\n text: __props.buttonText\n }, null, 8, [\"class\", \"icon\", \"disabled\", \"text\"]),\n _createVNode(_unref(DxContextMenu), {\n visible: showMenu.value,\n \"onUpdate:visible\": _cache[0] || (_cache[0] = ($event: any) => ((showMenu).value = $event)),\n \"data-source\": __props.menuItems,\n target: `#${__props.id}`,\n position: menuPosition.value,\n onItemClick: onMenuItemClick\n }, null, 8, [\"visible\", \"data-source\", \"target\", \"position\"])\n ], 8, _hoisted_1))\n}\n}\n\n})","import script from \"./grid-menu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./grid-menu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./grid-menu.vue?vue&type=style&index=0&id=409e9514&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-409e9514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-438a29bf\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"datebox\" }\nconst _hoisted_2 = { class: \"datebox-container\" }\n\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport { PropType, computed, ref } from 'vue'\nimport { DxDateBox } from 'devextreme-vue/date-box';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { validationCallback } from '@/utils/validation/FieldValidator';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxCustomRule, DxRequiredRule } from 'devextreme-vue/validator';\nimport { formatCurrentDate } from 'bright-logic-core/src/format';\nimport moment from 'moment';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'acquaint-date-box',\n props: {\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n fieldValidation: {\n type: Object as PropType,\n required: true\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n customValidation: {\n type: Function,\n required: false\n },\n invalidMessage: {\n type: String,\n required: false\n },\n maxDate: {\n type: Date,\n default: new Date(new Date().setFullYear(new Date().getFullYear() + 50))\n },\n minDate: {\n type: Date,\n default: new Date('1900-01-01')\n },\n /** \n * Determines whether the item should be disabled.\n * @type {boolean}\n * @default false\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the time is included.\n * @type {boolean}\n * @default false\n */\n includeTime: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the specific input control is required.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * Determines whether to show clear button.\n * @type {boolean}\n * @default false\n */\n showClearButton: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the specific form or item is valid.\n * @type {boolean}\n * @default false\n */\n isValid: {\n type: Boolean,\n default: true\n }\n},\n emits: ['update:modelValue', 'valueSelected'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst dateValue = computed({\n get: () => props.modelValue == null ? '' : props.modelValue,\n set: (value: string) => emit('update:modelValue', value == null ? '' : value)\n});\n\n/** Emits the value changed DxDateBox event to allow parent component to perform custom logic */\nconst onValueChanged = (e: any) => {\n if (e.value == null && props.showClearButton) {\n dateValue.value = moment('01-01-1900').format('yyyy/MM/DD')\n }\n emit('valueSelected', e)\n}\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return dateValue.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n if (!props.isValid) {\n isValid.value = props.isValid;\n }\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\n/** Handles custom max date validation */\nconst maxDateValidation = () => {\n // Allow undefined/null dates\n if (!dateValue.value) {\n return true;\n }\n\n moment.locale('en-GB');\n return props.maxDate ? moment(dateValue.value).isSameOrBefore(moment(props.maxDate)) : true;\n}\n\n/** Handles custom min date validation */\nconst minDateValidation = () => {\n // Allow undefined/null dates\n if (!dateValue.value) {\n return props.minDate.toUTCString() === new Date('1900-01-01').toUTCString();\n }\n\n moment.locale('en-GB');\n return props.minDate ? moment(dateValue.value).isSameOrAfter(moment(props.minDate)) : true;\n}\n\nconst dateBoxType = computed(() => props.includeTime ? 'datetime' : 'date');\nconst displayFormat = computed(() => props.includeTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy')\n\nconst dateTimeDropDownOptions = {\n onHiding: () => {\n let button: HTMLElement = document.querySelector(\".dx-popup-done.dx-button\") as HTMLElement;\n if (!button) {\n return\n }\n button.click();\n }\n}\n\nconst dateOnlyDropDownOptions = {\n toolbarItems: [\n {\n widget: 'dxButton',\n toolbar: 'bottom',\n location: 'before',\n options: {\n text: 'Today',\n onClick: () => onTodayClick(),\n disabled: props.maxDate < new Date(formatCurrentDate()),\n }\n }\n ]\n}\n\nconst dropDownOptions = computed(() => props.includeTime ? dateTimeDropDownOptions : dateOnlyDropDownOptions)\n\nconst onTodayClick = () => {\n dateValue.value = formatCurrentDate();\n\n // To allow users to select time, only close if the component is in date mode\n if (!props.includeTime) {\n opened.value = false;\n }\n}\n\nconst opened = ref(false);\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\nconst serializationFormat = computed(() => props.includeTime ? 'yyyy-MM-ddTHH:mm' : 'yyyy-MM-dd');\n\nconst onOpened = (e: any) => {\n if (screen.width > 1300) {\n return;\n }\n\n // To stop the top of the calendar being cut off on small devices, reposition it to the center of the screen\n e.component._popup.option(\"position\", {\n my: \"center\",\n at: \"center\",\n of: window\n });\n};\n\n// For small devices, don't set focus on input field when clicking on calendar button\nconst focusStateEnabled = computed(() => screen.width > 599.99);\n\n// To overcome focus issues on iOS devices, the date box should be set to read only whilst the calendar is displayed\nconst dateBoxReadonly = computed(() => props.readOnly || opened.value);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"label\", { asteriskVisible: props.requiredInput || props.fieldValidation.isRequired }])\n }, _toDisplayString(__props.label), 3))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxDateBox), {\n \"display-format\": displayFormat.value,\n value: dateValue.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((dateValue).value = $event)),\n width: __props.width,\n readOnly: dateBoxReadonly.value,\n hint: validationErrors.value,\n min: __props.minDate,\n max: __props.maxDate,\n onValueChanged: onValueChanged,\n isValid: isValid.value,\n \"onUpdate:isValid\": _cache[1] || (_cache[1] = ($event: any) => ((isValid).value = $event)),\n disabled: __props.disabled,\n \"date-out-of-range-message\": \"\",\n \"use-mask-behavior\": true,\n type: dateBoxType.value,\n dropDownOptions: dropDownOptions.value,\n \"picker-type\": \"calendar\",\n \"validation-message-mode\": \"always\",\n opened: opened.value,\n \"onUpdate:opened\": _cache[2] || (_cache[2] = ($event: any) => ((opened).value = $event)),\n dateSerializationFormat: serializationFormat.value,\n placeholder: \"DD/MM/YYYY\",\n adaptivityEnabled: true,\n onOpened: onOpened,\n showClearButton: props.showClearButton,\n \"focus-state-enabled\": focusStateEnabled.value\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n ((props.fieldValidation.isRequired || props.requiredInput == true) && !props.disabled)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 1,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxCustomRule), {\n reevaluate: true,\n validationCallback: minDateValidation\n }),\n _createVNode(_unref(DxCustomRule), {\n reevaluate: true,\n validationCallback: maxDateValidation\n }),\n _createVNode(_unref(DxCustomRule), {\n fieldValidation: __props.fieldValidation,\n \"validation-callback\": _unref(validationCallback),\n reevaluate: true\n }, null, 8, [\"fieldValidation\", \"validation-callback\"])\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"display-format\", \"value\", \"width\", \"readOnly\", \"hint\", \"min\", \"max\", \"isValid\", \"disabled\", \"type\", \"dropDownOptions\", \"opened\", \"dateSerializationFormat\", \"showClearButton\", \"focus-state-enabled\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./acquaint-date-box.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./acquaint-date-box.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./acquaint-date-box.vue?vue&type=style&index=0&id=438a29bf&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-438a29bf\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3aaa5f21\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_2 = { class: \"textbox-container\" }\n\nimport { PropType } from 'vue';\nimport { DxButton, DxTextBox } from 'devextreme-vue/text-box';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'acquaint-info-box',\n props: {\n text: {\n type: String,\n required: true\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n icon: {\n type: String,\n default: ''\n }\n},\n emits: ['iconClicked'],\n setup(__props, { emit }) {\n\n\n\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(__props.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxTextBox), {\n value: __props.text,\n width: __props.width,\n \"read-only\": true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"info-box-icon\",\n position: \"after\",\n options: { icon: __props.icon, stylingMode: 'text', type: 'dx-dropdowneditor-button', disabled: false, visible: __props.icon, onClick: () => emit('iconClicked') }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"value\", \"width\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./acquaint-info-box.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./acquaint-info-box.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./acquaint-info-box.vue?vue&type=style&index=0&id=3aaa5f21&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3aaa5f21\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, unref as _unref, createBlock as _createBlock, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e74cea68\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"main-label-icon-container\" }\nconst _hoisted_2 = { class: \"ai-button-container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"sub-label\"\n}\nconst _hoisted_4 = [\"id\"]\n\nimport { PropType, computed, ref, watch } from 'vue';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxTextArea } from 'devextreme-vue';\nimport { validationCallback } from '@/utils/validation/FieldValidator';\nimport { DxCustomRule, DxRequiredRule } from 'devextreme-vue/validator';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'acquaint-text-area',\n props: {\n fieldValidation: {\n type: Object as PropType,\n required: true\n },\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n height: {\n type: String,\n default: '9rem'\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n customValidation: {\n type: Function,\n required: false\n },\n invalidMessage: {\n type: String,\n required: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * The subLabel displayed for the control.\n * @type {String}\n * @default ''\n */\n subLabel: {\n type: String,\n default: ''\n },\n valueChangeEvent: {\n type: String as PropType,\n default: TextboxValueChangeEvent.KeyUp\n },\n /** \n * Determines whether the specific input control is focused.\n * @type {boolean}\n * @default false\n */\n focusInput: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether it should reset valid flag.\n * @type {boolean}\n * @default false\n */\n resetValid: {\n type: Boolean,\n default: false\n },\n /** \n * The unique identifier for the container.\n * @type {string}\n * @default undefined\n */\n containerId: {\n type: String,\n default: undefined\n },\n /** \n * Determines whether to display AI modal.\n * @type {boolean}\n * @default false\n */\n displayAIModal: {\n type: Boolean,\n default: false\n },\n validationGroup: {\n type: String,\n default: ''\n }\n},\n emits: ['update:modelValue', 'onOptionChanged', 'aiIconClick'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst value = computed({\n get: () => props.modelValue,\n set: (val: string) => emit('update:modelValue', val)\n});\n\n\n\nwatch(() => props.resetValid, () => {\n if (props.resetValid) {\n isValid.value = true;\n return\n }\n});\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return value.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n if (props.resetValid) {\n isValid.value = true;\n return\n }\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\nconst textAreaKey = ref(0);\nconst textArea = ref>(null);\n\nwatch(() => props.focusInput, () => {\n if (props.focusInput) {\n return;\n }\n\n textAreaKey.value++;\n setTimeout(() => textArea.value.instance.focus(), 100);\n});\n\nconst onOptionChanged = (e: any) => {\n emit('onOptionChanged', e.value);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"label\", { asteriskVisible: __props.fieldValidation.isRequired }])\n }, _toDisplayString(__props.label), 3))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (props.displayAIModal)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa-sharp fa-thin fa-microchip-ai ai-button\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('aiIconClick')))\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n (__props.subLabel)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(__props.subLabel), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n id: __props.containerId,\n class: \"textbox-container\"\n }, [\n (_openBlock(), _createBlock(_unref(DxTextArea), {\n key: textAreaKey.value,\n ref_key: \"textArea\",\n ref: textArea,\n value: value.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((value).value = $event)),\n \"max-length\": __props.fieldValidation.maxLength,\n height: __props.height,\n width: __props.width,\n \"read-only\": props.readOnly,\n \"is-valid\": isValid.value,\n hint: validationErrors.value,\n valueChangeEvent: __props.valueChangeEvent,\n onOptionChanged: onOptionChanged\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": __props.validationGroup\n }, {\n default: _withCtx(() => [\n (__props.fieldValidation.isRequired)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), { key: 0 }))\n : _createCommentVNode(\"\", true),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 1,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxCustomRule), {\n fieldValidation: __props.fieldValidation,\n \"validation-callback\": _unref(validationCallback),\n reevaluate: true\n }, null, 8, [\"fieldValidation\", \"validation-callback\"])\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\", \"max-length\", \"height\", \"width\", \"read-only\", \"is-valid\", \"hint\", \"valueChangeEvent\"]))\n ], 8, _hoisted_4)\n ], 64))\n}\n}\n\n})","import script from \"./acquaint-text-area.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./acquaint-text-area.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./acquaint-text-area.vue?vue&type=style&index=0&id=e74cea68&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e74cea68\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, renderSlot as _renderSlot, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c08b99e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_2 = [\"id\"]\nconst _hoisted_3 = {\n class: \"textbox-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\n\nimport { PropType, computed, ref, watch } from 'vue';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxTextBox, DxButton } from 'devextreme-vue/text-box';\nimport { validationCallback } from '@/utils/validation/FieldValidator';\nimport { DxCustomRule, DxRequiredRule, DxEmailRule } from 'devextreme-vue/validator';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { ValidationType } from 'acquaint-api/validation/ValidationType';\nimport { DxTooltip } from 'devextreme-vue/tooltip';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\nimport { CountryCode } from 'bright-logic-core/src/CountryCode';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'acquaint-textbox',\n props: {\n fieldValidation: {\n type: Object as PropType,\n required: true\n },\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n customValidation: {\n type: Function,\n required: false\n },\n invalidMessage: {\n type: String,\n required: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the specific input control is required.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * Determines whether the control is for email.\n * @type {boolean}\n * @default false\n */\n isEmail: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to apply tooltip.\n * @type {boolean}\n * @default false\n */\n useToolTip: {\n type: Boolean,\n default: false\n },\n toolTipId: {\n type: String,\n default: ''\n },\n toolTipTarget: {\n type: String,\n default: ''\n },\n /** \n * Determines whether to allow reset validationdd.\n * @type {boolean}\n * @default false\n */\n resetValid: {\n type: Boolean,\n default: false\n },\n valueChangeEvent: {\n type: String as PropType,\n default: TextboxValueChangeEvent.KeyUp\n },\n /** \n * Determines whether to show the clear button.\n * @type {boolean}\n * @default false\n */\n showClearButton: {\n type: Boolean,\n default: false\n },\n countryCode: {\n type: Number as PropType,\n default: CountryCode.NotSet\n }\n},\n emits: ['update:modelValue', 'change', 'onFocused', 'onUnfocused'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"7de1d5b4\": (props.width)\n}))\n\n\n\nconst value = computed({\n get: () => props.modelValue,\n set: (val: string) => emit('update:modelValue', val)\n});\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\nconst textboxModeType = ref(false);\n\n\n\nwatch(() => props.resetValid, () => {\n if (props.resetValid) {\n isValid.value = true;\n return\n }\n});\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return value.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n if (props.resetValid) {\n isValid.value = true;\n return\n }\n\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nwatch(() => props.fieldValidation, () => {\n if (props.fieldValidation.validationType === ValidationType.UserPassword) {\n textboxModeType.value = true;\n }\n\n}, { immediate: true });\n\nconst textboxMode = computed(() => { return textboxModeType.value ? 'password' : 'text' });\n\nconst showPasswordOptions = {\n icon: 'fas fa-eye',\n stylingMode: 'text',\n type: 'acquaint-textbox-button',\n disabled: false,\n visible: props.fieldValidation.validationType === ValidationType.UserPassword,\n onClick: () => { textboxModeType.value = !textboxModeType.value }\n};\n\nconst viewUrlOptions = {\n icon: 'fas fa-external-link',\n stylingMode: 'text',\n type: 'acquaint-textbox-button',\n disabled: false,\n visible: props.fieldValidation.validationType === ValidationType.WebPage,\n onClick: () => redirectToUrl()\n}\n\nconst redirectToUrl = () => {\n /* If user hasn't entered a url starting with http or https, using window.open will append the url to the current domain\n * To get round this, we must first santize the url */\n if (!value.value) return;\n\n const url = value.value.startsWith('http:') || value.value.startsWith('https:') ? value.value : `https://${value.value}`;\n window.open(url);\n};\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\n/** Handles the change event of the DxTextBox. \n * Note: this fires when user leaves the component not when text changes */\nconst onChange = (e: any) => emit('change', e);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", {\n class: _normalizeClass({ asteriskVisible: props.requiredInput || __props.fieldValidation.isRequired })\n }, _toDisplayString(__props.label), 3),\n _createTextVNode(),\n (props.useToolTip)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fas fa-info-circle info-icon\",\n id: props.toolTipId\n }, null, 8, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(DxTextBox), {\n value: value.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n \"max-length\": __props.fieldValidation.maxLength,\n width: __props.width,\n \"read-only\": props.readOnly,\n isValid: isValid.value,\n hint: validationErrors.value,\n mode: textboxMode.value,\n valueChangeEvent: __props.valueChangeEvent,\n onChange: onChange,\n onFocusIn: _cache[1] || (_cache[1] = ($event: any) => (emit('onFocused'))),\n onFocusOut: _cache[2] || (_cache[2] = ($event: any) => (emit('onUnfocused')))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"clear-text\",\n position: \"after\",\n options: {\n icon: 'clear',\n stylingMode: 'text',\n type: 'acquaint-textbox-button',\n visible: props.showClearButton && !props.readOnly && value.value,\n disabled: false,\n onClick: () => value.value = '',\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"show-password\",\n position: \"after\",\n options: showPasswordOptions\n }),\n _createVNode(_unref(DxButton), {\n name: \"view-url-icon\",\n position: \"after\",\n options: viewUrlOptions\n }),\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (__props.fieldValidation.isRequired || props.requiredInput == true)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 1,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxCustomRule), {\n fieldValidation: __props.fieldValidation,\n \"validation-callback\": _unref(validationCallback),\n reevaluate: true,\n countryCode: props.countryCode\n }, null, 8, [\"fieldValidation\", \"validation-callback\", \"countryCode\"]),\n (props.isEmail)\n ? (_openBlock(), _createBlock(_unref(DxEmailRule), { key: 2 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"]),\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"value\", \"max-length\", \"width\", \"read-only\", \"isValid\", \"hint\", \"mode\", \"valueChangeEvent\"]),\n _createVNode(_unref(DxTooltip), {\n target: props.toolTipTarget,\n \"show-event\": \"mouseenter\",\n width: \"275px\",\n position: \"top\",\n \"hide-event\": \"mouseleave\"\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"tooltip-content\")\n ]),\n _: 3\n }, 8, [\"target\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./acquaint-textbox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./acquaint-textbox.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./acquaint-textbox.vue?vue&type=style&index=0&id=0c08b99e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0c08b99e\"]])\n\nexport default __exports__","import { ColorRGBToWin32 } from \"bright-logic-core/src/colours\";\n\n/*** Converts the passed hex colour to a Win32 colour\n * @param hex the hex colour to convert\n * @returns The Win32 value of the converted colour */\nconst hexToWin32Color = (hex: string) => {\n const rgbValues = hexToRgb(hex);\n\n /* Weirdly, the rgb values have to passed in the wrong order. \n * I think this is a bug with the ColorRGBToWin32 function, \n * as the rgb values returned by the hexToRgb function appear correct */\n return rgbValues ? ColorRGBToWin32(rgbValues.b, rgbValues.g, rgbValues.r) : null;\n}\n\n/*** Converts the passed hex colour to an rgb object \n * @param hex the hex colour to convert\n * @returns Object containing the rgb values of the converted colour */\nconst hexToRgb = (hex: string) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\n/** Converts the passed rgb color string to a Win32 color */\nconst rgbToWin32 = (colour: string) => {\n const colourSubstring = colour.substring(4, colour.length - 1);\n const colourArray = colourSubstring.split(',');\n\n return ColorRGBToWin32(parseInt(colourArray[2]),parseInt(colourArray[1]) , parseInt(colourArray[0]));\n}\n\nexport { hexToRgb, hexToWin32Color, rgbToWin32 }","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c32b4068\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"colour-picker\" }\nconst _hoisted_2 = { class: \"title\" }\n\nimport DxColorBox from 'devextreme-vue/color-box';\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ColorWin32ToRGB } from 'bright-logic-core/src/colours'\nimport { hexToWin32Color, rgbToWin32 } from '@/utils/colours/ColourConverter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'colour-picker',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Emitted when the `modelValue` is updated, typically triggered when a selection changes.\n * @event update:modelValue\n * @param {Number} value - The new value to be updated in the model.\n */\n 'update:modelValue',\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst colour = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst htmlColor = ref('');\nconst loading = ref(false);\n\nonMounted(() => {\n setHtmlColor();\n});\n\nwatch(() => props.modelValue, () => setHtmlColor());\n\nconst setHtmlColor = () => {\n loading.value = true;\n htmlColor.value = ColorWin32ToRGB(Number(colour.value));\n\n /* Need to call nextTick before setting loading to false. \n * Otherwise, the watches on colors trigger prematurely */\n nextTick();\n loading.value = false;\n}\n\nwatch(() => htmlColor.value, () => {\n if (!htmlColor.value || loading.value) {\n return;\n }\n\n // Need to account for users entering hex or rgb values\n let win32Color = hexToWin32Color(htmlColor.value);\n\n if (!win32Color) {\n win32Color = rgbToWin32(htmlColor.value);\n }\n\n if (win32Color) {\n colour.value = parseInt(win32Color);\n }\n});\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(props.label), 1),\n _createVNode(_unref(DxColorBox), {\n value: htmlColor.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((htmlColor).value = $event)),\n \"read-only\": props.readOnly,\n \"accept-custom-value\": true,\n width: _unref(FieldSize).XXSmall\n }, null, 8, [\"value\", \"read-only\", \"width\"])\n ]))\n}\n}\n\n})","import script from \"./colour-picker.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./colour-picker.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./colour-picker.vue?vue&type=style&index=0&id=c32b4068&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c32b4068\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-277c6423\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"currency-input-and-label\" }\nconst _hoisted_2 = { class: \"number-box\" }\n\nimport { onMounted, ref, computed, PropType } from 'vue';\nimport { DxNumberBox, DxButton } from 'devextreme-vue/number-box';\nimport { getCurrencyFormat } from '@/utils/CurrencyFormatter'\nimport { useCurrentUserStore } from '../../../stores/CurrentUserStore';\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { DxValidator } from 'devextreme-vue';\nimport { validationCallback } from '@/utils/validation/FieldValidator';\nimport { DxCustomRule, DxRequiredRule } from 'devextreme-vue/validator';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'currency-input',\n props: {\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n minValue: {\n type: Number,\n default: 0\n },\n maxValue: {\n type: Number,\n default: undefined\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n fieldValidation: {\n type: Object as PropType,\n required: false\n },\n customValidation: {\n type: Function,\n required: false\n },\n invalidMessage: {\n type: String,\n required: false\n },\n icon: {\n type: String,\n default: ''\n },\n valueChangeEvent: {\n type: String as PropType,\n default: TextboxValueChangeEvent.Change\n }\n},\n emits: ['update:modelValue', 'iconClicked'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"f21335fc\": (props.width)\n}))\n\nconst currentUser = ref()\nconst currentUserStore = useCurrentUserStore();\nconst countryCodeID = ref();\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\n\n\nonMounted(async () => {\n // Get Current User details from the Current User store\n currentUser.value = await currentUserStore.getCurrentUserDetails()\n\n // Retrieve the Country Code ID to use for Formatting the Currency\n countryCodeID.value = currentUser.value?.countryCodeID\n});\n\n\n\nconst numberValue = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return numberValue.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\nconst onIconClicked = () => emit('iconClicked');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, _toDisplayString(props.label), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxNumberBox), {\n format: _unref(getCurrencyFormat)(countryCodeID.value),\n min: __props.minValue,\n max: __props.maxValue,\n value: numberValue.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((numberValue).value = $event)),\n width: props.width,\n readOnly: props.readOnly,\n isValid: isValid.value,\n \"onUpdate:isValid\": _cache[1] || (_cache[1] = ($event: any) => ((isValid).value = $event)),\n hint: validationErrors.value\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), { adapter: adapterConfig }, {\n default: _withCtx(() => [\n (__props.fieldValidation?.isRequired)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 1,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (__props.fieldValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 2,\n fieldValidation: __props.fieldValidation,\n \"validation-callback\": _unref(validationCallback),\n reevaluate: true\n }, null, 8, [\"fieldValidation\", \"validation-callback\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_unref(DxButton), {\n name: \"info-box-icon\",\n position: \"after\",\n options: { icon: __props.icon, stylingMode: 'text', type: 'dx-dropdowneditor-button', disabled: false, visible: __props.icon, onClick: onIconClicked }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"format\", \"min\", \"max\", \"value\", \"width\", \"readOnly\", \"isValid\", \"hint\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./currency-input.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./currency-input.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./currency-input.vue?vue&type=style&index=0&id=277c6423&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-277c6423\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1fd2bfe9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"datebox-container\" }\n\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { PropType, computed, ref, watch } from 'vue'\nimport { DxDateBox } from 'devextreme-vue/date-box';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxCustomRule, DxRequiredRule } from 'devextreme-vue/validator';\nimport { formatCurrentDate } from 'bright-logic-core/src/format';\nimport moment from 'moment';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'field-validation-free-date-box',\n props: {\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n maxDate: {\n type: Date,\n default: new Date(new Date().setFullYear(new Date().getFullYear() + 50))\n },\n minDate: {\n type: Date,\n default: new Date('1900-01-01')\n },\n /** \n * Determines whether the specific control is disabled.\n * @type {boolean}\n * @default false\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the time is included.\n * @type {boolean}\n * @default false\n */\n includeTime: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the specific control is required.\n * @type {boolean}\n * @default false\n */\n required: {\n type: Boolean,\n default: false\n },\n validationGroup: {\n type: String,\n default: 'false'\n }\n},\n emits: ['update:modelValue', 'valueSelected'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst dateValue = computed({\n get: () => props.modelValue == null ? '' : props.modelValue,\n set: (value: string) => emit('update:modelValue', value == null ? '' : value)\n});\n\n/** Emits the value changed DxDateBox event to allow parent component to perform custom logic */\nconst onValueChanged = (e: any) => {\n emit('valueSelected', String(e))\n}\n\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return dateValue.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\n/** Handles custom max date validation */\nconst maxDateValidation = () => {\n\n // Allow undefined/null dates\n if (!dateValue.value) {\n return true;\n }\n\n moment.locale('en-GB');\n return props.maxDate ? moment(dateValue.value).isSameOrBefore(moment(props.maxDate)) : true;\n};\n\n/** Handles custom min date validation */\nconst minDateValidation = () => {\n\n // Allow undefined/null dates\n if (!dateValue.value) {\n return props.minDate.toUTCString() === new Date('1900-01-01').toUTCString();\n }\n\n moment.locale('en-GB');\n return props.minDate ? moment(dateValue.value).isSameOrAfter(moment(props.minDate)) : true;\n};\n\nconst dateBoxType = computed(() => props.includeTime ? 'datetime' : 'date');\nconst displayFormat = computed(() => props.includeTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy')\n\nconst dateTimeDropDownOptions = {\n onHiding: () => {\n let button: HTMLElement = document.querySelector(\".dx-popup-done.dx-button\") as HTMLElement;\n if (!button) {\n return\n }\n button.click();\n }\n}\n\nconst dateOnlyDropDownOptions = {\n toolbarItems: [\n {\n widget: 'dxButton',\n toolbar: 'bottom',\n location: 'before',\n options: {\n text: 'Today',\n onClick: () => onTodayClick(),\n disabled: props.maxDate < new Date(formatCurrentDate())\n }\n }\n ]\n}\n\nconst dropDownOptions = computed(() => props.includeTime ? dateTimeDropDownOptions : dateOnlyDropDownOptions)\n\nconst onTodayClick = () => {\n dateValue.value = formatCurrentDate();\n opened.value = false;\n}\n\nconst opened = ref(false);\n\nconst maxValidationMessage = computed(() => { return props.maxDate.setHours(0, 0, 0, 0) == new Date().setHours(0, 0, 0, 0) ? \"The date must be today's date or earlier\" : `The date must be ${props.maxDate.toLocaleDateString('en-GB')} or earlier` });\n\nconst minValidationMessage = computed(() => { return `The date must be ${props.minDate.toLocaleDateString('en-GB')} or later` });\n\nwatch(() => dateValue.value, () => {\n if (isValid.value) {\n return\n }\n\n if (new Date(dateValue.value) > props.maxDate) {\n validationErrors.value = maxValidationMessage.value;\n } else if (new Date(dateValue.value) < props.minDate) {\n validationErrors.value = minValidationMessage.value;\n }\n\n});\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\n// To overcome focus issues on iOS devices, the date box should be set to read only whilst the calendar is displayed\nconst dateBoxReadonly = computed(() => props.readOnly || opened.value);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"label\", { asteriskVisible: props.required }])\n }, _toDisplayString(__props.label), 3))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxDateBox), {\n \"display-format\": displayFormat.value,\n value: dateValue.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((dateValue).value = $event)),\n width: __props.width,\n readOnly: dateBoxReadonly.value,\n hint: validationErrors.value,\n min: __props.minDate,\n max: __props.maxDate,\n onValueChanged: onValueChanged,\n isValid: isValid.value,\n \"onUpdate:isValid\": _cache[1] || (_cache[1] = ($event: any) => ((isValid).value = $event)),\n disabled: __props.disabled,\n \"date-out-of-range-message\": \"\",\n \"use-mask-behavior\": true,\n type: dateBoxType.value,\n dropDownOptions: dropDownOptions.value,\n \"picker-type\": \"calendar\",\n \"validation-message-mode\": \"auto\",\n opened: opened.value,\n \"onUpdate:opened\": _cache[2] || (_cache[2] = ($event: any) => ((opened).value = $event)),\n dateSerializationFormat: \"yyy-MM-dd\",\n placeholder: \"DD/MM/YYYY\"\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (props.required)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxCustomRule), {\n reevaluate: true,\n validationCallback: minDateValidation,\n message: minValidationMessage.value\n }, null, 8, [\"message\"]),\n _createVNode(_unref(DxCustomRule), {\n reevaluate: true,\n validationCallback: maxDateValidation,\n message: maxValidationMessage.value\n }, null, 8, [\"message\"])\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"display-format\", \"value\", \"width\", \"readOnly\", \"hint\", \"min\", \"max\", \"isValid\", \"disabled\", \"type\", \"dropDownOptions\", \"opened\"])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./field-validation-free-date-box.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./field-validation-free-date-box.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./field-validation-free-date-box.vue?vue&type=style&index=0&id=1fd2bfe9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1fd2bfe9\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b3b122c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_2 = { class: \"textbox-container\" }\n\nimport { PropType, computed, ref } from 'vue';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxTextArea } from 'devextreme-vue';\nimport { DxRequiredRule } from 'devextreme-vue/validator';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'field-validation-free-text-area',\n props: {\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n height: {\n type: String,\n default: '9rem'\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the control is required.\n * @type {boolean}\n * @default false\n */\n isRequired: {\n type: Boolean,\n default: false\n },\n valueChangeEvent: {\n type: String as PropType,\n default: TextboxValueChangeEvent.Change\n },\n},\n emits: ['update:modelValue', 'onValueChanged', 'onInitialised'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst value = computed({\n get: () => props.modelValue,\n set: (val: string) => emit('update:modelValue', val)\n});\n\n\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return value.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(__props.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(DxTextArea), {\n value: value.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n height: __props.height,\n width: __props.width,\n \"read-only\": props.readOnly,\n \"is-valid\": isValid.value,\n hint: validationErrors.value,\n valueChangeEvent: __props.valueChangeEvent\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), { adapter: adapterConfig }, {\n default: _withCtx(() => [\n (props.isRequired)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\", \"height\", \"width\", \"read-only\", \"is-valid\", \"hint\", \"valueChangeEvent\"])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./field-validation-free-text-area.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./field-validation-free-text-area.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./field-validation-free-text-area.vue?vue&type=style&index=0&id=0b3b122c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0b3b122c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode, renderSlot as _renderSlot, createElementVNode as _createElementVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e0a6f98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"textbox-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\n\nimport { PropType, computed, ref, watch, onMounted } from 'vue';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxTextBox } from 'devextreme-vue/text-box';\nimport { DxRequiredRule, DxCustomRule, DxPatternRule } from 'devextreme-vue/validator';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport { TextboxValueChangeEvent } from '@/enums/ui/inputs/TextboxValueChangeEvent';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'field-validation-free-textbox',\n props: {\n maxLength: {\n type: String,\n default: '50'\n },\n minLength: {\n type: String,\n default: '0'\n },\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true\n },\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * A custom validation function for validating the input field.\n * @type {Function}\n * @optional\n */\n customValidation: {\n type: Function,\n required: false\n },\n invalidMessage: {\n type: String,\n required: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the input control is required.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * Determines whether the control is numeric field.\n * @type {boolean}\n * @default false\n */\n numericalField: {\n type: Boolean,\n required: false,\n },\n invalidNumericalMessage: {\n type: String,\n required: false,\n },\n placeholder: {\n type: String,\n default: ''\n },\n displayLeadingZeros: {\n typre: Boolean,\n default: false\n },\n valueChangeEvent: {\n type: String as PropType,\n default: TextboxValueChangeEvent.Change\n },\n /** \n * Determines whether to show Clear button.\n * @type {boolean}\n * @default false\n */\n showClearButton: {\n type: Boolean,\n default: false\n },\n isPassword:{\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'focusOut'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst value = computed({\n get: () => props.modelValue,\n set: (val: string) => emit('update:modelValue', val)\n});\n\n\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return value.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\nconst textboxMode = ref('text');\n\nonMounted(()=>{\n textboxMode.value = props.isPassword ? 'password':'text';\n});\n\nwatch(()=>props.isPassword, ()=>{\n textboxMode.value = props.isPassword ? 'password':'text';\n});\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\nconst minLengthValidation = (e: any) => {\n if (!e.value || props.minLength === '0') {\n return true;\n }\n\n return e.value.length >= props.minLength;\n};\n\nconst focusOut = () => {\n if (props.displayLeadingZeros && value.value.length > 0) {\n value.value = value.value.padStart(Number(props.maxLength), '0');\n }\n\n emit('focusOut');\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"label\", { asteriskVisible: props.requiredInput }])\n }, _toDisplayString(__props.label), 3))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxTextBox), {\n value: value.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n \"max-length\": props.maxLength,\n width: __props.width,\n \"read-only\": props.readOnly,\n isValid: isValid.value,\n hint: validationErrors.value,\n mode: textboxMode.value,\n placeholder: props.placeholder,\n valueChangeEvent: __props.valueChangeEvent,\n onFocusOut: focusOut,\n \"show-clear-button\": __props.showClearButton\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (props.requiredInput)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 1,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (props.minLength)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 2,\n reevaluate: true,\n \"validation-callback\": minLengthValidation,\n message: props.invalidMessage\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (props.numericalField)\n ? (_openBlock(), _createBlock(_unref(DxPatternRule), {\n key: 3,\n pattern: \"^[0-9]+$\",\n message: props.invalidNumericalMessage\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"]),\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"value\", \"max-length\", \"width\", \"read-only\", \"isValid\", \"hint\", \"mode\", \"placeholder\", \"valueChangeEvent\", \"show-clear-button\"])\n ])\n ], 64))\n}\n}\n\n})","import script from \"./field-validation-free-textbox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./field-validation-free-textbox.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./field-validation-free-textbox.vue?vue&type=style&index=0&id=5e0a6f98&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e0a6f98\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-03ff3511\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"file-upload-container\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"file-list\"\n}\nconst _hoisted_3 = [\"onDblclick\"]\nconst _hoisted_4 = { class: \"name\" }\nconst _hoisted_5 = { class: \"size\" }\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"far fa-times-circle\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = [\"accept\", \"multiple\"]\n\nimport { DxButton } from 'devextreme-vue';\nimport { computed, ref, watch, PropType, onMounted } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'file-upload',\n props: {\n text: {\n type: String,\n default: 'Upload a File'\n },\n /** \n * Determines whether to allow to load multiple files.\n * @type {boolean}\n * @default true\n */\n multiple: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show list of files.\n * @type {boolean}\n * @default true\n */\n showFileList: {\n type: Boolean,\n default: true\n },\n buttonBackground: {\n type: String,\n default: 'white'\n },\n buttonTextColor: {\n type: String,\n default: 'black'\n },\n /** \n * Determines whether to trigger file uploading.\n * @type {boolean}\n * @default false\n */\n triggerFileUploading: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to allow to reset control.\n * @type {boolean}\n * @default false\n */\n reset: {\n type: Boolean,\n default: false\n },\n width: {\n type: String,\n default: '100%'\n },\n fileTypes: {\n type: String,\n default: '*/*'\n },\n defaultFiles: {\n type: Array as PropType,\n default: () => []\n },\n /** \n * Determines whether to hide buttons.\n * @type {boolean}\n * @default false\n */\n hideButtons: {\n type: Boolean,\n default: false\n }\n},\n emits: ['filesChanged', 'uploadCancelled', 'fileDoubleClicked'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"23a4ae6d\": (props.width),\n \"1d9ee2f9\": (props.buttonBackground),\n \"1ef63b0b\": (props.buttonTextColor),\n \"498f598f\": (fileWidth.value),\n \"d87fd852\": (removeFileHoverCursor.value),\n \"ac2aca7c\": (removeFileHoverColor.value)\n}))\n\n\n\nonMounted(() => {\n files.value = [...props.defaultFiles];\n});\n\nwatch(() => props.defaultFiles, () => {\n files.value = [...props.defaultFiles];\n}, { deep: true });\n\nconst fileUploadControl = ref();\nconst files = ref();\n\nwatch(() => props.triggerFileUploading, () => {\n if (props.triggerFileUploading) {\n onClick();\n }\n});\n\n\n/** Handles the Change event of the File Input */\nconst onFileChange = () => {\n if (!fileUploadControl.value?.files) {\n files.value = undefined;\n emit('filesChanged', undefined);\n return;\n }\n\n if (props.multiple && files.value) {\n // So users can add files from different folders, update existing file array\n files.value.push(...fileUploadControl.value.files);\n } else {\n files.value = Array.from(fileUploadControl.value.files);\n }\n\n emit('filesChanged', files.value);\n}\n\n\n\n/** Handles the Click event of the DxButton */\nconst onClick = () => {\n if (!fileUploadControl.value) {\n return;\n }\n\n fileUploadControl.value.click();\n}\n\n/** Formats the passed file size into a user friendly file size */\nconst formatFileSize = (fileSize: number) => {\n // Mb\n if (fileSize >= 1000000) {\n return (fileSize / 1000000).toFixed(0) + 'MB';\n }\n\n // Kb\n if (fileSize >= 1000) {\n return (fileSize / 1000).toFixed(0) + 'KB'\n }\n\n // bytes\n return fileSize + 'B'\n}\n\n/** Handles the Remove icon click event */\nconst onRemoveClick = (index: number) => {\n if (!fileUploadControl.value?.files || props.readOnly) {\n return;\n }\n\n /* As the FileList in FileUploadControl.Files is read only, \n * we need to create a new FileList and assign it to the control\n * To do this we'll use the DataTransfer interface that the FileList implements */\n const dataTransfer = new DataTransfer();\n\n if (!files.value || files.value.length == 0) {\n emit('filesChanged', files.value)\n return;\n }\n\n for (let i = 0; i < files.value.length; i++) {\n\n if (i != index) {\n dataTransfer.items.add(files.value[i])\n }\n }\n\n fileUploadControl.value.files = dataTransfer.files;\n\n // So files are removed from the screen, we need to sync the files array with the new FileList\n files.value = Array.from(fileUploadControl.value.files);\n emit('filesChanged', files.value)\n};\n\nconst removeFileHoverCursor = computed(() => !props.readOnly ? 'pointer' : '');\nconst removeFileHoverColor = computed(() => !props.readOnly ? '#4A4A4A' : '#A1A1A1');\n\nwatch(() => props.reset, () => {\n if (props.reset) {\n if (!fileUploadControl.value?.files) {\n return;\n }\n\n /* As the FileList in FileUploadControl.Files is read only, \n * we need to create a new FileList and assign it to the control\n * To do this we'll use the DataTransfer interface that the FileList implements */\n const dataTransfer = new DataTransfer();\n\n fileUploadControl.value.files = dataTransfer.files;\n\n // So files are removed from the screen, we need to sync the files array with the new FileList\n files.value = Array.from(fileUploadControl.value.files);\n emit('filesChanged', files.value)\n }\n});\n\n\n/** Handles the user cancelling the file upload dialog */\nconst onCancel = () => emit('uploadCancelled');\n\nconst fileWidth = computed(() => !props.multiple ? '100%' : '45%')\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxButton), {\n text: __props.text,\n onClick: onClick,\n width: \"130px\",\n disabled: __props.readOnly,\n visible: !props.hideButtons\n }, null, 8, [\"text\", \"disabled\", \"visible\"]),\n (files.value && __props.showFileList)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(files.value, (file, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file\",\n key: index,\n onDblclick: ($event: any) => (emit('fileDoubleClicked', file))\n }, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(file.name), 1),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(formatFileSize(file.size)), 1),\n (!props.hideButtons)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"remove\",\n onClick: ($event: any) => (onRemoveClick(index))\n }, _hoisted_8, 8, _hoisted_6))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"input\", {\n accept: __props.fileTypes,\n class: \"hidden\",\n multiple: __props.multiple,\n ref_key: \"fileUploadControl\",\n ref: fileUploadControl,\n type: \"file\",\n onChange: onFileChange,\n onCancel: onCancel\n }, null, 40, _hoisted_9)\n ], 64))\n}\n}\n\n})","import script from \"./file-upload.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./file-upload.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./file-upload.vue?vue&type=style&index=0&id=03ff3511&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-03ff3511\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode, renderSlot as _renderSlot, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4b94306e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"number-box-input-label\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_3 = {\n class: \"textbox-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\n\nimport { PropType, computed, ref } from 'vue';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxNumberBox } from 'devextreme-vue/number-box';\nimport { DxRequiredRule, DxCustomRule } from 'devextreme-vue/validator';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'number-box-field',\n props: {\n /** \n * The maximum length allowed value for the input.\n * @type {number}\n * @default: '50'\n */\n maxLength: {\n type: String,\n default: '50'\n },\n /** \n * The minimum length allowed value for the input.\n * @type {number}\n * @default: '0'\n */\n minLength: {\n type: String,\n default: '0'\n },\n /** \n * The maximum allowed value for the input.\n * @type {number}\n * @default: 1000000\n */\n maxValue: {\n type: Number,\n default: 1000000\n },\n /** \n * The minimum allowed value for the input.\n * @type {number}\n * @default: 0\n */\n minValue: {\n type: Number,\n default: 0\n },\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default: FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * A custom validation function for validating the input field.\n * @type {Function}\n */\n customValidation: {\n type: Function,\n required: false\n },\n /** \n * A second custom validation function for validating the input field.\n * @type {Function}\n */\n secondCustomValidation: {\n type: Function,\n required: false\n },\n /** \n * A invalid error message to display when validation fails.\n * @type {string}\n * @default ''\n */\n invalidMessage: {\n type: String,\n required: false\n },\n /** \n * A second invalid error message to display when validation fails.\n * @type {string}\n * @default ''\n */\n secondInvalidMessage: {\n type: String,\n required: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the input control is required.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * The format used for form validation.\n * @type {string}\n * @default ''\n */\n format: {\n type: String,\n default: ''\n },\n /** \n * Determines whether to show the spin button.\n * @type {boolean}\n * @default true\n */\n showSpinButtons: {\n type: Boolean,\n default: true\n }\n},\n emits: ['update:modelValue', 'valueChanged', 'onUserInput'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"040d251d\": (props.width)\n}))\n\n\n\nconst value = computed({\n get: () => props.modelValue,\n set: (val: number) => emit('update:modelValue', val)\n});\n\n\n\n/** Custom validation configuration to override DevExpress default validation method */\nconst adapterConfig = {\n getValue: () => {\n return value.value;\n },\n applyValidationResults: (e: ValidatedEvent) => {\n isValid.value = !!e.isValid;\n\n // Construct list of validation errors to be displayed to the user when they hover over the field\n validationErrors.value = !e.isValid && e.brokenRule?.message ? e.brokenRule.message : '';\n },\n validationRequestsCallbacks: [],\n};\n\nconst validationErrors = ref('');\nconst isValid = ref(true);\n\nconst requiredMessage = computed(() => props.label ? `${props.label} is required` : 'This field is required');\n\nconst onUserInput = () => {\n if (String(value.value).length > Number(props.maxLength)) {\n value.value = Number(String(value.value).slice(0, Number(props.maxLength)))\n }\n\n emit('onUserInput')\n};\n\nconst onValueChanged = (e: any) => {\n // To prevent v-bind errors due to null values, reset nulls to 0\n if (e.value === null) {\n e.value = 0;\n value.value = 0;\n }\n\n emit('valueChanged', e.value);\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(__props.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(DxNumberBox), {\n value: value.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n width: __props.width,\n \"read-only\": props.readOnly,\n isValid: isValid.value,\n \"onUpdate:isValid\": _cache[1] || (_cache[1] = ($event: any) => ((isValid).value = $event)),\n hint: validationErrors.value,\n onFocusOut: onUserInput,\n max: props.maxValue,\n min: props.minValue,\n onValueChanged: onValueChanged,\n format: props.format,\n \"show-spin-buttons\": __props.showSpinButtons\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxValidator), {\n adapter: adapterConfig,\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (props.requiredInput)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: requiredMessage.value\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (props.customValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 1,\n reevaluate: true,\n \"validation-callback\": __props.customValidation,\n message: props.invalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (props.secondCustomValidation)\n ? (_openBlock(), _createBlock(_unref(DxCustomRule), {\n key: 2,\n reevaluate: true,\n \"validation-callback\": __props.secondCustomValidation,\n message: props.secondInvalidMessage\n }, null, 8, [\"validation-callback\", \"message\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"]),\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"value\", \"width\", \"read-only\", \"isValid\", \"hint\", \"max\", \"min\", \"format\", \"show-spin-buttons\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./number-box-field.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./number-box-field.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./number-box-field.vue?vue&type=style&index=0&id=4b94306e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4b94306e\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cee8b878\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"select-options-container\" }\nconst _hoisted_2 = { class: \"title-container\" }\nconst _hoisted_3 = [\"id\"]\nconst _hoisted_4 = { class: \"button-container\" }\nconst _hoisted_5 = { class: \"button-text\" }\nconst _hoisted_6 = { class: \"button-text\" }\nconst _hoisted_7 = { class: \"button-text\" }\n\nimport { ref, watch, onMounted } from 'vue';\nimport { DxTooltip } from 'devextreme-vue/tooltip';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'select-option',\n props: {\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @required\n */\n title: {\n type: String,\n required: true\n },\n selectBoxOneText: {\n type: String,\n required: true\n },\n selectBoxTwoText: {\n type: String,\n required: true\n },\n selectBoxThreeText: {\n type: String,\n default: ''\n },\n width: {\n type: String,\n default: '260px'\n },\n /** \n * Determines whether to use tooltip.\n * @type {boolean}\n * @default false\n */\n useToolTip: {\n type: Boolean,\n default: false\n },\n toolTipId: {\n type: String,\n default: ''\n },\n toolTipTarget: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the title is bold font.\n * @type {boolean}\n * @default false\n */\n boldTitle: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the item be selected by default.\n * @type {boolean}\n * @default false\n */\n selectedByDefault: {\n type: Boolean,\n default: true\n },\n value: {\n type: Number,\n default: 2\n },\n /** \n * Determines whether to show askterisk.\n * @type {boolean}\n * @default false\n */\n showAskterisk: {\n type: Boolean,\n default: false\n },\n titleSpacing: {\n type: String,\n default: 'space-between'\n }\n},\n emits: ['buttonSelected'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"cbf7bd74\": (props.width),\n \"f248b96a\": (props.titleSpacing)\n}))\n\n\n\n\n\nconst firstSelected = ref(false);\nconst secondSelected = ref(props.selectedByDefault);\nconst thirdSelected = ref(false);\n\nconst buttonSelected = () => {\n firstSelected.value = true;\n secondSelected.value = false;\n thirdSelected.value = false;\n emit('buttonSelected', 1);\n};\n\nconst secondButtonSelected = () => {\n firstSelected.value = false;\n secondSelected.value = true;\n thirdSelected.value = false;\n emit('buttonSelected', 2);\n};\n\nconst thirdButtonSelected = () => {\n firstSelected.value = false;\n secondSelected.value = false;\n thirdSelected.value = true;\n emit('buttonSelected', 3);\n};\n\n// If prior to the component being mounted, the value changes form the default value,\n// the component reflects this\n\nonMounted(() => {\n if (props.value == 1) {\n firstSelected.value = true;\n secondSelected.value = false;\n thirdSelected.value = false;\n } else if (props.value == 3) {\n firstSelected.value = false;\n secondSelected.value = false;\n thirdSelected.value = true;\n } else if (props.value == -1) {\n firstSelected.value = false;\n secondSelected.value = false;\n thirdSelected.value = false;\n }\n});\n\n// The value of the select box can be changed from outside the component and when this happens,\n// the correct button must be displayed\n\nwatch(() => props.value, () => {\n if (props.value == 1) {\n firstSelected.value = true;\n secondSelected.value = false;\n thirdSelected.value = false;\n } else if (props.value == 2) {\n firstSelected.value = false;\n secondSelected.value = true;\n thirdSelected.value = false;\n } else if (props.value == 3) {\n firstSelected.value = false;\n secondSelected.value = false;\n thirdSelected.value = true;\n } else if (props.value == -1) {\n firstSelected.value = false;\n secondSelected.value = false;\n thirdSelected.value = false;\n }\n});\n\nconst screeWidth = ref(screen.width);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([{ title: __props.boldTitle, asteriskVisible: props.showAskterisk }, \"options-title\"])\n }, _toDisplayString(props.title), 3),\n (props.useToolTip)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fas fa-info-circle info-icon\",\n id: props.toolTipId\n }, null, 8, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n type: \"button\",\n onClick: buttonSelected,\n class: _normalizeClass({ selectedButton: firstSelected.value, smallScreen: screeWidth.value < 769 })\n }, [\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(props.selectBoxOneText), 1)\n ], 2),\n _createElementVNode(\"button\", {\n type: \"button\",\n onClick: secondButtonSelected,\n class: _normalizeClass({ selectedButton: secondSelected.value, smallScreen: screeWidth.value < 769 })\n }, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(props.selectBoxTwoText), 1)\n ], 2),\n (props.selectBoxThreeText)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n onClick: thirdButtonSelected,\n class: _normalizeClass({ selectedButton: thirdSelected.value, smallScreen: screeWidth.value < 769 })\n }, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(props.selectBoxThreeText), 1)\n ], 2))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_unref(DxTooltip), {\n target: props.toolTipTarget,\n \"show-event\": \"mouseenter\",\n width: \"275px\",\n \"hide-event\": \"mouseleave\"\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"tooltip-content\")\n ]),\n _: 3\n }, 8, [\"target\"])\n ]))\n}\n}\n\n})","import script from \"./select-option.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./select-option.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./select-option.vue?vue&type=style&index=0&id=cee8b878&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cee8b878\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-56304e3f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header-container\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"custom-icon-container\"\n}\n\nimport { computed, useSlots } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'page-heading',\n props: {\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @required\n */\n title: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: ''\n }\n},\n setup(__props) {\n\n\n\nconst isCustomIconSlotUsed = computed(() => {\n const slots = useSlots();\n return !!slots['customIcon']\n})\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (isCustomIconSlotUsed.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"customIcon\")\n ]))\n : _createCommentVNode(\"\", true),\n (__props.icon)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(__props.icon)\n }, null, 2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"h2\", null, _toDisplayString(__props.title), 1)\n ]))\n}\n}\n\n})","import script from \"./page-heading.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./page-heading.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./page-heading.vue?vue&type=style&index=0&id=56304e3f&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-56304e3f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"contact-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\n\nimport { ref, computed, inject, onMounted, watch, PropType } from 'vue';\nimport FindContactModal from '../../find/contacts/find-contact-modal.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult';\nimport { DxButton, DxTextBox } from 'devextreme-vue/text-box';\nimport contactsPeekPopup from '@/components/contacts/contacts-peek-popup.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { RouteNames } from '@/router/RouteNames';\nimport { useRouter } from 'vue-router';\nimport { DxValidator } from 'devextreme-vue';\nimport { DxRequiredRule } from 'devextreme-vue/validator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'contact-lookup',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default true\n */\n readOnly: {\n type: Boolean,\n required: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Restricts the types of contacts that can be found.\n * @type {number}\n * @default 0\n */\n findTypeRestriction: {\n type: Number,\n default: 0\n },\n /** \n * Determines whether to find name by Id.\n * @type {boolean}\n * @default false\n */\n findNameOnIdChange: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the control is required.\n * @type {boolean}\n * @default false\n */\n isRequired: {\n type: Boolean,\n default: false\n },\n /** \n * The unique identifier for the current contact.\n * @type {number}\n * @default: 0\n */\n currentContactId: {\n type: Number,\n default: 0\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether to show clear icon.\n * @type {boolean}\n * @default false\n */\n showClearIcon: {\n type: Boolean,\n default: false\n },\n /** \n * Specifies the type of contact to search for.\n * @type {number}\n * @default -1\n */\n typeToFind: {\n type: Number,\n default: -1\n },\n /** \n * Determines whether to show navigate contact icon.\n * @type {boolean}\n * @default false\n */\n showNavigateContactIcon: {\n type: Boolean,\n default: true\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n }\n},\n emits: ['update:modelValue', 'contactSelected', 'navigateToContact'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst contactId = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst showModal = ref(false);\nconst contactName = ref('');\nconst showPeek = ref(false);\nconst contactFullDetails = ref();\nconst peekModalKey = ref(0);\nconst router = useRouter();\n\nonMounted(async () => {\n await getContactName();\n});\n\nwatch(() => contactId.value, () => {\n if (!contactId.value) {\n contactName.value = '';\n }\n\n if (props.findNameOnIdChange) {\n getContactName();\n }\n});\n\nconst incrementPeekModalKey = () => {\n peekModalKey.value++;\n};\n\nconst getContactName = async () => {\n // No need to call api if no contact has been selected\n if (contactId.value === 0) {\n contactName.value = '';\n incrementPeekModalKey();\n return;\n }\n\n // When the component loads, populate the contact's name so user can see who is currently selected\n const contact: IDDescriptionPair = await apiClient.httpGet(`app/contacts/${contactId.value}/name`);\n contactName.value = contact.description;\n incrementPeekModalKey();\n}\n\n/** Handles the contact selected event of the find contact modal */\nconst onContactSelected = async (e: ContactFindResult) => {\n if (!e) {\n return\n }\n contactName.value = e.name;\n incrementPeekModalKey();\n contactId.value = e.id;\n contactFullDetails.value = e;\n emit('contactSelected', e);\n};\n\nconst onPrimaryContactSelected = (primaryId: number, primaryName: string) => {\n contactName.value = primaryName;\n incrementPeekModalKey();\n contactId.value = primaryId;\n};\n\nconst searchClick = () => {\n showModal.value = true\n};\n\nconst clearClick = () => {\n contactName.value = '';\n contactId.value = 0;\n contactFullDetails.value = undefined;\n emit('contactSelected', undefined);\n};\n\nconst navigateToContact = () => {\n emit('navigateToContact');\n setTimeout(() => router.push({ name: RouteNames.ContactPage, params: { contactid: contactId.value.toString() } }), 500);\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"label\", { asteriskVisible: props.isRequired }])\n }, _toDisplayString(__props.label), 3))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxTextBox), {\n value: contactName.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((contactName).value = $event)),\n \"read-only\": true,\n width: props.width\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"clear-text\",\n position: \"after\",\n options: {\n icon: 'clear',\n stylingMode: 'text',\n type: 'dx-show-clear-button',\n visible: props.showClearIcon && contactId.value > 0 && !props.readOnly,\n disabled: false,\n onClick: () => clearClick(),\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"navigate-to-contact\",\n position: \"after\",\n options: {\n icon: 'fas fa-user',\n stylingMode: 'text',\n type: 'dx-show-clear-button',\n visible: contactId.value > 0 && props.showNavigateContactIcon,\n disabled: false,\n onClick: () => navigateToContact(),\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"peek-contact\",\n position: \"after\",\n options: {\n icon: 'fas fa-eye',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n visible: contactId.value > 0,\n onClick: () => showPeek.value = true\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"contact-lookup\",\n position: \"after\",\n options: {\n icon: 'fas fa-search',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n visible: !props.readOnly,\n onClick: () => searchClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxValidator), {\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (props.isRequired)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: \"\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\", \"width\"])\n ])\n ]),\n _createVNode(FindContactModal, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n onContactSelected: onContactSelected,\n findTypeRestriction: props.findTypeRestriction,\n \"current-contact-id\": __props.currentContactId,\n onPrimaryContactSelected: onPrimaryContactSelected,\n typeToFind: props.typeToFind\n }, null, 8, [\"modelValue\", \"findTypeRestriction\", \"current-contact-id\", \"typeToFind\"]),\n (_openBlock(), _createBlock(contactsPeekPopup, {\n key: peekModalKey.value,\n modelValue: showPeek.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showPeek).value = $event)),\n contactId: contactId.value,\n title: contactName.value\n }, null, 8, [\"modelValue\", \"contactId\", \"title\"]))\n ], 64))\n}\n}\n\n})","import script from \"./contact-lookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./contact-lookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./contact-lookup.vue?vue&type=style&index=0&id=1449d1e9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, PropType, ref, inject, onMounted, watch } from 'vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport SingleSelect from '../dropdowns/single-select.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'lookup-single-select',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The source lookup table from which data is fetched. This is used to retrieve a list of items from the API.\n * @type {LookupTableSource}\n * @required\n */\n lookupSource: {\n type: Number as PropType,\n required: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the inactive items are included.\n * @type {boolean}\n * @default false\n */\n includeInactiveItems: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the specific control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the input control is required.\n * @type {boolean}\n * @default false\n */\n requiredInput: {\n type: Boolean,\n default: false\n },\n /** \n * The validation group name used for form validation.\n * @type {string}\n * @default ''\n */\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * Determines whether to show the search textbox.\n * @type {boolean}\n * @default false\n */\n showSearch: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to allow zero value.\n * @type {boolean}\n * @default false\n */\n allowZeroValue: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show the clear button.\n * @type {boolean}\n * @default false\n */\n showClearButton: {\n type: Boolean,\n default: false\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * Determines whether to allow to reset validation.\n * @type {boolean}\n * @default false\n */\n resetValid: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to update TableSource on id change.\n * @type {boolean}\n * @default false\n */\n updateTableSourceOnIdChange: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'iconClicked', 'valueChanged'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst selectedValueId = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst lookupItems = ref([]);\n\nonMounted(async () => {\n await getLookupItems()\n});\n\nwatch(() => props.lookupSource, async (newValue: LookupTableSource, oldValue: LookupTableSource) => {\n if (newValue === oldValue) {\n return;\n }\n\n selectedValueId.value = 0;\n await getLookupItems();\n});\n\nconst getLookupItems = async () => {\n // Call api for a list of lookup items to display. These aren't cached as there may be a lot of data\n lookupItems.value = await acquaintApiClient.httpGet\n (`app/system/lookup/${props.lookupSource}?includeinactive=${props.includeInactiveItems}&selectedrecordid=${selectedValueId.value}`);\n}\n\nconst iconClicked = (selectedId: number) => {\n const selectedItem: IDDescriptionPair | undefined = lookupItems.value.find((item) => { return item.id == selectedId })\n emit('iconClicked', selectedItem?.id, selectedItem?.description);\n};\n\nwatch(() => selectedValueId.value, async () => {\n if (props.updateTableSourceOnIdChange) {\n await getLookupItems();\n }\n\n let selectedValue = lookupItems.value.filter((idDescriptionPair) => { return idDescriptionPair.id == selectedValueId.value });\n\n emit('valueChanged', selectedValue.length > 0 ? selectedValue[0].description : '');\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SingleSelect, {\n modelValue: selectedValueId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedValueId).value = $event)),\n \"data-source\": lookupItems.value,\n readOnly: props.readOnly,\n allowZeroValue: props.allowZeroValue,\n showClearButton: props.showClearButton,\n label: __props.label,\n requiredInput: props.requiredInput,\n validationGroup: props.validationGroup,\n showSearch: props.showSearch,\n onIconClicked: iconClicked,\n width: __props.width,\n resetValid: props.resetValid\n }, null, 8, [\"modelValue\", \"data-source\", \"readOnly\", \"allowZeroValue\", \"showClearButton\", \"label\", \"requiredInput\", \"validationGroup\", \"showSearch\", \"width\", \"resetValid\"]))\n}\n}\n\n})","import script from \"./lookup-single-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./lookup-single-select.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"property-lookup-container\",\n \"data-bind\": \"dxTextBox: {}\"\n}\n\nimport { ref, computed, inject, onMounted, watch } from 'vue';\nimport FindPropertyModal from '../../find/properties/find-property-modal.vue';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport DxTextBox from 'devextreme-vue/text-box';\nimport { DxButton } from 'devextreme-vue/text-box';\nimport { PropertyFindResult } from '@/types/find/properties/PropertyFindResult';\nimport { DxRequiredRule } from 'devextreme-vue/validator';\nimport { DxValidator } from 'devextreme-vue';\nimport { useRouter } from 'vue-router';\nimport { RouteNames } from '@/router/RouteNames';\nimport PropertyPeekModal from '@/components/properties/property-peek-modal.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'property-lookup',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the control is required.\n * @type {boolean}\n * @default false\n */\n required: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to allow to reset validation.\n * @type {boolean}\n * @default false\n */\n resetValid: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to display Navigate Icon.\n * @type {boolean}\n * @default true\n */\n displayNavigateIcon: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether to display Peek.\n * @type {boolean}\n * @default false\n */\n displayPeek: {\n type: Boolean,\n default: false\n },\n validationGroup: {\n type: String,\n required: false,\n default: ''\n },\n /** \n * Determines whether to show Clear Icon.\n * @type {boolean}\n * @default false\n */\n showClearIcon: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'addressSelected', 'navigateToProperty'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst propertyId = computed({\n get: () => props.modelValue,\n set: (value: number) => emit('update:modelValue', value)\n});\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\nconst showModal = ref(false);\nconst propertyAddress = ref('');\nconst router = useRouter();\nconst displayPropertyPeekModal = ref(false);\nconst propertyPeekTitle = computed(() => { return `${propertyAddress.value} (${propertyId.value})`; });\n\nonMounted(async () => {\n await getPropertyAddress();\n});\n\nwatch(() => props.modelValue, async () => {\n await getPropertyAddress();\n});\n\nconst getPropertyAddress = async () => {\n // No need to call api if no property has been selected\n if (propertyId.value === 0) {\n propertyAddress.value = '';\n return;\n }\n\n // When the component loads, populate the property's address so user can see which property is currently selected\n const property: any = await apiClient.httpGet(`database/properties/${propertyId.value}`);\n propertyAddress.value = [property.propertyName, property.street, property.locality,\n property.town, property.region, property.postcode]\n .filter((word: string) => !!word).join(', ');\n}\n\n/** Handles the property selected event of the find property modal */\nconst onPropertySelected = (e: PropertyFindResult) => {\n if (!e) {\n return;\n }\n\n propertyAddress.value = e.address;\n propertyId.value = e.id;\n emit('addressSelected', e.address)\n}\n\nconst searchClick = () => {\n if (props.readOnly) {\n return\n }\n showModal.value = true\n};\n\nconst navigateToProperty = () => {\n emit('navigateToProperty');\n setTimeout(() => router.push({ name: RouteNames.PropertyPage, params: { propertyid: propertyId.value } }), 500);\n};\n\nconst clearClick = () => {\n propertyAddress.value = '';\n propertyId.value = 0;\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"label\", { asteriskVisible: props.required }])\n }, _toDisplayString(__props.label), 3))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(DxTextBox), {\n value: propertyAddress.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((propertyAddress).value = $event)),\n \"read-only\": true\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"clear-text\",\n position: \"after\",\n options: {\n icon: 'clear',\n stylingMode: 'text',\n type: 'dx-show-clear-button',\n visible: props.showClearIcon && propertyId.value > 0 && !props.readOnly,\n disabled: false,\n onClick: () => clearClick(),\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"navigate-to-property\",\n position: \"after\",\n options: {\n icon: 'fas fa-house',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n visible: propertyId.value > 0 && props.displayNavigateIcon,\n onClick: () => navigateToProperty()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"peek-contact\",\n position: \"after\",\n options: {\n icon: 'fas fa-eye',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n visible: propertyId.value > 0 && props.displayPeek,\n onClick: () => displayPropertyPeekModal.value = true\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxButton), {\n name: \"property-lookup\",\n position: \"after\",\n options: {\n icon: 'fas fa-search',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n visible: !props.readOnly,\n disabled: false,\n onClick: () => searchClick()\n }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxValidator), {\n \"validation-group\": props.validationGroup\n }, {\n default: _withCtx(() => [\n (props.required)\n ? (_openBlock(), _createBlock(_unref(DxRequiredRule), {\n key: 0,\n message: \"\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"validation-group\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(FindPropertyModal, {\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n onPropertySelected: onPropertySelected\n }, null, 8, [\"modelValue\"]),\n _createVNode(PropertyPeekModal, {\n modelValue: displayPropertyPeekModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((displayPropertyPeekModal).value = $event)),\n \"property-id\": propertyId.value,\n title: propertyPeekTitle.value\n }, null, 8, [\"modelValue\", \"property-id\", \"title\"])\n ], 64))\n}\n}\n\n})","import script from \"./property-lookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./property-lookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./property-lookup.vue?vue&type=style&index=0&id=87f66ee2&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-36788914\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"label\" }\nconst _hoisted_2 = [\"id\"]\n\nimport { ref, onMounted, inject, PropType } from 'vue';\nimport { ContactFindTypeRestriction } from '@/enums/contacts/ContactFindTypeRestriction';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { ContactFindResult } from '@/types/find/contacts/ContactFindResult';\nimport { Contacts } from 'acquaint-api/models/Contacts';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport FindContactResults from '@/components/find/contacts/find-contact-results.vue';\nimport { DxTextBox, DxButton } from 'devextreme-vue/text-box';\nimport { DxTooltip } from 'devextreme-vue/tooltip';\nimport displayErrorMessage from '@/utils/ErrorHandling';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'switch-contact-lookup',\n props: {\n findTypeRestriction: {\n type: Number as PropType,\n default: ContactFindTypeRestriction.None\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default 'Look up contact'\n */\n label: {\n type: String,\n default: 'Look up contact'\n },\n resultsMaxWidth: {\n type: String,\n default: '100%'\n },\n toolTipId: {\n type: String,\n default: ''\n },\n toolTipTarget: {\n type: String,\n default: ''\n }\n},\n emits: ['contactSelected'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"1966d3ba\": (__props.resultsMaxWidth)\n}))\n\nconst searchQuery = ref('');\nconst displayResults = ref(false);\nconst findResults = ref([]);\nconst restrictedResults = ref([]);\nconst searching = ref(false);\n\nconst apiClient = inject('AcquaintApiClient') as AcquaintApiClient\n\n\n\n\n\nonMounted(() => {\n document.addEventListener(\"click\", () => {\n displayResults.value = false;\n });\n});\n\nconst searchButtonOptions = {\n icon: 'search',\n stylingMode: 'text',\n type: 'dx-dropdowneditor-button',\n disabled: false,\n onClick: () => searchClick(searchQuery.value)\n}\n\nconst searchClick = async (value: string) => {\n // To avoid unnecessary api calls, only perform search if user has entered more than 2 characters\n if (!value || value.length < 2) {\n restrictedResults.value = [];\n return;\n }\n\n searching.value = true;\n\n // Currently there are no filters, so set filters to all\n const postData = {\n textToFind: value,\n maxResults: 200,\n findTypeRestriction: props.findTypeRestriction,\n filters: {\n statusID: -1,\n typeID: -1,\n userID: -1,\n branchID: -1\n }\n }\n\n // Get results back from api\n try {\n findResults.value = await apiClient.httpPost('find/contact', postData);\n restrictedResults.value = findResults.value.filter((contact) => !contact.isRestricted);\n displayResults.value = true;\n } catch (ex) {\n displayErrorMessage(getErrorMessage(ex))\n }\n\n searching.value = false;\n};\n\n/** Handles the click events of the Find Contact Results */\nconst onGridSelect = async (e: ContactFindResult) => {\n displayResults.value = false;\n await selectContact(e.id);\n};\n\n// Handles the adaptive click of the grid\nconst onMoreInfoClick = async (e: ContactFindResult) => {\n await selectContact(e.id);\n};\n\nconst selectContact = async (id: number) => {\n if (!id) {\n return\n }\n\n const contactDetails = await getContactDetailsFromApi(id);\n\n if (contactDetails) {\n emit('contactSelected', contactDetails)\n }\n};\n\nconst getContactDetailsFromApi = async (id: number) => {\n try {\n return await apiClient.httpGet(`database/contacts/${id}`);\n } catch (ex) {\n displayErrorMessage(\"Could not find the contact's information.\")\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, _toDisplayString(__props.label), 1),\n _createElementVNode(\"i\", {\n class: \"fas fa-info-circle info-icon\",\n id: props.toolTipId\n }, null, 8, _hoisted_2)\n ]),\n _createVNode(_unref(DxTextBox), {\n value: searchQuery.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((searchQuery).value = $event)),\n \"read-only\": false\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxButton), {\n name: \"contact-lookup\",\n position: \"after\",\n options: searchButtonOptions\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n (displayResults.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"results-table-container\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [\n _createVNode(FindContactResults, {\n data: restrictedResults.value,\n searching: searching.value,\n onRowClick: onGridSelect,\n onRowSelected: onGridSelect,\n onAdaptiveRowSelection: onMoreInfoClick\n }, null, 8, [\"data\", \"searching\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxTooltip), {\n target: props.toolTipTarget,\n \"show-event\": \"mouseenter\",\n width: \"275px\",\n position: \"top\",\n \"hide-event\": \"mouseleave\"\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"tooltip-content\")\n ]),\n _: 3\n }, 8, [\"target\"])\n ]))\n}\n}\n\n})","import script from \"./switch-contact-lookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./switch-contact-lookup.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./switch-contact-lookup.vue?vue&type=style&index=0&id=36788914&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-36788914\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createSlots as _createSlots, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68faa138\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-header\" }\nconst _hoisted_2 = { class: \"main-title\" }\nconst _hoisted_3 = { class: \"sub-title\" }\nconst _hoisted_4 = { class: \"icon-section\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"dx-icon dx-icon-close\" }, null, -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-loading-pane\"\n}\nconst _hoisted_8 = {\n key: 2,\n class: \"non-scrollable-content\"\n}\n\nimport { displayCancelConfirmationAlert } from '@/alerts/cancelConfirmationAlert';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxPopup, DxToolbarItem } from 'devextreme-vue/popup';\nimport { InitializedEvent } from 'devextreme/ui/popup';\nimport { PropType, computed, inject, onMounted, onUnmounted, ref, useSlots, watch } from 'vue';\nimport { sizes, subscribe, unsubscribe } from '../../../utils/media-query';\nimport ScrollView from '../scroll-view.vue';\nimport { HelpNavigator } from '@/services/HelpNavigator';\nimport DxLoadIndicator from 'devextreme-vue/load-indicator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'modal-base',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @required\n */\n title: {\n type: String,\n required: true\n },\n width: {\n type: String as PropType,\n default: ModalWidth.Small\n },\n height: {\n type: String,\n default: 'auto'\n },\n maxHeight: {\n type: String,\n default: '80vh'\n },\n /** \n * Determines whether to show Close Button.\n * @type {boolean}\n * @default true\n */\n showCloseButton: {\n type: Boolean,\n default: true\n },\n /** \n * Determines whether the data is saving.\n * @type {boolean}\n * @default false\n */\n saving: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show close confirmation prompt.\n * @type {boolean}\n * @default false\n */\n showCloseConfirmationPrompt: {\n type: Boolean,\n default: false\n },\n outsideShadingColour: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the scroll bar locates at bottom.\n * @type {boolean}\n * @default false\n */\n scrollToBottom: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether the loading content is true.\n * @type {boolean}\n * @default false\n */\n loadingContent: {\n type: Boolean,\n default: false\n },\n scrollableElementSelector: {\n type: String,\n default: ''\n },\n helpPage: {\n type: String,\n default: ''\n },\n customCloseConfirmationText: {\n type: String,\n default: 'Are you sure you want to cancel?'\n }\n},\n emits: ['update:modelValue', 'closingModal', 'modalClosed', 'cancelPromptDenied', 'cancelPromptAccepted'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showPopup = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nwatch(() => props.modelValue, () => {\n resetScrollPosition.value = !props.modelValue;\n});\n\nonMounted(() => {\n subscribe(setPopupWidth);\n setPopupWidth();\n});\n\nonUnmounted(() => unsubscribe(setPopupWidth));\n\nconst popupWidth = ref(props.width);\nconst resetScrollPosition = ref(false);\n\nconst setPopupWidth = () => {\n const breakPoints = sizes();\n\n if (breakPoints['screen-x-small'] || props.width === ModalWidth.MobileFullWidth) {\n popupWidth.value = ModalWidth.XSmall;\n return;\n }\n\n switch (props.width) {\n case ModalWidth.Large:\n popupWidth.value = setLargePopupWidth(breakPoints);\n return;\n case ModalWidth.Medium:\n popupWidth.value = setMediumPopupWidth(breakPoints);\n return;\n case ModalWidth.Small:\n popupWidth.value = setSmallPopupWidth(breakPoints);\n return;\n default:\n popupWidth.value = ModalWidth.XSmall\n }\n};\n\nconst setLargePopupWidth = (breakPoints: any) => {\n switch (true) {\n case breakPoints['screen-large']:\n return ModalWidth.Large;\n case breakPoints['screen-medium']:\n return ModalWidth.Medium;\n case breakPoints['screen-small']:\n return ModalWidth.Small;\n default:\n return ModalWidth.XSmall;\n }\n}\n\nconst setMediumPopupWidth = (breakPoints: any) => {\n switch (true) {\n case breakPoints['screen-large']:\n case breakPoints['screen-medium']:\n return ModalWidth.Medium;\n case breakPoints['screen-small']:\n return ModalWidth.Small;\n default:\n return ModalWidth.XSmall;\n }\n}\n\nconst setSmallPopupWidth = (breakPoints: any) => {\n return breakPoints['screen-x-small'] ? ModalWidth.XSmall : ModalWidth.Small;\n}\n\nconst onClosingModal = async (e: any) => {\n if (!props.showCloseConfirmationPrompt) {\n emit('closingModal');\n return;\n }\n\n // Stop infinite prompts by checking if the user has already confirmed cancel prompt\n if (userConfirmedCancel.value) {\n emit('closingModal');\n return;\n }\n\n // To prevent users accidentally cancelling and losing data, prompt user for confirmation before closing\n const alertResult = displayCancelConfirmationAlert(props.customCloseConfirmationText)\n .then(result => {\n if (result.isConfirmed) {\n emit('cancelPromptAccepted');\n } else {\n emit('cancelPromptDenied');\n }\n return !result.isConfirmed\n });\n\n e.cancel = alertResult;\n}\n\nconst userConfirmedCancel = ref(false);\n\nconst isContentSlotUsed = computed(() => {\n const slots = useSlots();\n return !!slots['content'];\n});\n\n// Stops the escape key being used to close the modal. This avoids changes being accidentally lost\nconst onInitialized = (e: InitializedEvent) => {\n e.component?.registerKeyHandler(\"escape\", (arg: any) => {\n arg.stopPropagation();\n });\n};\n\n// Resets the user confirmed cancel variable so cancel prompt is displayed when user next cancels modal\nconst onShowing = () => userConfirmedCancel.value = false;\n\n// Handles the hidden event of the DxPopup\nconst onModalClosed = () => {\n emit('modalClosed');\n};\n\nconst closeModal = () => {\n showPopup.value = false;\n};\n\nconst helpNavigator = inject('HelpNavigator') as HelpNavigator;\n\nconst onHelpClick = () => helpNavigator.LoadHelpTopicByPageName(props.helpPage);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(DxPopup), {\n visible: showPopup.value,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((showPopup).value = $event)),\n \"drag-enabled\": false,\n \"hide-on-outside-click\": false,\n \"show-close-button\": __props.showCloseButton,\n \"show-title\": true,\n title: __props.title,\n \"content-template\": \"content\",\n width: popupWidth.value,\n height: props.height,\n \"max-height\": props.maxHeight,\n onHiding: onClosingModal,\n onInitialized: onInitialized,\n onShowing: onShowing,\n onHidden: onModalClosed,\n shadingColor: props.outsideShadingColour\n }, _createSlots({\n content: _withCtx(() => [\n (props.loadingContent)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(_unref(DxLoadIndicator), {\n height: 50,\n width: 50\n })\n ]))\n : _createCommentVNode(\"\", true),\n (isContentSlotUsed.value && !props.loadingContent)\n ? (_openBlock(), _createBlock(ScrollView, {\n key: 1,\n \"reset-scroll\": resetScrollPosition.value,\n \"onUpdate:resetScroll\": _cache[0] || (_cache[0] = ($event: any) => ((resetScrollPosition).value = $event)),\n \"scroll-to-bottom\": __props.scrollToBottom,\n \"scrollable-element-selector\": __props.scrollableElementSelector\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"content\")\n ]),\n _: 3\n }, 8, [\"reset-scroll\", \"scroll-to-bottom\", \"scrollable-element-selector\"]))\n : _createCommentVNode(\"\", true),\n (!props.loadingContent && !isContentSlotUsed.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _renderSlot(_ctx.$slots, \"non-scrollable-content\")\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (props.saving)\n ? (_openBlock(), _createBlock(_unref(DxToolbarItem), {\n key: 0,\n widget: \"dxLoadIndicator\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { visible: props.saving, width: 24, height: 24 }\n }, null, 8, [\"options\"]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"footer\")\n ]),\n _: 2\n }, [\n (!__props.title)\n ? {\n name: \"title\",\n fn: _withCtx(() => [\n _createElementVNode(\"section\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"main-title\")\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"sub-title\")\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (props.showCloseButton && !__props.title)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"close-button-holder\",\n onClick: closeModal\n }, _hoisted_6))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n key: \"0\"\n }\n : {\n name: \"title\",\n fn: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"dx-toolbar dx-widget dx-visibility-change-handler dx-collection dx-popup-title dx-has-close-button\",\n role: \"toolbar\"\n }, [\n _createElementVNode(\"div\", { class: \"dx-toolbar-items-container\" }, [\n _createElementVNode(\"div\", { class: \"dx-toolbar-before\" }, [\n _createElementVNode(\"div\", { class: \"dx-item dx-toolbar-item dx-toolbar-label\" }, [\n _createElementVNode(\"div\", { class: \"dx-item-content dx-toolbar-item-content\" }, [\n _createElementVNode(\"div\", null, _toDisplayString(__props.title), 1)\n ])\n ])\n ]),\n _createElementVNode(\"div\", { class: \"dx-toolbar-after\" }, [\n _createElementVNode(\"div\", { class: \"dx-item dx-toolbar-item dx-toolbar-button\" }, [\n _createElementVNode(\"div\", { class: \"dx-item-content dx-toolbar-item-content\" }, [\n (__props.helpPage)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"acq-icon-button dx-widget dx-button dx-button-mode-text dx-button-normal dx-button-has-icon\",\n role: \"button\",\n \"aria-label\": \"Help\",\n onClick: onHelpClick\n }, [\n _createElementVNode(\"div\", { class: \"dx-button-content\" }, [\n _createElementVNode(\"i\", { class: \"dx-icon far fa-question\" }),\n _createElementVNode(\"div\", { class: \"dx-inkripple\" })\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (__props.showCloseButton)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"acq-icon-button dx-widget dx-button dx-button-mode-text dx-button-normal dx-button-has-icon dx-closebutton\",\n role: \"button\",\n \"aria-label\": \"Close\",\n tabindex: \"0\",\n onClick: closeModal\n }, [\n _createElementVNode(\"div\", { class: \"dx-button-content\" }, [\n _createElementVNode(\"i\", { class: \"dx-icon dx-icon-close\" }),\n _createElementVNode(\"div\", { class: \"dx-inkripple\" })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ])\n ])\n ]),\n key: \"1\"\n }\n ]), 1032, [\"visible\", \"show-close-button\", \"title\", \"width\", \"height\", \"max-height\", \"shadingColor\"]))\n}\n}\n\n})","import script from \"./modal-base.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./modal-base.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./modal-base.vue?vue&type=style&index=0&id=68faa138&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-68faa138\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from \"vue\"\n\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { computed, ref } from 'vue';\nimport modalBase from './modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'question-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n messageText: {\n type: String,\n required: true\n },\n confirmButtonText: {\n type: String,\n required: true\n },\n rejectButtonText: {\n type: String,\n required: true\n },\n cancelButtonText: {\n type: String,\n required: false\n },\n /** \n * The title or heading associated with the component.\n * @type {string}\n * @default: 'Confirm'\n */\n title: {\n type: String,\n default: 'Confirm'\n },\n height: {\n type: String,\n default: '25vh'\n }\n},\n emits: ['update:modelValue', 'confirm', 'reject'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst closeModal = () => {\n showModal.value = false\n};\n\nconst onRejectClick = () => {\n closeModal();\n emit('reject');\n}\n\nconst onConfirmClick = (e: any) => {\n closeModal();\n emit('confirm', e);\n};\n\nconst confirmButtonOptions = ref({\n text: props.confirmButtonText,\n onClick: onConfirmClick\n});\n\nconst rejectButtonOptions = ref({\n text: props.rejectButtonText,\n onClick: onRejectClick\n});\n\nconst cancelButtonOptions = ref({\n text: props.cancelButtonText,\n onClick: closeModal\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n title: __props.title,\n width: _unref(ModalWidth).Small,\n height: __props.height,\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showModal).value = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"p\", null, _toDisplayString(props.messageText), 1)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: confirmButtonOptions.value\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: rejectButtonOptions.value\n }, null, 8, [\"options\"]),\n (props.cancelButtonText)\n ? (_openBlock(), _createBlock(_unref(DxToolbarItem), {\n key: 0,\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: cancelButtonOptions.value\n }, null, 8, [\"options\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"title\", \"width\", \"height\", \"modelValue\"]))\n}\n}\n\n})","import script from \"./question-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./question-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export enum ScrollbarPosition {\n Top,\n Mid,\n Bottom,\n None\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dc6162e0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"content-container\" }\n\nimport { computed, ref, watch } from 'vue';\nimport { ScrollbarPosition } from '@/enums/system/ScrollbarPosition';\nimport { DxScrollView } from 'devextreme-vue/scroll-view';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'scroll-view',\n props: {\n /** \n * The boolean value indicates whether the component should reset the scroll position.\n * @type {boolean}\n * @default false\n */\n resetScroll: {\n type: Boolean,\n default: false\n },\n\n /** \n * The boolean value indicates whether the component should automatically scroll to the bottom.\n * @type {boolean}\n * @default false\n */\n scrollToBottom: {\n type: Boolean,\n default: false\n },\n\n /** \n * The CSS selector string for the scrollable element inside the component.\n * @type {string}\n * @default ''\n */\n scrollableElementSelector: {\n type: String,\n default: ''\n },\n\n /** \n * The direction of scrolling, either 'vertical' or 'horizontal'.\n * @type {string}\n * @default 'vertical'\n */\n scrollDirection: {\n type: String,\n default: 'vertical'\n },\n\n /** \n * The boolean value indicates whether the component should hide the blur effect on the scroll content.\n * @type {boolean}\n * @default false\n */\n hideBlur: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:resetScroll'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst reset = computed({\n get: () => props.resetScroll,\n set: (value: Boolean) => emit('update:resetScroll', value)\n});\n\nconst scrollPosition = ref(ScrollbarPosition.Top)\n\n// The value scrollPosition is based on the position the user is on in the scroll view to determine where the fade appears\nconst onScroll = () => {\n scrollPosition.value = ScrollbarPosition.Mid;\n}\n\nconst onUpdated = (e: any) => {\n if (e.reachedTop && !e.reachedBottom) {\n scrollPosition.value = ScrollbarPosition.Top;\n }\n else if (e.reachedBottom && !e.reachedTop) {\n scrollPosition.value = ScrollbarPosition.Bottom;\n }\n else if (e.reachedBottom && e.reachedTop) {\n scrollPosition.value = ScrollbarPosition.None\n }\n}\n\n/** Gets the class for fading content based on current scrollbar position */\nconst modalFadeClasses = computed(() => {\n if (props.hideBlur) {\n return '';\n }\n\n switch (scrollPosition.value) {\n case ScrollbarPosition.Top:\n return 'atTop';\n case ScrollbarPosition.Bottom:\n return 'atBottom';\n case ScrollbarPosition.Mid:\n return 'midScroll';\n default:\n return '';\n }\n});\n\n// Watch for when parent wants to scroll back to the top of the view\nwatch(() => props.resetScroll, () => {\n if (!props.resetScroll || !dxScrollView.value?.instance) {\n return;\n }\n dxScrollView.value.instance.scrollTo(0);\n\n // Must always reset the v-model to false, otherwise subsequent resets won't fire\n reset.value = false;\n});\n\nwatch(() => props.scrollToBottom, (newVal: boolean, oldVal: boolean) => {\n // As content may load asynchronously, we need to continue scrolling until told to stop\n if (newVal) {\n scrollInterval.value = startAutoScroll();\n return;\n }\n\n /* When auto scroll is disabled, stop the interval running to avoid frustrating users \n * by resetting scroll position after manually scrolling */\n if (!newVal && oldVal && scrollInterval.value) {\n clearInterval(scrollInterval.value);\n return;\n }\n})\n\nconst scrollInterval = ref(0);\n\nconst startAutoScroll = () => setInterval(() => {\n if (!props.scrollableElementSelector || !dxScrollView.value?.instance) {\n return;\n }\n\n const elem: HTMLDivElement | null = document.querySelector(props.scrollableElementSelector);\n\n if (!elem) {\n return;\n }\n\n dxScrollView.value.instance.scrollTo(elem.scrollHeight);\n}, 250);\n\nconst dxScrollView = ref();\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['scroll-container', modalFadeClasses.value])\n }, [\n _createVNode(_unref(DxScrollView), {\n scrollByThumb: true,\n scrollByContent: true,\n ref_key: \"dxScrollView\",\n ref: dxScrollView,\n height: \"100%\",\n width: \"100%\",\n onScroll: onScroll,\n onUpdated: onUpdated,\n direction: props.scrollDirection\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ]),\n _: 3\n }, 8, [\"direction\"])\n ], 2))\n}\n}\n\n})","import script from \"./scroll-view.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./scroll-view.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./scroll-view.vue?vue&type=style&index=0&id=dc6162e0&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dc6162e0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { CodeType } from 'acquaint-api/constants/CodeType';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { PropType, computed, onMounted, ref, watch } from 'vue';\nimport { useSystemCodesStore } from '@/stores/SystemCodesStore';\nimport singleSelect from '@/components/ui/dropdowns/single-select.vue'\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'system-code-single-select',\n props: {\n /** \n * The numeric value used with `v-model` to bind the component state. This typically represents an ID or a selected value.\n * @type {number}\n * @required\n */\n modelValue: {\n type: Number,\n required: true\n },\n /** \n * The type of code used to fetch system codes. This determines which set of codes will be retrieved and displayed in the multi-select component.\n * @type {CodeType}\n * @required\n */\n codeType: {\n type: Number as PropType,\n required: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default true\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show Clear button.\n * @type {boolean}\n * @default true\n */\n showClearButton: {\n type: Boolean,\n default: false\n },\n /** \n * Determines whether to show search textbox.\n * @type {boolean}\n * @default true\n */\n showSearch: {\n type: Boolean,\n default: false\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @default: FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * An array of code IDs to exclude from the fetched system codes. This ensures that certain codes are not displayed in the selection list.\n * @type {Number[]}\n * @default []\n */\n idsToExclude: {\n type: Array as PropType,\n default() {\n return []\n }\n }\n},\n emits: ['update:modelValue', 'valueChanged'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst systemCodesStore = useSystemCodesStore();\nconst systemCodes = ref([]);\n\nonMounted(async () => {\n // Gets all system codes for the passed code type so that they can be displayed drop of of the multi select component\n await fetchSystemCodes();\n});\n\nconst fetchSystemCodes = async () => {\n if (!props.codeType) return; // Prevent unnecessary calls\n\n try {\n let codes = await systemCodesStore.getSystemCodesByCodeType(props.codeType);\n\n if (props.idsToExclude.length > 0) {\n codes = codes.filter(code => !props.idsToExclude.includes(code.id));\n }\n\n systemCodes.value = codes;\n } catch (error) {\n displayErrorMessage(getErrorMessage(error));\n }\n};\n\n// Watch for changes in codeType (handles modal re-open scenario)\nwatch(() => props.codeType, fetchSystemCodes, { immediate: true });\n\n\n\nconst selectedValueID = computed({\n get: () => props.modelValue,\n set: (value: Number) => emit('update:modelValue', value)\n});\n\nwatch(() => selectedValueID.value, () => {\n let selectedValue = systemCodes.value.filter((idDescriptionPair) => { return idDescriptionPair.id == selectedValueID.value });\n emit('valueChanged', selectedValue.length > 0 ? selectedValue[0].description : '');\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(singleSelect, {\n modelValue: selectedValueID.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedValueID).value = $event)),\n \"data-source\": systemCodes.value,\n readOnly: props.readOnly,\n label: __props.label,\n showClearButton: props.showClearButton,\n showSearch: props.showSearch,\n \"allow-zero-value\": true,\n width: __props.width\n }, null, 8, [\"modelValue\", \"data-source\", \"readOnly\", \"label\", \"showClearButton\", \"showSearch\", \"width\"]))\n}\n}\n\n})","import script from \"./system-code-single-select.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./system-code-single-select.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ad0e49fe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"label\"\n}\nconst _hoisted_2 = { style: {\"width\":\"100%\"} }\n\nimport { PropType, computed } from 'vue';\nimport { DxSwitch } from 'devextreme-vue/switch';\nimport { FieldValidation } from 'acquaint-api/validation/FieldValidation';\nimport AcquaintDateBox from '../../ui/inputs/acquaint-date-box.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport moment from 'moment';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'date-toggle',\n props: {\n /** A string which represents a Date value, must be a blank string or a Date formatted in UTC e.g. 2023-05-31T11:03:17.422Z */\n /** \n * The string value used with `v-model` to control the visibility or state of a modal or component.\n * @type {string}\n * @required\n */\n modelValue: {\n type: String,\n required: true,\n default: \"\"\n },\n /** \n * The width of the field, defined by the `FieldSize` enum.\n * @type {FieldSize}\n * @ default: FieldSize.Full\n */\n width: {\n type: String as PropType,\n default: FieldSize.Full\n },\n /** \n * The maximum allowed date value for the input.\n * @type {Date}\n * @default: undefined\n */\n maxDate: {\n type: Date,\n default: undefined\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default false\n */\n readOnly: {\n type: Boolean,\n default: false\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n /** \n * The validation rules and constraints applied to the field. Defines the validation logic to ensure correct user input.\n * @type {FieldValidation}\n * @required\n */\n fieldValidation: {\n type: Object as PropType,\n required: true\n },\n /** \n * Determines whether the time is included.\n * @type {boolean}\n * @default false\n */\n includeTime: {\n type: Boolean,\n default: false\n }\n},\n emits: ['update:modelValue', 'toggleValueUpdated'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst dateValue = computed({\n get: () => props.modelValue,\n set: (value: string) => emit('update:modelValue', value)\n});\n\nconst toggle = computed(() => !!dateValue.value)\n\n/** Handles the Switch toggle event */\nconst onValueChanged = (e: any) => {\n emit('toggleValueUpdated', e.value);\n if (!e.value) {\n // if the toggle has been turned off, set the date to blank, which will hide the field\n dateValue.value = \"\";\n } else {\n if (dateValue.value === \"\") {\n // toggle enabled, set the date to now only if it was previously set to blank\n dateValue.value = props.includeTime ? moment().format('YYYY-MM-DDTHH:mm') : moment().format('YYYY-MM-DD');\n }\n }\n}\n\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(__props.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"date-toggle-container\",\n style: _normalizeStyle({ 'width': __props.width })\n }, [\n _createVNode(_unref(DxSwitch), {\n value: toggle.value,\n focusStateEnabled: false,\n switchedOffText: \"No\",\n switchedOnText: \"Yes\",\n onValueChanged: onValueChanged,\n readOnly: props.readOnly\n }, null, 8, [\"value\", \"readOnly\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AcquaintDateBox, {\n modelValue: dateValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((dateValue).value = $event)),\n \"field-validation\": __props.fieldValidation,\n maxDate: __props.maxDate,\n disabled: !toggle.value,\n \"include-time\": __props.includeTime,\n readOnly: props.readOnly\n }, null, 8, [\"modelValue\", \"field-validation\", \"maxDate\", \"disabled\", \"include-time\", \"readOnly\"])\n ])\n ], 4)\n ], 64))\n}\n}\n\n})","import script from \"./date-toggle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./date-toggle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./date-toggle.vue?vue&type=style&index=0&id=ad0e49fe&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ad0e49fe\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6a3e5ee5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"switch-container\" }\nconst _hoisted_2 = { key: 0 }\n\nimport { computed } from 'vue';\nimport { DxSwitch } from 'devextreme-vue/switch';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'switch-toggle',\n props: {\n /** \n * The boolean, or number value used with `v-model` to control the visibility or state of a modal or component.\n * @type [number, boolean]\n * @required\n */\n modelValue: {\n type: [Number, Boolean],\n required: true\n },\n /** \n * Determines whether the control is read only.\n * @type {boolean}\n * @default true\n */\n readOnly: {\n type: Boolean,\n default: true\n },\n /** \n * The label displayed for the control.\n * @type {String}\n * @default ''\n */\n label: {\n type: String,\n default: ''\n },\n marginBottom: {\n type: String,\n default: '0.75rem'\n },\n labelWidth: {\n type: String,\n default: 'fit-content'\n }\n},\n emits: ['update:modelValue', 'onVaueChange'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"100ec02c\": (props.marginBottom),\n \"1c90ede3\": (props.labelWidth)\n}))\n\n\n\n\n\nconst switchModel = computed({\n get: () => props.modelValue,\n set: (value: boolean | number) => emit('update:modelValue', value)\n});\n\nconst onChange = (e: any) => {\n // Double not notation used to ensure a boolean value instead of a numeric conversion\n let newValue: boolean | number = !!e.value;\n\n // To avoid errors in parent components, ensure the new value matches the type of the original modelValue \n if (typeof props.modelValue === 'number') {\n newValue = e.value ? 1 : 0\n }\n\n switchModel.value = newValue;\n emit('onVaueChange', newValue);\n};\n\n// As the DxSwitch component requires a boolean, we must ensure the modelValue passed is converted to a boolean\nconst dxSwitchValue = computed(() => !!switchModel.value);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (__props.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(__props.label), 1))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(DxSwitch), {\n value: dxSwitchValue.value,\n onValueChanged: onChange,\n disabled: props.readOnly\n }, null, 8, [\"value\", \"disabled\"])\n ]))\n}\n}\n\n})","import script from \"./switch-toggle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./switch-toggle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./switch-toggle.vue?vue&type=style&index=0&id=6a3e5ee5&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6a3e5ee5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bb9c7e52\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"tab-fields\"\n}\nconst _hoisted_2 = { class: \"form-grid\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"tab-fields\"\n}\nconst _hoisted_4 = { class: \"form-grid\" }\nconst _hoisted_5 = { class: \"group-box\" }\nconst _hoisted_6 = { class: \"group-content\" }\nconst _hoisted_7 = { class: \"group-box\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"group-header\" }, \"Diary\", -1))\nconst _hoisted_9 = { class: \"group-content\" }\nconst _hoisted_10 = { class: \"column-grid\" }\nconst _hoisted_11 = { class: \"group-box\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"group-header\" }, \"Photo\", -1))\nconst _hoisted_13 = { class: \"group-content\" }\nconst _hoisted_14 = { class: \"upload-image-section\" }\nconst _hoisted_15 = { class: \"picture-container\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"displayed-file\"\n}\nconst _hoisted_17 = [\"src\"]\nconst _hoisted_18 = {\n key: 1,\n class: \"fa-regular fa-image awaiting-news-image\"\n}\nconst _hoisted_19 = { class: \"upload-button-disclaimer-container\" }\nconst _hoisted_20 = { class: \"group-box\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"group-header\" }, \"Signature\", -1))\nconst _hoisted_22 = { class: \"group-content\" }\nconst _hoisted_23 = { class: \"upload-image-section\" }\nconst _hoisted_24 = { class: \"picture-container\" }\nconst _hoisted_25 = {\n key: 0,\n class: \"displayed-file\"\n}\nconst _hoisted_26 = [\"src\"]\nconst _hoisted_27 = {\n key: 1,\n class: \"fa-regular fa-image awaiting-news-image\"\n}\nconst _hoisted_28 = { class: \"upload-button-disclaimer-container\" }\n\nimport ModalBase from '@/components/ui/modals/modal-base.vue';\nimport { computed, ref, inject, watch, onMounted } from 'vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { FieldSize } from '@/enums/system/FieldSize';\nimport { UsersValidation } from 'acquaint-api/validation/UsersValidation';\nimport { ContactsValidation } from 'acquaint-api/validation/ContactsValidation';\nimport lookupSingleSelect from '@/components/ui/lookup/lookup-single-select.vue';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { UserDetails } from '@/types/users/UserDetails';\nimport { useCurrentUserStore } from '@/stores/CurrentUserStore';\nimport { DxTabPanel, DxItem } from 'devextreme-vue/tab-panel';\nimport { CurrentUser } from \"@/types/user/CurrentUser\";\nimport { AppMode } from \"@/enums/system/AppMode\";\nimport ColourPicker from '@/components/ui/inputs/colour-picker.vue';\nimport { UserImage } from '@/types/users/UserImage';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport { convertCorrespondenceFileToBlob, getFileNameParts } from '@/utils/files/CorrespondenceFileConverter';\nimport FileUpload from '../../ui/inputs/file-upload.vue';\nimport SwitchToggle from '@/components/ui/toggles/switch-toggle.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'edit-user-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the user.\n * @type {number}\n * @required\n */\n userId: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue',\n /** \n * Triggered when the save operation is successful.\n * This informs the parent component that the user has been saved.\n * @event saved.\n */\n 'saved'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showStatusModal = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\nconst apiData = ref();\nconst userDetails = ref();\nconst userIsLocked = ref(false);\nconst keepingModalOpening = ref(false);\nconst currentUserStore = useCurrentUserStore();\nconst selectedTabPanel = ref(0);\nconst loggedInUser = ref();\n\n//photo and signature variables\nconst resetPhotoField = ref(false);\nconst resetSignatureField = ref(false);\nconst photoToUpload = ref();\nconst uploadedPhotoURL = ref('');\nconst recordPhoto = ref();\nconst signatureToUpload = ref();\nconst uploadedSignatureURL = ref('');\nconst recordSignature = ref();\n\nonMounted(async () => {\n loggedInUser.value = await currentUserStore.getCurrentUserDetails();\n});\n\nconst fetchUserDetails = async () => {\n try {\n apiData.value = await acquaintApiClient.httpGet(`app/user/record/${props.userId}`);\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n apiData.value = undefined;\n }\n};\n\nconst submitData = async () => {\n try {\n userDetails.value = await acquaintApiClient.httpPost(`app/user/record/${props.userId}`, userDetails.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst onSaveClick = async (e: any) => {\n const validate = e.validationGroup.validate();\n\n // Avoid unnecessary api calls if form is invalid\n if (!validate.isValid || !userDetails.value) {\n return;\n }\n\n if (photoToUpload.value) {\n await uploadPhoto()\n userDetails.value.photo = photoToUpload.value.name;\n } else {\n userDetails.value.photo = '';\n }\n if (signatureToUpload.value) {\n await uploadSignature();\n userDetails.value.signature = signatureToUpload.value.name;\n } else {\n userDetails.value.signature = '';\n }\n await lockUserDetails();\n if (userIsLocked.value) return;\n\n // Save wasn't sucessful, so allow user to retry / correct errors\n if (!await submitData()) {\n return;\n }\n\n // To avoid invalid database connection tokens, we must generate a new token\n if (await editingLoggedInUser() && userDetails.value?.password) {\n acquaintApiClient.RefreshDatabaseConnectionToken(userDetails.value.password);\n }\n\n changesMade.value = false;\n showStatusModal.value = false;\n setTimeout(() => { emit('saved') }, 500);\n};\n\nconst uploadPhoto = async () => {\n try {\n await acquaintApiClient.uploadFile(`app/user/${userDetails.value?.id}/photo`, photoToUpload.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst uploadSignature = async () => {\n try {\n await acquaintApiClient.uploadFile(`app/user/${userDetails.value?.id}/signature`, signatureToUpload.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst editingLoggedInUser = async () => {\n return props.userId === loggedInUser.value?.id;\n};\n\nconst onCancelClick = () => {\n showStatusModal.value = false;\n};\n\nconst changesMade = ref(false);\n\nconst lockUserDetails = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/users/${props.userId}/lock`, {\n lock: true,\n extraInfo: ''\n });\n userIsLocked.value = false;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n userIsLocked.value = true;\n }\n};\n\nconst unLockUserDetails = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/users/${props.userId}/lock`, {\n lock: false,\n extraInfo: ''\n });\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n }\n};\n\nwatch(() => showStatusModal.value, async () => {\n if (!showStatusModal.value || keepingModalOpening.value) {\n return;\n }\n resetPhotoField.value = true;\n setTimeout(() => {\n resetPhotoField.value = false;\n }, 100);\n\n resetSignatureField.value = true;\n setTimeout(() => {\n resetSignatureField.value = false;\n }, 100);\n\n uploadedPhotoURL.value = '';\n uploadedSignatureURL.value = '';\n photoToUpload.value = undefined;\n signatureToUpload.value = undefined;\n\n // We must reset this so that the cancel confirmation modal only opens when users select the cancel\n // button after making changed\n changesMade.value = false;\n selectedTabPanel.value = 0;\n\n await fetchUserDetails();\n // await lockUserDetails();\n await fetchDisplayPhoto();\n await fetchDisplaySignature();\n\n if (!apiData.value) {\n userDetails.value = undefined;\n return;\n }\n\n userDetails.value = { ...apiData.value };\n});\n\nwatch(() => userDetails.value, (value) => {\n changesMade.value = JSON.stringify(value) != JSON.stringify(apiData.value)\n}, { deep: true });\n\nconst modalClosed = () => {\n unLockUserDetails();\n keepingModalOpening.value = false\n\n // Increment password key to reset password mask\n passwordKey.value++;\n};\n\nconst fetchDisplaySignature = async () => {\n await fetchSignature();\n\n if (!recordSignature.value || !recordSignature.value.file) {\n uploadedSignatureURL.value = '';\n return;\n }\n\n const fileName = getFileNameParts(recordSignature.value.file.fileDownloadName);\n if (fileName) {\n signatureToUpload.value = new File([convertCorrespondenceFileToBlob(recordSignature.value.file)], fileName.nameWithExtension, { type: recordSignature.value.file.contentType });\n uploadedSignatureURL.value = window.URL.createObjectURL(signatureToUpload.value);\n }\n};\n\nconst fetchSignature = async () => {\n try {\n recordSignature.value = await acquaintApiNextClient.httpGet(`Users/${props.userId}/Signature`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n recordPhoto.value = undefined;\n }\n};\nconst fetchDisplayPhoto = async () => {\n await fetchPhoto();\n\n if (!recordPhoto.value || !recordPhoto.value.file) {\n uploadedPhotoURL.value = '';\n return;\n }\n\n const fileName = getFileNameParts(recordPhoto.value.file.fileDownloadName);\n if (fileName) {\n photoToUpload.value = new File([convertCorrespondenceFileToBlob(recordPhoto.value.file)], fileName.nameWithExtension, { type: recordPhoto.value.file.contentType });\n uploadedPhotoURL.value = window.URL.createObjectURL(photoToUpload.value);\n }\n};\n\nconst fetchPhoto = async () => {\n try {\n recordPhoto.value = await acquaintApiNextClient.httpGet(`Users/${props.userId}/Photo`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n recordPhoto.value = undefined;\n }\n};\nconst photoAddedOrUpdated = (e: File[]) => {\n if (!e || e.length == 0) {\n photoToUpload.value = undefined;\n uploadedPhotoURL.value = '';\n return;\n }\n\n photoToUpload.value = e[0];\n uploadedPhotoURL.value = window.URL.createObjectURL(e[0]);\n};\nconst signatureAddedOrUpdated = (e: File[]) => {\n if (!e || e.length == 0) {\n signatureToUpload.value = undefined;\n uploadedSignatureURL.value = '';\n return;\n }\n\n signatureToUpload.value = e[0];\n uploadedSignatureURL.value = window.URL.createObjectURL(e[0]);\n};\n\nconst passwordKey = ref(0);\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(ModalBase, {\n modelValue: showStatusModal.value,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = ($event: any) => ((showStatusModal).value = $event)),\n title: \"User\",\n width: _unref(ModalWidth).Small,\n height: \"690px\",\n \"show-close-confirmation-prompt\": changesMade.value,\n onModalClosed: modalClosed,\n onCancelPromptDenied: _cache[16] || (_cache[16] = ($event: any) => (keepingModalOpening.value = true))\n }, {\n content: _withCtx(() => [\n _createVNode(_unref(DxTabPanel), {\n selectedIndex: selectedTabPanel.value,\n \"onUpdate:selectedIndex\": _cache[14] || (_cache[14] = ($event: any) => ((selectedTabPanel).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(DxItem), { title: \"General\" }, {\n default: _withCtx(() => [\n (userDetails.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AcquaintTextbox, {\n label: \"First Name\",\n modelValue: userDetails.value.firstNames,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userDetails.value.firstNames) = $event)),\n fieldValidation: _unref(ContactsValidation).FirstNames,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value,\n \"validation-group\": \"edit-user-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n label: \"Username\",\n modelValue: userDetails.value.username,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userDetails.value.username) = $event)),\n fieldValidation: _unref(UsersValidation).UserName,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value,\n \"validation-group\": \"edit-user-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n label: \"Last Name\",\n modelValue: userDetails.value.lastName,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userDetails.value.lastName) = $event)),\n fieldValidation: _unref(ContactsValidation).LastName,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value,\n \"validation-group\": \"edit-user-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"]),\n (_openBlock(), _createBlock(AcquaintTextbox, {\n label: \"Password\",\n modelValue: userDetails.value.password,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userDetails.value.password) = $event)),\n fieldValidation: _unref(UsersValidation).Password,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value,\n \"validation-group\": \"edit-user-modal\",\n key: passwordKey.value\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"])),\n _createVNode(lookupSingleSelect, {\n label: \"Title\",\n modelValue: userDetails.value.title,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((userDetails.value.title) = $event)),\n \"lookup-source\": _unref(LookupTableSource).Titles,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value\n }, null, 8, [\"modelValue\", \"lookup-source\", \"width\", \"readOnly\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Branch\",\n \"lookup-source\": _unref(LookupTableSource).Sites,\n modelValue: userDetails.value.siteID,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((userDetails.value.siteID) = $event)),\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value,\n \"allow-zero-value\": true\n }, null, 8, [\"lookup-source\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n label: \"Email\",\n modelValue: userDetails.value.email,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((userDetails.value.email) = $event)),\n fieldValidation: _unref(ContactsValidation).Email,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value,\n \"validation-group\": \"edit-user-modal\"\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Status\",\n \"lookup-source\": _unref(LookupTableSource).Statuses,\n modelValue: userDetails.value.statusID,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((userDetails.value.statusID) = $event)),\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value\n }, null, 8, [\"lookup-source\", \"modelValue\", \"width\", \"readOnly\"]),\n _createVNode(AcquaintTextbox, {\n label: \"Mobile\",\n modelValue: userDetails.value.mobileTelephone,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((userDetails.value.mobileTelephone) = $event)),\n fieldValidation: _unref(ContactsValidation).MobileTelephone,\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value\n }, null, 8, [\"modelValue\", \"fieldValidation\", \"width\", \"readOnly\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Type\",\n \"lookup-source\": _unref(LookupTableSource).UserTypes,\n modelValue: userDetails.value.userTypeId,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((userDetails.value.userTypeId) = $event)),\n width: _unref(FieldSize).Full,\n readOnly: userIsLocked.value\n }, null, 8, [\"lookup-source\", \"modelValue\", \"width\", \"readOnly\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_unref(DxItem), {\n title: \"Advanced\",\n visible: _unref(AppMode).Full == loggedInUser.value?.appMode\n }, {\n default: _withCtx(() => [\n (userDetails.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(SwitchToggle, {\n modelValue: userDetails.value.allowSignatoryChange,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((userDetails.value.allowSignatoryChange) = $event)),\n label: \"Signatory Change\",\n \"label-width\": \"6.5rem\",\n readOnly: userIsLocked.value\n }, null, 8, [\"modelValue\", \"readOnly\"]),\n _createVNode(lookupSingleSelect, {\n label: \"Department\",\n \"lookup-source\": _unref(LookupTableSource).UserDepartments,\n modelValue: userDetails.value.departmentId,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((userDetails.value.departmentId) = $event)),\n width: _unref(FieldSize).Full,\n \"read-only\": userIsLocked.value\n }, null, 8, [\"lookup-source\", \"modelValue\", \"width\", \"read-only\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(ColourPicker, {\n label: \"Text Colour\",\n modelValue: userDetails.value.foreColor,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = ($event: any) => ((userDetails.value.foreColor) = $event)),\n readOnly: false\n }, null, 8, [\"modelValue\"]),\n _createVNode(ColourPicker, {\n label: \"Background Colour\",\n modelValue: userDetails.value.backColor,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = ($event: any) => ((userDetails.value.backColor) = $event)),\n readOnly: false\n }, null, 8, [\"modelValue\"])\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"section\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n (uploadedPhotoURL.value != '')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"img\", { src: uploadedPhotoURL.value }, null, 8, _hoisted_17)\n ]))\n : (_openBlock(), _createElementBlock(\"i\", _hoisted_18))\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(FileUpload, {\n width: \"300px\",\n text: \"Upload\",\n fileTypes: \".jpg\",\n reset: resetPhotoField.value,\n multiple: false,\n onFilesChanged: photoAddedOrUpdated,\n \"read-only\": userIsLocked.value,\n \"show-file-list\": true,\n defaultFiles: photoToUpload.value ? [photoToUpload.value] : []\n }, null, 8, [\"reset\", \"read-only\", \"defaultFiles\"])\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _hoisted_21,\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"section\", _hoisted_23, [\n _createElementVNode(\"div\", _hoisted_24, [\n (uploadedSignatureURL.value != '')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [\n _createElementVNode(\"img\", { src: uploadedSignatureURL.value }, null, 8, _hoisted_26)\n ]))\n : (_openBlock(), _createElementBlock(\"i\", _hoisted_27))\n ]),\n _createElementVNode(\"div\", _hoisted_28, [\n _createVNode(FileUpload, {\n width: \"300px\",\n text: \"Upload\",\n fileTypes: \".jpg\",\n reset: resetSignatureField.value,\n multiple: false,\n onFilesChanged: signatureAddedOrUpdated,\n \"read-only\": userIsLocked.value,\n \"show-file-list\": true,\n defaultFiles: signatureToUpload.value ? [signatureToUpload.value] : []\n }, null, 8, [\"reset\", \"read-only\", \"defaultFiles\"])\n ])\n ])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }, 8, [\"selectedIndex\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', onClick: (e) => { onSaveClick(e); }, validationGroup: 'edit-user-modal' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { onCancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"width\", \"show-close-confirmation-prompt\"]))\n}\n}\n\n})","import script from \"./edit-user-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./edit-user-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./edit-user-modal.vue?vue&type=style&index=0&id=bb9c7e52&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bb9c7e52\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-31334ef8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"image-title\" }, \"Image\", -1))\nconst _hoisted_3 = { class: \"upload-view-image-section\" }\nconst _hoisted_4 = { class: \"picture-icon-container\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"displayed-image\"\n}\nconst _hoisted_6 = [\"src\"]\nconst _hoisted_7 = {\n key: 1,\n class: \"far fa-newspaper awaiting-news-image\"\n}\nconst _hoisted_8 = { class: \"upload-button-disclaimer-container\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"picture-disclaimer\" }, [\n /*#__PURE__*/_createElementVNode(\"i\", null, \"Note: Please ensure you have the rights to use any pictures so that the pictures are copyright free. Failure to do so could result in the owner taking action against unauthorised use.\")\n], -1))\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { ModalWidth } from '@/types/ui/modals/ModalWidth';\nimport { DxToolbarItem } from 'devextreme-vue/popup';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport { AcquaintApiNextClient } from '@/services/AcquaintApiNextClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { ValidatedEvent } from 'devextreme/ui/validator';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport AcquaintDateBox from '@/components/ui/inputs/acquaint-date-box.vue';\nimport AcquaintTextbox from '@/components/ui/inputs/acquaint-textbox.vue';\nimport { NewsValidation } from 'acquaint-api/validation/NewsValidation';\nimport { News } from 'acquaint-api/models/News';\nimport AcquaintTextArea from '../ui/inputs/acquaint-text-area.vue';\nimport FileUpload from '../ui/inputs/file-upload.vue';\nimport { getErrorMessage } from 'bright-logic-core/src/errors';\nimport { WebsiteNewsRecordImage } from '@/types/marketing/WebsiteNewsRecordImage';\nimport { getFileNameParts, convertCorrespondenceFileToBlob } from '@/utils/files/CorrespondenceFileConverter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'new-edit-news-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The unique identifier for the template.\n * @type {number}\n * @required\n */\n configurationId: {\n type: Number,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes.\n * This is used to update the v-model variable in the parent component and control the visibility of the modal.\n * @event update:modelValue\n * @property {boolean} value - The updated state to reflect whether the modal should be shown or hidden.\n */\n 'update:modelValue', \n\n /** \n * Triggered when an existing configuration item is edited.\n * This notifies the parent component that an item has been modified.\n * @event configurationItemEdited\n * @property {boolean} inActive - Indicates whether the configuration item is inactive.\n */\n 'configurationItemEdited', \n\n /** \n * Triggered when a new configuration item is created.\n * This notifies the parent component that a new item has been added.\n * @event configurationItemCreated\n */\n 'configurationItemCreated'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst acquaintApiNextClient = inject('AcquaintApiNextClient') as AcquaintApiNextClient;\n\nconst itemData = ref();\nconst lockedByAnotherUser = ref(false)\nconst keepingModalOpening = ref(false);\nconst submissionResponse = ref();\nconst resetImageField = ref(false);\nconst imageToUpload = ref();\nconst uploadedPictureURL = ref('');\nconst recordImage = ref();\n\nconst lockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/news/${props.configurationId}/lock`, { lock: true, extraInfo: '' });\n } catch (err) {\n lockedByAnotherUser.value = true;\n displayErrorMessage('These details are already being edited by another user.');\n }\n};\n\nconst unLockConfigurationItem = async () => {\n try {\n await acquaintApiClient.httpPostVoid(`database/news/${props.configurationId}/lock`, { lock: false, extraInfo: '' });\n } catch (err) {\n displayErrorMessage('We were unable to unlock these details.');\n }\n};\n\nconst fetchItemData = async () => {\n try {\n if (props.configurationId == 0) {\n itemData.value = await acquaintApiClient.httpGet(`database/news/defaultmodel`);\n } else {\n itemData.value = await acquaintApiClient.httpGet(`database/news/${props.configurationId}`);\n }\n } catch (err) {\n itemData.value = undefined;\n if (props.configurationId == 0) {\n displayErrorMessage('The selected details could not be fetched');\n } else {\n displayErrorMessage('We could not fetch the default data');\n }\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (!showModal.value || keepingModalOpening.value) {\n return\n }\n\n lockedByAnotherUser.value = false;\n resetImageField.value = true;\n\n setTimeout(() => { resetImageField.value = false }, 100);\n uploadedPictureURL.value = '';\n imageToUpload.value = undefined;\n\n await fetchItemData();\n\n if (props.configurationId == 0) {\n return;\n }\n\n await fetchDisplayImage();\n\n await lockConfigurationItem();\n});\n\nconst fetchImage = async () => {\n try {\n recordImage.value = await acquaintApiNextClient.httpGet(`News/${props.configurationId}/Image`)\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n recordImage.value = undefined;\n }\n};\n\nconst fetchDisplayImage = async () => {\n await fetchImage();\n\n if (!recordImage.value || !recordImage.value.image) {\n uploadedPictureURL.value = '';\n return;\n }\n\n const fileName = getFileNameParts(recordImage.value.image.fileDownloadName);\n if (fileName) {\n imageToUpload.value = new File([convertCorrespondenceFileToBlob(recordImage.value.image)], fileName.nameWithExtension, { type: recordImage.value.image.contentType });\n uploadedPictureURL.value = window.URL.createObjectURL(imageToUpload.value);\n }\n};\n\nconst saveDetails = async (e: any) => {\n const validation: ValidatedEvent = e.validationGroup.validate();\n // Don't continue if user has entered invalid data\n if (!validation.isValid) {\n return;\n }\n\n if (!await callSaveApi()) {\n return;\n }\n\n if (imageToUpload.value) {\n await uploadImage()\n }\n\n lockedByAnotherUser.value = true;\n\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n emit('configurationItemEdited', itemData.value?.inActive);\n } else {\n emit('configurationItemCreated');\n }\n\n showModal.value = false;\n};\n\nconst uploadImage = async () => {\n try {\n await acquaintApiClient.uploadFile(`app/marketing/news/${submissionResponse.value?.id}/picture`, imageToUpload.value);\n return true;\n } catch (err) {\n displayErrorMessage(getErrorMessage(err));\n return false;\n }\n};\n\nconst callSaveApi = async () => {\n try {\n if (props.configurationId == 0) {\n submissionResponse.value = await acquaintApiClient.httpPost(`database/news`, itemData.value);\n } else {\n submissionResponse.value = await acquaintApiClient.httpPut(`database/news/${props.configurationId}`, itemData.value);\n }\n return true;\n } catch (err) {\n if (props.configurationId == 0) {\n displayErrorMessage('A new system item could not be created.');\n } else {\n displayErrorMessage('The selected details could not be edited.');\n }\n return false;\n }\n}\nconst cancelClick = () => {\n showModal.value = false;\n};\n\nconst keepEnteredInformation = () => {\n keepingModalOpening.value = true;\n};\n\nconst cancelPromptDenied = () => {\n keepingModalOpening.value = true;\n};\n\nconst modalClosed = async () => {\n if (props.configurationId > 0) {\n await unLockConfigurationItem();\n }\n keepingModalOpening.value = false;\n};\n\nconst imageAddedOrUpdated = (e: File[]) => {\n if (!e || e.length == 0) {\n imageToUpload.value = undefined;\n uploadedPictureURL.value = '';\n return;\n }\n\n imageToUpload.value = e[0];\n uploadedPictureURL.value = window.URL.createObjectURL(e[0]);\n};\n\nconst maxDate = new Date();\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(modalBase, {\n title: \"News\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((showModal).value = $event)),\n showCloseButton: true,\n showCloseConfirmationPrompt: !lockedByAnotherUser.value,\n height: \"650px\",\n onCancelConfirmationModal: keepEnteredInformation,\n onModalClosed: modalClosed,\n width: _unref(ModalWidth).Small,\n onCancelPromptDenied: cancelPromptDenied\n }, {\n content: _withCtx(() => [\n (itemData.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(AcquaintTextbox, {\n fieldValidation: _unref(NewsValidation).Subject,\n label: \"Subject\",\n modelValue: itemData.value.subject,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((itemData.value.subject) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"NewsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _createVNode(AcquaintDateBox, {\n fieldValidation: _unref(NewsValidation).NewsDate,\n label: \"Date\",\n modelValue: itemData.value.newsDate,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((itemData.value.newsDate) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"NewsValidationGroup\",\n \"max-date\": _unref(maxDate)\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\", \"max-date\"]),\n _createVNode(AcquaintTextArea, {\n fieldValidation: _unref(NewsValidation).Body,\n label: \"Body\",\n modelValue: itemData.value.body,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((itemData.value.body) = $event)),\n readOnly: lockedByAnotherUser.value,\n validationGroup: \"NewsValidationGroup\"\n }, null, 8, [\"fieldValidation\", \"modelValue\", \"readOnly\"]),\n _hoisted_2,\n _createElementVNode(\"section\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (uploadedPictureURL.value != '')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"img\", { src: uploadedPictureURL.value }, null, 8, _hoisted_6)\n ]))\n : (_openBlock(), _createElementBlock(\"i\", _hoisted_7))\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(FileUpload, {\n fileTypes: \".jpg\",\n reset: resetImageField.value,\n multiple: false,\n onFilesChanged: imageAddedOrUpdated,\n \"read-only\": lockedByAnotherUser.value,\n \"show-file-list\": true,\n defaultFiles: imageToUpload.value ? [imageToUpload.value] : []\n }, null, 8, [\"reset\", \"read-only\", \"defaultFiles\"]),\n _hoisted_9\n ])\n ]),\n _createVNode(SwitchToggle, {\n label: \"Inactive\",\n labelWidth: \"7.5rem\",\n modelValue: itemData.value.inActive,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((itemData.value.inActive) = $event)),\n readOnly: lockedByAnotherUser.value\n }, null, 8, [\"modelValue\", \"readOnly\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Save', disabled: lockedByAnotherUser.value, onClick: (e) => { saveDetails(e) }, validationGroup: 'NewsValidationGroup' }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { cancelClick() } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"showCloseConfirmationPrompt\", \"width\"]))\n}\n}\n\n})","import script from \"./new-edit-news-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./new-edit-news-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./new-edit-news-modal.vue?vue&type=style&index=0&id=31334ef8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-31334ef8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb7d6074\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toggle-container\" }\n\nimport { computed, ref, inject, watch } from 'vue';\nimport modalBase from '@/components/ui/modals/modal-base.vue';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\nimport { AcquaintApiClient } from '@/services/AcquaintApiClient';\nimport displayErrorMessage from '@/utils/ErrorHandling';\nimport { LookupTableSource } from 'acquaint-api/constants/LookupTableSource';\nimport GridBase from '../ui/grid/grid-base.vue';\nimport { DxColumn } from \"devextreme-vue/data-grid\";\nimport { DxToolbarItem } from 'devextreme-vue/popup'\nimport { displayQuestionAlert } from '@/alerts/questionAlert';\nimport SwitchToggle from '../ui/toggles/switch-toggle.vue';\nimport { useUserPermissionsStore } from '@/stores/UserPermissionsStore';\nimport { UserPermissions } from '@/types/user/permissions/UserPermissions';\nimport NewEditNewsModal from './new-edit-news-modal.vue';\nimport { DxContextMenu } from 'devextreme-vue/context-menu';\nimport { ContextMenuItem } from '@/types/ui/menus/ContextMenuItem';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'news-configuration-modal',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n },\n /** \n * The boolean value indicates whether to show Select button.\n * @type {boolean}\n * @default false\n */\n showSelectButton: {\n type: Boolean,\n default: false\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue', \n \n /** Triggered when an item is selected. This event is used to notify the parent component\n * about the selected news item, typically when a user confirms their selection in the modal.\n * @property {number} id - The unique identifier of the selected news item.\n * @property {string} description - A description or label associated with the selected news item.\n */\n 'configurationSelected'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nconst showModal = computed({\n get: () => props.modelValue,\n set: (value: Boolean) => emit('update:modelValue', value)\n});\n\nconst userPermissionsStore = useUserPermissionsStore();\nconst acquaintApiClient = inject('AcquaintApiClient') as AcquaintApiClient;\nconst newsList = ref([]);\nconst showInactiveItems = ref(false);\nconst userPermissions = ref();\nconst editNewModalId = ref(0);\nconst selectedConfigurationItem = ref({ id: 0, description: '' });\nconst displayEditNewModal = ref(false);\nconst contextMenuId = ref('news-configuration-action-menu');\nconst showFunctionsMenu = ref(false);\n\nconst disableEdit = computed(() => { return selectedConfigurationItem.value.id == 0 });\n\nconst showInactive = ref(0);\n\nconst fetchConfigurationList = async () => {\n try {\n newsList.value = await acquaintApiClient.httpGet\n (`app/system/lookup/${LookupTableSource.News}?includeinactive=${showInactiveItems.value}`);\n } catch (err) {\n displayErrorMessage('The selected details could not be fetched');\n newsList.value = [];\n }\n};\n\nwatch(() => showModal.value, async () => {\n if (showModal.value) {\n userPermissions.value = await userPermissionsStore.getUserPermissions();\n fetchConfigurationList();\n }\n});\n\nconst configurationItemSelected = (e: any) => {\n if (!e) {\n return\n }\n selectedConfigurationItem.value = e;\n};\n\nconst configurationItemDoubleClicked = (e: any) => {\n if (!e) {\n return\n }\n\n selectedConfigurationItem.value = e;\n if (props.showSelectButton) {\n selectItem();\n } else {\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n }\n};\n\nconst openEditModal = () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.edit) {\n displayErrorMessage(\"Sorry, you do not have the permission to edit these details.\");\n return;\n }\n\n editNewModalId.value = selectedConfigurationItem.value.id;\n displayEditNewModal.value = true;\n};\n\nconst openNewModal = () => {\n\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.new) {\n displayErrorMessage(\"Sorry, you do not have the permission to create a new system item.\");\n\n return;\n }\n\n editNewModalId.value = 0;\n displayEditNewModal.value = true;\n};\n\nconst deleteConfigurationItem = async () => {\n if (!userPermissions.value || !userPermissions.value.contactsConfiguration.delete) {\n displayErrorMessage(\"Sorry, you do not have the permission to delete these details.\");\n return;\n }\n\n if (selectedConfigurationItem.value.id < 1000) {\n displayErrorMessage(\"Sorry, you can't delete this system item as it is required by Acquaint. However you may edit it, and set it as Inactive to remove it from this list.\")\n }\n\n const question = await displayQuestionAlert('Are you sure you want to delete these details?');\n\n if (!question.isConfirmed) {\n return;\n }\n\n if (await callDeletApi()) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n }\n};\n\nconst callDeletApi = async () => {\n try {\n await acquaintApiClient.httpDeleteVoid(`database/news/${selectedConfigurationItem.value.id}`);\n return true;\n } catch (err) {\n displayErrorMessage(\"Sorry, these details cannot be deleted as they are referenced elsewhere.\");\n return false;\n }\n};\n\nconst inactiveToggleValueChange = async () => {\n showInactiveItems.value = showInactive.value ? true : false;\n await fetchConfigurationList();\n\n if (showInactive.value) {\n return;\n }\n\n const findInactiveItem = newsList.value?.find((item) => { return item.id == selectedConfigurationItem.value.id });\n\n if (!findInactiveItem) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n};\n\nconst newItemCreated = () => {\n selectedConfigurationItem.value = { id: 0, description: '' };\n fetchConfigurationList();\n};\n\nconst editItem = (inActive: number) => {\n if (inActive && !showInactiveItems.value) {\n selectedConfigurationItem.value = { id: 0, description: '' };\n }\n\n fetchConfigurationList();\n};\n\nconst menuItems = computed(() => {\n const menu: ContextMenuItem[] = [\n {\n text: 'Edit',\n key: 'edit',\n disabled: disableEdit.value,\n icon: ''\n },\n {\n text: 'Delete',\n key: 'delete',\n disabled: disableEdit.value,\n icon: ''\n }\n ];\n return menu;\n});\nconst onMenuItemClick = (e: any) => {\n switch (e.itemData.key) {\n case 'edit':\n openEditModal();\n break;\n case 'delete':\n deleteConfigurationItem();\n break;\n }\n};\nconst selectItem = () => {\n emit('configurationSelected', selectedConfigurationItem.value.id, selectedConfigurationItem.value.description);\n showModal.value = false;\n};\n\nconst editDeleteButtonsPositioning = computed(() => {\n return props.showSelectButton ? 'before' : 'after';\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(modalBase, {\n title: \"News\",\n modelValue: showModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showModal).value = $event)),\n \"show-close-button\": true,\n height: \"460px\"\n }, {\n \"non-scrollable-content\": _withCtx(() => [\n _createVNode(GridBase, {\n dataSource: newsList.value,\n onRowClick: configurationItemDoubleClicked,\n onRowSelected: configurationItemSelected,\n onAdaptiveRowSelection: configurationItemSelected,\n \"id-column-name\": \"id\",\n showColumnHeaders: false,\n \"pre-selected-id\": selectedConfigurationItem.value.id\n }, {\n \"header-content\": _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(SwitchToggle, {\n label: \"Show Inactive\",\n modelValue: showInactive.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showInactive).value = $event)),\n readOnly: false,\n onOnVaueChange: inactiveToggleValueChange,\n \"margin-bottom\": \"0rem\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n columns: _withCtx(() => [\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"description\",\n caption: \"\",\n \"hiding-priority\": 8,\n width: \"100%\"\n }),\n _createVNode(_unref(DxColumn), {\n \"data-field\": \"id\",\n caption: \"Id\",\n \"hiding-priority\": 1\n })\n ]),\n _: 1\n }, 8, [\"dataSource\", \"pre-selected-id\"])\n ]),\n footer: _withCtx(() => [\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Select', disabled: disableEdit.value, visible: __props.showSelectButton, onClick: () => { selectItem() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { elementAttr: { id: contextMenuId.value }, visible: __props.showSelectButton, text: 'Actions', onClick: () => { showFunctionsMenu.value = !showFunctionsMenu.value; } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: editDeleteButtonsPositioning.value,\n options: { text: 'Delete', visible: !__props.showSelectButton, disabled: disableEdit.value, onClick: () => { deleteConfigurationItem() } }\n }, null, 8, [\"location\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: editDeleteButtonsPositioning.value,\n options: { text: 'Edit', visible: !__props.showSelectButton, disabled: disableEdit.value, onClick: () => { openEditModal() } }\n }, null, 8, [\"location\", \"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'New', onClick: () => { openNewModal() } }\n }, null, 8, [\"options\"]),\n _createVNode(_unref(DxToolbarItem), {\n widget: \"dxButton\",\n toolbar: \"bottom\",\n location: \"after\",\n options: { text: 'Cancel', onClick: () => { showModal.value = false } }\n }, null, 8, [\"options\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(NewEditNewsModal, {\n modelValue: displayEditNewModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((displayEditNewModal).value = $event)),\n configurationId: editNewModalId.value,\n onConfigurationItemCreated: newItemCreated,\n onConfigurationItemEdited: editItem\n }, null, 8, [\"modelValue\", \"configurationId\"]),\n _createVNode(_unref(DxContextMenu), {\n visible: showFunctionsMenu.value,\n \"onUpdate:visible\": _cache[3] || (_cache[3] = ($event: any) => ((showFunctionsMenu).value = $event)),\n \"data-source\": menuItems.value,\n target: `#${contextMenuId.value}`,\n position: { my: 'bottom right', at: 'top right' },\n onItemClick: onMenuItemClick\n }, null, 8, [\"visible\", \"data-source\", \"target\"])\n ], 64))\n}\n}\n\n})","import script from \"./news-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./news-configuration-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./news-configuration-modal.vue?vue&type=style&index=0&id=eb7d6074&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eb7d6074\"]])\n\nexport default __exports__","import { useCssVars as _useCssVars, unref as _unref, defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4a4d775e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"button-inner-container\" }\nconst _hoisted_2 = { class: \"watermark\" }\nconst _hoisted_3 = { class: \"contents\" }\nconst _hoisted_4 = { class: \"button-icon\" }\nconst _hoisted_5 = { class: \"button-text-container\" }\nconst _hoisted_6 = { class: \"button-text\" }\n\nimport { computed } from 'vue';\n\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'home-page-button',\n props: {\n text: {\n type: String,\n required: true\n },\n backColor: {\n type: String,\n required: true\n },\n watermarkColor: {\n type: String,\n required: true\n },\n iconWidth: {\n type: String,\n default: '80px'\n },\n watermarkWidth: {\n type: String, \n default: '200px'\n }\n},\n emits: ['click'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n_useCssVars(_ctx => ({\n \"1cb662d9\": (__props.backColor),\n \"6fcecf62\": (__props.watermarkColor),\n \"70e5cdc5\": (__props.watermarkWidth),\n \"7b5814ea\": (__props.iconWidth),\n \"42884536\": (textRightPadding.value)\n}))\n\n\n\n\n\nconst onClick = () => emit('click');\n\nconst textRightPadding = computed(() => props.text.length < 10 ? '30px' : '0px');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"button-outer-container\",\n onClick: onClick\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"icon\")\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"icon\")\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(__props.text), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./home-page-button.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./home-page-button.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./home-page-button.vue?vue&type=style&index=0&id=4a4d775e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4a4d775e\"]])\n\nexport default __exports__","\n","import { render } from \"./tenant-switch-icon.vue?vue&type=template&id=3fba3cfb\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import { render } from \"./landlord-switch-icon.vue?vue&type=template&id=1bd075bf\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import { render } from \"./purchaser-switch-icon.vue?vue&type=template&id=534e82f6\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import { render } from \"./new-support-case-icon.vue?vue&type=template&id=486d36c2\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n","import { render } from \"./help-icon.vue?vue&type=template&id=4acb750d\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-48925fe4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"home-page-panel\" }\n\nimport { ref } from 'vue';\nimport router from '@/router';\nimport HomePageButton from '../ui/buttons/home-page-button.vue';\nimport NewSupportCaseModal from '@/components/support-cases/new-support-case-modal.vue';\nimport { RouteNames } from '@/router/RouteNames';\nimport TenantSwitchIcon from '../icons/tenant-switch-icon.vue';\nimport LandlordSwitchIcon from '../icons/landlord-switch-icon.vue';\nimport PurchaserSwitchIcon from '../icons/purchaser-switch-icon.vue';\nimport UtilitySwitchIcon from '../icons/utility-switch-icon.vue';\nimport SupportCaseIcon from '../icons/support-case-icon.vue';\nimport NewSupportCaseIcon from '../icons/new-support-case-icon.vue';\nimport TenantSwitchingModal from '../switches/tenant-switching/tenant-switching-modal.vue';\nimport LandlordSwitchingModal from \"@/components/switches/landlord-switching/landlord-switching-modal.vue\";\nimport PurchasingSwitchingModal from '../switches/purchaser-switching/purchasing-switching-modal.vue';\nimport HelpIcon from '../icons/help-icon.vue';\nimport { openUtilitySwitchingHelp } from '@/utils/system/helpViewer';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'utility-switching-agent-panel',\n setup(__props) {\n\nconst showNewTenantSwitchModal = ref(false);\nconst showLandlordSwitchModal = ref(false);\nconst showNewPurchaserSwitchModal = ref(false);\n\n/** Handles the click event of the Switch to Tenant button */\nconst onSwitchToTenantClick = () => showNewTenantSwitchModal.value = true;\n\n/** Handles the click event of the Switch to Landlord button */\nconst onSwitchToLandlordClick = () => showLandlordSwitchModal.value = true;\n\n/** Handles the click event of the Switch to Purchaser button */\nconst onSwitchToPurchaserClick = () => showNewPurchaserSwitchModal.value = true;\n\n/** Handles the click event of the Switchovers button */\nconst onSwitchoversClick = () => router.push({ name: RouteNames.UtilitySwitchesList });\n\n/** Handles the click event of the Support Cases button */\nconst onSupportCasesClick = () => navigateToSupportCases();\n\n/** Handles the click event of the Create Support Case button */\nconst onCreateSupportCaseClick = () => showNewSupportCaseModal.value = true;\n\nconst showNewSupportCaseModal = ref(false);\n\n/** Handles the new case created event of the new support case modal */\nconst onNewSupportCaseCreated = () => navigateToSupportCases();\n\nconst navigateToSupportCases = () => router.push({ name: RouteNames.SupportCases });\n\n/** Handles the click event of the Help button */\nconst onHelpClick = () => openUtilitySwitchingHelp();\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(HomePageButton, {\n text: \"Switch to Tenant\",\n onClick: onSwitchToTenantClick,\n \"back-color\": \"#1DA4A6\",\n \"watermark-color\": \"#68C2C3\"\n }, {\n icon: _withCtx(() => [\n _createVNode(TenantSwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Switch to Landlord\",\n onClick: onSwitchToLandlordClick,\n \"back-color\": \"#50B71D\",\n \"watermark-color\": \"#8ACF65\",\n \"icon-width\": \"90px\",\n \"watermark-width\": \"230px\"\n }, {\n icon: _withCtx(() => [\n _createVNode(LandlordSwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Switch to Purchaser\",\n onClick: onSwitchToPurchaserClick,\n \"back-color\": \"#8F48C8\",\n \"watermark-color\": \"#B684DB\"\n }, {\n icon: _withCtx(() => [\n _createVNode(PurchaserSwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Switches\",\n onClick: onSwitchoversClick,\n \"back-color\": \"#A13427\",\n \"watermark-color\": \"#C1776E\",\n \"icon-width\": \"70px\",\n \"watermark-width\": \"145px\"\n }, {\n icon: _withCtx(() => [\n _createVNode(UtilitySwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Support Cases\",\n onClick: onSupportCasesClick,\n \"back-color\": \"#E69C1F\",\n \"watermark-color\": \"#EEBE6C\",\n \"watermark-width\": \"175px\"\n }, {\n icon: _withCtx(() => [\n _createVNode(SupportCaseIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Create Support Case\",\n onClick: onCreateSupportCaseClick,\n \"back-color\": \"#1176BC\",\n \"watermark-color\": \"#5FA3D2\"\n }, {\n icon: _withCtx(() => [\n _createVNode(NewSupportCaseIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Help\",\n \"back-color\": \"rgb(120, 120, 120)\",\n \"watermark-color\": \"rgb(220, 220, 220)\",\n onClick: onHelpClick\n }, {\n icon: _withCtx(() => [\n _createVNode(HelpIcon)\n ]),\n _: 1\n })\n ]),\n _createVNode(NewSupportCaseModal, {\n modelValue: showNewSupportCaseModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showNewSupportCaseModal).value = $event)),\n onNewCaseCreated: onNewSupportCaseCreated\n }, null, 8, [\"modelValue\"]),\n _createVNode(TenantSwitchingModal, {\n modelValue: showNewTenantSwitchModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((showNewTenantSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(LandlordSwitchingModal, {\n modelValue: showLandlordSwitchModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showLandlordSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(PurchasingSwitchingModal, {\n modelValue: showNewPurchaserSwitchModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showNewPurchaserSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","import script from \"./utility-switching-agent-panel.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./utility-switching-agent-panel.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./utility-switching-agent-panel.vue?vue&type=style&index=0&id=48925fe4&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-48925fe4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-36d31ab8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"home-page-panel\" }\n\nimport { ref } from 'vue';\nimport router from '@/router';\nimport HomePageButton from '../ui/buttons/home-page-button.vue';\nimport NewSupportCaseModal from '@/components/support-cases/new-support-case-modal.vue';\nimport { RouteNames } from '@/router/RouteNames';\nimport TenantSwitchIcon from '../icons/tenant-switch-icon.vue';\nimport LandlordSwitchIcon from '../icons/landlord-switch-icon.vue';\nimport PurchaserSwitchIcon from '../icons/purchaser-switch-icon.vue';\nimport UtilitySwitchIcon from '../icons/utility-switch-icon.vue';\nimport SupportCaseIcon from '../icons/support-case-icon.vue';\nimport NewSupportCaseIcon from '../icons/new-support-case-icon.vue';\nimport SurrenderCouncilSwitch from '../switches/landlord-switching/surrender-council-switch.vue';\nimport CouncilPurchasingSwitchingModal from \"@/components/switches/purchaser-switching/council-purchasing-switching-modal.vue\";\nimport CouncilAllocationModal from \"@/components/switches/tenant-switching/council-allocation-modal.vue\";\nimport HelpIcon from '../icons/help-icon.vue';\nimport { openUtilitySwitchingHelp } from '@/utils/system/helpViewer';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'utility-switching-council-panel',\n setup(__props) {\n\nconst openSurrenderModal = ref(false);\nconst showNewSupportCaseModal = ref(false);\nconst showNewPurchaserSwitchModal = ref(false);\nconst showNewCouncilAllocationSwitchModal = ref(false);\n\n/** Handles the click event of the Allocation button */\nconst onAllocationClick = () => showNewCouncilAllocationSwitchModal.value = true;\n\n/** Handles the click event of the Surrender button */\nconst onSurrenderClick = () => openSurrenderModal.value = true;\n\n/** Handles the click event of the Switch to Buyer button */\nconst onSwitchToBuyerClick = () => showNewPurchaserSwitchModal.value = true;\n\n/** Handles the click event of the Switchovers button */\nconst onSwitchoversClick = () => router.push({ name: RouteNames.UtilitySwitchesList });\n\n/** Handles the click event of the Support Cases button */\nconst onSupportCasesClick = () => navigateToSupportCases();\n\n/** Handles the click event of the Create Support Case button */\nconst onCreateSupportCaseClick = () => showNewSupportCaseModal.value = true;\n\n/** Handles the new case created event of the new support case modal */\nconst onNewSupportCaseCreated = () => navigateToSupportCases();\n\nconst navigateToSupportCases = () => router.push({ name: RouteNames.SupportCases });\n\n/** Handles the click event of the Help button */\nconst onHelpClick = () => openUtilitySwitchingHelp();\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(HomePageButton, {\n text: \"Allocation (Tenant)\",\n onClick: onAllocationClick,\n \"back-color\": \"#1DA4A6\",\n \"watermark-color\": \"#68C2C3\"\n }, {\n icon: _withCtx(() => [\n _createVNode(TenantSwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Surrender (Landlord)\",\n onClick: onSurrenderClick,\n \"back-color\": \"#50B71D\",\n \"watermark-color\": \"#8ACF65\",\n \"icon-width\": \"90px\",\n \"watermark-width\": \"230px\"\n }, {\n icon: _withCtx(() => [\n _createVNode(LandlordSwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Switch to Buyer\",\n onClick: onSwitchToBuyerClick,\n \"back-color\": \"#8F48C8\",\n \"watermark-color\": \"#B684DB\"\n }, {\n icon: _withCtx(() => [\n _createVNode(PurchaserSwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Switches\",\n onClick: onSwitchoversClick,\n \"back-color\": \"#A13427\",\n \"watermark-color\": \"#C1776E\",\n \"icon-width\": \"70px\",\n \"watermark-width\": \"145px\"\n }, {\n icon: _withCtx(() => [\n _createVNode(UtilitySwitchIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Support Cases\",\n onClick: onSupportCasesClick,\n \"back-color\": \"#E69C1F\",\n \"watermark-color\": \"#EEBE6C\",\n \"watermark-width\": \"175px\"\n }, {\n icon: _withCtx(() => [\n _createVNode(SupportCaseIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Create Support Case\",\n onClick: onCreateSupportCaseClick,\n \"back-color\": \"#1176BC\",\n \"watermark-color\": \"#5FA3D2\"\n }, {\n icon: _withCtx(() => [\n _createVNode(NewSupportCaseIcon)\n ]),\n _: 1\n }),\n _createVNode(HomePageButton, {\n text: \"Help\",\n \"back-color\": \"rgb(120, 120, 120)\",\n \"watermark-color\": \"rgb(220, 220, 220)\",\n onClick: onHelpClick\n }, {\n icon: _withCtx(() => [\n _createVNode(HelpIcon)\n ]),\n _: 1\n })\n ]),\n _createVNode(NewSupportCaseModal, {\n modelValue: showNewSupportCaseModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showNewSupportCaseModal).value = $event)),\n onNewCaseCreated: onNewSupportCaseCreated\n }, null, 8, [\"modelValue\"]),\n _createVNode(SurrenderCouncilSwitch, {\n modelValue: openSurrenderModal.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((openSurrenderModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(CouncilPurchasingSwitchingModal, {\n modelValue: showNewPurchaserSwitchModal.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((showNewPurchaserSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(CouncilAllocationModal, {\n modelValue: showNewCouncilAllocationSwitchModal.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((showNewCouncilAllocationSwitchModal).value = $event))\n }, null, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","import script from \"./utility-switching-council-panel.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./utility-switching-council-panel.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./utility-switching-council-panel.vue?vue&type=style&index=0&id=36d31ab8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-36d31ab8\"]])\n\nexport default __exports__","\n","import { render } from \"./home-icon.vue?vue&type=template&id=3c7e07d2\"\nconst script = {}\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-443905d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"welcome-carousel\"\n}\nconst _hoisted_2 = { class: \"custom-header\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"main-title\" }, [\n /*#__PURE__*/_createElementVNode(\"h2\", null, \"Getting Started\")\n], -1))\nconst _hoisted_4 = { class: \"icon-section\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"dx-icon dx-icon-close\" }, null, -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = { class: \"picture-carousel\" }\nconst _hoisted_8 = { class: \"picture-holder\" }\nconst _hoisted_9 = [\"src\"]\n\nimport { computed } from 'vue';\nimport DxGallery from 'devextreme-vue/gallery';\nimport { IDDescriptionPair } from '@/types/generic/IDDescriptionPair';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'home-carousel',\n props: {\n /** \n * The boolean value used with `v-model` to control the visibility or state of a modal or component.\n * @type {boolean}\n * @required\n */\n modelValue: {\n type: Boolean,\n required: true\n }\n},\n emits: [\n /** \n * Triggered when the `modelValue` changes. This is used to update the v-model variable in the parent component.\n * @property {boolean} value - Indicates whether the modal has been opened or closed.\n */\n 'update:modelValue'\n],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst displayCarousel = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value)\n});\n\nconst carouselImages: IDDescriptionPair[] = [\n { id: 0, description: '../../../welcome/slide-1.gif' },\n { id: 1, description: '../../../welcome/slide-2.gif' },\n { id: 2, description: '../../../welcome/slide-3.gif' },\n { id: 3, description: '../../../welcome/slide-4.gif' },\n]\n\n\nreturn (_ctx: any,_cache: any) => {\n return (displayCarousel.value)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createElementVNode(\"section\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"close-button-holder\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (displayCarousel.value = false))\n }, _hoisted_6)\n ])\n ]),\n _createElementVNode(\"section\", _hoisted_7, [\n _createVNode(_unref(DxGallery), {\n id: \"gallery\",\n dataSource: carouselImages,\n loop: true,\n \"show-nav-buttons\": true,\n \"show-indicator\": true,\n width: \"354\",\n \"item-template\": \"item\"\n }, {\n item: _withCtx(({ data }) => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"img\", {\n src: data.description\n }, null, 8, _hoisted_9)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./home-carousel.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./home-carousel.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./home-carousel.vue?vue&type=style&index=0&id=443905d8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-443905d8\"]])\n\nexport default __exports__","import { ref } from \"vue\";\nimport { defineStore } from \"pinia\";\nimport { Mutex } from \"async-mutex\";\nimport { readCookie } from \"@/utils/cookies/JsonCookieReader\";\nimport { writeCookie } from \"@/utils/cookies/JsonCookieWriter\";\nimport { useCurrentUserStore } from \"./CurrentUserStore\";\nimport moment from \"moment\";\n\nexport const useHomeCarouselStore = defineStore('homeCarouselStore', () => {\n const mutex = new Mutex();\n\n const currentUserStore = useCurrentUserStore();\n const carouselShown = ref();\n\n /** Constructs filter name for currently logged in user and site prefix */\n const getCookieName = async () => {\n const filterName = 'x-home-carousel-displayed';\n const currentUser = await currentUserStore.getCurrentUserDetails();\n const sitePrefix = await currentUserStore.getSitePrefix();\n\n return [filterName, sitePrefix, currentUser.id].filter(item => !!item).join('-');\n };\n\n const checkIfCarouselHasBeenShown = async () => {\n if(!carouselShown.value){\n carouselShown.value = readCookie(await getCookieName());\n }\n\n return carouselShown.value ? carouselShown.value:false;\n }\n \n /** Stores the current Appointment List filters so filters are remembered \n * when user navigates back to the Appointment List */\n const carouselHasBeenShown = async () => {\n carouselShown.value = true;\n // I read a few article about there being a problem with dates being stored passed 2038, the 'year 2038 problem', and how technically \n // cookies can't last indefinitely. So here we compare the number of days with the cut off period and tha't how long the cookie will last.\n // When this issue is resolved or when we get to the problem date, we will\n const endDate = moment('2038-01-19');\n const todayDate = moment();\n\n const daysUntilExpiry = endDate.diff(todayDate, 'days');\n writeCookie(await getCookieName(), true, daysUntilExpiry);\n }\n\n return { checkIfCarouselHasBeenShown, carouselHasBeenShown }\n});","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../../public/Banner.png'\nimport _imports_1 from '../../public/PoweredBy.png'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7edaddd6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"content-block\" }\nconst _hoisted_2 = { class: \"icon\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"acquaint-app-home-page\"\n}\nconst _hoisted_4 = {\n key: 0,\n class: \"full-mode-home-page\"\n}\nconst _hoisted_5 = { class: \"acquaint-home-container\" }\nconst _hoisted_6 = { class: \"centered-container\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Welcome to Acquaint Web, our new web based Acquaint CRM.\", -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"We will be adding new functionality on a regular basis.\", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Our ultimate aim is to provide all the features you use in Desktop Acquaint via a modern, browser-based interface.\", -1))\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Please look out for our notifications and emails on what's new and what's coming soon!\", -1))\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h4\", null, \"Learn More\", -1))\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"ul\", { class: \"learn-more-container\" }, [\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://acquaintweb.scrollhelp.site/home/whats-new\",\n target: \"_blank\"\n }, \"See What's New\")\n ]),\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://acquaintweb.scrollhelp.site/home/getting-started\",\n target: \"_blank\"\n }, \"View the Getting Started Guide\")\n ]),\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://acquaintweb.scrollhelp.site/home/\",\n target: \"_blank\"\n }, \"View Help Topics\")\n ])\n], -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"powered-by-container\"\n}\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_1 }, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nimport UtilitySwitchingAgentPanel from '@/components/home-page/utility-switching-agent-panel.vue';\nimport UtilitySwitchingCouncilPanel from '@/components/home-page/utility-switching-council-panel.vue';\nimport HomeIcon from '@/components/icons/home-icon.vue';\nimport PageHeading from '@/components/ui/labels/page-heading.vue';\nimport { AppMode } from '@/enums/system/AppMode';\nimport { useCurrentUserStore } from '@/stores/CurrentUserStore';\nimport { CurrentUser } from '@/types/user/CurrentUser';\nimport { computed, onMounted, ref } from 'vue';\nimport HomeCarousel from '@/components/home-page/home-carousel.vue';\nimport { useHomeCarouselStore } from '@/stores/HomeCarouselStore';\nimport InfoCard from '@/components/ui/containers/info-card.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'home-page',\n setup(__props) {\n\nconst currentUserStore = useCurrentUserStore();\nconst currentUser = ref();\nconst homeCarouselStore = useHomeCarouselStore();\nconst displayCarousel = ref(false);\n\nonMounted(async () => {\n currentUser.value = await currentUserStore.getCurrentUserDetails();\n displayCarousel.value = !await homeCarouselStore.checkIfCarouselHasBeenShown();\n if (displayCarousel.value) {\n homeCarouselStore.carouselHasBeenShown();\n }\n});\n\nconst title = computed(() => currentUser.value ? `Hi ${currentUser.value.name},` : 'Hi there,');\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n (currentUser.value?.appMode != _unref(AppMode).Full)\n ? (_openBlock(), _createBlock(PageHeading, {\n key: 0,\n title: \"Home\"\n }, {\n customIcon: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(HomeIcon)\n ])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (currentUser.value?.appMode == _unref(AppMode).Full)\n ? (_openBlock(), _createElementBlock(\"section\", _hoisted_3, [\n _createVNode(HomeCarousel, {\n modelValue: displayCarousel.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((displayCarousel).value = $event))\n }, null, 8, [\"modelValue\"]),\n (!displayCarousel.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createVNode(InfoCard, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createElementVNode(\"h3\", null, _toDisplayString(title.value), 1),\n _hoisted_8,\n _hoisted_9,\n _hoisted_10,\n _hoisted_11,\n _hoisted_12,\n _hoisted_13\n ])\n ])\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (currentUser.value?.appMode == _unref(AppMode).UtilitySwitchingAgent)\n ? (_openBlock(), _createBlock(UtilitySwitchingAgentPanel, { key: 2 }))\n : (currentUser.value?.appMode == _unref(AppMode).UtilitySwitchingCouncil)\n ? (_openBlock(), _createBlock(UtilitySwitchingCouncilPanel, { key: 3 }))\n : _createCommentVNode(\"\", true)\n ]),\n (currentUser.value?.appMode != _unref(AppMode).Full)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _hoisted_16))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./home-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./home-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./home-page.vue?vue&type=style&index=0&id=7edaddd6&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7edaddd6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-43816089\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"content-container\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Sorry, the page you're looking for does not exist.\", -1))\n\nimport PageHeading from '@/components/ui/labels/page-heading.vue'\nimport { RouteNames } from '@/router/RouteNames';\nimport { DxButton } from 'devextreme-vue/button';\nimport { useRouter } from 'vue-router';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'not-found-page',\n setup(__props) {\n\nconst router = useRouter();\n\nconst onClick = () => {\n router.push({ name: RouteNames.Home });\n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(PageHeading, {\n title: \"Not Found\",\n icon: \"fas fa-exclamation-triangle\"\n }),\n _hoisted_2,\n _createVNode(_unref(DxButton), {\n text: \"Go to Home Page\",\n onClick: onClick\n })\n ]))\n}\n}\n\n})","import script from \"./not-found-page.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./not-found-page.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./not-found-page.vue?vue&type=style&index=0&id=43816089&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-43816089\"]])\n\nexport default __exports__","var map = {\n\t\"./applicants-list.vue\": [\n\t\t81533,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t887\n\t],\n\t\"./appointments-list.vue\": [\n\t\t43269,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t354,\n\t\t395,\n\t\t536\n\t],\n\t\"./certificate-list.vue\": [\n\t\t5473,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t314\n\t],\n\t\"./certificate-page.vue\": [\n\t\t79601,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t685,\n\t\t405\n\t],\n\t\"./configuration-page.vue\": [\n\t\t76232,\n\t\t499,\n\t\t88,\n\t\t549,\n\t\t187\n\t],\n\t\"./contact-page.vue\": [\n\t\t42855,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t354,\n\t\t685,\n\t\t395,\n\t\t727,\n\t\t46,\n\t\t433\n\t],\n\t\"./contacts-list.vue\": [\n\t\t59338,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t471\n\t],\n\t\"./diary-page.vue\": [\n\t\t69105,\n\t\t354,\n\t\t117\n\t],\n\t\"./home-page.vue\": [\n\t\t13556\n\t],\n\t\"./login-form.vue\": [\n\t\t2509,\n\t\t868\n\t],\n\t\"./not-found-page.vue\": [\n\t\t7654\n\t],\n\t\"./property-list.vue\": [\n\t\t20832,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t840\n\t],\n\t\"./property-marketing-list.vue\": [\n\t\t46800,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t698,\n\t\t703\n\t],\n\t\"./property-offers-list.vue\": [\n\t\t87556,\n\t\t727,\n\t\t972\n\t],\n\t\"./property-page.vue\": [\n\t\t96715,\n\t\t499,\n\t\t88,\n\t\t654,\n\t\t936,\n\t\t354,\n\t\t685,\n\t\t395,\n\t\t727,\n\t\t46,\n\t\t549,\n\t\t804\n\t],\n\t\"./reset-password-confirmation.vue\": [\n\t\t48382,\n\t\t794\n\t],\n\t\"./reset-password-form.vue\": [\n\t\t79106,\n\t\t896\n\t],\n\t\"./support-cases-list.vue\": [\n\t\t36755,\n\t\t917\n\t],\n\t\"./tasks-list.vue\": [\n\t\t91725,\n\t\t925,\n\t\t249\n\t],\n\t\"./test-page.vue\": [\n\t\t7809,\n\t\t714,\n\t\t20\n\t],\n\t\"./user-management.vue\": [\n\t\t85490,\n\t\t925,\n\t\t600\n\t],\n\t\"./utility-switches-list.vue\": [\n\t\t66202,\n\t\t230\n\t],\n\t\"./web-viewings-list.vue\": [\n\t\t86698,\n\t\t499,\n\t\t654,\n\t\t698,\n\t\t869\n\t],\n\t\"./word-document-page.vue\": [\n\t\t26768,\n\t\t714,\n\t\t217\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 22091;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + ({\"20\":\"login19\",\"117\":\"login7\",\"187\":\"login4\",\"217\":\"login23\",\"230\":\"login21\",\"249\":\"login18\",\"314\":\"login2\",\"405\":\"login3\",\"433\":\"login5\",\"471\":\"login6\",\"536\":\"login1\",\"600\":\"login20\",\"703\":\"login12\",\"794\":\"login15\",\"804\":\"login14\",\"840\":\"login11\",\"868\":\"login9\",\"869\":\"login22\",\"887\":\"login0\",\"896\":\"login16\",\"917\":\"login17\",\"972\":\"login13\"}[chunkId] || chunkId) + \".\" + {\"20\":\"753647a7\",\"46\":\"8a5f0554\",\"88\":\"b8fe6e4a\",\"117\":\"5e716d1e\",\"187\":\"dcfc9694\",\"217\":\"c1b1fcc7\",\"230\":\"52e2c2c7\",\"249\":\"73b45a8a\",\"314\":\"59ae6cea\",\"354\":\"650b0b51\",\"395\":\"2a406d1c\",\"405\":\"228c8ee5\",\"433\":\"c370c58b\",\"471\":\"0682d437\",\"499\":\"cd76e1ab\",\"536\":\"08c53fb9\",\"549\":\"25fe3ea6\",\"600\":\"19a69d68\",\"654\":\"00b340aa\",\"685\":\"222ce6af\",\"698\":\"b6fcf4f4\",\"703\":\"9f6478db\",\"714\":\"1bc9272e\",\"727\":\"1a5c1185\",\"794\":\"61be9dca\",\"804\":\"9fead577\",\"840\":\"28dcd186\",\"868\":\"cf7e7957\",\"869\":\"80c8eb0e\",\"887\":\"3a5aa90e\",\"896\":\"8d67bb02\",\"917\":\"f84bc469\",\"925\":\"93480679\",\"936\":\"67e42d33\",\"972\":\"e7982c65\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + {\"20\":\"login19\",\"117\":\"login7\",\"187\":\"login4\",\"230\":\"login21\",\"249\":\"login18\",\"314\":\"login2\",\"405\":\"login3\",\"433\":\"login5\",\"471\":\"login6\",\"536\":\"login1\",\"600\":\"login20\",\"703\":\"login12\",\"794\":\"login15\",\"804\":\"login14\",\"840\":\"login11\",\"868\":\"login9\",\"869\":\"login22\",\"887\":\"login0\",\"896\":\"login16\",\"917\":\"login17\",\"972\":\"login13\"}[chunkId] + \".\" + {\"20\":\"050fd33f\",\"117\":\"5eae61b5\",\"187\":\"85f5da42\",\"230\":\"f6c9e209\",\"249\":\"02159813\",\"314\":\"381b04cd\",\"405\":\"e7f73fd9\",\"433\":\"edad7bd7\",\"471\":\"92d9d16f\",\"536\":\"962d8d59\",\"600\":\"dfeaf3bc\",\"703\":\"02179769\",\"794\":\"55f303db\",\"804\":\"cb6e1e1c\",\"840\":\"9cc212b7\",\"868\":\"624eda53\",\"869\":\"f88ca7a7\",\"887\":\"006c5f6b\",\"896\":\"2a799c28\",\"917\":\"d20b46c0\",\"972\":\"5cd16a45\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"acquaint-web-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"20\":1,\"117\":1,\"187\":1,\"230\":1,\"249\":1,\"314\":1,\"405\":1,\"433\":1,\"471\":1,\"536\":1,\"600\":1,\"703\":1,\"794\":1,\"804\":1,\"840\":1,\"868\":1,\"869\":1,\"887\":1,\"896\":1,\"917\":1,\"972\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(869 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkacquaint_web_app\"] = self[\"webpackChunkacquaint_web_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(24013); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","baseAlert","Swal","customClass","icon","container","popup","htmlContainer","confirmButton","heightAuto","displayCancelConfirmationAlert","textToDisplay","fire","text","confirmButtonText","denyButtonText","showDenyButton","displayInfoToast","displayTime","toastBaseAlert","timer","background","displayQuestionAlert","standardInfoAlert","timerProgressBar","iconColor","color","position","toast","showConfirmButton","ListFilterKeys","SelectOptionReponses","AIPromptsToGenerate","CertificateStatus","CertificateType","ContactFindTypeRestriction","SystemContactTypes","EmailTemplateTypes","MarketingEmailItemType","SelectedEmailAction","PropertyCategories","PropertyUsages","AppMode","AutoLoginAction","CountryCodes","Environment","FieldSize","TextboxValueChangeEvent","EnergyTypes","GasMeterTypes","PurchaserSwitchStep","SupportCaseDocumentType","SwitchBillTo","SwitchPage","getScreenSizeInfo","screenSizes","sizes","isXSmall","isLarge","cssClasses","filter","cl","vm","getCurrentInstance","title","proxy","$appInfo","screen","reactive","screenSizeChanged","onMounted","setFavicon","subscribe","onBeforeUnmount","unsubscribe","computed","concat","route","useRoute","appClass","loginRoutes","includes","name","favicon","isPropertyButtonUrl","useFavicon","helpNavigator","inject","window","addEventListener","key","LoadHelpTopicFromCurrentRoute","__exports__","AcquaintApiClient","mutex","Mutex","_jwtToken","token","expiresIn","utcExpiryDate","_baseUrl","_authenticationCookieManager","_apiRetryMax","_databaseConnectionToken","constructor","this","AuthenticationCookieManager","getBaseUrl","environment","getEnvironment","Development","Staging","async","url","getApiResponse","sendHttpRequest","blob","data","logout","resetState","getBackendApiUrl","result","fetch","headers","method","json","domainName","location","host","subDomain","Production","isJwtTokenRefreshRequired","fiveMinutuesInMilliseconds","nowWithRefreshOffset","Date","now","toUTCString","response","indexOf","slice","length","apiUrl","apiResponse","Response","retry","runExclusive","getAuthToken","tokenCookie","getDatabaseConnectorToken","undefined","JSON","stringify","mode","body","ok","processFailedApiRequest","retryAttempt","responseText","status","console","log","error","confirm","DeletedRecordError","requestType","responseContents","newPassword","siteDetails","getSiteDetails","loginData","sitePrefix","appPassword","userName","userPassword","pcid","authenticationToken","httpPost","storeLogin","AcquaintApiClientPlugin","install","app","api","provide","HttpMethod","AcquaintApiNextClient","_mutex","getApiBaseUrl","credentials","Post","writeCookie","Get","parseResponse","Put","Delete","startsWith","getJwtFromCookie","refreshJwtToken","contentType","get","cookieToken","readCookie","AcquaintApiNextClientPlugin","client","HelpNavigator","LoadHelpTopicByPageName","pageName","open","getHelpPageNameFromCurrentRouteName","pathname","substring","RouteNames","LoginForm","ResetPassword","ResetPasswordConfirmation","ContactList","ContactPage","Applicants","Configuration","CertificateList","CertificatePage","Diary","Properties","PropertyPage","PropertyOffers","Tasks","HelpNavigatorPlugin","navigator","licenseKey","config","themes","createApp","App","pinia","createPinia","use","router","globalProperties","appInfo","mount","_hoisted_1","class","_hoisted_2","_hoisted_3","_defineComponent","__name","props","menuMode","type","String","default","menuItems","Array","setup","__props","currentUser","ref","currentUserStore","useCurrentUserStore","value","getCurrentUserDetails","userInitials","initials","match","join","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createBlock","_unref","DxContextMenu","target","items","width","_withCtx","_createVNode","DxPosition","my","at","_","_createCommentVNode","DxList","confirmNewPasswordValidationError","modelValue","Boolean","required","emits","emit","acquaintApiClient","showPopup","set","watch","passwordData","currentPassword","confirmNewPassword","updatePassword","validation","validationGroup","validate","isValid","httpPostVoid","RefreshDatabaseConnectionToken","closeForm","err","displayErrorMessage","getErrorMessage","newPasswordValidation","newPasswordValidationError","confirmNewPasswordValidation","ModalBase","$event","content","AcquaintTextbox","UsersValidation","Password","label","footer","DxToolbarItem","widget","toolbar","options","onClick","viewBox","_hoisted_9","script","render","showModal","apiClient","systemInfo","getSystemInfo","httpGet","ModalWidth","XSmall","_Fragment","_renderList","item","index","AcquaintInfoBox","version","shortcut","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_4","_hoisted_5","height","showCloseButton","loading","showPopOver","closeModal","animationConfig","show","from","of","opacity","to","hide","offset","x","y","boundaryOffset","DxPopover","visible","onShowing","animation","DxLoadIndicator","ScrollView","_renderSlot","$slots","_createTextVNode","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_10","_hoisted_11","useRouter","propertySummaryData","contactSummary","recentRecordsStore","useRecentRecordsStore","popupDisplayed","displayPropertyData","displayContactsData","contactRecords","readContactRecordsCookie","i","fetchedContact","getContactData","push","propertyRecords","readPropertyRecordsCookie","fetchedProperty","fetchPropertyData","ex","loadPropertyRecord","params","propertyid","propertyId","toString","loadContactRecord","contactid","contactId","showNoDataMessage","outerHeight","popoverBase","onPopupDisplayed","contact","property","address","style","src","_imports_0","menuToggleEnabled","toggleMenuFunc","Function","logOutFunc","taskListFiltersStore","useTaskListFiltersStore","applicantListFiltersStore","useApplicantListStore","contactListFiltersStore","useContactListFiltersStore","propertyListFiltersStore","usePropertyListFiltersStore","userPermissionsStore","useUserPermissionsStore","agentsStore","useAgentsStore","switchStatusesStore","useSwitchStatusesStore","editUserModalOpen","openRecordsPopOver","contactTypeStore","useContactTypeConfigurationStore","agencyAccountStore","useAgencyAccountStore","openAITextGeneratorModal","displayRecordsPopOver","displayAIModal","helpIconClick","appMode","UtilitySwitchingAgent","UtilitySwitchingCouncil","openUtilitySwitchingHelp","newFeaturesIconClick","userMenuItems","onProfileClick","onChangePasswordClick","onConfigurationClick","onSmsTextCreditsClick","Full","onEmailCreditsClick","onAICreditsClick","onSystemInfoClick","onLogoutClick","showChangePasswordModal","clearCache","siteName","branchName","showSystemInfoModal","getSitePrefix","siteId","siteID","DxToolbar","menuUserItem","UserPanel","DxItem","DxButton","AcquaintLogo","changePassword","SystemInfoModal","EditUserModal","userId","RecentRecordsPopover","AiTextGeneratorModal","showNewContactButton","contactRecordNavigationStore","useContactRecordNavigationStore","clear","onContactSelected","ids","cacheContacts","onPrimarySelected","primaryId","FindContactModal","onPrimaryContactSelected","onOpenNewContactModal","recordNavigationStore","usePropertyRecordNavigationStore","clearRecordNavigationCache","onPropertySelected","propertyIds","rowIndex","cacheProperties","FindPropertyModal","apiNextClient","currentUserDetails","matchMarketRecords","fields","branchId","emailTemplatedId","credits","emailTemplates","displayTemplateModal","applicantCount","salesContacts","lettingsContacts","sendEmails","checkEmailSubmissionSuccess","sendConfirmationAlert","isConfirmed","successConfirmationAlert","isDismissed","fetchEmailTemplates","getEmailCredits","fetchContactCount","onCancelClick","modalHeight","innerWidth","showCloseConfirmationPrompt","Small","LookupSingleSelect","LookupTableSource","Sites","showClearButton","allowZeroValue","SingleSelect","disabled","NewEditEmailTemplatesModal","configurationId","compactMode","userPermissions","propertyRecordNavigationStore","owner","treeViewRef","systemConfigStore","useSystemConfigurationStore","loginStore","useLoginStore","showUtilitySwitchingOptions","displayMatchMarketingModal","displayNewsConfigurationModal","displayMarketingEmailDesignerModal","displayQRGeneratorModal","forwardClick","args","handleItemClick","itemData","path","pointerEvent","event","stopPropagation","updateSelection","instance","selectItem","expandItem","getUserPermissions","getSystemConfigurationValue","SystemConfiguration","PropertyButtonID","collapseAll","processAutoLoginAction","autoLoginData","getAutoLoginData","action","SwitchToTenant","expandUtilitySwitchingMenu","tenancyId","SwitchToLandlord","SwitchToPurchaser","SwitchesList","UtilitySwitchesList","SupportCasesList","SupportCases","CreateSupportCase","resetAutoLoginAction","showCreateTaskModal","showFindContactModal","showFindPropertyModal","showNewContactModal","showNewNoteModal","showNewCertificateModal","displayEditContactModal","reDisplayFindContactModal","showNewPropertyModal","createTask","editContactModalId","openEditContactModal","contactCreated","newContactId","createNewProperty","openNewContactModal","newPropertyWizardClose","newProperty","newPropertyId","onNewAppointmentClick","currentRoute","onSwitchToTenantClick","onSwitchToLandlordClick","onSwitchToPurchaserClick","openTcfPdf","DxTreeView","ref_key","onItemClick","expanded","appointments","new","contacts","properties","correspondence","EditContactDetails","editTaskModal","FindContact","FindProperty","ContactModal","onOpenEditContactModal","onContactCreated","EditNoteModal","NewCertificateModal","NewPropertyWizard","onModalClosed","ownerId","MatchMarketingModal","NewsConfigurationModal","MarketingEmailDesignerModal","QrCodeModal","routePath","getAccount","directConsentUser","surrenderClick","onAllocationSwitchClick","scrollViewRef","menuOpened","menuTemporaryOpened","toggleMenu","handleSideBarClick","drawerOptions","shaderEnabled","menuRevealMode","minMenuSize","maxMenuSize","closeOnOutsideClick","scrollTo","showTenantSwitchModal","showLandlordSwitchModal","showNewPurchaserSwitchModal","openSurrenderModal","showNewCouncilPurchaserSwitchModal","showNewCouncilAllocationSwitchModal","showNewSupportCaseModal","acquaintDesktopPropertyId","acquaintDesktopContactId","acquaintDesktopTenancyId","openPurchaserSwitchFromDesktop","openTenantSwitchFromDesktop","openLandlordSwitchFromDesktop","newVal","oldVal","resetCachedDesktopIds","HeaderToolbar","DxDrawer","template","opened","shading","menuTemplate","UtilitySwitchingAgentNavMenu","onTenantSwitchClick","onPurchaserSwitchClick","onLandlordSwitchClick","UtilitySwitchingCouncilNavMenu","onCouncilPurchaserSwitchClick","onCouncilAllocationSwitchClick","onSurrenderClick","AcquaintNavMenu","onCloseNavigationMenu","onShowNewSupportCase","DxScrollView","SurrenderCouncilSwitch","TenantSwitchingModal","LandlordSwitchingModal","PurchasingSwitchingModal","CouncilPurchasingSwitchingModal","CouncilAllocationModal","NewSupportCaseModal","_imports_1","meta","description","usePropertyButtonBranding","InfoCard","loadView","view","createRouter","routes","Home","requiresAuth","layout","defaultLayout","component","Keys","UtilitySwitchSupportCases","simpleLayout","beforeEnter","isUserLoggedIn","replace","AutoLogin","AppoinmentsPage","Test","UserManagement","WebViewings","PropertyMarketingList","WordDocument","redirect","NotFound","NotFoundPage","errorLayout","history","createWebHistory","beforeEach","document","close","authenticationCookieManager","query","loginSuccess","autoLogin","_databaseConnectorTokenName","_siteDetails","_userDetails","getApiDetails","authenticationDetails","Cookies","parse","databaseConnectorToken","getUserDetails","userDetails","remove","storeSiteDetails","cookieOptions","rememberMe","sameSite","expires","secure","useSecureCookies","apiAuthenticationToken","cookieName","cookieValue","hostname","message","super","setPrototypeOf","prototype","defineStore","systemContactTypeCache","getSystemContactType","contactType","getContactType","typeID","cachedType","find","getContactTypeFromApi","cachedCurrentUser","cachedSitePrefix","getCurrentUserFromApi","acquaintApiNextClient","login","isVisible","loginToNewAcquaintApi","authenticate","None","contactsIds","propertiesIds","addContactRecentRecord","pop","unshift","Number","addPropertyRecentRecord","records","useSystemCodesStore","systemCodesCache","getSystemCodesByCodeType","systemCodes","getSystemCodesFromApi","requestedSystemCodes","codeType","getSystemCodeDescriptionByCodeTypeAndID","systemCodeDescription","systemCode","systemConfigurationCache","systemConfigValue","cachedValue","getSystemConfigurationValueFromApi","val","getSystemConfigurationValueWithSiteId","idValueItem","getSystemConfigurationValueFromApiWithSiteId","getSystemConfigurationValueWithCompanyId","companyId","getSystemConfigurationValueFromApiWithCompanyId","resetSystemConfigurationCache","findIndex","splice","cachedUserPermissions","permissions","getUserPermissionsFromApi","cachedFilters","applicantIds","displayMatchedApplicants","matchedProperty","getFilterName","filterName","getFilters","filters","updateFilters","storeMatchedApplicants","propertyAddress","fetchMatchedApplicants","displayStandardApplicantList","checkIfMatchedApplicantsToBeDisplayed","fetchMatchedProperty","displayMatchedProperties","contactName","storeMatchPropertyIdsAndName","displayStandardPropertyList","fetchMatchPropertyIds","fetchMatchedContact","checkIfMatchedPropertiesToBeDisplayed","recordNavigator","RecordNavigator","currentIndex","cacheRecords","getNextContactId","getNextRecord","getPreviousContactId","getPreviousRecord","isFirstContact","isFirstRecord","isLastContact","isLastRecord","currentPosition","totalCount","isEmpty","getNextPropertyId","getPreviousPropertyId","isFirstProperty","isLastProperty","cachedAgencyAccount","account","getAccountFromApi","cachedAgents","getAgents","agents","getAgentsFromApi","returnAgentName","selectedAgent","agentPair","agentID","cachedStatuses","getSwitchStatuses","statuses","rawStatuses","getSwitchStatusesFromApi","mapRawSwitchStatusesToIDDescriptionPair","sortIndex","getCurrencyFormat","countryCodeId","CountryCode","Ireland","UK","Guernsey","Jersey","formatNumberIntoCurrency","poundsFormatConverter","Intl","NumberFormat","currency","eurosFormatConverter","format","DisplayCompanyAlert","companyPrompt","TimeStamps","bodyText","timeDate","moment","getDefaultAddressValue","countryCode","postCode","propertyName","street","locality","town","region","country","formatAddress","delimiter","cookie","expiryDays","convertCorrespondenceFileToBlob","file","byteCharacters","atob","fileContents","byteNumbers","charCodeAt","byteArray","Uint8Array","Blob","convertCorrespondenceFileToFile","fileName","getFileNameParts","fileDownloadName","File","nameWithExtension","fullFileName","regex","extension","Breakpoints","Medium","Large","handlers","xSmallMedia","matchMedia","smallMedia","mediumMedia","largeMedia","forEach","media","addListener","handler","matches","_records","_currentIndex","isIndexOutOfBounds","mapPropertyToAddress","postcode","mapAddressToProperty","mapPropertyToConcatenatedString","findQuestionText","questionText","Questions","question","AddressEnergyTypeMapper","gasFuel","electricityFueld","DualFuel","GasOnly","ElectricityOnly","CollatePropertySwitchTypeReadingsData","energyDetails","energyType","switchPropertyId","mprn","gprn","gasGPRNNum","electricMeterType","payAsYouGoGasMeter","payAsYouGo","switchType","meterReadings","twentyFourHourMeterRead","twentyfourHMeterRead","nightSaverMeterRead","dayMeterRead","dayMeterMeterRead","nightMeterRead","peakMeterRead","meterReadingDate","readingDate","gasMeterRead","CollateTenantSubmissionData","tenantPersonalInfo","landlordPersonalInfo","propertySwitchTypeReadingsData","tenantSwitchSpecificData","tenancyStartDate","tenant","titleId","firstName","lastName","telephoneNumber","number","email","dateOfBirth","birthDate","criticalCare","priorityService","tenantId","landlord","landlordId","CollateAllocationSubmissionData","CollateLandlordSubmissionData","billTo","landlordSwitchSpecificData","CollatePurchaserSubmissionData","purchaser","purchaserSwitchSpecificData","purchaserId","CollateCouncilLandlordSubmissionData","isNewDevelopment","getDefaultEnergyDetailsModel","FindEnergyTypeText","propertyEnergyType","mapAcquaintContactToLandlordPersonalInfo","titleID","firstNames","mobileTelephone","homeTelephone","homeCountryCode","homeCountry","homeProperty","homeStreet","homeLocality","homeTown","homeRegion","homePostcode","mapAcquaintContactToPersonalInfo","personalInfo","validationCallback","validateField","rule","fieldValidation","validationType","ValidationType","Email","BLValidation","Currency","CurrencyNeg","DateTime","NameUpperLowerCase","Numeric","NumericNeg","Percentage","WebPage","AccountSortCode","AccountNumber","IBAN","EPC","PropertyUniqueReferenceNumber","BriefYourMarketUserName","InternationalPassportNumber","UserPassword","Username","MPRN","GPRN","PostCode","validatePostcode","countryCodeID","outward","inward","eirCodeRegex","RegExp","trim","replaceAll","Gibraltar","IsleOfMan","toUpperCase","charAt","France","Germany","Greece","Italy","Spain","Turkey","Portugal","test","promptToGenerate","roomId","displayApplyButton","request","aiResponse","aiCredits","firstAPICallMade","systemConfigurationStore","fecthAICredits","PropertyDescription","fetchPropertyDescriptionPrompt","PropertyRoomDescription","fetchRoomDescriptionPrompt","PropertyRoomTemplateDescription","fetchRoomTemplateDescriptionPrompt","getDefaultRoomPrompt","AIPropertyRoomDescriptionPrompt","fetchAIResponse","fetchDisplayAIResponse","clipboard","writeText","applyAIResponse","saving","FieldValidationFreeTextArea","KeyUp","CertificateTypesValidation","NewCertificateTab","propertyUsage","certificate","Residential","NumberBoxField","eerCurrent","eerPotential","eirCurrent","eirPotential","_hoisted_12","eerCurrentMin","eirCurrentMin","eerPotentialMin","eirPotentialMin","BerInput","EpcInput","certificateId","certificateData","showCertificateModal","enableFields","initalCertificateData","propertyData","showCloseConfirmation","keepingModalOpening","selectedTab","General","fetchIntialCertificateData","propertyID","contactID","setOriginalContactId","startDate","toISOString","endDate","fetchCertificateType","certificateTypeID","setInitialEndDateByCertificateTypeDuration","fetchDefaultCertificates","fetchCertificateData","saveValidation","certificateTypeData","userID","_validationInfo","requiresProperty","PopertyRequired","onSaveClick","submitData","closeCertificateModal","editCertificate","createCertificate","httpPut","certificateTypeId","oldValue","setEndDateByCertificateTypeDuration","add","duration","subtract","fetchProperty","setEditableContactId","deep","today","isBefore","Expired","isSameOrAfter","Current","showRatingsTab","lockPropertyField","lockContactField","helpPage","issuerType","Contractors","issuerTypeID","Bank","Contractor","FinancialAdvisor","FinancialAdvisors","InsuranceCompany","InsuranceCompanies","LocalAuthority","LocalAuthorities","MortgageProvider","MortgageProviders","Solicitor","Solicitors","UtilitySupplier","User","Users","onCancelPromptDenied","DxTabPanel","selectedIndex","lookupSingleSelect","CertificateTypes","readOnly","PropertyLookup","displayNavigateIcon","displayPeek","ContactLookup","findNameOnIdChange","showNavigateContactIcon","issuerID","reference","CertificatesValidation","Reference","AcquaintDateBox","StartDate","SmallMedium","EndDate","SystemCodeSingleSelect","CodeType","Title","EpcInputWrapper","usage","formatDate","addedDate","updatedDate","modalClosed","certificateCreated","BaseCertificateModal","lockedByAnotherUser","lockDescriptionField","submissionResponse","lockConfigurationItem","lock","extraInfo","unLockConfigurationItem","fetchItemData","saveDetails","callSaveApi","inActive","cancelClick","keepEnteredInformation","cancelPromptDenied","modalBase","onCancelConfirmationModal","TaskTemplatesValidation","Description","Subject","subject","AcquaintTextArea","Body","TaskTypes","TaskTypeID","taskTypeID","SwitchToggle","labelWidth","showSelectButton","taskTemplatesList","showInactiveItems","editNewModalId","selectedConfigurationItem","displayEditNewModal","disableEdit","showInactive","fetchConfigurationList","TaskTemplates","configurationItemSelected","configurationItemDoubleClicked","openEditModal","contactsConfiguration","edit","openNewModal","deleteConfigurationItem","delete","callDeletApi","httpDeleteVoid","inactiveToggleValueChange","findInactiveItem","newItemCreated","editItem","onSelectClick","GridBase","dataSource","onRowClick","onRowSelected","onAdaptiveRowSelection","showColumnHeaders","onOnVaueChange","columns","DxColumn","caption","NewEditTaskTemplatesModal","onConfigurationItemCreated","onConfigurationItemEdited","_hoisted_13","_hoisted_14","_hoisted_15","contactData","showPeek","closePeek","displayedTitle","emailContact","telehoneContact","DxTextBox","stylingMode","businessTelephone","homeTelephoneAlt","useMergeFieldsStore","mergeFields","fetchMergeFields","returnMergeFields","selectedMergeField","fieldName","mergeFieldsStore","fieldSelected","fieldDoubleClicked","idColumnName","ContactModalPages","requiredInput","selectedValueId","lookupItems","titleField","openModal","selectedContact","updateEditModalWithSelectedDetails","gridBase","ContactType","EmailTemplates","originalMaxPrice","originalMinBedrooms","lockInputs","isOwner","showAddPropertyPrompt","isApplicant","defaultContactData","newContactData","locked","toggledField","showMarketingPrompt","marketingPromptShown","selectedTabPanel","openDuplicateContactModal","duplicateRecords","duplicateModalTitleField","displayEmailForm","fetchContactType","contactDataChanged","propertyRequirementsDataChanged","maxPrice","minBedrooms","originalPropertyUsage","propertyCategory","originalPropertyCategory","emptyApiModel","salutation","mobile","homeAddress","companyName","businessAddress","mailingAddress","typeId","requirements","category","marketingPreferences","post","smsText","telephone","passDetailsToThirdParties","passDetailsToIFA","passDetailsToConveyancer","assignedUserId","apiData","resetValidState","Buy","ContactsValidation","HomeProperty","HomeStreet","HomeLocality","HomeTown","HomeRegion","HomePostcode","mapModel","businessCompany","homeBusinessTelephoneNumber","emailingList","smsList","telephoneList","passDataTo3rdParties","passDataToIFA","passDataToConveyancer","mailingList","assignedUserID","createContact","addPropertyAfterClose","isAddPropertyPromptRequired","displayAddPropertyPrompt","gdprAlert","Landlord","Vendor","fetchDefaultData","cancelPromptAccepted","setTimeout","ContactTypeId","setDefaultCategoryBasedOnContactType","onToggled","noConsent","enableMarketing","marketingConsentMessage","selectChange","addedItems","MainDetails","PropertyRequirements","Address","Marketing","SystemInfo","disablePropertyRequirementsTab","Applicant","EstateAgent","Rent","nameFieldRequired","secondNameFieldRequired","companyNameFieldRequired","newValue","nameFieldsCheckForDuplicate","companyNameFieldsCheckForDuplicate","emailFieldsCheckForDuplicate","mobileNumberFieldCheckForDuplicate","selectContact","onCancelPromptAccepted","onSelectionChanged","FirstNames","resetValid","Change","LastName","Titles","showSearch","Salutation","BusinessCompany","HomeTelephone","BusinessTelephone","NewContactTypeLookup","ContactCategory","BedroomsSelect","PropertyUsage","CurrencyInput","minValue","maxValue","EditAddress","MarketingPreferenceToggles","onOnValueChange","lookupSource","DuplicateContactModal","onSelectContact","QuestionModal","rejectButtonText","onConfirm","onReject","messageText","EmailFormModal","contactList","emailTemplateId","gdprMailingList","HomeBusinessAddress","showAddressField","originalContactData","homeMailingAddress","businessMailingAddress","saved","maxBirthDate","showContactModal","submitContactData","workAddress","businessProperty","businessStreet","businessLocality","businessTown","businessRegion","businessPostcode","businessCountryCode","submitChanges","cancel","emailFieldUnfocused","emailAlt","TabPanel","acquaintTextbox","XLarge","sourceID","Sources","BirthDate","MobileTelephone","onOnUnfocused","EmailAlt","webPage","editAddress","switchToggle","HomeTelephoneAlt","businessDepartment","BusinessDepartment","businessJobTitle","BusinessJobTitle","businessQualifications","BusinessQualifications","onValueChange","copyTo","clearLists","forEmail","isPrimaryContact","openfindContactModal","ccContacts","bccContacts","fullContactInfo","selectedContactId","fetchedLinkedContacts","gridBaseKey","addContact","contactsToDisplay","contactNames","names","contactNamesEmails","altEmail","contactIds","fetchMainData","contactSelected","deleteContact","primaryContactSelected","addContactToList","company","contactToBeAdded","fetchLinkedContacts","addAllLinks","contactInTable","linkedContactData","fetchLinkedContactData","dropdownMenu","onMenuItemClick","modalTitle","menuId","GridMenu","onItemClicked","MarketingEmailType","MarketingEmailTabs","marketingEmailDesignerData","emailType","PropertyBulletin","previewContent","loadingData","fetchMarketingEmailDesignerData","fetchAndDisplayPreviewContent","fetchPreviewEmailContent","divToInsertHTMLInto","getElementById","innerHTML","updateMarketingEmailDesignerData","httpPutVoid","emailTypeIdsToExclude","PropertyFeedbackRequest","tabPanelWidth","scrollDirection","hideBlurInPreviewTab","ColourPicker","backgroundColour","bodyColour","bodyTextColour","footerDividerColour","footerTextColour","menuColour","menuItemColour","menuItemTextColour","menuItemSeperatorColour","detailBorderColour","detailBackgroundColour","headingColour","detailTextColour","MarketingEmailSocialMediaIconStyle","socialMediaIconStyle","FieldValidationFreeTextbox","facebookUrl","twitterUrl","linkedInUrl","instagramUrl","hideBlur","imageURL","imageIndex","image","displayPreviousImage","displayNextImage","preValue","Advert","MenuItem","MarketingEmailItemsValidation","Type","URL","itemType","require","marketingEmailItemsList","showFunctionsMenu","contextMenuId","MarketingEmailItems","menu","editDeleteButtonsPositioning","elementAttr","NewEditMarketingEmailItemsModal","EmailTab","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","propertyRelatedToId","contactEnMasseList","emailToForward","emailToForwardId","actionSelected","New","correspondenceFileIDs","displaySelectContactsTab","Customise","openSelectCcContactModal","updateCopyContacts","copyToContactNames","blindCopyToContactsNames","copyToContactsNamesEmails","addMergeFieldToSubject","attachments","azureEmailAddress","apiAttachmentsList","originalCorrespondenceFileList","downloadedFile","originalFilesIdsNames","resetFileField","emailSignature","contactToEmail","previouslyNavigatedThroughIds","emailForm","templateId","workOrderId","propertyOfferId","appointmentId","cCs","bcCs","setAsHighPriority","requestReadReceipt","autoCcLinkedContacts","contactDocumentIds","openMergeFieldsModal","emailTemplate","bodyMergeFieldToAdd","sendingOrSaving","filesToSubmit","FormData","currentContactPosition","toEditEmailId","copiedContactList","propertyBulletinText","noPropertiesFound","emailPreviewFields","showPreviewTab","propertyDetails","newsLetterBody","resetEmailFormToDefaults","fetchEmailTemplateData","fetchAzureEmailFromAddress","cloneContactList","isMarketingHtmlEmailTemplate","Preview","moveDataToEmailForm","fetchPreviewSubjectBody","autoCC","AutoCCLinkedContactsInBulkEmails","include","cc","bcc","fetchEmailSignature","header","populateOriginalAttachmentsList","displayForwardedEmailAttachments","fetchUserDetails","subjectInBody","updatedNamesEmailList","PropertyBulletinAllProperties","PropertyBulletinMatchedProperties","PropertyDetails","NewsLetter","summary","fetchSendToContactData","emailAddress","emailSignatureId","fetchEmailAttachmentsList","attachment","fetchCorrespondenceFile","emailId","attachedFile","populateAttachmentsList","fileId","fetchForwardedEmailAttachmentsList","attachmentList","correspondenceAttachment","Reply","list","onSendClick","emailFormsToSubmit","sendEmail","uploadAttachments","populateFilesList","callAttachmentsApi","bulkEmailAttachment","correspondencAttachment","originalCorrespondenceAttachment","append","sendFormData","selectBlindCopyToContacts","selectCopyToContacts","updateCopyToContacts","namesEmails","copyToContactIds","updateBlindCopyToContacts","blindCopyToContactsIds","fetchAndDisplayDetailsBulletinNewsLetter","fetchNewsLetterPreviewBody","fetchPropertyBulletinText","fetchPropertyDetails","includeValuations","includeInstructed","addMergeField","mergeField","onInsertField","onHtmlEditorFocused","onSubjectFieldFocused","contactToSendToSelected","onAttachmentsChanged","downloadAttachment","fileNameId","record","fileToDownload","saveAs","callDownloadApi","blobToDownload","fileNameParts","foundIndex","displayPreviousContact","displayNextContact","editMatchedContactEmail","lockContact","editContactModalClosed","contactUpdated","unLockContact","matchedContact","toFieldRequierd","sendButtonDisabled","maxHeight","customCloseConfirmationText","isRequired","onIconClicked","EmailsValidation","onOnFocused","HtmlEditor","insertTextAtCursorPosition","onAiIconClick","FileUpload","onFilesChanged","reset","defaultFiles","onFileDoubleClicked","wordWrapEnabled","customColumnSlots","displayPages","emailCellData","includeCellData","AITextGeneratorModal","SelectCcContactsModal","onSaveCopyToContacts","onSaveBlindCopyToContacts","MergeFieldsModal","onAddMergeField","footerMergeFieldToAdd","headerMergeFieldToAdd","inactive","insertField","EmailSignaturesValidation","displayedInConfigurationScreen","emailSignaturesList","EmailSignatures","onSelectButtonClick","NewEditEmailSignaturesModal","groupHeader","aliasName","exportGrid","originalMenuItems","handleRowSelected","row","handleRowClick","onMenuItemClicked","descriptionWidth","showSearchPanel","onOnRowReorder","allowReordering","alignment","selectedEmailItem","actionKey","totalMenuItems","totalAdverts","maxOrderNumber","selectedType","isNewItem","dropdownIcon","selectedItemDescription","openMarketingEmailItemsModal","marketingEmailItemData","marketingEmailItems","emailItemData","emailID","marketingEmailItemID","displayOrder","lockEmailItem","marketingEmailItemId","unlockEmailItem","fetchEmailItems","fetchMarketingIDDescriptionPairs","loadData","callCreateEmailItemApi","callEditEmailItemApi","onConfigurationSelected","marketingItemId","NumberDropdown","itemNumber","MarketingEmailItemsConfigurationModal","EmailType","totalNewsletters","selectedNewsletterItem","emailNewsletterItem","newsID","lockEmailNewsletterItem","newsId","unlockNewsletterItem","fetchNewsletterItem","callCreateEmailNewsletterItemApi","callEditEmailNewsletterApi","htmlContent","previewFieldValue","attachmentsList","resetAttachments","displaySignaturesModal","selectedSignature","displayMailshotModal","emailItemType","emailItemActionKey","initialEmailItem","selectedMenuItemsEmailItem","selectedAdvertsEmailItem","filesToSubmitToApi","filesToUpload","filesToDelete","filesDisplayed","defaultData","emailSignatureID","contentTypeId","contentTypeID","autoAttachDocumentId","autoAttachDocumentID","mailshotGroupId","mailshotGroupID","fetchSignature","fetchEmailSignatureHeaderFooter","populateDisplayedAttachmentsList","fetchNewletterItems","updatePreview","createEmailAttachments","deleteEmailAttachments","files","httpDelete","subjectFieldFocused","bodyFieldFocused","populateToSubmitList","foundFile","displayedFile","populateToDeleteList","fileToBeKept","isFileInOriginalList","filesUpdated","signatureSelected","getPreviewForStandardEmail","emailItems","adverts","onMenuItemsRowDbClick","selectedRow","editEmailItem","onMenuItemsRowSelected","onMenuItemsDropdownClicked","emailItemsDropdownClicked","onAdvertsRowDbClick","onAdvertsRowSelected","onAdvertsDropdownClicked","createEmailItem","deleteEmailItem","onRefreshEmailItemsData","displayNewsletterModal","newsletterActionKey","initialNewsletterItem","initialNewsletterItems","emailNewsletterItems","onNewsletterRowSelected","onNewsletterRowDbClick","editNewsletterItem","onNewsletterMenuItemClicked","createNewsletterItem","deleteNewsletterItem","onRefreshNewsletterData","callDeletNewsletterApi","lockNewsletterItem","PropertyBulletinAll","PropertyBulletinMatched","Newsletter","onAdvertRowReorder","reOrderMenuItemsOrAdvertList","onMenuItemsRowReorder","visibleRows","getVisibleRows","toIndex","newOrderPosition","recordId","onNewsLetterRowReorder","onTypeChanged","TemplateGroups","ContentType","ContentTypeID","followUpTaskInterval","itemLabelExtension","TaskPriority","followUpTaskPriority","TypeID","onValueChanged","FromEmail","fromEmail","CC","BCC","saveAsCorrespondence","newPropertiesOnly","FreeFormat","EmailItemsComponent","NewsletterComponent","onNewsLetterMenuItemClick","onNewsletterRowClick","DisplayHtml","EmailSignaturesConfigurationModal","onSignatureSelected","MailshotItemModal","NewsletterArticleModal","onlyShowTcf","onDocumentsChanged","onTcfChanged","multiple","clonePropFilters","modalFilter","onFiltersApplied","onClearFilters","branch","showFilters","typeValueChanged","selectedDescription","statusValueChanged","branchValueChanged","GridFiltersBase","Types","Statuses","findTypeRestriction","currentContactId","typeToFind","searching","primaryContactName","selectedContactFurtherDetails","showFiltersModal","searchQuery","onInputChanged","fetchContacts","textToFind","maxResults","statusID","branchID","checkIfContactIsLinked","adaptiveRowSelection","emitSelectedContact","onNewContactClick","fetchContactDetails","fetchPrimaryContactName","linkedTo","then","mobileNumber","altReference","isRestricted","confirmed","filtersApplied","selectedFilters","summaryFilters","gridFilters","values","FindInput","onChanged","GridFilterSummary","rowCount","onFilterClick","dropdownMenuDisable","showMenu","FindContactResults","FilterContactFindResults","resetString","findValue","valueChangedTimer","clearTimeout","categoryValueChanged","PropertyCategory","PropertyStatus","selectedProperty","searchFilters","fetchProperties","emitSelectedProperty","FindPropertyResults","FindPropertyFiltersModal","addIconTotText","firstRowSymbols","secondRowSymbols","thirdRowSymbols","fourthRowSymbols","fithRowSymbols","sixthRowSymbols","seventhRowSymbols","eigthRowSymbols","ninthRowSymbols","tenthRowSymbols","elventhRowSymbols","twelthRowSymbols","thirteenthRowSymbols","symbol","displayedHtml","displayCancelConfirmationModal","editableHtml","htmlMarkup","setToolbarPosition","htmlToolbarContainer","sizeValues","fontValues","headerValues","isMultiline","fontSizeOptions","inputAttr","fontFamilyOptions","headerOptions","displayIconSelector","cursorPosition","displayEditHtmlModal","htmlEditor","symbolSelected","insertText","openSymbolModal","getSelection","htmlUpdated","updatedHtml","getCursorPosition","Block","Quill","tagName","DxHtmlEditor","valueType","onFocusIn","DxMediaResizing","enabled","DxImageUpload","tabs","multiline","EditHtmlModal","onHtmlUpdated","SymbolSelectorModal","onSymbolSelected","xmlns","d","TasksNotes","systemUserId","certificateID","noteDetails","initalNoteDetails","ownerName","focusBodyField","contactRequired","openTemplateModal","taskTemplate","showNoteModal","populateData","fetchOwnerName","fetchData","defaultTaskTypeId","DefaultNoteType","Note","populateSubjectBodyFields","closeTaskModal","dateStamp","customValidationFunction","requiredMessage","conditionalBodyValidation","customValidation","conditionalSubjectValidation","contactLookup","propertyLookup","_mergeProps","ContactTasksValidation","invalidMessage","focusInput","FieldValidationFreeDateBox","includeTime","updateTableSourceOnIdChange","alwaysShowAtTop","desktopAlert","TaskTemplatesConfigurationModal","onEmitSelectedDetails","contactLookupReadOnly","stageTwo","stageThree","editableData","originalData","displayNewContactModal","isContactEntered","ownerDetails","displayCompaniesModal","contactTypeConfigurationStore","companies","addressModel","addressValidation","PropertiesValidation","PropertyName","Street","Locality","Town","Region","Postcode","pages","triggerCompanyModalToOpen","fetchOwnersDetails","typeOfOwnerType","ownerHasNoHomeAddress","alert","fillAddressFields","onNavigateClick","direction","saveProperty","nextSubmitButtonText","existingContactSelected","newContactCreated","buttonValidationGroup","pageNumber","fetchCompanies","companyID","companySelected","createNewContact","TenantSwitchProgress","progress","DxMultiView","loop","showClearIcon","onNavigateToContact","mainDetails","ForSale","tenure","PropertyTenure","idsToExclude","Completed","UnderOffer","propertyAreaID","PropertyAreas","PropertyTypes","price","ToLet","priceFrequency","PropertyPriceFrequency","bedrooms","_normalizeClass","hideButton","rtlEnabled","SelectCompanyModal","onCompanySelected","propertySummary","getPropertyData","callTelephone","callMobile","selectedCompanyId","gridKey","doubleClick","printBlobImage","reader","FileReader","onloadend","base64data","printImageInNewWindow","readAsDataURL","imageSrc","tempHtml","tempWindow","write","copyBlobImageToClipboard","isPng","pngBlob","convertImageBlobToPngBlob","ClipboardItem","canvas","createElement","ctx","getContext","bitmap","createImageBitmap","drawImage","Promise","toBlob","qrCode","textForCodeGeneration","createQrCode","cleanUpQRCode","getPropertyQrCode","createQRUsingText","createObjectURL","getFile","revokeObjectURL","onCopyClick","onPrintClick","copyPrintButtonPositions","mapSupportCaseReasonsToIDDescriptionPairArray","caseReasons","useSupportCaseReasonsStore","primaryCaseReasons","secondaryCaseReasons","getPrimarySupportCaseReasons","reasons","getPrimarySupportCaseReasonsFromApi","getSecondarySupportCaseReasons","primaryCaseReasonId","secondaryCaseReasonCacheItem","primarySupportCaseReasonId","getSecondarySupportCaseReasonsFromApi","mappedCaseReasons","getPrimarySupportCaseReasonDescription","reasonId","getSecondarySupportCaseReasonDescription","secondaryCaseReasonId","selectedReasonId","supportReasonsCasesStore","supportCaseReasons","retrievingData","singleSelectReadOnly","immediate","switchId","supportCase","switchID","reason","secondaryReason","secondaryReasonId","documents","tcf","caseReasonsStore","createSupportCase","uploadDocument","homeMoverCaseID","Other","Tcf","supportCaseId","documentType","uploadFile","resetUploadedFiles","validator","SupportCaseReasonsSingleSelect","SecondarySupportCaseReasonsSingleSelect","DxValidator","DxRequiredRule","DxTextArea","DocumentUpload","dateRegulationsConsent","screeWidth","smallScreen","scrollView","DxCheckBox","personalDataComplient","receiveCommunication","numericalField","disableMprnLookup","requestBody","ireland","getPropertyAddress","searchClick","adapterConfig","getValue","applyValidationResults","validationErrors","brokenRule","validationRequestsCallbacks","mprnUpdated","hint","adapter","DxNumericRule","ElectricityMeterTypes","tenantSwitchConfirmAddress","mprnAddress","html","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","energy","addressValidated","gasMeterType","showHousingDevelopmentQuestion","housingDevelopmentSelectedOption","closeError","addressValid","energyInformation","paygOptionSelected","buttonSelected","Yes","energyTypeSelected","currrentDate","setHours","mprnAddressInformation","selectedMprn","searchSuccess","invalidMprnEntered","propertyFound","addressInformation","addressMatched","formattedMprnAddress","popupWidth","addressPropertyName","addressStreet","addressLocality","addressTown","addressRegion","addressPostcode","closeErrorMessage","showTwentyFourMeterRead","Standard","Smart","StandardNightSaver","showNightMeterRead","DayNight","DayNightPeak","showDayMeterRead","showPeakMeterRead","showNightSaveMeter","showGasFields","searchFailed","meterType","setPaygNo","smart","standard","pAYGValue","updateNewHousingDevelopmentOption","defaultHousingOption","No","MprnPropertyLookup","onPropertyFound","onSearchFailed","onMprnUpdated","smallError","electricEnergised","electricMeterSerialNumber","SelectOption","boldTitle","selectBoxOneText","selectBoxTwoText","selectBoxThreeText","onButtonSelected","placeholder","maxLength","invalidNumericalMessage","minLength","displayLeadingZeros","maxDate","useToolTip","toolTipId","toolTipTarget","showAskterisk","titleSpacing","selectedByDefault","landlordDetails","telephoneNumberValid","screenWidth","fetchDetailsFillFields","selectedPropertyLandlord","preferredTelehoneNumbers","telehpneInputOptions","phoneNumberValidated","valid","showLandlordLookup","SwitchContactLookup","PropertyOwners","VueTelInput","defaultCountry","inputOptions","onValidate","preferredCountries","checked","blurb","checkedComputed","landlordChecked","agencyChecked","LandlordCOAgency","agencyBlurb","agencyAddress","city","county","postalCode","agencyName","landlordName","phone","landlordBlurb","landlordAddress","BillToCard","DxTooltip","irishCounties","selectedCountyId","getCountyId","getCountyDescription","normalizedDescription","matchedCounty","countyId","onAddressFound","showAddressFields","BillToSelect","AutoAddressWrapper","onOnAddressFound","IrishCountiesSingleSelect","LandlordSwitchStep","disableSummaryEditButtons","Summary","Confirmation","Energy","Billing","submitSwitchDetails","nextButtonLocked","backButtonDisabled","submissionRepsonse","switchOverID","caseID","stageSix","navigate","navigateDirection","landlordTelephoneNumberValid","payAsYouGoSelected","stageFour","stageFive","resetToDefaultState","switchStage","billToLandlord","disableNextButton","inValid","onPayAsYouGoSelected","resetEnergyFields","propertySelected","gas","electric","utilitySupplierElectricityRef","utilitySupplierGasRef","payg","contentRenderKey","newSwitchOver","updatePageNumber","changeToPage","EnergyPage","LandlordPage","BillingPage","PropertyLookupPage","onChoseNotToUseExistingProperty","EnergyDetailsPage","onDisableNextButton","LandlordDetailsPage","billing","BillingAddressPage","SummaryPage","energySelectedAddress","displayTcf","displayBillingAddress","billingInformation","onUpdatePageNumber","disableEditButtons","confirmation","SurrenderSwitchStep","Property","housingDevelopmentOptionSelected","numericalHousingDevelopmentOptionSelected","updateNewHousingDevelopment","selectedValue","onUpdateNewHousingDevelopment","autoFillPropertyFields","existingProperty","matchAddressToExistingProperty","askUserToUseExistingProperty","promptResult","onSearchCompleted","resetScroll","smallerDevices","onOnSearchCompleted","Purchaser","Consent","purchaserPersonalInfo","purchaserTelephoneNumberValid","mprnAddressEmpty","every","PurchaserDetails","purchaserDetails","consent","ConsentPage","PurchaserSummary","lookupLabel","tenantMaxBirthDate","setFullYear","getFullYear","onCriticalCareSelected","selectedOption","criticalCareToggleValue","showPurchaserLookup","Purchasers","pageId","editDetails","autoFillPurchaserDetails","tcfUploaded","page","billToText","agencyAccount","TenantPage","toLocaleDateString","TcfPage","comparisonIndex","pageNumberCompleted","pageNumberReached","DxProgressBar","showStatus","max","CouncilTenantSwitchStep","Tenant","tcfUploadFailed","checkTcfUpload","stageSeven","tenantTelephoneNumberValid","smallScreensProgressContainer","TenantDetailsPage","selectedContactRequiresCriticalCare","showTenantLookup","Tenants","isEmail","ownerLabel","showOwnerLookup","TenantSwitchStep","fetchTenantInformation","tenantApiInfo","fetchTenancyInformation","tenancyInformation","autoFillFields","stageEight","PropertyOwnerDetailsPage","TaskStatus","openedFromContactPage","taskDetails","originalTaskJson","createdTask","taskTypeData","updateMailingCheckedDate","showTaskModal","resetCompletedDateForOutstandingTasks","lockTaskRecord","setDefaultTaskType","DefaultTaskType","Outstanding","completedDate","unlockTaskRecord","updateDates","updateContactRenewalDate","renewalDateUpdated","minDueDate","formattedAddedDate","formattedUpdatedDate","startDateChanged","dueDate","fetchTaskTypeData","conditioanlBodyValidation","conditioanlSubjectValidation","onNavigateToProperty","systemCodeSingleSelect","priority","onValueSelected","DueDate","dateToggle","CompletedDate","methods","setVanityMode","vanityMode","autoaddress","setLanguage","language","setCountry","setProfileName","profileName","setGeographicAddress","geographicAddress","setAddressElements","addressElements","setLimit","limit","setLabel","labelName","showAutocomplete","setDisplayBusinessListings","displayBusinessListings","clearAddress","setApiDomain","api_domain","addressProfile","optionsLimit","mounted","el","$refs","vueref0","VanillaAutoaddress","licencekey","autocomplete","autocompleteMinChars","defaultSearch","placeHolderLabel","searchButtonLabel","optionsFoundLabel","incompleteAddressLabel","partialAddressLabel","nuaAddressFoundLabel","noResultFoundLabel","addressFoundLabel","inputRequiredLabel","errorMessageLabel","addressTabLabel","businessTabLabel","noEircodeAppendedLabel","onInitialize","$emit","onAutoCompleteSelected","onSearchStart","onLookupError","onChange","onClear","onFocus","unmounted","addressId","AutoAddress","postcodeSelected","addressResultsFound","displayAddress","autoSelectAddress","_useCssVars","addresses","onPostcodeSelected","onSearch","singleLookupResult","rowClick","computedLabel","buttonOptions","postcodeValidationCallback","DxCustomRule","reevaluate","FindPostcodeModal","addressDetails","selectAddress","prevValue","countrySelect","postcodeLookup","onSelectAddress","showEditButton","disableEditButton","edgeToEdgeContent","iconAfterTitle","iconTitleContainerFlexDirection","contentMargin","customErrorMessage","numberArray","singleSelect","dropdownDataSource","valueChanged","customFirstValue","populateDataSource","shift","selectedNumber","bottomMargin","selectedValueID","dropdownOpened","inputEntered","selectedIdDescriptionPair","asteriskVisible","DxSelectBox","preSelectedId","runExport","showColumnFilters","noDataText","enableKeyPressDetection","rowToSelectId","selectedIdHasTruthyValue","grid","selection","selectRows","onRowDoubleClick","getCustomColumnDataSlotName","slotName","selectedRowsData","getController","getGlobalRowIndexByKey","selectedRowKeys","done","focusedRowId","excelExportFileName","exportGridToExcel","workbook","Workbook","worksheet","addWorksheet","exportDataGrid","encodeExecutableContent","buffer","xlsx","writeBuffer","runExportToExcel","selectPreviousRow","showHiddenInformationClick","rowType","formOptions","colCount","searchPosition","isHeaderContentSlotUsed","slots","useSlots","showToolbar","onKeyDown","firstVisibleColumn","getFirstVisibleTextColumn","dataField","foundRecord","getFirstRecordStartingWithPressedKey","displayedColumns","getVisibleColumns","column","dataType","columnName","DxDataGrid","onRowDblClick","hoverStateEnabled","onContentReady","onAdaptiveDetailRowPreparing","_createSlots","DxScrolling","DxFilterRow","DxRowDragging","DxSearchPanel","slot","fn","displayFilters","disableFilters","showGenericMenuItems","showExportItem","displayNewButton","disableNewButton","newButtonText","darkHeader","gridMenuId","myPosition","atPosition","showFilterColumn","headerBackgroundColour","headerTextColour","buttonBorder","enableColumnIsShown","Enable","Disable","UnselectAllRows","SelectAllRows","areAllFiltersEmpty","newButtonClick","compuputedItems","FilterRows","clearFilters","applyFilters","buttonIcon","buttonText","menuPosition","isMobile","collision","onMenuButtonClick","buttonClass","minDate","dateValue","maxDateValidation","isSameOrBefore","minDateValidation","dateBoxType","displayFormat","dateTimeDropDownOptions","onHiding","button","querySelector","click","dateOnlyDropDownOptions","toolbarItems","onTodayClick","formatCurrentDate","dropDownOptions","serializationFormat","onOpened","_popup","option","focusStateEnabled","dateBoxReadonly","DxDateBox","min","dateSerializationFormat","adaptivityEnabled","subLabel","valueChangeEvent","containerId","textAreaKey","textArea","focus","onOptionChanged","NotSet","textboxModeType","textboxMode","showPasswordOptions","viewUrlOptions","redirectToUrl","onFocusOut","DxEmailRule","hexToWin32Color","hex","rgbValues","hexToRgb","ColorRGBToWin32","b","g","r","exec","parseInt","rgbToWin32","colour","colourSubstring","colourArray","split","htmlColor","setHtmlColor","ColorWin32ToRGB","nextTick","win32Color","DxColorBox","XXSmall","numberValue","DxNumberBox","maxValidationMessage","minValidationMessage","typre","isPassword","minLengthValidation","focusOut","padStart","DxPatternRule","pattern","showFileList","buttonBackground","buttonTextColor","triggerFileUploading","fileTypes","hideButtons","fileWidth","removeFileHoverCursor","removeFileHoverColor","fileUploadControl","onFileChange","formatFileSize","fileSize","toFixed","onRemoveClick","dataTransfer","DataTransfer","onCancel","onDblclick","size","accept","secondCustomValidation","secondInvalidMessage","showSpinButtons","onUserInput","firstSelected","secondSelected","thirdSelected","secondButtonSelected","thirdButtonSelected","selectedButton","isCustomIconSlotUsed","contactFullDetails","peekModalKey","getContactName","incrementPeekModalKey","primaryName","clearClick","navigateToContact","contactsPeekPopup","includeInactiveItems","getLookupItems","iconClicked","selectedId","selectedItem","idDescriptionPair","displayPropertyPeekModal","propertyPeekTitle","word","navigateToProperty","PropertyPeekModal","resultsMaxWidth","displayResults","findResults","restrictedResults","searchButtonOptions","postData","onGridSelect","onMoreInfoClick","contactDetails","getContactDetailsFromApi","_withModifiers","outsideShadingColour","scrollToBottom","loadingContent","scrollableElementSelector","resetScrollPosition","setPopupWidth","onUnmounted","breakPoints","MobileFullWidth","setLargePopupWidth","setMediumPopupWidth","setSmallPopupWidth","onClosingModal","userConfirmedCancel","alertResult","isContentSlotUsed","onInitialized","registerKeyHandler","arg","onHelpClick","DxPopup","onHidden","shadingColor","role","tabindex","cancelButtonText","onRejectClick","onConfirmClick","confirmButtonOptions","rejectButtonOptions","cancelButtonOptions","ScrollbarPosition","scrollPosition","Top","onScroll","Mid","onUpdated","reachedTop","reachedBottom","Bottom","modalFadeClasses","dxScrollView","scrollInterval","startAutoScroll","clearInterval","setInterval","elem","scrollHeight","scrollByThumb","scrollByContent","systemCodesStore","fetchSystemCodes","codes","toggle","_normalizeStyle","DxSwitch","switchedOffText","switchedOnText","marginBottom","switchModel","dxSwitchValue","showStatusModal","userIsLocked","loggedInUser","resetPhotoField","resetSignatureField","photoToUpload","uploadedPhotoURL","recordPhoto","signatureToUpload","uploadedSignatureURL","recordSignature","uploadPhoto","photo","uploadSignature","signature","lockUserDetails","editingLoggedInUser","password","changesMade","unLockUserDetails","fetchDisplayPhoto","fetchDisplaySignature","passwordKey","fetchPhoto","photoAddedOrUpdated","signatureAddedOrUpdated","username","UserName","UserTypes","userTypeId","allowSignatoryChange","UserDepartments","departmentId","foreColor","backColor","resetImageField","imageToUpload","uploadedPictureURL","recordImage","fetchDisplayImage","fetchImage","uploadImage","imageAddedOrUpdated","NewsValidation","NewsDate","newsDate","newsList","News","NewEditNewsModal","watermarkColor","iconWidth","watermarkWidth","textRightPadding","points","showNewTenantSwitchModal","onSwitchoversClick","onSupportCasesClick","navigateToSupportCases","onCreateSupportCaseClick","onNewSupportCaseCreated","HomePageButton","TenantSwitchIcon","LandlordSwitchIcon","PurchaserSwitchIcon","UtilitySwitchIcon","SupportCaseIcon","NewSupportCaseIcon","HelpIcon","onNewCaseCreated","onAllocationClick","onSwitchToBuyerClick","displayCarousel","carouselImages","DxGallery","useHomeCarouselStore","carouselShown","getCookieName","checkIfCarouselHasBeenShown","carouselHasBeenShown","todayDate","daysUntilExpiry","diff","href","homeCarouselStore","PageHeading","customIcon","HomeIcon","HomeCarousel","UtilitySwitchingAgentPanel","UtilitySwitchingCouncilPanel","webpackAsyncContext","all","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","deferred","O","chunkIds","notFulfilled","Infinity","fulfilled","j","getter","__esModule","a","definition","defineProperty","enumerable","f","chunkId","reduce","promises","u","miniCssF","globalThis","obj","prop","hasOwnProperty","inProgress","dataWebpackPrefix","l","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","setAttribute","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","createStylesheet","fullhref","oldTag","reject","linkTag","rel","onLinkComplete","errorType","realHref","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}