{% extends "base.html" %} {% load i18n %} {% load static %} {# ============================================================ EENOS UAPP FORM TEMPLATE REFERENCE ============================================================ FRONTEND STACK -------------- - Bootstrap 5.3.8 - jQuery 4 - Lucide Icons - Parsley.js - Eenos UappClass UAPPCLASS FEATURES ----------------- UappClass already provides shared functionality for: - Parsley validation - Searchable select fields - Password generation - Password show / hide - Password strength meter - Lucide icon initialization Do NOT duplicate these features inside page-specific JS. FORM RULES ---------- Forms using standard Eenos validation must use: class="eenos-form" Use native HTML validation attributes together with Parsley: required minlength="" maxlength="" min="" max="" data-parsley-type="" data-parsley-pattern="" Custom validation messages may use: data-parsley-required-message="" data-parsley-type-message="" data-parsley-pattern-message="" SEARCHABLE SELECT ----------------- Searchable selects must use: class="form-select eenos-select-search" UappClass handles the enhanced select interface. PASSWORD GENERATOR ------------------ Use the standard component classes: .eenos-password-generator .eenos-password-input .eenos-password-toggle .eenos-password-generate .eenos-password-strength .eenos-password-strength-progress .eenos-password-strength-text Do NOT write another password generator in the page JS. CONFIRMATIONS / MODALS ---------------------- Do NOT use: $.confirm() $.alert() jquery-confirm All old jQuery Confirm dialogs must be converted to Bootstrap 5.3 modals. For actions requiring validation before confirmation: 1. Prevent the button's default action. 2. Get the form Parsley instance. 3. Call parsleyForm.validate(). 4. Check parsleyForm.isValid(). 5. Only open the Bootstrap modal when valid. LUCIDE ICONS ------------ Use: Lucide is already initialized by UappClass. Do not initialize Lucide separately on every page unless dynamically generated content specifically requires it. HTML / ACCESSIBILITY -------------------- Every form label must reference its field: Do not use