ngx-view-builder 0.1.3 → 0.1.4

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.
Files changed (22) hide show
  1. package/fesm2022/{ngx-view-builder-avatar-element-B8Nh4G0m.mjs → ngx-view-builder-avatar-element-C0EXsHCI.mjs} +2 -2
  2. package/fesm2022/{ngx-view-builder-avatar-element-B8Nh4G0m.mjs.map → ngx-view-builder-avatar-element-C0EXsHCI.mjs.map} +1 -1
  3. package/fesm2022/{ngx-view-builder-breadcrumbs-element-DZmo2VAq.mjs → ngx-view-builder-breadcrumbs-element-BihMIpWr.mjs} +2 -2
  4. package/fesm2022/{ngx-view-builder-breadcrumbs-element-BaJoW3s7.mjs.map → ngx-view-builder-breadcrumbs-element-BihMIpWr.mjs.map} +1 -1
  5. package/fesm2022/{ngx-view-builder-icon-element-Bu2EWVKX.mjs → ngx-view-builder-icon-element-CSKRNSAU.mjs} +2 -2
  6. package/fesm2022/{ngx-view-builder-icon-element-Bu2EWVKX.mjs.map → ngx-view-builder-icon-element-CSKRNSAU.mjs.map} +1 -1
  7. package/fesm2022/{ngx-view-builder-ngx-view-builder-_VdHLdIW.mjs → ngx-view-builder-ngx-view-builder-CYvIsFw-.mjs} +6 -6
  8. package/fesm2022/{ngx-view-builder-ngx-view-builder-_VdHLdIW.mjs.map → ngx-view-builder-ngx-view-builder-CYvIsFw-.mjs.map} +1 -1
  9. package/fesm2022/{ngx-view-builder-toast-element-B1DxJdDY.mjs → ngx-view-builder-toast-element-CclIxegL.mjs} +2 -2
  10. package/fesm2022/{ngx-view-builder-toast-element-DQ8mU1zc.mjs.map → ngx-view-builder-toast-element-CclIxegL.mjs.map} +1 -1
  11. package/fesm2022/ngx-view-builder.mjs +1 -1
  12. package/package.json +3 -1
  13. package/fesm2022/ngx-view-builder-avatar-element-B_Cx5xnx.mjs +0 -77
  14. package/fesm2022/ngx-view-builder-avatar-element-B_Cx5xnx.mjs.map +0 -1
  15. package/fesm2022/ngx-view-builder-breadcrumbs-element-BaJoW3s7.mjs +0 -249
  16. package/fesm2022/ngx-view-builder-breadcrumbs-element-DZmo2VAq.mjs.map +0 -1
  17. package/fesm2022/ngx-view-builder-icon-element-DFW1jVp8.mjs +0 -63
  18. package/fesm2022/ngx-view-builder-icon-element-DFW1jVp8.mjs.map +0 -1
  19. package/fesm2022/ngx-view-builder-ngx-view-builder-C9rZ5zQM.mjs +0 -90260
  20. package/fesm2022/ngx-view-builder-ngx-view-builder-C9rZ5zQM.mjs.map +0 -1
  21. package/fesm2022/ngx-view-builder-toast-element-B1DxJdDY.mjs.map +0 -1
  22. package/fesm2022/ngx-view-builder-toast-element-DQ8mU1zc.mjs +0 -188
@@ -1,7 +1,7 @@
1
1
  import { NgStyle } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { input, signal, inject, computed, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import { E as ElementActionService, a as ElementWrapper, D as DynamicTextPipe } from './ngx-view-builder-ngx-view-builder-_VdHLdIW.mjs';
4
+ import { E as ElementActionService, a as ElementWrapper, D as DynamicTextPipe } from './ngx-view-builder-ngx-view-builder-CYvIsFw-.mjs';
5
5
 
6
6
  class AvatarElement {
7
7
  model = input.required(...(ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []));
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
74
74
  }], propDecorators: { model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: true }] }] } });
75
75
 
76
76
  export { AvatarElement };
