├── .vscode └── settings.json ├── app.css ├── functional.js ├── index.html ├── oop.js └── procedural.js /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "window.zoomLevel": 4 3 | } -------------------------------------------------------------------------------- /app.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-family: sans-serif; 3 | } 4 | 5 | form { 6 | margin: 3rem; 7 | padding: 1rem; 8 | border: 1px solid #ccc; 9 | } 10 | 11 | .form-control { 12 | margin: 1rem 0; 13 | } 14 | 15 | label, input { 16 | display: block; 17 | } 18 | 19 | label { 20 | font-weight: bold; 21 | margin-bottom: 0.5rem; 22 | } 23 | 24 | input { 25 | font: inherit; 26 | padding: 0.15rem 0.2rem; 27 | border: 1px solid #ccc; 28 | } 29 | 30 | input:focus { 31 | outline: none; 32 | background: #e0e0e0; 33 | } 34 | 35 | button { 36 | font: inherit; 37 | cursor: pointer; 38 | background: #000057; 39 | color: white; 40 | border: 1px solid #000057; 41 | padding: 1rem 2rem; 42 | } -------------------------------------------------------------------------------- /functional.js: -------------------------------------------------------------------------------- 1 | const REQUIRED = 'REQUIRED'; 2 | const MIN_LENGTH = 'MIN_LENGTH'; 3 | 4 | function validate(value, flag, validatorValue) { 5 | if (flag === REQUIRED) { 6 | return value.trim().length > 0; 7 | } 8 | if (flag === MIN_LENGTH) { 9 | return value.trim().length > validatorValue; 10 | } 11 | } 12 | 13 | function getUserInput(inputElementId) { 14 | return document.getElementById(inputElementId).value; 15 | } 16 | 17 | function createUser(userName, userPassword) { 18 | if (!validate(userName, REQUIRED) || !validate(userPassword, MIN_LENGTH, 5)) { 19 | throw new Error( 20 | 'Invalid input - username or password is wrong (password should be at least six characters).' 21 | ); 22 | } 23 | return { 24 | userName: userName, 25 | password: userPassword 26 | }; 27 | } 28 | 29 | function greetUser(user) { 30 | console.log('Hi, I am ' + user.userName); 31 | } 32 | 33 | function signupHandler(event) { 34 | event.preventDefault(); 35 | 36 | const enteredUsername = getUserInput('username'); 37 | const enteredPassword = getUserInput('password'); 38 | 39 | try { 40 | const newUser = createUser(enteredUsername, enteredPassword); 41 | console.log(newUser); 42 | greetUser(newUser); 43 | } catch (err) { 44 | alert(err.message); 45 | } 46 | } 47 | 48 | function connectForm(formId, formSubmitHandler) { 49 | const form = document.getElementById(formId); 50 | form.addEventListener('submit', formSubmitHandler); 51 | } 52 | 53 | connectForm('user-input', signupHandler); 54 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |