{"mappings":"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","sources":["src/Contact/Contact.tsx","src/Contact/ContactFooter.tsx","src/Contact/ContactHome.tsx","src/Contact/GridButton.tsx","src/Contact/ContactIntro.tsx","src/Contact/connectWithLanguage.tsx","src/Common/Layout/useLayout.ts","src/Contact/contactLayoutUtils.ts","src/Contact/ContactNotLumoCustomer.tsx","src/Contact/ContactLumoCustomer.tsx","src/Contact/FeedbackForm.tsx","src/Contact/Telemetry.ts","src/Common/ValidationHelper.ts","src/Contact/ContactCompanies.tsx","src/Contact/ContactApartmentRental.tsx","src/Contact/FeedbackFormThanks.tsx","src/Contact/RentalContactForm.tsx","src/Contact/RentalContactFormThanks.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Route, Routes } from 'react-router-dom';\nimport ContactFooter from './ContactFooter';\nimport ContactHome from './ContactHome';\nimport ContactNotLumoCustomer from './ContactNotLumoCustomer';\nimport ContactLumoCustomer from './ContactLumoCustomer';\nimport { FormCustomer, FormNotCustomer } from './FeedbackForm';\nimport ContactCompanies from './ContactCompanies';\nimport ContactApartmentRental from './ContactApartmentRental';\nimport FeedbackFormThanks from './FeedbackFormThanks';\nimport RentalContactForm from './RentalContactForm';\nimport RentalContactFormThanks from './RentalContactFormThanks';\nimport { useLanguage } from '../Components/ResourceText';\n\nexport const contactRoutes = {\n\thome: '/',\n\tlumoCustomer: { fi: 'asiakas', en: 'customer' },\n\tnotLumoCustomer: { fi: 'yleinen', en: 'public' },\n\tfeedbackCustomer: { fi: 'asiakas/palaute', en: 'customer/feedback' },\n\tfeedbackNotCustomer: { fi: 'yleinen/palaute', en: 'public/feedback' },\n\tfeedbackThanks: { fi: 'palaute/kiitos', en: 'feedback/thanks' },\n\tcompany: { fi: 'yrityksille', en: 'companies' },\n\trental: { fi: 'vuokraus', en: 'rental' },\n\trentalContactForm: { fi: 'vuokraus/muu', en: 'rental/other' },\n\trentalContactFormThanks: { fi: 'vuokraus/muu/kiitos', en: 'rental/other/kiitos' },\n};\n\nexport default function Contact() {\n\tconst language = useLanguage();\n\treturn (\n\t\t<>\n\t\t\t<div className=\"flow-contact__wrapper\">\n\t\t\t\t<Routes>\n\t\t\t\t\t<Route path={contactRoutes.home} element={<ContactHome />} />\n\t\t\t\t\t<Route path={contactRoutes.lumoCustomer[language]} element={<ContactLumoCustomer />} />\n\t\t\t\t\t<Route path={contactRoutes.notLumoCustomer[language]} element={<ContactNotLumoCustomer />} />\n\t\t\t\t\t<Route path={contactRoutes.company[language]} element={<ContactCompanies />} />\n\t\t\t\t\t<Route path={contactRoutes.feedbackCustomer[language]} element={<FormCustomer />} />\n\t\t\t\t\t<Route path={contactRoutes.feedbackNotCustomer[language]} element={<FormNotCustomer />} />\n\t\t\t\t\t<Route path={contactRoutes.feedbackThanks[language]} element={<FeedbackFormThanks />} />\n\t\t\t\t\t<Route path={contactRoutes.rental[language]} element={<ContactApartmentRental />} />\n\t\t\t\t\t<Route path={contactRoutes.rentalContactForm[language]} element={<RentalContactForm />} />\n\t\t\t\t\t<Route\n\t\t\t\t\t\tpath={contactRoutes.rentalContactFormThanks[language]}\n\t\t\t\t\t\telement={<RentalContactFormThanks />}\n\t\t\t\t\t/>\n\t\t\t\t</Routes>\n\t\t\t</div>\n\t\t\t<ContactFooter />\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { ResourceText, IUseResourceTexts, withResourceTextSupport } from '../Components/ResourceText';\nimport SmartLink from '../Components/SmartLink';\n\nfunction ContactFooter(props: IUseResourceTexts) {\n\treturn (\n\t\t<div className=\"flow-contact__links\">\n\t\t\t<div className=\"atom-textBlock\">\n\t\t\t\t<ul className=\"atom-textBlock__ul\">\n\t\t\t\t\t<li className=\"atom-textBlock__ul-li\">\n\t\t\t\t\t\t<SmartLink to={props.getResourceText('Contact_Footer_WhoToContact_Url')}>\n\t\t\t\t\t\t\t<ResourceText\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_Footer_WhoToContact\"\n\t\t\t\t\t\t\t\tdefaultText=\"Kehen otan yhteyttä? ›\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SmartLink>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li className=\"atom-textBlock__ul-li\">\n\t\t\t\t\t\t<SmartLink to={props.getResourceText('Contact_Footer_FAQ_Url')}>\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_Footer_FAQ\" defaultText=\"Usein kysytyt kysymykset ›\" />\n\t\t\t\t\t\t</SmartLink>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li className=\"atom-textBlock__ul-li\">\n\t\t\t\t\t\t<SmartLink to={props.getResourceText('Contact_Footer_KojamoContactInfo_Url')}>\n\t\t\t\t\t\t\t<ResourceText\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_Footer_KojamoContactInfo\"\n\t\t\t\t\t\t\t\tdefaultText=\"Kojamo-konsernin yhteystiedot ›\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SmartLink>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default withResourceTextSupport(ContactFooter);\n","import * as React from 'react';\nimport { GridButton, GridButtonWide } from './GridButton';\nimport { ContactIntro } from './ContactIntro';\nimport { contactRoutes } from './Contact';\nimport { connectWithLanguage, ContactSectionProps } from './connectWithLanguage';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { getContactHomeLayoutSettings } from './contactLayoutUtils';\nimport { ResourceText } from '../Components/ResourceText';\nimport PageMeta from '../Common/Layout/PageMeta';\n\nfunction ContactHome(props: ContactSectionProps) {\n\tuseLayout(getContactHomeLayoutSettings(), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta title={{ key: 'WindowTitle_Contact_Home', defaultValue: 'Ota yhteyttä' }} />\n\t\t\t<ContactIntro\n\t\t\t\theading={<ResourceText resourceKey=\"Contact_Home_Heading\" defaultText=\"Kuinka voimme auttaa sinua?\" />}\n\t\t\t\tcontent={\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_Home_Content\"\n\t\t\t\t\t\tdefaultText=\"Seuraavat valinnat ohjaavat viestisi heti oikealle henkilölle.\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<ul className=\"mod-gridButtons flow-contact__buttons\">\n\t\t\t\t<GridButton linkTarget={contactRoutes.lumoCustomer[props.language]}>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_Home_LumoCustomer\" defaultText=\"**Olen** Lumo‑asukas\" />\n\t\t\t\t</GridButton>\n\t\t\t\t<GridButton linkTarget={contactRoutes.notLumoCustomer[props.language]}>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_Home_NotLumoCustomer\" defaultText=\"**En ole** Lumo‑asukas\" />\n\t\t\t\t</GridButton>\n\t\t\t\t<GridButtonWide linkTarget={contactRoutes.company[props.language]}>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_Home_CompanyCustomer\" defaultText=\"**Olen** yritysasiakas\" />\n\t\t\t\t</GridButtonWide>\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(ContactHome);\n","import * as React from 'react';\nimport SmartLink from '../Components/SmartLink';\n\ninterface BaseProps {\n\tchildren: JSX.Element | string;\n\tlinkTarget: string;\n\tcontentClasses?: '-font-medium';\n\tlinkId?: string;\n}\ntype Props = BaseProps & { variant?: '-wide' };\n\nexport function GridButton(props: Props) {\n\tconst buttonContent = (\n\t\t<>\n\t\t\t<div className={'mod-gridButtons__content' + (props.contentClasses ? ' ' + props.contentClasses : '')}>\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t\t<div className=\"mod-gridButtons__caret\"></div>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<li className={'mod-gridButtons__single' + (props.variant ? ' ' + props.variant : '')}>\n\t\t\t<SmartLink className=\"mod-gridButtons__single-link\" to={props.linkTarget} id={props.linkId}>\n\t\t\t\t{buttonContent}\n\t\t\t</SmartLink>\n\t\t</li>\n\t);\n}\n\nexport function GridButtonWide(props: BaseProps) {\n\treturn GridButton({ ...props, variant: '-wide' });\n}\n","import * as React from 'react';\nexport function ContactIntro(props: {\n\theading: string | React.ReactElement;\n\tcontent?: string | React.ReactElement;\n\tchildren?: React.ReactElement;\n}) {\n\treturn (\n\t\t<div className=\"flow-contact__intro\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 27\" className=\"flow-contact__introIcon\">\n\t\t\t\t<path\n\t\t\t\t\tfill=\"#FFF\"\n\t\t\t\t\tfillRule=\"nonzero\"\n\t\t\t\t\td=\"M22.7153239,14.9945548 C22.2903998,14.4019763 21.9058067,14 20.9,14 C20.5,14 20.1,14.1 19.8,14.3 C19.4,13.3 18.2198643,12.657838 17.2198643,13.057838 C17.0198643,13.157838 17.0198643,13.157838 16.8,13.3 C16.4,12.3 15.4751851,11.8613827 14.8483126,11.9822023 C14.2214402,12.1030219 14.0986905,12.2305967 14,12.3 L14,11 C15.1,11 16,10.1 16,9 L16,0 L0,0 L0,9 C0,10.1 0.9,11 2,11 L10,11 L10,16.3 C9.2,15.8 8.1278856,15.9406383 7.5278856,16.5406383 C6.7278856,17.3406383 6.65581376,18.481413 7.6,19.4 L10.2,22 C10.8,24.4 12.6,26.2 15,26.8 C15.5,26.9 16,27 16.5,27 L16.6,27 C20,27 22.7,24.4 23,21 C23,20.8 23,20.7 23,20.5 L23,16 C23,15.5694392 22.9277484,15.3224425 22.7153239,14.9945548 Z M14,1 L8.19672131,4.92982456 C8,5.02339181 7.80327869,5.02339181 7.60655738,4.92982456 L2,1 L14,1 Z M2.00719424,10 C1.4028777,10 1,9.61904762 1,9.04761905 L1,1.48877323 L7.11903792,5.7464247 C7.62263504,6.12737708 8.32767101,6.12737708 8.83126814,5.7464247 L15,1.58028711 L15,9.04761905 C15,9.52380952 14.5971223,10 13.9928058,10 L14,8 C14,6.95238095 13.1079137,6 12,6 C10.8920863,6 10,6.95238095 10,8 L9.96402878,10 L2.00719424,10 Z M22,20.5 C22,23.5 19.5,26 16.5,26 C16.2,26 15.8,26 15.5,25.9 C13.3,25.5 11.5,23.7 11.1,21.5 L10,20.4 L8.3,18.7 C7.9,18.3 7.9,17.7 8.3,17.3 C8.7,16.9 9.3,16.9 9.7,17.3 L11,18.6 L11,8 C11,7.4 11.4,7 12,7 C12.6,7 13,7.4 13,8 L13,17 L14,17 L14,14 C14,13.4 14.4,13 15,13 C15.6,13 16,13.4 16,14 L16,17 L17,17 L17,15 C17,14.4 17.4,14 18,14 C18.6,14 19,14.4 19,15 L19,18 L20,18 L20,16 C20,15.4 20.4,15 21,15 C21.6,15 22,15.4 22,16 L22,20.5 Z\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t\t<h1 className=\"atom-heading -xlargeAlt flow-contact__introHeading\">{props.heading}</h1>\n\t\t\t<div className=\"atom-textBlock\">{props.content && <p>{props.content}</p>}</div>\n\t\t\t{props.children && props.children}\n\t\t</div>\n\t);\n}\n","import { connect } from 'react-redux';\nimport { ILumoOneAppState } from '../boot/configureStore';\nimport { layoutActions, LayoutDispatchProps } from '../Common/Layout/layoutActions';\nimport { UseLayoutStateProps } from '../Common/Layout/useLayout';\nimport { pageViewTelemetryActions } from '../Telemetry/pageViewTelemetryActions';\nimport { Language } from '../Common/interfaces/language';\n\nexport type ContactSectionStateProps = UseLayoutStateProps & { language: Language };\nexport type ContactSectionDispatchProps = LayoutDispatchProps & {\n\tpageComplete: typeof pageViewTelemetryActions.pageComplete;\n};\nexport type ContactSectionProps = ContactSectionStateProps & ContactSectionDispatchProps;\n\nexport function connectWithLanguage(component: any) {\n\treturn connect<ContactSectionStateProps, ContactSectionDispatchProps, Record<string, never>, ILumoOneAppState>(\n\t\t({ language, layout }) => ({ language: language.currentLanguage, layout }),\n\t\t{\n\t\t\tsetLayoutValues: layoutActions.setValues,\n\t\t\tpageComplete: pageViewTelemetryActions.pageComplete,\n\t\t},\n\t)(component);\n}\n","import { LayoutDispatchProps } from './layoutActions';\nimport { PageSpecificLayoutSettings } from './layoutState';\nimport { useRunOnce } from '../../SSR/inlineRenderDispatchHelper';\n\nexport interface UseLayoutStateProps {\n\tlayout: PageSpecificLayoutSettings;\n}\nexport type UseLayoutProps = UseLayoutStateProps & LayoutDispatchProps;\n\nexport function useLayout(settings: PageSpecificLayoutSettings, props: UseLayoutProps) {\n\tuseRunOnce(() => props.setLayoutValues(settings));\n}\n","import { contactRoutes } from './Contact';\nimport { PageSpecificLayoutSettings } from '../Common/Layout/layoutState';\nimport { Language } from '../Common/interfaces/language';\nimport { routeFromRoot, routes } from '../Common/routes';\nimport { LocalizedRoute } from '../Common/LocalizedRoute';\n\nexport function getContactHomeLayoutSettings(): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_Home', defaultValue: 'Ota yhteyttä' },\n\t\tbreadcrumbParents: [],\n\t\ttranslateUrl: getContactTranslateUrl(),\n\t};\n}\n\nfunction breadcrumbContactHome(language: Language) {\n\treturn {\n\t\tname: { key: 'BreadCrumb_Contact_Home', defaultValue: 'Ota yhteyttä' },\n\t\tpath: routeFromRoot(routes.contact)[language],\n\t};\n}\n\nfunction breadcrumbTopicSelection(language: Language, isCurrentCustomer: boolean) {\n\treturn {\n\t\tname: { key: 'BreadCrumb_Contact_TopicSelection', defaultValue: 'Aihe' },\n\t\tpath: getContactSubPath(\n\t\t\tlanguage,\n\t\t\tisCurrentCustomer ? contactRoutes.lumoCustomer : contactRoutes.notLumoCustomer,\n\t\t),\n\t};\n}\n\nfunction breadcrumbApartmentRental(language: Language) {\n\treturn {\n\t\tname: { key: 'BreadCrumb_Contact_ApartmentRental', defaultValue: 'Asunnon vuokraus' },\n\t\tpath: getContactSubPath(language, contactRoutes.rental),\n\t};\n}\n\nfunction breadcrumbRentalContactForm(language: Language) {\n\treturn {\n\t\tname: { key: 'BreadCrumb_Contact_RentalContactForm', defaultValue: '' },\n\t\tpath: getContactSubPath(language, contactRoutes.rentalContactForm),\n\t};\n}\n\nexport function getContactLumoCustomerLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_TopicSelection', defaultValue: 'Aihe' },\n\t\tbreadcrumbParents: [breadcrumbContactHome(language)],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.lumoCustomer),\n\t};\n}\n\nexport function getContactNotLumoCustomerLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_TopicSelection', defaultValue: 'Aihe' },\n\t\tbreadcrumbParents: [breadcrumbContactHome(language)],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.notLumoCustomer),\n\t};\n}\n\nexport function getContactCompanyLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_Company', defaultValue: '' },\n\t\tbreadcrumbParents: [breadcrumbContactHome(language)],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.company),\n\t};\n}\n\nexport function getFeedbackFormLayoutSettings(\n\tlanguage: Language,\n\tisCurrentCustomer: boolean,\n): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_FeedbackForm', defaultValue: 'Palaute' },\n\t\tbreadcrumbParents: [breadcrumbContactHome(language), breadcrumbTopicSelection(language, isCurrentCustomer)],\n\t\ttranslateUrl: getContactTranslateUrl(\n\t\t\tisCurrentCustomer ? contactRoutes.feedbackCustomer : contactRoutes.feedbackNotCustomer,\n\t\t),\n\t};\n}\n\nexport function getFeedbackFormThanksLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact flow-contact__thanks',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_FeedbackFormThanks', defaultValue: 'Kiitos' },\n\t\tbreadcrumbParents: [breadcrumbContactHome(language)],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.feedbackThanks),\n\t};\n}\n\nexport function getContactApartmentRentalLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_ApartmentRental', defaultValue: 'Asunnon vuokraus' },\n\t\tbreadcrumbParents: [breadcrumbContactHome(language), breadcrumbTopicSelection(language, false)],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.rental),\n\t};\n}\n\nexport function getContactRentalContactFormLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_RentalContactForm', defaultValue: 'Asunnon vuokraus' },\n\t\tbreadcrumbParents: [\n\t\t\tbreadcrumbContactHome(language),\n\t\t\tbreadcrumbTopicSelection(language, false),\n\t\t\tbreadcrumbApartmentRental(language),\n\t\t],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.rentalContactForm),\n\t};\n}\n\nexport function getContactRentalContactFormThanksLayoutSettings(language: Language): PageSpecificLayoutSettings {\n\treturn {\n\t\tadditionalMainClasses: 'flow-contact flow-contact__thanks',\n\t\tbreadcrumbCurrentName: { key: 'BreadCrumb_Contact_RentalContactFormThanks', defaultValue: '' },\n\t\tbreadcrumbParents: [\n\t\t\tbreadcrumbContactHome(language),\n\t\t\tbreadcrumbTopicSelection(language, false),\n\t\t\tbreadcrumbApartmentRental(language),\n\t\t\tbreadcrumbRentalContactForm(language),\n\t\t],\n\t\ttranslateUrl: getContactTranslateUrl(contactRoutes.rentalContactFormThanks),\n\t};\n}\n\nfunction getContactSubPath(language: Language, subPath?: LocalizedRoute) {\n\treturn `${routeFromRoot(routes.contact)[language]}${subPath ? `/${subPath[language]}` : ''}`;\n}\n\nexport function getContactTranslateUrl(subPath?: LocalizedRoute) {\n\treturn {\n\t\tfi: getContactSubPath('fi', subPath),\n\t\ten: getContactSubPath('en', subPath),\n\t};\n}\n","import * as React from 'react';\nimport { GridButtonWide } from './GridButton';\nimport { ContactIntro } from './ContactIntro';\nimport { connectWithLanguage, ContactSectionProps } from './connectWithLanguage';\nimport { contactRoutes } from './Contact';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { getContactNotLumoCustomerLayoutSettings } from './contactLayoutUtils';\nimport { ResourceText } from '../Components/ResourceText';\nimport PageMeta from '../Common/Layout/PageMeta';\n\nfunction ContactNotLumoCustomer(props: ContactSectionProps) {\n\tuseLayout(getContactNotLumoCustomerLayoutSettings(props.language), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta title={{ key: 'WindowTitle_Contact_NotCustomer', defaultValue: 'Ota yhteyttä - Aihe' }} />\n\t\t\t<ContactIntro\n\t\t\t\theading={\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_NotLumoCustomer_Heading\" defaultText=\"Yhteydenottosi aihe on?\" />\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<ul className=\"mod-gridButtons flow-contact__buttons\">\n\t\t\t\t<GridButtonWide linkTarget={`../${contactRoutes.rental[props.language]}`} contentClasses=\"-font-medium\">\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_NotLumoCustomer_ApartmentRental\"\n\t\t\t\t\t\tdefaultText=\"Asunnon vuokraus\"\n\t\t\t\t\t/>\n\t\t\t\t</GridButtonWide>\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={`../${contactRoutes.feedbackNotCustomer[props.language]}`}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_NotLumoCustomer_Feedback\"\n\t\t\t\t\t\tdefaultText=\"Palaute tai kehitysehdotus\"\n\t\t\t\t\t/>\n\t\t\t\t</GridButtonWide>\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(ContactNotLumoCustomer);\n","import * as React from 'react';\nimport { GridButtonWide } from './GridButton';\nimport { ContactIntro } from './ContactIntro';\nimport { connectWithLanguage, ContactSectionProps } from './connectWithLanguage';\nimport { contactRoutes } from './Contact';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { ResourceText, IUseResourceTexts, withResourceTextSupport } from '../Components/ResourceText';\nimport { getContactLumoCustomerLayoutSettings } from './contactLayoutUtils';\nimport PageMeta from '../Common/Layout/PageMeta';\nfunction ContactLumoCustomer(props: ContactSectionProps & IUseResourceTexts) {\n\tuseLayout(getContactLumoCustomerLayoutSettings(props.language), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta title={{ key: 'WindowTitle_Contact_LumoCustomer', defaultValue: 'Ota yhteyttä - aihe' }} />\n\t\t\t<ContactIntro\n\t\t\t\theading={\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_LumoCustomer_Heading\" defaultText=\"Yhteydenottosi aihe on?\" />\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<ul className=\"mod-gridButtons flow-contact__buttons\">\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={props.getResourceText('MyLumoUrlBase') + '/yhteydenotto'}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_LumoCustomer_Living\" defaultText=\"Asuminen\" />\n\t\t\t\t</GridButtonWide>\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={props.getResourceText('MyLumoUrlBase') + '/etusivu#asunnonvaihto'}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_LumoCustomer_ChangingApartment\"\n\t\t\t\t\t\tdefaultText=\"Asunnon vaihtaminen\"\n\t\t\t\t\t/>\n\t\t\t\t</GridButtonWide>\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={`../${contactRoutes.feedbackCustomer[props.language]}`}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_LumoCustomer_Feedback\"\n\t\t\t\t\t\tdefaultText=\"Palaute tai kehitysehdotus\"\n\t\t\t\t\t/>\n\t\t\t\t</GridButtonWide>\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(withResourceTextSupport(ContactLumoCustomer));\n","import React, { useEffect } from 'react';\r\nimport { ContactSectionStateProps, ContactSectionDispatchProps } from './connectWithLanguage';\r\nimport { ContactIntro } from './ContactIntro';\r\nimport { useLayout } from '../Common/Layout/useLayout';\r\nimport { useForm } from 'react-hook-form';\r\nimport { FeedbackFormAM } from './contactApiClient';\r\nimport { contactActions } from './contactActions';\r\nimport { connect } from 'react-redux';\r\nimport { ILumoOneAppState } from '../boot/configureStore';\r\nimport { layoutActions } from '../Common/Layout/layoutActions';\r\nimport { FeedbackFormState } from './contactState';\r\nimport { contactRoutes } from './Contact';\r\nimport { getContactTranslateUrl, getFeedbackFormLayoutSettings } from './contactLayoutUtils';\r\nimport { ResourceText, IUseResourceTexts, withResourceTextSupport } from '../Components/ResourceText';\r\nimport { addTelemetryEventForContactFormSubmitted } from './Telemetry';\r\nimport { getValidationClassForInput } from '../Common/ValidationHelper';\r\nimport { ValidationErrorDisplay } from '../Components/ValidationErrorDisplay';\r\nimport { isValidEmail } from '../InputValidators';\r\nimport { pageViewTelemetryActions } from '../Telemetry/pageViewTelemetryActions';\r\nimport PageMeta from '../Common/Layout/PageMeta';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ntype StateProps = FeedbackFormState & ContactSectionStateProps;\r\n\r\ntype DispatchProps = ContactSectionDispatchProps & {\r\n\tsubmitFeedback: typeof contactActions.submitFeedback.request;\r\n\tclearFeedbackState: typeof contactActions.clearFeedbackState;\r\n\tpageComplete: typeof pageViewTelemetryActions.pageComplete;\r\n};\r\n\r\ntype Props = StateProps & DispatchProps & IUseResourceTexts;\r\n\r\nfunction FeedbackForm({ isCurrentCustomer, ...props }: Props & { isCurrentCustomer: boolean }) {\r\n\tconst navigate = useNavigate();\r\n\tuseLayout(getFeedbackFormLayoutSettings(props.language, isCurrentCustomer), props);\r\n\tconst { register, handleSubmit, formState } = useForm({ mode: 'onChange' });\r\n\tconst { errors, touchedFields } = formState;\r\n\r\n\tconst onSubmit = (data: FeedbackFormAM) => {\r\n\t\tdata.isCurrentCustomer = isCurrentCustomer;\r\n\t\tprops.submitFeedback(data);\r\n\t\taddTelemetryEventForContactFormSubmitted('customerService');\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tprops.pageComplete({});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (props.submitted) {\r\n\t\t\tnavigate(getContactTranslateUrl(contactRoutes.feedbackThanks)[props.language]);\r\n\t\t\tprops.clearFeedbackState();\r\n\t\t}\r\n\t}, [props.submitted]);\r\n\r\n\tfunction GetInputFieldClassName(fieldName: string) {\r\n\t\treturn getValidationClassForInput(fieldName, touchedFields, errors);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<PageMeta title={{ key: 'WindowTitle_Contact_FeedbackForm', defaultValue: 'Ota yhteyttä - palaute' }} />\r\n\t\t\t<ContactIntro\r\n\t\t\t\theading={<ResourceText resourceKey=\"Contact_Feedbackform_Heading\" defaultText=\"Mitä asiasi koskee?\" />}\r\n\t\t\t\tcontent={\r\n\t\t\t\t\t<ResourceText\r\n\t\t\t\t\t\tresourceKey=\"Contact_Feedbackform_Content\"\r\n\t\t\t\t\t\tdefaultText=\"Pyrimme koko ajan parantamaan palveluitamme. Sinun palautteellasi on tärkeärooli toimintamme kehittämisessä.\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t\t<div className=\"flow-contact__cardWrapper\">\r\n\t\t\t\t<form className=\"atom-card -noGrid\" onSubmit={handleSubmit(onSubmit)}>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('name')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"contact_name\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_Feedbackform_Name\" defaultText=\"Nimi\" />{' '}\r\n\t\t\t\t\t\t\t<span className=\"input-basic__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\tclassName=\"input-basic__input\"\r\n\t\t\t\t\t\t\tid=\"contact_name\"\r\n\t\t\t\t\t\t\t{...register('name', { required: true })}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"name\" errors={formState.errors} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('email')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"contact_email\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_Feedbackform_Email\" defaultText=\"Sähköposti\" />{' '}\r\n\t\t\t\t\t\t\t<span className=\"input-basic__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\tclassName=\"input-basic__input\"\r\n\t\t\t\t\t\t\tid=\"contact_email\"\r\n\t\t\t\t\t\t\t{...register('email', { required: true, validate: isValidEmail })}\r\n\t\t\t\t\t\t\ttype=\"email\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"email\" type=\"required\" errors={formState.errors} />\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"email\" type=\"validate\" errors={formState.errors} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('city')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"contact_city\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_Feedbackform_City\" defaultText=\"Paikkakunta\" />\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<input className=\"input-basic__input\" id=\"contact_city\" {...register('city')} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('subject')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"contact_subject\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_Feedbackform_Subject\" defaultText=\"Aihe\" />{' '}\r\n\t\t\t\t\t\t\t<span className=\"input-basic__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\tclassName=\"input-basic__input\"\r\n\t\t\t\t\t\t\tid=\"contact_subject\"\r\n\t\t\t\t\t\t\t{...register('subject', { required: true })}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"subject\" errors={formState.errors} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className=\"input-basic\">\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"contact_message\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_Feedbackform_Message\" defaultText=\"Viesti\" />\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<textarea\r\n\t\t\t\t\t\t\tclassName=\"input-textarea\"\r\n\t\t\t\t\t\t\tid=\"contact_message\"\r\n\t\t\t\t\t\t\trows={5}\r\n\t\t\t\t\t\t\tplaceholder={props.getResourceText(\r\n\t\t\t\t\t\t\t\t'Contact_Feedbackform_Message_Placeholder',\r\n\t\t\t\t\t\t\t\t'Kirjoita teksti tähän',\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{...register('message')}\r\n\t\t\t\t\t\t></textarea>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className=\"flow-contact__marketing input-checkbox\">\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\tclassName=\"input-checkbox__input\"\r\n\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\tid=\"contact_marketing\"\r\n\t\t\t\t\t\t\t{...register('contactMe')}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<label className=\"input-checkbox__label\" htmlFor=\"contact_marketing\">\r\n\t\t\t\t\t\t\t<ResourceText\r\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_FeedbackForm_ContactRequested\"\r\n\t\t\t\t\t\t\t\tdefaultText=\"Haluan, että minuun otetaan yhteyttä\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<p>\r\n\t\t\t\t\t\t<ResourceText\r\n\t\t\t\t\t\t\tresourceKey=\"Contact_FeedbackForm_InfoText\"\r\n\t\t\t\t\t\t\tdefaultText=\"Käytämme yhteystietojasi ainoastaan tähän yhteydenottoon vastaamiseen.\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\t\tclassName=\"flow-contact__submit atom-card__button atom-button atom-button--big\"\r\n\t\t\t\t\t\tdisabled={props.submitting ? true : false}\r\n\t\t\t\t\t\tvalue={\r\n\t\t\t\t\t\t\tprops.submitting\r\n\t\t\t\t\t\t\t\t? props.getResourceText(\r\n\t\t\t\t\t\t\t\t\t\t'Contact_FeedbackForm_Submit_InProgress',\r\n\t\t\t\t\t\t\t\t\t\t'Lähetetään viestiä...',\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t: props.getResourceText('Contact_FeedbackForm_Submit', 'Lähetä viesti')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</form>\r\n\t\t\t</div>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nconst connectForm = connect<StateProps, DispatchProps, Record<string, never>, ILumoOneAppState>(\r\n\t({ language, layout, contact }) => ({\r\n\t\tlanguage: language.currentLanguage,\r\n\t\tlayout,\r\n\t\t...contact.feedback,\r\n\t}),\r\n\t{\r\n\t\tsetLayoutValues: layoutActions.setValues,\r\n\t\tsubmitFeedback: contactActions.submitFeedback.request,\r\n\t\tclearFeedbackState: contactActions.clearFeedbackState,\r\n\t\tpageComplete: pageViewTelemetryActions.pageComplete,\r\n\t},\r\n);\r\n\r\nexport const FormCustomer = withResourceTextSupport(\r\n\tconnectForm((props: Props) => <FeedbackForm isCurrentCustomer={true} {...props} />),\r\n);\r\nexport const FormNotCustomer = withResourceTextSupport(\r\n\tconnectForm((props: Props) => <FeedbackForm isCurrentCustomer={false} {...props} />),\r\n);\r\n","import { addTelemetryEventGA4, GA4EventAction, GA4EventCategory, GA4EventType } from '../Telemetry/TelemetryGA4';\n\nexport type ContactFormType = 'customerService' | 'renting';\n\nexport function addTelemetryEventForContactFormSubmitted(formType: ContactFormType) {\n\taddTelemetryEventGA4(\n\t\tformType === 'renting'\n\t\t\t? {\n\t\t\t\t\tevent: GA4EventType.contact_form,\n\t\t\t\t\tcategory: GA4EventCategory.leads,\n\t\t\t\t\taction: GA4EventAction.vuokrausyhteydenotto,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tevent: GA4EventType.contact_form,\n\t\t\t\t\tcategory: GA4EventCategory.feedback,\n\t\t\t\t\taction: GA4EventAction.contact_from,\n\t\t\t\t},\n\t);\n}\n","import { FieldErrors, FieldValues } from 'react-hook-form/dist/types';\n\nexport function getValidationClassForInput(\n\tfieldName: string,\n\ttouchedFields: Partial<Readonly<Record<string, any>>>,\n\terrors: FieldErrors<FieldValues>,\n\tbaseCssClassPostFix = '',\n) {\n\tconst baseClass = 'input-basic' + baseCssClassPostFix;\n\tif (Object.keys(touchedFields).indexOf(fieldName) < 0) {\n\t\treturn baseClass;\n\t}\n\treturn baseClass + (errors[fieldName] ? ' -error' : ' -valid');\n}\n\nexport const scrollToFirstInvalidField = (\n\terrors: FieldErrors<any>,\n\tdefaultFocusElementId: string | undefined = undefined,\n) => {\n\tif (document && window) {\n\t\tconst inputs = document.getElementsByName(Object.keys(errors)[0]);\n\n\t\tif (inputs.length > 0) {\n\t\t\tinputs[0].parentElement!.scrollIntoView();\n\t\t\twindow.scrollBy(0, -100);\n\t\t} else if (defaultFocusElementId) {\n\t\t\tconst defaultElement = document.getElementById(defaultFocusElementId);\n\t\t\tif (defaultElement) {\n\t\t\t\tdefaultElement.scrollIntoView();\n\t\t\t}\n\t\t}\n\t}\n};\n","import * as React from 'react';\nimport { ContactSectionProps, connectWithLanguage } from './connectWithLanguage';\nimport { ContactIntro } from './ContactIntro';\nimport { GridButtonWide } from './GridButton';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { ResourceText, withResourceTextSupport, IUseResourceTexts } from '../Components/ResourceText';\nimport { routeFromRoot, routes } from '../Common/routes';\nimport { getContactCompanyLayoutSettings } from './contactLayoutUtils';\nimport PageMeta from '../Common/Layout/PageMeta';\n\nfunction ContactCompanies(props: ContactSectionProps & IUseResourceTexts) {\n\tuseLayout(getContactCompanyLayoutSettings(props.language), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta title={{ key: 'WindowTitle_Contact_Company', defaultValue: '' }} />\n\t\t\t<ContactIntro\n\t\t\t\theading={<ResourceText resourceKey=\"Contact_Companies_Heading\" defaultText=\"Yhteydenottosi aihe on?\" />}\n\t\t\t/>\n\t\t\t<ul className=\"mod-gridButtons flow-contact__buttons\">\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={routeFromRoot(routes.companyApplication)[props.language]}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_Companies_CompanyHousing\" defaultText=\"Työsuhdeasunto\" />\n\t\t\t\t</GridButtonWide>\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={props.getResourceText(\n\t\t\t\t\t\t'Contact_Companies_CommercialPremisesLink',\n\t\t\t\t\t\t'https://toimitilat.kauppalehti.fi/',\n\t\t\t\t\t)}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_Companies_CommercialPremises\" defaultText=\"Toimitila\" />\n\t\t\t\t</GridButtonWide>\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={props.getResourceText('Contact_Companies_KojamoContactInfo_Url')}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_Companies_KojamoContactInfo\"\n\t\t\t\t\t\tdefaultText=\"Kojamo-konsernin yhteystiedot\"\n\t\t\t\t\t/>\n\t\t\t\t</GridButtonWide>\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(withResourceTextSupport(ContactCompanies));\n","import * as React from 'react';\nimport { ContactSectionProps, connectWithLanguage } from './connectWithLanguage';\nimport { ContactIntro } from './ContactIntro';\nimport { GridButtonWide } from './GridButton';\nimport { contactRoutes } from './Contact';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { routeFromRoot, routes } from '../Common/routes';\nimport { getContactApartmentRentalLayoutSettings } from './contactLayoutUtils';\nimport { ResourceText } from '../Components/ResourceText';\nimport PageMeta from '../Common/Layout/PageMeta';\n\nfunction ContactApartmentRental(props: ContactSectionProps) {\n\tuseLayout(getContactApartmentRentalLayoutSettings(props.language), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta\n\t\t\t\ttitle={{ key: 'WindowTitle_Contact_ApartmentRental', defaultValue: 'Ota yhteyttä - asunnon vuokraus' }}\n\t\t\t/>\n\t\t\t<ContactIntro\n\t\t\t\theading={<ResourceText resourceKey=\"Contact_ApartmentRental_Heading\" defaultText=\"Asunnon vuokraus\" />}\n\t\t\t\tcontent={\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_ApartmentRental_Content_\"\n\t\t\t\t\t\tdefaultText=\"Hakuvahti tarjoaa henkilökohtaista apua asunnon etsintään.\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<ul className=\"mod-gridButtons flow-contact__buttons\">\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={routeFromRoot(routes.rentalServiceRequest)[props.language]}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t\tlinkId=\"ContactApartmentRental_RentalServiceRequest\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_ApartmentRental_CreateSearchWatch\" defaultText=\"Luo hakuvahti\" />\n\t\t\t\t</GridButtonWide>\n\t\t\t\t<GridButtonWide\n\t\t\t\t\tlinkTarget={`../${contactRoutes.rentalContactForm[props.language]}`}\n\t\t\t\t\tcontentClasses=\"-font-medium\"\n\t\t\t\t>\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_ApartmentRental_Other\" defaultText=\"Muu yhteydenotto\" />\n\t\t\t\t</GridButtonWide>\n\t\t\t</ul>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(ContactApartmentRental);\n","import * as React from 'react';\nimport { ContactSectionProps, connectWithLanguage } from './connectWithLanguage';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { GetUrlForSearchResults } from '../Apartments/Browser/apartmentSearchUrlHandling';\nimport { ContactIntro } from './ContactIntro';\nimport { getFeedbackFormThanksLayoutSettings } from './contactLayoutUtils';\nimport { routeFromRoot } from '../Common/routes';\nimport { ResourceText } from '../Components/ResourceText';\nimport { Link } from 'react-router-dom';\nimport PageMeta from '../Common/Layout/PageMeta';\n\nfunction FeedbackFormThanks(props: ContactSectionProps) {\n\tuseLayout(getFeedbackFormThanksLayoutSettings(props.language), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta\n\t\t\t\ttitle={{ key: 'WindowTitle_Contact_FeedbackFormThanks', defaultValue: 'Ota yhteyttä - kiitos' }}\n\t\t\t/>\n\t\t\t<ContactIntro\n\t\t\t\theading={\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_FeedbackThanks_Heading\" defaultText=\"Kiitos viestistäsi!\" />\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div className=\"flow-contact__thanks-links atom-textBlock\">\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<Link to={GetUrlForSearchResults(props.language)}>\n\t\t\t\t\t\t\t<ResourceText\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_FeedbackFormThanks_BrowseApartments\"\n\t\t\t\t\t\t\t\tdefaultText=\"Selaa asuntoja ›\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<Link to={routeFromRoot()[props.language]}>\n\t\t\t\t\t\t\t<ResourceText\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_FeedbackFormThanks_FrontPage\"\n\t\t\t\t\t\t\t\tdefaultText=\"Etusivulle ›\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</ContactIntro>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(FeedbackFormThanks);\n","import React, { useEffect } from 'react';\r\nimport { useLayout } from '../Common/Layout/useLayout';\r\nimport { ContactSectionStateProps, ContactSectionDispatchProps } from './connectWithLanguage';\r\nimport { useForm } from 'react-hook-form';\r\nimport { contactActions } from './contactActions';\r\nimport { RentalContactAM } from './contactApiClient';\r\nimport { connect } from 'react-redux';\r\nimport { ILumoOneAppState } from '../boot/configureStore';\r\nimport { RentalContactFormState } from './contactState';\r\nimport { layoutActions } from '../Common/Layout/layoutActions';\r\nimport { LocationMunicipality } from '../LocationDataProvider/LocationData';\r\nimport { orderBy } from '../Components/arrayUtilities';\r\nimport { ContactIntro } from './ContactIntro';\r\nimport { contactRoutes } from './Contact';\r\nimport { ResourceText, IUseResourceTexts, withResourceTextSupport } from '../Components/ResourceText';\r\nimport { getContactRentalContactFormLayoutSettings, getContactTranslateUrl } from './contactLayoutUtils';\r\nimport { addTelemetryEventForContactFormSubmitted } from './Telemetry';\r\nimport { getValidationClassForInput } from '../Common/ValidationHelper';\r\nimport { ValidationErrorDisplay } from '../Components/ValidationErrorDisplay';\r\nimport { isValidEmail } from '../InputValidators';\r\nimport { pageViewTelemetryActions } from '../Telemetry/pageViewTelemetryActions';\r\nimport PageMeta from '../Common/Layout/PageMeta';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ntype StateProps = ContactSectionStateProps &\r\n\tRentalContactFormState & {\r\n\t\tmunicipalities: LocationMunicipality[];\r\n\t};\r\ntype DispatchProps = ContactSectionDispatchProps & {\r\n\tsubmitRentalContact: typeof contactActions.submitRentalContact.request;\r\n\tclearRentalContactState: typeof contactActions.clearRentalContactState;\r\n\tpageComplete: typeof pageViewTelemetryActions.pageComplete;\r\n};\r\ntype Props = StateProps & DispatchProps & IUseResourceTexts;\r\n\r\nfunction RentalContactForm(props: Props) {\r\n\tconst navigate = useNavigate();\r\n\tuseLayout(getContactRentalContactFormLayoutSettings(props.language), props);\r\n\r\n\tconst { register, handleSubmit, formState } = useForm({ mode: 'onChange' });\r\n\tconst { errors, touchedFields } = formState;\r\n\r\n\tuseEffect(() => {\r\n\t\tprops.pageComplete({});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (props.submitted) {\r\n\t\t\tnavigate(getContactTranslateUrl(contactRoutes.feedbackThanks)[props.language]);\r\n\t\t\tprops.clearRentalContactState();\r\n\t\t}\r\n\t}, [props.submitted]);\r\n\r\n\tconst onSubmit = (data: RentalContactAM) => {\r\n\t\tprops.submitRentalContact(data);\r\n\t\taddTelemetryEventForContactFormSubmitted('renting');\r\n\t};\r\n\r\n\tfunction GetInputFieldClassName(fieldName: string) {\r\n\t\treturn getValidationClassForInput(fieldName, touchedFields, errors);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<PageMeta\r\n\t\t\t\ttitle={{\r\n\t\t\t\t\tkey: 'WindowTitle_Contact_RentalContactForm',\r\n\t\t\t\t\tdefaultValue: 'Ota yhteyttä - asunnon vuokraus',\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t<ContactIntro\r\n\t\t\t\theading={\r\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_RentalContactForm_Heading\" defaultText=\"Asunnon vuokraus\" />\r\n\t\t\t\t}\r\n\t\t\t\tcontent={\r\n\t\t\t\t\t<ResourceText\r\n\t\t\t\t\t\tresourceKey=\"Contact_RentalContactForm_Content\"\r\n\t\t\t\t\t\tdefaultText=\"Kerro kuinka voimme auttaa kodin vuokraukseen liittyvissä asioissa.\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\t\t\t<div className=\"flow-contact__cardWrapper\">\r\n\t\t\t\t<form className=\"atom-card -noGrid\" onSubmit={handleSubmit(onSubmit)}>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('name')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"rent_name\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_RentalContactForm_Name\" defaultText=\"Nimi\" />{' '}\r\n\t\t\t\t\t\t\t<span className=\"input-basic__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\tclassName=\"input-basic__input\"\r\n\t\t\t\t\t\t\tid=\"rent_name\"\r\n\t\t\t\t\t\t\t{...register('name', { required: true })}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"name\" errors={formState.errors} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('email')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"rent_email\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_RentalContactForm_Email\" defaultText=\"Sähköposti\" />{' '}\r\n\t\t\t\t\t\t\t<span className=\"input-basic__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\tclassName=\"input-basic__input\"\r\n\t\t\t\t\t\t\tid=\"rent_email\"\r\n\t\t\t\t\t\t\ttype=\"email\"\r\n\t\t\t\t\t\t\t{...register('email', { required: true, validate: isValidEmail })}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"email\" type=\"required\" errors={formState.errors} />\r\n\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"email\" type=\"validate\" errors={formState.errors} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className={GetInputFieldClassName('city')}>\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"rent_city\">\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t<ResourceText\r\n\t\t\t\t\t\t\t\t\tresourceKey=\"Contact_RentalContactForm_City\"\r\n\t\t\t\t\t\t\t\t\tdefaultText=\"Paikkakunta, jonka asunnoista olen kiinnostunut\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t}{' '}\r\n\t\t\t\t\t\t\t<span className=\"input-basic__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<div className=\"atom-select__selectHelper\">\r\n\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\tid=\"rent_city\"\r\n\t\t\t\t\t\t\t\tclassName=\"atom-select__select\"\r\n\t\t\t\t\t\t\t\t{...register('city', { required: true })}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<option value=\"\">\r\n\t\t\t\t\t\t\t\t\t{props.getResourceText(\r\n\t\t\t\t\t\t\t\t\t\t'Contact_RentalContactForm_City_Select',\r\n\t\t\t\t\t\t\t\t\t\t'Valitse paikkakunta',\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</option>\r\n\t\t\t\t\t\t\t\t{orderBy(props.municipalities, (item: LocationMunicipality) => item.name).map((m) => (\r\n\t\t\t\t\t\t\t\t\t<option value={m.name} key={m.slug}>\r\n\t\t\t\t\t\t\t\t\t\t{m.name}\r\n\t\t\t\t\t\t\t\t\t</option>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t<ValidationErrorDisplay fieldName=\"city\" errors={formState.errors} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className=\"input-basic\">\r\n\t\t\t\t\t\t<label className=\"input-basic__label\" htmlFor=\"rent_message\">\r\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_RentalContactForm_Message\" defaultText=\"Viesti\" />\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<textarea\r\n\t\t\t\t\t\t\tclassName=\"input-textarea\"\r\n\t\t\t\t\t\t\tid=\"rent_message\"\r\n\t\t\t\t\t\t\trows={5}\r\n\t\t\t\t\t\t\tplaceholder={props.getResourceText(\r\n\t\t\t\t\t\t\t\t'Contact_RentalContactForm_Message_Placeholder',\r\n\t\t\t\t\t\t\t\t'Kirjoita teksti tähän',\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{...register('message')}\r\n\t\t\t\t\t\t></textarea>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className=\"input-basic\">\r\n\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\t<ResourceText\r\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_RentalContactForm_InfoText\"\r\n\t\t\t\t\t\t\t\tdefaultText=\"Käytämme yhteystietojasi ainoastaan tähän yhteydenottoon vastaamiseen.\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</p>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<button className=\"flow-contact__submit atom-card__button atom-button atom-button--big\">\r\n\t\t\t\t\t\t<ResourceText resourceKey=\"Contact_RentalContactForm_Submit\" defaultText=\"Lähetä viesti\" />\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</form>\r\n\t\t\t</div>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\nexport default withResourceTextSupport(\r\n\tconnect<StateProps, DispatchProps, Record<string, never>, ILumoOneAppState>(\r\n\t\t({ language, layout, contact, locationData }) => ({\r\n\t\t\tlanguage: language.currentLanguage,\r\n\t\t\tlayout,\r\n\t\t\tmunicipalities: locationData.locationData!.municipalities,\r\n\t\t\t...contact.rentalContact,\r\n\t\t}),\r\n\t\t{\r\n\t\t\tsetLayoutValues: layoutActions.setValues,\r\n\t\t\tsubmitRentalContact: contactActions.submitRentalContact.request,\r\n\t\t\tclearRentalContactState: contactActions.clearRentalContactState,\r\n\t\t\tpageComplete: pageViewTelemetryActions.pageComplete,\r\n\t\t},\r\n\t)(RentalContactForm),\r\n);\r\n","import * as React from 'react';\nimport { ContactSectionProps, connectWithLanguage } from './connectWithLanguage';\nimport { useLayout } from '../Common/Layout/useLayout';\nimport { GetUrlForSearchResults } from '../Apartments/Browser/apartmentSearchUrlHandling';\nimport { ContactIntro } from './ContactIntro';\nimport { Link } from 'react-router-dom';\nimport { routeFromRoot } from '../Common/routes';\nimport { ResourceText } from '../Components/ResourceText';\nimport { getContactRentalContactFormThanksLayoutSettings } from './contactLayoutUtils';\nimport PageMeta from '../Common/Layout/PageMeta';\n\nfunction RentalContactFormThanks(props: ContactSectionProps) {\n\tuseLayout(getContactRentalContactFormThanksLayoutSettings(props.language), props);\n\n\tReact.useEffect(() => {\n\t\tprops.pageComplete({});\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t<PageMeta title={{ key: 'WindowTitle_Contact_RentalContactFormThanks', defaultValue: '' }} />\n\t\t\t<ContactIntro\n\t\t\t\theading={\n\t\t\t\t\t<ResourceText resourceKey=\"Contact_FeedbackThanks_Heading\" defaultText=\"Kiitos viestistäsi!\" />\n\t\t\t\t}\n\t\t\t\tcontent={\n\t\t\t\t\t<ResourceText\n\t\t\t\t\t\tresourceKey=\"Contact_FeedbackThanks_Content\"\n\t\t\t\t\t\tdefaultText=\"Olet nyt askeleen lähempänä unelma-asuntoasi! Olemme sinuun yhteydessä mahdollisimman pian.\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<div className=\"flow-contact__thanks-links atom-textBlock\">\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<Link to={GetUrlForSearchResults(props.language)}>\n\t\t\t\t\t\t\t<ResourceText\n\t\t\t\t\t\t\t\tresourceKey=\"Contact_FeedbackThanks_BrowseApartments\"\n\t\t\t\t\t\t\t\tdefaultText=\"Selaa asuntoja ›\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<Link to={routeFromRoot()[props.language]} className=\"atom-card__button atom-button -big\">\n\t\t\t\t\t\t\t<ResourceText resourceKey=\"ToFrontPage\" defaultText=\"Etusivulle ›\" />\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</ContactIntro>\n\t\t</>\n\t);\n}\n\nexport default connectWithLanguage(RentalContactFormThanks);\n"],"names":["$ed3kz","parcelRequire","contactRoutes","home","lumoCustomer","fi","en","notLumoCustomer","feedbackCustomer","feedbackNotCustomer","feedbackThanks","company","rental","rentalContactForm","rentalContactFormThanks","$ee605c7d41de8c58$export$2e2bcd8739ae039","language","useLanguage","jsxs","Fragment","jsx","className","$iffFd","Routes","Route","path","element","$7Epjm","default","$dWVR1","$8B7Jz","$iWamb","$53mT8","FormCustomer","FormNotCustomer","$fCX7o","$Xhwzc","$7Ho4n","$8Xjke","$6jFbE","$3c3dd248d2aa0ea0$export$2e2bcd8739ae039","withResourceTextSupport","props","$e3EsW","to","getResourceText","$jjuiK","ResourceText","resourceKey","defaultText","$3376d1a037c04faf$export$2e2bcd8739ae039","connectWithLanguage","useLayout","getContactHomeLayoutSettings","React","pageComplete","$2LBWb","title","key","defaultValue","$hpase","ContactIntro","heading","content","$8gvnd","GridButton","linkTarget","GridButtonWide","buttonContent","contentClasses","children","variant","id","linkId","xmlns","viewBox","fill","fillRule","d","$fbmYJ","component","connect","layout","currentLanguage","setLayoutValues","layoutActions","setValues","pageViewTelemetryActions","$7MTDh","settings","useRunOnce","$cWRbN","additionalMainClasses","breadcrumbCurrentName","breadcrumbParents","translateUrl","getContactTranslateUrl","breadcrumbContactHome","name","routeFromRoot","routes","contact","breadcrumbTopicSelection","isCurrentCustomer","getContactSubPath","breadcrumbApartmentRental","breadcrumbRentalContactForm","getContactLumoCustomerLayoutSettings","getContactNotLumoCustomerLayoutSettings","getContactCompanyLayoutSettings","getFeedbackFormLayoutSettings","getFeedbackFormThanksLayoutSettings","getContactApartmentRentalLayoutSettings","getContactRentalContactFormLayoutSettings","getContactRentalContactFormThanksLayoutSettings","subPath","$d0a777f4f0f60ca5$export$2e2bcd8739ae039","$4746a6db10e7eb56$export$2e2bcd8739ae039","FeedbackForm","navigate","useNavigate","register","handleSubmit","formState","useForm","mode","errors","touchedFields","GetInputFieldClassName","fieldName","getValidationClassForInput","useEffect","submitted","clearFeedbackState","onSubmit","data","submitFeedback","addTelemetryEventForContactFormSubmitted","htmlFor","required","$Aimf2","ValidationErrorDisplay","validate","isValidEmail","type","rows","placeholder","disabled","submitting","value","connectForm","feedback","contactActions","request","$60adeb3b02a6681e$var$FeedbackForm","$jwOO8","formType","addTelemetryEventGA4","event","GA4EventType","contact_form","category","GA4EventCategory","leads","action","GA4EventAction","vuokrausyhteydenotto","contact_from","baseCssClassPostFix","baseClass","Object","keys","indexOf","scrollToFirstInvalidField","defaultFocusElementId","document","window","inputs","getElementsByName","length","parentElement","scrollIntoView","scrollBy","defaultElement","getElementById","$1fa7de18e7027b92$export$2e2bcd8739ae039","companyApplication","$3016b37e74f3ea87$export$2e2bcd8739ae039","rentalServiceRequest","$988bf2f0eae3678a$export$2e2bcd8739ae039","Link","GetUrlForSearchResults","$c1df71a1c91f7676$export$2e2bcd8739ae039","locationData","municipalities","rentalContact","submitRentalContact","clearRentalContactState","orderBy","item","map","m","slug","$a60621e5473fee33$export$2e2bcd8739ae039"],"version":3,"file":"Contact.a221132d.js.map"}