@leanix/components 0.4.466 → 0.4.467

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -18,8 +18,6 @@ export * from './lib/core-ui/pipes/unescape-curly-braces.pipe';
18
18
  export * from './lib/core-ui/directives/after-view-init.directive';
19
19
  export * from './lib/core-ui/directives/autoclose.directive';
20
20
  export * from './lib/core-ui/directives/autofocus.directive';
21
- export * from './lib/core-ui/components/avatar-group/avatar-group.component';
22
- export * from './lib/core-ui/components/avatar/avatar.component';
23
21
  export * from './lib/core-ui/components/badge/badge.component';
24
22
  export * from './lib/core-ui/components/banner/banner.component';
25
23
  export * from './lib/core-ui/components/button-group/button-group.component';
@@ -42,7 +40,6 @@ export * from './lib/core-ui/components/tokenizer/tokenizer.component';
42
40
  export * from './lib/core-ui/tooltip/tooltip-position.interface';
43
41
  export * from './lib/core-ui/tooltip/tooltip.component';
44
42
  export * from './lib/core-ui/tooltip/tooltip.directive';
45
- export * from './lib/core-ui/components/avatar/avatar.model';
46
43
  export * from './lib/core-ui/linkify/linkify.pipe';
47
44
  export * from './lib/core-ui/linkify/unlinkify.pipe';
48
45
  export * from './lib/core-ui/functions/core-css.helpers';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanix/components",
3
- "version": "0.4.466",
3
+ "version": "0.4.467",
4
4
  "license": "Apache-2.0",
5
5
  "author": "LeanIX GmbH",
