@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
71 lines • 8.28 kB
JavaScript
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation, } from '@angular/core';
import { BehaviorSubject, ReplaySubject, takeUntil } from 'rxjs';
import { SelectionDispatcher } from './accordion.enum';
import * as i0 from "@angular/core";
export class DokuAccordion {
constructor() {
/**
* Whether the accordion should allow multiple expanded items simultaneously.
* @default false
*/
this.multi = false;
this.classes = 'd-accordion';
this.destroy$ = new ReplaySubject(1);
/**
* Use to dispatch active accordion id on the accordion items.
* Value can be other than active accordion id for specific use cases.
*
* Specific values:
* - "d-accordion-action-expand-all"
* - "d-accordion-action-collapse-all"
*/
this.selectionDispatcher$ = new BehaviorSubject(null);
/**
* Use to listen active accordion id changes on the accordion items.
* But the value can be other than active accordion id.
* See {@link selectionDispatcher$} for the list of specific values.
*/
this.selectionListener$ = this.selectionDispatcher$.pipe(takeUntil(this.destroy$));
}
ngOnDestroy() {
this.destroy$.next(1);
this.destroy$.complete();
}
/**
* Expand all accordion items when `multi` is true.
* If `multi` is false and all items are collapsed, it will open the first one.
* Otherwise, it will keep the expanded one.
*
* Disabled accordion items will not affected.
*/
expandAll() {
this.selectionDispatcher$.next(SelectionDispatcher.ExpandAll);
}
/**
* Collapse all accordion items except for disabled items.
*/
collapseAll() {
this.selectionDispatcher$.next(SelectionDispatcher.CollapseAll);
}
}
DokuAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component });
DokuAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DokuAccordion, isStandalone: true, selector: "doku-accordion", inputs: { multi: "multi" }, host: { properties: { "class": "this.classes" } }, exportAs: ["dokuAccordion"], ngImport: i0, template: '<ng-content select="doku-accordion-item"></ng-content>', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuAccordion, decorators: [{
type: Component,
args: [{
selector: 'doku-accordion',
exportAs: 'dokuAccordion',
standalone: true,
imports: [CommonModule],
template: '<ng-content select="doku-accordion-item"></ng-content>',
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], propDecorators: { multi: [{
type: Input
}], classes: [{
type: HostBinding,
args: ['class']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFFTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQVd2RCxNQUFNLE9BQU8sYUFBYTtJQVQxQjtRQVVFOzs7V0FHRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQUM7UUFHSixZQUFPLEdBQUcsYUFBYSxDQUFDO1FBRW5DLGFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4Qzs7Ozs7OztXQU9HO1FBQ08seUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQXNDLElBQUksQ0FBQyxDQUFDO1FBRWhHOzs7O1dBSUc7UUFDTyx1QkFBa0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztLQXdCekY7SUF0QkMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVM7UUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OzBHQWxEVSxhQUFhOzhGQUFiLGFBQWEsc0xBSmQsd0RBQXdELDJEQUR4RCxZQUFZOzJGQUtYLGFBQWE7a0JBVHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSx3REFBd0Q7b0JBQ2xFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBTVUsS0FBSztzQkFBYixLQUFLO2dCQUdhLE9BQU87c0JBRHpCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdGlvbkRpc3BhdGNoZXIgfSBmcm9tICcuL2FjY29yZGlvbi5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZG9rdS1hY2NvcmRpb24nLFxuICBleHBvcnRBczogJ2Rva3VBY2NvcmRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudCBzZWxlY3Q9XCJkb2t1LWFjY29yZGlvbi1pdGVtXCI+PC9uZy1jb250ZW50PicsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb2t1QWNjb3JkaW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFjY29yZGlvbiBzaG91bGQgYWxsb3cgbXVsdGlwbGUgZXhwYW5kZWQgaXRlbXMgc2ltdWx0YW5lb3VzbHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xhc3NlcyA9ICdkLWFjY29yZGlvbic7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gIC8qKlxuICAgKiBVc2UgdG8gZGlzcGF0Y2ggYWN0aXZlIGFjY29yZGlvbiBpZCBvbiB0aGUgYWNjb3JkaW9uIGl0ZW1zLlxuICAgKiBWYWx1ZSBjYW4gYmUgb3RoZXIgdGhhbiBhY3RpdmUgYWNjb3JkaW9uIGlkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqXG4gICAqIFNwZWNpZmljIHZhbHVlczpcbiAgICogLSBcImQtYWNjb3JkaW9uLWFjdGlvbi1leHBhbmQtYWxsXCJcbiAgICogLSBcImQtYWNjb3JkaW9uLWFjdGlvbi1jb2xsYXBzZS1hbGxcIlxuICAgKi9cbiAgcHJvdGVjdGVkIHNlbGVjdGlvbkRpc3BhdGNoZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3Rpb25EaXNwYXRjaGVyIHwgc3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFVzZSB0byBsaXN0ZW4gYWN0aXZlIGFjY29yZGlvbiBpZCBjaGFuZ2VzIG9uIHRoZSBhY2NvcmRpb24gaXRlbXMuXG4gICAqIEJ1dCB0aGUgdmFsdWUgY2FuIGJlIG90aGVyIHRoYW4gYWN0aXZlIGFjY29yZGlvbiBpZC5cbiAgICogU2VlIHtAbGluayBzZWxlY3Rpb25EaXNwYXRjaGVyJH0gZm9yIHRoZSBsaXN0IG9mIHNwZWNpZmljIHZhbHVlcy5cbiAgICovXG4gIHByb3RlY3RlZCBzZWxlY3Rpb25MaXN0ZW5lciQgPSB0aGlzLnNlbGVjdGlvbkRpc3BhdGNoZXIkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoMSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZCBhbGwgYWNjb3JkaW9uIGl0ZW1zIHdoZW4gYG11bHRpYCBpcyB0cnVlLlxuICAgKiBJZiBgbXVsdGlgIGlzIGZhbHNlIGFuZCBhbGwgaXRlbXMgYXJlIGNvbGxhcHNlZCwgaXQgd2lsbCBvcGVuIHRoZSBmaXJzdCBvbmUuXG4gICAqIE90aGVyd2lzZSwgaXQgd2lsbCBrZWVwIHRoZSBleHBhbmRlZCBvbmUuXG4gICAqXG4gICAqIERpc2FibGVkIGFjY29yZGlvbiBpdGVtcyB3aWxsIG5vdCBhZmZlY3RlZC5cbiAgICovXG4gIGV4cGFuZEFsbCgpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkRpc3BhdGNoZXIkLm5leHQoU2VsZWN0aW9uRGlzcGF0Y2hlci5FeHBhbmRBbGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlIGFsbCBhY2NvcmRpb24gaXRlbXMgZXhjZXB0IGZvciBkaXNhYmxlZCBpdGVtcy5cbiAgICovXG4gIGNvbGxhcHNlQWxsKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uRGlzcGF0Y2hlciQubmV4dChTZWxlY3Rpb25EaXNwYXRjaGVyLkNvbGxhcHNlQWxsKTtcbiAgfVxufVxuIl19