@mmlogic/components 0.3.0 → 0.3.2
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/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mosterdcomponents.cjs.js +1 -1
- package/dist/cjs/mrd-boolean-field_19.cjs.entry.js +103 -33
- package/dist/collection/components/mrd-layout-section/mrd-layout-section.js +12 -7
- package/dist/collection/components/mrd-table/mrd-table.js +111 -36
- package/dist/collection/dev/app.js +2 -9
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/components/mrd-table2.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mosterdcomponents.js +1 -1
- package/dist/esm/mrd-boolean-field_19.entry.js +103 -33
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-2a099635.entry.js +1 -0
- package/dist/types/components/mrd-layout-section/mrd-layout-section.d.ts +3 -4
- package/dist/types/components/mrd-table/mrd-table.d.ts +18 -5
- package/dist/types/components.d.ts +9 -9
- package/dist/types/types/client-layout.d.ts +4 -2
- package/package.json +1 -1
- package/dist/mosterdcomponents/p-f6d0f02b.entry.js +0 -1
|
@@ -65,10 +65,16 @@ export class MrdTable {
|
|
|
65
65
|
this.jsonModal = null;
|
|
66
66
|
/** Aggregation totals received from the host via setAggregations(). Null = not yet loaded. */
|
|
67
67
|
this.aggregations = null;
|
|
68
|
+
/** Record count received via setAggregations().total; overrides totalElements for display. */
|
|
69
|
+
this.aggregationsTotal = null;
|
|
70
|
+
/** True when a fresh aggregations request is needed (set on init / filter change). */
|
|
71
|
+
this.aggregationsPending = false;
|
|
72
|
+
/** Lower bound on total derived from setPage() hasNext info; grows as pages load. */
|
|
73
|
+
this.minKnownTotal = 0;
|
|
68
74
|
this.handleScroll = (e) => {
|
|
69
75
|
const scroller = e.currentTarget;
|
|
70
76
|
const scrollTop = scroller.scrollTop;
|
|
71
|
-
const total = this.
|
|
77
|
+
const total = this.baseTotal;
|
|
72
78
|
const visStart = Math.floor(scrollTop / this.rowHeight);
|
|
73
79
|
const visEnd = Math.min(visStart + this.visibleCount(), total - 1);
|
|
74
80
|
this.scrollTop = scrollTop;
|
|
@@ -130,7 +136,9 @@ export class MrdTable {
|
|
|
130
136
|
if (scroller)
|
|
131
137
|
scroller.scrollTop = 0;
|
|
132
138
|
this.aggregations = null;
|
|
133
|
-
this.
|
|
139
|
+
this.aggregationsTotal = null;
|
|
140
|
+
this.aggregationsPending = true;
|
|
141
|
+
this.minKnownTotal = 0;
|
|
134
142
|
// Always request page 0 — totalElements may be unknown (0) on first load.
|
|
135
143
|
this.mrdLoadPage.emit({ page: 0, sort: this.sortParam(), path: this.buildDataPath(), qs: this.buildQueryParams(0) });
|
|
136
144
|
this.requestedPages = new Set([0]);
|
|
@@ -142,20 +150,41 @@ export class MrdTable {
|
|
|
142
150
|
* When the page contains fewer rows than pageSize it is the last page.
|
|
143
151
|
* renderEnd is clamped immediately so no loading-placeholder rows appear
|
|
144
152
|
* beyond the actual data — without requiring the host to update totalElements.
|
|
153
|
+
*
|
|
154
|
+
* Pass hasNext (from _links.next in the API response) for accurate last-page
|
|
155
|
+
* detection even when rows.length === pageSize (exact multiple of page size).
|
|
145
156
|
*/
|
|
146
|
-
async setPage(pageNumber, rows) {
|
|
147
|
-
|
|
157
|
+
async setPage(pageNumber, rows, hasNext) {
|
|
158
|
+
const isLastPage = hasNext !== undefined ? !hasNext : rows.length < this.pageSize;
|
|
159
|
+
if (isLastPage) {
|
|
148
160
|
// lastRowIdx is -1 when the page is empty; clamp renderEnd to -1 so the
|
|
149
161
|
// render loop does not execute and no shimmer rows appear.
|
|
150
162
|
const lastRowIdx = pageNumber * this.pageSize + rows.length - 1;
|
|
151
163
|
this.renderEnd = Math.min(this.renderEnd, lastRowIdx);
|
|
164
|
+
// Exact total is known: update minKnownTotal so the scroll container has the right height.
|
|
165
|
+
this.minKnownTotal = pageNumber * this.pageSize + rows.length;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// There is at least one more page — ensure the scrollbar covers at least that next page.
|
|
169
|
+
this.minKnownTotal = Math.max(this.minKnownTotal, (pageNumber + 1) * this.pageSize + 1);
|
|
152
170
|
}
|
|
153
171
|
const next = new Map(this.loadedPages);
|
|
154
172
|
next.set(pageNumber, rows);
|
|
155
173
|
this.loadedPages = next;
|
|
174
|
+
if (pageNumber === 0 && this.aggregationsPending) {
|
|
175
|
+
this.aggregationsPending = false;
|
|
176
|
+
const hasAggColumns = this.columns.some(c => c.type === 'FIELD' && c.aggregate);
|
|
177
|
+
if (!isLastPage || hasAggColumns) {
|
|
178
|
+
this.emitLoadAggregations();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
156
181
|
}
|
|
157
182
|
/** Inject aggregation totals returned by the /aggregations endpoint. */
|
|
158
183
|
async setAggregations(data) {
|
|
184
|
+
var _a;
|
|
185
|
+
const total = (_a = data.total) !== null && _a !== void 0 ? _a : (typeof data.count === 'number' ? data.count : undefined);
|
|
186
|
+
if (total != null)
|
|
187
|
+
this.aggregationsTotal = total;
|
|
159
188
|
this.aggregations = data;
|
|
160
189
|
}
|
|
161
190
|
// ── Lifecycle ──────────────────────────────────────────────────────────────
|
|
@@ -337,6 +366,25 @@ export class MrdTable {
|
|
|
337
366
|
return 'RELATION';
|
|
338
367
|
return (_a = col.dataType) !== null && _a !== void 0 ? _a : 'TEXT';
|
|
339
368
|
}
|
|
369
|
+
/** True when we have a reliable total: either from the aggregations response or because
|
|
370
|
+
* a short page told us it was the last page (exact count from row length). */
|
|
371
|
+
isTotalKnown() {
|
|
372
|
+
if (this.aggregationsTotal != null)
|
|
373
|
+
return true;
|
|
374
|
+
for (const rows of this.loadedPages.values()) {
|
|
375
|
+
if (rows.length < this.pageSize)
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
/** Effective total: aggregations-response > totalElements prop > minKnownTotal from setPage(). */
|
|
381
|
+
get baseTotal() {
|
|
382
|
+
if (this.aggregationsTotal != null)
|
|
383
|
+
return this.aggregationsTotal;
|
|
384
|
+
if (this.totalElements > 0)
|
|
385
|
+
return this.totalElements;
|
|
386
|
+
return this.minKnownTotal;
|
|
387
|
+
}
|
|
340
388
|
// ── Aggregation helpers ────────────────────────────────────────────────────
|
|
341
389
|
buildAggregationParams() {
|
|
342
390
|
var _a;
|
|
@@ -357,17 +405,32 @@ export class MrdTable {
|
|
|
357
405
|
params.count = groups.count;
|
|
358
406
|
return Object.keys(params).length > 0 ? params : null;
|
|
359
407
|
}
|
|
408
|
+
buildAggregationQs() {
|
|
409
|
+
var _a, _b, _c;
|
|
410
|
+
const p = new URLSearchParams(this.buildQueryParams(0));
|
|
411
|
+
p.delete('page');
|
|
412
|
+
p.delete('sort');
|
|
413
|
+
const groups = this.buildAggregationParams();
|
|
414
|
+
if ((_a = groups === null || groups === void 0 ? void 0 : groups.sum) === null || _a === void 0 ? void 0 : _a.length)
|
|
415
|
+
p.set('sum', groups.sum.join(','));
|
|
416
|
+
if ((_b = groups === null || groups === void 0 ? void 0 : groups.avg) === null || _b === void 0 ? void 0 : _b.length)
|
|
417
|
+
p.set('avg', groups.avg.join(','));
|
|
418
|
+
if ((_c = groups === null || groups === void 0 ? void 0 : groups.count) === null || _c === void 0 ? void 0 : _c.length)
|
|
419
|
+
p.set('count', groups.count.join(','));
|
|
420
|
+
return p.toString();
|
|
421
|
+
}
|
|
360
422
|
emitLoadAggregations() {
|
|
361
|
-
|
|
362
|
-
if (aggParams)
|
|
363
|
-
this.mrdLoadAggregations.emit(Object.assign(Object.assign({}, aggParams), { path: this.buildDataPath(), qs: this.buildQueryParams(0) }));
|
|
423
|
+
this.mrdLoadAggregations.emit({ path: this.buildDataPath(), qs: this.buildQueryParams(0), aggQs: this.buildAggregationQs() });
|
|
364
424
|
}
|
|
365
425
|
renderAggregationValue(col) {
|
|
366
|
-
var _a
|
|
426
|
+
var _a;
|
|
367
427
|
if (col.type !== 'FIELD' || !col.aggregate || !this.aggregations)
|
|
368
428
|
return '';
|
|
369
429
|
const fn = col.aggregate.toLowerCase();
|
|
370
|
-
const
|
|
430
|
+
const aggData = this.aggregations[fn];
|
|
431
|
+
const val = typeof aggData === 'object' && aggData !== null
|
|
432
|
+
? aggData[(_a = col.name) !== null && _a !== void 0 ? _a : '']
|
|
433
|
+
: undefined;
|
|
371
434
|
if (val == null)
|
|
372
435
|
return '';
|
|
373
436
|
const dt = col.dataType;
|
|
@@ -392,9 +455,10 @@ export class MrdTable {
|
|
|
392
455
|
this.colWidths = [];
|
|
393
456
|
this.scrollTop = 0;
|
|
394
457
|
this.renderStart = 0;
|
|
395
|
-
|
|
396
|
-
//
|
|
397
|
-
|
|
458
|
+
this.minKnownTotal = 0;
|
|
459
|
+
// Mirror init(): use visibleCount so the first page is always requested.
|
|
460
|
+
// setPage() will clamp renderEnd down when the last page is shorter.
|
|
461
|
+
this.renderEnd = this.visibleCount() - 1;
|
|
398
462
|
const scroller = this.el.querySelector('.mrd-table__scroll');
|
|
399
463
|
if (scroller)
|
|
400
464
|
scroller.scrollTop = 0;
|
|
@@ -660,8 +724,9 @@ export class MrdTable {
|
|
|
660
724
|
this.activeFilters = next;
|
|
661
725
|
this.closeFilterPopup();
|
|
662
726
|
this.aggregations = null;
|
|
663
|
-
this.
|
|
664
|
-
|
|
727
|
+
this.aggregationsTotal = null;
|
|
728
|
+
this.aggregationsPending = true;
|
|
729
|
+
if (this.totalElements > 0 || this.minKnownTotal > 0) {
|
|
665
730
|
this.resetPages();
|
|
666
731
|
this.emitPagesForWindow(this.renderStart, this.renderEnd);
|
|
667
732
|
}
|
|
@@ -674,8 +739,9 @@ export class MrdTable {
|
|
|
674
739
|
this.activeFilters = next;
|
|
675
740
|
this.closeFilterPopup();
|
|
676
741
|
this.aggregations = null;
|
|
677
|
-
this.
|
|
678
|
-
|
|
742
|
+
this.aggregationsTotal = null;
|
|
743
|
+
this.aggregationsPending = true;
|
|
744
|
+
if (this.totalElements > 0 || this.minKnownTotal > 0) {
|
|
679
745
|
this.resetPages();
|
|
680
746
|
this.emitPagesForWindow(this.renderStart, this.renderEnd);
|
|
681
747
|
}
|
|
@@ -683,8 +749,9 @@ export class MrdTable {
|
|
|
683
749
|
clearAllFilters() {
|
|
684
750
|
this.activeFilters = new Map();
|
|
685
751
|
this.aggregations = null;
|
|
686
|
-
this.
|
|
687
|
-
|
|
752
|
+
this.aggregationsTotal = null;
|
|
753
|
+
this.aggregationsPending = true;
|
|
754
|
+
if (this.totalElements > 0 || this.minKnownTotal > 0) {
|
|
688
755
|
this.resetPages();
|
|
689
756
|
this.emitPagesForWindow(this.renderStart, this.renderEnd);
|
|
690
757
|
}
|
|
@@ -807,10 +874,9 @@ export class MrdTable {
|
|
|
807
874
|
return (h("div", { class: "mrd-table__filter-popup", style: { top: `${this.popupPos.top}px`, left: `${this.popupPos.left}px` }, onClick: (e) => e.stopPropagation() }, h("div", { class: "mrd-table__filter-popup-header" }, h("span", { class: "mrd-table__filter-popup-title" }, label), h("button", { class: "mrd-table__filter-close", onClick: () => this.closeFilterPopup() }, "\u2715")), h("div", { class: "mrd-table__filter-section" }, h("div", { class: "mrd-table__filter-section-label" }, t('filter_sorting', this.locale)), h("div", { class: "mrd-table__filter-sort-buttons" }, h("button", { class: `mrd-table__filter-sort-btn${sortActive && this.sortDir === 'asc' ? ' mrd-table__filter-sort-btn--active' : ''}`, onClick: () => this.applySort(col, 'asc') }, "\u25B2 ", t('filter_ascending', this.locale)), h("button", { class: `mrd-table__filter-sort-btn${sortActive && this.sortDir === 'desc' ? ' mrd-table__filter-sort-btn--active' : ''}`, onClick: () => this.applySort(col, 'desc') }, "\u25BC ", t('filter_descending', this.locale)))), h("div", { class: "mrd-table__filter-divider" }), h("div", { class: "mrd-table__filter-section" }, h("div", { class: "mrd-table__filter-section-label" }, t('filter_section', this.locale)), this.renderFilterEditor(col)), h("div", { class: "mrd-table__filter-popup-footer" }, h("button", { class: "mrd-table__filter-btn mrd-table__filter-btn--clear", onClick: () => this.clearFilter() }, t('filter_clear', this.locale)), h("button", { class: "mrd-table__filter-btn mrd-table__filter-btn--apply", onClick: () => this.applyFilter() }, t('filter_apply', this.locale)))));
|
|
808
875
|
}
|
|
809
876
|
// ── Render: footer ────────────────────────────────────────────────────────
|
|
810
|
-
renderFooter(rowCount, effectiveTotal) {
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
if (total === 0) {
|
|
877
|
+
renderFooter(rowCount, effectiveTotal, isTotalKnown = true) {
|
|
878
|
+
// Non-paginated mode: totalElements=0 and no paginated data loaded yet
|
|
879
|
+
if (this.totalElements === 0 && this.loadedPages.size === 0) {
|
|
814
880
|
const count = rowCount !== null && rowCount !== void 0 ? rowCount : 0;
|
|
815
881
|
if (count === 0)
|
|
816
882
|
return null;
|
|
@@ -819,13 +885,14 @@ export class MrdTable {
|
|
|
819
885
|
// Paginated mode: only show once page 0 has loaded (avoids stale total during filter reset)
|
|
820
886
|
if (!this.loadedPages.has(0))
|
|
821
887
|
return null;
|
|
822
|
-
//
|
|
823
|
-
|
|
824
|
-
const displayTotal = effectiveTotal !== null && effectiveTotal !== void 0 ? effectiveTotal : total;
|
|
888
|
+
// effectiveTotal from render(); fall back to baseTotal when not provided.
|
|
889
|
+
const displayTotal = effectiveTotal !== null && effectiveTotal !== void 0 ? effectiveTotal : this.baseTotal;
|
|
825
890
|
// Compute from/to independently so partial rows at top/bottom are included.
|
|
826
891
|
const from = Math.min(Math.floor(this.scrollTop / this.rowHeight) + 1, displayTotal);
|
|
827
892
|
const to = Math.min(Math.ceil((this.scrollTop + this.tableHeight) / this.rowHeight), displayTotal);
|
|
828
|
-
|
|
893
|
+
// Show '…' for the total until we have a reliable count (aggregations or last page loaded).
|
|
894
|
+
const totalLabel = isTotalKnown ? String(displayTotal) : '…';
|
|
895
|
+
return (h("div", { class: "mrd-table__footer" }, from, "\u2013", to, " ", t('table_of', this.locale), " ", totalLabel));
|
|
829
896
|
}
|
|
830
897
|
// ── Render: cell ──────────────────────────────────────────────────────────
|
|
831
898
|
renderCell(col, row) {
|
|
@@ -884,7 +951,9 @@ export class MrdTable {
|
|
|
884
951
|
if (!((_a = this.columns) === null || _a === void 0 ? void 0 : _a.length))
|
|
885
952
|
return null;
|
|
886
953
|
// ── Non-paginated mode ──────────────────────────────────────────────────
|
|
887
|
-
|
|
954
|
+
// Only enter non-paginated mode when totalElements is 0 AND no paginated data
|
|
955
|
+
// has been loaded yet — prevents the wrong branch when the host omits totalElements.
|
|
956
|
+
if (this.totalElements === 0 && this.loadedPages.size === 0) {
|
|
888
957
|
return (h(Host, null, this.renderToolbar(), h("div", { class: "mrd-table" }, h("table", { class: "mrd-table__table" }, h("thead", null, h("tr", null, this.columns.map(col => {
|
|
889
958
|
var _a;
|
|
890
959
|
const name = this.colName(col);
|
|
@@ -901,8 +970,8 @@ export class MrdTable {
|
|
|
901
970
|
// Derive the authoritative row count from loaded pages:
|
|
902
971
|
// if any loaded page is shorter than pageSize it is the last page,
|
|
903
972
|
// so the true total cannot exceed (pageNum * pageSize + pageRows.length).
|
|
904
|
-
//
|
|
905
|
-
let effectiveTotal = this.
|
|
973
|
+
// aggregationsTotal (from setAggregations) takes priority over the totalElements prop.
|
|
974
|
+
let effectiveTotal = this.baseTotal;
|
|
906
975
|
for (const [pageNum, pageRows] of this.loadedPages) {
|
|
907
976
|
if (pageRows.length < this.pageSize) {
|
|
908
977
|
effectiveTotal = Math.min(effectiveTotal, pageNum * this.pageSize + pageRows.length);
|
|
@@ -939,7 +1008,7 @@ export class MrdTable {
|
|
|
939
1008
|
isFiltered ? 'mrd-table__header--filtered' : '',
|
|
940
1009
|
].filter(Boolean).join(' ');
|
|
941
1010
|
return (h("th", { class: cls, style: this.colWidths[idx] ? { width: `${this.colWidths[idx]}px` } : undefined, onClick: isInteractive ? ((e) => this.filterMode ? this.handleFilterOpen(col, e) : this.handleSortClick(col)) : undefined }, h("span", { class: "mrd-table__header-label" }, (_a = col.label) !== null && _a !== void 0 ? _a : ''), isInteractive && isActive && (h("span", { class: "mrd-table__sort-icon", "aria-hidden": "true" }, this.sortDir === 'asc' ? '▲' : '▼')), isInteractive && !isActive && !this.filterMode && (h("span", { class: "mrd-table__sort-icon", "aria-hidden": "true" }, "\u21C5")), isInteractive && isFiltered && this.renderFilterIcon()));
|
|
942
|
-
}))), h("tbody", null, topSpacerHeight > 0 && (h("tr", { class: "mrd-table__spacer", style: { height: `${topSpacerHeight}px` } }, h("td", { colSpan: colCount }))), renderedRows, bottomSpacerHeight > 0 && (h("tr", { class: "mrd-table__spacer", style: { height: `${bottomSpacerHeight}px` } }, h("td", { colSpan: colCount })))), this.renderTotalsRow())), effectiveTotal === 0 && this.loadedPages.has(0) && (h("p", { class: "mrd-table__empty" }, t('no_results', this.locale))), effectiveTotal > 0 && this.renderFooter(undefined, effectiveTotal), this.renderFilterPopup(), this.renderTextblockModal()));
|
|
1011
|
+
}))), h("tbody", null, topSpacerHeight > 0 && (h("tr", { class: "mrd-table__spacer", style: { height: `${topSpacerHeight}px` } }, h("td", { colSpan: colCount }))), renderedRows, bottomSpacerHeight > 0 && (h("tr", { class: "mrd-table__spacer", style: { height: `${bottomSpacerHeight}px` } }, h("td", { colSpan: colCount })))), this.renderTotalsRow())), effectiveTotal === 0 && this.loadedPages.has(0) && (h("p", { class: "mrd-table__empty" }, t('no_results', this.locale))), effectiveTotal > 0 && this.renderFooter(undefined, effectiveTotal, this.isTotalKnown()), this.renderFilterPopup(), this.renderTextblockModal()));
|
|
943
1012
|
}
|
|
944
1013
|
renderFilterIcon() {
|
|
945
1014
|
return (h("span", { class: "mrd-table__filter-icon", "aria-hidden": "true" }, h("svg", { viewBox: "0 0 24 24", width: "14", height: "14", fill: "currentColor" }, h("path", { d: "M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z" }))));
|
|
@@ -1156,7 +1225,9 @@ export class MrdTable {
|
|
|
1156
1225
|
"scrollTop": {},
|
|
1157
1226
|
"textblockModal": {},
|
|
1158
1227
|
"jsonModal": {},
|
|
1159
|
-
"aggregations": {}
|
|
1228
|
+
"aggregations": {},
|
|
1229
|
+
"aggregationsTotal": {},
|
|
1230
|
+
"minKnownTotal": {}
|
|
1160
1231
|
};
|
|
1161
1232
|
}
|
|
1162
1233
|
static get events() {
|
|
@@ -1233,11 +1304,11 @@ export class MrdTable {
|
|
|
1233
1304
|
"composed": true,
|
|
1234
1305
|
"docs": {
|
|
1235
1306
|
"tags": [],
|
|
1236
|
-
"text": "Fired when aggregation totals need to be (re-)fetched.\
|
|
1307
|
+
"text": "Fired when aggregation totals need to be (re-)fetched.\n`aggQs` is a ready-to-use query string: active filters (no page/sort) + sum/avg/count params.\nHost calls the /aggregations endpoint and passes the result to setAggregations()."
|
|
1237
1308
|
},
|
|
1238
1309
|
"complexType": {
|
|
1239
|
-
"original": "{
|
|
1240
|
-
"resolved": "{
|
|
1310
|
+
"original": "{ path: string; qs: string; aggQs: string }",
|
|
1311
|
+
"resolved": "{ path: string; qs: string; aggQs: string; }",
|
|
1241
1312
|
"references": {}
|
|
1242
1313
|
}
|
|
1243
1314
|
}];
|
|
@@ -1267,7 +1338,7 @@ export class MrdTable {
|
|
|
1267
1338
|
},
|
|
1268
1339
|
"setPage": {
|
|
1269
1340
|
"complexType": {
|
|
1270
|
-
"signature": "(pageNumber: number, rows: Record<string, any>[]) => Promise<void>",
|
|
1341
|
+
"signature": "(pageNumber: number, rows: Record<string, any>[], hasNext?: boolean) => Promise<void>",
|
|
1271
1342
|
"parameters": [{
|
|
1272
1343
|
"name": "pageNumber",
|
|
1273
1344
|
"type": "number",
|
|
@@ -1276,6 +1347,10 @@ export class MrdTable {
|
|
|
1276
1347
|
"name": "rows",
|
|
1277
1348
|
"type": "Record<string, any>[]",
|
|
1278
1349
|
"docs": ""
|
|
1350
|
+
}, {
|
|
1351
|
+
"name": "hasNext",
|
|
1352
|
+
"type": "boolean | undefined",
|
|
1353
|
+
"docs": ""
|
|
1279
1354
|
}],
|
|
1280
1355
|
"references": {
|
|
1281
1356
|
"Promise": {
|
|
@@ -1290,7 +1365,7 @@ export class MrdTable {
|
|
|
1290
1365
|
"return": "Promise<void>"
|
|
1291
1366
|
},
|
|
1292
1367
|
"docs": {
|
|
1293
|
-
"text": "Inject the rows for a given page (0-based).\nCreates a new Map reference so Stencil detects the state change.\n\nWhen the page contains fewer rows than pageSize it is the last page.\nrenderEnd is clamped immediately so no loading-placeholder rows appear\nbeyond the actual data \u2014 without requiring the host to update totalElements.",
|
|
1368
|
+
"text": "Inject the rows for a given page (0-based).\nCreates a new Map reference so Stencil detects the state change.\n\nWhen the page contains fewer rows than pageSize it is the last page.\nrenderEnd is clamped immediately so no loading-placeholder rows appear\nbeyond the actual data \u2014 without requiring the host to update totalElements.\n\nPass hasNext (from _links.next in the API response) for accurate last-page\ndetection even when rows.length === pageSize (exact multiple of page size).",
|
|
1294
1369
|
"tags": []
|
|
1295
1370
|
}
|
|
1296
1371
|
},
|
|
@@ -379,18 +379,11 @@ function renderSection(index) {
|
|
|
379
379
|
|
|
380
380
|
section.addEventListener('mrdLoadViewAggregations', async (e) => {
|
|
381
381
|
if (generation !== _sectionGeneration) return;
|
|
382
|
-
const { name, path,
|
|
382
|
+
const { name, path, aggQs } = e.detail;
|
|
383
383
|
logEvent('mrdLoadViewAggregations', e.detail);
|
|
384
384
|
try {
|
|
385
385
|
const aggUrl = `${_baseHref}${path}/aggregations`;
|
|
386
|
-
const
|
|
387
|
-
p.delete('page');
|
|
388
|
-
p.delete('sort');
|
|
389
|
-
if (sum?.length) p.set('sum', sum.join(','));
|
|
390
|
-
if (avg?.length) p.set('avg', avg.join(','));
|
|
391
|
-
if (count?.length) p.set('count', count.join(','));
|
|
392
|
-
const qs = p.toString();
|
|
393
|
-
const result = await apiRequest('GET', qs ? `${aggUrl}?${qs}` : aggUrl, authGetToken());
|
|
386
|
+
const result = await apiRequest('GET', aggQs ? `${aggUrl}?${aggQs}` : aggUrl, authGetToken());
|
|
394
387
|
if (result.ok) await section.setViewAggregations(name, result.body);
|
|
395
388
|
} catch (err) {
|
|
396
389
|
console.error('[mrdLoadViewAggregations] mislukt', name, err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as r,HTMLElement as t,createEvent as o,h as e,Host as a,transformTag as i}from"@stencil/core/internal/client";import{a as s,b as l}from"./client-layout.js";import{C as n,d}from"./mrd-table2.js";import{t as c}from"./i18n.js";const m=r(class extends t{constructor(r){super(),!1!==r&&this.__registerHost(),this.mrdNavigate=o(this,"mrdNavigate",7),this.mrdSearch=o(this,"mrdSearch",7),this.mrdDownload=o(this,"mrdDownload",7),this.mrdLoadViewPage=o(this,"mrdLoadViewPage",7),this.mrdLoadImage=o(this,"mrdLoadImage",7),this.mrdViewAction=o(this,"mrdViewAction",7),this.mrdLoadViewAggregations=o(this,"mrdLoadViewAggregations",7),this.items=[],this.data={},this.views={},this.links={},this.locale=navigator.language,this.searchQueryMap={},this.searchResultsMap={},this.imagePreviewUrl=null,this.imagePreviews={},this.searchTimers={},this.handleViewLoadPage=(r,t)=>{r.stopPropagation(),this.mrdLoadViewPage.emit({name:t,page:r.detail.page,sort:r.detail.sort,path:r.detail.path,qs:r.detail.qs})},this.handleSearchInput=(r,t)=>{this.searchQueryMap=Object.assign(Object.assign({},this.searchQueryMap),{[r]:t}),this.searchTimers[r]&&clearTimeout(this.searchTimers[r]),t.length<2?this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[r]:[]}):this.searchTimers[r]=setTimeout((()=>{this.mrdSearch.emit({query:t,dataClass:r})}),300)}}componentDidLoad(){setTimeout((()=>{this.initEmbeddedTables(),this.emitLoadImages()}),0)}dataChanged(r){r&&Object.keys(r).length>0&&setTimeout((()=>this.initEmbeddedTables()),0)}async initEmbeddedTables(){const r=this.el.querySelectorAll("mrd-table[data-view]");for(const t of Array.from(r))"function"==typeof t.init&&await t.init()}viewKeyFor(r){var t,o,e,a;return r.type===s.RELATED_VIEW?null!==(o=null!==(t=r.relatedClass)&&void 0!==t?t:r.name)&&void 0!==o?o:"":null!==(a=null!==(e=r.dataClass)&&void 0!==e?e:r.name)&&void 0!==a?a:""}emitLoadImages(){for(const r of this.flattenItems(this.items))if(r.type===s.FIELD&&r.dataType===l.IMAGE){const t=r.name,o=this.data[t],e=null==o?void 0:o.href;e&&this.mrdLoadImage.emit({fieldName:t,href:e})}}flattenItems(r){const t=[];for(const o of r)t.push(o),o.items&&t.push(...this.flattenItems(o.items));return t}async setSearchResults(r,t){const o=null!=t?t:this.resolveSearchKey();o&&(this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[o]:r}))}async setViewPage(r,t,o,e){const a=this.el.querySelector(`mrd-table[data-view="${r}"]`);a&&(void 0!==e&&(a.totalElements=e),await a.setPage(t,o))}async setViewAggregations(r,t){const o=this.el.querySelector(`mrd-table[data-view="${r}"]`);o&&await o.setAggregations(t)}async setImagePreview(r,t){this.imagePreviews=Object.assign(Object.assign({},this.imagePreviews),{[r]:t})}async openImagePreview(r){this.imagePreviewUrl=r}resolveSearchKey(){var r;const t=this.flattenItems(this.items).filter((r=>r.type===s.SEARCH));return 1===t.length&&null!==(r=t[0].dataClass)&&void 0!==r?r:null}renderSingleFieldValue(r,t){var o,a,i,s,d,m,u,v,h,y;const p=r.dataType;switch(p){case l.HYPERLINK:{const r=null!==(o=null==t?void 0:t.href)&&void 0!==o?o:t+"",s=null!==(i=null!==(a=null==t?void 0:t.text)&&void 0!==a?a:null==t?void 0:t.label)&&void 0!==i?i:r;return e("a",{class:"mrd-layout-section__link",href:r,target:"_blank",rel:"noopener noreferrer"},s)}case l.TEXTBLOCK:return e("span",{innerHTML:t+""});case l.LONGTEXT:return e("pre",{class:"mrd-layout-section__pre"},t+"");case l.JSON:return e("pre",{class:"mrd-layout-section__pre",innerHTML:n.formatJson(t)});case l.FILE:{const r=null!==(s=null==t?void 0:t.fileName)&&void 0!==s?s:t+"",o=null!==(d=null==t?void 0:t.href)&&void 0!==d?d:"";return e("button",{class:"mrd-layout-section__download-link",onClick:()=>o&&this.mrdDownload.emit({href:o,fileName:r})},e("svg",{class:"mrd-layout-section__file-icon",viewBox:"0 0 24 24","aria-hidden":"true"},e("path",{fill:"currentColor",d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z"})),c("download",this.locale))}case l.IMAGE:{const o=null!==(m=null==t?void 0:t.href)&&void 0!==m?m:"",a=null!==(u=null==t?void 0:t.fileName)&&void 0!==u?u:"",i=this.imagePreviews[r.name];return i?e("button",{class:"mrd-layout-section__image-thumb-btn",onClick:()=>{this.imagePreviewUrl=i},title:a||void 0},e("img",{class:"mrd-layout-section__image-thumb",src:i,alt:a})):e("button",{class:"mrd-layout-section__download-link",onClick:()=>o&&this.mrdDownload.emit({href:o,fileName:a})},e("svg",{class:"mrd-layout-section__file-icon",viewBox:"0 0 24 24","aria-hidden":"true"},e("path",{fill:"currentColor",d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z"})),a||o)}case l.BOOLEAN:return e("span",{class:"mrd-layout-section__boolean mrd-layout-section__boolean--"+(t?"true":"false")},c(t?"yes":"no",this.locale));case l.LIST:{const o=(null!==(v=r.listItems)&&void 0!==v?v:[]).find((r=>r.key===t+"")),a=null!==(h=null==o?void 0:o.label)&&void 0!==h?h:t+"",i=null==o?void 0:o.color,s=null==o?void 0:o.backgroundColor;return i&&s?e("span",{class:"mrd-layout-section__badge",style:{color:i,backgroundColor:s}},a):i?e("span",{class:"mrd-layout-section__badge-dot-row"},e("span",{class:"mrd-layout-section__badge-dot",style:{backgroundColor:i}}),a):a}default:return n.renderValue(p,t,null!==(y=r.listItems)&&void 0!==y?y:[],this.locale)||null}}renderFieldValue(r,t){if(null==t||""===t)return null;if(r.multiple&&Array.isArray(t)){const o=t.map((t=>this.renderSingleFieldValue(r,t)));return o.every((r=>"string"==typeof r||null==r))?o.filter(Boolean).join(", ")||null:e("span",null,o.map(((r,t)=>e("span",{key:t+""},r,t<o.length-1?", ":""))))}return this.renderSingleFieldValue(r,t)}renderField(r){if(!r.name)return null;const t=this.data[r.name],o=this.renderFieldValue(r,t);return r.header?e("h1",{class:"mrd-layout-section__field-header",key:r.name},"string"==typeof o?o:null!=t?t+"":r.label):null==o?null:e("div",{class:"mrd-layout-section__field"+(r.dataType===l.TEXTBLOCK||r.dataType===l.LONGTEXT||r.dataType===l.JSON?" mrd-layout-section__field--block":""),key:r.name},e("span",{class:"mrd-layout-section__field-label"},r.label),e("span",{class:"mrd-layout-section__field-value"},o))}renderRelation(r){var t,o,a;if(!r.name)return null;const i=(null!==(o=null===(t=this.data)||void 0===t?void 0:t._links)&&void 0!==o?o:{})[r.name];if(!i)return null;const s=(r,t)=>e("button",{key:r,class:"mrd-layout-section__relation-link",onClick:()=>this.mrdNavigate.emit({href:r,label:t})},t);let l;return(null===(a=i.values)||void 0===a?void 0:a.length)?l=i.values.map((r=>s(r.href,r.name))):i.name&&(l=s(i.href,i.name)),l?e("div",{class:"mrd-layout-section__field",key:r.name},e("span",{class:"mrd-layout-section__field-label"},r.label),e("span",{class:"mrd-layout-section__field-value"},l)):null}renderSearch(r){var t,o,a;if(!r.dataClass)return null;const i=r.dataClass,s=null!==(t=this.searchQueryMap[i])&&void 0!==t?t:"",l=null!==(o=this.searchResultsMap[i])&&void 0!==o?o:[];return e("div",{class:"mrd-layout-section__search",key:"search-"+i},e("div",{class:"mrd-layout-section__search-wrap"},e("svg",{class:"mrd-layout-section__search-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},e("path",{"fill-rule":"evenodd",d:"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z","clip-rule":"evenodd"})),e("input",{class:"mrd-layout-section__search-input",type:"text",value:s,placeholder:null!==(a=r.label)&&void 0!==a?a:"",onInput:r=>this.handleSearchInput(i,r.target.value)})),l.length>0&&e("ul",{class:"mrd-layout-section__search-results"},l.map((r=>e("li",{key:r.id,class:"mrd-layout-section__search-result"},e("button",{class:"mrd-layout-section__search-result-btn",onClick:()=>this.mrdNavigate.emit({href:r.id,label:r.label})},e("span",{class:"mrd-layout-section__search-result-label"},r.label),r.description&&e("span",{class:"mrd-layout-section__search-result-desc"},r.description)))))))}renderRelatedView(r){var t,o,a,i,s,l;const n=this.viewKeyFor(r);if(!n)return null;if(!r.view)return null;const d=null!==(t=r.showTitle)&&void 0!==t&&t,c=null!==(l=(null!==(s=null===(i=null===(a=null===(o=this.data)||void 0===o?void 0:o._links)||void 0===a?void 0:a.self)||void 0===i?void 0:i.href)&&void 0!==s?s:"").split("/").filter(Boolean).pop())&&void 0!==l?l:"";return e("div",{class:"mrd-layout-section__related-view",key:"view-"+n},d&&r.label&&e("h3",{class:"mrd-layout-section__related-view-title"},r.label),e("mrd-table",{"data-view":n,item:r,parentId:c,locale:this.locale,onMrdLoadPage:r=>this.handleViewLoadPage(r,n),onMrdLoadAggregations:t=>{var o;t.stopPropagation(),this.mrdLoadViewAggregations.emit(Object.assign({name:n,dataClass:null!==(o=r.dataClass)&&void 0!==o?o:n},t.detail))},onMrdRowClick:r=>{var t,o,e;r.stopPropagation();const a=r.detail;this.mrdNavigate.emit({href:null===(o=null===(t=null==a?void 0:a._links)||void 0===t?void 0:t.self)||void 0===o?void 0:o.href,label:null!==(e=null==a?void 0:a.name)&&void 0!==e?e:""})},onMrdAction:t=>{var o;t.stopPropagation(),this.mrdViewAction.emit({name:n,action:t.detail.action,dataClass:null!==(o=r.dataClass)&&void 0!==o?o:n,path:t.detail.path,qs:t.detail.qs,parentPath:t.detail.parentPath})}}))}renderItem(r){var t,o;switch(r.type){case s.FIELD:return this.renderField(r);case s.RELATION:return this.renderRelation(r);case s.HEADER:return e("h2",{class:"mrd-layout-section__header",key:"header-"+r.label},r.label);case s.TEXT:return e("div",{class:"mrd-layout-section__text",key:"text-"+r.label,innerHTML:null!==(t=r.label)&&void 0!==t?t:""});case s.NAVIGATE:return e("button",{class:"mrd-layout-section__navigate",key:"nav-"+r.label,onClick:()=>{var t,o,e;return this.mrdNavigate.emit({label:null!==(t=r.label)&&void 0!==t?t:"",navigate:null!==(o=r.navigate)&&void 0!==o?o:{dataClass:null!==(e=r.dataClass)&&void 0!==e?e:"",icon:r.icon,navigationType:r.navigationType}})}},r.label);case s.SEARCH:return this.renderSearch(r);case s.SECTION:case s.GROUP:return e("div",{class:"mrd-layout-section__group",key:"group-"+r.label},r.label&&e("h3",{class:"mrd-layout-section__group-title"},r.label),(null!==(o=r.items)&&void 0!==o?o:[]).map((r=>this.renderItem(r))));case s.RELATED_VIEW:case s.VIEW:return this.renderRelatedView(r);default:return null}}renderImageModal(){return this.imagePreviewUrl?e("div",{class:"mrd-layout-section__modal-backdrop",onClick:()=>{this.imagePreviewUrl=null}},e("div",{class:"mrd-layout-section__modal",onClick:r=>r.stopPropagation()},e("button",{class:"mrd-layout-section__modal-close",onClick:()=>{this.imagePreviewUrl=null}},"✕"),e("img",{class:"mrd-layout-section__modal-image",src:this.imagePreviewUrl,alt:""}))):null}render(){return e(a,{key:"a7b6514d19cf79261396d9aaf03f459600037566"},e("div",{key:"331f0558ef3eddf5a9b4332f7ec45c58b52dd8c3",class:"mrd-layout-section"},this.items.map((r=>this.renderItem(r)))),this.renderImageModal())}get el(){return this}static get watchers(){return{data:[{dataChanged:0}]}}static get style(){return".mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word}.mrd-layout-section__field-header.sc-mrd-layout-section{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);margin:0 0 var(--mrd-space-4) 0;padding:0}.mrd-layout-section__header.sc-mrd-layout-section{font-size:var(--mrd-font-size-xl);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:var(--mrd-space-4) 0 var(--mrd-space-2) 0;padding:0}.mrd-layout-section__text.sc-mrd-layout-section{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed);margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:1px solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light);border-color:var(--mrd-color-primary)}.mrd-layout-section__link.sc-mrd-layout-section{color:var(--mrd-color-primary);text-decoration:none}.mrd-layout-section__link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__relation-link.sc-mrd-layout-section{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__relation-link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__download-link.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__download-link.sc-mrd-layout-section:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-layout-section__file-icon.sc-mrd-layout-section{flex-shrink:0;width:1rem;height:1rem}.mrd-layout-section__boolean--true.sc-mrd-layout-section{color:var(--mrd-color-success);font-weight:var(--mrd-font-weight-semibold)}.mrd-layout-section__boolean--false.sc-mrd-layout-section{color:var(--mrd-color-neutral-400)}.mrd-layout-section__field--block.sc-mrd-layout-section{grid-template-columns:1fr}.mrd-layout-section__badge.sc-mrd-layout-section{display:inline-block;font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);padding:2px var(--mrd-space-3);border-radius:10px}.mrd-layout-section__badge-dot-row.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2)}.mrd-layout-section__badge-dot.sc-mrd-layout-section{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.mrd-layout-section__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(10 * 1.5 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;text-transform:uppercase;letter-spacing:0.05em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x) var(--mrd-input-padding-y) calc(var(--mrd-input-padding-x) + 1rem + var(--mrd-space-2));font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:#fff;border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}"}},[2,"mrd-layout-section",{items:[16],data:[16],views:[16],links:[16],locale:[1],searchQueryMap:[32],searchResultsMap:[32],imagePreviewUrl:[32],imagePreviews:[32],setSearchResults:[64],setViewPage:[64],setViewAggregations:[64],setImagePreview:[64],openImagePreview:[64]},void 0,{data:[{dataChanged:0}]}]),u=m,v=function(){"undefined"!=typeof customElements&&["mrd-layout-section","mrd-table"].forEach((r=>{switch(r){case"mrd-layout-section":customElements.get(i(r))||customElements.define(i(r),m);break;case"mrd-table":customElements.get(i(r))||d()}}))};export{u as MrdLayoutSection,v as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as r,HTMLElement as t,createEvent as o,h as e,Host as a,transformTag as i}from"@stencil/core/internal/client";import{a as s,b as l}from"./client-layout.js";import{C as n,d}from"./mrd-table2.js";import{t as c}from"./i18n.js";const m=r(class extends t{constructor(r){super(),!1!==r&&this.__registerHost(),this.mrdNavigate=o(this,"mrdNavigate",7),this.mrdSearch=o(this,"mrdSearch",7),this.mrdDownload=o(this,"mrdDownload",7),this.mrdLoadViewPage=o(this,"mrdLoadViewPage",7),this.mrdLoadImage=o(this,"mrdLoadImage",7),this.mrdViewAction=o(this,"mrdViewAction",7),this.mrdLoadViewAggregations=o(this,"mrdLoadViewAggregations",7),this.items=[],this.data={},this.views={},this.links={},this.locale=navigator.language,this.searchQueryMap={},this.searchResultsMap={},this.imagePreviewUrl=null,this.imagePreviews={},this.searchTimers={},this.handleViewLoadPage=(r,t)=>{r.stopPropagation(),this.mrdLoadViewPage.emit({name:t,page:r.detail.page,sort:r.detail.sort,path:r.detail.path,qs:r.detail.qs})},this.handleSearchInput=(r,t)=>{this.searchQueryMap=Object.assign(Object.assign({},this.searchQueryMap),{[r]:t}),this.searchTimers[r]&&clearTimeout(this.searchTimers[r]),t.length<2?this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[r]:[]}):this.searchTimers[r]=setTimeout((()=>{this.mrdSearch.emit({query:t,dataClass:r})}),300)}}componentDidLoad(){setTimeout((()=>{this.initEmbeddedTables(),this.emitLoadImages()}),0)}dataChanged(r){r&&Object.keys(r).length>0&&setTimeout((()=>this.initEmbeddedTables()),0)}async initEmbeddedTables(){const r=this.el.querySelectorAll("mrd-table[data-view]");for(const t of Array.from(r))"function"==typeof t.init&&await t.init()}viewKeyFor(r){var t,o,e,a;return r.type===s.RELATED_VIEW?null!==(o=null!==(t=r.relatedClass)&&void 0!==t?t:r.name)&&void 0!==o?o:"":null!==(a=null!==(e=r.dataClass)&&void 0!==e?e:r.name)&&void 0!==a?a:""}emitLoadImages(){for(const r of this.flattenItems(this.items))if(r.type===s.FIELD&&r.dataType===l.IMAGE){const t=r.name,o=this.data[t],e=null==o?void 0:o.href;e&&this.mrdLoadImage.emit({fieldName:t,href:e})}}flattenItems(r){const t=[];for(const o of r)t.push(o),o.items&&t.push(...this.flattenItems(o.items));return t}async setSearchResults(r,t){const o=null!=t?t:this.resolveSearchKey();o&&(this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[o]:r}))}async setViewPage(r,t,o,e,a){const i=this.el.querySelector(`mrd-table[data-view="${r}"]`);i&&(void 0!==e&&(i.totalElements=e),await i.setPage(t,o,a))}async setViewAggregations(r,t){const o=this.el.querySelector(`mrd-table[data-view="${r}"]`);o&&await o.setAggregations(t)}async setImagePreview(r,t){this.imagePreviews=Object.assign(Object.assign({},this.imagePreviews),{[r]:t})}async openImagePreview(r){this.imagePreviewUrl=r}resolveSearchKey(){var r;const t=this.flattenItems(this.items).filter((r=>r.type===s.SEARCH));return 1===t.length&&null!==(r=t[0].dataClass)&&void 0!==r?r:null}renderSingleFieldValue(r,t){var o,a,i,s,d,m,u,v,h,y;const p=r.dataType;switch(p){case l.HYPERLINK:{const r=null!==(o=null==t?void 0:t.href)&&void 0!==o?o:t+"",s=null!==(i=null!==(a=null==t?void 0:t.text)&&void 0!==a?a:null==t?void 0:t.label)&&void 0!==i?i:r;return e("a",{class:"mrd-layout-section__link",href:r,target:"_blank",rel:"noopener noreferrer"},s)}case l.TEXTBLOCK:return e("span",{innerHTML:t+""});case l.LONGTEXT:return e("pre",{class:"mrd-layout-section__pre"},t+"");case l.JSON:return e("pre",{class:"mrd-layout-section__pre",innerHTML:n.formatJson(t)});case l.FILE:{const r=null!==(s=null==t?void 0:t.fileName)&&void 0!==s?s:t+"",o=null!==(d=null==t?void 0:t.href)&&void 0!==d?d:"";return e("button",{class:"mrd-layout-section__download-link",onClick:()=>o&&this.mrdDownload.emit({href:o,fileName:r})},e("svg",{class:"mrd-layout-section__file-icon",viewBox:"0 0 24 24","aria-hidden":"true"},e("path",{fill:"currentColor",d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z"})),c("download",this.locale))}case l.IMAGE:{const o=null!==(m=null==t?void 0:t.href)&&void 0!==m?m:"",a=null!==(u=null==t?void 0:t.fileName)&&void 0!==u?u:"",i=this.imagePreviews[r.name];return i?e("button",{class:"mrd-layout-section__image-thumb-btn",onClick:()=>{this.imagePreviewUrl=i},title:a||void 0},e("img",{class:"mrd-layout-section__image-thumb",src:i,alt:a})):e("button",{class:"mrd-layout-section__download-link",onClick:()=>o&&this.mrdDownload.emit({href:o,fileName:a})},e("svg",{class:"mrd-layout-section__file-icon",viewBox:"0 0 24 24","aria-hidden":"true"},e("path",{fill:"currentColor",d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z"})),a||o)}case l.BOOLEAN:return e("span",{class:"mrd-layout-section__boolean mrd-layout-section__boolean--"+(t?"true":"false")},c(t?"yes":"no",this.locale));case l.LIST:{const o=(null!==(v=r.listItems)&&void 0!==v?v:[]).find((r=>r.key===t+"")),a=null!==(h=null==o?void 0:o.label)&&void 0!==h?h:t+"",i=null==o?void 0:o.color,s=null==o?void 0:o.backgroundColor;return i&&s?e("span",{class:"mrd-layout-section__badge",style:{color:i,backgroundColor:s}},a):i?e("span",{class:"mrd-layout-section__badge-dot-row"},e("span",{class:"mrd-layout-section__badge-dot",style:{backgroundColor:i}}),a):a}default:return n.renderValue(p,t,null!==(y=r.listItems)&&void 0!==y?y:[],this.locale)||null}}renderFieldValue(r,t){if(null==t||""===t)return null;if(r.multiple&&Array.isArray(t)){const o=t.map((t=>this.renderSingleFieldValue(r,t)));return o.every((r=>"string"==typeof r||null==r))?o.filter(Boolean).join(", ")||null:e("span",null,o.map(((r,t)=>e("span",{key:t+""},r,t<o.length-1?", ":""))))}return this.renderSingleFieldValue(r,t)}renderField(r){if(!r.name)return null;const t=this.data[r.name],o=this.renderFieldValue(r,t);return r.header?e("h1",{class:"mrd-layout-section__field-header",key:r.name},"string"==typeof o?o:null!=t?t+"":r.label):null==o?null:e("div",{class:"mrd-layout-section__field"+(r.dataType===l.TEXTBLOCK||r.dataType===l.LONGTEXT||r.dataType===l.JSON?" mrd-layout-section__field--block":""),key:r.name},e("span",{class:"mrd-layout-section__field-label"},r.label),e("span",{class:"mrd-layout-section__field-value"},o))}renderRelation(r){var t,o,a;if(!r.name)return null;const i=(null!==(o=null===(t=this.data)||void 0===t?void 0:t._links)&&void 0!==o?o:{})[r.name];if(!i)return null;const s=(r,t)=>e("button",{key:r,class:"mrd-layout-section__relation-link",onClick:()=>this.mrdNavigate.emit({href:r,label:t})},t);let l;return(null===(a=i.values)||void 0===a?void 0:a.length)?l=i.values.map((r=>s(r.href,r.name))):i.name&&(l=s(i.href,i.name)),l?e("div",{class:"mrd-layout-section__field",key:r.name},e("span",{class:"mrd-layout-section__field-label"},r.label),e("span",{class:"mrd-layout-section__field-value"},l)):null}renderSearch(r){var t,o,a;if(!r.dataClass)return null;const i=r.dataClass,s=null!==(t=this.searchQueryMap[i])&&void 0!==t?t:"",l=null!==(o=this.searchResultsMap[i])&&void 0!==o?o:[];return e("div",{class:"mrd-layout-section__search",key:"search-"+i},e("div",{class:"mrd-layout-section__search-wrap"},e("svg",{class:"mrd-layout-section__search-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},e("path",{"fill-rule":"evenodd",d:"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z","clip-rule":"evenodd"})),e("input",{class:"mrd-layout-section__search-input",type:"text",value:s,placeholder:null!==(a=r.label)&&void 0!==a?a:"",onInput:r=>this.handleSearchInput(i,r.target.value)})),l.length>0&&e("ul",{class:"mrd-layout-section__search-results"},l.map((r=>e("li",{key:r.id,class:"mrd-layout-section__search-result"},e("button",{class:"mrd-layout-section__search-result-btn",onClick:()=>this.mrdNavigate.emit({href:r.id,label:r.label})},e("span",{class:"mrd-layout-section__search-result-label"},r.label),r.description&&e("span",{class:"mrd-layout-section__search-result-desc"},r.description)))))))}renderRelatedView(r){var t,o,a,i,s,l;const n=this.viewKeyFor(r);if(!n)return null;if(!r.view)return null;const d=null!==(t=r.showTitle)&&void 0!==t&&t,c=null!==(l=(null!==(s=null===(i=null===(a=null===(o=this.data)||void 0===o?void 0:o._links)||void 0===a?void 0:a.self)||void 0===i?void 0:i.href)&&void 0!==s?s:"").split("/").filter(Boolean).pop())&&void 0!==l?l:"";return e("div",{class:"mrd-layout-section__related-view",key:"view-"+n},d&&r.label&&e("h3",{class:"mrd-layout-section__related-view-title"},r.label),e("mrd-table",{"data-view":n,item:r,parentId:c,locale:this.locale,onMrdLoadPage:r=>this.handleViewLoadPage(r,n),onMrdLoadAggregations:t=>{var o;t.stopPropagation(),this.mrdLoadViewAggregations.emit(Object.assign({name:n,dataClass:null!==(o=r.dataClass)&&void 0!==o?o:n},t.detail))},onMrdRowClick:r=>{var t,o,e;r.stopPropagation();const a=r.detail;this.mrdNavigate.emit({href:null===(o=null===(t=null==a?void 0:a._links)||void 0===t?void 0:t.self)||void 0===o?void 0:o.href,label:null!==(e=null==a?void 0:a.name)&&void 0!==e?e:""})},onMrdAction:t=>{var o;t.stopPropagation(),this.mrdViewAction.emit({name:n,action:t.detail.action,dataClass:null!==(o=r.dataClass)&&void 0!==o?o:n,path:t.detail.path,qs:t.detail.qs,parentPath:t.detail.parentPath})}}))}renderItem(r){var t,o;switch(r.type){case s.FIELD:return this.renderField(r);case s.RELATION:return this.renderRelation(r);case s.HEADER:return e("h2",{class:"mrd-layout-section__header",key:"header-"+r.label},r.label);case s.TEXT:return e("div",{class:"mrd-layout-section__text",key:"text-"+r.label,innerHTML:null!==(t=r.label)&&void 0!==t?t:""});case s.NAVIGATE:return e("button",{class:"mrd-layout-section__navigate",key:"nav-"+r.label,onClick:()=>{var t,o,e;return this.mrdNavigate.emit({label:null!==(t=r.label)&&void 0!==t?t:"",navigate:null!==(o=r.navigate)&&void 0!==o?o:{dataClass:null!==(e=r.dataClass)&&void 0!==e?e:"",icon:r.icon,navigationType:r.navigationType}})}},r.label);case s.SEARCH:return this.renderSearch(r);case s.SECTION:case s.GROUP:return e("div",{class:"mrd-layout-section__group",key:"group-"+r.label},r.label&&e("h3",{class:"mrd-layout-section__group-title"},r.label),(null!==(o=r.items)&&void 0!==o?o:[]).map((r=>this.renderItem(r))));case s.RELATED_VIEW:case s.VIEW:return this.renderRelatedView(r);default:return null}}renderImageModal(){return this.imagePreviewUrl?e("div",{class:"mrd-layout-section__modal-backdrop",onClick:()=>{this.imagePreviewUrl=null}},e("div",{class:"mrd-layout-section__modal",onClick:r=>r.stopPropagation()},e("button",{class:"mrd-layout-section__modal-close",onClick:()=>{this.imagePreviewUrl=null}},"✕"),e("img",{class:"mrd-layout-section__modal-image",src:this.imagePreviewUrl,alt:""}))):null}render(){return e(a,{key:"0a3a58f5c80716bc0a7ba1b9468b721706d2ce4a"},e("div",{key:"7cf63580c584811c1bb84b419e8d13026e432fba",class:"mrd-layout-section"},this.items.map((r=>this.renderItem(r)))),this.renderImageModal())}get el(){return this}static get watchers(){return{data:[{dataChanged:0}]}}static get style(){return".mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word}.mrd-layout-section__field-header.sc-mrd-layout-section{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);margin:0 0 var(--mrd-space-4) 0;padding:0}.mrd-layout-section__header.sc-mrd-layout-section{font-size:var(--mrd-font-size-xl);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:var(--mrd-space-4) 0 var(--mrd-space-2) 0;padding:0}.mrd-layout-section__text.sc-mrd-layout-section{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed);margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:1px solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light);border-color:var(--mrd-color-primary)}.mrd-layout-section__link.sc-mrd-layout-section{color:var(--mrd-color-primary);text-decoration:none}.mrd-layout-section__link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__relation-link.sc-mrd-layout-section{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__relation-link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__download-link.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__download-link.sc-mrd-layout-section:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-layout-section__file-icon.sc-mrd-layout-section{flex-shrink:0;width:1rem;height:1rem}.mrd-layout-section__boolean--true.sc-mrd-layout-section{color:var(--mrd-color-success);font-weight:var(--mrd-font-weight-semibold)}.mrd-layout-section__boolean--false.sc-mrd-layout-section{color:var(--mrd-color-neutral-400)}.mrd-layout-section__field--block.sc-mrd-layout-section{grid-template-columns:1fr}.mrd-layout-section__badge.sc-mrd-layout-section{display:inline-block;font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);padding:2px var(--mrd-space-3);border-radius:10px}.mrd-layout-section__badge-dot-row.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2)}.mrd-layout-section__badge-dot.sc-mrd-layout-section{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.mrd-layout-section__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(10 * 1.5 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;text-transform:uppercase;letter-spacing:0.05em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x) var(--mrd-input-padding-y) calc(var(--mrd-input-padding-x) + 1rem + var(--mrd-space-2));font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:#fff;border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}"}},[2,"mrd-layout-section",{items:[16],data:[16],views:[16],links:[16],locale:[1],searchQueryMap:[32],searchResultsMap:[32],imagePreviewUrl:[32],imagePreviews:[32],setSearchResults:[64],setViewPage:[64],setViewAggregations:[64],setImagePreview:[64],openImagePreview:[64]},void 0,{data:[{dataChanged:0}]}]),u=m,v=function(){"undefined"!=typeof customElements&&["mrd-layout-section","mrd-table"].forEach((r=>{switch(r){case"mrd-layout-section":customElements.get(i(r))||customElements.define(i(r),m);break;case"mrd-table":customElements.get(i(r))||d()}}))};export{u as MrdLayoutSection,v as defineCustomElement}
|