@skyux/avatar 14.3.9 → 14.3.11

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.
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule, Injectable, Input, ViewEncapsulation, Component, EventEmitter, inject, Output } from '@angular/core';
3
- import * as i2$1 from '@skyux/forms';
4
- import { SkyFileDropModule, SkyFileSizePipe } from '@skyux/forms';
2
+ import { NgModule, Injectable, inject, ElementRef, Input, ViewEncapsulation, Component, EventEmitter, Output } from '@angular/core';
3
+ import * as i1$1 from '@skyux/forms';
4
+ import { SkyFileSizePipe, SkyFileDropModule } from '@skyux/forms';
5
5
  import { NgClass, NgTemplateOutlet, AsyncPipe } from '@angular/common';
6
6
  import { SkyDefaultInputProvider } from '@skyux/core';
7
- import * as i3 from '@skyux/i18n';
7
+ import { SkyErrorModalService } from '@skyux/errors';
8
+ import * as i2 from '@skyux/i18n';
8
9
  import { SkyLibResourcesService, SkyI18nModule } from '@skyux/i18n';
9
- import * as i2 from '@skyux/theme';
10
+ import * as i1 from '@skyux/theme';
10
11
  import { SkyThemeModule } from '@skyux/theme';
11
- import * as i1 from '@skyux/errors';
12
12
 
13
13
  /* istanbul ignore file */
14
14
  /**
@@ -124,6 +124,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
124
124
  * @internal
125
125
  */
