ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
218 lines (212 loc) • 9.19 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/platform'), require('@angular/core'), require('ng-zorro-antd/core'), require('@angular/common'), require('ng-zorro-antd/icon')) :
typeof define === 'function' && define.amd ? define('ng-zorro-antd/avatar', ['exports', '@angular/cdk/platform', '@angular/core', 'ng-zorro-antd/core', '@angular/common', 'ng-zorro-antd/icon'], factory) :
(global = global || self, factory((global['ng-zorro-antd'] = global['ng-zorro-antd'] || {}, global['ng-zorro-antd'].avatar = {}), global.ng.cdk.platform, global.ng.core, global['ng-zorro-antd'].core, global.ng.common, global['ng-zorro-antd'].icon));
}(this, function (exports, platform, core, core$1, common, icon) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NzAvatarComponent = /** @class */ (function () {
function NzAvatarComponent(elementRef, cd, updateHostClassService, renderer, platform) {
this.elementRef = elementRef;
this.cd = cd;
this.updateHostClassService = updateHostClassService;
this.renderer = renderer;
this.platform = platform;
this.nzShape = 'circle';
this.nzSize = 'default';
this.oldAPIIcon = true; // Make the user defined icon compatible to old API. Should be removed in 2.0.
// Make the user defined icon compatible to old API. Should be removed in 2.0.
this.hasText = false;
this.hasSrc = true;
this.hasIcon = false;
this.el = this.elementRef.nativeElement;
this.prefixCls = 'ant-avatar';
this.sizeMap = { large: 'lg', small: 'sm' };
}
/**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
NzAvatarComponent.prototype.setClass = /**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
var _a;
/** @type {?} */
var classMap = (_a = {},
_a[(/** @type {?} */ (this)).prefixCls] = true,
_a[(/** @type {?} */ (this)).prefixCls + "-" + (/** @type {?} */ (this)).sizeMap[(/** @type {?} */ (this)).nzSize]] = (/** @type {?} */ (this)).sizeMap[(/** @type {?} */ (this)).nzSize],
_a[(/** @type {?} */ (this)).prefixCls + "-" + (/** @type {?} */ (this)).nzShape] = (/** @type {?} */ (this)).nzShape,
_a[(/** @type {?} */ (this)).prefixCls + "-icon"] = (/** @type {?} */ (this)).nzIcon,
_a[(/** @type {?} */ (this)).prefixCls + "-image"] = (/** @type {?} */ (this)).hasSrc // downgrade after image error
,
_a);
(/** @type {?} */ (this)).updateHostClassService.updateHostClass((/** @type {?} */ (this)).el, classMap);
(/** @type {?} */ (this)).cd.detectChanges();
return (/** @type {?} */ (this));
};
/**
* @return {?}
*/
NzAvatarComponent.prototype.imgError = /**
* @return {?}
*/
function () {
this.hasSrc = false;
this.hasIcon = false;
this.hasText = false;
if (this.nzIcon) {
this.hasIcon = true;
}
else if (this.nzText) {
this.hasText = true;
}
this.setClass().notifyCalc();
this.setSizeStyle();
};
/**
* @param {?} changes
* @return {?}
*/
NzAvatarComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes.hasOwnProperty('nzIcon') && changes.nzIcon.currentValue) {
this.oldAPIIcon = changes.nzIcon.currentValue.indexOf('anticon') > -1;
}
this.hasText = !this.nzSrc && !!this.nzText;
this.hasIcon = !this.nzSrc && !!this.nzIcon;
this.hasSrc = !!this.nzSrc;
this.setClass().notifyCalc();
this.setSizeStyle();
};
/**
* @private
* @return {?}
*/
NzAvatarComponent.prototype.calcStringSize = /**
* @private
* @return {?}
*/
function () {
if (!this.hasText) {
return;
}
/** @type {?} */
var childrenWidth = this.textEl.nativeElement.offsetWidth;
/** @type {?} */
var avatarWidth = this.el.getBoundingClientRect().width;
/** @type {?} */
var scale = avatarWidth - 8 < childrenWidth ? (avatarWidth - 8) / childrenWidth : 1;
this.textStyles = {
transform: "scale(" + scale + ") translateX(-50%)"
};
if (typeof this.nzSize === 'number') {
Object.assign(this.textStyles, {
lineHeight: this.nzSize + "px"
});
}
this.cd.detectChanges();
};
/**
* @private
* @template THIS
* @this {THIS}
* @return {THIS}
*/
NzAvatarComponent.prototype.notifyCalc = /**
* @private
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
var _this = this;
// If use ngAfterViewChecked, always demands more computations, so......
if ((/** @type {?} */ (this)).platform.isBrowser) {
setTimeout((/**
* @return {?}
*/
function () {
(/** @type {?} */ (_this)).calcStringSize();
}));
}
return (/** @type {?} */ (this));
};
/**
* @private
* @return {?}
*/
NzAvatarComponent.prototype.setSizeStyle = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var size = typeof this.nzSize === 'string' ? this.nzSize : this.nzSize + "px";
this.renderer.setStyle(this.el, 'width', size);
this.renderer.setStyle(this.el, 'height', size);
this.renderer.setStyle(this.el, 'line-height', size);
if (this.hasIcon) {
this.renderer.setStyle(this.el, 'font-size', "calc(" + size + " / 2)");
}
};
NzAvatarComponent.decorators = [
{ type: core.Component, args: [{
selector: 'nz-avatar',
exportAs: 'nzAvatar',
template: "<i nz-icon *ngIf=\"nzIcon && hasIcon\" [type]=\"!oldAPIIcon && nzIcon\" [ngClass]=\"oldAPIIcon && nzIcon\"></i>\n<img *ngIf=\"nzSrc && hasSrc\" [src]=\"nzSrc\" [attr.srcset]=\"nzSrcSet\" [attr.alt]=\"nzAlt\" (error)=\"imgError()\"/>\n<span class=\"ant-avatar-string\" #textEl [ngStyle]=\"textStyles\" *ngIf=\"nzText && hasText\">{{ nzText }}</span>",
providers: [core$1.NzUpdateHostClassService],
preserveWhitespaces: false,
changeDetection: core.ChangeDetectionStrategy.OnPush,
encapsulation: core.ViewEncapsulation.None
}] }
];
/** @nocollapse */
NzAvatarComponent.ctorParameters = function () { return [
{ type: core.ElementRef },
{ type: core.ChangeDetectorRef },
{ type: core$1.NzUpdateHostClassService },
{ type: core.Renderer2 },
{ type: platform.Platform }
]; };
NzAvatarComponent.propDecorators = {
nzShape: [{ type: core.Input }],
nzSize: [{ type: core.Input }],
nzText: [{ type: core.Input }],
nzSrc: [{ type: core.Input }],
nzSrcSet: [{ type: core.Input }],
nzAlt: [{ type: core.Input }],
nzIcon: [{ type: core.Input }],
textEl: [{ type: core.ViewChild, args: ['textEl', { static: false },] }]
};
return NzAvatarComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NzAvatarModule = /** @class */ (function () {
function NzAvatarModule() {
}
NzAvatarModule.decorators = [
{ type: core.NgModule, args: [{
declarations: [NzAvatarComponent],
exports: [NzAvatarComponent],
imports: [common.CommonModule, icon.NzIconModule]
},] }
];
return NzAvatarModule;
}());
exports.NzAvatarComponent = NzAvatarComponent;
exports.NzAvatarModule = NzAvatarModule;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=ng-zorro-antd-avatar.umd.js.map