ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
139 lines • 16.9 kB
JavaScript
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';
import * as i0 from "@angular/core";
import * as i1 from "./accordion.service";
export class AccordionComponent {
click() {
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);
}
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);
}
closeAll() {
this.groups.toArray().forEach(group => {
group.isOpened = false;
});
}
init() {
if (this.expandAll && this.groups && this.groups.length > 0) {
this._oldGroups = this.groups.toArray();
this._oldGroups.forEach(group => {
group.openOnInitialization();
});
this._subscription = this.groups.changes.subscribe(change => {
const newGroups = this.groups.toArray().filter(group => {
return this._oldGroups.indexOf(group) === -1;
});
newGroups.forEach(group => {
group.openOnInitialization();
});
this._oldGroups = this.groups.toArray();
});
}
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((group, index) => {
currentActiveKey.forEach(key => {
if (index === parseInt(key, 0)) {
setTimeout(() => {
group.isOpened = true;
group.openOnInitialization();
}, 0);
}
});
});
}
}
toArray(activeKey) {
let currentActiveKey = activeKey;
if (!Array.isArray(currentActiveKey)) {
currentActiveKey = currentActiveKey !== undefined && currentActiveKey !== '' ? [currentActiveKey] : [];
}
return currentActiveKey;
}
ngOnChanges(changes) {
if (changes.accordion) {
this._accordionService.getComponent(this);
}
if (changes.expandAll || changes.accordion) {
this.init();
}
}
ngAfterContentInit() {
if (this.groups && this.groups.length > 0) {
this.init();
}
else {
this.groupsSubscription = this.groups.changes.subscribe(group => {
if (this.isFirstChange) {
this.init();
}
this.isFirstChange = false;
});
}
}
ngOnDestroy() {
if (this._subscription) {
this._subscription.unsubscribe();
}
if (this.groupsSubscription) {
this.groupsSubscription.unsubscribe();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AccordionComponent, deps: [{ token: i1.AccordionService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AccordionComponent, selector: "Accordion, nzm-accordion", inputs: { expandAll: "expandAll", activeKey: "activeKey", defaultActiveKey: "defaultActiveKey", openAnimation: "openAnimation", accordion: "accordion" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "click()" }, properties: { "class.am-accordion": "this.amAccordion" } }, providers: [AccordionService], queries: [{ propertyName: "groups", predicate: i0.forwardRef(() => AccordionGroupComponent) }], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AccordionComponent, decorators: [{
type: Component,
args: [{ selector: 'Accordion, nzm-accordion', providers: [AccordionService], template: "<ng-content></ng-content>\n" }]
}], ctorParameters: () => [{ type: i1.AccordionService }], 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']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBR1YsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEVBR1osV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7QUFRdEYsTUFBTSxPQUFPLGtCQUFrQjtJQTBCN0IsS0FBSztRQUNILElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3BCO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN4QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBb0IsaUJBQW1DO1FBQW5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFwQy9DLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBTXRDLGNBQVMsR0FB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LGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7OEdBaElVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHVWQUZsQixDQUFDLGdCQUFnQixDQUFDLHFFQVFLLHVCQUF1QixtREM5QjNELDZCQUNBOzsyRkR1QmEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLDBCQUEwQixhQUV6QixDQUFDLGdCQUFnQixDQUFDO3FGQVM3QixNQUFNO3NCQURMLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUkxRCxTQUFTO3NCQURSLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBSWpDLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGVudENoaWxkcmVuLFxuICBDb21wb25lbnQsXG4gIFF1ZXJ5TGlzdCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0QmluZGluZ1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY29yZGlvblNlcnZpY2UgfSBmcm9tICcuL2FjY29yZGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFjY29yZGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnQWNjb3JkaW9uLCBuem0tYWNjb3JkaW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW0FjY29yZGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBfb2xkR3JvdXBzOiBBY2NvcmRpb25Hcm91cENvbXBvbmVudFtdO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBncm91cHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBpc0ZpcnN0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpKVxuICBncm91cHM6IFF1ZXJ5TGlzdDxBY2NvcmRpb25Hcm91cENvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgZXhwYW5kQWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUtleTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZztcbiAgQElucHV0KClcbiAgZGVmYXVsdEFjdGl2ZUtleTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBvcGVuQW5pbWF0aW9uID0ge307XG4gIEBJbnB1dCgpXG4gIGFjY29yZGlvbiA9IGZhbHNlO1xuICBAT3V0cHV0KClcbiAgb25DaGFuZ2U6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLWFjY29yZGlvbicpXG4gIGFtQWNjb3JkaW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGNsaWNrKCkge1xuICAgIGxldCByZXN1bHQ6IGFueSA9IFtdO1xuICAgIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGlmIChncm91cC5pc09wZW5lZCkge1xuICAgICAgICBpZiAodGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgICByZXN1bHQgPSBncm91cC5rZXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goZ3JvdXAua2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdChyZXN1bHQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3JkaW9uU2VydmljZTogQWNjb3JkaW9uU2VydmljZSkge1xuICAgIHRoaXMuX2FjY29yZGlvblNlcnZpY2UuZ2V0Q29tcG9uZW50KHRoaXMpO1xuICB9XG5cbiAgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5ncm91cHMudG9BcnJheSgpLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgZ3JvdXAuaXNPcGVuZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kQWxsICYmIHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX29sZEdyb3VwcyA9IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgICAgIHRoaXMuX29sZEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgZ3JvdXAub3Blbk9uSW5pdGlhbGl6YXRpb24oKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5ncm91cHMuY2hhbmdlcy5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgY29uc3QgbmV3R3JvdXBzID0gdGhpcy5ncm91cHMudG9BcnJheSgpLmZpbHRlcihncm91cCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX29sZEdyb3Vwcy5pbmRleE9mKGdyb3VwKSA9PT0gLTE7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgZ3JvdXAub3Blbk9uSW5pdGlhbGl6YXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29sZEdyb3VwcyA9IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBjdXJyZW50QWN0aXZlS2V5OiBBcnJheTxhbnk+ID0gW107XG4gICAgaWYgKHRoaXMuYWN0aXZlS2V5ICYmIHRoaXMuYWN0aXZlS2V5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSB0aGlzLnRvQXJyYXkodGhpcy5hY3RpdmVLZXkpO1xuICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uKSB7XG4gICAgICAgIGN1cnJlbnRBY3RpdmVLZXkgPSBjdXJyZW50QWN0aXZlS2V5LnNsaWNlKDAsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0QWN0aXZlS2V5KSB7XG4gICAgICBjdXJyZW50QWN0aXZlS2V5ID0gW3RoaXMuZGVmYXVsdEFjdGl2ZUtleV07XG4gICAgfVxuICAgIGlmICh0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCwgaW5kZXgpID0+IHtcbiAgICAgICAgY3VycmVudEFjdGl2ZUtleS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgaWYgKGluZGV4ID09PSBwYXJzZUludChrZXksIDApKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgZ3JvdXAuaXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBncm91cC5vcGVuT25Jbml0aWFsaXphdGlvbigpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvQXJyYXkoYWN0aXZlS2V5KSB7XG4gICAgbGV0IGN1cnJlbnRBY3RpdmVLZXkgPSBhY3RpdmVLZXk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnRBY3RpdmVLZXkpKSB7XG4gICAgICBjdXJyZW50QWN0aXZlS2V5ID0gY3VycmVudEFjdGl2ZUtleSAhPT0gdW5kZWZpbmVkICYmIGN1cnJlbnRBY3RpdmVLZXkgIT09ICcnID8gW2N1cnJlbnRBY3RpdmVLZXldIDogW107XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50QWN0aXZlS2V5O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFjY29yZGlvbikge1xuICAgICAgdGhpcy5fYWNjb3JkaW9uU2VydmljZS5nZXRDb21wb25lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZXhwYW5kQWxsIHx8IGNoYW5nZXMuYWNjb3JkaW9uKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiA9IHRoaXMuZ3JvdXBzLmNoYW5nZXMuc3Vic2NyaWJlKGdyb3VwID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdENoYW5nZSkge1xuICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNGaXJzdENoYW5nZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==