57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
const $ = (selector, root = document) => root.querySelector(selector);
|
|
const $$ = (selector, root = document) => [...root.querySelectorAll(selector)];
|
|
|
|
function showToast(message) {
|
|
const toast = $('#toast');
|
|
if (!toast) return;
|
|
toast.textContent = message;
|
|
toast.classList.add('toast--visible');
|
|
window.clearTimeout(showToast.timer);
|
|
showToast.timer = window.setTimeout(() => toast.classList.remove('toast--visible'), 3600);
|
|
}
|
|
|
|
function setupLogin() {
|
|
const form = $('#login-form');
|
|
if (!form) return;
|
|
const message = $('#login-message');
|
|
const email = $('#email');
|
|
const password = $('#password');
|
|
const demo = $('#demo-login');
|
|
|
|
const completeDemoLogin = (value) => {
|
|
email.value = value || 'alex.morgan@example.com';
|
|
password.value = 'prototype-only';
|
|
sessionStorage.setItem('ut-demo-user', email.value);
|
|
window.location.href = 'workspace.html';
|
|
};
|
|
|
|
demo?.addEventListener('click', () => completeDemoLogin());
|
|
form.addEventListener('submit', (event) => {
|
|
event.preventDefault();
|
|
if (!email.value.trim() || !password.value) {
|
|
message.textContent = 'Enter an account and password to continue.';
|
|
message.className = 'form-message form-message--error';
|
|
return;
|
|
}
|
|
message.textContent = 'Prototype login accepted locally. No credentials were transmitted.';
|
|
message.className = 'form-message form-message--success';
|
|
window.setTimeout(() => completeDemoLogin(email.value.trim()), 350);
|
|
});
|
|
}
|
|
|
|
function setupWorkspace() {
|
|
$$('[data-demo-action]').forEach((button) => {
|
|
button.addEventListener('click', () => {
|
|
if (button.textContent.trim() === 'Sign out') {
|
|
sessionStorage.removeItem('ut-demo-user');
|
|
window.location.href = 'index.html';
|
|
return;
|
|
}
|
|
showToast(button.dataset.demoAction);
|
|
});
|
|
});
|
|
}
|
|
|
|
setupLogin();
|
|
setupWorkspace();
|