6
6
  "repository": {
@@ -1,40 +0,0 @@
1
- import { AsyncPipe, NgClass, NgIf } from '@angular/common';
2
- import { Component, Inject, Input } from '@angular/core';
3
- import { TooltipDirective } from '../../tooltip/tooltip.directive';
4
- import { DEFAULT_IMAGE_ID, IMAGE_READER } from './avatar.model';
5
- import * as i0 from "@angular/core";
6
- export class AvatarComponent {
7
- constructor(imageReader) {
8
- this.imageReader = imageReader;
9
- this.size = 'M';
10
- this.showMailToLink = true;
11
- this.disabled = false;
12
- this.NAME = 'AvatarComponent';
13
- this.imageURL = this.imageReader.getAvatar(DEFAULT_IMAGE_ID, this.size, this.user?.displayName);
14
- }
15
- ngOnChanges(changes) {
16
- const { user } = changes;
17
- if (user && user.currentValue && !user.currentValue.technicalUser) {
18
- const { id, displayName } = this.user || {};
19
- this.imageURL = this.imageReader.getAvatar(id ?? undefined, this.size, displayName);
20
- }
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AvatarComponent, deps: [{ token: IMAGE_READER }], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AvatarComponent, isStandalone: true, selector: "lx-avatar", inputs: { user: "user", size: "size", showMailToLink: "showMailToLink", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"imageURL | async; else loading\">\n <ng-container *ngIf=\"!user.technicalUser; else technicalUserIcon\">\n <a\n *ngIf=\"showMailToLink && user.email; else profilePicture\"\n class=\"userLink\"\n href=\"mailto:{{ user.email }}\"\n lxTooltip=\"{{ user.displayName }}\"\n >\n <img\n [src]=\"imageURL | async\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </a>\n <ng-template #profilePicture>\n <img\n [src]=\"imageURL | async\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </ng-template>\n </ng-container>\n <ng-template #technicalUserIcon>\n <i class=\"avatarImage fas fa-robot\" lxTooltip=\"{{ user.displayName }}\" [class]=\"size\" [class.disabled]=\"disabled\"></i>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class=\"avatarImage userLink loading\" [ngClass]=\"size\"></div>\n</ng-template>\n", styles: [".userLink{display:inline-block;width:fit-content;height:fit-content}.avatarImage{border-radius:50%}.avatarImage.disabled{opacity:.4}.loading{background:linear-gradient(270deg,#ccc,#eee,#ccc);background-size:200% 100%;animation:loading 1.5s infinite;object-fit:cover;vertical-align:middle}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.fa-robot{background-color:#b2bccc;color:#fff;vertical-align:middle;text-align:center}.fa-robot.XS{line-height:14px;font-size:10px}.fa-robot.S{line-height:22px;font-size:13px}.fa-robot.M{line-height:30px;font-size:18px}.fa-robot.L{line-height:38px;font-size:22px}.fa-robot.XL{line-height:62px;font-size:40px}.XS{width:16px;height:16px}.S{width:24px;height:24px}.M{width:32px;height:32px}.L{width:40px;height:40px}.XL{width:64px;height:64px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TooltipDirective, selector: "[lxTooltip]", inputs: ["lxTooltip", "lxTooltipPosition", "lxTooltipDelay", "lxTooltipIsHtmlContent"] }] }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AvatarComponent, decorators: [{
26
- type: Component,
27
- args: [{ selector: 'lx-avatar', standalone: true, imports: [NgIf, AsyncPipe, NgClass, TooltipDirective], template: "<ng-container *ngIf=\"imageURL | async; else loading\">\n <ng-container *ngIf=\"!user.technicalUser; else technicalUserIcon\">\n <a\n *ngIf=\"showMailToLink && user.email; else profilePicture\"\n class=\"userLink\"\n href=\"mailto:{{ user.email }}\"\n lxTooltip=\"{{ user.displayName }}\"\n >\n <img\n [src]=\"imageURL | async\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </a>\n <ng-template #profilePicture>\n <img\n [src]=\"imageURL | async\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </ng-template>\n </ng-container>\n <ng-template #technicalUserIcon>\n <i class=\"avatarImage fas fa-robot\" lxTooltip=\"{{ user.displayName }}\" [class]=\"size\" [class.disabled]=\"disabled\"></i>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class=\"avatarImage userLink loading\" [ngClass]=\"size\"></div>\n</ng-template>\n", styles: [".userLink{display:inline-block;width:fit-content;height:fit-content}.avatarImage{border-radius:50%}.avatarImage.disabled{opacity:.4}.loading{background:linear-gradient(270deg,#ccc,#eee,#ccc);background-size:200% 100%;animation:loading 1.5s infinite;object-fit:cover;vertical-align:middle}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.fa-robot{background-color:#b2bccc;color:#fff;vertical-align:middle;text-align:center}.fa-robot.XS{line-height:14px;font-size:10px}.fa-robot.S{line-height:22px;font-size:13px}.fa-robot.M{line-height:30px;font-size:18px}.fa-robot.L{line-height:38px;font-size:22px}.fa-robot.XL{line-height:62px;font-size:40px}.XS{width:16px;height:16px}.S{width:24px;height:24px}.M{width:32px;height:32px}.L{width:40px;height:40px}.XL{width:64px;height:64px}\n"] }]
28
- }], ctorParameters: () => [{ type: undefined, decorators: [{
29
- type: Inject,
30
- args: [IMAGE_READER]
31
- }] }], propDecorators: { user: [{
32
- type: Input
33
- }], size: [{
34
- type: Input
35
- }], showMailToLink: [{
36
- type: Input
37
- }], disabled: [{
38
- type: Input
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFTbkcsTUFBTSxPQUFPLGVBQWU7SUFVMUIsWUFBMEMsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFSekQsU0FBSSxHQUFtQixHQUFHLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixTQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFLaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRXpCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7OEdBckJVLGVBQWUsa0JBVU4sWUFBWTtrR0FWckIsZUFBZSwwTENaNUIscXBDQW1DQSxxMkJEekJZLElBQUksd0ZBQUUsU0FBUyw4Q0FBRSxPQUFPLG9GQUFFLGdCQUFnQjs7MkZBRXpDLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsV0FBVyxjQUdULElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDOzswQkFZeEMsTUFBTTsyQkFBQyxZQUFZO3lDQVR2QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgREVGQVVMVF9JTUFHRV9JRCwgSU1BR0VfUkVBREVSLCBJbWFnZVJlYWRlciwgVXNlciwgVXNlckF2YXRhclNpemUgfSBmcm9tICcuL2F2YXRhci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LWF2YXRhcicsXG4gIHRlbXBsYXRlVXJsOiAnYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICdhdmF0YXIuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgQXN5bmNQaXBlLCBOZ0NsYXNzLCBUb29sdGlwRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB1c2VyITogVXNlciAmIHsgdGVjaG5pY2FsVXNlcj86IGJvb2xlYW4gfTtcbiAgQElucHV0KCkgc2l6ZTogVXNlckF2YXRhclNpemUgPSAnTSc7XG4gIEBJbnB1dCgpIHNob3dNYWlsVG9MaW5rID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICByZWFkb25seSBOQU1FID0gJ0F2YXRhckNvbXBvbmVudCc7XG5cbiAgcHVibGljIGltYWdlVVJMOiBQcm9taXNlPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChJTUFHRV9SRUFERVIpIHByaXZhdGUgaW1hZ2VSZWFkZXI6IEltYWdlUmVhZGVyKSB7XG4gICAgdGhpcy5pbWFnZVVSTCA9IHRoaXMuaW1hZ2VSZWFkZXIuZ2V0QXZhdGFyKERFRkFVTFRfSU1BR0VfSUQsIHRoaXMuc2l6ZSwgdGhpcy51c2VyPy5kaXNwbGF5TmFtZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBjaGFuZ2VzO1xuXG4gICAgaWYgKHVzZXIgJiYgdXNlci5jdXJyZW50VmFsdWUgJiYgIXVzZXIuY3VycmVudFZhbHVlLnRlY2huaWNhbFVzZXIpIHtcbiAgICAgIGNvbnN0IHsgaWQsIGRpc3BsYXlOYW1lIH0gPSB0aGlzLnVzZXIgfHwge307XG4gICAgICB0aGlzLmltYWdlVVJMID0gdGhpcy5pbWFnZVJlYWRlci5nZXRBdmF0YXIoaWQgPz8gdW5kZWZpbmVkLCB0aGlzLnNpemUsIGRpc3BsYXlOYW1lKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbWFnZVVSTCB8IGFzeW5jOyBlbHNlIGxvYWRpbmdcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF1c2VyLnRlY2huaWNhbFVzZXI7IGVsc2UgdGVjaG5pY2FsVXNlckljb25cIj5cbiAgICA8YVxuICAgICAgKm5nSWY9XCJzaG93TWFpbFRvTGluayAmJiB1c2VyLmVtYWlsOyBlbHNlIHByb2ZpbGVQaWN0dXJlXCJcbiAgICAgIGNsYXNzPVwidXNlckxpbmtcIlxuICAgICAgaHJlZj1cIm1haWx0bzp7eyB1c2VyLmVtYWlsIH19XCJcbiAgICAgIGx4VG9vbHRpcD1cInt7IHVzZXIuZGlzcGxheU5hbWUgfX1cIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJpbWFnZVVSTCB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJhdmF0YXJJbWFnZVwiXG4gICAgICAgIFtjbGFzc109XCJzaXplXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgIGFsdD1cInt7IHVzZXIuZGlzcGxheU5hbWUgfX1cIlxuICAgICAgLz5cbiAgICA8L2E+XG4gICAgPG5nLXRlbXBsYXRlICNwcm9maWxlUGljdHVyZT5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJpbWFnZVVSTCB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJhdmF0YXJJbWFnZVwiXG4gICAgICAgIFtjbGFzc109XCJzaXplXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgIGFsdD1cInt7IHVzZXIuZGlzcGxheU5hbWUgfX1cIlxuICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICN0ZWNobmljYWxVc2VySWNvbj5cbiAgICA8aSBjbGFzcz1cImF2YXRhckltYWdlIGZhcyBmYS1yb2JvdFwiIGx4VG9vbHRpcD1cInt7IHVzZXIuZGlzcGxheU5hbWUgfX1cIiBbY2xhc3NdPVwic2l6ZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvaT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwiYXZhdGFySW1hZ2UgdXNlckxpbmsgbG9hZGluZ1wiIFtuZ0NsYXNzXT1cInNpemVcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const IMAGE_READER = new InjectionToken('IMAGE_READER');
3
- export const DEFAULT_IMAGE_ID = '00000000-0000-4000-0000-000000000001';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXFCL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGNBQWMsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLHNDQUFzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3Igb3VyIHVzZXIgYW5kIGltYWdlIHJlbGF0ZWQgbW9kZWxzLCBiZWZvcmUgd2UgZmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhlbVxuICpcbiAqIFdlIHJlbG9jYXRlZCB0aGUgbW9kZWxzIGhlcmUgdG8gZmFjaWxpdGF0ZSBtb3ZpbmcgdGhlIGF2YXRhciBhbmQgYXZhdGFyIGdyb3VwIGNvbXBvbmVudHMgb3V0IG9mIHRoZSB1c2VyLXVpIGRpcmVjdG9yeS5cbiAqXG4gKiBUaGlzIGVuc3VyZXMgd2UgbWFpbnRhaW4gYSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGFuZCBhZGhlcmUgdG8gdGhlIGN1cnJlbnQgc3RyaWN0IG5vLXNoYXJlZC1ueCBwb2xpY3ksIHNpbmNlIGFsbFxuICogbGlicmFyaWVzIGFuZCBhcHBzIGFscmVhZHkgc3VwcG9ydCBpbXBvcnRpbmcgZnJvbSBgQGxlYW5peC9jb21wb25lbnRzYCBhbHJlYWR5LlxuICovXG5cbmV4cG9ydCB0eXBlIFVzZXJBdmF0YXJTaXplID0gJ1hTJyB8ICdTJyB8ICdNJyB8ICdMJyB8ICdYTCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZWFkZXIge1xuICBnZXRBdmF0YXIodXNlcklkPzogc3RyaW5nLCBzaXplPzogVXNlckF2YXRhclNpemUsIGRpc3BsYXlOYW1lPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+O1xuICBnZXRBdmF0YXJVcmwodXNlcklkPzogc3RyaW5nLCBzaXplPzogVXNlckF2YXRhclNpemUpOiBzdHJpbmc7XG4gIGdldFN0b3JhZ2VTZXJ2aWNlQXZhdGFyVXJsKHVzZXJJZD86IHN0cmluZywgc2l6ZT86IFVzZXJBdmF0YXJTaXplKTogc3RyaW5nO1xuICBnZXRUaHVtYm5haWxVcmwoaW1hZ2VJZDogc3RyaW5nKTogc3RyaW5nO1xuICBsb2FkVGh1bWJuYWlsKGltYWdlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGNvbnN0IElNQUdFX1JFQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJbWFnZVJlYWRlcj4oJ0lNQUdFX1JFQURFUicpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTUFHRV9JRCA9ICcwMDAwMDAwMC0wMDAwLTQwMDAtMDAwMC0wMDAwMDAwMDAwMDEnO1xuXG4vKipcbiAqIFRoaXMgVXNlciBtb2RlbCBpbmNsdWRlcyBjb21tb24gcHJvcGVydGllcyB0aGF0IHRoZSB1aSBhdmF0YXIgY29tcG9uZW50cyBjYXJlIGFib3V0IGluIG9yZGVyIHRvIHJlc3ByZXNlbnQgYSB1c2VyXG4gKiBpbiB0aGUgVUkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGlkPzogc3RyaW5nO1xuICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGZpcnN0TmFtZT86IHN0cmluZztcbiAgbGFzdE5hbWU/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,67 +0,0 @@
1
- import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
2
- import { NgClass, NgFor, NgIf } from '@angular/common';
3
- import { Component, Input, ViewChild } from '@angular/core';
4
- import { DisplayAvatarsPipe } from '../../pipes/display-avatars.pipe';
5
- import { TooltipDirective } from '../../tooltip/tooltip.directive';
6
- import { AvatarComponent } from '../avatar/avatar.component';
7
- import * as i0 from "@angular/core";
8
- export class AvatarGroupComponent {
9
- get userNames() {
10
- return this.users
11
- .map(({ displayName }) => displayName)
12
- .sort()
13
- .join('<br>');
14
- }
15
- constructor(cdr, zone) {
16
- this.cdr = cdr;
17
- this.zone = zone;
18
- this.NAME = 'AvatarGroupComponent';
19
- this.users = [];
20
- this.size = 'M';
21
- this.type = 'group';
22
- this.maxLength = 0;
23
- this.autoScale = false;
24
- this.overlayVisible = false;
25
- this.resizeObserver = new ResizeObserver(() => {
26
- this.zone.runOutsideAngular(() => {
27
- this.zone.run(() => {
28
- this.cdr.detectChanges();
29
- });
30
- });
31
- });
32
- }
33
- ngAfterViewInit() {
34
- this.resizeObserver.observe(this.userGroupElement.nativeElement);
35
- }
36
- handleClick(event) {
37
- event.stopPropagation();
38
- this.overlayVisible = true;
39
- }
40
- ngOnDestroy() {
41
- if (this.resizeObserver) {
42
- this.resizeObserver.unobserve(this.userGroupElement.nativeElement);
43
- }
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AvatarGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AvatarGroupComponent, isStandalone: true, selector: "lx-avatar-group", inputs: { title: "title", users: "users", size: "size", type: "type", maxLength: "maxLength", autoScale: "autoScale" }, viewQueries: [{ propertyName: "userGroupElement", first: true, predicate: ["userGroup"], descendants: true }], ngImport: i0, template: "<div\n #userGroup\n (click)=\"handleClick($event)\"\n (keydown.enter)=\"handleClick($event)\"\n (keydown.space)=\"handleClick($event)\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [lxTooltip]=\"!overlayVisible ? userNames : null\"\n [lxTooltipIsHtmlContent]=\"true\"\n tabindex=\"0\"\n role=\"button\"\n aria-haspopup=\"dialog\"\n>\n <div *ngIf=\"users | displayAvatars: type : size : userGroup.offsetWidth : autoScale : maxLength as filteredUsers\" class=\"group-container\">\n <lx-avatar\n [user]=\"user\"\n [size]=\"size\"\n [showMailToLink]=\"false\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n *ngFor=\"let user of filteredUsers\"\n />\n <div\n *ngIf=\"filteredUsers.length < users.length\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n class=\"more-users-icon\"\n >\n +{{ users.length - filteredUsers.length }}\n </div>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"overlayVisible\"\n (overlayOutsideClick)=\"overlayVisible = false\"\n>\n <div class=\"avatars-overlay\">\n <div *ngIf=\"title\" class=\"avatars-overlay-title\">{{ title }}</div>\n <div class=\"avatars-list\">\n <div *ngFor=\"let user of users\" class=\"individual\">\n <lx-avatar [user]=\"user\" [size]=\"size\" [showMailToLink]=\"true\" />\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".group-container{display:flex;align-items:center}.group-container lx-avatar{display:flex;align-items:center}.group-container .more-users-icon{color:#61779d;background-color:#fff;border:1px solid #c2c9d6;border-radius:50%;font-weight:700;-webkit-user-select:none;user-select:none}.individual{margin-right:2px!important}.avatars-overlay{max-width:360px;overflow:auto;margin-top:5px;border-radius:10px;background-color:#fff;border:1px solid #c2c9d6;box-shadow:0 6px 12px #0000002d}.avatars-overlay .avatars-list{display:flex;flex-wrap:wrap;padding:10px}.avatars-overlay .avatars-list lx-avatar{display:block;margin-bottom:5px}.avatars-overlay .avatars-overlay-title{border-bottom:1px solid #c2c9d6;padding:10px;font-weight:700}.XS{width:16px;height:16px;line-height:16px;font-size:8px}.XS.group:not(:first-child){margin-left:-8px}.S{width:24px;height:24px;line-height:24px;font-size:11.25px}.S.group:not(:first-child){margin-left:-12px}.M{width:32px;height:32px;line-height:32px;text-align:center;vertical-align:middle;font-size:15.5px}.M.group:not(:first-child){margin-left:-10px}.L{width:40px;height:40px;line-height:40px;text-align:center;vertical-align:middle;font-size:large}.L.group:not(:first-child){margin-left:-20px}.XL{width:64px;height:64px;line-height:64px;text-align:center;vertical-align:middle;font-size:large}.XL.group:not(:first-child){margin-left:-50px}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: TooltipDirective, selector: "[lxTooltip]", inputs: ["lxTooltip", "lxTooltipPosition", "lxTooltipDelay", "lxTooltipIsHtmlContent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: AvatarComponent, selector: "lx-avatar", inputs: ["user", "size", "showMailToLink", "disabled"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "pipe", type: DisplayAvatarsPipe, name: "displayAvatars" }] }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AvatarGroupComponent, decorators: [{
49
- type: Component,
50
- args: [{ selector: 'lx-avatar-group', standalone: true, imports: [CdkOverlayOrigin, TooltipDirective, NgIf, NgFor, AvatarComponent, NgClass, CdkConnectedOverlay, DisplayAvatarsPipe], template: "<div\n #userGroup\n (click)=\"handleClick($event)\"\n (keydown.enter)=\"handleClick($event)\"\n (keydown.space)=\"handleClick($event)\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [lxTooltip]=\"!overlayVisible ? userNames : null\"\n [lxTooltipIsHtmlContent]=\"true\"\n tabindex=\"0\"\n role=\"button\"\n aria-haspopup=\"dialog\"\n>\n <div *ngIf=\"users | displayAvatars: type : size : userGroup.offsetWidth : autoScale : maxLength as filteredUsers\" class=\"group-container\">\n <lx-avatar\n [user]=\"user\"\n [size]=\"size\"\n [showMailToLink]=\"false\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n *ngFor=\"let user of filteredUsers\"\n />\n <div\n *ngIf=\"filteredUsers.length < users.length\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n class=\"more-users-icon\"\n >\n +{{ users.length - filteredUsers.length }}\n </div>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"overlayVisible\"\n (overlayOutsideClick)=\"overlayVisible = false\"\n>\n <div class=\"avatars-overlay\">\n <div *ngIf=\"title\" class=\"avatars-overlay-title\">{{ title }}</div>\n <div class=\"avatars-list\">\n <div *ngFor=\"let user of users\" class=\"individual\">\n <lx-avatar [user]=\"user\" [size]=\"size\" [showMailToLink]=\"true\" />\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".group-container{display:flex;align-items:center}.group-container lx-avatar{display:flex;align-items:center}.group-container .more-users-icon{color:#61779d;background-color:#fff;border:1px solid #c2c9d6;border-radius:50%;font-weight:700;-webkit-user-select:none;user-select:none}.individual{margin-right:2px!important}.avatars-overlay{max-width:360px;overflow:auto;margin-top:5px;border-radius:10px;background-color:#fff;border:1px solid #c2c9d6;box-shadow:0 6px 12px #0000002d}.avatars-overlay .avatars-list{display:flex;flex-wrap:wrap;padding:10px}.avatars-overlay .avatars-list lx-avatar{display:block;margin-bottom:5px}.avatars-overlay .avatars-overlay-title{border-bottom:1px solid #c2c9d6;padding:10px;font-weight:700}.XS{width:16px;height:16px;line-height:16px;font-size:8px}.XS.group:not(:first-child){margin-left:-8px}.S{width:24px;height:24px;line-height:24px;font-size:11.25px}.S.group:not(:first-child){margin-left:-12px}.M{width:32px;height:32px;line-height:32px;text-align:center;vertical-align:middle;font-size:15.5px}.M.group:not(:first-child){margin-left:-10px}.L{width:40px;height:40px;line-height:40px;text-align:center;vertical-align:middle;font-size:large}.L.group:not(:first-child){margin-left:-20px}.XL{width:64px;height:64px;line-height:64px;text-align:center;vertical-align:middle;font-size:large}.XL.group:not(:first-child){margin-left:-50px}\n"] }]
51
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { title: [{
52
- type: Input
53
- }], users: [{
54
- type: Input
55
- }], size: [{
56
- type: Input
57
- }], type: [{
58
- type: Input
59
- }], maxLength: [{
60
- type: Input
61
- }], autoScale: [{
62
- type: Input
63
- }], userGroupElement: [{
64
- type: ViewChild,
65
- args: ['userGroup']
66
- }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9hdmF0YXItZ3JvdXAvYXZhdGFyLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9hdmF0YXItZ3JvdXAvYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBb0MsU0FBUyxFQUFjLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFVN0QsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQixJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDO2FBQ3JDLElBQUksRUFBRTthQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsWUFDVSxHQUFzQixFQUN0QixJQUFZO1FBRFosUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQXRCYixTQUFJLEdBQUcsc0JBQXNCLENBQUM7UUFHOUIsVUFBSyxHQUEyQyxFQUFFLENBQUM7UUFDbkQsU0FBSSxHQUFtQixHQUFHLENBQUM7UUFDM0IsU0FBSSxHQUEyQixPQUFPLENBQUM7UUFDdkMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBVzdCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBVzlCLG1CQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQVpBLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFVRCxXQUFXLENBQUMsS0FBWTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7OEdBL0NVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGtUQ2ZqQyxzK0NBOENBLG81Q0RqQ1ksZ0JBQWdCLHVJQUFFLGdCQUFnQixnSkFBRSxJQUFJLDZGQUFFLEtBQUssbUhBQUUsZUFBZSw4R0FBRSxPQUFPLG9GQUFFLG1CQUFtQix1K0JBQUUsa0JBQWtCOzsyRkFFakgsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQzsyR0FLcEgsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFa0IsZ0JBQWdCO3NCQUF2QyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3BsYXlBdmF0YXJzUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2Rpc3BsYXktYXZhdGFycy5waXBlJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXIsIFVzZXJBdmF0YXJTaXplIH0gZnJvbSAnLi4vYXZhdGFyL2F2YXRhci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LWF2YXRhci1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2F2YXRhci1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ2RrT3ZlcmxheU9yaWdpbiwgVG9vbHRpcERpcmVjdGl2ZSwgTmdJZiwgTmdGb3IsIEF2YXRhckNvbXBvbmVudCwgTmdDbGFzcywgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgRGlzcGxheUF2YXRhcnNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IE5BTUUgPSAnQXZhdGFyR3JvdXBDb21wb25lbnQnO1xuXG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBASW5wdXQoKSB1c2VyczogKFVzZXIgJiB7IHRlY2huaWNhbFVzZXI/OiBib29sZWFuIH0pW10gPSBbXTtcbiAgQElucHV0KCkgc2l6ZTogVXNlckF2YXRhclNpemUgPSAnTSc7XG4gIEBJbnB1dCgpIHR5cGU6ICdpbmRpdmlkdWFsJyB8ICdncm91cCcgPSAnZ3JvdXAnO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGF1dG9TY2FsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3VzZXJHcm91cCcpIHVzZXJHcm91cEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBnZXQgdXNlck5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJzXG4gICAgICAubWFwKCh7IGRpc3BsYXlOYW1lIH0pID0+IGRpc3BsYXlOYW1lKVxuICAgICAgLnNvcnQoKVxuICAgICAgLmpvaW4oJzxicj4nKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnVzZXJHcm91cEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy51c2VyR3JvdXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICAjdXNlckdyb3VwXG4gIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gIChrZXlkb3duLnNwYWNlKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICBjZGtPdmVybGF5T3JpZ2luXG4gICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gIFtseFRvb2x0aXBdPVwiIW92ZXJsYXlWaXNpYmxlID8gdXNlck5hbWVzIDogbnVsbFwiXG4gIFtseFRvb2x0aXBJc0h0bWxDb250ZW50XT1cInRydWVcIlxuICB0YWJpbmRleD1cIjBcIlxuICByb2xlPVwiYnV0dG9uXCJcbiAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4+XG4gIDxkaXYgKm5nSWY9XCJ1c2VycyB8IGRpc3BsYXlBdmF0YXJzOiB0eXBlIDogc2l6ZSA6IHVzZXJHcm91cC5vZmZzZXRXaWR0aCA6IGF1dG9TY2FsZSA6IG1heExlbmd0aCBhcyBmaWx0ZXJlZFVzZXJzXCIgY2xhc3M9XCJncm91cC1jb250YWluZXJcIj5cbiAgICA8bHgtYXZhdGFyXG4gICAgICBbdXNlcl09XCJ1c2VyXCJcbiAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgW3Nob3dNYWlsVG9MaW5rXT1cImZhbHNlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIlt0eXBlID09PSAnaW5kaXZpZHVhbCcgPyAnaW5kaXZpZHVhbCcgOiAnZ3JvdXAnLCBzaXplXVwiXG4gICAgICAqbmdGb3I9XCJsZXQgdXNlciBvZiBmaWx0ZXJlZFVzZXJzXCJcbiAgICAvPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZmlsdGVyZWRVc2Vycy5sZW5ndGggPCB1c2Vycy5sZW5ndGhcIlxuICAgICAgW25nQ2xhc3NdPVwiW3R5cGUgPT09ICdpbmRpdmlkdWFsJyA/ICdpbmRpdmlkdWFsJyA6ICdncm91cCcsIHNpemVdXCJcbiAgICAgIGNsYXNzPVwibW9yZS11c2Vycy1pY29uXCJcbiAgICA+XG4gICAgICAre3sgdXNlcnMubGVuZ3RoIC0gZmlsdGVyZWRVc2Vycy5sZW5ndGggfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJvdmVybGF5VmlzaWJsZVwiXG4gIChvdmVybGF5T3V0c2lkZUNsaWNrKT1cIm92ZXJsYXlWaXNpYmxlID0gZmFsc2VcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXZhdGFycy1vdmVybGF5XCI+XG4gICAgPGRpdiAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJhdmF0YXJzLW92ZXJsYXktdGl0bGVcIj57eyB0aXRsZSB9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhdmF0YXJzLWxpc3RcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlcnNcIiBjbGFzcz1cImluZGl2aWR1YWxcIj5cbiAgICAgICAgPGx4LWF2YXRhciBbdXNlcl09XCJ1c2VyXCIgW3NpemVdPVwic2l6ZVwiIFtzaG93TWFpbFRvTGlua109XCJ0cnVlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,37 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DisplayAvatarsPipe {
4
- transform(users, type, size, userGroupWidth, autoScale, maxLength) {
5
- if (maxLength) {
6
- return users.slice(0, maxLength);
7
- }
8
- if (autoScale) {
9
- if (type === 'group') {
10
- const usersToShow = Math.floor((userGroupWidth - 2 * SIZES[size]) / ((SIZES[size] * 2) / 3)) + 1;
11
- return users.slice(0, usersToShow);
12
- }
13
- else {
14
- const usersToShow = Math.floor(userGroupWidth / (SIZES[size] + 2)) - 1;
15
- return users.slice(0, usersToShow);
16
- }
17
- }
18
- return users;
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DisplayAvatarsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
21
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: DisplayAvatarsPipe, isStandalone: true, name: "displayAvatars" }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DisplayAvatarsPipe, decorators: [{
24
- type: Pipe,
25
- args: [{
26
- name: 'displayAvatars',
27
- standalone: true
28
- }]
29
- }] });
30
- const SIZES = {
31
- XS: 16,
32
- S: 24,
33
- M: 32,
34
- L: 40,
35
- XL: 64
36
- };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1hdmF0YXJzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlLXVpL3BpcGVzL2Rpc3BsYXktYXZhdGFycy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFNBQVMsQ0FDUCxLQUE2QyxFQUM3QyxJQUE0QixFQUM1QixJQUFvQixFQUNwQixjQUFzQixFQUN0QixTQUFrQixFQUNsQixTQUFpQjtRQUVqQixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F0QlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOztBQTRCRCxNQUFNLEtBQUssR0FBWTtJQUNyQixFQUFFLEVBQUUsRUFBRTtJQUNOLENBQUMsRUFBRSxFQUFFO0lBQ0wsQ0FBQyxFQUFFLEVBQUU7SUFDTCxDQUFDLEVBQUUsRUFBRTtJQUNMLEVBQUUsRUFBRSxFQUFFO0NBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXIsIFVzZXJBdmF0YXJTaXplIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLm1vZGVsJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZGlzcGxheUF2YXRhcnMnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERpc3BsYXlBdmF0YXJzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgdXNlcnM6IChVc2VyICYgeyB0ZWNobmljYWxVc2VyPzogYm9vbGVhbiB9KVtdLFxuICAgIHR5cGU6ICdpbmRpdmlkdWFsJyB8ICdncm91cCcsXG4gICAgc2l6ZTogVXNlckF2YXRhclNpemUsXG4gICAgdXNlckdyb3VwV2lkdGg6IG51bWJlcixcbiAgICBhdXRvU2NhbGU6IGJvb2xlYW4sXG4gICAgbWF4TGVuZ3RoOiBudW1iZXJcbiAgKTogKFVzZXIgJiB7IHRlY2huaWNhbFVzZXI/OiBib29sZWFuIH0pW10ge1xuICAgIGlmIChtYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybiB1c2Vycy5zbGljZSgwLCBtYXhMZW5ndGgpO1xuICAgIH1cbiAgICBpZiAoYXV0b1NjYWxlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICBjb25zdCB1c2Vyc1RvU2hvdyA9IE1hdGguZmxvb3IoKHVzZXJHcm91cFdpZHRoIC0gMiAqIFNJWkVTW3NpemVdKSAvICgoU0laRVNbc2l6ZV0gKiAyKSAvIDMpKSArIDE7XG4gICAgICAgIHJldHVybiB1c2Vycy5zbGljZSgwLCB1c2Vyc1RvU2hvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB1c2Vyc1RvU2hvdyA9IE1hdGguZmxvb3IodXNlckdyb3VwV2lkdGggLyAoU0laRVNbc2l6ZV0gKyAyKSkgLSAxO1xuICAgICAgICByZXR1cm4gdXNlcnMuc2xpY2UoMCwgdXNlcnNUb1Nob3cpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXNlcnM7XG4gIH1cbn1cblxudHlwZSBTaXplTWFwID0geyBbSyBpbiBVc2VyQXZhdGFyU2l6ZV06IG51bWJlciB9O1xuXG5jb25zdCBTSVpFUzogU2l6ZU1hcCA9IHtcbiAgWFM6IDE2LFxuICBTOiAyNCxcbiAgTTogMzIsXG4gIEw6IDQwLFxuICBYTDogNjRcbn07XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { OnChanges, SimpleChanges } from '@angular/core';
2
- import { ImageReader, User, UserAvatarSize } from './avatar.model';
3
- import * as i0 from "@angular/core";
4
- export declare class AvatarComponent implements OnChanges {
5
- private imageReader;
6
- user: User & {
7
- technicalUser?: boolean;
8
- };
9
- size: UserAvatarSize;
10
- showMailToLink: boolean;
11
- disabled: boolean;
12
- readonly NAME = "AvatarComponent";
13
- imageURL: Promise<string>;
14
- constructor(imageReader: ImageReader);
15
- ngOnChanges(changes: SimpleChanges): void;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "lx-avatar", never, { "user": { "alias": "user"; "required": false; }; "size": { "alias": "size"; "required": false; }; "showMailToLink": { "alias": "showMailToLink"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
18
- }
@@ -1,30 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { Observable } from 'rxjs';
3
- /** This is a temporary storage for our user and image related models, before we find a better place for them
4
- *
5
- * We relocated the models here to facilitate moving the avatar and avatar group components out of the user-ui directory.
6
- *
7
- * This ensures we maintain a single source of truth and adhere to the current strict no-shared-nx policy, since all
8
- * libraries and apps already support importing from `@leanix/components` already.
9
- */
10
- export type UserAvatarSize = 'XS' | 'S' | 'M' | 'L' | 'XL';
11
- export interface ImageReader {
12
- getAvatar(userId?: string, size?: UserAvatarSize, displayName?: string): Promise<string>;
13
- getAvatarUrl(userId?: string, size?: UserAvatarSize): string;
14
- getStorageServiceAvatarUrl(userId?: string, size?: UserAvatarSize): string;
15
- getThumbnailUrl(imageId: string): string;
16
- loadThumbnail(imageId: string): Observable<string>;
17
- }
18
- export declare const IMAGE_READER: InjectionToken<ImageReader>;
19
- export declare const DEFAULT_IMAGE_ID = "00000000-0000-4000-0000-000000000001";
20
- /**
21
- * This User model includes common properties that the ui avatar components care about in order to respresent a user
22
- * in the UI.
23
- */
24
- export interface User {
25
- id?: string;
26
- displayName?: string;
27
- email?: string;
28
- firstName?: string;
29
- lastName?: string;
30
- }
@@ -1,26 +0,0 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, NgZone, OnDestroy } from '@angular/core';
2
- import { User, UserAvatarSize } from '../avatar/avatar.model';
3
- import * as i0 from "@angular/core";
4
- export declare class AvatarGroupComponent implements AfterViewInit, OnDestroy {
5
- private cdr;
6
- private zone;
7
- readonly NAME = "AvatarGroupComponent";
8
- title?: string;
9
- users: (User & {
10
- technicalUser?: boolean;
11
- })[];
12
- size: UserAvatarSize;
13
- type: 'individual' | 'group';
14
- maxLength: number;
15
- autoScale: boolean;
16
- userGroupElement: ElementRef<HTMLElement>;
17
- get userNames(): string;
18
- overlayVisible: boolean;
19
- constructor(cdr: ChangeDetectorRef, zone: NgZone);
20
- ngAfterViewInit(): void;
21
- resizeObserver: ResizeObserver;
22
- handleClick(event: Event): void;
23
- ngOnDestroy(): void;
24
- static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupComponent, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<AvatarGroupComponent, "lx-avatar-group", never, { "title": { "alias": "title"; "required": false; }; "users": { "alias": "users"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "autoScale": { "alias": "autoScale"; "required": false; }; }, {}, never, never, true, never>;
26
- }
@@ -1,12 +0,0 @@
1
- import { PipeTransform } from '@angular/core';
2
- import { User, UserAvatarSize } from '../components/avatar/avatar.model';
3
- import * as i0 from "@angular/core";
4
- export declare class DisplayAvatarsPipe implements PipeTransform {
5
- transform(users: (User & {
6
- technicalUser?: boolean;
7
- })[], type: 'individual' | 'group', size: UserAvatarSize, userGroupWidth: number, autoScale: boolean, maxLength: number): (User & {
8
- technicalUser?: boolean;
9
- })[];
10
- static ɵfac: i0.ɵɵFactoryDeclaration<DisplayAvatarsPipe, never>;
11
- static ɵpipe: i0.ɵɵPipeDeclaration<DisplayAvatarsPipe, "displayAvatars", true>;
12
- }