bways-grid 0.0.9 → 0.0.11
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/fesm2022/bways-grid.mjs +158 -86
- package/fesm2022/bways-grid.mjs.map +1 -1
- package/lib/components/filter-tool-panel/filter-tool-panel.component.d.ts +6 -4
- package/lib/components/side-bar/side-bar.component.d.ts +4 -3
- package/lib/components/ultra-grid/ultra-grid.component.d.ts +8 -3
- package/package.json +1 -1
package/fesm2022/bways-grid.mjs
CHANGED
|
@@ -775,7 +775,7 @@ class HeaderMenuComponent {
|
|
|
775
775
|
</div>
|
|
776
776
|
|
|
777
777
|
</div>
|
|
778
|
-
`, isInline: true, styles: [".ug-header-menu-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-menu-panel{position:fixed;z-index:1000;background-color:var(--ug-bg
|
|
778
|
+
`, isInline: true, styles: [".ug-header-menu-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-menu-panel{position:fixed;z-index:1000;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;padding:8px 0;min-width:220px;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-color)}.ug-menu-item{display:flex;align-items:center;padding:8px 16px;cursor:pointer;position:relative;transition:background-color .15s ease;-webkit-user-select:none;user-select:none}.ug-menu-item:hover{background-color:var(--ug-row-hover-bg)}.ug-menu-icon{margin-right:12px;color:var(--ug-icon-color)}.ug-menu-text-only{margin-left:26px}.ug-menu-separator{height:1px;background-color:var(--ug-border-color);margin:4px 0}.ug-has-submenu{display:flex;justify-content:space-between}.ug-has-submenu span{flex:1}.ug-menu-arrow{color:var(--ug-icon-color);margin-left:8px}.ug-submenu{position:absolute;top:-9px;left:100%;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;padding:8px 0;min-width:150px;z-index:1001}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
779
779
|
}
|
|
780
780
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: HeaderMenuComponent, decorators: [{
|
|
781
781
|
type: Component,
|
|
@@ -844,7 +844,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
844
844
|
</div>
|
|
845
845
|
|
|
846
846
|
</div>
|
|
847
|
-
`, encapsulation: ViewEncapsulation.None, styles: [".ug-header-menu-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-menu-panel{position:fixed;z-index:1000;background-color:var(--ug-bg
|
|
847
|
+
`, encapsulation: ViewEncapsulation.None, styles: [".ug-header-menu-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-menu-panel{position:fixed;z-index:1000;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;padding:8px 0;min-width:220px;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-color)}.ug-menu-item{display:flex;align-items:center;padding:8px 16px;cursor:pointer;position:relative;transition:background-color .15s ease;-webkit-user-select:none;user-select:none}.ug-menu-item:hover{background-color:var(--ug-row-hover-bg)}.ug-menu-icon{margin-right:12px;color:var(--ug-icon-color)}.ug-menu-text-only{margin-left:26px}.ug-menu-separator{height:1px;background-color:var(--ug-border-color);margin:4px 0}.ug-has-submenu{display:flex;justify-content:space-between}.ug-has-submenu span{flex:1}.ug-menu-arrow{color:var(--ug-icon-color);margin-left:8px}.ug-submenu{position:absolute;top:-9px;left:100%;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;padding:8px 0;min-width:150px;z-index:1001}\n"] }]
|
|
848
848
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { column: [{
|
|
849
849
|
type: Input
|
|
850
850
|
}], isOpen: [{
|
|
@@ -941,7 +941,7 @@ class ChooseColumnsComponent {
|
|
|
941
941
|
</div>
|
|
942
942
|
|
|
943
943
|
</div>
|
|
944
|
-
`, isInline: true, styles: [".ug-choose-columns-panel{display:flex;flex-direction:column;background-color:var(--ug-bg
|
|
944
|
+
`, isInline: true, styles: [".ug-choose-columns-panel{display:flex;flex-direction:column;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 12px -1px #00000026,0 2px 8px -2px #0000001a;width:250px;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-color);overflow:hidden}.ug-cc-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg)}.ug-cc-title{font-weight:var(--ug-header-font-weight);color:var(--ug-header-color)}.ug-cc-close{background:none;border:none;cursor:pointer;color:var(--ug-icon-color);padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px}.ug-cc-close:hover{background-color:var(--ug-row-hover-bg)}.ug-cc-search{padding:8px;border-bottom:1px solid var(--ug-border-color);position:relative;display:flex;align-items:center}.ug-cc-search-icon{position:absolute;left:16px;color:var(--ug-icon-color);display:flex}.ug-cc-search input{width:100%;padding:6px 8px 6px 28px;border:1px solid var(--ug-border-color);border-radius:4px;font-family:inherit;font-size:inherit;background-color:var(--ug-panel-bg);color:var(--ug-color)}.ug-cc-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-cc-list{max-height:250px;overflow-y:auto;padding:8px 0}.ug-cc-item{display:flex;align-items:center;padding:4px 16px}.ug-cc-label{display:flex;align-items:center;width:100%;cursor:pointer}.ug-cc-label input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--ug-primary-color);margin-right:12px}.ug-cc-drag-handle{cursor:grab;color:var(--ug-icon-color);margin-right:12px;display:flex}.ug-cc-drag-handle:active{cursor:grabbing}.ug-cc-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-drag-preview{box-sizing:border-box;background-color:var(--ug-panel-bg);border:1px solid var(--ug-primary-color);box-shadow:0 4px 6px -1px #0000001a;display:flex;align-items:center;padding:4px 16px}.cdk-drag-placeholder{opacity:.3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.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: i3.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: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
945
945
|
}
|
|
946
946
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: ChooseColumnsComponent, decorators: [{
|
|
947
947
|
type: Component,
|
|
@@ -979,7 +979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
979
979
|
</div>
|
|
980
980
|
|
|
981
981
|
</div>
|
|
982
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-choose-columns-panel{display:flex;flex-direction:column;background-color:var(--ug-bg
|
|
982
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-choose-columns-panel{display:flex;flex-direction:column;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 12px -1px #00000026,0 2px 8px -2px #0000001a;width:250px;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-color);overflow:hidden}.ug-cc-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg)}.ug-cc-title{font-weight:var(--ug-header-font-weight);color:var(--ug-header-color)}.ug-cc-close{background:none;border:none;cursor:pointer;color:var(--ug-icon-color);padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px}.ug-cc-close:hover{background-color:var(--ug-row-hover-bg)}.ug-cc-search{padding:8px;border-bottom:1px solid var(--ug-border-color);position:relative;display:flex;align-items:center}.ug-cc-search-icon{position:absolute;left:16px;color:var(--ug-icon-color);display:flex}.ug-cc-search input{width:100%;padding:6px 8px 6px 28px;border:1px solid var(--ug-border-color);border-radius:4px;font-family:inherit;font-size:inherit;background-color:var(--ug-panel-bg);color:var(--ug-color)}.ug-cc-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-cc-list{max-height:250px;overflow-y:auto;padding:8px 0}.ug-cc-item{display:flex;align-items:center;padding:4px 16px}.ug-cc-label{display:flex;align-items:center;width:100%;cursor:pointer}.ug-cc-label input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--ug-primary-color);margin-right:12px}.ug-cc-drag-handle{cursor:grab;color:var(--ug-icon-color);margin-right:12px;display:flex}.ug-cc-drag-handle:active{cursor:grabbing}.ug-cc-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-drag-preview{box-sizing:border-box;background-color:var(--ug-panel-bg);border:1px solid var(--ug-primary-color);box-shadow:0 4px 6px -1px #0000001a;display:flex;align-items:center;padding:4px 16px}.cdk-drag-placeholder{opacity:.3}\n"] }]
|
|
983
983
|
}], propDecorators: { columns: [{
|
|
984
984
|
type: Input
|
|
985
985
|
}], columnsChanged: [{
|
|
@@ -1108,7 +1108,7 @@ class HeaderFilterComponent {
|
|
|
1108
1108
|
</div>
|
|
1109
1109
|
|
|
1110
1110
|
</div>
|
|
1111
|
-
`, isInline: true, styles: [".ug-header-filter-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-filter-panel{position:fixed;z-index:1000;background-color:var(--ug-bg
|
|
1111
|
+
`, isInline: true, styles: [".ug-header-filter-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-filter-panel{position:fixed;z-index:1000;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;padding:8px 0;min-width:250px;max-width:300px;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-color);display:flex;flex-direction:column}.ug-filter-search{padding:0 12px 8px;border-bottom:1px solid var(--ug-border-color);position:relative;display:flex;align-items:center}.ug-filter-search-icon{position:absolute;left:20px;color:var(--ug-icon-color);display:flex}.ug-filter-search input{width:100%;padding:6px 8px 6px 28px;border:1px solid var(--ug-border-color);border-radius:4px;font-family:inherit;font-size:inherit;background-color:var(--ug-panel-bg);color:var(--ug-color)}.ug-filter-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-filter-list{padding:8px 0}.ug-filter-viewport{height:200px;width:100%}.ug-filter-select-all{border-bottom:1px solid var(--ug-border-color);margin-bottom:4px}.ug-filter-item{display:flex;align-items:center;padding:4px 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.ug-filter-item:hover{background-color:var(--ug-row-hover-bg)}.ug-filter-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--ug-primary-color);margin-right:12px}.ug-filter-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ug-filter-empty{padding:16px;text-align:center;color:var(--ug-icon-color);font-style:italic}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1112
1112
|
}
|
|
1113
1113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: HeaderFilterComponent, decorators: [{
|
|
1114
1114
|
type: Component,
|
|
@@ -1144,7 +1144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
1144
1144
|
</div>
|
|
1145
1145
|
|
|
1146
1146
|
</div>
|
|
1147
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-header-filter-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-filter-panel{position:fixed;z-index:1000;background-color:var(--ug-bg
|
|
1147
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-header-filter-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:999}.ug-header-filter-panel{position:fixed;z-index:1000;background-color:var(--ug-panel-bg);border:1px solid var(--ug-border-color);border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;padding:8px 0;min-width:250px;max-width:300px;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-color);display:flex;flex-direction:column}.ug-filter-search{padding:0 12px 8px;border-bottom:1px solid var(--ug-border-color);position:relative;display:flex;align-items:center}.ug-filter-search-icon{position:absolute;left:20px;color:var(--ug-icon-color);display:flex}.ug-filter-search input{width:100%;padding:6px 8px 6px 28px;border:1px solid var(--ug-border-color);border-radius:4px;font-family:inherit;font-size:inherit;background-color:var(--ug-panel-bg);color:var(--ug-color)}.ug-filter-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-filter-list{padding:8px 0}.ug-filter-viewport{height:200px;width:100%}.ug-filter-select-all{border-bottom:1px solid var(--ug-border-color);margin-bottom:4px}.ug-filter-item{display:flex;align-items:center;padding:4px 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.ug-filter-item:hover{background-color:var(--ug-row-hover-bg)}.ug-filter-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--ug-primary-color);margin-right:12px}.ug-filter-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ug-filter-empty{padding:16px;text-align:center;color:var(--ug-icon-color);font-style:italic}\n"] }]
|
|
1148
1148
|
}], propDecorators: { column: [{
|
|
1149
1149
|
type: Input
|
|
1150
1150
|
}], isOpen: [{
|
|
@@ -1653,11 +1653,12 @@ class FilterToolPanelComponent {
|
|
|
1653
1653
|
rowData = [];
|
|
1654
1654
|
activeFilters = new Map();
|
|
1655
1655
|
conditionFilters = new Map();
|
|
1656
|
+
savedReportNames = [];
|
|
1656
1657
|
filterApplied = new EventEmitter();
|
|
1657
1658
|
conditionFilterChanged = new EventEmitter();
|
|
1658
1659
|
clearAllFilters = new EventEmitter();
|
|
1659
|
-
|
|
1660
|
-
|
|
1660
|
+
saveReportRequested = new EventEmitter();
|
|
1661
|
+
loadReportRequested = new EventEmitter();
|
|
1661
1662
|
sections = [];
|
|
1662
1663
|
_loadedFields = new Set();
|
|
1663
1664
|
constructor(cdr) {
|
|
@@ -1924,27 +1925,22 @@ class FilterToolPanelComponent {
|
|
|
1924
1925
|
trackByField(index, section) {
|
|
1925
1926
|
return section.column.field;
|
|
1926
1927
|
}
|
|
1927
|
-
|
|
1928
|
-
const
|
|
1929
|
-
if (
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
console.error('Failed to parse filter JSON:', err);
|
|
1941
|
-
alert('Invalid filter file format.');
|
|
1942
|
-
}
|
|
1943
|
-
};
|
|
1944
|
-
reader.readAsText(file);
|
|
1928
|
+
onSaveReportPrompt() {
|
|
1929
|
+
const name = prompt('Enter a name for this report:');
|
|
1930
|
+
if (name && name.trim()) {
|
|
1931
|
+
this.saveReportRequested.emit(name.trim());
|
|
1932
|
+
}
|
|
1933
|
+
}
|
|
1934
|
+
onLoadReportSelected(event) {
|
|
1935
|
+
const select = event.target;
|
|
1936
|
+
const name = select.value;
|
|
1937
|
+
if (name) {
|
|
1938
|
+
this.loadReportRequested.emit(name);
|
|
1939
|
+
select.value = ''; // Reset so it can be re-selected if needed
|
|
1940
|
+
}
|
|
1945
1941
|
}
|
|
1946
1942
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: FilterToolPanelComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1947
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: FilterToolPanelComponent, isStandalone: true, selector: "ug-filter-tool-panel", inputs: { columns: "columns", rowData: "rowData", activeFilters: "activeFilters", conditionFilters: "conditionFilters" }, outputs: { filterApplied: "filterApplied", conditionFilterChanged: "conditionFilterChanged", clearAllFilters: "clearAllFilters",
|
|
1943
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: FilterToolPanelComponent, isStandalone: true, selector: "ug-filter-tool-panel", inputs: { columns: "columns", rowData: "rowData", activeFilters: "activeFilters", conditionFilters: "conditionFilters", savedReportNames: "savedReportNames" }, outputs: { filterApplied: "filterApplied", conditionFilterChanged: "conditionFilterChanged", clearAllFilters: "clearAllFilters", saveReportRequested: "saveReportRequested", loadReportRequested: "loadReportRequested" }, usesOnChanges: true, ngImport: i0, template: `
|
|
1948
1944
|
<div class="ug-ftp-wrapper">
|
|
1949
1945
|
<!-- Global Toolbar -->
|
|
1950
1946
|
<div class="ug-ftp-toolbar">
|
|
@@ -1963,15 +1959,15 @@ class FilterToolPanelComponent {
|
|
|
1963
1959
|
|
|
1964
1960
|
<div style="flex: 1"></div>
|
|
1965
1961
|
|
|
1966
|
-
<button class="ug-ftp-btn" (click)="
|
|
1962
|
+
<button class="ug-ftp-btn" (click)="onSaveReportPrompt()" title="Save Filters as Report">
|
|
1967
1963
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline></svg>
|
|
1968
1964
|
Save
|
|
1969
1965
|
</button>
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1966
|
+
|
|
1967
|
+
<select class="ug-ftp-toolbar-select" (change)="onLoadReportSelected($event)" title="Load Saved Report">
|
|
1968
|
+
<option value="" disabled selected>Load</option>
|
|
1969
|
+
<option *ngFor="let name of savedReportNames" [value]="name">{{ name }}</option>
|
|
1970
|
+
</select>
|
|
1975
1971
|
</div>
|
|
1976
1972
|
|
|
1977
1973
|
<!-- Column Filter Sections -->
|
|
@@ -2068,7 +2064,7 @@ class FilterToolPanelComponent {
|
|
|
2068
2064
|
</div>
|
|
2069
2065
|
</div>
|
|
2070
2066
|
</div>
|
|
2071
|
-
`, isInline: true, styles: [".ug-ftp-wrapper{display:flex;flex-direction:column;height:100%;font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);color:var(--ug-header-color, #181d1f)}.ug-ftp-toolbar{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg);flex-wrap:wrap}.ug-ftp-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color);color:var(--ug-header-color);font-family:inherit;font-size:11px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.ug-ftp-btn:hover{background:var(--ug-row-hover-bg);border-color:var(--ug-primary-color);color:var(--ug-primary-color)}.ug-ftp-btn:disabled{opacity:.4;cursor:default;pointer-events:none}.ug-ftp-btn-clear{margin-left:auto}.ug-ftp-sections{flex:1;overflow-y:auto;overflow-x:hidden}.ug-ftp-section{border-bottom:1px solid var(--ug-border-color)}.ug-ftp-section-header{display:flex;align-items:center;padding:10px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;gap:8px;background-color:var(--ug-bg-color);transition:background-color .15s}.ug-ftp-section-header:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-section-header.active-filter{font-weight:600}.ug-ftp-caret{transition:transform .2s ease;color:var(--ug-icon-color);flex-shrink:0}.ug-ftp-caret.expanded{transform:rotate(90deg)}.ug-ftp-section-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-active-dot{width:8px;height:8px;border-radius:50%;background-color:var(--ug-primary-color);flex-shrink:0}.ug-ftp-section-body{padding:0 12px 12px;background-color:var(--ug-bg-color)}.ug-ftp-condition-block{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px;border:1px solid var(--ug-border-color);border-radius:4px;background:var(--ug-header-bg)}.ug-ftp-cond-select{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);cursor:pointer;box-sizing:border-box}.ug-ftp-cond-select:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-cond-input{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-cond-input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-operator-row{display:flex;align-items:center;gap:16px;padding:4px 0}.ug-ftp-radio{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;cursor:pointer;color:var(--ug-header-color)}.ug-ftp-radio input[type=radio]{accent-color:var(--ug-primary-color);cursor:pointer}.ug-ftp-search{position:relative;display:flex;align-items:center;margin-bottom:8px}.ug-ftp-search svg{position:absolute;left:8px;color:var(--ug-icon-color);pointer-events:none}.ug-ftp-search input{width:100%;padding:5px 8px 5px 26px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, inherit);font-size:var(--ug-font-size, 12px);background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-values{border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color)}.ug-ftp-viewport{height:200px}.ug-ftp-item{display:flex;align-items:center;gap:8px;padding:4px 8px;cursor:pointer;font-size:12px;transition:background-color .1s}.ug-ftp-item:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-item input[type=checkbox]{accent-color:var(--ug-primary-color);cursor:pointer;width:14px;height:14px;flex-shrink:0}.ug-ftp-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-select-all{border-bottom:1px solid var(--ug-border-color);font-weight:500;padding:6px 8px}.ug-ftp-empty{padding:16px;text-align:center;color:var(--ug-icon-color);font-style:italic;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2067
|
+
`, isInline: true, styles: [".ug-ftp-wrapper{display:flex;flex-direction:column;height:100%;font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);color:var(--ug-header-color, #181d1f)}.ug-ftp-toolbar{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg);flex-wrap:wrap}.ug-ftp-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color);color:var(--ug-header-color);font-family:inherit;font-size:11px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.ug-ftp-btn:hover{background:var(--ug-row-hover-bg);border-color:var(--ug-primary-color);color:var(--ug-primary-color)}.ug-ftp-btn:disabled{opacity:.4;cursor:default;pointer-events:none}.ug-ftp-btn-clear{margin-left:auto}.ug-ftp-toolbar-select{padding:3px 6px;border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color);color:var(--ug-header-color);font-family:inherit;font-size:11px;cursor:pointer;outline:none;transition:all .15s ease;max-width:120px}.ug-ftp-toolbar-select:hover{border-color:var(--ug-primary-color)}.ug-ftp-sections{flex:1;overflow-y:auto;overflow-x:hidden}.ug-ftp-section{border-bottom:1px solid var(--ug-border-color)}.ug-ftp-section-header{display:flex;align-items:center;padding:10px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;gap:8px;background-color:var(--ug-bg-color);transition:background-color .15s}.ug-ftp-section-header:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-section-header.active-filter{font-weight:600}.ug-ftp-caret{transition:transform .2s ease;color:var(--ug-icon-color);flex-shrink:0}.ug-ftp-caret.expanded{transform:rotate(90deg)}.ug-ftp-section-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-active-dot{width:8px;height:8px;border-radius:50%;background-color:var(--ug-primary-color);flex-shrink:0}.ug-ftp-section-body{padding:0 12px 12px;background-color:var(--ug-bg-color)}.ug-ftp-condition-block{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px;border:1px solid var(--ug-border-color);border-radius:4px;background:var(--ug-header-bg)}.ug-ftp-cond-select{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);cursor:pointer;box-sizing:border-box}.ug-ftp-cond-select:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-cond-input{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-cond-input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-operator-row{display:flex;align-items:center;gap:16px;padding:4px 0}.ug-ftp-radio{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;cursor:pointer;color:var(--ug-header-color)}.ug-ftp-radio input[type=radio]{accent-color:var(--ug-primary-color);cursor:pointer}.ug-ftp-search{position:relative;display:flex;align-items:center;margin-bottom:8px}.ug-ftp-search svg{position:absolute;left:8px;color:var(--ug-icon-color);pointer-events:none}.ug-ftp-search input{width:100%;padding:5px 8px 5px 26px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, inherit);font-size:var(--ug-font-size, 12px);background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-values{border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color)}.ug-ftp-viewport{height:200px}.ug-ftp-item{display:flex;align-items:center;gap:8px;padding:4px 8px;cursor:pointer;font-size:12px;transition:background-color .1s}.ug-ftp-item:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-item input[type=checkbox]{accent-color:var(--ug-primary-color);cursor:pointer;width:14px;height:14px;flex-shrink:0}.ug-ftp-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-select-all{border-bottom:1px solid var(--ug-border-color);font-weight:500;padding:6px 8px}.ug-ftp-empty{padding:16px;text-align:center;color:var(--ug-icon-color);font-style:italic;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2072
2068
|
}
|
|
2073
2069
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: FilterToolPanelComponent, decorators: [{
|
|
2074
2070
|
type: Component,
|
|
@@ -2091,15 +2087,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2091
2087
|
|
|
2092
2088
|
<div style="flex: 1"></div>
|
|
2093
2089
|
|
|
2094
|
-
<button class="ug-ftp-btn" (click)="
|
|
2090
|
+
<button class="ug-ftp-btn" (click)="onSaveReportPrompt()" title="Save Filters as Report">
|
|
2095
2091
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline></svg>
|
|
2096
2092
|
Save
|
|
2097
2093
|
</button>
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2094
|
+
|
|
2095
|
+
<select class="ug-ftp-toolbar-select" (change)="onLoadReportSelected($event)" title="Load Saved Report">
|
|
2096
|
+
<option value="" disabled selected>Load</option>
|
|
2097
|
+
<option *ngFor="let name of savedReportNames" [value]="name">{{ name }}</option>
|
|
2098
|
+
</select>
|
|
2103
2099
|
</div>
|
|
2104
2100
|
|
|
2105
2101
|
<!-- Column Filter Sections -->
|
|
@@ -2196,7 +2192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2196
2192
|
</div>
|
|
2197
2193
|
</div>
|
|
2198
2194
|
</div>
|
|
2199
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-ftp-wrapper{display:flex;flex-direction:column;height:100%;font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);color:var(--ug-header-color, #181d1f)}.ug-ftp-toolbar{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg);flex-wrap:wrap}.ug-ftp-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color);color:var(--ug-header-color);font-family:inherit;font-size:11px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.ug-ftp-btn:hover{background:var(--ug-row-hover-bg);border-color:var(--ug-primary-color);color:var(--ug-primary-color)}.ug-ftp-btn:disabled{opacity:.4;cursor:default;pointer-events:none}.ug-ftp-btn-clear{margin-left:auto}.ug-ftp-sections{flex:1;overflow-y:auto;overflow-x:hidden}.ug-ftp-section{border-bottom:1px solid var(--ug-border-color)}.ug-ftp-section-header{display:flex;align-items:center;padding:10px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;gap:8px;background-color:var(--ug-bg-color);transition:background-color .15s}.ug-ftp-section-header:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-section-header.active-filter{font-weight:600}.ug-ftp-caret{transition:transform .2s ease;color:var(--ug-icon-color);flex-shrink:0}.ug-ftp-caret.expanded{transform:rotate(90deg)}.ug-ftp-section-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-active-dot{width:8px;height:8px;border-radius:50%;background-color:var(--ug-primary-color);flex-shrink:0}.ug-ftp-section-body{padding:0 12px 12px;background-color:var(--ug-bg-color)}.ug-ftp-condition-block{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px;border:1px solid var(--ug-border-color);border-radius:4px;background:var(--ug-header-bg)}.ug-ftp-cond-select{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);cursor:pointer;box-sizing:border-box}.ug-ftp-cond-select:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-cond-input{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-cond-input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-operator-row{display:flex;align-items:center;gap:16px;padding:4px 0}.ug-ftp-radio{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;cursor:pointer;color:var(--ug-header-color)}.ug-ftp-radio input[type=radio]{accent-color:var(--ug-primary-color);cursor:pointer}.ug-ftp-search{position:relative;display:flex;align-items:center;margin-bottom:8px}.ug-ftp-search svg{position:absolute;left:8px;color:var(--ug-icon-color);pointer-events:none}.ug-ftp-search input{width:100%;padding:5px 8px 5px 26px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, inherit);font-size:var(--ug-font-size, 12px);background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-values{border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color)}.ug-ftp-viewport{height:200px}.ug-ftp-item{display:flex;align-items:center;gap:8px;padding:4px 8px;cursor:pointer;font-size:12px;transition:background-color .1s}.ug-ftp-item:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-item input[type=checkbox]{accent-color:var(--ug-primary-color);cursor:pointer;width:14px;height:14px;flex-shrink:0}.ug-ftp-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-select-all{border-bottom:1px solid var(--ug-border-color);font-weight:500;padding:6px 8px}.ug-ftp-empty{padding:16px;text-align:center;color:var(--ug-icon-color);font-style:italic;font-size:12px}\n"] }]
|
|
2195
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-ftp-wrapper{display:flex;flex-direction:column;height:100%;font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);color:var(--ug-header-color, #181d1f)}.ug-ftp-toolbar{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg);flex-wrap:wrap}.ug-ftp-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color);color:var(--ug-header-color);font-family:inherit;font-size:11px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.ug-ftp-btn:hover{background:var(--ug-row-hover-bg);border-color:var(--ug-primary-color);color:var(--ug-primary-color)}.ug-ftp-btn:disabled{opacity:.4;cursor:default;pointer-events:none}.ug-ftp-btn-clear{margin-left:auto}.ug-ftp-toolbar-select{padding:3px 6px;border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color);color:var(--ug-header-color);font-family:inherit;font-size:11px;cursor:pointer;outline:none;transition:all .15s ease;max-width:120px}.ug-ftp-toolbar-select:hover{border-color:var(--ug-primary-color)}.ug-ftp-sections{flex:1;overflow-y:auto;overflow-x:hidden}.ug-ftp-section{border-bottom:1px solid var(--ug-border-color)}.ug-ftp-section-header{display:flex;align-items:center;padding:10px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;gap:8px;background-color:var(--ug-bg-color);transition:background-color .15s}.ug-ftp-section-header:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-section-header.active-filter{font-weight:600}.ug-ftp-caret{transition:transform .2s ease;color:var(--ug-icon-color);flex-shrink:0}.ug-ftp-caret.expanded{transform:rotate(90deg)}.ug-ftp-section-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-active-dot{width:8px;height:8px;border-radius:50%;background-color:var(--ug-primary-color);flex-shrink:0}.ug-ftp-section-body{padding:0 12px 12px;background-color:var(--ug-bg-color)}.ug-ftp-condition-block{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px;border:1px solid var(--ug-border-color);border-radius:4px;background:var(--ug-header-bg)}.ug-ftp-cond-select{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);cursor:pointer;box-sizing:border-box}.ug-ftp-cond-select:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-cond-input{width:100%;padding:5px 8px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, sans-serif);font-size:12px;background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-cond-input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-operator-row{display:flex;align-items:center;gap:16px;padding:4px 0}.ug-ftp-radio{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;cursor:pointer;color:var(--ug-header-color)}.ug-ftp-radio input[type=radio]{accent-color:var(--ug-primary-color);cursor:pointer}.ug-ftp-search{position:relative;display:flex;align-items:center;margin-bottom:8px}.ug-ftp-search svg{position:absolute;left:8px;color:var(--ug-icon-color);pointer-events:none}.ug-ftp-search input{width:100%;padding:5px 8px 5px 26px;border:1px solid var(--ug-border-color);border-radius:3px;font-family:var(--ug-font-family, inherit);font-size:var(--ug-font-size, 12px);background-color:var(--ug-bg-color);color:var(--ug-header-color);box-sizing:border-box}.ug-ftp-search input:focus{outline:none;border-color:var(--ug-primary-color)}.ug-ftp-values{border:1px solid var(--ug-border-color);border-radius:3px;background:var(--ug-bg-color)}.ug-ftp-viewport{height:200px}.ug-ftp-item{display:flex;align-items:center;gap:8px;padding:4px 8px;cursor:pointer;font-size:12px;transition:background-color .1s}.ug-ftp-item:hover{background-color:var(--ug-row-hover-bg)}.ug-ftp-item input[type=checkbox]{accent-color:var(--ug-primary-color);cursor:pointer;width:14px;height:14px;flex-shrink:0}.ug-ftp-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ug-ftp-select-all{border-bottom:1px solid var(--ug-border-color);font-weight:500;padding:6px 8px}.ug-ftp-empty{padding:16px;text-align:center;color:var(--ug-icon-color);font-style:italic;font-size:12px}\n"] }]
|
|
2200
2196
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { columns: [{
|
|
2201
2197
|
type: Input
|
|
2202
2198
|
}], rowData: [{
|
|
@@ -2205,15 +2201,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2205
2201
|
type: Input
|
|
2206
2202
|
}], conditionFilters: [{
|
|
2207
2203
|
type: Input
|
|
2204
|
+
}], savedReportNames: [{
|
|
2205
|
+
type: Input
|
|
2208
2206
|
}], filterApplied: [{
|
|
2209
2207
|
type: Output
|
|
2210
2208
|
}], conditionFilterChanged: [{
|
|
2211
2209
|
type: Output
|
|
2212
2210
|
}], clearAllFilters: [{
|
|
2213
2211
|
type: Output
|
|
2214
|
-
}],
|
|
2212
|
+
}], saveReportRequested: [{
|
|
2215
2213
|
type: Output
|
|
2216
|
-
}],
|
|
2214
|
+
}], loadReportRequested: [{
|
|
2217
2215
|
type: Output
|
|
2218
2216
|
}] } });
|
|
2219
2217
|
|
|
@@ -2226,6 +2224,7 @@ class SideBarComponent {
|
|
|
2226
2224
|
valuesModel = [];
|
|
2227
2225
|
pivotMode = false;
|
|
2228
2226
|
pivotColumns = [];
|
|
2227
|
+
savedReportNames = [];
|
|
2229
2228
|
columnsUpdated = new EventEmitter();
|
|
2230
2229
|
groupModelUpdated = new EventEmitter();
|
|
2231
2230
|
valuesModelUpdated = new EventEmitter();
|
|
@@ -2235,8 +2234,8 @@ class SideBarComponent {
|
|
|
2235
2234
|
filterApplied = new EventEmitter();
|
|
2236
2235
|
conditionFilterChanged = new EventEmitter();
|
|
2237
2236
|
clearAllFilters = new EventEmitter();
|
|
2238
|
-
|
|
2239
|
-
|
|
2237
|
+
saveReportRequested = new EventEmitter();
|
|
2238
|
+
loadReportRequested = new EventEmitter();
|
|
2240
2239
|
activeTab = 'columns'; // Open by default for demo parity
|
|
2241
2240
|
cdr = inject(ChangeDetectorRef);
|
|
2242
2241
|
toggleTab(tab) {
|
|
@@ -2281,7 +2280,7 @@ class SideBarComponent {
|
|
|
2281
2280
|
this.pivotModelUpdated.emit(model);
|
|
2282
2281
|
}
|
|
2283
2282
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: SideBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2284
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: SideBarComponent, isStandalone: true, selector: "ug-side-bar", inputs: { columns: "columns", rowData: "rowData", activeFilters: "activeFilters", conditionFilters: "conditionFilters", groupModel: "groupModel", valuesModel: "valuesModel", pivotMode: "pivotMode", pivotColumns: "pivotColumns" }, outputs: { columnsUpdated: "columnsUpdated", groupModelUpdated: "groupModelUpdated", valuesModelUpdated: "valuesModelUpdated", pivotModeUpdated: "pivotModeUpdated", pivotModelUpdated: "pivotModelUpdated", exportExcelClicked: "exportExcelClicked", filterApplied: "filterApplied", conditionFilterChanged: "conditionFilterChanged", clearAllFilters: "clearAllFilters",
|
|
2283
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: SideBarComponent, isStandalone: true, selector: "ug-side-bar", inputs: { columns: "columns", rowData: "rowData", activeFilters: "activeFilters", conditionFilters: "conditionFilters", groupModel: "groupModel", valuesModel: "valuesModel", pivotMode: "pivotMode", pivotColumns: "pivotColumns", savedReportNames: "savedReportNames" }, outputs: { columnsUpdated: "columnsUpdated", groupModelUpdated: "groupModelUpdated", valuesModelUpdated: "valuesModelUpdated", pivotModeUpdated: "pivotModeUpdated", pivotModelUpdated: "pivotModelUpdated", exportExcelClicked: "exportExcelClicked", filterApplied: "filterApplied", conditionFilterChanged: "conditionFilterChanged", clearAllFilters: "clearAllFilters", saveReportRequested: "saveReportRequested", loadReportRequested: "loadReportRequested" }, ngImport: i0, template: `
|
|
2285
2284
|
<div class="ug-side-bar-wrapper">
|
|
2286
2285
|
<!-- Content Area -->
|
|
2287
2286
|
<div class="ug-side-bar-content" *ngIf="activeTab">
|
|
@@ -2314,11 +2313,12 @@ class SideBarComponent {
|
|
|
2314
2313
|
[rowData]="rowData"
|
|
2315
2314
|
[activeFilters]="activeFilters"
|
|
2316
2315
|
[conditionFilters]="conditionFilters"
|
|
2316
|
+
[savedReportNames]="savedReportNames"
|
|
2317
2317
|
(filterApplied)="onFilterApplied($event)"
|
|
2318
2318
|
(conditionFilterChanged)="onConditionFilterChanged($event)"
|
|
2319
2319
|
(clearAllFilters)="onClearAllFilters()"
|
|
2320
|
-
(
|
|
2321
|
-
(
|
|
2320
|
+
(saveReportRequested)="saveReportRequested.emit($event)"
|
|
2321
|
+
(loadReportRequested)="loadReportRequested.emit($event)">
|
|
2322
2322
|
</ug-filter-tool-panel>
|
|
2323
2323
|
</div>
|
|
2324
2324
|
</div>
|
|
@@ -2340,7 +2340,7 @@ class SideBarComponent {
|
|
|
2340
2340
|
</div>
|
|
2341
2341
|
</div>
|
|
2342
2342
|
</div>
|
|
2343
|
-
`, isInline: true, styles: [".ug-side-bar-wrapper{display:flex;flex-direction:row;height:100%;background-color:var(--ug-bg
|
|
2343
|
+
`, isInline: true, styles: [".ug-side-bar-wrapper{display:flex;flex-direction:row;height:100%;background-color:var(--ug-panel-bg);border-left:1px solid var(--ug-border-color);font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);color:var(--ug-header-color)}.ug-side-bar-content{display:flex;flex-direction:column;width:250px;height:100%;border-right:1px solid var(--ug-border-color)}.ug-side-bar-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg)}.ug-side-bar-title{font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);font-weight:var(--ug-header-font-weight, 500);color:var(--ug-header-color)}.ug-side-bar-close{cursor:pointer;color:var(--ug-icon-color);display:flex;align-items:center;justify-content:center}.ug-side-bar-close:hover{color:var(--ug-primary-color)}.ug-side-bar-body{flex:1;overflow-y:auto;overflow-x:hidden;background-color:var(--ug-panel-bg)}.ug-side-bar-toolbar{display:flex;flex-direction:column;width:40px;height:100%;background-color:var(--ug-header-bg);padding-top:8px;gap:8px;align-items:center}.ug-side-bar-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;cursor:pointer;color:var(--ug-icon-color);border-left:2px solid transparent;width:100%;box-sizing:border-box}.ug-side-bar-tab span{writing-mode:vertical-rl;transform:rotate(180deg);margin-top:12px;font-family:var(--ug-font-family, sans-serif);font-weight:var(--ug-header-font-weight, 500);font-size:var(--ug-font-size, 13px);letter-spacing:.5px}.ug-side-bar-tab:hover{color:var(--ug-primary-color);background-color:var(--ug-row-hover-bg)}.ug-side-bar-tab.active{color:var(--ug-primary-color);background-color:var(--ug-panel-bg);border-left:2px solid var(--ug-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColumnToolPanelComponent, selector: "ug-column-tool-panel", inputs: ["columns", "groupModel", "valuesModel", "pivotMode", "pivotColumns"], outputs: ["columnsUpdated", "groupModelChanged", "valuesModelChanged", "pivotModeChanged", "pivotModelChanged", "exportExcelClicked"] }, { kind: "component", type: FilterToolPanelComponent, selector: "ug-filter-tool-panel", inputs: ["columns", "rowData", "activeFilters", "conditionFilters", "savedReportNames"], outputs: ["filterApplied", "conditionFilterChanged", "clearAllFilters", "saveReportRequested", "loadReportRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2344
2344
|
}
|
|
2345
2345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: SideBarComponent, decorators: [{
|
|
2346
2346
|
type: Component,
|
|
@@ -2377,11 +2377,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2377
2377
|
[rowData]="rowData"
|
|
2378
2378
|
[activeFilters]="activeFilters"
|
|
2379
2379
|
[conditionFilters]="conditionFilters"
|
|
2380
|
+
[savedReportNames]="savedReportNames"
|
|
2380
2381
|
(filterApplied)="onFilterApplied($event)"
|
|
2381
2382
|
(conditionFilterChanged)="onConditionFilterChanged($event)"
|
|
2382
2383
|
(clearAllFilters)="onClearAllFilters()"
|
|
2383
|
-
(
|
|
2384
|
-
(
|
|
2384
|
+
(saveReportRequested)="saveReportRequested.emit($event)"
|
|
2385
|
+
(loadReportRequested)="loadReportRequested.emit($event)">
|
|
2385
2386
|
</ug-filter-tool-panel>
|
|
2386
2387
|
</div>
|
|
2387
2388
|
</div>
|
|
@@ -2403,7 +2404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2403
2404
|
</div>
|
|
2404
2405
|
</div>
|
|
2405
2406
|
</div>
|
|
2406
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-side-bar-wrapper{display:flex;flex-direction:row;height:100%;background-color:var(--ug-bg
|
|
2407
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ug-side-bar-wrapper{display:flex;flex-direction:row;height:100%;background-color:var(--ug-panel-bg);border-left:1px solid var(--ug-border-color);font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);color:var(--ug-header-color)}.ug-side-bar-content{display:flex;flex-direction:column;width:250px;height:100%;border-right:1px solid var(--ug-border-color)}.ug-side-bar-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ug-border-color);background-color:var(--ug-header-bg)}.ug-side-bar-title{font-family:var(--ug-font-family, sans-serif);font-size:var(--ug-font-size, 13px);font-weight:var(--ug-header-font-weight, 500);color:var(--ug-header-color)}.ug-side-bar-close{cursor:pointer;color:var(--ug-icon-color);display:flex;align-items:center;justify-content:center}.ug-side-bar-close:hover{color:var(--ug-primary-color)}.ug-side-bar-body{flex:1;overflow-y:auto;overflow-x:hidden;background-color:var(--ug-panel-bg)}.ug-side-bar-toolbar{display:flex;flex-direction:column;width:40px;height:100%;background-color:var(--ug-header-bg);padding-top:8px;gap:8px;align-items:center}.ug-side-bar-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;cursor:pointer;color:var(--ug-icon-color);border-left:2px solid transparent;width:100%;box-sizing:border-box}.ug-side-bar-tab span{writing-mode:vertical-rl;transform:rotate(180deg);margin-top:12px;font-family:var(--ug-font-family, sans-serif);font-weight:var(--ug-header-font-weight, 500);font-size:var(--ug-font-size, 13px);letter-spacing:.5px}.ug-side-bar-tab:hover{color:var(--ug-primary-color);background-color:var(--ug-row-hover-bg)}.ug-side-bar-tab.active{color:var(--ug-primary-color);background-color:var(--ug-panel-bg);border-left:2px solid var(--ug-primary-color)}\n"] }]
|
|
2407
2408
|
}], propDecorators: { columns: [{
|
|
2408
2409
|
type: Input
|
|
2409
2410
|
}], rowData: [{
|
|
@@ -2420,6 +2421,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2420
2421
|
type: Input
|
|
2421
2422
|
}], pivotColumns: [{
|
|
2422
2423
|
type: Input
|
|
2424
|
+
}], savedReportNames: [{
|
|
2425
|
+
type: Input
|
|
2423
2426
|
}], columnsUpdated: [{
|
|
2424
2427
|
type: Output
|
|
2425
2428
|
}], groupModelUpdated: [{
|
|
@@ -2438,9 +2441,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
2438
2441
|
type: Output
|
|
2439
2442
|
}], clearAllFilters: [{
|
|
2440
2443
|
type: Output
|
|
2441
|
-
}],
|
|
2444
|
+
}], saveReportRequested: [{
|
|
2442
2445
|
type: Output
|
|
2443
|
-
}],
|
|
2446
|
+
}], loadReportRequested: [{
|
|
2444
2447
|
type: Output
|
|
2445
2448
|
}] } });
|
|
2446
2449
|
|
|
@@ -2673,6 +2676,12 @@ class UltraGridComponent {
|
|
|
2673
2676
|
pageSize = 100;
|
|
2674
2677
|
rowClicked = new EventEmitter();
|
|
2675
2678
|
sortChanged = new EventEmitter();
|
|
2679
|
+
selectionChanged = new EventEmitter();
|
|
2680
|
+
getSelectedRows() {
|
|
2681
|
+
if (!this._mappedRowData)
|
|
2682
|
+
return [];
|
|
2683
|
+
return this._mappedRowData.filter(row => row.selected).map(row => row.data);
|
|
2684
|
+
}
|
|
2676
2685
|
isBrowser;
|
|
2677
2686
|
visibleColumns = [];
|
|
2678
2687
|
sortModel = [];
|
|
@@ -2705,6 +2714,7 @@ class UltraGridComponent {
|
|
|
2705
2714
|
conditionFilters = new Map();
|
|
2706
2715
|
isChooseColumnsOpen = false;
|
|
2707
2716
|
chooseColumnsPosition = { x: 0, y: 0 };
|
|
2717
|
+
savedReportNames = [];
|
|
2708
2718
|
destroy$ = new Subject();
|
|
2709
2719
|
sortingWorker;
|
|
2710
2720
|
sortingWorkerUrl;
|
|
@@ -2733,6 +2743,9 @@ class UltraGridComponent {
|
|
|
2733
2743
|
this.fetchServerPage(1);
|
|
2734
2744
|
}
|
|
2735
2745
|
}
|
|
2746
|
+
if (this.isBrowser) {
|
|
2747
|
+
this.loadSavedReportNames();
|
|
2748
|
+
}
|
|
2736
2749
|
}
|
|
2737
2750
|
get selectedRowsCount() {
|
|
2738
2751
|
if (!this._mappedRowData)
|
|
@@ -3272,6 +3285,7 @@ class UltraGridComponent {
|
|
|
3272
3285
|
}
|
|
3273
3286
|
this.selectionVersion++;
|
|
3274
3287
|
this.cdr.markForCheck();
|
|
3288
|
+
this.selectionChanged.emit(this.getSelectedRows());
|
|
3275
3289
|
}
|
|
3276
3290
|
onPageSizeChanged(size) {
|
|
3277
3291
|
this.pageSize = size;
|
|
@@ -3355,6 +3369,7 @@ class UltraGridComponent {
|
|
|
3355
3369
|
this.selectionVersion++;
|
|
3356
3370
|
this.rowClicked.emit(row);
|
|
3357
3371
|
this.cdr.markForCheck();
|
|
3372
|
+
this.selectionChanged.emit(this.getSelectedRows());
|
|
3358
3373
|
}
|
|
3359
3374
|
getPlaceholderRow(index) {
|
|
3360
3375
|
return {
|
|
@@ -3369,7 +3384,13 @@ class UltraGridComponent {
|
|
|
3369
3384
|
}
|
|
3370
3385
|
onHeaderMenuClicked(event) {
|
|
3371
3386
|
this.activeMenuColumn = event.column;
|
|
3372
|
-
|
|
3387
|
+
let x = event.event.clientX;
|
|
3388
|
+
const y = event.event.clientY;
|
|
3389
|
+
const panelWidth = 250;
|
|
3390
|
+
if (typeof window !== 'undefined' && (x + panelWidth > window.innerWidth)) {
|
|
3391
|
+
x = Math.max(0, window.innerWidth - panelWidth - 20);
|
|
3392
|
+
}
|
|
3393
|
+
this.menuPosition = { x, y };
|
|
3373
3394
|
this.isMenuOpen = true;
|
|
3374
3395
|
this.cdr.markForCheck();
|
|
3375
3396
|
}
|
|
@@ -3422,7 +3443,13 @@ class UltraGridComponent {
|
|
|
3422
3443
|
onMenuChooseColumns() {
|
|
3423
3444
|
this.isChooseColumnsOpen = true;
|
|
3424
3445
|
// Position it slightly shifted from the menu icon
|
|
3425
|
-
|
|
3446
|
+
let x = this.menuPosition.x + 20;
|
|
3447
|
+
const y = this.menuPosition.y + 20;
|
|
3448
|
+
const panelWidth = 250;
|
|
3449
|
+
if (typeof window !== 'undefined' && (x + panelWidth > window.innerWidth)) {
|
|
3450
|
+
x = Math.max(0, window.innerWidth - panelWidth - 20);
|
|
3451
|
+
}
|
|
3452
|
+
this.chooseColumnsPosition = { x, y };
|
|
3426
3453
|
this.isMenuOpen = false;
|
|
3427
3454
|
this.cdr.markForCheck();
|
|
3428
3455
|
}
|
|
@@ -3439,7 +3466,13 @@ class UltraGridComponent {
|
|
|
3439
3466
|
}
|
|
3440
3467
|
onHeaderFilterClicked(event) {
|
|
3441
3468
|
this.activeFilterColumn = event.column;
|
|
3442
|
-
|
|
3469
|
+
let x = event.event.clientX;
|
|
3470
|
+
const y = event.event.clientY;
|
|
3471
|
+
const panelWidth = 300;
|
|
3472
|
+
if (typeof window !== 'undefined' && (x + panelWidth > window.innerWidth)) {
|
|
3473
|
+
x = Math.max(0, window.innerWidth - panelWidth - 20);
|
|
3474
|
+
}
|
|
3475
|
+
this.filterPosition = { x, y };
|
|
3443
3476
|
this.isFilterOpen = true;
|
|
3444
3477
|
// Calculate unique values based on un-paginated / un-filtered raw data
|
|
3445
3478
|
const uniqueSet = new Set();
|
|
@@ -3532,8 +3565,23 @@ class UltraGridComponent {
|
|
|
3532
3565
|
}
|
|
3533
3566
|
this.applyLocalData();
|
|
3534
3567
|
}
|
|
3535
|
-
// --- Save / Import Filters ---
|
|
3536
|
-
|
|
3568
|
+
// --- Save / Import Filters natively to LocalStorage ---
|
|
3569
|
+
loadSavedReportNames() {
|
|
3570
|
+
if (!this.isBrowser)
|
|
3571
|
+
return;
|
|
3572
|
+
try {
|
|
3573
|
+
const stored = localStorage.getItem('ug-saved-reports');
|
|
3574
|
+
if (stored) {
|
|
3575
|
+
const parsed = JSON.parse(stored);
|
|
3576
|
+
this.savedReportNames = Object.keys(parsed);
|
|
3577
|
+
this.cdr.markForCheck();
|
|
3578
|
+
}
|
|
3579
|
+
}
|
|
3580
|
+
catch (e) { }
|
|
3581
|
+
}
|
|
3582
|
+
handleSaveReport(reportName) {
|
|
3583
|
+
if (!reportName)
|
|
3584
|
+
return;
|
|
3537
3585
|
const state = {
|
|
3538
3586
|
activeFilters: {},
|
|
3539
3587
|
conditionFilters: {}
|
|
@@ -3548,19 +3596,40 @@ class UltraGridComponent {
|
|
|
3548
3596
|
if (this.conditionFilters.size > 0) {
|
|
3549
3597
|
state.conditionFilters = Object.fromEntries(this.conditionFilters);
|
|
3550
3598
|
}
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3599
|
+
if (this.isBrowser) {
|
|
3600
|
+
try {
|
|
3601
|
+
const stored = localStorage.getItem('ug-saved-reports');
|
|
3602
|
+
const reports = stored ? JSON.parse(stored) : {};
|
|
3603
|
+
reports[reportName] = state;
|
|
3604
|
+
localStorage.setItem('ug-saved-reports', JSON.stringify(reports));
|
|
3605
|
+
this.loadSavedReportNames();
|
|
3606
|
+
console.log(`Report '${reportName}' saved successfully locally.`);
|
|
3607
|
+
}
|
|
3608
|
+
catch (err) {
|
|
3609
|
+
console.error('Failed to save report locally.', err);
|
|
3610
|
+
}
|
|
3611
|
+
}
|
|
3559
3612
|
}
|
|
3560
|
-
|
|
3613
|
+
handleLoadReport(reportName) {
|
|
3614
|
+
if (!reportName || !this.isBrowser)
|
|
3615
|
+
return;
|
|
3616
|
+
try {
|
|
3617
|
+
const stored = localStorage.getItem('ug-saved-reports');
|
|
3618
|
+
if (stored) {
|
|
3619
|
+
const reports = JSON.parse(stored);
|
|
3620
|
+
const data = reports[reportName];
|
|
3621
|
+
if (data) {
|
|
3622
|
+
this.applyImportedFilters(data);
|
|
3623
|
+
}
|
|
3624
|
+
}
|
|
3625
|
+
}
|
|
3626
|
+
catch (err) {
|
|
3627
|
+
console.error('Error loading report locally.', err);
|
|
3628
|
+
}
|
|
3629
|
+
}
|
|
3630
|
+
applyImportedFilters(data) {
|
|
3561
3631
|
if (!data)
|
|
3562
3632
|
return;
|
|
3563
|
-
console.log('Importing filters:', data);
|
|
3564
3633
|
try {
|
|
3565
3634
|
// Restore activeFilters (Record -> Map<string, Set>)
|
|
3566
3635
|
// Important: We create a NEW Map instance to trigger Output/Input change detection
|
|
@@ -3572,7 +3641,6 @@ class UltraGridComponent {
|
|
|
3572
3641
|
}
|
|
3573
3642
|
this.activeFilters = newActiveFilters;
|
|
3574
3643
|
// Restore conditionFilters (Object -> Map)
|
|
3575
|
-
// Important: We create a NEW Map instance to trigger Output/Input change detection
|
|
3576
3644
|
if (data.conditionFilters) {
|
|
3577
3645
|
this.conditionFilters = new Map(Object.entries(data.conditionFilters));
|
|
3578
3646
|
}
|
|
@@ -3583,15 +3651,15 @@ class UltraGridComponent {
|
|
|
3583
3651
|
this.currentPage = 1;
|
|
3584
3652
|
this.applyLocalData();
|
|
3585
3653
|
this.cdr.markForCheck();
|
|
3586
|
-
console.log('Filters
|
|
3654
|
+
console.log('Filters loaded and applied successfully.');
|
|
3587
3655
|
}
|
|
3588
3656
|
catch (err) {
|
|
3589
|
-
console.error('Error applying
|
|
3590
|
-
alert('Error
|
|
3657
|
+
console.error('Error applying loaded filters:', err);
|
|
3658
|
+
alert('Error loading report. Please ensure local storage data is not corrupted.');
|
|
3591
3659
|
}
|
|
3592
3660
|
}
|
|
3593
3661
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: UltraGridComponent, deps: [{ token: PLATFORM_ID }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: GridFlattenerService }, { token: ExcelExportService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3594
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: UltraGridComponent, isStandalone: true, selector: "bways-grid", inputs: { columns: "columns", rowData: "rowData", serverDataSource: "serverDataSource", config: "config", pagination: "pagination", pageSize: "pageSize", groupModel: "groupModel", valuesModel: "valuesModel", pivotColumns: "pivotColumns" }, outputs: { rowClicked: "rowClicked", sortChanged: "sortChanged" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3662
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: UltraGridComponent, isStandalone: true, selector: "bways-grid", inputs: { columns: "columns", rowData: "rowData", serverDataSource: "serverDataSource", config: "config", pagination: "pagination", pageSize: "pageSize", groupModel: "groupModel", valuesModel: "valuesModel", pivotColumns: "pivotColumns" }, outputs: { rowClicked: "rowClicked", sortChanged: "sortChanged", selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3595
3663
|
<div class="ug-wrapper" [ngClass]="config.theme || 'ag-theme-alpine'">
|
|
3596
3664
|
|
|
3597
3665
|
<div class="ug-main">
|
|
@@ -3665,6 +3733,7 @@ class UltraGridComponent {
|
|
|
3665
3733
|
[valuesModel]="valuesModel"
|
|
3666
3734
|
[pivotMode]="!!config.pivotMode"
|
|
3667
3735
|
[pivotColumns]="pivotColumns"
|
|
3736
|
+
[savedReportNames]="savedReportNames"
|
|
3668
3737
|
(columnsUpdated)="onSideBarColumnsUpdated($event)"
|
|
3669
3738
|
(groupModelUpdated)="onSideBarGroupModelUpdated($event)"
|
|
3670
3739
|
(valuesModelUpdated)="onValuesModelUpdated($event)"
|
|
@@ -3674,12 +3743,14 @@ class UltraGridComponent {
|
|
|
3674
3743
|
(filterApplied)="onFilterApplied($event)"
|
|
3675
3744
|
(conditionFilterChanged)="onConditionFilterChanged($event)"
|
|
3676
3745
|
(clearAllFilters)="onClearAllFilters()"
|
|
3677
|
-
(
|
|
3678
|
-
(
|
|
3746
|
+
(saveReportRequested)="handleSaveReport($event)"
|
|
3747
|
+
(loadReportRequested)="handleLoadReport($event)">
|
|
3679
3748
|
</ug-side-bar>
|
|
3680
3749
|
|
|
3750
|
+
</div>
|
|
3681
3751
|
|
|
3682
|
-
|
|
3752
|
+
<!-- Floating overlays rendered OUTSIDE .ug-wrapper to avoid backdrop-filter containing block -->
|
|
3753
|
+
<ug-header-menu
|
|
3683
3754
|
[column]="activeMenuColumn"
|
|
3684
3755
|
[isOpen]="isMenuOpen"
|
|
3685
3756
|
[position]="menuPosition"
|
|
@@ -3709,9 +3780,7 @@ class UltraGridComponent {
|
|
|
3709
3780
|
(closePanel)="isChooseColumnsOpen = false">
|
|
3710
3781
|
</ug-choose-columns>
|
|
3711
3782
|
</div>
|
|
3712
|
-
|
|
3713
|
-
</div>
|
|
3714
|
-
`, isInline: true, styles: ["bways-grid{display:block;height:100%;width:100%}.ug-wrapper{display:flex;flex-direction:row;height:100%;width:100%;border:1px solid var(--ug-border-color);background-color:var(--ug-bg-color);background-image:url(\"data:image/svg+xml;utf8,<svg viewBox='0 0 800 800' xmlns='http://www.w3.org/2000/svg'><g fill='rgba(0,0,0,0.02)'><path transform='translate(150,150) scale(1.6)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(600,250) scale(1.8)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(350,550) scale(1.7)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g><path transform='translate(700,700) scale(1.4)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(100,600) scale(1.5)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(450,100) scale(1.3)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g></g></svg>\"),radial-gradient(circle at 10% 20%,#fdf5f5 0%,transparent 60%),radial-gradient(circle at 80% 10%,#eefbf6 0%,transparent 60%),radial-gradient(circle at 50% 80%,#f9f5f0,#f1efe9);background-size:800px 800px,100% 100%,100% 100%,100% 100%;background-position:center;background-repeat:repeat,no-repeat,no-repeat,no-repeat;box-sizing:border-box;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-header-color);overflow:hidden}.ug-main{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.ug-body{flex:1;overflow:hidden;position:relative}.ug-viewport{height:100%;width:100%;overflow:auto}.ug-ssr-container{height:100%;width:100%;overflow:hidden}.ug-status-bar{display:flex;align-items:center;padding:0 16px;min-height:48px;border-top:1px solid var(--ug-border-color);font-weight:500;font-size:13px;color:var(--ug-header-color);background-color:var(--ug-footer-bg)}.ug-cc-overlay-container{position:fixed;z-index:1002}.ug-wrapper{--ug-border-color: rgba(221, 226, 235, .4);--ug-bg-color: transparent;--ug-header-bg: rgba(255, 255, 255, .25);--ug-header-color: #3f332f;--ug-header-hover-bg: rgba(255, 255, 255, .4);--ug-row-bg: rgba(255, 255, 255, .15);--ug-row-hover-bg: rgba(216, 48, 24, .05);--ug-row-selected-bg: rgba(216, 48, 24, .15);--ug-primary-color: #d83018;--ug-footer-bg: rgba(255, 255, 255, .25);--ug-footer-color: #554440;--ug-icon-color: #7b6d69;--ug-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;--ug-font-size: 13px;--ug-header-font-weight: 600;backdrop-filter:blur(8px)}.ug-wrapper.ag-theme-alpine-dark{--ug-border-color: #334155;--ug-bg-color: #1e293b;--ug-header-bg: #0f172a;--ug-header-color: #e2e8f0;--ug-header-hover-bg: #1e293b;--ug-row-bg: #1e293b;--ug-row-hover-bg: #334155;--ug-row-selected-bg: #0f172a;--ug-primary-color: #60a5fa;--ug-footer-bg: #0f172a;--ug-footer-color: #94a3b8;--ug-icon-color: #94a3b8}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: HeaderComponent, selector: "ug-header", inputs: ["columns", "sortModel", "isAllSelected"], outputs: ["sortChanged", "columnsReordered", "columnResized", "headerCheckboxClicked", "menuClicked", "filterClicked"] }, { kind: "component", type: RowComponent, selector: "ug-row", inputs: ["columns", "row", "rowHeight", "isExpanded", "selectionVersion"], outputs: ["groupToggled"] }, { kind: "component", type: PaginationComponent, selector: "ug-pagination", inputs: ["totalCount", "pageSize", "currentPage"], outputs: ["pageChanged", "pageSizeChanged"] }, { kind: "component", type: HeaderMenuComponent, selector: "ug-header-menu", inputs: ["column", "isOpen", "position", "groupModel"], outputs: ["closeMenu", "sort", "pin", "autosize", "group", "chooseColumns"] }, { kind: "component", type: ChooseColumnsComponent, selector: "ug-choose-columns", inputs: ["columns"], outputs: ["columnsChanged", "closePanel"] }, { kind: "component", type: HeaderFilterComponent, selector: "ug-header-filter", inputs: ["column", "isOpen", "position", "uniqueValues", "activeFilterSet"], outputs: ["closeFilter", "filterApplied"] }, { kind: "component", type: SideBarComponent, selector: "ug-side-bar", inputs: ["columns", "rowData", "activeFilters", "conditionFilters", "groupModel", "valuesModel", "pivotMode", "pivotColumns"], outputs: ["columnsUpdated", "groupModelUpdated", "valuesModelUpdated", "pivotModeUpdated", "pivotModelUpdated", "exportExcelClicked", "filterApplied", "conditionFilterChanged", "clearAllFilters", "saveFiltersRequested", "filtersImported"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3783
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";bways-grid{display:block;height:100%;width:100%;--ug-border-color: rgba(221, 226, 235, .4);--ug-bg-color: transparent;--ug-header-bg: rgba(255, 255, 255, .25);--ug-header-color: #3f332f;--ug-header-hover-bg: rgba(255, 255, 255, .4);--ug-row-bg: rgba(255, 255, 255, .15);--ug-row-hover-bg: rgba(216, 48, 24, .05);--ug-row-selected-bg: rgba(216, 48, 24, .15);--ug-primary-color: #d83018;--ug-panel-bg: #ffffff;--ug-footer-bg: rgba(255, 255, 255, .25);--ug-footer-color: #554440;--ug-icon-color: #7b6d69;--ug-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;--ug-font-size: 13px;--ug-header-font-weight: 600}.ug-wrapper{display:flex;flex-direction:row;height:100%;width:100%;border:1px solid var(--ug-border-color);background-color:var(--ug-bg-color);background-image:url(\"data:image/svg+xml;utf8,<svg viewBox='0 0 800 800' xmlns='http://www.w3.org/2000/svg'><g fill='rgba(0,0,0,0.02)'><path transform='translate(150,150) scale(1.6)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(600,250) scale(1.8)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(350,550) scale(1.7)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g><path transform='translate(700,700) scale(1.4)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(100,600) scale(1.5)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(450,100) scale(1.3)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g></g></svg>\"),radial-gradient(circle at 10% 20%,#fdf5f5 0%,transparent 60%),radial-gradient(circle at 80% 10%,#eefbf6 0%,transparent 60%),radial-gradient(circle at 50% 80%,#f9f5f0,#f1efe9);background-size:800px 800px,100% 100%,100% 100%,100% 100%;background-position:center;background-repeat:repeat,no-repeat,no-repeat,no-repeat;box-sizing:border-box;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-header-color);overflow:hidden;backdrop-filter:blur(8px)}.ug-main{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.ug-body{flex:1;overflow:hidden;position:relative}.ug-viewport{height:100%;width:100%;overflow:auto}.ug-ssr-container{height:100%;width:100%;overflow:hidden}.ug-status-bar{display:flex;align-items:center;padding:0 16px;min-height:48px;border-top:1px solid var(--ug-border-color);font-weight:500;font-size:13px;color:var(--ug-header-color);background-color:var(--ug-footer-bg)}.ug-cc-overlay-container{position:fixed;z-index:1002}bways-grid.ag-theme-alpine-dark{--ug-border-color: #334155;--ug-bg-color: #1e293b;--ug-header-bg: #0f172a;--ug-header-color: #e2e8f0;--ug-header-hover-bg: #1e293b;--ug-row-bg: #1e293b;--ug-row-hover-bg: #334155;--ug-row-selected-bg: #0f172a;--ug-primary-color: #60a5fa;--ug-footer-bg: #0f172a;--ug-footer-color: #94a3b8;--ug-icon-color: #94a3b8}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: HeaderComponent, selector: "ug-header", inputs: ["columns", "sortModel", "isAllSelected"], outputs: ["sortChanged", "columnsReordered", "columnResized", "headerCheckboxClicked", "menuClicked", "filterClicked"] }, { kind: "component", type: RowComponent, selector: "ug-row", inputs: ["columns", "row", "rowHeight", "isExpanded", "selectionVersion"], outputs: ["groupToggled"] }, { kind: "component", type: PaginationComponent, selector: "ug-pagination", inputs: ["totalCount", "pageSize", "currentPage"], outputs: ["pageChanged", "pageSizeChanged"] }, { kind: "component", type: HeaderMenuComponent, selector: "ug-header-menu", inputs: ["column", "isOpen", "position", "groupModel"], outputs: ["closeMenu", "sort", "pin", "autosize", "group", "chooseColumns"] }, { kind: "component", type: ChooseColumnsComponent, selector: "ug-choose-columns", inputs: ["columns"], outputs: ["columnsChanged", "closePanel"] }, { kind: "component", type: HeaderFilterComponent, selector: "ug-header-filter", inputs: ["column", "isOpen", "position", "uniqueValues", "activeFilterSet"], outputs: ["closeFilter", "filterApplied"] }, { kind: "component", type: SideBarComponent, selector: "ug-side-bar", inputs: ["columns", "rowData", "activeFilters", "conditionFilters", "groupModel", "valuesModel", "pivotMode", "pivotColumns", "savedReportNames"], outputs: ["columnsUpdated", "groupModelUpdated", "valuesModelUpdated", "pivotModeUpdated", "pivotModelUpdated", "exportExcelClicked", "filterApplied", "conditionFilterChanged", "clearAllFilters", "saveReportRequested", "loadReportRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3715
3784
|
}
|
|
3716
3785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: UltraGridComponent, decorators: [{
|
|
3717
3786
|
type: Component,
|
|
@@ -3799,6 +3868,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
3799
3868
|
[valuesModel]="valuesModel"
|
|
3800
3869
|
[pivotMode]="!!config.pivotMode"
|
|
3801
3870
|
[pivotColumns]="pivotColumns"
|
|
3871
|
+
[savedReportNames]="savedReportNames"
|
|
3802
3872
|
(columnsUpdated)="onSideBarColumnsUpdated($event)"
|
|
3803
3873
|
(groupModelUpdated)="onSideBarGroupModelUpdated($event)"
|
|
3804
3874
|
(valuesModelUpdated)="onValuesModelUpdated($event)"
|
|
@@ -3808,12 +3878,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
3808
3878
|
(filterApplied)="onFilterApplied($event)"
|
|
3809
3879
|
(conditionFilterChanged)="onConditionFilterChanged($event)"
|
|
3810
3880
|
(clearAllFilters)="onClearAllFilters()"
|
|
3811
|
-
(
|
|
3812
|
-
(
|
|
3881
|
+
(saveReportRequested)="handleSaveReport($event)"
|
|
3882
|
+
(loadReportRequested)="handleLoadReport($event)">
|
|
3813
3883
|
</ug-side-bar>
|
|
3814
3884
|
|
|
3885
|
+
</div>
|
|
3815
3886
|
|
|
3816
|
-
|
|
3887
|
+
<!-- Floating overlays rendered OUTSIDE .ug-wrapper to avoid backdrop-filter containing block -->
|
|
3888
|
+
<ug-header-menu
|
|
3817
3889
|
[column]="activeMenuColumn"
|
|
3818
3890
|
[isOpen]="isMenuOpen"
|
|
3819
3891
|
[position]="menuPosition"
|
|
@@ -3843,9 +3915,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
3843
3915
|
(closePanel)="isChooseColumnsOpen = false">
|
|
3844
3916
|
</ug-choose-columns>
|
|
3845
3917
|
</div>
|
|
3846
|
-
|
|
3847
|
-
</div>
|
|
3848
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["bways-grid{display:block;height:100%;width:100%}.ug-wrapper{display:flex;flex-direction:row;height:100%;width:100%;border:1px solid var(--ug-border-color);background-color:var(--ug-bg-color);background-image:url(\"data:image/svg+xml;utf8,<svg viewBox='0 0 800 800' xmlns='http://www.w3.org/2000/svg'><g fill='rgba(0,0,0,0.02)'><path transform='translate(150,150) scale(1.6)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(600,250) scale(1.8)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(350,550) scale(1.7)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g><path transform='translate(700,700) scale(1.4)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(100,600) scale(1.5)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(450,100) scale(1.3)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g></g></svg>\"),radial-gradient(circle at 10% 20%,#fdf5f5 0%,transparent 60%),radial-gradient(circle at 80% 10%,#eefbf6 0%,transparent 60%),radial-gradient(circle at 50% 80%,#f9f5f0,#f1efe9);background-size:800px 800px,100% 100%,100% 100%,100% 100%;background-position:center;background-repeat:repeat,no-repeat,no-repeat,no-repeat;box-sizing:border-box;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-header-color);overflow:hidden}.ug-main{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.ug-body{flex:1;overflow:hidden;position:relative}.ug-viewport{height:100%;width:100%;overflow:auto}.ug-ssr-container{height:100%;width:100%;overflow:hidden}.ug-status-bar{display:flex;align-items:center;padding:0 16px;min-height:48px;border-top:1px solid var(--ug-border-color);font-weight:500;font-size:13px;color:var(--ug-header-color);background-color:var(--ug-footer-bg)}.ug-cc-overlay-container{position:fixed;z-index:1002}.ug-wrapper{--ug-border-color: rgba(221, 226, 235, .4);--ug-bg-color: transparent;--ug-header-bg: rgba(255, 255, 255, .25);--ug-header-color: #3f332f;--ug-header-hover-bg: rgba(255, 255, 255, .4);--ug-row-bg: rgba(255, 255, 255, .15);--ug-row-hover-bg: rgba(216, 48, 24, .05);--ug-row-selected-bg: rgba(216, 48, 24, .15);--ug-primary-color: #d83018;--ug-footer-bg: rgba(255, 255, 255, .25);--ug-footer-color: #554440;--ug-icon-color: #7b6d69;--ug-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;--ug-font-size: 13px;--ug-header-font-weight: 600;backdrop-filter:blur(8px)}.ug-wrapper.ag-theme-alpine-dark{--ug-border-color: #334155;--ug-bg-color: #1e293b;--ug-header-bg: #0f172a;--ug-header-color: #e2e8f0;--ug-header-hover-bg: #1e293b;--ug-row-bg: #1e293b;--ug-row-hover-bg: #334155;--ug-row-selected-bg: #0f172a;--ug-primary-color: #60a5fa;--ug-footer-bg: #0f172a;--ug-footer-color: #94a3b8;--ug-icon-color: #94a3b8}\n"] }]
|
|
3918
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["@charset \"UTF-8\";bways-grid{display:block;height:100%;width:100%;--ug-border-color: rgba(221, 226, 235, .4);--ug-bg-color: transparent;--ug-header-bg: rgba(255, 255, 255, .25);--ug-header-color: #3f332f;--ug-header-hover-bg: rgba(255, 255, 255, .4);--ug-row-bg: rgba(255, 255, 255, .15);--ug-row-hover-bg: rgba(216, 48, 24, .05);--ug-row-selected-bg: rgba(216, 48, 24, .15);--ug-primary-color: #d83018;--ug-panel-bg: #ffffff;--ug-footer-bg: rgba(255, 255, 255, .25);--ug-footer-color: #554440;--ug-icon-color: #7b6d69;--ug-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;--ug-font-size: 13px;--ug-header-font-weight: 600}.ug-wrapper{display:flex;flex-direction:row;height:100%;width:100%;border:1px solid var(--ug-border-color);background-color:var(--ug-bg-color);background-image:url(\"data:image/svg+xml;utf8,<svg viewBox='0 0 800 800' xmlns='http://www.w3.org/2000/svg'><g fill='rgba(0,0,0,0.02)'><path transform='translate(150,150) scale(1.6)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(600,250) scale(1.8)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(350,550) scale(1.7)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g><path transform='translate(700,700) scale(1.4)' d='M-20 -30c0-10 40-10 40 0v60c0 10-40 10-40 0z M-20 -10c0 10 40 10 40 0 M-20 10c0 10 40 10 40 0'/><path transform='translate(100,600) scale(1.5)' d='M-40 10a30 30 0 0 1 50-10 40 40 0 0 1 30 60h-80a20 20 0 0 1 0-50z'/><g transform='translate(450,100) scale(1.3)'><circle cx='0' cy='-20' r='10'/><circle cx='-30' cy='10' r='8'/><circle cx='30' cy='10' r='8'/><path d='M0 -20l-30 30m30-30l30 30' stroke='rgba(0,0,0,0.02)' stroke-width='4'/></g></g></svg>\"),radial-gradient(circle at 10% 20%,#fdf5f5 0%,transparent 60%),radial-gradient(circle at 80% 10%,#eefbf6 0%,transparent 60%),radial-gradient(circle at 50% 80%,#f9f5f0,#f1efe9);background-size:800px 800px,100% 100%,100% 100%,100% 100%;background-position:center;background-repeat:repeat,no-repeat,no-repeat,no-repeat;box-sizing:border-box;font-family:var(--ug-font-family);font-size:var(--ug-font-size);color:var(--ug-header-color);overflow:hidden;backdrop-filter:blur(8px)}.ug-main{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.ug-body{flex:1;overflow:hidden;position:relative}.ug-viewport{height:100%;width:100%;overflow:auto}.ug-ssr-container{height:100%;width:100%;overflow:hidden}.ug-status-bar{display:flex;align-items:center;padding:0 16px;min-height:48px;border-top:1px solid var(--ug-border-color);font-weight:500;font-size:13px;color:var(--ug-header-color);background-color:var(--ug-footer-bg)}.ug-cc-overlay-container{position:fixed;z-index:1002}bways-grid.ag-theme-alpine-dark{--ug-border-color: #334155;--ug-bg-color: #1e293b;--ug-header-bg: #0f172a;--ug-header-color: #e2e8f0;--ug-header-hover-bg: #1e293b;--ug-row-bg: #1e293b;--ug-row-hover-bg: #334155;--ug-row-selected-bg: #0f172a;--ug-primary-color: #60a5fa;--ug-footer-bg: #0f172a;--ug-footer-color: #94a3b8;--ug-icon-color: #94a3b8}\n"] }]
|
|
3849
3919
|
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
3850
3920
|
type: Inject,
|
|
3851
3921
|
args: [PLATFORM_ID]
|
|
@@ -3865,6 +3935,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
3865
3935
|
type: Output
|
|
3866
3936
|
}], sortChanged: [{
|
|
3867
3937
|
type: Output
|
|
3938
|
+
}], selectionChanged: [{
|
|
3939
|
+
type: Output
|
|
3868
3940
|
}], groupModel: [{
|
|
3869
3941
|
type: Input
|
|
3870
3942
|
}], valuesModel: [{
|