ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
133 lines • 15 kB
JavaScript
import { Component, Input, HostBinding, ElementRef, Renderer2 } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class BadgeComponent {
set size(v) {
this._size = v;
this.setCls();
}
get text() {
return this._text;
}
set text(v) {
this._text = v;
this.setCls();
}
set corner(v) {
this._corner = v;
this.setCls();
}
get dot() {
return this._dot;
}
set dot(v) {
this._dot = v;
if (this._dot) {
this._text = '';
}
this.setCls();
}
set overflowCount(v) {
this._overflowCount = v;
}
set hot(v) {
this._hot = v;
this.setCls();
}
set setStyle(v) {
this.style = v;
}
set className(v) {
this._setClass = v;
const clsArr = this._setClass.split(' ');
clsArr.forEach(cls => {
this.render.addClass(this._ref.nativeElement, cls);
});
}
constructor(_ref, render) {
this._ref = _ref;
this.render = render;
this.prefixCls = 'am-badge';
this.scrollNumberCls = {};
this.style = {};
this._size = 'small';
this._dot = false;
this._hot = false;
this._corner = false;
this._children = false;
this._overflowCount = 99;
this.clsBadge = true;
this.clsBadgeWrp = !this._children;
this.clsBadgeCornerWrp = this._corner;
this.clsBadgeHot = !!this._hot;
this.clsBadgeCornerWrpLg = this._corner && this._size === 'large';
}
setCls() {
this.scrollNumberCls = {
[`${this.prefixCls}-dot`]: this._dot,
[`${this.prefixCls}-dot-large`]: this._dot && this._size === 'large',
[`${this.prefixCls}-text`]: !this._dot && !this._corner,
[`${this.prefixCls}-corner`]: this._corner,
[`${this.prefixCls}-corner-large`]: this._corner && this._size === 'large'
};
this.clsBadgeWrp = !this._children;
this.clsBadgeCornerWrp = this._corner;
this.clsBadgeHot = !!this._hot;
this.clsBadgeCornerWrpLg = this._corner && this._size === 'large';
}
ngOnChanges() {
if (typeof this._text === 'number' && this._text > this._overflowCount) {
this._text = this._overflowCount + '+';
}
}
ngOnInit() {
this.setCls();
}
ngAfterViewInit() {
setTimeout(() => {
if (this._ref.nativeElement.children.length > 1 ||
(this._ref.nativeElement.children.length === 1 && !this.dot && !this.text)) {
this._children = true;
this.setCls();
}
}, 10);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BadgeComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: BadgeComponent, selector: "Badge, nzm-badge", inputs: { size: "size", text: "text", corner: "corner", dot: "dot", overflowCount: "overflowCount", hot: "hot", setStyle: "setStyle", className: "className" }, host: { properties: { "class.am-badge": "this.clsBadge", "class.am-badge-not-a-wrapper": "this.clsBadgeWrp", "class.am-badge-corner-wrapper": "this.clsBadgeCornerWrp", "class.am-badge-hot": "this.clsBadgeHot", "class.am-badge-corner-wrapper-large": "this.clsBadgeCornerWrpLg" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n<sup *ngIf=\"dot || text\" [ngClass]=\"scrollNumberCls\" [ngStyle]=\"style\">\n <span>{{ text }}</span>\n</sup>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BadgeComponent, decorators: [{
type: Component,
args: [{ selector: 'Badge, nzm-badge', template: "<ng-content></ng-content>\n<sup *ngIf=\"dot || text\" [ngClass]=\"scrollNumberCls\" [ngStyle]=\"style\">\n <span>{{ text }}</span>\n</sup>\n" }]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { size: [{
type: Input
}], text: [{
type: Input
}], corner: [{
type: Input
}], dot: [{
type: Input
}], overflowCount: [{
type: Input
}], hot: [{
type: Input
}], setStyle: [{
type: Input
}], className: [{
type: Input
}], clsBadge: [{
type: HostBinding,
args: ['class.am-badge']
}], clsBadgeWrp: [{
type: HostBinding,
args: ['class.am-badge-not-a-wrapper']
}], clsBadgeCornerWrp: [{
type: HostBinding,
args: ['class.am-badge-corner-wrapper']
}], clsBadgeHot: [{
type: HostBinding,
args: ['class.am-badge-hot']
}], clsBadgeCornerWrpLg: [{
type: HostBinding,
args: ['class.am-badge-corner-wrapper-large']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9iYWRnZS9iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTXZILE1BQU0sT0FBTyxjQUFjO0lBY3pCLElBQ0ksSUFBSSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBUztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFDSSxNQUFNLENBQUMsQ0FBVTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQ0ksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsQ0FBVTtRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUNJLGFBQWEs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O2dCQUdqQyxtQkFBbUI7c0JBRGxCLFdBQVc7dUJBQUMscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBIb3N0QmluZGluZywgT25DaGFuZ2VzLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnQmFkZ2UsIG56bS1iYWRnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYWRnZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQmFkZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByZWZpeENsczogc3RyaW5nID0gJ2FtLWJhZGdlJztcbiAgc2Nyb2xsTnVtYmVyQ2xzOiBvYmplY3QgPSB7fTtcbiAgc3R5bGU6IG9iamVjdCA9IHt9O1xuXG4gIHByaXZhdGUgX3RleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2V0Q2xhc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nID0gJ3NtYWxsJztcbiAgcHJpdmF0ZSBfZG90OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2hvdDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jb3JuZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2hpbGRyZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfb3ZlcmZsb3dDb3VudDogbnVtYmVyID0gOTk7XG5cbiAgQElucHV0KClcbiAgc2V0IHNpemUodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2l6ZSA9IHY7XG4gICAgdGhpcy5zZXRDbHMoKTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgdGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZXh0O1xuICB9XG4gIHNldCB0ZXh0KHY6IHN0cmluZykge1xuICAgIHRoaXMuX3RleHQgPSB2O1xuICAgIHRoaXMuc2V0Q2xzKCk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGNvcm5lcih2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fY29ybmVyID0gdjtcbiAgICB0aGlzLnNldENscygpO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBkb3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvdDtcbiAgfVxuICBzZXQgZG90KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kb3QgPSB2O1xuICAgIGlmICh0aGlzLl9kb3QpIHtcbiAgICAgIHRoaXMuX3RleHQgPSAnJztcbiAgICB9XG4gICAgdGhpcy5zZXRDbHMoKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgb3ZlcmZsb3dDb3VudCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl9vdmVyZmxvd0NvdW50ID0gdjtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaG90KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ob3QgPSB2O1xuICAgIHRoaXMuc2V0Q2xzKCk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHNldFN0eWxlKHY6IG9iamVjdCkge1xuICAgIHRoaXMuc3R5bGUgPSB2O1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc05hbWUodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2V0Q2xhc3MgPSB2O1xuICAgIGNvbnN0IGNsc0FyciA9IHRoaXMuX3NldENsYXNzLnNwbGl0KCcgJyk7XG4gICAgY2xzQXJyLmZvckVhY2goY2xzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyLmFkZENsYXNzKHRoaXMuX3JlZi5uYXRpdmVFbGVtZW50LCBjbHMpO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1iYWRnZScpXG4gIGNsc0JhZGdlOiBib29sZWFuID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1iYWRnZS1ub3QtYS13cmFwcGVyJylcbiAgY2xzQmFkZ2VXcnA6IGJvb2xlYW4gPSAhdGhpcy5fY2hpbGRyZW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYW0tYmFkZ2UtY29ybmVyLXdyYXBwZXInKVxuICBjbHNCYWRnZUNvcm5lcldycDogYm9vbGVhbiA9IHRoaXMuX2Nvcm5lcjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1iYWRnZS1ob3QnKVxuICBjbHNCYWRnZUhvdDogYm9vbGVhbiA9ICEhdGhpcy5faG90O1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLWJhZGdlLWNvcm5lci13cmFwcGVyLWxhcmdlJylcbiAgY2xzQmFkZ2VDb3JuZXJXcnBMZzogYm9vbGVhbiA9IHRoaXMuX2Nvcm5lciAmJiB0aGlzLl9zaXplID09PSAnbGFyZ2UnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXI6IFJlbmRlcmVyMikge31cblxuICBzZXRDbHMoKSB7XG4gICAgdGhpcy5zY3JvbGxOdW1iZXJDbHMgPSB7XG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdGBdOiB0aGlzLl9kb3QsXG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdC1sYXJnZWBdOiB0aGlzLl9kb3QgJiYgdGhpcy5fc2l6ZSA9PT0gJ2xhcmdlJyxcbiAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tdGV4dGBdOiAhdGhpcy5fZG90ICYmICF0aGlzLl9jb3JuZXIsXG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWNvcm5lcmBdOiB0aGlzLl9jb3JuZXIsXG4gICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWNvcm5lci1sYXJnZWBdOiB0aGlzLl9jb3JuZXIgJiYgdGhpcy5fc2l6ZSA9PT0gJ2xhcmdlJ1xuICAgIH07XG4gICAgdGhpcy5jbHNCYWRnZVdycCA9ICF0aGlzLl9jaGlsZHJlbjtcbiAgICB0aGlzLmNsc0JhZGdlQ29ybmVyV3JwID0gdGhpcy5fY29ybmVyO1xuICAgIHRoaXMuY2xzQmFkZ2VIb3QgPSAhIXRoaXMuX2hvdDtcbiAgICB0aGlzLmNsc0JhZGdlQ29ybmVyV3JwTGcgPSB0aGlzLl9jb3JuZXIgJiYgdGhpcy5fc2l6ZSA9PT0gJ2xhcmdlJztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fdGV4dCA9PT0gJ251bWJlcicgJiYgdGhpcy5fdGV4dCA+IHRoaXMuX292ZXJmbG93Q291bnQpIHtcbiAgICAgIHRoaXMuX3RleHQgPSB0aGlzLl9vdmVyZmxvd0NvdW50ICsgJysnO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0Q2xzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3JlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDEgfHxcbiAgICAgICAgKHRoaXMuX3JlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5kb3QgJiYgIXRoaXMudGV4dClcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9jaGlsZHJlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0Q2xzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48c3VwICpuZ0lmPVwiZG90IHx8IHRleHRcIiBbbmdDbGFzc109XCJzY3JvbGxOdW1iZXJDbHNcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICA8c3Bhbj57eyB0ZXh0IH19PC9zcGFuPlxuPC9zdXA+XG4iXX0=