126
126
  class SkyAvatarInnerComponent {
127
+ constructor() {
128
+ this.size = 'large';
129
+ this.#viewInitialized = false;
130
+ this.#elementRef = inject(ElementRef);
131
+ this.#adapter = inject(SkyAvatarAdapterService);
132
+ this.#colorIndex = 0;
133
+ }
127
134
  get src() {
128
135
  return this.#_src;
129
136
  }
@@ -151,13 +158,6 @@ class SkyAvatarInnerComponent {
151
158
  #_name;
152
159
  #elementRef;
153
160
  #adapter;
154
- constructor(elementRef, adapter) {
155
- this.size = 'large';
156
- this.#viewInitialized = false;
157
- this.#colorIndex = 0;
158
- this.#elementRef = elementRef;
159
- this.#adapter = adapter;
160
- }
161
161
  get initials() {
162
162
  let initials;
163
163
  if (this.name) {
@@ -185,13 +185,13 @@ class SkyAvatarInnerComponent {
185
185
  this.#adapter.updateImage(this.#elementRef, this.src);
186
186
  }
187
187
  }
188
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyAvatarInnerComponent, deps: [{ token: i0.ElementRef }, { token: SkyAvatarAdapterService }], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SkyAvatarInnerComponent, isStandalone: true, 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 @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", styles: [".sky-avatar:not(.sky-theme-modern *){--sky-override-avatar-initials-border-radius: initial;--sky-override-avatar-initials-font-size: 50px;--sky-override-avatar-initials-font-size-md: 32.5px;--sky-override-avatar-initials-font-size-sm: 16px;--sky-override-avatar-initials-height: 100px;--sky-override-avatar-initials-height-md: 65px;--sky-override-avatar-initials-height-sm: 32px;--sky-override-avatar-initials-width: 100px;--sky-override-avatar-initials-width-md: 65px;--sky-override-avatar-initials-width-sm: 32px;--sky-override-avatar-wrapper-background-color: transparent;--sky-override-avatar-wrapper-border: solid 2px transparent;--sky-override-avatar-wrapper-border-radius: 50%;--sky-override-avatar-wrapper-drop-accept-border-color: #72bf44;--sky-override-avatar-wrapper-drop-border-width: 2px;--sky-override-avatar-wrapper-drop-border-active: solid 2px transparent;--sky-override-avatar-wrapper-drop-border-hover: solid 2px transparent;--sky-override-avatar-wrapper-drop-box-shadow-focus: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-avatar-wrapper-drop-reject-border-color: #ef4044;--sky-override-avatar-wrapper-height: 104px;--sky-override-avatar-wrapper-height-md: 69px;--sky-override-avatar-wrapper-height-sm: 36px;--sky-override-avatar-wrapper-left: -2px;--sky-override-avatar-wrapper-padding: 0;--sky-override-avatar-wrapper-padding-md: 0;--sky-override-avatar-wrapper-padding-sm: 0;--sky-override-avatar-wrapper-top: -2px;--sky-override-avatar-wrapper-width: 104px;--sky-override-avatar-wrapper-width-md: 69px;--sky-override-avatar-wrapper-width-sm: 36px}.sky-avatar-colors-1{background-color:var(--sky-category-color-green)}.sky-avatar-colors-2{background-color:var(--sky-category-color-teal)}.sky-avatar-colors-3{background-color:var(--sky-category-color-purple)}.sky-avatar-colors-4{background-color:var(--sky-category-color-orange)}.sky-avatar-colors-5{background-color:var(--sky-category-color-blue)}.sky-avatar-colors-6{background-color:var(--sky-category-color-yellow)}.sky-avatar-colors-7{background-color:var(--sky-category-color-red)}.sky-avatar-wrapper{height:var(--sky-override-avatar-wrapper-height, var(--sky-size-avatar-l));width:var(--sky-override-avatar-wrapper-width, var(--sky-size-avatar-l));background-color:var(--sky-override-avatar-wrapper-background-color, var(--sky-color-background-thumbnail_matte));padding:var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l));border:var(--sky-override-avatar-wrapper-border, none);border-radius:var(--sky-override-avatar-wrapper-border-radius, var(--sky-border-radius-round));overflow:hidden;position:relative;top:var(--sky-override-avatar-wrapper-top, 0);left:var(--sky-override-avatar-wrapper-left, 0)}.sky-avatar-image,.sky-avatar-initials{height:var(--sky-override-avatar-initials-height, calc(var(--sky-size-avatar-l) - var(--sky-space-inset-thumbnail_matte-l) * 2));width:var(--sky-override-avatar-initials-width, calc(var(--sky-size-avatar-l) - var(--sky-space-inset-thumbnail_matte-l) * 2));background-position:50%;background-size:cover;border-radius:var(--sky-override-avatar-initials-border-radius, var(--sky-border-radius-round));display:flex;align-items:center;justify-content:center}.sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size, initial)}.sky-avatar-initials-inner{color:var(--sky-text-color-default);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-avatar-wrapper-size-medium{height:var(--sky-override-avatar-wrapper-height-md, var(--sky-size-avatar-m));width:var(--sky-override-avatar-wrapper-width-md, var(--sky-size-avatar-m));padding:var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m))}.sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-avatar-wrapper-size-medium .sky-avatar-initials{height:var(--sky-override-avatar-initials-height-md, calc(var(--sky-size-avatar-m) - var(--sky-space-inset-thumbnail_matte-m) * 2));width:var(--sky-override-avatar-initials-width-md, calc(var(--sky-size-avatar-m) - var(--sky-space-inset-thumbnail_matte-m) * 2))}.sky-avatar-wrapper-size-medium .sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size-md, initial)}.sky-avatar-wrapper-size-small{height:var(--sky-override-avatar-wrapper-height-sm, var(--sky-size-avatar-s));width:var(--sky-override-avatar-wrapper-width-sm, var(--sky-size-avatar-s));padding:var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s))}.sky-avatar-wrapper-size-small .sky-avatar-image,.sky-avatar-wrapper-size-small .sky-avatar-initials{height:var(--sky-override-avatar-initials-height-sm, calc(var(--sky-size-avatar-s) - var(--sky-space-inset-thumbnail_matte-s) * 2));width:var(--sky-override-avatar-initials-width-sm, calc(var(--sky-size-avatar-s) - var(--sky-space-inset-thumbnail_matte-s) * 2))}.sky-avatar-wrapper-size-small .sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size-sm, initial)}.sky-file-drop .sky-avatar-wrapper{cursor:pointer}.sky-file-drop-accept .sky-avatar-wrapper,.sky-file-drop-reject .sky-avatar-wrapper{border-style:dashed}.sky-file-drop-accept .sky-avatar-wrapper{border-color:var(--sky-override-avatar-wrapper-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-reject .sky-avatar-wrapper{border-color:var(--sky-override-avatar-wrapper-drop-reject-border-color, var(--sky-color-border-danger))}.sky-file-drop-accept .sky-avatar-wrapper,.sky-file-drop-reject .sky-avatar-wrapper{border-width:var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}.sky-file-drop-accept .sky-avatar-wrapper-size-medium,.sky-file-drop-reject .sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}.sky-file-drop-accept .sky-avatar-wrapper-size-small,.sky-file-drop-reject .sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}sky-file-drop:hover .sky-avatar-wrapper{border:var(--sky-override-avatar-wrapper-drop-border-hover, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-border-width-input-hover))}sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-border-width-input-hover))}sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-border-width-input-hover))}sky-file-drop:active .sky-avatar-wrapper,sky-file-drop:focus-within .sky-avatar-wrapper{border:var(--sky-override-avatar-wrapper-drop-border-active, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-border-width-input-active))}sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-medium,sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-border-width-input-active))}sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-small,sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-border-width-input-active))}sky-file-drop:focus-within:not(:active) .sky-avatar-wrapper{box-shadow:var(--sky-override-avatar-wrapper-drop-box-shadow-focus, none)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SkyI18nModule }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i2.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None }); }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyAvatarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SkyAvatarInnerComponent, isStandalone: true, 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 @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", styles: [".sky-avatar:not(.sky-theme-modern *){--sky-override-avatar-initials-border-radius: initial;--sky-override-avatar-initials-font-size: 50px;--sky-override-avatar-initials-font-size-md: 32.5px;--sky-override-avatar-initials-font-size-sm: 16px;--sky-override-avatar-initials-height: 100px;--sky-override-avatar-initials-height-md: 65px;--sky-override-avatar-initials-height-sm: 32px;--sky-override-avatar-initials-width: 100px;--sky-override-avatar-initials-width-md: 65px;--sky-override-avatar-initials-width-sm: 32px;--sky-override-avatar-wrapper-background-color: transparent;--sky-override-avatar-wrapper-border: solid 2px transparent;--sky-override-avatar-wrapper-border-radius: 50%;--sky-override-avatar-wrapper-drop-accept-border-color: #72bf44;--sky-override-avatar-wrapper-drop-border-width: 2px;--sky-override-avatar-wrapper-drop-border-active: solid 2px transparent;--sky-override-avatar-wrapper-drop-border-hover: solid 2px transparent;--sky-override-avatar-wrapper-drop-box-shadow-focus: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-avatar-wrapper-drop-reject-border-color: #ef4044;--sky-override-avatar-wrapper-height: 104px;--sky-override-avatar-wrapper-height-md: 69px;--sky-override-avatar-wrapper-height-sm: 36px;--sky-override-avatar-wrapper-left: -2px;--sky-override-avatar-wrapper-padding: 0;--sky-override-avatar-wrapper-padding-md: 0;--sky-override-avatar-wrapper-padding-sm: 0;--sky-override-avatar-wrapper-top: -2px;--sky-override-avatar-wrapper-width: 104px;--sky-override-avatar-wrapper-width-md: 69px;--sky-override-avatar-wrapper-width-sm: 36px}.sky-avatar-colors-1{background-color:var(--sky-category-color-green)}.sky-avatar-colors-2{background-color:var(--sky-category-color-teal)}.sky-avatar-colors-3{background-color:var(--sky-category-color-purple)}.sky-avatar-colors-4{background-color:var(--sky-category-color-orange)}.sky-avatar-colors-5{background-color:var(--sky-category-color-blue)}.sky-avatar-colors-6{background-color:var(--sky-category-color-yellow)}.sky-avatar-colors-7{background-color:var(--sky-category-color-red)}.sky-avatar-wrapper{height:var(--sky-override-avatar-wrapper-height, var(--sky-size-avatar-l));width:var(--sky-override-avatar-wrapper-width, var(--sky-size-avatar-l));background-color:var(--sky-override-avatar-wrapper-background-color, var(--sky-color-background-thumbnail_matte));padding:var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l));border:var(--sky-override-avatar-wrapper-border, none);border-radius:var(--sky-override-avatar-wrapper-border-radius, var(--sky-border-radius-round));overflow:hidden;position:relative;top:var(--sky-override-avatar-wrapper-top, 0);left:var(--sky-override-avatar-wrapper-left, 0)}.sky-avatar-image,.sky-avatar-initials{height:var(--sky-override-avatar-initials-height, calc(var(--sky-size-avatar-l) - var(--sky-space-inset-thumbnail_matte-l) * 2));width:var(--sky-override-avatar-initials-width, calc(var(--sky-size-avatar-l) - var(--sky-space-inset-thumbnail_matte-l) * 2));background-position:50%;background-size:cover;border-radius:var(--sky-override-avatar-initials-border-radius, var(--sky-border-radius-round));display:flex;align-items:center;justify-content:center}.sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size, initial)}.sky-avatar-initials-inner{color:var(--sky-text-color-default);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-avatar-wrapper-size-medium{height:var(--sky-override-avatar-wrapper-height-md, var(--sky-size-avatar-m));width:var(--sky-override-avatar-wrapper-width-md, var(--sky-size-avatar-m));padding:var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m))}.sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-avatar-wrapper-size-medium .sky-avatar-initials{height:var(--sky-override-avatar-initials-height-md, calc(var(--sky-size-avatar-m) - var(--sky-space-inset-thumbnail_matte-m) * 2));width:var(--sky-override-avatar-initials-width-md, calc(var(--sky-size-avatar-m) - var(--sky-space-inset-thumbnail_matte-m) * 2))}.sky-avatar-wrapper-size-medium .sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size-md, initial)}.sky-avatar-wrapper-size-small{height:var(--sky-override-avatar-wrapper-height-sm, var(--sky-size-avatar-s));width:var(--sky-override-avatar-wrapper-width-sm, var(--sky-size-avatar-s));padding:var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s))}.sky-avatar-wrapper-size-small .sky-avatar-image,.sky-avatar-wrapper-size-small .sky-avatar-initials{height:var(--sky-override-avatar-initials-height-sm, calc(var(--sky-size-avatar-s) - var(--sky-space-inset-thumbnail_matte-s) * 2));width:var(--sky-override-avatar-initials-width-sm, calc(var(--sky-size-avatar-s) - var(--sky-space-inset-thumbnail_matte-s) * 2))}.sky-avatar-wrapper-size-small .sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size-sm, initial)}.sky-file-drop .sky-avatar-wrapper{cursor:pointer}.sky-file-drop-accept .sky-avatar-wrapper,.sky-file-drop-reject .sky-avatar-wrapper{border-style:dashed}.sky-file-drop-accept .sky-avatar-wrapper{border-color:var(--sky-override-avatar-wrapper-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-reject .sky-avatar-wrapper{border-color:var(--sky-override-avatar-wrapper-drop-reject-border-color, var(--sky-color-border-danger))}.sky-file-drop-accept .sky-avatar-wrapper,.sky-file-drop-reject .sky-avatar-wrapper{border-width:var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}.sky-file-drop-accept .sky-avatar-wrapper-size-medium,.sky-file-drop-reject .sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}.sky-file-drop-accept .sky-avatar-wrapper-size-small,.sky-file-drop-reject .sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}sky-file-drop:hover .sky-avatar-wrapper{border:var(--sky-override-avatar-wrapper-drop-border-hover, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-border-width-input-hover))}sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-border-width-input-hover))}sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-border-width-input-hover))}sky-file-drop:active .sky-avatar-wrapper,sky-file-drop:focus-within .sky-avatar-wrapper{border:var(--sky-override-avatar-wrapper-drop-border-active, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-border-width-input-active))}sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-medium,sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-border-width-input-active))}sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-small,sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-border-width-input-active))}sky-file-drop:focus-within:not(:active) .sky-avatar-wrapper{box-shadow:var(--sky-override-avatar-wrapper-drop-box-shadow-focus, none)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SkyI18nModule }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None }); }
190
190
  }
191
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyAvatarInnerComponent, decorators: [{
192
192
  type: Component,
193
193
  args: [{ selector: 'sky-avatar-inner', providers: [SkyAvatarAdapterService], encapsulation: ViewEncapsulation.None, imports: [NgClass, SkyI18nModule, SkyThemeModule], 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 @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", styles: [".sky-avatar:not(.sky-theme-modern *){--sky-override-avatar-initials-border-radius: initial;--sky-override-avatar-initials-font-size: 50px;--sky-override-avatar-initials-font-size-md: 32.5px;--sky-override-avatar-initials-font-size-sm: 16px;--sky-override-avatar-initials-height: 100px;--sky-override-avatar-initials-height-md: 65px;--sky-override-avatar-initials-height-sm: 32px;--sky-override-avatar-initials-width: 100px;--sky-override-avatar-initials-width-md: 65px;--sky-override-avatar-initials-width-sm: 32px;--sky-override-avatar-wrapper-background-color: transparent;--sky-override-avatar-wrapper-border: solid 2px transparent;--sky-override-avatar-wrapper-border-radius: 50%;--sky-override-avatar-wrapper-drop-accept-border-color: #72bf44;--sky-override-avatar-wrapper-drop-border-width: 2px;--sky-override-avatar-wrapper-drop-border-active: solid 2px transparent;--sky-override-avatar-wrapper-drop-border-hover: solid 2px transparent;--sky-override-avatar-wrapper-drop-box-shadow-focus: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-avatar-wrapper-drop-reject-border-color: #ef4044;--sky-override-avatar-wrapper-height: 104px;--sky-override-avatar-wrapper-height-md: 69px;--sky-override-avatar-wrapper-height-sm: 36px;--sky-override-avatar-wrapper-left: -2px;--sky-override-avatar-wrapper-padding: 0;--sky-override-avatar-wrapper-padding-md: 0;--sky-override-avatar-wrapper-padding-sm: 0;--sky-override-avatar-wrapper-top: -2px;--sky-override-avatar-wrapper-width: 104px;--sky-override-avatar-wrapper-width-md: 69px;--sky-override-avatar-wrapper-width-sm: 36px}.sky-avatar-colors-1{background-color:var(--sky-category-color-green)}.sky-avatar-colors-2{background-color:var(--sky-category-color-teal)}.sky-avatar-colors-3{background-color:var(--sky-category-color-purple)}.sky-avatar-colors-4{background-color:var(--sky-category-color-orange)}.sky-avatar-colors-5{background-color:var(--sky-category-color-blue)}.sky-avatar-colors-6{background-color:var(--sky-category-color-yellow)}.sky-avatar-colors-7{background-color:var(--sky-category-color-red)}.sky-avatar-wrapper{height:var(--sky-override-avatar-wrapper-height, var(--sky-size-avatar-l));width:var(--sky-override-avatar-wrapper-width, var(--sky-size-avatar-l));background-color:var(--sky-override-avatar-wrapper-background-color, var(--sky-color-background-thumbnail_matte));padding:var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l));border:var(--sky-override-avatar-wrapper-border, none);border-radius:var(--sky-override-avatar-wrapper-border-radius, var(--sky-border-radius-round));overflow:hidden;position:relative;top:var(--sky-override-avatar-wrapper-top, 0);left:var(--sky-override-avatar-wrapper-left, 0)}.sky-avatar-image,.sky-avatar-initials{height:var(--sky-override-avatar-initials-height, calc(var(--sky-size-avatar-l) - var(--sky-space-inset-thumbnail_matte-l) * 2));width:var(--sky-override-avatar-initials-width, calc(var(--sky-size-avatar-l) - var(--sky-space-inset-thumbnail_matte-l) * 2));background-position:50%;background-size:cover;border-radius:var(--sky-override-avatar-initials-border-radius, var(--sky-border-radius-round));display:flex;align-items:center;justify-content:center}.sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size, initial)}.sky-avatar-initials-inner{color:var(--sky-text-color-default);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sky-avatar-wrapper-size-medium{height:var(--sky-override-avatar-wrapper-height-md, var(--sky-size-avatar-m));width:var(--sky-override-avatar-wrapper-width-md, var(--sky-size-avatar-m));padding:var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m))}.sky-avatar-wrapper-size-medium .sky-avatar-image,.sky-avatar-wrapper-size-medium .sky-avatar-initials{height:var(--sky-override-avatar-initials-height-md, calc(var(--sky-size-avatar-m) - var(--sky-space-inset-thumbnail_matte-m) * 2));width:var(--sky-override-avatar-initials-width-md, calc(var(--sky-size-avatar-m) - var(--sky-space-inset-thumbnail_matte-m) * 2))}.sky-avatar-wrapper-size-medium .sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size-md, initial)}.sky-avatar-wrapper-size-small{height:var(--sky-override-avatar-wrapper-height-sm, var(--sky-size-avatar-s));width:var(--sky-override-avatar-wrapper-width-sm, var(--sky-size-avatar-s));padding:var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s))}.sky-avatar-wrapper-size-small .sky-avatar-image,.sky-avatar-wrapper-size-small .sky-avatar-initials{height:var(--sky-override-avatar-initials-height-sm, calc(var(--sky-size-avatar-s) - var(--sky-space-inset-thumbnail_matte-s) * 2));width:var(--sky-override-avatar-initials-width-sm, calc(var(--sky-size-avatar-s) - var(--sky-space-inset-thumbnail_matte-s) * 2))}.sky-avatar-wrapper-size-small .sky-avatar-initials{font-size:var(--sky-override-avatar-initials-font-size-sm, initial)}.sky-file-drop .sky-avatar-wrapper{cursor:pointer}.sky-file-drop-accept .sky-avatar-wrapper,.sky-file-drop-reject .sky-avatar-wrapper{border-style:dashed}.sky-file-drop-accept .sky-avatar-wrapper{border-color:var(--sky-override-avatar-wrapper-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-reject .sky-avatar-wrapper{border-color:var(--sky-override-avatar-wrapper-drop-reject-border-color, var(--sky-color-border-danger))}.sky-file-drop-accept .sky-avatar-wrapper,.sky-file-drop-reject .sky-avatar-wrapper{border-width:var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}.sky-file-drop-accept .sky-avatar-wrapper-size-medium,.sky-file-drop-reject .sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}.sky-file-drop-accept .sky-avatar-wrapper-size-small,.sky-file-drop-reject .sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-override-avatar-wrapper-drop-border-width, var(--sky-border-width-input-hover)))}sky-file-drop:hover .sky-avatar-wrapper{border:var(--sky-override-avatar-wrapper-drop-border-hover, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-border-width-input-hover))}sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-border-width-input-hover))}sky-file-drop:hover .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-border-width-input-hover))}sky-file-drop:active .sky-avatar-wrapper,sky-file-drop:focus-within .sky-avatar-wrapper{border:var(--sky-override-avatar-wrapper-drop-border-active, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active));padding:calc(var(--sky-override-avatar-wrapper-padding, var(--sky-space-inset-thumbnail_matte-l)) - var(--sky-border-width-input-active))}sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-medium,sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-medium{padding:calc(var(--sky-override-avatar-wrapper-padding-md, var(--sky-space-inset-thumbnail_matte-m)) - var(--sky-border-width-input-active))}sky-file-drop:active .sky-avatar-wrapper.sky-avatar-wrapper-size-small,sky-file-drop:focus-within .sky-avatar-wrapper.sky-avatar-wrapper-size-small{padding:calc(var(--sky-override-avatar-wrapper-padding-sm, var(--sky-space-inset-thumbnail_matte-s)) - var(--sky-border-width-input-active))}sky-file-drop:focus-within:not(:active) .sky-avatar-wrapper{box-shadow:var(--sky-override-avatar-wrapper-drop-box-shadow-focus, none)}\n"] }]
194
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SkyAvatarAdapterService }], propDecorators: { src: [{
194
+ }], propDecorators: { src: [{
195
195
  type: Input
196
196
  }], name: [{
197
197
  type: Input
@@ -248,7 +248,7 @@ class SkyAvatarComponent {
248
248
  #fileSizePipe;
249
249
  #resourcesService;
250
250
  #defaultInputProvider;
251
- constructor(errorService, fileSizePipe, resourcesService) {
251
+ constructor() {
252
252
  /**
253
253
  * The maximum file size for the image in bytes.
254
254
  * @default 512000 bytes
@@ -259,10 +259,12 @@ class SkyAvatarComponent {
259
259
  */
260
260
  this.avatarChanged = new EventEmitter();
261
261
  this.#_canChange = false;
262
- this.#defaultInputProvider = inject(SkyDefaultInputProvider, { optional: true });
263
- this.#errorService = errorService;
264
- this.#fileSizePipe = fileSizePipe;
265
- this.#resourcesService = resourcesService;
262
+ this.#errorService = inject(SkyErrorModalService);
263
+ this.#fileSizePipe = inject(SkyFileSizePipe);
264
+ this.#resourcesService = inject(SkyLibResourcesService);
265
+ this.#defaultInputProvider = inject(SkyDefaultInputProvider, {
266
+ optional: true,
267
+ });
266
268
  this.sizeDefault = this.#defaultInputProvider?.getValue('avatar', 'size');
267
269
  }
268
270
  photoDrop(result) {
@@ -303,8 +305,8 @@ class SkyAvatarComponent {
303
305
  // TODO: Need to implement the async `getString` method in a breaking change.
304
306
  return this.#resourcesService.getStringForLocale({ locale: 'en-US' }, key, ...args);
305
307
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyAvatarComponent, deps: [{ token: i1.SkyErrorModalService }, { token: i2$1.SkyFileSizePipe }, { token: i3.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SkyAvatarComponent, isStandalone: true, selector: "sky-avatar", inputs: { canChange: "canChange", name: "name", src: "src", maxFileSize: "maxFileSize", size: "size" }, outputs: { avatarChanged: "avatarChanged" }, providers: [SkyFileSizePipe], ngImport: i0, template: "<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", styles: [".sky-avatar:not(.sky-theme-modern *){--sky-override-avatar-file-drop-focus-outline: auto}.sky-avatar .sky-file-drop-col{flex-basis:initial}.sky-avatar .sky-file-drop:focus{outline:var(--sky-override-avatar-file-drop-focus-outline, none)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SkyI18nModule }, { kind: "ngmodule", type: SkyFileDropModule }, { kind: "component", type: i2$1.λ8, selector: "sky-file-drop", inputs: ["fileUploadAriaLabel", "linkUploadAriaLabel", "linkUploadHintText", "minFileSize", "maxFileSize", "multiple", "validateFn", "acceptedTypes", "acceptedTypesErrorMessage", "noClick", "allowLinks", "labelText", "labelHidden", "hintText", "required", "helpPopoverContent", "helpPopoverTitle", "stacked", "helpKey"], outputs: ["filesChanged", "linkInputBlur", "linkChanged"] }, { kind: "ngmodule", type: SkyAvatarResourcesModule }, { kind: "component", type: SkyAvatarInnerComponent, selector: "sky-avatar-inner", inputs: ["src", "name", "size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None }); }
308
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
309
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SkyAvatarComponent, isStandalone: true, selector: "sky-avatar", inputs: { canChange: "canChange", name: "name", src: "src", maxFileSize: "maxFileSize", size: "size" }, outputs: { avatarChanged: "avatarChanged" }, providers: [SkyFileSizePipe], ngImport: i0, template: "<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", styles: [".sky-avatar:not(.sky-theme-modern *){--sky-override-avatar-file-drop-focus-outline: auto}.sky-avatar .sky-file-drop-col{flex-basis:initial}.sky-avatar .sky-file-drop:focus{outline:var(--sky-override-avatar-file-drop-focus-outline, none)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SkyI18nModule }, { kind: "ngmodule", type: SkyFileDropModule }, { kind: "component", type: i1$1.λ8, selector: "sky-file-drop", inputs: ["fileUploadAriaLabel", "linkUploadAriaLabel", "linkUploadHintText", "minFileSize", "maxFileSize", "multiple", "validateFn", "acceptedTypes", "acceptedTypesErrorMessage", "noClick", "allowLinks", "labelText", "labelHidden", "hintText", "required", "helpPopoverContent", "helpPopoverTitle", "stacked", "helpKey"], outputs: ["filesChanged", "linkInputBlur", "linkChanged"] }, { kind: "ngmodule", type: SkyAvatarResourcesModule }, { kind: "component", type: SkyAvatarInnerComponent, selector: "sky-avatar-inner", inputs: ["src", "name", "size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None }); }
308
310
  }
309
311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyAvatarComponent, decorators: [{
310
312
  type: Component,
@@ -316,7 +318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
316
318
  SkyAvatarResourcesModule,
317
319
  SkyAvatarInnerComponent,
318
320
  ], template: "<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", styles: [".sky-avatar:not(.sky-theme-modern *){--sky-override-avatar-file-drop-focus-outline: auto}.sky-avatar .sky-file-drop-col{flex-basis:initial}.sky-avatar .sky-file-drop:focus{outline:var(--sky-override-avatar-file-drop-focus-outline, none)}\n"] }]
319
- }], ctorParameters: () => [{ type: i1.SkyErrorModalService }, { type: i2$1.SkyFileSizePipe }, { type: i3.SkyLibResourcesService }], propDecorators: { canChange: [{
321
+ }], ctorParameters: () => [], propDecorators: { canChange: [{
320
322
  type: Input
321
323
  }], name: [{
322
324
  type: Input
@@ -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 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 'FR-CA': {\n skyux_avatar_error_not_image_description: {\n message: 'Veuillez choisir un fichier qui soit une image valide.',\n },\n skyux_avatar_error_not_image_title: {\n message: 'Le fichier n’est pas une image.',\n },\n skyux_avatar_error_too_large_description: {\n message: 'Veuillez choisir une image de moins de {0}.',\n },\n skyux_avatar_error_too_large_title: {\n message: 'Le fichier est trop gros.',\n },\n skyux_avatar_errormodal_ok: { message: 'OK' },\n skyux_avatar_inner_description: { message: 'Photo de profil de {0}' },\n skyux_avatar_upload_change_aria_label: {\n message:\n 'Modifier la photo de profil de {0}. Faites glisser un fichier ici ou cliquez pour naviguer.',\n },\n skyux_avatar_upload_new_aria_label: {\n message:\n 'Ajoutez une photo de profil pour {0}. Faites glisser un fichier ici ou cliquez pour naviguer.',\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): void {\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(): void {\n this.#revokeBlobUrl();\n }\n\n #createBlobUrl(src: Blob | File): string {\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(): void {\n if (this.#blobUrl) {\n URL.revokeObjectURL(this.#blobUrl);\n this.#blobUrl = undefined;\n }\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeModule } from '@skyux/theme';\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 imports: [NgClass, SkyI18nModule, SkyThemeModule],\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 { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\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 {\n SkyFileDropChange,\n SkyFileDropModule,\n SkyFileItem,\n SkyFileSizePipe,\n} from '@skyux/forms';\nimport { SkyI18nModule, SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyAvatarResourcesModule } from '../shared/sky-avatar-resources.module';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\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 providers: [SkyFileSizePipe],\n imports: [\n AsyncPipe,\n NgTemplateOutlet,\n SkyI18nModule,\n SkyFileDropModule,\n SkyAvatarResourcesModule,\n SkyAvatarInnerComponent,\n ],\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 { NgModule } from '@angular/core';\nimport { SkyFileSizePipe } from '@skyux/forms';\n\nimport { SkyAvatarComponent } from './avatar.component';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\n\n@NgModule({\n imports: [SkyAvatarInnerComponent, SkyAvatarComponent],\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"],"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 'FR-CA': {\n skyux_avatar_error_not_image_description: {\n message: 'Veuillez choisir un fichier qui soit une image valide.',\n },\n skyux_avatar_error_not_image_title: {\n message: 'Le fichier n’est pas une image.',\n },\n skyux_avatar_error_too_large_description: {\n message: 'Veuillez choisir une image de moins de {0}.',\n },\n skyux_avatar_error_too_large_title: {\n message: 'Le fichier est trop gros.',\n },\n skyux_avatar_errormodal_ok: { message: 'OK' },\n skyux_avatar_inner_description: { message: 'Photo de profil de {0}' },\n skyux_avatar_upload_change_aria_label: {\n message:\n 'Modifier la photo de profil de {0}. Faites glisser un fichier ici ou cliquez pour naviguer.',\n },\n skyux_avatar_upload_new_aria_label: {\n message:\n 'Ajoutez une photo de profil pour {0}. Faites glisser un fichier ici ou cliquez pour naviguer.',\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): void {\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(): void {\n this.#revokeBlobUrl();\n }\n\n #createBlobUrl(src: Blob | File): string {\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(): void {\n if (this.#blobUrl) {\n URL.revokeObjectURL(this.#blobUrl);\n this.#blobUrl = undefined;\n }\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeModule } from '@skyux/theme';\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 imports: [NgClass, SkyI18nModule, SkyThemeModule],\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 readonly #elementRef = inject(ElementRef);\n readonly #adapter = inject(SkyAvatarAdapterService);\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 { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\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 {\n SkyFileDropChange,\n SkyFileDropModule,\n SkyFileItem,\n SkyFileSizePipe,\n} from '@skyux/forms';\nimport { SkyI18nModule, SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyAvatarResourcesModule } from '../shared/sky-avatar-resources.module';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\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 providers: [SkyFileSizePipe],\n imports: [\n AsyncPipe,\n NgTemplateOutlet,\n SkyI18nModule,\n SkyFileDropModule,\n SkyAvatarResourcesModule,\n SkyAvatarInnerComponent,\n ],\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 readonly #errorService = inject(SkyErrorModalService);\n readonly #fileSizePipe = inject(SkyFileSizePipe);\n readonly #resourcesService = inject(SkyLibResourcesService);\n readonly #defaultInputProvider = inject(SkyDefaultInputProvider, {\n optional: true,\n });\n\n constructor() {\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 { NgModule } from '@angular/core';\nimport { SkyFileSizePipe } from '@skyux/forms';\n\nimport { SkyAvatarComponent } from './avatar.component';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\n\n@NgModule({\n imports: [SkyAvatarInnerComponent, SkyAvatarComponent],\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"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyux/avatar",
3
- "version": "14.3.9",
3
+ "version": "14.3.11",
4
4
  "author": "Blackbaud, Inc.",
5
5
  "keywords": [
6
6
  "blackbaud",
@@ -20,12 +20,12 @@
20
20
  "@angular/common": "^21.2.0",
21
21
  "@angular/core": "^21.2.0",
22
22
  "@angular/platform-browser": "^21.2.0",
23
- "@skyux-sdk/testing": "14.3.9",
24
- "@skyux/core": "14.3.9",
25
- "@skyux/errors": "14.3.9",
26
- "@skyux/forms": "14.3.9",
27
- "@skyux/i18n": "14.3.9",
28
- "@skyux/theme": "14.3.9"
23
+ "@skyux-sdk/testing": "14.3.11",
24
+ "@skyux/core": "14.3.11",
25
+ "@skyux/errors": "14.3.11",
26
+ "@skyux/forms": "14.3.11",
27
+ "@skyux/i18n": "14.3.11",
28
+ "@skyux/theme": "14.3.11"
29
29
  },
30
30
  "dependencies": {
31
31
  "tslib": "^2.8.1"
@@ -1,25 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ElementRef, AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';
3
- import { SkyErrorModalService } from '@skyux/errors';
4
- import { SkyFileItem, SkyFileSizePipe, SkyFileDropChange } from '@skyux/forms';
5
- import { SkyLibResourcesService } from '@skyux/i18n';
2
+ import { AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';
3
+ import { SkyFileItem, SkyFileDropChange } from '@skyux/forms';
6
4
  import { Observable } from 'rxjs';
7
5
 
8
6
  type SkyAvatarSize = 'large' | 'medium' | 'small';
9
7
 
10
8
  type SkyAvatarSrc = string | Blob | File;
11
9
 
12
- /**
13
- * @internal
14
- */
15
- declare class SkyAvatarAdapterService {
16
- #private;
17
- updateImage(elementRef: ElementRef, src: SkyAvatarSrc): void;
18
- destroy(): void;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<SkyAvatarAdapterService, never>;
20
- static ɵprov: i0.ɵɵInjectableDeclaration<SkyAvatarAdapterService>;
21
- }
22
-
23
10
  /**
24
11
  * @internal
25
12
  */
@@ -30,7 +17,6 @@ declare class SkyAvatarInnerComponent implements AfterViewInit, OnDestroy {
30
17
  get name(): string | undefined;
31
18
  set name(value: string | undefined);
32
19
  size: SkyAvatarSize | undefined;
33
- constructor(elementRef: ElementRef, adapter: SkyAvatarAdapterService);
34
20
  get initials(): string | undefined;
35
21
  get colorIndex(): number;
36
22
  ngAfterViewInit(): void;
@@ -82,7 +68,7 @@ declare class SkyAvatarComponent {
82
68
  */
83
69
  avatarChanged: EventEmitter<SkyFileItem>;
84
70
  protected sizeDefault: Observable<SkyAvatarSize> | undefined;
85
- constructor(errorService: SkyErrorModalService, fileSizePipe: SkyFileSizePipe, resourcesService: SkyLibResourcesService);
71
+ constructor();
86
72
  photoDrop(result: SkyFileDropChange): void;
87
73
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAvatarComponent, never>;
88
74
  static ɵcmp: i0.ɵɵComponentDeclaration<SkyAvatarComponent, "sky-avatar", never, { "canChange": { "alias": "canChange"; "required": false; }; "name": { "alias": "name"; "required": false; }; "src": { "alias": "src"; "required": false; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "avatarChanged": "avatarChanged"; }, never, never, true, never>;