@yuuvis/client-framework 2.12.4 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/fesm2022/yuuvis-client-framework-actions.mjs +16 -16
  2. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  3. package/fesm2022/yuuvis-client-framework-app-bar.mjs +3 -3
  4. package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
  5. package/fesm2022/yuuvis-client-framework-autocomplete.mjs +7 -7
  6. package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -1
  7. package/fesm2022/yuuvis-client-framework-clipboard.mjs +3 -3
  8. package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
  9. package/fesm2022/yuuvis-client-framework-common.mjs +76 -76
  10. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  11. package/fesm2022/yuuvis-client-framework-datepicker.mjs +31 -31
  12. package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
  13. package/fesm2022/yuuvis-client-framework-forms.mjs +48 -48
  14. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  15. package/fesm2022/yuuvis-client-framework-icons.mjs +9 -9
  16. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  17. package/fesm2022/yuuvis-client-framework-list.mjs +29 -22
  18. package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
  19. package/fesm2022/yuuvis-client-framework-master-details.mjs +7 -7
  20. package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -1
  21. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +7 -7
  22. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
  23. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +15 -15
  24. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  25. package/fesm2022/yuuvis-client-framework-object-details.mjs +28 -28
  26. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  27. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +18 -18
  28. package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
  29. package/fesm2022/yuuvis-client-framework-object-form.mjs +31 -31
  30. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
  31. package/fesm2022/yuuvis-client-framework-object-preview.mjs +13 -13
  32. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
  33. package/fesm2022/yuuvis-client-framework-object-relationship.mjs +29 -29
  34. package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
  35. package/fesm2022/yuuvis-client-framework-object-summary.mjs +13 -13
  36. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  37. package/fesm2022/yuuvis-client-framework-object-versions.mjs +7 -7
  38. package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
  39. package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs +7 -7
  40. package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs.map +1 -1
  41. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +7 -7
  42. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs.map +1 -1
  43. package/fesm2022/yuuvis-client-framework-pagination.mjs +3 -3
  44. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
  45. package/fesm2022/yuuvis-client-framework-popout.mjs +10 -10
  46. package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -1
  47. package/fesm2022/yuuvis-client-framework-query-list.mjs +11 -8
  48. package/fesm2022/yuuvis-client-framework-query-list.mjs.map +1 -1
  49. package/fesm2022/yuuvis-client-framework-renderer.mjs +39 -39
  50. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
  51. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +3 -3
  52. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
  53. package/fesm2022/yuuvis-client-framework-simple-search.mjs +3 -3
  54. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
  55. package/fesm2022/yuuvis-client-framework-sort.mjs +3 -3
  56. package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -1
  57. package/fesm2022/yuuvis-client-framework-split-view.mjs +13 -13
  58. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
  59. package/fesm2022/yuuvis-client-framework-tile-list.mjs +109 -99
  60. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  61. package/fesm2022/yuuvis-client-framework-tree.mjs +9 -9
  62. package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
  63. package/fesm2022/yuuvis-client-framework-upload-progress.mjs +10 -10
  64. package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
  65. package/fesm2022/yuuvis-client-framework-widget-grid.mjs +28 -28
  66. package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
  67. package/fesm2022/yuuvis-client-framework.mjs +100 -61
  68. package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
  69. package/lib/assets/i18n/de.json +1 -1
  70. package/lib/assets/i18n/en.json +21 -21
  71. package/lib/services/halo-utility/halo-utility.service.d.ts +18 -3
  72. package/lib/services/session/session.service.d.ts +1 -1
  73. package/list/lib/list.component.d.ts +8 -3
  74. package/package.json +4 -4
  75. package/query-list/lib/query-list.component.d.ts +2 -0
  76. package/tile-list/lib/tile-list/tile-list.component.d.ts +12 -10
@@ -83,10 +83,10 @@ class IconService {
83
83
  // TODO: find a more sofisticated way to validate
84
84
  return svg.indexOf('<svg') !== -1;
85
85
  }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
