document.querySelectorAll('.email-input').forEach(input => { input.addEventListener('input', function () { if (/^\S+@\S+\.\S+$/.test(this.value)) { this.classList.remove('is-invalid'); } else { this.classList.add('is-invalid'); } }); }); const bsNotify = (message, options) => alertify.notify( `
`, 'custom', options?.delay ?? 5); class Comp { static ActPanel = class { static __Root; static get Root() { Comp.ActPanel.__Root ??= document.getElementById("flex-action-panel") return Comp.ActPanel.__Root } static get Elements() { return [...Comp.ActPanel.Root.children] } static get IsHided() { return Comp.ActPanel.Root.style.display == 'none'; } /** * @param {string} value */ static set Display(value) { Comp.ActPanel.Root.style.display = value Comp.ActPanel.Elements.forEach(e => e.style.display = value); } static Toggle() { Comp.ActPanel.Display = Comp.ActPanel.IsHided ? '' : 'none' } } static SignatureProgress = class { static __SignatureCount; static get SignatureCount() { this.__SignatureCount = parseInt(document.getElementById("signature-count").innerText); return this.__SignatureCount; } static __SignedCountSpan; static get SignedCountSpan() { this.__SignedCountSpan ??= document.getElementById("signed-count"); return Comp.SignatureProgress.__SignedCountSpan; } static __signedCount = 0; static get SignedCount() { return this.__signedCount; } static set SignedCount(value) { this.__signedCount = value; const width = (value / this.SignatureCount) * 100; this.SignedCountBar.style.setProperty('--progress-width', width + '%'); this.SignedCountSpan.innerText = value.toString(); } static __SignedCountBar; static get SignedCountBar() { this.__SignedCountBar ??= document.getElementById("signed-count-bar"); return this.__SignedCountBar; } } static __ShareBackdrop; static get ShareBackdrop() { Comp.__ShareBackdrop ??= new bootstrap.Modal(document.getElementById('shareBackdrop')); return this.__ShareBackdrop; } }