Add CSS validation and new checkbox toggle slider styles; update validation tools documentation
This commit is contained in:
306
client/custom/css/checkbox-toggle-slider.css
Normal file
306
client/custom/css/checkbox-toggle-slider.css
Normal file
@@ -0,0 +1,306 @@
|
||||
/**
|
||||
* Custom CSS: Checkbox Toggle Slider
|
||||
* Verwandelt alle Standard-Checkboxen in moderne On-Off-Slider
|
||||
* Erstellt: Januar 2026
|
||||
* Updated: Angepasst für EspoCRM Struktur (Label vor Input)
|
||||
*/
|
||||
|
||||
/* ===== HAUPT-CHECKBOX STYLING ===== */
|
||||
|
||||
/* Standard-Checkbox verstecken und durch Slider ersetzen */
|
||||
input[type="checkbox"].main-element,
|
||||
input[type="checkbox"].form-checkbox,
|
||||
.field[data-name] input[type="checkbox"] {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
background-color: #ccc;
|
||||
border-radius: 12px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s ease;
|
||||
outline: none;
|
||||
border: none;
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* Slider-Button (der runde Schalter) */
|
||||
input[type="checkbox"].main-element::before,
|
||||
input[type="checkbox"].form-checkbox::before,
|
||||
.field[data-name] input[type="checkbox"]::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-color: white;
|
||||
border-radius: 50%;
|
||||
top: 3px;
|
||||
left: 3px;
|
||||
transition: transform 0.3s ease, left 0.3s ease;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
/* Checked State - Slider bewegt sich nach rechts und wird grün */
|
||||
input[type="checkbox"].main-element:checked,
|
||||
input[type="checkbox"].form-checkbox:checked,
|
||||
.field[data-name] input[type="checkbox"]:checked {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element:checked::before,
|
||||
input[type="checkbox"].form-checkbox:checked::before,
|
||||
.field[data-name] input[type="checkbox"]:checked::before {
|
||||
left: 23px;
|
||||
}
|
||||
|
||||
/* Hover-Effekt */
|
||||
input[type="checkbox"].main-element:hover,
|
||||
input[type="checkbox"].form-checkbox:hover,
|
||||
.field[data-name] input[type="checkbox"]:hover {
|
||||
opacity: 0.9;
|
||||
box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.2);
|
||||
}
|
||||
|
||||
/* Focus State für Accessibility */
|
||||
input[type="checkbox"].main-element:focus,
|
||||
input[type="checkbox"].form-checkbox:focus,
|
||||
.field[data-name] input[type="checkbox"]:focus {
|
||||
outline: 2px solid #4CAF50;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
/* Disabled State */
|
||||
input[type="checkbox"].main-element:disabled,
|
||||
input[type="checkbox"].form-checkbox:disabled,
|
||||
.field[data-name] input[type="checkbox"]:disabled {
|
||||
background-color: #e0e0e0;
|
||||
cursor: not-allowed;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element:disabled::before,
|
||||
input[type="checkbox"].form-checkbox:disabled::before,
|
||||
.field[data-name] input[type="checkbox"]:disabled::before {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
/* ===== FIELD CONTAINER STYLING ===== */
|
||||
|
||||
/* Field Container anpassen für besseres Layout */
|
||||
.field[data-name] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
/* Boolean Field spezifisch */
|
||||
.field.field-boolean {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* ===== DETAIL VIEW (Readonly) ===== */
|
||||
|
||||
/* Detail-Mode mit custom Attribut */
|
||||
.field.field-boolean[data-value="true"] input[type="checkbox"]:disabled,
|
||||
.field.field-boolean.detail-mode input[type="checkbox"] {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
.field.field-boolean[data-value="true"] input[type="checkbox"]:disabled::before,
|
||||
.field.field-boolean.detail-mode input[type="checkbox"]::before {
|
||||
left: 23px;
|
||||
}
|
||||
|
||||
.field.field-boolean[data-value="false"] input[type="checkbox"]:disabled,
|
||||
.field.field-boolean.detail-mode input[type="checkbox"]:not(:checked) {
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
/* Text "Yes"/"No" in Detail-View ausblenden falls vorhanden */
|
||||
.field.field-boolean.detail-mode span.text-muted {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* ===== LIST VIEW & TABLE CELLS ===== */
|
||||
|
||||
/* List View Checkboxen in Tabellen */
|
||||
td.cell.cell-boolean input[type="checkbox"] {
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
/* ===== MODAL & INLINE EDIT ===== */
|
||||
|
||||
/* Modal-Body Checkboxen */
|
||||
.modal-body .field[data-name] input[type="checkbox"] {
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
/* Inline Edit Mode */
|
||||
.inline-edit-mode input[type="checkbox"] {
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
/* ===== FILTER & SEARCH ===== */
|
||||
|
||||
/* Filter-Panel Checkboxen */
|
||||
.search-row input[type="checkbox"] {
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
/* Advanced Filters */
|
||||
.filter-container input[type="checkbox"] {
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
/* ===== PREFERENCES & SETTINGS ===== */
|
||||
|
||||
/* Preferences/Settings Panels */
|
||||
.panel-body input[type="checkbox"].form-checkbox {
|
||||
width: 44px;
|
||||
height: 24px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
/* ===== MASS ACTION CHECKBOXEN AUSNAHME ===== */
|
||||
|
||||
/* Mass Action Checkboxen - diese NICHT als Slider darstellen */
|
||||
input[type="checkbox"].record-checkbox,
|
||||
input[type="checkbox"].select-all,
|
||||
td.cell-checkbox input[type="checkbox"],
|
||||
th.cell-checkbox input[type="checkbox"] {
|
||||
appearance: checkbox !important;
|
||||
-webkit-appearance: checkbox !important;
|
||||
-moz-appearance: checkbox !important;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
background-color: transparent !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
input[type="checkbox"].record-checkbox::before,
|
||||
input[type="checkbox"].select-all::before,
|
||||
td.cell-checkbox input[type="checkbox"]::before,
|
||||
th.cell-checkbox input[type="checkbox"]::before {
|
||||
display: none !important;
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
/* ===== ALTERNATIVE FARBEN (Optional) ===== */
|
||||
|
||||
/* Warning State */
|
||||
input[type="checkbox"][data-type="warning"]:checked {
|
||||
background-color: #ff9800;
|
||||
}
|
||||
|
||||
/* Danger/Error State */
|
||||
input[type="checkbox"][data-type="danger"]:checked {
|
||||
background-color: #f44336;
|
||||
}
|
||||
|
||||
/* Info State */
|
||||
input[type="checkbox"][data-type="info"]:checked {
|
||||
background-color: #2196F3;
|
||||
}
|
||||
|
||||
/* ===== ANIMATIONEN ===== */
|
||||
|
||||
/* Slide-In Animation beim Laden */
|
||||
@keyframes slideIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.9);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element,
|
||||
input[type="checkbox"].form-checkbox {
|
||||
animation: slideIn 0.3s ease-out;
|
||||
}
|
||||
|
||||
/* Smooth Toggle Animation */
|
||||
input[type="checkbox"].main-element::before,
|
||||
input[type="checkbox"].form-checkbox::before {
|
||||
transition: left 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);
|
||||
}
|
||||
|
||||
/* ===== DARK MODE UNTERSTÜTZUNG ===== */
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
input[type="checkbox"].main-element:not(:checked),
|
||||
input[type="checkbox"].form-checkbox:not(:checked) {
|
||||
background-color: #555;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element::before,
|
||||
input[type="checkbox"].form-checkbox::before {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element:disabled,
|
||||
input[type="checkbox"].form-checkbox:disabled {
|
||||
background-color: #444;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== RESPONSIVE ANPASSUNGEN ===== */
|
||||
|
||||
/* Mobile Geräte - etwas größere Touch-Targets */
|
||||
@media (max-width: 768px) {
|
||||
input[type="checkbox"].main-element,
|
||||
input[type="checkbox"].form-checkbox {
|
||||
width: 48px;
|
||||
height: 26px;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element::before,
|
||||
input[type="checkbox"].form-checkbox::before {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element:checked::before,
|
||||
input[type="checkbox"].form-checkbox:checked::before {
|
||||
left: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== ACCESSIBILITY VERBESSERUNGEN ===== */
|
||||
|
||||
/* High Contrast Mode Unterstützung */
|
||||
@media (prefers-contrast: high) {
|
||||
input[type="checkbox"].main-element,
|
||||
input[type="checkbox"].form-checkbox {
|
||||
border: 2px solid currentColor;
|
||||
}
|
||||
|
||||
input[type="checkbox"].main-element:checked,
|
||||
input[type="checkbox"].form-checkbox:checked {
|
||||
background-color: #2d7a2e;
|
||||
}
|
||||
}
|
||||
|
||||
/* Reduced Motion für Nutzer mit Bewegungsempfindlichkeit */
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
input[type="checkbox"].main-element,
|
||||
input[type="checkbox"].form-checkbox,
|
||||
input[type="checkbox"].main-element::before,
|
||||
input[type="checkbox"].form-checkbox::before {
|
||||
transition: none;
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user