87
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IconService, providedIn: 'root' }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
87
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: IconService, providedIn: 'root' }); }
88
88
  }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: IconService, decorators: [{
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: IconService, decorators: [{
90
90
  type: Injectable,
91
91
  args: [{
92
92
  providedIn: 'root'
@@ -158,10 +158,10 @@ class YuvIconComponent {
158
158
  this.#render();
159
159
  }
160
160
  }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvIconComponent, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: YuvIconComponent, isStandalone: true, selector: "yuv-icon", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, svg: { classPropertyName: "svg", publicName: "svg", isSignal: true, isRequired: false, transformFunction: null }, svgSrc: { classPropertyName: "svgSrc", publicName: "svgSrc", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-icon" }, ngImport: i0, template: '', isInline: true, styles: [".yuv-icon{--_icon-size: var(--icon-size, 24px);width:var(--_icon-size);height:var(--_icon-size);display:inline-flex;font-size:1px;color:currentColor;svg{pointer-events:none;fill:currentColor;width:100%;height:100%}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvIconComponent, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.20", type: YuvIconComponent, isStandalone: true, selector: "yuv-icon", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, svg: { classPropertyName: "svg", publicName: "svg", isSignal: true, isRequired: false, transformFunction: null }, svgSrc: { classPropertyName: "svgSrc", publicName: "svgSrc", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "yuv-icon" }, ngImport: i0, template: '', isInline: true, styles: [".yuv-icon{--_icon-size: var(--icon-size, 24px);width:var(--_icon-size);height:var(--_icon-size);display:inline-flex;font-size:1px;color:currentColor;svg{pointer-events:none;fill:currentColor;width:100%;height:100%}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
163
163
  }
164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvIconComponent, decorators: [{
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvIconComponent, decorators: [{
165
165
  type: Component,
166
166
  args: [{ selector: 'yuv-icon', standalone: true, template: '', host: { class: 'yuv-icon' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".yuv-icon{--_icon-size: var(--icon-size, 24px);width:var(--_icon-size);height:var(--_icon-size);display:inline-flex;font-size:1px;color:currentColor;svg{pointer-events:none;fill:currentColor;width:100%;height:100%}}\n"] }]
167
167
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.HttpClient }, { type: undefined, decorators: [{
@@ -184,10 +184,10 @@ class ObjectTypeIconComponent {
184
184
  this.title = params?.value ? this.system.getLocalizedLabel(params.value) : '';
185
185
  return true;
186
186
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectTypeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ObjectTypeIconComponent, isStandalone: true, selector: "yuv-object-type-icon", inputs: { objectTypeId: "objectTypeId" }, ngImport: i0, template: "@if(svg){\n<yuv-icon title=\"{{title}}\" [svg]=\"svg\"></yuv-icon>}", styles: [":host{display:grid;place-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: YuvIconComponent, selector: "yuv-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectTypeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ObjectTypeIconComponent, isStandalone: true, selector: "yuv-object-type-icon", inputs: { objectTypeId: "objectTypeId" }, ngImport: i0, template: "@if(svg){\n<yuv-icon title=\"{{title}}\" [svg]=\"svg\"></yuv-icon>}", styles: [":host{display:grid;place-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: YuvIconComponent, selector: "yuv-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
189
189
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectTypeIconComponent, decorators: [{
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ObjectTypeIconComponent, decorators: [{
191
191
  type: Component,
192
192
  args: [{ selector: 'yuv-object-type-icon', standalone: true, imports: [CommonModule, YuvIconComponent], template: "@if(svg){\n<yuv-icon title=\"{{title}}\" [svg]=\"svg\"></yuv-icon>}", styles: [":host{display:grid;place-items:center}\n"] }]
193
193
  }], propDecorators: { objectTypeId: [{
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-icons.mjs","sources":["../../../../../libs/yuuvis/client-framework/icons/src/lib/icons.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/icon.service.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/icon.component.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/object-type-icon/object-type-icon.component.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/object-type-icon/object-type-icon.component.html","../../../../../libs/yuuvis/client-framework/icons/src/yuuvis-client-framework-icons.ts"],"sourcesContent":["// Several 'general purpose' icons\nexport const YUV_ICONS: any = {\n add: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\t<path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\t<path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7z\" /></svg>',\n arrowLast:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"/><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/></svg>',\n arrowNext:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>',\n arrowDown:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z\"/></svg>',\n attention:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M480-79q-16 0-30.5-6T423-102L102-423q-11-12-17-26.5T79-480q0-16 6-31t17-26l321-321q12-12 26.5-17.5T480-881q16 0 31 5.5t26 17.5l321 321q12 11 17.5 26t5.5 31q0 16-5.5 30.5T858-423L537-102q-11 11-26 17t-31 6Zm0-80 321-321-321-321-321 321 321 321Zm-40-281h80v-240h-80v240Zm40 120q17 0 28.5-11.5T520-360q0-17-11.5-28.5T480-400q-17 0-28.5 11.5T440-360q0 17 11.5 28.5T480-320Zm0-160Z\"/></svg>',\n back: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z\"/></svg>',\n check:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"/></svg>',\n edit: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z\"/></svg>',\n dragHandle:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M360-160q-33 0-56.5-23.5T280-240q0-33 23.5-56.5T360-320q33 0 56.5 23.5T440-240q0 33-23.5 56.5T360-160Zm240 0q-33 0-56.5-23.5T520-240q0-33 23.5-56.5T600-320q33 0 56.5 23.5T680-240q0 33-23.5 56.5T600-160ZM360-400q-33 0-56.5-23.5T280-480q0-33 23.5-56.5T360-560q33 0 56.5 23.5T440-480q0 33-23.5 56.5T360-400Zm240 0q-33 0-56.5-23.5T520-480q0-33 23.5-56.5T600-560q33 0 56.5 23.5T680-480q0 33-23.5 56.5T600-400ZM360-640q-33 0-56.5-23.5T280-720q0-33 23.5-56.5T360-800q33 0 56.5 23.5T440-720q0 33-23.5 56.5T360-640Zm240 0q-33 0-56.5-23.5T520-720q0-33 23.5-56.5T600-800q33 0 56.5 23.5T680-720q0 33-23.5 56.5T600-640Z\"/></svg>',\n envelope:\n '<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z\"/></svg>',\n favorite:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z\"/></svg>',\n filter:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M17.01 14h-.8l-.27-.27c.98-1.14 1.57-2.61 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 3-6.5 6.5H2l3.84 4 4.16-4H6.51C6.51 7 8.53 5 11.01 5s4.5 2.01 4.5 4.5c0 2.48-2.02 4.5-4.5 4.5-.65 0-1.26-.14-1.82-.38L7.71 15.1c.97.57 2.09.9 3.3.9 1.61 0 3.08-.59 4.22-1.57l.27.27v.79l5.01 4.99L22 19l-4.99-5z\"/></svg>',\n folder:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640v400q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H447l-80-80H160v480Zm0 0v-480 480Z\"/></svg>',\n globe:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\"/></svg>',\n group:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M96-192v-92q0-26 12.5-47.5T143-366q54-32 114.5-49T384-432q66 0 126.5 17T625-366q22 13 34.5 34.5T672-284v92H96Zm648 0v-92q0-42-19.5-78T672-421q39 8 75.5 21.5T817-366q22 13 34.5 34.5T864-284v92H744ZM384-480q-60 0-102-42t-42-102q0-60 42-102t102-42q60 0 102 42t42 102q0 60-42 102t-102 42Zm336-144q0 60-42 102t-102 42q-8 0-15-.5t-15-2.5q25-29 39.5-64.5T600-624q0-41-14.5-76.5T546-765q8-2 15-2.5t15-.5q60 0 102 42t42 102Z\"/></svg>',\n notification:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M160-200v-80h80v-280q0-83 50-147.5T420-792v-28q0-25 17.5-42.5T480-880q25 0 42.5 17.5T540-820v28q80 20 130 84.5T720-560v280h80v80H160Zm320-300Zm0 420q-33 0-56.5-23.5T400-160h160q0 33-23.5 56.5T480-80ZM320-280h320v-280q0-66-47-113t-113-47q-66 0-113 47t-47 113v280Z\"/></svg>',\n phone:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"48\" height=\"48\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20.01 15.38c-1.23 0-2.42-.2-3.53-.56a.977.977 0 0 0-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z\"/></svg>',\n pin: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40v280Zm-286 80h252l-46-46v-314H400v314l-46 46Zm126 0Z\"/></svg>',\n refresh:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z\"/></svg>',\n search:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/></svg>',\n settings:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><g><path d=\"M0,0h24v24H0V0z\" fill=\"none\"/><path d=\"M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z\"/></g></svg>',\n star: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z\"/></svg>',\n starFilled:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" style=\"enable-background:new 0 0 24 24\" viewBox=\"0 0 24 24\"><path d=\"m5.8 21 1.6-7L2 9.2l7.2-.6L12 2l2.8 6.6 7.2.6-5.4 4.8 1.6 7-6.2-3.7L5.8 21z\"/></svg>',\n trash:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z\"/></svg>',\n user: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M480-480q-60 0-102-42t-42-102q0-60 42-102t102-42q60 0 102 42t42 102q0 60-42 102t-102 42ZM192-192v-96q0-23 12.5-43.5T239-366q55-32 116.5-49T480-432q63 0 124.5 17T721-366q22 13 34.5 34t12.5 44v96H192Z\"/></svg>',\n warning:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"/></svg>',\n info: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>',\n more: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z\"/></svg>'\n};\n","import { Injectable } from '@angular/core';\nimport { YUV_ICONS } from './icons';\n\n/**\n * Service managing icons. Use `getIcon(id)` to retrieve the SVG string for that key.\n * By default these SVGs will be served from the resources provided by this module.\n * It contains several general [purpose icons](icons.ts). If you want to extend the\n * list of icons or overwrite an existing icon use `registerIcon(s)` functions. If the\n * id of an icon to be registered already exists it will be overwritten otherwise added\n * to the list of available icons. Once registered icons are available across the whole\n * application.\n * @deprecated\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class IconService {\n private _iconRegistry: { [id: string]: string } = {};\n // icon returnned if nothing has been found\n private _brokenIcon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path fill=\"red\" d=\"M212.309-140.001q-30.308 0-51.308-21t-21-51.308v-535.382q0-30.308 21-51.308t51.308-21h535.382q30.308 0 51.308 21t21 51.308v535.382q0 30.308-21 51.308t-51.308 21H212.309ZM240-442.768l160-160 160 160 160-160 40 40v-184.923q0-5.385-3.462-8.847-3.462-3.462-8.847-3.462H212.309q-5.385 0-8.847 3.462-3.462 3.462-3.462 8.847v264.923l40 40ZM212.309-200h535.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-265.538l-40-40-160 160-160-160-160 160-40-40v185.538q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462ZM200-200V-477.847v59.998V-760v560Z\"/></svg>';\n\n /**\n * Get an icon. Based on its ID the service will try to retrieve the svg string\n * from its internal icon registry or the default icons provided by the module\n * @param id ID of the icon\n * @returns SVG string or undefined if the icon could not be found\n */\n getIcon(id: string): string | undefined {\n return this._iconRegistry[id] || YUV_ICONS[id] || this._brokenIcon;\n }\n\n /**\n * Register a new icon or overwrite an existing icon.\n * @param id ID of the icon\n * @param svg SVG string bound to that ID\n */\n registerIcon(id: string, svg: string) {\n if (this._isValidSVG(svg)) this._iconRegistry[id] = svg;\n else console.error(`Invalid SVG string for id ${id}`);\n }\n\n /**\n * Register multiple icons at once\n * @param icons Array of icons\n */\n registerIcons(icons: { id: string; svg: string }[]) {\n icons.forEach((i) => this.registerIcon(i.id, i.svg));\n }\n\n private _isValidSVG(svg: string): boolean {\n // TODO: find a more sofisticated way to validate\n return svg.indexOf('<svg') !== -1;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, Inject, input, OnInit, Optional, ViewEncapsulation } from '@angular/core';\n\n/**\n * Component to display an SVG icon.\n * @deprecated Deprecated description\n */\n@Component({\n selector: 'yuv-icon',\n standalone: true,\n template: '',\n styles: `\n .yuv-icon {\n --_icon-size: var(--icon-size, 24px);\n\n width: var(--_icon-size);\n height: var(--_icon-size);\n display: inline-flex;\n font-size: 1px;\n color: currentColor;\n\n svg {\n pointer-events: none;\n fill: currentColor;\n width: 100%;\n height: 100%;\n }\n }\n `,\n host: { class: 'yuv-icon' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YuvIconComponent implements OnInit {\n private _svgIcon: SVGElement | undefined;\n #initialized = false;\n\n label = input<string | undefined>();\n\n #svg?: string | SVGElement;\n #svgSrc?: string;\n\n svg = input<string | SVGElement>();\n #svgEffect = effect(() => {\n this.#svg = this.svg();\n if (this.#svg) this.#render();\n });\n svgSrc = input<string>();\n #svgSrcEffect = effect(() => {\n this.#svgSrc = this.svgSrc();\n if (this.#svgSrc) this.#render();\n });\n \n constructor(\n private element: ElementRef,\n private http: HttpClient,\n @Optional() @Inject(DOCUMENT) private document: any\n ) {}\n\n #render() {\n if (!this.#initialized) return;\n this._removeSVG();\n\n if (this.#svgSrc)\n this.http.get(this.#svgSrc as string, { responseType: 'text' }).subscribe({\n next: (svg) => this._createSvg(svg)\n });\n else if (this.#svg) this._createSvg(this.#svg);\n }\n\n private _createSvg(svgData: any) {\n this._svgIcon = this._svgElementFromString(svgData);\n this.element.nativeElement.appendChild(this._svgIcon);\n }\n\n private _removeSVG() {\n if (this._svgIcon) {\n this.element.nativeElement.removeChild(this._svgIcon);\n }\n }\n\n private _svgElementFromString(svgData: string): SVGElement {\n const div = this.document.createElement('DIV');\n div.innerHTML = svgData;\n const svg: SVGElement = div.querySelector('svg');\n\n const label = this.label();\n if (svg) {\n label ? svg.setAttribute('aria-label', label) : svg.setAttribute('aria-hidden', 'true');\n }\n\n return svg || this.document.createElementNS('http://www.w3.org/2000/svg', 'path');\n }\n\n ngOnInit(): void {\n if (!this.#initialized) {\n this.#initialized = true;\n this.#render();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, inject } from '@angular/core';\nimport { BackendService, SystemService } from '@yuuvis/client-core';\nimport { YuvIconComponent } from '../icon.component';\n\n@Component({\n selector: 'yuv-object-type-icon',\n standalone: true,\n imports: [CommonModule, YuvIconComponent],\n templateUrl: './object-type-icon.component.html',\n styleUrls: ['./object-type-icon.component.scss']\n})\nexport class ObjectTypeIconComponent {\n private system = inject(SystemService);\n private backend = inject(BackendService);\n\n @Input() set objectTypeId(id: string) {\n this.refresh({ value: id });\n }\n\n svg?: string;\n title?: string;\n\n refresh(params: any): boolean {\n this.backend.getViaCache(params?.value ? this.system.getObjectTypeIconUri(params.value) : '').subscribe((res) => (this.svg = res));\n this.title = params?.value ? this.system.getLocalizedLabel(params.value) : '';\n return true;\n }\n}\n","@if(svg){\n<yuv-icon title=\"{{title}}\" [svg]=\"svg\"></yuv-icon>}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-icons.mjs","sources":["../../../../../libs/yuuvis/client-framework/icons/src/lib/icons.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/icon.service.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/icon.component.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/object-type-icon/object-type-icon.component.ts","../../../../../libs/yuuvis/client-framework/icons/src/lib/object-type-icon/object-type-icon.component.html","../../../../../libs/yuuvis/client-framework/icons/src/yuuvis-client-framework-icons.ts"],"sourcesContent":["// Several 'general purpose' icons\nexport const YUV_ICONS: any = {\n add: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\t<path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\t<path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7z\" /></svg>',\n arrowLast:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"/><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/></svg>',\n arrowNext:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>',\n arrowDown:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z\"/></svg>',\n attention:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M480-79q-16 0-30.5-6T423-102L102-423q-11-12-17-26.5T79-480q0-16 6-31t17-26l321-321q12-12 26.5-17.5T480-881q16 0 31 5.5t26 17.5l321 321q12 11 17.5 26t5.5 31q0 16-5.5 30.5T858-423L537-102q-11 11-26 17t-31 6Zm0-80 321-321-321-321-321 321 321 321Zm-40-281h80v-240h-80v240Zm40 120q17 0 28.5-11.5T520-360q0-17-11.5-28.5T480-400q-17 0-28.5 11.5T440-360q0 17 11.5 28.5T480-320Zm0-160Z\"/></svg>',\n back: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z\"/></svg>',\n check:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\"/></svg>',\n edit: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z\"/></svg>',\n dragHandle:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M360-160q-33 0-56.5-23.5T280-240q0-33 23.5-56.5T360-320q33 0 56.5 23.5T440-240q0 33-23.5 56.5T360-160Zm240 0q-33 0-56.5-23.5T520-240q0-33 23.5-56.5T600-320q33 0 56.5 23.5T680-240q0 33-23.5 56.5T600-160ZM360-400q-33 0-56.5-23.5T280-480q0-33 23.5-56.5T360-560q33 0 56.5 23.5T440-480q0 33-23.5 56.5T360-400Zm240 0q-33 0-56.5-23.5T520-480q0-33 23.5-56.5T600-560q33 0 56.5 23.5T680-480q0 33-23.5 56.5T600-400ZM360-640q-33 0-56.5-23.5T280-720q0-33 23.5-56.5T360-800q33 0 56.5 23.5T440-720q0 33-23.5 56.5T360-640Zm240 0q-33 0-56.5-23.5T520-720q0-33 23.5-56.5T600-800q33 0 56.5 23.5T680-720q0 33-23.5 56.5T600-640Z\"/></svg>',\n envelope:\n '<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z\"/></svg>',\n favorite:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z\"/></svg>',\n filter:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M17.01 14h-.8l-.27-.27c.98-1.14 1.57-2.61 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 3-6.5 6.5H2l3.84 4 4.16-4H6.51C6.51 7 8.53 5 11.01 5s4.5 2.01 4.5 4.5c0 2.48-2.02 4.5-4.5 4.5-.65 0-1.26-.14-1.82-.38L7.71 15.1c.97.57 2.09.9 3.3.9 1.61 0 3.08-.59 4.22-1.57l.27.27v.79l5.01 4.99L22 19l-4.99-5z\"/></svg>',\n folder:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640v400q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H447l-80-80H160v480Zm0 0v-480 480Z\"/></svg>',\n globe:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\"/></svg>',\n group:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M96-192v-92q0-26 12.5-47.5T143-366q54-32 114.5-49T384-432q66 0 126.5 17T625-366q22 13 34.5 34.5T672-284v92H96Zm648 0v-92q0-42-19.5-78T672-421q39 8 75.5 21.5T817-366q22 13 34.5 34.5T864-284v92H744ZM384-480q-60 0-102-42t-42-102q0-60 42-102t102-42q60 0 102 42t42 102q0 60-42 102t-102 42Zm336-144q0 60-42 102t-102 42q-8 0-15-.5t-15-2.5q25-29 39.5-64.5T600-624q0-41-14.5-76.5T546-765q8-2 15-2.5t15-.5q60 0 102 42t42 102Z\"/></svg>',\n notification:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M160-200v-80h80v-280q0-83 50-147.5T420-792v-28q0-25 17.5-42.5T480-880q25 0 42.5 17.5T540-820v28q80 20 130 84.5T720-560v280h80v80H160Zm320-300Zm0 420q-33 0-56.5-23.5T400-160h160q0 33-23.5 56.5T480-80ZM320-280h320v-280q0-66-47-113t-113-47q-66 0-113 47t-47 113v280Z\"/></svg>',\n phone:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"48\" height=\"48\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20.01 15.38c-1.23 0-2.42-.2-3.53-.56a.977.977 0 0 0-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z\"/></svg>',\n pin: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40v280Zm-286 80h252l-46-46v-314H400v314l-46 46Zm126 0Z\"/></svg>',\n refresh:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z\"/></svg>',\n search:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/></svg>',\n settings:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><g><path d=\"M0,0h24v24H0V0z\" fill=\"none\"/><path d=\"M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z\"/></g></svg>',\n star: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\"><path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z\"/></svg>',\n starFilled:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" style=\"enable-background:new 0 0 24 24\" viewBox=\"0 0 24 24\"><path d=\"m5.8 21 1.6-7L2 9.2l7.2-.6L12 2l2.8 6.6 7.2.6-5.4 4.8 1.6 7-6.2-3.7L5.8 21z\"/></svg>',\n trash:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z\"/></svg>',\n user: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M480-480q-60 0-102-42t-42-102q0-60 42-102t102-42q60 0 102 42t42 102q0 60-42 102t-102 42ZM192-192v-96q0-23 12.5-43.5T239-366q55-32 116.5-49T480-432q63 0 124.5 17T721-366q22 13 34.5 34t12.5 44v96H192Z\"/></svg>',\n warning:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"/></svg>',\n info: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>',\n more: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z\"/></svg>'\n};\n","import { Injectable } from '@angular/core';\nimport { YUV_ICONS } from './icons';\n\n/**\n * Service managing icons. Use `getIcon(id)` to retrieve the SVG string for that key.\n * By default these SVGs will be served from the resources provided by this module.\n * It contains several general [purpose icons](icons.ts). If you want to extend the\n * list of icons or overwrite an existing icon use `registerIcon(s)` functions. If the\n * id of an icon to be registered already exists it will be overwritten otherwise added\n * to the list of available icons. Once registered icons are available across the whole\n * application.\n * @deprecated\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class IconService {\n private _iconRegistry: { [id: string]: string } = {};\n // icon returnned if nothing has been found\n private _brokenIcon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path fill=\"red\" d=\"M212.309-140.001q-30.308 0-51.308-21t-21-51.308v-535.382q0-30.308 21-51.308t51.308-21h535.382q30.308 0 51.308 21t21 51.308v535.382q0 30.308-21 51.308t-51.308 21H212.309ZM240-442.768l160-160 160 160 160-160 40 40v-184.923q0-5.385-3.462-8.847-3.462-3.462-8.847-3.462H212.309q-5.385 0-8.847 3.462-3.462 3.462-3.462 8.847v264.923l40 40ZM212.309-200h535.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-265.538l-40-40-160 160-160-160-160 160-40-40v185.538q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462ZM200-200V-477.847v59.998V-760v560Z\"/></svg>';\n\n /**\n * Get an icon. Based on its ID the service will try to retrieve the svg string\n * from its internal icon registry or the default icons provided by the module\n * @param id ID of the icon\n * @returns SVG string or undefined if the icon could not be found\n */\n getIcon(id: string): string | undefined {\n return this._iconRegistry[id] || YUV_ICONS[id] || this._brokenIcon;\n }\n\n /**\n * Register a new icon or overwrite an existing icon.\n * @param id ID of the icon\n * @param svg SVG string bound to that ID\n */\n registerIcon(id: string, svg: string) {\n if (this._isValidSVG(svg)) this._iconRegistry[id] = svg;\n else console.error(`Invalid SVG string for id ${id}`);\n }\n\n /**\n * Register multiple icons at once\n * @param icons Array of icons\n */\n registerIcons(icons: { id: string; svg: string }[]) {\n icons.forEach((i) => this.registerIcon(i.id, i.svg));\n }\n\n private _isValidSVG(svg: string): boolean {\n // TODO: find a more sofisticated way to validate\n return svg.indexOf('<svg') !== -1;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, Inject, input, OnInit, Optional, ViewEncapsulation } from '@angular/core';\n\n/**\n * Component to display an SVG icon.\n * @deprecated Deprecated description\n */\n@Component({\n selector: 'yuv-icon',\n standalone: true,\n template: '',\n styles: `\n .yuv-icon {\n --_icon-size: var(--icon-size, 24px);\n\n width: var(--_icon-size);\n height: var(--_icon-size);\n display: inline-flex;\n font-size: 1px;\n color: currentColor;\n\n svg {\n pointer-events: none;\n fill: currentColor;\n width: 100%;\n height: 100%;\n }\n }\n `,\n host: { class: 'yuv-icon' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YuvIconComponent implements OnInit {\n private _svgIcon: SVGElement | undefined;\n #initialized = false;\n\n label = input<string | undefined>();\n\n #svg?: string | SVGElement;\n #svgSrc?: string;\n\n svg = input<string | SVGElement>();\n #svgEffect = effect(() => {\n this.#svg = this.svg();\n if (this.#svg) this.#render();\n });\n svgSrc = input<string>();\n #svgSrcEffect = effect(() => {\n this.#svgSrc = this.svgSrc();\n if (this.#svgSrc) this.#render();\n });\n \n constructor(\n private element: ElementRef,\n private http: HttpClient,\n @Optional() @Inject(DOCUMENT) private document: any\n ) {}\n\n #render() {\n if (!this.#initialized) return;\n this._removeSVG();\n\n if (this.#svgSrc)\n this.http.get(this.#svgSrc as string, { responseType: 'text' }).subscribe({\n next: (svg) => this._createSvg(svg)\n });\n else if (this.#svg) this._createSvg(this.#svg);\n }\n\n private _createSvg(svgData: any) {\n this._svgIcon = this._svgElementFromString(svgData);\n this.element.nativeElement.appendChild(this._svgIcon);\n }\n\n private _removeSVG() {\n if (this._svgIcon) {\n this.element.nativeElement.removeChild(this._svgIcon);\n }\n }\n\n private _svgElementFromString(svgData: string): SVGElement {\n const div = this.document.createElement('DIV');\n div.innerHTML = svgData;\n const svg: SVGElement = div.querySelector('svg');\n\n const label = this.label();\n if (svg) {\n label ? svg.setAttribute('aria-label', label) : svg.setAttribute('aria-hidden', 'true');\n }\n\n return svg || this.document.createElementNS('http://www.w3.org/2000/svg', 'path');\n }\n\n ngOnInit(): void {\n if (!this.#initialized) {\n this.#initialized = true;\n this.#render();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, inject } from '@angular/core';\nimport { BackendService, SystemService } from '@yuuvis/client-core';\nimport { YuvIconComponent } from '../icon.component';\n\n@Component({\n selector: 'yuv-object-type-icon',\n standalone: true,\n imports: [CommonModule, YuvIconComponent],\n templateUrl: './object-type-icon.component.html',\n styleUrls: ['./object-type-icon.component.scss']\n})\nexport class ObjectTypeIconComponent {\n private system = inject(SystemService);\n private backend = inject(BackendService);\n\n @Input() set objectTypeId(id: string) {\n this.refresh({ value: id });\n }\n\n svg?: string;\n title?: string;\n\n refresh(params: any): boolean {\n this.backend.getViaCache(params?.value ? this.system.getObjectTypeIconUri(params.value) : '').subscribe((res) => (this.svg = res));\n this.title = params?.value ? this.system.getLocalizedLabel(params.value) : '';\n return true;\n }\n}\n","@if(svg){\n<yuv-icon title=\"{{title}}\" [svg]=\"svg\"></yuv-icon>}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@ import { inject, ElementRef, input, linkedSignal, HostListener, Input, Directive
3
3
  import { Utils } from '@yuuvis/client-core';
4
4
  import { ActiveDescendantKeyManager, A11yModule } from '@angular/cdk/a11y';
5
5
  import { Directionality } from '@angular/cdk/bidi';
6
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
7
  import * as i1 from '@angular/common';
7
8
  import { CommonModule } from '@angular/common';
8
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
9
9
 
10
10
  /**
11
11
  * Directive for list items. It is used in the `yuvList` component
@@ -85,10 +85,10 @@ class ListItemDirective {
85
85
  this.focusableChildren = Utils.getFocusableChildren(this.#elRef.nativeElement);
86
86
  this.focusableChildren.forEach((el) => el.setAttribute('tabindex', '-1'));
87
87
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
89
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: ListItemDirective, isStandalone: true, selector: "[yuvListItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "attr.aria-current": "activeInput()", "attr.aria-selected": "selectedInput()" } }, ngImport: i0 }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
89
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: ListItemDirective, isStandalone: true, selector: "[yuvListItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "attr.aria-current": "activeInput()", "attr.aria-selected": "selectedInput()" } }, ngImport: i0 }); }
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListItemDirective, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListItemDirective, decorators: [{
92
92
  type: Directive,
93
93
  args: [{
94
94
  selector: '[yuvListItem]',
@@ -244,6 +244,17 @@ class ListComponent {
244
244
  #keyManager;
245
245
  #selection;
246
246
  #lastSelection;
247
+ /**
248
+ * Sets the active (focused) item by index. This updates the visual focus
249
+ * indicator and scrolls the item into view, without changing the selection.
250
+ */
251
+ setActiveItem(index) {
252
+ if (this.#keyManager) {
253
+ this.#keyManager.setActiveItem(index);
254
+ this.#select(index);
255
+ this.focus();
256
+ }
257
+ }
247
258
  focus() {
248
259
  this.#elRef.nativeElement.focus();
249
260
  }
@@ -370,23 +381,19 @@ class ListComponent {
370
381
  ngOnDestroy() {
371
382
  this.#keyManager?.destroy();
372
383
  }
373
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
374
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: ListComponent, isStandalone: true, selector: "yuv-list", inputs: { preventChangeUntil: { classPropertyName: "preventChangeUntil", publicName: "preventChangeUntil", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, selfHandleSelection: { classPropertyName: "selfHandleSelection", publicName: "selfHandleSelection", isSignal: true, isRequired: false, transformFunction: null }, selfHandleClick: { classPropertyName: "selfHandleClick", publicName: "selfHandleClick", isSignal: true, isRequired: false, transformFunction: null }, autoSelect: { classPropertyName: "autoSelect", publicName: "autoSelect", isSignal: true, isRequired: false, transformFunction: null }, disableSelection: { classPropertyName: "disableSelection", publicName: "disableSelection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect", itemFocus: "itemFocus" }, host: { attributes: { "role": "listbox", "tabindex": "0" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()" }, properties: { "class.self-handle-selection": "selfHandleSelection()" } }, queries: [{ propertyName: "items", predicate: ListItemDirective, isSignal: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["yuv-list{display:block;max-height:100%;overflow-y:auto;outline:none}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile)){position:relative;cursor:pointer;transition:background-color .2s ease,color .2s ease,border-color .2s ease}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile)):hover,yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile))[aria-current=true]{background-color:var(--ymt-focus-background);color:var(--ymt-on-focus-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile))[aria-selected=true]{background-color:var(--ymt-selection-background);color:var(--ymt-on-selection-background);font-weight:500}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile):hover:not([aria-selected=true]) .tile{--_tile-background: var(--ymt-hover-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile)[aria-selected=true] .tile{--_tile-background: var(--ymt-selection-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile)[aria-current=true] .tile{--_tile-background: var(--ymt-focus-background)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: A11yModule }], encapsulation: i0.ViewEncapsulation.None }); }
384
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
385
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.20", type: ListComponent, isStandalone: true, selector: "yuv-list", inputs: { preventChangeUntil: { classPropertyName: "preventChangeUntil", publicName: "preventChangeUntil", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, selfHandleSelection: { classPropertyName: "selfHandleSelection", publicName: "selfHandleSelection", isSignal: true, isRequired: false, transformFunction: null }, selfHandleClick: { classPropertyName: "selfHandleClick", publicName: "selfHandleClick", isSignal: true, isRequired: false, transformFunction: null }, autoSelect: { classPropertyName: "autoSelect", publicName: "autoSelect", isSignal: true, isRequired: false, transformFunction: null }, disableSelection: { classPropertyName: "disableSelection", publicName: "disableSelection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect", itemFocus: "itemFocus" }, host: { attributes: { "role": "listbox", "tabindex": "0" }, listeners: { "focus": "onFocus()", "keydown": "onKeydown($event)" }, properties: { "class.self-handle-selection": "selfHandleSelection()" } }, queries: [{ propertyName: "items", predicate: ListItemDirective, isSignal: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["yuv-list{display:block;max-height:100%;overflow-y:auto;outline:none}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile)){position:relative;cursor:pointer;transition:background-color .2s ease,color .2s ease,border-color .2s ease}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile)):hover,yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile))[aria-current=true]{background-color:var(--ymt-focus-background);color:var(--ymt-on-focus-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile))[aria-selected=true]{background-color:var(--ymt-selection-background);color:var(--ymt-on-selection-background);font-weight:500}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile):hover:not([aria-selected=true]) .tile{--_tile-background: var(--ymt-hover-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile)[aria-selected=true] .tile{--_tile-background: var(--ymt-selection-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile)[aria-current=true] .tile{--_tile-background: var(--ymt-focus-background)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: A11yModule }], encapsulation: i0.ViewEncapsulation.None }); }
375
386
  }
376
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListComponent, decorators: [{
387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListComponent, decorators: [{
377
388
  type: Component,
378
389
  args: [{ selector: 'yuv-list', standalone: true, imports: [CommonModule, A11yModule], template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, host: {
379
390
  role: 'listbox',
380
391
  tabindex: '0',
381
- '[class.self-handle-selection]': 'selfHandleSelection()'
392
+ '[class.self-handle-selection]': 'selfHandleSelection()',
393
+ '(focus)': 'onFocus()',
394
+ '(keydown)': 'onKeydown($event)'
382
395
  }, styles: ["yuv-list{display:block;max-height:100%;overflow-y:auto;outline:none}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile)){position:relative;cursor:pointer;transition:background-color .2s ease,color .2s ease,border-color .2s ease}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile)):hover,yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile))[aria-current=true]{background-color:var(--ymt-focus-background);color:var(--ymt-on-focus-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:not(:has(yuv-list-tile))[aria-selected=true]{background-color:var(--ymt-selection-background);color:var(--ymt-on-selection-background);font-weight:500}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile):hover:not([aria-selected=true]) .tile{--_tile-background: var(--ymt-hover-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile)[aria-selected=true] .tile{--_tile-background: var(--ymt-selection-background)}yuv-list:not(.self-handle-selection) [yuvListItem]:has(yuv-list-tile)[aria-current=true] .tile{--_tile-background: var(--ymt-focus-background)}\n"] }]
383
- }], propDecorators: { onKeydown: [{
384
- type: HostListener,
385
- args: ['keydown', ['$event']]
386
- }], onFocus: [{
387
- type: HostListener,
388
- args: ['focus']
389
- }] } });
396
+ }] });
390
397
 
391
398
  class ListTileComponent {
392
399
  constructor() {
@@ -403,20 +410,20 @@ class ListTileComponent {
403
410
  this.metaSlot = contentChild('metaSlot');
404
411
  this.extensionSlot = contentChild('extensionSlot');
405
412
  }
406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
407
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: ListTileComponent, isStandalone: true, selector: "yuv-list-tile", queries: [{ propertyName: "iconSlot", first: true, predicate: ["iconSlot"], descendants: true, isSignal: true }, { propertyName: "titleSlot", first: true, predicate: ["titleSlot"], descendants: true, isSignal: true }, { propertyName: "descriptionSlot", first: true, predicate: ["descriptionSlot"], descendants: true, isSignal: true }, { propertyName: "asideSlot", first: true, predicate: ["asideSlot"], descendants: true, isSignal: true }, { propertyName: "actionsSlot", first: true, predicate: ["actionsSlot"], descendants: true, isSignal: true }, { propertyName: "badgesSlot", first: true, predicate: ["badgesSlot"], descendants: true, isSignal: true }, { propertyName: "metaSlot", first: true, predicate: ["metaSlot"], descendants: true, isSignal: true }, { propertyName: "extensionSlot", first: true, predicate: ["extensionSlot"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *ngTemplateOutlet=\"iconSlot() || null\"></ng-container>\n </div>\n <div class=\"slots\"> \n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *ngTemplateOutlet=\"titleSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *ngTemplateOutlet=\"descriptionSlot() || null\"></ng-container>\n </div>\n </div>\n <div data-slot=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"aside\">\n <ng-container *ngTemplateOutlet=\"asideSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"meta\">\n <ng-container *ngTemplateOutlet=\"metaSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"badges\">\n <ng-container *ngTemplateOutlet=\"badgesSlot() || null\"></ng-container>\n </div>\n <div class=\"extension\">\n <ng-container *ngTemplateOutlet=\"extensionSlot() || null\"></ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{--_tile-background: var(--tile-background, transparent);--_tile-margin: var(--tile-margin, var(--ymt-spacing-xs));--_tile-padding-inline: var(--tile-padding-inline, var(--ymt-spacing-2xl));--_tile-padding-block: var(--tile-padding-block, var(--ymt-spacing-l));--_transition-duration: var(--transition-duration, .1s);--_tile-icon-size: var(--tile-icon-size, initial);--_tile-font-title: var(--tile-font-title, var(--ymt-font-title-smallest));--_tile-font-description: var(--tile-font-description, var(--ymt-font-body));--_tile-font-meta: var(--tile-font-meta, var(--ymt-font-body-subtle));--_tile-font-aside: var(--tile-font-aside, var(--ymt-font-body-subtle));display:block;cursor:pointer}:host.dense .tile{--_tile-padding-inline: var(--ymt-spacing-m);--_tile-padding-block: var(--ymt-spacing-s);--_tile-margin: var(--ymt-spacing-xs);gap:var(--ymt-spacing-s)}:host.dense .tile .extension,:host.dense .tile [data-slot=aside],:host.dense .tile [data-slot=meta],:host.dense .tile [data-slot=actions]{display:none}:host.dense .tile [data-slot=icon]{--icon-renderer-icon-size: 18px}:host .tile{display:flex;align-items:center;background-color:var(--_tile-background);padding:calc(var(--_tile-padding-block) - var(--_tile-margin)) calc(var(--_tile-padding-inline) - var(--_tile-margin));transition:background-color var(--_transition-duration);position:relative;color:var(--ymt-text-color);border-radius:var(--ymt-corner-s);margin:var(--_tile-margin);gap:var(--ymt-spacing-m)}:host .tile .slots{display:grid;grid-template-rows:repeat(4,auto);grid-template-columns:auto;grid-template-areas:\"title-description title-description actions\" \"meta meta aside\" \"badges badges badges\" \"ext ext ext\";flex:1}:host .tile [data-slot]{-webkit-user-select:none;user-select:none;display:grid;align-self:baseline;word-break:break-word}:host .tile [data-slot=icon]{--icon-renderer-icon-size: var(--_tile-icon-size);grid-area:icon;display:flex;align-self:flex-start}:host .tile [data-slot=title-description]{grid-area:title-description;display:grid;grid-template-areas:\"title\" \"description\";align-self:flex-start}:host .tile [data-slot=title]{font:var(--_tile-font-title);grid-area:title;align-self:flex-start;--tile-slot-padding: 0}:host .tile [data-slot=description]{grid-area:description;font:var(--_tile-font-description);color:var(--ymt-text-color-subtle);--tile-slot-padding: 0}:host .tile [data-slot=meta]{grid-area:meta;font:var(--_tile-font-meta);color:var(--ymt-text-color-subtle);--tile-slot-padding: var(--ymt-spacing-2xs) var(--ymt-spacing-2xs) var(--ymt-spacing-2xs) 0}:host .tile [data-slot=aside]{flex:0 0 auto;grid-area:aside;font:var(--_tile-font-aside);color:var(--ymt-text-color-subtle);justify-content:flex-end;text-align:right;--tile-slot-padding: var(--ymt-spacing-2xs)}:host .tile [data-slot=actions]{opacity:.2;transition:opacity var(--_transition-duration);pointer-events:none;display:flex;justify-content:flex-end;padding-block-end:var(--ymt-spacing-2xs);gap:var(--ymt-spacing-3xs)}:host .tile:hover [data-slot=actions]{opacity:1;pointer-events:all}:host .tile [data-slot=actions]{grid-area:actions;flex:0 0 auto;display:flex;align-items:start}:host .tile [data-slot=actions] button{gap:2px}:host .tile [data-slot=badges]{grid-area:badges;justify-self:end;flex:0 0 auto}:host .tile .extension{grid-area:ext}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
414
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.20", type: ListTileComponent, isStandalone: true, selector: "yuv-list-tile", queries: [{ propertyName: "iconSlot", first: true, predicate: ["iconSlot"], descendants: true, isSignal: true }, { propertyName: "titleSlot", first: true, predicate: ["titleSlot"], descendants: true, isSignal: true }, { propertyName: "descriptionSlot", first: true, predicate: ["descriptionSlot"], descendants: true, isSignal: true }, { propertyName: "asideSlot", first: true, predicate: ["asideSlot"], descendants: true, isSignal: true }, { propertyName: "actionsSlot", first: true, predicate: ["actionsSlot"], descendants: true, isSignal: true }, { propertyName: "badgesSlot", first: true, predicate: ["badgesSlot"], descendants: true, isSignal: true }, { propertyName: "metaSlot", first: true, predicate: ["metaSlot"], descendants: true, isSignal: true }, { propertyName: "extensionSlot", first: true, predicate: ["extensionSlot"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *ngTemplateOutlet=\"iconSlot() || null\"></ng-container>\n </div>\n <div class=\"slots\"> \n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *ngTemplateOutlet=\"titleSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *ngTemplateOutlet=\"descriptionSlot() || null\"></ng-container>\n </div>\n </div>\n <div data-slot=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"aside\">\n <ng-container *ngTemplateOutlet=\"asideSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"meta\">\n <ng-container *ngTemplateOutlet=\"metaSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"badges\">\n <ng-container *ngTemplateOutlet=\"badgesSlot() || null\"></ng-container>\n </div>\n <div class=\"extension\">\n <ng-container *ngTemplateOutlet=\"extensionSlot() || null\"></ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{--_tile-background: var(--tile-background, transparent);--_tile-margin: var(--tile-margin, var(--ymt-spacing-xs));--_tile-padding-inline: var(--tile-padding-inline, var(--ymt-spacing-2xl));--_tile-padding-block: var(--tile-padding-block, var(--ymt-spacing-l));--_transition-duration: var(--transition-duration, .1s);--_tile-icon-size: var(--tile-icon-size, initial);--_tile-font-title: var(--tile-font-title, var(--ymt-font-title-smallest));--_tile-font-description: var(--tile-font-description, var(--ymt-font-body));--_tile-font-meta: var(--tile-font-meta, var(--ymt-font-body-subtle));--_tile-font-aside: var(--tile-font-aside, var(--ymt-font-body-subtle));display:block;cursor:pointer}:host.dense .tile{--_tile-padding-inline: var(--ymt-spacing-m);--_tile-padding-block: var(--ymt-spacing-s);--_tile-margin: var(--ymt-spacing-xs);gap:var(--ymt-spacing-s)}:host.dense .tile .extension,:host.dense .tile [data-slot=aside],:host.dense .tile [data-slot=meta],:host.dense .tile [data-slot=actions]{display:none}:host.dense .tile [data-slot=icon]{--icon-renderer-icon-size: 18px}:host .tile{display:flex;align-items:center;background-color:var(--_tile-background);padding:calc(var(--_tile-padding-block) - var(--_tile-margin)) calc(var(--_tile-padding-inline) - var(--_tile-margin));transition:background-color var(--_transition-duration);position:relative;color:var(--ymt-text-color);border-radius:var(--ymt-corner-s);margin:var(--_tile-margin);gap:var(--ymt-spacing-m)}:host .tile .slots{display:grid;grid-template-rows:repeat(4,auto);grid-template-columns:auto;grid-template-areas:\"title-description title-description actions\" \"meta meta aside\" \"badges badges badges\" \"ext ext ext\";flex:1}:host .tile [data-slot]{-webkit-user-select:none;user-select:none;display:grid;align-self:baseline;word-break:break-word}:host .tile [data-slot=icon]{--icon-renderer-icon-size: var(--_tile-icon-size);grid-area:icon;display:flex;align-self:flex-start}:host .tile [data-slot=title-description]{grid-area:title-description;display:grid;grid-template-areas:\"title\" \"description\";align-self:flex-start}:host .tile [data-slot=title]{font:var(--_tile-font-title);grid-area:title;align-self:flex-start;--tile-slot-padding: 0}:host .tile [data-slot=description]{grid-area:description;font:var(--_tile-font-description);color:var(--ymt-text-color-subtle);--tile-slot-padding: 0}:host .tile [data-slot=meta]{grid-area:meta;font:var(--_tile-font-meta);color:var(--ymt-text-color-subtle);--tile-slot-padding: var(--ymt-spacing-2xs) var(--ymt-spacing-2xs) var(--ymt-spacing-2xs) 0}:host .tile [data-slot=aside]{flex:0 0 auto;grid-area:aside;font:var(--_tile-font-aside);color:var(--ymt-text-color-subtle);justify-content:flex-end;text-align:right;--tile-slot-padding: var(--ymt-spacing-2xs)}:host .tile [data-slot=actions]{opacity:.2;transition:opacity var(--_transition-duration);pointer-events:none;display:flex;justify-content:flex-end;padding-block-end:var(--ymt-spacing-2xs);gap:var(--ymt-spacing-3xs)}:host .tile:hover [data-slot=actions]{opacity:1;pointer-events:all}:host .tile [data-slot=actions]{grid-area:actions;flex:0 0 auto;display:flex;align-items:start}:host .tile [data-slot=actions] button{gap:2px}:host .tile [data-slot=badges]{grid-area:badges;justify-self:end;flex:0 0 auto}:host .tile .extension{grid-area:ext}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
408
415
  }
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListTileComponent, decorators: [{
416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ListTileComponent, decorators: [{
410
417
  type: Component,
411
418
  args: [{ selector: 'yuv-list-tile', imports: [CommonModule], template: "<ng-content></ng-content>\n<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *ngTemplateOutlet=\"iconSlot() || null\"></ng-container>\n </div>\n <div class=\"slots\"> \n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *ngTemplateOutlet=\"titleSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *ngTemplateOutlet=\"descriptionSlot() || null\"></ng-container>\n </div>\n </div>\n <div data-slot=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"aside\">\n <ng-container *ngTemplateOutlet=\"asideSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"meta\">\n <ng-container *ngTemplateOutlet=\"metaSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"badges\">\n <ng-container *ngTemplateOutlet=\"badgesSlot() || null\"></ng-container>\n </div>\n <div class=\"extension\">\n <ng-container *ngTemplateOutlet=\"extensionSlot() || null\"></ng-container>\n </div>\n </div>\n</div>\n", styles: [":host{--_tile-background: var(--tile-background, transparent);--_tile-margin: var(--tile-margin, var(--ymt-spacing-xs));--_tile-padding-inline: var(--tile-padding-inline, var(--ymt-spacing-2xl));--_tile-padding-block: var(--tile-padding-block, var(--ymt-spacing-l));--_transition-duration: var(--transition-duration, .1s);--_tile-icon-size: var(--tile-icon-size, initial);--_tile-font-title: var(--tile-font-title, var(--ymt-font-title-smallest));--_tile-font-description: var(--tile-font-description, var(--ymt-font-body));--_tile-font-meta: var(--tile-font-meta, var(--ymt-font-body-subtle));--_tile-font-aside: var(--tile-font-aside, var(--ymt-font-body-subtle));display:block;cursor:pointer}:host.dense .tile{--_tile-padding-inline: var(--ymt-spacing-m);--_tile-padding-block: var(--ymt-spacing-s);--_tile-margin: var(--ymt-spacing-xs);gap:var(--ymt-spacing-s)}:host.dense .tile .extension,:host.dense .tile [data-slot=aside],:host.dense .tile [data-slot=meta],:host.dense .tile [data-slot=actions]{display:none}:host.dense .tile [data-slot=icon]{--icon-renderer-icon-size: 18px}:host .tile{display:flex;align-items:center;background-color:var(--_tile-background);padding:calc(var(--_tile-padding-block) - var(--_tile-margin)) calc(var(--_tile-padding-inline) - var(--_tile-margin));transition:background-color var(--_transition-duration);position:relative;color:var(--ymt-text-color);border-radius:var(--ymt-corner-s);margin:var(--_tile-margin);gap:var(--ymt-spacing-m)}:host .tile .slots{display:grid;grid-template-rows:repeat(4,auto);grid-template-columns:auto;grid-template-areas:\"title-description title-description actions\" \"meta meta aside\" \"badges badges badges\" \"ext ext ext\";flex:1}:host .tile [data-slot]{-webkit-user-select:none;user-select:none;display:grid;align-self:baseline;word-break:break-word}:host .tile [data-slot=icon]{--icon-renderer-icon-size: var(--_tile-icon-size);grid-area:icon;display:flex;align-self:flex-start}:host .tile [data-slot=title-description]{grid-area:title-description;display:grid;grid-template-areas:\"title\" \"description\";align-self:flex-start}:host .tile [data-slot=title]{font:var(--_tile-font-title);grid-area:title;align-self:flex-start;--tile-slot-padding: 0}:host .tile [data-slot=description]{grid-area:description;font:var(--_tile-font-description);color:var(--ymt-text-color-subtle);--tile-slot-padding: 0}:host .tile [data-slot=meta]{grid-area:meta;font:var(--_tile-font-meta);color:var(--ymt-text-color-subtle);--tile-slot-padding: var(--ymt-spacing-2xs) var(--ymt-spacing-2xs) var(--ymt-spacing-2xs) 0}:host .tile [data-slot=aside]{flex:0 0 auto;grid-area:aside;font:var(--_tile-font-aside);color:var(--ymt-text-color-subtle);justify-content:flex-end;text-align:right;--tile-slot-padding: var(--ymt-spacing-2xs)}:host .tile [data-slot=actions]{opacity:.2;transition:opacity var(--_transition-duration);pointer-events:none;display:flex;justify-content:flex-end;padding-block-end:var(--ymt-spacing-2xs);gap:var(--ymt-spacing-3xs)}:host .tile:hover [data-slot=actions]{opacity:1;pointer-events:all}:host .tile [data-slot=actions]{grid-area:actions;flex:0 0 auto;display:flex;align-items:start}:host .tile [data-slot=actions] button{gap:2px}:host .tile [data-slot=badges]{grid-area:badges;justify-self:end;flex:0 0 auto}:host .tile .extension{grid-area:ext}\n"] }]
412
419
  }] });
413
420
 
414
421
  class YuvListModule {
415
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
416
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: YuvListModule, imports: [ListComponent, ListItemDirective, ListTileComponent], exports: [ListComponent, ListItemDirective, ListTileComponent] }); }
417
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvListModule, imports: [ListComponent, ListTileComponent] }); }
422
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
423
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: YuvListModule, imports: [ListComponent, ListItemDirective, ListTileComponent], exports: [ListComponent, ListItemDirective, ListTileComponent] }); }
424
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvListModule, imports: [ListComponent, ListTileComponent] }); }
418
425
  }
