client/forms: fix disabling forms

This commit is contained in:
rr- 2016-04-06 15:11:20 +02:00
parent 9a2a587fb1
commit 42fdb49d1a
5 changed files with 66 additions and 17 deletions

View file

@ -78,8 +78,8 @@ input[type=radio], input[type=checkbox] {
margin-top: -10px;
width: 16px;
height: 16px;
border: 2px solid var(--input-background-color);
background: var(--input-border-color);
background: var(--input-enabled-background-color);
border: 2px solid var(--input-enabled-border-color);
content: '';
}
input[type=radio]:checked + .radio:before,
@ -90,6 +90,16 @@ input[type=radio]:checked + .radio:after,
input[type=checkbox]:checked + .checkbox:after {
opacity: 1;
}
input[type=radio]:disabled + .radio:before,
input[type=checkbox]:disabled + .checkbox:before,
input[type=radio]:disabled + .radio:after,
input[type=checkbox]:disabled + .checkbox:after {
border-color: var(--input-disabled-text-color);
}
input[type=radio]:disabled + .radio,
input[type=checkbox]:disabled + .checkbox {
border-color: var(--input-disabled-font-color);
}
.radio:after {
transition: opacity 0.1s linear;
@ -124,16 +134,26 @@ textarea,
input[type=text],
input[type=email],
input[type=password] {
transition: border-color 0.1s linear, background-color 0.1s linear;
font-size: 100%;
font-family: 'Inconsolata', monospace;
font-size: 100%;
padding: 0.3em;
border: 2px solid var(--input-background-color);
background: var(--input-border-color);
text-overflow: ellipsis;
width: 100%;
box-sizing: border-box;
border: 2px solid var(--input-enabled-border-color);
background: var(--input-enabled-background-color);
color: var(--input-enabled-text-color);
box-shadow: none; /* :-moz-submit-invalid on FF */
transition: border-color 0.1s linear, background-color 0.1s linear;
}
textarea:disabled,
input[type=text]:disabled,
input[type=email]:disabled,
input[type=password]:disabled {
border: 2px solid var(--input-disabled-border-color);
background: var(--input-disabled-background-color);
color: var(--input-disabled-text-color);
}
textarea:focus,
@ -161,7 +181,16 @@ input[type=submit] {
font-size: 100%;
line-height: 100%;
padding: 0.3em 0.7em;
border: 1px solid var(--main-color);
background: var(--main-color);
color: white;
border: 1px solid var(--button-enabled-background-color);
background: var(--button-enabled-background-color);
color: var(--button-enabled-text-color);
}
button:disabled,
input[type=button]:disabled,
input[type=submit]:disabled {
cursor: default;
border-color: var(--button-disabled-background-color);
background-color: var(--button-disabled-background-color);
color: var(--button-disabled-text-color);
}

View file

@ -12,8 +12,16 @@
--input-bad-background-color: #FFF5F5;
--input-good-border-color: #D3E3D3;
--input-good-background-color: #F5FFF5;
--input-background-color: #EEE;
--input-border-color: #FAFAFA;
--input-enabled-background-color: #FAFAFA;
--input-enabled-border-color: #EEE;
--input-enabled-text-color: var(--text-color);
--input-disabled-background-color: #FAFAFA;
--input-disabled-border-color: #EEE;
--input-disabled-text-color: #888;
--button-enabled-text-color: white;
--button-enabled-background-color: var(--main-color);
--button-disabled-text-color: #666;
--button-disabled-background-color: #CCC;
}
body {

View file

@ -58,6 +58,18 @@ class BaseView {
});
}
disableForm(form) {
for (let input of form.querySelectorAll('input')) {
input.disabled = true;
}
}
enableForm(form) {
for (let input of form.querySelectorAll('input')) {
input.disabled = false;
}
}
showView(html) {
this.contentHolder.innerHTML = html;
}

View file

@ -23,17 +23,17 @@ class LoginView extends BaseView {
form.addEventListener('submit', e => {
e.preventDefault();
this.clearMessages();
form.setAttribute('disabled', true);
this.disableForm(form);
options
.login(
userNameField.value,
passwordField.value,
rememberUserField.checked)
.then(() => {
form.setAttribute('disabled', false);
this.enableForm(form);
})
.catch(errorMessage => {
form.setAttribute('disabled', false);
this.enableForm(form);
this.notifyError(errorMessage);
});
});

View file

@ -23,17 +23,17 @@ class RegistrationView extends BaseView {
form.addEventListener('submit', e => {
e.preventDefault();
this.clearMessages();
form.setAttribute('disabled', true);
this.disableForm(form);
options
.register(
userNameField.value,
passwordField.value,
emailField.value)
.then(() => {
form.setAttribute('disabled', false);
this.enableForm(form);
})
.catch(errorMessage => {
form.setAttribute('disabled', false);
this.enableForm(form);
this.notifyError(errorMessage);
});
});