@alaarab/ogrid-angular-material 2.6.0 → 2.6.1

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.
@@ -0,0 +1,133 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { BaseColumnChooserComponent } from '@alaarab/ogrid-angular';
3
+ import * as i0 from "@angular/core";
4
+ const _forTrack0 = ($index, $item) => $item.columnId;
5
+ function ColumnChooserComponent_Conditional_5_For_5_Template(rf, ctx) { if (rf & 1) {
6
+ const _r3 = i0.ɵɵgetCurrentView();
7
+ i0.ɵɵdomElementStart(0, "label", 7)(1, "input", 11);
8
+ i0.ɵɵdomListener("change", function ColumnChooserComponent_Conditional_5_For_5_Template_input_change_1_listener($event) { const col_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCheckboxChange(col_r4.columnId, $event)); });
9
+ i0.ɵɵdomElementEnd();
10
+ i0.ɵɵdomElementStart(2, "span");
11
+ i0.ɵɵtext(3);
12
+ i0.ɵɵdomElementEnd()();
13
+ } if (rf & 2) {
14
+ const col_r4 = ctx.$implicit;
15
+ const ctx_r1 = i0.ɵɵnextContext(2);
16
+ i0.ɵɵadvance();
17
+ i0.ɵɵdomProperty("checked", ctx_r1.visibleColumns.has(col_r4.columnId));
18
+ i0.ɵɵadvance(2);
19
+ i0.ɵɵtextInterpolate(col_r4.name);
20
+ } }
21
+ function ColumnChooserComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
22
+ const _r1 = i0.ɵɵgetCurrentView();
23
+ i0.ɵɵdomElementStart(0, "div", 4);
24
+ i0.ɵɵdomListener("click", function ColumnChooserComponent_Conditional_5_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("keydown.escape", function ColumnChooserComponent_Conditional_5_Template_div_keydown_escape_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEscape($event)); });
25
+ i0.ɵɵdomElementStart(1, "div", 5);
26
+ i0.ɵɵtext(2);
27
+ i0.ɵɵdomElementEnd();
28
+ i0.ɵɵdomElementStart(3, "div", 6);
29
+ i0.ɵɵrepeaterCreate(4, ColumnChooserComponent_Conditional_5_For_5_Template, 4, 2, "label", 7, _forTrack0);
30
+ i0.ɵɵdomElementEnd();
31
+ i0.ɵɵdomElementStart(6, "div", 8)(7, "button", 9);
32
+ i0.ɵɵdomListener("click", function ColumnChooserComponent_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onClearAll()); });
33
+ i0.ɵɵtext(8, "Clear All");
34
+ i0.ɵɵdomElementEnd();
35
+ i0.ɵɵdomElementStart(9, "button", 10);
36
+ i0.ɵɵdomListener("click", function ColumnChooserComponent_Conditional_5_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectAll()); });
37
+ i0.ɵɵtext(10, "Select All");
38
+ i0.ɵɵdomElementEnd()()();
39
+ } if (rf & 2) {
40
+ const ctx_r1 = i0.ɵɵnextContext();
41
+ i0.ɵɵadvance(2);
42
+ i0.ɵɵtextInterpolate2(" Select Columns (", ctx_r1.visibleCount(), " of ", ctx_r1.totalCount(), ") ");
43
+ i0.ɵɵadvance(2);
44
+ i0.ɵɵrepeater(ctx_r1.columns);
45
+ } }
46
+ /**
47
+ * Column visibility chooser dropdown using Angular Material styling.
48
+ * Standalone component with inline template.
49
+ */
50
+ export class ColumnChooserComponent extends BaseColumnChooserComponent {
51
+ onEscape(event) {
52
+ if (!this.isOpen())
53
+ return;
54
+ event.preventDefault();
55
+ event.stopPropagation();
56
+ this.isOpen.set(false);
57
+ }
58
+ onDocumentClick(event) {
59
+ const el = event.target;
60
+ if (!el.closest('ogrid-column-chooser')) {
61
+ this.isOpen.set(false);
62
+ }
63
+ }
64
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵColumnChooserComponent_BaseFactory; return function ColumnChooserComponent_Factory(__ngFactoryType__) { return (ɵColumnChooserComponent_BaseFactory || (ɵColumnChooserComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ColumnChooserComponent)))(__ngFactoryType__ || ColumnChooserComponent); }; })(); }
65
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ColumnChooserComponent, selectors: [["ogrid-column-chooser"]], hostBindings: function ColumnChooserComponent_HostBindings(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵlistener("click", function ColumnChooserComponent_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument)("keydown.escape", function ColumnChooserComponent_keydown_escape_HostBindingHandler($event) { return ctx.onEscape($event); }, i0.ɵɵresolveDocument);
67
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 5, consts: [[1, "ogrid-column-chooser"], ["aria-haspopup", "listbox", 1, "ogrid-column-chooser__trigger", 3, "click", "keydown.escape"], [1, "ogrid-column-chooser__caret"], ["tabindex", "-1", 1, "ogrid-column-chooser__dropdown"], ["tabindex", "-1", 1, "ogrid-column-chooser__dropdown", 3, "click", "keydown.escape"], [1, "ogrid-column-chooser__header"], [1, "ogrid-column-chooser__list"], [1, "ogrid-column-chooser__item"], [1, "ogrid-column-chooser__footer"], [1, "ogrid-column-chooser__btn", 3, "click"], [1, "ogrid-column-chooser__btn", "ogrid-column-chooser__btn--primary", 3, "click"], ["type", "checkbox", 3, "change", "checked"]], template: function ColumnChooserComponent_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵdomElementStart(0, "div", 0)(1, "button", 1);
69
+ i0.ɵɵdomListener("click", function ColumnChooserComponent_Template_button_click_1_listener() { return ctx.toggle(); })("keydown.escape", function ColumnChooserComponent_Template_button_keydown_escape_1_listener($event) { return ctx.onEscape($event); });
70
+ i0.ɵɵtext(2);
71
+ i0.ɵɵdomElementStart(3, "span", 2);
72
+ i0.ɵɵtext(4);
73
+ i0.ɵɵdomElementEnd()();
74
+ i0.ɵɵconditionalCreate(5, ColumnChooserComponent_Conditional_5_Template, 11, 2, "div", 3);
75
+ i0.ɵɵdomElementEnd();
76
+ } if (rf & 2) {
77
+ i0.ɵɵadvance();
78
+ i0.ɵɵattribute("aria-expanded", ctx.isOpen());
79
+ i0.ɵɵadvance();
80
+ i0.ɵɵtextInterpolate2(" \u25A6 Column Visibility (", ctx.visibleCount(), " of ", ctx.totalCount(), ") ");
81
+ i0.ɵɵadvance(2);
82
+ i0.ɵɵtextInterpolate(ctx.isOpen() ? "\u25B2" : "\u25BC");
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵconditional(ctx.isOpen() ? 5 : -1);
85
+ } }, styles: ["[_nghost-%COMP%] { display: inline-flex; position: relative; }\n .ogrid-column-chooser[_ngcontent-%COMP%] { position: relative; }\n .ogrid-column-chooser__trigger[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 6px 12px; border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.23)); border-radius: 4px;\n background: transparent; cursor: pointer; font-size: 14px; font-weight: 600;\n text-transform: none; white-space: nowrap;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__trigger[_ngcontent-%COMP%]:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-column-chooser__caret[_ngcontent-%COMP%] { font-size: 10px; }\n .ogrid-column-chooser__dropdown[_ngcontent-%COMP%] {\n position: absolute; top: 100%; right: 0; z-index: 1000;\n min-width: 220px; margin-top: 4px;\n background: var(--ogrid-bg, #ffffff); border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12)); border-radius: 4px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n }\n .ogrid-column-chooser__header[_ngcontent-%COMP%] {\n padding: 8px 12px; font-size: 14px; font-weight: 600;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__list[_ngcontent-%COMP%] {\n max-height: 320px; overflow-y: auto; padding: 4px 0;\n }\n .ogrid-column-chooser__item[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n padding: 4px 12px; min-height: 32px; cursor: pointer; font-size: 14px;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__item[_ngcontent-%COMP%]:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-column-chooser__footer[_ngcontent-%COMP%] {\n display: flex; justify-content: flex-end; gap: 8px;\n padding: 8px 12px; border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-column-chooser__btn[_ngcontent-%COMP%] {\n padding: 4px 12px; border: none; border-radius: 4px;\n background: transparent; cursor: pointer; font-size: 13px; text-transform: none;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__btn[_ngcontent-%COMP%]:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-column-chooser__btn--primary[_ngcontent-%COMP%] {\n background: var(--mat-sys-primary, #1976d2); color: #fff;\n }\n .ogrid-column-chooser__btn--primary[_ngcontent-%COMP%]:hover {\n opacity: 0.9;\n }"], changeDetection: 0 }); }
86
+ }
87
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ColumnChooserComponent, [{
88
+ type: Component,
89
+ args: [{ selector: 'ogrid-column-chooser', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
90
+ <div class="ogrid-column-chooser">
91
+ <button
92
+ class="ogrid-column-chooser__trigger"
93
+ (click)="toggle()"
94
+ (keydown.escape)="onEscape($event)"
95
+ [attr.aria-expanded]="isOpen()"
96
+ aria-haspopup="listbox"
97
+ >
98
+ &#9638; Column Visibility ({{ visibleCount() }} of {{ totalCount() }})
99
+ <span class="ogrid-column-chooser__caret">{{ isOpen() ? '&#9650;' : '&#9660;' }}</span>
100
+ </button>
101
+
102
+ @if (isOpen()) {
103
+ <div class="ogrid-column-chooser__dropdown" (click)="$event.stopPropagation()" (keydown.escape)="onEscape($event)" tabindex="-1">
104
+ <div class="ogrid-column-chooser__header">
105
+ Select Columns ({{ visibleCount() }} of {{ totalCount() }})
106
+ </div>
107
+
108
+ <div class="ogrid-column-chooser__list">
109
+ @for (col of columns; track col.columnId) {
110
+ <label class="ogrid-column-chooser__item">
111
+ <input
112
+ type="checkbox"
113
+ [checked]="visibleColumns.has(col.columnId)"
114
+ (change)="onCheckboxChange(col.columnId, $event)"
115
+ />
116
+ <span>{{ col.name }}</span>
117
+ </label>
118
+ }
119
+ </div>
120
+
121
+ <div class="ogrid-column-chooser__footer">
122
+ <button class="ogrid-column-chooser__btn" (click)="onClearAll()">Clear All</button>
123
+ <button class="ogrid-column-chooser__btn ogrid-column-chooser__btn--primary" (click)="selectAll()">Select All</button>
124
+ </div>
125
+ </div>
126
+ }
127
+ </div>
128
+ `, host: {
129
+ '(document:click)': 'onDocumentClick($event)',
130
+ '(document:keydown.escape)': 'onEscape($event)',
131
+ }, styles: ["\n :host { display: inline-flex; position: relative; }\n .ogrid-column-chooser { position: relative; }\n .ogrid-column-chooser__trigger {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 6px 12px; border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.23)); border-radius: 4px;\n background: transparent; cursor: pointer; font-size: 14px; font-weight: 600;\n text-transform: none; white-space: nowrap;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__trigger:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-column-chooser__caret { font-size: 10px; }\n .ogrid-column-chooser__dropdown {\n position: absolute; top: 100%; right: 0; z-index: 1000;\n min-width: 220px; margin-top: 4px;\n background: var(--ogrid-bg, #ffffff); border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12)); border-radius: 4px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n }\n .ogrid-column-chooser__header {\n padding: 8px 12px; font-size: 14px; font-weight: 600;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__list {\n max-height: 320px; overflow-y: auto; padding: 4px 0;\n }\n .ogrid-column-chooser__item {\n display: flex; align-items: center; gap: 8px;\n padding: 4px 12px; min-height: 32px; cursor: pointer; font-size: 14px;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__item:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-column-chooser__footer {\n display: flex; justify-content: flex-end; gap: 8px;\n padding: 8px 12px; border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-column-chooser__btn {\n padding: 4px 12px; border: none; border-radius: 4px;\n background: transparent; cursor: pointer; font-size: 13px; text-transform: none;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-column-chooser__btn:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-column-chooser__btn--primary {\n background: var(--mat-sys-primary, #1976d2); color: #fff;\n }\n .ogrid-column-chooser__btn--primary:hover {\n opacity: 0.9;\n }\n "] }]
132
+ }], null, null); })();
133
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ColumnChooserComponent, { className: "ColumnChooserComponent", filePath: "column-chooser/column-chooser.component.ts", lineNumber: 108 }); })();