ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
277 lines • 19.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,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.isFirstChange = true;
this.expandAll = false;
this.openAnimation = {};
this.accordion = false;
this.onChange = new EventEmitter();
this.amAccordion = true;
this._accordionService.getComponent(this);
}
/**
* @return {?}
*/
AccordionComponent.prototype.click = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var result = [];
this.groups.toArray().forEach((/**
* @param {?} group
* @return {?}
*/
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((/**
* @param {?} group
* @return {?}
*/
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((/**
* @param {?} group
* @return {?}
*/
function (group) {
group.openOnInitialization();
}));
this._subscription = this.groups.changes.subscribe((/**
* @param {?} change
* @return {?}
*/
function (change) {
/** @type {?} */
var newGroups = _this.groups.toArray().filter((/**
* @param {?} group
* @return {?}
*/
function (group) {
return _this._oldGroups.indexOf(group) === -1;
}));
newGroups.forEach((/**
* @param {?} group
* @return {?}
*/
function (group) {
group.openOnInitialization();
}));
_this._oldGroups = _this.groups.toArray();
}));
}
/** @type {?} */
var currentActiveKey = [];
if (this.activeKey && this.activeKey.length > 0) {
currentActiveKey = this.toArray(this.activeKey);
if (this.accordion) {
currentActiveKey = currentActiveKey.slice(0, 1);
}
}
else if (this.defaultActiveKey) {
currentActiveKey = [this.defaultActiveKey];
}
if (this.groups && this.groups.length > 0) {
this.groups.forEach((/**
* @param {?} group
* @param {?} index
* @return {?}
*/
function (group, index) {
currentActiveKey.forEach((/**
* @param {?} key
* @return {?}
*/
function (key) {
if (index === parseInt(key, 0)) {
setTimeout((/**
* @return {?}
*/
function () {
group.isOpened = true;
group.openOnInitialization();
}), 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 () {
var _this = this;
if (this.groups && this.groups.length > 0) {
this.init();
}
else {
this.groupsSubscription = this.groups.changes.subscribe((/**
* @param {?} group
* @return {?}
*/
function (group) {
if (_this.isFirstChange) {
_this.init();
}
_this.isFirstChange = false;
}));
}
};
/**
* @return {?}
*/
AccordionComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this._subscription) {
this._subscription.unsubscribe();
}
if (this.groupsSubscription) {
this.groupsSubscription.unsubscribe();
}
};
AccordionComponent.decorators = [
{ type: Component, args: [{
selector: 'Accordion, nzm-accordion',
template: "<ng-content></ng-content>\n",
providers: [AccordionService]
}] }
];
/** @nocollapse */
AccordionComponent.ctorParameters = function () { return [
{ type: AccordionService }
]; };
AccordionComponent.propDecorators = {
groups: [{ type: ContentChildren, args: [forwardRef((/**
* @return {?}
*/
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',] }]
};
return AccordionComponent;
}());
export { AccordionComponent };
if (false) {
/**
* @type {?}
* @private
*/
AccordionComponent.prototype._oldGroups;
/**
* @type {?}
* @private
*/
AccordionComponent.prototype._subscription;
/**
* @type {?}
* @private
*/
AccordionComponent.prototype.groupsSubscription;
/**
* @type {?}
* @private
*/
AccordionComponent.prototype.isFirstChange;
/** @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 {?}
* @private
*/
AccordionComponent.prototype._accordionService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUdWLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUdaLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUd0RjtJQTZDRSw0QkFBb0IsaUJBQW1DO1FBQW5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFwQy9DLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBTXRDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFNbEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixhQUFRLEdBQVEsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUduQyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQWtCMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7O0lBaEJELGtDQUFLOzs7SUFETDtRQUFBLGlCQWFDOztZQVhLLE1BQU0sR0FBUSxFQUFFO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsS0FBSztZQUNqQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksS0FBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3BCO3FCQUFNO29CQUNM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QUFXLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7O2dCQXJJRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsdUNBQXlDO29CQUN6QyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDOUI7Ozs7Z0JBUlEsZ0JBQWdCOzs7eUJBZXRCLGVBQWUsU0FBQyxVQUFVOzs7b0JBQUMsY0FBTSxPQUFBLHVCQUF1QixFQUF2QixDQUF1QixFQUFDOzRCQUd6RCxLQUFLOzRCQUVMLEtBQUs7bUNBRUwsS0FBSztnQ0FFTCxLQUFLOzRCQUVMLEtBQUs7MkJBRUwsTUFBTTs4QkFHTixXQUFXLFNBQUMsb0JBQW9CO3dCQUdoQyxZQUFZLFNBQUMsT0FBTzs7SUF3R3ZCLHlCQUFDO0NBQUEsQUF0SUQsSUFzSUM7U0FqSVksa0JBQWtCOzs7Ozs7SUFDN0Isd0NBQThDOzs7OztJQUM5QywyQ0FBb0M7Ozs7O0lBQ3BDLGdEQUF5Qzs7Ozs7SUFDekMsMkNBQXNDOztJQUV0QyxvQ0FDMkM7O0lBRTNDLHVDQUNrQjs7SUFDbEIsdUNBQ2tDOztJQUNsQyw4Q0FDeUI7O0lBQ3pCLDJDQUNtQjs7SUFDbkIsdUNBQ2tCOztJQUNsQixzQ0FDbUM7O0lBRW5DLHlDQUM0Qjs7Ozs7SUFpQmhCLCtDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnRlbnRDaGlsZHJlbixcbiAgQ29tcG9uZW50LFxuICBRdWVyeUxpc3QsXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBPbkRlc3Ryb3ksXG4gIEhvc3RMaXN0ZW5lcixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY2NvcmRpb25TZXJ2aWNlIH0gZnJvbSAnLi9hY2NvcmRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBY2NvcmRpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWdyb3VwL2FjY29yZGlvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ0FjY29yZGlvbiwgbnptLWFjY29yZGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtBY2NvcmRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX29sZEdyb3VwczogQWNjb3JkaW9uR3JvdXBDb21wb25lbnRbXTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZ3JvdXBzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaXNGaXJzdENoYW5nZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEFjY29yZGlvbkdyb3VwQ29tcG9uZW50KSlcbiAgZ3JvdXBzOiBRdWVyeUxpc3Q8QWNjb3JkaW9uR3JvdXBDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIGV4cGFuZEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBhY3RpdmVLZXk6IEFycmF5PHN0cmluZz4gfCBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGRlZmF1bHRBY3RpdmVLZXk6IHN0cmluZztcbiAgQElucHV0KClcbiAgb3BlbkFuaW1hdGlvbiA9IHt9O1xuICBASW5wdXQoKVxuICBhY2NvcmRpb24gPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlOiBhbnkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS1hY2NvcmRpb24nKVxuICBhbUFjY29yZGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBjbGljaygpIHtcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSBbXTtcbiAgICB0aGlzLmdyb3Vwcy50b0FycmF5KCkuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICBpZiAoZ3JvdXAuaXNPcGVuZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZ3JvdXAua2V5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGdyb3VwLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQocmVzdWx0KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY29yZGlvblNlcnZpY2U6IEFjY29yZGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLl9hY2NvcmRpb25TZXJ2aWNlLmdldENvbXBvbmVudCh0aGlzKTtcbiAgfVxuXG4gIGNsb3NlQWxsKCkge1xuICAgIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGdyb3VwLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICh0aGlzLmV4cGFuZEFsbCAmJiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9vbGRHcm91cHMgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gICAgICB0aGlzLl9vbGRHcm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAub3Blbk9uSW5pdGlhbGl6YXRpb24oKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5ncm91cHMuY2hhbmdlcy5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgY29uc3QgbmV3R3JvdXBzID0gdGhpcy5ncm91cHMudG9BcnJheSgpLmZpbHRlcihncm91cCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX29sZEdyb3Vwcy5pbmRleE9mKGdyb3VwKSA9PT0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgZ3JvdXAub3Blbk9uSW5pdGlhbGl6YXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29sZEdyb3VwcyA9IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBjdXJyZW50QWN0aXZlS2V5OiBBcnJheTxhbnk+ID0gW107XG4gICAgaWYgKHRoaXMuYWN0aXZlS2V5ICYmIHRoaXMuYWN0aXZlS2V5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSB0aGlzLnRvQXJyYXkodGhpcy5hY3RpdmVLZXkpO1xuICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uKSB7XG4gICAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSBjdXJyZW50QWN0aXZlS2V5LnNsaWNlKDAsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0QWN0aXZlS2V5KSB7XG4gICAgICBjdXJyZW50QWN0aXZlS2V5ID0gW3RoaXMuZGVmYXVsdEFjdGl2ZUtleV07XG4gICAgfVxuICAgIGlmICh0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCwgaW5kZXgpID0+IHtcbiAgICAgICAgY3VycmVudEFjdGl2ZUtleS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSBwYXJzZUludChrZXksIDApKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgZ3JvdXAuaXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBncm91cC5vcGVuT25Jbml0aWFsaXphdGlvbigpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvQXJyYXkoYWN0aXZlS2V5KSB7XG4gICAgbGV0IGN1cnJlbnRBY3RpdmVLZXkgPSBhY3RpdmVLZXk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnRBY3RpdmVLZXkpKSB7XG4gICAgICBjdXJyZW50QWN0aXZlS2V5ID0gY3VycmVudEFjdGl2ZUtleSAhPT0gdW5kZWZpbmVkICYmIGN1cnJlbnRBY3RpdmVLZXkgIT09ICcnID8gW2N1cnJlbnRBY3RpdmVLZXldIDogW107XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50QWN0aXZlS2V5O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFjY29yZGlvbikge1xuICAgICAgdGhpcy5fYWNjb3JkaW9uU2VydmljZS5nZXRDb21wb25lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZXhwYW5kQWxsIHx8IGNoYW5nZXMuYWNjb3JkaW9uKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiA9IHRoaXMuZ3JvdXBzLmNoYW5nZXMuc3Vic2NyaWJlKGdyb3VwID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdENoYW5nZSkge1xuICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNGaXJzdENoYW5nZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==