77
- //# sourceMappingURL=ngx-view-builder-avatar-element-B8Nh4G0m.mjs.map
77
+ //# sourceMappingURL=ngx-view-builder-avatar-element-C0EXsHCI.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-view-builder-avatar-element-B8Nh4G0m.mjs","sources":["../../../projects/ngx-view-builder/src/lib/core/shared/elements/avatar-element/avatar-element.ts","../../../projects/ngx-view-builder/src/lib/core/shared/elements/avatar-element/avatar-element.html"],"sourcesContent":["import { NgStyle } from '@angular/common';\r\nimport { Component, computed, inject, input, signal, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { ElementWrapper } from '../../components/element-wrapper/element-wrapper';\r\n\r\nimport { AvatarModel } from '../../models/elements/avatar.model';\r\n\r\nimport { DynamicTextPipe } from '../../pipes/dynamic-text.pipe';\r\n\r\nimport { ElementActionService } from '../../services/element-action.service';\r\n\r\n@Component({\r\n selector: 'avatar-element',\r\n\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n imports: [ElementWrapper, NgStyle, DynamicTextPipe],\r\n\r\n templateUrl: './avatar-element.html',\r\n\r\n styleUrl: './avatar-element.scss',\r\n})\r\nexport class AvatarElement {\r\n model = input.required<AvatarModel>();\r\n\r\n previewOpen = signal<boolean>(false);\r\n\r\n previewSrc = signal<string>('');\r\n\r\n private elementActionService = inject(ElementActionService);\r\n\r\n avatarStyle = computed<Record<string, string>>(() => {\r\n const sizeRaw = Number(this.model()?.size);\r\n\r\n const size = Number.isFinite(sizeRaw) && sizeRaw > 0 ? Math.floor(sizeRaw) : 48;\r\n\r\n const shape = String(this.model()?.shape ?? 'circle')\r\n .trim()\r\n\r\n .toLowerCase();\r\n\r\n return {\r\n width: `${size}px`,\r\n\r\n height: `${size}px`,\r\n\r\n 'border-radius': shape === 'square' ? '10px' : '999px',\r\n\r\n 'background-color': String(this.model()?.backgroundColor ?? '#dfe6ff').trim() || '#dfe6ff',\r\n\r\n color: String(this.model()?.textColor ?? '#1b2d6b').trim() || '#1b2d6b',\r\n\r\n border: this.model().showBorder ? '1px solid var(--color-neutral-300)' : 'none',\r\n };\r\n });\r\n\r\n initials = computed(() => {\r\n const value = String(this.model()?.nameText ?? '').trim();\r\n\r\n if (!value) {\r\n return 'U';\r\n }\r\n\r\n const parts = value\r\n\r\n .split(/\\s+/)\r\n\r\n .map((part) => part.trim())\r\n\r\n .filter((part) => part.length > 0);\r\n\r\n if (!parts.length) {\r\n return 'U';\r\n }\r\n\r\n return parts\r\n\r\n .slice(0, 2)\r\n\r\n .map((part) => part[0].toUpperCase())\r\n\r\n .join('');\r\n });\r\n\r\n onAvatarClick(src: string, event: MouseEvent): void {\r\n event.preventDefault();\r\n\r\n event.stopPropagation();\r\n\r\n const runtimeContext: Record<string, unknown> = {\r\n value: src || this.initials(),\r\n\r\n item: null,\r\n\r\n row: null,\r\n };\r\n\r\n const elementName = String(this.model().name ?? '').trim();\r\n\r\n if (elementName) {\r\n runtimeContext[elementName] = runtimeContext['value'];\r\n }\r\n\r\n void this.elementActionService.runActions(\r\n this.model(),\r\n\r\n this.model().events ?? [],\r\n\r\n 'click',\r\n\r\n runtimeContext,\r\n );\r\n\r\n if (!this.model().showPreview || !src) {\r\n return;\r\n }\r\n\r\n this.previewSrc.set(src);\r\n\r\n this.previewOpen.set(true);\r\n }\r\n\r\n closePreview(event?: Event): void {\r\n event?.preventDefault();\r\n\r\n event?.stopPropagation();\r\n\r\n this.previewOpen.set(false);\r\n\r\n this.previewSrc.set('');\r\n }\r\n}\r\n","<element-wrapper [model]=\"model()\">\r\n @let avatarSrc = model().src | dynamicText: model();\r\n @let avatarName = model().nameText | dynamicText: model();\r\n\r\n <div class=\"nvb-avatar-wrap\" data-testid=\"avatar-root\">\r\n <button\r\n type=\"button\"\r\n class=\"nvb-avatar\"\r\n [ngStyle]=\"avatarStyle()\"\r\n (click)=\"onAvatarClick(avatarSrc, $event)\"\r\n >\r\n @if (avatarSrc) {\r\n <img [src]=\"avatarSrc\" [alt]=\"avatarName\" />\r\n } @else {\r\n <span>{{ initials() }}</span>\r\n }\r\n </button>\r\n </div>\r\n\r\n @if (previewOpen()) {\r\n <div class=\"nvb-avatar-preview\" (click)=\"closePreview()\">\r\n <button type=\"button\" class=\"nvb-avatar-preview__close\" (click)=\"closePreview($event)\">\r\n <span class=\"material-symbols-outlined\">close</span>\r\n </button>\r\n <img [src]=\"previewSrc()\" [alt]=\"avatarName\" />\r\n </div>\r\n }\r\n</element-wrapper>\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-view-builder-avatar-element-C0EXsHCI.mjs","sources":["../../../projects/ngx-view-builder/src/lib/core/shared/elements/avatar-element/avatar-element.ts","../../../projects/ngx-view-builder/src/lib/core/shared/elements/avatar-element/avatar-element.html"],"sourcesContent":["import { NgStyle } from '@angular/common';\r\nimport { Component, computed, inject, input, signal, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { ElementWrapper } from '../../components/element-wrapper/element-wrapper';\r\n\r\nimport { AvatarModel } from '../../models/elements/avatar.model';\r\n\r\nimport { DynamicTextPipe } from '../../pipes/dynamic-text.pipe';\r\n\r\nimport { ElementActionService } from '../../services/element-action.service';\r\n\r\n@Component({\r\n selector: 'avatar-element',\r\n\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n imports: [ElementWrapper, NgStyle, DynamicTextPipe],\r\n\r\n templateUrl: './avatar-element.html',\r\n\r\n styleUrl: './avatar-element.scss',\r\n})\r\nexport class AvatarElement {\r\n model = input.required<AvatarModel>();\r\n\r\n previewOpen = signal<boolean>(false);\r\n\r\n previewSrc = signal<string>('');\r\n\r\n private elementActionService = inject(ElementActionService);\r\n\r\n avatarStyle = computed<Record<string, string>>(() => {\r\n const sizeRaw = Number(this.model()?.size);\r\n\r\n const size = Number.isFinite(sizeRaw) && sizeRaw > 0 ? Math.floor(sizeRaw) : 48;\r\n\r\n const shape = String(this.model()?.shape ?? 'circle')\r\n .trim()\r\n\r\n .toLowerCase();\r\n\r\n return {\r\n width: `${size}px`,\r\n\r\n height: `${size}px`,\r\n\r\n 'border-radius': shape === 'square' ? '10px' : '999px',\r\n\r\n 'background-color': String(this.model()?.backgroundColor ?? '#dfe6ff').trim() || '#dfe6ff',\r\n\r\n color: String(this.model()?.textColor ?? '#1b2d6b').trim() || '#1b2d6b',\r\n\r\n border: this.model().showBorder ? '1px solid var(--color-neutral-300)' : 'none',\r\n };\r\n });\r\n\r\n initials = computed(() => {\r\n const value = String(this.model()?.nameText ?? '').trim();\r\n\r\n if (!value) {\r\n return 'U';\r\n }\r\n\r\n const parts = value\r\n\r\n .split(/\\s+/)\r\n\r\n .map((part) => part.trim())\r\n\r\n .filter((part) => part.length > 0);\r\n\r\n if (!parts.length) {\r\n return 'U';\r\n }\r\n\r\n return parts\r\n\r\n .slice(0, 2)\r\n\r\n .map((part) => part[0].toUpperCase())\r\n\r\n .join('');\r\n });\r\n\r\n onAvatarClick(src: string, event: MouseEvent): void {\r\n event.preventDefault();\r\n\r\n event.stopPropagation();\r\n\r\n const runtimeContext: Record<string, unknown> = {\r\n value: src || this.initials(),\r\n\r\n item: null,\r\n\r\n row: null,\r\n };\r\n\r\n const elementName = String(this.model().name ?? '').trim();\r\n\r\n if (elementName) {\r\n runtimeContext[elementName] = runtimeContext['value'];\r\n }\r\n\r\n void this.elementActionService.runActions(\r\n this.model(),\r\n\r\n this.model().events ?? [],\r\n\r\n 'click',\r\n\r\n runtimeContext,\r\n );\r\n\r\n if (!this.model().showPreview || !src) {\r\n return;\r\n }\r\n\r\n this.previewSrc.set(src);\r\n\r\n this.previewOpen.set(true);\r\n }\r\n\r\n closePreview(event?: Event): void {\r\n event?.preventDefault();\r\n\r\n event?.stopPropagation();\r\n\r\n this.previewOpen.set(false);\r\n\r\n this.previewSrc.set('');\r\n }\r\n}\r\n","<element-wrapper [model]=\"model()\">\r\n @let avatarSrc = model().src | dynamicText: model();\r\n @let avatarName = model().nameText | dynamicText: model();\r\n\r\n <div class=\"nvb-avatar-wrap\" data-testid=\"avatar-root\">\r\n <button\r\n type=\"button\"\r\n class=\"nvb-avatar\"\r\n [ngStyle]=\"avatarStyle()\"\r\n (click)=\"onAvatarClick(avatarSrc, $event)\"\r\n >\r\n @if (avatarSrc) {\r\n <img [src]=\"avatarSrc\" [alt]=\"avatarName\" />\r\n } @else {\r\n <span>{{ initials() }}</span>\r\n }\r\n </button>\r\n </div>\r\n\r\n @if (previewOpen()) {\r\n <div class=\"nvb-avatar-preview\" (click)=\"closePreview()\">\r\n <button type=\"button\" class=\"nvb-avatar-preview__close\" (click)=\"closePreview($event)\">\r\n <span class=\"material-symbols-outlined\">close</span>\r\n </button>\r\n <img [src]=\"previewSrc()\" [alt]=\"avatarName\" />\r\n </div>\r\n }\r\n</element-wrapper>\r\n"],"names":[],"mappings":";;;;;MAsBa,aAAa,CAAA;AACxB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAe;AAErC,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,kFAAC;AAEpC,IAAA,UAAU,GAAG,MAAM,CAAS,EAAE,iFAAC;AAEvB,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE3D,IAAA,WAAW,GAAG,QAAQ,CAAyB,MAAK;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;QAE1C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AAE/E,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,QAAQ;AACjD,aAAA,IAAI;AAEJ,aAAA,WAAW,EAAE;QAEhB,OAAO;YACL,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI;YAElB,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI;YAEnB,eAAe,EAAE,KAAK,KAAK,QAAQ,GAAG,MAAM,GAAG,OAAO;AAEtD,YAAA,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS;AAE1F,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS;AAEvE,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,GAAG,oCAAoC,GAAG,MAAM;SAChF;AACH,IAAA,CAAC,kFAAC;AAEF,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACvB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAEzD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,GAAG;QACZ;QAEA,MAAM,KAAK,GAAG;aAEX,KAAK,CAAC,KAAK;aAEX,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAEzB,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,GAAG;QACZ;AAEA,QAAA,OAAO;AAEJ,aAAA,KAAK,CAAC,CAAC,EAAE,CAAC;AAEV,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;aAEnC,IAAI,CAAC,EAAE,CAAC;AACb,IAAA,CAAC,+EAAC;IAEF,aAAa,CAAC,GAAW,EAAE,KAAiB,EAAA;QAC1C,KAAK,CAAC,cAAc,EAAE;QAEtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,cAAc,GAA4B;AAC9C,YAAA,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE;AAE7B,YAAA,IAAI,EAAE,IAAI;AAEV,YAAA,GAAG,EAAE,IAAI;SACV;AAED,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAE1D,IAAI,WAAW,EAAE;YACf,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;QACvD;QAEA,KAAK,IAAI,CAAC,oBAAoB,CAAC,UAAU,CACvC,IAAI,CAAC,KAAK,EAAE,EAEZ,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,EAEzB,OAAO,EAEP,cAAc,CACf;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE;YACrC;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AAExB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,KAAK,EAAE,cAAc,EAAE;QAEvB,KAAK,EAAE,eAAe,EAAE;AAExB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAE3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACzB;wGA5GW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,6MCtB1B,u9BA4BA,EAAA,MAAA,EAAA,CAAA,k6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZY,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,sEAAE,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMvC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAET,uBAAuB,CAAC,MAAM,EAAA,OAAA,EAEtC,CAAC,cAAc,EAAE,OAAO,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,u9BAAA,EAAA,MAAA,EAAA,CAAA,k6BAAA,CAAA,EAAA;;;;;"}
@@ -3,7 +3,7 @@ import { input, inject, signal, computed, ChangeDetectionStrategy, Component } f
3
3
  import { Router, NavigationEnd } from '@angular/router';
