{"version":3,"sources":["webpack:///./components/form.js"],"names":["$","window","jQuery","FocusInput","el","$el","val","closest","addClass","focus","e","currentTarget","blur","removeClass","ValidateForm","_checkEmpty","input","container","validator","isEmpty","find","text","_checkValidForm","_checkChecked","choices","valid","each","this","is","_checkValidEmail","required","arguments","length","undefined","validation","isEmail","invalidFields","$submit","show","hide","reqfields","$disabledSubmit","$this","$text","$checkboxes","$radiobuttons","$textarea","append","$boxes","$box","click","$choices","$choice","on","emailFields","$container","parents","$input","hasClass","remove"],"mappings":"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","file":"form.js","sourcesContent":["const $ = window.jQuery;\nimport validator from 'validator';\n\nconst FocusInput = (el) => {\n const $el = $(el);\n\n if($el.val() !== \"\") {\n $el.closest('.gfield').addClass('focus');\n }\n\n $el.focus(function(e) {\n let li = $(e.currentTarget)\n .closest('.gfield')\n .addClass('focus');\n });\n\n $el.blur(function(e) {\n if($el.val() !== \"\") {\n return;\n }\n\n let li = $(e.currentTarget)\n .closest('.gfield')\n .removeClass('focus');\n });\n\n};\n\nconst ValidateForm = (el) => {\n const REQUIEREDMESSAGE = 'Fältet är obligatoriskt';\n const VALIDEMAILMESSAGE = 'Ange en giltig e-postadress';\n\n const _checkEmpty = (input, container) => {\n if(validator.isEmpty(input)) {\n container.find('.js-error-container').text(REQUIEREDMESSAGE)\n container.addClass('invalid')\n } else {\n container.find('.js-error-container').text('')\n container.removeClass('invalid')\n }\n\n _checkValidForm()\n }\n\n const _checkChecked = (choices, container) => {\n let valid = false;\n choices.each(function() {\n if($(this).is(':checked')) {\n valid = true\n }\n })\n\n if(valid) {\n container.find('.js-error-container').text('')\n container.removeClass('invalid')\n } else {\n container.find('.js-error-container').text(REQUIEREDMESSAGE)\n container.addClass('invalid')\n }\n\n _checkValidForm()\n }\n\n const _checkValidEmail = (input, container, required = false) => {\n const validation = required\n ? validator.isEmail(input)\n : validator.isEmail(input) || validator.isEmpty(input);\n\n if(validation) {\n container.find('.js-error-container').text('');\n container.removeClass('invalid')\n } else {\n container.find('.js-error-container').text(VALIDEMAILMESSAGE);\n container.addClass('invalid')\n }\n\n _checkValidForm()\n }\n\n const _checkValidForm = () => {\n const invalidFields = $el.find('.gfield.invalid');\n const $submit = $el.find('input[type=\"submit\"]');\n if(invalidFields.length) {\n $submit.addClass('disabled');\n $('.js-submit-disabled').show();\n } else {\n $submit.removeClass('disabled');\n $('.js-submit-disabled').hide()\n }\n }\n\n const $el = $(el);\n // Required fields\n const reqfields = $el.find('.gfield_contains_required');\n const $disabledSubmit = $('.js-submit-disabled');\n reqfields.each(function() {\n const $this = $(this);\n const $text = $this.find('input[type=\"text\"]');\n const $checkboxes = $this.find('.ginput_container_checkbox');\n const $radiobuttons = $this.find('.ginput_container_radio');\n const $textarea = $this.find('textarea');\n\n if($text.length || $checkboxes.length || $radiobuttons.length || $textarea.length) {\n $this.addClass('invalid');\n $this.append('
')\n }\n\n // Checkbox\n if($checkboxes.length) {\n const $boxes = $this.find('input[type=\"checkbox\"]')\n $boxes.each(function () {\n const $box = $(this);\n if($box.is(':checked')) {\n _checkChecked($boxes, $this)\n }\n\n $box.click(() => {\n _checkChecked($boxes, $this)\n })\n\n $disabledSubmit.click(function () {\n _checkChecked($boxes, $this)\n })\n })\n }\n\n // Radios\n if($radiobuttons.length) {\n const $choices = $this.find('input[type=\"radio\"]')\n $choices.each(function () {\n const $choice = $(this)\n if($choice.is(':checked')) {\n _checkChecked($choices, $this)\n }\n\n $choice.click(() => {\n _checkChecked($choices, $this)\n })\n\n $disabledSubmit.click(function () {\n _checkChecked($choices, $this)\n })\n })\n }\n\n // Text\n if($text.length) {\n if($text.val()) {\n _checkEmpty($text.val(), $this)\n }\n\n $text.blur(function() {\n _checkEmpty($text.val(), $this)\n });\n $text.on('input', function(e) {\n _checkEmpty($text.val(), $this)\n });\n\n $disabledSubmit.click(function () {\n _checkEmpty($text.val(), $this)\n })\n }\n\n // Textarea\n if($textarea.length) {\n if($textarea.val()) {\n _checkEmpty($textarea.val(), $this)\n }\n\n $textarea.blur(function() {\n _checkEmpty($textarea.val(), $this)\n });\n\n $textarea.on('input', function(e) {\n _checkEmpty($textarea.val(), $this)\n });\n\n $disabledSubmit.click(function () {\n _checkEmpty($textarea.val(), $this)\n })\n }\n })\n\n // Email\n const emailFields = $el.find('.ginput_container_email');\n if(emailFields.length) {\n emailFields.each(function() {\n const $this = $(this);\n const $container = $this.parents('.gfield');\n const $input = $this.find('input')\n const required = $container.hasClass('gfield_contains_required')\n\n $container.find('.js-error-container').remove();\n $container.append('
')\n if($input.val()) {\n _checkValidEmail($input.val(), $container, required);\n }\n $input.on('input', function(e) {\n _checkValidEmail($input.val(), $container, required);\n });\n\n $input.blur(function(e) {\n _checkValidEmail($input.val(), $container, required);\n });\n })\n }\n\n // Initial check\n _checkValidForm();\n}\n\nexport {FocusInput, ValidateForm};"],"sourceRoot":""}