ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
229 lines • 17.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, ContentChildren, QueryList, HostBinding, Renderer2, ElementRef } from '@angular/core';
import { StepStatusEnum, StepDirectionEnum } from './step/step.component';
import { StepComponent } from './step/step.component';
export class StepsComponent {
/**
* @param {?} _elf
* @param {?} _render
*/
constructor(_elf, _render) {
this._elf = _elf;
this._render = _render;
this.prefixCls = 'am-steps';
this._current = 0;
this._status = StepStatusEnum.PROCESS;
this._direction = StepDirectionEnum.VERTICAL;
this.clsSteps = true;
}
/**
* @param {?} value
* @return {?}
*/
set current(value) {
if (value >= 0) {
this._current = value;
}
}
/**
* @param {?} value
* @return {?}
*/
set size(value) {
this._size = value;
this.setCls();
}
/**
* @param {?} value
* @return {?}
*/
set status(value) {
this._status = value;
if (this.stepItems) {
this.setStepStyle();
}
}
/**
* @param {?} value
* @return {?}
*/
set direction(value) {
this._direction = value;
this.setCls();
}
/**
* @return {?}
*/
setStepStyle() {
/** @type {?} */
const itemCount = this.stepItems.length;
/** @type {?} */
const itemArr = this.stepItems['_results'];
for (let index = 0; index < itemCount; index++) {
/** @type {?} */
const step = itemArr[index];
step.stepNumber = index + 1;
if (index < itemCount - 1 && itemArr[index + 1].status === StepStatusEnum.ERROR) {
step.stepItemCls = step.stepItemCls
? Object.assign(step.stepItemCls, { 'error-tail': true })
: { 'error-tail': true };
}
/** @type {?} */
let icon = step.icon;
if (!step.status) {
if (index === this._current) {
step.status = this._status;
}
else if (index < this._current) {
step.status = StepStatusEnum.FINISH;
}
else {
step.status = StepStatusEnum.WAIT;
}
}
else if (step.status && !icon) {
switch (step.status) {
case StepStatusEnum.FINISH:
icon = 'check-circle-o';
break;
case StepStatusEnum.ERROR:
icon = 'cross-circle-o';
break;
}
}
if (!icon && step.status !== StepStatusEnum.PROCESS) {
if (index < this._current) {
icon = 'check-circle-o';
}
else if (index > this._current) {
icon = 'ellipsis';
step.stepItemCls = step.stepItemCls
? Object.assign(step.stepItemCls, { 'ellipsis-item': true })
: { 'ellipsis-item': true };
}
if ((this._status === StepStatusEnum.ERROR && index === this._current) ||
step.status === StepStatusEnum.ERROR) {
icon = 'cross-circle-o';
}
}
step.icon = icon;
step.iconSize = this._size === 'small' ? (this._status === StepStatusEnum.WAIT ? 'xxs' : 'xs') : 'md';
step.setClass();
}
}
/**
* @return {?}
*/
setCls() {
if (this._direction === StepDirectionEnum.HORIZONTAL) {
this.clsStepsLabelVtl = true;
this.clsStepsHztl = true;
this.clsStepsVtl = false;
}
else if (this._direction === StepDirectionEnum.VERTICAL) {
this.clsStepsVtl = true;
this.clsStepsHztl = false;
}
if (this._size === 'small') {
this.clsStepsSmall = true;
}
else {
this.clsStepsSmall = false;
}
}
/**
* @return {?}
*/
ngOnInit() {
this.setCls();
}
/**
* @return {?}
*/
ngAfterContentInit() {
setTimeout((/**
* @return {?}
*/
() => {
this.setStepStyle();
}), 0);
}
}
StepsComponent.decorators = [
{ type: Component, args: [{
selector: 'Steps,nzm-steps',
template: "<ng-content></ng-content>\n"
}] }
];
/** @nocollapse */
StepsComponent.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
StepsComponent.propDecorators = {
stepItems: [{ type: ContentChildren, args: [StepComponent,] }],
current: [{ type: Input }],
size: [{ type: Input }],
status: [{ type: Input }],
direction: [{ type: Input }],
clsSteps: [{ type: HostBinding, args: ['class.am-steps',] }],
clsStepsSmall: [{ type: HostBinding, args: ['class.am-steps-small',] }],
clsStepsLabelVtl: [{ type: HostBinding, args: ['class.am-steps-label-vertical',] }],
clsStepsVtl: [{ type: HostBinding, args: ['class.am-steps-vertical',] }],
clsStepsHztl: [{ type: HostBinding, args: ['class.am-steps-horizontal',] }]
};
if (false) {
/** @type {?} */
StepsComponent.prototype.prefixCls;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._current;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._size;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._status;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._direction;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._stepsCls;
/** @type {?} */
StepsComponent.prototype.stepItems;
/** @type {?} */
StepsComponent.prototype.clsSteps;
/** @type {?} */
StepsComponent.prototype.clsStepsSmall;
/** @type {?} */
StepsComponent.prototype.clsStepsLabelVtl;
/** @type {?} */
StepsComponent.prototype.clsStepsVtl;
/** @type {?} */
StepsComponent.prototype.clsStepsHztl;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._elf;
/**
* @type {?}
* @private
*/
StepsComponent.prototype._render;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC1tb2JpbGUvIiwic291cmNlcyI6WyJzdGVwcy9zdGVwcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU10RCxNQUFNLE9BQU8sY0FBYzs7Ozs7SUErQ3pCLFlBQW9CLElBQWdCLEVBQVUsT0FBa0I7UUFBNUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVc7UUE5Q2hFLGNBQVMsR0FBVyxVQUFVLENBQUM7UUFFdkIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUVyQixZQUFPLEdBQW1CLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDakQsZUFBVSxHQUFzQixpQkFBaUIsQ0FBQyxRQUFRLENBQUM7UUErQm5FLGFBQVEsR0FBWSxJQUFJLENBQUM7SUFVMkMsQ0FBQzs7Ozs7SUFuQ3JFLElBQ0ksT0FBTyxDQUFDLEtBQUs7UUFDZixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjtJQUNILENBQUM7Ozs7O0lBQ0QsSUFDSSxJQUFJLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDOzs7OztJQUNELElBQ0ksTUFBTSxDQUFDLEtBQXFCO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxD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QUFDLENBQUMsQ0FBQztJQUNSLENBQUM7OztZQWpJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsdUNBQXFDO2FBQ3RDOzs7O1lBUkMsVUFBVTtZQURWLFNBQVM7Ozt3QkFtQlIsZUFBZSxTQUFDLGFBQWE7c0JBRzdCLEtBQUs7bUJBTUwsS0FBSztxQkFLTCxLQUFLO3dCQU9MLEtBQUs7dUJBTUwsV0FBVyxTQUFDLGdCQUFnQjs0QkFFNUIsV0FBVyxTQUFDLHNCQUFzQjsrQkFFbEMsV0FBVyxTQUFDLCtCQUErQjswQkFFM0MsV0FBVyxTQUFDLHlCQUF5QjsyQkFFckMsV0FBVyxTQUFDLDJCQUEyQjs7OztJQTNDeEMsbUNBQStCOzs7OztJQUUvQixrQ0FBNkI7Ozs7O0lBQzdCLCtCQUFzQjs7Ozs7SUFDdEIsaUNBQXlEOzs7OztJQUN6RCxvQ0FBbUU7Ozs7O0lBQ25FLG1DQUEwQjs7SUFFMUIsbUNBQ29DOztJQTBCcEMsa0NBQ3lCOztJQUN6Qix1Q0FDdUI7O0lBQ3ZCLDBDQUMwQjs7SUFDMUIscUNBQ3FCOztJQUNyQixzQ0FDc0I7Ozs7O0lBRVYsOEJBQXdCOzs7OztJQUFFLGlDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEhvc3RCaW5kaW5nLFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdGVwU3RhdHVzRW51bSwgU3RlcERpcmVjdGlvbkVudW0gfSBmcm9tICcuL3N0ZXAvc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcENvbXBvbmVudCB9IGZyb20gJy4vc3RlcC9zdGVwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1N0ZXBzLG56bS1zdGVwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3RlcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuICBwcmVmaXhDbHM6IHN0cmluZyA9ICdhbS1zdGVwcyc7XG5cbiAgcHJpdmF0ZSBfY3VycmVudDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nO1xuICBwcml2YXRlIF9zdGF0dXM6IFN0ZXBTdGF0dXNFbnVtID0gU3RlcFN0YXR1c0VudW0uUFJPQ0VTUztcbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiBTdGVwRGlyZWN0aW9uRW51bSA9IFN0ZXBEaXJlY3Rpb25FbnVtLlZFUlRJQ0FMO1xuICBwcml2YXRlIF9zdGVwc0Nsczogb2JqZWN0O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU3RlcENvbXBvbmVudClcbiAgc3RlcEl0ZW1zOiBRdWVyeUxpc3Q8U3RlcENvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgc2V0IGN1cnJlbnQodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPj0gMCkge1xuICAgICAgdGhpcy5fY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBzZXQgc2l6ZSh2YWx1ZSkge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENscygpO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBzdGF0dXModmFsdWU6IFN0ZXBTdGF0dXNFbnVtKSB7XG4gICAgdGhpcy5fc3RhdHVzID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuc3RlcEl0ZW1zKSB7XG4gICAgICB0aGlzLnNldFN0ZXBTdHlsZSgpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBzZXQgZGlyZWN0aW9uKHZhbHVlOiBTdGVwRGlyZWN0aW9uRW51bSkge1xuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHZhbHVlO1xuICAgIHRoaXMuc2V0Q2xzKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLXN0ZXBzJylcbiAgY2xzU3RlcHM6IGJvb2xlYW4gPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLXN0ZXBzLXNtYWxsJylcbiAgY2xzU3RlcHNTbWFsbDogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1zdGVwcy1sYWJlbC12ZXJ0aWNhbCcpXG4gIGNsc1N0ZXBzTGFiZWxWdGw6IGJvb2xlYW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYW0tc3RlcHMtdmVydGljYWwnKVxuICBjbHNTdGVwc1Z0bDogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1zdGVwcy1ob3Jpem9udGFsJylcbiAgY2xzU3RlcHNIenRsOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gIHNldFN0ZXBTdHlsZSgpIHtcbiAgICBjb25zdCBpdGVtQ291bnQgPSB0aGlzLnN0ZXBJdGVtcy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbUFyciA9IHRoaXMuc3RlcEl0ZW1zWydfcmVzdWx0cyddO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtQ291bnQ7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBpdGVtQXJyW2luZGV4XTtcbiAgICAgIHN0ZXAuc3RlcE51bWJlciA9IGluZGV4ICsgMTtcbiAgICAgIGlmIChpbmRleCA8IGl0ZW1Db3VudCAtIDEgJiYgaXRlbUFycltpbmRleCArIDFdLnN0YXR1cyA9PT0gU3RlcFN0YXR1c0VudW0uRVJST1IpIHtcbiAgICAgICAgc3RlcC5zdGVwSXRlbUNscyA9IHN0ZXAuc3RlcEl0ZW1DbHNcbiAgICAgICAgICA/IE9iamVjdC5hc3NpZ24oc3RlcC5zdGVwSXRlbUNscywgeyAnZXJyb3ItdGFpbCc6IHRydWUgfSlcbiAgICAgICAgICA6IHsgJ2Vycm9yLXRhaWwnOiB0cnVlIH07XG4gICAgICB9XG4gICAgICBsZXQgaWNvbiA9IHN0ZXAuaWNvbjtcbiAgICAgIGlmICghc3RlcC5zdGF0dXMpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLl9jdXJyZW50KSB7XG4gICAgICAgICAgc3RlcC5zdGF0dXMgPSB0aGlzLl9zdGF0dXM7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCB0aGlzLl9jdXJyZW50KSB7XG4gICAgICAgICAgc3RlcC5zdGF0dXMgPSBTdGVwU3RhdHVzRW51bS5GSU5JU0g7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RlcC5zdGF0dXMgPSBTdGVwU3RhdHVzRW51bS5XQUlUO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAuc3RhdHVzICYmICFpY29uKSB7XG4gICAgICAgIHN3aXRjaCAoc3RlcC5zdGF0dXMpIHtcbiAgICAgICAgICBjYXNlICBTdGVwU3RhdHVzRW51bS5GSU5JU0g6XG4gICAgICAgICAgICBpY29uID0gJ2NoZWNrLWNpcmNsZS1vJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU3RlcFN0YXR1c0VudW0uRVJST1I6XG4gICAgICAgICAgICBpY29uID0gJ2Nyb3NzLWNpcmNsZS1vJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWljb24gJiYgc3RlcC5zdGF0dXMgIT09IFN0ZXBTdGF0dXNFbnVtLlBST0NFU1MpIHtcbiAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5fY3VycmVudCkge1xuICAgICAgICAgIGljb24gPSAnY2hlY2stY2lyY2xlLW8nO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID4gdGhpcy5fY3VycmVudCkge1xuICAgICAgICAgIGljb24gPSAnZWxsaXBzaXMnO1xuICAgICAgICAgIHN0ZXAuc3RlcEl0ZW1DbHMgPSBzdGVwLnN0ZXBJdGVtQ2xzXG4gICAgICAgICAgICA/IE9iamVjdC5hc3NpZ24oc3RlcC5zdGVwSXRlbUNscywgeyAnZWxsaXBzaXMtaXRlbSc6IHRydWUgfSlcbiAgICAgICAgICAgIDogeyAnZWxsaXBzaXMtaXRlbSc6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuX3N0YXR1cyA9PT0gU3RlcFN0YXR1c0VudW0uRVJST1IgJiYgaW5kZXggPT09IHRoaXMuX2N1cnJlbnQpIHx8XG4gICAgICAgICAgc3RlcC5zdGF0dXMgPT09IFN0ZXBTdGF0dXNFbnVtLkVSUk9SXG4gICAgICAgICkge1xuICAgICAgICAgIGljb24gPSAnY3Jvc3MtY2lyY2xlLW8nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGVwLmljb24gPSBpY29uO1xuICAgICAgc3RlcC5pY29uU2l6ZSA9IHRoaXMuX3NpemUgPT09ICdzbWFsbCcgPyAodGhpcy5fc3RhdHVzID09PSBTdGVwU3RhdHVzRW51bS5XQUlUID8gJ3h4cycgOiAneHMnKSA6ICdtZCc7XG4gICAgICBzdGVwLnNldENsYXNzKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q2xzKCkge1xuICAgIGlmICh0aGlzLl9kaXJlY3Rpb24gPT09IFN0ZXBEaXJlY3Rpb25FbnVtLkhPUklaT05UQUwpIHtcbiAgICAgIHRoaXMuY2xzU3RlcHNMYWJlbFZ0bCA9IHRydWU7XG4gICAgICB0aGlzLmNsc1N0ZXBzSHp0bCA9IHRydWU7XG4gICAgICB0aGlzLmNsc1N0ZXBzVnRsID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9kaXJlY3Rpb24gPT09IFN0ZXBEaXJlY3Rpb25FbnVtLlZFUlRJQ0FMKSB7XG4gICAgICB0aGlzLmNsc1N0ZXBzVnRsID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xzU3RlcHNIenRsID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaXplID09PSAnc21hbGwnKSB7XG4gICAgICB0aGlzLmNsc1N0ZXBzU21hbGwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsc1N0ZXBzU21hbGwgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldENscygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRTdGVwU3R5bGUoKTtcbiAgICB9LCAwKTtcbiAgfVxufVxuIl19