{"version":3,"sources":["webpack:///./modules/Form.ts"],"names":["__webpack_require__","r","__webpack_exports__","d","prependPriceToGreyedArea","isScriptTagRendered","direction","document","querySelector","getAttribute","Form","element","_this","this","droplistWrapper","onAlpacaReady","e","then","bind","module","default","removeEventListener","addEventListener","event","detail","isValid","classList","remove","addFormLoader","Array","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","choicesDropdown","Promise","all","initRatingAndReviewsForm","increaseHeight","setup","selector","prototype","submitBtn","add","target","targetHeight","clientHeight","newHeight","scrollHeight","style","height","toString","confirmOrder","orderTotalPrice","innerHTML","insertAdjacentHTML","script","length"],"mappings":"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","file":"./modules/Form.3cd7fe6a.js","sourcesContent":["\r\nconst moduleSelector = '.cp-alpaca-form[data-module=\"Form\"]';\r\n\r\nconst direction = document.querySelector('html').getAttribute('dir');\r\n\r\nif (direction == 'ltr') {\r\n    require('../../less/modules/forms-ltr.less');\r\n\r\n} else {\r\n    require('../../less/modules/forms-rtl.less');\r\n}\r\n\r\nexport default class Form {\r\n    orderTotalPrice;\r\n    confirmOrder: HTMLElement;\r\n    submitBtn;\r\n\r\n    static setup(selector: string = moduleSelector): void {\r\n        Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n            new Form(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement) {\r\n        const droplistWrapper = document.querySelector('.droplist-wrapper');\r\n            \r\n        const onAlpacaReady = () => {\r\n\r\n            if(document.querySelector('.summary-cart')){\r\n                const PaymentSummary = () => import ('./PaymentSummary');\r\n                PaymentSummary().then((module) => new module.default(this.element))\r\n            }  \r\n\r\n            document.removeEventListener('alpaca:forms:ready', onAlpacaReady, false);\r\n        }\r\n\r\n        document.addEventListener('alpaca:forms:ready', onAlpacaReady, false);\r\n\r\n        document.addEventListener('alpaca:forms:form-validated', (e) => {\r\n            const validForm = (<CustomEvent>event).detail.isValid;\r\n            if (validForm == false) {\r\n                this.element.classList.remove(\"loader\");\r\n            }\r\n        })\r\n\r\n        document.addEventListener('alpaca:forms:ready', () => {\r\n            this.addFormLoader();\r\n            if (droplistWrapper || this.element.querySelector('select')) {\r\n                const SelectChoices = () => import (\"./SelectChoices\");\r\n                SelectChoices().then((module) => new module.default(this.element))\r\n\r\n                Array.from(document.querySelectorAll(\".choices__list--dropdown .choices__list\")).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n                    const choicesDropdown = element;\r\n                    if (choicesDropdown) {\r\n                        const ScrollBar = () => import ('../modules/scrollBar');\r\n                        ScrollBar().then((module) => new module.default(choicesDropdown))\r\n                    }\r\n                });\r\n            }\r\n            const FormAnimation = () => import ('./FormAnimation');\r\n            FormAnimation().then((module) => new module.default(this.element))\r\n            prependPriceToGreyedArea();\r\n            this.initRatingAndReviewsForm();\r\n        });\r\n\r\n            this.initRatingAndReviewsForm();\r\n\r\n        if (droplistWrapper || this.element.querySelector('select')) {\r\n            const SelectChoices = () => import (\"./SelectChoices\");\r\n                SelectChoices().then((module) => new module.default(this.element))\r\n            Array.from(document.querySelectorAll(\".choices__list--dropdown .choices__list\")).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n                const choicesDropdown = element;\r\n                if (choicesDropdown) {\r\n                    const ScrollBar = () => import ('../modules/scrollBar');\r\n                        ScrollBar().then((module) => new module.default(choicesDropdown))\r\n                }\r\n            });\r\n        }\r\n\r\n        const FormAnimation = () => import ('./FormAnimation');\r\n            FormAnimation().then((module) => new module.default(this.element))\r\n        prependPriceToGreyedArea();\r\n\r\n\r\n        if (this.element.querySelector('textarea')) {\r\n            this.element.querySelector('textarea').addEventListener('keyup', (e) => {\r\n                this.increaseHeight(e);\r\n            })\r\n        }\r\n\r\n        this.addFormLoader();\r\n    }\r\n\r\n    initRatingAndReviewsForm(){\r\n        const ratingAndReviewsForm = this.element.querySelector(\".droplist.ranking\"); // this.element.querySelector(\"form\").getAttribute(\"data-name\") === \"Ratings and Reviews\"; -> Best way is to check if form contains Rating&Review as data-name\r\n        if(ratingAndReviewsForm){\r\n            const RatingAndReviews = () => import ('./RatingAndReviews');\r\n            RatingAndReviews().then((module) => new module.default(this.element))\r\n        }\r\n    }\r\n\r\n    private addFormLoader() {\r\n        this.submitBtn = this.element.querySelector(\".btn\");\r\n        if (this.submitBtn) {\r\n            this.submitBtn.addEventListener('click', () => {\r\n                if (!this.element.querySelector(\".validation .error\") && !document.querySelector(\".payment-widget\")) {\r\n                    this.element.classList.add(\"loader\");\r\n                }\r\n            })\r\n        }\r\n        this.element.classList.remove(\"loader\");\r\n    }\r\n    private increaseHeight(e) {\r\n        const target = e.target;\r\n        const targetHeight = target.clientHeight;\r\n        const newHeight = target.scrollHeight;\r\n\r\n        if (targetHeight < newHeight) {\r\n            target.style.height = newHeight.toString() + 'px';\r\n        }\r\n    }\r\n    \r\n\r\n}\r\nexport function prependPriceToGreyedArea() {\r\n    const confirmOrder = document.querySelector('.confirm-order');\r\n    const orderTotalPrice = document.querySelector('.order-total-price') && document.querySelector('.order-total-price').innerHTML\r\n        || document.querySelector(\"[data-amount-to-pay]\") && document.querySelector(\"[data-amount-to-pay]\").getAttribute(\"data-amount-to-pay\");\r\n    if (confirmOrder && orderTotalPrice) {\r\n        if (!(confirmOrder.querySelector(\".order-total-price\"))) {\r\n            confirmOrder.insertAdjacentHTML(\"afterbegin\", `<div class=\"price order-total-price\">${orderTotalPrice}</span>`);\r\n        }\r\n    }\r\n}\r\n\r\nexport function isScriptTagRendered(script: string): boolean {\r\n    var exist;\r\n\r\n    if (script) {\r\n        (document.querySelectorAll(`[src=\"${script}\"]`).length > 0) ? exist = true : exist = false;\r\n    } else {\r\n        return exist = false;\r\n    }\r\n\r\n    return exist;\r\n}\r\n\r\n\r\nnew Form.setup();\r\n"],"sourceRoot":""}