@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.
@@ -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.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort });
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
- const viewLabel = (_m = (_l = (_k = item.label) !== null && _k !== void 0 ? _k : activeViewConfig.pluralLabel) !== null && _l !== void 0 ? _l : activeViewConfig.singularLabel) !== null && _m !== void 0 ? _m : '';
1654
- const rawActions = (_o = item.actions) !== null && _o !== void 0 ? _o : ['NEW', 'EXPORT'];
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: (_p = activeViewConfig.defaultSort) !== null && _p !== void 0 ? _p : '', viewLabel: viewLabel, alternativeViews: altViews, actions: tableActions, onMrdLoadPage: (e) => this.handleViewLoadPage(e, name), onMrdSwitchView: (e) => {
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.mrdLoadViewAggregations.emit(Object.assign({ name, href }, e.detail));
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: '61e2e24dfc38480f95a76ae5b433fcdf31c7c2ab' }, index.h("div", { key: 'bbe3fa8d350cb8175ae3884ba879463d172fd65b', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
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.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort });
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
- const viewLabel = (_m = (_l = (_k = item.label) !== null && _k !== void 0 ? _k : activeViewConfig.pluralLabel) !== null && _l !== void 0 ? _l : activeViewConfig.singularLabel) !== null && _m !== void 0 ? _m : '';
279
- const rawActions = (_o = item.actions) !== null && _o !== void 0 ? _o : ['NEW', 'EXPORT'];
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: (_p = activeViewConfig.defaultSort) !== null && _p !== void 0 ? _p : '', viewLabel: viewLabel, alternativeViews: altViews, actions: tableActions, onMrdLoadPage: (e) => this.handleViewLoadPage(e, name), onMrdSwitchView: (e) => {
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.mrdLoadViewAggregations.emit(Object.assign({ name, href }, e.detail));
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: '61e2e24dfc38480f95a76ae5b433fcdf31c7c2ab' }, h("div", { key: 'bbe3fa8d350cb8175ae3884ba879463d172fd65b', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
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.mrdLoadViewPage.emit({ name, page: e.detail.page, sort: e.detail.sort });
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
- const viewLabel = (_m = (_l = (_k = item.label) !== null && _k !== void 0 ? _k : activeViewConfig.pluralLabel) !== null && _l !== void 0 ? _l : activeViewConfig.singularLabel) !== null && _m !== void 0 ? _m : '';
1652
- const rawActions = (_o = item.actions) !== null && _o !== void 0 ? _o : ['NEW', 'EXPORT'];
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: (_p = activeViewConfig.defaultSort) !== null && _p !== void 0 ? _p : '', viewLabel: viewLabel, alternativeViews: altViews, actions: tableActions, onMrdLoadPage: (e) => this.handleViewLoadPage(e, name), onMrdSwitchView: (e) => {
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.mrdLoadViewAggregations.emit(Object.assign({ name, href }, e.detail));
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: '61e2e24dfc38480f95a76ae5b433fcdf31c7c2ab' }, h("div", { key: 'bbe3fa8d350cb8175ae3884ba879463d172fd65b', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
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-7a4dc3cd",[[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))));
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))));