diff --git a/src/components/Form/Form.js b/src/components/Form/Form.js new file mode 100644 index 00000000..ea010ea9 --- /dev/null +++ b/src/components/Form/Form.js @@ -0,0 +1,75 @@ +import React , { useEffect } from "react" +import MarkdownView from "react-showdown" +import HubspotForm from "react-hubspot-form" +import "./Form.scss" + +const Form = ({ location, data }) => { + const title = data?.title + const content = data?.content + const anchor = data?.anchor + const portalId = data?.portalId + const formId = data?.formId + const image = data?.image + + useEffect(() => { + window.addEventListener("message", handler) + return () => { + window.removeEventListener("message", handler) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + function handler(event) { + if (event.origin === 'https://forms.hsforms.com'){ + if ( + event.data.type === "hsFormCallback" && + event.data.eventName === "onFormReady" + ) { + const hsFormId = "hsForm_" + formId + const formData = document?.getElementById("hs-form-iframe-0") + ?.contentWindow?.document?.forms[hsFormId] + if (formData) { + setInputValue(formData, "servicio_origen", location.pathname) + } + } + } + console.log(event.origin, 'origin') + + } + + const jqueryChange = elem => { + var event= new Event("HTMLEvents", {"bubbles":true, "cancelable":false}); + elem.dispatchEvent(event) + } + + const setInputValue = (form, inputName, value) => { + const input = form?.[inputName] + if (input) { + input.value = value + jqueryChange(input) + } + } + + return ( +
+
+
+ {title &&

{title}

} + {content && ( + + )} +
+ hero +
+
+
+
+ +
+
+
+
+ ) +} + +export default Form diff --git a/src/components/Form/Form.scss b/src/components/Form/Form.scss new file mode 100644 index 00000000..94f4a5e9 --- /dev/null +++ b/src/components/Form/Form.scss @@ -0,0 +1,45 @@ +@import "../../styles/global.scss"; + +.form { + color: $primary; + padding: 5rem 0; + .title { + text-transform: uppercase; + } + .hubspot-form-wrapper { + background-color: $bg-form; + border-radius: 10px; + padding: 2rem; + padding-bottom: 1rem; + min-height: 540px; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + > div{ + width: 100%; + } + } + &__img { + padding: 2rem 1rem; + img { + max-width: 250px; + width: 100%; + } + } + &__content { + p { + font-weight: $bold; + font-size: 28px; + } + } +} +@media screen and (min-width: $breakpoint-lg) { + .form { + &__content { + p { + font-size: 36px; + } + } + } +} diff --git a/src/components/index.js b/src/components/index.js index 203eeac6..f7bf611b 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -9,6 +9,7 @@ import BannerHead from "./BannerHead/BannerHead" import CasesSection from "./CasesSection/CasesSection" import CasesList from "./CasesSection/CasesList" import LogosSection from "./LogosSection/logosSection" +import Form from "./Form/Form" export { @@ -23,4 +24,5 @@ export { BannerTop, BannerHead, LogosSection, + Form } diff --git a/src/context/themeContext.js b/src/context/themeContext.js index 55fee4e7..80c67460 100644 --- a/src/context/themeContext.js +++ b/src/context/themeContext.js @@ -15,6 +15,7 @@ const themes = { "--secondary": "#3f6be8", "--secondary-container": "#25cad3", "--border-bottom": "#cdcdcd", + "--bg-form": "#FAF8F8", }, dark: { "--nav-footer-container": "#383838", @@ -30,6 +31,8 @@ const themes = { "--secondary": "#67f293", "--secondary-container": "#191919", + "--bg-form": "#FAF8F8", + }, } diff --git a/src/styles/global.scss b/src/styles/global.scss index 8bdd0d18..c42954b0 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -18,6 +18,7 @@ $secondary-container: var(--secondary-container); $border-bottom: var(--border-bottom); $title-jobs: var(--title-jobs); $jobs-hover: var(--jobs-hover); +$bg-form: var(--bg-form); diff --git a/src/templates/LandingPage.js b/src/templates/LandingPage.js index bd4482f1..ad817bc1 100644 --- a/src/templates/LandingPage.js +++ b/src/templates/LandingPage.js @@ -1,54 +1,74 @@ import React from "react" import { graphql } from "gatsby" import Layout from "../components/layout" -import { Seo, CasesSection, CasesList, LogosSection } from "../components/index.js" +import { + Seo, + CasesSection, + CasesList, + LogosSection, +} from "../components/index.js" // componentes del body import Hero from "../components/Hero/Hero" import BannerList from "../components/BannerList/BannerLis" import ExpandGrid from "../components/expandGrid/ExpandGrid" import Catsone from "../components/Catsone/catsone" -import BannerHead from '../components/BannerHead/BannerHead'; -import Text from '../components/Text/Text'; +import BannerHead from "../components/BannerHead/BannerHead" +import Text from "../components/Text/Text" +import Form from "../components/Form/Form" const LandingPage = ({ data, location }) => { const pageData = data?.allStrapiLandingPage?.nodes[0] const content = pageData.body.map((component, idx) => { + const hero = + component.strapi_component === "home.hero" ? ( + + ) : null - const hero = component.strapi_component === "home.hero" ? - : - null + const bannerList = + component.strapi_component === "components.banner-list" ? ( + + ) : null - const bannerList = component.strapi_component === "components.banner-list" ? - : - null + const expandGrid = + component.strapi_component === "components.selected-grid" ? ( + + ) : null - const expandGrid = component.strapi_component === "components.selected-grid" ? - : - null + const casesSection = + component.strapi_component === "components.cases-section" && + !component.allCases ? ( + + ) : null - const casesSection = (component.strapi_component === "components.cases-section" && !component.allCases) ? - : - null + const casesList = + component.strapi_component === "components.cases-section" && + component.allCases ? ( + + ) : null - const casesList = (component.strapi_component === "components.cases-section" && component.allCases) ? - : - null + const catsone = + component.strapi_component === "scripts.catsone" ? ( + + ) : null - const catsone = component.strapi_component === "scripts.catsone" ? - : - null + const bannerHead = + component.strapi_component === "banners.banner-head" ? ( + + ) : null - const bannerHead = component.strapi_component === "banners.banner-head" ? - : - null - - const text = component.strapi_component === "components.text" ? - : - null - const logosSection = component.strapi_component === "components.logos-section" ? - : - null + const text = + component.strapi_component === "components.text" ? ( + + ) : null + const logosSection = + component.strapi_component === "components.logos-section" ? ( + + ) : null + const form = + component.strapi_component === "components.form" ? ( +
+ ) : null return (
@@ -62,14 +82,14 @@ const LandingPage = ({ data, location }) => { {bannerHead} {text} {logosSection} + {form}
) - }) return ( - + {content}