@skyux/avatar 11.21.0 → 11.23.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.
@@ -6,7 +6,7 @@
6
6
  * To update this file, simply rerun the command.
7
7
  */
8
8
  import { NgModule } from '@angular/core';
9
- import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, SkyLibResourcesService, getLibStringForLocale, } from '@skyux/i18n';
9
+ import { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';
10
10
  import * as i0 from "@angular/core";
11
11
  const RESOURCES = {
12
12
  'EN-US': {
@@ -29,36 +29,18 @@ const RESOURCES = {
29
29
  },
30
30
  };
31
31
  SkyLibResourcesService.addResources(RESOURCES);
32
- export class SkyAvatarResourcesProvider {
33
- getString(localeInfo, name) {
34
- return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
35
- }
36
- }
37
32
  /**
38
33
  * Import into any component library module that needs to use resource strings.
39
34
  */
40
35
  export class SkyAvatarResourcesModule {
41
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
42
37
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, exports: [SkyI18nModule] }); }
43
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, providers: [
44
- {
45
- provide: SKY_LIB_RESOURCES_PROVIDERS,
46
- useClass: SkyAvatarResourcesProvider,
47
- multi: true,
48
- },
49
- ], imports: [SkyI18nModule] }); }
38
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, imports: [SkyI18nModule] }); }
50
39
  }
