@memberjunction/ng-entity-viewer 5.27.0 → 5.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -0
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts +14 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.js +199 -172
- package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts +9 -1
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.js +58 -38
- package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
- package/dist/lib/recycle-bin/events/recycle-bin-events.d.ts +91 -0
- package/dist/lib/recycle-bin/events/recycle-bin-events.d.ts.map +1 -0
- package/dist/lib/recycle-bin/events/recycle-bin-events.js +10 -0
- package/dist/lib/recycle-bin/events/recycle-bin-events.js.map +1 -0
- package/dist/lib/recycle-bin/recycle-bin-chip.component.d.ts +75 -0
- package/dist/lib/recycle-bin/recycle-bin-chip.component.d.ts.map +1 -0
- package/dist/lib/recycle-bin/recycle-bin-chip.component.js +228 -0
- package/dist/lib/recycle-bin/recycle-bin-chip.component.js.map +1 -0
- package/dist/lib/recycle-bin/recycle-bin.component.d.ts +178 -0
- package/dist/lib/recycle-bin/recycle-bin.component.d.ts.map +1 -0
- package/dist/lib/recycle-bin/recycle-bin.component.js +681 -0
- package/dist/lib/recycle-bin/recycle-bin.component.js.map +1 -0
- package/dist/module.d.ts +13 -9
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +23 -7
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +13 -11
|
@@ -146,6 +146,14 @@ export declare class EntityViewerComponent implements OnInit, OnDestroy {
|
|
|
146
146
|
* @default false
|
|
147
147
|
*/
|
|
148
148
|
showAddToListButton: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Whether to render the Recycle Bin chip in the viewer header.
|
|
151
|
+
* The chip auto-hides itself when the entity has no deleted records,
|
|
152
|
+
* doesn't track changes, or the user lacks Delete permission — so it
|
|
153
|
+
* stays out of the way on entities where it's not relevant.
|
|
154
|
+
* @default true
|
|
155
|
+
*/
|
|
156
|
+
ShowRecycleBin: boolean;
|
|
149
157
|
/**
|
|
150
158
|
* Emitted when a record is selected (single click)
|
|
151
159
|
*/
|
|
@@ -578,6 +586,6 @@ export declare class EntityViewerComponent implements OnInit, OnDestroy {
|
|
|
578
586
|
*/
|
|
579
587
|
private findSubtitleField;
|
|
580
588
|
static ɵfac: i0.ɵɵFactoryDeclaration<EntityViewerComponent, never>;
|
|
581
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EntityViewerComponent, "mj-entity-viewer", never, { "entity": { "alias": "entity"; "required": false; }; "records": { "alias": "records"; "required": false; }; "config": { "alias": "config"; "required": false; }; "selectedRecordId": { "alias": "selectedRecordId"; "required": false; }; "viewMode": { "alias": "viewMode"; "required": false; }; "filterText": { "alias": "filterText"; "required": false; }; "sortState": { "alias": "sortState"; "required": false; }; "gridColumns": { "alias": "gridColumns"; "required": false; }; "cardTemplate": { "alias": "cardTemplate"; "required": false; }; "viewEntity": { "alias": "viewEntity"; "required": false; }; "gridState": { "alias": "gridState"; "required": false; }; "timelineConfig": { "alias": "timelineConfig"; "required": false; }; "showGridToolbar": { "alias": "showGridToolbar"; "required": false; }; "gridToolbarConfig": { "alias": "gridToolbarConfig"; "required": false; }; "gridSelectionMode": { "alias": "gridSelectionMode"; "required": false; }; "showAddToListButton": { "alias": "showAddToListButton"; "required": false; }; "mapDisplayState": { "alias": "mapDisplayState"; "required": false; }; "mapRenderMode": { "alias": "mapRenderMode"; "required": false; }; }, { "recordSelected": "recordSelected"; "recordOpened": "recordOpened"; "dataLoaded": "dataLoaded"; "viewModeChange": "viewModeChange"; "filterTextChange": "filterTextChange"; "filteredCountChanged": "filteredCountChanged"; "sortChanged": "sortChanged"; "gridStateChanged": "gridStateChanged"; "timelineConfigChange": "timelineConfigChange"; "addRequested": "addRequested"; "deleteRequested": "deleteRequested"; "refreshRequested": "refreshRequested"; "exportRequested": "exportRequested"; "addToListRequested": "addToListRequested"; "selectionChanged": "selectionChanged"; "mapDisplayStateChange": "mapDisplayStateChange"; "mapRenderModeChange": "mapRenderModeChange"; }, never, never, false, never>;
|
|
589
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EntityViewerComponent, "mj-entity-viewer", never, { "entity": { "alias": "entity"; "required": false; }; "records": { "alias": "records"; "required": false; }; "config": { "alias": "config"; "required": false; }; "selectedRecordId": { "alias": "selectedRecordId"; "required": false; }; "viewMode": { "alias": "viewMode"; "required": false; }; "filterText": { "alias": "filterText"; "required": false; }; "sortState": { "alias": "sortState"; "required": false; }; "gridColumns": { "alias": "gridColumns"; "required": false; }; "cardTemplate": { "alias": "cardTemplate"; "required": false; }; "viewEntity": { "alias": "viewEntity"; "required": false; }; "gridState": { "alias": "gridState"; "required": false; }; "timelineConfig": { "alias": "timelineConfig"; "required": false; }; "showGridToolbar": { "alias": "showGridToolbar"; "required": false; }; "gridToolbarConfig": { "alias": "gridToolbarConfig"; "required": false; }; "gridSelectionMode": { "alias": "gridSelectionMode"; "required": false; }; "showAddToListButton": { "alias": "showAddToListButton"; "required": false; }; "ShowRecycleBin": { "alias": "ShowRecycleBin"; "required": false; }; "mapDisplayState": { "alias": "mapDisplayState"; "required": false; }; "mapRenderMode": { "alias": "mapRenderMode"; "required": false; }; }, { "recordSelected": "recordSelected"; "recordOpened": "recordOpened"; "dataLoaded": "dataLoaded"; "viewModeChange": "viewModeChange"; "filterTextChange": "filterTextChange"; "filteredCountChanged": "filteredCountChanged"; "sortChanged": "sortChanged"; "gridStateChanged": "gridStateChanged"; "timelineConfigChange": "timelineConfigChange"; "addRequested": "addRequested"; "deleteRequested": "deleteRequested"; "refreshRequested": "refreshRequested"; "exportRequested": "exportRequested"; "addToListRequested": "addToListRequested"; "selectionChanged": "selectionChanged"; "mapDisplayStateChange": "mapDisplayStateChange"; "mapRenderModeChange": "mapRenderModeChange"; }, never, never, false, never>;
|
|
582
590
|
}
|
|
583
591
|
//# sourceMappingURL=entity-viewer.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-viewer.component.d.ts","sourceRoot":"","sources":["../../../src/lib/entity-viewer/entity-viewer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAGhI,OAAO,EAAE,UAAU,EAAE,eAAe,EAA8B,aAAa,EAA0B,MAAM,sBAAsB,CAAC;AAEtI,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACzH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EACL,cAAc,EACd,kBAAkB,EAElB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,qBAAqB,EAErB,mBAAmB,EACnB,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;;AAGnH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBASa,qBAAsB,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"entity-viewer.component.d.ts","sourceRoot":"","sources":["../../../src/lib/entity-viewer/entity-viewer.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,23 +14,24 @@ import * as i3 from "@memberjunction/ng-timeline";
|
|
|
14
14
|
import * as i4 from "@memberjunction/ng-map-view";
|
|
15
15
|
import * as i5 from "../entity-cards/entity-cards.component";
|
|
16
16
|
import * as i6 from "../entity-data-grid/entity-data-grid.component";
|
|
17
|
-
import * as i7 from "
|
|
17
|
+
import * as i7 from "../recycle-bin/recycle-bin-chip.component";
|
|
18
|
+
import * as i8 from "@angular/common";
|
|
18
19
|
const _forTrack0 = ($index, $item) => $item.Name;
|
|
19
20
|
function EntityViewerComponent_Conditional_1_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
20
21
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
21
|
-
i0.ɵɵelementStart(0, "button",
|
|
22
|
+
i0.ɵɵelementStart(0, "button", 21);
|
|
22
23
|
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_1_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearFilter()); });
|
|
23
|
-
i0.ɵɵelement(1, "i",
|
|
24
|
+
i0.ɵɵelement(1, "i", 22);
|
|
24
25
|
i0.ɵɵelementEnd();
|
|
25
26
|
} }
|
|
26
27
|
function EntityViewerComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
27
28
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
28
29
|
i0.ɵɵelementStart(0, "div", 14);
|
|
29
|
-
i0.ɵɵelement(1, "i",
|
|
30
|
-
i0.ɵɵelementStart(2, "input",
|
|
30
|
+
i0.ɵɵelement(1, "i", 18);
|
|
31
|
+
i0.ɵɵelementStart(2, "input", 19);
|
|
31
32
|
i0.ɵɵlistener("input", function EntityViewerComponent_Conditional_1_Conditional_1_Template_input_input_2_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onFilterChange($event.target.value)); });
|
|
32
33
|
i0.ɵɵelementEnd();
|
|
33
|
-
i0.ɵɵconditionalCreate(3, EntityViewerComponent_Conditional_1_Conditional_1_Conditional_3_Template, 2, 0, "button",
|
|
34
|
+
i0.ɵɵconditionalCreate(3, EntityViewerComponent_Conditional_1_Conditional_1_Conditional_3_Template, 2, 0, "button", 20);
|
|
34
35
|
i0.ɵɵelementEnd();
|
|
35
36
|
} if (rf & 2) {
|
|
36
37
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -71,9 +72,9 @@ function EntityViewerComponent_Conditional_1_Conditional_2_Template(rf, ctx) { i
|
|
|
71
72
|
} }
|
|
72
73
|
function EntityViewerComponent_Conditional_1_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
73
74
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
74
|
-
i0.ɵɵelementStart(0, "button",
|
|
75
|
+
i0.ɵɵelementStart(0, "button", 30);
|
|
75
76
|
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_3_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setViewMode("timeline")); });
|
|
76
|
-
i0.ɵɵelement(1, "i",
|
|
77
|
+
i0.ɵɵelement(1, "i", 31);
|
|
77
78
|
i0.ɵɵelementEnd();
|
|
78
79
|
} if (rf & 2) {
|
|
79
80
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -81,18 +82,18 @@ function EntityViewerComponent_Conditional_1_Conditional_3_Conditional_5_Templat
|
|
|
81
82
|
} }
|
|
82
83
|
function EntityViewerComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
83
84
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
84
|
-
i0.ɵɵelementStart(0, "div", 16)(1, "button",
|
|
85
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "button", 23);
|
|
85
86
|
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setViewMode("grid")); });
|
|
86
|
-
i0.ɵɵelement(2, "i",
|
|
87
|
+
i0.ɵɵelement(2, "i", 24);
|
|
87
88
|
i0.ɵɵelementEnd();
|
|
88
|
-
i0.ɵɵelementStart(3, "button",
|
|
89
|
+
i0.ɵɵelementStart(3, "button", 25);
|
|
89
90
|
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_3_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setViewMode("cards")); });
|
|
90
|
-
i0.ɵɵelement(4, "i",
|
|
91
|
+
i0.ɵɵelement(4, "i", 26);
|
|
91
92
|
i0.ɵɵelementEnd();
|
|
92
|
-
i0.ɵɵconditionalCreate(5, EntityViewerComponent_Conditional_1_Conditional_3_Conditional_5_Template, 2, 2, "button",
|
|
93
|
-
i0.ɵɵelementStart(6, "button",
|
|
93
|
+
i0.ɵɵconditionalCreate(5, EntityViewerComponent_Conditional_1_Conditional_3_Conditional_5_Template, 2, 2, "button", 27);
|
|
94
|
+
i0.ɵɵelementStart(6, "button", 28);
|
|
94
95
|
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_3_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setViewMode("map")); });
|
|
95
|
-
i0.ɵɵelement(7, "i",
|
|
96
|
+
i0.ɵɵelement(7, "i", 29);
|
|
96
97
|
i0.ɵɵelementEnd()();
|
|
97
98
|
} if (rf & 2) {
|
|
98
99
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -105,8 +106,14 @@ function EntityViewerComponent_Conditional_1_Conditional_3_Template(rf, ctx) { i
|
|
|
105
106
|
i0.ɵɵadvance();
|
|
106
107
|
i0.ɵɵclassProp("active", ctx_r1.effectiveViewMode === "map")("geo-hidden", !ctx_r1.HasGeoCoding);
|
|
107
108
|
} }
|
|
108
|
-
function
|
|
109
|
-
i0.ɵɵ
|
|
109
|
+
function EntityViewerComponent_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
+
i0.ɵɵelement(0, "mj-recycle-bin-chip", 17);
|
|
111
|
+
} if (rf & 2) {
|
|
112
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
113
|
+
i0.ɵɵproperty("EntityName", (ctx_r1.effectiveEntity == null ? null : ctx_r1.effectiveEntity.Name) ?? null);
|
|
114
|
+
} }
|
|
115
|
+
function EntityViewerComponent_Conditional_1_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "span", 34);
|
|
110
117
|
i0.ɵɵtext(1);
|
|
111
118
|
i0.ɵɵelementEnd();
|
|
112
119
|
} if (rf & 2) {
|
|
@@ -114,8 +121,8 @@ function EntityViewerComponent_Conditional_1_Conditional_4_Conditional_2_Templat
|
|
|
114
121
|
i0.ɵɵadvance();
|
|
115
122
|
i0.ɵɵtextInterpolate(ctx_r1.selectedDateFieldDisplayName);
|
|
116
123
|
} }
|
|
117
|
-
function
|
|
118
|
-
i0.ɵɵelementStart(0, "option",
|
|
124
|
+
function EntityViewerComponent_Conditional_1_Conditional_5_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
i0.ɵɵelementStart(0, "option", 40);
|
|
119
126
|
i0.ɵɵtext(1);
|
|
120
127
|
i0.ɵɵelementEnd();
|
|
121
128
|
} if (rf & 2) {
|
|
@@ -124,11 +131,11 @@ function EntityViewerComponent_Conditional_1_Conditional_4_Conditional_3_For_2_T
|
|
|
124
131
|
i0.ɵɵadvance();
|
|
125
132
|
i0.ɵɵtextInterpolate(field_r8.DisplayNameOrName);
|
|
126
133
|
} }
|
|
127
|
-
function
|
|
134
|
+
function EntityViewerComponent_Conditional_1_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
128
135
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
129
|
-
i0.ɵɵelementStart(0, "select",
|
|
130
|
-
i0.ɵɵlistener("change", function
|
|
131
|
-
i0.ɵɵrepeaterCreate(1,
|
|
136
|
+
i0.ɵɵelementStart(0, "select", 39);
|
|
137
|
+
i0.ɵɵlistener("change", function EntityViewerComponent_Conditional_1_Conditional_5_Conditional_3_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.setTimelineDateField($event.target.value)); });
|
|
138
|
+
i0.ɵɵrepeaterCreate(1, EntityViewerComponent_Conditional_1_Conditional_5_Conditional_3_For_2_Template, 2, 2, "option", 40, _forTrack0);
|
|
132
139
|
i0.ɵɵelementEnd();
|
|
133
140
|
} if (rf & 2) {
|
|
134
141
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -136,18 +143,18 @@ function EntityViewerComponent_Conditional_1_Conditional_4_Conditional_3_Templat
|
|
|
136
143
|
i0.ɵɵadvance();
|
|
137
144
|
i0.ɵɵrepeater(ctx_r1.availableDateFields);
|
|
138
145
|
} }
|
|
139
|
-
function
|
|
146
|
+
function EntityViewerComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
140
147
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
141
|
-
i0.ɵɵelementStart(0, "div",
|
|
142
|
-
i0.ɵɵelement(1, "i",
|
|
143
|
-
i0.ɵɵconditionalCreate(2,
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
149
|
+
i0.ɵɵelement(1, "i", 33);
|
|
150
|
+
i0.ɵɵconditionalCreate(2, EntityViewerComponent_Conditional_1_Conditional_5_Conditional_2_Template, 2, 1, "span", 34)(3, EntityViewerComponent_Conditional_1_Conditional_5_Conditional_3_Template, 3, 1, "select", 35);
|
|
144
151
|
i0.ɵɵelementEnd();
|
|
145
|
-
i0.ɵɵelementStart(4, "div",
|
|
146
|
-
i0.ɵɵlistener("click", function
|
|
152
|
+
i0.ɵɵelementStart(4, "div", 36)(5, "button", 37);
|
|
153
|
+
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_5_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleTimelineOrientation()); });
|
|
147
154
|
i0.ɵɵelement(6, "i");
|
|
148
155
|
i0.ɵɵelementEnd()();
|
|
149
|
-
i0.ɵɵelementStart(7, "div",
|
|
150
|
-
i0.ɵɵlistener("click", function
|
|
156
|
+
i0.ɵɵelementStart(7, "div", 38)(8, "button", 37);
|
|
157
|
+
i0.ɵɵlistener("click", function EntityViewerComponent_Conditional_1_Conditional_5_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleTimelineSortOrder()); });
|
|
151
158
|
i0.ɵɵelement(9, "i");
|
|
152
159
|
i0.ɵɵelementEnd()();
|
|
153
160
|
} if (rf & 2) {
|
|
@@ -168,7 +175,8 @@ function EntityViewerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
168
175
|
i0.ɵɵconditionalCreate(1, EntityViewerComponent_Conditional_1_Conditional_1_Template, 4, 3, "div", 14);
|
|
169
176
|
i0.ɵɵconditionalCreate(2, EntityViewerComponent_Conditional_1_Conditional_2_Template, 3, 1, "div", 15);
|
|
170
177
|
i0.ɵɵconditionalCreate(3, EntityViewerComponent_Conditional_1_Conditional_3_Template, 8, 9, "div", 16);
|
|
171
|
-
i0.ɵɵconditionalCreate(4, EntityViewerComponent_Conditional_1_Conditional_4_Template,
|
|
178
|
+
i0.ɵɵconditionalCreate(4, EntityViewerComponent_Conditional_1_Conditional_4_Template, 1, 1, "mj-recycle-bin-chip", 17);
|
|
179
|
+
i0.ɵɵconditionalCreate(5, EntityViewerComponent_Conditional_1_Conditional_5_Template, 10, 7);
|
|
172
180
|
i0.ɵɵelementEnd();
|
|
173
181
|
} if (rf & 2) {
|
|
174
182
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -179,11 +187,13 @@ function EntityViewerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
179
187
|
i0.ɵɵadvance();
|
|
180
188
|
i0.ɵɵconditional(ctx_r1.effectiveConfig.showViewModeToggle ? 3 : -1);
|
|
181
189
|
i0.ɵɵadvance();
|
|
182
|
-
i0.ɵɵconditional(ctx_r1.
|
|
190
|
+
i0.ɵɵconditional(ctx_r1.ShowRecycleBin ? 4 : -1);
|
|
191
|
+
i0.ɵɵadvance();
|
|
192
|
+
i0.ɵɵconditional(ctx_r1.effectiveViewMode === "timeline" && ctx_r1.hasDateFields ? 5 : -1);
|
|
183
193
|
} }
|
|
184
194
|
function EntityViewerComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
185
195
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
186
|
-
i0.ɵɵelementStart(0, "mj-map-view",
|
|
196
|
+
i0.ɵɵelementStart(0, "mj-map-view", 41);
|
|
187
197
|
i0.ɵɵlistener("MarkerClick", function EntityViewerComponent_Conditional_18_Template_mj_map_view_MarkerClick_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMapMarkerClick($event)); })("RenderModeChange", function EntityViewerComponent_Conditional_18_Template_mj_map_view_RenderModeChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMapRenderModeChange($event)); })("DisplayStateChange", function EntityViewerComponent_Conditional_18_Template_mj_map_view_DisplayStateChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMapDisplayStateChange($event)); });
|
|
188
198
|
i0.ɵɵelementEnd();
|
|
189
199
|
} if (rf & 2) {
|
|
@@ -464,6 +474,14 @@ export class EntityViewerComponent {
|
|
|
464
474
|
* @default false
|
|
465
475
|
*/
|
|
466
476
|
showAddToListButton = false;
|
|
477
|
+
/**
|
|
478
|
+
* Whether to render the Recycle Bin chip in the viewer header.
|
|
479
|
+
* The chip auto-hides itself when the entity has no deleted records,
|
|
480
|
+
* doesn't track changes, or the user lacks Delete permission — so it
|
|
481
|
+
* stays out of the way on entities where it's not relevant.
|
|
482
|
+
* @default true
|
|
483
|
+
*/
|
|
484
|
+
ShowRecycleBin = true;
|
|
467
485
|
// ========================================
|
|
468
486
|
// OUTPUTS
|
|
469
487
|
// ========================================
|
|
@@ -1723,9 +1741,9 @@ export class EntityViewerComponent {
|
|
|
1723
1741
|
} if (rf & 2) {
|
|
1724
1742
|
let _t;
|
|
1725
1743
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataGridRef = _t.first);
|
|
1726
|
-
} }, hostAttrs: [2, "display", "block", "height", "100%"], inputs: { entity: "entity", records: "records", config: "config", selectedRecordId: "selectedRecordId", viewMode: "viewMode", filterText: "filterText", sortState: "sortState", gridColumns: "gridColumns", cardTemplate: "cardTemplate", viewEntity: "viewEntity", gridState: "gridState", timelineConfig: "timelineConfig", showGridToolbar: "showGridToolbar", gridToolbarConfig: "gridToolbarConfig", gridSelectionMode: "gridSelectionMode", showAddToListButton: "showAddToListButton", mapDisplayState: "mapDisplayState", mapRenderMode: "mapRenderMode" }, outputs: { recordSelected: "recordSelected", recordOpened: "recordOpened", dataLoaded: "dataLoaded", viewModeChange: "viewModeChange", filterTextChange: "filterTextChange", filteredCountChanged: "filteredCountChanged", sortChanged: "sortChanged", gridStateChanged: "gridStateChanged", timelineConfigChange: "timelineConfigChange", addRequested: "addRequested", deleteRequested: "deleteRequested", refreshRequested: "refreshRequested", exportRequested: "exportRequested", addToListRequested: "addToListRequested", selectionChanged: "selectionChanged", mapDisplayStateChange: "mapDisplayStateChange", mapRenderModeChange: "mapRenderModeChange" }, standalone: false, decls: 19, vars: 42, consts: [[1, "entity-viewer-container"], [1, "viewer-header"], [1, "viewer-content"], [1, "loading-container", 3, "hidden"], ["size", "medium", 3, "text"], [1, "loading-overlay", 3, "hidden"], ["size", "small", 3, "text"], [1, "empty-state", 3, "hidden"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-inbox"], [3, "AfterRowClick", "AfterRowDoubleClick", "AfterSort", "GridStateChanged", "SelectionChange", "NewButtonClick", "RefreshButtonClick", "DeleteButtonClick", "ExportButtonClick", "AddToListRequested", "ForeignKeyClick", "PageChange", "hidden", "Data", "Params", "FilterText", "GridState", "Height", "ShowToolbar", "ToolbarConfig", "SelectionMode", "ShowAddToListButton", "AllowLoad", "ShowPager", "PageSize", "TotalRowCount", "PagerPageNumber"], [3, "recordSelected", "recordOpened", "hidden", "entity", "records", "selectedRecordId", "cardTemplate", "hiddenFieldMatches", "filterText"], [3, "afterEventClick", "hidden", "groups", "orientation", "layout", "sortOrder", "segmentGrouping", "segmentsCollapsible", "segmentsDefaultExpanded", "selectedEventId"], [3, "hidden", "Entity", "Records", "TotalRecordCount", "RenderMode", "DisplayState"], [1, "filter-container"], [1, "record-count"], [1, "view-mode-toggle"], [1, "fa-solid", "fa-search", "filter-icon"], ["type", "text", 1, "filter-input", 3, "input", "placeholder", "value"], ["title", "Clear filter", 1, "clear-filter-btn"], ["title", "Clear filter", 1, "clear-filter-btn", 3, "click"], [1, "fa-solid", "fa-times"], ["title", "Grid View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-list"], ["title", "Cards View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-grip"], ["title", "Timeline View", 1, "toggle-btn", 3, "active"], ["title", "Map View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-map-location-dot"], ["title", "Timeline View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-timeline"], [1, "timeline-date-selector"], [1, "fa-solid", "fa-calendar-days"], [1, "date-field-label"], [1, "date-field-select", 3, "value"], [1, "timeline-orientation-toggle"], [1, "toggle-btn", 3, "click", "title"], [1, "timeline-sort-toggle"], [1, "date-field-select", 3, "change", "value"], [3, "value"], [3, "MarkerClick", "RenderModeChange", "DisplayStateChange", "hidden", "Entity", "Records", "TotalRecordCount", "RenderMode", "DisplayState"]], template: function EntityViewerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1744
|
+
} }, hostAttrs: [2, "display", "block", "height", "100%"], inputs: { entity: "entity", records: "records", config: "config", selectedRecordId: "selectedRecordId", viewMode: "viewMode", filterText: "filterText", sortState: "sortState", gridColumns: "gridColumns", cardTemplate: "cardTemplate", viewEntity: "viewEntity", gridState: "gridState", timelineConfig: "timelineConfig", showGridToolbar: "showGridToolbar", gridToolbarConfig: "gridToolbarConfig", gridSelectionMode: "gridSelectionMode", showAddToListButton: "showAddToListButton", ShowRecycleBin: "ShowRecycleBin", mapDisplayState: "mapDisplayState", mapRenderMode: "mapRenderMode" }, outputs: { recordSelected: "recordSelected", recordOpened: "recordOpened", dataLoaded: "dataLoaded", viewModeChange: "viewModeChange", filterTextChange: "filterTextChange", filteredCountChanged: "filteredCountChanged", sortChanged: "sortChanged", gridStateChanged: "gridStateChanged", timelineConfigChange: "timelineConfigChange", addRequested: "addRequested", deleteRequested: "deleteRequested", refreshRequested: "refreshRequested", exportRequested: "exportRequested", addToListRequested: "addToListRequested", selectionChanged: "selectionChanged", mapDisplayStateChange: "mapDisplayStateChange", mapRenderModeChange: "mapRenderModeChange" }, standalone: false, decls: 19, vars: 42, consts: [[1, "entity-viewer-container"], [1, "viewer-header"], [1, "viewer-content"], [1, "loading-container", 3, "hidden"], ["size", "medium", 3, "text"], [1, "loading-overlay", 3, "hidden"], ["size", "small", 3, "text"], [1, "empty-state", 3, "hidden"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-inbox"], [3, "AfterRowClick", "AfterRowDoubleClick", "AfterSort", "GridStateChanged", "SelectionChange", "NewButtonClick", "RefreshButtonClick", "DeleteButtonClick", "ExportButtonClick", "AddToListRequested", "ForeignKeyClick", "PageChange", "hidden", "Data", "Params", "FilterText", "GridState", "Height", "ShowToolbar", "ToolbarConfig", "SelectionMode", "ShowAddToListButton", "AllowLoad", "ShowPager", "PageSize", "TotalRowCount", "PagerPageNumber"], [3, "recordSelected", "recordOpened", "hidden", "entity", "records", "selectedRecordId", "cardTemplate", "hiddenFieldMatches", "filterText"], [3, "afterEventClick", "hidden", "groups", "orientation", "layout", "sortOrder", "segmentGrouping", "segmentsCollapsible", "segmentsDefaultExpanded", "selectedEventId"], [3, "hidden", "Entity", "Records", "TotalRecordCount", "RenderMode", "DisplayState"], [1, "filter-container"], [1, "record-count"], [1, "view-mode-toggle"], [3, "EntityName"], [1, "fa-solid", "fa-search", "filter-icon"], ["type", "text", 1, "filter-input", 3, "input", "placeholder", "value"], ["title", "Clear filter", 1, "clear-filter-btn"], ["title", "Clear filter", 1, "clear-filter-btn", 3, "click"], [1, "fa-solid", "fa-times"], ["title", "Grid View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-list"], ["title", "Cards View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-grip"], ["title", "Timeline View", 1, "toggle-btn", 3, "active"], ["title", "Map View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-map-location-dot"], ["title", "Timeline View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-timeline"], [1, "timeline-date-selector"], [1, "fa-solid", "fa-calendar-days"], [1, "date-field-label"], [1, "date-field-select", 3, "value"], [1, "timeline-orientation-toggle"], [1, "toggle-btn", 3, "click", "title"], [1, "timeline-sort-toggle"], [1, "date-field-select", 3, "change", "value"], [3, "value"], [3, "MarkerClick", "RenderModeChange", "DisplayStateChange", "hidden", "Entity", "Records", "TotalRecordCount", "RenderMode", "DisplayState"]], template: function EntityViewerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1727
1745
|
i0.ɵɵelementStart(0, "div", 0);
|
|
1728
|
-
i0.ɵɵconditionalCreate(1, EntityViewerComponent_Conditional_1_Template,
|
|
1746
|
+
i0.ɵɵconditionalCreate(1, EntityViewerComponent_Conditional_1_Template, 6, 5, "div", 1);
|
|
1729
1747
|
i0.ɵɵelementStart(2, "div", 2)(3, "div", 3);
|
|
1730
1748
|
i0.ɵɵelement(4, "mj-loading", 4);
|
|
1731
1749
|
i0.ɵɵelementEnd();
|
|
@@ -1779,13 +1797,13 @@ export class EntityViewerComponent {
|
|
|
1779
1797
|
i0.ɵɵproperty("hidden", ctx.effectiveViewMode !== "timeline" || !ctx.hasDateFields)("groups", ctx.timelineGroups)("orientation", ctx.timelineOrientation)("layout", ctx.timelineOrientation === "vertical" ? "alternating" : "single")("sortOrder", ctx.timelineSortOrder)("segmentGrouping", ctx.timelineSegmentGrouping)("segmentsCollapsible", true)("segmentsDefaultExpanded", true)("selectedEventId", ctx.timelineSelectedEventId);
|
|
1780
1798
|
i0.ɵɵadvance();
|
|
1781
1799
|
i0.ɵɵconditional(ctx.HasGeoCoding ? 18 : -1);
|
|
1782
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.LoadingComponent, i3.TimelineComponent, i4.MapViewComponent, i5.EntityCardsComponent, i6.EntityDataGridComponent, i7.DecimalPipe], styles: [".entity-viewer-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n.viewer-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n\n\n.filter-container[_ngcontent-%COMP%] {\n flex: 1;\n max-width: 400px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.filter-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n pointer-events: none;\n}\n\n.filter-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.filter-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.filter-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.clear-filter-btn[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n\n\n.record-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n\n\n.view-mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n\n\n.timeline-date-selector[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-date-selector[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.date-field-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.date-field-select[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.date-field-select[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.date-field-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n\n\n.timeline-orientation-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n\n\n.viewer-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n position: relative;\n background: var(--mj-bg-surface);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 80%, transparent);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n\n.loading-container[hidden][_ngcontent-%COMP%], \n.loading-overlay[hidden][_ngcontent-%COMP%] {\n display: none !important;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\nmj-entity-cards[hidden][_ngcontent-%COMP%], \nmj-timeline[hidden][_ngcontent-%COMP%], \nmj-map-view[hidden][_ngcontent-%COMP%] {\n display: none !important;\n}\n\n\n\nmj-entity-cards[_ngcontent-%COMP%]:not([hidden]), \nmj-timeline[_ngcontent-%COMP%]:not([hidden]), \nmj-map-view[_ngcontent-%COMP%]:not([hidden]) {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n\n\n.toggle-btn.geo-hidden[_ngcontent-%COMP%] {\n display: none !important;\n}"] });
|
|
1800
|
+
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.LoadingComponent, i3.TimelineComponent, i4.MapViewComponent, i5.EntityCardsComponent, i6.EntityDataGridComponent, i7.RecycleBinChipComponent, i8.DecimalPipe], styles: [".entity-viewer-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n.viewer-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n\n\n.filter-container[_ngcontent-%COMP%] {\n flex: 1;\n max-width: 400px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.filter-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n pointer-events: none;\n}\n\n.filter-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.filter-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.filter-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.clear-filter-btn[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n\n\n.record-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n\n\n.view-mode-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n\n\n.timeline-date-selector[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-date-selector[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.date-field-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.date-field-select[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.date-field-select[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.date-field-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n\n\n.timeline-orientation-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n\n\n.viewer-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n position: relative;\n background: var(--mj-bg-surface);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 80%, transparent);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n\n.loading-container[hidden][_ngcontent-%COMP%], \n.loading-overlay[hidden][_ngcontent-%COMP%] {\n display: none !important;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n\n\nmj-entity-cards[hidden][_ngcontent-%COMP%], \nmj-timeline[hidden][_ngcontent-%COMP%], \nmj-map-view[hidden][_ngcontent-%COMP%] {\n display: none !important;\n}\n\n\n\nmj-entity-cards[_ngcontent-%COMP%]:not([hidden]), \nmj-timeline[_ngcontent-%COMP%]:not([hidden]), \nmj-map-view[_ngcontent-%COMP%]:not([hidden]) {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n\n\n.toggle-btn.geo-hidden[_ngcontent-%COMP%] {\n display: none !important;\n}"] });
|
|
1783
1801
|
}
|
|
1784
1802
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityViewerComponent, [{
|
|
1785
1803
|
type: Component,
|
|
1786
1804
|
args: [{ standalone: false, selector: 'mj-entity-viewer', host: {
|
|
1787
1805
|
'style': 'display: block; height: 100%;'
|
|
1788
|
-
}, template: "<div class=\"entity-viewer-container\" [style.height]=\"effectiveConfig.height\">\n <!-- Header -->\n @if (effectiveConfig.showFilter || effectiveConfig.showViewModeToggle || effectiveConfig.showRecordCount) {\n <div class=\"viewer-header\">\n <!-- Filter Input -->\n @if (effectiveConfig.showFilter) {\n <div class=\"filter-container\">\n <i class=\"fa-solid fa-search filter-icon\"></i>\n <input\n type=\"text\"\n class=\"filter-input\"\n [placeholder]=\"effectiveConfig.filterPlaceholder\"\n [value]=\"effectiveFilterText\"\n (input)=\"onFilterChange($any($event.target).value)\"\n />\n @if (effectiveFilterText) {\n <button class=\"clear-filter-btn\" (click)=\"clearFilter()\" title=\"Clear filter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n }\n\n <!-- Record Count -->\n @if (effectiveConfig.showRecordCount && effectiveEntity) {\n <div class=\"record-count\">\n @if (filteredRecordCount !== totalRecordCount) {\n <span>{{ filteredRecordCount | number }} of {{ totalRecordCount | number }} records</span>\n } @else {\n <span>{{ totalRecordCount | number }} records</span>\n }\n </div>\n }\n\n <!-- View Mode Toggle -->\n @if (effectiveConfig.showViewModeToggle) {\n <div class=\"view-mode-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'cards'\"\n (click)=\"setViewMode('cards')\"\n title=\"Cards View\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n @if (hasDateFields) {\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'timeline'\"\n (click)=\"setViewMode('timeline')\"\n title=\"Timeline View\">\n <i class=\"fa-solid fa-timeline\"></i>\n </button>\n }\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'map'\"\n [class.geo-hidden]=\"!HasGeoCoding\"\n (click)=\"setViewMode('map')\"\n title=\"Map View\">\n <i class=\"fa-solid fa-map-location-dot\"></i>\n </button>\n </div>\n }\n\n <!-- Timeline Controls (only shown when timeline is active) -->\n @if (effectiveViewMode === 'timeline' && hasDateFields) {\n <!-- Date Field Selector -->\n <div class=\"timeline-date-selector\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n @if (availableDateFields.length === 1) {\n <span class=\"date-field-label\">{{ selectedDateFieldDisplayName }}</span>\n } @else {\n <select\n class=\"date-field-select\"\n [value]=\"selectedTimelineDateField\"\n (change)=\"setTimelineDateField($any($event.target).value)\">\n @for (field of availableDateFields; track field.Name) {\n <option [value]=\"field.Name\">{{ field.DisplayNameOrName }}</option>\n }\n </select>\n }\n </div>\n\n <!-- Orientation Toggle -->\n <div class=\"timeline-orientation-toggle\">\n <button\n class=\"toggle-btn\"\n (click)=\"toggleTimelineOrientation()\"\n [title]=\"timelineOrientation === 'vertical' ? 'Switch to Horizontal' : 'Switch to Vertical'\">\n <i [class]=\"timelineOrientation === 'vertical' ? 'fa-solid fa-ellipsis-vertical' : 'fa-solid fa-ellipsis'\"></i>\n </button>\n </div>\n\n <!-- Sort Order Toggle -->\n <div class=\"timeline-sort-toggle\">\n <button\n class=\"toggle-btn\"\n (click)=\"toggleTimelineSortOrder()\"\n [title]=\"timelineSortOrder === 'desc' ? 'Showing Newest First (click for Oldest First)' : 'Showing Oldest First (click for Newest First)'\">\n <i [class]=\"timelineSortOrder === 'desc' ? 'fa-solid fa-arrow-down-wide-short' : 'fa-solid fa-arrow-up-wide-short'\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"viewer-content\">\n <!-- Loading container - full page when no data exists -->\n <div class=\"loading-container\" [hidden]=\"!(isLoading && filteredRecords.length === 0)\">\n <mj-loading [text]=\"loadingMessage\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Loading overlay - shown on top of content when loading with existing data -->\n <div class=\"loading-overlay\" [hidden]=\"!(isLoading && filteredRecords.length > 0)\">\n <mj-loading [text]=\"loadingMessage\" size=\"small\"></mj-loading>\n </div>\n\n <!-- Empty state: no entity selected -->\n <div class=\"empty-state\" [hidden]=\"!!effectiveEntity\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select an entity to view records</p>\n </div>\n\n <!-- Empty state: no records found -->\n <div class=\"empty-state\" [hidden]=\"!effectiveEntity || filteredRecords.length > 0 || isLoading\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>{{ debouncedFilterText ? 'No matching records' : 'No records found' }}</p>\n </div>\n\n <!-- Grid View - always rendered, visibility controlled by hidden -->\n <mj-entity-data-grid\n [hidden]=\"effectiveViewMode !== 'grid' || !effectiveEntity\"\n [Data]=\"filteredRecords\"\n [Params]=\"gridParams\"\n [FilterText]=\"debouncedFilterText\"\n [GridState]=\"gridState\"\n [Height]=\"'auto'\"\n [ShowToolbar]=\"showGridToolbar\"\n [ToolbarConfig]=\"effectiveGridToolbarConfig\"\n [SelectionMode]=\"gridSelectionMode\"\n [ShowAddToListButton]=\"showAddToListButton\"\n [AllowLoad]=\"false\"\n [ShowPager]=\"effectiveConfig.showPagination\"\n [PageSize]=\"effectiveConfig.pageSize\"\n [TotalRowCount]=\"pagination.totalRecords\"\n [PagerPageNumber]=\"pagination.currentPage + 1\"\n (AfterRowClick)=\"onDataGridRowClick($event)\"\n (AfterRowDoubleClick)=\"onDataGridRowDoubleClick($event)\"\n (AfterSort)=\"onDataGridSortChanged($event)\"\n (GridStateChanged)=\"onGridStateChanged($event)\"\n (SelectionChange)=\"onGridSelectionChange($event)\"\n (NewButtonClick)=\"onGridAddRequested()\"\n (RefreshButtonClick)=\"onGridRefreshRequested()\"\n (DeleteButtonClick)=\"onGridDeleteRequested($event)\"\n (ExportButtonClick)=\"onGridExportRequested()\"\n (AddToListRequested)=\"onGridAddToListRequested($event)\"\n (ForeignKeyClick)=\"onForeignKeyClick($event)\"\n (PageChange)=\"onGridPageChange($event)\">\n </mj-entity-data-grid>\n\n <!-- Cards View - always rendered, visibility controlled by hidden -->\n <mj-entity-cards\n [hidden]=\"effectiveViewMode !== 'cards' || !effectiveEntity\"\n [entity]=\"effectiveEntity\"\n [records]=\"filteredRecords\"\n [selectedRecordId]=\"selectedRecordId\"\n [cardTemplate]=\"cardTemplate\"\n [hiddenFieldMatches]=\"hiddenFieldMatches\"\n [filterText]=\"debouncedFilterText\"\n (recordSelected)=\"onRecordSelected($event)\"\n (recordOpened)=\"onRecordOpened($event)\">\n </mj-entity-cards>\n\n <!-- Timeline View - always rendered when date fields exist, visibility controlled by hidden -->\n <mj-timeline\n [hidden]=\"effectiveViewMode !== 'timeline' || !hasDateFields\"\n [groups]=\"timelineGroups\"\n [orientation]=\"timelineOrientation\"\n [layout]=\"timelineOrientation === 'vertical' ? 'alternating' : 'single'\"\n [sortOrder]=\"timelineSortOrder\"\n [segmentGrouping]=\"timelineSegmentGrouping\"\n [segmentsCollapsible]=\"true\"\n [segmentsDefaultExpanded]=\"true\"\n [selectedEventId]=\"timelineSelectedEventId\"\n (afterEventClick)=\"onTimelineEventClick($event)\">\n </mj-timeline>\n\n <!-- Map View - rendered when geocoding supported, visibility controlled by hidden -->\n @if (HasGeoCoding) {\n <mj-map-view\n [hidden]=\"effectiveViewMode !== 'map'\"\n [Entity]=\"effectiveEntity!\"\n [Records]=\"filteredRecords\"\n [TotalRecordCount]=\"totalRecordCount\"\n [RenderMode]=\"mapRenderMode\"\n [DisplayState]=\"mapDisplayState\"\n (MarkerClick)=\"onMapMarkerClick($event)\"\n (RenderModeChange)=\"onMapRenderModeChange($event)\"\n (DisplayStateChange)=\"onMapDisplayStateChange($event)\">\n </mj-map-view>\n }\n </div>\n\n</div>\n", styles: [".entity-viewer-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n\n/* Header */\n.viewer-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* Filter */\n.filter-container {\n flex: 1;\n max-width: 400px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.filter-icon {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n pointer-events: none;\n}\n\n.filter-input {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.filter-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.filter-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.clear-filter-btn {\n position: absolute;\n right: 8px;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n/* Record Count */\n.record-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n/* View Mode Toggle */\n.view-mode-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n.toggle-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.toggle-btn:hover {\n color: var(--mj-text-secondary);\n}\n\n.toggle-btn.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Timeline Date Field Selector */\n.timeline-date-selector {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-date-selector i {\n color: var(--mj-text-disabled);\n}\n\n.date-field-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.date-field-select {\n padding: 4px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.date-field-select:hover {\n border-color: var(--mj-border-strong);\n}\n\n.date-field-select:focus {\n border-color: var(--mj-brand-primary);\n}\n\n/* Timeline Orientation Toggle */\n.timeline-orientation-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n/* Content */\n.viewer-content {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n position: relative;\n background: var(--mj-bg-surface);\n}\n\n/* Loading State - full-page centered loading for initial load when no data exists */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n/* Loading overlay - semi-transparent overlay on top of existing content during refresh */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 80%, transparent);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Ensure [hidden] attribute works properly on loading elements */\n.loading-container[hidden],\n.loading-overlay[hidden] {\n display: none !important;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* Hidden components should not display - ensure [hidden] attribute works properly */\nmj-entity-cards[hidden],\nmj-timeline[hidden],\nmj-map-view[hidden] {\n display: none !important;\n}\n\n/* Visible view components should fill available space */\nmj-entity-cards:not([hidden]),\nmj-timeline:not([hidden]),\nmj-map-view:not([hidden]) {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n/* Hide map toggle when entity does not support geocoding */\n.toggle-btn.geo-hidden {\n display: none !important;\n}\n"] }]
|
|
1806
|
+
}, template: "<div class=\"entity-viewer-container\" [style.height]=\"effectiveConfig.height\">\n <!-- Header -->\n @if (effectiveConfig.showFilter || effectiveConfig.showViewModeToggle || effectiveConfig.showRecordCount) {\n <div class=\"viewer-header\">\n <!-- Filter Input -->\n @if (effectiveConfig.showFilter) {\n <div class=\"filter-container\">\n <i class=\"fa-solid fa-search filter-icon\"></i>\n <input\n type=\"text\"\n class=\"filter-input\"\n [placeholder]=\"effectiveConfig.filterPlaceholder\"\n [value]=\"effectiveFilterText\"\n (input)=\"onFilterChange($any($event.target).value)\"\n />\n @if (effectiveFilterText) {\n <button class=\"clear-filter-btn\" (click)=\"clearFilter()\" title=\"Clear filter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n }\n\n <!-- Record Count -->\n @if (effectiveConfig.showRecordCount && effectiveEntity) {\n <div class=\"record-count\">\n @if (filteredRecordCount !== totalRecordCount) {\n <span>{{ filteredRecordCount | number }} of {{ totalRecordCount | number }} records</span>\n } @else {\n <span>{{ totalRecordCount | number }} records</span>\n }\n </div>\n }\n\n <!-- View Mode Toggle -->\n @if (effectiveConfig.showViewModeToggle) {\n <div class=\"view-mode-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'cards'\"\n (click)=\"setViewMode('cards')\"\n title=\"Cards View\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n @if (hasDateFields) {\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'timeline'\"\n (click)=\"setViewMode('timeline')\"\n title=\"Timeline View\">\n <i class=\"fa-solid fa-timeline\"></i>\n </button>\n }\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'map'\"\n [class.geo-hidden]=\"!HasGeoCoding\"\n (click)=\"setViewMode('map')\"\n title=\"Map View\">\n <i class=\"fa-solid fa-map-location-dot\"></i>\n </button>\n </div>\n }\n\n <!-- Recycle Bin chip (auto-hides when entity has no deleted records, no tracking,\n or user lacks Delete permission) -->\n @if (ShowRecycleBin) {\n <mj-recycle-bin-chip [EntityName]=\"effectiveEntity?.Name ?? null\"></mj-recycle-bin-chip>\n }\n\n <!-- Timeline Controls (only shown when timeline is active) -->\n @if (effectiveViewMode === 'timeline' && hasDateFields) {\n <!-- Date Field Selector -->\n <div class=\"timeline-date-selector\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n @if (availableDateFields.length === 1) {\n <span class=\"date-field-label\">{{ selectedDateFieldDisplayName }}</span>\n } @else {\n <select\n class=\"date-field-select\"\n [value]=\"selectedTimelineDateField\"\n (change)=\"setTimelineDateField($any($event.target).value)\">\n @for (field of availableDateFields; track field.Name) {\n <option [value]=\"field.Name\">{{ field.DisplayNameOrName }}</option>\n }\n </select>\n }\n </div>\n\n <!-- Orientation Toggle -->\n <div class=\"timeline-orientation-toggle\">\n <button\n class=\"toggle-btn\"\n (click)=\"toggleTimelineOrientation()\"\n [title]=\"timelineOrientation === 'vertical' ? 'Switch to Horizontal' : 'Switch to Vertical'\">\n <i [class]=\"timelineOrientation === 'vertical' ? 'fa-solid fa-ellipsis-vertical' : 'fa-solid fa-ellipsis'\"></i>\n </button>\n </div>\n\n <!-- Sort Order Toggle -->\n <div class=\"timeline-sort-toggle\">\n <button\n class=\"toggle-btn\"\n (click)=\"toggleTimelineSortOrder()\"\n [title]=\"timelineSortOrder === 'desc' ? 'Showing Newest First (click for Oldest First)' : 'Showing Oldest First (click for Newest First)'\">\n <i [class]=\"timelineSortOrder === 'desc' ? 'fa-solid fa-arrow-down-wide-short' : 'fa-solid fa-arrow-up-wide-short'\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"viewer-content\">\n <!-- Loading container - full page when no data exists -->\n <div class=\"loading-container\" [hidden]=\"!(isLoading && filteredRecords.length === 0)\">\n <mj-loading [text]=\"loadingMessage\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Loading overlay - shown on top of content when loading with existing data -->\n <div class=\"loading-overlay\" [hidden]=\"!(isLoading && filteredRecords.length > 0)\">\n <mj-loading [text]=\"loadingMessage\" size=\"small\"></mj-loading>\n </div>\n\n <!-- Empty state: no entity selected -->\n <div class=\"empty-state\" [hidden]=\"!!effectiveEntity\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select an entity to view records</p>\n </div>\n\n <!-- Empty state: no records found -->\n <div class=\"empty-state\" [hidden]=\"!effectiveEntity || filteredRecords.length > 0 || isLoading\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>{{ debouncedFilterText ? 'No matching records' : 'No records found' }}</p>\n </div>\n\n <!-- Grid View - always rendered, visibility controlled by hidden -->\n <mj-entity-data-grid\n [hidden]=\"effectiveViewMode !== 'grid' || !effectiveEntity\"\n [Data]=\"filteredRecords\"\n [Params]=\"gridParams\"\n [FilterText]=\"debouncedFilterText\"\n [GridState]=\"gridState\"\n [Height]=\"'auto'\"\n [ShowToolbar]=\"showGridToolbar\"\n [ToolbarConfig]=\"effectiveGridToolbarConfig\"\n [SelectionMode]=\"gridSelectionMode\"\n [ShowAddToListButton]=\"showAddToListButton\"\n [AllowLoad]=\"false\"\n [ShowPager]=\"effectiveConfig.showPagination\"\n [PageSize]=\"effectiveConfig.pageSize\"\n [TotalRowCount]=\"pagination.totalRecords\"\n [PagerPageNumber]=\"pagination.currentPage + 1\"\n (AfterRowClick)=\"onDataGridRowClick($event)\"\n (AfterRowDoubleClick)=\"onDataGridRowDoubleClick($event)\"\n (AfterSort)=\"onDataGridSortChanged($event)\"\n (GridStateChanged)=\"onGridStateChanged($event)\"\n (SelectionChange)=\"onGridSelectionChange($event)\"\n (NewButtonClick)=\"onGridAddRequested()\"\n (RefreshButtonClick)=\"onGridRefreshRequested()\"\n (DeleteButtonClick)=\"onGridDeleteRequested($event)\"\n (ExportButtonClick)=\"onGridExportRequested()\"\n (AddToListRequested)=\"onGridAddToListRequested($event)\"\n (ForeignKeyClick)=\"onForeignKeyClick($event)\"\n (PageChange)=\"onGridPageChange($event)\">\n </mj-entity-data-grid>\n\n <!-- Cards View - always rendered, visibility controlled by hidden -->\n <mj-entity-cards\n [hidden]=\"effectiveViewMode !== 'cards' || !effectiveEntity\"\n [entity]=\"effectiveEntity\"\n [records]=\"filteredRecords\"\n [selectedRecordId]=\"selectedRecordId\"\n [cardTemplate]=\"cardTemplate\"\n [hiddenFieldMatches]=\"hiddenFieldMatches\"\n [filterText]=\"debouncedFilterText\"\n (recordSelected)=\"onRecordSelected($event)\"\n (recordOpened)=\"onRecordOpened($event)\">\n </mj-entity-cards>\n\n <!-- Timeline View - always rendered when date fields exist, visibility controlled by hidden -->\n <mj-timeline\n [hidden]=\"effectiveViewMode !== 'timeline' || !hasDateFields\"\n [groups]=\"timelineGroups\"\n [orientation]=\"timelineOrientation\"\n [layout]=\"timelineOrientation === 'vertical' ? 'alternating' : 'single'\"\n [sortOrder]=\"timelineSortOrder\"\n [segmentGrouping]=\"timelineSegmentGrouping\"\n [segmentsCollapsible]=\"true\"\n [segmentsDefaultExpanded]=\"true\"\n [selectedEventId]=\"timelineSelectedEventId\"\n (afterEventClick)=\"onTimelineEventClick($event)\">\n </mj-timeline>\n\n <!-- Map View - rendered when geocoding supported, visibility controlled by hidden -->\n @if (HasGeoCoding) {\n <mj-map-view\n [hidden]=\"effectiveViewMode !== 'map'\"\n [Entity]=\"effectiveEntity!\"\n [Records]=\"filteredRecords\"\n [TotalRecordCount]=\"totalRecordCount\"\n [RenderMode]=\"mapRenderMode\"\n [DisplayState]=\"mapDisplayState\"\n (MarkerClick)=\"onMapMarkerClick($event)\"\n (RenderModeChange)=\"onMapRenderModeChange($event)\"\n (DisplayStateChange)=\"onMapDisplayStateChange($event)\">\n </mj-map-view>\n }\n </div>\n\n</div>\n", styles: [".entity-viewer-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n\n/* Header */\n.viewer-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* Filter */\n.filter-container {\n flex: 1;\n max-width: 400px;\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.filter-icon {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n pointer-events: none;\n}\n\n.filter-input {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.filter-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.filter-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.clear-filter-btn {\n position: absolute;\n right: 8px;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.clear-filter-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n}\n\n/* Record Count */\n.record-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n\n/* View Mode Toggle */\n.view-mode-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n.toggle-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.toggle-btn:hover {\n color: var(--mj-text-secondary);\n}\n\n.toggle-btn.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Timeline Date Field Selector */\n.timeline-date-selector {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.timeline-date-selector i {\n color: var(--mj-text-disabled);\n}\n\n.date-field-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n.date-field-select {\n padding: 4px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.date-field-select:hover {\n border-color: var(--mj-border-strong);\n}\n\n.date-field-select:focus {\n border-color: var(--mj-brand-primary);\n}\n\n/* Timeline Orientation Toggle */\n.timeline-orientation-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n padding: 2px;\n}\n\n/* Content */\n.viewer-content {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n position: relative;\n background: var(--mj-bg-surface);\n}\n\n/* Loading State - full-page centered loading for initial load when no data exists */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n/* Loading overlay - semi-transparent overlay on top of existing content during refresh */\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface) 80%, transparent);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Ensure [hidden] attribute works properly on loading elements */\n.loading-container[hidden],\n.loading-overlay[hidden] {\n display: none !important;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* Hidden components should not display - ensure [hidden] attribute works properly */\nmj-entity-cards[hidden],\nmj-timeline[hidden],\nmj-map-view[hidden] {\n display: none !important;\n}\n\n/* Visible view components should fill available space */\nmj-entity-cards:not([hidden]),\nmj-timeline:not([hidden]),\nmj-map-view:not([hidden]) {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n/* Hide map toggle when entity does not support geocoding */\n.toggle-btn.geo-hidden {\n display: none !important;\n}\n"] }]
|
|
1789
1807
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], { entity: [{
|
|
1790
1808
|
type: Input
|
|
1791
1809
|
}], records: [{
|
|
@@ -1818,6 +1836,8 @@ export class EntityViewerComponent {
|
|
|
1818
1836
|
type: Input
|
|
1819
1837
|
}], showAddToListButton: [{
|
|
1820
1838
|
type: Input
|
|
1839
|
+
}], ShowRecycleBin: [{
|
|
1840
|
+
type: Input
|
|
1821
1841
|
}], recordSelected: [{
|
|
1822
1842
|
type: Output
|
|
1823
1843
|
}], recordOpened: [{
|