419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvListModule, decorators: [{
426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvListModule, decorators: [{
420
427
  type: NgModule,
421
428
  args: [{
422
429
  imports: [ListComponent, ListItemDirective, ListTileComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/list/src/lib/list-item.directive.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list.component.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list-tile/list-tile.component.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list-tile/list-tile.component.html","../../../../../libs/yuuvis/client-framework/list/src/lib/list.module.ts","../../../../../libs/yuuvis/client-framework/list/src/yuuvis-client-framework-list.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, input, Input, linkedSignal } from '@angular/core';\nimport { Utils } from '@yuuvis/client-core';\n\n/**\n * Directive for list items. It is used in the `yuvList` component\n * to keep track of active and selected items. Every element with this\n * directive will be treated as a list item and can be selected and focused.\n * \n *```html\n * <yuv-list (itemSelect)=\"itemSelected($event)\">\n * <div yuvListItem>Entry #1</div>\n * <div yuvListItem>Entry #2</div>\n * </yuv-list>\n * ```\n */\n@Directive({\n selector: '[yuvListItem]',\n standalone: true,\n host: {\n '[attr.aria-current]': 'activeInput()',\n '[attr.aria-selected]': 'selectedInput()'\n }\n})\nexport class ListItemDirective implements Highlightable, AfterViewInit {\n #elRef = inject(ElementRef);\n\n onClick?: (evt: MouseEvent) => void;\n\n // TO SATISFY THE HIGHLIGHTABLE INTERFACE\n @Input() disabled?: boolean | undefined;\n\n /**\n * Whether the item is active or not. \n */\n active = input<boolean>(false);\n /**\n * Whether the item is selected or not. \n */\n selected = input<boolean>(false);\n\n selectedInput = linkedSignal({\n source: this.selected,\n computation: (newOptions: any, previous: any) => (newOptions !== previous ? newOptions : previous)\n });\n\n activeInput = linkedSignal({\n source: this.active,\n computation: (newOptions: any, previous: any) => (newOptions !== previous ? newOptions : previous)\n });\n\n focusableChildren: Element[] = [];\n focusedIndex = -1;\n\n @HostListener('click', ['$event']) onHostClick(evt: MouseEvent) {\n if (!this.disabled && this.onClick) {\n this.#elRef.nativeElement.parentElement.focus();\n this.onClick(evt);\n }\n }\n\n setActiveStyles(): void {\n this.activeInput.set(true);\n this.#scrollIntoView();\n }\n\n setInactiveStyles(): void {\n this.activeInput.set(false);\n }\n\n focusNext() {\n \n }\n\n focusPrevious() {\n }\n\n #scrollIntoView() {\n const el = this.#elRef.nativeElement as HTMLElement;\n const { bottom, top, left, right } = el.getBoundingClientRect();\n const containerRect = this.#elRef.nativeElement.parentElement.getBoundingClientRect();\n\n const offsetY =\n top <= containerRect.top\n ? containerRect.top - top > 0\n ? (containerRect.top - top) * -1\n : 0\n : bottom - containerRect.bottom > 0\n ? bottom - containerRect.bottom\n : 0;\n const offsetX =\n left <= containerRect.left\n ? containerRect.left - left > 0\n ? (containerRect.left - left) * -1\n : 0\n : right - containerRect.right > 0\n ? right - containerRect.right\n : 0;\n\n if (offsetX || offsetY) (this.#elRef.nativeElement.parentElement as HTMLElement).scrollBy(offsetX, offsetY);\n }\n\n ngAfterViewInit(): void {\n // get all focusable elements and set tabindex to -1\n this.focusableChildren = Utils.getFocusableChildren(this.#elRef.nativeElement);\n this.focusableChildren.forEach((el) => el.setAttribute('tabindex', '-1'));\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n HostAttributeToken,\n HostListener,\n OnDestroy,\n ViewEncapsulation,\n contentChildren,\n effect,\n inject,\n input,\n output,\n untracked,\n AfterContentInit\n} from '@angular/core';\nimport { ListItemDirective } from './list-item.directive';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * Component rendering a simple list of items. It supports keyboard\n * navigation and takes care of accessibility. To create a list just wrap\n * `yuvListItem` elements into this component:\n *\n * ```html\n * <yuv-list (itemSelect)=\"itemSelected($event)\">\n * <div yuvListItem>Entry #1</div>\n * <div yuvListItem>Entry #2</div>\n * </yuv-list>\n * ```\n */\n@Component({\n selector: 'yuv-list',\n standalone: true,\n imports: [CommonModule, A11yModule],\n template: '<ng-content></ng-content>',\n styleUrl: './list.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'listbox',\n tabindex: '0',\n '[class.self-handle-selection]': 'selfHandleSelection()'\n }\n})\nexport class ListComponent implements OnDestroy {\n #dir = inject(Directionality);\n #elRef = inject(ElementRef);\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent) {\n if (this.disableSelection()) return;\n if (event.code === 'Escape') {\n this.clear();\n }\n\n if (event.code === 'Space' || (this.selectOnEnter && event.code === 'Enter')) {\n // prevent default behavior of space in scroll environments\n if (this.#preventEmit()) return;\n event.preventDefault();\n const aii: number = this.#keyManager.activeItemIndex !== null ? this.#keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.#select(aii);\n this.#emitSelection();\n }\n } else this.#keyManager?.onKeydown(event);\n }\n\n @HostListener('focus') onFocus() {\n // set timeout to check if the focus is coming from an item being clicked\n setTimeout(() => {\n // if there already is an active item, we do not want to set the focus again\n if (this.#keyManager.activeItemIndex === -1 && this.items().length > 0) {\n const indexToFocus = this.#selection.length > 0 ? this.#selection[0] : 0;\n this.#keyManager.setActiveItem(indexToFocus);\n this.itemFocus.emit(indexToFocus);\n this.#updateActiveItemState();\n }\n }, 300);\n }\n\n items = contentChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n const items = this.items();\n if (this.#keyManager) this.#keyManager.destroy();\n untracked(() => {\n this.#keyManager = this.horizontal\n ? new ActiveDescendantKeyManager(items).withWrap().withHorizontalOrientation(this.#dir.value)\n : new ActiveDescendantKeyManager(items).withWrap();\n\n this.#keyManager.change.subscribe((activeIndex) => {\n if (activeIndex !== null) {\n this.#updateActiveItemState();\n this.itemFocus.emit(activeIndex);\n }\n });\n\n if (!this.selfHandleClick()) {\n items.forEach((item, index) => {\n item.onClick = (evt: MouseEvent) => {\n this.select(index, evt.shiftKey, evt.ctrlKey);\n };\n item.activeInput.set(false);\n });\n }\n if (this.#lastSelection !== undefined && this.#lastSelection <= items.length) {\n this.select(this.#lastSelection);\n }\n this.#preselectItem();\n });\n });\n\n #keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n #selection: number[] = [];\n #lastSelection?: number;\n\n /**\n * Function that returns `true` if selection changes should be prevented.\n * This can be used to temporarily block selection changes, e.g. while\n * there is a pending change inside another component that refers to the\n * current selection.\n */\n preventChangeUntil = input<() => boolean>(() => false);\n /**\n * If `true`, multiple items can be selected at once.\n * @default false\n */\n multiselect = input<boolean>(false);\n /**\n * If `true`, the component will handle selection itself. This means that\n * the parent component will be responsible for styling the selected and\n * focused items. If `false`, the component will take care of visualizing\n * the selection and focus states.\n * @default false\n */\n selfHandleSelection = input<boolean>(false);\n /**\n * By default the list handles click events on its items to select them.\n * If this input is set to `true`, the parent component has to handle\n * click events itself and call the `select()` method accordingly.\n *\n * If you for example use the `ClickDoubleDirective` on the list items,\n * you have to set this input to `true` to prevent the list from\n * selecting items on single click.\n * @default false\n */\n selfHandleClick = input<boolean>(false);\n /**\n * If `true`, the list will select an item automatically on initialization.\n * First, list will search for an item item that has the \"selected\"-attribute\n * and is not disabled. If no such item exists, the first item will be selected.\n * @default false\n */\n autoSelect = input<boolean, BooleanInput>(false, { transform: (value: BooleanInput) => coerceBooleanProperty(value) });\n /**\n * Emits the selected items indices.\n */\n itemSelect = output<number[]>();\n /**\n * Emits the index of the item that has focus.\n * @type {output<number>}\n */\n itemFocus = output<number>();\n\n selectOnEnter: boolean = (inject(new HostAttributeToken('selectOnEnter'), { optional: true }) || 'false') === 'true';\n horizontal: boolean = (inject(new HostAttributeToken('horizontal'), { optional: true }) || 'false') === 'true';\n\n /**\n * If `true`, the list will not allow selection of items.\n * This is useful for lists that are used for display purposes only.\n */\n disableSelection = input<boolean>(false);\n\n focus() {\n this.#elRef.nativeElement.focus();\n }\n\n scrollToTop() {\n this.#elRef.nativeElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n /**\n * Shift the current selection by the given offset. Used for dynamically\n * adding items to the list without losing the current selection.\n * @param offset Number of items to shift the selection by. \n */\n shiftSelectionBy(offset: number): void {\n if (this.#keyManager?.activeItemIndex) this.#keyManager.setActiveItem(this.#keyManager.activeItemIndex + offset);\n this.#selection = this.#selection.map((i) => i + offset);\n this.items().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this.#selection.includes(i)));\n }\n\n /**\n * Select multiple items by their indices.\n */\n multiSelect(index: number[]): void {\n if (this.#preventEmit()) return;\n if (!this.multiselect() || this.disableSelection()) return;\n this.#selection = index.filter((i) => i >= 0 && i < this.items().length);\n this.#selection.sort();\n\n this.items().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this.#selection.includes(i)));\n this.#emitSelection();\n }\n\n /**\n * Selects a single item by its index.\n * @param index Index of the item to select.\n * @param shiftKey If `true`, selection will be extended from the last selected item to the given index.\n * @param ctrlKey If `true`, the item at the given index will be toggled in the selection.\n */\n select(index: number, shiftKey = false, ctrlKey = false) {\n if (this.#preventEmit()) return;\n if (this.disableSelection() || index < 0) return;\n if (index >= this.items().length) index = this.items().length - 1;\n\n this.#select(index, shiftKey, ctrlKey);\n if (this.#keyManager) this.#keyManager.setActiveItem(index);\n this.#emitSelection();\n }\n\n #preventEmit() {\n const preventUntilIsTrue = this.preventChangeUntil();\n return preventUntilIsTrue();\n }\n\n /**\n * Clear the current selection.\n * @param silent If `true`, the `itemSelect` event will not be emitted.\n */\n clear(silent = false) {\n if (this.#preventEmit()) return;\n if (this.#selection.length !== 0) {\n this.#select(-1);\n this.#keyManager.setActiveItem(-1);\n if (!silent) this.#emitSelection();\n }\n }\n\n #select(index: number, shiftKey = false, ctrlKey = false) {\n if (index === -1) this.#selection = [];\n else {\n if (this.multiselect()) {\n this.#selection = this.#selection.filter((i) => i !== index);\n if (ctrlKey) {\n this.#selection.push(index);\n } else if (shiftKey) {\n if (this.#lastSelection) {\n for (let i = this.#lastSelection < index ? this.#lastSelection : index; i < (this.#lastSelection > index ? this.#lastSelection : index); i++) {\n this.#selection.push(i);\n }\n } else {\n this.#selection = [index];\n }\n } else {\n this.#selection = [index];\n }\n } else this.#selection = [index];\n }\n this.#lastSelection = this.#selection.length === 0 ? undefined : index;\n this.#selection.sort();\n\n this.items().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this.#selection.includes(i)));\n }\n\n #updateActiveItemState() {\n const activeIndex = this.#keyManager.activeItemIndex;\n this.items().forEach((item: ListItemDirective, i: number) => {\n item.activeInput.set(i === activeIndex);\n });\n }\n\n #emitSelection() {\n this.itemSelect.emit(this.#selection);\n }\n\n #preselectItem() {\n const items = this.items();\n const autoSelect = this.autoSelect();\n let itemIndexToSelect = -1;\n\n // If the list has no items, do nothing.\n if (items.length < 1) return;\n\n // Find the first item that has the \"selected\"-attribute and is not disabled\n itemIndexToSelect = items.findIndex((item) => item.selected() && !item.disabled);\n\n // If no valid item index is given, but autoSelect is true, select the first item\n if (itemIndexToSelect === -1 && autoSelect) {\n itemIndexToSelect = 0;\n }\n\n // If there is a valid item index, select that item, otherwise do nothing\n if (itemIndexToSelect !== -1) {\n this.select(itemIndexToSelect);\n }\n }\n\n ngOnDestroy(): void {\n this.#keyManager?.destroy();\n }\n}\n","import { Component, contentChild, TemplateRef, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ListItemDirective } from '../list-item.directive';\n\n@Component({\n selector: 'yuv-list-tile',\n imports: [CommonModule],\n templateUrl: './list-tile.component.html',\n styleUrl: './list-tile.component.scss',\n // hostDirectives: [ListItemDirective]\n})\nexport class ListTileComponent {\n iconSlot = contentChild<TemplateRef<any>>('iconSlot', {\n descendants: true\n });\n titleSlot = contentChild<TemplateRef<any>>('titleSlot');\n descriptionSlot = contentChild<TemplateRef<any>>('descriptionSlot');\n asideSlot = contentChild<TemplateRef<any>>('asideSlot');\n actionsSlot = contentChild<TemplateRef<any>>('actionsSlot', {\n descendants: true\n });\n badgesSlot = contentChild<TemplateRef<any>>('badgesSlot');\n metaSlot = contentChild<TemplateRef<any>>('metaSlot');\n extensionSlot = contentChild<TemplateRef<any>>('extensionSlot');\n}\n","<ng-content></ng-content>\n<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *ngTemplateOutlet=\"iconSlot() || null\"></ng-container>\n </div>\n <div class=\"slots\"> \n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *ngTemplateOutlet=\"titleSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *ngTemplateOutlet=\"descriptionSlot() || null\"></ng-container>\n </div>\n </div>\n <div data-slot=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"aside\">\n <ng-container *ngTemplateOutlet=\"asideSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"meta\">\n <ng-container *ngTemplateOutlet=\"metaSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"badges\">\n <ng-container *ngTemplateOutlet=\"badgesSlot() || null\"></ng-container>\n </div>\n <div class=\"extension\">\n <ng-container *ngTemplateOutlet=\"extensionSlot() || null\"></ng-container>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ListItemDirective } from './list-item.directive';\nimport { ListComponent } from './list.component';\nimport { ListTileComponent } from './list-tile/list-tile.component';\n\n@NgModule({\n imports: [ListComponent, ListItemDirective, ListTileComponent],\n exports: [ListComponent, ListItemDirective, ListTileComponent]\n})\nexport class YuvListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/list/src/lib/list-item.directive.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list.component.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list-tile/list-tile.component.ts","../../../../../libs/yuuvis/client-framework/list/src/lib/list-tile/list-tile.component.html","../../../../../libs/yuuvis/client-framework/list/src/lib/list.module.ts","../../../../../libs/yuuvis/client-framework/list/src/yuuvis-client-framework-list.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, input, Input, linkedSignal } from '@angular/core';\nimport { Utils } from '@yuuvis/client-core';\n\n/**\n * Directive for list items. It is used in the `yuvList` component\n * to keep track of active and selected items. Every element with this\n * directive will be treated as a list item and can be selected and focused.\n * \n *```html\n * <yuv-list (itemSelect)=\"itemSelected($event)\">\n * <div yuvListItem>Entry #1</div>\n * <div yuvListItem>Entry #2</div>\n * </yuv-list>\n * ```\n */\n@Directive({\n selector: '[yuvListItem]',\n standalone: true,\n host: {\n '[attr.aria-current]': 'activeInput()',\n '[attr.aria-selected]': 'selectedInput()'\n }\n})\nexport class ListItemDirective implements Highlightable, AfterViewInit {\n #elRef = inject(ElementRef);\n\n onClick?: (evt: MouseEvent) => void;\n\n // TO SATISFY THE HIGHLIGHTABLE INTERFACE\n @Input() disabled?: boolean | undefined;\n\n /**\n * Whether the item is active or not. \n */\n active = input<boolean>(false);\n /**\n * Whether the item is selected or not. \n */\n selected = input<boolean>(false);\n\n selectedInput = linkedSignal({\n source: this.selected,\n computation: (newOptions: any, previous: any) => (newOptions !== previous ? newOptions : previous)\n });\n\n activeInput = linkedSignal({\n source: this.active,\n computation: (newOptions: any, previous: any) => (newOptions !== previous ? newOptions : previous)\n });\n\n focusableChildren: Element[] = [];\n focusedIndex = -1;\n\n @HostListener('click', ['$event']) onHostClick(evt: MouseEvent) {\n if (!this.disabled && this.onClick) {\n this.#elRef.nativeElement.parentElement.focus();\n this.onClick(evt);\n }\n }\n\n setActiveStyles(): void {\n this.activeInput.set(true);\n this.#scrollIntoView();\n }\n\n setInactiveStyles(): void {\n this.activeInput.set(false);\n }\n\n focusNext() {\n \n }\n\n focusPrevious() {\n }\n\n #scrollIntoView() {\n const el = this.#elRef.nativeElement as HTMLElement;\n const { bottom, top, left, right } = el.getBoundingClientRect();\n const containerRect = this.#elRef.nativeElement.parentElement.getBoundingClientRect();\n\n const offsetY =\n top <= containerRect.top\n ? containerRect.top - top > 0\n ? (containerRect.top - top) * -1\n : 0\n : bottom - containerRect.bottom > 0\n ? bottom - containerRect.bottom\n : 0;\n const offsetX =\n left <= containerRect.left\n ? containerRect.left - left > 0\n ? (containerRect.left - left) * -1\n : 0\n : right - containerRect.right > 0\n ? right - containerRect.right\n : 0;\n\n if (offsetX || offsetY) (this.#elRef.nativeElement.parentElement as HTMLElement).scrollBy(offsetX, offsetY);\n }\n\n ngAfterViewInit(): void {\n // get all focusable elements and set tabindex to -1\n this.focusableChildren = Utils.getFocusableChildren(this.#elRef.nativeElement);\n this.focusableChildren.forEach((el) => el.setAttribute('tabindex', '-1'));\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n HostAttributeToken,\n OnDestroy,\n ViewEncapsulation,\n contentChildren,\n effect,\n inject,\n input,\n output,\n untracked\n} from '@angular/core';\nimport { ListItemDirective } from './list-item.directive';\n\n/**\n * Component rendering a simple list of items. It supports keyboard\n * navigation and takes care of accessibility. To create a list just wrap\n * `yuvListItem` elements into this component:\n *\n * ```html\n * <yuv-list (itemSelect)=\"itemSelected($event)\">\n * <div yuvListItem>Entry #1</div>\n * <div yuvListItem>Entry #2</div>\n * </yuv-list>\n * ```\n */\n@Component({\n selector: 'yuv-list',\n standalone: true,\n imports: [CommonModule, A11yModule],\n template: '<ng-content></ng-content>',\n styleUrl: './list.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'listbox',\n tabindex: '0',\n '[class.self-handle-selection]': 'selfHandleSelection()',\n '(focus)': 'onFocus()',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class ListComponent implements OnDestroy {\n #dir = inject(Directionality);\n #elRef = inject(ElementRef);\n\n protected onKeydown(event: KeyboardEvent) {\n if (this.disableSelection()) return;\n if (event.code === 'Escape') {\n this.clear();\n }\n\n if (event.code === 'Space' || (this.selectOnEnter && event.code === 'Enter')) {\n // prevent default behavior of space in scroll environments\n if (this.#preventEmit()) return;\n event.preventDefault();\n const aii: number = this.#keyManager.activeItemIndex !== null ? this.#keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.#select(aii);\n this.#emitSelection();\n }\n } else this.#keyManager?.onKeydown(event);\n }\n\n protected onFocus() {\n // set timeout to check if the focus is coming from an item being clicked\n setTimeout(() => {\n // if there already is an active item, we do not want to set the focus again\n if (this.#keyManager.activeItemIndex === -1 && this.items().length > 0) {\n const indexToFocus = this.#selection.length > 0 ? this.#selection[0] : 0;\n this.#keyManager.setActiveItem(indexToFocus);\n this.itemFocus.emit(indexToFocus);\n this.#updateActiveItemState();\n }\n }, 300);\n }\n\n items = contentChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n const items = this.items();\n if (this.#keyManager) this.#keyManager.destroy();\n untracked(() => {\n this.#keyManager = this.horizontal\n ? new ActiveDescendantKeyManager(items).withWrap().withHorizontalOrientation(this.#dir.value)\n : new ActiveDescendantKeyManager(items).withWrap();\n\n this.#keyManager.change.subscribe((activeIndex) => {\n if (activeIndex !== null) {\n this.#updateActiveItemState();\n this.itemFocus.emit(activeIndex);\n }\n });\n\n if (!this.selfHandleClick()) {\n items.forEach((item, index) => {\n item.onClick = (evt: MouseEvent) => {\n this.select(index, evt.shiftKey, evt.ctrlKey);\n };\n item.activeInput.set(false);\n });\n }\n if (this.#lastSelection !== undefined && this.#lastSelection <= items.length) {\n this.select(this.#lastSelection);\n }\n this.#preselectItem();\n });\n });\n\n #keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n #selection: number[] = [];\n #lastSelection?: number;\n\n /**\n * Function that returns `true` if selection changes should be prevented.\n * This can be used to temporarily block selection changes, e.g. while\n * there is a pending change inside another component that refers to the\n * current selection.\n */\n preventChangeUntil = input<() => boolean>(() => false);\n /**\n * If `true`, multiple items can be selected at once.\n * @default false\n */\n multiselect = input<boolean>(false);\n /**\n * If `true`, the component will handle selection itself. This means that\n * the parent component will be responsible for styling the selected and\n * focused items. If `false`, the component will take care of visualizing\n * the selection and focus states.\n * @default false\n */\n selfHandleSelection = input<boolean>(false);\n /**\n * By default the list handles click events on its items to select them.\n * If this input is set to `true`, the parent component has to handle\n * click events itself and call the `select()` method accordingly.\n *\n * If you for example use the `ClickDoubleDirective` on the list items,\n * you have to set this input to `true` to prevent the list from\n * selecting items on single click.\n * @default false\n */\n selfHandleClick = input<boolean>(false);\n /**\n * If `true`, the list will select an item automatically on initialization.\n * First, list will search for an item item that has the \"selected\"-attribute\n * and is not disabled. If no such item exists, the first item will be selected.\n * @default false\n */\n autoSelect = input<boolean, BooleanInput>(false, { transform: (value: BooleanInput) => coerceBooleanProperty(value) });\n /**\n * Emits the selected items indices.\n */\n itemSelect = output<number[]>();\n /**\n * Emits the index of the item that has focus.\n * @type {output<number>}\n */\n itemFocus = output<number>();\n\n selectOnEnter: boolean = (inject(new HostAttributeToken('selectOnEnter'), { optional: true }) || 'false') === 'true';\n horizontal: boolean = (inject(new HostAttributeToken('horizontal'), { optional: true }) || 'false') === 'true';\n\n /**\n * If `true`, the list will not allow selection of items.\n * This is useful for lists that are used for display purposes only.\n */\n disableSelection = input<boolean>(false);\n\n /**\n * Sets the active (focused) item by index. This updates the visual focus\n * indicator and scrolls the item into view, without changing the selection.\n */\n setActiveItem(index: number): void {\n if (this.#keyManager) {\n this.#keyManager.setActiveItem(index);\n this.#select(index);\n this.focus();\n }\n }\n\n focus() {\n this.#elRef.nativeElement.focus();\n }\n\n scrollToTop() {\n this.#elRef.nativeElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n /**\n * Shift the current selection by the given offset. Used for dynamically\n * adding items to the list without losing the current selection.\n * @param offset Number of items to shift the selection by.\n */\n shiftSelectionBy(offset: number): void {\n if (this.#keyManager?.activeItemIndex) this.#keyManager.setActiveItem(this.#keyManager.activeItemIndex + offset);\n this.#selection = this.#selection.map((i) => i + offset);\n this.items().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this.#selection.includes(i)));\n }\n\n /**\n * Select multiple items by their indices.\n */\n multiSelect(index: number[]): void {\n if (this.#preventEmit()) return;\n if (!this.multiselect() || this.disableSelection()) return;\n this.#selection = index.filter((i) => i >= 0 && i < this.items().length);\n this.#selection.sort();\n\n this.items().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this.#selection.includes(i)));\n this.#emitSelection();\n }\n\n /**\n * Selects a single item by its index.\n * @param index Index of the item to select.\n * @param shiftKey If `true`, selection will be extended from the last selected item to the given index.\n * @param ctrlKey If `true`, the item at the given index will be toggled in the selection.\n */\n select(index: number, shiftKey = false, ctrlKey = false) {\n if (this.#preventEmit()) return;\n if (this.disableSelection() || index < 0) return;\n if (index >= this.items().length) index = this.items().length - 1;\n\n this.#select(index, shiftKey, ctrlKey);\n if (this.#keyManager) this.#keyManager.setActiveItem(index);\n this.#emitSelection();\n }\n\n #preventEmit() {\n const preventUntilIsTrue = this.preventChangeUntil();\n return preventUntilIsTrue();\n }\n\n /**\n * Clear the current selection.\n * @param silent If `true`, the `itemSelect` event will not be emitted.\n */\n clear(silent = false) {\n if (this.#preventEmit()) return;\n if (this.#selection.length !== 0) {\n this.#select(-1);\n this.#keyManager.setActiveItem(-1);\n if (!silent) this.#emitSelection();\n }\n }\n\n #select(index: number, shiftKey = false, ctrlKey = false) {\n if (index === -1) this.#selection = [];\n else {\n if (this.multiselect()) {\n this.#selection = this.#selection.filter((i) => i !== index);\n if (ctrlKey) {\n this.#selection.push(index);\n } else if (shiftKey) {\n if (this.#lastSelection) {\n for (let i = this.#lastSelection < index ? this.#lastSelection : index; i < (this.#lastSelection > index ? this.#lastSelection : index); i++) {\n this.#selection.push(i);\n }\n } else {\n this.#selection = [index];\n }\n } else {\n this.#selection = [index];\n }\n } else this.#selection = [index];\n }\n this.#lastSelection = this.#selection.length === 0 ? undefined : index;\n this.#selection.sort();\n\n this.items().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this.#selection.includes(i)));\n }\n\n #updateActiveItemState() {\n const activeIndex = this.#keyManager.activeItemIndex;\n this.items().forEach((item: ListItemDirective, i: number) => {\n item.activeInput.set(i === activeIndex);\n });\n }\n\n #emitSelection() {\n this.itemSelect.emit(this.#selection);\n }\n\n #preselectItem() {\n const items = this.items();\n const autoSelect = this.autoSelect();\n let itemIndexToSelect = -1;\n\n // If the list has no items, do nothing.\n if (items.length < 1) return;\n\n // Find the first item that has the \"selected\"-attribute and is not disabled\n itemIndexToSelect = items.findIndex((item) => item.selected() && !item.disabled);\n\n // If no valid item index is given, but autoSelect is true, select the first item\n if (itemIndexToSelect === -1 && autoSelect) {\n itemIndexToSelect = 0;\n }\n\n // If there is a valid item index, select that item, otherwise do nothing\n if (itemIndexToSelect !== -1) {\n this.select(itemIndexToSelect);\n }\n }\n\n ngOnDestroy(): void {\n this.#keyManager?.destroy();\n }\n}\n","import { Component, contentChild, TemplateRef, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ListItemDirective } from '../list-item.directive';\n\n@Component({\n selector: 'yuv-list-tile',\n imports: [CommonModule],\n templateUrl: './list-tile.component.html',\n styleUrl: './list-tile.component.scss',\n // hostDirectives: [ListItemDirective]\n})\nexport class ListTileComponent {\n iconSlot = contentChild<TemplateRef<any>>('iconSlot', {\n descendants: true\n });\n titleSlot = contentChild<TemplateRef<any>>('titleSlot');\n descriptionSlot = contentChild<TemplateRef<any>>('descriptionSlot');\n asideSlot = contentChild<TemplateRef<any>>('asideSlot');\n actionsSlot = contentChild<TemplateRef<any>>('actionsSlot', {\n descendants: true\n });\n badgesSlot = contentChild<TemplateRef<any>>('badgesSlot');\n metaSlot = contentChild<TemplateRef<any>>('metaSlot');\n extensionSlot = contentChild<TemplateRef<any>>('extensionSlot');\n}\n","<ng-content></ng-content>\n<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *ngTemplateOutlet=\"iconSlot() || null\"></ng-container>\n </div>\n <div class=\"slots\"> \n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *ngTemplateOutlet=\"titleSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *ngTemplateOutlet=\"descriptionSlot() || null\"></ng-container>\n </div>\n </div>\n <div data-slot=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"aside\">\n <ng-container *ngTemplateOutlet=\"asideSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"meta\">\n <ng-container *ngTemplateOutlet=\"metaSlot() || null\"></ng-container>\n </div>\n <div data-slot=\"badges\">\n <ng-container *ngTemplateOutlet=\"badgesSlot() || null\"></ng-container>\n </div>\n <div class=\"extension\">\n <ng-container *ngTemplateOutlet=\"extensionSlot() || null\"></ng-container>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ListItemDirective } from './list-item.directive';\nimport { ListComponent } from './list.component';\nimport { ListTileComponent } from './list-tile/list-tile.component';\n\n@NgModule({\n imports: [ListComponent, ListItemDirective, ListTileComponent],\n exports: [ListComponent, ListItemDirective, ListTileComponent]\n})\nexport class YuvListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAIA;;;;;;;;;;;AAWG;MASU,iBAAiB,CAAA;AAR9B,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAO3B;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;AAC9B;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;QAEhC,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,WAAW,EAAE,CAAC,UAAe,EAAE,QAAa,MAAM,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,QAAQ;AAClG,SAAA,CAAC;QAEF,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,CAAC,UAAe,EAAE,QAAa,MAAM,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,QAAQ;AAClG,SAAA,CAAC;QAEF,IAAA,CAAA,iBAAiB,GAAc,EAAE;QACjC,IAAA,CAAA,YAAY,GAAG,CAAC,CAAC;AAuDlB,IAAA;AAlFC,IAAA,MAAM;AA6B6B,IAAA,WAAW,CAAC,GAAe,EAAA;QAC5D,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACnB;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;IAEA,SAAS,GAAA;IAET;IAEA,aAAa,GAAA;IACb;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAA4B;AACnD,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;AAC/D,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAErF,QAAA,MAAM,OAAO,GACX,GAAG,IAAI,aAAa,CAAC;AACnB,cAAE,aAAa,CAAC,GAAG,GAAG,GAAG,GAAG;kBACxB,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC/B,kBAAE;AACJ,cAAE,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG;AAChC,kBAAE,MAAM,GAAG,aAAa,CAAC;kBACvB,CAAC;AACT,QAAA,MAAM,OAAO,GACX,IAAI,IAAI,aAAa,CAAC;AACpB,cAAE,aAAa,CAAC,IAAI,GAAG,IAAI,GAAG;kBAC1B,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;AACjC,kBAAE;AACJ,cAAE,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG;AAC9B,kBAAE,KAAK,GAAG,aAAa,CAAC;kBACtB,CAAC;QAET,IAAI,OAAO,IAAI,OAAO;AAAG,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAA6B,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC7G;IAEA,eAAe,GAAA;;AAEb,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC9E,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3E;+GAlFW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,eAAe;AACtC,wBAAA,sBAAsB,EAAE;AACzB;AACF,iBAAA;8BAOU,QAAQ,EAAA,CAAA;sBAAhB;gBAwBkC,WAAW,EAAA,CAAA;sBAA7C,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACnCnC;;;;;;;;;;;AAWG;MAgBU,aAAa,CAAA;AAf1B,IAAA,WAAA,GAAA;AAgBE,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAiC3B,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,MAAK;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,IAAI,CAAC,WAAW;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAChD,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACtB,sBAAE,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;sBAC1F,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;gBAEpD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AAChD,oBAAA,IAAI,WAAW,KAAK,IAAI,EAAE;wBACxB,IAAI,CAAC,sBAAsB,EAAE;AAC7B,wBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;oBAClC;AACF,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;oBAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC5B,wBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAe,KAAI;AACjC,4BAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;AAC/C,wBAAA,CAAC;AACD,wBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,oBAAA,CAAC,CAAC;gBACJ;AACA,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE;AAC5E,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;gBAClC;gBACA,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAGF,IAAA,CAAA,UAAU,GAAa,EAAE;AAGzB;;;;;AAKG;QACH,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAgB,MAAM,KAAK,CAAC;AACtD;;;AAGG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;AACnC;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,CAAC;AAC3C;;;;;;;;;AASG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,CAAC;AACvC;;;;;AAKG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,KAAmB,KAAK,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;AACtH;;AAEG;QACH,IAAA,CAAA,UAAU,GAAG,MAAM,EAAY;AAC/B;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAAU;QAE5B,IAAA,CAAA,aAAa,GAAY,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,OAAO,MAAM,MAAM;QACpH,IAAA,CAAA,UAAU,GAAY,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,OAAO,MAAM,MAAM;AAE9G;;;AAGG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,CAAC;AA8IzC,IAAA;AA1QC,IAAA,IAAI;AACJ,IAAA,MAAM;AAEI,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;AAC7B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,KAAK,EAAE;QACd;AAEA,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,KAAK,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;;YAE5E,IAAI,IAAI,CAAC,YAAY,EAAE;gBAAE;YACzB,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC;AACrG,YAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBACjB,IAAI,CAAC,cAAc,EAAE;YACvB;QACF;;AAAO,YAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;IAC3C;IAEU,OAAO,GAAA;;QAEf,UAAU,CAAC,MAAK;;AAEd,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AACxE,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;gBACjC,IAAI,CAAC,sBAAsB,EAAE;YAC/B;QACF,CAAC,EAAE,GAAG,CAAC;IACT;AAGA,IAAA,YAAY;AA8BZ,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,cAAc;AA2Dd;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;IACnC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACpE;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,eAAe;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,MAAM,CAAC;AAChH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnH;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,KAAe,EAAA;QACzB,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;QACzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;QACpD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA;;;;;AAKG;IACH,MAAM,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAA;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;AACzB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,GAAG,CAAC;YAAE;AAC1C,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;YAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACpD,OAAO,kBAAkB,EAAE;IAC7B;AAEA;;;AAGG;IACH,KAAK,CAAC,MAAM,GAAG,KAAK,EAAA;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,cAAc,EAAE;QACpC;IACF;IAEA,OAAO,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAA;QACtD,IAAI,KAAK,KAAK,CAAC,CAAC;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;aACjC;AACH,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;gBAC5D,IAAI,OAAO,EAAE;AACX,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B;qBAAO,IAAI,QAAQ,EAAE;AACnB,oBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,wBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5I,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;wBACzB;oBACF;yBAAO;AACL,wBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;oBAC3B;gBACF;qBAAO;AACL,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;gBAC3B;YACF;;AAAO,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;QAClC;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnH;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAI;YAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,WAAW,CAAC;AACzC,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACvC;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC;;AAG1B,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE;;QAGtB,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGhF,QAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,IAAI,UAAU,EAAE;YAC1C,iBAAiB,GAAG,CAAC;QACvB;;AAGA,QAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAChC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;IAC7B;+GA1QW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,ivCAmCA,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9C/B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2oCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAD3B,YAAY,8BAAE,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAYvB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EACzB,2BAA2B,EAAA,aAAA,EAEtB,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,+BAA+B,EAAE,uBAAuB;AACxD,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,WAAW,EAAE;AACd,qBAAA,EAAA,MAAA,EAAA,CAAA,2oCAAA,CAAA,EAAA;;;MCjCU,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAmB,UAAU,EAAE;AACpD,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAmB,WAAW,CAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAmB,iBAAiB,CAAC;AACnE,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAmB,WAAW,CAAC;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAmB,aAAa,EAAE;AAC1D,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAmB,YAAY,CAAC;AACzD,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAmB,UAAU,CAAC;AACrD,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAmB,eAAe,CAAC;AAChE,IAAA;+GAbY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX9B,8nCA+BA,EAAA,MAAA,EAAA,CAAA,kwGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,8nCAAA,EAAA,MAAA,EAAA,CAAA,kwGAAA,CAAA,EAAA;;;MEGZ,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAb,aAAa,EAAA,OAAA,EAAA,CAHd,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACnD,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;gHAElD,aAAa,EAAA,OAAA,EAAA,CAHd,aAAa,EAAqB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAGlD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;AAC9D,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,iBAAiB;AAC9D,iBAAA;;;ACRD;;AAEG;;;;"}
@@ -103,10 +103,10 @@ class YuvMasterDetailsComponent {
103
103
  console.error('MasterDetailsComponent is supposed to contain a master and a details pane.');
104
104
  }
105
105
  }
106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvMasterDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: YuvMasterDetailsComponent, isStandalone: true, selector: "yuv-master-details", inputs: { detailsActive: { classPropertyName: "detailsActive", publicName: "detailsActive", isSignal: true, isRequired: false, transformFunction: null }, layoutSettingsID: { classPropertyName: "layoutSettingsID", publicName: "layoutSettingsID", isSignal: false, isRequired: false, transformFunction: null }, layoutOptions: { classPropertyName: "layoutOptions", publicName: "layoutOptions", isSignal: false, isRequired: false, transformFunction: null }, undockableDetails: { classPropertyName: "undockableDetails", publicName: "undockableDetails", isSignal: true, isRequired: false, transformFunction: null }, panelStyle: { classPropertyName: "panelStyle", publicName: "panelStyle", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { detailsActive: "detailsActiveChange" }, host: { attributes: { "class.detailsActive": "detailsActive()" } }, queries: [{ propertyName: "masterPane", first: true, predicate: ["yuvMasterPane"], descendants: true, isSignal: true }, { propertyName: "detailsPane", first: true, predicate: ["yuvDetailsPane"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "detailsPaneTplateRef", first: true, predicate: ["tplDetailsPanel"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!smallScreenLayout()) {\n <yuv-split-view [disabled]=\"!layoutOptions.resizable\" [gutterSize]=\"gutterSize() || 1\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template yuvSplitArea [size]=\"layoutOptions.masterSize\" [minSize]=\"layoutOptions.masterMinSize\">\n <div class=\"yuv-md-panel master\" [ngStyle]=\"panelStyle()\">\n <ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container>\n </div>\n </ng-template>\n <ng-template yuvSplitArea [size]=\"layoutOptions.detailsSize\" [minSize]=\"layoutOptions.detailsMinSize\" [visible]=\"detailsActive()\">\n <div class=\"yuv-md-panel details\" [ngStyle]=\"panelStyle()\">\n @if (undockableDetails()) {\n <yuv-popout (popIn)=\"onPopIn()\" (popOut)=\"detailsActive.set(false)\"><ng-container *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container></yuv-popout>\n } @else {\n <ng-container *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"yuvMasterPane\"><ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container></div>\n}\n\n<ng-template #tplDetailsPanel>\n <ng-container *ngTemplateOutlet=\"detailsPane()\"></ng-container>\n</ng-template>\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:1fr}:host ::ng-deep .yuv-md-panel{height:100%;box-sizing:border-box;overflow:auto}:host ::ng-deep .yuv-md-panel>yuv-popout .popoutWrapper,:host ::ng-deep .yuv-md-panel>yuv-popout .innerWrapper{height:100%}:host[data-mode=ontop].detailsActive .yuvMasterPane{display:none}:host[data-mode=ontop] .yuvMasterPane,:host[data-mode=ontop] .yuvDetailsPane{grid-row:1;grid-column:1;overflow:hidden;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i2.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible", "lockSize"] }, { kind: "component", type: i2.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: YuvPopoutModule }, { kind: "component", type: i3.PopoutComponent, selector: "yuv-popout", inputs: ["triggerPosition", "triggerIcon", "triggerTooltip", "popoutWindowConfig", "disabled"], outputs: ["popOut", "popIn"], exportAs: ["yuvPopout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvMasterDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: YuvMasterDetailsComponent, isStandalone: true, selector: "yuv-master-details", inputs: { detailsActive: { classPropertyName: "detailsActive", publicName: "detailsActive", isSignal: true, isRequired: false, transformFunction: null }, layoutSettingsID: { classPropertyName: "layoutSettingsID", publicName: "layoutSettingsID", isSignal: false, isRequired: false, transformFunction: null }, layoutOptions: { classPropertyName: "layoutOptions", publicName: "layoutOptions", isSignal: false, isRequired: false, transformFunction: null }, undockableDetails: { classPropertyName: "undockableDetails", publicName: "undockableDetails", isSignal: true, isRequired: false, transformFunction: null }, panelStyle: { classPropertyName: "panelStyle", publicName: "panelStyle", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { detailsActive: "detailsActiveChange" }, host: { attributes: { "class.detailsActive": "detailsActive()" } }, queries: [{ propertyName: "masterPane", first: true, predicate: ["yuvMasterPane"], descendants: true, isSignal: true }, { propertyName: "detailsPane", first: true, predicate: ["yuvDetailsPane"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "detailsPaneTplateRef", first: true, predicate: ["tplDetailsPanel"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!smallScreenLayout()) {\n <yuv-split-view [disabled]=\"!layoutOptions.resizable\" [gutterSize]=\"gutterSize() || 1\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template yuvSplitArea [size]=\"layoutOptions.masterSize\" [minSize]=\"layoutOptions.masterMinSize\">\n <div class=\"yuv-md-panel master\" [ngStyle]=\"panelStyle()\">\n <ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container>\n </div>\n </ng-template>\n <ng-template yuvSplitArea [size]=\"layoutOptions.detailsSize\" [minSize]=\"layoutOptions.detailsMinSize\" [visible]=\"detailsActive()\">\n <div class=\"yuv-md-panel details\" [ngStyle]=\"panelStyle()\">\n @if (undockableDetails()) {\n <yuv-popout (popIn)=\"onPopIn()\" (popOut)=\"detailsActive.set(false)\"><ng-container *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container></yuv-popout>\n } @else {\n <ng-container *ngTemplateOutlet=\"tplDetailsPanel\"></ng-container>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"yuvMasterPane\"><ng-container *ngTemplateOutlet=\"masterPane()\"></ng-container></div>\n}\n\n<ng-template #tplDetailsPanel>\n <ng-container *ngTemplateOutlet=\"detailsPane()\"></ng-container>\n</ng-template>\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:1fr}:host ::ng-deep .yuv-md-panel{height:100%;box-sizing:border-box;overflow:auto}:host ::ng-deep .yuv-md-panel>yuv-popout .popoutWrapper,:host ::ng-deep .yuv-md-panel>yuv-popout .innerWrapper{height:100%}:host[data-mode=ontop].detailsActive .yuvMasterPane{display:none}:host[data-mode=ontop] .yuvMasterPane,:host[data-mode=ontop] .yuvDetailsPane{grid-row:1;grid-column:1;overflow:hidden;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i2.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible", "lockSize"] }, { kind: "component", type: i2.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: YuvPopoutModule }, { kind: "component", type: i3.PopoutComponent, selector: "yuv-popout", inputs: ["triggerPosition", "triggerIcon", "triggerTooltip", "popoutWindowConfig", "disabled"], outputs: ["popOut", "popIn"], exportAs: ["yuvPopout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
108
108
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvMasterDetailsComponent, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvMasterDetailsComponent, decorators: [{
110
110
  type: Component,
111
111
  args: [{ selector: 'yuv-master-details', standalone: true, imports: [CommonModule, YuvSplitViewModule, YuvPopoutModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
112
112
  'class.detailsActive': 'detailsActive()'
@@ -119,11 +119,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
119
119
 
120
120
  const cmd = [YuvMasterDetailsComponent];
121
121
  class YuvMasterDetailsModule {
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvMasterDetailsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
123
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: YuvMasterDetailsModule, imports: [YuvMasterDetailsComponent], exports: [YuvMasterDetailsComponent] }); }
124
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvMasterDetailsModule, imports: [cmd] }); }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvMasterDetailsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
123
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: YuvMasterDetailsModule, imports: [YuvMasterDetailsComponent], exports: [YuvMasterDetailsComponent] }); }
124
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvMasterDetailsModule, imports: [cmd] }); }
125
125
  }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: YuvMasterDetailsModule, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: YuvMasterDetailsModule, decorators: [{
127
127
  type: NgModule,
128
128
  args: [{
129
129
  imports: [cmd],