1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- function LoginForm(parent, open) {
- function Login(parent) {
- this.input = document.createElement("input");
- parent.append(this.input);
- this.setValue = function (value) {
- this.input.value = value;
- }
- this.getValue = function () {
- return this.input.value;
- }
- this.input.oninput = this.input.onchange = function () {
- if (this.onChange)
- this.onChange(this.getValue());
- }.bind(this);
- }
- function Password(parent, open) {
- this.input = document.createElement("input");
- parent.append(this.input);
- this.setValue = function (value) {
- this.input.value = value;
- }
- this.getValue = function () {
- return this.input.value;
- }
- this.input.oninput = this.input.onchange = function () {
- if (this.onChange)
- this.onChange(this.getValue());
- }.bind(this);
- this.setOpen = function (open) {
- this.input.type = open ? "text" : "password";
- }
- this.getOpen = function () {
- return this.input.type == "text";
- }
- let check = document.createElement("input");
- parent.append(check);
- check.onchange = function () {
- this.setOpen(check.checked);
- if (this.onOpenChange)
- this.onOpenChange(this.getOpen());
- }.bind(this);
- check.checked = open;
- check.value = "open";
- check.type = "checkbox";
- this.setOpen(open);
- }
- let form = document.createElement("form");
- parent.append(form);
- this.login = new Login(form);
- this.password = new Password(form, open);
- this.button = document.createElement("button");
- this.button.innerText = "OK";
- this.button.classList.add('btn');
- this.button.classList.add('ref-button');
- form.append(this.button);
- let setButtonStateCallback = function setButtonState() {
- this.button.disabled = !this.login.getValue() || !this.password.getValue();
- }.bind(this);
- this.login.onChange = setButtonStateCallback;
- this.password.onChange = setButtonStateCallback;
- this.button.disabled = true;
- this.button.onclick = function () {
- if (this.onLogin)
- this.onLogin(this.login.getValue(), this.password.getValue());
- }.bind(this);
- }
- function loginPromise(parent) {
- function executor(fulfill, reject) {
- const form = new LoginForm(parent);
- form.onLogin = (login, password) => {
- fulfill({ 'login': login, 'password': password })
- }
- }
- return new Promise(executor);
- }
- /*loginPromise(document.body)
- .then(({ login, password }) => console.log(`Вы ввели ${login} и ${password}`));*/
|