@skyux/avatar 8.6.0 → 9.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/esm2022/lib/modules/avatar/avatar-adapter.service.mjs +47 -0
  2. package/esm2022/lib/modules/avatar/avatar.component.mjs +129 -0
  3. package/esm2022/lib/modules/avatar/avatar.inner.component.mjs +89 -0
  4. package/{esm2020 → esm2022}/lib/modules/avatar/avatar.module.mjs +15 -15
  5. package/esm2022/lib/modules/shared/sky-avatar-resources.module.mjs +62 -0
  6. package/esm2022/testing/avatar-fixture.mjs +33 -0
  7. package/{fesm2015 → fesm2022}/skyux-avatar-testing.mjs +4 -7
  8. package/{fesm2015 → fesm2022}/skyux-avatar-testing.mjs.map +1 -1
  9. package/fesm2022/skyux-avatar.mjs +359 -0
  10. package/{fesm2020 → fesm2022}/skyux-avatar.mjs.map +1 -1
  11. package/lib/modules/avatar/avatar.component.d.ts +1 -1
  12. package/lib/modules/avatar/avatar.inner.component.d.ts +1 -1
  13. package/package.json +17 -25
  14. package/esm2020/lib/modules/avatar/avatar-adapter.service.mjs +0 -51
  15. package/esm2020/lib/modules/avatar/avatar.component.mjs +0 -127
  16. package/esm2020/lib/modules/avatar/avatar.inner.component.mjs +0 -91
  17. package/esm2020/lib/modules/shared/sky-avatar-resources.module.mjs +0 -62
  18. package/esm2020/testing/avatar-fixture.mjs +0 -36
  19. package/fesm2015/skyux-avatar.mjs +0 -362
  20. package/fesm2015/skyux-avatar.mjs.map +0 -1
  21. package/fesm2020/skyux-avatar-testing.mjs +0 -43
  22. package/fesm2020/skyux-avatar-testing.mjs.map +0 -1
  23. package/fesm2020/skyux-avatar.mjs +0 -361
  24. /package/{esm2020 → esm2022}/index.mjs +0 -0
  25. /package/{esm2020 → esm2022}/lib/modules/avatar/avatar-size.mjs +0 -0
  26. /package/{esm2020 → esm2022}/lib/modules/avatar/avatar-src.mjs +0 -0
  27. /package/{esm2020 → esm2022}/skyux-avatar.mjs +0 -0
  28. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  29. /package/{esm2020 → esm2022}/testing/skyux-avatar-testing.mjs +0 -0
