@flywheel-io/vision 2.5.1 → 2.6.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.
- package/components/avatar/avatar.component.d.ts +3 -1
- package/components/avatar-list/avatar-list.component.d.ts +22 -0
- package/components/dialog/dialog-simple.component.d.ts +1 -1
- package/components/dialog/dialog.component.d.ts +3 -2
- package/components/dialog/dialog.service.d.ts +1 -0
- package/components/select-menu/multi-select-menu/multi-select-menu.component.d.ts +1 -1
- package/esm2022/color.utils.mjs +15 -32
- package/esm2022/components/avatar/avatar.component.mjs +10 -3
- package/esm2022/components/avatar-list/avatar-list.component.mjs +87 -0
- package/esm2022/components/dialog/dialog-simple.component.mjs +1 -1
- package/esm2022/components/dialog/dialog.component.mjs +4 -3
- package/esm2022/components/dialog/dialog.service.mjs +8 -2
- package/esm2022/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +4 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/flywheel-io-vision.mjs +3527 -3448
- package/fesm2022/flywheel-io-vision.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -11,6 +11,8 @@ export declare class FwAvatarComponent {
|
|
|
11
11
|
imageUrl?: string;
|
|
12
12
|
imageAltText?: string;
|
|
13
13
|
icon?: IconType;
|
|
14
|
+
bordered: boolean;
|
|
15
|
+
get borderClass(): boolean;
|
|
14
16
|
selected: import("@angular/core").InputSignal<boolean>;
|
|
15
17
|
colorSeed: import("@angular/core").ModelSignal<string>;
|
|
16
18
|
get selectedClassApplied(): boolean;
|
|
@@ -20,6 +22,6 @@ export declare class FwAvatarComponent {
|
|
|
20
22
|
loadImage(): void;
|
|
21
23
|
errorImage(): void;
|
|
22
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<FwAvatarComponent, never>;
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FwAvatarComponent, "fw-avatar", never, { "color": { "alias": "color"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "content": { "alias": "content"; "required": false; }; "size": { "alias": "size"; "required": false; }; "initial": { "alias": "initial"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "imageAltText": { "alias": "imageAltText"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "colorSeed": { "alias": "colorSeed"; "required": false; "isSignal": true; }; }, { "colorSeed": "colorSeedChange"; }, never, never, false, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FwAvatarComponent, "fw-avatar", never, { "color": { "alias": "color"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "content": { "alias": "content"; "required": false; }; "size": { "alias": "size"; "required": false; }; "initial": { "alias": "initial"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "imageAltText": { "alias": "imageAltText"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "bordered": { "alias": "bordered"; "required": false; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "colorSeed": { "alias": "colorSeed"; "required": false; "isSignal": true; }; }, { "colorSeed": "colorSeedChange"; }, never, never, false, never>;
|
|
24
26
|
}
|
|
25
27
|
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
|
|
2
|
+
import { FwAvatarComponent } from '../avatar/avatar.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Component for displaying and managing the overflow of a list of `fw-avatar`s
|
|
6
|
+
* @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-avatar-list--docs)
|
|
7
|
+
*/
|
|
8
|
+
export declare class FwAvatarListComponent implements OnInit {
|
|
9
|
+
hostElement: ElementRef<any>;
|
|
10
|
+
avatars: import("@angular/core").Signal<readonly FwAvatarComponent[]>;
|
|
11
|
+
avatarElementRefs: import("@angular/core").Signal<readonly ElementRef<any>[]>;
|
|
12
|
+
moreText: import("@angular/core").Signal<ElementRef<HTMLParagraphElement>>;
|
|
13
|
+
changeDetector: ChangeDetectorRef;
|
|
14
|
+
resizeDebounceMs: import("@angular/core").InputSignal<number>;
|
|
15
|
+
ngOnInit(): void;
|
|
16
|
+
applyBorderToChildAvatars: import("@angular/core").EffectRef;
|
|
17
|
+
childrenChanged: import("@angular/core").EffectRef;
|
|
18
|
+
hiddenAvatars: import("@angular/core").WritableSignal<any[]>;
|
|
19
|
+
calcChipOverflow(): void;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FwAvatarListComponent, never>;
|
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FwAvatarListComponent, "fw-avatar-list", never, { "resizeDebounceMs": { "alias": "resizeDebounceMs"; "required": false; "isSignal": true; }; }, {}, ["avatars", "avatarElementRefs"], ["fw-avatar"], true, never>;
|
|
22
|
+
}
|
|
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export declare class FwDialogSimpleComponent {
|
|
6
6
|
dialogRef: DialogRef;
|
|
7
7
|
private elementRef;
|
|
8
|
-
width?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';
|
|
8
|
+
width?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large' | 'responsive';
|
|
9
9
|
title?: string;
|
|
10
10
|
icon?: IconType;
|
|
11
11
|
iconColor?: 'primary' | 'secondary' | 'red' | 'orange' | 'green' | 'slate';
|
|
@@ -7,12 +7,13 @@ export declare enum DialogWidth {
|
|
|
7
7
|
Small = "small",
|
|
8
8
|
Medium = "medium",
|
|
9
9
|
Large = "large",
|
|
10
|
-
ExtraLarge = "extra-large"
|
|
10
|
+
ExtraLarge = "extra-large",
|
|
11
|
+
Responsive = "responsive"
|
|
11
12
|
}
|
|
12
13
|
export declare class FwDialogComponent {
|
|
13
14
|
protected dialogRef: DialogRef;
|
|
14
15
|
private elementRef;
|
|
15
|
-
width?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';
|
|
16
|
+
width?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large' | 'responsive';
|
|
16
17
|
title?: string;
|
|
17
18
|
icon?: IconType;
|
|
18
19
|
iconColor?: 'primary' | 'secondary' | 'red' | 'orange' | 'green' | 'slate';
|
|
@@ -13,6 +13,7 @@ export declare class FwDialogService extends Dialog {
|
|
|
13
13
|
*/
|
|
14
14
|
openDialog<T>(component: ComponentType<T>, config?: DialogConfig & {
|
|
15
15
|
canCloseCheck?: () => boolean;
|
|
16
|
+
responsive?: boolean;
|
|
16
17
|
}, topOffset?: string): DialogRef<unknown, any>;
|
|
17
18
|
openModalDialog<T>(component: ComponentType<T>, config?: DialogConfig, topOffset?: string): DialogRef<unknown, any>;
|
|
18
19
|
closeWithAnimation(dialogRef: DialogRef<any>): void;
|
|
@@ -54,7 +54,7 @@ export declare class FwMultiSelectMenuComponent implements ControlValueAccessor,
|
|
|
54
54
|
private _value;
|
|
55
55
|
constructor(_changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef);
|
|
56
56
|
tabIndex: number;
|
|
57
|
-
pointerEvents: string;
|
|
57
|
+
get pointerEvents(): string;
|
|
58
58
|
onChange: (value: any[]) => void;
|
|
59
59
|
onTouched: () => void;
|
|
60
60
|
registerOnChange(fn: (value: any[]) => void): void;
|
package/esm2022/color.utils.mjs
CHANGED
|
@@ -1,35 +1,18 @@
|
|
|
1
1
|
const accesibilityPallete = [
|
|
2
|
-
'#
|
|
3
|
-
'#
|
|
4
|
-
'#
|
|
5
|
-
'#
|
|
6
|
-
'#
|
|
7
|
-
'#
|
|
8
|
-
'#
|
|
9
|
-
'#
|
|
10
|
-
'#
|
|
11
|
-
'#
|
|
12
|
-
'#
|
|
13
|
-
'#
|
|
14
|
-
'#
|
|
15
|
-
'#
|
|
16
|
-
'#c0ffc0',
|
|
17
|
-
'#ff69b4',
|
|
18
|
-
'#fff0d0',
|
|
19
|
-
'#ff8080',
|
|
20
|
-
'#ff6040',
|
|
21
|
-
'#40e0e0',
|
|
22
|
-
'#ff6930',
|
|
23
|
-
'#ffc0c0',
|
|
24
|
-
'#80e0e0',
|
|
25
|
-
'#ff8000',
|
|
26
|
-
'#c0f0f0',
|
|
27
|
-
'#ffc000',
|
|
28
|
-
'#ffb0c0',
|
|
29
|
-
'#b0d0ff',
|
|
30
|
-
'#f0f0c0',
|
|
31
|
-
'#ffc0e0',
|
|
32
|
-
'#d0e0ff',
|
|
2
|
+
'#1B68FA',
|
|
3
|
+
'#D73D3D',
|
|
4
|
+
'#FF8C00',
|
|
5
|
+
'#C47E09',
|
|
6
|
+
'#B080FC',
|
|
7
|
+
'#14AE5C',
|
|
8
|
+
'#FF6347',
|
|
9
|
+
'#F28B8B',
|
|
10
|
+
'#FF69B4',
|
|
11
|
+
'#748295',
|
|
12
|
+
'#9CCEF9',
|
|
13
|
+
'#00FF00',
|
|
14
|
+
'#66CDAA',
|
|
15
|
+
'#00CED1',
|
|
33
16
|
];
|
|
34
17
|
export const hashCode = (str) => {
|
|
35
18
|
let hash = 0;
|
|
@@ -42,4 +25,4 @@ export const pickColorViaHash = (seed = '') => {
|
|
|
42
25
|
const hash = hashCode(seed);
|
|
43
26
|
return accesibilityPallete[hash % (accesibilityPallete.length - 1)];
|
|
44
27
|
};
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29sb3IudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztDQUNWLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRTtJQUM5QyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLElBQUksR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQVUsRUFBRTtJQUNwRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNyRSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGFjY2VzaWJpbGl0eVBhbGxldGUgPSBbXG4gICcjMUI2OEZBJyxcbiAgJyNENzNEM0QnLFxuICAnI0ZGOEMwMCcsXG4gICcjQzQ3RTA5JyxcbiAgJyNCMDgwRkMnLFxuICAnIzE0QUU1QycsXG4gICcjRkY2MzQ3JyxcbiAgJyNGMjhCOEInLFxuICAnI0ZGNjlCNCcsXG4gICcjNzQ4Mjk1JyxcbiAgJyM5Q0NFRjknLFxuICAnIzAwRkYwMCcsXG4gICcjNjZDREFBJyxcbiAgJyMwMENFRDEnLFxuXVxuXG5leHBvcnQgY29uc3QgaGFzaENvZGUgPSAoc3RyOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaGFzaCA9IHN0ci5jaGFyQ29kZUF0KGkpICsgKChoYXNoIDw8IDUpIC0gaGFzaCk7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpO1xufVxuXG5leHBvcnQgY29uc3QgcGlja0NvbG9yVmlhSGFzaCA9IChzZWVkID0gJycpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBoYXNoID0gaGFzaENvZGUoc2VlZCk7XG4gIHJldHVybiBhY2Nlc2liaWxpdHlQYWxsZXRlW2hhc2ggJSAoYWNjZXNpYmlsaXR5UGFsbGV0ZS5sZW5ndGggLSAxKV1cbn1cbiJdfQ==
|
|
@@ -22,6 +22,7 @@ export class FwAvatarComponent {
|
|
|
22
22
|
this.imageUrl = '';
|
|
23
23
|
this.imageAltText = '';
|
|
24
24
|
this.icon = 'user';
|
|
25
|
+
this.bordered = false;
|
|
25
26
|
this.selected = input(false);
|
|
26
27
|
this.colorSeed = model();
|
|
27
28
|
this.hasedColor = computed(() => pickColorViaHash(this.colorSeed()));
|
|
@@ -32,6 +33,7 @@ export class FwAvatarComponent {
|
|
|
32
33
|
return [this.size, this.variant, this.content, 'selected'].filter(Boolean).join(' ');
|
|
33
34
|
}
|
|
34
35
|
;
|
|
36
|
+
get borderClass() { return this.bordered; }
|
|
35
37
|
get selectedClassApplied() { return this.selected(); }
|
|
36
38
|
loadImage() {
|
|
37
39
|
this.isImageBroken = false;
|
|
@@ -40,11 +42,11 @@ export class FwAvatarComponent {
|
|
|
40
42
|
this.isImageBroken = true;
|
|
41
43
|
}
|
|
42
44
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwAvatarComponent, selector: "fw-avatar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, initial: { classPropertyName: "initial", publicName: "initial", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: false, isRequired: false, transformFunction: null }, imageAltText: { classPropertyName: "imageAltText", publicName: "imageAltText", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, colorSeed: { classPropertyName: "colorSeed", publicName: "colorSeed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { colorSeed: "colorSeedChange" }, host: { properties: { "attr.class": "this.classes", "class.selected": "this.selectedClassApplied" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host-context(.selected):after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host{display:block;position:relative;box-sizing:border-box}:host.selected:after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit;overflow:clip}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwAvatarComponent, selector: "fw-avatar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, initial: { classPropertyName: "initial", publicName: "initial", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: false, isRequired: false, transformFunction: null }, imageAltText: { classPropertyName: "imageAltText", publicName: "imageAltText", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, colorSeed: { classPropertyName: "colorSeed", publicName: "colorSeed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { colorSeed: "colorSeedChange" }, host: { properties: { "attr.class": "this.classes", "class.bordered": "this.borderClass", "class.selected": "this.selectedClassApplied" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host-context(.selected):after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host.bordered:after{content:\"\";position:absolute;width:100%;height:100%;border-radius:inherit;top:-1px;left:-1px;border:1px solid var(--separations-base)}:host{display:block;position:relative;box-sizing:border-box}:host.selected:after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit;overflow:clip}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
|
|
44
46
|
}
|
|
45
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarComponent, decorators: [{
|
|
46
48
|
type: Component,
|
|
47
|
-
args: [{ selector: 'fw-avatar', template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host-context(.selected):after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host{display:block;position:relative;box-sizing:border-box}:host.selected:after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit;overflow:clip}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"] }]
|
|
49
|
+
args: [{ selector: 'fw-avatar', template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host-context(.selected):after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host.bordered:after{content:\"\";position:absolute;width:100%;height:100%;border-radius:inherit;top:-1px;left:-1px;border:1px solid var(--separations-base)}:host{display:block;position:relative;box-sizing:border-box}:host.selected:after{content:\"\";position:absolute;width:calc(100% + 6px);height:calc(100% + 6px);border-radius:inherit;top:-6px;left:-6px;border:3px solid var(--primary-base)}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit;overflow:clip}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"] }]
|
|
48
50
|
}], propDecorators: { classes: [{
|
|
49
51
|
type: HostBinding,
|
|
50
52
|
args: ['attr.class']
|
|
@@ -64,8 +66,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
64
66
|
type: Input
|
|
65
67
|
}], icon: [{
|
|
66
68
|
type: Input
|
|
69
|
+
}], bordered: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], borderClass: [{
|
|
72
|
+
type: HostBinding,
|
|
73
|
+
args: ['class.bordered']
|
|
67
74
|
}], selectedClassApplied: [{
|
|
68
75
|
type: HostBinding,
|
|
69
76
|
args: ['class.selected']
|
|
70
77
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFLckQsTUFBTSxhQUFhLEdBQXlDO0lBQzFELE9BQU8sRUFBRSxxQkFBcUI7SUFDOUIsU0FBUyxFQUFFLHVCQUF1QjtJQUNsQyxHQUFHLEVBQUUsaUJBQWlCO0lBQ3RCLGFBQWEsRUFBRSxvQkFBb0I7SUFDbkMsS0FBSyxFQUFFLG1CQUFtQjtJQUMxQixPQUFPLEVBQUUsb0JBQW9CO0lBQzdCLE9BQU8sRUFBRSxtQkFBbUI7Q0FDN0IsQ0FBQTtBQU1ELE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFZVyxVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQUN0QyxZQUFPLEdBQXVDLFVBQVUsQ0FBQztRQUN6RCxZQUFPLEdBQWtDLE1BQU0sQ0FBQztRQUNoRCxTQUFJLEdBQThDLE9BQU8sQ0FBQztRQUMxRCxZQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLGFBQVEsR0FBWSxFQUFFLENBQUM7UUFDdkIsaUJBQVksR0FBWSxFQUFFLENBQUM7UUFDM0IsU0FBSSxHQUFjLE1BQU0sQ0FBQztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBSTVCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRSxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxHLGtCQUFhLEdBQVksS0FBSyxDQUFDO0tBU2hDO0lBbENDLElBQStCLE9BQU87UUFFcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUFBLENBQUM7SUFZRixJQUFtQyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUkxRSxJQUFtQyxvQkFBb0IsS0FBYyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFROUYsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzsrR0FsQ1UsaUJBQWlCO21HQUFqQixpQkFBaUIsOG1EQ3JCOUIsNjRCQXNCQTs7NEZERGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7OEJBS1UsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZO2dCQU1oQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDNkIsV0FBVztzQkFBN0MsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBSU0sb0JBQW9CO3NCQUF0RCxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsSG9zdEJpbmRpbmcsIElucHV0LCBpbnB1dCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgcGlja0NvbG9yVmlhSGFzaCB9IGZyb20gJy4uLy4uL2NvbG9yLnV0aWxzJztcbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnR5cGVzJztcblxudHlwZSBBdmF0YXJDb2xvck9wdGlvbiA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3JlZCcgfCAnbGlnaHQtc2xhdGUnIHwgJ3NsYXRlJyB8ICd3YXJuaW5nJyB8ICdzdWNjZXNzJztcblxuY29uc3QgbmFtZWRDb2xvck1hcDogeyBbSyBpbiBBdmF0YXJDb2xvck9wdGlvbl06IHN0cmluZyB9ID0ge1xuICBwcmltYXJ5OiAndmFyKC0tcHJpbWFyeS1iYXNlKScsXG4gIHNlY29uZGFyeTogJ3ZhcigtLXNlY29uZGFyeS1iYXNlKScsXG4gIHJlZDogJ3ZhcigtLXJlZC1iYXNlKScsXG4gICdsaWdodC1zbGF0ZSc6ICd2YXIoLS1zbGF0ZS1saWdodCknLFxuICBzbGF0ZTogJ3ZhcigtLXNsYXRlLWJhc2UpJyxcbiAgd2FybmluZzogJ3ZhcigtLW9yYW5nZS1iYXNlKScsXG4gIHN1Y2Nlc3M6ICd2YXIoLS1ncmVlbi1iYXNlKScsXG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1hdmF0YXInLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZ3QXZhdGFyQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcblxuICAgIHJldHVybiBbdGhpcy5zaXplLCB0aGlzLnZhcmlhbnQsIHRoaXMuY29udGVudCwgJ3NlbGVjdGVkJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgfTtcblxuXG4gIEBJbnB1dCgpIGNvbG9yPzogQXZhdGFyQ29sb3JPcHRpb24gPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIHZhcmlhbnQ/OiAnY2lyY3VsYXInIHwgJ3JvdW5kZWQnIHwgJ3NxdWFyZScgPSAnY2lyY3VsYXInO1xuICBASW5wdXQoKSBjb250ZW50PzogJ2ltYWdlJyB8ICdpY29uJyB8ICdpbml0aWFsJyA9ICdpY29uJztcbiAgQElucHV0KCkgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneC1sYXJnZScgPSAnc21hbGwnO1xuICBASW5wdXQoKSBpbml0aWFsPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGltYWdlVXJsPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGltYWdlQWx0VGV4dD86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpY29uPzogSWNvblR5cGUgPSAndXNlcic7XG4gIEBJbnB1dCgpIGJvcmRlcmVkID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYm9yZGVyZWQnKSBnZXQgYm9yZGVyQ2xhc3MoKSB7IHJldHVybiB0aGlzLmJvcmRlcmVkOyB9XG4gIHNlbGVjdGVkID0gaW5wdXQoZmFsc2UpO1xuICBjb2xvclNlZWQgPSBtb2RlbDxzdHJpbmc+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpIGdldCBzZWxlY3RlZENsYXNzQXBwbGllZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWQoKTsgfVxuXG4gIGhhc2VkQ29sb3IgPSBjb21wdXRlZCgoKSA9PiBwaWNrQ29sb3JWaWFIYXNoKHRoaXMuY29sb3JTZWVkKCkpKTtcblxuICBjb2xvclRvRGlzcGxheSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sb3JTZWVkKCkgPyB0aGlzLmhhc2VkQ29sb3IoKSA6IG5hbWVkQ29sb3JNYXBbdGhpcy5jb2xvcl0pO1xuXG4gIGlzSW1hZ2VCcm9rZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsb2FkSW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ltYWdlQnJva2VuID0gZmFsc2U7XG4gIH1cblxuICBlcnJvckltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbWFnZUJyb2tlbiA9IHRydWU7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbnRlbnRcIj5cbiAgPGRpdiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNvbG9yVG9EaXNwbGF5KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiIGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgPGltZ1xuICAgICAgKm5nSWY9XCIhaXNJbWFnZUJyb2tlbiBlbHNlIGRpc3BsYXlJbml0aWFsXCJcbiAgICAgIFtzcmNdPVwiaW1hZ2VVcmxcIlxuICAgICAgW2FsdF09XCJpbWFnZUFsdFRleHRcIlxuICAgICAgKGxvYWQpPVwibG9hZEltYWdlKClcIlxuICAgICAgKGVycm9yKT1cImVycm9ySW1hZ2UoKVwiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclRvRGlzcGxheSgpXCIgY2xhc3M9XCJhdmF0YXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGxheUljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbml0aWFsJ1wiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3JUb0Rpc3BsYXkoKVwiIGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlJbml0aWFsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI2Rpc3BsYXlJbml0aWFsPlxuICA8c3BhbiBjbGFzcz1cImluaXRpYWxcIiAqbmdJZj1cImluaXRpYWwgZWxzZSBkaXNwbGF5SWNvblwiPnt7IGluaXRpYWwgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkaXNwbGF5SWNvbj5cbiAgPGZ3LWljb24+e3sgaWNvbiB9fTwvZnctaWNvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, contentChildren, effect, ElementRef, inject, input, signal, viewChild } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, debounce, timer } from 'rxjs';
|
|
3
|
+
import { FwAvatarComponent } from '../avatar/avatar.component';
|
|
4
|
+
import { FwAvatarModule } from '../avatar/avatar.module';
|
|
5
|
+
import { FwTooltipModule } from '../tooltip/tooltip.module';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../tooltip/tooltip.component";
|
|
8
|
+
// the nature of this component is to handle a complex layout issue so disabling this lint rule
|
|
9
|
+
/* eslint-disable @rx-angular/prefer-no-layout-sensitive-apis */
|
|
10
|
+
/**
|
|
11
|
+
* Component for displaying and managing the overflow of a list of `fw-avatar`s
|
|
12
|
+
* @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-avatar-list--docs)
|
|
13
|
+
*/
|
|
14
|
+
export class FwAvatarListComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.hostElement = inject(ElementRef);
|
|
17
|
+
this.avatars = contentChildren(FwAvatarComponent);
|
|
18
|
+
this.avatarElementRefs = contentChildren(FwAvatarComponent, { read: ElementRef });
|
|
19
|
+
this.moreText = viewChild.required('moreText');
|
|
20
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
21
|
+
this.resizeDebounceMs = input(100);
|
|
22
|
+
this.applyBorderToChildAvatars = effect(() => {
|
|
23
|
+
this.avatars().forEach(avatar => {
|
|
24
|
+
avatar.bordered = true;
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
this.childrenChanged = effect(() => {
|
|
28
|
+
this.avatarElementRefs();
|
|
29
|
+
this.calcChipOverflow();
|
|
30
|
+
}, { allowSignalWrites: true });
|
|
31
|
+
this.hiddenAvatars = signal([]);
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
// wire up resize observer to rxjs and debouce
|
|
35
|
+
const resize$ = new BehaviorSubject(null);
|
|
36
|
+
const recalcOnResize$ = resize$.pipe(debounce(() => timer(this.resizeDebounceMs())));
|
|
37
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
38
|
+
resize$.next();
|
|
39
|
+
});
|
|
40
|
+
resizeObserver.observe(this.hostElement.nativeElement, {});
|
|
41
|
+
recalcOnResize$.subscribe(() => this.calcChipOverflow());
|
|
42
|
+
}
|
|
43
|
+
calcChipOverflow() {
|
|
44
|
+
const hostRect = this.hostElement.nativeElement.getBoundingClientRect();
|
|
45
|
+
const avatarElements = this.avatarElementRefs().map(ref => ref.nativeElement);
|
|
46
|
+
const moreTextElement = this.moreText().nativeElement;
|
|
47
|
+
avatarElements.forEach(chip => chip.classList.remove('hidden'));
|
|
48
|
+
moreTextElement.classList.remove('hidden');
|
|
49
|
+
const visibleChips = avatarElements.filter(chip => {
|
|
50
|
+
const chipRect = chip.getBoundingClientRect();
|
|
51
|
+
return !(chipRect.right > hostRect.right || chipRect.bottom > hostRect.bottom);
|
|
52
|
+
});
|
|
53
|
+
const overflowingAvatars = avatarElements.toSpliced(0, visibleChips.length);
|
|
54
|
+
if (overflowingAvatars.length > 0) {
|
|
55
|
+
const lastVisibleAvatar = visibleChips[visibleChips.length - 1];
|
|
56
|
+
const enoughRoomForMoreText = (hostRect.right - lastVisibleAvatar.getBoundingClientRect().right) > (moreTextElement.offsetWidth);
|
|
57
|
+
if (!enoughRoomForMoreText) {
|
|
58
|
+
overflowingAvatars.push(lastVisibleAvatar);
|
|
59
|
+
}
|
|
60
|
+
// avatars are less wide than the text so we might need to hide 2 to make room for the text
|
|
61
|
+
// there's probably a fancy recursive solution here but ehhh
|
|
62
|
+
const secondLastVisibleAvatar = visibleChips[visibleChips.length - 2];
|
|
63
|
+
const needEvenMoreSpace = (hostRect.right - secondLastVisibleAvatar.getBoundingClientRect().right) > (moreTextElement.offsetWidth);
|
|
64
|
+
if (!needEvenMoreSpace) {
|
|
65
|
+
overflowingAvatars.push(secondLastVisibleAvatar);
|
|
66
|
+
}
|
|
67
|
+
this.hiddenAvatars.set(overflowingAvatars);
|
|
68
|
+
overflowingAvatars.forEach(hiddenChip => {
|
|
69
|
+
hiddenChip.classList.add('hidden');
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.moreText().nativeElement.classList.add('hidden');
|
|
74
|
+
}
|
|
75
|
+
this.changeDetector.detectChanges();
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.12", type: FwAvatarListComponent, isStandalone: true, selector: "fw-avatar-list", inputs: { resizeDebounceMs: { classPropertyName: "resizeDebounceMs", publicName: "resizeDebounceMs", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "avatars", predicate: FwAvatarComponent, isSignal: true }, { propertyName: "avatarElementRefs", predicate: FwAvatarComponent, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "moreText", first: true, predicate: ["moreText"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"fw-avatar\"></ng-content>\n<fw-tooltip> <!--TODO: figure out how to get a tooltip-->\n <p #moreText> +{{hiddenAvatars().length}} </p>\n</fw-tooltip>\n", styles: [":host{display:flex;align-items:center;flex-basis:max-content;flex-flow:row nowrap;justify-content:flex-start;max-height:36px;overflow:hidden}:host ::ng-deep fw-avatar:not(:first-child){margin-left:-4px}:host p{line-height:100%;cursor:default;margin:0;padding-left:8px;text-wrap:nowrap;color:var(--typography-muted)}:host::ng-deep .hidden{display:none}\n"], dependencies: [{ kind: "ngmodule", type: FwAvatarModule }, { kind: "ngmodule", type: FwTooltipModule }, { kind: "component", type: i1.FwTooltipComponent, selector: "fw-tooltip", inputs: ["title", "color", "position", "maxWidth", "fullWidth", "isOpen", "trigger", "delay"] }] }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarListComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'fw-avatar-list', standalone: true, imports: [
|
|
83
|
+
FwAvatarModule,
|
|
84
|
+
FwTooltipModule,
|
|
85
|
+
], template: "<ng-content select=\"fw-avatar\"></ng-content>\n<fw-tooltip> <!--TODO: figure out how to get a tooltip-->\n <p #moreText> +{{hiddenAvatars().length}} </p>\n</fw-tooltip>\n", styles: [":host{display:flex;align-items:center;flex-basis:max-content;flex-flow:row nowrap;justify-content:flex-start;max-height:36px;overflow:hidden}:host ::ng-deep fw-avatar:not(:first-child){margin-left:-4px}:host p{line-height:100%;cursor:default;margin:0;padding-left:8px;text-wrap:nowrap;color:var(--typography-muted)}:host::ng-deep .hidden{display:none}\n"] }]
|
|
86
|
+
}] });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXZhdGFyLWxpc3QvYXZhdGFyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXZhdGFyLWxpc3QvYXZhdGFyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUU1RCwrRkFBK0Y7QUFDL0YsZ0VBQWdFO0FBR2hFOzs7R0FHRztBQVdILE1BQU0sT0FBTyxxQkFBcUI7SUFWbEM7UUFZRSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxZQUFPLEdBQUcsZUFBZSxDQUFvQixpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hFLHNCQUFpQixHQUFHLGVBQWUsQ0FBZ0MsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1RyxhQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBbUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxxQkFBZ0IsR0FBRyxLQUFL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aW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29udGVudENoaWxkcmVuLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2UsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZ3QXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndBdmF0YXJNb2R1bGUgfSBmcm9tICcuLi9hdmF0YXIvYXZhdGFyLm1vZHVsZSc7XG5pbXBvcnQgeyBGd1Rvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcblxuLy8gdGhlIG5hdHVyZSBvZiB0aGlzIGNvbXBvbmVudCBpcyB0byBoYW5kbGUgYSBjb21wbGV4IGxheW91dCBpc3N1ZSBzbyBkaXNhYmxpbmcgdGhpcyBsaW50IHJ1bGVcbi8qIGVzbGludC1kaXNhYmxlIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXMgKi9cblxuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgdGhlIG92ZXJmbG93IG9mIGEgbGlzdCBvZiBgZnctYXZhdGFyYHNcbiAqIEBzZWUgW1Zpc2lvbiBEb2NzXShodHRwczovL2Nkbi5mbHl3aGVlbC5pby9kb2NzL3Zpc2lvbi9tYXN0ZXIvP3BhdGg9L2RvY3MvY29tcG9uZW50cy1hdmF0YXItbGlzdC0tZG9jcylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctYXZhdGFyLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRndBdmF0YXJNb2R1bGUsXG4gICAgRndUb29sdGlwTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXZhdGFyLWxpc3QuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBGd0F2YXRhckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGhvc3RFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBhdmF0YXJzID0gY29udGVudENoaWxkcmVuPEZ3QXZhdGFyQ29tcG9uZW50PihGd0F2YXRhckNvbXBvbmVudCk7XG4gIGF2YXRhckVsZW1lbnRSZWZzID0gY29udGVudENoaWxkcmVuPEZ3QXZhdGFyQ29tcG9uZW50LCBFbGVtZW50UmVmPihGd0F2YXRhckNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuICBtb3JlVGV4dCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxQYXJhZ3JhcGhFbGVtZW50Pj4oJ21vcmVUZXh0Jyk7XG4gIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVzaXplRGVib3VuY2VNcyA9IGlucHV0KDEwMCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gd2lyZSB1cCByZXNpemUgb2JzZXJ2ZXIgdG8gcnhqcyBhbmQgZGVib3VjZVxuICAgIGNvbnN0IHJlc2l6ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpO1xuICAgIGNvbnN0IHJlY2FsY09uUmVzaXplJCA9IHJlc2l6ZSQucGlwZShcbiAgICAgIGRlYm91bmNlKCgpID0+IHRpbWVyKHRoaXMucmVzaXplRGVib3VuY2VNcygpKSksIC8vIGRlYm91bmNlIG90aGVyd2lzZSBpdCBjYW4gcnVuIEVWRVJZIGZyYW1lXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHJlc2l6ZSQubmV4dCgpO1xuICAgIH0pXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgfSk7XG4gICAgcmVjYWxjT25SZXNpemUkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNhbGNDaGlwT3ZlcmZsb3coKSk7XG4gIH1cblxuICBhcHBseUJvcmRlclRvQ2hpbGRBdmF0YXJzID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLmF2YXRhcnMoKS5mb3JFYWNoKGF2YXRhciA9PiB7XG4gICAgICBhdmF0YXIuYm9yZGVyZWQgPSB0cnVlXG4gICAgfSk7XG4gIH0pXG5cbiAgY2hpbGRyZW5DaGFuZ2VkID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLmF2YXRhckVsZW1lbnRSZWZzKCk7XG4gICAgdGhpcy5jYWxjQ2hpcE92ZXJmbG93KCk7XG4gIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcblxuXG4gIGhpZGRlbkF2YXRhcnMgPSBzaWduYWwoW10pO1xuXG4gIGNhbGNDaGlwT3ZlcmZsb3coKTogdm9pZCB7XG5cbiAgICBjb25zdCBob3N0UmVjdCA9ICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGF2YXRhckVsZW1lbnRzID0gdGhpcy5hdmF0YXJFbGVtZW50UmVmcygpLm1hcChyZWYgPT4gcmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGNvbnN0IG1vcmVUZXh0RWxlbWVudCA9IHRoaXMubW9yZVRleHQoKS5uYXRpdmVFbGVtZW50O1xuXG4gICAgYXZhdGFyRWxlbWVudHMuZm9yRWFjaChjaGlwID0+IGNoaXAuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJykpO1xuICAgIG1vcmVUZXh0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcblxuICAgIGNvbnN0IHZpc2libGVDaGlwcyA9IGF2YXRhckVsZW1lbnRzLmZpbHRlcihjaGlwID0+IHtcbiAgICAgIGNvbnN0IGNoaXBSZWN0ID0gY2hpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHJldHVybiAhKGNoaXBSZWN0LnJpZ2h0ID4gaG9zdFJlY3QucmlnaHQgfHwgY2hpcFJlY3QuYm90dG9tID4gaG9zdFJlY3QuYm90dG9tKTtcbiAgICB9KVxuXG4gICAgY29uc3Qgb3ZlcmZsb3dpbmdBdmF0YXJzID0gYXZhdGFyRWxlbWVudHMudG9TcGxpY2VkKDAsIHZpc2libGVDaGlwcy5sZW5ndGgpO1xuXG4gICAgaWYgKG92ZXJmbG93aW5nQXZhdGFycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsYXN0VmlzaWJsZUF2YXRhciA9IHZpc2libGVDaGlwc1t2aXNpYmxlQ2hpcHMubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBlbm91Z2hSb29tRm9yTW9yZVRleHQgPSAoaG9zdFJlY3QucmlnaHQgLSBsYXN0VmlzaWJsZUF2YXRhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkgPiAobW9yZVRleHRFbGVtZW50Lm9mZnNldFdpZHRoKTtcblxuICAgICAgaWYgKCFlbm91Z2hSb29tRm9yTW9yZVRleHQpIHtcbiAgICAgICAgb3ZlcmZsb3dpbmdBdmF0YXJzLnB1c2gobGFzdFZpc2libGVBdmF0YXIpXG4gICAgICB9XG5cbiAgICAgIC8vIGF2YXRhcnMgYXJlIGxlc3Mgd2lkZSB0aGFuIHRoZSB0ZXh0IHNvIHdlIG1pZ2h0IG5lZWQgdG8gaGlkZSAyIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHRleHRcbiAgICAgIC8vIHRoZXJlJ3MgcHJvYmFibHkgYSBmYW5jeSByZWN1cnNpdmUgc29sdXRpb24gaGVyZSBidXQgZWhoaFxuICAgICAgY29uc3Qgc2Vjb25kTGFzdFZpc2libGVBdmF0YXIgPSB2aXNpYmxlQ2hpcHNbdmlzaWJsZUNoaXBzLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgbmVlZEV2ZW5Nb3JlU3BhY2UgPSAoaG9zdFJlY3QucmlnaHQgLSBzZWNvbmRMYXN0VmlzaWJsZUF2YXRhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkgPiAobW9yZVRleHRFbGVtZW50Lm9mZnNldFdpZHRoKTtcblxuICAgICAgaWYgKCFuZWVkRXZlbk1vcmVTcGFjZSkge1xuICAgICAgICBvdmVyZmxvd2luZ0F2YXRhcnMucHVzaChzZWNvbmRMYXN0VmlzaWJsZUF2YXRhcilcbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWRkZW5BdmF0YXJzLnNldChvdmVyZmxvd2luZ0F2YXRhcnMpO1xuICAgICAgb3ZlcmZsb3dpbmdBdmF0YXJzLmZvckVhY2goaGlkZGVuQ2hpcCA9PiB7XG4gICAgICAgIGhpZGRlbkNoaXAuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vcmVUZXh0KCkubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJmdy1hdmF0YXJcIj48L25nLWNvbnRlbnQ+XG48ZnctdG9vbHRpcD4gPCEtLVRPRE86IGZpZ3VyZSBvdXQgaG93IHRvIGdldCBhIHRvb2x0aXAtLT5cbiAgPHAgI21vcmVUZXh0PiAre3toaWRkZW5BdmF0YXJzKCkubGVuZ3RofX0gPC9wPlxuPC9mdy10b29sdGlwPlxuIl19
|
|
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
102
102
|
type: HostBinding,
|
|
103
103
|
args: ['class']
|
|
104
104
|
}] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLXNpbXBsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLXNpbXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUErQixTQUFvQixFQUFVLFVBQXNCO1FBQXBELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBcEIxRSxVQUFLLEdBQWlGLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFHN0csY0FBUyxHQUFvRSxTQUFTLENBQUM7UUFDdkYsY0FBUyxHQUFhLElBQUksQ0FBQztRQVNwQyw0REFBNEQ7UUFDbEQsVUFBSyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0RCxvQkFBZSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWpFLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFHMUIsQ0FBQztJQUVELElBQTBCLE9BQU87UUFDL0IsTUFBTSxPQUFPLEdBQStCLEVBQUUsQ0FBQztRQUUvQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7b0JBQ3RELElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7d0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDN0IsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUMzQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0FuRVUsdUJBQXVCO21HQUF2Qix1QkFBdUIsNmpCQ1hwQyw4N0JBNkJBOzs0RkRsQmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBeUJmLFFBQVE7a0VBcEJaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRVUsZUFBZTtzQkFBOUIsS0FBSzt1QkFBQyxPQUFPO2dCQUVKLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFPbUIsT0FBTztzQkFBaEMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnR5cGVzJztcbmltcG9ydCB7IERpYWxvZ1dpZHRoIH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctZGlhbG9nLXNpbXBsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctc2ltcGxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLXNpbXBsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGd0RpYWxvZ1NpbXBsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHdpZHRoPzogJ2V4dHJhLXNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAnZXh0cmEtbGFyZ2UnIHwgJ3Jlc3BvbnNpdmUnID0gRGlhbG9nV2lkdGguRXh0cmFTbWFsbDtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb24/OiBJY29uVHlwZTtcbiAgQElucHV0KCkgaWNvbkNvbG9yPzogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAncmVkJyB8ICdvcmFuZ2UnIHwgJ2dyZWVuJyB8ICdzbGF0ZScgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIHNob3dDbG9zZT86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25UZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBhY3Rpb25CdXR0b25JY29uPzogc3RyaW5nO1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25UZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBhbHRlcm5hdGVCdXR0b25UZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBhbHRlcm5hdGVCdXR0b25JY29uPzogSWNvblR5cGU7XG4gIEBJbnB1dCgpIGNvbnRlbnRUZXh0Pzogc3RyaW5nO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2NsYXNzJykgZXh0ZXJuYWxDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgYWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhbHRlcm5hdGVBY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGlzQ2xvc2luZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzZXMoKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IGNsYXNzZXM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbENsYXNzZXMpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5leHRlcm5hbENsYXNzZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxDbGFzc2VzLnNwbGl0KCcgJykuZm9yRWFjaCgoY2xzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoY2xzLnRyaW0oKSkge1xuICAgICAgICAgICAgY2xhc3Nlc1tjbHMudHJpbSgpXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4dGVybmFsQ2xhc3NlcykpIHtcbiAgICAgICAgdGhpcy5leHRlcm5hbENsYXNzZXMuZm9yRWFjaCgoY2xzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoY2xzLnRyaW0oKSkge1xuICAgICAgICAgICAgY2xhc3Nlc1tjbHMudHJpbSgpXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oY2xhc3NlcywgdGhpcy5leHRlcm5hbENsYXNzZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0Nsb3NpbmcgPyAnZGlhbG9nLWNsb3NpbmcnIDogJyc7XG4gIH1cblxuICBoYW5kbGVDbG9zZUJ1dHRvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVdpdGhBbmltYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDbG9zaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0Nsb3NpbmcgPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfSwgMzAwKTtcbiAgfVxufVxuIiwiPGZ3LWRpYWxvZ1xuICBbd2lkdGhdPVwid2lkdGhcIlxuICBbdGl0bGVdPVwidGl0bGVcIlxuICBbaWNvbl09XCJpY29uXCJcbiAgW2ljb25Db2xvcl09XCJpY29uQ29sb3JcIlxuICBbc2hvd0Nsb3NlXT1cInNob3dDbG9zZVwiXG4gIFtuZ0NsYXNzXT1cImRpYWxvZ0NsYXNzZXNcIj5cbiAgPGZ3LWRpYWxvZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZ3LWRpYWxvZy1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgIDxwIGNsYXNzPVwidmlzaW9uLXAyIGRpYWxvZy1jb250ZW50LWRlZmF1bHRcIiAqbmdJZj1cImNvbnRlbnRUZXh0XCI+e3sgY29udGVudFRleHQgfX08L3A+XG4gIDwvZnctZGlhbG9nLWNvbnRlbnQ+XG4gIDxmdy1kaWFsb2ctYWN0aW9ucz5cbiAgICA8ZnctYnV0dG9uXG4gICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAqbmdJZj1cImFsdGVybmF0ZUJ1dHRvblRleHRcIlxuICAgICAgW2xlZnRJY29uXT1cImFsdGVybmF0ZUJ1dHRvbkljb25cIlxuICAgICAgKGNsaWNrKT1cImFsdGVybmF0ZUFjdGlvbi5lbWl0KClcIj5cbiAgICAgIHt7IGFsdGVybmF0ZUJ1dHRvblRleHQgfX1cbiAgICA8L2Z3LWJ1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPjwvZGl2PlxuICAgIDxmdy1idXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiAqbmdJZj1cImNhbmNlbEJ1dHRvblRleHRcIiAoY2xpY2spPVwiaGFuZGxlQ2xvc2VCdXR0b24oKVwiPlxuICAgICAge3sgY2FuY2VsQnV0dG9uVGV4dCB9fVxuICAgIDwvZnctYnV0dG9uPlxuICAgIDxmdy1idXR0b24gdmFyaWFudD1cInNvbGlkXCIgKm5nSWY9XCJhY3Rpb25CdXR0b25UZXh0XCIgKGNsaWNrKT1cImFjdGlvbi5lbWl0KClcIj5cbiAgICAgIHt7IGFjdGlvbkJ1dHRvblRleHQgfX1cbiAgICA8L2Z3LWJ1dHRvbj5cbiAgPC9mdy1kaWFsb2ctYWN0aW9ucz5cbjwvZnctZGlhbG9nPlxuXG4iXX0=
|
|
@@ -11,6 +11,7 @@ export var DialogWidth;
|
|
|
11
11
|
DialogWidth["Medium"] = "medium";
|
|
12
12
|
DialogWidth["Large"] = "large";
|
|
13
13
|
DialogWidth["ExtraLarge"] = "extra-large";
|
|
14
|
+
DialogWidth["Responsive"] = "responsive";
|
|
14
15
|
})(DialogWidth || (DialogWidth = {}));
|
|
15
16
|
export class FwDialogComponent {
|
|
16
17
|
constructor(dialogRef, elementRef) {
|
|
@@ -63,11 +64,11 @@ export class FwDialogComponent {
|
|
|
63
64
|
}, 300);
|
|
64
65
|
}
|
|
65
66
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwDialogComponent, deps: [{ token: i1.DialogRef, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwDialogComponent, selector: "fw-dialog", inputs: { width: "width", title: "title", icon: "icon", iconColor: "iconColor", showClose: "showClose", externalClasses: ["class", "externalClasses"] }, outputs: { close: "close" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"fw-dialog\">\n <fw-icon-button\n *ngIf=\"showClose\"\n tabindex=\"-1\" icon=\"close\" color=\"slate\"\n (click)=\"handleCloseButton()\">\n </fw-icon-button>\n <div class=\"dialog-header\">\n <ng-content select=\"fw-dialog-header\"></ng-content>\n <div class=\"dialog-title\" *ngIf=\"title\">\n <fw-icon *ngIf=\"icon\" [color]=\"iconColor\">{{ icon }}</fw-icon>\n <h3 class=\"vision-h3\">{{ title }}</h3>\n </div>\n </div>\n <div class=\"dialog-body\">\n <ng-content select=\"fw-dialog-content\"></ng-content>\n </div>\n <div class=\"dialog-actions\">\n <ng-content select=\"fw-dialog-actions\"></ng-content>\n </div>\n</div>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;background-color:var(--card-background);border:1px solid var(--separations-border);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host.dialog-width-extra-small{width:444px}:host.dialog-width-small{width:600px}:host.dialog-width-medium{width:900px}:host.dialog-width-large{width:1200px}:host.dialog-width-extra-large{width:1536px}:host .fw-dialog{position:relative}:host .fw-dialog fw-icon-button{position:absolute;top:4px;right:4px}:host .fw-dialog .dialog-header{background-color:var(--card-header)}:host .fw-dialog .dialog-header .dialog-title{display:flex;gap:8px;box-sizing:border-box;border-bottom:1px solid var(--separations-base);padding:12px 16px;height:44px;overflow:hidden;align-items:center}:host .fw-dialog .dialog-header .dialog-title fw-icon{font-size:22px}:host .fw-dialog .dialog-header .dialog-title h3{overflow:clip visible;min-width:0;white-space:nowrap;text-overflow:ellipsis;margin-right:30px;flex:1}:host .fw-dialog .dialog-header h3{margin:0}:host .fw-dialog .dialog-header:empty{display:none}:host .fw-dialog .dialog-body{background-color:var(--card-background);border-bottom:1px solid var(--separations-base)}:host .fw-dialog .dialog-body:empty{display:none}:host .fw-dialog .dialog-actions{padding:16px}:host .fw-dialog .dialog-actions:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i4.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwDialogComponent, selector: "fw-dialog", inputs: { width: "width", title: "title", icon: "icon", iconColor: "iconColor", showClose: "showClose", externalClasses: ["class", "externalClasses"] }, outputs: { close: "close" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"fw-dialog\">\n <fw-icon-button\n *ngIf=\"showClose\"\n tabindex=\"-1\" icon=\"close\" color=\"slate\"\n (click)=\"handleCloseButton()\">\n </fw-icon-button>\n <div class=\"dialog-header\">\n <ng-content select=\"fw-dialog-header\"></ng-content>\n <div class=\"dialog-title\" *ngIf=\"title\">\n <fw-icon *ngIf=\"icon\" [color]=\"iconColor\">{{ icon }}</fw-icon>\n <h3 class=\"vision-h3\">{{ title }}</h3>\n </div>\n </div>\n <div class=\"dialog-body\">\n <ng-content select=\"fw-dialog-content\"></ng-content>\n </div>\n <div class=\"dialog-actions\">\n <ng-content select=\"fw-dialog-actions\"></ng-content>\n </div>\n</div>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;background-color:var(--card-background);border:1px solid var(--separations-border);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host.dialog-width-extra-small{width:444px}:host.dialog-width-small{width:600px}:host.dialog-width-medium{width:900px}:host.dialog-width-large{width:1200px}:host.dialog-width-extra-large{width:1536px}:host.dialog-width-responsive{max-width:100vw;margin:0 12px}@media only screen and (width <= 575px){:host.dialog-width-responsive{max-height:92vh;margin-top:4vh;margin-bottom:4vh}:host.dialog-width-responsive .fw-dialog{border-radius:12px}:host.dialog-width-responsive .fw-dialog .dialog-body{max-height:65vh;overflow-y:auto;-webkit-overflow-scrolling:touch}:host.dialog-width-responsive .fw-dialog .dialog-body::-webkit-scrollbar{width:4px}:host.dialog-width-responsive .fw-dialog .dialog-body::-webkit-scrollbar-track{background:var(--separations-base)}:host.dialog-width-responsive .fw-dialog .dialog-body::-webkit-scrollbar-thumb{background:var(--slate-base);border-radius:2px}}@media only screen and (width >= 576px){:host.dialog-width-responsive{width:90vw;max-width:600px;margin:0}}@media only screen and (width >= 768px){:host.dialog-width-responsive{width:80vw;max-width:900px}:host.dialog-width-responsive .fw-dialog .dialog-body{max-height:70vh;overflow-y:auto}}@media only screen and (width >= 992px){:host.dialog-width-responsive{width:60vw;max-width:1200px}}@media only screen and (width >= 1200px){:host.dialog-width-responsive{width:50vw;max-width:1536px}}:host .fw-dialog{position:relative}:host .fw-dialog fw-icon-button{position:absolute;top:4px;right:4px}:host .fw-dialog .dialog-header{background-color:var(--card-header)}:host .fw-dialog .dialog-header .dialog-title{display:flex;gap:8px;box-sizing:border-box;border-bottom:1px solid var(--separations-base);padding:12px 16px;height:44px;overflow:hidden;align-items:center}:host .fw-dialog .dialog-header .dialog-title fw-icon{font-size:22px}:host .fw-dialog .dialog-header .dialog-title h3{overflow:clip visible;min-width:0;white-space:nowrap;text-overflow:ellipsis;margin-right:30px;flex:1}:host .fw-dialog .dialog-header h3{margin:0}:host .fw-dialog .dialog-header:empty{display:none}:host .fw-dialog .dialog-body{background-color:var(--card-background);border-bottom:1px solid var(--separations-base)}:host .fw-dialog .dialog-body:empty{display:none}:host .fw-dialog .dialog-actions{padding:16px}:host .fw-dialog .dialog-actions:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i4.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
|
|
67
68
|
}
|
|
68
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwDialogComponent, decorators: [{
|
|
69
70
|
type: Component,
|
|
70
|
-
args: [{ selector: 'fw-dialog', template: "<div class=\"fw-dialog\">\n <fw-icon-button\n *ngIf=\"showClose\"\n tabindex=\"-1\" icon=\"close\" color=\"slate\"\n (click)=\"handleCloseButton()\">\n </fw-icon-button>\n <div class=\"dialog-header\">\n <ng-content select=\"fw-dialog-header\"></ng-content>\n <div class=\"dialog-title\" *ngIf=\"title\">\n <fw-icon *ngIf=\"icon\" [color]=\"iconColor\">{{ icon }}</fw-icon>\n <h3 class=\"vision-h3\">{{ title }}</h3>\n </div>\n </div>\n <div class=\"dialog-body\">\n <ng-content select=\"fw-dialog-content\"></ng-content>\n </div>\n <div class=\"dialog-actions\">\n <ng-content select=\"fw-dialog-actions\"></ng-content>\n </div>\n</div>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;background-color:var(--card-background);border:1px solid var(--separations-border);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host.dialog-width-extra-small{width:444px}:host.dialog-width-small{width:600px}:host.dialog-width-medium{width:900px}:host.dialog-width-large{width:1200px}:host.dialog-width-extra-large{width:1536px}:host .fw-dialog{position:relative}:host .fw-dialog fw-icon-button{position:absolute;top:4px;right:4px}:host .fw-dialog .dialog-header{background-color:var(--card-header)}:host .fw-dialog .dialog-header .dialog-title{display:flex;gap:8px;box-sizing:border-box;border-bottom:1px solid var(--separations-base);padding:12px 16px;height:44px;overflow:hidden;align-items:center}:host .fw-dialog .dialog-header .dialog-title fw-icon{font-size:22px}:host .fw-dialog .dialog-header .dialog-title h3{overflow:clip visible;min-width:0;white-space:nowrap;text-overflow:ellipsis;margin-right:30px;flex:1}:host .fw-dialog .dialog-header h3{margin:0}:host .fw-dialog .dialog-header:empty{display:none}:host .fw-dialog .dialog-body{background-color:var(--card-background);border-bottom:1px solid var(--separations-base)}:host .fw-dialog .dialog-body:empty{display:none}:host .fw-dialog .dialog-actions{padding:16px}:host .fw-dialog .dialog-actions:empty{display:none}\n"] }]
|
|
71
|
+
args: [{ selector: 'fw-dialog', template: "<div class=\"fw-dialog\">\n <fw-icon-button\n *ngIf=\"showClose\"\n tabindex=\"-1\" icon=\"close\" color=\"slate\"\n (click)=\"handleCloseButton()\">\n </fw-icon-button>\n <div class=\"dialog-header\">\n <ng-content select=\"fw-dialog-header\"></ng-content>\n <div class=\"dialog-title\" *ngIf=\"title\">\n <fw-icon *ngIf=\"icon\" [color]=\"iconColor\">{{ icon }}</fw-icon>\n <h3 class=\"vision-h3\">{{ title }}</h3>\n </div>\n </div>\n <div class=\"dialog-body\">\n <ng-content select=\"fw-dialog-content\"></ng-content>\n </div>\n <div class=\"dialog-actions\">\n <ng-content select=\"fw-dialog-actions\"></ng-content>\n </div>\n</div>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;background-color:var(--card-background);border:1px solid var(--separations-border);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host.dialog-width-extra-small{width:444px}:host.dialog-width-small{width:600px}:host.dialog-width-medium{width:900px}:host.dialog-width-large{width:1200px}:host.dialog-width-extra-large{width:1536px}:host.dialog-width-responsive{max-width:100vw;margin:0 12px}@media only screen and (width <= 575px){:host.dialog-width-responsive{max-height:92vh;margin-top:4vh;margin-bottom:4vh}:host.dialog-width-responsive .fw-dialog{border-radius:12px}:host.dialog-width-responsive .fw-dialog .dialog-body{max-height:65vh;overflow-y:auto;-webkit-overflow-scrolling:touch}:host.dialog-width-responsive .fw-dialog .dialog-body::-webkit-scrollbar{width:4px}:host.dialog-width-responsive .fw-dialog .dialog-body::-webkit-scrollbar-track{background:var(--separations-base)}:host.dialog-width-responsive .fw-dialog .dialog-body::-webkit-scrollbar-thumb{background:var(--slate-base);border-radius:2px}}@media only screen and (width >= 576px){:host.dialog-width-responsive{width:90vw;max-width:600px;margin:0}}@media only screen and (width >= 768px){:host.dialog-width-responsive{width:80vw;max-width:900px}:host.dialog-width-responsive .fw-dialog .dialog-body{max-height:70vh;overflow-y:auto}}@media only screen and (width >= 992px){:host.dialog-width-responsive{width:60vw;max-width:1200px}}@media only screen and (width >= 1200px){:host.dialog-width-responsive{width:50vw;max-width:1536px}}:host .fw-dialog{position:relative}:host .fw-dialog fw-icon-button{position:absolute;top:4px;right:4px}:host .fw-dialog .dialog-header{background-color:var(--card-header)}:host .fw-dialog .dialog-header .dialog-title{display:flex;gap:8px;box-sizing:border-box;border-bottom:1px solid var(--separations-base);padding:12px 16px;height:44px;overflow:hidden;align-items:center}:host .fw-dialog .dialog-header .dialog-title fw-icon{font-size:22px}:host .fw-dialog .dialog-header .dialog-title h3{overflow:clip visible;min-width:0;white-space:nowrap;text-overflow:ellipsis;margin-right:30px;flex:1}:host .fw-dialog .dialog-header h3{margin:0}:host .fw-dialog .dialog-header:empty{display:none}:host .fw-dialog .dialog-body{background-color:var(--card-background);border-bottom:1px solid var(--separations-base)}:host .fw-dialog .dialog-body:empty{display:none}:host .fw-dialog .dialog-actions{padding:16px}:host .fw-dialog .dialog-actions:empty{display:none}\n"] }]
|
|
71
72
|
}], ctorParameters: () => [{ type: i1.DialogRef, decorators: [{
|
|
72
73
|
type: Optional
|
|
73
74
|
}] }, { type: i0.ElementRef }], propDecorators: { width: [{
|
|
@@ -89,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
89
90
|
type: HostBinding,
|
|
90
91
|
args: ['class']
|
|
91
92
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUkxRyxNQUFNLENBQU4sSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLHlDQUEwQixDQUFBO0lBQzFCLDhCQUFlLENBQUE7SUFDZixnQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBZSxDQUFBO0lBQ2YseUNBQTBCLENBQUE7SUFDMUIsd0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVBXLFdBQVcsS0FBWCxXQUFXLFFBT3RCO0FBT0QsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUFrQyxTQUFvQixFQUFVLFVBQXNCO1FBQXBELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBWjdFLFVBQUssR0FBaUYsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUc3RyxjQUFTLEdBQW9FLFNBQVMsQ0FBQztRQUN2RixjQUFTLEdBQWEsSUFBSSxDQUFDO1FBR3BDLDREQUE0RDtRQUNsRCxVQUFLLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdkQsY0FBUyxHQUFHLEtBQUssQ0FBQztJQUcxQixDQUFDO0lBRUQsSUFBMEIsT0FBTztRQUMvQixNQUFNLE9BQU8sR0FBK0I7WUFDMUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSTtZQUNwQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUztTQUNqQyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUN0RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQzt3QkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUM3QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0ExRFUsaUJBQWlCO21HQUFqQixpQkFBaUIsMFJDbkI5QiwycUJBb0JBOzs0RkREYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVzs7MEJBaUJSLFFBQVE7a0VBWlosS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVVLGVBQWU7c0JBQTlCLEtBQUs7dUJBQUMsT0FBTztnQkFFSixLQUFLO3NCQUFkLE1BQU07Z0JBT21CLE9BQU87c0JBQWhDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vaWNvbi50eXBlcyc7XG5cbmV4cG9ydCBlbnVtIERpYWxvZ1dpZHRoIHtcbiAgRXh0cmFTbWFsbCA9ICdleHRyYS1zbWFsbCcsXG4gIFNtYWxsID0gJ3NtYWxsJyxcbiAgTWVkaXVtID0gJ21lZGl1bScsXG4gIExhcmdlID0gJ2xhcmdlJyxcbiAgRXh0cmFMYXJnZSA9ICdleHRyYS1sYXJnZScsXG4gIFJlc3BvbnNpdmUgPSAncmVzcG9uc2l2ZSdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGd0RpYWxvZ0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHdpZHRoPzogJ2V4dHJhLXNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAnZXh0cmEtbGFyZ2UnIHwgJ3Jlc3BvbnNpdmUnID0gRGlhbG9nV2lkdGguRXh0cmFTbWFsbDtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb24/OiBJY29uVHlwZTtcbiAgQElucHV0KCkgaWNvbkNvbG9yPzogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAncmVkJyB8ICdvcmFuZ2UnIHwgJ2dyZWVuJyB8ICdzbGF0ZScgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIHNob3dDbG9zZT86IGJvb2xlYW4gPSB0cnVlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2NsYXNzJykgZXh0ZXJuYWxDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgaXNDbG9zaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGRpYWxvZ1JlZjogRGlhbG9nUmVmLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgY2xhc3NlcygpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgY2xhc3NlczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7XG4gICAgICBbYGRpYWxvZy13aWR0aC0ke3RoaXMud2lkdGh9YF06IHRydWUsXG4gICAgICAnZGlhbG9nLWNsb3NpbmcnOiB0aGlzLmlzQ2xvc2luZyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxDbGFzc2VzKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZXh0ZXJuYWxDbGFzc2VzID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmV4dGVybmFsQ2xhc3Nlcy5zcGxpdCgnICcpLmZvckVhY2goKGNsczogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGNscy50cmltKCkpIHtcbiAgICAgICAgICAgIGNsYXNzZXNbY2xzLnRyaW0oKV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5leHRlcm5hbENsYXNzZXMpKSB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxDbGFzc2VzLmZvckVhY2goKGNsczogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGNscy50cmltKCkpIHtcbiAgICAgICAgICAgIGNsYXNzZXNbY2xzLnRyaW0oKV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3QuYXNzaWduKGNsYXNzZXMsIHRoaXMuZXh0ZXJuYWxDbGFzc2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbG9zZUJ1dHRvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVdpdGhBbmltYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDbG9zaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0Nsb3NpbmcgPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfSwgMzAwKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZ3LWRpYWxvZ1wiPlxuICA8ZnctaWNvbi1idXR0b25cbiAgICAqbmdJZj1cInNob3dDbG9zZVwiXG4gICAgdGFiaW5kZXg9XCItMVwiIGljb249XCJjbG9zZVwiIGNvbG9yPVwic2xhdGVcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbG9zZUJ1dHRvbigpXCI+XG4gIDwvZnctaWNvbi1idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctZGlhbG9nLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlXCIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgPGZ3LWljb24gKm5nSWY9XCJpY29uXCIgW2NvbG9yXT1cImljb25Db2xvclwiPnt7IGljb24gfX08L2Z3LWljb24+XG4gICAgICA8aDMgY2xhc3M9XCJ2aXNpb24taDNcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWJvZHlcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmdy1kaWFsb2ctY29udGVudFwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctYWN0aW9uc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZ3LWRpYWxvZy1hY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -18,7 +18,13 @@ export class FwDialogService extends Dialog {
|
|
|
18
18
|
openDialog(component, config, topOffset) {
|
|
19
19
|
const defaultSettings = {
|
|
20
20
|
backdropClass: 'vision-overlay',
|
|
21
|
-
positionStrategy:
|
|
21
|
+
positionStrategy: config?.responsive
|
|
22
|
+
? this.overlay.position().global()
|
|
23
|
+
.top('5vh') // Reduced top margin for mobile optimization
|
|
24
|
+
.centerHorizontally()
|
|
25
|
+
: this.overlay.position().global()
|
|
26
|
+
.top(topOffset ? topOffset : '10vh')
|
|
27
|
+
.centerHorizontally(),
|
|
22
28
|
disableClose: true, // Disable default backdrop close to handle it manually
|
|
23
29
|
};
|
|
24
30
|
config = { ...config, ...defaultSettings };
|
|
@@ -94,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
94
100
|
}] }, { type: i2.DialogRef, decorators: [{
|
|
95
101
|
type: Optional
|
|
96
102
|
}] }] });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0scUJBQXFCLENBQUM7QUFFckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUtqRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxNQUFNO0lBQ3pDLFlBQW9CLE9BQWdCLEVBQ3hCLFNBQW1CLEVBQ1osUUFBa0IsRUFDa0IsYUFBMkIsRUFDL0Qsb0JBQXNDLEVBQ2IsY0FBbUIsRUFDM0IsYUFBcUIsRUFDMUIsU0FBeUI7UUFDdEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLENBQUMsQ0FBQztRQVI1RSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRWpCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFrQjtRQUcxQixjQUFTLEdBQVQsU0FBUyxDQUFnQjtJQUV4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUksU0FBMkIsRUFBRSxNQUErRSxFQUFFLFNBQWtCO1FBQzVJLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLGFBQWEsRUFBRSxnQkFBZ0I7WUFDL0IsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRTtxQkFDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLDZDQUE2QztxQkFDeEQsa0JBQWtCLEVBQUU7Z0JBQ3pCLENB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QUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7K0dBckZVLGVBQWUseUZBSU0scUJBQXFCLDZEQUVqQyxzQkFBc0I7bUhBTi9CLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS2MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7OzBCQUV4QyxNQUFNOzJCQUFDLHNCQUFzQjs7MEJBQzdCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgREVGQVVMVF9ESUFMT0dfQ09ORklHLCBEaWFsb2csIERJQUxPR19TQ1JPTExfU1RSQVRFR1ksIERpYWxvZ0NvbmZpZywgRGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBPdmVybGF5LCBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGd0RpYWxvZ1NlcnZpY2UgZXh0ZW5kcyBEaWFsb2cge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgICAgICAgIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREVGQVVMVF9ESUFMT0dfQ09ORklHKSBfZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcsXG4gICAgICAgICAgICAgIHB1YmxpYyBfb3ZlcmxheUNvbnRhaW5lclJlZjogT3ZlcmxheUNvbnRhaW5lcixcbiAgICAgICAgICAgICAgQEluamVjdChESUFMT0dfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneTogYW55LFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBfcGFyZW50RGlhbG9nOiBEaWFsb2csXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxhbnk+KSB7XG4gICAgc3VwZXIob3ZlcmxheSwgX2luamVjdG9yLCBfZGlhbG9nQ29uZmlnLCBfcGFyZW50RGlhbG9nLCBfb3ZlcmxheUNvbnRhaW5lclJlZiwgc2Nyb2xsU3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYSBjdXN0b20gY29tcG9uZW50IGluIGFuIG92ZXJsYXkgYW5kIHBvc2l0aW9uZWQgbmVhciB0aGUgdG9wXG4gICAqL1xuICBvcGVuRGlhbG9nPFQ+KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPiwgY29uZmlnPzogRGlhbG9nQ29uZmlnICYgeyBjYW5DbG9zZUNoZWNrPzogKCkgPT4gYm9vbGVhbiwgcmVzcG9uc2l2ZT86IGJvb2xlYW4gfSwgdG9wT2Zmc2V0Pzogc3RyaW5nKTogRGlhbG9nUmVmPHVua25vd24sIGFueT4ge1xuICAgIGNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHtcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICd2aXNpb24tb3ZlcmxheScsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBjb25maWc/LnJlc3BvbnNpdmUgXG4gICAgICAgID8gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKClcbiAgICAgICAgICAgIC50b3AoJzV2aCcpIC8vIFJlZHVjZWQgdG9wIG1hcmdpbiBmb3IgbW9iaWxlIG9wdGltaXphdGlvblxuICAgICAgICAgICAgLmNlbnRlckhvcml6b250YWxseSgpXG4gICAgICAgIDogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKClcbiAgICAgICAgICAgIC50b3AodG9wT2Zmc2V0ID8gdG9wT2Zmc2V0IDogJzEwdmgnKVxuICAgICAgICAgICAgLmNlbnRlckhvcml6b250YWxseSgpLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCAvLyBEaXNhYmxlIGRlZmF1bHQgYmFja2Ryb3AgY2xvc2UgdG8gaGFuZGxlIGl0IG1hbnVhbGx5XG4gICAgfTtcblxuICAgIGNvbmZpZyA9IHsgLi4uY29uZmlnLCAuLi5kZWZhdWx0U2V0dGluZ3MgfTtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSBzdXBlci5vcGVuKGNvbXBvbmVudCwgY29uZmlnKTtcblxuICAgIC8vIEhhbmRsZSBiYWNrZHJvcCBjbGlja3Mgd2l0aCBhbmltYXRpb25cbiAgICBpZiAoZGlhbG9nUmVmLm92ZXJsYXlSZWYuYmFja2Ryb3BFbGVtZW50KSB7XG4gICAgICBkaWFsb2dSZWYub3ZlcmxheVJlZi5iYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldnQgPT4ge1xuICAgICAgICBjb25zdCBpc0JhY2tkcm9wQ2xvc2VFbmFibGVkID0gIWNvbmZpZy5jYW5DbG9zZUNoZWNrIHx8IGNvbmZpZy5jYW5DbG9zZUNoZWNrKCk7XG4gICAgICAgIGlmIChpc0JhY2tkcm9wQ2xvc2VFbmFibGVkKSB7XG4gICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuY2xvc2VXaXRoQW5pbWF0aW9uKGRpYWxvZ1JlZik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBFU0Mga2V5IHdpdGggYW5pbWF0aW9uXG4gICAgZGlhbG9nUmVmLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBjb25zdCBpc0JhY2tkcm9wQ2xvc2VFbmFibGVkID0gIWNvbmZpZy5jYW5DbG9zZUNoZWNrIHx8IGNvbmZpZy5jYW5DbG9zZUNoZWNrKCk7XG5cbiAgICAgICAgaWYgKGlzQmFja2Ryb3BDbG9zZUVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlV2l0aEFuaW1hdGlvbihkaWFsb2dSZWYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGlhbG9nUmVmO1xuICB9XG5cbiAgb3Blbk1vZGFsRGlhbG9nPFQ+KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPiwgY29uZmlnPzogRGlhbG9nQ29uZmlnLCB0b3BPZmZzZXQ/OiBzdHJpbmcpOiBEaWFsb2dSZWY8dW5rbm93biwgYW55PiB7XG4gICAgY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge1xuICAgICAgYmFja2Ryb3BDbGFzczogJ3Zpc2lvbi1vdmVybGF5JyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnRvcCh0b3BPZmZzZXQgPyB0b3BPZmZzZXQgOiAnMTB2aCcpLmNlbnRlckhvcml6b250YWxseSgpLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCAvLyBEaXNhYmxlIGRlZmF1bHQgYmFja2Ryb3AgY2xvc2UgdG8gaGFuZGxlIGl0IG1hbnVhbGx5XG4gICAgfTtcblxuICAgIGNvbmZpZyA9IHsgLi4uY29uZmlnLCAuLi5kZWZhdWx0U2V0dGluZ3MgfTtcbiAgICByZXR1cm4gc3VwZXIub3Blbihjb21wb25lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBjbG9zZVdpdGhBbmltYXRpb24oZGlhbG9nUmVmOiBEaWFsb2dSZWY8YW55Pik6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ0VsZW1lbnQgPSBkaWFsb2dSZWYub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudD8ucXVlcnlTZWxlY3RvcignZnctZGlhbG9nLCBmdy1kaWFsb2ctY29uZmlybSwgZnctZGlhbG9nLXNpbXBsZScpO1xuXG4gICAgaWYgKGRpYWxvZ0VsZW1lbnQgJiYgIWRpYWxvZ0VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkaWFsb2ctY2xvc2luZycpKSB7XG4gICAgICBpZiAoZGlhbG9nRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdmdy1kaWFsb2cnKSB7XG4gICAgICAgIC8vIEZvciBmdy1kaWFsb2ctY29uZmlybSBhbmQgZnctZGlhbG9nLXNpbXBsZSwgYXBwbHkgdGhlIGNsYXNzIHRvIHRoZSBpbm5lciBmdy1kaWFsb2cgZWxlbWVudFxuICAgICAgICBjb25zdCBpbm5lckRpYWxvZyA9IGRpYWxvZ0VsZW1lbnQucXVlcnlTZWxlY3RvcignZnctZGlhbG9nJyk7XG4gICAgICAgIGlmIChpbm5lckRpYWxvZykge1xuICAgICAgICAgIGlubmVyRGlhbG9nLmNsYXNzTGlzdC5hZGQoJ2RpYWxvZy1jbG9zaW5nJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpYWxvZ0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGlhbG9nLWNsb3NpbmcnKTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|