4
4
  import { get } from 'lodash-es';
5
5
  import { filter } from 'rxjs';
6
- import { E as ElementActionService, M as MarkupSecurityService, U as UiTranslationService, a as ElementWrapper, N as NvbIcon, D as DynamicTextPipe } from './ngx-view-builder-ngx-view-builder-C9rZ5zQM.mjs';
6
+ import { E as ElementActionService, M as MarkupSecurityService, U as UiTranslationService, a as ElementWrapper, N as NvbIcon, D as DynamicTextPipe } from './ngx-view-builder-ngx-view-builder-CYvIsFw-.mjs';
7
7
 
8
8
  class BreadcrumbsElement {
9
9
  model = input.required(...(ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []));
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
246
246
  }], propDecorators: { model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: true }] }] } });
247
247
 
248
248
  export { BreadcrumbsElement };
249
- //# sourceMappingURL=ngx-view-builder-breadcrumbs-element-DZmo2VAq.mjs.map
249
+ //# sourceMappingURL=ngx-view-builder-breadcrumbs-element-BihMIpWr.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-view-builder-breadcrumbs-element-BaJoW3s7.mjs","sources":["../../../projects/ngx-view-builder/src/lib/core/shared/elements/breadcrumbs-element/breadcrumbs-element.ts","../../../projects/ngx-view-builder/src/lib/core/shared/elements/breadcrumbs-element/breadcrumbs-element.html"],"sourcesContent":["import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { get } from 'lodash-es';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { ElementWrapper } from '../../components/element-wrapper/element-wrapper';\r\nimport { NvbIcon } from '../../components/nvb-icon/nvb-icon';\r\nimport {\r\n BreadcrumbsModel,\r\n IBreadcrumbItem,\r\n IRouteBreadcrumbConfig,\r\n} from '../../models/elements/breadcrumbs.model';\r\nimport { DynamicTextPipe } from '../../pipes/dynamic-text.pipe';\r\nimport { ElementActionService } from '../../services/element-action.service';\r\nimport { MarkupSecurityService } from '../../services/markup-security.service';\r\nimport { UiTranslationService } from '../../services/ui-translation.service';\r\n\r\ninterface IRenderedBreadcrumbItem extends IBreadcrumbItem {\r\n ellipsis?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'breadcrumbs-element',\r\n\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ElementWrapper, DynamicTextPipe, NvbIcon],\r\n templateUrl: './breadcrumbs-element.html',\r\n styleUrl: './breadcrumbs-element.scss',\r\n})\r\nexport class BreadcrumbsElement implements OnInit, OnDestroy {\r\n model = input.required<BreadcrumbsModel>();\r\n\r\n private elementActionService = inject(ElementActionService);\r\n private markupSecurityService = inject(MarkupSecurityService);\r\n private uiTranslationService = inject(UiTranslationService);\r\n private router = inject(Router, { optional: true });\r\n private routeRefresh = signal(0);\r\n private navigationSubscription: Subscription | null = null;\r\n\r\n ngOnInit(): void {\r\n if (!this.router) {\r\n return;\r\n }\r\n this.navigationSubscription = this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.routeRefresh.update((value) => value + 1);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.navigationSubscription?.unsubscribe();\r\n this.navigationSubscription = null;\r\n }\r\n\r\n renderedItems = computed<IRenderedBreadcrumbItem[]>(() => {\r\n this.routeRefresh();\r\n const source = this.resolveSourceItems();\r\n const items: IRenderedBreadcrumbItem[] = [];\r\n if (this.model().showHome) {\r\n const configuredHomeLabel = String(this.model()?.homeLabel ?? '').trim();\r\n items.push({\r\n label:\r\n configuredHomeLabel || this.uiTranslationService.translate('breadcrumbs.home', 'Home'),\r\n value: String(this.model()?.homeUrl ?? '/').trim() || '/',\r\n });\r\n }\r\n items.push(...source);\r\n const maxItemsRaw = Number(this.model()?.maxItems ?? 0);\r\n const maxItems = Number.isFinite(maxItemsRaw) && maxItemsRaw > 0 ? Math.floor(maxItemsRaw) : 0;\r\n if (maxItems > 0 && items.length > maxItems && maxItems >= 2) {\r\n const first = items[0];\r\n const lastItems = items.slice(items.length - (maxItems - 1));\r\n return [first, { label: '...', value: '', ellipsis: true }, ...lastItems];\r\n }\r\n return items;\r\n });\r\n\r\n separatorIcon = computed(() => {\r\n const value = String(this.model()?.separator ?? '').trim();\r\n return value || 'chevron_right';\r\n });\r\n\r\n resolveItemHref(value: string | null | undefined): string | null {\r\n return this.markupSecurityService.sanitizeNavigationUrl(String(value ?? ''));\r\n }\r\n\r\n onItemClick(item: IRenderedBreadcrumbItem, index: number, event: MouseEvent): void {\r\n if (item.ellipsis) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const hasClickActions = Array.isArray(this.model().events) && this.model().events.length > 0;\r\n if (hasClickActions) {\r\n event.preventDefault();\r\n } else {\r\n const anchorHref =\r\n event.currentTarget instanceof HTMLAnchorElement\r\n ? String(event.currentTarget.getAttribute('href') ?? '').trim()\r\n : '';\r\n if (anchorHref.startsWith('/') && this.router) {\r\n event.preventDefault();\r\n this.router.navigateByUrl(anchorHref).catch(() => {\r\n if (typeof window !== 'undefined' && typeof window.location?.assign === 'function') {\r\n window.location.assign(anchorHref);\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n const runtimeContext: Record<string, unknown> = {\r\n item,\r\n row: item,\r\n index,\r\n value: item.value,\r\n };\r\n const elementName = String(this.model().name ?? '').trim();\r\n if (elementName) {\r\n runtimeContext[elementName] = item.value;\r\n }\r\n void this.elementActionService.runActions(\r\n this.model(),\r\n this.model().events ?? [],\r\n 'click',\r\n runtimeContext,\r\n );\r\n }\r\n\r\n private resolveSourceItems(): IRenderedBreadcrumbItem[] {\r\n if (this.model()?.itemsSource === 'route') {\r\n return this.buildRouteItems();\r\n }\r\n return Array.isArray(this.model()?.items) ? [...this.model().items] : [];\r\n }\r\n\r\n private buildRouteItems(): IRenderedBreadcrumbItem[] {\r\n const rootSnapshot = this.router?.routerState?.snapshot?.root ?? null;\r\n if (!rootSnapshot) {\r\n return [];\r\n }\r\n\r\n const labelDataKey =\r\n String(this.model()?.routeLabelDataKey ?? 'breadcrumb').trim() || 'breadcrumb';\r\n const usePathFallback = this.model()?.routeUsePathFallback !== false;\r\n const includeCurrent = this.model()?.routeIncludeCurrent !== false;\r\n const leaf = this.resolveLeafSnapshot(rootSnapshot);\r\n const accumulatedSegments: string[] = [];\r\n const items: IRenderedBreadcrumbItem[] = [];\r\n\r\n for (const snapshot of leaf.pathFromRoot) {\r\n const urlSegments = snapshot.url\r\n .map((segment) => String(segment?.path ?? '').trim())\r\n .filter(Boolean);\r\n if (urlSegments.length > 0) {\r\n accumulatedSegments.push(...urlSegments);\r\n }\r\n\r\n const item = this.resolveRouteItem(\r\n snapshot,\r\n accumulatedSegments,\r\n labelDataKey,\r\n usePathFallback,\r\n );\r\n if (item) {\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (!includeCurrent && items.length > 0) {\r\n items.pop();\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private resolveLeafSnapshot(snapshot: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\r\n let current = snapshot;\r\n while (current.firstChild) {\r\n current = current.firstChild;\r\n }\r\n return current;\r\n }\r\n\r\n private resolveRouteItem(\r\n snapshot: ActivatedRouteSnapshot,\r\n accumulatedSegments: string[],\r\n labelDataKey: string,\r\n usePathFallback: boolean,\r\n ): IRenderedBreadcrumbItem | null {\r\n const config = this.resolveRouteBreadcrumbConfig(snapshot, labelDataKey);\r\n if (config?.skip) {\r\n return null;\r\n }\r\n\r\n const fallbackLabel = usePathFallback ? this.resolveFallbackRouteLabel(snapshot) : '';\r\n const label = this.resolveRouteTemplate(\r\n String(config?.label ?? fallbackLabel ?? '').trim(),\r\n snapshot,\r\n accumulatedSegments,\r\n );\r\n if (!label) {\r\n return null;\r\n }\r\n\r\n const explicitValue = this.resolveRouteTemplate(\r\n String(config?.value ?? '').trim(),\r\n snapshot,\r\n accumulatedSegments,\r\n );\r\n const accumulatedUrl =\r\n accumulatedSegments.length > 0 ? `/${accumulatedSegments.join('/')}` : '/';\r\n\r\n return {\r\n label,\r\n value: explicitValue || accumulatedUrl,\r\n };\r\n }\r\n\r\n private resolveRouteBreadcrumbConfig(\r\n snapshot: ActivatedRouteSnapshot,\r\n labelDataKey: string,\r\n ): IRouteBreadcrumbConfig | null {\r\n const rawConfig = snapshot.data?.[labelDataKey];\r\n if (rawConfig === false || rawConfig === null) {\r\n return { skip: true };\r\n }\r\n if (typeof rawConfig === 'string') {\r\n const label = rawConfig.trim();\r\n return label ? { label } : null;\r\n }\r\n if (!rawConfig || typeof rawConfig !== 'object' || Array.isArray(rawConfig)) {\r\n return null;\r\n }\r\n\r\n const config = rawConfig as Record<string, unknown>;\r\n return {\r\n label: String(config['label'] ?? '').trim() || undefined,\r\n value: String(config['value'] ?? '').trim() || undefined,\r\n skip: Boolean(config['skip']),\r\n };\r\n }\r\n\r\n private resolveFallbackRouteLabel(snapshot: ActivatedRouteSnapshot): string {\r\n const dataTitle = String(snapshot.data?.['title'] ?? '').trim();\r\n if (dataTitle) {\r\n return dataTitle;\r\n }\r\n\r\n const urlLabel = snapshot.url\r\n .map((segment) => this.humanizeSegment(String(segment?.path ?? '').trim()))\r\n .filter(Boolean)\r\n .join(' / ');\r\n if (urlLabel) {\r\n return urlLabel;\r\n }\r\n\r\n const routePath = String(snapshot.routeConfig?.path ?? '').trim();\r\n if (routePath.startsWith(':')) {\r\n const paramName = routePath.slice(1).split('/')[0];\r\n const paramValue = String(snapshot.params?.[paramName] ?? '').trim();\r\n if (paramValue) {\r\n return paramValue;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private humanizeSegment(value: string): string {\r\n const normalized = decodeURIComponent(String(value ?? '').trim());\r\n if (!normalized) {\r\n return '';\r\n }\r\n return normalized\r\n .replace(/[-_]+/g, ' ')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (letter) => letter.toUpperCase());\r\n }\r\n\r\n private resolveRouteTemplate(\r\n template: string,\r\n snapshot: ActivatedRouteSnapshot,\r\n accumulatedSegments: string[],\r\n ): string {\r\n const normalizedTemplate = String(template ?? '').trim();\r\n if (!normalizedTemplate) {\r\n return '';\r\n }\r\n\r\n const currentUrl = accumulatedSegments.length > 0 ? `/${accumulatedSegments.join('/')}` : '/';\r\n const routeId =\r\n String(snapshot.params?.['id'] ?? snapshot.paramMap.get('id') ?? '').trim() || undefined;\r\n const context = {\r\n route: {\r\n id: routeId,\r\n url: currentUrl,\r\n params: snapshot.params ?? {},\r\n queryParams: snapshot.queryParams ?? {},\r\n data: snapshot.data ?? {},\r\n fragment: snapshot.fragment ?? '',\r\n path: String(snapshot.routeConfig?.path ?? '').trim(),\r\n },\r\n id: routeId,\r\n url: currentUrl,\r\n params: snapshot.params ?? {},\r\n queryParams: snapshot.queryParams ?? {},\r\n data: snapshot.data ?? {},\r\n } as Record<string, unknown>;\r\n\r\n const resolveToken = (token: string): string => {\r\n const path = String(token ?? '').trim();\r\n if (!path) {\r\n return '';\r\n }\r\n const resolved = get(context, path);\r\n if (resolved === null || resolved === undefined) {\r\n return '';\r\n }\r\n return String(resolved);\r\n };\r\n\r\n const withMustache = normalizedTemplate.replace(/\\{\\{([^}]+)\\}\\}/g, (_match, token: string) =>\r\n resolveToken(token),\r\n );\r\n return withMustache.replace(/\\{([^}]+)\\}/g, (_match, token: string) => resolveToken(token));\r\n }\r\n}\r\n","<element-wrapper [model]=\"model()\">\r\n <nav class=\"nvb-breadcrumbs\" aria-label=\"Breadcrumbs\" data-testid=\"breadcrumbs-root\">\r\n <ol>\r\n @for (item of renderedItems(); track $index; let itemIndex = $index; let isLast = $last) {\r\n <li>\r\n @if (item.ellipsis) {\r\n <span class=\"nvb-breadcrumbs__ellipsis\">...</span>\r\n } @else if (!isLast && item.value) {\r\n <a\r\n [attr.href]=\"resolveItemHref(item.value | dynamicText: model())\"\r\n (click)=\"onItemClick(item, itemIndex, $event)\"\r\n >\r\n {{ item.label | dynamicText: model() }}\r\n </a>\r\n } @else {\r\n <span class=\"nvb-breadcrumbs__current\">{{ item.label | dynamicText: model() }}</span>\r\n }\r\n\r\n @if (!isLast) {\r\n <nvb-icon class=\"nvb-breadcrumbs__separator\" [name]=\"separatorIcon()\"></nvb-icon>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n</element-wrapper>\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-view-builder-breadcrumbs-element-BihMIpWr.mjs","sources":["../../../projects/ngx-view-builder/src/lib/core/shared/elements/breadcrumbs-element/breadcrumbs-element.ts","../../../projects/ngx-view-builder/src/lib/core/shared/elements/breadcrumbs-element/breadcrumbs-element.html"],"sourcesContent":["import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { get } from 'lodash-es';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { ElementWrapper } from '../../components/element-wrapper/element-wrapper';\r\nimport { NvbIcon } from '../../components/nvb-icon/nvb-icon';\r\nimport {\r\n BreadcrumbsModel,\r\n IBreadcrumbItem,\r\n IRouteBreadcrumbConfig,\r\n} from '../../models/elements/breadcrumbs.model';\r\nimport { DynamicTextPipe } from '../../pipes/dynamic-text.pipe';\r\nimport { ElementActionService } from '../../services/element-action.service';\r\nimport { MarkupSecurityService } from '../../services/markup-security.service';\r\nimport { UiTranslationService } from '../../services/ui-translation.service';\r\n\r\ninterface IRenderedBreadcrumbItem extends IBreadcrumbItem {\r\n ellipsis?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'breadcrumbs-element',\r\n\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ElementWrapper, DynamicTextPipe, NvbIcon],\r\n templateUrl: './breadcrumbs-element.html',\r\n styleUrl: './breadcrumbs-element.scss',\r\n})\r\nexport class BreadcrumbsElement implements OnInit, OnDestroy {\r\n model = input.required<BreadcrumbsModel>();\r\n\r\n private elementActionService = inject(ElementActionService);\r\n private markupSecurityService = inject(MarkupSecurityService);\r\n private uiTranslationService = inject(UiTranslationService);\r\n private router = inject(Router, { optional: true });\r\n private routeRefresh = signal(0);\r\n private navigationSubscription: Subscription | null = null;\r\n\r\n ngOnInit(): void {\r\n if (!this.router) {\r\n return;\r\n }\r\n this.navigationSubscription = this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.routeRefresh.update((value) => value + 1);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.navigationSubscription?.unsubscribe();\r\n this.navigationSubscription = null;\r\n }\r\n\r\n renderedItems = computed<IRenderedBreadcrumbItem[]>(() => {\r\n this.routeRefresh();\r\n const source = this.resolveSourceItems();\r\n const items: IRenderedBreadcrumbItem[] = [];\r\n if (this.model().showHome) {\r\n const configuredHomeLabel = String(this.model()?.homeLabel ?? '').trim();\r\n items.push({\r\n label:\r\n configuredHomeLabel || this.uiTranslationService.translate('breadcrumbs.home', 'Home'),\r\n value: String(this.model()?.homeUrl ?? '/').trim() || '/',\r\n });\r\n }\r\n items.push(...source);\r\n const maxItemsRaw = Number(this.model()?.maxItems ?? 0);\r\n const maxItems = Number.isFinite(maxItemsRaw) && maxItemsRaw > 0 ? Math.floor(maxItemsRaw) : 0;\r\n if (maxItems > 0 && items.length > maxItems && maxItems >= 2) {\r\n const first = items[0];\r\n const lastItems = items.slice(items.length - (maxItems - 1));\r\n return [first, { label: '...', value: '', ellipsis: true }, ...lastItems];\r\n }\r\n return items;\r\n });\r\n\r\n separatorIcon = computed(() => {\r\n const value = String(this.model()?.separator ?? '').trim();\r\n return value || 'chevron_right';\r\n });\r\n\r\n resolveItemHref(value: string | null | undefined): string | null {\r\n return this.markupSecurityService.sanitizeNavigationUrl(String(value ?? ''));\r\n }\r\n\r\n onItemClick(item: IRenderedBreadcrumbItem, index: number, event: MouseEvent): void {\r\n if (item.ellipsis) {\r\n event.preventDefault();\r\n return;\r\n }\r\n const hasClickActions = Array.isArray(this.model().events) && this.model().events.length > 0;\r\n if (hasClickActions) {\r\n event.preventDefault();\r\n } else {\r\n const anchorHref =\r\n event.currentTarget instanceof HTMLAnchorElement\r\n ? String(event.currentTarget.getAttribute('href') ?? '').trim()\r\n : '';\r\n if (anchorHref.startsWith('/') && this.router) {\r\n event.preventDefault();\r\n this.router.navigateByUrl(anchorHref).catch(() => {\r\n if (typeof window !== 'undefined' && typeof window.location?.assign === 'function') {\r\n window.location.assign(anchorHref);\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n const runtimeContext: Record<string, unknown> = {\r\n item,\r\n row: item,\r\n index,\r\n value: item.value,\r\n };\r\n const elementName = String(this.model().name ?? '').trim();\r\n if (elementName) {\r\n runtimeContext[elementName] = item.value;\r\n }\r\n void this.elementActionService.runActions(\r\n this.model(),\r\n this.model().events ?? [],\r\n 'click',\r\n runtimeContext,\r\n );\r\n }\r\n\r\n private resolveSourceItems(): IRenderedBreadcrumbItem[] {\r\n if (this.model()?.itemsSource === 'route') {\r\n return this.buildRouteItems();\r\n }\r\n return Array.isArray(this.model()?.items) ? [...this.model().items] : [];\r\n }\r\n\r\n private buildRouteItems(): IRenderedBreadcrumbItem[] {\r\n const rootSnapshot = this.router?.routerState?.snapshot?.root ?? null;\r\n if (!rootSnapshot) {\r\n return [];\r\n }\r\n\r\n const labelDataKey =\r\n String(this.model()?.routeLabelDataKey ?? 'breadcrumb').trim() || 'breadcrumb';\r\n const usePathFallback = this.model()?.routeUsePathFallback !== false;\r\n const includeCurrent = this.model()?.routeIncludeCurrent !== false;\r\n const leaf = this.resolveLeafSnapshot(rootSnapshot);\r\n const accumulatedSegments: string[] = [];\r\n const items: IRenderedBreadcrumbItem[] = [];\r\n\r\n for (const snapshot of leaf.pathFromRoot) {\r\n const urlSegments = snapshot.url\r\n .map((segment) => String(segment?.path ?? '').trim())\r\n .filter(Boolean);\r\n if (urlSegments.length > 0) {\r\n accumulatedSegments.push(...urlSegments);\r\n }\r\n\r\n const item = this.resolveRouteItem(\r\n snapshot,\r\n accumulatedSegments,\r\n labelDataKey,\r\n usePathFallback,\r\n );\r\n if (item) {\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (!includeCurrent && items.length > 0) {\r\n items.pop();\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private resolveLeafSnapshot(snapshot: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\r\n let current = snapshot;\r\n while (current.firstChild) {\r\n current = current.firstChild;\r\n }\r\n return current;\r\n }\r\n\r\n private resolveRouteItem(\r\n snapshot: ActivatedRouteSnapshot,\r\n accumulatedSegments: string[],\r\n labelDataKey: string,\r\n usePathFallback: boolean,\r\n ): IRenderedBreadcrumbItem | null {\r\n const config = this.resolveRouteBreadcrumbConfig(snapshot, labelDataKey);\r\n if (config?.skip) {\r\n return null;\r\n }\r\n\r\n const fallbackLabel = usePathFallback ? this.resolveFallbackRouteLabel(snapshot) : '';\r\n const label = this.resolveRouteTemplate(\r\n String(config?.label ?? fallbackLabel ?? '').trim(),\r\n snapshot,\r\n accumulatedSegments,\r\n );\r\n if (!label) {\r\n return null;\r\n }\r\n\r\n const explicitValue = this.resolveRouteTemplate(\r\n String(config?.value ?? '').trim(),\r\n snapshot,\r\n accumulatedSegments,\r\n );\r\n const accumulatedUrl =\r\n accumulatedSegments.length > 0 ? `/${accumulatedSegments.join('/')}` : '/';\r\n\r\n return {\r\n label,\r\n value: explicitValue || accumulatedUrl,\r\n };\r\n }\r\n\r\n private resolveRouteBreadcrumbConfig(\r\n snapshot: ActivatedRouteSnapshot,\r\n labelDataKey: string,\r\n ): IRouteBreadcrumbConfig | null {\r\n const rawConfig = snapshot.data?.[labelDataKey];\r\n if (rawConfig === false || rawConfig === null) {\r\n return { skip: true };\r\n }\r\n if (typeof rawConfig === 'string') {\r\n const label = rawConfig.trim();\r\n return label ? { label } : null;\r\n }\r\n if (!rawConfig || typeof rawConfig !== 'object' || Array.isArray(rawConfig)) {\r\n return null;\r\n }\r\n\r\n const config = rawConfig as Record<string, unknown>;\r\n return {\r\n label: String(config['label'] ?? '').trim() || undefined,\r\n value: String(config['value'] ?? '').trim() || undefined,\r\n skip: Boolean(config['skip']),\r\n };\r\n }\r\n\r\n private resolveFallbackRouteLabel(snapshot: ActivatedRouteSnapshot): string {\r\n const dataTitle = String(snapshot.data?.['title'] ?? '').trim();\r\n if (dataTitle) {\r\n return dataTitle;\r\n }\r\n\r\n const urlLabel = snapshot.url\r\n .map((segment) => this.humanizeSegment(String(segment?.path ?? '').trim()))\r\n .filter(Boolean)\r\n .join(' / ');\r\n if (urlLabel) {\r\n return urlLabel;\r\n }\r\n\r\n const routePath = String(snapshot.routeConfig?.path ?? '').trim();\r\n if (routePath.startsWith(':')) {\r\n const paramName = routePath.slice(1).split('/')[0];\r\n const paramValue = String(snapshot.params?.[paramName] ?? '').trim();\r\n if (paramValue) {\r\n return paramValue;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private humanizeSegment(value: string): string {\r\n const normalized = decodeURIComponent(String(value ?? '').trim());\r\n if (!normalized) {\r\n return '';\r\n }\r\n return normalized\r\n .replace(/[-_]+/g, ' ')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (letter) => letter.toUpperCase());\r\n }\r\n\r\n private resolveRouteTemplate(\r\n template: string,\r\n snapshot: ActivatedRouteSnapshot,\r\n accumulatedSegments: string[],\r\n ): string {\r\n const normalizedTemplate = String(template ?? '').trim();\r\n if (!normalizedTemplate) {\r\n return '';\r\n }\r\n\r\n const currentUrl = accumulatedSegments.length > 0 ? `/${accumulatedSegments.join('/')}` : '/';\r\n const routeId =\r\n String(snapshot.params?.['id'] ?? snapshot.paramMap.get('id') ?? '').trim() || undefined;\r\n const context = {\r\n route: {\r\n id: routeId,\r\n url: currentUrl,\r\n params: snapshot.params ?? {},\r\n queryParams: snapshot.queryParams ?? {},\r\n data: snapshot.data ?? {},\r\n fragment: snapshot.fragment ?? '',\r\n path: String(snapshot.routeConfig?.path ?? '').trim(),\r\n },\r\n id: routeId,\r\n url: currentUrl,\r\n params: snapshot.params ?? {},\r\n queryParams: snapshot.queryParams ?? {},\r\n data: snapshot.data ?? {},\r\n } as Record<string, unknown>;\r\n\r\n const resolveToken = (token: string): string => {\r\n const path = String(token ?? '').trim();\r\n if (!path) {\r\n return '';\r\n }\r\n const resolved = get(context, path);\r\n if (resolved === null || resolved === undefined) {\r\n return '';\r\n }\r\n return String(resolved);\r\n };\r\n\r\n const withMustache = normalizedTemplate.replace(/\\{\\{([^}]+)\\}\\}/g, (_match, token: string) =>\r\n resolveToken(token),\r\n );\r\n return withMustache.replace(/\\{([^}]+)\\}/g, (_match, token: string) => resolveToken(token));\r\n }\r\n}\r\n","<element-wrapper [model]=\"model()\">\r\n <nav class=\"nvb-breadcrumbs\" aria-label=\"Breadcrumbs\" data-testid=\"breadcrumbs-root\">\r\n <ol>\r\n @for (item of renderedItems(); track $index; let itemIndex = $index; let isLast = $last) {\r\n <li>\r\n @if (item.ellipsis) {\r\n <span class=\"nvb-breadcrumbs__ellipsis\">...</span>\r\n } @else if (!isLast && item.value) {\r\n <a\r\n [attr.href]=\"resolveItemHref(item.value | dynamicText: model())\"\r\n (click)=\"onItemClick(item, itemIndex, $event)\"\r\n >\r\n {{ item.label | dynamicText: model() }}\r\n </a>\r\n } @else {\r\n <span class=\"nvb-breadcrumbs__current\">{{ item.label | dynamicText: model() }}</span>\r\n }\r\n\r\n @if (!isLast) {\r\n <nvb-icon class=\"nvb-breadcrumbs__separator\" [name]=\"separatorIcon()\"></nvb-icon>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n</element-wrapper>\r\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { NgClass, NgStyle } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { input, inject, computed, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import { E as ElementActionService, a as ElementWrapper, N as NvbIcon } from './ngx-view-builder-ngx-view-builder-C9rZ5zQM.mjs';
4
+ import { E as ElementActionService, a as ElementWrapper, N as NvbIcon } from './ngx-view-builder-ngx-view-builder-CYvIsFw-.mjs';
5
5
 
