ngx-lite-form 1.2.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +668 -147
- package/fesm2022/ngx-lite-form.mjs +87 -2
- package/fesm2022/ngx-lite-form.mjs.map +1 -1
- package/index.d.ts +41 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, effect, Component, HostListener, ViewChild, signal, computed, Injectable, output } from '@angular/core';
|
|
2
|
+
import { input, effect, Component, HostListener, ViewChild, signal, computed, Injectable, output, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/forms';
|
|
4
4
|
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import * as i1 from '@angular/common';
|
|
@@ -2136,6 +2136,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2136
2136
|
args: [{ selector: 'lite-table', standalone: true, imports: [CommonModule, LitePaginator], template: "<div class=\"lite-table\">\n <!-- Table Header -->\n <div class=\"table-header\">\n <div class=\"header-row\">\n @for (column of table().columns; track column.key) {\n <div\n class=\"header-cell\"\n [style.flex]=\"column.flex || '1'\"\n [class.sortable]=\"column.sortable\">\n {{ column.label }}\n </div>\n }\n </div>\n </div>\n\n <!-- Table Body -->\n <div class=\"table-body\">\n @for (row of paginatedData(); track $index) {\n <div class=\"data-row\">\n @for (column of table().columns; track column.key) {\n <div class=\"data-cell\" [style.flex]=\"column.flex || '1'\">\n <span [innerHTML]=\"getCellValue(row, column)\"></span>\n </div>\n }\n </div>\n }\n @if (paginatedData().length === 0) {\n <div class=\"empty-row\">\n <div\n class=\"empty-cell\"\n [style.flex]=\"'1'\">\n No data available\n </div>\n </div>\n }\n </div>\n\n <!-- Paginator -->\n @if (table().showPaginator) {\n <div class=\"table-paginator\">\n <lite-paginator\n [paginator]=\"table().paginatorConfig\"\n (pageChange)=\"onPageChange($event)\"\n (itemsPerPageChange)=\"onItemsPerPageChange($event)\">\n </lite-paginator>\n </div>\n }\n</div>\n", styles: ["*{box-sizing:border-box}input,.label,textarea{font-size:1em;color:#333}.lite-input{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-input .label{font-size:.8em;font-weight:500}.lite-input .value{min-height:1em;line-height:1em}.lite-input.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-input.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 8px;font-size:1em;outline:none;line-height:40px;height:40px}.lite-input.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-input.in-edit input:focus+.label,.lite-input.in-edit input:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-input.in-edit input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 2px 1px #dc354540}.lite-password{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-password .label{font-size:.8em;font-weight:500}.lite-password .value{min-height:1em;line-height:1em}.lite-password.in-edit .input-container{position:relative;display:flex;align-items:center}.lite-password.in-edit .input-container input{border:1px solid #ccc;border-radius:4px;padding:0 2.5em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px;width:100%}.lite-password.in-edit .input-container input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-password.in-edit .input-container input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-password.in-edit .input-container .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-password.in-edit .input-container input:focus+.label,.lite-password.in-edit .input-container input:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-password.in-edit .input-container .toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#666;display:flex;align-items:center;justify-content:center;transition:color .2s,background-color .2s}.lite-password.in-edit .input-container .toggle-button:hover{color:#2079e1;background-color:#f5f5f5}.lite-password.in-edit .input-container .toggle-button:focus{outline:2px solid #2079e1;outline-offset:2px}.lite-password.in-edit .input-container .toggle-button svg{width:16px;height:16px;stroke-width:1.5}.lite-password.in-edit .password-strength{margin-top:8px;padding:8px 0}.lite-password.in-edit .password-strength .strength-bar{width:100%;height:4px;background-color:#e0e0e0;border-radius:2px;overflow:hidden;margin-bottom:6px}.lite-password.in-edit .password-strength .strength-bar .strength-fill{height:100%;transition:width .3s ease,background-color .3s ease;border-radius:2px}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-very-weak{width:12.5%;background-color:#f44336}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-weak{width:25%;background-color:#ff9800}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-fair{width:50%;background-color:#ffeb3b}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-good{width:75%;background-color:#8bc34a}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-strong{width:100%;background-color:#4caf50}.lite-password.in-edit .password-strength .strength-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.lite-password.in-edit .password-strength .strength-info .strength-level{font-size:.85em;font-weight:600}.lite-password.in-edit .password-strength .strength-info .strength-level.level-very-weak{color:#f44336}.lite-password.in-edit .password-strength .strength-info .strength-level.level-weak,.lite-password.in-edit .password-strength .strength-info .strength-level.level-fair{color:#ff9800}.lite-password.in-edit .password-strength .strength-info .strength-level.level-good{color:#8bc34a}.lite-password.in-edit .password-strength .strength-info .strength-level.level-strong{color:#4caf50}.lite-password.in-edit .password-strength .strength-info .strength-score{font-size:.8em;color:#666}.lite-password.in-edit .password-strength .strength-feedback{font-size:.75em;color:#666;line-height:1.4}.lite-password.in-edit .password-strength .strength-feedback .feedback-tip{margin-bottom:2px}.lite-textarea{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-textarea .label{font-size:.8em;font-weight:500}.lite-textarea .value{min-height:1em;line-height:1em}.lite-textarea.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-textarea.in-edit textarea{border:1px solid #ccc;border-radius:4px;padding:5px 8px;font-size:1em;outline:none;line-height:40px}.lite-textarea.in-edit textarea:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-textarea.in-edit textarea:focus+.label,.lite-textarea.in-edit textarea:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-textarea.in-edit textarea.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-select{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-select .label{font-size:.8em;font-weight:500}.lite-select .value{min-height:1em;line-height:1em}.lite-select.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-select.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 2em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px}.lite-select.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-select.in-edit input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-select.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-select.in-edit .options{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:200px;overflow-y:auto;z-index:1000;overflow:hidden}.lite-select.in-edit .options .option{padding:8px;cursor:pointer}.lite-select.in-edit .options .option:hover{background-color:#f0f0f0}.lite-select.in-edit .options .option.selected{background-color:#e0e0e0}.lite-select.in-edit .arrow_box{position:absolute;right:0;top:0;cursor:pointer;height:100%;width:2em}.lite-select.in-edit .arrow_box .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #333;position:absolute;top:48%;left:.5em}.lite-select.in-edit .arrow_box .arrow:hover{border-top-color:#2079e1}.lite-multi-select{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-multi-select .label{font-size:.8em;font-weight:500}.lite-multi-select .value{display:flex;gap:5px;flex-wrap:wrap;min-height:1em;line-height:1em}.lite-multi-select .value .item{border:1px solid #999;padding:2px 5px;border-radius:3px;font-size:.8em;line-height:16px}.lite-multi-select.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-multi-select.in-edit .input-container{border:1px solid #ccc;border-radius:4px;background:#fff;outline:none;min-height:40px;padding:0 2em 0 8px;position:relative;transition:height .2s ease-in-out}.lite-multi-select.in-edit .input-container:focus-within{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-multi-select.in-edit .input-container.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-multi-select.in-edit .input-container .selected-items-inline{position:absolute;inset:0 2em 0 8px;display:flex;flex-wrap:wrap;gap:4px;padding:6px 0;align-content:flex-start;align-items:flex-start;pointer-events:none;z-index:3;overflow:hidden;height:fit-content}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline{display:inline-flex;align-items:center;border:1px solid #999;background:#fff;padding-left:5px;border-radius:3px;font-size:.8em;gap:4px;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:20px;pointer-events:auto}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline .remove-item-inline{background:none;border:none;font-size:1.2em;cursor:pointer;line-height:1;padding:0;margin-left:2px;color:#666;flex-shrink:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline .remove-item-inline:hover{color:#333}.lite-multi-select.in-edit .input-container .filter-input{border:none;outline:none;background:transparent;font-size:1em;width:100%;height:100%;min-height:40px;position:relative;z-index:2}.lite-multi-select.in-edit .input-container .filter-input::placeholder{color:#aaa}.lite-multi-select.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-multi-select.in-edit .options{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:250px;overflow-y:auto;z-index:1000;overflow:auto}.lite-multi-select.in-edit .options .multi-option{padding:6px 8px;cursor:pointer;display:flex;align-items:center;gap:8px}.lite-multi-select.in-edit .options .multi-option:hover{background-color:#f0f0f0}.lite-multi-select.in-edit .options .multi-option.selected{background-color:#e3f2fd}.lite-multi-select.in-edit .options .multi-option input[type=checkbox]{margin:0;cursor:pointer;accent-color:#2079e1;width:16px;height:16px;transform:scale(1.2)}.lite-multi-select.in-edit .options .multi-option .option-text{flex:1;-webkit-user-select:none;user-select:none;line-height:20px}.lite-multi-select.in-edit .options .no-options{padding:12px;text-align:center;color:#999;font-style:italic}.lite-multi-select.in-edit .arrow_box{position:absolute;right:4px;top:4px;cursor:pointer;height:calc(100% - 8px);width:2em;display:flex;align-items:center;justify-content:center}.lite-multi-select.in-edit .arrow_box .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #333}.lite-multi-select.in-edit .arrow_box .arrow:hover{border-top-color:#2079e1}.lite-radio{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-radio .label{font-size:.8em;font-weight:500}.lite-radio .value{display:flex;gap:5px;flex-wrap:wrap}.lite-radio .value .no-value{color:#999;font-style:italic}.lite-radio.in-edit .radio-container{position:relative}.lite-radio.in-edit .radio-container .label{font-size:1.1em;font-weight:500;padding:5px 0}.lite-radio.in-edit .radio-container .radio-options{display:flex;flex-direction:column;gap:10px;padding:5px 0}.lite-radio.in-edit .radio-container .radio-options .radio-option{display:flex;align-items:flex-start;gap:5px;cursor:pointer;line-height:20px}.lite-radio.in-edit .radio-container .radio-options .radio-option .radio-input{margin:0;cursor:pointer;accent-color:#2079e1;width:20px;height:20px}.lite-radio.in-edit .radio-container .radio-options .radio-option .radio-label{flex:1;-webkit-user-select:none;user-select:none;font-size:1em;color:#333}.lite-radio.in-edit .radio-container .radio-options .radio-option:hover .radio-label{color:#2079e1}.lite-radio.in-edit .radio-container .radio-options.vertical{flex-direction:column}.lite-radio.in-edit .radio-container .radio-options.horizontal{flex-direction:row;flex-wrap:wrap}.in-edit .error-messages{color:#ff4500;font-size:.8em;letter-spacing:.6px;line-height:1.8em;padding-left:10px}.in-edit .error-messages .error-message{margin-bottom:2px}.lite-checkbox{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-checkbox .label{font-size:.8em;font-weight:500}.lite-checkbox .value{display:flex;gap:5px;flex-wrap:wrap}.lite-checkbox .value .checked{color:#28a745;font-weight:500}.lite-checkbox .value .unchecked{color:#6c757d}.lite-checkbox.in-edit .checkbox-container{position:relative}.lite-checkbox.in-edit .checkbox-container .checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:1em;line-height:1.4;width:fit-content}.lite-checkbox.in-edit .checkbox-container .checkbox-label .checkbox-input{margin:0;cursor:pointer;accent-color:#2079e1;width:16px;height:16px;transform:scale(1.2)}.lite-checkbox.in-edit .checkbox-container .checkbox-label .checkbox-text{flex:1;-webkit-user-select:none;user-select:none;color:#333;font-weight:500}.lite-checkbox.in-edit .checkbox-container .checkbox-label .required{margin-left:4px}.lite-checkbox.in-edit .checkbox-container .checkbox-label:hover .checkbox-text{color:#2079e1}.lite-checkbox.invalid .checkbox-container .checkbox-label .checkbox-text{color:#dc3545}.lite-date{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-date .label{font-size:.8em;font-weight:500}.lite-date .value{display:flex;gap:5px;flex-wrap:wrap;color:#333;font-size:1em}.lite-date.in-edit{position:relative}.lite-date.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-date.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 2em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px;color-scheme:light}.lite-date.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-date.in-edit input:focus+.label,.lite-date.in-edit input:not([value=\"\"])+.label,.lite-date.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-date.in-edit .date-input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-date.in-edit .calendar_icon{position:absolute;right:0;top:0;cursor:pointer;height:100%;width:2.5em}.lite-date.in-edit .calendar_icon .calendar{width:16px;height:16px;color:#333;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lite-date.in-edit .calendar_icon .calendar:hover{color:#2079e1}.lite-date.in-edit .calendar-overlay{position:absolute;right:0;z-index:1000}.lite-date.in-edit .calendar-overlay.position-bottom{top:100%;margin-top:4px}.lite-date.in-edit .calendar-overlay.position-top{bottom:100%;margin-bottom:4px}.calendar-panel{background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:16px;width:280px;font-family:inherit}.calendar-panel.datetime{display:flex;width:100%;padding:0}.calendar-panel.datetime .control-header{width:100%;height:50px;display:flex;justify-content:flex-end}.calendar-panel.datetime .control-header .close-button{color:#999;cursor:pointer;border:none;background:none;width:30px;height:30px;padding:0}.calendar-panel.datetime .time-header{font-size:11px;font-weight:600;color:#333;border-bottom:1px solid #ccc;letter-spacing:.5px;line-height:20px}.calendar-panel.datetime .date-panel{width:280px;padding:20px 10px 20px 20px}.calendar-panel.datetime .time-panel{width:200px;padding:20px 20px 20px 10px}.calendar-panel.datetime .time-panel .hh-grid{display:flex;align-items:center;flex-wrap:wrap;margin:10px 0;gap:2px}.calendar-panel.datetime .time-panel .hh-slot{display:flex;width:30px;justify-content:center;line-height:24px;border-radius:4px;cursor:pointer;font-size:.8em;flex:0 0 calc(16.666% - 2px);border:1px solid #ddd;box-sizing:border-box}.calendar-panel.datetime .time-panel .hh-slot:hover{background-color:#f5f5f5}.calendar-panel.datetime .time-panel .hh-slot.selected{background-color:#2079e1;color:#fff}.calendar-panel.range-mode{width:580px}.calendar-panel .dual-calendar{display:flex;gap:20px}.calendar-panel .dual-calendar .calendar-month{flex:1}.calendar-panel .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.calendar-panel .calendar-header .month-year{font-weight:600;font-size:16px;color:#333}.calendar-panel .calendar-header .nav-button{background:none;border:none;font-size:20px;color:#666;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s,color .2s}.calendar-panel .calendar-header .nav-button:hover{background-color:#f5f5f5;color:#2079e1}.calendar-panel .calendar-header .nav-spacer{width:28px}.calendar-panel .calendar-grid .weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:8px}.calendar-panel .calendar-grid .weekdays .weekday{text-align:center;font-size:12px;font-weight:600;color:#666;padding:8px 4px}.calendar-panel .calendar-grid .calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-panel .calendar-grid .calendar-days .calendar-day{text-align:center;padding:8px 4px;cursor:pointer;border-radius:4px;font-size:14px;transition:background-color .2s,color .2s;position:relative}.calendar-panel .calendar-grid .calendar-days .calendar-day:hover{background-color:#f0f8ff}.calendar-panel .calendar-grid .calendar-days .calendar-day.today{background-color:#f8f8f8;font-weight:600;border:1px solid #ccc;border-radius:50%}.calendar-panel .calendar-grid .calendar-days .calendar-day.dim{opacity:.5;font-size:.9em}.calendar-panel .calendar-grid .calendar-days .calendar-day.selected{background-color:#2079e1;color:#fff;font-weight:600}.calendar-panel .calendar-grid .calendar-days .calendar-day.selected:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start{background-color:#2079e1;color:#fff;font-weight:600;border-top-right-radius:0;border-bottom-right-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-end{background-color:#2079e1;color:#fff;font-weight:600;border-top-left-radius:0;border-bottom-left-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-end:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.in-range{background-color:#e3f2fd;color:#1976d2;border-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.in-range:hover{background-color:#bbdefb}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start.range-end{border-radius:4px}.calendar-panel .calendar-grid .calendar-days .calendar-day.today.range-start,.calendar-panel .calendar-grid .calendar-days .calendar-day.today.range-end{background-color:#ff9800;border-color:#e65100}.calendar-panel .calendar-grid .calendar-days .calendar-day.today.in-range{background-color:#ffcc80;color:#e65100;font-weight:700}.lite-file{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-file .label{font-size:.8em;font-weight:500}.lite-file button{position:relative;background:none;border:none;width:30px;display:flex;justify-content:center;cursor:pointer;margin-top:10px}.lite-file button:hover{background:#e9ecef;border-color:#6c757d}.lite-file button.has-files{border-color:#28a745;background:#d4edda}.lite-file button img{width:24px;height:24px;stroke:currentColor}.lite-file button .file-badge{position:absolute;top:-8px;right:-8px;background:#2079e1;color:#fff;border-radius:50%;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:600}.lite-file.in-edit{position:relative;display:inline-block}.lite-file.in-edit .file-button{position:relative;background:none;border:none;padding:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.lite-file.in-edit .file-button:hover{background:#e9ecef;border-color:#6c757d}.lite-file.in-edit .file-button:focus{outline:2px solid #2079e1;outline-offset:2px}.lite-file.in-edit .file-button.has-files{border-color:#28a745;background:#d4edda}.lite-file.in-edit .file-button.has-errors{border-color:#dc3545;background:#f8d7da}.lite-file.in-edit .file-button:disabled{opacity:.6;cursor:not-allowed}.lite-file.in-edit .file-button .file-icon{width:24px;height:24px;stroke:currentColor}.lite-file.in-edit .file-button .file-badge{position:absolute;top:-8px;right:-8px;background:#2079e1;color:#fff;border-radius:50%;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:600}.panel-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:999;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none}.panel-overlay.visible{opacity:1;visibility:visible;pointer-events:auto}.file-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);min-width:400px;max-width:90vw;max-height:90vh;background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:1000;opacity:0;visibility:hidden;transition:all .2s;display:none;flex-direction:column;pointer-events:none;overflow:hidden}.file-panel.visible{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1);display:flex;pointer-events:auto}.file-panel .panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #dee2e6;background:#f8f9fa}.file-panel .panel-header h3{margin:0;font-size:1.1em;font-weight:600;color:#333}.file-panel .panel-header .close-button{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#6c757d;transition:all .2s}.file-panel .panel-header .close-button:hover{color:#dc3545;background:#f8d7da}.file-panel .panel-header .close-button svg{width:16px;height:16px}.file-panel .panel-content{padding:20px;overflow-y:auto;flex:1}.file-panel .panel-content .upload-area{border:2px dashed #dee2e6;border-radius:8px;padding:40px 20px;text-align:center;margin-bottom:20px;transition:all .2s;cursor:pointer;position:relative}.file-panel .panel-content .upload-area:hover,.file-panel .panel-content .upload-area.drag-over{border-color:#2079e1;background:#f0f8ff}.file-panel .panel-content .upload-area.uploading{border-color:#ffc107;background:#fff8e1}.file-panel .panel-content .upload-area .upload-content{pointer-events:none}.file-panel .panel-content .upload-area .upload-content .upload-icon{width:48px;height:48px;margin:0 auto 16px;stroke:#6c757d}.file-panel .panel-content .upload-area .upload-content p{margin:0 0 8px;font-size:1.1em;color:#333;font-weight:500}.file-panel .panel-content .upload-area .upload-content small{color:#6c757d;font-size:.9em}.file-panel .panel-content .action-buttons{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.file-panel .panel-content .action-buttons .action-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid #dee2e6;border-radius:6px;background:#fff;cursor:pointer;transition:all .2s ease;font-size:.9em;flex:1;min-width:120px;justify-content:center}.file-panel .panel-content .action-buttons .action-btn:hover{background:#f8f9fa;border-color:#6c757d}.file-panel .panel-content .action-buttons .action-btn.upload-btn:hover{background:#e7f3ff;border-color:#2079e1;color:#2079e1}.file-panel .panel-content .action-buttons .action-btn.camera-btn:hover{background:#e8f5e8;border-color:#28a745;color:#28a745}.file-panel .panel-content .action-buttons .action-btn.close-btn:hover{background:#f8d7da;border-color:#dc3545;color:#dc3545}.file-panel .panel-content .action-buttons .action-btn svg{width:16px;height:16px}.file-panel .panel-content .file-list .file-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid #dee2e6}.file-panel .panel-content .file-list .file-list-header span{font-weight:600;color:#333}.file-panel .panel-content .file-list .file-list-header .total-size{font-size:.9em;color:#6c757d;font-weight:400}.file-panel .panel-content .file-list .file-list-header .clear-all-btn{background:none;border:1px solid #dc3545;color:#dc3545;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:.8em;transition:all .2s ease}.file-panel .panel-content .file-list .file-list-header .clear-all-btn:hover{background:#dc3545;color:#fff}.file-panel .panel-content .file-list .file-items{max-height:300px;overflow-y:auto}.file-panel .panel-content .file-list .file-items .file-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #dee2e6;border-radius:6px;margin-bottom:8px;transition:all .2s ease;background:#fff}.file-panel .panel-content .file-list .file-items .file-item:hover{background:#f8f9fa}.file-panel .panel-content .file-list .file-items .file-item.has-error{border-color:#dc3545;background:#fff5f5}.file-panel .panel-content .file-list .file-items .file-item.uploading{background:#fff8e1;border-color:#ffc107}.file-panel .panel-content .file-list .file-items .file-item .file-preview{width:48px;height:48px;border-radius:4px;overflow:hidden;background:#f8f9fa;display:flex;align-items:center;justify-content:center;flex-shrink:0}.file-panel .panel-content .file-list .file-items .file-item .file-preview .preview-image{width:100%;height:100%;object-fit:cover}.file-panel .panel-content .file-list .file-items .file-item .file-preview .file-type-icon{font-size:24px}.file-panel .panel-content .file-list .file-items .file-item .file-info{flex:1;min-width:0}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-name{font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details{display:flex;gap:12px;margin-top:4px;font-size:.8em;color:#6c757d}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details .file-size,.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details .file-type{white-space:nowrap}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-error{color:#dc3545;font-size:.8em;margin-top:4px;font-weight:500}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress{display:flex;align-items:center;gap:8px;margin-top:8px}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-bar{flex:1;height:6px;background:#e9ecef;border-radius:3px;overflow:hidden}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-bar .progress-fill{height:100%;background:#2079e1;transition:width .3s ease}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-text{font-size:.8em;color:#6c757d;font-weight:500;min-width:32px}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn{background:none;border:1px solid #dc3545;color:#dc3545;padding:6px;border-radius:4px;cursor:pointer;transition:all .2s ease;flex-shrink:0}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn:hover:not(:disabled){background:#dc3545;color:#fff}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn:disabled{opacity:.5;cursor:not-allowed}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn svg{width:16px;height:16px}.file-panel .panel-content .empty-state{text-align:center;padding:40px 20px;color:#6c757d}.file-panel .panel-content .empty-state .empty-icon{width:64px;height:64px;margin:0 auto 16px;stroke:#dee2e6}.file-panel .panel-content .empty-state p{margin:0 0 8px;font-size:1.1em}.file-panel .panel-content .empty-state small{font-size:.9em}.lite-paginator{display:flex;align-items:center;gap:12px;padding:8px 0;flex-wrap:wrap;justify-content:center}.lite-paginator .paginator-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s ease;color:#666}.lite-paginator .paginator-btn:hover:not(:disabled){background:#f8f9fa;border-color:#2079e1;color:#2079e1}.lite-paginator .paginator-btn:disabled{opacity:.5;cursor:not-allowed}.lite-paginator .paginator-btn svg{width:16px;height:16px}.lite-paginator .page-numbers{display:flex;gap:4px;align-items:center}.lite-paginator .page-number{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s ease;font-size:.85em;color:#666}.lite-paginator .page-number:hover{background:#f8f9fa;border-color:#2079e1;color:#2079e1}.lite-paginator .page-number.active{background:#2079e1;border-color:#2079e1;color:#fff;font-weight:600}.lite-paginator .items-per-page{display:flex;align-items:center;gap:6px;font-size:.85em;color:#666}.lite-paginator .items-per-page .items-select{padding:4px 8px;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.85em;cursor:pointer;min-width:60px;color:#666}.lite-paginator .items-per-page .items-select:focus{outline:none;border-color:#2079e1;box-shadow:0 0 0 2px #2079e133}.lite-paginator .items-per-page .items-label{white-space:nowrap}.lite-paginator .total-info{font-size:.85em;color:#666}.lite-paginator .total-info .total-text{white-space:nowrap}.lite-table{width:100%;background:#fff}.lite-table .table-header{background:#f8f8f8;border-bottom:1px solid #dee2e6}.lite-table .table-header .header-row{display:flex}.lite-table .table-header .header-row .header-cell{padding:5px 10px;text-align:left;font-weight:600;color:#333;font-size:.9em;border-right:1px solid #dee2e6;min-height:36px;display:flex;align-items:center}.lite-table .table-header .header-row .header-cell:last-child{border-right:none}.lite-table .table-header .header-row .header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.lite-table .table-header .header-row .header-cell.sortable:hover{background:#e9ecef}.lite-table .table-body .data-row{display:flex;border-bottom:1px solid #dee2e6;transition:background-color .2s ease}.lite-table .table-body .data-row:hover{background:#f8f9fa}.lite-table .table-body .data-row:last-child{border-bottom:none}.lite-table .table-body .data-row .data-cell{padding:5px 10px;border-right:1px solid #dee2e6;font-size:.9em;color:#333;min-height:36px;display:flex;align-items:center}.lite-table .table-body .data-row .data-cell:last-child{border-right:none}.lite-table .table-body .empty-row{display:flex;border-bottom:1px solid #dee2e6}.lite-table .table-body .empty-row .empty-cell{padding:40px 16px;text-align:center;color:#6c757d;font-style:italic;font-size:.9em}.lite-table .table-paginator{margin-top:16px;display:flex;justify-content:center}\n"] }]
|
|
2137
2137
|
}] });
|
|
2138
2138
|
|
|
2139
|
+
let panelIdCounter = 0;
|
|
2140
|
+
class LitePanel {
|
|
2141
|
+
title = input(null, ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
2142
|
+
content = input(null, ...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
2143
|
+
actions = input(null, ...(ngDevMode ? [{ debugName: "actions" }] : []));
|
|
2144
|
+
closeOnOverlayClick = input(true, ...(ngDevMode ? [{ debugName: "closeOnOverlayClick" }] : []));
|
|
2145
|
+
width = input(null, ...(ngDevMode ? [{ debugName: "width" }] : []));
|
|
2146
|
+
height = input(null, ...(ngDevMode ? [{ debugName: "height" }] : []));
|
|
2147
|
+
maxWidth = input(null, ...(ngDevMode ? [{ debugName: "maxWidth" }] : []));
|
|
2148
|
+
maxHeight = input(null, ...(ngDevMode ? [{ debugName: "maxHeight" }] : []));
|
|
2149
|
+
closed = output();
|
|
2150
|
+
panelTitleId = `lite-panel-title-${++panelIdCounter}`;
|
|
2151
|
+
defaultActions = [{ label: 'OK', value: null, variant: 'primary' }];
|
|
2152
|
+
resolvedActions = computed(() => {
|
|
2153
|
+
const provided = this.actions();
|
|
2154
|
+
return provided && provided.length ? provided : this.defaultActions;
|
|
2155
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedActions" }] : []));
|
|
2156
|
+
contentTemplate = computed(() => {
|
|
2157
|
+
const value = this.content();
|
|
2158
|
+
return value instanceof TemplateRef ? value : null;
|
|
2159
|
+
}, ...(ngDevMode ? [{ debugName: "contentTemplate" }] : []));
|
|
2160
|
+
contentText = computed(() => {
|
|
2161
|
+
const value = this.content();
|
|
2162
|
+
return typeof value === 'string' ? value : null;
|
|
2163
|
+
}, ...(ngDevMode ? [{ debugName: "contentText" }] : []));
|
|
2164
|
+
templateContext = {
|
|
2165
|
+
panel: this,
|
|
2166
|
+
close: (value) => this.close(value ?? null)
|
|
2167
|
+
};
|
|
2168
|
+
panelStyles = computed(() => {
|
|
2169
|
+
const styles = {};
|
|
2170
|
+
const candidates = [
|
|
2171
|
+
['width', this.width()],
|
|
2172
|
+
['height', this.height()],
|
|
2173
|
+
['max-width', this.maxWidth()],
|
|
2174
|
+
['max-height', this.maxHeight()]
|
|
2175
|
+
];
|
|
2176
|
+
for (const [prop, value] of candidates) {
|
|
2177
|
+
if (!this.isNilOrEmpty(value)) {
|
|
2178
|
+
styles[prop] = this.toCssLength(value);
|
|
2179
|
+
}
|
|
2180
|
+
}
|
|
2181
|
+
return styles;
|
|
2182
|
+
}, ...(ngDevMode ? [{ debugName: "panelStyles" }] : []));
|
|
2183
|
+
close(value = null) {
|
|
2184
|
+
this.closed.emit(value ?? null);
|
|
2185
|
+
}
|
|
2186
|
+
onBackdropClick() {
|
|
2187
|
+
if (this.closeOnOverlayClick()) {
|
|
2188
|
+
this.close(null);
|
|
2189
|
+
}
|
|
2190
|
+
}
|
|
2191
|
+
onAction(action) {
|
|
2192
|
+
const emitted = Object.prototype.hasOwnProperty.call(action, 'value') ? action.value : null;
|
|
2193
|
+
this.close(emitted);
|
|
2194
|
+
}
|
|
2195
|
+
getActionClasses(action) {
|
|
2196
|
+
return {
|
|
2197
|
+
'lite-panel__action': true,
|
|
2198
|
+
[`lite-panel__action--${action.variant}`]: !!action.variant
|
|
2199
|
+
};
|
|
2200
|
+
}
|
|
2201
|
+
toCssLength(value) {
|
|
2202
|
+
if (typeof value === 'number') {
|
|
2203
|
+
return `${value}px`;
|
|
2204
|
+
}
|
|
2205
|
+
return value.trim();
|
|
2206
|
+
}
|
|
2207
|
+
isNilOrEmpty(value) {
|
|
2208
|
+
if (value === null || value === undefined) {
|
|
2209
|
+
return true;
|
|
2210
|
+
}
|
|
2211
|
+
if (typeof value === 'string' && value.trim() === '') {
|
|
2212
|
+
return true;
|
|
2213
|
+
}
|
|
2214
|
+
return false;
|
|
2215
|
+
}
|
|
2216
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: LitePanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2217
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: LitePanel, isStandalone: true, selector: "lite-panel", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, closeOnOverlayClick: { classPropertyName: "closeOnOverlayClick", publicName: "closeOnOverlayClick", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"lite-panel__backdrop\" (click)=\"onBackdropClick()\"></div>\n\n<div\n class=\"lite-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [ngStyle]=\"panelStyles()\"\n [attr.aria-labelledby]=\"title() ? panelTitleId : null\">\n @if (title()) {\n <header class=\"lite-panel__header\">\n <h2 class=\"lite-panel__title\" [id]=\"panelTitleId\">{{ title() }}</h2>\n <button type=\"button\" class=\"lite-panel__close\" (click)=\"close(null)\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </header>\n }\n\n <section class=\"lite-panel__content\">\n @if (contentTemplate()) {\n <ng-container *ngTemplateOutlet=\"contentTemplate(); context: templateContext\"></ng-container>\n } @else if (contentText()) {\n <p class=\"lite-panel__content-text\">{{ contentText() }}</p>\n } @else {\n <ng-content></ng-content>\n }\n </section>\n\n <footer class=\"lite-panel__actions\">\n @for (action of resolvedActions(); track action) {\n <button\n type=\"button\"\n [ngClass]=\"getActionClasses(action)\"\n (click)=\"onAction(action)\"\n >\n {{ action.label }}\n </button>\n }\n </footer>\n</div>\n", styles: ["*{box-sizing:border-box}input,.label,textarea{font-size:1em;color:#333}.lite-input{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-input .label{font-size:.8em;font-weight:500}.lite-input .value{min-height:1em;line-height:1em}.lite-input.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-input.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 8px;font-size:1em;outline:none;line-height:40px;height:40px}.lite-input.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-input.in-edit input:focus+.label,.lite-input.in-edit input:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-input.in-edit input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 2px 1px #dc354540}.lite-password{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-password .label{font-size:.8em;font-weight:500}.lite-password .value{min-height:1em;line-height:1em}.lite-password.in-edit .input-container{position:relative;display:flex;align-items:center}.lite-password.in-edit .input-container input{border:1px solid #ccc;border-radius:4px;padding:0 2.5em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px;width:100%}.lite-password.in-edit .input-container input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-password.in-edit .input-container input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-password.in-edit .input-container .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-password.in-edit .input-container input:focus+.label,.lite-password.in-edit .input-container input:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-password.in-edit .input-container .toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#666;display:flex;align-items:center;justify-content:center;transition:color .2s,background-color .2s}.lite-password.in-edit .input-container .toggle-button:hover{color:#2079e1;background-color:#f5f5f5}.lite-password.in-edit .input-container .toggle-button:focus{outline:2px solid #2079e1;outline-offset:2px}.lite-password.in-edit .input-container .toggle-button svg{width:16px;height:16px;stroke-width:1.5}.lite-password.in-edit .password-strength{margin-top:8px;padding:8px 0}.lite-password.in-edit .password-strength .strength-bar{width:100%;height:4px;background-color:#e0e0e0;border-radius:2px;overflow:hidden;margin-bottom:6px}.lite-password.in-edit .password-strength .strength-bar .strength-fill{height:100%;transition:width .3s ease,background-color .3s ease;border-radius:2px}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-very-weak{width:12.5%;background-color:#f44336}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-weak{width:25%;background-color:#ff9800}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-fair{width:50%;background-color:#ffeb3b}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-good{width:75%;background-color:#8bc34a}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-strong{width:100%;background-color:#4caf50}.lite-password.in-edit .password-strength .strength-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.lite-password.in-edit .password-strength .strength-info .strength-level{font-size:.85em;font-weight:600}.lite-password.in-edit .password-strength .strength-info .strength-level.level-very-weak{color:#f44336}.lite-password.in-edit .password-strength .strength-info .strength-level.level-weak,.lite-password.in-edit .password-strength .strength-info .strength-level.level-fair{color:#ff9800}.lite-password.in-edit .password-strength .strength-info .strength-level.level-good{color:#8bc34a}.lite-password.in-edit .password-strength .strength-info .strength-level.level-strong{color:#4caf50}.lite-password.in-edit .password-strength .strength-info .strength-score{font-size:.8em;color:#666}.lite-password.in-edit .password-strength .strength-feedback{font-size:.75em;color:#666;line-height:1.4}.lite-password.in-edit .password-strength .strength-feedback .feedback-tip{margin-bottom:2px}.lite-textarea{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-textarea .label{font-size:.8em;font-weight:500}.lite-textarea .value{min-height:1em;line-height:1em}.lite-textarea.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-textarea.in-edit textarea{border:1px solid #ccc;border-radius:4px;padding:5px 8px;font-size:1em;outline:none;line-height:40px}.lite-textarea.in-edit textarea:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-textarea.in-edit textarea:focus+.label,.lite-textarea.in-edit textarea:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-textarea.in-edit textarea.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-select{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-select .label{font-size:.8em;font-weight:500}.lite-select .value{min-height:1em;line-height:1em}.lite-select.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-select.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 2em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px}.lite-select.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-select.in-edit input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-select.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-select.in-edit .options{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:200px;overflow-y:auto;z-index:1000;overflow:hidden}.lite-select.in-edit .options .option{padding:8px;cursor:pointer}.lite-select.in-edit .options .option:hover{background-color:#f0f0f0}.lite-select.in-edit .options .option.selected{background-color:#e0e0e0}.lite-select.in-edit .arrow_box{position:absolute;right:0;top:0;cursor:pointer;height:100%;width:2em}.lite-select.in-edit .arrow_box .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #333;position:absolute;top:48%;left:.5em}.lite-select.in-edit .arrow_box .arrow:hover{border-top-color:#2079e1}.lite-multi-select{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-multi-select .label{font-size:.8em;font-weight:500}.lite-multi-select .value{display:flex;gap:5px;flex-wrap:wrap;min-height:1em;line-height:1em}.lite-multi-select .value .item{border:1px solid #999;padding:2px 5px;border-radius:3px;font-size:.8em;line-height:16px}.lite-multi-select.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-multi-select.in-edit .input-container{border:1px solid #ccc;border-radius:4px;background:#fff;outline:none;min-height:40px;padding:0 2em 0 8px;position:relative;transition:height .2s ease-in-out}.lite-multi-select.in-edit .input-container:focus-within{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-multi-select.in-edit .input-container.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-multi-select.in-edit .input-container .selected-items-inline{position:absolute;inset:0 2em 0 8px;display:flex;flex-wrap:wrap;gap:4px;padding:6px 0;align-content:flex-start;align-items:flex-start;pointer-events:none;z-index:3;overflow:hidden;height:fit-content}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline{display:inline-flex;align-items:center;border:1px solid #999;background:#fff;padding-left:5px;border-radius:3px;font-size:.8em;gap:4px;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:20px;pointer-events:auto}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline .remove-item-inline{background:none;border:none;font-size:1.2em;cursor:pointer;line-height:1;padding:0;margin-left:2px;color:#666;flex-shrink:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline .remove-item-inline:hover{color:#333}.lite-multi-select.in-edit .input-container .filter-input{border:none;outline:none;background:transparent;font-size:1em;width:100%;height:100%;min-height:40px;position:relative;z-index:2}.lite-multi-select.in-edit .input-container .filter-input::placeholder{color:#aaa}.lite-multi-select.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-multi-select.in-edit .options{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:250px;overflow-y:auto;z-index:1000;overflow:auto}.lite-multi-select.in-edit .options .multi-option{padding:6px 8px;cursor:pointer;display:flex;align-items:center;gap:8px}.lite-multi-select.in-edit .options .multi-option:hover{background-color:#f0f0f0}.lite-multi-select.in-edit .options .multi-option.selected{background-color:#e3f2fd}.lite-multi-select.in-edit .options .multi-option input[type=checkbox]{margin:0;cursor:pointer;accent-color:#2079e1;width:16px;height:16px;transform:scale(1.2)}.lite-multi-select.in-edit .options .multi-option .option-text{flex:1;-webkit-user-select:none;user-select:none;line-height:20px}.lite-multi-select.in-edit .options .no-options{padding:12px;text-align:center;color:#999;font-style:italic}.lite-multi-select.in-edit .arrow_box{position:absolute;right:4px;top:4px;cursor:pointer;height:calc(100% - 8px);width:2em;display:flex;align-items:center;justify-content:center}.lite-multi-select.in-edit .arrow_box .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #333}.lite-multi-select.in-edit .arrow_box .arrow:hover{border-top-color:#2079e1}.lite-radio{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-radio .label{font-size:.8em;font-weight:500}.lite-radio .value{display:flex;gap:5px;flex-wrap:wrap}.lite-radio .value .no-value{color:#999;font-style:italic}.lite-radio.in-edit .radio-container{position:relative}.lite-radio.in-edit .radio-container .label{font-size:1.1em;font-weight:500;padding:5px 0}.lite-radio.in-edit .radio-container .radio-options{display:flex;flex-direction:column;gap:10px;padding:5px 0}.lite-radio.in-edit .radio-container .radio-options .radio-option{display:flex;align-items:flex-start;gap:5px;cursor:pointer;line-height:20px}.lite-radio.in-edit .radio-container .radio-options .radio-option .radio-input{margin:0;cursor:pointer;accent-color:#2079e1;width:20px;height:20px}.lite-radio.in-edit .radio-container .radio-options .radio-option .radio-label{flex:1;-webkit-user-select:none;user-select:none;font-size:1em;color:#333}.lite-radio.in-edit .radio-container .radio-options .radio-option:hover .radio-label{color:#2079e1}.lite-radio.in-edit .radio-container .radio-options.vertical{flex-direction:column}.lite-radio.in-edit .radio-container .radio-options.horizontal{flex-direction:row;flex-wrap:wrap}.in-edit .error-messages{color:#ff4500;font-size:.8em;letter-spacing:.6px;line-height:1.8em;padding-left:10px}.in-edit .error-messages .error-message{margin-bottom:2px}.lite-checkbox{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-checkbox .label{font-size:.8em;font-weight:500}.lite-checkbox .value{display:flex;gap:5px;flex-wrap:wrap}.lite-checkbox .value .checked{color:#28a745;font-weight:500}.lite-checkbox .value .unchecked{color:#6c757d}.lite-checkbox.in-edit .checkbox-container{position:relative}.lite-checkbox.in-edit .checkbox-container .checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:1em;line-height:1.4;width:fit-content}.lite-checkbox.in-edit .checkbox-container .checkbox-label .checkbox-input{margin:0;cursor:pointer;accent-color:#2079e1;width:16px;height:16px;transform:scale(1.2)}.lite-checkbox.in-edit .checkbox-container .checkbox-label .checkbox-text{flex:1;-webkit-user-select:none;user-select:none;color:#333;font-weight:500}.lite-checkbox.in-edit .checkbox-container .checkbox-label .required{margin-left:4px}.lite-checkbox.in-edit .checkbox-container .checkbox-label:hover .checkbox-text{color:#2079e1}.lite-checkbox.invalid .checkbox-container .checkbox-label .checkbox-text{color:#dc3545}.lite-date{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-date .label{font-size:.8em;font-weight:500}.lite-date .value{display:flex;gap:5px;flex-wrap:wrap;color:#333;font-size:1em}.lite-date.in-edit{position:relative}.lite-date.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-date.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 2em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px;color-scheme:light}.lite-date.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-date.in-edit input:focus+.label,.lite-date.in-edit input:not([value=\"\"])+.label,.lite-date.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-date.in-edit .date-input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-date.in-edit .calendar_icon{position:absolute;right:0;top:0;cursor:pointer;height:100%;width:2.5em}.lite-date.in-edit .calendar_icon .calendar{width:16px;height:16px;color:#333;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lite-date.in-edit .calendar_icon .calendar:hover{color:#2079e1}.lite-date.in-edit .calendar-overlay{position:absolute;right:0;z-index:1000}.lite-date.in-edit .calendar-overlay.position-bottom{top:100%;margin-top:4px}.lite-date.in-edit .calendar-overlay.position-top{bottom:100%;margin-bottom:4px}.calendar-panel{background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:16px;width:280px;font-family:inherit}.calendar-panel.datetime{display:flex;width:100%;padding:0}.calendar-panel.datetime .control-header{width:100%;height:50px;display:flex;justify-content:flex-end}.calendar-panel.datetime .control-header .close-button{color:#999;cursor:pointer;border:none;background:none;width:30px;height:30px;padding:0}.calendar-panel.datetime .time-header{font-size:11px;font-weight:600;color:#333;border-bottom:1px solid #ccc;letter-spacing:.5px;line-height:20px}.calendar-panel.datetime .date-panel{width:280px;padding:20px 10px 20px 20px}.calendar-panel.datetime .time-panel{width:200px;padding:20px 20px 20px 10px}.calendar-panel.datetime .time-panel .hh-grid{display:flex;align-items:center;flex-wrap:wrap;margin:10px 0;gap:2px}.calendar-panel.datetime .time-panel .hh-slot{display:flex;width:30px;justify-content:center;line-height:24px;border-radius:4px;cursor:pointer;font-size:.8em;flex:0 0 calc(16.666% - 2px);border:1px solid #ddd;box-sizing:border-box}.calendar-panel.datetime .time-panel .hh-slot:hover{background-color:#f5f5f5}.calendar-panel.datetime .time-panel .hh-slot.selected{background-color:#2079e1;color:#fff}.calendar-panel.range-mode{width:580px}.calendar-panel .dual-calendar{display:flex;gap:20px}.calendar-panel .dual-calendar .calendar-month{flex:1}.calendar-panel .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.calendar-panel .calendar-header .month-year{font-weight:600;font-size:16px;color:#333}.calendar-panel .calendar-header .nav-button{background:none;border:none;font-size:20px;color:#666;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s,color .2s}.calendar-panel .calendar-header .nav-button:hover{background-color:#f5f5f5;color:#2079e1}.calendar-panel .calendar-header .nav-spacer{width:28px}.calendar-panel .calendar-grid .weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:8px}.calendar-panel .calendar-grid .weekdays .weekday{text-align:center;font-size:12px;font-weight:600;color:#666;padding:8px 4px}.calendar-panel .calendar-grid .calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-panel .calendar-grid .calendar-days .calendar-day{text-align:center;padding:8px 4px;cursor:pointer;border-radius:4px;font-size:14px;transition:background-color .2s,color .2s;position:relative}.calendar-panel .calendar-grid .calendar-days .calendar-day:hover{background-color:#f0f8ff}.calendar-panel .calendar-grid .calendar-days .calendar-day.today{background-color:#f8f8f8;font-weight:600;border:1px solid #ccc;border-radius:50%}.calendar-panel .calendar-grid .calendar-days .calendar-day.dim{opacity:.5;font-size:.9em}.calendar-panel .calendar-grid .calendar-days .calendar-day.selected{background-color:#2079e1;color:#fff;font-weight:600}.calendar-panel .calendar-grid .calendar-days .calendar-day.selected:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start{background-color:#2079e1;color:#fff;font-weight:600;border-top-right-radius:0;border-bottom-right-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-end{background-color:#2079e1;color:#fff;font-weight:600;border-top-left-radius:0;border-bottom-left-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-end:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.in-range{background-color:#e3f2fd;color:#1976d2;border-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.in-range:hover{background-color:#bbdefb}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start.range-end{border-radius:4px}.calendar-panel .calendar-grid .calendar-days .calendar-day.today.range-start,.calendar-panel .calendar-grid .calendar-days .calendar-day.today.range-end{background-color:#ff9800;border-color:#e65100}.calendar-panel .calendar-grid .calendar-days .calendar-day.today.in-range{background-color:#ffcc80;color:#e65100;font-weight:700}.lite-file{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-file .label{font-size:.8em;font-weight:500}.lite-file button{position:relative;background:none;border:none;width:30px;display:flex;justify-content:center;cursor:pointer;margin-top:10px}.lite-file button:hover{background:#e9ecef;border-color:#6c757d}.lite-file button.has-files{border-color:#28a745;background:#d4edda}.lite-file button img{width:24px;height:24px;stroke:currentColor}.lite-file button .file-badge{position:absolute;top:-8px;right:-8px;background:#2079e1;color:#fff;border-radius:50%;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:600}.lite-file.in-edit{position:relative;display:inline-block}.lite-file.in-edit .file-button{position:relative;background:none;border:none;padding:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.lite-file.in-edit .file-button:hover{background:#e9ecef;border-color:#6c757d}.lite-file.in-edit .file-button:focus{outline:2px solid #2079e1;outline-offset:2px}.lite-file.in-edit .file-button.has-files{border-color:#28a745;background:#d4edda}.lite-file.in-edit .file-button.has-errors{border-color:#dc3545;background:#f8d7da}.lite-file.in-edit .file-button:disabled{opacity:.6;cursor:not-allowed}.lite-file.in-edit .file-button .file-icon{width:24px;height:24px;stroke:currentColor}.lite-file.in-edit .file-button .file-badge{position:absolute;top:-8px;right:-8px;background:#2079e1;color:#fff;border-radius:50%;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:600}.panel-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:999;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none}.panel-overlay.visible{opacity:1;visibility:visible;pointer-events:auto}.file-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);min-width:400px;max-width:90vw;max-height:90vh;background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:1000;opacity:0;visibility:hidden;transition:all .2s;display:none;flex-direction:column;pointer-events:none;overflow:hidden}.file-panel.visible{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1);display:flex;pointer-events:auto}.file-panel .panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #dee2e6;background:#f8f9fa}.file-panel .panel-header h3{margin:0;font-size:1.1em;font-weight:600;color:#333}.file-panel .panel-header .close-button{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#6c757d;transition:all .2s}.file-panel .panel-header .close-button:hover{color:#dc3545;background:#f8d7da}.file-panel .panel-header .close-button svg{width:16px;height:16px}.file-panel .panel-content{padding:20px;overflow-y:auto;flex:1}.file-panel .panel-content .upload-area{border:2px dashed #dee2e6;border-radius:8px;padding:40px 20px;text-align:center;margin-bottom:20px;transition:all .2s;cursor:pointer;position:relative}.file-panel .panel-content .upload-area:hover,.file-panel .panel-content .upload-area.drag-over{border-color:#2079e1;background:#f0f8ff}.file-panel .panel-content .upload-area.uploading{border-color:#ffc107;background:#fff8e1}.file-panel .panel-content .upload-area .upload-content{pointer-events:none}.file-panel .panel-content .upload-area .upload-content .upload-icon{width:48px;height:48px;margin:0 auto 16px;stroke:#6c757d}.file-panel .panel-content .upload-area .upload-content p{margin:0 0 8px;font-size:1.1em;color:#333;font-weight:500}.file-panel .panel-content .upload-area .upload-content small{color:#6c757d;font-size:.9em}.file-panel .panel-content .action-buttons{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.file-panel .panel-content .action-buttons .action-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid #dee2e6;border-radius:6px;background:#fff;cursor:pointer;transition:all .2s ease;font-size:.9em;flex:1;min-width:120px;justify-content:center}.file-panel .panel-content .action-buttons .action-btn:hover{background:#f8f9fa;border-color:#6c757d}.file-panel .panel-content .action-buttons .action-btn.upload-btn:hover{background:#e7f3ff;border-color:#2079e1;color:#2079e1}.file-panel .panel-content .action-buttons .action-btn.camera-btn:hover{background:#e8f5e8;border-color:#28a745;color:#28a745}.file-panel .panel-content .action-buttons .action-btn.close-btn:hover{background:#f8d7da;border-color:#dc3545;color:#dc3545}.file-panel .panel-content .action-buttons .action-btn svg{width:16px;height:16px}.file-panel .panel-content .file-list .file-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid #dee2e6}.file-panel .panel-content .file-list .file-list-header span{font-weight:600;color:#333}.file-panel .panel-content .file-list .file-list-header .total-size{font-size:.9em;color:#6c757d;font-weight:400}.file-panel .panel-content .file-list .file-list-header .clear-all-btn{background:none;border:1px solid #dc3545;color:#dc3545;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:.8em;transition:all .2s ease}.file-panel .panel-content .file-list .file-list-header .clear-all-btn:hover{background:#dc3545;color:#fff}.file-panel .panel-content .file-list .file-items{max-height:300px;overflow-y:auto}.file-panel .panel-content .file-list .file-items .file-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #dee2e6;border-radius:6px;margin-bottom:8px;transition:all .2s ease;background:#fff}.file-panel .panel-content .file-list .file-items .file-item:hover{background:#f8f9fa}.file-panel .panel-content .file-list .file-items .file-item.has-error{border-color:#dc3545;background:#fff5f5}.file-panel .panel-content .file-list .file-items .file-item.uploading{background:#fff8e1;border-color:#ffc107}.file-panel .panel-content .file-list .file-items .file-item .file-preview{width:48px;height:48px;border-radius:4px;overflow:hidden;background:#f8f9fa;display:flex;align-items:center;justify-content:center;flex-shrink:0}.file-panel .panel-content .file-list .file-items .file-item .file-preview .preview-image{width:100%;height:100%;object-fit:cover}.file-panel .panel-content .file-list .file-items .file-item .file-preview .file-type-icon{font-size:24px}.file-panel .panel-content .file-list .file-items .file-item .file-info{flex:1;min-width:0}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-name{font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details{display:flex;gap:12px;margin-top:4px;font-size:.8em;color:#6c757d}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details .file-size,.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details .file-type{white-space:nowrap}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-error{color:#dc3545;font-size:.8em;margin-top:4px;font-weight:500}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress{display:flex;align-items:center;gap:8px;margin-top:8px}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-bar{flex:1;height:6px;background:#e9ecef;border-radius:3px;overflow:hidden}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-bar .progress-fill{height:100%;background:#2079e1;transition:width .3s ease}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-text{font-size:.8em;color:#6c757d;font-weight:500;min-width:32px}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn{background:none;border:1px solid #dc3545;color:#dc3545;padding:6px;border-radius:4px;cursor:pointer;transition:all .2s ease;flex-shrink:0}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn:hover:not(:disabled){background:#dc3545;color:#fff}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn:disabled{opacity:.5;cursor:not-allowed}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn svg{width:16px;height:16px}.file-panel .panel-content .empty-state{text-align:center;padding:40px 20px;color:#6c757d}.file-panel .panel-content .empty-state .empty-icon{width:64px;height:64px;margin:0 auto 16px;stroke:#dee2e6}.file-panel .panel-content .empty-state p{margin:0 0 8px;font-size:1.1em}.file-panel .panel-content .empty-state small{font-size:.9em}.lite-paginator{display:flex;align-items:center;gap:12px;padding:8px 0;flex-wrap:wrap;justify-content:center}.lite-paginator .paginator-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s ease;color:#666}.lite-paginator .paginator-btn:hover:not(:disabled){background:#f8f9fa;border-color:#2079e1;color:#2079e1}.lite-paginator .paginator-btn:disabled{opacity:.5;cursor:not-allowed}.lite-paginator .paginator-btn svg{width:16px;height:16px}.lite-paginator .page-numbers{display:flex;gap:4px;align-items:center}.lite-paginator .page-number{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s ease;font-size:.85em;color:#666}.lite-paginator .page-number:hover{background:#f8f9fa;border-color:#2079e1;color:#2079e1}.lite-paginator .page-number.active{background:#2079e1;border-color:#2079e1;color:#fff;font-weight:600}.lite-paginator .items-per-page{display:flex;align-items:center;gap:6px;font-size:.85em;color:#666}.lite-paginator .items-per-page .items-select{padding:4px 8px;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.85em;cursor:pointer;min-width:60px;color:#666}.lite-paginator .items-per-page .items-select:focus{outline:none;border-color:#2079e1;box-shadow:0 0 0 2px #2079e133}.lite-paginator .items-per-page .items-label{white-space:nowrap}.lite-paginator .total-info{font-size:.85em;color:#666}.lite-paginator .total-info .total-text{white-space:nowrap}.lite-table{width:100%;background:#fff}.lite-table .table-header{background:#f8f8f8;border-bottom:1px solid #dee2e6}.lite-table .table-header .header-row{display:flex}.lite-table .table-header .header-row .header-cell{padding:5px 10px;text-align:left;font-weight:600;color:#333;font-size:.9em;border-right:1px solid #dee2e6;min-height:36px;display:flex;align-items:center}.lite-table .table-header .header-row .header-cell:last-child{border-right:none}.lite-table .table-header .header-row .header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.lite-table .table-header .header-row .header-cell.sortable:hover{background:#e9ecef}.lite-table .table-body .data-row{display:flex;border-bottom:1px solid #dee2e6;transition:background-color .2s ease}.lite-table .table-body .data-row:hover{background:#f8f9fa}.lite-table .table-body .data-row:last-child{border-bottom:none}.lite-table .table-body .data-row .data-cell{padding:5px 10px;border-right:1px solid #dee2e6;font-size:.9em;color:#333;min-height:36px;display:flex;align-items:center}.lite-table .table-body .data-row .data-cell:last-child{border-right:none}.lite-table .table-body .empty-row{display:flex;border-bottom:1px solid #dee2e6}.lite-table .table-body .empty-row .empty-cell{padding:40px 16px;text-align:center;color:#6c757d;font-style:italic;font-size:.9em}.lite-table .table-paginator{margin-top:16px;display:flex;justify-content:center}\n", ".lite-panel__backdrop{position:fixed;inset:0;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:998}.lite-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;min-width:320px;max-width:min(90vw,600px);max-height:min(90vh,600px);display:flex;flex-direction:column;border-radius:12px;box-shadow:0 12px 32px #00000040;overflow:hidden;z-index:999}.lite-panel__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.08)}.lite-panel__title{margin:0;font-size:1.4rem;font-weight:600}.lite-panel__close{padding:.25rem .5rem;border:none;background:transparent;font-size:1.5rem;line-height:1;cursor:pointer;color:inherit}.lite-panel__content{padding:1.5rem;overflow:auto;flex:1 1 auto}.lite-panel__content-text{margin:0}.lite-panel__actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid rgba(0,0,0,.08)}.lite-panel__action{min-width:96px;padding:.5rem 1rem;border-radius:6px;border:1px solid transparent;font-weight:500;background:#f5f5f5;color:#333;cursor:pointer;transition:background-color .2s ease,color .2s ease}.lite-panel__action:hover{background:#e0e0e0}.lite-panel__action--primary{background:#0052cc;color:#fff}.lite-panel__action--primary:hover{background:#003d99}.lite-panel__action--secondary{background:#fff;border-color:#0003}.lite-panel__action--secondary:hover{background:#0000000d}.lite-panel__action--danger{background:#d32f2f;color:#fff}.lite-panel__action--danger:hover{background:#b71c1c}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
2218
|
+
}
|
|
2219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: LitePanel, decorators: [{
|
|
2220
|
+
type: Component,
|
|
2221
|
+
args: [{ standalone: true, selector: 'lite-panel', imports: [CommonModule], template: "<div class=\"lite-panel__backdrop\" (click)=\"onBackdropClick()\"></div>\n\n<div\n class=\"lite-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [ngStyle]=\"panelStyles()\"\n [attr.aria-labelledby]=\"title() ? panelTitleId : null\">\n @if (title()) {\n <header class=\"lite-panel__header\">\n <h2 class=\"lite-panel__title\" [id]=\"panelTitleId\">{{ title() }}</h2>\n <button type=\"button\" class=\"lite-panel__close\" (click)=\"close(null)\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </header>\n }\n\n <section class=\"lite-panel__content\">\n @if (contentTemplate()) {\n <ng-container *ngTemplateOutlet=\"contentTemplate(); context: templateContext\"></ng-container>\n } @else if (contentText()) {\n <p class=\"lite-panel__content-text\">{{ contentText() }}</p>\n } @else {\n <ng-content></ng-content>\n }\n </section>\n\n <footer class=\"lite-panel__actions\">\n @for (action of resolvedActions(); track action) {\n <button\n type=\"button\"\n [ngClass]=\"getActionClasses(action)\"\n (click)=\"onAction(action)\"\n >\n {{ action.label }}\n </button>\n }\n </footer>\n</div>\n", styles: ["*{box-sizing:border-box}input,.label,textarea{font-size:1em;color:#333}.lite-input{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-input .label{font-size:.8em;font-weight:500}.lite-input .value{min-height:1em;line-height:1em}.lite-input.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-input.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 8px;font-size:1em;outline:none;line-height:40px;height:40px}.lite-input.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-input.in-edit input:focus+.label,.lite-input.in-edit input:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-input.in-edit input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 2px 1px #dc354540}.lite-password{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-password .label{font-size:.8em;font-weight:500}.lite-password .value{min-height:1em;line-height:1em}.lite-password.in-edit .input-container{position:relative;display:flex;align-items:center}.lite-password.in-edit .input-container input{border:1px solid #ccc;border-radius:4px;padding:0 2.5em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px;width:100%}.lite-password.in-edit .input-container input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-password.in-edit .input-container input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-password.in-edit .input-container .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-password.in-edit .input-container input:focus+.label,.lite-password.in-edit .input-container input:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-password.in-edit .input-container .toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#666;display:flex;align-items:center;justify-content:center;transition:color .2s,background-color .2s}.lite-password.in-edit .input-container .toggle-button:hover{color:#2079e1;background-color:#f5f5f5}.lite-password.in-edit .input-container .toggle-button:focus{outline:2px solid #2079e1;outline-offset:2px}.lite-password.in-edit .input-container .toggle-button svg{width:16px;height:16px;stroke-width:1.5}.lite-password.in-edit .password-strength{margin-top:8px;padding:8px 0}.lite-password.in-edit .password-strength .strength-bar{width:100%;height:4px;background-color:#e0e0e0;border-radius:2px;overflow:hidden;margin-bottom:6px}.lite-password.in-edit .password-strength .strength-bar .strength-fill{height:100%;transition:width .3s ease,background-color .3s ease;border-radius:2px}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-very-weak{width:12.5%;background-color:#f44336}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-weak{width:25%;background-color:#ff9800}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-fair{width:50%;background-color:#ffeb3b}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-good{width:75%;background-color:#8bc34a}.lite-password.in-edit .password-strength .strength-bar .strength-fill.strength-strong{width:100%;background-color:#4caf50}.lite-password.in-edit .password-strength .strength-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.lite-password.in-edit .password-strength .strength-info .strength-level{font-size:.85em;font-weight:600}.lite-password.in-edit .password-strength .strength-info .strength-level.level-very-weak{color:#f44336}.lite-password.in-edit .password-strength .strength-info .strength-level.level-weak,.lite-password.in-edit .password-strength .strength-info .strength-level.level-fair{color:#ff9800}.lite-password.in-edit .password-strength .strength-info .strength-level.level-good{color:#8bc34a}.lite-password.in-edit .password-strength .strength-info .strength-level.level-strong{color:#4caf50}.lite-password.in-edit .password-strength .strength-info .strength-score{font-size:.8em;color:#666}.lite-password.in-edit .password-strength .strength-feedback{font-size:.75em;color:#666;line-height:1.4}.lite-password.in-edit .password-strength .strength-feedback .feedback-tip{margin-bottom:2px}.lite-textarea{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-textarea .label{font-size:.8em;font-weight:500}.lite-textarea .value{min-height:1em;line-height:1em}.lite-textarea.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-textarea.in-edit textarea{border:1px solid #ccc;border-radius:4px;padding:5px 8px;font-size:1em;outline:none;line-height:40px}.lite-textarea.in-edit textarea:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-textarea.in-edit textarea:focus+.label,.lite-textarea.in-edit textarea:not(:placeholder-shown)+.label{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-textarea.in-edit textarea.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-select{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-select .label{font-size:.8em;font-weight:500}.lite-select .value{min-height:1em;line-height:1em}.lite-select.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-select.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 2em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px}.lite-select.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-select.in-edit input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-select.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-select.in-edit .options{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:200px;overflow-y:auto;z-index:1000;overflow:hidden}.lite-select.in-edit .options .option{padding:8px;cursor:pointer}.lite-select.in-edit .options .option:hover{background-color:#f0f0f0}.lite-select.in-edit .options .option.selected{background-color:#e0e0e0}.lite-select.in-edit .arrow_box{position:absolute;right:0;top:0;cursor:pointer;height:100%;width:2em}.lite-select.in-edit .arrow_box .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #333;position:absolute;top:48%;left:.5em}.lite-select.in-edit .arrow_box .arrow:hover{border-top-color:#2079e1}.lite-multi-select{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-multi-select .label{font-size:.8em;font-weight:500}.lite-multi-select .value{display:flex;gap:5px;flex-wrap:wrap;min-height:1em;line-height:1em}.lite-multi-select .value .item{border:1px solid #999;padding:2px 5px;border-radius:3px;font-size:.8em;line-height:16px}.lite-multi-select.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-multi-select.in-edit .input-container{border:1px solid #ccc;border-radius:4px;background:#fff;outline:none;min-height:40px;padding:0 2em 0 8px;position:relative;transition:height .2s ease-in-out}.lite-multi-select.in-edit .input-container:focus-within{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-multi-select.in-edit .input-container.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-multi-select.in-edit .input-container .selected-items-inline{position:absolute;inset:0 2em 0 8px;display:flex;flex-wrap:wrap;gap:4px;padding:6px 0;align-content:flex-start;align-items:flex-start;pointer-events:none;z-index:3;overflow:hidden;height:fit-content}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline{display:inline-flex;align-items:center;border:1px solid #999;background:#fff;padding-left:5px;border-radius:3px;font-size:.8em;gap:4px;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:20px;pointer-events:auto}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline .remove-item-inline{background:none;border:none;font-size:1.2em;cursor:pointer;line-height:1;padding:0;margin-left:2px;color:#666;flex-shrink:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.lite-multi-select.in-edit .input-container .selected-items-inline .selected-item-inline .remove-item-inline:hover{color:#333}.lite-multi-select.in-edit .input-container .filter-input{border:none;outline:none;background:transparent;font-size:1em;width:100%;height:100%;min-height:40px;position:relative;z-index:2}.lite-multi-select.in-edit .input-container .filter-input::placeholder{color:#aaa}.lite-multi-select.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-multi-select.in-edit .options{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:250px;overflow-y:auto;z-index:1000;overflow:auto}.lite-multi-select.in-edit .options .multi-option{padding:6px 8px;cursor:pointer;display:flex;align-items:center;gap:8px}.lite-multi-select.in-edit .options .multi-option:hover{background-color:#f0f0f0}.lite-multi-select.in-edit .options .multi-option.selected{background-color:#e3f2fd}.lite-multi-select.in-edit .options .multi-option input[type=checkbox]{margin:0;cursor:pointer;accent-color:#2079e1;width:16px;height:16px;transform:scale(1.2)}.lite-multi-select.in-edit .options .multi-option .option-text{flex:1;-webkit-user-select:none;user-select:none;line-height:20px}.lite-multi-select.in-edit .options .no-options{padding:12px;text-align:center;color:#999;font-style:italic}.lite-multi-select.in-edit .arrow_box{position:absolute;right:4px;top:4px;cursor:pointer;height:calc(100% - 8px);width:2em;display:flex;align-items:center;justify-content:center}.lite-multi-select.in-edit .arrow_box .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #333}.lite-multi-select.in-edit .arrow_box .arrow:hover{border-top-color:#2079e1}.lite-radio{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-radio .label{font-size:.8em;font-weight:500}.lite-radio .value{display:flex;gap:5px;flex-wrap:wrap}.lite-radio .value .no-value{color:#999;font-style:italic}.lite-radio.in-edit .radio-container{position:relative}.lite-radio.in-edit .radio-container .label{font-size:1.1em;font-weight:500;padding:5px 0}.lite-radio.in-edit .radio-container .radio-options{display:flex;flex-direction:column;gap:10px;padding:5px 0}.lite-radio.in-edit .radio-container .radio-options .radio-option{display:flex;align-items:flex-start;gap:5px;cursor:pointer;line-height:20px}.lite-radio.in-edit .radio-container .radio-options .radio-option .radio-input{margin:0;cursor:pointer;accent-color:#2079e1;width:20px;height:20px}.lite-radio.in-edit .radio-container .radio-options .radio-option .radio-label{flex:1;-webkit-user-select:none;user-select:none;font-size:1em;color:#333}.lite-radio.in-edit .radio-container .radio-options .radio-option:hover .radio-label{color:#2079e1}.lite-radio.in-edit .radio-container .radio-options.vertical{flex-direction:column}.lite-radio.in-edit .radio-container .radio-options.horizontal{flex-direction:row;flex-wrap:wrap}.in-edit .error-messages{color:#ff4500;font-size:.8em;letter-spacing:.6px;line-height:1.8em;padding-left:10px}.in-edit .error-messages .error-message{margin-bottom:2px}.lite-checkbox{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-checkbox .label{font-size:.8em;font-weight:500}.lite-checkbox .value{display:flex;gap:5px;flex-wrap:wrap}.lite-checkbox .value .checked{color:#28a745;font-weight:500}.lite-checkbox .value .unchecked{color:#6c757d}.lite-checkbox.in-edit .checkbox-container{position:relative}.lite-checkbox.in-edit .checkbox-container .checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:1em;line-height:1.4;width:fit-content}.lite-checkbox.in-edit .checkbox-container .checkbox-label .checkbox-input{margin:0;cursor:pointer;accent-color:#2079e1;width:16px;height:16px;transform:scale(1.2)}.lite-checkbox.in-edit .checkbox-container .checkbox-label .checkbox-text{flex:1;-webkit-user-select:none;user-select:none;color:#333;font-weight:500}.lite-checkbox.in-edit .checkbox-container .checkbox-label .required{margin-left:4px}.lite-checkbox.in-edit .checkbox-container .checkbox-label:hover .checkbox-text{color:#2079e1}.lite-checkbox.invalid .checkbox-container .checkbox-label .checkbox-text{color:#dc3545}.lite-date{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-date .label{font-size:.8em;font-weight:500}.lite-date .value{display:flex;gap:5px;flex-wrap:wrap;color:#333;font-size:1em}.lite-date.in-edit{position:relative}.lite-date.in-edit .label{position:absolute;left:8px;top:2px;color:#aaa;pointer-events:none;transition:.2s;font-size:1em;line-height:40px;font-weight:400}.lite-date.in-edit input{border:1px solid #ccc;border-radius:4px;padding:0 2em 0 8px;font-size:1em;outline:none;line-height:40px;height:40px;color-scheme:light}.lite-date.in-edit input:focus{border-color:#2079e1;box-shadow:0 0 5px #2079e180}.lite-date.in-edit input:focus+.label,.lite-date.in-edit input:not([value=\"\"])+.label,.lite-date.in-edit .label.float{transform:translateY(-10px) translate(-10px) scale(.8);background:#fff;padding:0 5px;color:#2079e1;line-height:initial}.lite-date.in-edit .date-input.invalid{border-color:#dc3545;background-color:#fff5f5;box-shadow:0 0 0 2px 1px #dc354540}.lite-date.in-edit .calendar_icon{position:absolute;right:0;top:0;cursor:pointer;height:100%;width:2.5em}.lite-date.in-edit .calendar_icon .calendar{width:16px;height:16px;color:#333;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lite-date.in-edit .calendar_icon .calendar:hover{color:#2079e1}.lite-date.in-edit .calendar-overlay{position:absolute;right:0;z-index:1000}.lite-date.in-edit .calendar-overlay.position-bottom{top:100%;margin-top:4px}.lite-date.in-edit .calendar-overlay.position-top{bottom:100%;margin-bottom:4px}.calendar-panel{background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:16px;width:280px;font-family:inherit}.calendar-panel.datetime{display:flex;width:100%;padding:0}.calendar-panel.datetime .control-header{width:100%;height:50px;display:flex;justify-content:flex-end}.calendar-panel.datetime .control-header .close-button{color:#999;cursor:pointer;border:none;background:none;width:30px;height:30px;padding:0}.calendar-panel.datetime .time-header{font-size:11px;font-weight:600;color:#333;border-bottom:1px solid #ccc;letter-spacing:.5px;line-height:20px}.calendar-panel.datetime .date-panel{width:280px;padding:20px 10px 20px 20px}.calendar-panel.datetime .time-panel{width:200px;padding:20px 20px 20px 10px}.calendar-panel.datetime .time-panel .hh-grid{display:flex;align-items:center;flex-wrap:wrap;margin:10px 0;gap:2px}.calendar-panel.datetime .time-panel .hh-slot{display:flex;width:30px;justify-content:center;line-height:24px;border-radius:4px;cursor:pointer;font-size:.8em;flex:0 0 calc(16.666% - 2px);border:1px solid #ddd;box-sizing:border-box}.calendar-panel.datetime .time-panel .hh-slot:hover{background-color:#f5f5f5}.calendar-panel.datetime .time-panel .hh-slot.selected{background-color:#2079e1;color:#fff}.calendar-panel.range-mode{width:580px}.calendar-panel .dual-calendar{display:flex;gap:20px}.calendar-panel .dual-calendar .calendar-month{flex:1}.calendar-panel .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.calendar-panel .calendar-header .month-year{font-weight:600;font-size:16px;color:#333}.calendar-panel .calendar-header .nav-button{background:none;border:none;font-size:20px;color:#666;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s,color .2s}.calendar-panel .calendar-header .nav-button:hover{background-color:#f5f5f5;color:#2079e1}.calendar-panel .calendar-header .nav-spacer{width:28px}.calendar-panel .calendar-grid .weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:8px}.calendar-panel .calendar-grid .weekdays .weekday{text-align:center;font-size:12px;font-weight:600;color:#666;padding:8px 4px}.calendar-panel .calendar-grid .calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-panel .calendar-grid .calendar-days .calendar-day{text-align:center;padding:8px 4px;cursor:pointer;border-radius:4px;font-size:14px;transition:background-color .2s,color .2s;position:relative}.calendar-panel .calendar-grid .calendar-days .calendar-day:hover{background-color:#f0f8ff}.calendar-panel .calendar-grid .calendar-days .calendar-day.today{background-color:#f8f8f8;font-weight:600;border:1px solid #ccc;border-radius:50%}.calendar-panel .calendar-grid .calendar-days .calendar-day.dim{opacity:.5;font-size:.9em}.calendar-panel .calendar-grid .calendar-days .calendar-day.selected{background-color:#2079e1;color:#fff;font-weight:600}.calendar-panel .calendar-grid .calendar-days .calendar-day.selected:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start{background-color:#2079e1;color:#fff;font-weight:600;border-top-right-radius:0;border-bottom-right-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-end{background-color:#2079e1;color:#fff;font-weight:600;border-top-left-radius:0;border-bottom-left-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-end:hover{background-color:#1976d2}.calendar-panel .calendar-grid .calendar-days .calendar-day.in-range{background-color:#e3f2fd;color:#1976d2;border-radius:0}.calendar-panel .calendar-grid .calendar-days .calendar-day.in-range:hover{background-color:#bbdefb}.calendar-panel .calendar-grid .calendar-days .calendar-day.range-start.range-end{border-radius:4px}.calendar-panel .calendar-grid .calendar-days .calendar-day.today.range-start,.calendar-panel .calendar-grid .calendar-days .calendar-day.today.range-end{background-color:#ff9800;border-color:#e65100}.calendar-panel .calendar-grid .calendar-days .calendar-day.today.in-range{background-color:#ffcc80;color:#e65100;font-weight:700}.lite-file{display:flex;flex-direction:column;margin-bottom:10px;position:relative;gap:5px}.lite-file .label{font-size:.8em;font-weight:500}.lite-file button{position:relative;background:none;border:none;width:30px;display:flex;justify-content:center;cursor:pointer;margin-top:10px}.lite-file button:hover{background:#e9ecef;border-color:#6c757d}.lite-file button.has-files{border-color:#28a745;background:#d4edda}.lite-file button img{width:24px;height:24px;stroke:currentColor}.lite-file button .file-badge{position:absolute;top:-8px;right:-8px;background:#2079e1;color:#fff;border-radius:50%;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:600}.lite-file.in-edit{position:relative;display:inline-block}.lite-file.in-edit .file-button{position:relative;background:none;border:none;padding:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.lite-file.in-edit .file-button:hover{background:#e9ecef;border-color:#6c757d}.lite-file.in-edit .file-button:focus{outline:2px solid #2079e1;outline-offset:2px}.lite-file.in-edit .file-button.has-files{border-color:#28a745;background:#d4edda}.lite-file.in-edit .file-button.has-errors{border-color:#dc3545;background:#f8d7da}.lite-file.in-edit .file-button:disabled{opacity:.6;cursor:not-allowed}.lite-file.in-edit .file-button .file-icon{width:24px;height:24px;stroke:currentColor}.lite-file.in-edit .file-button .file-badge{position:absolute;top:-8px;right:-8px;background:#2079e1;color:#fff;border-radius:50%;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:600}.panel-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:999;opacity:0;visibility:hidden;transition:all .2s ease;pointer-events:none}.panel-overlay.visible{opacity:1;visibility:visible;pointer-events:auto}.file-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);min-width:400px;max-width:90vw;max-height:90vh;background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:1000;opacity:0;visibility:hidden;transition:all .2s;display:none;flex-direction:column;pointer-events:none;overflow:hidden}.file-panel.visible{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1);display:flex;pointer-events:auto}.file-panel .panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #dee2e6;background:#f8f9fa}.file-panel .panel-header h3{margin:0;font-size:1.1em;font-weight:600;color:#333}.file-panel .panel-header .close-button{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#6c757d;transition:all .2s}.file-panel .panel-header .close-button:hover{color:#dc3545;background:#f8d7da}.file-panel .panel-header .close-button svg{width:16px;height:16px}.file-panel .panel-content{padding:20px;overflow-y:auto;flex:1}.file-panel .panel-content .upload-area{border:2px dashed #dee2e6;border-radius:8px;padding:40px 20px;text-align:center;margin-bottom:20px;transition:all .2s;cursor:pointer;position:relative}.file-panel .panel-content .upload-area:hover,.file-panel .panel-content .upload-area.drag-over{border-color:#2079e1;background:#f0f8ff}.file-panel .panel-content .upload-area.uploading{border-color:#ffc107;background:#fff8e1}.file-panel .panel-content .upload-area .upload-content{pointer-events:none}.file-panel .panel-content .upload-area .upload-content .upload-icon{width:48px;height:48px;margin:0 auto 16px;stroke:#6c757d}.file-panel .panel-content .upload-area .upload-content p{margin:0 0 8px;font-size:1.1em;color:#333;font-weight:500}.file-panel .panel-content .upload-area .upload-content small{color:#6c757d;font-size:.9em}.file-panel .panel-content .action-buttons{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.file-panel .panel-content .action-buttons .action-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid #dee2e6;border-radius:6px;background:#fff;cursor:pointer;transition:all .2s ease;font-size:.9em;flex:1;min-width:120px;justify-content:center}.file-panel .panel-content .action-buttons .action-btn:hover{background:#f8f9fa;border-color:#6c757d}.file-panel .panel-content .action-buttons .action-btn.upload-btn:hover{background:#e7f3ff;border-color:#2079e1;color:#2079e1}.file-panel .panel-content .action-buttons .action-btn.camera-btn:hover{background:#e8f5e8;border-color:#28a745;color:#28a745}.file-panel .panel-content .action-buttons .action-btn.close-btn:hover{background:#f8d7da;border-color:#dc3545;color:#dc3545}.file-panel .panel-content .action-buttons .action-btn svg{width:16px;height:16px}.file-panel .panel-content .file-list .file-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid #dee2e6}.file-panel .panel-content .file-list .file-list-header span{font-weight:600;color:#333}.file-panel .panel-content .file-list .file-list-header .total-size{font-size:.9em;color:#6c757d;font-weight:400}.file-panel .panel-content .file-list .file-list-header .clear-all-btn{background:none;border:1px solid #dc3545;color:#dc3545;padding:4px 12px;border-radius:4px;cursor:pointer;font-size:.8em;transition:all .2s ease}.file-panel .panel-content .file-list .file-list-header .clear-all-btn:hover{background:#dc3545;color:#fff}.file-panel .panel-content .file-list .file-items{max-height:300px;overflow-y:auto}.file-panel .panel-content .file-list .file-items .file-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #dee2e6;border-radius:6px;margin-bottom:8px;transition:all .2s ease;background:#fff}.file-panel .panel-content .file-list .file-items .file-item:hover{background:#f8f9fa}.file-panel .panel-content .file-list .file-items .file-item.has-error{border-color:#dc3545;background:#fff5f5}.file-panel .panel-content .file-list .file-items .file-item.uploading{background:#fff8e1;border-color:#ffc107}.file-panel .panel-content .file-list .file-items .file-item .file-preview{width:48px;height:48px;border-radius:4px;overflow:hidden;background:#f8f9fa;display:flex;align-items:center;justify-content:center;flex-shrink:0}.file-panel .panel-content .file-list .file-items .file-item .file-preview .preview-image{width:100%;height:100%;object-fit:cover}.file-panel .panel-content .file-list .file-items .file-item .file-preview .file-type-icon{font-size:24px}.file-panel .panel-content .file-list .file-items .file-item .file-info{flex:1;min-width:0}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-name{font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details{display:flex;gap:12px;margin-top:4px;font-size:.8em;color:#6c757d}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details .file-size,.file-panel .panel-content .file-list .file-items .file-item .file-info .file-details .file-type{white-space:nowrap}.file-panel .panel-content .file-list .file-items .file-item .file-info .file-error{color:#dc3545;font-size:.8em;margin-top:4px;font-weight:500}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress{display:flex;align-items:center;gap:8px;margin-top:8px}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-bar{flex:1;height:6px;background:#e9ecef;border-radius:3px;overflow:hidden}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-bar .progress-fill{height:100%;background:#2079e1;transition:width .3s ease}.file-panel .panel-content .file-list .file-items .file-item .file-info .upload-progress .progress-text{font-size:.8em;color:#6c757d;font-weight:500;min-width:32px}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn{background:none;border:1px solid #dc3545;color:#dc3545;padding:6px;border-radius:4px;cursor:pointer;transition:all .2s ease;flex-shrink:0}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn:hover:not(:disabled){background:#dc3545;color:#fff}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn:disabled{opacity:.5;cursor:not-allowed}.file-panel .panel-content .file-list .file-items .file-item .remove-file-btn svg{width:16px;height:16px}.file-panel .panel-content .empty-state{text-align:center;padding:40px 20px;color:#6c757d}.file-panel .panel-content .empty-state .empty-icon{width:64px;height:64px;margin:0 auto 16px;stroke:#dee2e6}.file-panel .panel-content .empty-state p{margin:0 0 8px;font-size:1.1em}.file-panel .panel-content .empty-state small{font-size:.9em}.lite-paginator{display:flex;align-items:center;gap:12px;padding:8px 0;flex-wrap:wrap;justify-content:center}.lite-paginator .paginator-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s ease;color:#666}.lite-paginator .paginator-btn:hover:not(:disabled){background:#f8f9fa;border-color:#2079e1;color:#2079e1}.lite-paginator .paginator-btn:disabled{opacity:.5;cursor:not-allowed}.lite-paginator .paginator-btn svg{width:16px;height:16px}.lite-paginator .page-numbers{display:flex;gap:4px;align-items:center}.lite-paginator .page-number{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer;transition:all .2s ease;font-size:.85em;color:#666}.lite-paginator .page-number:hover{background:#f8f9fa;border-color:#2079e1;color:#2079e1}.lite-paginator .page-number.active{background:#2079e1;border-color:#2079e1;color:#fff;font-weight:600}.lite-paginator .items-per-page{display:flex;align-items:center;gap:6px;font-size:.85em;color:#666}.lite-paginator .items-per-page .items-select{padding:4px 8px;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:.85em;cursor:pointer;min-width:60px;color:#666}.lite-paginator .items-per-page .items-select:focus{outline:none;border-color:#2079e1;box-shadow:0 0 0 2px #2079e133}.lite-paginator .items-per-page .items-label{white-space:nowrap}.lite-paginator .total-info{font-size:.85em;color:#666}.lite-paginator .total-info .total-text{white-space:nowrap}.lite-table{width:100%;background:#fff}.lite-table .table-header{background:#f8f8f8;border-bottom:1px solid #dee2e6}.lite-table .table-header .header-row{display:flex}.lite-table .table-header .header-row .header-cell{padding:5px 10px;text-align:left;font-weight:600;color:#333;font-size:.9em;border-right:1px solid #dee2e6;min-height:36px;display:flex;align-items:center}.lite-table .table-header .header-row .header-cell:last-child{border-right:none}.lite-table .table-header .header-row .header-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.lite-table .table-header .header-row .header-cell.sortable:hover{background:#e9ecef}.lite-table .table-body .data-row{display:flex;border-bottom:1px solid #dee2e6;transition:background-color .2s ease}.lite-table .table-body .data-row:hover{background:#f8f9fa}.lite-table .table-body .data-row:last-child{border-bottom:none}.lite-table .table-body .data-row .data-cell{padding:5px 10px;border-right:1px solid #dee2e6;font-size:.9em;color:#333;min-height:36px;display:flex;align-items:center}.lite-table .table-body .data-row .data-cell:last-child{border-right:none}.lite-table .table-body .empty-row{display:flex;border-bottom:1px solid #dee2e6}.lite-table .table-body .empty-row .empty-cell{padding:40px 16px;text-align:center;color:#6c757d;font-style:italic;font-size:.9em}.lite-table .table-paginator{margin-top:16px;display:flex;justify-content:center}\n", ".lite-panel__backdrop{position:fixed;inset:0;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:998}.lite-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;min-width:320px;max-width:min(90vw,600px);max-height:min(90vh,600px);display:flex;flex-direction:column;border-radius:12px;box-shadow:0 12px 32px #00000040;overflow:hidden;z-index:999}.lite-panel__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.08)}.lite-panel__title{margin:0;font-size:1.4rem;font-weight:600}.lite-panel__close{padding:.25rem .5rem;border:none;background:transparent;font-size:1.5rem;line-height:1;cursor:pointer;color:inherit}.lite-panel__content{padding:1.5rem;overflow:auto;flex:1 1 auto}.lite-panel__content-text{margin:0}.lite-panel__actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid rgba(0,0,0,.08)}.lite-panel__action{min-width:96px;padding:.5rem 1rem;border-radius:6px;border:1px solid transparent;font-weight:500;background:#f5f5f5;color:#333;cursor:pointer;transition:background-color .2s ease,color .2s ease}.lite-panel__action:hover{background:#e0e0e0}.lite-panel__action--primary{background:#0052cc;color:#fff}.lite-panel__action--primary:hover{background:#003d99}.lite-panel__action--secondary{background:#fff;border-color:#0003}.lite-panel__action--secondary:hover{background:#0000000d}.lite-panel__action--danger{background:#d32f2f;color:#fff}.lite-panel__action--danger:hover{background:#b71c1c}\n"] }]
|
|
2222
|
+
}] });
|
|
2223
|
+
|
|
2139
2224
|
/*
|
|
2140
2225
|
* Public API Surface of lite-form
|
|
2141
2226
|
*/
|
|
@@ -2144,5 +2229,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2144
2229
|
* Generated bundle index. Do not edit.
|
|
2145
2230
|
*/
|
|
2146
2231
|
|
|
2147
|
-
export { BaseSelectFieldDto, FieldDto, FileFieldDto, FormUtils, LiteCheckbox, LiteDate, LiteDateTime, LiteFile, LiteInput, LiteMultiSelect, LitePaginator, LitePassword, LiteRadio, LiteSelect, LiteSnackbarService, LiteTable, LiteTextarea, MultiSelectFieldDto, PaginatorFieldDto, RadioFieldDto, SelectFieldDto, TableFieldDto };
|
|
2232
|
+
export { BaseSelectFieldDto, FieldDto, FileFieldDto, FormUtils, LiteCheckbox, LiteDate, LiteDateTime, LiteFile, LiteInput, LiteMultiSelect, LitePaginator, LitePanel, LitePassword, LiteRadio, LiteSelect, LiteSnackbarService, LiteTable, LiteTextarea, MultiSelectFieldDto, PaginatorFieldDto, RadioFieldDto, SelectFieldDto, TableFieldDto };
|
|
2148
2233
|
//# sourceMappingURL=ngx-lite-form.mjs.map
|