51
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, decorators: [{
52
41
  type: NgModule,
53
42
  args: [{
54
43
  exports: [SkyI18nModule],
55
- providers: [
56
- {
57
- provide: SKY_LIB_RESOURCES_PROVIDERS,
58
- useClass: SkyAvatarResourcesProvider,
59
- multi: true,
60
- },
61
- ],
62
44
  }]
63
45
  }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWF2YXRhci1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2F2YXRhci9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1hdmF0YXItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFFMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCwyQkFBMkIsRUFFM0IsYUFBYSxFQUdiLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxhQUFhLENBQUM7O0FBRXJCLE1BQU0sU0FBUyxHQUFvQztJQUNqRCxPQUFPLEVBQUU7UUFDUCx3Q0FBd0MsRUFBRTtZQUN4QyxPQUFPLEVBQUUsNkNBQTZDO1NBQ3ZEO1FBQ0Qsa0NBQWtDLEVBQUUsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUU7UUFDeEUsd0NBQXdDLEVBQUU7WUFDeEMsT0FBTyxFQUFFLCtDQUErQztTQUN6RDtRQUNELGtDQUFrQyxFQUFFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFO1FBQ3JFLDBCQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtRQUM3Qyw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRTtRQUNyRSxxQ0FBcUMsRUFBRTtZQUNyQyxPQUFPLEVBQ0wsbUVBQW1FO1NBQ3RFO1FBQ0Qsa0NBQWtDLEVBQUU7WUFDbEMsT0FBTyxFQUFFLGdFQUFnRTtTQUMxRTtLQUNGO0NBQ0YsQ0FBQztBQUVGLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUvQyxNQUFNLE9BQU8sMEJBQTBCO0lBQzlCLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLFlBVHpCLGFBQWE7K0dBU1osd0JBQXdCLGFBUnhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLFlBUFMsYUFBYTs7MkZBU1osd0JBQXdCO2tCQVZwQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSwwQkFBMEI7NEJBQ3BDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cblxuLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktYXZhdGFyJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gIGdldExpYlN0cmluZ0ZvckxvY2FsZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IFJlY29yZDxzdHJpbmcsIFNreUxpYlJlc291cmNlcz4gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9hdmF0YXJfZXJyb3Jfbm90X2ltYWdlX2Rlc2NyaXB0aW9uOiB7XG4gICAgICBtZXNzYWdlOiAnUGxlYXNlIGNob29zZSBhIGZpbGUgdGhhdCBpcyBhIHZhbGlkIGltYWdlLicsXG4gICAgfSxcbiAgICBza3l1eF9hdmF0YXJfZXJyb3Jfbm90X2ltYWdlX3RpdGxlOiB7IG1lc3NhZ2U6ICdGaWxlIGlzIG5vdCBhbiBpbWFnZS4nIH0sXG4gICAgc2t5dXhfYXZhdGFyX2Vycm9yX3Rvb19sYXJnZV9kZXNjcmlwdGlvbjoge1xuICAgICAgbWVzc2FnZTogJ1BsZWFzZSBjaG9vc2UgYW4gaW1hZ2UgdGhhdCBpcyBsZXNzIHRoYW4gezB9LicsXG4gICAgfSxcbiAgICBza3l1eF9hdmF0YXJfZXJyb3JfdG9vX2xhcmdlX3RpdGxlOiB7IG1lc3NhZ2U6ICdGaWxlIGlzIHRvbyBsYXJnZS4nIH0sXG4gICAgc2t5dXhfYXZhdGFyX2Vycm9ybW9kYWxfb2s6IHsgbWVzc2FnZTogJ09LJyB9LFxuICAgIHNreXV4X2F2YXRhcl9pbm5lcl9kZXNjcmlwdGlvbjogeyBtZXNzYWdlOiAnUHJvZmlsZSBwaWN0dXJlIG9mIHswfScgfSxcbiAgICBza3l1eF9hdmF0YXJfdXBsb2FkX2NoYW5nZV9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOlxuICAgICAgICAnQ2hhbmdlIHByb2ZpbGUgcGhvdG8gb2YgezB9LiBEcmFnIGEgZmlsZSBoZXJlIG9yIGNsaWNrIHRvIGJyb3dzZS4nLFxuICAgIH0sXG4gICAgc2t5dXhfYXZhdGFyX3VwbG9hZF9uZXdfYXJpYV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0FkZCBwcm9maWxlIHBob3RvIG9mIHswfS4gRHJhZyBhIGZpbGUgaGVyZSBvciBjbGljayB0byBicm93c2UuJyxcbiAgICB9LFxuICB9LFxufTtcblxuU2t5TGliUmVzb3VyY2VzU2VydmljZS5hZGRSZXNvdXJjZXMoUkVTT1VSQ0VTKTtcblxuZXhwb3J0IGNsYXNzIFNreUF2YXRhclJlc291cmNlc1Byb3ZpZGVyIGltcGxlbWVudHMgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIge1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRMaWJTdHJpbmdGb3JMb2NhbGUoUkVTT1VSQ0VTLCBsb2NhbGVJbmZvLmxvY2FsZSwgbmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU0tZX0xJQl9SRVNPVVJDRVNfUFJPVklERVJTLFxuICAgICAgdXNlQ2xhc3M6IFNreUF2YXRhclJlc291cmNlc1Byb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXZhdGFyUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWF2YXRhci1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2F2YXRhci9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1hdmF0YXItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFFMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1Asd0NBQXdDLEVBQUU7WUFDeEMsT0FBTyxFQUFFLDZDQUE2QztTQUN2RDtRQUNELGtDQUFrQyxFQUFFLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFO1FBQ3hFLHdDQUF3QyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSwrQ0FBK0M7U0FDekQ7UUFDRCxrQ0FBa0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRTtRQUNyRSwwQkFBMEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDN0MsOEJBQThCLEVBQUUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUU7UUFDckUscUNBQXFDLEVBQUU7WUFDckMsT0FBTyxFQUNMLG1FQUFtRTtTQUN0RTtRQUNELGtDQUFrQyxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxnRUFBZ0U7U0FDMUU7S0FDRjtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCOzhHQUF4Qix3QkFBd0I7K0dBQXhCLHdCQUF3QixZQUZ6QixhQUFhOytHQUVaLHdCQUF3QixZQUZ6QixhQUFhOzsyRkFFWix3QkFBd0I7a0JBSHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG5cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWF2YXRhcicgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPiA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X2F2YXRhcl9lcnJvcl9ub3RfaW1hZ2VfZGVzY3JpcHRpb246IHtcbiAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgY2hvb3NlIGEgZmlsZSB0aGF0IGlzIGEgdmFsaWQgaW1hZ2UuJyxcbiAgICB9LFxuICAgIHNreXV4X2F2YXRhcl9lcnJvcl9ub3RfaW1hZ2VfdGl0bGU6IHsgbWVzc2FnZTogJ0ZpbGUgaXMgbm90IGFuIGltYWdlLicgfSxcbiAgICBza3l1eF9hdmF0YXJfZXJyb3JfdG9vX2xhcmdlX2Rlc2NyaXB0aW9uOiB7XG4gICAgICBtZXNzYWdlOiAnUGxlYXNlIGNob29zZSBhbiBpbWFnZSB0aGF0IGlzIGxlc3MgdGhhbiB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2F2YXRhcl9lcnJvcl90b29fbGFyZ2VfdGl0bGU6IHsgbWVzc2FnZTogJ0ZpbGUgaXMgdG9vIGxhcmdlLicgfSxcbiAgICBza3l1eF9hdmF0YXJfZXJyb3Jtb2RhbF9vazogeyBtZXNzYWdlOiAnT0snIH0sXG4gICAgc2t5dXhfYXZhdGFyX2lubmVyX2Rlc2NyaXB0aW9uOiB7IG1lc3NhZ2U6ICdQcm9maWxlIHBpY3R1cmUgb2YgezB9JyB9LFxuICAgIHNreXV4X2F2YXRhcl91cGxvYWRfY2hhbmdlX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgICdDaGFuZ2UgcHJvZmlsZSBwaG90byBvZiB7MH0uIERyYWcgYSBmaWxlIGhlcmUgb3IgY2xpY2sgdG8gYnJvd3NlLicsXG4gICAgfSxcbiAgICBza3l1eF9hdmF0YXJfdXBsb2FkX25ld19hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnQWRkIHByb2ZpbGUgcGhvdG8gb2YgezB9LiBEcmFnIGEgZmlsZSBoZXJlIG9yIGNsaWNrIHRvIGJyb3dzZS4nLFxuICAgIH0sXG4gIH0sXG59O1xuXG5Ta3lMaWJSZXNvdXJjZXNTZXJ2aWNlLmFkZFJlc291cmNlcyhSRVNPVVJDRVMpO1xuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBdmF0YXJSZXNvdXJjZXNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { By } from '@angular/platform-browser';
2
+ import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
+ /**
4
+ * Allows interaction with a SKY UX avatar component.
5
+ * @deprecated Use `SkyAvatarHarness` instead.
6
+ * @internal
7
+ */
8
+ export class SkyAvatarFixture {
9
+ /**
10
+ * The initials displayed when no image URL is specified.
11
+ */
12
+ get initials() {
13
+ const initialsEl = this.#debugEl.query(By.css('.sky-avatar-initials'));
14
+ if (SkyAppTestUtility.isVisible(initialsEl)) {
15
+ return SkyAppTestUtility.getText(initialsEl.query(By.css('.sky-avatar-initials-inner')));
16
+ }
17
+ return undefined;
18
+ }
19
+ /**
20
+ * The avatar's current image URL.
21
+ */
22
+ get imageUrl() {
23
+ const imageEl = this.#debugEl.query(By.css('.sky-avatar-image'));
24
+ if (SkyAppTestUtility.isVisible(imageEl)) {
25
+ return SkyAppTestUtility.getBackgroundImageUrl(imageEl);
26
+ }
27
+ return undefined;
28
+ }
29
+ #debugEl;
30
+ constructor(fixture, skyTestId) {
31
+ this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-avatar');
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWZpeHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXZhdGFyL3Rlc3Rpbmcvc3JjL2xlZ2FjeS9hdmF0YXItZml4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFFdkUsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FDOUIsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FDdkQsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFlO0lBRXZCLFlBQVksT0FBOEIsRUFBRSxTQUFpQjtRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixDQUN2RCxPQUFPLEVBQ1AsU0FBUyxFQUNULFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTa3lBcHBUZXN0VXRpbGl0eSB9IGZyb20gJ0Bza3l1eC1zZGsvdGVzdGluZyc7XG5cbi8qKlxuICogQWxsb3dzIGludGVyYWN0aW9uIHdpdGggYSBTS1kgVVggYXZhdGFyIGNvbXBvbmVudC5cbiAqIEBkZXByZWNhdGVkIFVzZSBgU2t5QXZhdGFySGFybmVzc2AgaW5zdGVhZC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5QXZhdGFyRml4dHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbHMgZGlzcGxheWVkIHdoZW4gbm8gaW1hZ2UgVVJMIGlzIHNwZWNpZmllZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW5pdGlhbHMoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpbml0aWFsc0VsID0gdGhpcy4jZGVidWdFbC5xdWVyeShCeS5jc3MoJy5za3ktYXZhdGFyLWluaXRpYWxzJykpO1xuXG4gICAgaWYgKFNreUFwcFRlc3RVdGlsaXR5LmlzVmlzaWJsZShpbml0aWFsc0VsKSkge1xuICAgICAgcmV0dXJuIFNreUFwcFRlc3RVdGlsaXR5LmdldFRleHQoXG4gICAgICAgIGluaXRpYWxzRWwucXVlcnkoQnkuY3NzKCcuc2t5LWF2YXRhci1pbml0aWFscy1pbm5lcicpKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXZhdGFyJ3MgY3VycmVudCBpbWFnZSBVUkwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGltYWdlVXJsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaW1hZ2VFbCA9IHRoaXMuI2RlYnVnRWwucXVlcnkoQnkuY3NzKCcuc2t5LWF2YXRhci1pbWFnZScpKTtcblxuICAgIGlmIChTa3lBcHBUZXN0VXRpbGl0eS5pc1Zpc2libGUoaW1hZ2VFbCkpIHtcbiAgICAgIHJldHVybiBTa3lBcHBUZXN0VXRpbGl0eS5nZXRCYWNrZ3JvdW5kSW1hZ2VVcmwoaW1hZ2VFbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNkZWJ1Z0VsOiBEZWJ1Z0VsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+LCBza3lUZXN0SWQ6IHN0cmluZykge1xuICAgIHRoaXMuI2RlYnVnRWwgPSBTa3lBcHBUZXN0VXRpbGl0eS5nZXREZWJ1Z0VsZW1lbnRCeVRlc3RJZChcbiAgICAgIGZpeHR1cmUsXG4gICAgICBza3lUZXN0SWQsXG4gICAgICAnc2t5LWF2YXRhcicsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hdmF0YXIvdGVzdGluZy9zcmMvbW9kdWxlcy9hdmF0YXIvYXZhdGFyLWhhcm5lc3MtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgU2t5QXZhdGFySGFybmVzcyBpbnN0YW5jZXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5QXZhdGFySGFybmVzc0ZpbHRlcnMgZXh0ZW5kcyBTa3lIYXJuZXNzRmlsdGVycyB7fVxuIl19
@@ -0,0 +1,118 @@
1
+ import { SkyComponentHarness, SkyHarnessUtility } from '@skyux/core/testing';
2
+ import { SkyErrorModalHarness } from '@skyux/errors/testing';
3
+ import { SkyFileDropHarness } from '@skyux/forms/testing';
4
+ const WAIT_INTERVAL = 10;
5
+ const WAIT_TIMEOUT = 3000;
6
+ async function isHidden(el) {
7
+ return (await el.getCssValue('display')) === 'none';
8
+ }
9
+ /**
10
+ * Harness for interacting with an avatar component in tests.
11
+ */
12
+ export class SkyAvatarHarness extends SkyComponentHarness {
13
+ /**
14
+ * @internal
15
+ */
16
+ static { this.hostSelector = 'sky-avatar'; }
17
+ #documentRootLocator = this.documentRootLocatorFactory();
18
+ #getFileDrop = this.locatorForOptional(SkyFileDropHarness);
19
+ #errorModal = this.#documentRootLocator.locatorForOptional(SkyErrorModalHarness);
20
+ /**
21
+ * Gets a `HarnessPredicate` that can be used to search for a
22
+ * `SkyAvatarHarness` that meets certain criteria.
23
+ */
24
+ static with(filters) {
25
+ return SkyAvatarHarness.getDataSkyIdPredicate(filters);
26
+ }
27
+ /**
28
+ * Gets the initials displayed when no image URL is specified.
29
+ */
30
+ async getInitials() {
31
+ const initialsEl = await this.locatorFor('.sky-avatar-initials')();
32
+ if (await isHidden(initialsEl)) {
33
+ return undefined;
34
+ }
35
+ return await initialsEl.text();
36
+ }
37
+ /**
38
+ * Gets the avatar's current image URL or Blob.
39
+ */
40
+ async getSrc() {
41
+ const url = await this.#getImageUrl();
42
+ if (url?.startsWith('blob:')) {
43
+ return await (await fetch(url)).blob();
44
+ }
45
+ return url;
46
+ }
47
+ /**
48
+ * Gets whether users can change the image.
49
+ */
50
+ async getCanChange() {
51
+ return !!(await this.#getFileDrop());
52
+ }
53
+ /**
54
+ * Simulates the user selecting or dropping an image onto the component.
55
+ */
56
+ async dropAvatarFile(file, waitForChange) {
57
+ const fileDrop = await this.#getFileDrop();
58
+ if (!fileDrop) {
59
+ throw new Error('A new avatar cannot be selected because the canChange input is not set to true.');
60
+ }
61
+ if (waitForChange) {
62
+ await this.#dropAndWait(fileDrop, file);
63
+ }
64
+ else {
65
+ await fileDrop.dropFile(file);
66
+ }
67
+ }
68
+ /**
69
+ * Gets whether an error indicating an invalid file type is displayed.
70
+ */
71
+ async hasFileTypeError() {
72
+ const errorModal = await this.#errorModal();
73
+ return !!(await errorModal?.getTitle())?.includes('File is not an image.');
74
+ }
75
+ /**
76
+ * Gets whether an error indicating an invalid file size is displayed.
77
+ */
78
+ async hasMaxSizeError() {
79
+ const errorModal = await this.#errorModal();
80
+ return !!(await errorModal?.getTitle())?.includes('File is too large.');
81
+ }
82
+ /**
83
+ * Closes the currently displayed error.
84
+ */
85
+ async closeError() {
86
+ const errorModal = await this.#errorModal();
87
+ if (!errorModal) {
88
+ throw new Error('No error is currently displayed.');
89
+ }
90
+ await errorModal.clickCloseButton();
91
+ }
92
+ async #getImageUrl() {
93
+ const imageEl = await this.locatorFor('.sky-avatar-image')();
94
+ if (await isHidden(imageEl)) {
95
+ return undefined;
96
+ }
97
+ return await SkyHarnessUtility.getBackgroundImageUrl(imageEl);
98
+ }
99
+ async #dropAndWait(fileDrop, file) {
100
+ const currentUrl = await this.#getImageUrl();
101
+ await fileDrop.dropFile(file);
102
+ return await new Promise((resolve, reject) => {
103
+ const checkForFileChange = async (attempts) => {
104
+ if ((await this.#getImageUrl()) !== currentUrl) {
105
+ resolve();
106
+ }
107
+ else if (attempts * WAIT_INTERVAL < WAIT_TIMEOUT) {
108
+ setTimeout(() => void checkForFileChange(attempts + 1), WAIT_INTERVAL);
109
+ }
110
+ else {
111
+ reject(new Error('The avatar src did not change within the expected time span'));
112
+ }
113
+ };
114
+ void checkForFileChange(0);
115
+ });
116
+ }
117
+ }
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXZhdGFyL3Rlc3Rpbmcvc3JjL21vZHVsZXMvYXZhdGFyL2F2YXRhci1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTFELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7QUFFMUIsS0FBSyxVQUFVLFFBQVEsQ0FBQyxFQUFlO0lBQ3JDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDdEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG1CQUFtQjtJQUN2RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBRTFDLG9CQUFvQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBRXpELFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMzRCxXQUFXLEdBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFckU7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBZ0M7UUFFaEMsT0FBTyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixN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QyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsT0FBTyxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxFQUFFLFFBQWdCLEVBQWlCLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO3FCQUFNLElBQUksUUFBUSxHQUFHLGFBQWEsR0FBRyxZQUFZLEVBQUUsQ0FBQztvQkFDbkQsVUFBVSxDQUNSLEdBQUcsRUFBRSxDQUFDLEtBQUssa0JBQWtCLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUMzQyxhQUFhLENBQ2QsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUNKLElBQUksS0FBSyxDQUNQLDZEQUE2RCxDQUM5RCxDQUNGLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUMsQ0FBQztZQUVGLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSwgVGVzdEVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzLCBTa3lIYXJuZXNzVXRpbGl0eSB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5RXJyb3JNb2RhbEhhcm5lc3MgfSBmcm9tICdAc2t5dXgvZXJyb3JzL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2Zvcm1zL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lBdmF0YXJIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vYXZhdGFyLWhhcm5lc3MtZmlsdGVycyc7XG5cbmNvbnN0IFdBSVRfSU5URVJWQUwgPSAxMDtcbmNvbnN0IFdBSVRfVElNRU9VVCA9IDMwMDA7XG5cbmFzeW5jIGZ1bmN0aW9uIGlzSGlkZGVuKGVsOiBUZXN0RWxlbWVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gKGF3YWl0IGVsLmdldENzc1ZhbHVlKCdkaXNwbGF5JykpID09PSAnbm9uZSc7XG59XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhbiBhdmF0YXIgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5QXZhdGFySGFybmVzcyBleHRlbmRzIFNreUNvbXBvbmVudEhhcm5lc3Mge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdza3ktYXZhdGFyJztcblxuICAjZG9jdW1lbnRSb290TG9jYXRvciA9IHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKTtcblxuICAjZ2V0RmlsZURyb3AgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChTa3lGaWxlRHJvcEhhcm5lc3MpO1xuICAjZXJyb3JNb2RhbCA9XG4gICAgdGhpcy4jZG9jdW1lbnRSb290TG9jYXRvci5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5RXJyb3JNb2RhbEhhcm5lc3MpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lBdmF0YXJIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5QXZhdGFySGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5QXZhdGFySGFybmVzcz4ge1xuICAgIHJldHVybiBTa3lBdmF0YXJIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbml0aWFscyBkaXNwbGF5ZWQgd2hlbiBubyBpbWFnZSBVUkwgaXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEluaXRpYWxzKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgaW5pdGlhbHNFbCA9IGF3YWl0IHRoaXMubG9jYXRvckZvcignLnNreS1hdmF0YXItaW5pdGlhbHMnKSgpO1xuXG4gICAgaWYgKGF3YWl0IGlzSGlkZGVuKGluaXRpYWxzRWwpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBpbml0aWFsc0VsLnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhdmF0YXIncyBjdXJyZW50IGltYWdlIFVSTCBvciBCbG9iLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNyYygpOiBQcm9taXNlPHN0cmluZyB8IEJsb2IgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLiNnZXRJbWFnZVVybCgpO1xuXG4gICAgaWYgKHVybD8uc3RhcnRzV2l0aCgnYmxvYjonKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IChhd2FpdCBmZXRjaCh1cmwpKS5ibG9iKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgdXNlcnMgY2FuIGNoYW5nZSB0aGUgaW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q2FuQ2hhbmdlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhIShhd2FpdCB0aGlzLiNnZXRGaWxlRHJvcCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW11bGF0ZXMgdGhlIHVzZXIgc2VsZWN0aW5nIG9yIGRyb3BwaW5nIGFuIGltYWdlIG9udG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkcm9wQXZhdGFyRmlsZShcbiAgICBmaWxlOiBGaWxlLFxuICAgIHdhaXRGb3JDaGFuZ2U/OiBib29sZWFuLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlRHJvcCA9IGF3YWl0IHRoaXMuI2dldEZpbGVEcm9wKCk7XG5cbiAgICBpZiAoIWZpbGVEcm9wKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdBIG5ldyBhdmF0YXIgY2Fubm90IGJlIHNlbGVjdGVkIGJlY2F1c2UgdGhlIGNhbkNoYW5nZSBpbnB1dCBpcyBub3Qgc2V0IHRvIHRydWUuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHdhaXRGb3JDaGFuZ2UpIHtcbiAgICAgIGF3YWl0IHRoaXMuI2Ryb3BBbmRXYWl0KGZpbGVEcm9wLCBmaWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgZmlsZURyb3AuZHJvcEZpbGUoZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciBhbiBlcnJvciBpbmRpY2F0aW5nIGFuIGludmFsaWQgZmlsZSB0eXBlIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNGaWxlVHlwZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVycm9yTW9kYWwgPSBhd2FpdCB0aGlzLiNlcnJvck1vZGFsKCk7XG5cbiAgICByZXR1cm4gISEoYXdhaXQgZXJyb3JNb2RhbD8uZ2V0VGl0bGUoKSk/LmluY2x1ZGVzKCdGaWxlIGlzIG5vdCBhbiBpbWFnZS4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHdoZXRoZXIgYW4gZXJyb3IgaW5kaWNhdGluZyBhbiBpbnZhbGlkIGZpbGUgc2l6ZSBpcyBkaXNwbGF5ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzTWF4U2l6ZUVycm9yKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVycm9yTW9kYWwgPSBhd2FpdCB0aGlzLiNlcnJvck1vZGFsKCk7XG5cbiAgICByZXR1cm4gISEoYXdhaXQgZXJyb3JNb2RhbD8uZ2V0VGl0bGUoKSk/LmluY2x1ZGVzKCdGaWxlIGlzIHRvbyBsYXJnZS4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xvc2VFcnJvcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlcnJvck1vZGFsID0gYXdhaXQgdGhpcy4jZXJyb3JNb2RhbCgpO1xuXG4gICAgaWYgKCFlcnJvck1vZGFsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVycm9yIGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQuJyk7XG4gICAgfVxuXG4gICAgYXdhaXQgZXJyb3JNb2RhbC5jbGlja0Nsb3NlQnV0dG9uKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0SW1hZ2VVcmwoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBpbWFnZUVsID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKCcuc2t5LWF2YXRhci1pbWFnZScpKCk7XG5cbiAgICBpZiAoYXdhaXQgaXNIaWRkZW4oaW1hZ2VFbCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IFNreUhhcm5lc3NVdGlsaXR5LmdldEJhY2tncm91bmRJbWFnZVVybChpbWFnZUVsKTtcbiAgfVxuXG4gIGFzeW5jICNkcm9wQW5kV2FpdChmaWxlRHJvcDogU2t5RmlsZURyb3BIYXJuZXNzLCBmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IHRoaXMuI2dldEltYWdlVXJsKCk7XG5cbiAgICBhd2FpdCBmaWxlRHJvcC5kcm9wRmlsZShmaWxlKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjaGVja0ZvckZpbGVDaGFuZ2UgPSBhc3luYyAoYXR0ZW1wdHM6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoKGF3YWl0IHRoaXMuI2dldEltYWdlVXJsKCkpICE9PSBjdXJyZW50VXJsKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0dGVtcHRzICogV0FJVF9JTlRFUlZBTCA8IFdBSVRfVElNRU9VVCkge1xuICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAoKSA9PiB2b2lkIGNoZWNrRm9yRmlsZUNoYW5nZShhdHRlbXB0cyArIDEpLFxuICAgICAgICAgICAgV0FJVF9JTlRFUlZBTCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgJ1RoZSBhdmF0YXIgc3JjIGRpZCBub3QgY2hhbmdlIHdpdGhpbiB0aGUgZXhwZWN0ZWQgdGltZSBzcGFuJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdm9pZCBjaGVja0ZvckZpbGVDaGFuZ2UoMCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
- export { SkyAvatarFixture } from './avatar-fixture';
2
- export { SkyAvatarHarness } from './avatar/avatar-harness';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hdmF0YXIvdGVzdGluZy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNreUF2YXRhckZpeHR1cmUgfSBmcm9tICcuL2F2YXRhci1maXh0dXJlJztcblxuZXhwb3J0IHsgU2t5QXZhdGFySGFybmVzcyB9IGZyb20gJy4vYXZhdGFyL2F2YXRhci1oYXJuZXNzJztcbiJdfQ==
1
+ export { SkyAvatarFixture } from './legacy/avatar-fixture';
2
+ export { SkyAvatarHarness } from './modules/avatar/avatar-harness';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hdmF0YXIvdGVzdGluZy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNreUF2YXRhckZpeHR1cmUgfSBmcm9tICcuL2xlZ2FjeS9hdmF0YXItZml4dHVyZSc7XG5cbmV4cG9ydCB7IFNreUF2YXRhckhhcm5lc3MgfSBmcm9tICcuL21vZHVsZXMvYXZhdGFyL2F2YXRhci1oYXJuZXNzJztcbiJdfQ==
@@ -6,6 +6,7 @@ import { SkyFileDropHarness } from '@skyux/forms/testing';
6
6
 
7
7
  /**
8
8
  * Allows interaction with a SKY UX avatar component.
9
+ * @deprecated Use `SkyAvatarHarness` instead.
9
10
  * @internal
10
11
  */
11
12
  class SkyAvatarFixture {
@@ -66,7 +67,7 @@ class SkyAvatarHarness extends SkyComponentHarness {
66
67
  if (await isHidden(initialsEl)) {
67
68
  return undefined;
68
69
  }
69
- return initialsEl.text();
70
+ return await initialsEl.text();
70
71
  }
71
72
  /**
72
73
  * Gets the avatar's current image URL or Blob.
@@ -128,12 +129,12 @@ class SkyAvatarHarness extends SkyComponentHarness {
128
129
  if (await isHidden(imageEl)) {
129
130
  return undefined;
130
131
  }
131
- return SkyHarnessUtility.getBackgroundImageUrl(imageEl);
132
+ return await SkyHarnessUtility.getBackgroundImageUrl(imageEl);
132
133
  }
133
134
  async #dropAndWait(fileDrop, file) {
134
135
  const currentUrl = await this.#getImageUrl();
135
136
  await fileDrop.dropFile(file);
136
- return new Promise((resolve, reject) => {
137
+ return await new Promise((resolve, reject) => {
137
138
  const checkForFileChange = async (attempts) => {
138
139
  if ((await this.#getImageUrl()) !== currentUrl) {
139
140
  resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-avatar-testing.mjs","sources":["../../../../../libs/components/avatar/testing/src/avatar-fixture.ts","../../../../../libs/components/avatar/testing/src/avatar/avatar-harness.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","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyHarnessUtility } from '@skyux/core/testing';\nimport { SkyErrorModalHarness } from '@skyux/errors/testing';\nimport { SkyFileDropHarness } from '@skyux/forms/testing';\n\nimport { SkyAvatarHarnessFilters } from './avatar-harness-filters';\n\nconst WAIT_INTERVAL = 10;\nconst WAIT_TIMEOUT = 3000;\n\nasync function isHidden(el: TestElement): Promise<boolean> {\n return (await el.getCssValue('display')) === 'none';\n}\n\n/**\n * Harness for interacting with an avatar component in tests.\n */\nexport class SkyAvatarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-avatar';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getFileDrop = this.locatorForOptional(SkyFileDropHarness);\n #errorModal =\n this.#documentRootLocator.locatorForOptional(SkyErrorModalHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyAvatarHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyAvatarHarnessFilters,\n ): HarnessPredicate<SkyAvatarHarness> {\n return SkyAvatarHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the initials displayed when no image URL is specified.\n */\n public async getInitials(): Promise<string | undefined> {\n const initialsEl = await this.locatorFor('.sky-avatar-initials')();\n\n if (await isHidden(initialsEl)) {\n return undefined;\n }\n\n return initialsEl.text();\n }\n\n /**\n * Gets the avatar's current image URL or Blob.\n */\n public async getSrc(): Promise<string | Blob | undefined> {\n const url = await this.#getImageUrl();\n\n if (url?.startsWith('blob:')) {\n return await (await fetch(url)).blob();\n }\n\n return url;\n }\n\n /**\n * Gets whether users can change the image.\n */\n public async getCanChange(): Promise<boolean> {\n return !!(await this.#getFileDrop());\n }\n\n /**\n * Simulates the user selecting or dropping an image onto the component.\n */\n public async dropAvatarFile(\n file: File,\n waitForChange?: boolean,\n ): Promise<void> {\n const fileDrop = await this.#getFileDrop();\n\n if (!fileDrop) {\n throw new Error(\n 'A new avatar cannot be selected because the canChange input is not set to true.',\n );\n }\n\n if (waitForChange) {\n await this.#dropAndWait(fileDrop, file);\n } else {\n await fileDrop.dropFile(file);\n }\n }\n\n /**\n * Gets whether an error indicating an invalid file type is displayed.\n */\n public async hasFileTypeError(): Promise<boolean> {\n const errorModal = await this.#errorModal();\n\n return !!(await errorModal?.getTitle())?.includes('File is not an image.');\n }\n\n /**\n * Gets whether an error indicating an invalid file size is displayed.\n */\n public async hasMaxSizeError(): Promise<boolean> {\n const errorModal = await this.#errorModal();\n\n return !!(await errorModal?.getTitle())?.includes('File is too large.');\n }\n\n /**\n * Closes the currently displayed error.\n */\n public async closeError(): Promise<void> {\n const errorModal = await this.#errorModal();\n\n if (!errorModal) {\n throw new Error('No error is currently displayed.');\n }\n\n await errorModal.clickCloseButton();\n }\n\n async #getImageUrl(): Promise<string | undefined> {\n const imageEl = await this.locatorFor('.sky-avatar-image')();\n\n if (await isHidden(imageEl)) {\n return undefined;\n }\n\n return SkyHarnessUtility.getBackgroundImageUrl(imageEl);\n }\n\n async #dropAndWait(fileDrop: SkyFileDropHarness, file: File): Promise<void> {\n const currentUrl = await this.#getImageUrl();\n\n await fileDrop.dropFile(file);\n\n return new Promise<void>((resolve, reject) => {\n const checkForFileChange = async (attempts: number): Promise<void> => {\n if ((await this.#getImageUrl()) !== currentUrl) {\n resolve();\n } else if (attempts * WAIT_INTERVAL < WAIT_TIMEOUT) {\n setTimeout(\n () => void checkForFileChange(attempts + 1),\n WAIT_INTERVAL,\n );\n } else {\n reject(\n new Error(\n 'The avatar src did not change within the expected time span',\n ),\n );\n }\n };\n\n void checkForFileChange(0);\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;AAC3B;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEtE,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;;AAGH,QAAA,OAAO,SAAS;;AAGlB;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEhE,QAAA,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAGzD,QAAA,OAAO,SAAS;;AAGlB,IAAA,QAAQ;IAER,WAAY,CAAA,OAA8B,EAAE,SAAiB,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CACvD,OAAO,EACP,SAAS,EACT,YAAY,CACb;;AAEJ;;ACxCD,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,YAAY,GAAG,IAAI;AAEzB,eAAe,QAAQ,CAAC,EAAe,EAAA;IACrC,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,MAAM;AACrD;AAEA;;AAEG;AACG,MAAO,gBAAiB,SAAQ,mBAAmB,CAAA;AACvD;;AAEG;aACW,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;AAE1C,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD,IAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;IAC1D,WAAW,GACT,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AAEpE;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAgC,EAAA;AAEhC,QAAA,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAGxD;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;QACtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;AAElE,QAAA,IAAI,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC9B,YAAA,OAAO,SAAS;;AAGlB,QAAA,OAAO,UAAU,CAAC,IAAI,EAAE;;AAG1B;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAErC,QAAA,IAAI,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;;AAGxC,QAAA,OAAO,GAAG;;AAGZ;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;QACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;;AAGtC;;AAEG;AACI,IAAA,MAAM,cAAc,CACzB,IAAU,EACV,aAAuB,EAAA;AAEvB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;QAE1C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF;;QAGH,IAAI,aAAa,EAAE;YACjB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;;aAClC;AACL,YAAA,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;;;AAIjC;;AAEG;AACI,IAAA,MAAM,gBAAgB,GAAA;AAC3B,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAE3C,QAAA,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,uBAAuB,CAAC;;AAG5E;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAE3C,QAAA,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC;;AAGzE;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAE3C,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;AAGrD,QAAA,MAAM,UAAU,CAAC,gBAAgB,EAAE;;AAGrC,IAAA,MAAM,YAAY,GAAA;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AAE5D,QAAA,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3B,YAAA,OAAO,SAAS;;AAGlB,QAAA,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAGzD,IAAA,MAAM,YAAY,CAAC,QAA4B,EAAE,IAAU,EAAA;AACzD,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAE5C,QAAA,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,MAAM,kBAAkB,GAAG,OAAO,QAAgB,KAAmB;gBACnE,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,MAAM,UAAU,EAAE;AAC9C,oBAAA,OAAO,EAAE;;AACJ,qBAAA,IAAI,QAAQ,GAAG,aAAa,GAAG,YAAY,EAAE;AAClD,oBAAA,UAAU,CACR,MAAM,KAAK,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,EAC3C,aAAa,CACd;;qBACI;AACL,oBAAA,MAAM,CACJ,IAAI,KAAK,CACP,6DAA6D,CAC9D,CACF;;AAEL,aAAC;AAED,YAAA,KAAK,kBAAkB,CAAC,CAAC,CAAC;AAC5B,SAAC,CAAC;;;;AC/JN;;AAEG;;;;"}
1
+ {"version":3,"file":"skyux-avatar-testing.mjs","sources":["../../../../../libs/components/avatar/testing/src/legacy/avatar-fixture.ts","../../../../../libs/components/avatar/testing/src/modules/avatar/avatar-harness.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 * @deprecated Use `SkyAvatarHarness` instead.\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","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyHarnessUtility } from '@skyux/core/testing';\nimport { SkyErrorModalHarness } from '@skyux/errors/testing';\nimport { SkyFileDropHarness } from '@skyux/forms/testing';\n\nimport { SkyAvatarHarnessFilters } from './avatar-harness-filters';\n\nconst WAIT_INTERVAL = 10;\nconst WAIT_TIMEOUT = 3000;\n\nasync function isHidden(el: TestElement): Promise<boolean> {\n return (await el.getCssValue('display')) === 'none';\n}\n\n/**\n * Harness for interacting with an avatar component in tests.\n */\nexport class SkyAvatarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-avatar';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getFileDrop = this.locatorForOptional(SkyFileDropHarness);\n #errorModal =\n this.#documentRootLocator.locatorForOptional(SkyErrorModalHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyAvatarHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyAvatarHarnessFilters,\n ): HarnessPredicate<SkyAvatarHarness> {\n return SkyAvatarHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the initials displayed when no image URL is specified.\n */\n public async getInitials(): Promise<string | undefined> {\n const initialsEl = await this.locatorFor('.sky-avatar-initials')();\n\n if (await isHidden(initialsEl)) {\n return undefined;\n }\n\n return await initialsEl.text();\n }\n\n /**\n * Gets the avatar's current image URL or Blob.\n */\n public async getSrc(): Promise<string | Blob | undefined> {\n const url = await this.#getImageUrl();\n\n if (url?.startsWith('blob:')) {\n return await (await fetch(url)).blob();\n }\n\n return url;\n }\n\n /**\n * Gets whether users can change the image.\n */\n public async getCanChange(): Promise<boolean> {\n return !!(await this.#getFileDrop());\n }\n\n /**\n * Simulates the user selecting or dropping an image onto the component.\n */\n public async dropAvatarFile(\n file: File,\n waitForChange?: boolean,\n ): Promise<void> {\n const fileDrop = await this.#getFileDrop();\n\n if (!fileDrop) {\n throw new Error(\n 'A new avatar cannot be selected because the canChange input is not set to true.',\n );\n }\n\n if (waitForChange) {\n await this.#dropAndWait(fileDrop, file);\n } else {\n await fileDrop.dropFile(file);\n }\n }\n\n /**\n * Gets whether an error indicating an invalid file type is displayed.\n */\n public async hasFileTypeError(): Promise<boolean> {\n const errorModal = await this.#errorModal();\n\n return !!(await errorModal?.getTitle())?.includes('File is not an image.');\n }\n\n /**\n * Gets whether an error indicating an invalid file size is displayed.\n */\n public async hasMaxSizeError(): Promise<boolean> {\n const errorModal = await this.#errorModal();\n\n return !!(await errorModal?.getTitle())?.includes('File is too large.');\n }\n\n /**\n * Closes the currently displayed error.\n */\n public async closeError(): Promise<void> {\n const errorModal = await this.#errorModal();\n\n if (!errorModal) {\n throw new Error('No error is currently displayed.');\n }\n\n await errorModal.clickCloseButton();\n }\n\n async #getImageUrl(): Promise<string | undefined> {\n const imageEl = await this.locatorFor('.sky-avatar-image')();\n\n if (await isHidden(imageEl)) {\n return undefined;\n }\n\n return await SkyHarnessUtility.getBackgroundImageUrl(imageEl);\n }\n\n async #dropAndWait(fileDrop: SkyFileDropHarness, file: File): Promise<void> {\n const currentUrl = await this.#getImageUrl();\n\n await fileDrop.dropFile(file);\n\n return await new Promise<void>((resolve, reject) => {\n const checkForFileChange = async (attempts: number): Promise<void> => {\n if ((await this.#getImageUrl()) !== currentUrl) {\n resolve();\n } else if (attempts * WAIT_INTERVAL < WAIT_TIMEOUT) {\n setTimeout(\n () => void checkForFileChange(attempts + 1),\n WAIT_INTERVAL,\n );\n } else {\n reject(\n new Error(\n 'The avatar src did not change within the expected time span',\n ),\n );\n }\n };\n\n void checkForFileChange(0);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAKA;;;;AAIG;MACU,gBAAgB,CAAA;AAC3B;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEtE,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;;AAGH,QAAA,OAAO,SAAS;;AAGlB;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEhE,QAAA,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAGzD,QAAA,OAAO,SAAS;;AAGlB,IAAA,QAAQ;IAER,WAAY,CAAA,OAA8B,EAAE,SAAiB,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CACvD,OAAO,EACP,SAAS,EACT,YAAY,CACb;;AAEJ;;ACzCD,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,YAAY,GAAG,IAAI;AAEzB,eAAe,QAAQ,CAAC,EAAe,EAAA;IACrC,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,MAAM;AACrD;AAEA;;AAEG;AACG,MAAO,gBAAiB,SAAQ,mBAAmB,CAAA;AACvD;;AAEG;aACW,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;AAE1C,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD,IAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;IAC1D,WAAW,GACT,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AAEpE;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAgC,EAAA;AAEhC,QAAA,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAGxD;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;QACtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;AAElE,QAAA,IAAI,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC9B,YAAA,OAAO,SAAS;;AAGlB,QAAA,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE;;AAGhC;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAErC,QAAA,IAAI,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;;AAGxC,QAAA,OAAO,GAAG;;AAGZ;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;QACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;;AAGtC;;AAEG;AACI,IAAA,MAAM,cAAc,CACzB,IAAU,EACV,aAAuB,EAAA;AAEvB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;QAE1C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF;;QAGH,IAAI,aAAa,EAAE;YACjB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;;aAClC;AACL,YAAA,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;;;AAIjC;;AAEG;AACI,IAAA,MAAM,gBAAgB,GAAA;AAC3B,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAE3C,QAAA,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,uBAAuB,CAAC;;AAG5E;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAE3C,QAAA,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC;;AAGzE;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QAE3C,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;AAGrD,QAAA,MAAM,UAAU,CAAC,gBAAgB,EAAE;;AAGrC,IAAA,MAAM,YAAY,GAAA;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AAE5D,QAAA,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3B,YAAA,OAAO,SAAS;;AAGlB,QAAA,OAAO,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAG/D,IAAA,MAAM,YAAY,CAAC,QAA4B,EAAE,IAAU,EAAA;AACzD,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAE5C,QAAA,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE7B,OAAO,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AACjD,YAAA,MAAM,kBAAkB,GAAG,OAAO,QAAgB,KAAmB;gBACnE,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,MAAM,UAAU,EAAE;AAC9C,oBAAA,OAAO,EAAE;;AACJ,qBAAA,IAAI,QAAQ,GAAG,aAAa,GAAG,YAAY,EAAE;AAClD,oBAAA,UAAU,CACR,MAAM,KAAK,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,EAC3C,aAAa,CACd;;qBACI;AACL,oBAAA,MAAM,CACJ,IAAI,KAAK,CACP,6DAA6D,CAC9D,CACF;;AAEL,aAAC;AAED,YAAA,KAAK,kBAAkB,CAAC,CAAC,CAAC;AAC5B,SAAC,CAAC;;;;AC/JN;;AAEG;;;;"}
@@ -9,7 +9,7 @@ import { SkyFileAttachmentsModule, SkyFileSizePipe } from '@skyux/forms';
9
9
  import * as i3 from '@skyux/theme';
10
10
  import { SkyThemeModule } from '@skyux/theme';
11
11
  import * as i3$1 from '@skyux/i18n';
12
- import { SkyLibResourcesService, getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
12
+ import { SkyLibResourcesService, SkyI18nModule } from '@skyux/i18n';
13
13
  import { SkyDefaultInputProvider } from '@skyux/core';
14
14
 
15
15
  /* istanbul ignore file */
@@ -40,36 +40,18 @@ const RESOURCES = {
40
40
  },
41
41
  };
42
42
  SkyLibResourcesService.addResources(RESOURCES);
43
- class SkyAvatarResourcesProvider {
44
- getString(localeInfo, name) {
45
- return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
46
- }
47
- }
48
43
  /**
49
44
  * Import into any component library module that needs to use resource strings.
50
45
  */
51
46
  class SkyAvatarResourcesModule {
52
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
53
48
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, exports: [SkyI18nModule] }); }
54
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, providers: [
55
- {
56
- provide: SKY_LIB_RESOURCES_PROVIDERS,
57
- useClass: SkyAvatarResourcesProvider,
58
- multi: true,
59
- },
60
- ], imports: [SkyI18nModule] }); }
49
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, imports: [SkyI18nModule] }); }
61
50
  }
