UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

71 lines 8.28 kB
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