@@ -1,361 +0,0 @@
1
- import * as i4 from '@angular/common';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { NgModule, Injectable, Component, ViewEncapsulation, Input, EventEmitter, inject, Output } from '@angular/core';
5
- import * as i1 from '@skyux/errors';
6
- import { SkyErrorModule } from '@skyux/errors';
7
- import * as i2 from '@skyux/forms';
8
- import { SkyFileAttachmentsModule, SkyFileSizePipe } from '@skyux/forms';
9
- import * as i3$1 from '@skyux/i18n';
10
- import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
11
- import * as i3 from '@skyux/theme';
12
- import { SkyThemeModule } from '@skyux/theme';
13
- import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
14
- import { SkyDefaultInputProvider } from '@skyux/core';
15
-
16
- /**
17
- * NOTICE: DO NOT MODIFY THIS FILE!
18
- * The contents of this file were automatically generated by
19
- * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-avatar' schematic.
20
- * To update this file, simply rerun the command.
21
- */
22
- const RESOURCES = {
23
- 'EN-US': {
24
- skyux_avatar_error_not_image_description: {
25
- message: 'Please choose a file that is a valid image.',
26
- },
27
- skyux_avatar_error_not_image_title: { message: 'File is not an image.' },
28
- skyux_avatar_error_too_large_description: {
29
- message: 'Please choose an image that is less than {0}.',
30
- },
31
- skyux_avatar_error_too_large_title: { message: 'File is too large.' },
32
- skyux_avatar_errormodal_ok: { message: 'OK' },
33
- skyux_avatar_inner_description: { message: 'Profile picture of {0}' },
34
- skyux_avatar_upload_change_aria_label: {
35
- message: 'Change profile photo of {0}. Drag a file here or click to browse.',
36
- },
37
- skyux_avatar_upload_new_aria_label: {
38
- message: 'Add profile photo of {0}. Drag a file here or click to browse.',
39
- },
40
- },
41
- };
42
- class SkyAvatarResourcesProvider {
43
- getString(localeInfo, name) {
44
- return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
45
- }
46
- }
47
- /**
48
- * Import into any component library module that needs to use resource strings.
49
- */
50
- class SkyAvatarResourcesModule {
51
- }
52
- SkyAvatarResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
53
- SkyAvatarResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarResourcesModule, exports: [SkyI18nModule] });
54
- SkyAvatarResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarResourcesModule, providers: [
55
- {
56
- provide: SKY_LIB_RESOURCES_PROVIDERS,
57
- useClass: SkyAvatarResourcesProvider,
58
- multi: true,
59
- },
60
- ], imports: [SkyI18nModule] });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarResourcesModule, decorators: [{
62
- type: NgModule,
63
- args: [{
64
- exports: [SkyI18nModule],
65
- providers: [
66
- {
67
- provide: SKY_LIB_RESOURCES_PROVIDERS,
68
- useClass: SkyAvatarResourcesProvider,
69
- multi: true,
70
- },
71
- ],
72
- }]
73
- }] });
74
-
75
- var _SkyAvatarAdapterService_instances, _SkyAvatarAdapterService_blobUrl, _SkyAvatarAdapterService_createBlobUrl, _SkyAvatarAdapterService_revokeBlobUrl;
76
- /**
77
- * @internal
78
- */
79
- class SkyAvatarAdapterService {
80
- constructor() {
81
- _SkyAvatarAdapterService_instances.add(this);
82
- _SkyAvatarAdapterService_blobUrl.set(this, void 0);
83
- }
84
- updateImage(elementRef, src) {
85
- __classPrivateFieldGet(this, _SkyAvatarAdapterService_instances, "m", _SkyAvatarAdapterService_revokeBlobUrl).call(this);
86
- const el = elementRef.nativeElement;
87
- /*istanbul ignore else */
88
- if (el) {
89
- const imageEl = el.querySelector('.sky-avatar-image');
90
- /*istanbul ignore else */
91
- if (imageEl) {
92
- let url = src;
93
- if (src instanceof File || src instanceof Blob) {
94
- url = __classPrivateFieldGet(this, _SkyAvatarAdapterService_instances, "m", _SkyAvatarAdapterService_createBlobUrl).call(this, src);
95
- }
96
- // Notice the quotes inside the `url` function. This ensures proper url escaping.
97
- imageEl.style.backgroundImage = 'url("' + url + '")';
98
- }
99
- }
100
- }
101
- destroy() {
102
- __classPrivateFieldGet(this, _SkyAvatarAdapterService_instances, "m", _SkyAvatarAdapterService_revokeBlobUrl).call(this);
103
- }
104
- }
105
- _SkyAvatarAdapterService_blobUrl = new WeakMap(), _SkyAvatarAdapterService_instances = new WeakSet(), _SkyAvatarAdapterService_createBlobUrl = function _SkyAvatarAdapterService_createBlobUrl(src) {
106
- const url = URL.createObjectURL(src);
107
- // Keep the last blob URL around so we can revoke it later.
108
- // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
109
- __classPrivateFieldSet(this, _SkyAvatarAdapterService_blobUrl, url, "f");
110
- return url;
111
- }, _SkyAvatarAdapterService_revokeBlobUrl = function _SkyAvatarAdapterService_revokeBlobUrl() {
112
- if (__classPrivateFieldGet(this, _SkyAvatarAdapterService_blobUrl, "f")) {
113
- URL.revokeObjectURL(__classPrivateFieldGet(this, _SkyAvatarAdapterService_blobUrl, "f"));
114
- __classPrivateFieldSet(this, _SkyAvatarAdapterService_blobUrl, undefined, "f");
115
- }
116
- };
117
- SkyAvatarAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
118
- SkyAvatarAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarAdapterService });
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarAdapterService, decorators: [{
120
- type: Injectable
121
- }] });
122
-
123
- var _SkyAvatarInnerComponent_instances, _SkyAvatarInnerComponent_viewInitialized, _SkyAvatarInnerComponent__src, _SkyAvatarInnerComponent__name, _SkyAvatarInnerComponent_elementRef, _SkyAvatarInnerComponent_adapter, _SkyAvatarInnerComponent_updateImage;
124
- /**
125
- * @internal
126
- */
127
- class SkyAvatarInnerComponent {
128
- get src() {
129
- return __classPrivateFieldGet(this, _SkyAvatarInnerComponent__src, "f");
130
- }
131
- set src(value) {
132
- __classPrivateFieldSet(this, _SkyAvatarInnerComponent__src, value, "f");
133
- __classPrivateFieldGet(this, _SkyAvatarInnerComponent_instances, "m", _SkyAvatarInnerComponent_updateImage).call(this);
134
- }
135
- get name() {
136
- return __classPrivateFieldGet(this, _SkyAvatarInnerComponent__name, "f");
137
- }
138
- set name(value) {
139
- __classPrivateFieldSet(this, _SkyAvatarInnerComponent__name, value, "f");
140
- }
141
- constructor(elementRef, adapter) {
142
- _SkyAvatarInnerComponent_instances.add(this);
143
- this.size = 'large';
144
- _SkyAvatarInnerComponent_viewInitialized.set(this, false);
145
- _SkyAvatarInnerComponent__src.set(this, void 0);
146
- _SkyAvatarInnerComponent__name.set(this, void 0);
147
- _SkyAvatarInnerComponent_elementRef.set(this, void 0);
148
- _SkyAvatarInnerComponent_adapter.set(this, void 0);
149
- __classPrivateFieldSet(this, _SkyAvatarInnerComponent_elementRef, elementRef, "f");
150
- __classPrivateFieldSet(this, _SkyAvatarInnerComponent_adapter, adapter, "f");
151
- }
152
- get initials() {
153
- let initials;
154
- if (this.name) {
155
- const nameSplit = this.name.split(' ');
156
- initials = getInitial(nameSplit[0]);
157
- if (nameSplit.length > 1) {
158
- initials += getInitial(nameSplit[nameSplit.length - 1]);
159
- }
160
- }
161
- return initials;
162
- }
163
- get colorIndex() {
164
- const name = this.name;
165
- let colorIndex;
166
- if (name) {
167
- // Generate a unique-ish color based on the record name. This is deterministic
168
- // so that a given name will always generate the same color.
169
- const seed = name.charCodeAt(0) + name.charCodeAt(name.length - 1) + name.length;
170
- colorIndex = Math.abs(seed % 6);
171
- }
172
- else {
173
- colorIndex = 0;
174
- }
175
- return colorIndex;
176
- }
177
- ngAfterViewInit() {
178
- __classPrivateFieldSet(this, _SkyAvatarInnerComponent_viewInitialized, true, "f");
179
- __classPrivateFieldGet(this, _SkyAvatarInnerComponent_instances, "m", _SkyAvatarInnerComponent_updateImage).call(this);
180
- }
181
- ngOnDestroy() {
182
- __classPrivateFieldGet(this, _SkyAvatarInnerComponent_adapter, "f").destroy();
183
- }
184
- }
185
- _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() {
186
- if (__classPrivateFieldGet(this, _SkyAvatarInnerComponent_viewInitialized, "f") && this.src) {
187
- __classPrivateFieldGet(this, _SkyAvatarInnerComponent_adapter, "f").updateImage(__classPrivateFieldGet(this, _SkyAvatarInnerComponent_elementRef, "f"), this.src);
188
- }
189
- };
190
- SkyAvatarInnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarInnerComponent, deps: [{ token: i0.ElementRef }, { token: SkyAvatarAdapterService }], target: i0.ɵɵFactoryTarget.Component });
191
- SkyAvatarInnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.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 });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarInnerComponent, decorators: [{
193
- type: Component,
194
- 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"] }]
195
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SkyAvatarAdapterService }]; }, propDecorators: { src: [{
196
- type: Input
197
- }], name: [{
198
- type: Input
199
- }], size: [{
200
- type: Input
201
- }] } });
202
- function getInitial(name) {
203
- return name.charAt(0).toUpperCase();
204
- }
205
-
206
- var _SkyAvatarComponent_instances, _SkyAvatarComponent__canChange, _SkyAvatarComponent__name, _SkyAvatarComponent__src, _SkyAvatarComponent_errorService, _SkyAvatarComponent_fileSizePipe, _SkyAvatarComponent_resourcesService, _SkyAvatarComponent_defaultInputProvider, _SkyAvatarComponent_handleError, _SkyAvatarComponent_maxFileSizeText, _SkyAvatarComponent_openErrorModal, _SkyAvatarComponent_getString;
207
- const MAX_FILE_SIZE_DEFAULT = 500000;
208
- class SkyAvatarComponent {
209
- /**
210
- * Whether users can change the image. To select a different image,
211
- * users click the image or drag another image on top of it,
212
- * much like the `sky-file-drop` component in the
213
- * [file attachment module](https://developer.blackbaud.com/skyux/components/file-attachments/file-attachment).
214
- * @default false
215
- */
216
- set canChange(value) {
217
- __classPrivateFieldSet(this, _SkyAvatarComponent__canChange, !!value, "f");
218
- }
219
- get canChange() {
220
- return __classPrivateFieldGet(this, _SkyAvatarComponent__canChange, "f");
221
- }
222
- /**
223
- * The name of the record that the avatar represents.
224
- * If the `src` property does not specify an image, the component displays
225
- * initials from the first and last words in the name. To ensure
226
- * that the component extracts the correct initials, specify a name with no prefix
227
- * or suffix, or just specify initials with a space between them. This property is
228
- * not required, but the component requires either the `name` or `src` property.
229
- */
230
- set name(value) {
231
- __classPrivateFieldSet(this, _SkyAvatarComponent__name, value, "f");
232
- }
233
- get name() {
234
- return __classPrivateFieldGet(this, _SkyAvatarComponent__name, "f");
235
- }
236
- /**
237
- * The image to identify a record. This property is
238
- * not required, but the component requires either the `name` or `src` property.
239
- */
240
- set src(value) {
241
- __classPrivateFieldSet(this, _SkyAvatarComponent__src, value, "f");
242
- }
243
- get src() {
244
- return __classPrivateFieldGet(this, _SkyAvatarComponent__src, "f");
245
- }
246
- constructor(errorService, fileSizePipe, resourcesService) {
247
- _SkyAvatarComponent_instances.add(this);
248
- /**
249
- * The maximum file size for the image in bytes.
250
- * @default 500000 bytes
251
- */
252
- this.maxFileSize = MAX_FILE_SIZE_DEFAULT;
253
- /**
254
- * Emits a `SkyFileItem` object when the image is updated.
255
- */
256
- this.avatarChanged = new EventEmitter();
257
- _SkyAvatarComponent__canChange.set(this, false);
258
- _SkyAvatarComponent__name.set(this, void 0);
259
- _SkyAvatarComponent__src.set(this, void 0);
260
- _SkyAvatarComponent_errorService.set(this, void 0);
261
- _SkyAvatarComponent_fileSizePipe.set(this, void 0);
262
- _SkyAvatarComponent_resourcesService.set(this, void 0);
263
- _SkyAvatarComponent_defaultInputProvider.set(this, inject(SkyDefaultInputProvider, { optional: true }));
264
- __classPrivateFieldSet(this, _SkyAvatarComponent_errorService, errorService, "f");
265
- __classPrivateFieldSet(this, _SkyAvatarComponent_fileSizePipe, fileSizePipe, "f");
266
- __classPrivateFieldSet(this, _SkyAvatarComponent_resourcesService, resourcesService, "f");
267
- this.sizeDefault = __classPrivateFieldGet(this, _SkyAvatarComponent_defaultInputProvider, "f")?.getValue('avatar', 'size');
268
- }
269
- photoDrop(result) {
270
- /* sanity check */
271
- /* istanbul ignore else */
272
- if (result.files && result.files.length > 0) {
273
- this.avatarChanged.emit(result.files[0]);
274
- }
275
- else if (result.rejectedFiles && result.rejectedFiles.length > 0) {
276
- __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_handleError).call(this, result.rejectedFiles);
277
- }
278
- }
279
- }
280
- _SkyAvatarComponent__canChange = new WeakMap(), _SkyAvatarComponent__name = new WeakMap(), _SkyAvatarComponent__src = new WeakMap(), _SkyAvatarComponent_errorService = new WeakMap(), _SkyAvatarComponent_fileSizePipe = new WeakMap(), _SkyAvatarComponent_resourcesService = new WeakMap(), _SkyAvatarComponent_defaultInputProvider = new WeakMap(), _SkyAvatarComponent_instances = new WeakSet(), _SkyAvatarComponent_handleError = function _SkyAvatarComponent_handleError(rejectedFiles) {
281
- const rejectedFile = rejectedFiles[0];
282
- if (rejectedFile.errorType === 'maxFileSize') {
283
- const title = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_too_large_title');
284
- 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));
285
- __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_openErrorModal).call(this, title, description);
286
- }
287
- else if (rejectedFile.errorType === 'fileType') {
288
- const title = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_not_image_title');
289
- const description = __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_error_not_image_description');
290
- __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_openErrorModal).call(this, title, description);
291
- }
292
- }, _SkyAvatarComponent_maxFileSizeText = function _SkyAvatarComponent_maxFileSizeText() {
293
- return __classPrivateFieldGet(this, _SkyAvatarComponent_fileSizePipe, "f").transform(this.maxFileSize);
294
- }, _SkyAvatarComponent_openErrorModal = function _SkyAvatarComponent_openErrorModal(title, description) {
295
- const config = {
296
- errorTitle: title,
297
- errorDescription: description,
298
- errorCloseText: __classPrivateFieldGet(this, _SkyAvatarComponent_instances, "m", _SkyAvatarComponent_getString).call(this, 'skyux_avatar_errormodal_ok'),
299
- };
300
- __classPrivateFieldGet(this, _SkyAvatarComponent_errorService, "f").open(config);
301
- }, _SkyAvatarComponent_getString = function _SkyAvatarComponent_getString(key, ...args) {
302
- // TODO: Need to implement the async `getString` method in a breaking change.
303
- return __classPrivateFieldGet(this, _SkyAvatarComponent_resourcesService, "f").getStringForLocale({ locale: 'en-US' }, key, ...args);
304
- };
305
- SkyAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarComponent, deps: [{ token: i1.SkyErrorModalService }, { token: i2.SkyFileSizePipe }, { token: i3$1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
306
- SkyAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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\n [name]=\"name\"\n [size]=\"size ?? (sizeDefault | async) ?? 'large'\"\n [src]=\"src\"\n ></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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.λ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: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None });
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarComponent, decorators: [{
308
- type: Component,
309
- args: [{ selector: 'sky-avatar', encapsulation: ViewEncapsulation.None, 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\n [name]=\"name\"\n [size]=\"size ?? (sizeDefault | async) ?? 'large'\"\n [src]=\"src\"\n ></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"] }]
310
- }], ctorParameters: function () { return [{ type: i1.SkyErrorModalService }, { type: i2.SkyFileSizePipe }, { type: i3$1.SkyLibResourcesService }]; }, propDecorators: { canChange: [{
311
- type: Input
312
- }], name: [{
313
- type: Input
314
- }], src: [{
315
- type: Input
316
- }], maxFileSize: [{
317
- type: Input
318
- }], size: [{
319
- type: Input
320
- }], avatarChanged: [{
321
- type: Output
322
- }] } });
323
-
324
- class SkyAvatarModule {
325
- }
326
- SkyAvatarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
327
- SkyAvatarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarModule, declarations: [SkyAvatarInnerComponent, SkyAvatarComponent], imports: [CommonModule,
328
- SkyAvatarResourcesModule,
329
- SkyErrorModule,
330
- SkyFileAttachmentsModule,
331
- SkyI18nModule,
332
- SkyThemeModule], exports: [SkyAvatarComponent] });
333
- SkyAvatarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarModule, providers: [SkyFileSizePipe], imports: [CommonModule,
334
- SkyAvatarResourcesModule,
335
- SkyErrorModule,
336
- SkyFileAttachmentsModule,
337
- SkyI18nModule,
338
- SkyThemeModule] });
339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAvatarModule, decorators: [{
340
- type: NgModule,
341
- args: [{
342
- declarations: [SkyAvatarInnerComponent, SkyAvatarComponent],
343
- imports: [
344
- CommonModule,
345
- SkyAvatarResourcesModule,
346
- SkyErrorModule,
347
- SkyFileAttachmentsModule,
348
- SkyI18nModule,
349
- SkyThemeModule,
350
- ],
351
- providers: [SkyFileSizePipe],
352
- exports: [SkyAvatarComponent],
353
- }]
354
- }] });
355
-
356
- /**
357
- * Generated bundle index. Do not edit.
358
- */
359
-
360
- export { SkyAvatarModule, SkyAvatarComponent as λ1 };
361
- //# sourceMappingURL=skyux-avatar.mjs.map
File without changes
File without changes
File without changes