@mmlogic/components 0.1.27 → 0.1.28
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/mrd-boolean-field_19.cjs.entry.js +21 -9
- package/dist/collection/components/mrd-layout-section/mrd-layout-section.js +41 -15
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/esm/mrd-boolean-field_19.entry.js +21 -9
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-252311b1.entry.js +1 -0
- package/dist/types/components/mrd-layout-section/mrd-layout-section.d.ts +4 -0
- package/dist/types/components.d.ts +4 -4
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/mosterdcomponents/p-7a4dc3cd.entry.js +0 -1
|
@@ -1394,10 +1394,13 @@ const MrdLayoutSection = class {
|
|
|
1394
1394
|
this.imagePreviews = {};
|
|
1395
1395
|
this.activeViewMap = {};
|
|
1396
1396
|
this.viewLinksMap = {};
|
|
1397
|
+
this.activeFiltersMap = {};
|
|
1397
1398
|
this.searchTimers = {};
|
|
1398
1399
|
this.handleViewLoadPage = (e, name) => {
|
|
1400
|
+
var _a;
|
|
1399
1401
|
e.stopPropagation();
|
|
1400
|
-
this.
|
|
1402
|
+
const filters = (_a = this.activeFiltersMap[name]) !== null && _a !== void 0 ? _a : [];
|
|
1403
|
+
this.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort, filters });
|
|
1401
1404
|
};
|
|
1402
1405
|
this.handleSearchInput = (dataClass, query) => {
|
|
1403
1406
|
this.searchQueryMap = Object.assign(Object.assign({}, this.searchQueryMap), { [dataClass]: query });
|
|
@@ -1633,7 +1636,7 @@ const MrdLayoutSection = class {
|
|
|
1633
1636
|
return (index.h("div", { class: "mrd-layout-section__search", key: `search-${dataClass}` }, index.h("input", { class: "mrd-layout-section__search-input", type: "text", value: query, placeholder: (_c = item.label) !== null && _c !== void 0 ? _c : '', onInput: e => this.handleSearchInput(dataClass, e.target.value) }), results.length > 0 && (index.h("ul", { class: "mrd-layout-section__search-results" }, results.map(r => (index.h("li", { key: r.id, class: "mrd-layout-section__search-result" }, index.h("button", { class: "mrd-layout-section__search-result-btn", onClick: () => this.mrdNavigate.emit({ href: r.id, label: r.label }) }, index.h("span", { class: "mrd-layout-section__search-result-label" }, r.label), r.description && index.h("span", { class: "mrd-layout-section__search-result-desc" }, r.description)))))))));
|
|
1634
1637
|
}
|
|
1635
1638
|
renderRelatedView(item) {
|
|
1636
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
1639
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
1637
1640
|
const isRelated = item.type === index$1.ClientLayoutItemType.RELATED_VIEW;
|
|
1638
1641
|
// Support both nested (item.view / item.relatedView) and flat API format (item.name)
|
|
1639
1642
|
const name = isRelated
|
|
@@ -1647,11 +1650,15 @@ const MrdLayoutSection = class {
|
|
|
1647
1650
|
const showTitle = isRelated
|
|
1648
1651
|
? (_d = item.relatedView) === null || _d === void 0 ? void 0 : _d.showTitle
|
|
1649
1652
|
: ((_g = (_f = (_e = item.view) === null || _e === void 0 ? void 0 : _e.showTitle) !== null && _f !== void 0 ? _f : item.showTitle) !== null && _g !== void 0 ? _g : false);
|
|
1650
|
-
const altViews = item.alternativeViews;
|
|
1651
1653
|
const activeName = (_h = this.activeViewMap[name]) !== null && _h !== void 0 ? _h : name;
|
|
1652
1654
|
const activeViewConfig = (_j = this.views[activeName]) !== null && _j !== void 0 ? _j : viewConfig;
|
|
1653
|
-
|
|
1654
|
-
const
|
|
1655
|
+
// Build the full view list (original + alternatives) so the switcher can always go back.
|
|
1656
|
+
const originalLabel = (_m = (_l = (_k = viewConfig.pluralLabel) !== null && _k !== void 0 ? _k : viewConfig.singularLabel) !== null && _l !== void 0 ? _l : item.label) !== null && _m !== void 0 ? _m : name;
|
|
1657
|
+
const allViews = [{ name, label: originalLabel }, ...((_o = item.alternativeViews) !== null && _o !== void 0 ? _o : [])];
|
|
1658
|
+
const activeEntry = allViews.find(v => v.name === activeName);
|
|
1659
|
+
const viewLabel = (_r = (_q = (_p = activeEntry === null || activeEntry === void 0 ? void 0 : activeEntry.label) !== null && _p !== void 0 ? _p : activeViewConfig.pluralLabel) !== null && _q !== void 0 ? _q : activeViewConfig.singularLabel) !== null && _r !== void 0 ? _r : '';
|
|
1660
|
+
const altViews = allViews.filter(v => v.name !== activeName);
|
|
1661
|
+
const rawActions = (_s = item.actions) !== null && _s !== void 0 ? _s : ['NEW', 'EXPORT'];
|
|
1655
1662
|
const tableActions = rawActions.reduce((acc, a) => {
|
|
1656
1663
|
if (a === 'NEW')
|
|
1657
1664
|
acc.push({ action: 'create', label: t('table_new_record', this.locale), icon: 'assets/sprites.svg#icon-plus', variant: 'primary' });
|
|
@@ -1659,7 +1666,7 @@ const MrdLayoutSection = class {
|
|
|
1659
1666
|
acc.push({ action: 'export', label: t('table_export_excel', this.locale), icon: 'assets/sprites.svg#icon-file-excel' });
|
|
1660
1667
|
return acc;
|
|
1661
1668
|
}, []);
|
|
1662
|
-
return (index.h("div", { class: "mrd-layout-section__related-view", key: `view-${name}` }, showTitle && item.label && index.h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), index.h("mrd-table", { "data-view": name, columns: activeViewConfig.values, locale: this.locale, defaultSort: (
|
|
1669
|
+
return (index.h("div", { class: "mrd-layout-section__related-view", key: `view-${name}` }, showTitle && item.label && index.h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), index.h("mrd-table", { "data-view": name, columns: activeViewConfig.values, locale: this.locale, defaultSort: (_t = activeViewConfig.defaultSort) !== null && _t !== void 0 ? _t : '', viewLabel: viewLabel, alternativeViews: altViews, actions: tableActions, onMrdLoadPage: (e) => this.handleViewLoadPage(e, name), onMrdSwitchView: (e) => {
|
|
1663
1670
|
var _a, _b, _c, _d, _e, _f;
|
|
1664
1671
|
e.stopPropagation();
|
|
1665
1672
|
const newViewName = e.detail.name;
|
|
@@ -1667,19 +1674,24 @@ const MrdLayoutSection = class {
|
|
|
1667
1674
|
if (!newViewConfig)
|
|
1668
1675
|
return;
|
|
1669
1676
|
this.activeViewMap = Object.assign(Object.assign({}, this.activeViewMap), { [name]: newViewName });
|
|
1677
|
+
this.activeFiltersMap = Object.assign(Object.assign({}, this.activeFiltersMap), { [name]: [] });
|
|
1670
1678
|
const dataLinks = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
1671
1679
|
const href = isRelated
|
|
1672
1680
|
? (_c = dataLinks[item.relatedView.relatedClass]) === null || _c === void 0 ? void 0 : _c.href
|
|
1673
1681
|
: ((_e = (_d = this.links[newViewName]) === null || _d === void 0 ? void 0 : _d.href) !== null && _e !== void 0 ? _e : (_f = this.links[name]) === null || _f === void 0 ? void 0 : _f.href);
|
|
1674
1682
|
this.mrdLoadView.emit({ name, href, viewConfig: newViewConfig });
|
|
1683
|
+
}, onMrdFilter: (e) => {
|
|
1684
|
+
e.stopPropagation();
|
|
1685
|
+
this.activeFiltersMap = Object.assign(Object.assign({}, this.activeFiltersMap), { [name]: e.detail.filters });
|
|
1675
1686
|
}, onMrdLoadAggregations: (e) => {
|
|
1676
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
1687
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1677
1688
|
e.stopPropagation();
|
|
1678
1689
|
const dataLinks = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
1679
1690
|
const href = isRelated
|
|
1680
1691
|
? (_c = dataLinks[item.relatedView.relatedClass]) === null || _c === void 0 ? void 0 : _c.href
|
|
1681
1692
|
: ((_f = (_e = this.links[(_d = this.activeViewMap[name]) !== null && _d !== void 0 ? _d : name]) === null || _e === void 0 ? void 0 : _e.href) !== null && _f !== void 0 ? _f : (_g = this.links[name]) === null || _g === void 0 ? void 0 : _g.href);
|
|
1682
|
-
this.
|
|
1693
|
+
const filters = (_h = this.activeFiltersMap[name]) !== null && _h !== void 0 ? _h : [];
|
|
1694
|
+
this.mrdLoadViewAggregations.emit(Object.assign({ name, href, filters }, e.detail));
|
|
1683
1695
|
}, onMrdAction: (e) => {
|
|
1684
1696
|
var _a, _b, _c;
|
|
1685
1697
|
e.stopPropagation();
|
|
@@ -1719,7 +1731,7 @@ const MrdLayoutSection = class {
|
|
|
1719
1731
|
return (index.h("div", { class: "mrd-layout-section__modal-backdrop", onClick: () => { this.imagePreviewUrl = null; } }, index.h("div", { class: "mrd-layout-section__modal", onClick: (e) => e.stopPropagation() }, index.h("button", { class: "mrd-layout-section__modal-close", onClick: () => { this.imagePreviewUrl = null; } }, "\u2715"), index.h("img", { class: "mrd-layout-section__modal-image", src: this.imagePreviewUrl, alt: "" }))));
|
|
1720
1732
|
}
|
|
1721
1733
|
render() {
|
|
1722
|
-
return (index.h(index.Host, { key: '
|
|
1734
|
+
return (index.h(index.Host, { key: '167da935ac968ff16904efc671394c0223b47844' }, index.h("div", { key: 'b3e91cab524e51e40a207581fb6eaf9c1e57eef3', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
|
|
1723
1735
|
}
|
|
1724
1736
|
get el() { return index.getElement(this); }
|
|
1725
1737
|
static get watchers() { return {
|
|
@@ -19,10 +19,13 @@ export class MrdLayoutSection {
|
|
|
19
19
|
this.imagePreviews = {};
|
|
20
20
|
this.activeViewMap = {};
|
|
21
21
|
this.viewLinksMap = {};
|
|
22
|
+
this.activeFiltersMap = {};
|
|
22
23
|
this.searchTimers = {};
|
|
23
24
|
this.handleViewLoadPage = (e, name) => {
|
|
25
|
+
var _a;
|
|
24
26
|
e.stopPropagation();
|
|
25
|
-
this.
|
|
27
|
+
const filters = (_a = this.activeFiltersMap[name]) !== null && _a !== void 0 ? _a : [];
|
|
28
|
+
this.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort, filters });
|
|
26
29
|
};
|
|
27
30
|
this.handleSearchInput = (dataClass, query) => {
|
|
28
31
|
this.searchQueryMap = Object.assign(Object.assign({}, this.searchQueryMap), { [dataClass]: query });
|
|
@@ -258,7 +261,7 @@ export class MrdLayoutSection {
|
|
|
258
261
|
return (h("div", { class: "mrd-layout-section__search", key: `search-${dataClass}` }, h("input", { class: "mrd-layout-section__search-input", type: "text", value: query, placeholder: (_c = item.label) !== null && _c !== void 0 ? _c : '', onInput: e => this.handleSearchInput(dataClass, e.target.value) }), results.length > 0 && (h("ul", { class: "mrd-layout-section__search-results" }, results.map(r => (h("li", { key: r.id, class: "mrd-layout-section__search-result" }, h("button", { class: "mrd-layout-section__search-result-btn", onClick: () => this.mrdNavigate.emit({ href: r.id, label: r.label }) }, h("span", { class: "mrd-layout-section__search-result-label" }, r.label), r.description && h("span", { class: "mrd-layout-section__search-result-desc" }, r.description)))))))));
|
|
259
262
|
}
|
|
260
263
|
renderRelatedView(item) {
|
|
261
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
264
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
262
265
|
const isRelated = item.type === ClientLayoutItemType.RELATED_VIEW;
|
|
263
266
|
// Support both nested (item.view / item.relatedView) and flat API format (item.name)
|
|
264
267
|
const name = isRelated
|
|
@@ -272,11 +275,15 @@ export class MrdLayoutSection {
|
|
|
272
275
|
const showTitle = isRelated
|
|
273
276
|
? (_d = item.relatedView) === null || _d === void 0 ? void 0 : _d.showTitle
|
|
274
277
|
: ((_g = (_f = (_e = item.view) === null || _e === void 0 ? void 0 : _e.showTitle) !== null && _f !== void 0 ? _f : item.showTitle) !== null && _g !== void 0 ? _g : false);
|
|
275
|
-
const altViews = item.alternativeViews;
|
|
276
278
|
const activeName = (_h = this.activeViewMap[name]) !== null && _h !== void 0 ? _h : name;
|
|
277
279
|
const activeViewConfig = (_j = this.views[activeName]) !== null && _j !== void 0 ? _j : viewConfig;
|
|
278
|
-
|
|
279
|
-
const
|
|
280
|
+
// Build the full view list (original + alternatives) so the switcher can always go back.
|
|
281
|
+
const originalLabel = (_m = (_l = (_k = viewConfig.pluralLabel) !== null && _k !== void 0 ? _k : viewConfig.singularLabel) !== null && _l !== void 0 ? _l : item.label) !== null && _m !== void 0 ? _m : name;
|
|
282
|
+
const allViews = [{ name, label: originalLabel }, ...((_o = item.alternativeViews) !== null && _o !== void 0 ? _o : [])];
|
|
283
|
+
const activeEntry = allViews.find(v => v.name === activeName);
|
|
284
|
+
const viewLabel = (_r = (_q = (_p = activeEntry === null || activeEntry === void 0 ? void 0 : activeEntry.label) !== null && _p !== void 0 ? _p : activeViewConfig.pluralLabel) !== null && _q !== void 0 ? _q : activeViewConfig.singularLabel) !== null && _r !== void 0 ? _r : '';
|
|
285
|
+
const altViews = allViews.filter(v => v.name !== activeName);
|
|
286
|
+
const rawActions = (_s = item.actions) !== null && _s !== void 0 ? _s : ['NEW', 'EXPORT'];
|
|
280
287
|
const tableActions = rawActions.reduce((acc, a) => {
|
|
281
288
|
if (a === 'NEW')
|
|
282
289
|
acc.push({ action: 'create', label: t('table_new_record', this.locale), icon: 'assets/sprites.svg#icon-plus', variant: 'primary' });
|
|
@@ -284,7 +291,7 @@ export class MrdLayoutSection {
|
|
|
284
291
|
acc.push({ action: 'export', label: t('table_export_excel', this.locale), icon: 'assets/sprites.svg#icon-file-excel' });
|
|
285
292
|
return acc;
|
|
286
293
|
}, []);
|
|
287
|
-
return (h("div", { class: "mrd-layout-section__related-view", key: `view-${name}` }, showTitle && item.label && h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), h("mrd-table", { "data-view": name, columns: activeViewConfig.values, locale: this.locale, defaultSort: (
|
|
294
|
+
return (h("div", { class: "mrd-layout-section__related-view", key: `view-${name}` }, showTitle && item.label && h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), h("mrd-table", { "data-view": name, columns: activeViewConfig.values, locale: this.locale, defaultSort: (_t = activeViewConfig.defaultSort) !== null && _t !== void 0 ? _t : '', viewLabel: viewLabel, alternativeViews: altViews, actions: tableActions, onMrdLoadPage: (e) => this.handleViewLoadPage(e, name), onMrdSwitchView: (e) => {
|
|
288
295
|
var _a, _b, _c, _d, _e, _f;
|
|
289
296
|
e.stopPropagation();
|
|
290
297
|
const newViewName = e.detail.name;
|
|
@@ -292,19 +299,24 @@ export class MrdLayoutSection {
|
|
|
292
299
|
if (!newViewConfig)
|
|
293
300
|
return;
|
|
294
301
|
this.activeViewMap = Object.assign(Object.assign({}, this.activeViewMap), { [name]: newViewName });
|
|
302
|
+
this.activeFiltersMap = Object.assign(Object.assign({}, this.activeFiltersMap), { [name]: [] });
|
|
295
303
|
const dataLinks = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
296
304
|
const href = isRelated
|
|
297
305
|
? (_c = dataLinks[item.relatedView.relatedClass]) === null || _c === void 0 ? void 0 : _c.href
|
|
298
306
|
: ((_e = (_d = this.links[newViewName]) === null || _d === void 0 ? void 0 : _d.href) !== null && _e !== void 0 ? _e : (_f = this.links[name]) === null || _f === void 0 ? void 0 : _f.href);
|
|
299
307
|
this.mrdLoadView.emit({ name, href, viewConfig: newViewConfig });
|
|
308
|
+
}, onMrdFilter: (e) => {
|
|
309
|
+
e.stopPropagation();
|
|
310
|
+
this.activeFiltersMap = Object.assign(Object.assign({}, this.activeFiltersMap), { [name]: e.detail.filters });
|
|
300
311
|
}, onMrdLoadAggregations: (e) => {
|
|
301
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
312
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
302
313
|
e.stopPropagation();
|
|
303
314
|
const dataLinks = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
304
315
|
const href = isRelated
|
|
305
316
|
? (_c = dataLinks[item.relatedView.relatedClass]) === null || _c === void 0 ? void 0 : _c.href
|
|
306
317
|
: ((_f = (_e = this.links[(_d = this.activeViewMap[name]) !== null && _d !== void 0 ? _d : name]) === null || _e === void 0 ? void 0 : _e.href) !== null && _f !== void 0 ? _f : (_g = this.links[name]) === null || _g === void 0 ? void 0 : _g.href);
|
|
307
|
-
this.
|
|
318
|
+
const filters = (_h = this.activeFiltersMap[name]) !== null && _h !== void 0 ? _h : [];
|
|
319
|
+
this.mrdLoadViewAggregations.emit(Object.assign({ name, href, filters }, e.detail));
|
|
308
320
|
}, onMrdAction: (e) => {
|
|
309
321
|
var _a, _b, _c;
|
|
310
322
|
e.stopPropagation();
|
|
@@ -344,7 +356,7 @@ export class MrdLayoutSection {
|
|
|
344
356
|
return (h("div", { class: "mrd-layout-section__modal-backdrop", onClick: () => { this.imagePreviewUrl = null; } }, h("div", { class: "mrd-layout-section__modal", onClick: (e) => e.stopPropagation() }, h("button", { class: "mrd-layout-section__modal-close", onClick: () => { this.imagePreviewUrl = null; } }, "\u2715"), h("img", { class: "mrd-layout-section__modal-image", src: this.imagePreviewUrl, alt: "" }))));
|
|
345
357
|
}
|
|
346
358
|
render() {
|
|
347
|
-
return (h(Host, { key: '
|
|
359
|
+
return (h(Host, { key: '167da935ac968ff16904efc671394c0223b47844' }, h("div", { key: 'b3e91cab524e51e40a207581fb6eaf9c1e57eef3', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
|
|
348
360
|
}
|
|
349
361
|
static get is() { return "mrd-layout-section"; }
|
|
350
362
|
static get encapsulation() { return "scoped"; }
|
|
@@ -577,9 +589,16 @@ export class MrdLayoutSection {
|
|
|
577
589
|
"text": "Re-emitted from an embedded mrd-table's mrdLoadPage; host fetches the next page and calls setViewPage()."
|
|
578
590
|
},
|
|
579
591
|
"complexType": {
|
|
580
|
-
"original": "{ name: string; page: number; sort: string }",
|
|
581
|
-
"resolved": "{ name: string; page: number; sort: string; }",
|
|
582
|
-
"references": {
|
|
592
|
+
"original": "{ name: string; page: number; sort: string; filters: ColumnFilter[] }",
|
|
593
|
+
"resolved": "{ name: string; page: number; sort: string; filters: ColumnFilter[]; }",
|
|
594
|
+
"references": {
|
|
595
|
+
"ColumnFilter": {
|
|
596
|
+
"location": "import",
|
|
597
|
+
"path": "../../utils/cell-renderer",
|
|
598
|
+
"id": "src/utils/cell-renderer.ts::ColumnFilter",
|
|
599
|
+
"referenceLocation": "ColumnFilter"
|
|
600
|
+
}
|
|
601
|
+
}
|
|
583
602
|
}
|
|
584
603
|
}, {
|
|
585
604
|
"method": "mrdLoadImage",
|
|
@@ -622,9 +641,16 @@ export class MrdLayoutSection {
|
|
|
622
641
|
"text": "Re-emitted from an embedded mrd-table's mrdLoadAggregations; host calls setViewAggregations() with the result."
|
|
623
642
|
},
|
|
624
643
|
"complexType": {
|
|
625
|
-
"original": "{ name: string; href?: string; sum?: string[]; avg?: string[]; count?: string[] }",
|
|
626
|
-
"resolved": "{ name: string; href?: string | undefined; sum?: string[] | undefined; avg?: string[] | undefined; count?: string[] | undefined; }",
|
|
627
|
-
"references": {
|
|
644
|
+
"original": "{ name: string; href?: string; filters: ColumnFilter[]; sum?: string[]; avg?: string[]; count?: string[] }",
|
|
645
|
+
"resolved": "{ name: string; href?: string | undefined; filters: ColumnFilter[]; sum?: string[] | undefined; avg?: string[] | undefined; count?: string[] | undefined; }",
|
|
646
|
+
"references": {
|
|
647
|
+
"ColumnFilter": {
|
|
648
|
+
"location": "import",
|
|
649
|
+
"path": "../../utils/cell-renderer",
|
|
650
|
+
"id": "src/utils/cell-renderer.ts::ColumnFilter",
|
|
651
|
+
"referenceLocation": "ColumnFilter"
|
|
652
|
+
}
|
|
653
|
+
}
|
|
628
654
|
}
|
|
629
655
|
}];
|
|
630
656
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as o,HTMLElement as r,createEvent as t,h as e,Host as i,transformTag as a}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 u=o(class extends r{constructor(o){super(),!1!==o&&this.__registerHost(),this.mrdNavigate=t(this,"mrdNavigate",7),this.mrdSearch=t(this,"mrdSearch",7),this.mrdDownload=t(this,"mrdDownload",7),this.mrdLoadView=t(this,"mrdLoadView",7),this.mrdLoadViewPage=t(this,"mrdLoadViewPage",7),this.mrdLoadImage=t(this,"mrdLoadImage",7),this.mrdViewAction=t(this,"mrdViewAction",7),this.mrdLoadViewAggregations=t(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.activeViewMap={},this.viewLinksMap={},this.searchTimers={},this.handleViewLoadPage=(o,r)=>{o.stopPropagation(),this.mrdLoadViewPage.emit({name:r,page:o.detail.page,sort:o.detail.sort})},this.handleSearchInput=(o,r)=>{this.searchQueryMap=Object.assign(Object.assign({},this.searchQueryMap),{[o]:r}),this.searchTimers[o]&&clearTimeout(this.searchTimers[o]),r.length<2?this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[o]:[]}):this.searchTimers[o]=setTimeout((()=>{this.mrdSearch.emit({query:r,dataClass:o})}),300)}}componentDidLoad(){setTimeout((()=>{this.emitLoadViews(),this.emitLoadImages()}),0)}linksChanged(o){Object.keys(null!=o?o:{}).length>0&&this.emitLoadViews()}dataChanged(o){var r;o&&Object.keys(null!==(r=null==o?void 0:o._links)&&void 0!==r?r:{}).length>0&&this.emitLoadViews()}emitLoadViews(){var o,r,t,e,i,a;const l=null!==(r=null===(o=this.data)||void 0===o?void 0:o._links)&&void 0!==r?r:{};for(const o of this.flattenItems(this.items))if(o.type===s.RELATED_VIEW&&o.relatedView){const r=o.relatedView,e=this.views[r.name];if(!e)continue;const i=null===(t=l[r.relatedClass])||void 0===t?void 0:t.href;this.mrdLoadView.emit({name:r.name,href:i,viewConfig:e})}else if(o.type===s.VIEW){const r=null!==(i=null===(e=o.view)||void 0===e?void 0:e.name)&&void 0!==i?i:o.name;if(!r)continue;const t=this.views[r];if(!t)continue;const s=null===(a=this.links[r])||void 0===a?void 0:a.href;this.mrdLoadView.emit({name:r,href:s,viewConfig:t})}}emitLoadImages(){var o;for(const r of this.flattenItems(this.items))if(r.type===s.FIELD&&(null===(o=r.field)||void 0===o?void 0:o.dataType)===l.IMAGE){const o=r.field.name,t=this.data[o],e=null==t?void 0:t.href;e&&this.mrdLoadImage.emit({fieldName:o,href:e})}}flattenItems(o){const r=[];for(const t of o)r.push(t),t.items&&r.push(...this.flattenItems(t.items));return r}async setSearchResults(o,r){const t=null!=r?r:this.resolveSearchKey();t&&(this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[t]:o}))}async setViewPage(o,r,t,e,i){i&&(this.viewLinksMap=Object.assign(Object.assign({},this.viewLinksMap),{[o]:i}));const a=this.el.querySelector(`mrd-table[data-view="${o}"]`);a&&(void 0!==e&&(a.totalElements=e,await a.init()),await a.setPage(r,t))}async setViewAggregations(o,r){const t=this.el.querySelector(`mrd-table[data-view="${o}"]`);t&&await t.setAggregations(r)}async setImagePreview(o,r){this.imagePreviews=Object.assign(Object.assign({},this.imagePreviews),{[o]:r})}async openImagePreview(o){this.imagePreviewUrl=o}resolveSearchKey(){const o=this.flattenItems(this.items).filter((o=>o.type===s.SEARCH));return 1===o.length&&o[0].search?o[0].search.dataClass:null}renderSingleFieldValue(o,r){var t,i,a,s,d,u,m,v,h,y;const f=o.field,g=f.dataType;switch(g){case l.HYPERLINK:{const o=null!==(t=null==r?void 0:r.href)&&void 0!==t?t:r+"",s=null!==(a=null!==(i=null==r?void 0:r.text)&&void 0!==i?i:null==r?void 0:r.label)&&void 0!==a?a:o;return e("a",{class:"mrd-layout-section__link",href:o,target:"_blank",rel:"noopener noreferrer"},s)}case l.TEXTBLOCK:return e("span",{innerHTML:r+""});case l.LONGTEXT:return e("pre",{class:"mrd-layout-section__pre"},r+"");case l.JSON:return e("pre",{class:"mrd-layout-section__pre",innerHTML:n.formatJson(r)});case l.FILE:{const o=null!==(s=null==r?void 0:r.fileName)&&void 0!==s?s:r+"",t=null!==(d=null==r?void 0:r.href)&&void 0!==d?d:"";return e("button",{class:"mrd-layout-section__download-link",onClick:()=>t&&this.mrdDownload.emit({href:t,fileName:o})},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!==(u=null==r?void 0:r.href)&&void 0!==u?u:"",t=null!==(m=null==r?void 0:r.fileName)&&void 0!==m?m:"",i=this.imagePreviews[f.name];return i?e("button",{class:"mrd-layout-section__image-thumb-btn",onClick:()=>{this.imagePreviewUrl=i},title:t||void 0},e("img",{class:"mrd-layout-section__image-thumb",src:i,alt:t})):e("button",{class:"mrd-layout-section__download-link",onClick:()=>o&&this.mrdDownload.emit({href:o,fileName:t})},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"})),t||o)}case l.BOOLEAN:return e("span",{class:"mrd-layout-section__boolean mrd-layout-section__boolean--"+(r?"true":"false")},c(r?"yes":"no",this.locale));case l.LIST:{const o=(null!==(v=f.listItems)&&void 0!==v?v:[]).find((o=>o.key===r+"")),t=null!==(h=null==o?void 0:o.label)&&void 0!==h?h:r+"",i=null==o?void 0:o.color,a=null==o?void 0:o.backgroundColor;return i&&a?e("span",{class:"mrd-layout-section__badge",style:{color:i,backgroundColor:a}},t):i?e("span",{class:"mrd-layout-section__badge-dot-row"},e("span",{class:"mrd-layout-section__badge-dot",style:{backgroundColor:i}}),t):t}default:return n.renderValue(g,r,null!==(y=f.listItems)&&void 0!==y?y:[],this.locale)||null}}renderFieldValue(o,r){if(null==r||""===r)return null;if(o.field.multiple&&Array.isArray(r)){const t=r.map((r=>this.renderSingleFieldValue(o,r)));return t.every((o=>"string"==typeof o||null==o))?t.filter(Boolean).join(", ")||null:e("span",null,t.map(((o,r)=>e("span",{key:r+""},o,r<t.length-1?", ":""))))}return this.renderSingleFieldValue(o,r)}renderField(o){if(!o.field)return null;const r=o.field,t=this.data[r.name],i=this.renderFieldValue(o,t);return r.header?e("h1",{class:"mrd-layout-section__field-header",key:r.name},"string"==typeof i?i:null!=t?t+"":o.label):null==i?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"},o.label),e("span",{class:"mrd-layout-section__field-value"},i))}renderRelation(o){var r,t,i;if(!o.relation)return null;const a=(null!==(t=null===(r=this.data)||void 0===r?void 0:r._links)&&void 0!==t?t:{})[o.relation.name];if(!a)return null;const s=(o,r)=>e("button",{key:o,class:"mrd-layout-section__relation-link",onClick:()=>this.mrdNavigate.emit({href:o,label:r})},r);let l;return(null===(i=a.values)||void 0===i?void 0:i.length)?l=a.values.map((o=>s(o.href,o.name))):a.name&&(l=s(a.href,a.name)),l?e("div",{class:"mrd-layout-section__field",key:o.relation.name},e("span",{class:"mrd-layout-section__field-label"},o.label),e("span",{class:"mrd-layout-section__field-value"},l)):null}renderSearch(o){var r,t,i;if(!o.search)return null;const a=o.search.dataClass,s=null!==(r=this.searchQueryMap[a])&&void 0!==r?r:"",l=null!==(t=this.searchResultsMap[a])&&void 0!==t?t:[];return e("div",{class:"mrd-layout-section__search",key:"search-"+a},e("input",{class:"mrd-layout-section__search-input",type:"text",value:s,placeholder:null!==(i=o.label)&&void 0!==i?i:"",onInput:o=>this.handleSearchInput(a,o.target.value)}),l.length>0&&e("ul",{class:"mrd-layout-section__search-results"},l.map((o=>e("li",{key:o.id,class:"mrd-layout-section__search-result"},e("button",{class:"mrd-layout-section__search-result-btn",onClick:()=>this.mrdNavigate.emit({href:o.id,label:o.label})},e("span",{class:"mrd-layout-section__search-result-label"},o.label),o.description&&e("span",{class:"mrd-layout-section__search-result-desc"},o.description)))))))}renderRelatedView(o){var r,t,i,a,l,n,d,u,m,v,h,y,f,g;const p=o.type===s.RELATED_VIEW,_=p?null===(r=o.relatedView)||void 0===r?void 0:r.name:null!==(i=null===(t=o.view)||void 0===t?void 0:t.name)&&void 0!==i?i:o.name;if(!_)return null;const b=this.views[_];if(!b)return null;const w=p?null===(a=o.relatedView)||void 0===a?void 0:a.showTitle:null!==(d=null!==(n=null===(l=o.view)||void 0===l?void 0:l.showTitle)&&void 0!==n?n:o.showTitle)&&void 0!==d&&d,k=o.alternativeViews,x=null!==(u=this.activeViewMap[_])&&void 0!==u?u:_,z=null!==(m=this.views[x])&&void 0!==m?m:b,C=null!==(y=null!==(h=null!==(v=o.label)&&void 0!==v?v:z.pluralLabel)&&void 0!==h?h:z.singularLabel)&&void 0!==y?y:"",j=(null!==(f=o.actions)&&void 0!==f?f:["NEW","EXPORT"]).reduce(((o,r)=>("NEW"===r&&o.push({action:"create",label:c("table_new_record",this.locale),icon:"assets/sprites.svg#icon-plus",variant:"primary"}),"EXPORT"===r&&o.push({action:"export",label:c("table_export_excel",this.locale),icon:"assets/sprites.svg#icon-file-excel"}),o)),[]);return e("div",{class:"mrd-layout-section__related-view",key:"view-"+_},w&&o.label&&e("h3",{class:"mrd-layout-section__related-view-title"},o.label),e("mrd-table",{"data-view":_,columns:z.values,locale:this.locale,defaultSort:null!==(g=z.defaultSort)&&void 0!==g?g:"",viewLabel:C,alternativeViews:k,actions:j,onMrdLoadPage:o=>this.handleViewLoadPage(o,_),onMrdSwitchView:r=>{var t,e,i,a,s,l;r.stopPropagation();const n=r.detail.name,d=this.views[n];if(!d)return;this.activeViewMap=Object.assign(Object.assign({},this.activeViewMap),{[_]:n});const c=null!==(e=null===(t=this.data)||void 0===t?void 0:t._links)&&void 0!==e?e:{},u=p?null===(i=c[o.relatedView.relatedClass])||void 0===i?void 0:i.href:null!==(s=null===(a=this.links[n])||void 0===a?void 0:a.href)&&void 0!==s?s:null===(l=this.links[_])||void 0===l?void 0:l.href;this.mrdLoadView.emit({name:_,href:u,viewConfig:d})},onMrdLoadAggregations:r=>{var t,e,i,a,s,l,n;r.stopPropagation();const d=null!==(e=null===(t=this.data)||void 0===t?void 0:t._links)&&void 0!==e?e:{},c=p?null===(i=d[o.relatedView.relatedClass])||void 0===i?void 0:i.href:null!==(l=null===(s=this.links[null!==(a=this.activeViewMap[_])&&void 0!==a?a:_])||void 0===s?void 0:s.href)&&void 0!==l?l:null===(n=this.links[_])||void 0===n?void 0:n.href;this.mrdLoadViewAggregations.emit(Object.assign({name:_,href:c},r.detail))},onMrdAction:o=>{var r,t,e;o.stopPropagation();const i=null!==(r=this.viewLinksMap[_])&&void 0!==r?r:{},a="export"===o.detail.action?null===(t=i.excel)||void 0===t?void 0:t.href:null===(e=i.self)||void 0===e?void 0:e.href;this.mrdViewAction.emit({name:_,action:o.detail.action,href:a})}}))}renderItem(o){var r,t;switch(o.type){case s.FIELD:return this.renderField(o);case s.RELATION:return this.renderRelation(o);case s.HEADER:return e("h2",{class:"mrd-layout-section__header",key:"header-"+o.label},o.label);case s.TEXT:return e("div",{class:"mrd-layout-section__text",key:"text-"+o.label,innerHTML:null!==(r=o.label)&&void 0!==r?r:""});case s.NAVIGATE:return e("button",{class:"mrd-layout-section__navigate",key:"nav-"+o.label,onClick:()=>{var r;return this.mrdNavigate.emit({label:null!==(r=o.label)&&void 0!==r?r:"",navigate:o.navigate})}},o.label);case s.SEARCH:return this.renderSearch(o);case s.SECTION:case s.GROUP:return e("div",{class:"mrd-layout-section__group",key:"group-"+o.label},o.label&&e("h3",{class:"mrd-layout-section__group-title"},o.label),(null!==(t=o.items)&&void 0!==t?t:[]).map((o=>this.renderItem(o))));case s.RELATED_VIEW:case s.VIEW:return this.renderRelatedView(o);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:o=>o.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(i,{key:"61e2e24dfc38480f95a76ae5b433fcdf31c7c2ab"},e("div",{key:"bbe3fa8d350cb8175ae3884ba879463d172fd65b",class:"mrd-layout-section"},this.items.map((o=>this.renderItem(o)))),this.renderImageModal())}get el(){return this}static get watchers(){return{links:[{linksChanged:0}],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-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);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],activeViewMap:[32],setSearchResults:[64],setViewPage:[64],setViewAggregations:[64],setImagePreview:[64],openImagePreview:[64]},void 0,{links:[{linksChanged:0}],data:[{dataChanged:0}]}]),m=u,v=function(){"undefined"!=typeof customElements&&["mrd-layout-section","mrd-table"].forEach((o=>{switch(o){case"mrd-layout-section":customElements.get(a(o))||customElements.define(a(o),u);break;case"mrd-table":customElements.get(a(o))||d()}}))};export{m as MrdLayoutSection,v as defineCustomElement}
|
|
1
|
+
import{proxyCustomElement as t,HTMLElement as o,createEvent as r,h as e,Host as i,transformTag as a}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 u=t(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.mrdNavigate=r(this,"mrdNavigate",7),this.mrdSearch=r(this,"mrdSearch",7),this.mrdDownload=r(this,"mrdDownload",7),this.mrdLoadView=r(this,"mrdLoadView",7),this.mrdLoadViewPage=r(this,"mrdLoadViewPage",7),this.mrdLoadImage=r(this,"mrdLoadImage",7),this.mrdViewAction=r(this,"mrdViewAction",7),this.mrdLoadViewAggregations=r(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.activeViewMap={},this.viewLinksMap={},this.activeFiltersMap={},this.searchTimers={},this.handleViewLoadPage=(t,o)=>{var r;t.stopPropagation();const e=null!==(r=this.activeFiltersMap[o])&&void 0!==r?r:[];this.mrdLoadViewPage.emit({name:o,page:t.detail.page,sort:t.detail.sort,filters:e})},this.handleSearchInput=(t,o)=>{this.searchQueryMap=Object.assign(Object.assign({},this.searchQueryMap),{[t]:o}),this.searchTimers[t]&&clearTimeout(this.searchTimers[t]),o.length<2?this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[t]:[]}):this.searchTimers[t]=setTimeout((()=>{this.mrdSearch.emit({query:o,dataClass:t})}),300)}}componentDidLoad(){setTimeout((()=>{this.emitLoadViews(),this.emitLoadImages()}),0)}linksChanged(t){Object.keys(null!=t?t:{}).length>0&&this.emitLoadViews()}dataChanged(t){var o;t&&Object.keys(null!==(o=null==t?void 0:t._links)&&void 0!==o?o:{}).length>0&&this.emitLoadViews()}emitLoadViews(){var t,o,r,e,i,a;const l=null!==(o=null===(t=this.data)||void 0===t?void 0:t._links)&&void 0!==o?o:{};for(const t of this.flattenItems(this.items))if(t.type===s.RELATED_VIEW&&t.relatedView){const o=t.relatedView,e=this.views[o.name];if(!e)continue;const i=null===(r=l[o.relatedClass])||void 0===r?void 0:r.href;this.mrdLoadView.emit({name:o.name,href:i,viewConfig:e})}else if(t.type===s.VIEW){const o=null!==(i=null===(e=t.view)||void 0===e?void 0:e.name)&&void 0!==i?i:t.name;if(!o)continue;const r=this.views[o];if(!r)continue;const s=null===(a=this.links[o])||void 0===a?void 0:a.href;this.mrdLoadView.emit({name:o,href:s,viewConfig:r})}}emitLoadImages(){var t;for(const o of this.flattenItems(this.items))if(o.type===s.FIELD&&(null===(t=o.field)||void 0===t?void 0:t.dataType)===l.IMAGE){const t=o.field.name,r=this.data[t],e=null==r?void 0:r.href;e&&this.mrdLoadImage.emit({fieldName:t,href:e})}}flattenItems(t){const o=[];for(const r of t)o.push(r),r.items&&o.push(...this.flattenItems(r.items));return o}async setSearchResults(t,o){const r=null!=o?o:this.resolveSearchKey();r&&(this.searchResultsMap=Object.assign(Object.assign({},this.searchResultsMap),{[r]:t}))}async setViewPage(t,o,r,e,i){i&&(this.viewLinksMap=Object.assign(Object.assign({},this.viewLinksMap),{[t]:i}));const a=this.el.querySelector(`mrd-table[data-view="${t}"]`);a&&(void 0!==e&&(a.totalElements=e,await a.init()),await a.setPage(o,r))}async setViewAggregations(t,o){const r=this.el.querySelector(`mrd-table[data-view="${t}"]`);r&&await r.setAggregations(o)}async setImagePreview(t,o){this.imagePreviews=Object.assign(Object.assign({},this.imagePreviews),{[t]:o})}async openImagePreview(t){this.imagePreviewUrl=t}resolveSearchKey(){const t=this.flattenItems(this.items).filter((t=>t.type===s.SEARCH));return 1===t.length&&t[0].search?t[0].search.dataClass:null}renderSingleFieldValue(t,o){var r,i,a,s,d,u,m,v,h,y;const f=t.field,g=f.dataType;switch(g){case l.HYPERLINK:{const t=null!==(r=null==o?void 0:o.href)&&void 0!==r?r:o+"",s=null!==(a=null!==(i=null==o?void 0:o.text)&&void 0!==i?i:null==o?void 0:o.label)&&void 0!==a?a:t;return e("a",{class:"mrd-layout-section__link",href:t,target:"_blank",rel:"noopener noreferrer"},s)}case l.TEXTBLOCK:return e("span",{innerHTML:o+""});case l.LONGTEXT:return e("pre",{class:"mrd-layout-section__pre"},o+"");case l.JSON:return e("pre",{class:"mrd-layout-section__pre",innerHTML:n.formatJson(o)});case l.FILE:{const t=null!==(s=null==o?void 0:o.fileName)&&void 0!==s?s:o+"",r=null!==(d=null==o?void 0:o.href)&&void 0!==d?d:"";return e("button",{class:"mrd-layout-section__download-link",onClick:()=>r&&this.mrdDownload.emit({href:r,fileName:t})},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 t=null!==(u=null==o?void 0:o.href)&&void 0!==u?u:"",r=null!==(m=null==o?void 0:o.fileName)&&void 0!==m?m:"",i=this.imagePreviews[f.name];return i?e("button",{class:"mrd-layout-section__image-thumb-btn",onClick:()=>{this.imagePreviewUrl=i},title:r||void 0},e("img",{class:"mrd-layout-section__image-thumb",src:i,alt:r})):e("button",{class:"mrd-layout-section__download-link",onClick:()=>t&&this.mrdDownload.emit({href:t,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"})),r||t)}case l.BOOLEAN:return e("span",{class:"mrd-layout-section__boolean mrd-layout-section__boolean--"+(o?"true":"false")},c(o?"yes":"no",this.locale));case l.LIST:{const t=(null!==(v=f.listItems)&&void 0!==v?v:[]).find((t=>t.key===o+"")),r=null!==(h=null==t?void 0:t.label)&&void 0!==h?h:o+"",i=null==t?void 0:t.color,a=null==t?void 0:t.backgroundColor;return i&&a?e("span",{class:"mrd-layout-section__badge",style:{color:i,backgroundColor:a}},r):i?e("span",{class:"mrd-layout-section__badge-dot-row"},e("span",{class:"mrd-layout-section__badge-dot",style:{backgroundColor:i}}),r):r}default:return n.renderValue(g,o,null!==(y=f.listItems)&&void 0!==y?y:[],this.locale)||null}}renderFieldValue(t,o){if(null==o||""===o)return null;if(t.field.multiple&&Array.isArray(o)){const r=o.map((o=>this.renderSingleFieldValue(t,o)));return r.every((t=>"string"==typeof t||null==t))?r.filter(Boolean).join(", ")||null:e("span",null,r.map(((t,o)=>e("span",{key:o+""},t,o<r.length-1?", ":""))))}return this.renderSingleFieldValue(t,o)}renderField(t){if(!t.field)return null;const o=t.field,r=this.data[o.name],i=this.renderFieldValue(t,r);return o.header?e("h1",{class:"mrd-layout-section__field-header",key:o.name},"string"==typeof i?i:null!=r?r+"":t.label):null==i?null:e("div",{class:"mrd-layout-section__field"+(o.dataType===l.TEXTBLOCK||o.dataType===l.LONGTEXT||o.dataType===l.JSON?" mrd-layout-section__field--block":""),key:o.name},e("span",{class:"mrd-layout-section__field-label"},t.label),e("span",{class:"mrd-layout-section__field-value"},i))}renderRelation(t){var o,r,i;if(!t.relation)return null;const a=(null!==(r=null===(o=this.data)||void 0===o?void 0:o._links)&&void 0!==r?r:{})[t.relation.name];if(!a)return null;const s=(t,o)=>e("button",{key:t,class:"mrd-layout-section__relation-link",onClick:()=>this.mrdNavigate.emit({href:t,label:o})},o);let l;return(null===(i=a.values)||void 0===i?void 0:i.length)?l=a.values.map((t=>s(t.href,t.name))):a.name&&(l=s(a.href,a.name)),l?e("div",{class:"mrd-layout-section__field",key:t.relation.name},e("span",{class:"mrd-layout-section__field-label"},t.label),e("span",{class:"mrd-layout-section__field-value"},l)):null}renderSearch(t){var o,r,i;if(!t.search)return null;const a=t.search.dataClass,s=null!==(o=this.searchQueryMap[a])&&void 0!==o?o:"",l=null!==(r=this.searchResultsMap[a])&&void 0!==r?r:[];return e("div",{class:"mrd-layout-section__search",key:"search-"+a},e("input",{class:"mrd-layout-section__search-input",type:"text",value:s,placeholder:null!==(i=t.label)&&void 0!==i?i:"",onInput:t=>this.handleSearchInput(a,t.target.value)}),l.length>0&&e("ul",{class:"mrd-layout-section__search-results"},l.map((t=>e("li",{key:t.id,class:"mrd-layout-section__search-result"},e("button",{class:"mrd-layout-section__search-result-btn",onClick:()=>this.mrdNavigate.emit({href:t.id,label:t.label})},e("span",{class:"mrd-layout-section__search-result-label"},t.label),t.description&&e("span",{class:"mrd-layout-section__search-result-desc"},t.description)))))))}renderRelatedView(t){var o,r,i,a,l,n,d,u,m,v,h,y,f,g,p,_,b,w;const k=t.type===s.RELATED_VIEW,x=k?null===(o=t.relatedView)||void 0===o?void 0:o.name:null!==(i=null===(r=t.view)||void 0===r?void 0:r.name)&&void 0!==i?i:t.name;if(!x)return null;const z=this.views[x];if(!z)return null;const j=k?null===(a=t.relatedView)||void 0===a?void 0:a.showTitle:null!==(d=null!==(n=null===(l=t.view)||void 0===l?void 0:l.showTitle)&&void 0!==n?n:t.showTitle)&&void 0!==d&&d,C=null!==(u=this.activeViewMap[x])&&void 0!==u?u:x,O=null!==(m=this.views[C])&&void 0!==m?m:z,L=null!==(y=null!==(h=null!==(v=z.pluralLabel)&&void 0!==v?v:z.singularLabel)&&void 0!==h?h:t.label)&&void 0!==y?y:x,V=[{name:x,label:L},...null!==(f=t.alternativeViews)&&void 0!==f?f:[]],M=V.find((t=>t.name===C)),P=null!==(_=null!==(p=null!==(g=null==M?void 0:M.label)&&void 0!==g?g:O.pluralLabel)&&void 0!==p?p:O.singularLabel)&&void 0!==_?_:"",I=V.filter((t=>t.name!==C)),E=(null!==(b=t.actions)&&void 0!==b?b:["NEW","EXPORT"]).reduce(((t,o)=>("NEW"===o&&t.push({action:"create",label:c("table_new_record",this.locale),icon:"assets/sprites.svg#icon-plus",variant:"primary"}),"EXPORT"===o&&t.push({action:"export",label:c("table_export_excel",this.locale),icon:"assets/sprites.svg#icon-file-excel"}),t)),[]);return e("div",{class:"mrd-layout-section__related-view",key:"view-"+x},j&&t.label&&e("h3",{class:"mrd-layout-section__related-view-title"},t.label),e("mrd-table",{"data-view":x,columns:O.values,locale:this.locale,defaultSort:null!==(w=O.defaultSort)&&void 0!==w?w:"",viewLabel:P,alternativeViews:I,actions:E,onMrdLoadPage:t=>this.handleViewLoadPage(t,x),onMrdSwitchView:o=>{var r,e,i,a,s,l;o.stopPropagation();const n=o.detail.name,d=this.views[n];if(!d)return;this.activeViewMap=Object.assign(Object.assign({},this.activeViewMap),{[x]:n}),this.activeFiltersMap=Object.assign(Object.assign({},this.activeFiltersMap),{[x]:[]});const c=null!==(e=null===(r=this.data)||void 0===r?void 0:r._links)&&void 0!==e?e:{},u=k?null===(i=c[t.relatedView.relatedClass])||void 0===i?void 0:i.href:null!==(s=null===(a=this.links[n])||void 0===a?void 0:a.href)&&void 0!==s?s:null===(l=this.links[x])||void 0===l?void 0:l.href;this.mrdLoadView.emit({name:x,href:u,viewConfig:d})},onMrdFilter:t=>{t.stopPropagation(),this.activeFiltersMap=Object.assign(Object.assign({},this.activeFiltersMap),{[x]:t.detail.filters})},onMrdLoadAggregations:o=>{var r,e,i,a,s,l,n,d;o.stopPropagation();const c=null!==(e=null===(r=this.data)||void 0===r?void 0:r._links)&&void 0!==e?e:{},u=k?null===(i=c[t.relatedView.relatedClass])||void 0===i?void 0:i.href:null!==(l=null===(s=this.links[null!==(a=this.activeViewMap[x])&&void 0!==a?a:x])||void 0===s?void 0:s.href)&&void 0!==l?l:null===(n=this.links[x])||void 0===n?void 0:n.href,m=null!==(d=this.activeFiltersMap[x])&&void 0!==d?d:[];this.mrdLoadViewAggregations.emit(Object.assign({name:x,href:u,filters:m},o.detail))},onMrdAction:t=>{var o,r,e;t.stopPropagation();const i=null!==(o=this.viewLinksMap[x])&&void 0!==o?o:{},a="export"===t.detail.action?null===(r=i.excel)||void 0===r?void 0:r.href:null===(e=i.self)||void 0===e?void 0:e.href;this.mrdViewAction.emit({name:x,action:t.detail.action,href:a})}}))}renderItem(t){var o,r;switch(t.type){case s.FIELD:return this.renderField(t);case s.RELATION:return this.renderRelation(t);case s.HEADER:return e("h2",{class:"mrd-layout-section__header",key:"header-"+t.label},t.label);case s.TEXT:return e("div",{class:"mrd-layout-section__text",key:"text-"+t.label,innerHTML:null!==(o=t.label)&&void 0!==o?o:""});case s.NAVIGATE:return e("button",{class:"mrd-layout-section__navigate",key:"nav-"+t.label,onClick:()=>{var o;return this.mrdNavigate.emit({label:null!==(o=t.label)&&void 0!==o?o:"",navigate:t.navigate})}},t.label);case s.SEARCH:return this.renderSearch(t);case s.SECTION:case s.GROUP:return e("div",{class:"mrd-layout-section__group",key:"group-"+t.label},t.label&&e("h3",{class:"mrd-layout-section__group-title"},t.label),(null!==(r=t.items)&&void 0!==r?r:[]).map((t=>this.renderItem(t))));case s.RELATED_VIEW:case s.VIEW:return this.renderRelatedView(t);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:t=>t.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(i,{key:"167da935ac968ff16904efc671394c0223b47844"},e("div",{key:"b3e91cab524e51e40a207581fb6eaf9c1e57eef3",class:"mrd-layout-section"},this.items.map((t=>this.renderItem(t)))),this.renderImageModal())}get el(){return this}static get watchers(){return{links:[{linksChanged:0}],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-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);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],activeViewMap:[32],setSearchResults:[64],setViewPage:[64],setViewAggregations:[64],setImagePreview:[64],openImagePreview:[64]},void 0,{links:[{linksChanged:0}],data:[{dataChanged:0}]}]),m=u,v=function(){"undefined"!=typeof customElements&&["mrd-layout-section","mrd-table"].forEach((t=>{switch(t){case"mrd-layout-section":customElements.get(a(t))||customElements.define(a(t),u);break;case"mrd-table":customElements.get(a(t))||d()}}))};export{m as MrdLayoutSection,v as defineCustomElement}
|
|
@@ -1392,10 +1392,13 @@ const MrdLayoutSection = class {
|
|
|
1392
1392
|
this.imagePreviews = {};
|
|
1393
1393
|
this.activeViewMap = {};
|
|
1394
1394
|
this.viewLinksMap = {};
|
|
1395
|
+
this.activeFiltersMap = {};
|
|
1395
1396
|
this.searchTimers = {};
|
|
1396
1397
|
this.handleViewLoadPage = (e, name) => {
|
|
1398
|
+
var _a;
|
|
1397
1399
|
e.stopPropagation();
|
|
1398
|
-
this.
|
|
1400
|
+
const filters = (_a = this.activeFiltersMap[name]) !== null && _a !== void 0 ? _a : [];
|
|
1401
|
+
this.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort, filters });
|
|
1399
1402
|
};
|
|
1400
1403
|
this.handleSearchInput = (dataClass, query) => {
|
|
1401
1404
|
this.searchQueryMap = Object.assign(Object.assign({}, this.searchQueryMap), { [dataClass]: query });
|
|
@@ -1631,7 +1634,7 @@ const MrdLayoutSection = class {
|
|
|
1631
1634
|
return (h("div", { class: "mrd-layout-section__search", key: `search-${dataClass}` }, h("input", { class: "mrd-layout-section__search-input", type: "text", value: query, placeholder: (_c = item.label) !== null && _c !== void 0 ? _c : '', onInput: e => this.handleSearchInput(dataClass, e.target.value) }), results.length > 0 && (h("ul", { class: "mrd-layout-section__search-results" }, results.map(r => (h("li", { key: r.id, class: "mrd-layout-section__search-result" }, h("button", { class: "mrd-layout-section__search-result-btn", onClick: () => this.mrdNavigate.emit({ href: r.id, label: r.label }) }, h("span", { class: "mrd-layout-section__search-result-label" }, r.label), r.description && h("span", { class: "mrd-layout-section__search-result-desc" }, r.description)))))))));
|
|
1632
1635
|
}
|
|
1633
1636
|
renderRelatedView(item) {
|
|
1634
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
1637
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
1635
1638
|
const isRelated = item.type === ClientLayoutItemType.RELATED_VIEW;
|
|
1636
1639
|
// Support both nested (item.view / item.relatedView) and flat API format (item.name)
|
|
1637
1640
|
const name = isRelated
|
|
@@ -1645,11 +1648,15 @@ const MrdLayoutSection = class {
|
|
|
1645
1648
|
const showTitle = isRelated
|
|
1646
1649
|
? (_d = item.relatedView) === null || _d === void 0 ? void 0 : _d.showTitle
|
|
1647
1650
|
: ((_g = (_f = (_e = item.view) === null || _e === void 0 ? void 0 : _e.showTitle) !== null && _f !== void 0 ? _f : item.showTitle) !== null && _g !== void 0 ? _g : false);
|
|
1648
|
-
const altViews = item.alternativeViews;
|
|
1649
1651
|
const activeName = (_h = this.activeViewMap[name]) !== null && _h !== void 0 ? _h : name;
|
|
1650
1652
|
const activeViewConfig = (_j = this.views[activeName]) !== null && _j !== void 0 ? _j : viewConfig;
|
|
1651
|
-
|
|
1652
|
-
const
|
|
1653
|
+
// Build the full view list (original + alternatives) so the switcher can always go back.
|
|
1654
|
+
const originalLabel = (_m = (_l = (_k = viewConfig.pluralLabel) !== null && _k !== void 0 ? _k : viewConfig.singularLabel) !== null && _l !== void 0 ? _l : item.label) !== null && _m !== void 0 ? _m : name;
|
|
1655
|
+
const allViews = [{ name, label: originalLabel }, ...((_o = item.alternativeViews) !== null && _o !== void 0 ? _o : [])];
|
|
1656
|
+
const activeEntry = allViews.find(v => v.name === activeName);
|
|
1657
|
+
const viewLabel = (_r = (_q = (_p = activeEntry === null || activeEntry === void 0 ? void 0 : activeEntry.label) !== null && _p !== void 0 ? _p : activeViewConfig.pluralLabel) !== null && _q !== void 0 ? _q : activeViewConfig.singularLabel) !== null && _r !== void 0 ? _r : '';
|
|
1658
|
+
const altViews = allViews.filter(v => v.name !== activeName);
|
|
1659
|
+
const rawActions = (_s = item.actions) !== null && _s !== void 0 ? _s : ['NEW', 'EXPORT'];
|
|
1653
1660
|
const tableActions = rawActions.reduce((acc, a) => {
|
|
1654
1661
|
if (a === 'NEW')
|
|
1655
1662
|
acc.push({ action: 'create', label: t('table_new_record', this.locale), icon: 'assets/sprites.svg#icon-plus', variant: 'primary' });
|
|
@@ -1657,7 +1664,7 @@ const MrdLayoutSection = class {
|
|
|
1657
1664
|
acc.push({ action: 'export', label: t('table_export_excel', this.locale), icon: 'assets/sprites.svg#icon-file-excel' });
|
|
1658
1665
|
return acc;
|
|
1659
1666
|
}, []);
|
|
1660
|
-
return (h("div", { class: "mrd-layout-section__related-view", key: `view-${name}` }, showTitle && item.label && h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), h("mrd-table", { "data-view": name, columns: activeViewConfig.values, locale: this.locale, defaultSort: (
|
|
1667
|
+
return (h("div", { class: "mrd-layout-section__related-view", key: `view-${name}` }, showTitle && item.label && h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), h("mrd-table", { "data-view": name, columns: activeViewConfig.values, locale: this.locale, defaultSort: (_t = activeViewConfig.defaultSort) !== null && _t !== void 0 ? _t : '', viewLabel: viewLabel, alternativeViews: altViews, actions: tableActions, onMrdLoadPage: (e) => this.handleViewLoadPage(e, name), onMrdSwitchView: (e) => {
|
|
1661
1668
|
var _a, _b, _c, _d, _e, _f;
|
|
1662
1669
|
e.stopPropagation();
|
|
1663
1670
|
const newViewName = e.detail.name;
|
|
@@ -1665,19 +1672,24 @@ const MrdLayoutSection = class {
|
|
|
1665
1672
|
if (!newViewConfig)
|
|
1666
1673
|
return;
|
|
1667
1674
|
this.activeViewMap = Object.assign(Object.assign({}, this.activeViewMap), { [name]: newViewName });
|
|
1675
|
+
this.activeFiltersMap = Object.assign(Object.assign({}, this.activeFiltersMap), { [name]: [] });
|
|
1668
1676
|
const dataLinks = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
1669
1677
|
const href = isRelated
|
|
1670
1678
|
? (_c = dataLinks[item.relatedView.relatedClass]) === null || _c === void 0 ? void 0 : _c.href
|
|
1671
1679
|
: ((_e = (_d = this.links[newViewName]) === null || _d === void 0 ? void 0 : _d.href) !== null && _e !== void 0 ? _e : (_f = this.links[name]) === null || _f === void 0 ? void 0 : _f.href);
|
|
1672
1680
|
this.mrdLoadView.emit({ name, href, viewConfig: newViewConfig });
|
|
1681
|
+
}, onMrdFilter: (e) => {
|
|
1682
|
+
e.stopPropagation();
|
|
1683
|
+
this.activeFiltersMap = Object.assign(Object.assign({}, this.activeFiltersMap), { [name]: e.detail.filters });
|
|
1673
1684
|
}, onMrdLoadAggregations: (e) => {
|
|
1674
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
1685
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1675
1686
|
e.stopPropagation();
|
|
1676
1687
|
const dataLinks = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
1677
1688
|
const href = isRelated
|
|
1678
1689
|
? (_c = dataLinks[item.relatedView.relatedClass]) === null || _c === void 0 ? void 0 : _c.href
|
|
1679
1690
|
: ((_f = (_e = this.links[(_d = this.activeViewMap[name]) !== null && _d !== void 0 ? _d : name]) === null || _e === void 0 ? void 0 : _e.href) !== null && _f !== void 0 ? _f : (_g = this.links[name]) === null || _g === void 0 ? void 0 : _g.href);
|
|
1680
|
-
this.
|
|
1691
|
+
const filters = (_h = this.activeFiltersMap[name]) !== null && _h !== void 0 ? _h : [];
|
|
1692
|
+
this.mrdLoadViewAggregations.emit(Object.assign({ name, href, filters }, e.detail));
|
|
1681
1693
|
}, onMrdAction: (e) => {
|
|
1682
1694
|
var _a, _b, _c;
|
|
1683
1695
|
e.stopPropagation();
|
|
@@ -1717,7 +1729,7 @@ const MrdLayoutSection = class {
|
|
|
1717
1729
|
return (h("div", { class: "mrd-layout-section__modal-backdrop", onClick: () => { this.imagePreviewUrl = null; } }, h("div", { class: "mrd-layout-section__modal", onClick: (e) => e.stopPropagation() }, h("button", { class: "mrd-layout-section__modal-close", onClick: () => { this.imagePreviewUrl = null; } }, "\u2715"), h("img", { class: "mrd-layout-section__modal-image", src: this.imagePreviewUrl, alt: "" }))));
|
|
1718
1730
|
}
|
|
1719
1731
|
render() {
|
|
1720
|
-
return (h(Host, { key: '
|
|
1732
|
+
return (h(Host, { key: '167da935ac968ff16904efc671394c0223b47844' }, h("div", { key: 'b3e91cab524e51e40a207581fb6eaf9c1e57eef3', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
|
|
1721
1733
|
}
|
|
1722
1734
|
get el() { return getElement(this); }
|
|
1723
1735
|
static get watchers() { return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e,b as l}from"./p-_tsCCkAi.js";export{s as setNonce}from"./p-_tsCCkAi.js";import{g as a}from"./p-DQuL1Twl.js";(()=>{const l=import.meta.url,a={};return""!==l&&(a.resourcesUrl=new URL(".",l).href),e(a)})().then((async e=>(await a(),l([["p-
|
|
1
|
+
import{p as e,b as l}from"./p-_tsCCkAi.js";export{s as setNonce}from"./p-_tsCCkAi.js";import{g as a}from"./p-DQuL1Twl.js";(()=>{const l=import.meta.url,a={};return""!==l&&(a.resourcesUrl=new URL(".",l).href),e(a)})().then((async e=>(await a(),l([["p-252311b1",[[2,"mrd-form",{layout:[16],locale:[1],values:[16],referenceHref:[1,"reference-href"],referenceClass:[1,"reference-class"],showCancel:[4,"show-cancel"],formValues:[32],errors:[32],submitted:[32],setFieldValue:[64]},null,{values:[{valuesChanged:0}]}],[2,"mrd-layout-section",{items:[16],data:[16],views:[16],links:[16],locale:[1],searchQueryMap:[32],searchResultsMap:[32],imagePreviewUrl:[32],imagePreviews:[32],activeViewMap:[32],setSearchResults:[64],setViewPage:[64],setViewAggregations:[64],setImagePreview:[64],openImagePreview:[64]},null,{links:[{linksChanged:0}],data:[{dataChanged:0}]}],[2,"mrd-field",{item:[16],locale:[1],value:[16]}],[2,"mrd-table",{columns:[16],rows:[16],locale:[1],totalElements:[2,"total-elements"],pageSize:[2,"page-size"],rowHeight:[2,"row-height"],tableHeight:[2,"table-height"],defaultSort:[1,"default-sort"],actions:[16],viewLabel:[1,"view-label"],alternativeViews:[16],loadedPages:[32],requestedPages:[32],renderStart:[32],renderEnd:[32],colWidths:[32],sortField:[32],sortDir:[32],filterMode:[32],activeFilters:[32],openFilterCol:[32],pendingFilter:[32],popupPos:[32],scrollTop:[32],textblockModal:[32],jsonModal:[32],aggregations:[32],init:[64],setPage:[64],setAggregations:[64]},null,{totalElements:[{totalElementsChanged:0}]}],[2,"mrd-boolean-field",{name:[1],label:[1],value:[4],required:[4],disabled:[4],locale:[1],checked:[32]}],[2,"mrd-currency-field",{name:[1],label:[1],value:[16],required:[4],disabled:[4],locale:[1],amountDisplay:[32],currency:[32],error:[32]}],[2,"mrd-date-field",{name:[1],label:[1],value:[1],required:[4],disabled:[4],locale:[1],error:[32]}],[2,"mrd-datetime-field",{name:[1],label:[1],value:[1],required:[4],disabled:[4],locale:[1],error:[32],localValue:[32]},null,{value:[{valueChanged:0}]}],[2,"mrd-email-field",{name:[1],label:[1],value:[1],placeholder:[1],required:[4],disabled:[4],locale:[1],error:[32]}],[2,"mrd-file-field",{name:[1],label:[1],value:[16],required:[4],disabled:[4],locale:[1],accept:[1],maxSize:[2,"max-size"],fileName:[32],isDragging:[32],uploading:[32],error:[32]},null,{value:[{valueChanged:0}]}],[2,"mrd-hyperlink-field",{name:[1],label:[1],value:[1],placeholder:[1],required:[4],disabled:[4],locale:[1],error:[32]}],[2,"mrd-image-field",{name:[1],label:[1],value:[16],required:[4],disabled:[4],locale:[1],accept:[1],maxSize:[2,"max-size"],previewUrl:[32],fileName:[32],isDragging:[32],uploading:[32],error:[32]},null,{value:[{valueChanged:0}]}],[2,"mrd-list-field",{name:[1],label:[1],value:[1],required:[4],disabled:[4],multiple:[4],locale:[1],listItems:[16],error:[32],selected:[32]}],[2,"mrd-longtext-field",{name:[1],label:[1],value:[1],placeholder:[1],required:[4],disabled:[4],locale:[1],error:[32]}],[2,"mrd-number-field",{name:[1],label:[1],value:[2],placeholder:[1],required:[4],disabled:[4],locale:[1],dataType:[1,"data-type"],decimalPrecision:[2,"decimal-precision"],displayValue:[32],error:[32]}],[2,"mrd-relation-field",{name:[1],label:[1],required:[4],disabled:[4],locale:[1],relatedClass:[1,"related-class"],mostSignificantClass:[1,"most-significant-class"],displayType:[1,"display-type"],editBehavior:[1,"edit-behavior"],commonRelation:[1,"common-relation"],multiple:[4],dropdownValues:[16],value:[1],searchQuery:[32],searchResults:[32],allRecords:[32],isLoading:[32],selectedItems:[32],showResults:[32],error:[32],highlightedIndex:[32],setAllRecords:[64],setSearchResults:[64],setLoading:[64]},null,{allRecords:[{allRecordsChanged:0}]}],[2,"mrd-text-field",{name:[1],label:[1],value:[1],placeholder:[1],required:[4],disabled:[4],locale:[1],error:[32]}],[2,"mrd-textarea-field",{name:[1],label:[1],value:[1],placeholder:[1],required:[4],disabled:[4],locale:[1],error:[32],editorReady:[32]}],[2,"mrd-time-field",{name:[1],label:[1],value:[1],required:[4],disabled:[4],locale:[1],error:[32]}]]]],e))));
|