{"version":3,"file":"feature-episerverForms-BxVRNe8T.js","sources":["../../../../Coloplast.UI/Features/Forms/Views/episerverFormsValidators.js","../../../../Coloplast.UI/Features/Forms/Views/episerverFormsTracker.js","../../../../Coloplast.UI/Features/Forms/Views/episerverForms-entry.ts"],"sourcesContent":["export function initFormValidators() {\r\n\twindow.addEventListener(\"load\", () => {\r\n\t\tif (typeof $$epiforms !== \"undefined\" && $$epiforms && window.epi?.EPiServer?.Forms) {\r\n\t\t\t$$epiforms.extend(true, epi.EPiServer.Forms, {\r\n\t\t\t\t/// extend the Validator to validate Visitor's value in Clientside.\r\n\t\t\t\tValidators:\r\n\t\t\t\t{\r\n\t\t\t\t\t\"Coloplast.Direct.Core.Features.Forms.Validators.SharepointCharacterLimitFieldValidator\": function () {\r\n\t\t\t\t\t\t// this function is used to validate visitor's data value in ViewMode\r\n\t\t\t\t\t\treturn { isValid: true };\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t})\r\n}\r\n","import { track_form_submission } from 'shared/services/tracking/formTrackingService';\r\nimport Cookie from 'js-cookie'\r\nimport { cookieNames } from 'shared/settings/constants';\r\n\r\nexport function initFormTracker(form) {\r\n\tconst\r\n\t\tformTitleElement = form.querySelector('.Form__Title'),\r\n\t\tformGTMName = form.name ? form.name : 'no_data';\r\n\tlet\r\n\t\tformTitle = formTitleElement ? formTitleElement.innerText : 'no_data';\r\n\t\tformTitle = form.name ? form.name : formTitle;\r\n\r\n // tracking of form elements\r\n\tlet elementsAllowedForTracking = JSON.parse(`{ \"fields\": ${form.dataset.fieldsallowedfortracking.replace(/'/g, '\"')} }`);\r\n\r\n\tfunction formChangeHandler() {\r\n\t\tif (form.querySelector('.ValidationFail')) {\r\n Cookie.remove(cookieNames.FORM_SUBMIT_STATUS);\r\n }\r\n\t\telse if (form.querySelector('.Form__Success__Message') || form.querySelector('.Form__MainBody') && form.querySelector('.Form__MainBody').style.display == 'none') {\r\n try {\r\n\t\t\t\ttrack_form_submission(formGTMName);\r\n }\r\n catch(err) {\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t}\r\n Cookie.remove(cookieNames.FORM_SUBMIT_STATUS);\r\n }\r\n }\r\n\r\n const formObserver = new MutationObserver(formChangeHandler);\r\n\tformObserver.observe(form, { childList: true, subtree: true, attributes: true });\r\n\r\n // form submit\r\n const submitBtn = form.querySelector('[type=\"submit\"]');\r\n\t// Prevent error when no submit button is present\r\n\tif (submitBtn) {\r\n\t\tsubmitBtn.addEventListener('click', () => {\r\n\t\t\t// store the values that is to be tracked in a cookie because a form may redirect to another page on a successful submit. In that\r\n\t\t\t// case, the page that the user is redirected will pick up the cookie and track accordingly - and delete the cookie\r\n\t\t\t// Now start by building the field name/value list\r\n\t\t\tconst invalidFields = form.querySelectorAll('.ValidationFail');\r\n\t\t\t//when submit remove all marked as invalid fields from previous submission to track if event is success and no redirect to success page or success popup\r\n\t\t\t[...invalidFields].forEach((field) => {\r\n\t\t\t\tfield.classList.remove('ValidationFail');\r\n\t\t\t});\r\n\t\t\tlet fieldStrings = [];\r\n\t\t\telementsAllowedForTracking.fields.forEach((field) => {\r\n\t\t\t\tlet element = form.querySelector(`[name=\"${field.ElementId}\"]`);\r\n\t\t\t\tif (element) {\r\n\t\t\t\t\tfieldStrings.push(`${field.FriendlyName}: ${element.value}`);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tlet payload = {\r\n\t\t\t\teventcategory: `${formTitle} form interaction`,\r\n\t\t\t\teventaction: `${formTitle} submitted (${fieldStrings.join(', ')})`,\r\n\t\t\t\tformsubmission: formGTMName,\r\n\t\t\t}\r\n\t\t\tCookie.set(cookieNames.FORM_SUBMIT_STATUS, JSON.stringify(payload));\r\n\t\t});\r\n\t}\r\n}\r\n","import \"./episerverForms.scss\";\r\nimport { initFormValidators } from \"./episerverFormsValidators\";\r\nimport { initFormTracker } from \"./episerverFormsTracker\";\r\n\r\nconst forms = [...document.querySelectorAll('[data-f-type=\"form\"]')];\r\n\r\nif (forms.length > 0) {\r\n\tinitFormValidators();\r\n\r\n\tforms.forEach((form) => {\r\n\t\tinitFormTracker(form);\r\n\t});\r\n}\r\n"],"names":["initFormValidators","_b","_a","initFormTracker","form","formTitleElement","formGTMName","formTitle","elementsAllowedForTracking","formChangeHandler","Cookie","cookieNames","track_form_submission","err","submitBtn","field","fieldStrings","element","payload","forms"],"mappings":"gLAAO,SAASA,GAAqB,CACpC,OAAO,iBAAiB,OAAQ,IAAM,SACjC,OAAO,WAAe,KAAe,cAAcC,GAAAC,EAAA,OAAO,MAAP,YAAAA,EAAY,YAAZ,MAAAD,EAAuB,QAC7E,WAAW,OAAO,GAAM,IAAI,UAAU,MAAO,CAE5C,WACA,CACC,yFAA0F,UAAY,CAErG,MAAO,CAAE,QAAS,GAClB,CACD,CACL,CAAI,CAEJ,CAAE,CACF,CCXO,SAASE,EAAgBC,EAAM,CACrC,MACCC,EAAmBD,EAAK,cAAc,cAAc,EACpDE,EAAcF,EAAK,KAAOA,EAAK,KAAO,UACvC,IACCG,EAAYF,EAAmBA,EAAiB,UAAY,UAC5DE,EAAYH,EAAK,KAAOA,EAAK,KAAOG,EAGrC,IAAIC,EAA6B,KAAK,MAAM,eAAeJ,EAAK,QAAQ,yBAAyB,QAAQ,KAAM,GAAG,CAAC,IAAI,EAEvH,SAASK,GAAoB,CAC5B,GAAIL,EAAK,cAAc,iBAAiB,EAC9BM,EAAO,OAAOC,EAAY,kBAAkB,UAE7CP,EAAK,cAAc,yBAAyB,GAAKA,EAAK,cAAc,iBAAiB,GAAKA,EAAK,cAAc,iBAAiB,EAAE,MAAM,SAAW,OAAQ,CACxJ,GAAI,CACZQ,EAAsBN,CAAW,CACxB,OACKO,EAAK,CACnB,QAAQ,MAAMA,CAAG,CACjB,CACQH,EAAO,OAAOC,EAAY,kBAAkB,CAC/C,CACJ,CAEoB,IAAI,iBAAiBF,CAAiB,EACjD,QAAQL,EAAM,CAAE,UAAW,GAAM,QAAS,GAAM,WAAY,EAAI,CAAE,EAG5E,MAAMU,EAAYV,EAAK,cAAc,iBAAiB,EAErDU,GACHA,EAAU,iBAAiB,QAAS,IAAM,CAMzC,CAAC,GAFqBV,EAAK,iBAAiB,iBAAiB,CAE5C,EAAE,QAASW,GAAU,CACrCA,EAAM,UAAU,OAAO,gBAAgB,CAC3C,CAAI,EACD,IAAIC,EAAe,CAAA,EACnBR,EAA2B,OAAO,QAASO,GAAU,CACpD,IAAIE,EAAUb,EAAK,cAAc,UAAUW,EAAM,SAAS,IAAI,EAC1DE,GACHD,EAAa,KAAK,GAAGD,EAAM,YAAY,KAAKE,EAAQ,KAAK,EAAE,CAEhE,CAAI,EACD,IAAIC,EAAU,CACb,cAAe,GAAGX,CAAS,oBAC3B,YAAa,GAAGA,CAAS,eAAeS,EAAa,KAAK,IAAI,CAAC,IAC/D,eAAgBV,CAChB,EACDI,EAAO,IAAIC,EAAY,mBAAoB,KAAK,UAAUO,CAAO,CAAC,CACrE,CAAG,CAEH,CCzDA,MAAMC,EAAQ,CAAC,GAAG,SAAS,iBAAiB,sBAAsB,CAAC,EAE/DA,EAAM,OAAS,IACCnB,IAEbmB,EAAA,QAASf,GAAS,CACvBD,EAAgBC,CAAI,CAAA,CACpB"}