62
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyAvatarResourcesModule, decorators: [{
63
52
  type: NgModule,
64
53
  args: [{
65
54
  exports: [SkyI18nModule],
66
- providers: [
67
- {
68
- provide: SKY_LIB_RESOURCES_PROVIDERS,
69
- useClass: SkyAvatarResourcesProvider,
70
- multi: true,
71
- },
72
- ],
73
55
  }]
74
56
  }] });
75
57
 
@@ -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":["/* istanbul ignore file */\n\n/**\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 SkyLibResourcesService,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<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\nSkyLibResourcesService.addResources(RESOURCES);\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 if (value) {\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 value.charCodeAt(0) + value.charCodeAt(value.length - 1) + value.length;\n this.#colorIndex = Math.abs(seed % 7);\n } else {\n this.#colorIndex = 0;\n }\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 return this.#colorIndex;\n }\n\n #colorIndex = 0;\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 @if (src) {\n <div class=\"sky-screen-reader-only\">\n {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n </div>\n }\n <div\n class=\"sky-avatar-initials\"\n [hidden]=\"src || !name\"\n [ngClass]=\"'sky-avatar-colors-' + (colorIndex + 1)\"\n >\n @if (size === 'small') {\n <div\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-body-sm': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n } @else if (size === 'medium') {\n <div\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n } @else if (size === 'large') {\n <div\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-2': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n }\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyDefaultInputProvider } from '@skyux/core';\nimport { ErrorModalConfig, SkyErrorModalService } from '@skyux/errors';\nimport { SkyFileDropChange, SkyFileItem, SkyFileSizePipe } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\nconst MAX_FILE_SIZE_DEFAULT = 512000;\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 * 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 * 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 * The image 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 * The maximum file size for the image in bytes.\n * @default 512000 bytes\n */\n @Input()\n public maxFileSize: number | undefined = MAX_FILE_SIZE_DEFAULT;\n\n /**\n * The size of the avatar.\n * Acceptable values are: `\"small\"`, `\"medium\"`, and `\"large\"`.\n * @default \"large\"\n */\n @Input()\n public size: SkyAvatarSize | undefined;\n\n /**\n * Emits a `SkyFileItem` object when the image is updated.\n */\n @Output()\n public avatarChanged = new EventEmitter<SkyFileItem>();\n\n protected sizeDefault: Observable<SkyAvatarSize> | undefined;\n\n #_canChange = false;\n\n #_name: string | undefined;\n\n #_src: SkyAvatarSrc | undefined;\n\n #errorService: SkyErrorModalService;\n #fileSizePipe: SkyFileSizePipe;\n #resourcesService: SkyLibResourcesService;\n\n #defaultInputProvider = inject(SkyDefaultInputProvider, { optional: true });\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 this.sizeDefault = this.#defaultInputProvider?.getValue<SkyAvatarSize>(\n 'avatar',\n 'size',\n );\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: 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 @if (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\" />\n </sky-file-drop>\n </div>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"innerTemplate\" />\n </div>\n }\n</div>\n\n<ng-template #innerTemplate>\n <sky-avatar-inner\n [name]=\"name\"\n [size]=\"size ?? (sizeDefault | async) ?? 'large'\"\n [src]=\"src\"\n />\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 { 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 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","i2","i4","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":["/* istanbul ignore file */\n\n/**\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 SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<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\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\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 if (value) {\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 value.charCodeAt(0) + value.charCodeAt(value.length - 1) + value.length;\n this.#colorIndex = Math.abs(seed % 7);\n } else {\n this.#colorIndex = 0;\n }\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 return this.#colorIndex;\n }\n\n #colorIndex = 0;\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 @if (src) {\n <div class=\"sky-screen-reader-only\">\n {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n </div>\n }\n <div\n class=\"sky-avatar-initials\"\n [hidden]=\"src || !name\"\n [ngClass]=\"'sky-avatar-colors-' + (colorIndex + 1)\"\n >\n @if (size === 'small') {\n <div\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-body-sm': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n } @else if (size === 'medium') {\n <div\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n } @else if (size === 'large') {\n <div\n class=\"sky-avatar-initials-inner\"\n [skyThemeClass]=\"{\n 'sky-font-display-2': 'modern'\n }\"\n >\n {{ initials }}\n </div>\n }\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyDefaultInputProvider } from '@skyux/core';\nimport { ErrorModalConfig, SkyErrorModalService } from '@skyux/errors';\nimport { SkyFileDropChange, SkyFileItem, SkyFileSizePipe } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\nconst MAX_FILE_SIZE_DEFAULT = 512000;\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 * 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 * 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 * The image 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 * The maximum file size for the image in bytes.\n * @default 512000 bytes\n */\n @Input()\n public maxFileSize: number | undefined = MAX_FILE_SIZE_DEFAULT;\n\n /**\n * The size of the avatar.\n * Acceptable values are: `\"small\"`, `\"medium\"`, and `\"large\"`.\n * @default \"large\"\n */\n @Input()\n public size: SkyAvatarSize | undefined;\n\n /**\n * Emits a `SkyFileItem` object when the image is updated.\n */\n @Output()\n public avatarChanged = new EventEmitter<SkyFileItem>();\n\n protected sizeDefault: Observable<SkyAvatarSize> | undefined;\n\n #_canChange = false;\n\n #_name: string | undefined;\n\n #_src: SkyAvatarSrc | undefined;\n\n #errorService: SkyErrorModalService;\n #fileSizePipe: SkyFileSizePipe;\n #resourcesService: SkyLibResourcesService;\n\n #defaultInputProvider = inject(SkyDefaultInputProvider, { optional: true });\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 this.sizeDefault = this.#defaultInputProvider?.getValue<SkyAvatarSize>(\n 'avatar',\n 'size',\n );\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: 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 @if (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\" />\n </sky-file-drop>\n </div>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"innerTemplate\" />\n </div>\n }\n</div>\n\n<ng-template #innerTemplate>\n <sky-avatar-inner\n [name]=\"name\"\n [size]=\"size ?? (sizeDefault | async) ?? 'large'\"\n [src]=\"src\"\n />\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 { 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 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","i2","i4","i3","i5.SkyAvatarInnerComponent"],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- import { SkyAppLocaleInfo, SkyLibResourcesProvider } from '@skyux/i18n';
2
1
  import * as i0 from "@angular/core";
