UNPKG

ng-zorro-antd-mobile

Version:

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

178 lines (177 loc) 15.7 kB
/** * @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'; export class AccordionComponent { /** * @param {?} _accordionService */ constructor(_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 {?} */ click(event) { /** @type {?} */ let result = []; this.groups.toArray().forEach(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(group => { group.isOpened = false; }); } /** * @return {?} */ init() { if (this.expandAll && this.groups && this.groups.length > 0) { this._oldGroups = this.groups.toArray(); this._oldGroups.forEach((group, index) => { group.openOnInitialization(); }); this._subscription = this.groups.changes.subscribe(change => { /** @type {?} */ const newGroups = this.groups.toArray().filter(group => { return this._oldGroups.indexOf(group) === -1; }); newGroups.forEach(group => { group.openOnInitialization(); }); this._oldGroups = this.groups.toArray(); }); } /** @type {?} */ let 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((group, index) => { currentActiveKey.forEach(key => { if (index === parseInt(key, 0)) { setTimeout(() => { group.isOpened = true; }, 0); } }); }); } else if (this.defaultActiveKey !== undefined && !this.expandAll && !this.accordion && this.groups && this.groups.length > 0) { this.groups.forEach((group, index) => { if (index === parseInt(this.defaultActiveKey, 0)) { setTimeout(() => { group.isOpened = true; }, 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() { this.init(); } /** * @return {?} */ ngOnDestroy() { 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 = () => [ { type: AccordionService } ]; AccordionComponent.propDecorators = { groups: [{ type: ContentChildren, args: [forwardRef(() => 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'],] }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUdWLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUdaLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQVF0RixNQUFNOzs7O0lBc0NKLFlBQW9CLGlCQUFtQztRQUFuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO3lCQTlCM0MsS0FBSzs2QkFNRCxFQUFFO3lCQUVOLEtBQUs7d0JBRUQsSUFBSSxZQUFZLEVBQUU7MkJBR1gsSUFBSTtRQWtCekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMzQzs7Ozs7SUFoQkQsS0FBSyxDQUFDLEtBQUs7O1FBQ1QsSUFBSSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNsQixNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztpQkFDcEI7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3hCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFD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LE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnRlbnRDaGlsZHJlbixcbiAgQ29tcG9uZW50LFxuICBRdWVyeUxpc3QsXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBPbkRlc3Ryb3ksXG4gIEhvc3RMaXN0ZW5lcixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSG9zdEJpbmRpbmdcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY2NvcmRpb25TZXJ2aWNlIH0gZnJvbSAnLi9hY2NvcmRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBY2NvcmRpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vYWNjb3JkaW9uLWdyb3VwL2FjY29yZGlvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdBY2NvcmRpb24sIG56bS1hY2NvcmRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbQWNjb3JkaW9uU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9vbGRHcm91cHM6IEFjY29yZGlvbkdyb3VwQ29tcG9uZW50W107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBBY2NvcmRpb25Hcm91cENvbXBvbmVudCkpXG4gIGdyb3VwczogUXVlcnlMaXN0PEFjY29yZGlvbkdyb3VwQ29tcG9uZW50PjtcblxuICBASW5wdXQoKVxuICBleHBhbmRBbGwgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgYWN0aXZlS2V5OiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nO1xuICBASW5wdXQoKVxuICBkZWZhdWx0QWN0aXZlS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG9wZW5BbmltYXRpb24gPSB7fTtcbiAgQElucHV0KClcbiAgYWNjb3JkaW9uID0gZmFsc2U7XG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZTogYW55ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYW0tYWNjb3JkaW9uJylcbiAgYW1BY2NvcmRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQpIHtcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSBbXTtcbiAgICB0aGlzLmdyb3Vwcy50b0FycmF5KCkuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICBpZiAoZ3JvdXAuaXNPcGVuZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZ3JvdXAua2V5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGdyb3VwLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQocmVzdWx0KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY29yZGlvblNlcnZpY2U6IEFjY29yZGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLl9hY2NvcmRpb25TZXJ2aWNlLmdldENvbXBvbmVudCh0aGlzKTtcbiAgfVxuXG4gIGNsb3NlQWxsKCkge1xuICAgIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGdyb3VwLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBpbml0ICgpIHtcbiAgICBpZiAodGhpcy5leHBhbmRBbGwgJiYgdGhpcy5ncm91cHMgJiYgdGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fb2xkR3JvdXBzID0gdGhpcy5ncm91cHMudG9BcnJheSgpO1xuICAgICAgdGhpcy5fb2xkR3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgICBncm91cC5vcGVuT25Jbml0aWFsaXphdGlvbigpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICBjb25zdCBuZXdHcm91cHMgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCkuZmlsdGVyKGdyb3VwID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fb2xkR3JvdXBzLmluZGV4T2YoZ3JvdXApID09PSAtMTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0dyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgICBncm91cC5vcGVuT25Jbml0aWFsaXphdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fb2xkR3JvdXBzID0gdGhpcy5ncm91cHMudG9BcnJheSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRBY3RpdmVLZXkgPSBbXTtcbiAgICBpZiAodGhpcy5hY3RpdmVLZXkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGl2ZUtleS5sZW5ndGggPiAwICYmICF0aGlzLmFjY29yZGlvbiAmJiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICBjdXJyZW50QWN0aXZlS2V5ID0gdGhpcy50b0FycmF5KHRoaXMuYWN0aXZlS2V5KTtcbiAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgICBjdXJyZW50QWN0aXZlS2V5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IHBhcnNlSW50KGtleSwgMCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBncm91cC5pc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRBY3RpdmVLZXkgIT09IHVuZGVmaW5lZCAmJiAhdGhpcy5leHBhbmRBbGwgJiYgIXRoaXMuYWNjb3JkaW9uICYmIHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPT09IHBhcnNlSW50KHRoaXMuZGVmYXVsdEFjdGl2ZUtleSwgMCkpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGdyb3VwLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9BcnJheShhY3RpdmVLZXkpIHtcbiAgICBsZXQgY3VycmVudEFjdGl2ZUtleSA9IGFjdGl2ZUtleTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudEFjdGl2ZUtleSkpIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSBjdXJyZW50QWN0aXZlS2V5ICE9PSB1bmRlZmluZWQgJiYgY3VycmVudEFjdGl2ZUtleSAhPT0gJycgPyBbY3VycmVudEFjdGl2ZUtleV0gOiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRBY3RpdmVLZXk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuYWNjb3JkaW9uKSB7XG4gICAgICB0aGlzLl9hY2NvcmRpb25TZXJ2aWNlLmdldENvbXBvbmVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5leHBhbmRBbGwgfHwgY2hhbmdlcy5hY2NvcmRpb24pIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19