@skyux/avatar 7.0.0-beta.0 → 7.0.0-beta.1
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/documentation.json +110 -66
- package/esm2020/lib/modules/avatar/avatar-adapter.service.mjs +25 -25
- package/esm2020/lib/modules/avatar/avatar.component.mjs +58 -45
- package/esm2020/lib/modules/avatar/avatar.inner.component.mjs +27 -18
- package/esm2020/testing/avatar-fixture.mjs +8 -4
- package/fesm2015/skyux-avatar-testing.mjs +7 -3
- package/fesm2015/skyux-avatar-testing.mjs.map +1 -1
- package/fesm2015/skyux-avatar.mjs +105 -85
- package/fesm2015/skyux-avatar.mjs.map +1 -1
- package/fesm2020/skyux-avatar-testing.mjs +7 -3
- package/fesm2020/skyux-avatar-testing.mjs.map +1 -1
- package/fesm2020/skyux-avatar.mjs +105 -85
- package/fesm2020/skyux-avatar.mjs.map +1 -1
- package/lib/modules/avatar/avatar-adapter.service.d.ts +1 -3
- package/lib/modules/avatar/avatar.component.d.ts +9 -17
- package/lib/modules/avatar/avatar.inner.component.d.ts +7 -12
- package/package.json +6 -6
- package/testing/avatar-fixture.d.ts +3 -3
|
@@ -10,6 +10,7 @@ import * as i3$1 from '@skyux/i18n';
|
|
|
10
10
|
import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
|
|
11
11
|
import * as i3 from '@skyux/theme';
|
|
12
12
|
import { SkyThemeModule } from '@skyux/theme';
|
|
13
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
@@ -70,75 +71,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
70
71
|
}]
|
|
71
72
|
}] });
|
|
72
73
|
|
|
74
|
+
var _SkyAvatarAdapterService_instances, _SkyAvatarAdapterService_blobUrl, _SkyAvatarAdapterService_createBlobUrl, _SkyAvatarAdapterService_revokeBlobUrl;
|
|
73
75
|
/**
|
|
74
76
|
* @internal
|
|
75
77
|
*/
|
|
76
78
|
class SkyAvatarAdapterService {
|
|
79
|
+
constructor() {
|
|
80
|
+
_SkyAvatarAdapterService_instances.add(this);
|
|
81
|
+
_SkyAvatarAdapterService_blobUrl.set(this, void 0);
|
|
82
|
+
}
|
|
77
83
|
updateImage(elementRef, src) {
|
|
78
|
-
this.
|
|
84
|
+
__classPrivateFieldGet(this, _SkyAvatarAdapterService_instances, "m", _SkyAvatarAdapterService_revokeBlobUrl).call(this);
|
|
79
85
|
const el = elementRef.nativeElement;
|
|
80
86
|
/*istanbul ignore else */
|
|
81
87
|
if (el) {
|
|
82
88
|
const imageEl = el.querySelector('.sky-avatar-image');
|
|
83
89
|
/*istanbul ignore else */
|
|
84
90
|
if (imageEl) {
|
|
85
|
-
let url;
|
|
86
|
-
if (src) {
|
|
87
|
-
|
|
88
|
-
url = this.createBlobUrl(src);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
url = src;
|
|
92
|
-
}
|
|
91
|
+
let url = src;
|
|
92
|
+
if (src instanceof File || src instanceof Blob) {
|
|
93
|
+
url = __classPrivateFieldGet(this, _SkyAvatarAdapterService_instances, "m", _SkyAvatarAdapterService_createBlobUrl).call(this, src);
|
|
93
94
|
}
|
|
94
95
|
// Notice the quotes inside the `url` function. This ensures proper url escaping.
|
|
95
|
-
imageEl.style.backgroundImage =
|
|
96
|
+
imageEl.style.backgroundImage = 'url("' + url + '")';
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
destroy() {
|
|
100
|
-
this.
|
|
101
|
-
}
|
|
102
|
-
createBlobUrl(src) {
|
|
103
|
-
const url = URL.createObjectURL(src);
|
|
104
|
-
// Keep the last blob URL around so we can revoke it later.
|
|
105
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
|
|
106
|
-
this.blobUrl = url;
|
|
107
|
-
return url;
|
|
108
|
-
}
|
|
109
|
-
revokeBlobUrl() {
|
|
110
|
-
if (this.blobUrl) {
|
|
111
|
-
URL.revokeObjectURL(this.blobUrl);
|
|
112
|
-
this.blobUrl = undefined;
|
|
113
|
-
}
|
|
101
|
+
__classPrivateFieldGet(this, _SkyAvatarAdapterService_instances, "m", _SkyAvatarAdapterService_revokeBlobUrl).call(this);
|
|
114
102
|
}
|
|
115
103
|
}
|
|
104
|
+
_SkyAvatarAdapterService_blobUrl = new WeakMap(), _SkyAvatarAdapterService_instances = new WeakSet(), _SkyAvatarAdapterService_createBlobUrl = function _SkyAvatarAdapterService_createBlobUrl(src) {
|
|
105
|
+
const url = URL.createObjectURL(src);
|
|
106
|
+
// Keep the last blob URL around so we can revoke it later.
|
|
107
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
|
|
108
|
+
__classPrivateFieldSet(this, _SkyAvatarAdapterService_blobUrl, url, "f");
|
|
109
|
+
return url;
|
|
110
|
+
}, _SkyAvatarAdapterService_revokeBlobUrl = function _SkyAvatarAdapterService_revokeBlobUrl() {
|
|
111
|
+
if (__classPrivateFieldGet(this, _SkyAvatarAdapterService_blobUrl, "f")) {
|
|
112
|
+
URL.revokeObjectURL(__classPrivateFieldGet(this, _SkyAvatarAdapterService_blobUrl, "f"));
|
|
113
|
+
__classPrivateFieldSet(this, _SkyAvatarAdapterService_blobUrl, undefined, "f");
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
116
|
SkyAvatarAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
117
|
SkyAvatarAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarAdapterService });
|
|
118
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarAdapterService, decorators: [{
|
|
119
119
|
type: Injectable
|
|
120
120
|
}] });
|
|
121
121
|
|
|
122
|
+
var _SkyAvatarInnerComponent_instances, _SkyAvatarInnerComponent_viewInitialized, _SkyAvatarInnerComponent__src, _SkyAvatarInnerComponent__name, _SkyAvatarInnerComponent_elementRef, _SkyAvatarInnerComponent_adapter, _SkyAvatarInnerComponent_updateImage;
|
|
122
123
|
/**
|
|
123
124
|
* @internal
|
|
124
125
|
*/
|
|
125
126
|
class SkyAvatarInnerComponent {
|
|
126
127
|
constructor(elementRef, adapter) {
|
|
127
|
-
this
|
|
128
|
-
this.
|
|
128
|
+
_SkyAvatarInnerComponent_instances.add(this);
|
|
129
|
+
this.size = 'large';
|
|
130
|
+
_SkyAvatarInnerComponent_viewInitialized.set(this, false);
|
|
131
|
+
_SkyAvatarInnerComponent__src.set(this, void 0);
|
|
132
|
+
_SkyAvatarInnerComponent__name.set(this, void 0);
|
|
133
|
+
_SkyAvatarInnerComponent_elementRef.set(this, void 0);
|
|
134
|
+
_SkyAvatarInnerComponent_adapter.set(this, void 0);
|
|
135
|
+
__classPrivateFieldSet(this, _SkyAvatarInnerComponent_elementRef, elementRef, "f");
|
|
136
|
+
__classPrivateFieldSet(this, _SkyAvatarInnerComponent_adapter, adapter, "f");
|
|
129
137
|
}
|
|
130
138
|
get src() {
|
|
131
|
-
return this
|
|
139
|
+
return __classPrivateFieldGet(this, _SkyAvatarInnerComponent__src, "f");
|
|
132
140
|
}
|
|
133
141
|
set src(value) {
|
|
134
|
-
this
|
|
135
|
-
this.
|
|
142
|
+
__classPrivateFieldSet(this, _SkyAvatarInnerComponent__src, value, "f");
|
|
143
|
+
__classPrivateFieldGet(this, _SkyAvatarInnerComponent_instances, "m", _SkyAvatarInnerComponent_updateImage).call(this);
|
|
136
144
|
}
|
|
137
145
|
get name() {
|
|
138
|
-
return this
|
|
146
|
+
return __classPrivateFieldGet(this, _SkyAvatarInnerComponent__name, "f");
|
|
139
147
|
}
|
|
140
148
|
set name(value) {
|
|
141
|
-
this
|
|
149
|
+
__classPrivateFieldSet(this, _SkyAvatarInnerComponent__name, value, "f");
|
|
142
150
|
}
|
|
143
151
|
get initials() {
|
|
144
152
|
let initials;
|
|
@@ -166,23 +174,23 @@ class SkyAvatarInnerComponent {
|
|
|
166
174
|
return colorIndex;
|
|
167
175
|
}
|
|
168
176
|
ngAfterViewInit() {
|
|
169
|
-
this
|
|
170
|
-
this.
|
|
177
|
+
__classPrivateFieldSet(this, _SkyAvatarInnerComponent_viewInitialized, true, "f");
|
|
178
|
+
__classPrivateFieldGet(this, _SkyAvatarInnerComponent_instances, "m", _SkyAvatarInnerComponent_updateImage).call(this);
|
|
171
179
|
}
|
|
172
180
|
ngOnDestroy() {
|
|
173
|
-
this.
|
|
174
|
-
}
|
|
175
|
-
updateImage() {
|
|
176
|
-
if (this.viewInitialized) {
|
|
177
|
-
this.adapter.updateImage(this.elementRef, this.src);
|
|
178
|
-
}
|
|
181
|
+
__classPrivateFieldGet(this, _SkyAvatarInnerComponent_adapter, "f").destroy();
|
|
179
182
|
}
|
|
180
183
|
}
|
|
184
|
+
_SkyAvatarInnerComponent_viewInitialized = new WeakMap(), _SkyAvatarInnerComponent__src = new WeakMap(), _SkyAvatarInnerComponent__name = new WeakMap(), _SkyAvatarInnerComponent_elementRef = new WeakMap(), _SkyAvatarInnerComponent_adapter = new WeakMap(), _SkyAvatarInnerComponent_instances = new WeakSet(), _SkyAvatarInnerComponent_updateImage = function _SkyAvatarInnerComponent_updateImage() {
|
|
185
|
+
if (__classPrivateFieldGet(this, _SkyAvatarInnerComponent_viewInitialized, "f") && this.src) {
|
|
186
|
+
__classPrivateFieldGet(this, _SkyAvatarInnerComponent_adapter, "f").updateImage(__classPrivateFieldGet(this, _SkyAvatarInnerComponent_elementRef, "f"), this.src);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
181
189
|
SkyAvatarInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarInnerComponent, deps: [{ token: i0.ElementRef }, { token: SkyAvatarAdapterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
182
|
-
SkyAvatarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyAvatarInnerComponent, selector: "sky-avatar-inner", inputs: { src: "src", name: "name", size: "size" }, providers: [SkyAvatarAdapterService], ngImport: i0, template: "<div\n class=\"sky-elevation-1 sky-avatar-wrapper\"\n [ngClass]=\"'sky-avatar-wrapper-size-' +
|
|
190
|
+
SkyAvatarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyAvatarInnerComponent, selector: "sky-avatar-inner", inputs: { src: "src", name: "name", size: "size" }, providers: [SkyAvatarAdapterService], ngImport: i0, template: "<div\n class=\"sky-elevation-1 sky-avatar-wrapper\"\n [ngClass]=\"'sky-avatar-wrapper-size-' + size\"\n>\n <div class=\"sky-avatar-image\" [hidden]=\"!src\"></div>\n <div *ngIf=\"src\" class=\"sky-screen-reader-only\">\n {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n </div>\n <div\n class=\"sky-avatar-initials\"\n [hidden]=\"src || !name\"\n [ngClass]=\"'sky-palette-multi-' + (colorIndex + 1)\"\n >\n <div\n *ngIf=\"size === 'small'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-body-sm': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'medium'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'large'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-2': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n </div>\n</div>\n", styles: [".sky-avatar-wrapper{height:104px;width:104px;border:solid 2px transparent;border-radius:50%;overflow:hidden;position:relative;top:-2px;left:-2px}.sky-avatar-image,.sky-avatar-initials{height:100px;width:100px;background-position:50%;background-size:cover;display:flex;align-items:center;justify-content:center}.sky-avatar-initials{font-size:50px}.sky-avatar-initials-inner{color:#fff;cursor:default;-webkit-user-select:none;user-select:none}.sky-avatar-wrapper-size-medium{height:69px;width:69px}.sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-avatar-wrapper-size-medium .sky-avatar-initials{height:65px;width:65px}.sky-avatar-wrapper-size-medium .sky-avatar-initials{font-size:32.5px}.sky-avatar-wrapper-size-small{height:36px;width:36px}.sky-avatar-wrapper-size-small .sky-avatar-image,.sky-avatar-wrapper-size-small .sky-avatar-initials{height:32px;width:32px}.sky-avatar-wrapper-size-small .sky-avatar-initials{font-size:16px}.sky-file-drop .sky-avatar-wrapper{cursor:pointer}.sky-file-drop-accept .sky-avatar-wrapper{border-color:#72bf44;border-style:dashed}.sky-file-drop-reject .sky-avatar-wrapper{border-color:#ef4044;border-style:dashed}.sky-theme-modern .sky-avatar-wrapper{height:100px;width:100px;background-color:#fff;border-width:0;padding:5px;top:0;left:0}.sky-theme-modern .sky-avatar-image,.sky-theme-modern .sky-avatar-initials{border-radius:50%;height:90px;width:90px}.sky-theme-modern .sky-avatar-initials-inner{color:#212327}.sky-theme-modern .sky-file-drop-accept .sky-avatar-wrapper,.sky-theme-modern .sky-file-drop-reject .sky-avatar-wrapper{border-width:2px;padding:3px}.sky-theme-modern .sky-file-drop-accept .sky-avatar-wrapper-size-medium,.sky-theme-modern .sky-file-drop-reject .sky-avatar-wrapper-size-medium{padding:1px}.sky-theme-modern .sky-file-drop-accept .sky-avatar-wrapper-size-small,.sky-theme-modern .sky-file-drop-reject .sky-avatar-wrapper-size-small{padding:0}.sky-theme-modern .sky-avatar-wrapper-size-medium{padding:3px;height:65px;width:65px}.sky-theme-modern .sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-theme-modern .sky-avatar-wrapper-size-medium .sky-avatar-initials{height:59px;width:59px}.sky-theme-modern .sky-avatar-wrapper-size-small{padding:2px;height:32px;width:32px}.sky-theme-modern .sky-avatar-wrapper-size-small .sky-avatar-image,.sky-theme-modern .sky-avatar-wrapper-size-small .sky-avatar-initials{height:28px;width:28px}.sky-theme-modern sky-file-drop:hover .sky-avatar-wrapper{border:solid 1px #1870B8;padding:4px}.sky-theme-modern sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:2px}.sky-theme-modern sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:1px}.sky-theme-modern sky-file-drop:active .sky-avatar-wrapper,.sky-theme-modern sky-file-drop:focus-within .sky-avatar-wrapper{border:solid 2px #1870B8;padding:3px}.sky-theme-modern sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-medium,.sky-theme-modern sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:1px}.sky-theme-modern sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-small,.sky-theme-modern sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:0}.sky-theme-modern sky-file-drop:focus-within:not(:active) .sky-avatar-wrapper{box-shadow:0 1px 8px #0000004d}.sky-theme-modern.sky-theme-mode-dark .sky-avatar-wrapper{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-avatar-initials-inner{color:#212327}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "pipe", type: i3$1.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None });
|
|
183
191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarInnerComponent, decorators: [{
|
|
184
192
|
type: Component,
|
|
185
|
-
args: [{ selector: 'sky-avatar-inner', providers: [SkyAvatarAdapterService], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-elevation-1 sky-avatar-wrapper\"\n [ngClass]=\"'sky-avatar-wrapper-size-' +
|
|
193
|
+
args: [{ selector: 'sky-avatar-inner', providers: [SkyAvatarAdapterService], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-elevation-1 sky-avatar-wrapper\"\n [ngClass]=\"'sky-avatar-wrapper-size-' + size\"\n>\n <div class=\"sky-avatar-image\" [hidden]=\"!src\"></div>\n <div *ngIf=\"src\" class=\"sky-screen-reader-only\">\n {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n </div>\n <div\n class=\"sky-avatar-initials\"\n [hidden]=\"src || !name\"\n [ngClass]=\"'sky-palette-multi-' + (colorIndex + 1)\"\n >\n <div\n *ngIf=\"size === 'small'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-body-sm': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'medium'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'large'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-2': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n </div>\n</div>\n", styles: [".sky-avatar-wrapper{height:104px;width:104px;border:solid 2px transparent;border-radius:50%;overflow:hidden;position:relative;top:-2px;left:-2px}.sky-avatar-image,.sky-avatar-initials{height:100px;width:100px;background-position:50%;background-size:cover;display:flex;align-items:center;justify-content:center}.sky-avatar-initials{font-size:50px}.sky-avatar-initials-inner{color:#fff;cursor:default;-webkit-user-select:none;user-select:none}.sky-avatar-wrapper-size-medium{height:69px;width:69px}.sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-avatar-wrapper-size-medium .sky-avatar-initials{height:65px;width:65px}.sky-avatar-wrapper-size-medium .sky-avatar-initials{font-size:32.5px}.sky-avatar-wrapper-size-small{height:36px;width:36px}.sky-avatar-wrapper-size-small .sky-avatar-image,.sky-avatar-wrapper-size-small .sky-avatar-initials{height:32px;width:32px}.sky-avatar-wrapper-size-small .sky-avatar-initials{font-size:16px}.sky-file-drop .sky-avatar-wrapper{cursor:pointer}.sky-file-drop-accept .sky-avatar-wrapper{border-color:#72bf44;border-style:dashed}.sky-file-drop-reject .sky-avatar-wrapper{border-color:#ef4044;border-style:dashed}.sky-theme-modern .sky-avatar-wrapper{height:100px;width:100px;background-color:#fff;border-width:0;padding:5px;top:0;left:0}.sky-theme-modern .sky-avatar-image,.sky-theme-modern .sky-avatar-initials{border-radius:50%;height:90px;width:90px}.sky-theme-modern .sky-avatar-initials-inner{color:#212327}.sky-theme-modern .sky-file-drop-accept .sky-avatar-wrapper,.sky-theme-modern .sky-file-drop-reject .sky-avatar-wrapper{border-width:2px;padding:3px}.sky-theme-modern .sky-file-drop-accept .sky-avatar-wrapper-size-medium,.sky-theme-modern .sky-file-drop-reject .sky-avatar-wrapper-size-medium{padding:1px}.sky-theme-modern .sky-file-drop-accept .sky-avatar-wrapper-size-small,.sky-theme-modern .sky-file-drop-reject .sky-avatar-wrapper-size-small{padding:0}.sky-theme-modern .sky-avatar-wrapper-size-medium{padding:3px;height:65px;width:65px}.sky-theme-modern .sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-theme-modern .sky-avatar-wrapper-size-medium .sky-avatar-initials{height:59px;width:59px}.sky-theme-modern .sky-avatar-wrapper-size-small{padding:2px;height:32px;width:32px}.sky-theme-modern .sky-avatar-wrapper-size-small .sky-avatar-image,.sky-theme-modern .sky-avatar-wrapper-size-small .sky-avatar-initials{height:28px;width:28px}.sky-theme-modern sky-file-drop:hover .sky-avatar-wrapper{border:solid 1px #1870B8;padding:4px}.sky-theme-modern sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:2px}.sky-theme-modern sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:1px}.sky-theme-modern sky-file-drop:active .sky-avatar-wrapper,.sky-theme-modern sky-file-drop:focus-within .sky-avatar-wrapper{border:solid 2px #1870B8;padding:3px}.sky-theme-modern sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-medium,.sky-theme-modern sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:1px}.sky-theme-modern sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-small,.sky-theme-modern sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:0}.sky-theme-modern sky-file-drop:focus-within:not(:active) .sky-avatar-wrapper{box-shadow:0 1px 8px #0000004d}.sky-theme-modern.sky-theme-mode-dark .sky-avatar-wrapper{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-avatar-initials-inner{color:#212327}\n"] }]
|
|
186
194
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SkyAvatarAdapterService }]; }, propDecorators: { src: [{
|
|
187
195
|
type: Input
|
|
188
196
|
}], name: [{
|
|
@@ -194,25 +202,29 @@ function getInitial(name) {
|
|
|
194
202
|
return name.charAt(0).toUpperCase();
|
|
195
203
|
}
|
|
196
204
|
|
|
205
|
+
var _SkyAvatarComponent_instances, _SkyAvatarComponent__canChange, _SkyAvatarComponent__name, _SkyAvatarComponent__size, _SkyAvatarComponent__src, _SkyAvatarComponent_errorService, _SkyAvatarComponent_fileSizePipe, _SkyAvatarComponent_resourcesService, _SkyAvatarComponent_handleError, _SkyAvatarComponent_maxFileSizeText, _SkyAvatarComponent_openErrorModal, _SkyAvatarComponent_getString;
|
|
206
|
+
const MAX_FILE_SIZE_DEFAULT = 500000;
|
|
197
207
|
class SkyAvatarComponent {
|
|
198
208
|
constructor(errorService, fileSizePipe, resourcesService) {
|
|
199
|
-
this
|
|
200
|
-
this.fileSizePipe = fileSizePipe;
|
|
201
|
-
this.resourcesService = resourcesService;
|
|
209
|
+
_SkyAvatarComponent_instances.add(this);
|
|
202
210
|
/**
|
|
203
211
|
* Specifies the maximum file size for the image in bytes.
|
|
204
212
|
*/
|
|
205
|
-
this.maxFileSize =
|
|
206
|
-
/**
|
|
207
|
-
* Specifies the size of the avatar.
|
|
208
|
-
* Acceptable values are: `"small"`, `"medium"`, and `"large"`.
|
|
209
|
-
* @default "large"
|
|
210
|
-
*/
|
|
211
|
-
this.size = 'large';
|
|
213
|
+
this.maxFileSize = MAX_FILE_SIZE_DEFAULT;
|
|
212
214
|
/**
|
|
213
215
|
* Emits a `SkyFileItem` object when the image is updated.
|
|
214
216
|
*/
|
|
215
217
|
this.avatarChanged = new EventEmitter();
|
|
218
|
+
_SkyAvatarComponent__canChange.set(this, false);
|
|
219
|
+
_SkyAvatarComponent__name.set(this, void 0);
|
|
220
|
+
_SkyAvatarComponent__size.set(this, 'large');
|
|
221
|
+
_SkyAvatarComponent__src.set(this, void 0);
|
|
222
|
+
_SkyAvatarComponent_errorService.set(this, void 0);
|
|
223
|
+
_SkyAvatarComponent_fileSizePipe.set(this, void 0);
|
|
224
|
+
_SkyAvatarComponent_resourcesService.set(this, void 0);
|
|
225
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent_errorService, errorService, "f");
|
|
226
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent_fileSizePipe, fileSizePipe, "f");
|
|
227
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent_resourcesService, resourcesService, "f");
|
|
216
228
|
}
|
|
217
229
|
/**
|
|
218
230
|
* Indicates whether users can change the image. To select a different image,
|
|
@@ -222,10 +234,10 @@ class SkyAvatarComponent {
|
|
|
222
234
|
* @default false
|
|
223
235
|
*/
|
|
224
236
|
set canChange(value) {
|
|
225
|
-
this
|
|
237
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent__canChange, !!value, "f");
|
|
226
238
|
}
|
|
227
239
|
get canChange() {
|
|
228
|
-
return this
|
|
240
|
+
return __classPrivateFieldGet(this, _SkyAvatarComponent__canChange, "f");
|
|
229
241
|
}
|
|
230
242
|
/**
|
|
231
243
|
* Specifies the name of the record that the avatar represents.
|
|
@@ -236,20 +248,31 @@ class SkyAvatarComponent {
|
|
|
236
248
|
* not required, but the component requires either the `name` or `src` property.
|
|
237
249
|
*/
|
|
238
250
|
set name(value) {
|
|
239
|
-
this
|
|
251
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent__name, value, "f");
|
|
240
252
|
}
|
|
241
253
|
get name() {
|
|
242
|
-
return this
|
|
254
|
+
return __classPrivateFieldGet(this, _SkyAvatarComponent__name, "f");
|
|
243
255
|
}
|
|
244
256
|
/**
|
|
245
257
|
* Specifies an image to display to identify a record. This property is
|
|
246
258
|
* not required, but the component requires either the `name` or `src` property.
|
|
247
259
|
*/
|
|
248
260
|
set src(value) {
|
|
249
|
-
this
|
|
261
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent__src, value, "f");
|
|
250
262
|
}
|
|
251
263
|
get src() {
|
|
252
|
-
return this
|
|
264
|
+
return __classPrivateFieldGet(this, _SkyAvatarComponent__src, "f");
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Specifies the size of the avatar.
|
|
268
|
+
* Acceptable values are: `"small"`, `"medium"`, and `"large"`.
|
|
269
|
+
* @default "large"
|
|
270
|
+
*/
|
|
271
|
+
set size(value) {
|
|
272
|
+
__classPrivateFieldSet(this, _SkyAvatarComponent__size, value !== null && value !== void 0 ? value : 'large', "f");
|
|
273
|
+
}
|
|
274
|
+
get size() {
|
|
275
|
+
return __classPrivateFieldGet(this, _SkyAvatarComponent__size, "f");
|
|
253
276
|
}
|
|
254
277
|
photoDrop(result) {
|
|
255
278
|
/* sanity check */
|
|
@@ -258,38 +281,35 @@ class SkyAvatarComponent {
|
|
|
258
281
|
this.avatarChanged.emit(result.files[0]);
|
|
259
282
|
}
|
|
260
283
|
else if (result.rejectedFiles && result.rejectedFiles.length > 0) {
|
|
261
|
-
this.
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
handleError(rejectedFiles) {
|
|
265
|
-
const rejectedFile = rejectedFiles[0];
|
|
266
|
-
if (rejectedFile.errorType === 'maxFileSize') {
|
|
267
|
-
const title = this.getString('skyux_avatar_error_too_large_title');
|
|
268
|
-
const description = this.getString('skyux_avatar_error_too_large_description', this.maxFileSizeText());
|
|
269
|
-
this.openErrorModal(title, description);
|
|
270
|
-
}
|
|
271
|
-
else if (rejectedFile.errorType === 'fileType') {
|
|
272
|
-
const title = this.getString('skyux_avatar_error_not_image_title');
|
|
273
|
-
const description = this.getString('skyux_avatar_error_not_image_description');
|
|
274
|
-
this.openErrorModal(title, description);
|
|
284
|
+
__classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_handleError).call(this, result.rejectedFiles);
|
|
275
285
|
}
|
|
276
286
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
errorCloseText: this.getString('skyux_avatar_errormodal_ok'),
|
|
285
|
-
};
|
|
286
|
-
this.errorService.open(config);
|
|
287
|
+
}
|
|
288
|
+
_SkyAvatarComponent__canChange = new WeakMap(), _SkyAvatarComponent__name = new WeakMap(), _SkyAvatarComponent__size = new WeakMap(), _SkyAvatarComponent__src = new WeakMap(), _SkyAvatarComponent_errorService = new WeakMap(), _SkyAvatarComponent_fileSizePipe = new WeakMap(), _SkyAvatarComponent_resourcesService = new WeakMap(), _SkyAvatarComponent_instances = new WeakSet(), _SkyAvatarComponent_handleError = function _SkyAvatarComponent_handleError(rejectedFiles) {
|
|
289
|
+
const rejectedFile = rejectedFiles[0];
|
|
290
|
+
if (rejectedFile.errorType === 'maxFileSize') {
|
|
291
|
+
const title = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_too_large_title');
|
|
292
|
+
const description = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_too_large_description', __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_maxFileSizeText).call(this));
|
|
293
|
+
__classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_openErrorModal).call(this, title, description);
|
|
287
294
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
295
|
+
else if (rejectedFile.errorType === 'fileType') {
|
|
296
|
+
const title = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_not_image_title');
|
|
297
|
+
const description = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_not_image_description');
|
|
298
|
+
__classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_openErrorModal).call(this, title, description);
|
|
291
299
|
}
|
|
292
|
-
}
|
|
300
|
+
}, _SkyAvatarComponent_maxFileSizeText = function _SkyAvatarComponent_maxFileSizeText() {
|
|
301
|
+
return __classPrivateFieldGet(this, _SkyAvatarComponent_fileSizePipe, "f").transform(this.maxFileSize);
|
|
302
|
+
}, _SkyAvatarComponent_openErrorModal = function _SkyAvatarComponent_openErrorModal(title, description) {
|
|
303
|
+
const config = {
|
|
304
|
+
errorTitle: title,
|
|
305
|
+
errorDescription: description,
|
|
306
|
+
errorCloseText: __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_errormodal_ok'),
|
|
307
|
+
};
|
|
308
|
+
__classPrivateFieldGet(this, _SkyAvatarComponent_errorService, "f").open(config);
|
|
309
|
+
}, _SkyAvatarComponent_getString = function _SkyAvatarComponent_getString(key, ...args) {
|
|
310
|
+
// TODO: Need to implement the async `getString` method in a breaking change.
|
|
311
|
+
return __classPrivateFieldGet(this, _SkyAvatarComponent_resourcesService, "f").getStringForLocale({ locale: 'en-US' }, key, ...args);
|
|
312
|
+
};
|
|
293
313
|
SkyAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarComponent, deps: [{ token: i1.SkyErrorModalService }, { token: i2$1.SkyFileSizePipe }, { token: i3$1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
294
314
|
SkyAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyAvatarComponent, selector: "sky-avatar", inputs: { canChange: "canChange", name: "name", src: "src", maxFileSize: "maxFileSize", size: "size" }, outputs: { avatarChanged: "avatarChanged" }, ngImport: i0, template: "<div class=\"sky-avatar\">\n <div *ngIf=\"canChange\">\n <div class=\"sky-avatar-file-drop\">\n <sky-file-drop\n [acceptedTypes]=\"'image/*'\"\n [fileUploadAriaLabel]=\"\n src\n ? ('skyux_avatar_upload_change_aria_label' | skyLibResources: name)\n : ('skyux_avatar_upload_new_aria_label' | skyLibResources: name)\n \"\n [multiple]=\"false\"\n [maxFileSize]=\"maxFileSize\"\n [multiple]=\"false\"\n (filesChanged)=\"photoDrop($event)\"\n >\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n </sky-file-drop>\n </div>\n </div>\n <div *ngIf=\"!canChange\">\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n </div>\n</div>\n\n<ng-template #innerTemplate>\n <sky-avatar-inner [name]=\"name\" [size]=\"size\" [src]=\"src\"></sky-avatar-inner>\n</ng-template>\n", styles: [".sky-avatar .sky-file-drop-col{flex-basis:initial}.sky-theme-modern .sky-file-drop:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.λ8, selector: "sky-file-drop", inputs: ["fileUploadAriaLabel", "linkUploadAriaLabel", "minFileSize", "maxFileSize", "multiple", "validateFn", "acceptedTypes", "noClick", "allowLinks"], outputs: ["filesChanged", "linkInputBlur", "linkChanged"] }, { kind: "component", type: SkyAvatarInnerComponent, selector: "sky-avatar-inner", inputs: ["src", "name", "size"] }, { kind: "pipe", type: i3$1.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None });
|
|
295
315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAvatarComponent, decorators: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-avatar.mjs","sources":["../../../../../libs/components/avatar/src/lib/modules/shared/sky-avatar-resources.module.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar-adapter.service.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.inner.component.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.inner.component.html","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.component.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.component.html","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.module.ts","../../../../../libs/components/avatar/src/skyux-avatar.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-avatar' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_avatar_error_not_image_description: {\n message: 'Please choose a file that is a valid image.',\n },\n skyux_avatar_error_not_image_title: { message: 'File is not an image.' },\n skyux_avatar_error_too_large_description: {\n message: 'Please choose an image that is less than {0}.',\n },\n skyux_avatar_error_too_large_title: { message: 'File is too large.' },\n skyux_avatar_errormodal_ok: { message: 'OK' },\n skyux_avatar_inner_description: { message: 'Profile picture of {0}' },\n skyux_avatar_upload_change_aria_label: {\n message:\n 'Change profile photo of {0}. Drag a file here or click to browse.',\n },\n skyux_avatar_upload_new_aria_label: {\n message: 'Add profile photo of {0}. Drag a file here or click to browse.',\n },\n },\n};\n\nexport class SkyAvatarResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyAvatarResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyAvatarResourcesModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { SkyAvatarSrc } from './avatar-src';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAvatarAdapterService {\n private blobUrl: string;\n\n public updateImage(elementRef: ElementRef, src: SkyAvatarSrc) {\n this.revokeBlobUrl();\n\n const el = elementRef.nativeElement;\n\n /*istanbul ignore else */\n if (el) {\n const imageEl = el.querySelector('.sky-avatar-image');\n\n /*istanbul ignore else */\n if (imageEl) {\n let url: string;\n\n if (src) {\n if (src instanceof File || src instanceof Blob) {\n url = this.createBlobUrl(src);\n } else {\n url = src;\n }\n }\n\n // Notice the quotes inside the `url` function. This ensures proper url escaping.\n imageEl.style.backgroundImage = url ? 'url(\"' + url + '\")' : '';\n }\n }\n }\n\n public destroy() {\n this.revokeBlobUrl();\n }\n\n private createBlobUrl(src: Blob | File) {\n const url = URL.createObjectURL(src);\n\n // Keep the last blob URL around so we can revoke it later.\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n this.blobUrl = url;\n return url;\n }\n\n private revokeBlobUrl() {\n if (this.blobUrl) {\n URL.revokeObjectURL(this.blobUrl);\n this.blobUrl = undefined;\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SkyAvatarAdapterService } from './avatar-adapter.service';\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-avatar-inner',\n templateUrl: './avatar.inner.component.html',\n styleUrls: ['./avatar.inner.component.scss'],\n providers: [SkyAvatarAdapterService],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAvatarInnerComponent implements AfterViewInit, OnDestroy {\n public get src(): SkyAvatarSrc {\n return this._src;\n }\n\n @Input()\n public set src(value: SkyAvatarSrc) {\n this._src = value;\n this.updateImage();\n }\n\n public get name(): string {\n return this._name;\n }\n\n @Input()\n public set name(value: string) {\n this._name = value;\n }\n\n @Input()\n public size: SkyAvatarSize;\n\n private viewInitialized: boolean;\n\n private _src: SkyAvatarSrc;\n\n private _name: string;\n\n constructor(\n private elementRef: ElementRef,\n private adapter: SkyAvatarAdapterService\n ) {}\n\n public get initials(): string {\n let initials: string;\n\n if (this.name) {\n const nameSplit = this.name.split(' ');\n initials = getInitial(nameSplit[0]);\n\n if (nameSplit.length > 1) {\n initials += getInitial(nameSplit[nameSplit.length - 1]);\n }\n }\n\n return initials;\n }\n\n public get colorIndex(): number {\n const name = this.name;\n let colorIndex: number;\n\n if (name) {\n // Generate a unique-ish color based on the record name. This is deterministic\n // so that a given name will always generate the same color.\n const seed =\n name.charCodeAt(0) + name.charCodeAt(name.length - 1) + name.length;\n colorIndex = Math.abs(seed % 6);\n } else {\n colorIndex = 0;\n }\n\n return colorIndex;\n }\n\n public ngAfterViewInit() {\n this.viewInitialized = true;\n this.updateImage();\n }\n\n public ngOnDestroy() {\n this.adapter.destroy();\n }\n\n private updateImage() {\n if (this.viewInitialized) {\n this.adapter.updateImage(this.elementRef, this.src);\n }\n }\n}\n\nfunction getInitial(name: string): string {\n return name.charAt(0).toUpperCase();\n}\n","<div\n class=\"sky-elevation-1 sky-avatar-wrapper\"\n [ngClass]=\"'sky-avatar-wrapper-size-' + (size || 'large')\"\n>\n <div class=\"sky-avatar-image\" [hidden]=\"!src\"></div>\n <div *ngIf=\"src\" class=\"sky-screen-reader-only\">\n {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n </div>\n <div\n class=\"sky-avatar-initials\"\n [hidden]=\"src || !name\"\n [ngClass]=\"'sky-palette-multi-' + (colorIndex + 1)\"\n >\n <div\n *ngIf=\"size === 'small'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-body-sm': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'medium'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size !== 'small' && size !== 'medium'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-2': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ErrorModalConfig, SkyErrorModalService } from '@skyux/errors';\nimport { SkyFileDropChange, SkyFileItem, SkyFileSizePipe } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\n@Component({\n selector: 'sky-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAvatarComponent {\n /**\n * Indicates whether users can change the image. To select a different image,\n * users click the image or drag another image on top of it,\n * much like the `sky-file-drop` component in the\n * [file attachment module](https://developer.blackbaud.com/skyux/components/file-attachments/file-attachment).\n * @default false\n */\n @Input()\n public set canChange(value: boolean) {\n this._canChange = value;\n }\n\n public get canChange(): boolean {\n return this._canChange;\n }\n\n /**\n * Specifies the name of the record that the avatar represents.\n * If the `src` property does not specify an image, the component displays\n * initials from the first and last words in the name. To ensure\n * that the component extracts the correct initials, specify a name with no prefix\n * or suffix, or just specify initials with a space between them. This property is\n * not required, but the component requires either the `name` or `src` property.\n */\n @Input()\n public set name(value: string) {\n this._name = value;\n }\n\n public get name(): string {\n return this._name;\n }\n\n /**\n * Specifies an image to display to identify a record. This property is\n * not required, but the component requires either the `name` or `src` property.\n */\n @Input()\n public set src(value: SkyAvatarSrc) {\n this._src = value;\n }\n\n public get src(): SkyAvatarSrc {\n return this._src;\n }\n\n /**\n * Specifies the maximum file size for the image in bytes.\n */\n @Input()\n public maxFileSize = 500000;\n\n /**\n * Specifies the size of the avatar.\n * Acceptable values are: `\"small\"`, `\"medium\"`, and `\"large\"`.\n * @default \"large\"\n */\n @Input()\n public size: SkyAvatarSize = 'large';\n\n /**\n * Emits a `SkyFileItem` object when the image is updated.\n */\n @Output()\n public avatarChanged = new EventEmitter<SkyFileItem>();\n\n private _canChange: boolean;\n\n private _name: string;\n\n private _src: SkyAvatarSrc;\n\n constructor(\n private errorService: SkyErrorModalService,\n private fileSizePipe: SkyFileSizePipe,\n private resourcesService: SkyLibResourcesService\n ) {}\n\n public photoDrop(result: SkyFileDropChange): void {\n /* sanity check */\n /* istanbul ignore else */\n if (result.files && result.files.length > 0) {\n this.avatarChanged.emit(result.files[0]);\n } else if (result.rejectedFiles && result.rejectedFiles.length > 0) {\n this.handleError(result.rejectedFiles);\n }\n }\n\n private handleError(rejectedFiles: Array<SkyFileItem>): void {\n const rejectedFile = rejectedFiles[0];\n\n if (rejectedFile.errorType === 'maxFileSize') {\n const title = this.getString('skyux_avatar_error_too_large_title');\n const description = this.getString(\n 'skyux_avatar_error_too_large_description',\n this.maxFileSizeText()\n );\n\n this.openErrorModal(title, description);\n } else if (rejectedFile.errorType === 'fileType') {\n const title = this.getString('skyux_avatar_error_not_image_title');\n const description = this.getString(\n 'skyux_avatar_error_not_image_description'\n );\n\n this.openErrorModal(title, description);\n }\n }\n\n private maxFileSizeText(): string {\n return this.fileSizePipe.transform(this.maxFileSize);\n }\n\n private openErrorModal(title: string, description: string): void {\n const config: ErrorModalConfig = {\n errorTitle: title,\n errorDescription: description,\n errorCloseText: this.getString('skyux_avatar_errormodal_ok'),\n };\n\n this.errorService.open(config);\n }\n\n private getString(key: string, ...args: any[]): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.resourcesService.getStringForLocale(\n { locale: 'en-US' },\n key,\n ...args\n );\n }\n}\n","<div class=\"sky-avatar\">\n <div *ngIf=\"canChange\">\n <div class=\"sky-avatar-file-drop\">\n <sky-file-drop\n [acceptedTypes]=\"'image/*'\"\n [fileUploadAriaLabel]=\"\n src\n ? ('skyux_avatar_upload_change_aria_label' | skyLibResources: name)\n : ('skyux_avatar_upload_new_aria_label' | skyLibResources: name)\n \"\n [multiple]=\"false\"\n [maxFileSize]=\"maxFileSize\"\n [multiple]=\"false\"\n (filesChanged)=\"photoDrop($event)\"\n >\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n </sky-file-drop>\n </div>\n </div>\n <div *ngIf=\"!canChange\">\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n </div>\n</div>\n\n<ng-template #innerTemplate>\n <sky-avatar-inner [name]=\"name\" [size]=\"size\" [src]=\"src\"></sky-avatar-inner>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyErrorModule } from '@skyux/errors';\nimport { SkyFileAttachmentsModule, SkyFileSizePipe } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAvatarResourcesModule } from '../shared/sky-avatar-resources.module';\n\nimport { SkyAvatarComponent } from './avatar.component';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\n\n@NgModule({\n declarations: [SkyAvatarInnerComponent, SkyAvatarComponent],\n imports: [\n CommonModule,\n SkyAvatarResourcesModule,\n SkyErrorModule,\n SkyFileAttachmentsModule,\n SkyI18nModule,\n SkyThemeModule,\n ],\n providers: [SkyFileSizePipe],\n exports: [SkyAvatarComponent],\n})\nexport class SkyAvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyAvatarAdapterService","i4","i2","i3","i5.SkyAvatarInnerComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-avatar.mjs","sources":["../../../../../libs/components/avatar/src/lib/modules/shared/sky-avatar-resources.module.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar-adapter.service.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.inner.component.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.inner.component.html","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.component.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.component.html","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.module.ts","../../../../../libs/components/avatar/src/skyux-avatar.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-avatar' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_avatar_error_not_image_description: {\n message: 'Please choose a file that is a valid image.',\n },\n skyux_avatar_error_not_image_title: { message: 'File is not an image.' },\n skyux_avatar_error_too_large_description: {\n message: 'Please choose an image that is less than {0}.',\n },\n skyux_avatar_error_too_large_title: { message: 'File is too large.' },\n skyux_avatar_errormodal_ok: { message: 'OK' },\n skyux_avatar_inner_description: { message: 'Profile picture of {0}' },\n skyux_avatar_upload_change_aria_label: {\n message:\n 'Change profile photo of {0}. Drag a file here or click to browse.',\n },\n skyux_avatar_upload_new_aria_label: {\n message: 'Add profile photo of {0}. Drag a file here or click to browse.',\n },\n },\n};\n\nexport class SkyAvatarResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyAvatarResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyAvatarResourcesModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { SkyAvatarSrc } from './avatar-src';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAvatarAdapterService {\n #blobUrl: string | undefined;\n\n public updateImage(elementRef: ElementRef, src: SkyAvatarSrc) {\n this.#revokeBlobUrl();\n\n const el = elementRef.nativeElement;\n\n /*istanbul ignore else */\n if (el) {\n const imageEl = el.querySelector('.sky-avatar-image');\n\n /*istanbul ignore else */\n if (imageEl) {\n let url = src;\n\n if (src instanceof File || src instanceof Blob) {\n url = this.#createBlobUrl(src);\n }\n\n // Notice the quotes inside the `url` function. This ensures proper url escaping.\n imageEl.style.backgroundImage = 'url(\"' + url + '\")';\n }\n }\n }\n\n public destroy() {\n this.#revokeBlobUrl();\n }\n\n #createBlobUrl(src: Blob | File) {\n const url = URL.createObjectURL(src);\n\n // Keep the last blob URL around so we can revoke it later.\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n this.#blobUrl = url;\n return url;\n }\n\n #revokeBlobUrl() {\n if (this.#blobUrl) {\n URL.revokeObjectURL(this.#blobUrl);\n this.#blobUrl = undefined;\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SkyAvatarAdapterService } from './avatar-adapter.service';\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-avatar-inner',\n templateUrl: './avatar.inner.component.html',\n styleUrls: ['./avatar.inner.component.scss'],\n providers: [SkyAvatarAdapterService],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAvatarInnerComponent implements AfterViewInit, OnDestroy {\n public get src(): SkyAvatarSrc | undefined {\n return this.#_src;\n }\n\n @Input()\n public set src(value: SkyAvatarSrc | undefined) {\n this.#_src = value;\n this.#updateImage();\n }\n\n public get name(): string | undefined {\n return this.#_name;\n }\n\n @Input()\n public set name(value: string | undefined) {\n this.#_name = value;\n }\n\n @Input()\n public size: SkyAvatarSize | undefined = 'large';\n\n #viewInitialized = false;\n\n #_src: SkyAvatarSrc | undefined;\n\n #_name: string | undefined;\n\n #elementRef: ElementRef;\n #adapter: SkyAvatarAdapterService;\n\n constructor(elementRef: ElementRef, adapter: SkyAvatarAdapterService) {\n this.#elementRef = elementRef;\n this.#adapter = adapter;\n }\n\n public get initials(): string | undefined {\n let initials: string | undefined;\n\n if (this.name) {\n const nameSplit = this.name.split(' ');\n initials = getInitial(nameSplit[0]);\n\n if (nameSplit.length > 1) {\n initials += getInitial(nameSplit[nameSplit.length - 1]);\n }\n }\n\n return initials;\n }\n\n public get colorIndex(): number {\n const name = this.name;\n let colorIndex: number;\n\n if (name) {\n // Generate a unique-ish color based on the record name. This is deterministic\n // so that a given name will always generate the same color.\n const seed =\n name.charCodeAt(0) + name.charCodeAt(name.length - 1) + name.length;\n colorIndex = Math.abs(seed % 6);\n } else {\n colorIndex = 0;\n }\n\n return colorIndex;\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateImage();\n }\n\n public ngOnDestroy(): void {\n this.#adapter.destroy();\n }\n\n #updateImage(): void {\n if (this.#viewInitialized && this.src) {\n this.#adapter.updateImage(this.#elementRef, this.src);\n }\n }\n}\n\nfunction getInitial(name: string): string {\n return name.charAt(0).toUpperCase();\n}\n","<div\n class=\"sky-elevation-1 sky-avatar-wrapper\"\n [ngClass]=\"'sky-avatar-wrapper-size-' + size\"\n>\n <div class=\"sky-avatar-image\" [hidden]=\"!src\"></div>\n <div *ngIf=\"src\" class=\"sky-screen-reader-only\">\n {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n </div>\n <div\n class=\"sky-avatar-initials\"\n [hidden]=\"src || !name\"\n [ngClass]=\"'sky-palette-multi-' + (colorIndex + 1)\"\n >\n <div\n *ngIf=\"size === 'small'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-body-sm': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'medium'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n <div\n *ngIf=\"size === 'large'\"\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-2': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ErrorModalConfig, SkyErrorModalService } from '@skyux/errors';\nimport { SkyFileDropChange, SkyFileItem, SkyFileSizePipe } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\nconst MAX_FILE_SIZE_DEFAULT = 500000;\n\n@Component({\n selector: 'sky-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyAvatarComponent {\n /**\n * Indicates whether users can change the image. To select a different image,\n * users click the image or drag another image on top of it,\n * much like the `sky-file-drop` component in the\n * [file attachment module](https://developer.blackbaud.com/skyux/components/file-attachments/file-attachment).\n * @default false\n */\n @Input()\n public set canChange(value: boolean | undefined) {\n this.#_canChange = !!value;\n }\n\n public get canChange(): boolean {\n return this.#_canChange;\n }\n\n /**\n * Specifies the name of the record that the avatar represents.\n * If the `src` property does not specify an image, the component displays\n * initials from the first and last words in the name. To ensure\n * that the component extracts the correct initials, specify a name with no prefix\n * or suffix, or just specify initials with a space between them. This property is\n * not required, but the component requires either the `name` or `src` property.\n */\n @Input()\n public set name(value: string | undefined) {\n this.#_name = value;\n }\n\n public get name(): string | undefined {\n return this.#_name;\n }\n\n /**\n * Specifies an image to display to identify a record. This property is\n * not required, but the component requires either the `name` or `src` property.\n */\n @Input()\n public set src(value: SkyAvatarSrc | undefined) {\n this.#_src = value;\n }\n\n public get src(): SkyAvatarSrc | undefined {\n return this.#_src;\n }\n\n /**\n * Specifies the maximum file size for the image in bytes.\n */\n @Input()\n public maxFileSize: number | undefined = MAX_FILE_SIZE_DEFAULT;\n\n /**\n * Specifies the size of the avatar.\n * Acceptable values are: `\"small\"`, `\"medium\"`, and `\"large\"`.\n * @default \"large\"\n */\n @Input()\n public set size(value: SkyAvatarSize | undefined) {\n this.#_size = value ?? 'large';\n }\n\n public get size(): SkyAvatarSize {\n return this.#_size;\n }\n\n /**\n * Emits a `SkyFileItem` object when the image is updated.\n */\n @Output()\n public avatarChanged = new EventEmitter<SkyFileItem>();\n\n #_canChange = false;\n\n #_name: string | undefined;\n\n #_size: SkyAvatarSize = 'large';\n\n #_src: SkyAvatarSrc | undefined;\n\n #errorService: SkyErrorModalService;\n #fileSizePipe: SkyFileSizePipe;\n #resourcesService: SkyLibResourcesService;\n\n constructor(\n errorService: SkyErrorModalService,\n fileSizePipe: SkyFileSizePipe,\n resourcesService: SkyLibResourcesService\n ) {\n this.#errorService = errorService;\n this.#fileSizePipe = fileSizePipe;\n this.#resourcesService = resourcesService;\n }\n\n public photoDrop(result: SkyFileDropChange): void {\n /* sanity check */\n /* istanbul ignore else */\n if (result.files && result.files.length > 0) {\n this.avatarChanged.emit(result.files[0]);\n } else if (result.rejectedFiles && result.rejectedFiles.length > 0) {\n this.#handleError(result.rejectedFiles);\n }\n }\n\n #handleError(rejectedFiles: Array<SkyFileItem>): void {\n const rejectedFile = rejectedFiles[0];\n\n if (rejectedFile.errorType === 'maxFileSize') {\n const title = this.#getString('skyux_avatar_error_too_large_title');\n const description = this.#getString(\n 'skyux_avatar_error_too_large_description',\n this.#maxFileSizeText()\n );\n\n this.#openErrorModal(title, description);\n } else if (rejectedFile.errorType === 'fileType') {\n const title = this.#getString('skyux_avatar_error_not_image_title');\n const description = this.#getString(\n 'skyux_avatar_error_not_image_description'\n );\n\n this.#openErrorModal(title, description);\n }\n }\n\n #maxFileSizeText(): string {\n return this.#fileSizePipe.transform(this.maxFileSize);\n }\n\n #openErrorModal(title: string, description: string): void {\n const config: ErrorModalConfig = {\n errorTitle: title,\n errorDescription: description,\n errorCloseText: this.#getString('skyux_avatar_errormodal_ok'),\n };\n\n this.#errorService.open(config);\n }\n\n #getString(key: string, ...args: any[]): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesService.getStringForLocale(\n { locale: 'en-US' },\n key,\n ...args\n );\n }\n}\n","<div class=\"sky-avatar\">\n <div *ngIf=\"canChange\">\n <div class=\"sky-avatar-file-drop\">\n <sky-file-drop\n [acceptedTypes]=\"'image/*'\"\n [fileUploadAriaLabel]=\"\n src\n ? ('skyux_avatar_upload_change_aria_label' | skyLibResources: name)\n : ('skyux_avatar_upload_new_aria_label' | skyLibResources: name)\n \"\n [multiple]=\"false\"\n [maxFileSize]=\"maxFileSize\"\n [multiple]=\"false\"\n (filesChanged)=\"photoDrop($event)\"\n >\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n </sky-file-drop>\n </div>\n </div>\n <div *ngIf=\"!canChange\">\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n </div>\n</div>\n\n<ng-template #innerTemplate>\n <sky-avatar-inner [name]=\"name\" [size]=\"size\" [src]=\"src\"></sky-avatar-inner>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyErrorModule } from '@skyux/errors';\nimport { SkyFileAttachmentsModule, SkyFileSizePipe } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAvatarResourcesModule } from '../shared/sky-avatar-resources.module';\n\nimport { SkyAvatarComponent } from './avatar.component';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\n\n@NgModule({\n declarations: [SkyAvatarInnerComponent, SkyAvatarComponent],\n imports: [\n CommonModule,\n SkyAvatarResourcesModule,\n SkyErrorModule,\n SkyFileAttachmentsModule,\n SkyI18nModule,\n SkyThemeModule,\n ],\n providers: [SkyFileSizePipe],\n exports: [SkyAvatarComponent],\n})\nexport class SkyAvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyAvatarAdapterService","i4","i2","i3","i5.SkyAvatarInnerComponent"],"mappings":"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"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
+
import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
|
|
1
2
|
import { By } from '@angular/platform-browser';
|
|
2
3
|
import { SkyAppTestUtility } from '@skyux-sdk/testing';
|
|
3
4
|
|
|
5
|
+
var _SkyAvatarFixture_debugEl;
|
|
4
6
|
/**
|
|
5
7
|
* Allows interaction with a SKY UX avatar component.
|
|
6
8
|
* @internal
|
|
7
9
|
*/
|
|
8
10
|
class SkyAvatarFixture {
|
|
9
11
|
constructor(fixture, skyTestId) {
|
|
10
|
-
|
|
12
|
+
_SkyAvatarFixture_debugEl.set(this, void 0);
|
|
13
|
+
__classPrivateFieldSet(this, _SkyAvatarFixture_debugEl, SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-avatar'), "f");
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
13
16
|
* The initials displayed when no image URL is specified.
|
|
14
17
|
*/
|
|
15
18
|
get initials() {
|
|
16
|
-
const initialsEl = this.
|
|
19
|
+
const initialsEl = __classPrivateFieldGet(this, _SkyAvatarFixture_debugEl, "f").query(By.css('.sky-avatar-initials'));
|
|
17
20
|
if (SkyAppTestUtility.isVisible(initialsEl)) {
|
|
18
21
|
return SkyAppTestUtility.getText(initialsEl.query(By.css('.sky-avatar-initials-inner')));
|
|
19
22
|
}
|
|
@@ -23,13 +26,14 @@ class SkyAvatarFixture {
|
|
|
23
26
|
* The avatar's current image URL.
|
|
24
27
|
*/
|
|
25
28
|
get imageUrl() {
|
|
26
|
-
const imageEl = this.
|
|
29
|
+
const imageEl = __classPrivateFieldGet(this, _SkyAvatarFixture_debugEl, "f").query(By.css('.sky-avatar-image'));
|
|
27
30
|
if (SkyAppTestUtility.isVisible(imageEl)) {
|
|
28
31
|
return SkyAppTestUtility.getBackgroundImageUrl(imageEl);
|
|
29
32
|
}
|
|
30
33
|
return undefined;
|
|
31
34
|
}
|
|
32
35
|
}
|
|
36
|
+
_SkyAvatarFixture_debugEl = new WeakMap();
|
|
33
37
|
|
|
34
38
|
/**
|
|
35
39
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-avatar-testing.mjs","sources":["../../../../../libs/components/avatar/testing/src/avatar-fixture.ts","../../../../../libs/components/avatar/testing/src/skyux-avatar-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX avatar component.\n * @internal\n */\nexport class SkyAvatarFixture {\n /**\n * The initials displayed when no image URL is specified.\n */\n public get initials(): string {\n const initialsEl = this
|
|
1
|
+
{"version":3,"file":"skyux-avatar-testing.mjs","sources":["../../../../../libs/components/avatar/testing/src/avatar-fixture.ts","../../../../../libs/components/avatar/testing/src/skyux-avatar-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX avatar component.\n * @internal\n */\nexport class SkyAvatarFixture {\n /**\n * The initials displayed when no image URL is specified.\n */\n public get initials(): string | undefined {\n const initialsEl = this.#debugEl.query(By.css('.sky-avatar-initials'));\n\n if (SkyAppTestUtility.isVisible(initialsEl)) {\n return SkyAppTestUtility.getText(\n initialsEl.query(By.css('.sky-avatar-initials-inner'))\n );\n }\n\n return undefined;\n }\n\n /**\n * The avatar's current image URL.\n */\n public get imageUrl(): string | undefined {\n const imageEl = this.#debugEl.query(By.css('.sky-avatar-image'));\n\n if (SkyAppTestUtility.isVisible(imageEl)) {\n return SkyAppTestUtility.getBackgroundImageUrl(imageEl);\n }\n\n return undefined;\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-avatar'\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAKA;;;AAGG;MACU,gBAAgB,CAAA;IA+B3B,WAAY,CAAA,OAA8B,EAAE,SAAiB,EAAA;QAF7D,yBAAuB,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGrB,QAAA,sBAAA,CAAA,IAAI,EAAA,yBAAA,EAAY,iBAAiB,CAAC,uBAAuB,CACvD,OAAO,EACP,SAAS,EACT,YAAY,CACb,MAAA,CAAC;KACH;AApCD;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,sBAAA,CAAA,IAAI,iCAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAEvE,QAAA,IAAI,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;AAC3C,YAAA,OAAO,iBAAiB,CAAC,OAAO,CAC9B,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CACvD,CAAC;AACH,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,sBAAA,CAAA,IAAI,iCAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAEjE,QAAA,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAWF,CAAA;;;AC/CD;;AAEG;;;;"}
|