{"version":3,"file":"user_signup-25f22baa.js","sources":["../../../app/javascript/entrypoints/user_signup.js"],"sourcesContent":["globalThis.user_signup = function(){\n //path to the check username api\n var username_api_path = '/users/1/check_username';\n let place_id = 1000;\n let ok = false;\n let username_valid = false;\n let email_valid = false;\n let password_valid = false;\n\n const check = () => {\n ok = (username_valid && password_valid && email_valid)\n toggle_button(\"#submit\", ok);\n }\n const setup_hear_about_us = () => {\n const hear_about_us_other = $(\"#user_profile_attributes_hear_about_us_other\");\n const hear_about_us = $('#user_profile_attributes_hear_about_us');\n hear_about_us.on('change', function(e){\n const val = e.target.value;\n if (val === \"Other\") {\n hear_about_us_other.show();\n } else {\n hear_about_us_other.hide();\n }\n });\n if (hear_about_us.value === \"Other\") {\n hear_about_us_other.show();\n } else {\n hear_about_us_other.hide();\n }\n }\n const toggle_button = (sel, enabled) => {\n const element = document.querySelector(sel);\n if (element) {\n element.disabled = !enabled;\n } else {\n console.log(`couldn't fine ${sel}, returned: ${element}`);\n }\n }\n //this function sets up validation for a username field, given a selector\n function add_user_name_validation(selector, saveButton){\n //when changing focus from the name field, check for username validity\n $(selector).on('blur', function(){\n var value = $(this).val();\n\n //first check if length is 4..50\n if(value.length >= 4 && value.length <=50){\n //then check if username is valid (alphanumerics and start with letter)\n username_valid = ldc_lui.valid_username_regex.test(value.toLowerCase());\n debugger;\n if(username_valid){\n //then check if the username is already taken in a JSON call\n $.get(username_api_path, {username: value}, function(data) {\n if(data.user_exists){\n username_valid = false;\n $('#name-alert').html('Username already taken');\n }else{\n username_valid = true;\n $('#name-alert').html('');\n }\n }, 'json');\n }else{\n username_valid = false;\n $('#name-alert').html('Username must contain only letters, numbers, hyphens, underscores, or periods.');\n }\n }else{\n username_valid = false;\n $('#name-alert').html('Username can only be 4-50 characters long');\n }\n check();\n });\n };\n\n //sets up the validation for password/password confirmation\n function add_password_validation(password_selector, confirmation_selector, saveButton){\n //listener on the password to ensure the length is within our range\n $(password_selector).on('blur', function(){\n password_valid = $(this).val().length >= 6;\n $('#password-alert').html(password_valid ? '' : 'Password must have length >= 8');\n check();\n });\n\n //listener on the password/password confirmation to ensure their values match\n $(password_selector + ', ' + confirmation_selector).on('blur', function(){\n var password = $(password_selector).val();\n var password_confirmation = $(confirmation_selector).val();\n var passwords_match = password === password_confirmation;\n\n $('#password_confirm-alert').html(passwords_match ? '' : 'Password and confirmation must match');\n password_valid = passwords_match;\n //check to make sure we aren't overriding the previous listener\n if($('#password-alert').html().length === 0) {\n check();\n\n }\n });\n };\n\n //sets up validation for the user's email address\n function add_email_validation(selector, saveButton){\n //listener to check for email address validity when focus is lost\n $(selector).on('blur', function(){\n email_valid = ldc_lui.valid_email_regex.test($(this).val());\n $('#email-alert').html(email_valid ? '' : 'Invalid Email Address');\n check();\n });\n };\n\n //sets up validation for year (optional)\n function add_year_validation(selector, saveButton){\n //listener to check for year validity when focus is lost\n $(selector).on('blur', function(){\n var curr_year = (new Date().getFullYear());\n var year = $(this).val()\n var year_valid = /\\d{4}/.test(year) && year >= 1890 && year <= curr_year;\n if(year == '')\n year_valid = true;\n $(this).siblings('[id$=\"-alert\"]').html(year_valid ? '' : `Year must be a 4-digit number greater than 1890 and no more than ${curr_year}`);\n toggle_button(saveButton, year_valid);\n });\n };\n console.log(\"setup\");\n return{\n //this function is called when initializing the new view (the user signup page)\n init: function(){\n console.log(\"init, innnit?\");\n // $('#submit').prop('disabled', true);\n\n //listener to check for email address validity when focus is lost\n add_email_validation('#user_email', '#submit');\n\n //when changing focus from the name field, check for username validity\n add_user_name_validation('#user_name', '#submit');\n\n //add password/password confirmation validation\n add_password_validation('#user_password', '#user_password_confirmation', '#submit');\n add_year_validation('.validate_year', '#submit');\n $('form').on('keypress', e => {\n if (e.keyCode == 13) {\n return false;\n }\n });\n\n $('body').on('click', '.add_fields', function(e){\n console.log('add_fields clicked');\n e.preventDefault();\n const regexp = new RegExp($(this).data('id'), 'g');\n $(this).before($(this).data('fields').replace(regexp, ''));\n add_year_validation('.validate_year', '#submit');\n return(false);\n });\n\n\n check();\n\n setup_hear_about_us();\n\n }\n }\n}();\n"],"names":["username_api_path","ok","username_valid","email_valid","password_valid","check","toggle_button","setup_hear_about_us","hear_about_us_other","hear_about_us","e","sel","enabled","element","add_user_name_validation","selector","saveButton","value","data","add_password_validation","password_selector","confirmation_selector","password","password_confirmation","passwords_match","add_email_validation","add_year_validation","curr_year","year","year_valid","regexp"],"mappings":"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"}