6
6
  class IconElement {
7
7
  model = input.required(...(ngDevMode ? [{ debugName: "model" }] : /* istanbul ignore next */ []));
@@ -60,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
60
60
  }], propDecorators: { model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: true }] }] } });
61
61
 
62
62
  export { IconElement };
63
- //# sourceMappingURL=ngx-view-builder-icon-element-Bu2EWVKX.mjs.map
63
+ //# sourceMappingURL=ngx-view-builder-icon-element-CSKRNSAU.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-view-builder-icon-element-Bu2EWVKX.mjs","sources":["../../../projects/ngx-view-builder/src/lib/core/shared/elements/icon-element/icon-element.ts","../../../projects/ngx-view-builder/src/lib/core/shared/elements/icon-element/icon-element.html"],"sourcesContent":["import { NgClass, NgStyle } from '@angular/common';\r\nimport { Component, computed, inject, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { ElementWrapper } from '../../components/element-wrapper/element-wrapper';\r\nimport { NvbIcon } from '../../components/nvb-icon/nvb-icon';\r\nimport { IconModel } from '../../models/elements/icon.model';\r\nimport { ElementActionService } from '../../services/element-action.service';\r\n\r\n@Component({\r\n selector: 'icon-element',\r\n\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ElementWrapper, NgClass, NgStyle, NvbIcon],\r\n templateUrl: './icon-element.html',\r\n\r\n styleUrl: './icon-element.scss',\r\n})\r\nexport class IconElement {\r\n model = input.required<IconModel>();\r\n\r\n private elementActionService = inject(ElementActionService);\r\n\r\n iconName = computed(() => {\r\n const value = String(this.model()?.iconName ?? '').trim();\r\n\r\n return value || 'star';\r\n });\r\n\r\n iconStyle = computed<Record<string, string>>(() => {\r\n const size = this.resolveSize(this.model()?.iconSize, 24);\r\n\r\n const color = String(this.model()?.iconColor ?? '').trim();\r\n\r\n return {\r\n width: `${size + 18}px`,\r\n\r\n height: `${size + 18}px`,\r\n\r\n color: color || 'var(--color-neutral-700)',\r\n\r\n 'font-size': `${size}px`,\r\n };\r\n });\r\n\r\n previewStyle = computed<Record<string, string>>(() => {\r\n const size = this.resolveSize(this.model()?.previewSize, 64);\r\n\r\n const color = String(this.model()?.iconColor ?? '').trim();\r\n\r\n return {\r\n width: `${size + 20}px`,\r\n\r\n height: `${size + 20}px`,\r\n\r\n color: color || 'var(--color-neutral-700)',\r\n\r\n 'font-size': `${size}px`,\r\n };\r\n });\r\n\r\n onIconClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n\r\n event.stopPropagation();\r\n\r\n const runtimeContext: Record<string, unknown> = {\r\n value: this.iconName(),\r\n\r\n item: null,\r\n\r\n row: null,\r\n };\r\n\r\n const elementName = String(this.model().name ?? '').trim();\r\n\r\n if (elementName) {\r\n runtimeContext[elementName] = this.iconName();\r\n }\r\n\r\n void this.elementActionService.runActions(\r\n this.model(),\r\n\r\n this.model().events ?? [],\r\n\r\n 'click',\r\n\r\n runtimeContext,\r\n );\r\n }\r\n\r\n private resolveSize(value: unknown, fallback: number): number {\r\n const parsed = Number(value);\r\n\r\n if (!Number.isFinite(parsed) || parsed <= 0) {\r\n return fallback;\r\n }\r\n\r\n return Math.floor(parsed);\r\n }\r\n}\r\n","<element-wrapper [model]=\"model()\">\r\n <section class=\"nvb-icon-wrap\" data-testid=\"icon-root\">\r\n <button\r\n type=\"button\"\r\n class=\"nvb-icon\"\r\n [ngClass]=\"{ 'nvb-icon--filled': model().filled }\"\r\n [ngStyle]=\"iconStyle()\"\r\n (click)=\"onIconClick($event)\"\r\n >\r\n <nvb-icon [name]=\"iconName()\"></nvb-icon>\r\n </button>\r\n\r\n @if (model().showPreview) {\r\n <div class=\"nvb-icon__preview\" [ngStyle]=\"previewStyle()\">\r\n <nvb-icon [name]=\"iconName()\"></nvb-icon>\r\n </div>\r\n }\r\n </section>\r\n</element-wrapper>\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-view-builder-icon-element-CSKRNSAU.mjs","sources":["../../../projects/ngx-view-builder/src/lib/core/shared/elements/icon-element/icon-element.ts","../../../projects/ngx-view-builder/src/lib/core/shared/elements/icon-element/icon-element.html"],"sourcesContent":["import { NgClass, NgStyle } from '@angular/common';\r\nimport { Component, computed, inject, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { ElementWrapper } from '../../components/element-wrapper/element-wrapper';\r\nimport { NvbIcon } from '../../components/nvb-icon/nvb-icon';\r\nimport { IconModel } from '../../models/elements/icon.model';\r\nimport { ElementActionService } from '../../services/element-action.service';\r\n\r\n@Component({\r\n selector: 'icon-element',\r\n\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ElementWrapper, NgClass, NgStyle, NvbIcon],\r\n templateUrl: './icon-element.html',\r\n\r\n styleUrl: './icon-element.scss',\r\n})\r\nexport class IconElement {\r\n model = input.required<IconModel>();\r\n\r\n private elementActionService = inject(ElementActionService);\r\n\r\n iconName = computed(() => {\r\n const value = String(this.model()?.iconName ?? '').trim();\r\n\r\n return value || 'star';\r\n });\r\n\r\n iconStyle = computed<Record<string, string>>(() => {\r\n const size = this.resolveSize(this.model()?.iconSize, 24);\r\n\r\n const color = String(this.model()?.iconColor ?? '').trim();\r\n\r\n return {\r\n width: `${size + 18}px`,\r\n\r\n height: `${size + 18}px`,\r\n\r\n color: color || 'var(--color-neutral-700)',\r\n\r\n 'font-size': `${size}px`,\r\n };\r\n });\r\n\r\n previewStyle = computed<Record<string, string>>(() => {\r\n const size = this.resolveSize(this.model()?.previewSize, 64);\r\n\r\n const color = String(this.model()?.iconColor ?? '').trim();\r\n\r\n return {\r\n width: `${size + 20}px`,\r\n\r\n height: `${size + 20}px`,\r\n\r\n color: color || 'var(--color-neutral-700)',\r\n\r\n 'font-size': `${size}px`,\r\n };\r\n });\r\n\r\n onIconClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n\r\n event.stopPropagation();\r\n\r\n const runtimeContext: Record<string, unknown> = {\r\n value: this.iconName(),\r\n\r\n item: null,\r\n\r\n row: null,\r\n };\r\n\r\n const elementName = String(this.model().name ?? '').trim();\r\n\r\n if (elementName) {\r\n runtimeContext[elementName] = this.iconName();\r\n }\r\n\r\n void this.elementActionService.runActions(\r\n this.model(),\r\n\r\n this.model().events ?? [],\r\n\r\n 'click',\r\n\r\n runtimeContext,\r\n );\r\n }\r\n\r\n private resolveSize(value: unknown, fallback: number): number {\r\n const parsed = Number(value);\r\n\r\n if (!Number.isFinite(parsed) || parsed <= 0) {\r\n return fallback;\r\n }\r\n\r\n return Math.floor(parsed);\r\n }\r\n}\r\n","<element-wrapper [model]=\"model()\">\r\n <section class=\"nvb-icon-wrap\" data-testid=\"icon-root\">\r\n <button\r\n type=\"button\"\r\n class=\"nvb-icon\"\r\n [ngClass]=\"{ 'nvb-icon--filled': model().filled }\"\r\n [ngStyle]=\"iconStyle()\"\r\n (click)=\"onIconClick($event)\"\r\n >\r\n <nvb-icon [name]=\"iconName()\"></nvb-icon>\r\n </button>\r\n\r\n @if (model().showPreview) {\r\n <div class=\"nvb-icon__preview\" [ngStyle]=\"previewStyle()\">\r\n <nvb-icon [name]=\"iconName()\"></nvb-icon>\r\n </div>\r\n }\r\n </section>\r\n</element-wrapper>\r\n"],"names":[],"mappings":"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"}
@@ -48529,7 +48529,7 @@ const BUILT_IN_RUNTIME_COMPONENT_LOADERS = {
48529
48529
  [ElementTypesEnum.AUTOCOMPLETE]: () => Promise.resolve().then(function () { return autocompleteElement; }).then((m) => m.AutocompleteElement),
48530
48530
  [ElementTypesEnum.MULTI_SELECT]: () => Promise.resolve().then(function () { return multiSelectElement; }).then((m) => m.MultiSelectElement),
48531
48531
  [ElementTypesEnum.MESSAGE_CARD]: () => Promise.resolve().then(function () { return messageCardElement; }).then((m) => m.MessageCardElement),
48532
- [ElementTypesEnum.TOAST]: () => import('./ngx-view-builder-toast-element-DQ8mU1zc.mjs').then((m) => m.ToastElement),
48532
+ [ElementTypesEnum.TOAST]: () => import('./ngx-view-builder-toast-element-CclIxegL.mjs').then((m) => m.ToastElement),
48533
48533
  [ElementTypesEnum.BADGE]: () => Promise.resolve().then(function () { return badgeElement; }).then((m) => m.BadgeElement),
48534
48534
  [ElementTypesEnum.STATS_CARD]: () => Promise.resolve().then(function () { return statsCardElement; }).then((m) => m.StatsCardElement),
48535
48535
  [ElementTypesEnum.CHART]: () => Promise.resolve().then(function () { return chartElement; }).then((m) => m.ChartElement),
@@ -48537,11 +48537,11 @@ const BUILT_IN_RUNTIME_COMPONENT_LOADERS = {
48537
48537
  [ElementTypesEnum.IMAGE]: () => Promise.resolve().then(function () { return imageElement; }).then((m) => m.ImageElement),
48538
48538
  [ElementTypesEnum.VIDEO]: () => Promise.resolve().then(function () { return videoElement; }).then((m) => m.VideoElement),
48539
48539
  [ElementTypesEnum.IFRAME]: () => Promise.resolve().then(function () { return iframeElement; }).then((m) => m.IframeElement),
48540
- [ElementTypesEnum.AVATAR]: () => import('./ngx-view-builder-avatar-element-B8Nh4G0m.mjs').then((m) => m.AvatarElement),
48541
- [ElementTypesEnum.ICON]: () => import('./ngx-view-builder-icon-element-DFW1jVp8.mjs').then((m) => m.IconElement),
48540
+ [ElementTypesEnum.AVATAR]: () => import('./ngx-view-builder-avatar-element-C0EXsHCI.mjs').then((m) => m.AvatarElement),
48541
+ [ElementTypesEnum.ICON]: () => import('./ngx-view-builder-icon-element-CSKRNSAU.mjs').then((m) => m.IconElement),
48542
48542
  [ElementTypesEnum.DIVIDER]: () => Promise.resolve().then(function () { return dividerElement; }).then((m) => m.DividerElement),
48543
48543
  [ElementTypesEnum.SPACER]: () => Promise.resolve().then(function () { return spacerElement; }).then((m) => m.SpacerElement),
48544
- [ElementTypesEnum.BREADCRUMBS]: () => import('./ngx-view-builder-breadcrumbs-element-BaJoW3s7.mjs').then((m) => m.BreadcrumbsElement),
48544
+ [ElementTypesEnum.BREADCRUMBS]: () => import('./ngx-view-builder-breadcrumbs-element-BihMIpWr.mjs').then((m) => m.BreadcrumbsElement),
48545
48545
  [ElementTypesEnum.PAGE_TITLE]: () => Promise.resolve().then(function () { return pageTitleElement; }).then((m) => m.PageTitleElement),
48546
48546
  [ElementTypesEnum.NUMBER_STEPPER]: () => Promise.resolve().then(function () { return numberStepperElement; }).then((m) => m.NumberStepperElement),
48547
48547
  [ElementTypesEnum.TIME_PICKER]: () => Promise.resolve().then(function () { return timePickerElement; }).then((m) => m.TimePickerElement),
@@ -80649,7 +80649,7 @@ const LICENSE_VALIDATION_URL = 'https://api.ngxviewbuilder.io';
80649
80649
  // publish build'a. Perpetual fallback modelis: raktas dengia visas versijas,
80650
80650
  // isleistas iki jo expiresAt. Pasibaigus licencijai padengtos versijos veikia
80651
80651
  // amzinai be watermark; velesnes (parsisiustos is npm) — watermark, kol neatsinaujinta.
80652
- const RELEASE_DATE = new Date('2026-07-20T00:00:00Z');
80652
+ const RELEASE_DATE = new Date('2026-07-21T00:00:00Z');
80653
80653
  // Oficialus vieso demo puslapio hostname'ai — jiems watermark/license modalai
80654
80654
  // visada islaikomi isjungti, nepriklausomai nuo rakto/serverio busenos. SAUGU:
80655
80655
  // tai musu paciu valdomas domenas, tad integratorius savo produkcinei app'ai
@@ -90257,4 +90257,4 @@ class ChoiceModel {
90257
90257
  */
90258
90258
 
90259
90259
  export { ForgeInitializerService as $, APPLICATION_LOCALE_VALUE as A, BadgeModel as B, ChartModel as C, DynamicTextPipe as D, ElementActionService as E, ElementActionButtonToneEnum as F, ElementActionButtonVariantEnum as G, ElementActionDialogOperationEnum as H, ElementActionResponseModeEnum as I, ElementActionSetValueModeEnum as J, ElementActionToastPositionEnum as K, ElementActionToastVariantEnum as L, MarkupSecurityService as M, NvbIcon as N, ElementActionTriggerEnum as O, ElementActionTypeEnum as P, ElementBaseModel as Q, ElementDataSourceUseForEnum as R, StateService as S, ElementExecutionModeEnum as T, UiTranslationService as U, ElementFocusService as V, ElementTypesEnum as W, EmptyBlockModel as X, EventService as Y, ExpressionService as Z, FileUploadModel as _, ElementWrapper as a, TableColumnAlignEnum as a$, HeaderTabEnum as a0, IconModel as a1, IframeModel as a2, ImageModel as a3, LOCALE_CHOICES as a4, ListBoxModel as a5, ListGridModel as a6, MessageCardModel as a7, MultiSelectInputModel as a8, NGX_VIEW_BUILDER_PROJECT_LAYER as a9, NgxViewBuilderRuntime as aA, NgxViewBuilderSaveRequestedSourceEnum as aB, NgxViewBuilderTableSettingsSourceEnum as aC, NgxViewBuilderThemeModeEnum as aD, NgxViewBuilderTriggerEngineService as aE, NgxViewBuilderTriggerEventEnum as aF, NgxViewBuilderValidator as aG, NgxViewBuilderWebsocketMessageModeEnum as aH, NumberInputModel as aI, NumberStepperModel as aJ, PageTitleModel as aK, PanelModel as aL, PhoneInputModel as aM, ProgressBarModel as aN, ProgressFlowModel as aO, PropertyModel as aP, RadioInputModel as aQ, RichTextModel as aR, RuntimeVariableSourceTypeEnum as aS, SelectButtonModel as aT, SelectInputModel as aU, SignaturePadModel as aV, SingleCheckboxModel as aW, SliderModel as aX, SpacerModel as aY, SplitterModel as aZ, StatsCardModel as a_, NGX_VIEW_BUILDER_TEMPLATES_CAPABILITY as aa, NGX_VIEW_BUILDER_TEMPLATES_FEATURE_PACK_ID as ab, NGX_VIEW_BUILDER_UI_TRANSLATIONS as ac, NgxViewBuilder as ad, NgxViewBuilderActionExecutorService as ae, NgxViewBuilderAlignEnum as af, NgxViewBuilderApiService as ag, NgxViewBuilderAutomationActionTypeEnum as ah, NgxViewBuilderAutomationService as ai, NgxViewBuilderBuilder as aj, NgxViewBuilderBuilderTabRenderModeEnum as ak, NgxViewBuilderChromePositionEnum as al, NgxViewBuilderDataSourceTypeEnum as am, NgxViewBuilderDialogCloseReasonEnum as an, NgxViewBuilderExecutionReasonEnum as ao, NgxViewBuilderHeadlessService as ap, NgxViewBuilderInteractionStatusEnum as aq, NgxViewBuilderPageNavigationModeEnum as ar, NgxViewBuilderPreviewModeEnum as as, NgxViewBuilderProcessService as at, NgxViewBuilderRenderModeEnum as au, NgxViewBuilderRenderPhaseEnum as av, NgxViewBuilderRenderer as aw, NgxViewBuilderRuleExecutedBranchEnum as ax, NgxViewBuilderRuleRunModeEnum as ay, NgxViewBuilderRulesEngineService as az, AUTOMATION_BUILDER_TAB_ID as b, TableColumnCellActionsDisplayModeEnum as b0, TableColumnTypeEnum as b1, TableFilterControlTypeEnum as b2, TableFilterOptionsSourceTypeEnum as b3, TableInlineEditStartModeEnum as b4, TableInlineEditorTypeEnum as b5, TableModel as b6, TableRowActionsDropdownButtonStyleEnum as b7, TableStatusToneEnum as b8, TabsModel as b9, TabsProModel as ba, TemplateEngineService as bb, TemplateStorageModeEnum as bc, TemplatesEditor as bd, TextAreaModel as be, TextInputModel as bf, TimePickerModel as bg, ToastModel as bh, ToggleSwitchModel as bi, UiTranslatePipe as bj, ValueChangeTriggerEnum as bk, VideoModel as bl, bridgeNgxViewBuilderApiEvents as bm, createTemplatesLibraryProperty as bn, provideNgxViewBuilderExtensions as bo, provideNgxViewBuilderProjectLayer as bp, provideNgxViewBuilderProjectLayers as bq, provideNgxViewBuilderRuntime as br, provideNgxViewBuilderUiTranslations as bs, AccordionModel as c, ApplicationLocaleService as d, AutocompleteModel as e, AutomationStudio as f, AvatarModel as g, BreadcrumbsModel as h, BuilderModel as i, BuilderPageDisplayModeEnum as j, ButtonModel as k, CheckboxInputModel as l, ChoiceModel as m, ColumnFragmentModeEnum as n, CreatorStructureService as o, CustomHtmlModel as p, DatePickerModel as q, DateRangeModel as r, DialogModel as s, DividerModel as t, DocumentationGenerator as u, DynamicPanelModel as v, DynamicTableColumnModel as w, DynamicTableModel as x, DynamicTableRowColumnModel as y, EN_UI_DICTIONARY as z };
90260
- //# sourceMappingURL=ngx-view-builder-ngx-view-builder-_VdHLdIW.mjs.map
90260
+ //# sourceMappingURL=ngx-view-builder-ngx-view-builder-CYvIsFw-.mjs.map