UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

252 lines 18.5 kB
/** * @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'; export class AccordionComponent { /** * @param {?} _accordionService */ constructor(_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 {?} */ click() { /** @type {?} */ let result = []; this.groups.toArray().forEach((/** * @param {?} group * @return {?} */ group => { if (group.isOpened) { if (this.accordion) { result = group.key; } else { result.push(group.key); } } })); this.onChange.emit(result); } /** * @return {?} */ closeAll() { this.groups.toArray().forEach((/** * @param {?} group * @return {?} */ group => { group.isOpened = false; })); } /** * @return {?} */ init() { if (this.expandAll && this.groups && this.groups.length > 0) { this._oldGroups = this.groups.toArray(); this._oldGroups.forEach((/** * @param {?} group * @return {?} */ (group) => { group.openOnInitialization(); })); this._subscription = this.groups.changes.subscribe((/** * @param {?} change * @return {?} */ change => { /** @type {?} */ const newGroups = this.groups.toArray().filter((/** * @param {?} group * @return {?} */ group => { return this._oldGroups.indexOf(group) === -1; })); newGroups.forEach((/** * @param {?} group * @return {?} */ group => { group.openOnInitialization(); })); this._oldGroups = this.groups.toArray(); })); } /** @type {?} */ let 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 {?} */ (group, index) => { currentActiveKey.forEach((/** * @param {?} key * @return {?} */ key => { if (index === parseInt(key, 0)) { setTimeout((/** * @return {?} */ () => { group.isOpened = true; group.openOnInitialization(); }), 0); } })); })); } } /** * @param {?} activeKey * @return {?} */ toArray(activeKey) { /** @type {?} */ let currentActiveKey = activeKey; if (!Array.isArray(currentActiveKey)) { currentActiveKey = currentActiveKey !== undefined && currentActiveKey !== '' ? [currentActiveKey] : []; } return currentActiveKey; } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes.accordion) { this._accordionService.getComponent(this); } if (changes.expandAll || changes.accordion) { this.init(); } } /** * @return {?} */ ngAfterContentInit() { if (this.groups && this.groups.length > 0) { this.init(); } else { this.groupsSubscription = this.groups.changes.subscribe((/** * @param {?} group * @return {?} */ group => { if (this.isFirstChange) { this.init(); } this.isFirstChange = false; })); } } /** * @return {?} */ ngOnDestroy() { 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 = () => [ { type: AccordionService } ]; AccordionComponent.propDecorators = { groups: [{ type: ContentChildren, args: [forwardRef((/** * @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',] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUdWLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUdaLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQVF0RixNQUFNLE9BQU8sa0JBQWtCOzs7O0lBd0M3QixZQUFvQixpQkFBbUM7UUFBbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQXBDL0Msa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFNdEMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQU1sQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGFBQVEsR0FBUSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR25DLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBa0IxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7Ozs7SUFoQkQsS0FBSzs7WUFDQyxNQUFNLEdBQVEsRUFBRTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU87Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3BCO3FCQUFN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RSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQzs7O1lBcklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyx1Q0FBeUM7Z0JBQ3pDLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2FBQzlCOzs7O1lBUlEsZ0JBQWdCOzs7cUJBZXRCLGVBQWUsU0FBQyxVQUFVOzs7Z0JBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLEVBQUM7d0JBR3pELEtBQUs7d0JBRUwsS0FBSzsrQkFFTCxLQUFLOzRCQUVMLEtBQUs7d0JBRUwsS0FBSzt1QkFFTCxNQUFNOzBCQUdOLFdBQVcsU0FBQyxvQkFBb0I7b0JBR2hDLFlBQVksU0FBQyxPQUFPOzs7Ozs7O0lBeEJyQix3Q0FBOEM7Ozs7O0lBQzlDLDJDQUFvQzs7Ozs7SUFDcEMsZ0RBQXlDOzs7OztJQUN6QywyQ0FBc0M7O0lBRXRDLG9DQUMyQzs7SUFFM0MsdUNBQ2tCOztJQUNsQix1Q0FDa0M7O0lBQ2xDLDhDQUN5Qjs7SUFDekIsMkNBQ21COztJQUNuQix1Q0FDa0I7O0lBQ2xCLHNDQUNtQzs7SUFFbkMseUNBQzRCOzs7OztJQWlCaEIsK0NBQTJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGVudENoaWxkcmVuLFxuICBDb21wb25lbnQsXG4gIFF1ZXJ5TGlzdCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuL2FjY29yZGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFjY29yZGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnQWNjb3JkaW9uLCBuem0tYWNjb3JkaW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW0FjY29yZGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBfb2xkR3JvdXBzOiBBY2NvcmRpb25Hcm91cENvbXBvbmVudFtdO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBncm91cHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBpc0ZpcnN0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpKVxuICBncm91cHM6IFF1ZXJ5TGlzdDxBY2NvcmRpb25Hcm91cENvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgZXhwYW5kQWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUtleTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZztcbiAgQElucHV0KClcbiAgZGVmYXVsdEFjdGl2ZUtleTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBvcGVuQW5pbWF0aW9uID0ge307XG4gIEBJbnB1dCgpXG4gIGFjY29yZGlvbiA9IGZhbHNlO1xuICBAT3V0cHV0KClcbiAgb25DaGFuZ2U6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLWFjY29yZGlvbicpXG4gIGFtQWNjb3JkaW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGNsaWNrKCkge1xuICAgIGxldCByZXN1bHQ6IGFueSA9IFtdO1xuICAgIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGlmIChncm91cC5pc09wZW5lZCkge1xuICAgICAgICBpZiAodGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgICByZXN1bHQgPSBncm91cC5rZXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goZ3JvdXAua2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdChyZXN1bHQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3JkaW9uU2VydmljZTogQWNjb3JkaW9uU2VydmljZSkge1xuICAgIHRoaXMuX2FjY29yZGlvblNlcnZpY2UuZ2V0Q29tcG9uZW50KHRoaXMpO1xuICB9XG5cbiAgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5ncm91cHMudG9BcnJheSgpLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgZ3JvdXAuaXNPcGVuZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kQWxsICYmIHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX29sZEdyb3VwcyA9IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgICAgIHRoaXMuX29sZEdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBncm91cC5vcGVuT25Jbml0aWFsaXphdGlvbigpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICBjb25zdCBuZXdHcm91cHMgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCkuZmlsdGVyKGdyb3VwID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fb2xkR3JvdXBzLmluZGV4T2YoZ3JvdXApID09PSAtMTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0dyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgICBncm91cC5vcGVuT25Jbml0aWFsaXphdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fb2xkR3JvdXBzID0gdGhpcy5ncm91cHMudG9BcnJheSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRBY3RpdmVLZXk6IEFycmF5PGFueT4gPSBbXTtcbiAgICBpZiAodGhpcy5hY3RpdmVLZXkgJiYgdGhpcy5hY3RpdmVLZXkubGVuZ3RoID4gMCkge1xuICAgICAgY3VycmVudEFjdGl2ZUtleSA9IHRoaXMudG9BcnJheSh0aGlzLmFjdGl2ZUtleSk7XG4gICAgICBpZiAodGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgY3VycmVudEFjdGl2ZUtleSA9IGN1cnJlbnRBY3RpdmVLZXkuc2xpY2UoMCwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRBY3RpdmVLZXkpIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSBbdGhpcy5kZWZhdWx0QWN0aXZlS2V5XTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgICBjdXJyZW50QWN0aXZlS2V5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IHBhcnNlSW50KGtleSwgMCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBncm91cC5pc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgIGdyb3VwLm9wZW5PbkluaXRpYWxpemF0aW9uKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9BcnJheShhY3RpdmVLZXkpIHtcbiAgICBsZXQgY3VycmVudEFjdGl2ZUtleSA9IGFjdGl2ZUtleTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudEFjdGl2ZUtleSkpIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSBjdXJyZW50QWN0aXZlS2V5ICE9PSB1bmRlZmluZWQgJiYgY3VycmVudEFjdGl2ZUtleSAhPT0gJycgPyBbY3VycmVudEFjdGl2ZUtleV0gOiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRBY3RpdmVLZXk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuYWNjb3JkaW9uKSB7XG4gICAgICB0aGlzLl9hY2NvcmRpb25TZXJ2aWNlLmdldENvbXBvbmVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5leHBhbmRBbGwgfHwgY2hhbmdlcy5hY2NvcmRpb24pIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5ncm91cHMgJiYgdGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JvdXBzU3Vic2NyaXB0aW9uID0gdGhpcy5ncm91cHMuY2hhbmdlcy5zdWJzY3JpYmUoZ3JvdXAgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0ZpcnN0Q2hhbmdlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JvdXBzU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19