bways-report 0.1.3 → 0.1.4
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/esm2022/lib/core/models/report-grid.model.mjs +1 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +24 -3
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +20 -13
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +64 -5
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +161 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +91 -11
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +88 -25
- package/esm2022/lib/features/designer/designer.component.mjs +194 -65
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +9 -2
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +2 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +11 -3
- package/esm2022/lib/features/runtime/report-execution.service.mjs +1 -9
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +214 -19
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +11 -3
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +11 -3
- package/esm2022/lib/primitives/components/checkbox/rpt-checkbox.component.mjs +3 -3
- package/esm2022/lib/primitives/components/date/rpt-date.component.mjs +3 -3
- package/esm2022/lib/primitives/components/date-range/rpt-date-range.component.mjs +3 -3
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +4 -4
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +23 -1
- package/esm2022/lib/primitives/components/input/rpt-input.component.mjs +3 -3
- package/esm2022/lib/primitives/components/kpi-card/rpt-kpi-card.component.mjs +3 -3
- package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +3 -3
- package/fesm2022/bways-report.mjs +920 -162
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/models/report-grid.model.d.ts +23 -1
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +2 -1
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +9 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +4 -1
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +5 -1
- package/lib/features/designer/designer.component.d.ts +6 -0
- package/lib/features/runtime/dynamic-renderer.component.d.ts +4 -1
- package/lib/features/runtime/report-grid-bridge.component.d.ts +46 -4
- package/lib/features/runtime/report-runtime.component.d.ts +4 -1
- package/lib/features/runtime/rpt-report.component.d.ts +4 -1
- package/package.json +1 -1
|
@@ -2301,7 +2301,7 @@ class RptInputComponent {
|
|
|
2301
2301
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
2302
2302
|
}
|
|
2303
2303
|
</div>
|
|
2304
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size
|
|
2304
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2305
2305
|
}
|
|
2306
2306
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptInputComponent, decorators: [{
|
|
2307
2307
|
type: Component,
|
|
@@ -2331,7 +2331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2331
2331
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
2332
2332
|
}
|
|
2333
2333
|
</div>
|
|
2334
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size
|
|
2334
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"] }]
|
|
2335
2335
|
}] });
|
|
2336
2336
|
|
|
2337
2337
|
class RptDropdownComponent {
|
|
@@ -2665,7 +2665,7 @@ class RptDropdownComponent {
|
|
|
2665
2665
|
if (!ds || !this.isDynamicSource())
|
|
2666
2666
|
return;
|
|
2667
2667
|
// 1. Database Table / Stored Procedure Lookup
|
|
2668
|
-
if ((ds.sourceType === 'table' || ds.sourceType === 'procedure'
|
|
2668
|
+
if (ds.entityName && (ds.sourceType === 'table' || ds.sourceType === 'procedure') && this.lookupAdapter) {
|
|
2669
2669
|
const formValues = this.parentForm()?.getRawValue() ?? {};
|
|
2670
2670
|
// Do not call the database until every canvas field this lookup depends on is filled.
|
|
2671
2671
|
const missing = findMissingCanvasFields(ds.parameterMappings, formValues);
|
|
@@ -2958,7 +2958,7 @@ class RptDropdownComponent {
|
|
|
2958
2958
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
2959
2959
|
}
|
|
2960
2960
|
</div>
|
|
2961
|
-
`, isInline: true, styles: [":host{display:block;width:100%;
|
|
2961
|
+
`, isInline: true, styles: [":host{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;font-family:var(--rpt-font-family, inherit);position:relative}.rpt-status-badge{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:.6875rem;padding:3px 6px;border-radius:4px;margin-top:4px;font-weight:500;line-height:1.3;max-width:100%;box-sizing:border-box;overflow:hidden;word-break:break-word}.rpt-status-badge>span{overflow-wrap:anywhere;word-break:break-word}.rpt-status-badge[data-status=loading]{background:#eff6ff;color:#2563eb;border:1px solid #dbeafe}.rpt-status-badge[data-status=ok]{background:#f0fdf4;color:#16a34a;border:1px solid #dcfce7}.rpt-status-badge[data-status=waiting]{background:#fffbeb;color:#d97706;border:1px solid #fef3c7}.rpt-status-badge[data-status=error]{background:#fef2f2;color:#dc2626;border:1px solid #fee2e2}.rpt-status-badge[data-status=empty]{background:#f8fafc;color:#64748b;border:1px solid #e2e8f0}.waiting-tokens{display:inline-flex;flex-wrap:wrap;align-items:center;gap:3px;margin-left:2px;max-width:100%}.waiting-token{background:#b453091f;border:1px solid rgba(180,83,9,.3);padding:1px 5px;border-radius:3px;font-weight:700;font-size:.625rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;box-sizing:border-box}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.dot-pulse{animation:rpt-pulse 1s infinite alternate}@keyframes rpt-pulse{0%{opacity:.3}to{opacity:1}}.rpt-field-group{display:flex;flex-direction:column;max-width:100%;min-width:0;gap:4px;box-sizing:border-box;position:relative}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-select-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex;align-items:center}.rpt-select{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 36px 6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);appearance:none;-webkit-appearance:none;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-select:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-select:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-select:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-select.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-select.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-select-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--rpt-color-text-muted, #64748b);display:flex;align-items:center}.rpt-combobox-wrapper{position:relative;width:100%;flex:1;min-height:0}.rpt-combobox-trigger{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 10px 6px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--rpt-font-size-base, .875rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);outline:none;cursor:pointer;text-align:left;transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-combobox-trigger:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-combobox-trigger:focus-visible,.rpt-combobox-trigger.is-open{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-combobox-trigger:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-combobox-trigger.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-combobox-trigger.rpt-invalid:focus-visible{box-shadow:0 0 0 3px #ef444440}.trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}.trigger-label.is-placeholder{color:var(--rpt-color-text-muted, #94a3b8)}.trigger-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.trigger-clear-btn{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:.6875rem;color:var(--rpt-color-text-muted, #64748b);background-color:#f1f5f9;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,color .15s ease}.trigger-clear-btn:hover{background-color:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.trigger-arrow{display:flex;align-items:center;color:var(--rpt-color-text-muted, #64748b);transition:transform .18s ease}.trigger-arrow.rotated{transform:rotate(180deg)}.rpt-combobox-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:1050;background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:0 10px 25px -5px #0000001f,0 8px 10px -6px #00000014;overflow:hidden;display:flex;flex-direction:column;animation:rpt-dropdown-pop .12s cubic-bezier(0,0,.2,1)}.rpt-combobox-menu.opens-above{top:auto;bottom:calc(100% + 4px);box-shadow:0 -10px 25px -5px #0000001f,0 -8px 10px -6px #00000014;animation:rpt-dropdown-pop-above .12s cubic-bezier(0,0,.2,1)}@keyframes rpt-dropdown-pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes rpt-dropdown-pop-above{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.combobox-search-box{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);background-color:#f8fafc}.combobox-search-icon{color:var(--rpt-color-text-muted, #94a3b8);display:flex;align-items:center;flex-shrink:0}.combobox-search-input{flex:1;border:none;outline:none;background:transparent;font-size:var(--rpt-font-size-sm, .8125rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);min-width:0}.combobox-search-input::placeholder{color:#94a3b8}.combobox-search-clear{border:none;background:#e2e8f0;color:#64748b;width:16px;height:16px;border-radius:50%;font-size:.625rem;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.combobox-search-clear:hover{background:#cbd5e1;color:#0f172a}.combobox-options-list{max-height:220px;overflow-y:auto;overscroll-behavior:contain;padding:4px}.combobox-option-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-radius:4px;font-size:var(--rpt-font-size-base, .84rem);color:var(--rpt-color-text, #0f172a);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.combobox-option-item.is-focused{background-color:var(--rpt-color-surface-hover, #f1f5f9)}.combobox-option-item.is-selected{background-color:#eff6ff;color:var(--rpt-color-primary, #2563eb);font-weight:600}.opt-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opt-check{font-size:.875rem;font-weight:700;color:var(--rpt-color-primary, #2563eb);margin-left:8px}.combobox-status-row{padding:10px 12px;font-size:.78rem;text-align:center;color:var(--rpt-color-text-muted, #64748b)}.combobox-status-row.loading{display:flex;align-items:center;justify-content:center;gap:6px;color:#2563eb}.combobox-status-row.error{color:var(--rpt-color-danger, #dc2626)}.combobox-status-row.hint{font-size:.72rem;color:#94a3b8;border-top:1px dashed #e2e8f0;margin-top:4px;padding:6px}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2962
2962
|
}
|
|
2963
2963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptDropdownComponent, decorators: [{
|
|
2964
2964
|
type: Component,
|
|
@@ -3174,7 +3174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3174
3174
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3175
3175
|
}
|
|
3176
3176
|
</div>
|
|
3177
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;
|
|
3177
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;font-family:var(--rpt-font-family, inherit);position:relative}.rpt-status-badge{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:.6875rem;padding:3px 6px;border-radius:4px;margin-top:4px;font-weight:500;line-height:1.3;max-width:100%;box-sizing:border-box;overflow:hidden;word-break:break-word}.rpt-status-badge>span{overflow-wrap:anywhere;word-break:break-word}.rpt-status-badge[data-status=loading]{background:#eff6ff;color:#2563eb;border:1px solid #dbeafe}.rpt-status-badge[data-status=ok]{background:#f0fdf4;color:#16a34a;border:1px solid #dcfce7}.rpt-status-badge[data-status=waiting]{background:#fffbeb;color:#d97706;border:1px solid #fef3c7}.rpt-status-badge[data-status=error]{background:#fef2f2;color:#dc2626;border:1px solid #fee2e2}.rpt-status-badge[data-status=empty]{background:#f8fafc;color:#64748b;border:1px solid #e2e8f0}.waiting-tokens{display:inline-flex;flex-wrap:wrap;align-items:center;gap:3px;margin-left:2px;max-width:100%}.waiting-token{background:#b453091f;border:1px solid rgba(180,83,9,.3);padding:1px 5px;border-radius:3px;font-weight:700;font-size:.625rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;box-sizing:border-box}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.dot-pulse{animation:rpt-pulse 1s infinite alternate}@keyframes rpt-pulse{0%{opacity:.3}to{opacity:1}}.rpt-field-group{display:flex;flex-direction:column;max-width:100%;min-width:0;gap:4px;box-sizing:border-box;position:relative}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-select-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex;align-items:center}.rpt-select{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 36px 6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);appearance:none;-webkit-appearance:none;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-select:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-select:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-select:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-select.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-select.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-select-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--rpt-color-text-muted, #64748b);display:flex;align-items:center}.rpt-combobox-wrapper{position:relative;width:100%;flex:1;min-height:0}.rpt-combobox-trigger{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 10px 6px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--rpt-font-size-base, .875rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);outline:none;cursor:pointer;text-align:left;transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-combobox-trigger:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-combobox-trigger:focus-visible,.rpt-combobox-trigger.is-open{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-combobox-trigger:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-combobox-trigger.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-combobox-trigger.rpt-invalid:focus-visible{box-shadow:0 0 0 3px #ef444440}.trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}.trigger-label.is-placeholder{color:var(--rpt-color-text-muted, #94a3b8)}.trigger-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.trigger-clear-btn{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:.6875rem;color:var(--rpt-color-text-muted, #64748b);background-color:#f1f5f9;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,color .15s ease}.trigger-clear-btn:hover{background-color:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.trigger-arrow{display:flex;align-items:center;color:var(--rpt-color-text-muted, #64748b);transition:transform .18s ease}.trigger-arrow.rotated{transform:rotate(180deg)}.rpt-combobox-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:1050;background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:0 10px 25px -5px #0000001f,0 8px 10px -6px #00000014;overflow:hidden;display:flex;flex-direction:column;animation:rpt-dropdown-pop .12s cubic-bezier(0,0,.2,1)}.rpt-combobox-menu.opens-above{top:auto;bottom:calc(100% + 4px);box-shadow:0 -10px 25px -5px #0000001f,0 -8px 10px -6px #00000014;animation:rpt-dropdown-pop-above .12s cubic-bezier(0,0,.2,1)}@keyframes rpt-dropdown-pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes rpt-dropdown-pop-above{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.combobox-search-box{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);background-color:#f8fafc}.combobox-search-icon{color:var(--rpt-color-text-muted, #94a3b8);display:flex;align-items:center;flex-shrink:0}.combobox-search-input{flex:1;border:none;outline:none;background:transparent;font-size:var(--rpt-font-size-sm, .8125rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);min-width:0}.combobox-search-input::placeholder{color:#94a3b8}.combobox-search-clear{border:none;background:#e2e8f0;color:#64748b;width:16px;height:16px;border-radius:50%;font-size:.625rem;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.combobox-search-clear:hover{background:#cbd5e1;color:#0f172a}.combobox-options-list{max-height:220px;overflow-y:auto;overscroll-behavior:contain;padding:4px}.combobox-option-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-radius:4px;font-size:var(--rpt-font-size-base, .84rem);color:var(--rpt-color-text, #0f172a);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.combobox-option-item.is-focused{background-color:var(--rpt-color-surface-hover, #f1f5f9)}.combobox-option-item.is-selected{background-color:#eff6ff;color:var(--rpt-color-primary, #2563eb);font-weight:600}.opt-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opt-check{font-size:.875rem;font-weight:700;color:var(--rpt-color-primary, #2563eb);margin-left:8px}.combobox-status-row{padding:10px 12px;font-size:.78rem;text-align:center;color:var(--rpt-color-text-muted, #64748b)}.combobox-status-row.loading{display:flex;align-items:center;justify-content:center;gap:6px;color:#2563eb}.combobox-status-row.error{color:var(--rpt-color-danger, #dc2626)}.combobox-status-row.hint{font-size:.72rem;color:#94a3b8;border-top:1px dashed #e2e8f0;margin-top:4px;padding:6px}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"] }]
|
|
3178
3178
|
}], ctorParameters: () => [], propDecorators: { onDocumentClick: [{
|
|
3179
3179
|
type: HostListener,
|
|
3180
3180
|
args: ['document:click', ['$event']]
|
|
@@ -3235,7 +3235,7 @@ class RptDateComponent {
|
|
|
3235
3235
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3236
3236
|
}
|
|
3237
3237
|
</div>
|
|
3238
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-date-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-date-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-date-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-date-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-date-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size
|
|
3238
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-date-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-date-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-date-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-date-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-date-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3239
3239
|
}
|
|
3240
3240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptDateComponent, decorators: [{
|
|
3241
3241
|
type: Component,
|
|
@@ -3266,7 +3266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3266
3266
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3267
3267
|
}
|
|
3268
3268
|
</div>
|
|
3269
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-date-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-date-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-date-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-date-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-date-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size
|
|
3269
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-date-wrapper{position:relative;width:100%;flex:1;min-height:0;display:flex}.rpt-date-input{width:100%;height:100%;min-height:38px;box-sizing:border-box;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.rpt-date-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-date-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-date-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"] }]
|
|
3270
3270
|
}] });
|
|
3271
3271
|
|
|
3272
3272
|
const pad = (n) => String(n).padStart(2, '0');
|
|
@@ -3520,7 +3520,7 @@ class RptDateRangeComponent {
|
|
|
3520
3520
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3521
3521
|
}
|
|
3522
3522
|
</div>
|
|
3523
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:5px;box-sizing:border-box}.rpt-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-preset-pills{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap}.rpt-preset-pill{border:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);font-size:.6875rem;font-weight:500;padding:1px 7px;border-radius:12px;cursor:pointer;line-height:1.4;transition:all .12s ease}.rpt-preset-pill:hover:not(:disabled){border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);background:#eff6ff}.rpt-preset-pill.is-active{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.rpt-preset-pill:disabled{cursor:not-allowed;opacity:.5}.rpt-date-range-container{display:flex;align-items:center;gap:8px;width:100%;flex:1;min-height:38px;box-sizing:border-box;padding:3px 8px;background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-date-range-container:focus-within{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-range-container.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-subfield{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.rpt-date-prefix{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--rpt-color-text-muted, #94a3b8);-webkit-user-select:none;user-select:none}.rpt-date-input{width:100%;border:none;outline:none;background:transparent;font-size:var(--rpt-font-size-base, .84rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);min-width:0;padding:4px 0}.rpt-date-input:disabled{color:var(--rpt-color-text-muted, #94a3b8);cursor:not-allowed}.rpt-range-separator{color:var(--rpt-color-text-muted, #94a3b8);font-size:.8125rem;-webkit-user-select:none;user-select:none;padding:0 2px}.rpt-range-clear-btn{border:none;background:#f1f5f9;color:var(--rpt-color-text-muted, #64748b);width:18px;height:18px;border-radius:50%;font-size:.6875rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:background-color .15s ease,color .15s ease}.rpt-range-clear-btn:hover{background-color:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.rpt-error-text{font-size
|
|
3523
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:5px;box-sizing:border-box}.rpt-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-preset-pills{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap}.rpt-preset-pill{border:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);font-size:.6875rem;font-weight:500;padding:1px 7px;border-radius:12px;cursor:pointer;line-height:1.4;transition:all .12s ease}.rpt-preset-pill:hover:not(:disabled){border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);background:#eff6ff}.rpt-preset-pill.is-active{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.rpt-preset-pill:disabled{cursor:not-allowed;opacity:.5}.rpt-date-range-container{display:flex;align-items:center;gap:8px;width:100%;flex:1;min-height:38px;box-sizing:border-box;padding:3px 8px;background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-date-range-container:focus-within{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-range-container.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-subfield{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.rpt-date-prefix{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--rpt-color-text-muted, #94a3b8);-webkit-user-select:none;user-select:none}.rpt-date-input{width:100%;border:none;outline:none;background:transparent;font-size:var(--rpt-font-size-base, .84rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);min-width:0;padding:4px 0}.rpt-date-input:disabled{color:var(--rpt-color-text-muted, #94a3b8);cursor:not-allowed}.rpt-range-separator{color:var(--rpt-color-text-muted, #94a3b8);font-size:.8125rem;-webkit-user-select:none;user-select:none;padding:0 2px}.rpt-range-clear-btn{border:none;background:#f1f5f9;color:var(--rpt-color-text-muted, #64748b);width:18px;height:18px;border-radius:50%;font-size:.6875rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:background-color .15s ease,color .15s ease}.rpt-range-clear-btn:hover{background-color:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3524
3524
|
}
|
|
3525
3525
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptDateRangeComponent, decorators: [{
|
|
3526
3526
|
type: Component,
|
|
@@ -3608,7 +3608,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3608
3608
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3609
3609
|
}
|
|
3610
3610
|
</div>
|
|
3611
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:5px;box-sizing:border-box}.rpt-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-preset-pills{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap}.rpt-preset-pill{border:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);font-size:.6875rem;font-weight:500;padding:1px 7px;border-radius:12px;cursor:pointer;line-height:1.4;transition:all .12s ease}.rpt-preset-pill:hover:not(:disabled){border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);background:#eff6ff}.rpt-preset-pill.is-active{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.rpt-preset-pill:disabled{cursor:not-allowed;opacity:.5}.rpt-date-range-container{display:flex;align-items:center;gap:8px;width:100%;flex:1;min-height:38px;box-sizing:border-box;padding:3px 8px;background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-date-range-container:focus-within{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-range-container.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-subfield{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.rpt-date-prefix{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--rpt-color-text-muted, #94a3b8);-webkit-user-select:none;user-select:none}.rpt-date-input{width:100%;border:none;outline:none;background:transparent;font-size:var(--rpt-font-size-base, .84rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);min-width:0;padding:4px 0}.rpt-date-input:disabled{color:var(--rpt-color-text-muted, #94a3b8);cursor:not-allowed}.rpt-range-separator{color:var(--rpt-color-text-muted, #94a3b8);font-size:.8125rem;-webkit-user-select:none;user-select:none;padding:0 2px}.rpt-range-clear-btn{border:none;background:#f1f5f9;color:var(--rpt-color-text-muted, #64748b);width:18px;height:18px;border-radius:50%;font-size:.6875rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:background-color .15s ease,color .15s ease}.rpt-range-clear-btn:hover{background-color:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.rpt-error-text{font-size
|
|
3611
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:5px;box-sizing:border-box}.rpt-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-preset-pills{display:inline-flex;align-items:center;gap:3px;flex-wrap:wrap}.rpt-preset-pill{border:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);font-size:.6875rem;font-weight:500;padding:1px 7px;border-radius:12px;cursor:pointer;line-height:1.4;transition:all .12s ease}.rpt-preset-pill:hover:not(:disabled){border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);background:#eff6ff}.rpt-preset-pill.is-active{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.rpt-preset-pill:disabled{cursor:not-allowed;opacity:.5}.rpt-date-range-container{display:flex;align-items:center;gap:8px;width:100%;flex:1;min-height:38px;box-sizing:border-box;padding:3px 8px;background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease}.rpt-date-range-container:focus-within{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-date-range-container.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-date-subfield{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.rpt-date-prefix{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--rpt-color-text-muted, #94a3b8);-webkit-user-select:none;user-select:none}.rpt-date-input{width:100%;border:none;outline:none;background:transparent;font-size:var(--rpt-font-size-base, .84rem);font-family:inherit;color:var(--rpt-color-text, #0f172a);min-width:0;padding:4px 0}.rpt-date-input:disabled{color:var(--rpt-color-text-muted, #94a3b8);cursor:not-allowed}.rpt-range-separator{color:var(--rpt-color-text-muted, #94a3b8);font-size:.8125rem;-webkit-user-select:none;user-select:none;padding:0 2px}.rpt-range-clear-btn{border:none;background:#f1f5f9;color:var(--rpt-color-text-muted, #64748b);width:18px;height:18px;border-radius:50%;font-size:.6875rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:background-color .15s ease,color .15s ease}.rpt-range-clear-btn:hover{background-color:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"] }]
|
|
3612
3612
|
}], ctorParameters: () => [] });
|
|
3613
3613
|
|
|
3614
3614
|
class RptNumberComponent {
|
|
@@ -3674,7 +3674,7 @@ class RptNumberComponent {
|
|
|
3674
3674
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3675
3675
|
}
|
|
3676
3676
|
</div>
|
|
3677
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;display:flex;align-items:stretch;width:100%;flex:1;min-height:0}.rpt-affix{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);background-color:var(--rpt-color-surface, #f8fafc);padding:0 10px;height:100%;min-height:38px;display:flex;align-items:center;border:1px solid var(--rpt-color-border, #cbd5e1);-webkit-user-select:none;user-select:none;box-sizing:border-box}.rpt-prefix{border-right:none;border-top-left-radius:var(--rpt-border-radius, 6px);border-bottom-left-radius:var(--rpt-border-radius, 6px)}.rpt-suffix{border-left:none;border-top-right-radius:var(--rpt-border-radius, 6px);border-bottom-right-radius:var(--rpt-border-radius, 6px)}.rpt-number-input{width:100%;box-sizing:border-box;height:100%;min-height:38px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.has-prefix .rpt-number-input{border-top-left-radius:0;border-bottom-left-radius:0}.has-suffix .rpt-number-input{border-top-right-radius:0;border-bottom-right-radius:0}.rpt-number-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-number-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-number-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-number-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-number-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size
|
|
3677
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;display:flex;align-items:stretch;width:100%;flex:1;min-height:0}.rpt-affix{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);background-color:var(--rpt-color-surface, #f8fafc);padding:0 10px;height:100%;min-height:38px;display:flex;align-items:center;border:1px solid var(--rpt-color-border, #cbd5e1);-webkit-user-select:none;user-select:none;box-sizing:border-box}.rpt-prefix{border-right:none;border-top-left-radius:var(--rpt-border-radius, 6px);border-bottom-left-radius:var(--rpt-border-radius, 6px)}.rpt-suffix{border-left:none;border-top-right-radius:var(--rpt-border-radius, 6px);border-bottom-right-radius:var(--rpt-border-radius, 6px)}.rpt-number-input{width:100%;box-sizing:border-box;height:100%;min-height:38px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.has-prefix .rpt-number-input{border-top-left-radius:0;border-bottom-left-radius:0}.has-suffix .rpt-number-input{border-top-right-radius:0;border-bottom-right-radius:0}.rpt-number-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-number-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-number-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-number-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-number-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3678
3678
|
}
|
|
3679
3679
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptNumberComponent, decorators: [{
|
|
3680
3680
|
type: Component,
|
|
@@ -3713,7 +3713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3713
3713
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3714
3714
|
}
|
|
3715
3715
|
</div>
|
|
3716
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;display:flex;align-items:stretch;width:100%;flex:1;min-height:0}.rpt-affix{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);background-color:var(--rpt-color-surface, #f8fafc);padding:0 10px;height:100%;min-height:38px;display:flex;align-items:center;border:1px solid var(--rpt-color-border, #cbd5e1);-webkit-user-select:none;user-select:none;box-sizing:border-box}.rpt-prefix{border-right:none;border-top-left-radius:var(--rpt-border-radius, 6px);border-bottom-left-radius:var(--rpt-border-radius, 6px)}.rpt-suffix{border-left:none;border-top-right-radius:var(--rpt-border-radius, 6px);border-bottom-right-radius:var(--rpt-border-radius, 6px)}.rpt-number-input{width:100%;box-sizing:border-box;height:100%;min-height:38px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.has-prefix .rpt-number-input{border-top-left-radius:0;border-bottom-left-radius:0}.has-suffix .rpt-number-input{border-top-right-radius:0;border-bottom-right-radius:0}.rpt-number-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-number-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-number-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-number-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-number-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size
|
|
3716
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-field-group{display:flex;flex-direction:column;height:100%;gap:4px;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-input-wrapper{position:relative;display:flex;align-items:stretch;width:100%;flex:1;min-height:0}.rpt-affix{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);background-color:var(--rpt-color-surface, #f8fafc);padding:0 10px;height:100%;min-height:38px;display:flex;align-items:center;border:1px solid var(--rpt-color-border, #cbd5e1);-webkit-user-select:none;user-select:none;box-sizing:border-box}.rpt-prefix{border-right:none;border-top-left-radius:var(--rpt-border-radius, 6px);border-bottom-left-radius:var(--rpt-border-radius, 6px)}.rpt-suffix{border-left:none;border-top-right-radius:var(--rpt-border-radius, 6px);border-bottom-right-radius:var(--rpt-border-radius, 6px)}.rpt-number-input{width:100%;box-sizing:border-box;height:100%;min-height:38px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a);background-color:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);transition:border-color var(--rpt-transition-speed, .15s) ease,box-shadow var(--rpt-transition-speed, .15s) ease;outline:none}.has-prefix .rpt-number-input{border-top-left-radius:0;border-bottom-left-radius:0}.has-suffix .rpt-number-input{border-top-right-radius:0;border-bottom-right-radius:0}.rpt-number-input:hover:not(:disabled){border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-number-input:focus{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-number-input:disabled{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text-muted, #64748b);cursor:not-allowed}.rpt-number-input.rpt-invalid{border-color:var(--rpt-color-danger, #ef4444)}.rpt-number-input.rpt-invalid:focus{box-shadow:0 0 0 3px #ef444440}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"] }]
|
|
3717
3717
|
}] });
|
|
3718
3718
|
|
|
3719
3719
|
class RptCheckboxComponent {
|
|
@@ -3764,7 +3764,7 @@ class RptCheckboxComponent {
|
|
|
3764
3764
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3765
3765
|
}
|
|
3766
3766
|
</div>
|
|
3767
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-checkbox-field{display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:4px;padding-bottom:8px;box-sizing:border-box}.rpt-checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.rpt-checkbox-input{position:absolute;opacity:0;width:0;height:0;margin:0}.rpt-custom-checkbox{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);background-color:var(--rpt-color-bg, #ffffff);display:flex;align-items:center;justify-content:center;transition:all var(--rpt-transition-speed, .15s) ease;color:var(--rpt-color-text-inverse, #ffffff);flex-shrink:0}.rpt-checkbox-label:hover .rpt-custom-checkbox{border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-checkbox-input:focus-visible+.rpt-custom-checkbox{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-checkbox-input:checked+.rpt-custom-checkbox{background-color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.rpt-check-icon{opacity:0;transform:scale(.6);transition:all var(--rpt-transition-speed, .15s) ease}.rpt-checkbox-input:checked+.rpt-custom-checkbox .rpt-check-icon{opacity:1;transform:scale(1)}.rpt-checkbox-input:disabled+.rpt-custom-checkbox{background-color:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-border, #cbd5e1);cursor:not-allowed}.rpt-checkbox-text{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a)}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-error-text{font-size
|
|
3767
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-checkbox-field{display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:4px;padding-bottom:8px;box-sizing:border-box}.rpt-checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.rpt-checkbox-input{position:absolute;opacity:0;width:0;height:0;margin:0}.rpt-custom-checkbox{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);background-color:var(--rpt-color-bg, #ffffff);display:flex;align-items:center;justify-content:center;transition:all var(--rpt-transition-speed, .15s) ease;color:var(--rpt-color-text-inverse, #ffffff);flex-shrink:0}.rpt-checkbox-label:hover .rpt-custom-checkbox{border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-checkbox-input:focus-visible+.rpt-custom-checkbox{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-checkbox-input:checked+.rpt-custom-checkbox{background-color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.rpt-check-icon{opacity:0;transform:scale(.6);transition:all var(--rpt-transition-speed, .15s) ease}.rpt-checkbox-input:checked+.rpt-custom-checkbox .rpt-check-icon{opacity:1;transform:scale(1)}.rpt-checkbox-input:disabled+.rpt-custom-checkbox{background-color:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-border, #cbd5e1);cursor:not-allowed}.rpt-checkbox-text{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a)}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3768
3768
|
}
|
|
3769
3769
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptCheckboxComponent, decorators: [{
|
|
3770
3770
|
type: Component,
|
|
@@ -3794,7 +3794,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3794
3794
|
<span class="rpt-error-text">{{ errorMessage() }}</span>
|
|
3795
3795
|
}
|
|
3796
3796
|
</div>
|
|
3797
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-checkbox-field{display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:4px;padding-bottom:8px;box-sizing:border-box}.rpt-checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.rpt-checkbox-input{position:absolute;opacity:0;width:0;height:0;margin:0}.rpt-custom-checkbox{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);background-color:var(--rpt-color-bg, #ffffff);display:flex;align-items:center;justify-content:center;transition:all var(--rpt-transition-speed, .15s) ease;color:var(--rpt-color-text-inverse, #ffffff);flex-shrink:0}.rpt-checkbox-label:hover .rpt-custom-checkbox{border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-checkbox-input:focus-visible+.rpt-custom-checkbox{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-checkbox-input:checked+.rpt-custom-checkbox{background-color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.rpt-check-icon{opacity:0;transform:scale(.6);transition:all var(--rpt-transition-speed, .15s) ease}.rpt-checkbox-input:checked+.rpt-custom-checkbox .rpt-check-icon{opacity:1;transform:scale(1)}.rpt-checkbox-input:disabled+.rpt-custom-checkbox{background-color:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-border, #cbd5e1);cursor:not-allowed}.rpt-checkbox-text{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a)}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-error-text{font-size
|
|
3797
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-checkbox-field{display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:4px;padding-bottom:8px;box-sizing:border-box}.rpt-checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.rpt-checkbox-input{position:absolute;opacity:0;width:0;height:0;margin:0}.rpt-custom-checkbox{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);background-color:var(--rpt-color-bg, #ffffff);display:flex;align-items:center;justify-content:center;transition:all var(--rpt-transition-speed, .15s) ease;color:var(--rpt-color-text-inverse, #ffffff);flex-shrink:0}.rpt-checkbox-label:hover .rpt-custom-checkbox{border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-checkbox-input:focus-visible+.rpt-custom-checkbox{border-color:var(--rpt-color-border-focus, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-checkbox-input:checked+.rpt-custom-checkbox{background-color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.rpt-check-icon{opacity:0;transform:scale(.6);transition:all var(--rpt-transition-speed, .15s) ease}.rpt-checkbox-input:checked+.rpt-custom-checkbox .rpt-check-icon{opacity:1;transform:scale(1)}.rpt-checkbox-input:disabled+.rpt-custom-checkbox{background-color:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-border, #cbd5e1);cursor:not-allowed}.rpt-checkbox-text{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text, #0f172a)}.rpt-required-marker{color:var(--rpt-color-danger, #ef4444);margin-left:2px}.rpt-error-text{font-size:.7rem;color:var(--rpt-color-danger, #ef4444);margin-top:3px;line-height:1.25;max-width:100%;overflow-wrap:anywhere;word-break:break-word;display:block}\n"] }]
|
|
3798
3798
|
}] });
|
|
3799
3799
|
|
|
3800
3800
|
/**
|
|
@@ -3949,6 +3949,28 @@ const ICON_REGISTRY = {
|
|
|
3949
3949
|
'chevron-up': {
|
|
3950
3950
|
polylines: ['18 15 12 9 6 15']
|
|
3951
3951
|
},
|
|
3952
|
+
'chevron-left': {
|
|
3953
|
+
polylines: ['15 18 9 12 15 6']
|
|
3954
|
+
},
|
|
3955
|
+
'chevron-right': {
|
|
3956
|
+
polylines: ['9 18 15 12 9 6']
|
|
3957
|
+
},
|
|
3958
|
+
'panel-left': {
|
|
3959
|
+
rects: [{ x: 3, y: 3, width: 18, height: 18, rx: 3 }],
|
|
3960
|
+
lines: [{ x1: 9, y1: 3, x2: 9, y2: 21 }]
|
|
3961
|
+
},
|
|
3962
|
+
'sidebar-left': {
|
|
3963
|
+
rects: [{ x: 3, y: 3, width: 18, height: 18, rx: 3 }],
|
|
3964
|
+
lines: [{ x1: 9, y1: 3, x2: 9, y2: 21 }]
|
|
3965
|
+
},
|
|
3966
|
+
'panel-right': {
|
|
3967
|
+
rects: [{ x: 3, y: 3, width: 18, height: 18, rx: 3 }],
|
|
3968
|
+
lines: [{ x1: 15, y1: 3, x2: 15, y2: 21 }]
|
|
3969
|
+
},
|
|
3970
|
+
'sidebar-right': {
|
|
3971
|
+
rects: [{ x: 3, y: 3, width: 18, height: 18, rx: 3 }],
|
|
3972
|
+
lines: [{ x1: 15, y1: 3, x2: 15, y2: 21 }]
|
|
3973
|
+
},
|
|
3952
3974
|
// Date / Calendar
|
|
3953
3975
|
'date': {
|
|
3954
3976
|
rects: [{ x: 3, y: 4, width: 18, height: 18, rx: 3 }],
|
|
@@ -4513,7 +4535,7 @@ class RptKpiCardComponent {
|
|
|
4513
4535
|
<!-- Subtle glowing gradient bar at card top -->
|
|
4514
4536
|
<div class="rpt-kpi-accent-bar"></div>
|
|
4515
4537
|
</div>
|
|
4516
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box}.rpt-kpi-card{position:relative;background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-lg, 12px);padding:var(--rpt-space-md, 20px);box-shadow:0 2px 6px -1px #0000000d,0 1px 4px -2px #0000000a;display:flex;flex-direction:column;justify-content:space-between;height:100%;box-sizing:border-box;gap:12px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;-webkit-user-select:none;user-select:none}.rpt-kpi-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px -4px #00000014,0 4px 10px -4px #0000000d;border-color:var(--rpt-border-hover, #cbd5e1)}.rpt-kpi-accent-bar{position:absolute;top:0;left:0;right:0;height:3px;background:var(--kpi-accent, var(--rpt-primary, #2563eb))}.rpt-kpi-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.rpt-kpi-title{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-icon-badge{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--kpi-badge-bg, rgba(37, 99, 235, .08));color:var(--kpi-accent, var(--rpt-primary, #2563eb));font-size:1rem}.rpt-kpi-body{display:flex;flex-direction:column;gap:6px}.rpt-kpi-value-row{display:flex;align-items:baseline;gap:4px}.rpt-kpi-prefix,.rpt-kpi-suffix{font-size:1.125rem;font-weight:500;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-value{font-size:1.875rem;font-weight:700;color:var(--rpt-text-color, #0f172a);line-height:1.1;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.rpt-kpi-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}.rpt-kpi-trend{display:inline-flex;align-items:center;gap:2px;font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:4px}.rpt-kpi-trend--up{background:#10b9811f;color:#059669}.rpt-kpi-trend--down{background:#ef44441f;color:#dc2626}.rpt-kpi-trend--neutral{background:#64748b1f;color:#475569}.rpt-kpi-subtitle{font-size
|
|
4538
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box}.rpt-kpi-card{position:relative;background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-lg, 12px);padding:var(--rpt-space-md, 20px);box-shadow:0 2px 6px -1px #0000000d,0 1px 4px -2px #0000000a;display:flex;flex-direction:column;justify-content:space-between;height:100%;box-sizing:border-box;gap:12px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;-webkit-user-select:none;user-select:none}.rpt-kpi-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px -4px #00000014,0 4px 10px -4px #0000000d;border-color:var(--rpt-border-hover, #cbd5e1)}.rpt-kpi-accent-bar{position:absolute;top:0;left:0;right:0;height:3px;background:var(--kpi-accent, var(--rpt-primary, #2563eb))}.rpt-kpi-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.rpt-kpi-title{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-icon-badge{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--kpi-badge-bg, rgba(37, 99, 235, .08));color:var(--kpi-accent, var(--rpt-primary, #2563eb));font-size:1rem}.rpt-kpi-body{display:flex;flex-direction:column;gap:6px}.rpt-kpi-value-row{display:flex;align-items:baseline;gap:4px}.rpt-kpi-prefix,.rpt-kpi-suffix{font-size:1.125rem;font-weight:500;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-value{font-size:1.875rem;font-weight:700;color:var(--rpt-text-color, #0f172a);line-height:1.1;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.rpt-kpi-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}.rpt-kpi-trend{display:inline-flex;align-items:center;gap:2px;font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:4px}.rpt-kpi-trend--up{background:#10b9811f;color:#059669}.rpt-kpi-trend--down{background:#ef44441f;color:#dc2626}.rpt-kpi-trend--neutral{background:#64748b1f;color:#475569}.rpt-kpi-subtitle{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, var(--rpt-text-muted, #64748b));line-height:1.4}.rpt-kpi-card--primary{--kpi-accent: var(--rpt-primary, #2563eb);--kpi-badge-bg: rgba(37, 99, 235, .1)}.rpt-kpi-card--success{--kpi-accent: #10b981;--kpi-badge-bg: rgba(16, 185, 129, .1)}.rpt-kpi-card--warning{--kpi-accent: #f59e0b;--kpi-badge-bg: rgba(245, 158, 11, .1)}.rpt-kpi-card--danger{--kpi-accent: #ef4444;--kpi-badge-bg: rgba(239, 68, 68, .1)}.rpt-kpi-card--info{--kpi-accent: #06b6d4;--kpi-badge-bg: rgba(6, 182, 212, .1)}.rpt-kpi-card--neutral{--kpi-accent: #64748b;--kpi-badge-bg: rgba(100, 116, 139, .1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4517
4539
|
}
|
|
4518
4540
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptKpiCardComponent, decorators: [{
|
|
4519
4541
|
type: Component,
|
|
@@ -4569,7 +4591,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4569
4591
|
<!-- Subtle glowing gradient bar at card top -->
|
|
4570
4592
|
<div class="rpt-kpi-accent-bar"></div>
|
|
4571
4593
|
</div>
|
|
4572
|
-
`, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box}.rpt-kpi-card{position:relative;background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-lg, 12px);padding:var(--rpt-space-md, 20px);box-shadow:0 2px 6px -1px #0000000d,0 1px 4px -2px #0000000a;display:flex;flex-direction:column;justify-content:space-between;height:100%;box-sizing:border-box;gap:12px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;-webkit-user-select:none;user-select:none}.rpt-kpi-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px -4px #00000014,0 4px 10px -4px #0000000d;border-color:var(--rpt-border-hover, #cbd5e1)}.rpt-kpi-accent-bar{position:absolute;top:0;left:0;right:0;height:3px;background:var(--kpi-accent, var(--rpt-primary, #2563eb))}.rpt-kpi-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.rpt-kpi-title{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-icon-badge{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--kpi-badge-bg, rgba(37, 99, 235, .08));color:var(--kpi-accent, var(--rpt-primary, #2563eb));font-size:1rem}.rpt-kpi-body{display:flex;flex-direction:column;gap:6px}.rpt-kpi-value-row{display:flex;align-items:baseline;gap:4px}.rpt-kpi-prefix,.rpt-kpi-suffix{font-size:1.125rem;font-weight:500;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-value{font-size:1.875rem;font-weight:700;color:var(--rpt-text-color, #0f172a);line-height:1.1;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.rpt-kpi-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}.rpt-kpi-trend{display:inline-flex;align-items:center;gap:2px;font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:4px}.rpt-kpi-trend--up{background:#10b9811f;color:#059669}.rpt-kpi-trend--down{background:#ef44441f;color:#dc2626}.rpt-kpi-trend--neutral{background:#64748b1f;color:#475569}.rpt-kpi-subtitle{font-size
|
|
4594
|
+
`, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box}.rpt-kpi-card{position:relative;background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-lg, 12px);padding:var(--rpt-space-md, 20px);box-shadow:0 2px 6px -1px #0000000d,0 1px 4px -2px #0000000a;display:flex;flex-direction:column;justify-content:space-between;height:100%;box-sizing:border-box;gap:12px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;-webkit-user-select:none;user-select:none}.rpt-kpi-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px -4px #00000014,0 4px 10px -4px #0000000d;border-color:var(--rpt-border-hover, #cbd5e1)}.rpt-kpi-accent-bar{position:absolute;top:0;left:0;right:0;height:3px;background:var(--kpi-accent, var(--rpt-primary, #2563eb))}.rpt-kpi-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.rpt-kpi-title{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-icon-badge{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--kpi-badge-bg, rgba(37, 99, 235, .08));color:var(--kpi-accent, var(--rpt-primary, #2563eb));font-size:1rem}.rpt-kpi-body{display:flex;flex-direction:column;gap:6px}.rpt-kpi-value-row{display:flex;align-items:baseline;gap:4px}.rpt-kpi-prefix,.rpt-kpi-suffix{font-size:1.125rem;font-weight:500;color:var(--rpt-text-muted, #64748b)}.rpt-kpi-value{font-size:1.875rem;font-weight:700;color:var(--rpt-text-color, #0f172a);line-height:1.1;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.rpt-kpi-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}.rpt-kpi-trend{display:inline-flex;align-items:center;gap:2px;font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:4px}.rpt-kpi-trend--up{background:#10b9811f;color:#059669}.rpt-kpi-trend--down{background:#ef44441f;color:#dc2626}.rpt-kpi-trend--neutral{background:#64748b1f;color:#475569}.rpt-kpi-subtitle{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, var(--rpt-text-muted, #64748b));line-height:1.4}.rpt-kpi-card--primary{--kpi-accent: var(--rpt-primary, #2563eb);--kpi-badge-bg: rgba(37, 99, 235, .1)}.rpt-kpi-card--success{--kpi-accent: #10b981;--kpi-badge-bg: rgba(16, 185, 129, .1)}.rpt-kpi-card--warning{--kpi-accent: #f59e0b;--kpi-badge-bg: rgba(245, 158, 11, .1)}.rpt-kpi-card--danger{--kpi-accent: #ef4444;--kpi-badge-bg: rgba(239, 68, 68, .1)}.rpt-kpi-card--info{--kpi-accent: #06b6d4;--kpi-badge-bg: rgba(6, 182, 212, .1)}.rpt-kpi-card--neutral{--kpi-accent: #64748b;--kpi-badge-bg: rgba(100, 116, 139, .1)}\n"] }]
|
|
4573
4595
|
}] });
|
|
4574
4596
|
|
|
4575
4597
|
class ReportChartBridgeComponent {
|
|
@@ -5841,6 +5863,7 @@ class RptGridOutletDirective {
|
|
|
5841
5863
|
gridStateChange = output();
|
|
5842
5864
|
columnDefsChange = output();
|
|
5843
5865
|
rowClick = output();
|
|
5866
|
+
selectionChange = output();
|
|
5844
5867
|
constructor() {
|
|
5845
5868
|
effect(() => {
|
|
5846
5869
|
const type = this.componentType();
|
|
@@ -5891,6 +5914,12 @@ class RptGridOutletDirective {
|
|
|
5891
5914
|
else if (instance.cellClick && typeof instance.cellClick.subscribe === 'function') {
|
|
5892
5915
|
this.subs.push(instance.cellClick.subscribe(emitRow));
|
|
5893
5916
|
}
|
|
5917
|
+
if (instance.selectionChanged && typeof instance.selectionChanged.subscribe === 'function') {
|
|
5918
|
+
this.subs.push(instance.selectionChanged.subscribe((selection) => {
|
|
5919
|
+
const rows = Array.isArray(selection) ? selection : (selection ? [selection] : []);
|
|
5920
|
+
this.selectionChange.emit(rows);
|
|
5921
|
+
}));
|
|
5922
|
+
}
|
|
5894
5923
|
const currentInputs = this.inputs();
|
|
5895
5924
|
for (const [key, value] of Object.entries(currentInputs)) {
|
|
5896
5925
|
try {
|
|
@@ -5916,7 +5945,7 @@ class RptGridOutletDirective {
|
|
|
5916
5945
|
this.clear();
|
|
5917
5946
|
}
|
|
5918
5947
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptGridOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5919
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: RptGridOutletDirective, isStandalone: true, selector: "[rptGridOutlet]", inputs: { componentType: { classPropertyName: "componentType", publicName: "rptGridOutlet", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", rowClick: "rowClick" }, ngImport: i0 });
|
|
5948
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: RptGridOutletDirective, isStandalone: true, selector: "[rptGridOutlet]", inputs: { componentType: { classPropertyName: "componentType", publicName: "rptGridOutlet", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", rowClick: "rowClick", selectionChange: "selectionChange" }, ngImport: i0 });
|
|
5920
5949
|
}
|
|
5921
5950
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptGridOutletDirective, decorators: [{
|
|
5922
5951
|
type: Directive,
|
|
@@ -5943,13 +5972,43 @@ class ReportGridBridgeComponent {
|
|
|
5943
5972
|
gridStateChange = output();
|
|
5944
5973
|
columnDefsChange = output();
|
|
5945
5974
|
rowClick = output();
|
|
5975
|
+
selectionChange = output();
|
|
5946
5976
|
customGridComponent = computed(() => this.injectedGrid ?? null);
|
|
5977
|
+
selectedRows = signal([]);
|
|
5947
5978
|
hasRowClickAction = computed(() => {
|
|
5948
5979
|
const def = this.gridDefinition();
|
|
5949
5980
|
return !!(def?.rowClickAction ||
|
|
5950
5981
|
def?.options?.rowClickAction ||
|
|
5951
5982
|
this.visibleColumns().some((c) => !!c.action));
|
|
5952
5983
|
});
|
|
5984
|
+
isCheckboxSelectionEnabled = computed(() => {
|
|
5985
|
+
const opts = this.gridDefinition()?.options;
|
|
5986
|
+
if (opts?.checkboxSelection !== undefined) {
|
|
5987
|
+
return opts.checkboxSelection;
|
|
5988
|
+
}
|
|
5989
|
+
if (opts?.selectable) {
|
|
5990
|
+
return true;
|
|
5991
|
+
}
|
|
5992
|
+
return this.visibleColumns().some((c) => c.checkboxSelection);
|
|
5993
|
+
});
|
|
5994
|
+
effectiveRowSelection = computed(() => {
|
|
5995
|
+
const opts = this.gridDefinition()?.options;
|
|
5996
|
+
return opts?.selectionMode || opts?.rowSelection || 'multiple';
|
|
5997
|
+
});
|
|
5998
|
+
isHeaderCheckboxSelectionEnabled = computed(() => {
|
|
5999
|
+
if (this.effectiveRowSelection() === 'single') {
|
|
6000
|
+
return false;
|
|
6001
|
+
}
|
|
6002
|
+
const opts = this.gridDefinition()?.options;
|
|
6003
|
+
if (opts?.headerCheckboxSelection !== undefined) {
|
|
6004
|
+
return opts.headerCheckboxSelection;
|
|
6005
|
+
}
|
|
6006
|
+
return this.isCheckboxSelectionEnabled();
|
|
6007
|
+
});
|
|
6008
|
+
isSelectionEnabled = computed(() => {
|
|
6009
|
+
const opts = this.gridDefinition()?.options;
|
|
6010
|
+
return !!(opts?.selectable || opts?.checkboxSelection || this.visibleColumns().some((c) => c.checkboxSelection));
|
|
6011
|
+
});
|
|
5953
6012
|
sortColumn = signal(null);
|
|
5954
6013
|
sortDirection = signal('asc');
|
|
5955
6014
|
currentPage = signal(1);
|
|
@@ -5974,7 +6033,10 @@ class ReportGridBridgeComponent {
|
|
|
5974
6033
|
return defined;
|
|
5975
6034
|
});
|
|
5976
6035
|
bridgedColumns = computed(() => {
|
|
5977
|
-
|
|
6036
|
+
const isGridCheckbox = this.isCheckboxSelectionEnabled();
|
|
6037
|
+
const isGridHeaderCheckbox = this.isHeaderCheckboxSelectionEnabled();
|
|
6038
|
+
const hasExplicitColCheckbox = this.visibleColumns().some((c) => c.checkboxSelection);
|
|
6039
|
+
return this.visibleColumns().map((col, idx) => {
|
|
5978
6040
|
let widthNum;
|
|
5979
6041
|
if (typeof col.width === 'string' && col.width.endsWith('px')) {
|
|
5980
6042
|
widthNum = parseInt(col.width, 10);
|
|
@@ -5982,6 +6044,12 @@ class ReportGridBridgeComponent {
|
|
|
5982
6044
|
else if (typeof col.width === 'number') {
|
|
5983
6045
|
widthNum = col.width;
|
|
5984
6046
|
}
|
|
6047
|
+
let colCheckboxSelection = col.checkboxSelection;
|
|
6048
|
+
let colHeaderCheckboxSelection = col.headerCheckboxSelection;
|
|
6049
|
+
if (!hasExplicitColCheckbox && isGridCheckbox && idx === 0) {
|
|
6050
|
+
colCheckboxSelection = true;
|
|
6051
|
+
colHeaderCheckboxSelection = isGridHeaderCheckbox;
|
|
6052
|
+
}
|
|
5985
6053
|
return {
|
|
5986
6054
|
...col,
|
|
5987
6055
|
headerName: col.label, // BWays-grid / AG Grid standard
|
|
@@ -5990,6 +6058,8 @@ class ReportGridBridgeComponent {
|
|
|
5990
6058
|
hide: col.visible === false,
|
|
5991
6059
|
width: widthNum,
|
|
5992
6060
|
aggFunc: col.aggregate && col.aggregate !== 'none' ? col.aggregate : undefined,
|
|
6061
|
+
checkboxSelection: colCheckboxSelection,
|
|
6062
|
+
headerCheckboxSelection: colHeaderCheckboxSelection,
|
|
5993
6063
|
};
|
|
5994
6064
|
});
|
|
5995
6065
|
});
|
|
@@ -6003,10 +6073,23 @@ class ReportGridBridgeComponent {
|
|
|
6003
6073
|
const cols = this.visibleColumns().map((c) => c.field).slice(0, 5).join('_');
|
|
6004
6074
|
return `rpt_${ds}_${cols || 'grid'}`;
|
|
6005
6075
|
});
|
|
6006
|
-
gridConfig = computed(() =>
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6076
|
+
gridConfig = computed(() => {
|
|
6077
|
+
const opts = this.gridDefinition()?.options || {};
|
|
6078
|
+
const rowSel = this.effectiveRowSelection();
|
|
6079
|
+
const hasCheckbox = this.isCheckboxSelectionEnabled();
|
|
6080
|
+
const hasHeaderCheckbox = this.isHeaderCheckboxSelectionEnabled();
|
|
6081
|
+
return {
|
|
6082
|
+
sideBar: opts.sideBar !== undefined ? opts.sideBar : true,
|
|
6083
|
+
statusBar: opts.statusBar !== undefined ? opts.statusBar : true,
|
|
6084
|
+
globalSearch: opts.globalSearch !== undefined ? opts.globalSearch : true,
|
|
6085
|
+
...opts,
|
|
6086
|
+
rowSelection: rowSel,
|
|
6087
|
+
selectionMode: rowSel,
|
|
6088
|
+
checkboxSelection: hasCheckbox,
|
|
6089
|
+
headerCheckboxSelection: hasHeaderCheckbox,
|
|
6090
|
+
stateKey: this.gridStateKey(),
|
|
6091
|
+
};
|
|
6092
|
+
});
|
|
6010
6093
|
gridReportState = computed(() => {
|
|
6011
6094
|
const opts = this.gridDefinition()?.options;
|
|
6012
6095
|
return {
|
|
@@ -6026,6 +6109,7 @@ class ReportGridBridgeComponent {
|
|
|
6026
6109
|
reportState: this.gridReportState(),
|
|
6027
6110
|
pagination: this.gridDefinition().options?.pagination !== false,
|
|
6028
6111
|
pageSize: this.gridDefinition().options?.pageSize ?? 10,
|
|
6112
|
+
rowSelection: this.effectiveRowSelection(),
|
|
6029
6113
|
}));
|
|
6030
6114
|
showRowNumbers = computed(() => {
|
|
6031
6115
|
return !!this.gridDefinition().options?.showRowNumbers;
|
|
@@ -6037,7 +6121,7 @@ class ReportGridBridgeComponent {
|
|
|
6037
6121
|
return this.gridDefinition().options?.pageSize ?? 10;
|
|
6038
6122
|
});
|
|
6039
6123
|
colSpan = computed(() => {
|
|
6040
|
-
return this.visibleColumns().length + (this.showRowNumbers() ? 1 : 0);
|
|
6124
|
+
return this.visibleColumns().length + (this.showRowNumbers() ? 1 : 0) + (this.isSelectionEnabled() ? 1 : 0);
|
|
6041
6125
|
});
|
|
6042
6126
|
hasAggregates = computed(() => {
|
|
6043
6127
|
return (this.gridDefinition().options?.showFooter &&
|
|
@@ -6155,10 +6239,78 @@ class ReportGridBridgeComponent {
|
|
|
6155
6239
|
}
|
|
6156
6240
|
return '';
|
|
6157
6241
|
}
|
|
6242
|
+
onSelectionChange(selected) {
|
|
6243
|
+
const rows = Array.isArray(selected) ? selected : (selected ? [selected] : []);
|
|
6244
|
+
this.selectedRows.set(rows);
|
|
6245
|
+
this.selectionChange.emit(rows);
|
|
6246
|
+
}
|
|
6247
|
+
isRowSelected(row) {
|
|
6248
|
+
return this.selectedRows().includes(row);
|
|
6249
|
+
}
|
|
6250
|
+
isAllSelected() {
|
|
6251
|
+
const data = this.paginatedData();
|
|
6252
|
+
if (data.length === 0)
|
|
6253
|
+
return false;
|
|
6254
|
+
return data.every((r) => this.isRowSelected(r));
|
|
6255
|
+
}
|
|
6256
|
+
isPartiallySelected() {
|
|
6257
|
+
const data = this.paginatedData();
|
|
6258
|
+
if (data.length === 0)
|
|
6259
|
+
return false;
|
|
6260
|
+
const count = data.filter((r) => this.isRowSelected(r)).length;
|
|
6261
|
+
return count > 0 && count < data.length;
|
|
6262
|
+
}
|
|
6263
|
+
toggleSelectAll(event) {
|
|
6264
|
+
const checked = event.target.checked;
|
|
6265
|
+
const current = this.selectedRows();
|
|
6266
|
+
const pageRows = this.paginatedData();
|
|
6267
|
+
let next;
|
|
6268
|
+
if (checked) {
|
|
6269
|
+
const set = new Set([...current, ...pageRows]);
|
|
6270
|
+
next = Array.from(set);
|
|
6271
|
+
}
|
|
6272
|
+
else {
|
|
6273
|
+
next = current.filter((r) => !pageRows.includes(r));
|
|
6274
|
+
}
|
|
6275
|
+
this.selectedRows.set(next);
|
|
6276
|
+
this.selectionChange.emit(next);
|
|
6277
|
+
}
|
|
6278
|
+
toggleRowSelection(row, event) {
|
|
6279
|
+
const checked = event.target.checked;
|
|
6280
|
+
const current = this.selectedRows();
|
|
6281
|
+
const mode = this.effectiveRowSelection();
|
|
6282
|
+
let next;
|
|
6283
|
+
if (mode === 'single') {
|
|
6284
|
+
next = checked ? [row] : [];
|
|
6285
|
+
}
|
|
6286
|
+
else {
|
|
6287
|
+
if (checked) {
|
|
6288
|
+
next = current.includes(row) ? current : [...current, row];
|
|
6289
|
+
}
|
|
6290
|
+
else {
|
|
6291
|
+
next = current.filter((r) => r !== row);
|
|
6292
|
+
}
|
|
6293
|
+
}
|
|
6294
|
+
this.selectedRows.set(next);
|
|
6295
|
+
this.selectionChange.emit(next);
|
|
6296
|
+
}
|
|
6158
6297
|
onRowClick(row, event) {
|
|
6159
|
-
if (
|
|
6160
|
-
|
|
6161
|
-
|
|
6298
|
+
if (this.isSelectionEnabled()) {
|
|
6299
|
+
const current = this.selectedRows();
|
|
6300
|
+
const mode = this.effectiveRowSelection();
|
|
6301
|
+
let next;
|
|
6302
|
+
if (mode === 'single') {
|
|
6303
|
+
next = [row];
|
|
6304
|
+
}
|
|
6305
|
+
else {
|
|
6306
|
+
next = current.includes(row) ? current.filter((r) => r !== row) : [...current, row];
|
|
6307
|
+
}
|
|
6308
|
+
this.selectedRows.set(next);
|
|
6309
|
+
this.selectionChange.emit(next);
|
|
6310
|
+
}
|
|
6311
|
+
if (this.hasRowClickAction()) {
|
|
6312
|
+
this.rowClick.emit({ row, event });
|
|
6313
|
+
}
|
|
6162
6314
|
}
|
|
6163
6315
|
onCellClick(row, col, event) {
|
|
6164
6316
|
if (col.action) {
|
|
@@ -6167,7 +6319,7 @@ class ReportGridBridgeComponent {
|
|
|
6167
6319
|
}
|
|
6168
6320
|
}
|
|
6169
6321
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportGridBridgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6170
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ReportGridBridgeComponent, isStandalone: true, selector: "rpt-grid-bridge", inputs: { gridDefinition: { classPropertyName: "gridDefinition", publicName: "gridDefinition", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", rowClick: "rowClick" }, ngImport: i0, template: `
|
|
6322
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ReportGridBridgeComponent, isStandalone: true, selector: "rpt-grid-bridge", inputs: { gridDefinition: { classPropertyName: "gridDefinition", publicName: "gridDefinition", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", rowClick: "rowClick", selectionChange: "selectionChange" }, ngImport: i0, template: `
|
|
6171
6323
|
<div class="rpt-grid-container">
|
|
6172
6324
|
@if (customGridComponent()) {
|
|
6173
6325
|
<!-- Host-provided grid component (e.g. BWays-grid UltraGridComponent) -->
|
|
@@ -6177,6 +6329,7 @@ class ReportGridBridgeComponent {
|
|
|
6177
6329
|
(gridStateChange)="gridStateChange.emit($event)"
|
|
6178
6330
|
(columnDefsChange)="columnDefsChange.emit($event)"
|
|
6179
6331
|
(rowClick)="rowClick.emit($event)"
|
|
6332
|
+
(selectionChange)="onSelectionChange($event)"
|
|
6180
6333
|
/>
|
|
6181
6334
|
} @else {
|
|
6182
6335
|
<!-- Built-in fallback table when no external grid is provided -->
|
|
@@ -6192,6 +6345,20 @@ class ReportGridBridgeComponent {
|
|
|
6192
6345
|
@if (showRowNumbers()) {
|
|
6193
6346
|
<th class="rpt-th rpt-th-num">#</th>
|
|
6194
6347
|
}
|
|
6348
|
+
@if (isSelectionEnabled()) {
|
|
6349
|
+
<th class="rpt-th rpt-th-cb">
|
|
6350
|
+
@if (effectiveRowSelection() !== 'single' && isHeaderCheckboxSelectionEnabled()) {
|
|
6351
|
+
<input
|
|
6352
|
+
type="checkbox"
|
|
6353
|
+
class="rpt-checkbox"
|
|
6354
|
+
[checked]="isAllSelected()"
|
|
6355
|
+
[indeterminate]="isPartiallySelected()"
|
|
6356
|
+
(change)="toggleSelectAll($event)"
|
|
6357
|
+
title="Select all rows"
|
|
6358
|
+
/>
|
|
6359
|
+
}
|
|
6360
|
+
</th>
|
|
6361
|
+
}
|
|
6195
6362
|
@for (col of visibleColumns(); track col.field) {
|
|
6196
6363
|
<th
|
|
6197
6364
|
class="rpt-th"
|
|
@@ -6223,12 +6390,24 @@ class ReportGridBridgeComponent {
|
|
|
6223
6390
|
@for (row of paginatedData(); track $index) {
|
|
6224
6391
|
<tr
|
|
6225
6392
|
class="rpt-tr"
|
|
6226
|
-
[class.is-clickable]="hasRowClickAction()"
|
|
6393
|
+
[class.is-clickable]="hasRowClickAction() || isSelectionEnabled()"
|
|
6394
|
+
[class.is-selected]="isRowSelected(row)"
|
|
6227
6395
|
(click)="onRowClick(row, $event)"
|
|
6228
6396
|
>
|
|
6229
6397
|
@if (showRowNumbers()) {
|
|
6230
6398
|
<td class="rpt-td rpt-td-num">{{ (currentPage() - 1) * pageSize() + $index + 1 }}</td>
|
|
6231
6399
|
}
|
|
6400
|
+
@if (isSelectionEnabled()) {
|
|
6401
|
+
<td class="rpt-td rpt-td-cb" (click)="$event.stopPropagation()">
|
|
6402
|
+
<input
|
|
6403
|
+
[type]="effectiveRowSelection() === 'single' ? 'radio' : 'checkbox'"
|
|
6404
|
+
name="rpt-fallback-selection"
|
|
6405
|
+
class="rpt-checkbox"
|
|
6406
|
+
[checked]="isRowSelected(row)"
|
|
6407
|
+
(change)="toggleRowSelection(row, $event)"
|
|
6408
|
+
/>
|
|
6409
|
+
</td>
|
|
6410
|
+
}
|
|
6232
6411
|
@for (col of visibleColumns(); track col.field) {
|
|
6233
6412
|
<td
|
|
6234
6413
|
class="rpt-td"
|
|
@@ -6253,10 +6432,16 @@ class ReportGridBridgeComponent {
|
|
|
6253
6432
|
@if (showRowNumbers()) {
|
|
6254
6433
|
<td class="rpt-td-num"></td>
|
|
6255
6434
|
}
|
|
6435
|
+
@if (isSelectionEnabled()) {
|
|
6436
|
+
<td class="rpt-td-cb"></td>
|
|
6437
|
+
}
|
|
6256
6438
|
@for (col of visibleColumns(); track col.field) {
|
|
6257
6439
|
<td class="rpt-td-aggregate" [style.text-align]="col.align || 'left'">
|
|
6258
6440
|
@if (col.aggregate && col.aggregate !== 'none') {
|
|
6259
|
-
<
|
|
6441
|
+
<div class="rpt-aggregate-wrap" [class.is-right]="col.align === 'right'" [class.is-center]="col.align === 'center'">
|
|
6442
|
+
<span class="rpt-aggregate-label">{{ col.aggregate }}</span>
|
|
6443
|
+
<span class="rpt-aggregate-value">{{ computeAggregate(col) }}</span>
|
|
6444
|
+
</div>
|
|
6260
6445
|
}
|
|
6261
6446
|
</td>
|
|
6262
6447
|
}
|
|
@@ -6296,7 +6481,7 @@ class ReportGridBridgeComponent {
|
|
|
6296
6481
|
</div>
|
|
6297
6482
|
}
|
|
6298
6483
|
</div>
|
|
6299
|
-
`, isInline: true, styles: [":host{display:block;width:100%;margin-top:16px;font-family:var(--rpt-font-family, inherit)}.rpt-grid-container{width:100%;min-height:480px;display:flex;flex-direction:column}:host ::ng-deep bways-grid{display:block;width:100%;height:480px;min-height:480px}:host ::ng-deep .ug-wrapper{height:100%!important;min-height:480px!important}:host ::ng-deep .ug-viewport{min-height:350px!important}.rpt-table-card{background:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow, 0 1px 3px rgba(0, 0, 0, .05));overflow:hidden}.rpt-table-toolbar{padding:12px 16px;background-color:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);display:flex;align-items:center;justify-content:space-between}.rpt-table-title{font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em}.rpt-table-responsive{width:100%;overflow-x:auto}.rpt-table{width:100%;border-collapse:collapse;font-size:var(--rpt-font-size-base, .875rem);text-align:left}.rpt-th{background-color:var(--rpt-color-surface, #f8fafc);padding:10px 14px;font-weight:600;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #475569);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);white-space:nowrap;-webkit-user-select:none;user-select:none}.rpt-th.sortable{cursor:pointer}.rpt-th.sortable:hover{background-color:var(--rpt-color-surface-hover, #f1f5f9)}.rpt-th-content{display:flex;align-items:center;gap:4px}.rpt-sort-indicator{display:inline-flex;align-items:center;color:var(--rpt-color-primary, #2563eb)}.rpt-th-num,.rpt-td-num{width:48px;text-align:center;color:var(--rpt-color-text-muted, #94a3b8);font-size:var(--rpt-font-size-sm, .75rem)}.rpt-td{padding:10px 14px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);color:var(--rpt-color-text, #1e293b)}.rpt-tr:hover{background-color:var(--rpt-color-surface-hover, #f8fafc)}.rpt-tr.is-clickable{cursor:pointer}.rpt-tr.is-clickable:hover{background-color:#f1f5f9}.rpt-td.is-clickable-cell{cursor:pointer}.rpt-cell-action-link{color:var(--rpt-color-primary, #2563eb);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .15s ease}.rpt-cell-action-link:hover{color:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-empty-message{text-align:center;padding:40px 20px;color:var(--rpt-color-text-muted, #94a3b8);font-style:italic}.rpt-tfoot-row{background-color:var(--rpt-color-surface, #f8fafc);border-top:2px solid var(--rpt-color-border, #cbd5e1)}.rpt-td-aggregate{padding:
|
|
6484
|
+
`, isInline: true, styles: [":host{display:block;width:100%;margin-top:16px;font-family:var(--rpt-font-family, inherit)}.rpt-grid-container{width:100%;min-height:480px;display:flex;flex-direction:column}:host ::ng-deep bways-grid{display:block;width:100%;height:480px;min-height:480px;--ug-footer-bg: var(--rpt-color-surface, #f8fafc);--ug-footer-color: var(--rpt-color-text-secondary, #334155);--ug-header-color: var(--rpt-color-text, #0f172a);--ug-border-color: var(--rpt-color-border, #cbd5e1);--ug-font-family: var(--rpt-font-family, inherit);--ug-font-size: var(--rpt-font-size-sm, .75rem);--ug-header-font-weight: 600}:host ::ng-deep .ug-wrapper{height:100%!important;min-height:480px!important}:host ::ng-deep .ug-viewport{min-height:350px!important}:host ::ng-deep .ug-bottom-bar,:host ::ng-deep ug-pagination{background-color:var(--rpt-color-surface, #f8fafc)!important;border-top:1px solid var(--rpt-color-border, #cbd5e1)!important;color:var(--rpt-color-text-muted, #64748b)!important;font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important}:host ::ng-deep .ug-status-bar-content,:host ::ng-deep .ug-pagination-info,:host ::ng-deep .ug-page-info{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:500!important;color:var(--rpt-color-text-muted, #64748b)!important;font-variant-numeric:tabular-nums!important}:host ::ng-deep .ug-page-size{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:500!important;color:var(--rpt-color-text-muted, #64748b)!important}:host ::ng-deep .ug-page-size select{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;color:var(--rpt-color-text, #0f172a)!important;border-color:var(--rpt-color-border, #cbd5e1)!important;background-color:var(--rpt-color-surface, #ffffff)!important;border-radius:var(--rpt-border-radius-sm, 4px)!important}:host ::ng-deep .ug-total-row{background-color:var(--rpt-color-surface, #f8fafc)!important;border-top:1px solid var(--rpt-color-border, #cbd5e1)!important;border-bottom:2px solid var(--rpt-color-border, #cbd5e1)!important;font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:600!important;color:var(--rpt-color-text, #0f172a)!important;font-variant-numeric:tabular-nums!important}:host ::ng-deep .ug-total-row-label{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-xs, .6875rem)!important;font-weight:600!important;text-transform:uppercase!important;letter-spacing:.05em!important;color:var(--rpt-color-text-muted, #64748b)!important;background-color:var(--rpt-color-surface, #f8fafc)!important}:host ::ng-deep .ug-total-cell{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:600!important;color:var(--rpt-color-text, #0f172a)!important;font-variant-numeric:tabular-nums!important}.rpt-table-card{background:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow, 0 1px 3px rgba(0, 0, 0, .05));overflow:hidden}.rpt-table-toolbar{padding:12px 16px;background-color:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);display:flex;align-items:center;justify-content:space-between}.rpt-table-title{font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em}.rpt-table-responsive{width:100%;overflow-x:auto}.rpt-table{width:100%;border-collapse:collapse;font-size:var(--rpt-font-size-base, .875rem);text-align:left}.rpt-th{background-color:var(--rpt-color-surface, #f8fafc);padding:10px 14px;font-weight:600;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #475569);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);white-space:nowrap;-webkit-user-select:none;user-select:none}.rpt-th.sortable{cursor:pointer}.rpt-th.sortable:hover{background-color:var(--rpt-color-surface-hover, #f1f5f9)}.rpt-th-content{display:flex;align-items:center;gap:4px}.rpt-sort-indicator{display:inline-flex;align-items:center;color:var(--rpt-color-primary, #2563eb)}.rpt-th-num,.rpt-td-num{width:48px;text-align:center;color:var(--rpt-color-text-muted, #94a3b8);font-size:var(--rpt-font-size-sm, .75rem)}.rpt-th-cb,.rpt-td-cb{width:42px;min-width:42px;max-width:42px;text-align:center;padding:8px 10px}.rpt-checkbox{width:15px;height:15px;cursor:pointer;accent-color:var(--rpt-color-primary, #2563eb);border-radius:4px;vertical-align:middle;margin:0}.rpt-td{padding:10px 14px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);color:var(--rpt-color-text, #1e293b)}.rpt-tr:hover{background-color:var(--rpt-color-surface-hover, #f8fafc)}.rpt-tr.is-selected{background-color:#eff6ff}.rpt-tr.is-selected:hover{background-color:#dbeafe}.rpt-tr.is-clickable{cursor:pointer}.rpt-tr.is-clickable:hover{background-color:#f1f5f9}.rpt-td.is-clickable-cell{cursor:pointer}.rpt-cell-action-link{color:var(--rpt-color-primary, #2563eb);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .15s ease}.rpt-cell-action-link:hover{color:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-empty-message{text-align:center;padding:40px 20px;color:var(--rpt-color-text-muted, #94a3b8);font-style:italic}.rpt-tfoot-row{background-color:var(--rpt-color-surface, #f8fafc);border-top:1px solid var(--rpt-color-border, #cbd5e1);border-bottom:2px solid var(--rpt-color-border, #cbd5e1)}.rpt-td-aggregate{padding:8px 14px;color:var(--rpt-color-text, #0f172a);font-size:var(--rpt-font-size-sm, .75rem);line-height:1.4}.rpt-aggregate-wrap{display:inline-flex;align-items:baseline;gap:6px}.rpt-aggregate-wrap.is-right{justify-content:flex-end;width:100%}.rpt-aggregate-wrap.is-center{justify-content:center;width:100%}.rpt-aggregate-label{font-size:var(--rpt-font-size-xs, .6875rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rpt-color-text-muted, #64748b)}.rpt-aggregate-value{font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text, #0f172a);font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\"}.rpt-pagination-bar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-top:1px solid var(--rpt-color-border-subtle, #e2e8f0);background-color:var(--rpt-color-surface, #f8fafc)}.rpt-page-info{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, #64748b);font-variant-numeric:tabular-nums}.rpt-page-buttons{display:flex;gap:8px}.rpt-page-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background-color:var(--rpt-color-surface, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-page-btn:hover:not(:disabled){background-color:var(--rpt-color-surface-hover, #f1f5f9);border-color:var(--rpt-color-border-hover, #94a3b8);color:var(--rpt-color-text, #0f172a)}.rpt-page-btn:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }, { kind: "directive", type: RptGridOutletDirective, selector: "[rptGridOutlet]", inputs: ["rptGridOutlet", "inputs"], outputs: ["gridStateChange", "columnDefsChange", "rowClick", "selectionChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6300
6485
|
}
|
|
6301
6486
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportGridBridgeComponent, decorators: [{
|
|
6302
6487
|
type: Component,
|
|
@@ -6310,6 +6495,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6310
6495
|
(gridStateChange)="gridStateChange.emit($event)"
|
|
6311
6496
|
(columnDefsChange)="columnDefsChange.emit($event)"
|
|
6312
6497
|
(rowClick)="rowClick.emit($event)"
|
|
6498
|
+
(selectionChange)="onSelectionChange($event)"
|
|
6313
6499
|
/>
|
|
6314
6500
|
} @else {
|
|
6315
6501
|
<!-- Built-in fallback table when no external grid is provided -->
|
|
@@ -6325,6 +6511,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6325
6511
|
@if (showRowNumbers()) {
|
|
6326
6512
|
<th class="rpt-th rpt-th-num">#</th>
|
|
6327
6513
|
}
|
|
6514
|
+
@if (isSelectionEnabled()) {
|
|
6515
|
+
<th class="rpt-th rpt-th-cb">
|
|
6516
|
+
@if (effectiveRowSelection() !== 'single' && isHeaderCheckboxSelectionEnabled()) {
|
|
6517
|
+
<input
|
|
6518
|
+
type="checkbox"
|
|
6519
|
+
class="rpt-checkbox"
|
|
6520
|
+
[checked]="isAllSelected()"
|
|
6521
|
+
[indeterminate]="isPartiallySelected()"
|
|
6522
|
+
(change)="toggleSelectAll($event)"
|
|
6523
|
+
title="Select all rows"
|
|
6524
|
+
/>
|
|
6525
|
+
}
|
|
6526
|
+
</th>
|
|
6527
|
+
}
|
|
6328
6528
|
@for (col of visibleColumns(); track col.field) {
|
|
6329
6529
|
<th
|
|
6330
6530
|
class="rpt-th"
|
|
@@ -6356,12 +6556,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6356
6556
|
@for (row of paginatedData(); track $index) {
|
|
6357
6557
|
<tr
|
|
6358
6558
|
class="rpt-tr"
|
|
6359
|
-
[class.is-clickable]="hasRowClickAction()"
|
|
6559
|
+
[class.is-clickable]="hasRowClickAction() || isSelectionEnabled()"
|
|
6560
|
+
[class.is-selected]="isRowSelected(row)"
|
|
6360
6561
|
(click)="onRowClick(row, $event)"
|
|
6361
6562
|
>
|
|
6362
6563
|
@if (showRowNumbers()) {
|
|
6363
6564
|
<td class="rpt-td rpt-td-num">{{ (currentPage() - 1) * pageSize() + $index + 1 }}</td>
|
|
6364
6565
|
}
|
|
6566
|
+
@if (isSelectionEnabled()) {
|
|
6567
|
+
<td class="rpt-td rpt-td-cb" (click)="$event.stopPropagation()">
|
|
6568
|
+
<input
|
|
6569
|
+
[type]="effectiveRowSelection() === 'single' ? 'radio' : 'checkbox'"
|
|
6570
|
+
name="rpt-fallback-selection"
|
|
6571
|
+
class="rpt-checkbox"
|
|
6572
|
+
[checked]="isRowSelected(row)"
|
|
6573
|
+
(change)="toggleRowSelection(row, $event)"
|
|
6574
|
+
/>
|
|
6575
|
+
</td>
|
|
6576
|
+
}
|
|
6365
6577
|
@for (col of visibleColumns(); track col.field) {
|
|
6366
6578
|
<td
|
|
6367
6579
|
class="rpt-td"
|
|
@@ -6386,10 +6598,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6386
6598
|
@if (showRowNumbers()) {
|
|
6387
6599
|
<td class="rpt-td-num"></td>
|
|
6388
6600
|
}
|
|
6601
|
+
@if (isSelectionEnabled()) {
|
|
6602
|
+
<td class="rpt-td-cb"></td>
|
|
6603
|
+
}
|
|
6389
6604
|
@for (col of visibleColumns(); track col.field) {
|
|
6390
6605
|
<td class="rpt-td-aggregate" [style.text-align]="col.align || 'left'">
|
|
6391
6606
|
@if (col.aggregate && col.aggregate !== 'none') {
|
|
6392
|
-
<
|
|
6607
|
+
<div class="rpt-aggregate-wrap" [class.is-right]="col.align === 'right'" [class.is-center]="col.align === 'center'">
|
|
6608
|
+
<span class="rpt-aggregate-label">{{ col.aggregate }}</span>
|
|
6609
|
+
<span class="rpt-aggregate-value">{{ computeAggregate(col) }}</span>
|
|
6610
|
+
</div>
|
|
6393
6611
|
}
|
|
6394
6612
|
</td>
|
|
6395
6613
|
}
|
|
@@ -6429,7 +6647,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6429
6647
|
</div>
|
|
6430
6648
|
}
|
|
6431
6649
|
</div>
|
|
6432
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;margin-top:16px;font-family:var(--rpt-font-family, inherit)}.rpt-grid-container{width:100%;min-height:480px;display:flex;flex-direction:column}:host ::ng-deep bways-grid{display:block;width:100%;height:480px;min-height:480px}:host ::ng-deep .ug-wrapper{height:100%!important;min-height:480px!important}:host ::ng-deep .ug-viewport{min-height:350px!important}.rpt-table-card{background:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow, 0 1px 3px rgba(0, 0, 0, .05));overflow:hidden}.rpt-table-toolbar{padding:12px 16px;background-color:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);display:flex;align-items:center;justify-content:space-between}.rpt-table-title{font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em}.rpt-table-responsive{width:100%;overflow-x:auto}.rpt-table{width:100%;border-collapse:collapse;font-size:var(--rpt-font-size-base, .875rem);text-align:left}.rpt-th{background-color:var(--rpt-color-surface, #f8fafc);padding:10px 14px;font-weight:600;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #475569);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);white-space:nowrap;-webkit-user-select:none;user-select:none}.rpt-th.sortable{cursor:pointer}.rpt-th.sortable:hover{background-color:var(--rpt-color-surface-hover, #f1f5f9)}.rpt-th-content{display:flex;align-items:center;gap:4px}.rpt-sort-indicator{display:inline-flex;align-items:center;color:var(--rpt-color-primary, #2563eb)}.rpt-th-num,.rpt-td-num{width:48px;text-align:center;color:var(--rpt-color-text-muted, #94a3b8);font-size:var(--rpt-font-size-sm, .75rem)}.rpt-td{padding:10px 14px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);color:var(--rpt-color-text, #1e293b)}.rpt-tr:hover{background-color:var(--rpt-color-surface-hover, #f8fafc)}.rpt-tr.is-clickable{cursor:pointer}.rpt-tr.is-clickable:hover{background-color:#f1f5f9}.rpt-td.is-clickable-cell{cursor:pointer}.rpt-cell-action-link{color:var(--rpt-color-primary, #2563eb);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .15s ease}.rpt-cell-action-link:hover{color:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-empty-message{text-align:center;padding:40px 20px;color:var(--rpt-color-text-muted, #94a3b8);font-style:italic}.rpt-tfoot-row{background-color:var(--rpt-color-surface, #f8fafc);border-top:2px solid var(--rpt-color-border, #cbd5e1)}.rpt-td-aggregate{padding:
|
|
6650
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;margin-top:16px;font-family:var(--rpt-font-family, inherit)}.rpt-grid-container{width:100%;min-height:480px;display:flex;flex-direction:column}:host ::ng-deep bways-grid{display:block;width:100%;height:480px;min-height:480px;--ug-footer-bg: var(--rpt-color-surface, #f8fafc);--ug-footer-color: var(--rpt-color-text-secondary, #334155);--ug-header-color: var(--rpt-color-text, #0f172a);--ug-border-color: var(--rpt-color-border, #cbd5e1);--ug-font-family: var(--rpt-font-family, inherit);--ug-font-size: var(--rpt-font-size-sm, .75rem);--ug-header-font-weight: 600}:host ::ng-deep .ug-wrapper{height:100%!important;min-height:480px!important}:host ::ng-deep .ug-viewport{min-height:350px!important}:host ::ng-deep .ug-bottom-bar,:host ::ng-deep ug-pagination{background-color:var(--rpt-color-surface, #f8fafc)!important;border-top:1px solid var(--rpt-color-border, #cbd5e1)!important;color:var(--rpt-color-text-muted, #64748b)!important;font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important}:host ::ng-deep .ug-status-bar-content,:host ::ng-deep .ug-pagination-info,:host ::ng-deep .ug-page-info{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:500!important;color:var(--rpt-color-text-muted, #64748b)!important;font-variant-numeric:tabular-nums!important}:host ::ng-deep .ug-page-size{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:500!important;color:var(--rpt-color-text-muted, #64748b)!important}:host ::ng-deep .ug-page-size select{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;color:var(--rpt-color-text, #0f172a)!important;border-color:var(--rpt-color-border, #cbd5e1)!important;background-color:var(--rpt-color-surface, #ffffff)!important;border-radius:var(--rpt-border-radius-sm, 4px)!important}:host ::ng-deep .ug-total-row{background-color:var(--rpt-color-surface, #f8fafc)!important;border-top:1px solid var(--rpt-color-border, #cbd5e1)!important;border-bottom:2px solid var(--rpt-color-border, #cbd5e1)!important;font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:600!important;color:var(--rpt-color-text, #0f172a)!important;font-variant-numeric:tabular-nums!important}:host ::ng-deep .ug-total-row-label{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-xs, .6875rem)!important;font-weight:600!important;text-transform:uppercase!important;letter-spacing:.05em!important;color:var(--rpt-color-text-muted, #64748b)!important;background-color:var(--rpt-color-surface, #f8fafc)!important}:host ::ng-deep .ug-total-cell{font-family:var(--rpt-font-family, inherit)!important;font-size:var(--rpt-font-size-sm, .75rem)!important;font-weight:600!important;color:var(--rpt-color-text, #0f172a)!important;font-variant-numeric:tabular-nums!important}.rpt-table-card{background:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow, 0 1px 3px rgba(0, 0, 0, .05));overflow:hidden}.rpt-table-toolbar{padding:12px 16px;background-color:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);display:flex;align-items:center;justify-content:space-between}.rpt-table-title{font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em}.rpt-table-responsive{width:100%;overflow-x:auto}.rpt-table{width:100%;border-collapse:collapse;font-size:var(--rpt-font-size-base, .875rem);text-align:left}.rpt-th{background-color:var(--rpt-color-surface, #f8fafc);padding:10px 14px;font-weight:600;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #475569);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);white-space:nowrap;-webkit-user-select:none;user-select:none}.rpt-th.sortable{cursor:pointer}.rpt-th.sortable:hover{background-color:var(--rpt-color-surface-hover, #f1f5f9)}.rpt-th-content{display:flex;align-items:center;gap:4px}.rpt-sort-indicator{display:inline-flex;align-items:center;color:var(--rpt-color-primary, #2563eb)}.rpt-th-num,.rpt-td-num{width:48px;text-align:center;color:var(--rpt-color-text-muted, #94a3b8);font-size:var(--rpt-font-size-sm, .75rem)}.rpt-th-cb,.rpt-td-cb{width:42px;min-width:42px;max-width:42px;text-align:center;padding:8px 10px}.rpt-checkbox{width:15px;height:15px;cursor:pointer;accent-color:var(--rpt-color-primary, #2563eb);border-radius:4px;vertical-align:middle;margin:0}.rpt-td{padding:10px 14px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);color:var(--rpt-color-text, #1e293b)}.rpt-tr:hover{background-color:var(--rpt-color-surface-hover, #f8fafc)}.rpt-tr.is-selected{background-color:#eff6ff}.rpt-tr.is-selected:hover{background-color:#dbeafe}.rpt-tr.is-clickable{cursor:pointer}.rpt-tr.is-clickable:hover{background-color:#f1f5f9}.rpt-td.is-clickable-cell{cursor:pointer}.rpt-cell-action-link{color:var(--rpt-color-primary, #2563eb);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .15s ease}.rpt-cell-action-link:hover{color:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-empty-message{text-align:center;padding:40px 20px;color:var(--rpt-color-text-muted, #94a3b8);font-style:italic}.rpt-tfoot-row{background-color:var(--rpt-color-surface, #f8fafc);border-top:1px solid var(--rpt-color-border, #cbd5e1);border-bottom:2px solid var(--rpt-color-border, #cbd5e1)}.rpt-td-aggregate{padding:8px 14px;color:var(--rpt-color-text, #0f172a);font-size:var(--rpt-font-size-sm, .75rem);line-height:1.4}.rpt-aggregate-wrap{display:inline-flex;align-items:baseline;gap:6px}.rpt-aggregate-wrap.is-right{justify-content:flex-end;width:100%}.rpt-aggregate-wrap.is-center{justify-content:center;width:100%}.rpt-aggregate-label{font-size:var(--rpt-font-size-xs, .6875rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--rpt-color-text-muted, #64748b)}.rpt-aggregate-value{font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text, #0f172a);font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\"}.rpt-pagination-bar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-top:1px solid var(--rpt-color-border-subtle, #e2e8f0);background-color:var(--rpt-color-surface, #f8fafc)}.rpt-page-info{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, #64748b);font-variant-numeric:tabular-nums}.rpt-page-buttons{display:flex;gap:8px}.rpt-page-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background-color:var(--rpt-color-surface, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-page-btn:hover:not(:disabled){background-color:var(--rpt-color-surface-hover, #f1f5f9);border-color:var(--rpt-color-border-hover, #94a3b8);color:var(--rpt-color-text, #0f172a)}.rpt-page-btn:disabled{opacity:.5;cursor:not-allowed}\n"] }]
|
|
6433
6651
|
}], ctorParameters: () => [] });
|
|
6434
6652
|
|
|
6435
6653
|
/**
|
|
@@ -6604,6 +6822,8 @@ class DynamicRendererComponent {
|
|
|
6604
6822
|
customActionTriggered = output();
|
|
6605
6823
|
gridStateChanged = output();
|
|
6606
6824
|
columnDefsChanged = output();
|
|
6825
|
+
selectionChange = output();
|
|
6826
|
+
selectionChanged = output();
|
|
6607
6827
|
rowActionTriggered = output();
|
|
6608
6828
|
form = computed(() => {
|
|
6609
6829
|
return this.formBuilder.toFormGroup(this.definition().components, this.initialValues());
|
|
@@ -6822,8 +7042,12 @@ class DynamicRendererComponent {
|
|
|
6822
7042
|
parameters: mappedParameters,
|
|
6823
7043
|
});
|
|
6824
7044
|
}
|
|
7045
|
+
onGridSelectionChange(rows) {
|
|
7046
|
+
this.selectionChange.emit(rows);
|
|
7047
|
+
this.selectionChanged.emit(rows);
|
|
7048
|
+
}
|
|
6825
7049
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6826
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DynamicRendererComponent, isStandalone: true, selector: "rpt-dynamic-renderer", inputs: { definition: { classPropertyName: "definition", publicName: "definition", isSignal: true, isRequired: true, transformFunction: null }, initialValues: { classPropertyName: "initialValues", publicName: "initialValues", isSignal: true, isRequired: false, transformFunction: null }, resultData: { classPropertyName: "resultData", publicName: "resultData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { executeRequested: "executeRequested", resetRequested: "resetRequested", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChanged: "gridStateChanged", columnDefsChanged: "columnDefsChanged", rowActionTriggered: "rowActionTriggered" }, ngImport: i0, template: `
|
|
7050
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DynamicRendererComponent, isStandalone: true, selector: "rpt-dynamic-renderer", inputs: { definition: { classPropertyName: "definition", publicName: "definition", isSignal: true, isRequired: true, transformFunction: null }, initialValues: { classPropertyName: "initialValues", publicName: "initialValues", isSignal: true, isRequired: false, transformFunction: null }, resultData: { classPropertyName: "resultData", publicName: "resultData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { executeRequested: "executeRequested", resetRequested: "resetRequested", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChanged: "gridStateChanged", columnDefsChanged: "columnDefsChanged", selectionChange: "selectionChange", selectionChanged: "selectionChanged", rowActionTriggered: "rowActionTriggered" }, ngImport: i0, template: `
|
|
6827
7051
|
<div
|
|
6828
7052
|
class="rpt-renderer-root"
|
|
6829
7053
|
[style.direction]="definition().layout.direction || 'ltr'"
|
|
@@ -6883,6 +7107,7 @@ class DynamicRendererComponent {
|
|
|
6883
7107
|
(gridStateChange)="gridStateChanged.emit($event)"
|
|
6884
7108
|
(columnDefsChange)="columnDefsChanged.emit($event)"
|
|
6885
7109
|
(rowClick)="onGridRowClick($event)"
|
|
7110
|
+
(selectionChange)="onGridSelectionChange($event)"
|
|
6886
7111
|
/>
|
|
6887
7112
|
</div>
|
|
6888
7113
|
} @else {
|
|
@@ -6905,7 +7130,7 @@ class DynamicRendererComponent {
|
|
|
6905
7130
|
}
|
|
6906
7131
|
}
|
|
6907
7132
|
</div>
|
|
6908
|
-
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:stretch}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column;height:100%}.rpt-cell>*{width:100%;height:100%;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}.rpt-grid-initial-state{padding:12px 0}.grid-initial-card{border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04))}.grid-initial-icon{width:52px;height:52px;border-radius:12px;background:#eff6ff;color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.grid-initial-title{font-size:var(--rpt-font-size-md, 1rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.grid-initial-desc{font-size:var(--rpt-font-size-sm, .8125rem);color:var(--rpt-color-text-muted, #64748b);max-width:460px;line-height:1.5;margin:0 0 20px}.btn-grid-initial-exec{padding:8px 20px;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;cursor:pointer;box-shadow:0 1px 3px #2563eb33;transition:all var(--rpt-transition-speed, .15s) ease}.btn-grid-initial-exec:hover{background:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"], outputs: ["gridStateChange", "columnDefsChange", "rowClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7133
|
+
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:stretch}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column;height:100%}.rpt-cell>*{width:100%;height:100%;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}.rpt-grid-initial-state{padding:12px 0}.grid-initial-card{border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04))}.grid-initial-icon{width:52px;height:52px;border-radius:12px;background:#eff6ff;color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.grid-initial-title{font-size:var(--rpt-font-size-md, 1rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.grid-initial-desc{font-size:var(--rpt-font-size-sm, .8125rem);color:var(--rpt-color-text-muted, #64748b);max-width:460px;line-height:1.5;margin:0 0 20px}.btn-grid-initial-exec{padding:8px 20px;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;cursor:pointer;box-shadow:0 1px 3px #2563eb33;transition:all var(--rpt-transition-speed, .15s) ease}.btn-grid-initial-exec:hover{background:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"], outputs: ["gridStateChange", "columnDefsChange", "rowClick", "selectionChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6909
7134
|
}
|
|
6910
7135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicRendererComponent, decorators: [{
|
|
6911
7136
|
type: Component,
|
|
@@ -6969,6 +7194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6969
7194
|
(gridStateChange)="gridStateChanged.emit($event)"
|
|
6970
7195
|
(columnDefsChange)="columnDefsChanged.emit($event)"
|
|
6971
7196
|
(rowClick)="onGridRowClick($event)"
|
|
7197
|
+
(selectionChange)="onGridSelectionChange($event)"
|
|
6972
7198
|
/>
|
|
6973
7199
|
</div>
|
|
6974
7200
|
} @else {
|
|
@@ -7026,18 +7252,10 @@ class ReportExecutionService {
|
|
|
7026
7252
|
flattenedFormValues[`${k}_to`] = obj['to'];
|
|
7027
7253
|
flattenedFormValues[`${k}From`] = obj['from'];
|
|
7028
7254
|
flattenedFormValues[`${k}To`] = obj['to'];
|
|
7029
|
-
flattenedFormValues[`@${k}_from`] = obj['from'];
|
|
7030
|
-
flattenedFormValues[`@${k}_to`] = obj['to'];
|
|
7031
|
-
flattenedFormValues[`@${k}From`] = obj['from'];
|
|
7032
|
-
flattenedFormValues[`@${k}To`] = obj['to'];
|
|
7033
7255
|
if (!flattenedFormValues['fromDate'])
|
|
7034
7256
|
flattenedFormValues['fromDate'] = obj['from'];
|
|
7035
7257
|
if (!flattenedFormValues['toDate'])
|
|
7036
7258
|
flattenedFormValues['toDate'] = obj['to'];
|
|
7037
|
-
if (!flattenedFormValues['@fromDate'])
|
|
7038
|
-
flattenedFormValues['@fromDate'] = obj['from'];
|
|
7039
|
-
if (!flattenedFormValues['@toDate'])
|
|
7040
|
-
flattenedFormValues['@toDate'] = obj['to'];
|
|
7041
7259
|
}
|
|
7042
7260
|
}
|
|
7043
7261
|
}
|
|
@@ -7067,6 +7285,8 @@ class ReportRuntimeComponent {
|
|
|
7067
7285
|
customActionTriggered = output();
|
|
7068
7286
|
gridStateChange = output();
|
|
7069
7287
|
columnDefsChange = output();
|
|
7288
|
+
selectionChange = output();
|
|
7289
|
+
selectionChanged = output();
|
|
7070
7290
|
rowActionTriggered = output();
|
|
7071
7291
|
drilldownRequested = output();
|
|
7072
7292
|
internalDefinition = signal(null);
|
|
@@ -7189,6 +7409,10 @@ class ReportRuntimeComponent {
|
|
|
7189
7409
|
onCustomAction(event) {
|
|
7190
7410
|
this.customActionTriggered.emit(event);
|
|
7191
7411
|
}
|
|
7412
|
+
onSelectionChange(rows) {
|
|
7413
|
+
this.selectionChange.emit(rows);
|
|
7414
|
+
this.selectionChanged.emit(rows);
|
|
7415
|
+
}
|
|
7192
7416
|
onRowActionTriggered(event) {
|
|
7193
7417
|
this.rowActionTriggered.emit(event);
|
|
7194
7418
|
if (event.action.targetReportId) {
|
|
@@ -7309,7 +7533,7 @@ class ReportRuntimeComponent {
|
|
|
7309
7533
|
}
|
|
7310
7534
|
}
|
|
7311
7535
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportRuntimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7312
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ReportRuntimeComponent, isStandalone: true, selector: "rpt-report-runtime, rpt-runtime", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "report", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resetRequested: "resetRequested", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", rowActionTriggered: "rowActionTriggered", drilldownRequested: "drilldownRequested" }, host: { listeners: { "window:keydown.escape": "onEscapePressed()" } }, ngImport: i0, template: `
|
|
7536
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ReportRuntimeComponent, isStandalone: true, selector: "rpt-report-runtime, rpt-runtime", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "report", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resetRequested: "resetRequested", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", selectionChange: "selectionChange", selectionChanged: "selectionChanged", rowActionTriggered: "rowActionTriggered", drilldownRequested: "drilldownRequested" }, host: { listeners: { "window:keydown.escape": "onEscapePressed()" } }, ngImport: i0, template: `
|
|
7313
7537
|
<div class="rpt-runtime-container">
|
|
7314
7538
|
@if (isLoading()) {
|
|
7315
7539
|
<div class="rpt-state-card rpt-loading-state">
|
|
@@ -7335,6 +7559,7 @@ class ReportRuntimeComponent {
|
|
|
7335
7559
|
(gridStateChanged)="gridStateChange.emit($event)"
|
|
7336
7560
|
(columnDefsChanged)="columnDefsChange.emit($event)"
|
|
7337
7561
|
(rowActionTriggered)="onRowActionTriggered($event)"
|
|
7562
|
+
(selectionChange)="onSelectionChange($event)"
|
|
7338
7563
|
/>
|
|
7339
7564
|
} @else {
|
|
7340
7565
|
<div class="rpt-state-card rpt-empty-state">
|
|
@@ -7410,7 +7635,7 @@ class ReportRuntimeComponent {
|
|
|
7410
7635
|
</aside>
|
|
7411
7636
|
}
|
|
7412
7637
|
</div>
|
|
7413
|
-
`, isInline: true, styles: [":host{display:block;width:100%;font-family:var(--rpt-font-family, inherit)}.rpt-runtime-container{width:100%;box-sizing:border-box;position:relative}.rpt-state-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;background:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);margin:24px 0}.rpt-state-text{color:var(--rpt-color-text-muted, #64748b);font-size:var(--rpt-font-size-base, .875rem);margin:8px 0 0}.rpt-error-title{font-weight:600;color:var(--rpt-color-danger, #ef4444);margin:8px 0 0;font-size:var(--rpt-font-size-base, .875rem)}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-color-border, #cbd5e1);border-top-color:var(--rpt-color-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-retry-btn{margin-top:16px;padding:6px 16px;font-size:var(--rpt-font-size-sm, .75rem);background-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-text-inverse, #ffffff);border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;font-weight:500;transition:background .12s ease}.rpt-retry-btn:hover{background-color:#1d4ed8}.rpt-drawer-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:1000;animation:rpt-fade-in .18s ease-out forwards}.rpt-drawer-panel{position:fixed;top:0;right:0;bottom:0;max-width:95vw;background:var(--rpt-color-surface, #ffffff);box-shadow:-12px 0 40px #0f172a29;z-index:1001;display:flex;flex-direction:column;animation:rpt-slide-in-right .24s cubic-bezier(.16,1,.3,1) forwards;overflow:hidden;border-left:1px solid var(--rpt-color-border-subtle, #e2e8f0)}:host-context([dir=\"rtl\"]) .rpt-drawer-panel{right:auto;left:0;box-shadow:8px 0 32px #0f172a33;animation-name:rpt-slide-in-left;border-left:none;border-right:1px solid var(--rpt-color-border, #cbd5e1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rpt-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}.rpt-drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);background:#f8fafc;flex-shrink:0}.rpt-drawer-header-left{min-width:0;flex:1}.rpt-drawer-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-drawer-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:0;line-height:1.3}.rpt-drawer-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:.725rem;font-weight:600;background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe;border-radius:9999px;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis}.rpt-drawer-desc{font-size:.8rem;color:#64748b;margin:4px 0 0}.rpt-drawer-close-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid transparent;border-radius:6px;background:transparent;color:#64748b;font-size:1.125rem;cursor:pointer;transition:all .12s ease;flex-shrink:0}.rpt-drawer-close-btn:hover{background:#e2e8f0;color:#0f172a}.rpt-drawer-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 12px}.rpt-drawer-loading{margin:48px auto;max-width:400px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DynamicRendererComponent, selector: "rpt-dynamic-renderer", inputs: ["definition", "initialValues", "resultData"], outputs: ["executeRequested", "resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChanged", "columnDefsChanged", "rowActionTriggered"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7638
|
+
`, isInline: true, styles: [":host{display:block;width:100%;font-family:var(--rpt-font-family, inherit)}.rpt-runtime-container{width:100%;box-sizing:border-box;position:relative}.rpt-state-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;background:var(--rpt-color-bg, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);margin:24px 0}.rpt-state-text{color:var(--rpt-color-text-muted, #64748b);font-size:var(--rpt-font-size-base, .875rem);margin:8px 0 0}.rpt-error-title{font-weight:600;color:var(--rpt-color-danger, #ef4444);margin:8px 0 0;font-size:var(--rpt-font-size-base, .875rem)}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-color-border, #cbd5e1);border-top-color:var(--rpt-color-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-retry-btn{margin-top:16px;padding:6px 16px;font-size:var(--rpt-font-size-sm, .75rem);background-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-text-inverse, #ffffff);border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;font-weight:500;transition:background .12s ease}.rpt-retry-btn:hover{background-color:#1d4ed8}.rpt-drawer-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:1000;animation:rpt-fade-in .18s ease-out forwards}.rpt-drawer-panel{position:fixed;top:0;right:0;bottom:0;max-width:95vw;background:var(--rpt-color-surface, #ffffff);box-shadow:-12px 0 40px #0f172a29;z-index:1001;display:flex;flex-direction:column;animation:rpt-slide-in-right .24s cubic-bezier(.16,1,.3,1) forwards;overflow:hidden;border-left:1px solid var(--rpt-color-border-subtle, #e2e8f0)}:host-context([dir=\"rtl\"]) .rpt-drawer-panel{right:auto;left:0;box-shadow:8px 0 32px #0f172a33;animation-name:rpt-slide-in-left;border-left:none;border-right:1px solid var(--rpt-color-border, #cbd5e1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rpt-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}.rpt-drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);background:#f8fafc;flex-shrink:0}.rpt-drawer-header-left{min-width:0;flex:1}.rpt-drawer-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-drawer-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:0;line-height:1.3}.rpt-drawer-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:.725rem;font-weight:600;background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe;border-radius:9999px;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis}.rpt-drawer-desc{font-size:.8rem;color:#64748b;margin:4px 0 0}.rpt-drawer-close-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid transparent;border-radius:6px;background:transparent;color:#64748b;font-size:1.125rem;cursor:pointer;transition:all .12s ease;flex-shrink:0}.rpt-drawer-close-btn:hover{background:#e2e8f0;color:#0f172a}.rpt-drawer-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 12px}.rpt-drawer-loading{margin:48px auto;max-width:400px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DynamicRendererComponent, selector: "rpt-dynamic-renderer", inputs: ["definition", "initialValues", "resultData"], outputs: ["executeRequested", "resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChanged", "columnDefsChanged", "selectionChange", "selectionChanged", "rowActionTriggered"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7414
7639
|
}
|
|
7415
7640
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportRuntimeComponent, decorators: [{
|
|
7416
7641
|
type: Component,
|
|
@@ -7440,6 +7665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7440
7665
|
(gridStateChanged)="gridStateChange.emit($event)"
|
|
7441
7666
|
(columnDefsChanged)="columnDefsChange.emit($event)"
|
|
7442
7667
|
(rowActionTriggered)="onRowActionTriggered($event)"
|
|
7668
|
+
(selectionChange)="onSelectionChange($event)"
|
|
7443
7669
|
/>
|
|
7444
7670
|
} @else {
|
|
7445
7671
|
<div class="rpt-state-card rpt-empty-state">
|
|
@@ -7536,6 +7762,8 @@ class RptReportComponent {
|
|
|
7536
7762
|
rowClick = output();
|
|
7537
7763
|
dataLoaded = output();
|
|
7538
7764
|
gridStateChange = output();
|
|
7765
|
+
selectionChange = output();
|
|
7766
|
+
selectionChanged = output();
|
|
7539
7767
|
presetSaved = output();
|
|
7540
7768
|
presetChange = output();
|
|
7541
7769
|
exportRequested = output();
|
|
@@ -7584,6 +7812,10 @@ class RptReportComponent {
|
|
|
7584
7812
|
this.latestGridState.set(state);
|
|
7585
7813
|
this.gridStateChange.emit(state);
|
|
7586
7814
|
}
|
|
7815
|
+
onSelectionChange(rows) {
|
|
7816
|
+
this.selectionChange.emit(rows);
|
|
7817
|
+
this.selectionChanged.emit(rows);
|
|
7818
|
+
}
|
|
7587
7819
|
onSelectPreset(presetId) {
|
|
7588
7820
|
this.activePresetId.set(presetId);
|
|
7589
7821
|
if (presetId === 'default') {
|
|
@@ -7703,7 +7935,7 @@ class RptReportComponent {
|
|
|
7703
7935
|
});
|
|
7704
7936
|
}
|
|
7705
7937
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptReportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7706
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RptReportComponent, isStandalone: true, selector: "rpt-report, rpt-view", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, report: { classPropertyName: "report", publicName: "report", isSignal: true, isRequired: false, transformFunction: null }, parameters: { classPropertyName: "parameters", publicName: "parameters", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, enablePresets: { classPropertyName: "enablePresets", publicName: "enablePresets", isSignal: true, isRequired: false, transformFunction: null }, autoExecute: { classPropertyName: "autoExecute", publicName: "autoExecute", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowClick: "rowClick", dataLoaded: "dataLoaded", gridStateChange: "gridStateChange", presetSaved: "presetSaved", presetChange: "presetChange", exportRequested: "exportRequested", printRequested: "printRequested" }, viewQueries: [{ propertyName: "runtimeComponent", first: true, predicate: ReportRuntimeComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
7938
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RptReportComponent, isStandalone: true, selector: "rpt-report, rpt-view", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, report: { classPropertyName: "report", publicName: "report", isSignal: true, isRequired: false, transformFunction: null }, parameters: { classPropertyName: "parameters", publicName: "parameters", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, enablePresets: { classPropertyName: "enablePresets", publicName: "enablePresets", isSignal: true, isRequired: false, transformFunction: null }, autoExecute: { classPropertyName: "autoExecute", publicName: "autoExecute", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowClick: "rowClick", dataLoaded: "dataLoaded", gridStateChange: "gridStateChange", selectionChange: "selectionChange", selectionChanged: "selectionChanged", presetSaved: "presetSaved", presetChange: "presetChange", exportRequested: "exportRequested", printRequested: "printRequested" }, viewQueries: [{ propertyName: "runtimeComponent", first: true, predicate: ReportRuntimeComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
7707
7939
|
<div class="rpt-facade-container">
|
|
7708
7940
|
<!-- Top Action & Preset Bar -->
|
|
7709
7941
|
@if (showToolbar()) {
|
|
@@ -7799,6 +8031,7 @@ class RptReportComponent {
|
|
|
7799
8031
|
[report]="currentDefinition()"
|
|
7800
8032
|
(rowActionTriggered)="onRowActionTriggered($event)"
|
|
7801
8033
|
(gridStateChange)="onGridStateChanged($event)"
|
|
8034
|
+
(selectionChange)="onSelectionChange($event)"
|
|
7802
8035
|
(exportRequested)="exportRequested.emit($event)"
|
|
7803
8036
|
(printRequested)="printRequested.emit($event)"
|
|
7804
8037
|
/>
|
|
@@ -7874,7 +8107,7 @@ class RptReportComponent {
|
|
|
7874
8107
|
</div>
|
|
7875
8108
|
}
|
|
7876
8109
|
</div>
|
|
7877
|
-
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-facade-container{width:100%;position:relative}.rpt-facade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border:1px solid var(--rpt-color-border-subtle, #e2e8f0);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));margin-bottom:14px;flex-wrap:wrap}.rpt-toolbar-left,.rpt-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-report-title-badge{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;font-weight:700;color:#0f172a;padding-right:4px}.rpt-title-dot{width:8px;height:8px;border-radius:50%;background:var(--rpt-color-primary, #2563eb)}.rpt-record-count-chip{display:inline-flex;align-items:center;gap:5px;background:#f1f5f9;color:#475569;font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-full, 9999px);border:1px solid #e2e8f0}.rpt-chip-dot{width:6px;height:6px;border-radius:50%;background:#10b981}.rpt-preset-control{display:flex;align-items:center;gap:6px;background:#f8fafc;padding:3px 6px;border-radius:var(--rpt-border-radius, 6px);border:1px solid #e2e8f0}.rpt-preset-label{display:inline-flex;align-items:center;gap:4px;font-size:.725rem;font-weight:600;color:#64748b}.rpt-preset-select{border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-sm, 4px);padding:3px 8px;font-size:.75rem;font-weight:500;color:#0f172a;background:#fff;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease}.rpt-preset-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-btn-save-view{display:inline-flex;align-items:center;gap:4px;background:var(--rpt-color-primary-light, #eff6ff);border:1px solid #bfdbfe;color:var(--rpt-color-primary, #2563eb);font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-btn-save-view:hover{background:#dbeafe;border-color:#93c5fd}.rpt-export-btn{display:inline-flex;align-items:center;gap:5px;border-radius:var(--rpt-border-radius, 6px);padding:5px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-export-btn:disabled{opacity:.45;cursor:not-allowed}.rpt-export-excel{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.rpt-export-excel:hover:not(:disabled){background:#dcfce7;border-color:#86efac}.rpt-export-csv{background:#f8fafc;border:1px solid #cbd5e1;color:#334155}.rpt-export-csv:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.rpt-export-print{background:#eef2ff;border:1px solid #c7d2fe;color:#4338ca}.rpt-export-print:hover:not(:disabled){background:#e0e7ff;border-color:#a5b4fc}.rpt-modal-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(6px);z-index:1100}.rpt-modal-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(460px,92vw);background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 20px 25px -5px #00000026,0 8px 10px -6px #0000001a;z-index:1101;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-pop .16s cubic-bezier(.16,1,.3,1)}@keyframes rpt-modal-pop{0%{opacity:0;transform:translate(-50%,-46%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.rpt-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.rpt-modal-header-title{display:inline-flex;align-items:center;gap:8px;color:var(--rpt-color-primary, #2563eb)}.rpt-modal-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0}.rpt-modal-close{background:transparent;border:none;color:#64748b;font-size:1.1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .12s ease}.rpt-modal-close:hover{background:#e2e8f0;color:#0f172a}.rpt-modal-body{padding:18px}.rpt-modal-hint{font-size:.8rem;color:#64748b;margin:0 0 16px;line-height:1.45}.rpt-input-group{margin-bottom:16px}.rpt-field-label{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:6px}.rpt-modal-input{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:8px 12px;font-size:.85rem;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-modal-input:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 3px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-existing-presets{border-top:1px solid #e2e8f0;padding-top:12px;margin-top:8px}.rpt-existing-label{display:block;font-size:.725rem;font-weight:600;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.rpt-presets-list{max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.rpt-preset-row{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px}.rpt-preset-info{display:inline-flex;align-items:center;gap:8px}.rpt-preset-row-name{font-size:.775rem;font-weight:600;color:#1e293b}.rpt-preset-active-tag{font-size:.65rem;font-weight:600;background:#dbeafe;color:#1d4ed8;padding:1px 6px;border-radius:9999px}.rpt-btn-del-preset{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s ease}.rpt-btn-del-preset:hover{background:#fee2e2;color:#dc2626}.rpt-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid #e2e8f0;background:#f8fafc}.rpt-btn-cancel{background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:6px 14px;font-size:.775rem;font-weight:500;color:#475569;cursor:pointer;transition:all .12s ease}.rpt-btn-cancel:hover{background:#f1f5f9;color:#0f172a}.rpt-btn-confirm{background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 16px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .12s ease}.rpt-btn-confirm:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-confirm:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"], outputs: ["resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8110
|
+
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-facade-container{width:100%;position:relative}.rpt-facade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border:1px solid var(--rpt-color-border-subtle, #e2e8f0);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));margin-bottom:14px;flex-wrap:wrap}.rpt-toolbar-left,.rpt-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-report-title-badge{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;font-weight:700;color:#0f172a;padding-right:4px}.rpt-title-dot{width:8px;height:8px;border-radius:50%;background:var(--rpt-color-primary, #2563eb)}.rpt-record-count-chip{display:inline-flex;align-items:center;gap:5px;background:#f1f5f9;color:#475569;font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-full, 9999px);border:1px solid #e2e8f0}.rpt-chip-dot{width:6px;height:6px;border-radius:50%;background:#10b981}.rpt-preset-control{display:flex;align-items:center;gap:6px;background:#f8fafc;padding:3px 6px;border-radius:var(--rpt-border-radius, 6px);border:1px solid #e2e8f0}.rpt-preset-label{display:inline-flex;align-items:center;gap:4px;font-size:.725rem;font-weight:600;color:#64748b}.rpt-preset-select{border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-sm, 4px);padding:3px 8px;font-size:.75rem;font-weight:500;color:#0f172a;background:#fff;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease}.rpt-preset-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-btn-save-view{display:inline-flex;align-items:center;gap:4px;background:var(--rpt-color-primary-light, #eff6ff);border:1px solid #bfdbfe;color:var(--rpt-color-primary, #2563eb);font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-btn-save-view:hover{background:#dbeafe;border-color:#93c5fd}.rpt-export-btn{display:inline-flex;align-items:center;gap:5px;border-radius:var(--rpt-border-radius, 6px);padding:5px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-export-btn:disabled{opacity:.45;cursor:not-allowed}.rpt-export-excel{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.rpt-export-excel:hover:not(:disabled){background:#dcfce7;border-color:#86efac}.rpt-export-csv{background:#f8fafc;border:1px solid #cbd5e1;color:#334155}.rpt-export-csv:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.rpt-export-print{background:#eef2ff;border:1px solid #c7d2fe;color:#4338ca}.rpt-export-print:hover:not(:disabled){background:#e0e7ff;border-color:#a5b4fc}.rpt-modal-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(6px);z-index:1100}.rpt-modal-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(460px,92vw);background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 20px 25px -5px #00000026,0 8px 10px -6px #0000001a;z-index:1101;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-pop .16s cubic-bezier(.16,1,.3,1)}@keyframes rpt-modal-pop{0%{opacity:0;transform:translate(-50%,-46%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.rpt-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.rpt-modal-header-title{display:inline-flex;align-items:center;gap:8px;color:var(--rpt-color-primary, #2563eb)}.rpt-modal-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0}.rpt-modal-close{background:transparent;border:none;color:#64748b;font-size:1.1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .12s ease}.rpt-modal-close:hover{background:#e2e8f0;color:#0f172a}.rpt-modal-body{padding:18px}.rpt-modal-hint{font-size:.8rem;color:#64748b;margin:0 0 16px;line-height:1.45}.rpt-input-group{margin-bottom:16px}.rpt-field-label{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:6px}.rpt-modal-input{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:8px 12px;font-size:.85rem;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-modal-input:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 3px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-existing-presets{border-top:1px solid #e2e8f0;padding-top:12px;margin-top:8px}.rpt-existing-label{display:block;font-size:.725rem;font-weight:600;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.rpt-presets-list{max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.rpt-preset-row{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px}.rpt-preset-info{display:inline-flex;align-items:center;gap:8px}.rpt-preset-row-name{font-size:.775rem;font-weight:600;color:#1e293b}.rpt-preset-active-tag{font-size:.65rem;font-weight:600;background:#dbeafe;color:#1d4ed8;padding:1px 6px;border-radius:9999px}.rpt-btn-del-preset{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s ease}.rpt-btn-del-preset:hover{background:#fee2e2;color:#dc2626}.rpt-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid #e2e8f0;background:#f8fafc}.rpt-btn-cancel{background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:6px 14px;font-size:.775rem;font-weight:500;color:#475569;cursor:pointer;transition:all .12s ease}.rpt-btn-cancel:hover{background:#f1f5f9;color:#0f172a}.rpt-btn-confirm{background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 16px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .12s ease}.rpt-btn-confirm:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-confirm:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"], outputs: ["resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "selectionChange", "selectionChanged", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7878
8111
|
}
|
|
7879
8112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptReportComponent, decorators: [{
|
|
7880
8113
|
type: Component,
|
|
@@ -7974,6 +8207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7974
8207
|
[report]="currentDefinition()"
|
|
7975
8208
|
(rowActionTriggered)="onRowActionTriggered($event)"
|
|
7976
8209
|
(gridStateChange)="onGridStateChanged($event)"
|
|
8210
|
+
(selectionChange)="onSelectionChange($event)"
|
|
7977
8211
|
(exportRequested)="exportRequested.emit($event)"
|
|
7978
8212
|
(printRequested)="printRequested.emit($event)"
|
|
7979
8213
|
/>
|
|
@@ -8098,7 +8332,14 @@ class DesignerStateService {
|
|
|
8098
8332
|
loadDefinition(def) {
|
|
8099
8333
|
const cloned = JSON.parse(JSON.stringify(def));
|
|
8100
8334
|
this.definition.set(cloned);
|
|
8101
|
-
|
|
8335
|
+
// Preserve active component selection if it still exists in the loaded definition
|
|
8336
|
+
const currentSelectedId = this.selectedComponentId();
|
|
8337
|
+
if (currentSelectedId && cloned.components.some((c) => c.id === currentSelectedId)) {
|
|
8338
|
+
this.selectedComponentId.set(currentSelectedId);
|
|
8339
|
+
}
|
|
8340
|
+
else {
|
|
8341
|
+
this.selectedComponentId.set(null);
|
|
8342
|
+
}
|
|
8102
8343
|
this.isDirty.set(false);
|
|
8103
8344
|
this.history.set([JSON.parse(JSON.stringify(cloned))]);
|
|
8104
8345
|
this.historyIndex.set(0);
|
|
@@ -8369,6 +8610,10 @@ class DesignerToolbarComponent {
|
|
|
8369
8610
|
canRedo = this.designerState.canRedo;
|
|
8370
8611
|
isTemplatesModalOpen = signal(false);
|
|
8371
8612
|
availableBlueprints = this.templateService.getTemplates();
|
|
8613
|
+
isLeftPanelCollapsed = input(false);
|
|
8614
|
+
isRightPanelCollapsed = input(false);
|
|
8615
|
+
toggleLeftPanel = output();
|
|
8616
|
+
toggleRightPanel = output();
|
|
8372
8617
|
saveRequested = output();
|
|
8373
8618
|
setMode(mode) {
|
|
8374
8619
|
this.designerState.setViewMode(mode);
|
|
@@ -8406,6 +8651,9 @@ class DesignerToolbarComponent {
|
|
|
8406
8651
|
pageSize: 25,
|
|
8407
8652
|
showRowNumbers: true,
|
|
8408
8653
|
showFooter: true,
|
|
8654
|
+
sideBar: true,
|
|
8655
|
+
globalSearch: true,
|
|
8656
|
+
statusBar: true,
|
|
8409
8657
|
},
|
|
8410
8658
|
};
|
|
8411
8659
|
this.designerState.updateGridSettings(defaultGrid);
|
|
@@ -8427,10 +8675,22 @@ class DesignerToolbarComponent {
|
|
|
8427
8675
|
downloadAnchor.remove();
|
|
8428
8676
|
}
|
|
8429
8677
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignerToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8430
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesignerToolbarComponent, isStandalone: true, selector: "rpt-designer-toolbar", outputs: { saveRequested: "saveRequested" }, ngImport: i0, template: `
|
|
8678
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesignerToolbarComponent, isStandalone: true, selector: "rpt-designer-toolbar", inputs: { isLeftPanelCollapsed: { classPropertyName: "isLeftPanelCollapsed", publicName: "isLeftPanelCollapsed", isSignal: true, isRequired: false, transformFunction: null }, isRightPanelCollapsed: { classPropertyName: "isRightPanelCollapsed", publicName: "isRightPanelCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleLeftPanel: "toggleLeftPanel", toggleRightPanel: "toggleRightPanel", saveRequested: "saveRequested" }, ngImport: i0, template: `
|
|
8431
8679
|
<div class="toolbar-root">
|
|
8432
|
-
<!-- Left: Title & Dirty indicator -->
|
|
8680
|
+
<!-- Left: Panel toggle, Title & Dirty indicator -->
|
|
8433
8681
|
<div class="toolbar-left">
|
|
8682
|
+
@if (viewMode() === 'design') {
|
|
8683
|
+
<button
|
|
8684
|
+
type="button"
|
|
8685
|
+
class="tool-btn btn-panel-toggle"
|
|
8686
|
+
[class.active]="!isLeftPanelCollapsed()"
|
|
8687
|
+
(click)="toggleLeftPanel.emit()"
|
|
8688
|
+
[title]="isLeftPanelCollapsed() ? 'Show Component Palette (Ctrl+B)' : 'Hide Component Palette (Ctrl+B)'"
|
|
8689
|
+
[attr.aria-label]="isLeftPanelCollapsed() ? 'Show Component Palette (Ctrl+B)' : 'Hide Component Palette (Ctrl+B)'"
|
|
8690
|
+
>
|
|
8691
|
+
<rpt-icon name="panel-left" [size]="14" />
|
|
8692
|
+
</button>
|
|
8693
|
+
}
|
|
8434
8694
|
<div class="report-identity">
|
|
8435
8695
|
<span class="report-name">{{ definition().name || 'Untitled Report' }}</span>
|
|
8436
8696
|
@if (isDirty()) {
|
|
@@ -8441,33 +8701,36 @@ class DesignerToolbarComponent {
|
|
|
8441
8701
|
|
|
8442
8702
|
<!-- Center: Mode Switcher -->
|
|
8443
8703
|
<div class="toolbar-center">
|
|
8444
|
-
<div class="mode-pill-group">
|
|
8704
|
+
<div class="mode-pill-group" role="tablist" aria-label="Workbench View Mode">
|
|
8445
8705
|
<button
|
|
8446
8706
|
type="button"
|
|
8447
8707
|
class="mode-btn"
|
|
8448
8708
|
[class.active]="viewMode() === 'design'"
|
|
8449
8709
|
(click)="setMode('design')"
|
|
8710
|
+
title="Visual Design Canvas"
|
|
8450
8711
|
>
|
|
8451
8712
|
<rpt-icon name="edit" [size]="14" />
|
|
8452
|
-
<span>Design</span>
|
|
8713
|
+
<span class="mode-label">Design</span>
|
|
8453
8714
|
</button>
|
|
8454
8715
|
<button
|
|
8455
8716
|
type="button"
|
|
8456
8717
|
class="mode-btn"
|
|
8457
8718
|
[class.active]="viewMode() === 'preview'"
|
|
8458
8719
|
(click)="setMode('preview')"
|
|
8720
|
+
title="Live Runtime Preview"
|
|
8459
8721
|
>
|
|
8460
8722
|
<rpt-icon name="eye" [size]="14" />
|
|
8461
|
-
<span>
|
|
8723
|
+
<span class="mode-label">Preview</span>
|
|
8462
8724
|
</button>
|
|
8463
8725
|
<button
|
|
8464
8726
|
type="button"
|
|
8465
8727
|
class="mode-btn"
|
|
8466
8728
|
[class.active]="viewMode() === 'json'"
|
|
8467
8729
|
(click)="setMode('json')"
|
|
8730
|
+
title="JSON Report Schema"
|
|
8468
8731
|
>
|
|
8469
8732
|
<rpt-icon name="code" [size]="14" />
|
|
8470
|
-
<span>JSON
|
|
8733
|
+
<span class="mode-label">JSON</span>
|
|
8471
8734
|
</button>
|
|
8472
8735
|
</div>
|
|
8473
8736
|
</div>
|
|
@@ -8495,6 +8758,19 @@ class DesignerToolbarComponent {
|
|
|
8495
8758
|
</button>
|
|
8496
8759
|
</div>
|
|
8497
8760
|
|
|
8761
|
+
@if (viewMode() === 'design') {
|
|
8762
|
+
<button
|
|
8763
|
+
type="button"
|
|
8764
|
+
class="tool-btn btn-panel-toggle"
|
|
8765
|
+
[class.active]="!isRightPanelCollapsed()"
|
|
8766
|
+
(click)="toggleRightPanel.emit()"
|
|
8767
|
+
[title]="isRightPanelCollapsed() ? 'Show Property Editor (Ctrl+Alt+B)' : 'Hide Property Editor (Ctrl+Alt+B)'"
|
|
8768
|
+
[attr.aria-label]="isRightPanelCollapsed() ? 'Show Property Editor (Ctrl+Alt+B)' : 'Hide Property Editor (Ctrl+Alt+B)'"
|
|
8769
|
+
>
|
|
8770
|
+
<rpt-icon name="panel-right" [size]="14" />
|
|
8771
|
+
</button>
|
|
8772
|
+
}
|
|
8773
|
+
|
|
8498
8774
|
<div class="actions-divider"></div>
|
|
8499
8775
|
|
|
8500
8776
|
<!-- 1-Click Blueprints Gallery Button -->
|
|
@@ -8505,7 +8781,7 @@ class DesignerToolbarComponent {
|
|
|
8505
8781
|
title="Start from pre-configured enterprise blueprints"
|
|
8506
8782
|
>
|
|
8507
8783
|
<rpt-icon name="layers" [size]="14" />
|
|
8508
|
-
<span>Blueprints</span>
|
|
8784
|
+
<span class="btn-label">Blueprints</span>
|
|
8509
8785
|
</button>
|
|
8510
8786
|
|
|
8511
8787
|
<!-- Add / Configure Grid Quick Button -->
|
|
@@ -8517,7 +8793,7 @@ class DesignerToolbarComponent {
|
|
|
8517
8793
|
title="Attach a Result Data Grid (UltraGrid / Table) to this report"
|
|
8518
8794
|
>
|
|
8519
8795
|
<rpt-icon name="table" [size]="14" />
|
|
8520
|
-
<span>+ Add Grid</span>
|
|
8796
|
+
<span class="btn-label">+ Add Grid</span>
|
|
8521
8797
|
</button>
|
|
8522
8798
|
} @else {
|
|
8523
8799
|
<button
|
|
@@ -8527,7 +8803,7 @@ class DesignerToolbarComponent {
|
|
|
8527
8803
|
title="Configure Result Data Grid columns and pagination"
|
|
8528
8804
|
>
|
|
8529
8805
|
<rpt-icon name="table" [size]="14" />
|
|
8530
|
-
<span>Grid ({{ definition().grid?.columns?.length ?? 0 }})</span>
|
|
8806
|
+
<span class="btn-label">Grid ({{ definition().grid?.columns?.length ?? 0 }})</span>
|
|
8531
8807
|
</button>
|
|
8532
8808
|
}
|
|
8533
8809
|
|
|
@@ -8540,7 +8816,7 @@ class DesignerToolbarComponent {
|
|
|
8540
8816
|
title="Download JSON Definition"
|
|
8541
8817
|
>
|
|
8542
8818
|
<rpt-icon name="download" [size]="14" />
|
|
8543
|
-
<span>Export</span>
|
|
8819
|
+
<span class="btn-label">Export</span>
|
|
8544
8820
|
</button>
|
|
8545
8821
|
|
|
8546
8822
|
<button
|
|
@@ -8550,7 +8826,7 @@ class DesignerToolbarComponent {
|
|
|
8550
8826
|
title="Save Report Definition"
|
|
8551
8827
|
>
|
|
8552
8828
|
<rpt-icon name="save" [size]="14" />
|
|
8553
|
-
<span>Save
|
|
8829
|
+
<span class="btn-label">Save</span>
|
|
8554
8830
|
</button>
|
|
8555
8831
|
</div>
|
|
8556
8832
|
|
|
@@ -8587,14 +8863,26 @@ class DesignerToolbarComponent {
|
|
|
8587
8863
|
</div>
|
|
8588
8864
|
}
|
|
8589
8865
|
</div>
|
|
8590
|
-
`, isInline: true, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, inherit);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30}.toolbar-root{display:flex;align-items:center;justify-content:
|
|
8866
|
+
`, isInline: true, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, inherit);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30;flex-shrink:0}.toolbar-root{display:flex;align-items:center;justify-content:flex-start;height:100%;padding:0 16px;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;box-sizing:border-box}.toolbar-root::-webkit-scrollbar{display:none}.toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.toolbar-right{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0;margin-left:auto;justify-content:flex-end}.toolbar-center{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0 auto}.report-identity{display:flex;align-items:center;gap:8px;min-width:0}.report-name{font-weight:600;font-size:.9rem;letter-spacing:-.01em;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.dirty-badge{font-size:.65rem;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #fde68a;padding:1px 6px;border-radius:9999px;white-space:nowrap;flex-shrink:0}.mode-pill-group{display:flex;background:#f1f5f9;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:3px;gap:2px;flex-shrink:0}.mode-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.mode-btn:hover{color:var(--rpt-color-text, #0f172a);background:#0000000a}.mode-btn.active{background:#fff;color:var(--rpt-color-primary, #2563eb);font-weight:600;box-shadow:0 1px 3px #00000014}.history-group{display:flex;gap:2px;flex-shrink:0}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap;flex-shrink:0}.tool-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-hover, #94a3b8)}.tool-btn:disabled{opacity:.45;cursor:not-allowed}.btn-panel-toggle{padding:6px 8px;color:var(--rpt-color-text-muted, #64748b)}.btn-panel-toggle:hover:not(:disabled){color:var(--rpt-color-text, #0f172a);background:var(--rpt-color-surface-hover, #f8fafc)}.btn-panel-toggle.active{background:#eff6ff;border-color:#bfdbfe;color:var(--rpt-color-primary, #2563eb)}.actions-divider{width:1px;height:20px;background:var(--rpt-color-border, #cbd5e1);flex-shrink:0}.btn-blueprints{background:#faf5ff;border-color:#e9d5ff;color:#7c3aed}.btn-blueprints:hover:not(:disabled){background:#f3e8ff;color:#6d28d9;border-color:#c084fc}.btn-save{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.btn-save:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.btn-export{background:#fff;color:var(--rpt-color-text-secondary, #334155)}.btn-grid-action{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-action:hover:not(:disabled){background:#dcfce7;color:#15803d;border-color:#86efac}.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-grid-configured:hover:not(:disabled){background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}@media (max-width: 1024px){.toolbar-root{padding:0 12px;gap:6px}.report-name{max-width:140px}.btn-blueprints .btn-label,.btn-export .btn-label{display:none}.tool-btn{padding:6px 9px}}@media (max-width: 900px){:host{height:48px}.toolbar-root{padding:0 8px;gap:4px}.btn-panel-toggle{display:none!important}.report-name{max-width:100px;font-size:.8125rem}.actions-divider{display:none}.tool-btn .btn-label{display:none!important}.tool-btn{padding:5px 7px;min-width:30px;height:30px;justify-content:center}.mode-pill-group{padding:2px;gap:1px}.mode-btn{padding:4px 8px;font-size:.725rem;gap:4px}}@media (max-width: 680px){:host{height:46px}.toolbar-root{padding:0 6px;gap:3px}.report-name{max-width:75px;font-size:.75rem}.dirty-badge{font-size:.6rem;padding:1px 4px}.mode-btn .mode-label{display:none}.mode-btn{padding:5px 8px}.tool-btn{min-width:28px;height:28px;padding:4px 6px}.toolbar-right{gap:3px}}.blueprint-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(4px);z-index:2000;animation:rpt-fade-in .15s ease-out}.blueprint-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(840px,92vw);max-height:85vh;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);box-shadow:var(--rpt-box-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .15));z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-in .18s cubic-bezier(.16,1,.3,1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-modal-in{0%{transform:translate(-50%,-46%) scale(.96);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.blueprint-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.blueprint-modal-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 4px}.blueprint-modal-sub{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--rpt-color-text-muted, #64748b);font-size:1.25rem;cursor:pointer;padding:4px;line-height:1;border-radius:4px;transition:all .12s ease}.btn-close-modal:hover{color:var(--rpt-color-text, #0f172a);background:#e2e8f0}.blueprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:20px 24px;overflow-y:auto}.blueprint-card{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:16px;cursor:pointer;display:flex;flex-direction:column;transition:all .15s ease}.blueprint-card:hover{border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-2px);box-shadow:0 8px 24px #2563eb1f}.blueprint-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.blueprint-cat-badge{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:2px 6px;border-radius:4px}.blueprint-card-icon{color:var(--rpt-color-primary, #2563eb)}.blueprint-card-title{font-size:var(--rpt-font-size-base, .875rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.blueprint-card-desc{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);line-height:1.4;margin:0 0 16px;flex:1}.blueprint-card-footer{margin-top:auto}.btn-apply-blueprint{width:100%;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .12s ease}.blueprint-card:hover .btn-apply-blueprint{background:var(--rpt-color-primary-hover, #1d4ed8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8591
8867
|
}
|
|
8592
8868
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignerToolbarComponent, decorators: [{
|
|
8593
8869
|
type: Component,
|
|
8594
8870
|
args: [{ selector: 'rpt-designer-toolbar', standalone: true, imports: [CommonModule, RptIconComponent], template: `
|
|
8595
8871
|
<div class="toolbar-root">
|
|
8596
|
-
<!-- Left: Title & Dirty indicator -->
|
|
8872
|
+
<!-- Left: Panel toggle, Title & Dirty indicator -->
|
|
8597
8873
|
<div class="toolbar-left">
|
|
8874
|
+
@if (viewMode() === 'design') {
|
|
8875
|
+
<button
|
|
8876
|
+
type="button"
|
|
8877
|
+
class="tool-btn btn-panel-toggle"
|
|
8878
|
+
[class.active]="!isLeftPanelCollapsed()"
|
|
8879
|
+
(click)="toggleLeftPanel.emit()"
|
|
8880
|
+
[title]="isLeftPanelCollapsed() ? 'Show Component Palette (Ctrl+B)' : 'Hide Component Palette (Ctrl+B)'"
|
|
8881
|
+
[attr.aria-label]="isLeftPanelCollapsed() ? 'Show Component Palette (Ctrl+B)' : 'Hide Component Palette (Ctrl+B)'"
|
|
8882
|
+
>
|
|
8883
|
+
<rpt-icon name="panel-left" [size]="14" />
|
|
8884
|
+
</button>
|
|
8885
|
+
}
|
|
8598
8886
|
<div class="report-identity">
|
|
8599
8887
|
<span class="report-name">{{ definition().name || 'Untitled Report' }}</span>
|
|
8600
8888
|
@if (isDirty()) {
|
|
@@ -8605,33 +8893,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8605
8893
|
|
|
8606
8894
|
<!-- Center: Mode Switcher -->
|
|
8607
8895
|
<div class="toolbar-center">
|
|
8608
|
-
<div class="mode-pill-group">
|
|
8896
|
+
<div class="mode-pill-group" role="tablist" aria-label="Workbench View Mode">
|
|
8609
8897
|
<button
|
|
8610
8898
|
type="button"
|
|
8611
8899
|
class="mode-btn"
|
|
8612
8900
|
[class.active]="viewMode() === 'design'"
|
|
8613
8901
|
(click)="setMode('design')"
|
|
8902
|
+
title="Visual Design Canvas"
|
|
8614
8903
|
>
|
|
8615
8904
|
<rpt-icon name="edit" [size]="14" />
|
|
8616
|
-
<span>Design</span>
|
|
8905
|
+
<span class="mode-label">Design</span>
|
|
8617
8906
|
</button>
|
|
8618
8907
|
<button
|
|
8619
8908
|
type="button"
|
|
8620
8909
|
class="mode-btn"
|
|
8621
8910
|
[class.active]="viewMode() === 'preview'"
|
|
8622
8911
|
(click)="setMode('preview')"
|
|
8912
|
+
title="Live Runtime Preview"
|
|
8623
8913
|
>
|
|
8624
8914
|
<rpt-icon name="eye" [size]="14" />
|
|
8625
|
-
<span>
|
|
8915
|
+
<span class="mode-label">Preview</span>
|
|
8626
8916
|
</button>
|
|
8627
8917
|
<button
|
|
8628
8918
|
type="button"
|
|
8629
8919
|
class="mode-btn"
|
|
8630
8920
|
[class.active]="viewMode() === 'json'"
|
|
8631
8921
|
(click)="setMode('json')"
|
|
8922
|
+
title="JSON Report Schema"
|
|
8632
8923
|
>
|
|
8633
8924
|
<rpt-icon name="code" [size]="14" />
|
|
8634
|
-
<span>JSON
|
|
8925
|
+
<span class="mode-label">JSON</span>
|
|
8635
8926
|
</button>
|
|
8636
8927
|
</div>
|
|
8637
8928
|
</div>
|
|
@@ -8659,6 +8950,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8659
8950
|
</button>
|
|
8660
8951
|
</div>
|
|
8661
8952
|
|
|
8953
|
+
@if (viewMode() === 'design') {
|
|
8954
|
+
<button
|
|
8955
|
+
type="button"
|
|
8956
|
+
class="tool-btn btn-panel-toggle"
|
|
8957
|
+
[class.active]="!isRightPanelCollapsed()"
|
|
8958
|
+
(click)="toggleRightPanel.emit()"
|
|
8959
|
+
[title]="isRightPanelCollapsed() ? 'Show Property Editor (Ctrl+Alt+B)' : 'Hide Property Editor (Ctrl+Alt+B)'"
|
|
8960
|
+
[attr.aria-label]="isRightPanelCollapsed() ? 'Show Property Editor (Ctrl+Alt+B)' : 'Hide Property Editor (Ctrl+Alt+B)'"
|
|
8961
|
+
>
|
|
8962
|
+
<rpt-icon name="panel-right" [size]="14" />
|
|
8963
|
+
</button>
|
|
8964
|
+
}
|
|
8965
|
+
|
|
8662
8966
|
<div class="actions-divider"></div>
|
|
8663
8967
|
|
|
8664
8968
|
<!-- 1-Click Blueprints Gallery Button -->
|
|
@@ -8669,7 +8973,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8669
8973
|
title="Start from pre-configured enterprise blueprints"
|
|
8670
8974
|
>
|
|
8671
8975
|
<rpt-icon name="layers" [size]="14" />
|
|
8672
|
-
<span>Blueprints</span>
|
|
8976
|
+
<span class="btn-label">Blueprints</span>
|
|
8673
8977
|
</button>
|
|
8674
8978
|
|
|
8675
8979
|
<!-- Add / Configure Grid Quick Button -->
|
|
@@ -8681,7 +8985,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8681
8985
|
title="Attach a Result Data Grid (UltraGrid / Table) to this report"
|
|
8682
8986
|
>
|
|
8683
8987
|
<rpt-icon name="table" [size]="14" />
|
|
8684
|
-
<span>+ Add Grid</span>
|
|
8988
|
+
<span class="btn-label">+ Add Grid</span>
|
|
8685
8989
|
</button>
|
|
8686
8990
|
} @else {
|
|
8687
8991
|
<button
|
|
@@ -8691,7 +8995,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8691
8995
|
title="Configure Result Data Grid columns and pagination"
|
|
8692
8996
|
>
|
|
8693
8997
|
<rpt-icon name="table" [size]="14" />
|
|
8694
|
-
<span>Grid ({{ definition().grid?.columns?.length ?? 0 }})</span>
|
|
8998
|
+
<span class="btn-label">Grid ({{ definition().grid?.columns?.length ?? 0 }})</span>
|
|
8695
8999
|
</button>
|
|
8696
9000
|
}
|
|
8697
9001
|
|
|
@@ -8704,7 +9008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8704
9008
|
title="Download JSON Definition"
|
|
8705
9009
|
>
|
|
8706
9010
|
<rpt-icon name="download" [size]="14" />
|
|
8707
|
-
<span>Export</span>
|
|
9011
|
+
<span class="btn-label">Export</span>
|
|
8708
9012
|
</button>
|
|
8709
9013
|
|
|
8710
9014
|
<button
|
|
@@ -8714,7 +9018,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8714
9018
|
title="Save Report Definition"
|
|
8715
9019
|
>
|
|
8716
9020
|
<rpt-icon name="save" [size]="14" />
|
|
8717
|
-
<span>Save
|
|
9021
|
+
<span class="btn-label">Save</span>
|
|
8718
9022
|
</button>
|
|
8719
9023
|
</div>
|
|
8720
9024
|
|
|
@@ -8751,12 +9055,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8751
9055
|
</div>
|
|
8752
9056
|
}
|
|
8753
9057
|
</div>
|
|
8754
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, inherit);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30}.toolbar-root{display:flex;align-items:center;justify-content:
|
|
9058
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;background:var(--rpt-color-surface, #ffffff);color:var(--rpt-color-text, #0f172a);height:56px;font-family:var(--rpt-font-family, inherit);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;position:relative;box-shadow:0 1px 3px #0000000a;z-index:30;flex-shrink:0}.toolbar-root{display:flex;align-items:center;justify-content:flex-start;height:100%;padding:0 16px;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;box-sizing:border-box}.toolbar-root::-webkit-scrollbar{display:none}.toolbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.toolbar-right{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0;margin-left:auto;justify-content:flex-end}.toolbar-center{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0 auto}.report-identity{display:flex;align-items:center;gap:8px;min-width:0}.report-name{font-weight:600;font-size:.9rem;letter-spacing:-.01em;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.dirty-badge{font-size:.65rem;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #fde68a;padding:1px 6px;border-radius:9999px;white-space:nowrap;flex-shrink:0}.mode-pill-group{display:flex;background:#f1f5f9;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:3px;gap:2px;flex-shrink:0}.mode-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.mode-btn:hover{color:var(--rpt-color-text, #0f172a);background:#0000000a}.mode-btn.active{background:#fff;color:var(--rpt-color-primary, #2563eb);font-weight:600;box-shadow:0 1px 3px #00000014}.history-group{display:flex;gap:2px;flex-shrink:0}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text-secondary, #334155);background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap;flex-shrink:0}.tool-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-hover, #94a3b8)}.tool-btn:disabled{opacity:.45;cursor:not-allowed}.btn-panel-toggle{padding:6px 8px;color:var(--rpt-color-text-muted, #64748b)}.btn-panel-toggle:hover:not(:disabled){color:var(--rpt-color-text, #0f172a);background:var(--rpt-color-surface-hover, #f8fafc)}.btn-panel-toggle.active{background:#eff6ff;border-color:#bfdbfe;color:var(--rpt-color-primary, #2563eb)}.actions-divider{width:1px;height:20px;background:var(--rpt-color-border, #cbd5e1);flex-shrink:0}.btn-blueprints{background:#faf5ff;border-color:#e9d5ff;color:#7c3aed}.btn-blueprints:hover:not(:disabled){background:#f3e8ff;color:#6d28d9;border-color:#c084fc}.btn-save{background:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb);color:#fff;font-weight:600}.btn-save:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.btn-export{background:#fff;color:var(--rpt-color-text-secondary, #334155)}.btn-grid-action{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-action:hover:not(:disabled){background:#dcfce7;color:#15803d;border-color:#86efac}.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-grid-configured:hover:not(:disabled){background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}@media (max-width: 1024px){.toolbar-root{padding:0 12px;gap:6px}.report-name{max-width:140px}.btn-blueprints .btn-label,.btn-export .btn-label{display:none}.tool-btn{padding:6px 9px}}@media (max-width: 900px){:host{height:48px}.toolbar-root{padding:0 8px;gap:4px}.btn-panel-toggle{display:none!important}.report-name{max-width:100px;font-size:.8125rem}.actions-divider{display:none}.tool-btn .btn-label{display:none!important}.tool-btn{padding:5px 7px;min-width:30px;height:30px;justify-content:center}.mode-pill-group{padding:2px;gap:1px}.mode-btn{padding:4px 8px;font-size:.725rem;gap:4px}}@media (max-width: 680px){:host{height:46px}.toolbar-root{padding:0 6px;gap:3px}.report-name{max-width:75px;font-size:.75rem}.dirty-badge{font-size:.6rem;padding:1px 4px}.mode-btn .mode-label{display:none}.mode-btn{padding:5px 8px}.tool-btn{min-width:28px;height:28px;padding:4px 6px}.toolbar-right{gap:3px}}.blueprint-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(4px);z-index:2000;animation:rpt-fade-in .15s ease-out}.blueprint-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(840px,92vw);max-height:85vh;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);box-shadow:var(--rpt-box-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .15));z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-in .18s cubic-bezier(.16,1,.3,1)}@keyframes rpt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rpt-modal-in{0%{transform:translate(-50%,-46%) scale(.96);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.blueprint-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.blueprint-modal-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 4px}.blueprint-modal-sub{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.btn-close-modal{background:transparent;border:none;color:var(--rpt-color-text-muted, #64748b);font-size:1.25rem;cursor:pointer;padding:4px;line-height:1;border-radius:4px;transition:all .12s ease}.btn-close-modal:hover{color:var(--rpt-color-text, #0f172a);background:#e2e8f0}.blueprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:20px 24px;overflow-y:auto}.blueprint-card{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);padding:16px;cursor:pointer;display:flex;flex-direction:column;transition:all .15s ease}.blueprint-card:hover{border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-2px);box-shadow:0 8px 24px #2563eb1f}.blueprint-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.blueprint-cat-badge{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:2px 6px;border-radius:4px}.blueprint-card-icon{color:var(--rpt-color-primary, #2563eb)}.blueprint-card-title{font-size:var(--rpt-font-size-base, .875rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.blueprint-card-desc{font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);line-height:1.4;margin:0 0 16px;flex:1}.blueprint-card-footer{margin-top:auto}.btn-apply-blueprint{width:100%;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .12s ease}.blueprint-card:hover .btn-apply-blueprint{background:var(--rpt-color-primary-hover, #1d4ed8)}\n"] }]
|
|
8755
9059
|
}] });
|
|
8756
9060
|
|
|
8757
9061
|
class ComponentPaletteComponent {
|
|
8758
9062
|
registry = inject(ComponentRegistry);
|
|
8759
9063
|
designerState = inject(DesignerStateService);
|
|
9064
|
+
collapseRequested = output();
|
|
8760
9065
|
searchQuery = signal('');
|
|
8761
9066
|
/** Layout view mode: 'grid' (2-column side-by-side grid) or 'list' (compact row list). Defaults to 'grid'. */
|
|
8762
9067
|
layoutMode = signal('grid');
|
|
@@ -8857,7 +9162,7 @@ class ComponentPaletteComponent {
|
|
|
8857
9162
|
this.designerState.addComponent(type);
|
|
8858
9163
|
}
|
|
8859
9164
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComponentPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8860
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ComponentPaletteComponent, isStandalone: true, selector: "rpt-component-palette", ngImport: i0, template: `
|
|
9165
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ComponentPaletteComponent, isStandalone: true, selector: "rpt-component-palette", outputs: { collapseRequested: "collapseRequested" }, ngImport: i0, template: `
|
|
8861
9166
|
<div class="palette-container">
|
|
8862
9167
|
<div class="palette-header">
|
|
8863
9168
|
<div class="palette-title-area">
|
|
@@ -8903,6 +9208,16 @@ class ComponentPaletteComponent {
|
|
|
8903
9208
|
>
|
|
8904
9209
|
<rpt-icon [name]="allExpanded() ? 'chevron-up' : 'chevron-down'" [size]="13" />
|
|
8905
9210
|
</button>
|
|
9211
|
+
|
|
9212
|
+
<button
|
|
9213
|
+
type="button"
|
|
9214
|
+
class="palette-action-btn icon-only"
|
|
9215
|
+
(click)="collapseRequested.emit()"
|
|
9216
|
+
title="Collapse Component Palette"
|
|
9217
|
+
aria-label="Collapse Component Palette"
|
|
9218
|
+
>
|
|
9219
|
+
<rpt-icon name="chevron-left" [size]="13" />
|
|
9220
|
+
</button>
|
|
8906
9221
|
</div>
|
|
8907
9222
|
</div>
|
|
8908
9223
|
|
|
@@ -9081,6 +9396,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
9081
9396
|
>
|
|
9082
9397
|
<rpt-icon [name]="allExpanded() ? 'chevron-up' : 'chevron-down'" [size]="13" />
|
|
9083
9398
|
</button>
|
|
9399
|
+
|
|
9400
|
+
<button
|
|
9401
|
+
type="button"
|
|
9402
|
+
class="palette-action-btn icon-only"
|
|
9403
|
+
(click)="collapseRequested.emit()"
|
|
9404
|
+
title="Collapse Component Palette"
|
|
9405
|
+
aria-label="Collapse Component Palette"
|
|
9406
|
+
>
|
|
9407
|
+
<rpt-icon name="chevron-left" [size]="13" />
|
|
9408
|
+
</button>
|
|
9084
9409
|
</div>
|
|
9085
9410
|
</div>
|
|
9086
9411
|
|
|
@@ -9553,6 +9878,9 @@ class DesignCanvasComponent {
|
|
|
9553
9878
|
pageSize: 25,
|
|
9554
9879
|
showRowNumbers: true,
|
|
9555
9880
|
showFooter: true,
|
|
9881
|
+
sideBar: true,
|
|
9882
|
+
globalSearch: true,
|
|
9883
|
+
statusBar: true,
|
|
9556
9884
|
},
|
|
9557
9885
|
};
|
|
9558
9886
|
this.designerState.updateGridSettings(defaultGrid);
|
|
@@ -9692,7 +10020,7 @@ class DesignCanvasComponent {
|
|
|
9692
10020
|
} @else {
|
|
9693
10021
|
<button
|
|
9694
10022
|
type="button"
|
|
9695
|
-
class="canvas-action-btn"
|
|
10023
|
+
class="canvas-action-btn btn-grid-configured"
|
|
9696
10024
|
(click)="selectGridSettings($event)"
|
|
9697
10025
|
title="Configure Result Data Grid"
|
|
9698
10026
|
>
|
|
@@ -9707,7 +10035,7 @@ class DesignCanvasComponent {
|
|
|
9707
10035
|
(click)="selectReportSettings($event)"
|
|
9708
10036
|
title="Configure Page Layout & Grid Settings"
|
|
9709
10037
|
>
|
|
9710
|
-
<rpt-icon name="settings" [size]="
|
|
10038
|
+
<rpt-icon name="settings" [size]="14" />
|
|
9711
10039
|
<span>Report Settings</span>
|
|
9712
10040
|
</button>
|
|
9713
10041
|
</div>
|
|
@@ -9747,8 +10075,8 @@ class DesignCanvasComponent {
|
|
|
9747
10075
|
[class.is-selected]="isSelected(comp.id)"
|
|
9748
10076
|
[class.is-resizing]="resizingCompId() === comp.id"
|
|
9749
10077
|
[class.is-field-highlighted]="isFieldHighlighted(comp)"
|
|
9750
|
-
[class.is-narrow]="getSpan(comp) <=
|
|
9751
|
-
[class.is-compact]="getSpan(comp)
|
|
10078
|
+
[class.is-narrow]="getSpan(comp) <= 4"
|
|
10079
|
+
[class.is-compact]="getSpan(comp) <= 2"
|
|
9752
10080
|
[style.grid-column]="getGridColumn(comp)"
|
|
9753
10081
|
[style.grid-row]="getGridRow(comp)"
|
|
9754
10082
|
[style.width]="comp.layout?.width || 'auto'"
|
|
@@ -9802,7 +10130,9 @@ class DesignCanvasComponent {
|
|
|
9802
10130
|
>
|
|
9803
10131
|
<rpt-icon name="minus" [size]="9" />
|
|
9804
10132
|
</button>
|
|
9805
|
-
<span class="span-badge"
|
|
10133
|
+
<span class="span-badge" [title]="'Column span: ' + getSpan(comp) + ' of ' + totalColumns()">
|
|
10134
|
+
<span class="span-num">{{ getSpan(comp) }}</span><span class="span-total">/{{ totalColumns() }}</span>
|
|
10135
|
+
</span>
|
|
9806
10136
|
<button
|
|
9807
10137
|
type="button"
|
|
9808
10138
|
class="span-btn"
|
|
@@ -10166,7 +10496,7 @@ class DesignCanvasComponent {
|
|
|
10166
10496
|
</div>
|
|
10167
10497
|
</div>
|
|
10168
10498
|
</div>
|
|
10169
|
-
`, isInline: true, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:6px 20px;background:#fff;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box}.canvas-info{display:flex;align-items:center;gap:8px;color:var(--rpt-color-text-muted, #64748b);font-size:.8125rem}.info-label{color:#64748b}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.canvas-action-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;font-size:.8125rem;font-weight:500;color:#1e293b;cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn rpt-icon{color:#64748b;transition:color .15s ease}.canvas-action-btn:hover{background:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);box-shadow:0 2px 4px #2563eb14}.canvas-action-btn:hover rpt-icon{color:var(--rpt-color-primary, #2563eb)}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:visible;display:flex;flex-direction:column;min-height:96px;z-index:1}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a;z-index:2}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40;z-index:10}.canvas-component-card:focus-within,.canvas-component-card:has(.rpt-combobox-menu),.canvas-component-card:has(.is-open){z-index:100}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:20;touch-action:none;opacity:0;pointer-events:none;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle{opacity:1;pointer-events:auto}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);border-top-left-radius:var(--rpt-border-radius, 6px);border-top-right-radius:var(--rpt-border-radius, 6px);min-height:32px;box-sizing:border-box;overflow:hidden}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}.canvas-component-card.is-compact:hover .card-action-btn:not(.btn-delete),.canvas-component-card.is-compact.is-selected .card-action-btn:not(.btn-delete){display:none}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 12px 8px 10px;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box;overflow:visible}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:140px}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:16px;flex:1;min-height:100px;padding-top:12px;box-sizing:border-box}.mock-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:60px;max-width:140px}.mock-chart-bar{width:38px;max-width:44px;margin:0 auto;background:var(--rpt-color-primary, #2563eb);border-radius:6px 6px 0 0;opacity:.85;min-height:10px;transition:height .2s ease}.mock-bar-lbl{font-size:.6875rem;color:#64748b;margin-top:6px;text-align:center;white-space:normal;line-height:1.2}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 28px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);text-align:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px 0 rgba(0, 0, 0, .04));transition:border-color var(--rpt-transition-speed, .15s) ease}.canvas-empty-state:hover{border-color:var(--rpt-color-primary, #2563eb)}.empty-hero-badge{width:56px;height:56px;border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-primary-light, #eff6ff);color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:0 2px 8px #2563eb1f}.empty-hero-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 8px;letter-spacing:-.01em}.empty-hero-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);max-width:520px;line-height:1.5;margin:0 0 24px}.empty-hero-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.empty-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;font-family:inherit}.empty-btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff;border:1px solid var(--rpt-color-primary, #2563eb);box-shadow:0 1px 3px #2563eb33}.empty-btn-primary:hover{background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}.empty-btn-secondary{background:#f8fafc;color:#334155;border:1px solid var(--rpt-color-border, #cbd5e1)}.empty-btn-secondary:hover{background:#f1f5f9;color:#0f172a;border-color:#94a3b8;transform:translateY(-1px)}.empty-btn-outline{background:#fff;color:var(--rpt-color-primary, #2563eb);border:1px solid #bfdbfe}.empty-btn-outline:hover{background:#eff6ff;border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-1px)}.canvas-active-input{width:100%;height:32px;padding:4px 8px;font-size:.8125rem;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;outline:none;box-sizing:border-box;background:#fff;color:#0f172a;transition:border-color .15s ease}.canvas-active-input:focus{border-color:var(--rpt-color-primary, #2563eb)}.canvas-active-checkbox-lbl{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.canvas-live-control-wrapper{width:100%;position:relative;z-index:1}.canvas-grid-box{margin-top:24px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:8px;background:#fff;box-shadow:0 1px 3px #0000000d;overflow:hidden}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.grid-title{font-weight:700}.grid-exec-badge{font-size:.6875rem;font-weight:600;padding:2px 8px;border-radius:10px}.grid-exec-badge.is-loading{background:#eff6ff;color:#2563eb}.grid-exec-badge.is-error{background:#fee2e2;color:#ef4444}.grid-exec-badge.is-success{background:#ecfdf5;color:#059669}.btn-canvas-run-grid{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:.72rem;font-weight:600;color:#fff;background:var(--rpt-color-primary, #2563eb);border:none;border-radius:4px;cursor:pointer;transition:background .15s ease}.btn-canvas-run-grid:hover:not(:disabled){background:#1d4ed8}.btn-canvas-run-grid:disabled{opacity:.6;cursor:not-allowed}.btn-canvas-edit-grid{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:.72rem;font-weight:500;color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-canvas-edit-grid:hover{background:#f1f5f9}.canvas-live-grid-container{width:100%;min-height:480px;background:#fff}.live-mode-badge{display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:1px 8px;border-radius:9999px}.canvas-component-card.is-field-highlighted{border-color:#f59e0b!important;box-shadow:0 0 0 3px #f59e0b59!important;animation:rpt-pulse-border 1s ease-in-out infinite alternate}@keyframes rpt-pulse-border{0%{box-shadow:0 0 0 2px #f59e0b40}to{box-shadow:0 0 0 5px #f59e0b80}}.grid-layout-status-strip{display:flex;align-items:center;justify-content:space-between;padding:6px 16px;background:#f1f5f9;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.6875rem;color:#475569}.grid-status-info{display:inline-flex;align-items:center;gap:6px;font-weight:600}.grid-status-sync{display:inline-flex;align-items:center;gap:4px;color:#059669;font-weight:600;transition:transform .2s ease}.grid-status-sync.is-pulsing{transform:scale(1.08);color:#047857}.canvas-actions{display:flex;align-items:center;gap:8px}.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-add:hover{background:#dcfce7;border-color:#86efac;color:#15803d}.btn-remove-grid{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-remove-grid:hover{background:#fee2e2;color:#ef4444}.canvas-add-grid-banner{margin-top:24px;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;padding:16px 20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:all .15s ease}.canvas-add-grid-banner:hover{border-color:#2563eb;background:#f8fafc;box-shadow:0 2px 8px #2563eb14}.add-grid-icon{width:40px;height:40px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-grid-text{display:flex;flex-direction:column;gap:2px;flex:1}.add-grid-title{font-size:.875rem;font-weight:600;color:#0f172a}.add-grid-sub{font-size:.75rem;color:#64748b}.btn-banner-add{padding:6px 14px;font-size:.75rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.canvas-add-grid-banner:hover .btn-banner-add{background:#2563eb;color:#fff;border-color:#2563eb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1$2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i1$2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i1$2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }, { kind: "component", type: RptDropdownComponent, selector: "rpt-dropdown", inputs: ["config", "control", "parentForm", "showStatus"] }, { kind: "component", type: RptDateRangeComponent, selector: "rpt-date-range", inputs: ["config", "control"] }, { kind: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"], outputs: ["gridStateChange", "columnDefsChange", "rowClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10499
|
+
`, isInline: true, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:42px;height:42px;padding:0 24px;background:var(--rpt-color-surface, #ffffff);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;gap:12px;overflow-x:auto;scrollbar-width:none;font-family:var(--rpt-font-family, inherit);flex-shrink:0}.canvas-toolbar::-webkit-scrollbar{display:none}.canvas-info{display:flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);white-space:nowrap;line-height:1}.info-label{color:var(--rpt-color-text-muted, #64748b);font-weight:500;font-size:var(--rpt-font-size-sm, .75rem)}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a);font-size:var(--rpt-font-size-sm, .75rem)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.live-mode-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-xs, .7rem);font-weight:600;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:2px 8px;border-radius:9999px;line-height:1}.canvas-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.canvas-action-btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;letter-spacing:-.01em;color:var(--rpt-color-text-secondary, #334155);background:var(--rpt-color-surface, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn:hover{background:var(--rpt-color-surface-hover, #f8fafc);border-color:var(--rpt-color-border-hover, #94a3b8);color:var(--rpt-color-text, #0f172a);box-shadow:0 2px 4px #0000000f}.canvas-action-btn.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb;font-weight:600}.canvas-action-btn.btn-grid-configured:hover{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.canvas-action-btn.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a;font-weight:600}.canvas-action-btn.btn-grid-add:hover{background:#dcfce7;color:#15803d;border-color:#86efac}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}@media (max-width: 900px){.canvas-toolbar{min-height:36px;height:36px;padding:0 10px;gap:6px}.live-mode-badge{display:none}.canvas-info{font-size:.75rem;gap:5px}.canvas-action-btn{padding:0 8px;font-size:.725rem;height:28px;gap:4px}.canvas-scroll-area{padding:10px}.canvas-artboard{min-height:360px}}@media (max-width: 600px){.canvas-toolbar{padding:0 8px;gap:4px}.canvas-info .info-label,.canvas-action-btn span{display:none}.canvas-action-btn{padding:0 6px;min-width:28px;justify-content:center}}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{container-type:inline-size;background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:visible;display:flex;flex-direction:column;min-height:104px;z-index:1}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a;z-index:2}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40;z-index:10}.canvas-component-card:focus-within,.canvas-component-card:has(.rpt-combobox-menu),.canvas-component-card:has(.is-open){z-index:100}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:20;touch-action:none;opacity:0;pointer-events:none;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle{opacity:1;pointer-events:auto}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);border-top-left-radius:var(--rpt-border-radius, 6px);border-top-right-radius:var(--rpt-border-radius, 6px);min-height:32px;box-sizing:border-box;overflow:hidden;position:relative}.canvas-component-card.is-selected .card-header{overflow:visible}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px;flex-shrink:0}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .span-total{display:none}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}@container (max-width: 250px){.card-header{padding:4px 6px;gap:3px}.canvas-component-card:hover .comp-title,.canvas-component-card.is-selected .comp-title,.canvas-component-card:hover .drag-handle-dots,.canvas-component-card.is-selected .drag-handle-dots,.span-total{display:none}.card-quick-controls{gap:2px}.card-action-btn{width:18px;height:18px}.span-control-group{height:18px}.span-btn{width:14px;height:16px}.span-badge{font-size:.6rem;padding:0 2px}}@container (max-width: 160px){.canvas-component-card.is-selected .card-quick-controls{position:absolute;top:-30px;right:0;background:#fff;border:1.5px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:2px 4px;gap:3px;box-shadow:0 4px 12px #2563eb2e,0 2px 4px #00000014;z-index:120;white-space:nowrap}}@media (max-width: 900px){.canvas-component-card:hover .comp-title,.canvas-component-card.is-selected .comp-title,.canvas-component-card:hover .drag-handle-dots,.canvas-component-card.is-selected .drag-handle-dots,.canvas-component-card .span-total{display:none}.canvas-component-card.is-selected .card-header{overflow:visible}.canvas-component-card.is-selected .card-quick-controls{position:absolute;top:-30px;right:0;background:#fff;border:1.5px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:2px 4px;gap:3px;box-shadow:0 4px 12px #2563eb2e,0 2px 4px #00000014;z-index:120;white-space:nowrap}}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.span-total{font-size:.6rem;color:var(--rpt-color-text-muted, #64748b);font-weight:500}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 10px 14px;flex:1;display:flex;flex-direction:column;min-height:0;min-width:0;max-width:100%;box-sizing:border-box;overflow:visible}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:140px}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:16px;flex:1;min-height:100px;padding-top:12px;box-sizing:border-box}.mock-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:60px;max-width:140px}.mock-chart-bar{width:38px;max-width:44px;margin:0 auto;background:var(--rpt-color-primary, #2563eb);border-radius:6px 6px 0 0;opacity:.85;min-height:10px;transition:height .2s ease}.mock-bar-lbl{font-size:.6875rem;color:#64748b;margin-top:6px;text-align:center;white-space:normal;line-height:1.2}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 28px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);text-align:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px 0 rgba(0, 0, 0, .04));transition:border-color var(--rpt-transition-speed, .15s) ease}.canvas-empty-state:hover{border-color:var(--rpt-color-primary, #2563eb)}.empty-hero-badge{width:56px;height:56px;border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-primary-light, #eff6ff);color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:0 2px 8px #2563eb1f}.empty-hero-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 8px;letter-spacing:-.01em}.empty-hero-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);max-width:520px;line-height:1.5;margin:0 0 24px}.empty-hero-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.empty-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;font-family:inherit}.empty-btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff;border:1px solid var(--rpt-color-primary, #2563eb);box-shadow:0 1px 3px #2563eb33}.empty-btn-primary:hover{background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}.empty-btn-secondary{background:#f8fafc;color:#334155;border:1px solid var(--rpt-color-border, #cbd5e1)}.empty-btn-secondary:hover{background:#f1f5f9;color:#0f172a;border-color:#94a3b8;transform:translateY(-1px)}.empty-btn-outline{background:#fff;color:var(--rpt-color-primary, #2563eb);border:1px solid #bfdbfe}.empty-btn-outline:hover{background:#eff6ff;border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-1px)}.canvas-active-input{width:100%;height:32px;padding:4px 8px;font-size:.8125rem;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;outline:none;box-sizing:border-box;background:#fff;color:#0f172a;transition:border-color .15s ease}.canvas-active-input:focus{border-color:var(--rpt-color-primary, #2563eb)}.canvas-active-checkbox-lbl{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.canvas-live-control-wrapper{width:100%;max-width:100%;min-width:0;position:relative;z-index:1;box-sizing:border-box}.canvas-grid-box{margin-top:24px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:8px;background:#fff;box-shadow:0 1px 3px #0000000d;overflow:hidden}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.grid-title{font-weight:700}.grid-exec-badge{font-size:.6875rem;font-weight:600;padding:2px 8px;border-radius:10px}.grid-exec-badge.is-loading{background:#eff6ff;color:#2563eb}.grid-exec-badge.is-error{background:#fee2e2;color:#ef4444}.grid-exec-badge.is-success{background:#ecfdf5;color:#059669}.btn-canvas-run-grid{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:.72rem;font-weight:600;color:#fff;background:var(--rpt-color-primary, #2563eb);border:none;border-radius:4px;cursor:pointer;transition:background .15s ease}.btn-canvas-run-grid:hover:not(:disabled){background:#1d4ed8}.btn-canvas-run-grid:disabled{opacity:.6;cursor:not-allowed}.btn-canvas-edit-grid{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:.72rem;font-weight:500;color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-canvas-edit-grid:hover{background:#f1f5f9}.canvas-live-grid-container{width:100%;min-height:480px;background:#fff}.live-mode-badge{display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:1px 8px;border-radius:9999px}.canvas-component-card.is-field-highlighted{border-color:#f59e0b!important;box-shadow:0 0 0 3px #f59e0b59!important;animation:rpt-pulse-border 1s ease-in-out infinite alternate}@keyframes rpt-pulse-border{0%{box-shadow:0 0 0 2px #f59e0b40}to{box-shadow:0 0 0 5px #f59e0b80}}.grid-layout-status-strip{display:flex;align-items:center;justify-content:space-between;padding:6px 16px;background:#f1f5f9;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.6875rem;color:#475569}.grid-status-info{display:inline-flex;align-items:center;gap:6px;font-weight:600}.grid-status-sync{display:inline-flex;align-items:center;gap:4px;color:#059669;font-weight:600;transition:transform .2s ease}.grid-status-sync.is-pulsing{transform:scale(1.08);color:#047857}.canvas-actions{display:flex;align-items:center;gap:8px}.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-add:hover{background:#dcfce7;border-color:#86efac;color:#15803d}.btn-remove-grid{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-remove-grid:hover{background:#fee2e2;color:#ef4444}.canvas-add-grid-banner{margin-top:24px;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;padding:16px 20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:all .15s ease}.canvas-add-grid-banner:hover{border-color:#2563eb;background:#f8fafc;box-shadow:0 2px 8px #2563eb14}.add-grid-icon{width:40px;height:40px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-grid-text{display:flex;flex-direction:column;gap:2px;flex:1}.add-grid-title{font-size:.875rem;font-weight:600;color:#0f172a}.add-grid-sub{font-size:.75rem;color:#64748b}.btn-banner-add{padding:6px 14px;font-size:.75rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.canvas-add-grid-banner:hover .btn-banner-add{background:#2563eb;color:#fff;border-color:#2563eb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1$2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i1$2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i1$2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }, { kind: "component", type: RptDropdownComponent, selector: "rpt-dropdown", inputs: ["config", "control", "parentForm", "showStatus"] }, { kind: "component", type: RptDateRangeComponent, selector: "rpt-date-range", inputs: ["config", "control"] }, { kind: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"], outputs: ["gridStateChange", "columnDefsChange", "rowClick", "selectionChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10170
10500
|
}
|
|
10171
10501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignCanvasComponent, decorators: [{
|
|
10172
10502
|
type: Component,
|
|
@@ -10208,7 +10538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
10208
10538
|
} @else {
|
|
10209
10539
|
<button
|
|
10210
10540
|
type="button"
|
|
10211
|
-
class="canvas-action-btn"
|
|
10541
|
+
class="canvas-action-btn btn-grid-configured"
|
|
10212
10542
|
(click)="selectGridSettings($event)"
|
|
10213
10543
|
title="Configure Result Data Grid"
|
|
10214
10544
|
>
|
|
@@ -10223,7 +10553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
10223
10553
|
(click)="selectReportSettings($event)"
|
|
10224
10554
|
title="Configure Page Layout & Grid Settings"
|
|
10225
10555
|
>
|
|
10226
|
-
<rpt-icon name="settings" [size]="
|
|
10556
|
+
<rpt-icon name="settings" [size]="14" />
|
|
10227
10557
|
<span>Report Settings</span>
|
|
10228
10558
|
</button>
|
|
10229
10559
|
</div>
|
|
@@ -10263,8 +10593,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
10263
10593
|
[class.is-selected]="isSelected(comp.id)"
|
|
10264
10594
|
[class.is-resizing]="resizingCompId() === comp.id"
|
|
10265
10595
|
[class.is-field-highlighted]="isFieldHighlighted(comp)"
|
|
10266
|
-
[class.is-narrow]="getSpan(comp) <=
|
|
10267
|
-
[class.is-compact]="getSpan(comp)
|
|
10596
|
+
[class.is-narrow]="getSpan(comp) <= 4"
|
|
10597
|
+
[class.is-compact]="getSpan(comp) <= 2"
|
|
10268
10598
|
[style.grid-column]="getGridColumn(comp)"
|
|
10269
10599
|
[style.grid-row]="getGridRow(comp)"
|
|
10270
10600
|
[style.width]="comp.layout?.width || 'auto'"
|
|
@@ -10318,7 +10648,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
10318
10648
|
>
|
|
10319
10649
|
<rpt-icon name="minus" [size]="9" />
|
|
10320
10650
|
</button>
|
|
10321
|
-
<span class="span-badge"
|
|
10651
|
+
<span class="span-badge" [title]="'Column span: ' + getSpan(comp) + ' of ' + totalColumns()">
|
|
10652
|
+
<span class="span-num">{{ getSpan(comp) }}</span><span class="span-total">/{{ totalColumns() }}</span>
|
|
10653
|
+
</span>
|
|
10322
10654
|
<button
|
|
10323
10655
|
type="button"
|
|
10324
10656
|
class="span-btn"
|
|
@@ -10682,7 +11014,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
10682
11014
|
</div>
|
|
10683
11015
|
</div>
|
|
10684
11016
|
</div>
|
|
10685
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:6px 20px;background:#fff;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box}.canvas-info{display:flex;align-items:center;gap:8px;color:var(--rpt-color-text-muted, #64748b);font-size:.8125rem}.info-label{color:#64748b}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.canvas-action-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 14px;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;font-size:.8125rem;font-weight:500;color:#1e293b;cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn rpt-icon{color:#64748b;transition:color .15s ease}.canvas-action-btn:hover{background:var(--rpt-color-surface, #f8fafc);border-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-primary, #2563eb);box-shadow:0 2px 4px #2563eb14}.canvas-action-btn:hover rpt-icon{color:var(--rpt-color-primary, #2563eb)}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:visible;display:flex;flex-direction:column;min-height:96px;z-index:1}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a;z-index:2}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40;z-index:10}.canvas-component-card:focus-within,.canvas-component-card:has(.rpt-combobox-menu),.canvas-component-card:has(.is-open){z-index:100}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:20;touch-action:none;opacity:0;pointer-events:none;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle{opacity:1;pointer-events:auto}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);border-top-left-radius:var(--rpt-border-radius, 6px);border-top-right-radius:var(--rpt-border-radius, 6px);min-height:32px;box-sizing:border-box;overflow:hidden}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}.canvas-component-card.is-compact:hover .card-action-btn:not(.btn-delete),.canvas-component-card.is-compact.is-selected .card-action-btn:not(.btn-delete){display:none}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 12px 8px 10px;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box;overflow:visible}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:140px}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:16px;flex:1;min-height:100px;padding-top:12px;box-sizing:border-box}.mock-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:60px;max-width:140px}.mock-chart-bar{width:38px;max-width:44px;margin:0 auto;background:var(--rpt-color-primary, #2563eb);border-radius:6px 6px 0 0;opacity:.85;min-height:10px;transition:height .2s ease}.mock-bar-lbl{font-size:.6875rem;color:#64748b;margin-top:6px;text-align:center;white-space:normal;line-height:1.2}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 28px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);text-align:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px 0 rgba(0, 0, 0, .04));transition:border-color var(--rpt-transition-speed, .15s) ease}.canvas-empty-state:hover{border-color:var(--rpt-color-primary, #2563eb)}.empty-hero-badge{width:56px;height:56px;border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-primary-light, #eff6ff);color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:0 2px 8px #2563eb1f}.empty-hero-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 8px;letter-spacing:-.01em}.empty-hero-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);max-width:520px;line-height:1.5;margin:0 0 24px}.empty-hero-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.empty-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;font-family:inherit}.empty-btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff;border:1px solid var(--rpt-color-primary, #2563eb);box-shadow:0 1px 3px #2563eb33}.empty-btn-primary:hover{background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}.empty-btn-secondary{background:#f8fafc;color:#334155;border:1px solid var(--rpt-color-border, #cbd5e1)}.empty-btn-secondary:hover{background:#f1f5f9;color:#0f172a;border-color:#94a3b8;transform:translateY(-1px)}.empty-btn-outline{background:#fff;color:var(--rpt-color-primary, #2563eb);border:1px solid #bfdbfe}.empty-btn-outline:hover{background:#eff6ff;border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-1px)}.canvas-active-input{width:100%;height:32px;padding:4px 8px;font-size:.8125rem;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;outline:none;box-sizing:border-box;background:#fff;color:#0f172a;transition:border-color .15s ease}.canvas-active-input:focus{border-color:var(--rpt-color-primary, #2563eb)}.canvas-active-checkbox-lbl{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.canvas-live-control-wrapper{width:100%;position:relative;z-index:1}.canvas-grid-box{margin-top:24px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:8px;background:#fff;box-shadow:0 1px 3px #0000000d;overflow:hidden}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.grid-title{font-weight:700}.grid-exec-badge{font-size:.6875rem;font-weight:600;padding:2px 8px;border-radius:10px}.grid-exec-badge.is-loading{background:#eff6ff;color:#2563eb}.grid-exec-badge.is-error{background:#fee2e2;color:#ef4444}.grid-exec-badge.is-success{background:#ecfdf5;color:#059669}.btn-canvas-run-grid{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:.72rem;font-weight:600;color:#fff;background:var(--rpt-color-primary, #2563eb);border:none;border-radius:4px;cursor:pointer;transition:background .15s ease}.btn-canvas-run-grid:hover:not(:disabled){background:#1d4ed8}.btn-canvas-run-grid:disabled{opacity:.6;cursor:not-allowed}.btn-canvas-edit-grid{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:.72rem;font-weight:500;color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-canvas-edit-grid:hover{background:#f1f5f9}.canvas-live-grid-container{width:100%;min-height:480px;background:#fff}.live-mode-badge{display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:1px 8px;border-radius:9999px}.canvas-component-card.is-field-highlighted{border-color:#f59e0b!important;box-shadow:0 0 0 3px #f59e0b59!important;animation:rpt-pulse-border 1s ease-in-out infinite alternate}@keyframes rpt-pulse-border{0%{box-shadow:0 0 0 2px #f59e0b40}to{box-shadow:0 0 0 5px #f59e0b80}}.grid-layout-status-strip{display:flex;align-items:center;justify-content:space-between;padding:6px 16px;background:#f1f5f9;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.6875rem;color:#475569}.grid-status-info{display:inline-flex;align-items:center;gap:6px;font-weight:600}.grid-status-sync{display:inline-flex;align-items:center;gap:4px;color:#059669;font-weight:600;transition:transform .2s ease}.grid-status-sync.is-pulsing{transform:scale(1.08);color:#047857}.canvas-actions{display:flex;align-items:center;gap:8px}.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-add:hover{background:#dcfce7;border-color:#86efac;color:#15803d}.btn-remove-grid{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-remove-grid:hover{background:#fee2e2;color:#ef4444}.canvas-add-grid-banner{margin-top:24px;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;padding:16px 20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:all .15s ease}.canvas-add-grid-banner:hover{border-color:#2563eb;background:#f8fafc;box-shadow:0 2px 8px #2563eb14}.add-grid-icon{width:40px;height:40px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-grid-text{display:flex;flex-direction:column;gap:2px;flex:1}.add-grid-title{font-size:.875rem;font-weight:600;color:#0f172a}.add-grid-sub{font-size:.75rem;color:#64748b}.btn-banner-add{padding:6px 14px;font-size:.75rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.canvas-add-grid-banner:hover .btn-banner-add{background:#2563eb;color:#fff;border-color:#2563eb}\n"] }]
|
|
11017
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%;background-color:#f1f5f9;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.canvas-wrapper{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:42px;height:42px;padding:0 24px;background:var(--rpt-color-surface, #ffffff);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;gap:12px;overflow-x:auto;scrollbar-width:none;font-family:var(--rpt-font-family, inherit);flex-shrink:0}.canvas-toolbar::-webkit-scrollbar{display:none}.canvas-info{display:flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text-muted, #64748b);white-space:nowrap;line-height:1}.info-label{color:var(--rpt-color-text-muted, #64748b);font-weight:500;font-size:var(--rpt-font-size-sm, .75rem)}.info-value{font-weight:600;color:var(--rpt-color-text, #0f172a);font-size:var(--rpt-font-size-sm, .75rem)}.info-divider{color:var(--rpt-color-border, #cbd5e1);margin:0 2px}.live-mode-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-xs, .7rem);font-weight:600;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:2px 8px;border-radius:9999px;line-height:1}.canvas-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.canvas-action-btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;letter-spacing:-.01em;color:var(--rpt-color-text-secondary, #334155);background:var(--rpt-color-surface, #ffffff);border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);cursor:pointer;line-height:1;white-space:nowrap;box-shadow:0 1px 2px #0000000a;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-action-btn:hover{background:var(--rpt-color-surface-hover, #f8fafc);border-color:var(--rpt-color-border-hover, #94a3b8);color:var(--rpt-color-text, #0f172a);box-shadow:0 2px 4px #0000000f}.canvas-action-btn.btn-grid-configured{background:#eff6ff;border-color:#bfdbfe;color:#2563eb;font-weight:600}.canvas-action-btn.btn-grid-configured:hover{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.canvas-action-btn.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a;font-weight:600}.canvas-action-btn.btn-grid-add:hover{background:#dcfce7;color:#15803d;border-color:#86efac}.canvas-action-btn:active{transform:translateY(1px)}.canvas-scroll-area{flex:1;overflow-y:auto;padding:16px}.canvas-artboard{width:100%;max-width:1400px;margin:0 auto;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 4px 6px -1px #0000000d;min-height:480px;box-sizing:border-box}@media (max-width: 900px){.canvas-toolbar{min-height:36px;height:36px;padding:0 10px;gap:6px}.live-mode-badge{display:none}.canvas-info{font-size:.75rem;gap:5px}.canvas-action-btn{padding:0 8px;font-size:.725rem;height:28px;gap:4px}.canvas-scroll-area{padding:10px}.canvas-artboard{min-height:360px}}@media (max-width: 600px){.canvas-toolbar{padding:0 8px;gap:4px}.canvas-info .info-label,.canvas-action-btn span{display:none}.canvas-action-btn{padding:0 6px;min-width:28px;justify-content:center}}.canvas-report-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.canvas-report-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.canvas-report-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.canvas-grid{display:grid;width:100%;min-height:180px;align-items:start;border-radius:6px;transition:all var(--rpt-transition-speed, .15s) ease}.canvas-component-card{container-type:inline-size;background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;cursor:pointer;position:relative;overflow:visible;display:flex;flex-direction:column;min-height:104px;z-index:1}.canvas-component-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a;z-index:2}.canvas-component-card.is-selected{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb40;z-index:10}.canvas-component-card:focus-within,.canvas-component-card:has(.rpt-combobox-menu),.canvas-component-card:has(.is-open){z-index:100}.canvas-component-card.is-resizing{-webkit-user-select:none;user-select:none;border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb59;z-index:30;transition:none!important}.resize-handle{position:absolute;z-index:20;touch-action:none;opacity:0;pointer-events:none;transition:opacity .15s ease}.canvas-component-card.is-selected .resize-handle{opacity:1;pointer-events:auto}.resize-handle.handle-e{top:0;right:0;width:6px;height:100%;cursor:ew-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-e:after{content:\"\";width:3px;height:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-e:hover:after,.canvas-component-card.is-selected .resize-handle.handle-e:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-s{bottom:0;left:0;height:6px;width:100%;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.resize-handle.handle-s:after{content:\"\";height:3px;width:24px;background:#cbd5e1;border-radius:2px;transition:background .15s ease}.resize-handle.handle-s:hover:after,.canvas-component-card.is-selected .resize-handle.handle-s:after{background:var(--rpt-color-primary, #2563eb)}.resize-handle.handle-se{bottom:0;right:0;width:12px;height:12px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:2px}.resize-handle.handle-se:after{content:\"\";width:5px;height:5px;border-right:2px solid #cbd5e1;border-bottom:2px solid #cbd5e1;transition:border-color .15s ease}.resize-handle.handle-se:hover:after,.canvas-component-card.is-selected .resize-handle.handle-se:after{border-color:var(--rpt-color-primary, #2563eb)}.resize-dimension-tooltip{position:absolute;top:38px;right:8px;background:#0f172ae6;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:50;box-shadow:0 2px 4px #0003}.card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);border-top-left-radius:var(--rpt-border-radius, 6px);border-top-right-radius:var(--rpt-border-radius, 6px);min-height:32px;box-sizing:border-box;overflow:hidden;position:relative}.canvas-component-card.is-selected .card-header{overflow:visible}.card-title-group{display:flex;align-items:center;gap:5px;cursor:grab;min-width:0;flex:1;overflow:hidden}.drag-handle-dots{color:var(--rpt-color-text-muted, #94a3b8);font-size:.85rem;letter-spacing:-2px;flex-shrink:0;-webkit-user-select:none;user-select:none}.comp-title{font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.card-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.new-row-pill-static{font-size:.65rem;font-weight:600;color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;padding:1px 5px;border-radius:9999px;white-space:nowrap;line-height:1;flex-shrink:0}.span-pill-static{display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:var(--rpt-color-surface, #f1f5f9);border:1px solid var(--rpt-color-border, #e2e8f0);padding:1px 6px;border-radius:9999px;line-height:1.2;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-quick-controls{display:none;align-items:center;gap:3px;flex-shrink:0}.canvas-component-card:hover .span-pill-static,.canvas-component-card.is-selected .span-pill-static,.canvas-component-card:hover .new-row-pill-static,.canvas-component-card.is-selected .new-row-pill-static{display:none}.canvas-component-card:hover .card-quick-controls,.canvas-component-card.is-selected .card-quick-controls{display:inline-flex}.canvas-component-card.is-narrow .card-header{padding:4px 6px;gap:3px}.canvas-component-card.is-narrow:hover .comp-title,.canvas-component-card.is-narrow.is-selected .comp-title,.canvas-component-card.is-narrow:hover .drag-handle-dots,.canvas-component-card.is-narrow.is-selected .drag-handle-dots{display:none}.canvas-component-card.is-narrow .card-quick-controls{gap:2px}.canvas-component-card.is-narrow .span-control-group{height:18px}.canvas-component-card.is-narrow .span-btn{width:14px;height:16px}.canvas-component-card.is-narrow .span-badge{font-size:.6rem;padding:0 2px}.canvas-component-card.is-narrow .span-total{display:none}.canvas-component-card.is-narrow .card-action-btn{width:18px;height:18px}@container (max-width: 250px){.card-header{padding:4px 6px;gap:3px}.canvas-component-card:hover .comp-title,.canvas-component-card.is-selected .comp-title,.canvas-component-card:hover .drag-handle-dots,.canvas-component-card.is-selected .drag-handle-dots,.span-total{display:none}.card-quick-controls{gap:2px}.card-action-btn{width:18px;height:18px}.span-control-group{height:18px}.span-btn{width:14px;height:16px}.span-badge{font-size:.6rem;padding:0 2px}}@container (max-width: 160px){.canvas-component-card.is-selected .card-quick-controls{position:absolute;top:-30px;right:0;background:#fff;border:1.5px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:2px 4px;gap:3px;box-shadow:0 4px 12px #2563eb2e,0 2px 4px #00000014;z-index:120;white-space:nowrap}}@media (max-width: 900px){.canvas-component-card:hover .comp-title,.canvas-component-card.is-selected .comp-title,.canvas-component-card:hover .drag-handle-dots,.canvas-component-card.is-selected .drag-handle-dots,.canvas-component-card .span-total{display:none}.canvas-component-card.is-selected .card-header{overflow:visible}.canvas-component-card.is-selected .card-quick-controls{position:absolute;top:-30px;right:0;background:#fff;border:1.5px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:2px 4px;gap:3px;box-shadow:0 4px 12px #2563eb2e,0 2px 4px #00000014;z-index:120;white-space:nowrap}}.span-control-group{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;height:20px;padding:0 1px;white-space:nowrap;flex-shrink:0}.span-btn{width:16px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;border-radius:2px;transition:all .12s ease}.span-btn:hover:not(:disabled){background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb)}.span-btn:disabled{opacity:.3;cursor:not-allowed}.span-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:0 3px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1}.span-total{font-size:.6rem;color:var(--rpt-color-text-muted, #64748b);font-weight:500}.card-action-btn{width:20px;height:20px;border:none;background:transparent;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--rpt-color-text-muted, #64748b);transition:all .12s ease;flex-shrink:0}.card-action-btn:hover{background:#e2e8f0;color:var(--rpt-color-text, #0f172a)}.card-action-btn.btn-active-toggle{background:#7c3aed;color:#fff;border-color:#7c3aed}.card-action-btn.btn-active-toggle:hover{background:#6d28d9;color:#fff}.btn-delete:hover{background:#fee2e2;color:#ef4444}.card-body{padding:8px 10px 14px;flex:1;display:flex;flex-direction:column;min-height:0;min-width:0;max-width:100%;box-sizing:border-box;overflow:visible}.mock-input-field{display:flex;flex-direction:column;gap:4px;flex:1;height:100%;min-height:0}.mock-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text-muted, #475569);flex-shrink:0}.mock-input-box,.mock-select-box{border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:6px;padding:6px 12px;font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #94a3b8);background:#fff;flex:1;min-height:38px;height:100%;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}.mock-checkbox-field{display:flex;align-items:center;gap:6px;flex:1;height:100%;min-height:0;padding-top:14px}.mock-check-box{width:18px;height:18px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--rpt-color-primary, #2563eb);flex-shrink:0}.mock-btn-wrapper{display:flex;flex:1;height:100%;min-height:38px;align-items:center;justify-content:flex-start;width:100%;min-width:0;box-sizing:border-box}.mock-btn{border-radius:var(--rpt-border-radius, 6px);padding:0 16px;height:36px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border:1px solid transparent;cursor:pointer;width:auto;max-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .15s ease}.mock-btn.mock-btn-full{width:100%}.canvas-component-card.is-narrow .mock-btn{padding:0 6px;font-size:.775rem;width:100%;height:34px}.mock-kpi-field{display:flex;flex-direction:column;justify-content:space-between;flex:1;height:100%;min-height:0}.mock-kpi-header{display:flex;align-items:center;justify-content:space-between}.mock-kpi-value{font-size:1.25rem;font-weight:700;color:var(--rpt-color-text, #0f172a);margin:2px 0}.mock-kpi-footer{display:flex;align-items:center;gap:6px;font-size:.65rem}.mock-kpi-trend{color:#16a34a;font-weight:600}.mock-kpi-sub{color:#64748b}.mock-chart-field{display:flex;flex-direction:column;flex:1;height:100%;min-height:140px}.mock-chart-bars{display:flex;align-items:flex-end;justify-content:space-around;gap:16px;flex:1;min-height:100px;padding-top:12px;box-sizing:border-box}.mock-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:60px;max-width:140px}.mock-chart-bar{width:38px;max-width:44px;margin:0 auto;background:var(--rpt-color-primary, #2563eb);border-radius:6px 6px 0 0;opacity:.85;min-height:10px;transition:height .2s ease}.mock-bar-lbl{font-size:.6875rem;color:#64748b;margin-top:6px;text-align:center;white-space:normal;line-height:1.2}.btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff}.btn-secondary{background:#f1f5f9;color:#0f172a;border:1px solid #cbd5e1}.btn-outline{background:transparent;color:#2563eb;border:1px solid #2563eb}.btn-danger{background:#ef4444;color:#fff}.mock-generic-box{border:1px dashed #cbd5e1;border-radius:4px;padding:8px;font-size:.75rem;text-align:center;color:#64748b}.canvas-drag-placeholder{background:#2563eb0f;border:2px dashed var(--rpt-color-primary, #2563eb);border-radius:6px;min-height:80px;box-sizing:border-box;transition:transform .15s ease}.canvas-drag-preview,::ng-deep .canvas-drag-preview{background:#fff;border:2px solid var(--rpt-color-primary, #2563eb);border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;gap:8px;font-family:var(--rpt-font-family, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif)!important;font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a);box-shadow:0 12px 24px -4px #00000040;z-index:10000}.preview-title,::ng-deep .preview-title{font-family:inherit!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-span,::ng-deep .preview-span{font-family:inherit!important;font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.canvas-empty-state{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 28px;border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);text-align:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px 0 rgba(0, 0, 0, .04));transition:border-color var(--rpt-transition-speed, .15s) ease}.canvas-empty-state:hover{border-color:var(--rpt-color-primary, #2563eb)}.empty-hero-badge{width:56px;height:56px;border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-primary-light, #eff6ff);color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:0 2px 8px #2563eb1f}.empty-hero-title{font-size:var(--rpt-font-size-lg, 1.125rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 8px;letter-spacing:-.01em}.empty-hero-desc{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);max-width:520px;line-height:1.5;margin:0 0 24px}.empty-hero-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.empty-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;border-radius:var(--rpt-border-radius, 6px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease;font-family:inherit}.empty-btn-primary{background:var(--rpt-color-primary, #2563eb);color:#fff;border:1px solid var(--rpt-color-primary, #2563eb);box-shadow:0 1px 3px #2563eb33}.empty-btn-primary:hover{background:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}.empty-btn-secondary{background:#f8fafc;color:#334155;border:1px solid var(--rpt-color-border, #cbd5e1)}.empty-btn-secondary:hover{background:#f1f5f9;color:#0f172a;border-color:#94a3b8;transform:translateY(-1px)}.empty-btn-outline{background:#fff;color:var(--rpt-color-primary, #2563eb);border:1px solid #bfdbfe}.empty-btn-outline:hover{background:#eff6ff;border-color:var(--rpt-color-primary, #2563eb);transform:translateY(-1px)}.canvas-active-input{width:100%;height:32px;padding:4px 8px;font-size:.8125rem;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:4px;outline:none;box-sizing:border-box;background:#fff;color:#0f172a;transition:border-color .15s ease}.canvas-active-input:focus{border-color:var(--rpt-color-primary, #2563eb)}.canvas-active-checkbox-lbl{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.canvas-live-control-wrapper{width:100%;max-width:100%;min-width:0;position:relative;z-index:1;box-sizing:border-box}.canvas-grid-box{margin-top:24px;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:8px;background:#fff;box-shadow:0 1px 3px #0000000d;overflow:hidden}.grid-preview-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.8rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.grid-title{font-weight:700}.grid-exec-badge{font-size:.6875rem;font-weight:600;padding:2px 8px;border-radius:10px}.grid-exec-badge.is-loading{background:#eff6ff;color:#2563eb}.grid-exec-badge.is-error{background:#fee2e2;color:#ef4444}.grid-exec-badge.is-success{background:#ecfdf5;color:#059669}.btn-canvas-run-grid{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font-size:.72rem;font-weight:600;color:#fff;background:var(--rpt-color-primary, #2563eb);border:none;border-radius:4px;cursor:pointer;transition:background .15s ease}.btn-canvas-run-grid:hover:not(:disabled){background:#1d4ed8}.btn-canvas-run-grid:disabled{opacity:.6;cursor:not-allowed}.btn-canvas-edit-grid{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font-size:.72rem;font-weight:500;color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-canvas-edit-grid:hover{background:#f1f5f9}.canvas-live-grid-container{width:100%;min-height:480px;background:#fff}.live-mode-badge{display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;padding:1px 8px;border-radius:9999px}.canvas-component-card.is-field-highlighted{border-color:#f59e0b!important;box-shadow:0 0 0 3px #f59e0b59!important;animation:rpt-pulse-border 1s ease-in-out infinite alternate}@keyframes rpt-pulse-border{0%{box-shadow:0 0 0 2px #f59e0b40}to{box-shadow:0 0 0 5px #f59e0b80}}.grid-layout-status-strip{display:flex;align-items:center;justify-content:space-between;padding:6px 16px;background:#f1f5f9;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);font-size:.6875rem;color:#475569}.grid-status-info{display:inline-flex;align-items:center;gap:6px;font-weight:600}.grid-status-sync{display:inline-flex;align-items:center;gap:4px;color:#059669;font-weight:600;transition:transform .2s ease}.grid-status-sync.is-pulsing{transform:scale(1.08);color:#047857}.canvas-actions{display:flex;align-items:center;gap:8px}.btn-grid-add{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.btn-grid-add:hover{background:#dcfce7;border-color:#86efac;color:#15803d}.btn-remove-grid{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;background:transparent;color:#94a3b8;border-radius:4px;cursor:pointer;transition:all .15s ease}.btn-remove-grid:hover{background:#fee2e2;color:#ef4444}.canvas-add-grid-banner{margin-top:24px;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;padding:16px 20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:all .15s ease}.canvas-add-grid-banner:hover{border-color:#2563eb;background:#f8fafc;box-shadow:0 2px 8px #2563eb14}.add-grid-icon{width:40px;height:40px;border-radius:8px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-grid-text{display:flex;flex-direction:column;gap:2px;flex:1}.add-grid-title{font-size:.875rem;font-weight:600;color:#0f172a}.add-grid-sub{font-size:.75rem;color:#64748b}.btn-banner-add{padding:6px 14px;font-size:.75rem;font-weight:600;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.canvas-add-grid-banner:hover .btn-banner-add{background:#2563eb;color:#fff;border-color:#2563eb}\n"] }]
|
|
10686
11018
|
}], propDecorators: { onEscape: [{
|
|
10687
11019
|
type: HostListener,
|
|
10688
11020
|
args: ['document:keydown.escape']
|
|
@@ -11590,6 +11922,14 @@ class PropertyEditorGridComponent {
|
|
|
11590
11922
|
/>
|
|
11591
11923
|
<span>Visible</span>
|
|
11592
11924
|
</label>
|
|
11925
|
+
<label class="col-checkbox-toggle">
|
|
11926
|
+
<input
|
|
11927
|
+
type="checkbox"
|
|
11928
|
+
[ngModel]="col.checkboxSelection ?? false"
|
|
11929
|
+
(ngModelChange)="onUpdateCol(idx, 'checkboxSelection', $event)"
|
|
11930
|
+
/>
|
|
11931
|
+
<span>Checkbox</span>
|
|
11932
|
+
</label>
|
|
11593
11933
|
</div>
|
|
11594
11934
|
</div>
|
|
11595
11935
|
</div>
|
|
@@ -11601,6 +11941,39 @@ class PropertyEditorGridComponent {
|
|
|
11601
11941
|
<div class="property-group">
|
|
11602
11942
|
<div class="group-title">Table Options</div>
|
|
11603
11943
|
|
|
11944
|
+
<div class="field-row">
|
|
11945
|
+
<label class="checkbox-toggle">
|
|
11946
|
+
<input
|
|
11947
|
+
type="checkbox"
|
|
11948
|
+
[ngModel]="grid()?.options?.sideBar !== false"
|
|
11949
|
+
(ngModelChange)="updateOption.emit({ field: 'sideBar', value: $event })"
|
|
11950
|
+
/>
|
|
11951
|
+
<span>Enable Side Panel (Tool Panels)</span>
|
|
11952
|
+
</label>
|
|
11953
|
+
</div>
|
|
11954
|
+
|
|
11955
|
+
<div class="field-row">
|
|
11956
|
+
<label class="checkbox-toggle">
|
|
11957
|
+
<input
|
|
11958
|
+
type="checkbox"
|
|
11959
|
+
[ngModel]="grid()?.options?.globalSearch !== false"
|
|
11960
|
+
(ngModelChange)="updateOption.emit({ field: 'globalSearch', value: $event })"
|
|
11961
|
+
/>
|
|
11962
|
+
<span>Global Search Box</span>
|
|
11963
|
+
</label>
|
|
11964
|
+
</div>
|
|
11965
|
+
|
|
11966
|
+
<div class="field-row">
|
|
11967
|
+
<label class="checkbox-toggle">
|
|
11968
|
+
<input
|
|
11969
|
+
type="checkbox"
|
|
11970
|
+
[ngModel]="grid()?.options?.statusBar !== false"
|
|
11971
|
+
(ngModelChange)="updateOption.emit({ field: 'statusBar', value: $event })"
|
|
11972
|
+
/>
|
|
11973
|
+
<span>Status Bar</span>
|
|
11974
|
+
</label>
|
|
11975
|
+
</div>
|
|
11976
|
+
|
|
11604
11977
|
<div class="field-row">
|
|
11605
11978
|
<label class="checkbox-toggle">
|
|
11606
11979
|
<input
|
|
@@ -11623,6 +11996,44 @@ class PropertyEditorGridComponent {
|
|
|
11623
11996
|
</label>
|
|
11624
11997
|
</div>
|
|
11625
11998
|
|
|
11999
|
+
@if (grid()?.options?.selectable) {
|
|
12000
|
+
<div class="field-row">
|
|
12001
|
+
<label class="field-label">Selection Mode</label>
|
|
12002
|
+
<select
|
|
12003
|
+
class="field-input"
|
|
12004
|
+
[ngModel]="grid()?.options?.selectionMode ?? 'multiple'"
|
|
12005
|
+
(ngModelChange)="updateOption.emit({ field: 'selectionMode', value: $event })"
|
|
12006
|
+
>
|
|
12007
|
+
<option value="multiple">Multiple Rows</option>
|
|
12008
|
+
<option value="single">Single Row</option>
|
|
12009
|
+
</select>
|
|
12010
|
+
</div>
|
|
12011
|
+
|
|
12012
|
+
<div class="field-row">
|
|
12013
|
+
<label class="checkbox-toggle">
|
|
12014
|
+
<input
|
|
12015
|
+
type="checkbox"
|
|
12016
|
+
[ngModel]="grid()?.options?.checkboxSelection ?? true"
|
|
12017
|
+
(ngModelChange)="updateOption.emit({ field: 'checkboxSelection', value: $event })"
|
|
12018
|
+
/>
|
|
12019
|
+
<span>Checkbox Selection</span>
|
|
12020
|
+
</label>
|
|
12021
|
+
</div>
|
|
12022
|
+
|
|
12023
|
+
@if ((grid()?.options?.selectionMode ?? 'multiple') === 'multiple') {
|
|
12024
|
+
<div class="field-row">
|
|
12025
|
+
<label class="checkbox-toggle">
|
|
12026
|
+
<input
|
|
12027
|
+
type="checkbox"
|
|
12028
|
+
[ngModel]="grid()?.options?.headerCheckboxSelection ?? true"
|
|
12029
|
+
(ngModelChange)="updateOption.emit({ field: 'headerCheckboxSelection', value: $event })"
|
|
12030
|
+
/>
|
|
12031
|
+
<span>Header Select All Checkbox</span>
|
|
12032
|
+
</label>
|
|
12033
|
+
</div>
|
|
12034
|
+
}
|
|
12035
|
+
}
|
|
12036
|
+
|
|
11626
12037
|
<div class="field-row">
|
|
11627
12038
|
<label class="checkbox-toggle">
|
|
11628
12039
|
<input
|
|
@@ -11835,7 +12246,7 @@ class PropertyEditorGridComponent {
|
|
|
11835
12246
|
</div>
|
|
11836
12247
|
</div>
|
|
11837
12248
|
}
|
|
11838
|
-
`, isInline: true, styles: [".property-group{display:flex;flex-direction:column;gap:12px}.group-title{font-size:.7rem;font-weight:700;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:4px}.field-row{display:flex;flex-direction:column;gap:4px}.field-label-row{display:flex;align-items:center;justify-content:space-between}.field-badge-val{font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.field-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.field-input,.field-select,.field-textarea{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);padding:6px 10px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.field-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 10px center;background-size:13px 13px;padding-right:28px;cursor:pointer}.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.checkbox-toggle{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;font-weight:500;color:var(--rpt-color-text, #0f172a);cursor:pointer}.preset-pill-group{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.preset-pill{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-size:.65rem;font-weight:600;color:#475569;cursor:pointer;transition:all .12s ease}.preset-pill:hover{background:#e2e8f0;color:#0f172a;border-color:#cbd5e1}.preset-pill-active{background:var(--rpt-color-primary, #2563eb)!important;color:#fff!important;border-color:var(--rpt-color-primary, #2563eb)!important}.preset-pill-reset{color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border-color:#bfdbfe}.preset-pill-reset:hover{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}\n", ".empty-grid-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px;text-align:center;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;margin:10px 0}.empty-grid-icon{width:48px;height:48px;border-radius:10px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.empty-grid-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0 0 6px}.empty-grid-desc{font-size:.775rem;color:#64748b;margin:0 0 18px;line-height:1.4;max-width:280px}.btn-create-grid-action{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:#2563eb;color:#fff;font-size:.775rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;box-shadow:0 2px 4px #2563eb33;transition:all .15s ease}.btn-create-grid-action:hover{background:#1d4ed8;box-shadow:0 4px 8px #2563eb40}.grid-danger-zone{margin-top:10px;padding-top:16px;border-top:1px dashed #e2e8f0;display:flex;justify-content:center}.btn-remove-grid-action{display:inline-flex;align-items:center;gap:6px;background:#fee2e2;border:1px solid #fecaca;color:#dc2626;font-size:.75rem;font-weight:600;padding:6px 12px;border-radius:6px;cursor:pointer;transition:all .15s ease}.btn-remove-grid-action:hover{background:#fecaca;border-color:#f87171;color:#b91c1c}.props-form{display:flex;flex-direction:column;gap:20px}.group-header-with-btn{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:8px;margin-bottom:4px}.btn-add-col{display:inline-flex;align-items:center;gap:5px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:4px 10px;font-size:.725rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);cursor:pointer;transition:all .15s ease}.btn-add-col:hover{background:var(--rpt-color-primary, #2563eb);color:#fff;border-color:var(--rpt-color-primary, #2563eb)}.columns-editor-list{display:flex;flex-direction:column;gap:10px}.col-edit-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;position:relative;overflow:hidden;display:flex;flex-direction:column}.col-edit-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.col-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box}.col-header-title-group{display:flex;align-items:center;gap:5px;min-width:0;flex:1}.col-drag-dots{color:#94a3b8;font-size:.8rem;cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;padding-left:2px}.col-idx-badge{font-size:.65rem;font-weight:700;color:#64748b;background:#e2e8f0;padding:1px 5px;border-radius:3px;letter-spacing:.02em}.col-title-input{flex:1;border:1px solid transparent;background:transparent;font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:2px 6px;border-radius:4px;outline:none;transition:all .15s ease}.col-title-input:hover{border-color:#cbd5e1;background:#fff}.col-title-input:focus{border-color:var(--rpt-color-primary, #2563eb);background:#fff;box-shadow:0 0 0 2px #2563eb26}.col-card-actions{display:flex;align-items:center;gap:4px}.col-type-pill{font-size:.625rem;font-weight:700;color:#1e40af;background:#dbeafe;border:1px solid #bfdbfe;padding:1px 5px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em}.col-action-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;padding:3px;border-radius:4px;transition:all .15s ease}.col-action-btn.btn-delete:hover{color:var(--rpt-color-danger, #ef4444);background:#fee2e2}.col-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px;background:#fff}.col-edit-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px}.col-field-item{display:flex;flex-direction:column;gap:2px;min-width:0}.mini-label{font-size:.625rem;font-weight:600;color:#64748b;letter-spacing:.02em}.col-mini-input,.col-mini-select{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:3px;padding:3px 5px;font-size:.7rem;color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all .12s ease}.col-mini-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 4px center;background-size:10px 10px;padding-right:16px;cursor:pointer}.col-mini-input:focus,.col-mini-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb26}.col-card-footer{display:flex;align-items:center;justify-content:flex-end;padding-top:4px;border-top:1px dashed #e2e8f0;margin-top:2px}.col-checkbox-toggle{display:inline-flex;align-items:center;gap:5px;font-size:.675rem;font-weight:500;color:#475569;cursor:pointer;-webkit-user-select:none;user-select:none}.btn-add-mapping{display:inline-flex;align-items:center;background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb;font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-add-mapping:hover{background:#dbeafe}.mapping-pair-row{display:flex;align-items:center;gap:6px;margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12249
|
+
`, isInline: true, styles: [".property-group{display:flex;flex-direction:column;gap:12px}.group-title{font-size:.7rem;font-weight:700;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:4px}.field-row{display:flex;flex-direction:column;gap:4px}.field-label-row{display:flex;align-items:center;justify-content:space-between}.field-badge-val{font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.field-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.field-input,.field-select,.field-textarea{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);padding:6px 10px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.field-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 10px center;background-size:13px 13px;padding-right:28px;cursor:pointer}.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.checkbox-toggle{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;font-weight:500;color:var(--rpt-color-text, #0f172a);cursor:pointer}.preset-pill-group{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.preset-pill{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-size:.65rem;font-weight:600;color:#475569;cursor:pointer;transition:all .12s ease}.preset-pill:hover{background:#e2e8f0;color:#0f172a;border-color:#cbd5e1}.preset-pill-active{background:var(--rpt-color-primary, #2563eb)!important;color:#fff!important;border-color:var(--rpt-color-primary, #2563eb)!important}.preset-pill-reset{color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border-color:#bfdbfe}.preset-pill-reset:hover{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}\n", ".empty-grid-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px;text-align:center;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;margin:10px 0}.empty-grid-icon{width:48px;height:48px;border-radius:10px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.empty-grid-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0 0 6px}.empty-grid-desc{font-size:.775rem;color:#64748b;margin:0 0 18px;line-height:1.4;max-width:280px}.btn-create-grid-action{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:#2563eb;color:#fff;font-size:.775rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;box-shadow:0 2px 4px #2563eb33;transition:all .15s ease}.btn-create-grid-action:hover{background:#1d4ed8;box-shadow:0 4px 8px #2563eb40}.grid-danger-zone{margin-top:10px;padding-top:16px;border-top:1px dashed #e2e8f0;display:flex;justify-content:center}.btn-remove-grid-action{display:inline-flex;align-items:center;gap:6px;background:#fee2e2;border:1px solid #fecaca;color:#dc2626;font-size:.75rem;font-weight:600;padding:6px 12px;border-radius:6px;cursor:pointer;transition:all .15s ease}.btn-remove-grid-action:hover{background:#fecaca;border-color:#f87171;color:#b91c1c}.props-form{display:flex;flex-direction:column;gap:20px}.group-header-with-btn{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:8px;margin-bottom:4px}.btn-add-col{display:inline-flex;align-items:center;gap:5px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:4px 10px;font-size:.725rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);cursor:pointer;transition:all .15s ease}.btn-add-col:hover{background:var(--rpt-color-primary, #2563eb);color:#fff;border-color:var(--rpt-color-primary, #2563eb)}.columns-editor-list{display:flex;flex-direction:column;gap:10px}.col-edit-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;position:relative;overflow:hidden;display:flex;flex-direction:column}.col-edit-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.col-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box}.col-header-title-group{display:flex;align-items:center;gap:5px;min-width:0;flex:1}.col-drag-dots{color:#94a3b8;font-size:.8rem;cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;padding-left:2px}.col-idx-badge{font-size:.65rem;font-weight:700;color:#64748b;background:#e2e8f0;padding:1px 5px;border-radius:3px;letter-spacing:.02em}.col-title-input{flex:1;border:1px solid transparent;background:transparent;font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:2px 6px;border-radius:4px;outline:none;transition:all .15s ease}.col-title-input:hover{border-color:#cbd5e1;background:#fff}.col-title-input:focus{border-color:var(--rpt-color-primary, #2563eb);background:#fff;box-shadow:0 0 0 2px #2563eb26}.col-card-actions{display:flex;align-items:center;gap:4px}.col-type-pill{font-size:.625rem;font-weight:700;color:#1e40af;background:#dbeafe;border:1px solid #bfdbfe;padding:1px 5px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em}.col-action-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;padding:3px;border-radius:4px;transition:all .15s ease}.col-action-btn.btn-delete:hover{color:var(--rpt-color-danger, #ef4444);background:#fee2e2}.col-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px;background:#fff}.col-edit-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px}.col-field-item{display:flex;flex-direction:column;gap:2px;min-width:0}.mini-label{font-size:.625rem;font-weight:600;color:#64748b;letter-spacing:.02em}.col-mini-input,.col-mini-select{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:3px;padding:3px 5px;font-size:.7rem;color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all .12s ease}.col-mini-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 4px center;background-size:10px 10px;padding-right:16px;cursor:pointer}.col-mini-input:focus,.col-mini-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb26}.col-card-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding-top:4px;border-top:1px dashed #e2e8f0;margin-top:2px}.col-checkbox-toggle{display:inline-flex;align-items:center;gap:5px;font-size:.675rem;font-weight:500;color:#475569;cursor:pointer;-webkit-user-select:none;user-select:none}.btn-add-mapping{display:inline-flex;align-items:center;background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb;font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-add-mapping:hover{background:#dbeafe}.mapping-pair-row{display:flex;align-items:center;gap:6px;margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11839
12250
|
}
|
|
11840
12251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertyEditorGridComponent, decorators: [{
|
|
11841
12252
|
type: Component,
|
|
@@ -11987,6 +12398,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
11987
12398
|
/>
|
|
11988
12399
|
<span>Visible</span>
|
|
11989
12400
|
</label>
|
|
12401
|
+
<label class="col-checkbox-toggle">
|
|
12402
|
+
<input
|
|
12403
|
+
type="checkbox"
|
|
12404
|
+
[ngModel]="col.checkboxSelection ?? false"
|
|
12405
|
+
(ngModelChange)="onUpdateCol(idx, 'checkboxSelection', $event)"
|
|
12406
|
+
/>
|
|
12407
|
+
<span>Checkbox</span>
|
|
12408
|
+
</label>
|
|
11990
12409
|
</div>
|
|
11991
12410
|
</div>
|
|
11992
12411
|
</div>
|
|
@@ -11998,6 +12417,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
11998
12417
|
<div class="property-group">
|
|
11999
12418
|
<div class="group-title">Table Options</div>
|
|
12000
12419
|
|
|
12420
|
+
<div class="field-row">
|
|
12421
|
+
<label class="checkbox-toggle">
|
|
12422
|
+
<input
|
|
12423
|
+
type="checkbox"
|
|
12424
|
+
[ngModel]="grid()?.options?.sideBar !== false"
|
|
12425
|
+
(ngModelChange)="updateOption.emit({ field: 'sideBar', value: $event })"
|
|
12426
|
+
/>
|
|
12427
|
+
<span>Enable Side Panel (Tool Panels)</span>
|
|
12428
|
+
</label>
|
|
12429
|
+
</div>
|
|
12430
|
+
|
|
12431
|
+
<div class="field-row">
|
|
12432
|
+
<label class="checkbox-toggle">
|
|
12433
|
+
<input
|
|
12434
|
+
type="checkbox"
|
|
12435
|
+
[ngModel]="grid()?.options?.globalSearch !== false"
|
|
12436
|
+
(ngModelChange)="updateOption.emit({ field: 'globalSearch', value: $event })"
|
|
12437
|
+
/>
|
|
12438
|
+
<span>Global Search Box</span>
|
|
12439
|
+
</label>
|
|
12440
|
+
</div>
|
|
12441
|
+
|
|
12442
|
+
<div class="field-row">
|
|
12443
|
+
<label class="checkbox-toggle">
|
|
12444
|
+
<input
|
|
12445
|
+
type="checkbox"
|
|
12446
|
+
[ngModel]="grid()?.options?.statusBar !== false"
|
|
12447
|
+
(ngModelChange)="updateOption.emit({ field: 'statusBar', value: $event })"
|
|
12448
|
+
/>
|
|
12449
|
+
<span>Status Bar</span>
|
|
12450
|
+
</label>
|
|
12451
|
+
</div>
|
|
12452
|
+
|
|
12001
12453
|
<div class="field-row">
|
|
12002
12454
|
<label class="checkbox-toggle">
|
|
12003
12455
|
<input
|
|
@@ -12020,6 +12472,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12020
12472
|
</label>
|
|
12021
12473
|
</div>
|
|
12022
12474
|
|
|
12475
|
+
@if (grid()?.options?.selectable) {
|
|
12476
|
+
<div class="field-row">
|
|
12477
|
+
<label class="field-label">Selection Mode</label>
|
|
12478
|
+
<select
|
|
12479
|
+
class="field-input"
|
|
12480
|
+
[ngModel]="grid()?.options?.selectionMode ?? 'multiple'"
|
|
12481
|
+
(ngModelChange)="updateOption.emit({ field: 'selectionMode', value: $event })"
|
|
12482
|
+
>
|
|
12483
|
+
<option value="multiple">Multiple Rows</option>
|
|
12484
|
+
<option value="single">Single Row</option>
|
|
12485
|
+
</select>
|
|
12486
|
+
</div>
|
|
12487
|
+
|
|
12488
|
+
<div class="field-row">
|
|
12489
|
+
<label class="checkbox-toggle">
|
|
12490
|
+
<input
|
|
12491
|
+
type="checkbox"
|
|
12492
|
+
[ngModel]="grid()?.options?.checkboxSelection ?? true"
|
|
12493
|
+
(ngModelChange)="updateOption.emit({ field: 'checkboxSelection', value: $event })"
|
|
12494
|
+
/>
|
|
12495
|
+
<span>Checkbox Selection</span>
|
|
12496
|
+
</label>
|
|
12497
|
+
</div>
|
|
12498
|
+
|
|
12499
|
+
@if ((grid()?.options?.selectionMode ?? 'multiple') === 'multiple') {
|
|
12500
|
+
<div class="field-row">
|
|
12501
|
+
<label class="checkbox-toggle">
|
|
12502
|
+
<input
|
|
12503
|
+
type="checkbox"
|
|
12504
|
+
[ngModel]="grid()?.options?.headerCheckboxSelection ?? true"
|
|
12505
|
+
(ngModelChange)="updateOption.emit({ field: 'headerCheckboxSelection', value: $event })"
|
|
12506
|
+
/>
|
|
12507
|
+
<span>Header Select All Checkbox</span>
|
|
12508
|
+
</label>
|
|
12509
|
+
</div>
|
|
12510
|
+
}
|
|
12511
|
+
}
|
|
12512
|
+
|
|
12023
12513
|
<div class="field-row">
|
|
12024
12514
|
<label class="checkbox-toggle">
|
|
12025
12515
|
<input
|
|
@@ -12232,7 +12722,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12232
12722
|
</div>
|
|
12233
12723
|
</div>
|
|
12234
12724
|
}
|
|
12235
|
-
`, styles: [".property-group{display:flex;flex-direction:column;gap:12px}.group-title{font-size:.7rem;font-weight:700;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:4px}.field-row{display:flex;flex-direction:column;gap:4px}.field-label-row{display:flex;align-items:center;justify-content:space-between}.field-badge-val{font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.field-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.field-input,.field-select,.field-textarea{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);padding:6px 10px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.field-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 10px center;background-size:13px 13px;padding-right:28px;cursor:pointer}.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.checkbox-toggle{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;font-weight:500;color:var(--rpt-color-text, #0f172a);cursor:pointer}.preset-pill-group{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.preset-pill{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-size:.65rem;font-weight:600;color:#475569;cursor:pointer;transition:all .12s ease}.preset-pill:hover{background:#e2e8f0;color:#0f172a;border-color:#cbd5e1}.preset-pill-active{background:var(--rpt-color-primary, #2563eb)!important;color:#fff!important;border-color:var(--rpt-color-primary, #2563eb)!important}.preset-pill-reset{color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border-color:#bfdbfe}.preset-pill-reset:hover{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}\n", ".empty-grid-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px;text-align:center;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;margin:10px 0}.empty-grid-icon{width:48px;height:48px;border-radius:10px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.empty-grid-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0 0 6px}.empty-grid-desc{font-size:.775rem;color:#64748b;margin:0 0 18px;line-height:1.4;max-width:280px}.btn-create-grid-action{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:#2563eb;color:#fff;font-size:.775rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;box-shadow:0 2px 4px #2563eb33;transition:all .15s ease}.btn-create-grid-action:hover{background:#1d4ed8;box-shadow:0 4px 8px #2563eb40}.grid-danger-zone{margin-top:10px;padding-top:16px;border-top:1px dashed #e2e8f0;display:flex;justify-content:center}.btn-remove-grid-action{display:inline-flex;align-items:center;gap:6px;background:#fee2e2;border:1px solid #fecaca;color:#dc2626;font-size:.75rem;font-weight:600;padding:6px 12px;border-radius:6px;cursor:pointer;transition:all .15s ease}.btn-remove-grid-action:hover{background:#fecaca;border-color:#f87171;color:#b91c1c}.props-form{display:flex;flex-direction:column;gap:20px}.group-header-with-btn{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:8px;margin-bottom:4px}.btn-add-col{display:inline-flex;align-items:center;gap:5px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:4px 10px;font-size:.725rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);cursor:pointer;transition:all .15s ease}.btn-add-col:hover{background:var(--rpt-color-primary, #2563eb);color:#fff;border-color:var(--rpt-color-primary, #2563eb)}.columns-editor-list{display:flex;flex-direction:column;gap:10px}.col-edit-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;position:relative;overflow:hidden;display:flex;flex-direction:column}.col-edit-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.col-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box}.col-header-title-group{display:flex;align-items:center;gap:5px;min-width:0;flex:1}.col-drag-dots{color:#94a3b8;font-size:.8rem;cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;padding-left:2px}.col-idx-badge{font-size:.65rem;font-weight:700;color:#64748b;background:#e2e8f0;padding:1px 5px;border-radius:3px;letter-spacing:.02em}.col-title-input{flex:1;border:1px solid transparent;background:transparent;font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:2px 6px;border-radius:4px;outline:none;transition:all .15s ease}.col-title-input:hover{border-color:#cbd5e1;background:#fff}.col-title-input:focus{border-color:var(--rpt-color-primary, #2563eb);background:#fff;box-shadow:0 0 0 2px #2563eb26}.col-card-actions{display:flex;align-items:center;gap:4px}.col-type-pill{font-size:.625rem;font-weight:700;color:#1e40af;background:#dbeafe;border:1px solid #bfdbfe;padding:1px 5px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em}.col-action-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;padding:3px;border-radius:4px;transition:all .15s ease}.col-action-btn.btn-delete:hover{color:var(--rpt-color-danger, #ef4444);background:#fee2e2}.col-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px;background:#fff}.col-edit-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px}.col-field-item{display:flex;flex-direction:column;gap:2px;min-width:0}.mini-label{font-size:.625rem;font-weight:600;color:#64748b;letter-spacing:.02em}.col-mini-input,.col-mini-select{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:3px;padding:3px 5px;font-size:.7rem;color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all .12s ease}.col-mini-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 4px center;background-size:10px 10px;padding-right:16px;cursor:pointer}.col-mini-input:focus,.col-mini-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb26}.col-card-footer{display:flex;align-items:center;justify-content:flex-end;padding-top:4px;border-top:1px dashed #e2e8f0;margin-top:2px}.col-checkbox-toggle{display:inline-flex;align-items:center;gap:5px;font-size:.675rem;font-weight:500;color:#475569;cursor:pointer;-webkit-user-select:none;user-select:none}.btn-add-mapping{display:inline-flex;align-items:center;background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb;font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-add-mapping:hover{background:#dbeafe}.mapping-pair-row{display:flex;align-items:center;gap:6px;margin-top:4px}\n"] }]
|
|
12725
|
+
`, styles: [".property-group{display:flex;flex-direction:column;gap:12px}.group-title{font-size:.7rem;font-weight:700;color:var(--rpt-color-text-muted, #64748b);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:4px}.field-row{display:flex;flex-direction:column;gap:4px}.field-label-row{display:flex;align-items:center;justify-content:space-between}.field-badge-val{font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px}.field-label{font-size:.7rem;font-weight:600;color:var(--rpt-color-text, #0f172a)}.field-input,.field-select,.field-textarea{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-sm, 4px);padding:6px 10px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.field-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 10px center;background-size:13px 13px;padding-right:28px;cursor:pointer}.field-input:focus,.field-select:focus,.field-textarea:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.checkbox-toggle{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;font-weight:500;color:var(--rpt-color-text, #0f172a);cursor:pointer}.preset-pill-group{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.preset-pill{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:2px 8px;font-size:.65rem;font-weight:600;color:#475569;cursor:pointer;transition:all .12s ease}.preset-pill:hover{background:#e2e8f0;color:#0f172a;border-color:#cbd5e1}.preset-pill-active{background:var(--rpt-color-primary, #2563eb)!important;color:#fff!important;border-color:var(--rpt-color-primary, #2563eb)!important}.preset-pill-reset{color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border-color:#bfdbfe}.preset-pill-reset:hover{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}\n", ".empty-grid-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px;text-align:center;border:2px dashed #cbd5e1;border-radius:8px;background:#fff;margin:10px 0}.empty-grid-icon{width:48px;height:48px;border-radius:10px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.empty-grid-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0 0 6px}.empty-grid-desc{font-size:.775rem;color:#64748b;margin:0 0 18px;line-height:1.4;max-width:280px}.btn-create-grid-action{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:#2563eb;color:#fff;font-size:.775rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;box-shadow:0 2px 4px #2563eb33;transition:all .15s ease}.btn-create-grid-action:hover{background:#1d4ed8;box-shadow:0 4px 8px #2563eb40}.grid-danger-zone{margin-top:10px;padding-top:16px;border-top:1px dashed #e2e8f0;display:flex;justify-content:center}.btn-remove-grid-action{display:inline-flex;align-items:center;gap:6px;background:#fee2e2;border:1px solid #fecaca;color:#dc2626;font-size:.75rem;font-weight:600;padding:6px 12px;border-radius:6px;cursor:pointer;transition:all .15s ease}.btn-remove-grid-action:hover{background:#fecaca;border-color:#f87171;color:#b91c1c}.props-form{display:flex;flex-direction:column;gap:20px}.group-header-with-btn{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--rpt-color-border, #e2e8f0);padding-bottom:8px;margin-bottom:4px}.btn-add-col{display:inline-flex;align-items:center;gap:5px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;padding:4px 10px;font-size:.725rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);cursor:pointer;transition:all .15s ease}.btn-add-col:hover{background:var(--rpt-color-primary, #2563eb);color:#fff;border-color:var(--rpt-color-primary, #2563eb)}.columns-editor-list{display:flex;flex-direction:column;gap:10px}.col-edit-card{background:#fff;border:1.5px solid var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius, 6px);box-shadow:var(--rpt-box-shadow, 0 1px 2px rgba(0, 0, 0, .05));box-sizing:border-box;transition:all var(--rpt-transition-speed, .15s) ease;position:relative;overflow:hidden;display:flex;flex-direction:column}.col-edit-card:hover{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 4px 6px -1px #2563eb1a}.col-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px;background:var(--rpt-color-surface, #f8fafc);border-bottom:1px solid var(--rpt-color-border, #e2e8f0);min-height:32px;box-sizing:border-box}.col-header-title-group{display:flex;align-items:center;gap:5px;min-width:0;flex:1}.col-drag-dots{color:#94a3b8;font-size:.8rem;cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;padding-left:2px}.col-idx-badge{font-size:.65rem;font-weight:700;color:#64748b;background:#e2e8f0;padding:1px 5px;border-radius:3px;letter-spacing:.02em}.col-title-input{flex:1;border:1px solid transparent;background:transparent;font-size:.75rem;font-weight:600;color:var(--rpt-color-text, #0f172a);padding:2px 6px;border-radius:4px;outline:none;transition:all .15s ease}.col-title-input:hover{border-color:#cbd5e1;background:#fff}.col-title-input:focus{border-color:var(--rpt-color-primary, #2563eb);background:#fff;box-shadow:0 0 0 2px #2563eb26}.col-card-actions{display:flex;align-items:center;gap:4px}.col-type-pill{font-size:.625rem;font-weight:700;color:#1e40af;background:#dbeafe;border:1px solid #bfdbfe;padding:1px 5px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em}.col-action-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;padding:3px;border-radius:4px;transition:all .15s ease}.col-action-btn.btn-delete:hover{color:var(--rpt-color-danger, #ef4444);background:#fee2e2}.col-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px;background:#fff}.col-edit-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px}.col-field-item{display:flex;flex-direction:column;gap:2px;min-width:0}.mini-label{font-size:.625rem;font-weight:600;color:#64748b;letter-spacing:.02em}.col-mini-input,.col-mini-select{width:100%;box-sizing:border-box;border:1px solid var(--rpt-color-border, #cbd5e1);border-radius:3px;padding:3px 5px;font-size:.7rem;color:var(--rpt-color-text, #0f172a);background:#fff;outline:none;transition:all .12s ease}.col-mini-select{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 4px center;background-size:10px 10px;padding-right:16px;cursor:pointer}.col-mini-input:focus,.col-mini-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px #2563eb26}.col-card-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding-top:4px;border-top:1px dashed #e2e8f0;margin-top:2px}.col-checkbox-toggle{display:inline-flex;align-items:center;gap:5px;font-size:.675rem;font-weight:500;color:#475569;cursor:pointer;-webkit-user-select:none;user-select:none}.btn-add-mapping{display:inline-flex;align-items:center;background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb;font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;cursor:pointer;transition:all .12s ease}.btn-add-mapping:hover{background:#dbeafe}.mapping-pair-row{display:flex;align-items:center;gap:6px;margin-top:4px}\n"] }]
|
|
12236
12726
|
}] });
|
|
12237
12727
|
|
|
12238
12728
|
class PropertyEditorReportComponent {
|
|
@@ -13068,12 +13558,64 @@ class PropertyEditorDatasourceComponent {
|
|
|
13068
13558
|
this.discoveryAdapter.getParameters(entityName, 'dbo').subscribe({
|
|
13069
13559
|
next: (params) => {
|
|
13070
13560
|
this.procedureParameters.set(params);
|
|
13071
|
-
|
|
13561
|
+
// Only auto-link to existing session or existing canvas fields.
|
|
13562
|
+
// NEVER mutate canvas or create new components automatically!
|
|
13563
|
+
this.autoLinkExistingParameters(params);
|
|
13072
13564
|
},
|
|
13073
13565
|
error: (err) => console.error(`[PropertyEditorDatasource] Failed to load params for ${entityName}:`, err),
|
|
13074
13566
|
});
|
|
13075
13567
|
}
|
|
13076
13568
|
}
|
|
13569
|
+
/**
|
|
13570
|
+
* Non-destructive linking: binds parameters to session or already-existing canvas fields.
|
|
13571
|
+
* Never mutates or adds new components to the canvas.
|
|
13572
|
+
*/
|
|
13573
|
+
autoLinkExistingParameters(paramsList) {
|
|
13574
|
+
const params = paramsList || this.procedureParameters();
|
|
13575
|
+
if (!params || params.length === 0)
|
|
13576
|
+
return;
|
|
13577
|
+
const currentMappings = { ...(this.comp().dataSource?.parameterMappings ?? {}) };
|
|
13578
|
+
let changed = false;
|
|
13579
|
+
for (const param of params) {
|
|
13580
|
+
const clean = param.name.replace(/^@/, '');
|
|
13581
|
+
const existing = currentMappings[param.name] ?? currentMappings[clean];
|
|
13582
|
+
if (existing !== undefined && existing !== '') {
|
|
13583
|
+
continue;
|
|
13584
|
+
}
|
|
13585
|
+
// 1. Session match (e.g. companyId, branchId, userId)
|
|
13586
|
+
const sessionMatch = this.sessionService?.matchParameter(clean) ?? this.sessionService?.matchParameter(param.name);
|
|
13587
|
+
if (sessionMatch) {
|
|
13588
|
+
currentMappings[param.name] = `{{session.${sessionMatch.sessionKey}}}`;
|
|
13589
|
+
currentMappings[clean] = `{{session.${sessionMatch.sessionKey}}}`;
|
|
13590
|
+
changed = true;
|
|
13591
|
+
continue;
|
|
13592
|
+
}
|
|
13593
|
+
// 2. Existing canvas field match
|
|
13594
|
+
const matchedComp = this.allComponents().find((c) => {
|
|
13595
|
+
if (c.id === this.comp().id)
|
|
13596
|
+
return false;
|
|
13597
|
+
const ck = (c.key || '').toLowerCase();
|
|
13598
|
+
const cl = clean.toLowerCase();
|
|
13599
|
+
return ck === cl || ck === toFieldKey(cl);
|
|
13600
|
+
});
|
|
13601
|
+
if (matchedComp) {
|
|
13602
|
+
currentMappings[param.name] = `{{${matchedComp.key}}}`;
|
|
13603
|
+
currentMappings[clean] = `{{${matchedComp.key}}}`;
|
|
13604
|
+
changed = true;
|
|
13605
|
+
continue;
|
|
13606
|
+
}
|
|
13607
|
+
}
|
|
13608
|
+
if (changed) {
|
|
13609
|
+
this.updateDataSource.emit({
|
|
13610
|
+
...(this.comp().dataSource ?? { displayField: '', valueField: '' }),
|
|
13611
|
+
parameterMappings: currentMappings,
|
|
13612
|
+
});
|
|
13613
|
+
}
|
|
13614
|
+
}
|
|
13615
|
+
/**
|
|
13616
|
+
* Explicit user-initiated action: links existing fields, and creates missing filter inputs on canvas.
|
|
13617
|
+
* Restores selection to the current dropdown component so the user stays in this property editor.
|
|
13618
|
+
*/
|
|
13077
13619
|
autoWireAllParameters(paramsList) {
|
|
13078
13620
|
const params = paramsList || this.procedureParameters();
|
|
13079
13621
|
if (!params || params.length === 0)
|
|
@@ -13108,7 +13650,7 @@ class PropertyEditorDatasourceComponent {
|
|
|
13108
13650
|
changed = true;
|
|
13109
13651
|
continue;
|
|
13110
13652
|
}
|
|
13111
|
-
// 3. Auto-create missing canvas field
|
|
13653
|
+
// 3. Auto-create missing canvas field when explicitly requested by user
|
|
13112
13654
|
if (this.designerState) {
|
|
13113
13655
|
const lower = clean.toLowerCase();
|
|
13114
13656
|
let compType = 'input';
|
|
@@ -13140,6 +13682,10 @@ class PropertyEditorDatasourceComponent {
|
|
|
13140
13682
|
}
|
|
13141
13683
|
}
|
|
13142
13684
|
}
|
|
13685
|
+
// Restore selection to current dropdown so user is not navigated away
|
|
13686
|
+
if (this.designerState) {
|
|
13687
|
+
this.designerState.selectComponent(this.comp().id);
|
|
13688
|
+
}
|
|
13143
13689
|
if (changed) {
|
|
13144
13690
|
this.updateDataSource.emit({
|
|
13145
13691
|
...(this.comp().dataSource ?? { displayField: '', valueField: '' }),
|
|
@@ -13159,10 +13705,13 @@ class PropertyEditorDatasourceComponent {
|
|
|
13159
13705
|
if (this.allEntities().length === 0) {
|
|
13160
13706
|
this.loadEntities();
|
|
13161
13707
|
}
|
|
13162
|
-
const
|
|
13708
|
+
const currentEntity = this.comp().dataSource?.entityName;
|
|
13709
|
+
const isValidForType = type === 'table'
|
|
13710
|
+
? this.availableTables().some((t) => t.name === currentEntity)
|
|
13711
|
+
: this.availableProcedures().some((p) => p.name === currentEntity);
|
|
13163
13712
|
this.updateDataSource.emit({
|
|
13164
13713
|
sourceType: type,
|
|
13165
|
-
entityName:
|
|
13714
|
+
entityName: isValidForType ? (currentEntity || '') : '',
|
|
13166
13715
|
schema: 'dbo',
|
|
13167
13716
|
displayField: '',
|
|
13168
13717
|
valueField: '',
|
|
@@ -14524,6 +15073,7 @@ class PropertyEditorComponent {
|
|
|
14524
15073
|
definition = this.designerState.definition;
|
|
14525
15074
|
activeTab = this.designerState.activeTab;
|
|
14526
15075
|
selectedComponent = this.designerState.selectedComponent;
|
|
15076
|
+
collapseRequested = output();
|
|
14527
15077
|
maxColumns = computed(() => this.definition().layout.columns || 12);
|
|
14528
15078
|
allComponents = computed(() => this.definition().components);
|
|
14529
15079
|
propertySchema = computed(() => {
|
|
@@ -14542,6 +15092,12 @@ class PropertyEditorComponent {
|
|
|
14542
15092
|
deselect() {
|
|
14543
15093
|
this.designerState.selectComponent(null);
|
|
14544
15094
|
}
|
|
15095
|
+
duplicateComponent(id) {
|
|
15096
|
+
this.designerState.duplicateComponent(id);
|
|
15097
|
+
}
|
|
15098
|
+
deleteComponent(id) {
|
|
15099
|
+
this.designerState.removeComponent(id);
|
|
15100
|
+
}
|
|
14545
15101
|
updateComp(field, value) {
|
|
14546
15102
|
const comp = this.selectedComponent();
|
|
14547
15103
|
if (comp) {
|
|
@@ -14605,6 +15161,9 @@ class PropertyEditorComponent {
|
|
|
14605
15161
|
pageSize: 25,
|
|
14606
15162
|
showRowNumbers: true,
|
|
14607
15163
|
showFooter: true,
|
|
15164
|
+
sideBar: true,
|
|
15165
|
+
globalSearch: true,
|
|
15166
|
+
statusBar: true,
|
|
14608
15167
|
},
|
|
14609
15168
|
};
|
|
14610
15169
|
this.designerState.updateGridSettings(defaultGrid);
|
|
@@ -14782,7 +15341,7 @@ class PropertyEditorComponent {
|
|
|
14782
15341
|
return comp.validation?.required ? 'Required' : 'Optional';
|
|
14783
15342
|
}
|
|
14784
15343
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertyEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14785
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PropertyEditorComponent, isStandalone: true, selector: "rpt-property-editor", ngImport: i0, template: `
|
|
15344
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PropertyEditorComponent, isStandalone: true, selector: "rpt-property-editor", outputs: { collapseRequested: "collapseRequested" }, ngImport: i0, template: `
|
|
14786
15345
|
<div class="editor-container">
|
|
14787
15346
|
<!-- Editor Header & Tabs -->
|
|
14788
15347
|
<div class="editor-tabs">
|
|
@@ -14814,6 +15373,18 @@ class PropertyEditorComponent {
|
|
|
14814
15373
|
<rpt-icon name="table" [size]="13" />
|
|
14815
15374
|
<span>Grid</span>
|
|
14816
15375
|
</button>
|
|
15376
|
+
|
|
15377
|
+
<div style="flex: 1;"></div>
|
|
15378
|
+
|
|
15379
|
+
<button
|
|
15380
|
+
type="button"
|
|
15381
|
+
class="tab-btn btn-collapse-inspector"
|
|
15382
|
+
(click)="collapseRequested.emit()"
|
|
15383
|
+
title="Collapse Property Editor"
|
|
15384
|
+
aria-label="Collapse Property Editor"
|
|
15385
|
+
>
|
|
15386
|
+
<rpt-icon name="chevron-right" [size]="13" />
|
|
15387
|
+
</button>
|
|
14817
15388
|
</div>
|
|
14818
15389
|
|
|
14819
15390
|
<!-- Editor Body -->
|
|
@@ -14828,9 +15399,32 @@ class PropertyEditorComponent {
|
|
|
14828
15399
|
<span class="badge-type">{{ comp.type }}</span>
|
|
14829
15400
|
<span class="badge-id">{{ comp.id }}</span>
|
|
14830
15401
|
</div>
|
|
14831
|
-
<
|
|
14832
|
-
<
|
|
14833
|
-
|
|
15402
|
+
<div class="badge-header-actions">
|
|
15403
|
+
<button
|
|
15404
|
+
type="button"
|
|
15405
|
+
class="btn-badge-action"
|
|
15406
|
+
(click)="duplicateComponent(comp.id)"
|
|
15407
|
+
title="Duplicate component"
|
|
15408
|
+
>
|
|
15409
|
+
<rpt-icon name="copy" [size]="13" />
|
|
15410
|
+
</button>
|
|
15411
|
+
<button
|
|
15412
|
+
type="button"
|
|
15413
|
+
class="btn-badge-action btn-badge-delete"
|
|
15414
|
+
(click)="deleteComponent(comp.id)"
|
|
15415
|
+
title="Delete component"
|
|
15416
|
+
>
|
|
15417
|
+
<rpt-icon name="trash" [size]="13" />
|
|
15418
|
+
</button>
|
|
15419
|
+
<button
|
|
15420
|
+
type="button"
|
|
15421
|
+
class="btn-deselect"
|
|
15422
|
+
(click)="deselect()"
|
|
15423
|
+
title="Deselect component"
|
|
15424
|
+
>
|
|
15425
|
+
<rpt-icon name="close" [size]="13" />
|
|
15426
|
+
</button>
|
|
15427
|
+
</div>
|
|
14834
15428
|
</div>
|
|
14835
15429
|
|
|
14836
15430
|
<!-- Accordion Container -->
|
|
@@ -15020,7 +15614,7 @@ class PropertyEditorComponent {
|
|
|
15020
15614
|
}
|
|
15021
15615
|
</div>
|
|
15022
15616
|
</div>
|
|
15023
|
-
`, isInline: true, styles: [":host{display:block;height:100%;background:#fff;border-left:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.editor-container{display:flex;flex-direction:column;height:100%}.editor-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.tab-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 8px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.tab-btn:hover:not(:disabled){color:var(--rpt-color-text, #0f172a)}.tab-btn.active{color:var(--rpt-color-primary, #2563eb);border-bottom-color:var(--rpt-color-primary, #2563eb);background:#fff}.tab-btn:disabled{opacity:.4;cursor:not-allowed}.editor-body{flex:1;overflow-y:auto;padding:12px 14px}.component-sections-wrapper{display:flex;flex-direction:column;gap:12px}.comp-badge-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--rpt-color-surface, #f8fafc);border-radius:6px;border:1px solid var(--rpt-color-border, #e2e8f0)}.badge-title{display:flex;align-items:center}.badge-type{font-size:.75rem;font-weight:700;color:var(--rpt-color-primary, #2563eb);text-transform:uppercase;margin-right:8px}.badge-id{font-size:.7rem;color:var(--rpt-color-text-muted, #94a3b8);font-family:monospace}.btn-deselect{background:none;border:
|
|
15617
|
+
`, isInline: true, styles: [":host{display:block;height:100%;background:#fff;border-left:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.editor-container{display:flex;flex-direction:column;height:100%}.editor-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.tab-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 8px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.tab-btn:hover:not(:disabled){color:var(--rpt-color-text, #0f172a)}.tab-btn.active{color:var(--rpt-color-primary, #2563eb);border-bottom-color:var(--rpt-color-primary, #2563eb);background:#fff}.tab-btn:disabled{opacity:.4;cursor:not-allowed}.editor-body{flex:1;overflow-y:auto;padding:12px 14px}.component-sections-wrapper{display:flex;flex-direction:column;gap:12px}.comp-badge-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--rpt-color-surface, #f8fafc);border-radius:6px;border:1px solid var(--rpt-color-border, #e2e8f0)}.badge-title{display:flex;align-items:center}.badge-type{font-size:.75rem;font-weight:700;color:var(--rpt-color-primary, #2563eb);text-transform:uppercase;margin-right:8px}.badge-id{font-size:.7rem;color:var(--rpt-color-text-muted, #94a3b8);font-family:monospace}.badge-header-actions{display:flex;align-items:center;gap:4px}.btn-badge-action{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);display:inline-flex;align-items:center;justify-content:center;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;width:24px;height:24px;border-radius:4px;padding:0;transition:all .12s ease}.btn-badge-action:hover{background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.btn-badge-action.btn-badge-delete:hover{background:#fee2e2;color:#ef4444;border-color:#fca5a5}.btn-deselect{background:none;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;width:24px;height:24px;border-radius:4px;padding:0;transition:all .15s ease}.btn-deselect:hover{color:var(--rpt-color-danger, #ef4444);background:#fee2e2;border-color:#fca5a5}.property-accordion{display:flex;flex-direction:column;gap:10px}.accordion-item{border:1px solid var(--rpt-color-border, #e2e8f0);border-radius:6px;background:#fff;overflow:hidden;transition:all .15s ease}.accordion-item.is-expanded{border-color:#cbd5e1;box-shadow:0 1px 3px #0000000a}.accordion-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--rpt-color-surface, #f8fafc);border:none;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;transition:background .15s ease}.accordion-header:hover{background:#f1f5f9}.accordion-item.is-expanded .accordion-header{background:#f8fafc;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.header-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.header-title{font-size:.72rem;font-weight:700;color:var(--rpt-color-text, #0f172a);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.header-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.header-right{display:flex;align-items:center;color:var(--rpt-color-text-muted, #64748b);margin-left:8px}.accordion-chevron{transition:transform .2s ease}.accordion-item.is-expanded .accordion-chevron{transform:rotate(180deg)}.accordion-content{padding:12px;display:flex;flex-direction:column;gap:12px}::ng-deep .accordion-content .group-title{display:none}::ng-deep .accordion-content .comp-badge-header{display:none}.empty-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;box-sizing:border-box}.empty-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:#f1f5f9;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.empty-text{font-size:.8125rem;line-height:1.5;max-width:220px;margin:0;color:var(--rpt-color-text-muted, #64748b)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }, { kind: "component", type: PropertyEditorGeneralComponent, selector: "rpt-property-editor-general", inputs: ["comp", "propertySchema"], outputs: ["update", "updateProperty", "deselect"] }, { kind: "component", type: PropertyEditorLayoutComponent, selector: "rpt-property-editor-layout", inputs: ["comp", "maxColumns"], outputs: ["updateLayout", "updateHeight", "resetDimensions"] }, { kind: "component", type: PropertyEditorValidationComponent, selector: "rpt-property-editor-validation", inputs: ["comp"], outputs: ["updateValidation"] }, { kind: "component", type: PropertyEditorGridComponent, selector: "rpt-property-editor-grid", inputs: ["grid"], outputs: ["addGrid", "removeGrid", "addColumn", "autoDetectColumns", "removeColumn", "updateColumn", "updateOption", "updateRowClickAction"] }, { kind: "component", type: PropertyEditorReportComponent, selector: "rpt-property-editor-report", inputs: ["definition"], outputs: ["updateReport", "updateLayout"] }, { kind: "component", type: PropertyEditorDatasourceComponent, selector: "rpt-property-editor-datasource", inputs: ["comp", "allComponents"], outputs: ["updateDataSource", "updateProperty"] }, { kind: "component", type: PropertyEditorActionComponent, selector: "rpt-property-editor-action", inputs: ["comp"], outputs: ["updateProperty"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15024
15618
|
}
|
|
15025
15619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PropertyEditorComponent, decorators: [{
|
|
15026
15620
|
type: Component,
|
|
@@ -15066,6 +15660,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15066
15660
|
<rpt-icon name="table" [size]="13" />
|
|
15067
15661
|
<span>Grid</span>
|
|
15068
15662
|
</button>
|
|
15663
|
+
|
|
15664
|
+
<div style="flex: 1;"></div>
|
|
15665
|
+
|
|
15666
|
+
<button
|
|
15667
|
+
type="button"
|
|
15668
|
+
class="tab-btn btn-collapse-inspector"
|
|
15669
|
+
(click)="collapseRequested.emit()"
|
|
15670
|
+
title="Collapse Property Editor"
|
|
15671
|
+
aria-label="Collapse Property Editor"
|
|
15672
|
+
>
|
|
15673
|
+
<rpt-icon name="chevron-right" [size]="13" />
|
|
15674
|
+
</button>
|
|
15069
15675
|
</div>
|
|
15070
15676
|
|
|
15071
15677
|
<!-- Editor Body -->
|
|
@@ -15080,9 +15686,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15080
15686
|
<span class="badge-type">{{ comp.type }}</span>
|
|
15081
15687
|
<span class="badge-id">{{ comp.id }}</span>
|
|
15082
15688
|
</div>
|
|
15083
|
-
<
|
|
15084
|
-
<
|
|
15085
|
-
|
|
15689
|
+
<div class="badge-header-actions">
|
|
15690
|
+
<button
|
|
15691
|
+
type="button"
|
|
15692
|
+
class="btn-badge-action"
|
|
15693
|
+
(click)="duplicateComponent(comp.id)"
|
|
15694
|
+
title="Duplicate component"
|
|
15695
|
+
>
|
|
15696
|
+
<rpt-icon name="copy" [size]="13" />
|
|
15697
|
+
</button>
|
|
15698
|
+
<button
|
|
15699
|
+
type="button"
|
|
15700
|
+
class="btn-badge-action btn-badge-delete"
|
|
15701
|
+
(click)="deleteComponent(comp.id)"
|
|
15702
|
+
title="Delete component"
|
|
15703
|
+
>
|
|
15704
|
+
<rpt-icon name="trash" [size]="13" />
|
|
15705
|
+
</button>
|
|
15706
|
+
<button
|
|
15707
|
+
type="button"
|
|
15708
|
+
class="btn-deselect"
|
|
15709
|
+
(click)="deselect()"
|
|
15710
|
+
title="Deselect component"
|
|
15711
|
+
>
|
|
15712
|
+
<rpt-icon name="close" [size]="13" />
|
|
15713
|
+
</button>
|
|
15714
|
+
</div>
|
|
15086
15715
|
</div>
|
|
15087
15716
|
|
|
15088
15717
|
<!-- Accordion Container -->
|
|
@@ -15272,7 +15901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15272
15901
|
}
|
|
15273
15902
|
</div>
|
|
15274
15903
|
</div>
|
|
15275
|
-
`, styles: [":host{display:block;height:100%;background:#fff;border-left:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.editor-container{display:flex;flex-direction:column;height:100%}.editor-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.tab-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 8px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.tab-btn:hover:not(:disabled){color:var(--rpt-color-text, #0f172a)}.tab-btn.active{color:var(--rpt-color-primary, #2563eb);border-bottom-color:var(--rpt-color-primary, #2563eb);background:#fff}.tab-btn:disabled{opacity:.4;cursor:not-allowed}.editor-body{flex:1;overflow-y:auto;padding:12px 14px}.component-sections-wrapper{display:flex;flex-direction:column;gap:12px}.comp-badge-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--rpt-color-surface, #f8fafc);border-radius:6px;border:1px solid var(--rpt-color-border, #e2e8f0)}.badge-title{display:flex;align-items:center}.badge-type{font-size:.75rem;font-weight:700;color:var(--rpt-color-primary, #2563eb);text-transform:uppercase;margin-right:8px}.badge-id{font-size:.7rem;color:var(--rpt-color-text-muted, #94a3b8);font-family:monospace}.btn-deselect{background:none;border:
|
|
15904
|
+
`, styles: [":host{display:block;height:100%;background:#fff;border-left:1px solid var(--rpt-color-border, #cbd5e1);box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.editor-container{display:flex;flex-direction:column;height:100%}.editor-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--rpt-color-border, #cbd5e1);background:var(--rpt-color-surface, #f8fafc)}.tab-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 8px;font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;color:var(--rpt-color-text-muted, #64748b);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.tab-btn:hover:not(:disabled){color:var(--rpt-color-text, #0f172a)}.tab-btn.active{color:var(--rpt-color-primary, #2563eb);border-bottom-color:var(--rpt-color-primary, #2563eb);background:#fff}.tab-btn:disabled{opacity:.4;cursor:not-allowed}.editor-body{flex:1;overflow-y:auto;padding:12px 14px}.component-sections-wrapper{display:flex;flex-direction:column;gap:12px}.comp-badge-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--rpt-color-surface, #f8fafc);border-radius:6px;border:1px solid var(--rpt-color-border, #e2e8f0)}.badge-title{display:flex;align-items:center}.badge-type{font-size:.75rem;font-weight:700;color:var(--rpt-color-primary, #2563eb);text-transform:uppercase;margin-right:8px}.badge-id{font-size:.7rem;color:var(--rpt-color-text-muted, #94a3b8);font-family:monospace}.badge-header-actions{display:flex;align-items:center;gap:4px}.btn-badge-action{background:#fff;border:1px solid var(--rpt-color-border, #cbd5e1);display:inline-flex;align-items:center;justify-content:center;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;width:24px;height:24px;border-radius:4px;padding:0;transition:all .12s ease}.btn-badge-action:hover{background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.btn-badge-action.btn-badge-delete:hover{background:#fee2e2;color:#ef4444;border-color:#fca5a5}.btn-deselect{background:none;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--rpt-color-text-muted, #64748b);cursor:pointer;width:24px;height:24px;border-radius:4px;padding:0;transition:all .15s ease}.btn-deselect:hover{color:var(--rpt-color-danger, #ef4444);background:#fee2e2;border-color:#fca5a5}.property-accordion{display:flex;flex-direction:column;gap:10px}.accordion-item{border:1px solid var(--rpt-color-border, #e2e8f0);border-radius:6px;background:#fff;overflow:hidden;transition:all .15s ease}.accordion-item.is-expanded{border-color:#cbd5e1;box-shadow:0 1px 3px #0000000a}.accordion-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--rpt-color-surface, #f8fafc);border:none;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;transition:background .15s ease}.accordion-header:hover{background:#f1f5f9}.accordion-item.is-expanded .accordion-header{background:#f8fafc;border-bottom:1px solid var(--rpt-color-border, #e2e8f0)}.header-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.header-title{font-size:.72rem;font-weight:700;color:var(--rpt-color-text, #0f172a);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.header-badge{font-size:.65rem;font-weight:600;color:var(--rpt-color-primary, #2563eb);background:#eff6ff;border:1px solid #bfdbfe;padding:1px 6px;border-radius:9999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.header-right{display:flex;align-items:center;color:var(--rpt-color-text-muted, #64748b);margin-left:8px}.accordion-chevron{transition:transform .2s ease}.accordion-item.is-expanded .accordion-chevron{transform:rotate(180deg)}.accordion-content{padding:12px;display:flex;flex-direction:column;gap:12px}::ng-deep .accordion-content .group-title{display:none}::ng-deep .accordion-content .comp-badge-header{display:none}.empty-selection{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;box-sizing:border-box}.empty-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:#f1f5f9;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.empty-text{font-size:.8125rem;line-height:1.5;max-width:220px;margin:0;color:var(--rpt-color-text-muted, #64748b)}\n"] }]
|
|
15276
15905
|
}] });
|
|
15277
15906
|
|
|
15278
15907
|
class DesignerComponent {
|
|
@@ -15301,15 +15930,59 @@ class DesignerComponent {
|
|
|
15301
15930
|
toggleRightPanel() {
|
|
15302
15931
|
this.isRightPanelCollapsed.update((v) => !v);
|
|
15303
15932
|
}
|
|
15933
|
+
openLeftPanelOnly() {
|
|
15934
|
+
this.isLeftPanelCollapsed.set(false);
|
|
15935
|
+
this.isRightPanelCollapsed.set(true);
|
|
15936
|
+
}
|
|
15937
|
+
openRightPanelOnly() {
|
|
15938
|
+
this.isRightPanelCollapsed.set(false);
|
|
15939
|
+
this.isLeftPanelCollapsed.set(true);
|
|
15940
|
+
}
|
|
15941
|
+
closeAllPanels() {
|
|
15942
|
+
this.isLeftPanelCollapsed.set(true);
|
|
15943
|
+
this.isRightPanelCollapsed.set(true);
|
|
15944
|
+
}
|
|
15945
|
+
onResize() {
|
|
15946
|
+
if (typeof window !== 'undefined' && window.innerWidth < 900) {
|
|
15947
|
+
if (!this.isLeftPanelCollapsed() && !this.isRightPanelCollapsed()) {
|
|
15948
|
+
this.isRightPanelCollapsed.set(true);
|
|
15949
|
+
}
|
|
15950
|
+
}
|
|
15951
|
+
}
|
|
15952
|
+
onKeyDown(event) {
|
|
15953
|
+
const isCtrlOrCmd = event.ctrlKey || event.metaKey;
|
|
15954
|
+
const target = event.target;
|
|
15955
|
+
const isInput = target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable);
|
|
15956
|
+
if (isInput)
|
|
15957
|
+
return;
|
|
15958
|
+
if (isCtrlOrCmd && !event.altKey && event.key.toLowerCase() === 'b') {
|
|
15959
|
+
event.preventDefault();
|
|
15960
|
+
this.toggleLeftPanel();
|
|
15961
|
+
}
|
|
15962
|
+
else if (isCtrlOrCmd && event.altKey && event.key.toLowerCase() === 'b') {
|
|
15963
|
+
event.preventDefault();
|
|
15964
|
+
this.toggleRightPanel();
|
|
15965
|
+
}
|
|
15966
|
+
}
|
|
15304
15967
|
formattedJson = computed(() => {
|
|
15305
15968
|
return JSON.stringify(this.currentDefinition(), null, 2);
|
|
15306
15969
|
});
|
|
15307
15970
|
loadedReportId = null;
|
|
15308
15971
|
loadedReportDef = null;
|
|
15972
|
+
lastEmittedDef = null;
|
|
15309
15973
|
constructor() {
|
|
15310
15974
|
effect(() => {
|
|
15311
15975
|
const def = this.definition();
|
|
15312
|
-
if (def
|
|
15976
|
+
if (!def)
|
|
15977
|
+
return;
|
|
15978
|
+
// Skip if this definition is reference-identical to what the designer just emitted or current internal state
|
|
15979
|
+
if (def === this.lastEmittedDef || def === this.designerState.definition()) {
|
|
15980
|
+
this.loadedReportDef = def;
|
|
15981
|
+
return;
|
|
15982
|
+
}
|
|
15983
|
+
// Only reload if report ID changed (different report), or initial load, or external definition when not actively editing
|
|
15984
|
+
const isNewReport = def.id !== this.loadedReportId;
|
|
15985
|
+
if (isNewReport || (def !== this.loadedReportDef && !this.designerState.isDirty())) {
|
|
15313
15986
|
this.loadedReportId = def.id;
|
|
15314
15987
|
this.loadedReportDef = def;
|
|
15315
15988
|
this.designerState.loadDefinition(def);
|
|
@@ -15320,6 +15993,7 @@ class DesignerComponent {
|
|
|
15320
15993
|
if (id && id !== this.loadedReportId && !this.definition() && this.persistenceAdapter) {
|
|
15321
15994
|
this.loadedReportId = id;
|
|
15322
15995
|
this.persistenceAdapter.load(id).subscribe((def) => {
|
|
15996
|
+
this.loadedReportDef = def;
|
|
15323
15997
|
this.designerState.loadDefinition(def);
|
|
15324
15998
|
});
|
|
15325
15999
|
}
|
|
@@ -15327,11 +16001,23 @@ class DesignerComponent {
|
|
|
15327
16001
|
effect(() => {
|
|
15328
16002
|
const current = this.designerState.definition();
|
|
15329
16003
|
if (this.designerState.isDirty()) {
|
|
16004
|
+
this.lastEmittedDef = current;
|
|
16005
|
+
this.loadedReportDef = current;
|
|
16006
|
+
this.loadedReportId = current.id;
|
|
15330
16007
|
this.definitionChanged.emit(current);
|
|
15331
16008
|
}
|
|
15332
16009
|
});
|
|
15333
16010
|
}
|
|
15334
16011
|
ngOnInit() {
|
|
16012
|
+
if (typeof window !== 'undefined') {
|
|
16013
|
+
if (window.innerWidth < 900) {
|
|
16014
|
+
this.isLeftPanelCollapsed.set(true);
|
|
16015
|
+
this.isRightPanelCollapsed.set(true);
|
|
16016
|
+
}
|
|
16017
|
+
else if (window.innerWidth < 1200) {
|
|
16018
|
+
this.isRightPanelCollapsed.set(true);
|
|
16019
|
+
}
|
|
16020
|
+
}
|
|
15335
16021
|
if (!this.definition() && !this.reportId()) {
|
|
15336
16022
|
// Start with a clean report definition
|
|
15337
16023
|
this.designerState.loadDefinition({
|
|
@@ -15430,30 +16116,35 @@ class DesignerComponent {
|
|
|
15430
16116
|
setTimeout(() => this.saveMessage.set(null), 3000);
|
|
15431
16117
|
}
|
|
15432
16118
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15433
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesignerComponent, isStandalone: true, selector: "rpt-designer", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "initialReport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { reportSaved: "save", definitionChanged: "definitionChange" }, providers: [DesignerStateService], ngImport: i0, template: `
|
|
16119
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DesignerComponent, isStandalone: true, selector: "rpt-designer", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "initialReport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { reportSaved: "save", definitionChanged: "definitionChange" }, host: { listeners: { "window:resize": "onResize()", "window:keydown": "onKeyDown($event)" } }, providers: [DesignerStateService], ngImport: i0, template: `
|
|
15434
16120
|
<div class="designer-shell">
|
|
15435
|
-
<!-- Top Actions Toolbar -->
|
|
15436
|
-
<rpt-designer-toolbar
|
|
16121
|
+
<!-- Top Actions Toolbar with Sidebar Controls -->
|
|
16122
|
+
<rpt-designer-toolbar
|
|
16123
|
+
[isLeftPanelCollapsed]="isLeftPanelCollapsed()"
|
|
16124
|
+
[isRightPanelCollapsed]="isRightPanelCollapsed()"
|
|
16125
|
+
(toggleLeftPanel)="toggleLeftPanel()"
|
|
16126
|
+
(toggleRightPanel)="toggleRightPanel()"
|
|
16127
|
+
(saveRequested)="onSave()"
|
|
16128
|
+
/>
|
|
15437
16129
|
|
|
15438
16130
|
<!-- Main 3-Panel Layout with CDK Drop List Group connecting Palette & Canvas -->
|
|
15439
16131
|
<div class="designer-workbench" cdkDropListGroup>
|
|
16132
|
+
<!-- Backdrop for compact/mobile slide-out drawers -->
|
|
16133
|
+
@if (viewMode() === 'design' && (!isLeftPanelCollapsed() || !isRightPanelCollapsed())) {
|
|
16134
|
+
<div
|
|
16135
|
+
class="workbench-drawer-backdrop"
|
|
16136
|
+
(click)="closeAllPanels()"
|
|
16137
|
+
aria-hidden="true"
|
|
16138
|
+
></div>
|
|
16139
|
+
}
|
|
16140
|
+
|
|
15440
16141
|
<!-- 1. Left Panel: Component Palette (only shown in design mode) -->
|
|
15441
16142
|
@if (viewMode() === 'design') {
|
|
15442
|
-
<
|
|
15443
|
-
<
|
|
15444
|
-
|
|
15445
|
-
|
|
15446
|
-
|
|
15447
|
-
<button
|
|
15448
|
-
type="button"
|
|
15449
|
-
class="workbench-collapse-btn btn-collapse-left"
|
|
15450
|
-
[class.is-collapsed]="isLeftPanelCollapsed()"
|
|
15451
|
-
(click)="toggleLeftPanel()"
|
|
15452
|
-
[title]="isLeftPanelCollapsed() ? 'Expand Component Palette' : 'Collapse Component Palette'"
|
|
15453
|
-
[attr.aria-label]="isLeftPanelCollapsed() ? 'Expand Component Palette' : 'Collapse Component Palette'"
|
|
15454
|
-
>
|
|
15455
|
-
<rpt-icon [name]="isLeftPanelCollapsed() ? 'chevron-right' : 'chevron-left'" [size]="12" />
|
|
15456
|
-
</button>
|
|
16143
|
+
<div class="workbench-left-container" [class.is-collapsed]="isLeftPanelCollapsed()">
|
|
16144
|
+
<aside class="workbench-left-panel">
|
|
16145
|
+
<rpt-component-palette (collapseRequested)="toggleLeftPanel()" />
|
|
16146
|
+
</aside>
|
|
16147
|
+
</div>
|
|
15457
16148
|
}
|
|
15458
16149
|
|
|
15459
16150
|
<!-- 2. Center Panel: Design Canvas OR Live Preview OR JSON Schema -->
|
|
@@ -15497,23 +16188,51 @@ class DesignerComponent {
|
|
|
15497
16188
|
|
|
15498
16189
|
<!-- 3. Right Panel: Property Editor (only shown in design mode) -->
|
|
15499
16190
|
@if (viewMode() === 'design') {
|
|
15500
|
-
|
|
16191
|
+
<div class="workbench-right-container" [class.is-collapsed]="isRightPanelCollapsed()">
|
|
16192
|
+
<aside class="workbench-right-panel">
|
|
16193
|
+
<rpt-property-editor (collapseRequested)="toggleRightPanel()" />
|
|
16194
|
+
</aside>
|
|
16195
|
+
</div>
|
|
16196
|
+
}
|
|
16197
|
+
</div>
|
|
16198
|
+
|
|
16199
|
+
<!-- Compact/Mobile Workbench Bottom Navigation Bar -->
|
|
16200
|
+
@if (viewMode() === 'design') {
|
|
16201
|
+
<nav class="compact-workbench-bar" aria-label="Mobile Workbench Navigation">
|
|
15501
16202
|
<button
|
|
15502
16203
|
type="button"
|
|
15503
|
-
class="
|
|
15504
|
-
[class.
|
|
15505
|
-
(click)="
|
|
15506
|
-
|
|
15507
|
-
[attr.aria-label]="isRightPanelCollapsed() ? 'Expand Property Editor' : 'Collapse Property Editor'"
|
|
16204
|
+
class="compact-nav-btn"
|
|
16205
|
+
[class.active]="!isLeftPanelCollapsed()"
|
|
16206
|
+
(click)="openLeftPanelOnly()"
|
|
16207
|
+
title="Open Component Palette"
|
|
15508
16208
|
>
|
|
15509
|
-
<rpt-icon
|
|
16209
|
+
<rpt-icon name="layers" [size]="14" />
|
|
16210
|
+
<span>Components</span>
|
|
15510
16211
|
</button>
|
|
15511
16212
|
|
|
15512
|
-
<
|
|
15513
|
-
|
|
15514
|
-
|
|
15515
|
-
|
|
15516
|
-
|
|
16213
|
+
<button
|
|
16214
|
+
type="button"
|
|
16215
|
+
class="compact-nav-btn"
|
|
16216
|
+
[class.active]="isLeftPanelCollapsed() && isRightPanelCollapsed()"
|
|
16217
|
+
(click)="closeAllPanels()"
|
|
16218
|
+
title="Full Canvas View"
|
|
16219
|
+
>
|
|
16220
|
+
<rpt-icon name="edit" [size]="14" />
|
|
16221
|
+
<span>Canvas</span>
|
|
16222
|
+
</button>
|
|
16223
|
+
|
|
16224
|
+
<button
|
|
16225
|
+
type="button"
|
|
16226
|
+
class="compact-nav-btn"
|
|
16227
|
+
[class.active]="!isRightPanelCollapsed()"
|
|
16228
|
+
(click)="openRightPanelOnly()"
|
|
16229
|
+
title="Open Properties Inspector"
|
|
16230
|
+
>
|
|
16231
|
+
<rpt-icon name="settings" [size]="14" />
|
|
16232
|
+
<span>Properties</span>
|
|
16233
|
+
</button>
|
|
16234
|
+
</nav>
|
|
16235
|
+
}
|
|
15517
16236
|
|
|
15518
16237
|
<!-- Save Notification Toast -->
|
|
15519
16238
|
@if (saveMessage()) {
|
|
@@ -15523,7 +16242,7 @@ class DesignerComponent {
|
|
|
15523
16242
|
</div>
|
|
15524
16243
|
}
|
|
15525
16244
|
</div>
|
|
15526
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;min-height:
|
|
16245
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;min-height:400px;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.designer-shell{display:flex;flex-direction:column;height:100%;background-color:#f8fafc;position:relative;overflow:hidden}.designer-workbench{display:flex;flex:1;overflow:hidden;position:relative;min-height:0}.workbench-left-container{display:flex;position:relative;width:250px;flex-shrink:0;height:100%;transition:width var(--rpt-transition-speed-smooth, .25s) cubic-bezier(.16,1,.3,1);z-index:20}.workbench-left-container.is-collapsed{width:0!important}.workbench-left-panel{width:100%;height:100%;overflow:hidden;border-right:1px solid var(--rpt-color-border, #cbd5e1);background:#fff;box-sizing:border-box}.workbench-left-container.is-collapsed .workbench-left-panel{visibility:hidden;border-right:none}.workbench-center-panel{flex:1;height:100%;overflow:hidden;display:flex;flex-direction:column;min-width:0;position:relative}.workbench-right-container{display:flex;position:relative;width:320px;flex-shrink:0;height:100%;transition:width var(--rpt-transition-speed-smooth, .25s) cubic-bezier(.16,1,.3,1);z-index:20}.workbench-right-container.is-collapsed{width:0!important}.workbench-right-panel{width:100%;height:100%;overflow:hidden;border-left:1px solid var(--rpt-color-border, #cbd5e1);background:#fff;box-sizing:border-box}.workbench-right-container.is-collapsed .workbench-right-panel{visibility:hidden;border-left:none}.compact-workbench-bar,.workbench-drawer-backdrop{display:none}@media (max-width: 900px){.compact-workbench-bar{display:flex;align-items:center;justify-content:space-around;height:48px;background:var(--rpt-color-surface, #ffffff);border-top:1px solid var(--rpt-color-border, #cbd5e1);padding:0 12px;gap:8px;z-index:45;flex-shrink:0;box-shadow:0 -2px 8px #0000000a;font-family:var(--rpt-font-family, inherit)}.compact-nav-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 14px;border-radius:var(--rpt-border-radius, 6px);border:1px solid transparent;background:transparent;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-sm, .75rem);font-weight:var(--rpt-font-weight-medium, 500);letter-spacing:-.01em;line-height:1.4;color:var(--rpt-color-text-secondary, #334155);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.compact-nav-btn rpt-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--rpt-color-text-muted, #64748b);transition:color var(--rpt-transition-speed, .15s) ease}.compact-nav-btn:hover{background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-subtle, #e2e8f0)}.compact-nav-btn:hover rpt-icon{color:var(--rpt-color-text, #0f172a)}.compact-nav-btn.active{background:var(--rpt-color-primary-light, #eff6ff);color:var(--rpt-color-primary, #2563eb);border-color:#2563eb40;font-weight:var(--rpt-font-weight-semibold, 600);box-shadow:0 1px 2px #2563eb14}.compact-nav-btn.active rpt-icon{color:var(--rpt-color-primary, #2563eb)}.compact-nav-btn:focus-visible{outline:2px solid var(--rpt-color-primary, #2563eb);outline-offset:1px}.workbench-drawer-backdrop{display:block;position:absolute;inset:0;background:#0f172a59;backdrop-filter:blur(1px);z-index:50}.workbench-left-container{position:absolute;left:0;top:0;bottom:0;width:280px;max-width:85vw;z-index:60;box-shadow:4px 0 24px #00000026;transform:translate(0);transition:transform .25s cubic-bezier(.16,1,.3,1)}.workbench-left-container.is-collapsed{transform:translate(-100%);width:280px!important}.workbench-right-container{position:absolute;right:0;top:0;bottom:0;width:320px;max-width:90vw;z-index:60;box-shadow:-4px 0 24px #00000026;transform:translate(0);transition:transform .25s cubic-bezier(.16,1,.3,1)}.workbench-right-container.is-collapsed{transform:translate(100%);width:320px!important}}.preview-mode-container{flex:1;overflow-y:auto;padding:16px;background-color:#f1f5f9;box-sizing:border-box}.preview-banner{max-width:1400px;margin:0 auto 16px;background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;padding:10px 18px;border-radius:var(--rpt-border-radius-lg, 8px);font-size:var(--rpt-font-size-sm, .8rem);font-weight:600;display:flex;align-items:center;gap:8px;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));box-sizing:border-box}.preview-content{max-width:1400px;margin:0 auto;background:#fff;border-radius:var(--rpt-border-radius-lg, 8px);border:1px solid var(--rpt-color-border, #cbd5e1);box-shadow:0 4px 6px -1px #0000000d;padding:0;min-height:480px;box-sizing:border-box}.json-mode-container{flex:1;overflow-y:auto;padding:24px;background-color:#0f172a;display:flex;flex-direction:column}.json-banner{display:flex;align-items:center;justify-content:space-between;color:#94a3b8;font-size:.8rem;font-weight:600;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #1e293b}.btn-copy-json{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:4px 12px;font-size:.75rem;cursor:pointer;transition:all .15s ease}.btn-copy-json:hover{background:#fff3}.json-display{flex:1;margin:0;padding:20px;background:#090d16;border-radius:8px;border:1px solid #1e293b;color:#38bdf8;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem;line-height:1.5;overflow-x:auto}.save-toast{position:absolute;bottom:24px;right:24px;background:#10b981;color:#fff;padding:10px 20px;border-radius:6px;font-size:.85rem;font-weight:600;box-shadow:0 10px 15px -3px #0000001a;z-index:100;animation:rpt-fade-in .2s ease}@keyframes rpt-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: DesignerToolbarComponent, selector: "rpt-designer-toolbar", inputs: ["isLeftPanelCollapsed", "isRightPanelCollapsed"], outputs: ["toggleLeftPanel", "toggleRightPanel", "saveRequested"] }, { kind: "component", type: ComponentPaletteComponent, selector: "rpt-component-palette", outputs: ["collapseRequested"] }, { kind: "component", type: DesignCanvasComponent, selector: "rpt-design-canvas" }, { kind: "component", type: PropertyEditorComponent, selector: "rpt-property-editor", outputs: ["collapseRequested"] }, { kind: "component", type: DynamicRendererComponent, selector: "rpt-dynamic-renderer", inputs: ["definition", "initialValues", "resultData"], outputs: ["executeRequested", "resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChanged", "columnDefsChanged", "selectionChange", "selectionChanged", "rowActionTriggered"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15527
16246
|
}
|
|
15528
16247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DesignerComponent, decorators: [{
|
|
15529
16248
|
type: Component,
|
|
@@ -15539,28 +16258,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15539
16258
|
RptIconComponent,
|
|
15540
16259
|
], providers: [DesignerStateService], template: `
|
|
15541
16260
|
<div class="designer-shell">
|
|
15542
|
-
<!-- Top Actions Toolbar -->
|
|
15543
|
-
<rpt-designer-toolbar
|
|
16261
|
+
<!-- Top Actions Toolbar with Sidebar Controls -->
|
|
16262
|
+
<rpt-designer-toolbar
|
|
16263
|
+
[isLeftPanelCollapsed]="isLeftPanelCollapsed()"
|
|
16264
|
+
[isRightPanelCollapsed]="isRightPanelCollapsed()"
|
|
16265
|
+
(toggleLeftPanel)="toggleLeftPanel()"
|
|
16266
|
+
(toggleRightPanel)="toggleRightPanel()"
|
|
16267
|
+
(saveRequested)="onSave()"
|
|
16268
|
+
/>
|
|
15544
16269
|
|
|
15545
16270
|
<!-- Main 3-Panel Layout with CDK Drop List Group connecting Palette & Canvas -->
|
|
15546
16271
|
<div class="designer-workbench" cdkDropListGroup>
|
|
16272
|
+
<!-- Backdrop for compact/mobile slide-out drawers -->
|
|
16273
|
+
@if (viewMode() === 'design' && (!isLeftPanelCollapsed() || !isRightPanelCollapsed())) {
|
|
16274
|
+
<div
|
|
16275
|
+
class="workbench-drawer-backdrop"
|
|
16276
|
+
(click)="closeAllPanels()"
|
|
16277
|
+
aria-hidden="true"
|
|
16278
|
+
></div>
|
|
16279
|
+
}
|
|
16280
|
+
|
|
15547
16281
|
<!-- 1. Left Panel: Component Palette (only shown in design mode) -->
|
|
15548
16282
|
@if (viewMode() === 'design') {
|
|
15549
|
-
<
|
|
15550
|
-
<
|
|
15551
|
-
|
|
15552
|
-
|
|
15553
|
-
|
|
15554
|
-
<button
|
|
15555
|
-
type="button"
|
|
15556
|
-
class="workbench-collapse-btn btn-collapse-left"
|
|
15557
|
-
[class.is-collapsed]="isLeftPanelCollapsed()"
|
|
15558
|
-
(click)="toggleLeftPanel()"
|
|
15559
|
-
[title]="isLeftPanelCollapsed() ? 'Expand Component Palette' : 'Collapse Component Palette'"
|
|
15560
|
-
[attr.aria-label]="isLeftPanelCollapsed() ? 'Expand Component Palette' : 'Collapse Component Palette'"
|
|
15561
|
-
>
|
|
15562
|
-
<rpt-icon [name]="isLeftPanelCollapsed() ? 'chevron-right' : 'chevron-left'" [size]="12" />
|
|
15563
|
-
</button>
|
|
16283
|
+
<div class="workbench-left-container" [class.is-collapsed]="isLeftPanelCollapsed()">
|
|
16284
|
+
<aside class="workbench-left-panel">
|
|
16285
|
+
<rpt-component-palette (collapseRequested)="toggleLeftPanel()" />
|
|
16286
|
+
</aside>
|
|
16287
|
+
</div>
|
|
15564
16288
|
}
|
|
15565
16289
|
|
|
15566
16290
|
<!-- 2. Center Panel: Design Canvas OR Live Preview OR JSON Schema -->
|
|
@@ -15604,23 +16328,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15604
16328
|
|
|
15605
16329
|
<!-- 3. Right Panel: Property Editor (only shown in design mode) -->
|
|
15606
16330
|
@if (viewMode() === 'design') {
|
|
15607
|
-
|
|
16331
|
+
<div class="workbench-right-container" [class.is-collapsed]="isRightPanelCollapsed()">
|
|
16332
|
+
<aside class="workbench-right-panel">
|
|
16333
|
+
<rpt-property-editor (collapseRequested)="toggleRightPanel()" />
|
|
16334
|
+
</aside>
|
|
16335
|
+
</div>
|
|
16336
|
+
}
|
|
16337
|
+
</div>
|
|
16338
|
+
|
|
16339
|
+
<!-- Compact/Mobile Workbench Bottom Navigation Bar -->
|
|
16340
|
+
@if (viewMode() === 'design') {
|
|
16341
|
+
<nav class="compact-workbench-bar" aria-label="Mobile Workbench Navigation">
|
|
15608
16342
|
<button
|
|
15609
16343
|
type="button"
|
|
15610
|
-
class="
|
|
15611
|
-
[class.
|
|
15612
|
-
(click)="
|
|
15613
|
-
|
|
15614
|
-
[attr.aria-label]="isRightPanelCollapsed() ? 'Expand Property Editor' : 'Collapse Property Editor'"
|
|
16344
|
+
class="compact-nav-btn"
|
|
16345
|
+
[class.active]="!isLeftPanelCollapsed()"
|
|
16346
|
+
(click)="openLeftPanelOnly()"
|
|
16347
|
+
title="Open Component Palette"
|
|
15615
16348
|
>
|
|
15616
|
-
<rpt-icon
|
|
16349
|
+
<rpt-icon name="layers" [size]="14" />
|
|
16350
|
+
<span>Components</span>
|
|
15617
16351
|
</button>
|
|
15618
16352
|
|
|
15619
|
-
<
|
|
15620
|
-
|
|
15621
|
-
|
|
15622
|
-
|
|
15623
|
-
|
|
16353
|
+
<button
|
|
16354
|
+
type="button"
|
|
16355
|
+
class="compact-nav-btn"
|
|
16356
|
+
[class.active]="isLeftPanelCollapsed() && isRightPanelCollapsed()"
|
|
16357
|
+
(click)="closeAllPanels()"
|
|
16358
|
+
title="Full Canvas View"
|
|
16359
|
+
>
|
|
16360
|
+
<rpt-icon name="edit" [size]="14" />
|
|
16361
|
+
<span>Canvas</span>
|
|
16362
|
+
</button>
|
|
16363
|
+
|
|
16364
|
+
<button
|
|
16365
|
+
type="button"
|
|
16366
|
+
class="compact-nav-btn"
|
|
16367
|
+
[class.active]="!isRightPanelCollapsed()"
|
|
16368
|
+
(click)="openRightPanelOnly()"
|
|
16369
|
+
title="Open Properties Inspector"
|
|
16370
|
+
>
|
|
16371
|
+
<rpt-icon name="settings" [size]="14" />
|
|
16372
|
+
<span>Properties</span>
|
|
16373
|
+
</button>
|
|
16374
|
+
</nav>
|
|
16375
|
+
}
|
|
15624
16376
|
|
|
15625
16377
|
<!-- Save Notification Toast -->
|
|
15626
16378
|
@if (saveMessage()) {
|
|
@@ -15630,8 +16382,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15630
16382
|
</div>
|
|
15631
16383
|
}
|
|
15632
16384
|
</div>
|
|
15633
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;min-height:
|
|
15634
|
-
}], ctorParameters: () => []
|
|
16385
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%;min-height:400px;font-family:var(--rpt-font-family, inherit);box-sizing:border-box}.designer-shell{display:flex;flex-direction:column;height:100%;background-color:#f8fafc;position:relative;overflow:hidden}.designer-workbench{display:flex;flex:1;overflow:hidden;position:relative;min-height:0}.workbench-left-container{display:flex;position:relative;width:250px;flex-shrink:0;height:100%;transition:width var(--rpt-transition-speed-smooth, .25s) cubic-bezier(.16,1,.3,1);z-index:20}.workbench-left-container.is-collapsed{width:0!important}.workbench-left-panel{width:100%;height:100%;overflow:hidden;border-right:1px solid var(--rpt-color-border, #cbd5e1);background:#fff;box-sizing:border-box}.workbench-left-container.is-collapsed .workbench-left-panel{visibility:hidden;border-right:none}.workbench-center-panel{flex:1;height:100%;overflow:hidden;display:flex;flex-direction:column;min-width:0;position:relative}.workbench-right-container{display:flex;position:relative;width:320px;flex-shrink:0;height:100%;transition:width var(--rpt-transition-speed-smooth, .25s) cubic-bezier(.16,1,.3,1);z-index:20}.workbench-right-container.is-collapsed{width:0!important}.workbench-right-panel{width:100%;height:100%;overflow:hidden;border-left:1px solid var(--rpt-color-border, #cbd5e1);background:#fff;box-sizing:border-box}.workbench-right-container.is-collapsed .workbench-right-panel{visibility:hidden;border-left:none}.compact-workbench-bar,.workbench-drawer-backdrop{display:none}@media (max-width: 900px){.compact-workbench-bar{display:flex;align-items:center;justify-content:space-around;height:48px;background:var(--rpt-color-surface, #ffffff);border-top:1px solid var(--rpt-color-border, #cbd5e1);padding:0 12px;gap:8px;z-index:45;flex-shrink:0;box-shadow:0 -2px 8px #0000000a;font-family:var(--rpt-font-family, inherit)}.compact-nav-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 14px;border-radius:var(--rpt-border-radius, 6px);border:1px solid transparent;background:transparent;font-family:var(--rpt-font-family, inherit);font-size:var(--rpt-font-size-sm, .75rem);font-weight:var(--rpt-font-weight-medium, 500);letter-spacing:-.01em;line-height:1.4;color:var(--rpt-color-text-secondary, #334155);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.compact-nav-btn rpt-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--rpt-color-text-muted, #64748b);transition:color var(--rpt-transition-speed, .15s) ease}.compact-nav-btn:hover{background:var(--rpt-color-surface-hover, #f1f5f9);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border-subtle, #e2e8f0)}.compact-nav-btn:hover rpt-icon{color:var(--rpt-color-text, #0f172a)}.compact-nav-btn.active{background:var(--rpt-color-primary-light, #eff6ff);color:var(--rpt-color-primary, #2563eb);border-color:#2563eb40;font-weight:var(--rpt-font-weight-semibold, 600);box-shadow:0 1px 2px #2563eb14}.compact-nav-btn.active rpt-icon{color:var(--rpt-color-primary, #2563eb)}.compact-nav-btn:focus-visible{outline:2px solid var(--rpt-color-primary, #2563eb);outline-offset:1px}.workbench-drawer-backdrop{display:block;position:absolute;inset:0;background:#0f172a59;backdrop-filter:blur(1px);z-index:50}.workbench-left-container{position:absolute;left:0;top:0;bottom:0;width:280px;max-width:85vw;z-index:60;box-shadow:4px 0 24px #00000026;transform:translate(0);transition:transform .25s cubic-bezier(.16,1,.3,1)}.workbench-left-container.is-collapsed{transform:translate(-100%);width:280px!important}.workbench-right-container{position:absolute;right:0;top:0;bottom:0;width:320px;max-width:90vw;z-index:60;box-shadow:-4px 0 24px #00000026;transform:translate(0);transition:transform .25s cubic-bezier(.16,1,.3,1)}.workbench-right-container.is-collapsed{transform:translate(100%);width:320px!important}}.preview-mode-container{flex:1;overflow-y:auto;padding:16px;background-color:#f1f5f9;box-sizing:border-box}.preview-banner{max-width:1400px;margin:0 auto 16px;background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;padding:10px 18px;border-radius:var(--rpt-border-radius-lg, 8px);font-size:var(--rpt-font-size-sm, .8rem);font-weight:600;display:flex;align-items:center;gap:8px;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));box-sizing:border-box}.preview-content{max-width:1400px;margin:0 auto;background:#fff;border-radius:var(--rpt-border-radius-lg, 8px);border:1px solid var(--rpt-color-border, #cbd5e1);box-shadow:0 4px 6px -1px #0000000d;padding:0;min-height:480px;box-sizing:border-box}.json-mode-container{flex:1;overflow-y:auto;padding:24px;background-color:#0f172a;display:flex;flex-direction:column}.json-banner{display:flex;align-items:center;justify-content:space-between;color:#94a3b8;font-size:.8rem;font-weight:600;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #1e293b}.btn-copy-json{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:4px 12px;font-size:.75rem;cursor:pointer;transition:all .15s ease}.btn-copy-json:hover{background:#fff3}.json-display{flex:1;margin:0;padding:20px;background:#090d16;border-radius:8px;border:1px solid #1e293b;color:#38bdf8;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem;line-height:1.5;overflow-x:auto}.save-toast{position:absolute;bottom:24px;right:24px;background:#10b981;color:#fff;padding:10px 20px;border-radius:6px;font-size:.85rem;font-weight:600;box-shadow:0 10px 15px -3px #0000001a;z-index:100;animation:rpt-fade-in .2s ease}@keyframes rpt-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
16386
|
+
}], ctorParameters: () => [], propDecorators: { onResize: [{
|
|
16387
|
+
type: HostListener,
|
|
16388
|
+
args: ['window:resize']
|
|
16389
|
+
}], onKeyDown: [{
|
|
16390
|
+
type: HostListener,
|
|
16391
|
+
args: ['window:keydown', ['$event']]
|
|
16392
|
+
}] } });
|
|
15635
16393
|
|
|
15636
16394
|
/**
|
|
15637
16395
|
* `<rpt-report-designer>` (and `<rpt-designer-view>`)
|
|
@@ -16202,7 +16960,7 @@ class RoutedReportRuntimeComponent {
|
|
|
16202
16960
|
</div>
|
|
16203
16961
|
}
|
|
16204
16962
|
</div>
|
|
16205
|
-
`, isInline: true, styles: [".rpt-routed-container{display:flex;flex-direction:column;gap:var(--rpt-space-md, 16px);width:100%;min-height:100%;box-sizing:border-box;padding:var(--rpt-space-md, 16px)}.rpt-routed-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--rpt-space-sm, 8px);border-bottom:1px solid var(--rpt-border-color, #e2e8f0)}.rpt-routed-title-row{display:flex;align-items:center;gap:12px}.rpt-routed-title{font-size:1.25rem;font-weight:700;color:var(--rpt-text-color, #0f172a);margin:0}.rpt-routed-version{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:9999px;background:var(--rpt-bg-subtle, #f1f5f9);color:var(--rpt-text-muted, #64748b)}.rpt-routed-loading,.rpt-routed-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--rpt-text-muted, #64748b)}.rpt-error-card{background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-md, 8px);padding:32px 40px;box-shadow:var(--rpt-shadow-sm, 0 1px 3px rgba(0,0,0,.05))}.rpt-error-card h3{color:var(--rpt-error-color, #ef4444);margin-top:0}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-border-color, #e2e8f0);border-top-color:var(--rpt-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;border-radius:var(--rpt-radius-md, 6px);cursor:pointer;border:1px solid transparent;transition:all .15s ease}.rpt-btn-sm{padding:5px 10px;font-size:.8125rem}.rpt-btn-primary{background:var(--rpt-primary, #2563eb);color:#fff}.rpt-btn-primary:hover{background:var(--rpt-primary-hover, #1d4ed8)}.rpt-btn-secondary{background:var(--rpt-surface-bg, #ffffff);color:var(--rpt-text-color, #1e293b);border-color:var(--rpt-border-color, #cbd5e1)}.rpt-btn-secondary:hover{background:var(--rpt-bg-subtle, #f8fafc)}.rpt-btn-ghost{background:transparent;color:var(--rpt-text-muted, #64748b)}.rpt-btn-ghost:hover{color:var(--rpt-text-color, #1e293b);background:var(--rpt-bg-subtle, #f1f5f9)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"], outputs: ["resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16963
|
+
`, isInline: true, styles: [".rpt-routed-container{display:flex;flex-direction:column;gap:var(--rpt-space-md, 16px);width:100%;min-height:100%;box-sizing:border-box;padding:var(--rpt-space-md, 16px)}.rpt-routed-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--rpt-space-sm, 8px);border-bottom:1px solid var(--rpt-border-color, #e2e8f0)}.rpt-routed-title-row{display:flex;align-items:center;gap:12px}.rpt-routed-title{font-size:1.25rem;font-weight:700;color:var(--rpt-text-color, #0f172a);margin:0}.rpt-routed-version{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:9999px;background:var(--rpt-bg-subtle, #f1f5f9);color:var(--rpt-text-muted, #64748b)}.rpt-routed-loading,.rpt-routed-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--rpt-text-muted, #64748b)}.rpt-error-card{background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-md, 8px);padding:32px 40px;box-shadow:var(--rpt-shadow-sm, 0 1px 3px rgba(0,0,0,.05))}.rpt-error-card h3{color:var(--rpt-error-color, #ef4444);margin-top:0}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-border-color, #e2e8f0);border-top-color:var(--rpt-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;border-radius:var(--rpt-radius-md, 6px);cursor:pointer;border:1px solid transparent;transition:all .15s ease}.rpt-btn-sm{padding:5px 10px;font-size:.8125rem}.rpt-btn-primary{background:var(--rpt-primary, #2563eb);color:#fff}.rpt-btn-primary:hover{background:var(--rpt-primary-hover, #1d4ed8)}.rpt-btn-secondary{background:var(--rpt-surface-bg, #ffffff);color:var(--rpt-text-color, #1e293b);border-color:var(--rpt-border-color, #cbd5e1)}.rpt-btn-secondary:hover{background:var(--rpt-bg-subtle, #f8fafc)}.rpt-btn-ghost{background:transparent;color:var(--rpt-text-muted, #64748b)}.rpt-btn-ghost:hover{color:var(--rpt-text-color, #1e293b);background:var(--rpt-bg-subtle, #f1f5f9)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"], outputs: ["resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "selectionChange", "selectionChanged", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16206
16964
|
}
|
|
16207
16965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RoutedReportRuntimeComponent, decorators: [{
|
|
16208
16966
|
type: Component,
|