{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/src/views/pages/onboardingPage/js/onboardingPage.js"],"names":["CLS","OnboardingPage","element","_this","this","_classCallCheck","$this","$element","$","$tplScroller","$form","find","$formAction","attr","$navDots","concat","$progressBar","$totalSteps","$currentStep","each","checkboxes","radios","select","textarea","inputtext","nextBtn","data","on","event","removeClass","is","addClass","preventDefault","stepCurrentValue","currentTarget","stepCurrentTarget","stepTargetValue","goToStep","array","serializeArray","formData","map","n","i","_","forOwn","value","key","isNil","trim","json_text","JSON","stringify","request","Request","method","body","headers","Content-Type","fetch","then","response","status","hide","statusText","catch","error","not","fadeOut","fadeIn"],"mappings":"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","file":"page-13.d7818a52e4dc7554a6bb.js","sourcesContent":["/* eslint-disable no-invalid-this */\nconst NS = 'OnboardingPage';\nconst CLS = 'onboardingPage';\n\nexport class OnboardingPage {\n    constructor(element) {\n        const $this = this;\n        this.element = element;\n        this.$element = $(this.element);\n        this.$tplScroller = $('.tpl-scroller');\n        this.$form = this.$element.find('form');\n        this.$formAction = this.$form.attr('action');\n        this.$navDots = this.$element.find(`.${CLS}-stepper-nav-dots`);\n        this.$progressBar = this.$element.find(`.${CLS}-progressBar-progress`);\n        this.$totalSteps = 0;\n        this.$currentStep = 0;\n        \n        // Init\n        $.each($('[data-step]', this.$element), function() {\n            const checkboxes = $(this).find(`input[type=\"checkbox\"]`);\n            const radios = $(this).find(`input[type=\"radio\"]`);\n            const select = $(this).find(`select`);\n            const textarea = $(this).find(`textarea`);\n            const inputtext = $(this).find(`input[type=\"text\"]`);\n            const nextBtn = $(this).find('[data-next-btn]');\n            const prevBtn = $(this).find('.btn-text-link--prev');\n            \n            // Total questions\n            if($(this).data('step') !== 'success') {\n                $this.$totalSteps++;\n            }\n\n            // Field validation - radio\n            radios.on('change', (event) => {\n                nextBtn.removeClass('disabled');\n            });\n    \n            // Field validation - checkboxes\n            checkboxes.on('change', (event) => {\n                if($(checkboxes).is(':checked') ) {\n                    nextBtn.removeClass('disabled');\n                }\n                else {\n                    nextBtn.addClass('disabled');\n                }\n            });\n            \n            select.on('change', (event) => {\n                nextBtn.removeClass('disabled');\n            });\n\n            inputtext.on('change', (event) => {\n                nextBtn.removeClass('disabled');\n            });\n\n            textarea.on('change', (event) => {\n                nextBtn.removeClass('disabled');\n            });\n\n        });\n\n        // Form back buttons\n        this.$element.on('click', '.btn-text-link--prev', (event) => {\n            event.preventDefault();\n\n            // Current Slide\n            let stepCurrentValue = $(event.currentTarget).data('stepCurrent');\n            let stepCurrentTarget = this.$element.find(`[data-step='${stepCurrentValue}']`);\n\n            // Update count\n            if($(stepCurrentTarget).data('step') !== 'success') {\n                if($(stepCurrentTarget).data('stepResult') !== 'true') {\n                    this.$currentStep--;\n                }\n                $(stepCurrentTarget).data('stepResult', 'true');\n            }\n\n            // Next slide, or quiz end?\n            let stepTargetValue = $(event.currentTarget).data('stepTarget');\n                this.goToStep(stepTargetValue);\n        });\n\n        // Form skip / submit buttons\n        this.$element.on('click', '.btn-text-link--next', (event) => {\n            event.preventDefault();\n\n            // Current Slide\n            let stepCurrentValue = $(event.currentTarget).data('stepCurrent');\n            let stepCurrentTarget = this.$element.find(`[data-step='${stepCurrentValue}']`);\n\n            // Update count\n            if($(stepCurrentTarget).data('step') !== 'success') {\n                if($(stepCurrentTarget).data('stepResult') !== 'true') {\n                    this.$currentStep++;\n                }\n                $(stepCurrentTarget).data('stepResult', 'true');\n            }\n            // Next slide, or quiz end?\n            let stepTargetValue = $(event.currentTarget).data('stepTarget');\n            if(stepTargetValue === 'submit') {\n                // Submit\n                // this.$element.find('form').trigger('submit');\n                var array = this.$form.serializeArray();\n                var formData = {};\n                $.map(array, function (n, i) {\n                    formData[n['name']] = n['value'];\n                });\n\n                // Removes empty field values\n                _.forOwn(formData, (value, key) => {\n                    if(_.isNil(value) || value.trim() === '') {\n                        delete formData[key];\n                    }\n                });\n\n                var json_text = JSON.stringify(formData);\n                let request = new Request(this.$formAction, {\n                    method: 'POST',\n                    body: json_text,\n                    headers: {\n                        'Content-Type': 'application/json'\n                    }\n                });\n\n                // submit form data using fetch api\n                fetch(request)\n                    .then((response) => {\n                        if(response.status === 200) {\n                            $this.goToStep('success');\n                            $this.$navDots.hide();\n                        }\n                        else {\n                            response.statusText;\n                        }\n                    })\n                    .catch((error) => {\n                        // errors (failed call)\n                        response.error;\n                    });\n            }\n            else {\n                // Next Slide\n                this.goToStep(stepTargetValue);\n            }\n        });\n\n        // Form next / submit buttons\n        this.$element.on('click', '[data-next-btn]', (event) => {\n            event.preventDefault();\n\n            // Current Slide\n            let stepCurrentValue = $(event.currentTarget).data('stepCurrent');\n            let stepCurrentTarget = this.$element.find(`[data-step='${stepCurrentValue}']`);\n            // Update count\n            if($(stepCurrentTarget).data('step') !== 'success') {\n                if($(stepCurrentTarget).data('stepResult') !== 'true') {\n                    this.$currentStep++;\n                }\n                $(stepCurrentTarget).data('stepResult', 'true');\n            }\n\n            // Next slide, or quiz end?\n            let stepTargetValue = $(event.currentTarget).data('stepTarget');\n\n                var array = this.$form.serializeArray();\n                var formData = {};\n                $.map(array, function (n, i) {\n                    formData[n['name']] = n['value'];\n                });\n\n                // Removes empty field values\n                _.forOwn(formData, (value, key) => {\n                    if(_.isNil(value) || value.trim() === '') {\n                        delete formData[key];\n                    }\n                });\n\n                var json_text = JSON.stringify(formData);\n                let request = new Request(this.$formAction, {\n                    method: 'POST',\n                    body: json_text,\n                    headers: {\n                        'Content-Type': 'application/json'\n                    }\n                });\n\n                // submit form data using fetch api\n                fetch(request)\n                    .then((response) => {\n                        if(response.status === 200) {\n                            if(stepTargetValue === 'submit') {\n                                $this.goToStep('success');\n                            }\n                            else{\n                                $this.goToStep(stepTargetValue);\n                            }\n                            $this.$navDots.hide();\n                        }\n                        else {\n                            response.statusText;\n                        }\n                    })\n                    .catch((error) => {\n                        // errors (failed call)\n                        response.error;\n                    });\n        });\n    }\n\n    // Go to slide\n    goToStep(stepTargetValue) {\n        // Hide current slide\n        this.$element.find('[data-step]').not(`[data-step='${stepTargetValue}']`).fadeOut(0).removeClass('is-active');\n\n        // Show new slide\n        let $stepTarget = this.$element.find(`[data-step='${stepTargetValue}']`);\n        $stepTarget.fadeIn(250).addClass('is-active');\n\n        // Update dots\n        this.$element.find('[data-dots-btn]').removeClass('active');\n        this.$element.find(`.${CLS}-stepper-nav-dots-dot[data-step-target='${stepTargetValue}']`).addClass('active');\n    }\n}"],"sourceRoot":""}