@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
69 lines • 8.65 kB
JavaScript
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, Optional, ViewEncapsulation, } from '@angular/core';
import { ReplaySubject, distinctUntilChanged, filter, map, startWith, takeUntil } from 'rxjs';
import { DokuSelect } from './select.component';
import * as i0 from "@angular/core";
import * as i1 from "./select.component";
export class DokuSelectOption {
constructor(select) {
this.select = select;
this.classes = 'd-select-option';
this.value = '';
this.disabled = false;
this.isSelected = false;
this.destroy$ = new ReplaySubject();
}
ngOnInit() {
this.watchSelectedValue();
}
ngOnDestroy() {
this.destroy$.next(true);
this.destroy$.complete();
}
watchSelectedValue() {
this.select?._notifyOnChange$
.pipe(filter(({ type }) => type === 'value'), startWith(this.select.value), map(() => this.select?.value), map((value) => {
if (!value)
return false;
if (typeof value === 'string')
return value === this.value;
return value.includes(this.value);
}), distinctUntilChanged(), takeUntil(this.destroy$))
.subscribe((selected) => {
this.isSelected = selected;
});
}
}
DokuSelectOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuSelectOption, deps: [{ token: DokuSelect, optional: true }], target: i0.ɵɵFactoryTarget.Component });
DokuSelectOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DokuSelectOption, isStandalone: true, selector: "doku-select-option", inputs: { value: "value", disabled: "disabled" }, host: { properties: { "class": "this.classes", "class.d-select-option-disabled": "this.disabled", "class.d-select-option-selected": "this.isSelected" } }, exportAs: ["dokuSelectOption"], ngImport: i0, template: '<ng-content></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: DokuSelectOption, decorators: [{
type: Component,
args: [{
selector: 'doku-select-option',
exportAs: 'dokuSelectOption',
standalone: true,
imports: [CommonModule],
template: '<ng-content></ng-content>',
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: function () { return [{ type: i1.DokuSelect, decorators: [{
type: Optional
}, {
type: Inject,
args: [DokuSelect]
}] }]; }, propDecorators: { classes: [{
type: HostBinding,
args: ['class']
}], value: [{
type: Input
}], disabled: [{
type: HostBinding,
args: ['class.d-select-option-disabled']
}, {
type: Input
}], isSelected: [{
type: HostBinding,
args: ['class.d-select-option-selected']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2t1LWZyYWdtZW50L3NyYy9saWIvc2VsZWN0L3NlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBV2hELE1BQU0sT0FBTyxnQkFBZ0I7SUFlM0IsWUFBb0QsTUFBbUI7UUFBbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQWJwRCxZQUFPLEdBQXVCLGlCQUFpQixDQUFDO1FBRTFELFVBQUssR0FBRyxFQUFFLENBQUM7UUFJcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdQLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFckIsYUFBUSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFFbUMsQ0FBQztJQUUzRSxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0I7YUFDMUIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsRUFDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUM3QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3pCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFBRSxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzNELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekI7YUFDQSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzZHQTNDVSxnQkFBZ0Isa0JBZUssVUFBVTtpR0FmL0IsZ0JBQWdCLDJUQUpqQiwyQkFBMkIsMkRBRDNCLFlBQVk7MkZBS1gsZ0JBQWdCO2tCQVQ1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWdCYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVU7NENBYnZCLE9BQU87c0JBRHpCLFdBQVc7dUJBQUMsT0FBTztnQkFHWCxLQUFLO3NCQUFiLEtBQUs7Z0JBSU4sUUFBUTtzQkFGUCxXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7Z0JBSUksVUFBVTtzQkFEbkIsV0FBVzt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9rdVNlbGVjdCB9IGZyb20gJy4vc2VsZWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rva3Utc2VsZWN0LW9wdGlvbicsXG4gIGV4cG9ydEFzOiAnZG9rdVNlbGVjdE9wdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9rdVNlbGVjdE9wdGlvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByb3RlY3RlZCByZWFkb25seSBjbGFzc2VzOiBOZ0NsYXNzWyduZ0NsYXNzJ10gPSAnZC1zZWxlY3Qtb3B0aW9uJztcblxuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1zZWxlY3Qtb3B0aW9uLWRpc2FibGVkJylcbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtc2VsZWN0LW9wdGlvbi1zZWxlY3RlZCcpXG4gIHByb3RlY3RlZCBpc1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChEb2t1U2VsZWN0KSBwcml2YXRlIHNlbGVjdD86IERva3VTZWxlY3QpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy53YXRjaFNlbGVjdGVkVmFsdWUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoU2VsZWN0ZWRWYWx1ZSgpIHtcbiAgICB0aGlzLnNlbGVjdD8uX25vdGlmeU9uQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgPT09ICd2YWx1ZScpLFxuICAgICAgICBzdGFydFdpdGgodGhpcy5zZWxlY3QudmFsdWUpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5zZWxlY3Q/LnZhbHVlKSxcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlID09PSB0aGlzLnZhbHVlO1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5pbmNsdWRlcyh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9KTtcbiAgfVxufVxuIl19