3
2
  import * as i1 from "@skyux/i18n";
4
- export declare class SkyAvatarResourcesProvider implements SkyLibResourcesProvider {
5
- getString(localeInfo: SkyAppLocaleInfo, name: string): string | undefined;
6
- }
7
3
  /**
8
4
  * Import into any component library module that needs to use resource strings.
9
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyux/avatar",
3
- "version": "11.21.0",
3
+ "version": "11.23.0",
4
4
  "author": "Blackbaud, Inc.",
5
5
  "keywords": [
6
6
  "blackbaud",
@@ -40,12 +40,12 @@
40
40
  "@angular/common": "^18.2.8",
41
41
  "@angular/core": "^18.2.8",
42
42
  "@angular/platform-browser": "^18.2.8",
43
- "@skyux-sdk/testing": "11.21.0",
44
- "@skyux/core": "11.21.0",
45
- "@skyux/errors": "11.21.0",
46
- "@skyux/forms": "11.21.0",
47
- "@skyux/i18n": "11.21.0",
48
- "@skyux/theme": "11.21.0"
43
+ "@skyux-sdk/testing": "11.23.0",
44
+ "@skyux/core": "11.23.0",
45
+ "@skyux/errors": "11.23.0",
46
+ "@skyux/forms": "11.23.0",
47
+ "@skyux/i18n": "11.23.0",
48
+ "@skyux/theme": "11.23.0"
49
49
  },
50
50
  "dependencies": {
51
51
  "tslib": "^2.6.3"
@@ -1,6 +1,7 @@
1
1
  import { ComponentFixture } from '@angular/core/testing';
2
2
  /**
3
3
  * Allows interaction with a SKY UX avatar component.
4
+ * @deprecated Use `SkyAvatarHarness` instead.
4
5
  * @internal
5
6
  */
6
7
  export declare class SkyAvatarFixture {
@@ -1,2 +1,2 @@
1
- export { SkyAvatarFixture } from './avatar-fixture';
2
- export { SkyAvatarHarness } from './avatar/avatar-harness';
1
+ export { SkyAvatarFixture } from './legacy/avatar-fixture';
2
+ export { SkyAvatarHarness } from './modules/avatar/avatar-harness';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hdmF0YXIvdGVzdGluZy9zcmMvYXZhdGFyL2F2YXRhci1oYXJuZXNzLWZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbi8qKlxuICogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIFNreUF2YXRhckhhcm5lc3MgaW5zdGFuY2VzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIFNreUF2YXRhckhhcm5lc3NGaWx0ZXJzIGV4dGVuZHMgU2t5SGFybmVzc0ZpbHRlcnMge31cbiJdfQ==