ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
203 lines (202 loc) • 16.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { ContentChildren, Component, QueryList, Input, forwardRef, HostListener, Output, EventEmitter, HostBinding } from '@angular/core';
import { AccordionService } from './accordion.service';
import { AccordionGroupComponent } from './accordion-group/accordion-group.component';
var AccordionComponent = /** @class */ (function () {
function AccordionComponent(_accordionService) {
this._accordionService = _accordionService;
this.expandAll = false;
this.openAnimation = {};
this.accordion = false;
this.onChange = new EventEmitter();
this.amAccordion = true;
this._accordionService.getComponent(this);
}
/**
* @param {?} event
* @return {?}
*/
AccordionComponent.prototype.click = /**
* @param {?} event
* @return {?}
*/
function (event) {
var _this = this;
/** @type {?} */
var result = [];
this.groups.toArray().forEach(function (group) {
if (group.isOpened) {
if (_this.accordion) {
result = group.key;
}
else {
result.push(group.key);
}
}
});
this.onChange.emit(result);
};
/**
* @return {?}
*/
AccordionComponent.prototype.closeAll = /**
* @return {?}
*/
function () {
this.groups.toArray().forEach(function (group) {
group.isOpened = false;
});
};
/**
* @return {?}
*/
AccordionComponent.prototype.init = /**
* @return {?}
*/
function () {
var _this = this;
if (this.expandAll && this.groups && this.groups.length > 0) {
this._oldGroups = this.groups.toArray();
this._oldGroups.forEach(function (group, index) {
group.openOnInitialization();
});
this._subscription = this.groups.changes.subscribe(function (change) {
/** @type {?} */
var newGroups = _this.groups.toArray().filter(function (group) {
return _this._oldGroups.indexOf(group) === -1;
});
newGroups.forEach(function (group) {
group.openOnInitialization();
});
_this._oldGroups = _this.groups.toArray();
});
}
/** @type {?} */
var currentActiveKey = [];
if (this.activeKey !== undefined && this.activeKey.length > 0 && !this.accordion && this.groups && this.groups.length > 0) {
currentActiveKey = this.toArray(this.activeKey);
this.groups.forEach(function (group, index) {
currentActiveKey.forEach(function (key) {
if (index === parseInt(key, 0)) {
setTimeout(function () {
group.isOpened = true;
}, 0);
}
});
});
}
else if (this.defaultActiveKey !== undefined && !this.expandAll && !this.accordion && this.groups && this.groups.length > 0) {
this.groups.forEach(function (group, index) {
if (index === parseInt(_this.defaultActiveKey, 0)) {
setTimeout(function () {
group.isOpened = true;
}, 0);
}
});
}
};
/**
* @param {?} activeKey
* @return {?}
*/
AccordionComponent.prototype.toArray = /**
* @param {?} activeKey
* @return {?}
*/
function (activeKey) {
/** @type {?} */
var currentActiveKey = activeKey;
if (!Array.isArray(currentActiveKey)) {
currentActiveKey = currentActiveKey !== undefined && currentActiveKey !== '' ? [currentActiveKey] : [];
}
return currentActiveKey;
};
/**
* @param {?} changes
* @return {?}
*/
AccordionComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes["accordion"]) {
this._accordionService.getComponent(this);
}
if (changes["expandAll"] || changes["accordion"]) {
this.init();
}
};
/**
* @return {?}
*/
AccordionComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
this.init();
};
/**
* @return {?}
*/
AccordionComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this._subscription) {
this._subscription.unsubscribe();
}
};
AccordionComponent.decorators = [
{ type: Component, args: [{
selector: 'Accordion, nzm-accordion',
template: "<ng-content></ng-content>",
providers: [AccordionService]
}] }
];
/** @nocollapse */
AccordionComponent.ctorParameters = function () { return [
{ type: AccordionService }
]; };
AccordionComponent.propDecorators = {
groups: [{ type: ContentChildren, args: [forwardRef(function () { return AccordionGroupComponent; }),] }],
expandAll: [{ type: Input }],
activeKey: [{ type: Input }],
defaultActiveKey: [{ type: Input }],
openAnimation: [{ type: Input }],
accordion: [{ type: Input }],
onChange: [{ type: Output }],
amAccordion: [{ type: HostBinding, args: ['class.am-accordion',] }],
click: [{ type: HostListener, args: ['click', ['$event'],] }]
};
return AccordionComponent;
}());
export { AccordionComponent };
if (false) {
/** @type {?} */
AccordionComponent.prototype._oldGroups;
/** @type {?} */
AccordionComponent.prototype._subscription;
/** @type {?} */
AccordionComponent.prototype.groups;
/** @type {?} */
AccordionComponent.prototype.expandAll;
/** @type {?} */
AccordionComponent.prototype.activeKey;
/** @type {?} */
AccordionComponent.prototype.defaultActiveKey;
/** @type {?} */
AccordionComponent.prototype.openAnimation;
/** @type {?} */
AccordionComponent.prototype.accordion;
/** @type {?} */
AccordionComponent.prototype.onChange;
/** @type {?} */
AccordionComponent.prototype.amAccordion;
/** @type {?} */
AccordionComponent.prototype._accordionService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUdWLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUdaLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7SUE4Q3BGLDRCQUFvQixpQkFBbUM7UUFBbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjt5QkE5QjNDLEtBQUs7NkJBTUQsRUFBRTt5QkFFTixLQUFLO3dCQUVELElBQUksWUFBWSxFQUFFOzJCQUdYLElBQUk7UUFrQnpCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7Ozs7O0lBaEJELGtDQUFLOzs7O0lBREwsVUFDTSxLQUFLO1FBRFgsaUJBYUM7O1FBWEMsSUFBSSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSztZQUNqQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksS0FBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3BCO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN4QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEs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LE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7NkJBL0NuQzs7U0F3QmEsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGVudENoaWxkcmVuLFxuICBDb21wb25lbnQsXG4gIFF1ZXJ5TGlzdCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuL2FjY29yZGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFjY29yZGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL1N1YnNjcmlwdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ0FjY29yZGlvbiwgbnptLWFjY29yZGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtBY2NvcmRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX29sZEdyb3VwczogQWNjb3JkaW9uR3JvdXBDb21wb25lbnRbXTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEFjY29yZGlvbkdyb3VwQ29tcG9uZW50KSlcbiAgZ3JvdXBzOiBRdWVyeUxpc3Q8QWNjb3JkaW9uR3JvdXBDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIGV4cGFuZEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBhY3RpdmVLZXk6IEFycmF5PHN0cmluZz4gfCBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGRlZmF1bHRBY3RpdmVLZXk6IHN0cmluZztcbiAgQElucHV0KClcbiAgb3BlbkFuaW1hdGlvbiA9IHt9O1xuICBASW5wdXQoKVxuICBhY2NvcmRpb24gPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlOiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1hY2NvcmRpb24nKVxuICBhbUFjY29yZGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBjbGljayhldmVudCkge1xuICAgIGxldCByZXN1bHQ6IGFueSA9IFtdO1xuICAgIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGlmIChncm91cC5pc09wZW5lZCkge1xuICAgICAgICBpZiAodGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgICByZXN1bHQgPSBncm91cC5rZXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goZ3JvdXAua2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdChyZXN1bHQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3JkaW9uU2VydmljZTogQWNjb3JkaW9uU2VydmljZSkge1xuICAgIHRoaXMuX2FjY29yZGlvblNlcnZpY2UuZ2V0Q29tcG9uZW50KHRoaXMpO1xuICB9XG5cbiAgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5ncm91cHMudG9BcnJheSgpLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgZ3JvdXAuaXNPcGVuZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQgKCkge1xuICAgIGlmICh0aGlzLmV4cGFuZEFsbCAmJiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9vbGRHcm91cHMgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gICAgICB0aGlzLl9vbGRHcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICAgIGdyb3VwLm9wZW5PbkluaXRpYWxpemF0aW9uKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuZ3JvdXBzLmNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0dyb3VwcyA9IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5maWx0ZXIoZ3JvdXAgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9vbGRHcm91cHMuaW5kZXhPZihncm91cCkgPT09IC0xO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3R3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgIGdyb3VwLm9wZW5PbkluaXRpYWxpemF0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9vbGRHcm91cHMgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudEFjdGl2ZUtleSA9IFtdO1xuICAgIGlmICh0aGlzLmFjdGl2ZUtleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aXZlS2V5Lmxlbmd0aCA+IDAgJiYgIXRoaXMuYWNjb3JkaW9uICYmIHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSB0aGlzLnRvQXJyYXkodGhpcy5hY3RpdmVLZXkpO1xuICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICAgIGN1cnJlbnRBY3RpdmVLZXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGlmIChpbmRleCA9PT0gcGFyc2VJbnQoa2V5LCAwKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGdyb3VwLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdEFjdGl2ZUtleSAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmV4cGFuZEFsbCAmJiAhdGhpcy5hY2NvcmRpb24gJiYgdGhpcy5ncm91cHMgJiYgdGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gcGFyc2VJbnQodGhpcy5kZWZhdWx0QWN0aXZlS2V5LCAwKSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZ3JvdXAuaXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b0FycmF5KGFjdGl2ZUtleSkge1xuICAgIGxldCBjdXJyZW50QWN0aXZlS2V5ID0gYWN0aXZlS2V5O1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50QWN0aXZlS2V5KSkge1xuICAgICAgY3VycmVudEFjdGl2ZUtleSA9IGN1cnJlbnRBY3RpdmVLZXkgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50QWN0aXZlS2V5ICE9PSAnJyA/IFtjdXJyZW50QWN0aXZlS2V5XSA6IFtdO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudEFjdGl2ZUtleTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hY2NvcmRpb24pIHtcbiAgICAgIHRoaXMuX2FjY29yZGlvblNlcnZpY2UuZ2V0Q29tcG9uZW50KHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmV4cGFuZEFsbCB8fCBjaGFuZ2VzLmFjY29yZGlvbikge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=