@memberjunction/ng-base-forms 6.1.0-edge.5 → 6.1.0-edge.7
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/dist/lib/base-form-component.d.ts +23 -0
- package/dist/lib/base-form-component.d.ts.map +1 -1
- package/dist/lib/base-form-component.js +56 -13
- package/dist/lib/base-form-component.js.map +1 -1
- package/dist/lib/chrome/form-chrome-rail-pref.d.ts +22 -0
- package/dist/lib/chrome/form-chrome-rail-pref.d.ts.map +1 -1
- package/dist/lib/chrome/form-chrome-rail-pref.js +29 -0
- package/dist/lib/chrome/form-chrome-rail-pref.js.map +1 -1
- package/dist/lib/chrome/form-chrome.d.ts +19 -0
- package/dist/lib/chrome/form-chrome.d.ts.map +1 -1
- package/dist/lib/chrome/form-chrome.js +26 -0
- package/dist/lib/chrome/form-chrome.js.map +1 -1
- package/dist/lib/container/record-form-container.component.d.ts +52 -2
- package/dist/lib/container/record-form-container.component.d.ts.map +1 -1
- package/dist/lib/container/record-form-container.component.js +485 -161
- package/dist/lib/container/record-form-container.component.js.map +1 -1
- package/dist/lib/explorer-entity-data-grid.component.d.ts +36 -0
- package/dist/lib/explorer-entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/explorer-entity-data-grid.component.js +112 -3
- package/dist/lib/explorer-entity-data-grid.component.js.map +1 -1
- package/dist/lib/field/form-field.component.d.ts +128 -0
- package/dist/lib/field/form-field.component.d.ts.map +1 -1
- package/dist/lib/field/form-field.component.js +871 -306
- package/dist/lib/field/form-field.component.js.map +1 -1
- package/dist/lib/isa-related-panel/isa-related-card.component.d.ts.map +1 -1
- package/dist/lib/isa-related-panel/isa-related-card.component.js +7 -1
- package/dist/lib/isa-related-panel/isa-related-card.component.js.map +1 -1
- package/dist/lib/overlays/base-form-overlay.d.ts.map +1 -1
- package/dist/lib/overlays/base-form-overlay.js +3 -1
- package/dist/lib/overlays/base-form-overlay.js.map +1 -1
- package/dist/lib/overlays/form-slide-in.component.js +10 -11
- package/dist/lib/overlays/form-slide-in.component.js.map +1 -1
- package/dist/lib/panel/collapsible-panel.component.d.ts +94 -3
- package/dist/lib/panel/collapsible-panel.component.d.ts.map +1 -1
- package/dist/lib/panel/collapsible-panel.component.js +278 -37
- package/dist/lib/panel/collapsible-panel.component.js.map +1 -1
- package/dist/lib/panel-slot/base-form-panel.d.ts +12 -0
- package/dist/lib/panel-slot/base-form-panel.d.ts.map +1 -1
- package/dist/lib/panel-slot/base-form-panel.js.map +1 -1
- package/dist/lib/related-grid-height.d.ts +48 -11
- package/dist/lib/related-grid-height.d.ts.map +1 -1
- package/dist/lib/related-grid-height.js +53 -12
- package/dist/lib/related-grid-height.js.map +1 -1
- package/dist/lib/section-indicators/form-section-indicator-coordinator.service.d.ts +80 -0
- package/dist/lib/section-indicators/form-section-indicator-coordinator.service.d.ts.map +1 -0
- package/dist/lib/section-indicators/form-section-indicator-coordinator.service.js +99 -0
- package/dist/lib/section-indicators/form-section-indicator-coordinator.service.js.map +1 -0
- package/dist/lib/section-indicators/form-section-indicators.d.ts +97 -0
- package/dist/lib/section-indicators/form-section-indicators.d.ts.map +1 -0
- package/dist/lib/section-indicators/form-section-indicators.js +132 -0
- package/dist/lib/section-indicators/form-section-indicators.js.map +1 -0
- package/dist/lib/section-manager/section-manager.component.js +2 -2
- package/dist/lib/section-manager/section-manager.component.js.map +1 -1
- package/dist/lib/toolbar/form-toolbar.component.d.ts +9 -1
- package/dist/lib/toolbar/form-toolbar.component.d.ts.map +1 -1
- package/dist/lib/toolbar/form-toolbar.component.js +14 -6
- package/dist/lib/toolbar/form-toolbar.component.js.map +1 -1
- package/dist/lib/types/form-types.d.ts +8 -0
- package/dist/lib/types/form-types.d.ts.map +1 -1
- package/dist/lib/types/form-types.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +25 -27
|
@@ -61,6 +61,20 @@ export declare class ExplorerEntityDataGridComponent implements AfterViewInit, O
|
|
|
61
61
|
* size to toolbar + header + rows instead of `height: 100%` of leftover / auto space.
|
|
62
62
|
*/
|
|
63
63
|
private sizedHeightPx;
|
|
64
|
+
/** Rows in the last load — re-applied when the scrollbar measurement changes. */
|
|
65
|
+
private sizedRowCount;
|
|
66
|
+
/**
|
|
67
|
+
* Height AG Grid's horizontal scrollbar currently takes INSIDE our box (0 when the
|
|
68
|
+
* columns fit, or on platforms with overlay scrollbars). Measured from the DOM after
|
|
69
|
+
* layout, never assumed — see `measureHorizontalScrollbarPx`. `undefined` until AG Grid
|
|
70
|
+
* has rendered its scroller and a measurement exists: `RelatedGridHeightPx` then falls
|
|
71
|
+
* back to its fixed `RELATED_GRID_HSCROLLBAR_PX` reserve, so an unmeasured grid on a
|
|
72
|
+
* classic-scrollbar platform never shows a clipped row before the first measurement.
|
|
73
|
+
*/
|
|
74
|
+
private scrollbarPx;
|
|
75
|
+
private _hostResizeObserver?;
|
|
76
|
+
private _scrollbarMeasureFrame;
|
|
77
|
+
private _destroyed;
|
|
64
78
|
get ResolvedHeight(): number | 'auto' | 'fit-content';
|
|
65
79
|
get hostHeightStyle(): string;
|
|
66
80
|
private shouldSizeToRows;
|
|
@@ -109,6 +123,28 @@ export declare class ExplorerEntityDataGridComponent implements AfterViewInit, O
|
|
|
109
123
|
onRowDoubleClick(event: AfterRowDoubleClickEventArgs): void;
|
|
110
124
|
onRowClick(event: AfterRowClickEventArgs): void;
|
|
111
125
|
onDataLoad(event: AfterDataLoadEventArgs): void;
|
|
126
|
+
private applySizedHeight;
|
|
127
|
+
/**
|
|
128
|
+
* Horizontal overflow comes and goes with the container width, not only with data
|
|
129
|
+
* loads (a left-nav column narrows, a panel is resized), so re-measure on host resize.
|
|
130
|
+
* Idempotent: creates the observer once, the first time this grid sizes to its rows.
|
|
131
|
+
*/
|
|
132
|
+
private ensureHostResizeObserver;
|
|
133
|
+
/**
|
|
134
|
+
* Measure two frames out: AG Grid sizes its fake scroller in its own animation
|
|
135
|
+
* frame (`FakeHScrollComp.setScrollVisible`), and ours must land after that.
|
|
136
|
+
*/
|
|
137
|
+
private scheduleScrollbarMeasure;
|
|
138
|
+
private applyScrollbarMeasurement;
|
|
139
|
+
/**
|
|
140
|
+
* The space AG Grid's horizontal scrollbar takes inside our box right now. AG Grid
|
|
141
|
+
* renders it as a "fake" scroller element it sizes to the platform scrollbar width
|
|
142
|
+
* when the columns overflow and collapses to 0 when they fit. Overlay scrollbars
|
|
143
|
+
* (macOS "show when scrolling") get `.ag-scrollbar-invisible`, which positions the
|
|
144
|
+
* element absolutely — it is drawn over the rows and takes no layout space, so it
|
|
145
|
+
* needs no budget. Returns `undefined` when the scroller has not been rendered yet.
|
|
146
|
+
*/
|
|
147
|
+
private measureHorizontalScrollbarPx;
|
|
112
148
|
/**
|
|
113
149
|
* The inner grid's "New" button bubbles up here. We re-emit as a
|
|
114
150
|
* `new-record` Navigate event so the host form (and Explorer's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explorer-entity-data-grid.component.d.ts","sourceRoot":"","sources":["../../src/lib/explorer-entity-data-grid.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAoD,aAAa,EAAE,SAAS,EAAU,MAAM,eAAe,CAAC;AAG3J,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACH,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EAEpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;AAGhE;;;;;GAKG;AACH,qBA4Ca,+BAAgC,YAAW,aAAa,EAAE,SAAS;IACpD,SAAS,EAAG,uBAAuB,CAAC;IAE5D,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAA4D;IACjF,OAAO,CAAC,QAAQ,CAAuB;IAG9B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAC9C,SAAS,EAAE,OAAO,CAAQ;IAC1B,WAAW,EAAE,OAAO,CAAQ;IAErC;;;;OAIG;IACH,IAAI,oBAAoB,IAAI,OAAO,CAGlC;IAED;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,sBAAsB;IAW9B,2DAA2D;IAClD,UAAU,EAAE,OAAO,CAAQ;IACpC,2EAA2E;IAClE,aAAa,EAAE,OAAO,CAAQ;IAC9B,iBAAiB,EAAE,OAAO,CAAQ;IAClC,gBAAgB,EAAE,OAAO,CAAQ;IACjC,gBAAgB,EAAE,OAAO,CAAS;IAClC,iBAAiB,EAAE,OAAO,CAAS;IACnC,eAAe,EAAE,OAAO,CAAS;IACjC,mBAAmB,EAAE,OAAO,CAAS;IACrC,yBAAyB,EAAE,OAAO,CAAS;IAC3C,uBAAuB,EAAE,OAAO,CAAS;IACzC,cAAc,EAAE,OAAO,CAAQ;IAC/B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAU;IAC1D;;;;OAIG;IACM,SAAS,EAAE,MAAM,GAAG,IAAI,CAA+B;IACvD,aAAa,EAAE,iBAAiB,CAAM;IACtC,aAAa,EAAE,iBAAiB,CAAY;IAErD;;;OAGG;IACH,OAAO,CAAC,aAAa,CAA0C;
|
|
1
|
+
{"version":3,"file":"explorer-entity-data-grid.component.d.ts","sourceRoot":"","sources":["../../src/lib/explorer-entity-data-grid.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,6 +81,20 @@ export class ExplorerEntityDataGridComponent {
|
|
|
81
81
|
* size to toolbar + header + rows instead of `height: 100%` of leftover / auto space.
|
|
82
82
|
*/
|
|
83
83
|
sizedHeightPx = RelatedGridHeightPx(0, this.MaxHeight);
|
|
84
|
+
/** Rows in the last load — re-applied when the scrollbar measurement changes. */
|
|
85
|
+
sizedRowCount = 0;
|
|
86
|
+
/**
|
|
87
|
+
* Height AG Grid's horizontal scrollbar currently takes INSIDE our box (0 when the
|
|
88
|
+
* columns fit, or on platforms with overlay scrollbars). Measured from the DOM after
|
|
89
|
+
* layout, never assumed — see `measureHorizontalScrollbarPx`. `undefined` until AG Grid
|
|
90
|
+
* has rendered its scroller and a measurement exists: `RelatedGridHeightPx` then falls
|
|
91
|
+
* back to its fixed `RELATED_GRID_HSCROLLBAR_PX` reserve, so an unmeasured grid on a
|
|
92
|
+
* classic-scrollbar platform never shows a clipped row before the first measurement.
|
|
93
|
+
*/
|
|
94
|
+
scrollbarPx;
|
|
95
|
+
_hostResizeObserver;
|
|
96
|
+
_scrollbarMeasureFrame = 0;
|
|
97
|
+
_destroyed = false;
|
|
84
98
|
get ResolvedHeight() {
|
|
85
99
|
return this.shouldSizeToRows() ? this.sizedHeightPx : this.Height;
|
|
86
100
|
}
|
|
@@ -112,6 +126,7 @@ export class ExplorerEntityDataGridComponent {
|
|
|
112
126
|
}
|
|
113
127
|
ngAfterViewInit() {
|
|
114
128
|
this.subscribeToFormRefresh();
|
|
129
|
+
this.ensureHostResizeObserver();
|
|
115
130
|
if (!this.DeferLoadUntilVisible || typeof IntersectionObserver === 'undefined') {
|
|
116
131
|
// Deferral off or unsupported environment — preserve eager-load behavior.
|
|
117
132
|
this._hasBeenVisible = true;
|
|
@@ -131,10 +146,17 @@ export class ExplorerEntityDataGridComponent {
|
|
|
131
146
|
});
|
|
132
147
|
}
|
|
133
148
|
ngOnDestroy() {
|
|
149
|
+
this._destroyed = true;
|
|
134
150
|
this.destroy$.next();
|
|
135
151
|
this.destroy$.complete();
|
|
136
152
|
this._visibilityObserver?.disconnect();
|
|
137
153
|
this._visibilityObserver = undefined;
|
|
154
|
+
this._hostResizeObserver?.disconnect();
|
|
155
|
+
this._hostResizeObserver = undefined;
|
|
156
|
+
if (this._scrollbarMeasureFrame && typeof cancelAnimationFrame !== 'undefined') {
|
|
157
|
+
cancelAnimationFrame(this._scrollbarMeasureFrame);
|
|
158
|
+
}
|
|
159
|
+
this._scrollbarMeasureFrame = 0;
|
|
138
160
|
}
|
|
139
161
|
/**
|
|
140
162
|
* Reload this grid from the database. Used by the grid's own refresh
|
|
@@ -208,8 +230,96 @@ export class ExplorerEntityDataGridComponent {
|
|
|
208
230
|
if (!this.shouldSizeToRows()) {
|
|
209
231
|
return;
|
|
210
232
|
}
|
|
211
|
-
this.
|
|
233
|
+
this.sizedRowCount = event.loadedRowCount;
|
|
234
|
+
this.applySizedHeight();
|
|
212
235
|
this.cdr.markForCheck();
|
|
236
|
+
// The related-entity panel ancestry can become detectable after ngAfterViewInit, so
|
|
237
|
+
// make sure the observer exists by the time the first sized load happens.
|
|
238
|
+
this.ensureHostResizeObserver();
|
|
239
|
+
// AG Grid decides whether it needs a horizontal scrollbar only after it lays the new
|
|
240
|
+
// rows/columns out, so the measurement has to follow the load, not accompany it.
|
|
241
|
+
this.scheduleScrollbarMeasure();
|
|
242
|
+
}
|
|
243
|
+
applySizedHeight() {
|
|
244
|
+
this.sizedHeightPx = RelatedGridHeightPx(this.sizedRowCount, this.MaxHeight, this.scrollbarPx);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Horizontal overflow comes and goes with the container width, not only with data
|
|
248
|
+
* loads (a left-nav column narrows, a panel is resized), so re-measure on host resize.
|
|
249
|
+
* Idempotent: creates the observer once, the first time this grid sizes to its rows.
|
|
250
|
+
*/
|
|
251
|
+
ensureHostResizeObserver() {
|
|
252
|
+
if (this._hostResizeObserver || this._destroyed || !this.shouldSizeToRows() || typeof ResizeObserver === 'undefined') {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
this.ngZone.runOutsideAngular(() => {
|
|
256
|
+
this._hostResizeObserver = new ResizeObserver(() => this.scheduleScrollbarMeasure());
|
|
257
|
+
this._hostResizeObserver.observe(this.elementRef.nativeElement);
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Measure two frames out: AG Grid sizes its fake scroller in its own animation
|
|
262
|
+
* frame (`FakeHScrollComp.setScrollVisible`), and ours must land after that.
|
|
263
|
+
*/
|
|
264
|
+
scheduleScrollbarMeasure() {
|
|
265
|
+
if (this._destroyed) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (typeof requestAnimationFrame === 'undefined') {
|
|
269
|
+
this.applyScrollbarMeasurement();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
if (this._scrollbarMeasureFrame) {
|
|
273
|
+
return; // one already queued; it will read the latest layout
|
|
274
|
+
}
|
|
275
|
+
this.ngZone.runOutsideAngular(() => {
|
|
276
|
+
this._scrollbarMeasureFrame = requestAnimationFrame(() => {
|
|
277
|
+
this._scrollbarMeasureFrame = requestAnimationFrame(() => {
|
|
278
|
+
this._scrollbarMeasureFrame = 0;
|
|
279
|
+
this.applyScrollbarMeasurement();
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
applyScrollbarMeasurement() {
|
|
285
|
+
if (this._destroyed || !this.shouldSizeToRows()) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const px = this.measureHorizontalScrollbarPx();
|
|
289
|
+
if (px === this.scrollbarPx) {
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
this.scrollbarPx = px;
|
|
293
|
+
// markForCheck, not detectChanges: the height lives in a HOST binding, which the
|
|
294
|
+
// parent view refreshes, so the view (and its ancestors) must be marked dirty.
|
|
295
|
+
this.ngZone.run(() => {
|
|
296
|
+
this.applySizedHeight();
|
|
297
|
+
this.cdr.markForCheck();
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* The space AG Grid's horizontal scrollbar takes inside our box right now. AG Grid
|
|
302
|
+
* renders it as a "fake" scroller element it sizes to the platform scrollbar width
|
|
303
|
+
* when the columns overflow and collapses to 0 when they fit. Overlay scrollbars
|
|
304
|
+
* (macOS "show when scrolling") get `.ag-scrollbar-invisible`, which positions the
|
|
305
|
+
* element absolutely — it is drawn over the rows and takes no layout space, so it
|
|
306
|
+
* needs no budget. Returns `undefined` when the scroller has not been rendered yet.
|
|
307
|
+
*/
|
|
308
|
+
measureHorizontalScrollbarPx() {
|
|
309
|
+
const host = this.elementRef.nativeElement;
|
|
310
|
+
const scroller = host?.querySelector('.ag-body-horizontal-scroll');
|
|
311
|
+
if (!scroller) {
|
|
312
|
+
// No scroller element yet is NOT a measurement of 0: AG Grid has not laid the grid
|
|
313
|
+
// out. Stay unmeasured so the sizing keeps the fixed reserve until it has.
|
|
314
|
+
return undefined;
|
|
315
|
+
}
|
|
316
|
+
// Watch the scroller too: its height flips 0 <-> N when AG Grid toggles the
|
|
317
|
+
// scrollbar without the host changing size. Re-observing the same target is a no-op.
|
|
318
|
+
this._hostResizeObserver?.observe(scroller);
|
|
319
|
+
if (getComputedStyle(scroller).position === 'absolute') {
|
|
320
|
+
return 0;
|
|
321
|
+
}
|
|
322
|
+
return scroller.offsetHeight;
|
|
213
323
|
}
|
|
214
324
|
/**
|
|
215
325
|
* The inner grid's "New" button bubbles up here. We re-emit as a
|
|
@@ -233,9 +343,8 @@ export class ExplorerEntityDataGridComponent {
|
|
|
233
343
|
} }, hostVars: 2, hostBindings: function ExplorerEntityDataGridComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
234
344
|
i0.ɵɵstyleProp("height", ctx.hostHeightStyle);
|
|
235
345
|
} }, inputs: { Params: "Params", NewRecordValues: "NewRecordValues", AllowLoad: "AllowLoad", ShowToolbar: "ShowToolbar", ShowSearch: "ShowSearch", ShowNewButton: "ShowNewButton", ShowRefreshButton: "ShowRefreshButton", ShowExportButton: "ShowExportButton", ShowDeleteButton: "ShowDeleteButton", ShowCompareButton: "ShowCompareButton", ShowMergeButton: "ShowMergeButton", ShowAddToListButton: "ShowAddToListButton", ShowDuplicateSearchButton: "ShowDuplicateSearchButton", ShowCommunicationButton: "ShowCommunicationButton", ShowRecycleBin: "ShowRecycleBin", Height: "Height", MaxHeight: "MaxHeight", ToolbarConfig: "ToolbarConfig", SelectionMode: "SelectionMode", DeferLoadUntilVisible: "DeferLoadUntilVisible", NavigateOnDoubleClick: "NavigateOnDoubleClick" }, outputs: { AfterRowDoubleClick: "AfterRowDoubleClick", AfterRowClick: "AfterRowClick", AfterDataLoad: "AfterDataLoad", Navigate: "Navigate" }, standalone: false, decls: 2, vars: 19, consts: [["innerGrid", ""], [3, "AfterRowDoubleClick", "AfterRowClick", "AfterDataLoad", "NewRecordTabRequested", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar", "ShowSearch", "ShowNewButton", "ShowRefreshButton", "ShowExportButton", "ShowDeleteButton", "ShowCompareButton", "ShowMergeButton", "ShowAddToListButton", "ShowDuplicateSearchButton", "ShowCommunicationButton", "ShowRecycleBin", "Height", "ToolbarConfig", "SelectionMode", "AllowColumnToggle"]], template: function ExplorerEntityDataGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
236
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
237
346
|
i0.ɵɵelementStart(0, "mj-entity-data-grid", 1, 0);
|
|
238
|
-
i0.ɵɵlistener("AfterRowDoubleClick", function ExplorerEntityDataGridComponent_Template_mj_entity_data_grid_AfterRowDoubleClick_0_listener($event) {
|
|
347
|
+
i0.ɵɵlistener("AfterRowDoubleClick", function ExplorerEntityDataGridComponent_Template_mj_entity_data_grid_AfterRowDoubleClick_0_listener($event) { return ctx.onRowDoubleClick($event); })("AfterRowClick", function ExplorerEntityDataGridComponent_Template_mj_entity_data_grid_AfterRowClick_0_listener($event) { return ctx.onRowClick($event); })("AfterDataLoad", function ExplorerEntityDataGridComponent_Template_mj_entity_data_grid_AfterDataLoad_0_listener($event) { return ctx.onDataLoad($event); })("NewRecordTabRequested", function ExplorerEntityDataGridComponent_Template_mj_entity_data_grid_NewRecordTabRequested_0_listener($event) { return ctx.onNewRecordTabRequested($event); });
|
|
239
348
|
i0.ɵɵelementEnd();
|
|
240
349
|
} if (rf & 2) {
|
|
241
350
|
i0.ɵɵproperty("Params", ctx.Params)("NewRecordValues", ctx.NewRecordValues)("AllowLoad", ctx.EffectiveAllowLoad)("ShowToolbar", ctx.EffectiveShowToolbar)("ShowSearch", ctx.ShowSearch)("ShowNewButton", ctx.ShowNewButton)("ShowRefreshButton", ctx.ShowRefreshButton)("ShowExportButton", ctx.ShowExportButton)("ShowDeleteButton", ctx.ShowDeleteButton)("ShowCompareButton", ctx.ShowCompareButton)("ShowMergeButton", ctx.ShowMergeButton)("ShowAddToListButton", ctx.ShowAddToListButton)("ShowDuplicateSearchButton", ctx.ShowDuplicateSearchButton)("ShowCommunicationButton", ctx.ShowCommunicationButton)("ShowRecycleBin", ctx.ShowRecycleBin)("Height", ctx.ResolvedHeight)("ToolbarConfig", ctx.ToolbarConfig)("SelectionMode", ctx.SelectionMode)("AllowColumnToggle", false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explorer-entity-data-grid.component.js","sourceRoot":"","sources":["../../src/lib/explorer-entity-data-grid.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, ChangeDetectorRef, NgZone, AfterViewInit, OnDestroy, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { RunViewParams } from '@memberjunction/core';\nimport { FormRecordRefreshCoordinator } from './form-record-refresh.coordinator';\nimport {\n EntityDataGridComponent,\n AfterRowDoubleClickEventArgs,\n AfterRowClickEventArgs,\n AfterDataLoadEventArgs,\n GridToolbarConfig,\n GridSelectionMode,\n buildCompositeKey\n} from '@memberjunction/ng-entity-viewer';\nimport { EntityInfo } from '@memberjunction/core';\nimport { FormNavigationEvent } from './types/navigation-events';\nimport { RELATED_GRID_DEFAULT_MAX_PX, RelatedGridHeightPx } from './related-grid-height';\n\n/**\n * Wrapper for EntityDataGridComponent that emits navigation events on row double-click.\n * The host application subscribes to Navigate events and maps them to its routing system.\n *\n * This component is used by CodeGen for related entity grids in forms.\n */\n@Component({\n standalone: false,\n selector: 'mj-explorer-entity-data-grid',\n template: `\n <!-- Related-entity / form-embedded grid: not a saved User View, so there's no canonical\n GridState to manage — suppress the \"Manage Columns\" chooser (AllowColumnToggle=false). -->\n <mj-entity-data-grid\n #innerGrid\n [Params]=\"Params\"\n [NewRecordValues]=\"NewRecordValues\"\n [AllowLoad]=\"EffectiveAllowLoad\"\n [ShowToolbar]=\"EffectiveShowToolbar\"\n [ShowSearch]=\"ShowSearch\"\n [ShowNewButton]=\"ShowNewButton\"\n [ShowRefreshButton]=\"ShowRefreshButton\"\n [ShowExportButton]=\"ShowExportButton\"\n [ShowDeleteButton]=\"ShowDeleteButton\"\n [ShowCompareButton]=\"ShowCompareButton\"\n [ShowMergeButton]=\"ShowMergeButton\"\n [ShowAddToListButton]=\"ShowAddToListButton\"\n [ShowDuplicateSearchButton]=\"ShowDuplicateSearchButton\"\n [ShowCommunicationButton]=\"ShowCommunicationButton\"\n [ShowRecycleBin]=\"ShowRecycleBin\"\n [Height]=\"ResolvedHeight\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [SelectionMode]=\"SelectionMode\"\n [AllowColumnToggle]=\"false\"\n (AfterRowDoubleClick)=\"onRowDoubleClick($event)\"\n (AfterRowClick)=\"onRowClick($event)\"\n (AfterDataLoad)=\"onDataLoad($event)\"\n (NewRecordTabRequested)=\"onNewRecordTabRequested($event)\">\n </mj-entity-data-grid>\n `,\n styles: [`\n :host {\n display: block;\n height: 100%;\n width: 100%;\n }\n `],\n host: {\n '[style.height]': 'hostHeightStyle',\n },\n})\nexport class ExplorerEntityDataGridComponent implements AfterViewInit, OnDestroy {\n @ViewChild('innerGrid') innerGrid!: EntityDataGridComponent;\n\n private elementRef = inject(ElementRef);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private recordRefresh = inject(FormRecordRefreshCoordinator, { optional: true });\n private destroy$ = new Subject<void>();\n\n // Pass-through inputs from EntityDataGridComponent\n @Input() Params: RunViewParams | null = null;\n @Input() NewRecordValues: Record<string, unknown> = {};\n @Input() AllowLoad: boolean = true;\n @Input() ShowToolbar: boolean = true;\n\n /**\n * Existing generated forms still emit `[ShowToolbar]=\"false\"` on related\n * grids. Inside a related-entity panel we restore the toolbar so search /\n * new / export / refresh come back without waiting for CodeGen.\n */\n get EffectiveShowToolbar(): boolean {\n if (this.ShowToolbar) return true;\n return this.isInsideRelatedEntityPanel();\n }\n\n /**\n * Related-entity accordion AND left-nav panels. Accordion used to leave\n * Height='auto' (100% of an auto-sized parent) so AG Grid's viewport\n * collapsed to 0 while the toolbar still showed \"N rows\".\n */\n private isInsideRelatedEntityPanel(): boolean {\n return this.findRelatedEntityPanel() != null;\n }\n\n private findRelatedEntityPanel(): HTMLElement | null {\n let el: HTMLElement | null = this.elementRef.nativeElement?.parentElement ?? null;\n while (el) {\n if (el.tagName?.toLowerCase() === 'mj-collapsible-panel'\n && el.getAttribute('data-variant') === 'related-entity') {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n }\n /** Search box on the left of the toolbar. Default true. */\n @Input() ShowSearch: boolean = true;\n /** Forwarded to the inner grid. Defaults match `<mj-entity-data-grid>`. */\n @Input() ShowNewButton: boolean = true;\n @Input() ShowRefreshButton: boolean = true;\n @Input() ShowExportButton: boolean = true;\n @Input() ShowDeleteButton: boolean = false;\n @Input() ShowCompareButton: boolean = false;\n @Input() ShowMergeButton: boolean = false;\n @Input() ShowAddToListButton: boolean = false;\n @Input() ShowDuplicateSearchButton: boolean = false;\n @Input() ShowCommunicationButton: boolean = false;\n @Input() ShowRecycleBin: boolean = true;\n @Input() Height: number | 'auto' | 'fit-content' = 'auto';\n /**\n * When the grid sizes to its rows (left-nav related panels), this is the\n * cap. Content taller than the cap scrolls inside AG Grid — it does not\n * switch to paging. `null` means grow with the rows, no cap.\n */\n @Input() MaxHeight: number | null = RELATED_GRID_DEFAULT_MAX_PX;\n @Input() ToolbarConfig: GridToolbarConfig = {};\n @Input() SelectionMode: GridSelectionMode = 'single';\n\n /**\n * Related-entity grids (accordion and left-nav) and explicit fit-content grids\n * size to toolbar + header + rows instead of `height: 100%` of leftover / auto space.\n */\n private sizedHeightPx = RelatedGridHeightPx(0, this.MaxHeight);\n\n get ResolvedHeight(): number | 'auto' | 'fit-content' {\n return this.shouldSizeToRows() ? this.sizedHeightPx : this.Height;\n }\n\n get hostHeightStyle(): string {\n return this.shouldSizeToRows() ? `${this.sizedHeightPx}px` : '100%';\n }\n\n private shouldSizeToRows(): boolean {\n return this.Height === 'fit-content' || this.isInsideRelatedEntityPanel();\n }\n\n /**\n * When true (default), the inner grid does not fetch until this component's host\n * element first scrolls into the viewport. This prevents related-entity grids on a\n * form — which are always rendered in the DOM (the collapsible panel hides them via\n * CSS, not @if) — from firing a RunView on form open while they're collapsed or below\n * the fold. The first time the panel becomes visible (scrolled into view and expanded,\n * giving the host non-zero area), the grid loads with its normal spinner.\n * Set to false to restore eager loading for consumers that always want immediate data.\n */\n @Input() DeferLoadUntilVisible: boolean = true;\n\n /** True once the host has first intersected the viewport (or deferral is disabled / unsupported). */\n private _hasBeenVisible = false;\n private _visibilityObserver?: IntersectionObserver;\n\n /**\n * Effective AllowLoad passed to the inner grid: the form's AllowLoad AND\n * (deferral disabled OR the panel has been seen at least once).\n */\n get EffectiveAllowLoad(): boolean {\n return this.AllowLoad && (!this.DeferLoadUntilVisible || this._hasBeenVisible);\n }\n\n ngAfterViewInit(): void {\n this.subscribeToFormRefresh();\n if (!this.DeferLoadUntilVisible || typeof IntersectionObserver === 'undefined') {\n // Deferral off or unsupported environment — preserve eager-load behavior.\n this._hasBeenVisible = true;\n return;\n }\n\n // Observe outside Angular so scroll churn doesn't trigger change detection;\n // we re-enter the zone only on the one-shot \"became visible\" transition.\n this.ngZone.runOutsideAngular(() => {\n this._visibilityObserver = new IntersectionObserver(\n (entries) => {\n if (entries.some(e => e.isIntersecting)) {\n this.onBecameVisible();\n }\n },\n // Small positive rootMargin pre-loads just before the panel scrolls fully into view.\n { root: null, rootMargin: '200px', threshold: 0 }\n );\n this._visibilityObserver.observe(this.elementRef.nativeElement);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this._visibilityObserver?.disconnect();\n this._visibilityObserver = undefined;\n }\n\n /**\n * Reload this grid from the database. Used by the grid's own refresh\n * button and by the parent-form refresh broadcast.\n */\n public async Refresh(): Promise<void> {\n await this.innerGrid?.Refresh();\n }\n\n private subscribeToFormRefresh(): void {\n this.recordRefresh?.Refreshed$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n void this.refreshIfLoaded();\n });\n }\n\n /**\n * Parent-form refresh fan-out: only reload grids that have already paid\n * for a RunView. Collapsed / never-seen related sections stay deferred.\n */\n private async refreshIfLoaded(): Promise<void> {\n if (!this._hasBeenVisible) {\n return;\n }\n await this.Refresh();\n }\n\n private onBecameVisible(): void {\n if (this._hasBeenVisible) {\n return;\n }\n // One-shot: once loaded we never need to observe again.\n this._visibilityObserver?.disconnect();\n this._visibilityObserver = undefined;\n this.ngZone.run(() => {\n this._hasBeenVisible = true;\n // Flip EffectiveAllowLoad → true, which drives the inner grid's AllowLoad setter to load.\n this.cdr.detectChanges();\n });\n }\n\n /**\n * When true, double-clicking a row emits a Navigate event.\n * Defaults to true.\n */\n @Input() NavigateOnDoubleClick: boolean = true;\n\n // Re-emit events for consumers who need them\n @Output() AfterRowDoubleClick = new EventEmitter<AfterRowDoubleClickEventArgs>();\n @Output() AfterRowClick = new EventEmitter<AfterRowClickEventArgs>();\n @Output() AfterDataLoad = new EventEmitter<AfterDataLoadEventArgs>();\n\n /** Emitted when a row is double-clicked and NavigateOnDoubleClick is true */\n @Output() Navigate = new EventEmitter<FormNavigationEvent>();\n\n onRowDoubleClick(event: AfterRowDoubleClickEventArgs): void {\n // Re-emit the event for any consumers\n this.AfterRowDoubleClick.emit(event);\n\n // Emit navigation event if enabled\n if (this.NavigateOnDoubleClick && event.row) {\n // Use the inner grid's resolved EntityInfo - works for both ViewID and EntityName params\n const entityInfo = this.innerGrid?.EntityInfo;\n if (!entityInfo) return;\n\n const pkey = buildCompositeKey(event.row, entityInfo);\n\n this.Navigate.emit({\n Kind: 'record',\n EntityName: entityInfo.Name,\n PrimaryKey: pkey\n });\n }\n }\n\n onRowClick(event: AfterRowClickEventArgs): void {\n // Re-emit the event for any consumers\n this.AfterRowClick.emit(event);\n }\n\n onDataLoad(event: AfterDataLoadEventArgs): void {\n this.AfterDataLoad.emit(event);\n if (!this.shouldSizeToRows()) {\n return;\n }\n this.sizedHeightPx = RelatedGridHeightPx(event.loadedRowCount, this.MaxHeight);\n this.cdr.markForCheck();\n }\n\n /**\n * The inner grid's \"New\" button bubbles up here. We re-emit as a\n * `new-record` Navigate event so the host form (and Explorer's\n * SingleRecordComponent) can call NavigationService.OpenNewEntityRecord\n * and pre-populate the foreign-key fields from NewRecordValues.\n */\n onNewRecordTabRequested(event: { entityInfo: EntityInfo; defaultValues: Record<string, unknown> }): void {\n this.Navigate.emit({\n Kind: 'new-record',\n EntityName: event.entityInfo.Name,\n DefaultValues: event.defaultValues,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"explorer-entity-data-grid.component.js","sourceRoot":"","sources":["../../src/lib/explorer-entity-data-grid.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, ChangeDetectorRef, NgZone, AfterViewInit, OnDestroy, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { RunViewParams } from '@memberjunction/core';\nimport { FormRecordRefreshCoordinator } from './form-record-refresh.coordinator';\nimport {\n EntityDataGridComponent,\n AfterRowDoubleClickEventArgs,\n AfterRowClickEventArgs,\n AfterDataLoadEventArgs,\n GridToolbarConfig,\n GridSelectionMode,\n buildCompositeKey\n} from '@memberjunction/ng-entity-viewer';\nimport { EntityInfo } from '@memberjunction/core';\nimport { FormNavigationEvent } from './types/navigation-events';\nimport { RELATED_GRID_DEFAULT_MAX_PX, RelatedGridHeightPx } from './related-grid-height';\n\n/**\n * Wrapper for EntityDataGridComponent that emits navigation events on row double-click.\n * The host application subscribes to Navigate events and maps them to its routing system.\n *\n * This component is used by CodeGen for related entity grids in forms.\n */\n@Component({\n standalone: false,\n selector: 'mj-explorer-entity-data-grid',\n template: `\n <!-- Related-entity / form-embedded grid: not a saved User View, so there's no canonical\n GridState to manage — suppress the \"Manage Columns\" chooser (AllowColumnToggle=false). -->\n <mj-entity-data-grid\n #innerGrid\n [Params]=\"Params\"\n [NewRecordValues]=\"NewRecordValues\"\n [AllowLoad]=\"EffectiveAllowLoad\"\n [ShowToolbar]=\"EffectiveShowToolbar\"\n [ShowSearch]=\"ShowSearch\"\n [ShowNewButton]=\"ShowNewButton\"\n [ShowRefreshButton]=\"ShowRefreshButton\"\n [ShowExportButton]=\"ShowExportButton\"\n [ShowDeleteButton]=\"ShowDeleteButton\"\n [ShowCompareButton]=\"ShowCompareButton\"\n [ShowMergeButton]=\"ShowMergeButton\"\n [ShowAddToListButton]=\"ShowAddToListButton\"\n [ShowDuplicateSearchButton]=\"ShowDuplicateSearchButton\"\n [ShowCommunicationButton]=\"ShowCommunicationButton\"\n [ShowRecycleBin]=\"ShowRecycleBin\"\n [Height]=\"ResolvedHeight\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [SelectionMode]=\"SelectionMode\"\n [AllowColumnToggle]=\"false\"\n (AfterRowDoubleClick)=\"onRowDoubleClick($event)\"\n (AfterRowClick)=\"onRowClick($event)\"\n (AfterDataLoad)=\"onDataLoad($event)\"\n (NewRecordTabRequested)=\"onNewRecordTabRequested($event)\">\n </mj-entity-data-grid>\n `,\n styles: [`\n :host {\n display: block;\n height: 100%;\n width: 100%;\n }\n `],\n host: {\n '[style.height]': 'hostHeightStyle',\n },\n})\nexport class ExplorerEntityDataGridComponent implements AfterViewInit, OnDestroy {\n @ViewChild('innerGrid') innerGrid!: EntityDataGridComponent;\n\n private elementRef = inject(ElementRef);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private recordRefresh = inject(FormRecordRefreshCoordinator, { optional: true });\n private destroy$ = new Subject<void>();\n\n // Pass-through inputs from EntityDataGridComponent\n @Input() Params: RunViewParams | null = null;\n @Input() NewRecordValues: Record<string, unknown> = {};\n @Input() AllowLoad: boolean = true;\n @Input() ShowToolbar: boolean = true;\n\n /**\n * Existing generated forms still emit `[ShowToolbar]=\"false\"` on related\n * grids. Inside a related-entity panel we restore the toolbar so search /\n * new / export / refresh come back without waiting for CodeGen.\n */\n get EffectiveShowToolbar(): boolean {\n if (this.ShowToolbar) return true;\n return this.isInsideRelatedEntityPanel();\n }\n\n /**\n * Related-entity accordion AND left-nav panels. Accordion used to leave\n * Height='auto' (100% of an auto-sized parent) so AG Grid's viewport\n * collapsed to 0 while the toolbar still showed \"N rows\".\n */\n private isInsideRelatedEntityPanel(): boolean {\n return this.findRelatedEntityPanel() != null;\n }\n\n private findRelatedEntityPanel(): HTMLElement | null {\n let el: HTMLElement | null = this.elementRef.nativeElement?.parentElement ?? null;\n while (el) {\n if (el.tagName?.toLowerCase() === 'mj-collapsible-panel'\n && el.getAttribute('data-variant') === 'related-entity') {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n }\n /** Search box on the left of the toolbar. Default true. */\n @Input() ShowSearch: boolean = true;\n /** Forwarded to the inner grid. Defaults match `<mj-entity-data-grid>`. */\n @Input() ShowNewButton: boolean = true;\n @Input() ShowRefreshButton: boolean = true;\n @Input() ShowExportButton: boolean = true;\n @Input() ShowDeleteButton: boolean = false;\n @Input() ShowCompareButton: boolean = false;\n @Input() ShowMergeButton: boolean = false;\n @Input() ShowAddToListButton: boolean = false;\n @Input() ShowDuplicateSearchButton: boolean = false;\n @Input() ShowCommunicationButton: boolean = false;\n @Input() ShowRecycleBin: boolean = true;\n @Input() Height: number | 'auto' | 'fit-content' = 'auto';\n /**\n * When the grid sizes to its rows (left-nav related panels), this is the\n * cap. Content taller than the cap scrolls inside AG Grid — it does not\n * switch to paging. `null` means grow with the rows, no cap.\n */\n @Input() MaxHeight: number | null = RELATED_GRID_DEFAULT_MAX_PX;\n @Input() ToolbarConfig: GridToolbarConfig = {};\n @Input() SelectionMode: GridSelectionMode = 'single';\n\n /**\n * Related-entity grids (accordion and left-nav) and explicit fit-content grids\n * size to toolbar + header + rows instead of `height: 100%` of leftover / auto space.\n */\n private sizedHeightPx = RelatedGridHeightPx(0, this.MaxHeight);\n /** Rows in the last load — re-applied when the scrollbar measurement changes. */\n private sizedRowCount = 0;\n /**\n * Height AG Grid's horizontal scrollbar currently takes INSIDE our box (0 when the\n * columns fit, or on platforms with overlay scrollbars). Measured from the DOM after\n * layout, never assumed — see `measureHorizontalScrollbarPx`. `undefined` until AG Grid\n * has rendered its scroller and a measurement exists: `RelatedGridHeightPx` then falls\n * back to its fixed `RELATED_GRID_HSCROLLBAR_PX` reserve, so an unmeasured grid on a\n * classic-scrollbar platform never shows a clipped row before the first measurement.\n */\n private scrollbarPx: number | undefined;\n private _hostResizeObserver?: ResizeObserver;\n private _scrollbarMeasureFrame = 0;\n private _destroyed = false;\n\n get ResolvedHeight(): number | 'auto' | 'fit-content' {\n return this.shouldSizeToRows() ? this.sizedHeightPx : this.Height;\n }\n\n get hostHeightStyle(): string {\n return this.shouldSizeToRows() ? `${this.sizedHeightPx}px` : '100%';\n }\n\n private shouldSizeToRows(): boolean {\n return this.Height === 'fit-content' || this.isInsideRelatedEntityPanel();\n }\n\n /**\n * When true (default), the inner grid does not fetch until this component's host\n * element first scrolls into the viewport. This prevents related-entity grids on a\n * form — which are always rendered in the DOM (the collapsible panel hides them via\n * CSS, not @if) — from firing a RunView on form open while they're collapsed or below\n * the fold. The first time the panel becomes visible (scrolled into view and expanded,\n * giving the host non-zero area), the grid loads with its normal spinner.\n * Set to false to restore eager loading for consumers that always want immediate data.\n */\n @Input() DeferLoadUntilVisible: boolean = true;\n\n /** True once the host has first intersected the viewport (or deferral is disabled / unsupported). */\n private _hasBeenVisible = false;\n private _visibilityObserver?: IntersectionObserver;\n\n /**\n * Effective AllowLoad passed to the inner grid: the form's AllowLoad AND\n * (deferral disabled OR the panel has been seen at least once).\n */\n get EffectiveAllowLoad(): boolean {\n return this.AllowLoad && (!this.DeferLoadUntilVisible || this._hasBeenVisible);\n }\n\n ngAfterViewInit(): void {\n this.subscribeToFormRefresh();\n this.ensureHostResizeObserver();\n if (!this.DeferLoadUntilVisible || typeof IntersectionObserver === 'undefined') {\n // Deferral off or unsupported environment — preserve eager-load behavior.\n this._hasBeenVisible = true;\n return;\n }\n\n // Observe outside Angular so scroll churn doesn't trigger change detection;\n // we re-enter the zone only on the one-shot \"became visible\" transition.\n this.ngZone.runOutsideAngular(() => {\n this._visibilityObserver = new IntersectionObserver(\n (entries) => {\n if (entries.some(e => e.isIntersecting)) {\n this.onBecameVisible();\n }\n },\n // Small positive rootMargin pre-loads just before the panel scrolls fully into view.\n { root: null, rootMargin: '200px', threshold: 0 }\n );\n this._visibilityObserver.observe(this.elementRef.nativeElement);\n });\n }\n\n ngOnDestroy(): void {\n this._destroyed = true;\n this.destroy$.next();\n this.destroy$.complete();\n this._visibilityObserver?.disconnect();\n this._visibilityObserver = undefined;\n this._hostResizeObserver?.disconnect();\n this._hostResizeObserver = undefined;\n if (this._scrollbarMeasureFrame && typeof cancelAnimationFrame !== 'undefined') {\n cancelAnimationFrame(this._scrollbarMeasureFrame);\n }\n this._scrollbarMeasureFrame = 0;\n }\n\n /**\n * Reload this grid from the database. Used by the grid's own refresh\n * button and by the parent-form refresh broadcast.\n */\n public async Refresh(): Promise<void> {\n await this.innerGrid?.Refresh();\n }\n\n private subscribeToFormRefresh(): void {\n this.recordRefresh?.Refreshed$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n void this.refreshIfLoaded();\n });\n }\n\n /**\n * Parent-form refresh fan-out: only reload grids that have already paid\n * for a RunView. Collapsed / never-seen related sections stay deferred.\n */\n private async refreshIfLoaded(): Promise<void> {\n if (!this._hasBeenVisible) {\n return;\n }\n await this.Refresh();\n }\n\n private onBecameVisible(): void {\n if (this._hasBeenVisible) {\n return;\n }\n // One-shot: once loaded we never need to observe again.\n this._visibilityObserver?.disconnect();\n this._visibilityObserver = undefined;\n this.ngZone.run(() => {\n this._hasBeenVisible = true;\n // Flip EffectiveAllowLoad → true, which drives the inner grid's AllowLoad setter to load.\n this.cdr.detectChanges();\n });\n }\n\n /**\n * When true, double-clicking a row emits a Navigate event.\n * Defaults to true.\n */\n @Input() NavigateOnDoubleClick: boolean = true;\n\n // Re-emit events for consumers who need them\n @Output() AfterRowDoubleClick = new EventEmitter<AfterRowDoubleClickEventArgs>();\n @Output() AfterRowClick = new EventEmitter<AfterRowClickEventArgs>();\n @Output() AfterDataLoad = new EventEmitter<AfterDataLoadEventArgs>();\n\n /** Emitted when a row is double-clicked and NavigateOnDoubleClick is true */\n @Output() Navigate = new EventEmitter<FormNavigationEvent>();\n\n onRowDoubleClick(event: AfterRowDoubleClickEventArgs): void {\n // Re-emit the event for any consumers\n this.AfterRowDoubleClick.emit(event);\n\n // Emit navigation event if enabled\n if (this.NavigateOnDoubleClick && event.row) {\n // Use the inner grid's resolved EntityInfo - works for both ViewID and EntityName params\n const entityInfo = this.innerGrid?.EntityInfo;\n if (!entityInfo) return;\n\n const pkey = buildCompositeKey(event.row, entityInfo);\n\n this.Navigate.emit({\n Kind: 'record',\n EntityName: entityInfo.Name,\n PrimaryKey: pkey\n });\n }\n }\n\n onRowClick(event: AfterRowClickEventArgs): void {\n // Re-emit the event for any consumers\n this.AfterRowClick.emit(event);\n }\n\n onDataLoad(event: AfterDataLoadEventArgs): void {\n this.AfterDataLoad.emit(event);\n if (!this.shouldSizeToRows()) {\n return;\n }\n this.sizedRowCount = event.loadedRowCount;\n this.applySizedHeight();\n this.cdr.markForCheck();\n // The related-entity panel ancestry can become detectable after ngAfterViewInit, so\n // make sure the observer exists by the time the first sized load happens.\n this.ensureHostResizeObserver();\n // AG Grid decides whether it needs a horizontal scrollbar only after it lays the new\n // rows/columns out, so the measurement has to follow the load, not accompany it.\n this.scheduleScrollbarMeasure();\n }\n\n private applySizedHeight(): void {\n this.sizedHeightPx = RelatedGridHeightPx(this.sizedRowCount, this.MaxHeight, this.scrollbarPx);\n }\n\n /**\n * Horizontal overflow comes and goes with the container width, not only with data\n * loads (a left-nav column narrows, a panel is resized), so re-measure on host resize.\n * Idempotent: creates the observer once, the first time this grid sizes to its rows.\n */\n private ensureHostResizeObserver(): void {\n if (this._hostResizeObserver || this._destroyed || !this.shouldSizeToRows() || typeof ResizeObserver === 'undefined') {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this._hostResizeObserver = new ResizeObserver(() => this.scheduleScrollbarMeasure());\n this._hostResizeObserver.observe(this.elementRef.nativeElement);\n });\n }\n\n /**\n * Measure two frames out: AG Grid sizes its fake scroller in its own animation\n * frame (`FakeHScrollComp.setScrollVisible`), and ours must land after that.\n */\n private scheduleScrollbarMeasure(): void {\n if (this._destroyed) {\n return;\n }\n if (typeof requestAnimationFrame === 'undefined') {\n this.applyScrollbarMeasurement();\n return;\n }\n if (this._scrollbarMeasureFrame) {\n return; // one already queued; it will read the latest layout\n }\n this.ngZone.runOutsideAngular(() => {\n this._scrollbarMeasureFrame = requestAnimationFrame(() => {\n this._scrollbarMeasureFrame = requestAnimationFrame(() => {\n this._scrollbarMeasureFrame = 0;\n this.applyScrollbarMeasurement();\n });\n });\n });\n }\n\n private applyScrollbarMeasurement(): void {\n if (this._destroyed || !this.shouldSizeToRows()) {\n return;\n }\n const px = this.measureHorizontalScrollbarPx();\n if (px === this.scrollbarPx) {\n return;\n }\n this.scrollbarPx = px;\n // markForCheck, not detectChanges: the height lives in a HOST binding, which the\n // parent view refreshes, so the view (and its ancestors) must be marked dirty.\n this.ngZone.run(() => {\n this.applySizedHeight();\n this.cdr.markForCheck();\n });\n }\n\n /**\n * The space AG Grid's horizontal scrollbar takes inside our box right now. AG Grid\n * renders it as a \"fake\" scroller element it sizes to the platform scrollbar width\n * when the columns overflow and collapses to 0 when they fit. Overlay scrollbars\n * (macOS \"show when scrolling\") get `.ag-scrollbar-invisible`, which positions the\n * element absolutely — it is drawn over the rows and takes no layout space, so it\n * needs no budget. Returns `undefined` when the scroller has not been rendered yet.\n */\n private measureHorizontalScrollbarPx(): number | undefined {\n const host = this.elementRef.nativeElement as HTMLElement | null;\n const scroller = host?.querySelector<HTMLElement>('.ag-body-horizontal-scroll');\n if (!scroller) {\n // No scroller element yet is NOT a measurement of 0: AG Grid has not laid the grid\n // out. Stay unmeasured so the sizing keeps the fixed reserve until it has.\n return undefined;\n }\n // Watch the scroller too: its height flips 0 <-> N when AG Grid toggles the\n // scrollbar without the host changing size. Re-observing the same target is a no-op.\n this._hostResizeObserver?.observe(scroller);\n if (getComputedStyle(scroller).position === 'absolute') {\n return 0;\n }\n return scroller.offsetHeight;\n }\n\n /**\n * The inner grid's \"New\" button bubbles up here. We re-emit as a\n * `new-record` Navigate event so the host form (and Explorer's\n * SingleRecordComponent) can call NavigationService.OpenNewEntityRecord\n * and pre-populate the foreign-key fields from NewRecordValues.\n */\n onNewRecordTabRequested(event: { entityInfo: EntityInfo; defaultValues: Record<string, unknown> }): void {\n this.Navigate.emit({\n Kind: 'new-record',\n EntityName: event.entityInfo.Name,\n DefaultValues: event.defaultValues,\n });\n }\n}\n"]}
|
|
@@ -149,6 +149,30 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
149
149
|
Navigate: EventEmitter<FormNavigationEvent>;
|
|
150
150
|
/** Get EntityFieldInfo metadata for this field */
|
|
151
151
|
get FieldInfo(): EntityFieldInfo | undefined;
|
|
152
|
+
/** Memoized answer for {@link IsFieldReadableByUser}; invalidated in ngOnChanges. */
|
|
153
|
+
private _isReadableByUser;
|
|
154
|
+
/** Memoized answer for {@link IsFieldWritableByUser}; invalidated in ngOnChanges. */
|
|
155
|
+
private _isWritableByUser;
|
|
156
|
+
/** The `Record.IsSaved` state {@link _isWritableByUser} was computed against. */
|
|
157
|
+
private _isWritableForSavedState;
|
|
158
|
+
/**
|
|
159
|
+
* Whether field-level security permits the current user to READ this field.
|
|
160
|
+
*
|
|
161
|
+
* The template gates the whole field on this BEFORE anything reads a value, because
|
|
162
|
+
* `BaseEntity.Get()` throws for a denied field — so rendering one at all would take out the
|
|
163
|
+
* entire form rather than hiding a column. Everything downstream (`Value`, `ShouldHideField`,
|
|
164
|
+
* FK resolution) is safe only because this check runs first.
|
|
165
|
+
*
|
|
166
|
+
* Memoized: template getters are evaluated on every change-detection cycle, and
|
|
167
|
+
* `GetDeniedReadFields` walks every field on the entity and aggregates permissions across the
|
|
168
|
+
* user's roles. `ngOnChanges` clears the memo when `Record` or `FieldName` changes.
|
|
169
|
+
*
|
|
170
|
+
* Fails OPEN — on a missing entity, missing user, or an entity with field security switched
|
|
171
|
+
* off — matching `BaseEntity`'s own gate. A form that hid fields because no user had resolved
|
|
172
|
+
* yet would be worse than one that shows them, since the server is the real boundary.
|
|
173
|
+
*/
|
|
174
|
+
get IsFieldReadableByUser(): boolean;
|
|
175
|
+
private computeIsFieldReadableByUser;
|
|
152
176
|
/** Display name from metadata or override */
|
|
153
177
|
get DisplayName(): string;
|
|
154
178
|
/** Display name with search highlighting applied. Output is bound to `[innerHTML]`. */
|
|
@@ -159,6 +183,30 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
159
183
|
set Value(newValue: unknown);
|
|
160
184
|
/** Whether this field is read-only based on entity metadata */
|
|
161
185
|
get IsFieldReadOnly(): boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Whether field-level security permits the current user to WRITE this field, against the verb
|
|
188
|
+
* that actually applies to the record in hand: Create on a new record, Update on a saved one.
|
|
189
|
+
*
|
|
190
|
+
* Read access is handled separately and earlier ({@link IsFieldReadableByUser}) — a field the
|
|
191
|
+
* user cannot see is not rendered at all. This is the narrower case of a field they CAN see
|
|
192
|
+
* but may not change, which should render as a read-only value rather than an editable control.
|
|
193
|
+
*
|
|
194
|
+
* Both verbs matter and they fail differently, which is why this picks by record state rather
|
|
195
|
+
* than checking update alone:
|
|
196
|
+
*
|
|
197
|
+
* - **Update denied** — the server rejects the save. Without this, the user types, saves, and
|
|
198
|
+
* gets an error naming a field they had every reason to think was editable.
|
|
199
|
+
* - **Create denied** — the server does NOT reject. It silently drops the value and takes the
|
|
200
|
+
* column default, matching the read path where a denied field is simply absent. So an
|
|
201
|
+
* editable control on a new record quietly discards what was typed, with no error anywhere.
|
|
202
|
+
* That is the worse of the two, and the only signal the user gets is this.
|
|
203
|
+
*
|
|
204
|
+
* Memoized alongside the read check and invalidated by the same `ngOnChanges`, for the same
|
|
205
|
+
* reason: template getters run every change-detection cycle and the underlying walk covers
|
|
206
|
+
* every field on the entity.
|
|
207
|
+
*/
|
|
208
|
+
get IsFieldWritableByUser(): boolean;
|
|
209
|
+
private computeIsFieldWritableByUser;
|
|
162
210
|
/** Whether this field has been modified (dirty). Only shown for saved records (not new). */
|
|
163
211
|
get IsDirty(): boolean;
|
|
164
212
|
/** Whether this field is required (not nullable) */
|
|
@@ -167,8 +215,31 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
167
215
|
get IsRequiredEmpty(): boolean;
|
|
168
216
|
/** Whether the user has interacted with (changed) this field */
|
|
169
217
|
private _touched;
|
|
218
|
+
/**
|
|
219
|
+
* `FormContext.validationRevision` as it stood when the user last edited this field. Compared with
|
|
220
|
+
* the current revision in {@link FieldErrors}: equal means the edit came AFTER the last failed
|
|
221
|
+
* save, so the user is addressing it and live local validation is the truth; lower means the
|
|
222
|
+
* failure is newer than the edit, so the form-level errors must win.
|
|
223
|
+
*/
|
|
224
|
+
private _touchedAtRevision;
|
|
225
|
+
/** Set when an image upload is rejected (type/size) — shown with field validation. */
|
|
226
|
+
private imageUploadError;
|
|
170
227
|
/** Locally computed validation errors for this field */
|
|
171
228
|
private _fieldErrors;
|
|
229
|
+
/**
|
|
230
|
+
* The ONE way a user interaction marks this field touched: every site must also stamp the
|
|
231
|
+
* revision, or a field touched after a failed save would keep showing the stale form-level error.
|
|
232
|
+
*/
|
|
233
|
+
private markTouched;
|
|
234
|
+
/**
|
|
235
|
+
* True when the user has edited this field since the form last published validation errors.
|
|
236
|
+
*
|
|
237
|
+
* Plain `_touched` was the wrong test: it stayed true from the moment the user typed, so after a
|
|
238
|
+
* failed save the field returned its own — necessarily local, synchronous — validation, and an
|
|
239
|
+
* error the SERVER had just reported for that very field (a `ValidateAsync()` refusal, which the
|
|
240
|
+
* client cannot compute) never showed on the one field the user had just been in.
|
|
241
|
+
*/
|
|
242
|
+
private get editedSinceLastValidationFailure();
|
|
172
243
|
/** Validation errors for this field from the best available source */
|
|
173
244
|
get FieldErrors(): ValidationErrorInfo[];
|
|
174
245
|
/** Whether to show validation messages (touched OR form-level showValidation) */
|
|
@@ -621,9 +692,34 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
621
692
|
get CodeEditorLanguage(): string;
|
|
622
693
|
/** Map the field's CodeType metadata value to a CodeMirror language id. */
|
|
623
694
|
private codeTypeToLanguage;
|
|
695
|
+
/**
|
|
696
|
+
* Runtime display kind from EntityField.ExtendedType. Honored ahead of the
|
|
697
|
+
* generated `LinkType` input so PhotoURL forms still tagged LinkType=URL
|
|
698
|
+
* render as images once metadata says Image.
|
|
699
|
+
*/
|
|
700
|
+
get ExtendedDisplay(): 'image' | 'color' | 'json' | null;
|
|
701
|
+
get ImagePreviewSrc(): string | null;
|
|
702
|
+
get IsInlineImageValue(): boolean;
|
|
703
|
+
get ImageValueSizeLabel(): string;
|
|
704
|
+
get ImageMaxSizeLabel(): string;
|
|
705
|
+
/** URL box: empty for inline images so we never dump a data URI into a text input. */
|
|
706
|
+
get ImageUrlInputValue(): string;
|
|
707
|
+
get ImageUrlDisplay(): string;
|
|
708
|
+
get ColorPickerValue(): string;
|
|
709
|
+
get ColorSwatchValue(): string;
|
|
710
|
+
get JsonDisplayValue(): string;
|
|
624
711
|
/** Handle value changes coming from the embedded code editor (emits a plain string). */
|
|
625
712
|
OnCodeEditorChange(value: string): void;
|
|
626
713
|
/** Format a value for display */
|
|
714
|
+
/**
|
|
715
|
+
* Whether this field holds a DATE with no time, as opposed to a timestamp.
|
|
716
|
+
*
|
|
717
|
+
* The distinction decides which timezone the value may be rendered in, and getting it wrong
|
|
718
|
+
* moves the day. A `date` column has no time and no zone: it is a calendar day, and the only
|
|
719
|
+
* correct way to show it is in the zone it was written in. A `datetime`/`datetimeoffset` names
|
|
720
|
+
* an instant, and the correct way to show THAT is the reader's local zone.
|
|
721
|
+
*/
|
|
722
|
+
private get IsDateOnlyField();
|
|
627
723
|
FormatValue(): string;
|
|
628
724
|
ngOnChanges(changes: SimpleChanges): void;
|
|
629
725
|
ngOnDestroy(): void;
|
|
@@ -643,6 +739,18 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
643
739
|
* Handle value change from a native input.
|
|
644
740
|
*/
|
|
645
741
|
OnInputChange(event: Event): void;
|
|
742
|
+
OnImageUrlInput(event: Event): void;
|
|
743
|
+
OnImageClear(): void;
|
|
744
|
+
OnImageFileSelected(event: Event): Promise<void>;
|
|
745
|
+
OnColorPickerInput(event: Event): void;
|
|
746
|
+
OnJsonBlur(): void;
|
|
747
|
+
private readFileAsDataUri;
|
|
748
|
+
private loadHtmlImage;
|
|
749
|
+
/**
|
|
750
|
+
* Re-encode a raster data URI as JPEG, shrinking dimensions/quality until it fits
|
|
751
|
+
* `maxChars`. GIF/SVG are left alone (would lose animation / vectors).
|
|
752
|
+
*/
|
|
753
|
+
private compressImageDataUriToFit;
|
|
646
754
|
/**
|
|
647
755
|
* Handle value change from a number input.
|
|
648
756
|
*/
|
|
@@ -659,6 +767,26 @@ export declare class MjFormFieldComponent extends BaseAngularComponent implement
|
|
|
659
767
|
* Get date value formatted for HTML date input.
|
|
660
768
|
*/
|
|
661
769
|
get DateInputValue(): string;
|
|
770
|
+
/**
|
|
771
|
+
* The field holds SOMETHING, and the date editor cannot show it.
|
|
772
|
+
*
|
|
773
|
+
* WHY A SEPARATE SIGNAL IS THE ONLY OPTION. `DateInputValue` returns '' for a value it cannot
|
|
774
|
+
* render, and an `<input type="date">` renders '' as an empty box — the same empty box it shows
|
|
775
|
+
* for a field that was never set. There is no string that makes the element display
|
|
776
|
+
* `not-a-date`, so the control physically cannot surface the problem itself. The most the getter
|
|
777
|
+
* can do is refuse to emit garbage; saying WHY has to happen beside it.
|
|
778
|
+
*
|
|
779
|
+
* The consequence of not saying it is not cosmetic. The field reads as "no date", and the next
|
|
780
|
+
* save writes that emptiness over whatever was actually stored — so an unreadable value becomes a
|
|
781
|
+
* destroyed one, silently, by a user who was never told anything was wrong.
|
|
782
|
+
*
|
|
783
|
+
* READ MODE ALREADY DOES THIS and needs nothing: `FormatValue()` shows `Invalid Date` for a bad
|
|
784
|
+
* Date and the raw text for a bad string. It is only the EDITOR that hides the problem, which is
|
|
785
|
+
* why this is scoped to EditMode rather than to the field.
|
|
786
|
+
*
|
|
787
|
+
* An ABSENT value is not unreadable. Empty means empty, and must never be decorated as a fault.
|
|
788
|
+
*/
|
|
789
|
+
get StoredDateIsUnreadable(): boolean;
|
|
662
790
|
static ɵfac: i0.ɵɵFactoryDeclaration<MjFormFieldComponent, never>;
|
|
663
791
|
static ɵcmp: i0.ɵɵComponentDeclaration<MjFormFieldComponent, "mj-form-field", never, { "Record": { "alias": "Record"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; "FieldName": { "alias": "FieldName"; "required": false; }; "Type": { "alias": "Type"; "required": false; }; "LinkType": { "alias": "LinkType"; "required": false; }; "ShowLabel": { "alias": "ShowLabel"; "required": false; }; "FormContext": { "alias": "FormContext"; "required": false; }; "_deprecatedRecord": { "alias": "record"; "required": false; }; "_deprecatedFormContext": { "alias": "formContext"; "required": false; }; "HideWhenEmptyInReadOnlyMode": { "alias": "HideWhenEmptyInReadOnlyMode"; "required": false; }; "DisplayNameOverride": { "alias": "DisplayNameOverride"; "required": false; }; "PossibleValuesOverride": { "alias": "PossibleValuesOverride"; "required": false; }; "FKDropdownMaxWidth": { "alias": "FKDropdownMaxWidth"; "required": false; }; "FKHighlightMatches": { "alias": "FKHighlightMatches"; "required": false; }; "AllowFKCreate": { "alias": "AllowFKCreate"; "required": false; }; "FKCreatePresentation": { "alias": "FKCreatePresentation"; "required": false; }; }, { "ValueChange": "ValueChange"; "Navigate": "Navigate"; }, never, never, false, never>;
|
|
664
792
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../src/lib/field/form-field.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../src/lib/field/form-field.component.ts"],"names":[],"mappings":"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"}
|