@dmlibs/dm-cmps 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, input, booleanAttribute, model, computed, output, effect, Component } from '@angular/core';
|
|
2
|
+
import { signal, input, booleanAttribute, model, computed, output, effect, Component, Injectable, numberAttribute } from '@angular/core';
|
|
3
3
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { Subject, Subscription, switchMap, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
5
5
|
import * as i1 from '@angular/material/form-field';
|
|
@@ -17,7 +17,12 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
|
17
17
|
import { MatIcon } from '@angular/material/icon';
|
|
18
18
|
import * as i7 from '@angular/material/button';
|
|
19
19
|
import { MatButtonModule } from '@angular/material/button';
|
|
20
|
-
import
|
|
20
|
+
import * as i2$1 from '@angular/material/tooltip';
|
|
21
|
+
import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
|
|
22
|
+
import * as i1$1 from '@angular/material/menu';
|
|
23
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
24
|
+
import * as i3$1 from '@angular/material/slider';
|
|
25
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
21
26
|
|
|
22
27
|
class DmCmpsDataSource {
|
|
23
28
|
data;
|
|
@@ -581,7 +586,7 @@ class DmMatSelect {
|
|
|
581
586
|
}
|
|
582
587
|
}
|
|
583
588
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmMatSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
584
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: DmMatSelect, isStandalone: true, selector: "dm-mat-select", inputs: { formFieldClass: { classPropertyName: "formFieldClass", publicName: "formFieldClass", isSignal: true, isRequired: false, transformFunction: null }, wrapperClass: { classPropertyName: "wrapperClass", publicName: "wrapperClass", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, selectAllEnabled: { classPropertyName: "selectAllEnabled", publicName: "selectAllEnabled", isSignal: true, isRequired: false, transformFunction: null }, selectAllLabel: { classPropertyName: "selectAllLabel", publicName: "selectAllLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionValueKey: { classPropertyName: "optionValueKey", publicName: "optionValueKey", isSignal: true, isRequired: false, transformFunction: null }, optionLabelKey: { classPropertyName: "optionLabelKey", publicName: "optionLabelKey", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, emptyOption: { classPropertyName: "emptyOption", publicName: "emptyOption", isSignal: true, isRequired: false, transformFunction: null }, emptyOptionLabel: { classPropertyName: "emptyOptionLabel", publicName: "emptyOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyOptionValue: { classPropertyName: "emptyOptionValue", publicName: "emptyOptionValue", isSignal: true, isRequired: false, transformFunction: null }, optionNameFormat: { classPropertyName: "optionNameFormat", publicName: "optionNameFormat", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: false, transformFunction: null }, panelWidth: { classPropertyName: "panelWidth", publicName: "panelWidth", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, searchSectionBackgroundColor: { classPropertyName: "searchSectionBackgroundColor", publicName: "searchSectionBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, sortBySelectedOnTop: { classPropertyName: "sortBySelectedOnTop", publicName: "sortBySelectedOnTop", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, noDataLabel: { classPropertyName: "noDataLabel", publicName: "noDataLabel", isSignal: true, isRequired: false, transformFunction: null }, clearSearchAfterSelect: { classPropertyName: "clearSearchAfterSelect", publicName: "clearSearchAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, clearSearchButtonTooltip: { classPropertyName: "clearSearchButtonTooltip", publicName: "clearSearchButtonTooltip", isSignal: true, isRequired: false, transformFunction: null }, focusSearchInputOnPanelOpen: { classPropertyName: "focusSearchInputOnPanelOpen", publicName: "focusSearchInputOnPanelOpen", isSignal: true, isRequired: false, transformFunction: null }, filterPredicate: { classPropertyName: "filterPredicate", publicName: "filterPredicate", isSignal: true, isRequired: false, transformFunction: null }, propertiesToSkipInSearch: { classPropertyName: "propertiesToSkipInSearch", publicName: "propertiesToSkipInSearch", isSignal: true, isRequired: false, transformFunction: null }, filterText: { classPropertyName: "filterText", publicName: "filterText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", selectionChange: "selectionChange", filterText: "filterTextChange" }, ngImport: i0, template: "<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [":host{display:block;width:auto;height:auto}:host .dm-mat-select-wrapper{width:100%;height:100%;position:relative}:host .dm-mat-select-wrapper .search-section{display:flex;flex-direction:column;position:sticky;top:0;z-index:1;background-color:var(--dm-mat-select-search-section-bg-color, #faf9fd)}:host .dm-mat-select-wrapper .search-section ::ng-deep mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}:host .dm-mat-select-wrapper ::ng-deep mat-form-field>.mat-mdc-text-field-wrapper>.mat-mdc-form-field-flex>.mat-mdc-form-field-icon-suffix{padding:0 4px 0 8px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
589
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: DmMatSelect, isStandalone: true, selector: "dm-mat-select", inputs: { formFieldClass: { classPropertyName: "formFieldClass", publicName: "formFieldClass", isSignal: true, isRequired: false, transformFunction: null }, wrapperClass: { classPropertyName: "wrapperClass", publicName: "wrapperClass", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, selectAllEnabled: { classPropertyName: "selectAllEnabled", publicName: "selectAllEnabled", isSignal: true, isRequired: false, transformFunction: null }, selectAllLabel: { classPropertyName: "selectAllLabel", publicName: "selectAllLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionValueKey: { classPropertyName: "optionValueKey", publicName: "optionValueKey", isSignal: true, isRequired: false, transformFunction: null }, optionLabelKey: { classPropertyName: "optionLabelKey", publicName: "optionLabelKey", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, emptyOption: { classPropertyName: "emptyOption", publicName: "emptyOption", isSignal: true, isRequired: false, transformFunction: null }, emptyOptionLabel: { classPropertyName: "emptyOptionLabel", publicName: "emptyOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyOptionValue: { classPropertyName: "emptyOptionValue", publicName: "emptyOptionValue", isSignal: true, isRequired: false, transformFunction: null }, optionNameFormat: { classPropertyName: "optionNameFormat", publicName: "optionNameFormat", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: false, transformFunction: null }, panelWidth: { classPropertyName: "panelWidth", publicName: "panelWidth", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, searchSectionBackgroundColor: { classPropertyName: "searchSectionBackgroundColor", publicName: "searchSectionBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, sortBySelectedOnTop: { classPropertyName: "sortBySelectedOnTop", publicName: "sortBySelectedOnTop", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, noDataLabel: { classPropertyName: "noDataLabel", publicName: "noDataLabel", isSignal: true, isRequired: false, transformFunction: null }, clearSearchAfterSelect: { classPropertyName: "clearSearchAfterSelect", publicName: "clearSearchAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, clearSearchButtonTooltip: { classPropertyName: "clearSearchButtonTooltip", publicName: "clearSearchButtonTooltip", isSignal: true, isRequired: false, transformFunction: null }, focusSearchInputOnPanelOpen: { classPropertyName: "focusSearchInputOnPanelOpen", publicName: "focusSearchInputOnPanelOpen", isSignal: true, isRequired: false, transformFunction: null }, filterPredicate: { classPropertyName: "filterPredicate", publicName: "filterPredicate", isSignal: true, isRequired: false, transformFunction: null }, propertiesToSkipInSearch: { classPropertyName: "propertiesToSkipInSearch", publicName: "propertiesToSkipInSearch", isSignal: true, isRequired: false, transformFunction: null }, filterText: { classPropertyName: "filterText", publicName: "filterText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", selectionChange: "selectionChange", filterText: "filterTextChange" }, ngImport: i0, template: "<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\" style=\"width: 100%\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n (keyDown.Space)=\"$event.stopPropagation()\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [".dm-mat-select-wrapper{width:100%;position:relative}.dm-mat-select-wrapper .search-section{display:flex;flex-direction:column;position:sticky;top:0;z-index:1;background-color:var(--dm-mat-select-search-section-bg-color, #faf9fd)}.dm-mat-select-wrapper .search-section ::ng-deep mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}.dm-mat-select-wrapper ::ng-deep mat-form-field>.mat-mdc-text-field-wrapper>.mat-mdc-form-field-flex>.mat-mdc-form-field-icon-suffix{padding:0 4px 0 8px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
585
590
|
}
|
|
586
591
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmMatSelect, decorators: [{
|
|
587
592
|
type: Component,
|
|
@@ -597,16 +602,255 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
|
|
|
597
602
|
MatButtonModule,
|
|
598
603
|
MatTooltip,
|
|
599
604
|
MatSuffix,
|
|
600
|
-
], template: "<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: ["
|
|
605
|
+
], template: "<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\" style=\"width: 100%\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n (keyDown.Space)=\"$event.stopPropagation()\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [".dm-mat-select-wrapper{width:100%;position:relative}.dm-mat-select-wrapper .search-section{display:flex;flex-direction:column;position:sticky;top:0;z-index:1;background-color:var(--dm-mat-select-search-section-bg-color, #faf9fd)}.dm-mat-select-wrapper .search-section ::ng-deep mat-form-field>.mat-mdc-form-field-subscript-wrapper{display:none}.dm-mat-select-wrapper ::ng-deep mat-form-field>.mat-mdc-text-field-wrapper>.mat-mdc-form-field-flex>.mat-mdc-form-field-icon-suffix{padding:0 4px 0 8px}\n"] }]
|
|
601
606
|
}], ctorParameters: () => [], propDecorators: { formFieldClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "formFieldClass", required: false }] }], wrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapperClass", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], selectAllEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllEnabled", required: false }] }], selectAllLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllLabel", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionValueKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValueKey", required: false }] }], optionLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabelKey", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], emptyOption: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyOption", required: false }] }], emptyOptionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyOptionLabel", required: false }] }], emptyOptionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyOptionValue", required: false }] }], optionNameFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionNameFormat", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], formControl: [{ type: i0.Input, args: [{ isSignal: true, alias: "formControl", required: false }] }], panelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelWidth", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], searchSectionBackgroundColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchSectionBackgroundColor", required: false }] }], sortBySelectedOnTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortBySelectedOnTop", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], noDataLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noDataLabel", required: false }] }], clearSearchAfterSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearSearchAfterSelect", required: false }] }], clearSearchButtonTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearSearchButtonTooltip", required: false }] }], focusSearchInputOnPanelOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusSearchInputOnPanelOpen", required: false }] }], filterPredicate: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPredicate", required: false }] }], propertiesToSkipInSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "propertiesToSkipInSearch", required: false }] }], filterText: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterText", required: false }] }, { type: i0.Output, args: ["filterTextChange"] }] } });
|
|
602
607
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
608
|
+
class DmColorPicker {
|
|
609
|
+
colors = input([
|
|
610
|
+
{ color: '#FF0000' },
|
|
611
|
+
{ color: '#FFA500' },
|
|
612
|
+
{ color: '#FFFF00' },
|
|
613
|
+
{ color: '#008000' },
|
|
614
|
+
{ color: '#0000FF' },
|
|
615
|
+
{ color: '#4B0082' },
|
|
616
|
+
{ color: '#EE82EE' },
|
|
617
|
+
{ color: '#A9A9A9' },
|
|
618
|
+
{ color: '#FFFFFF' },
|
|
619
|
+
{ color: '#000000' },
|
|
620
|
+
], ...(ngDevMode ? [{ debugName: "colors" }] : []));
|
|
621
|
+
formControl = input(null, ...(ngDevMode ? [{ debugName: "formControl" }] : []));
|
|
622
|
+
internalFormControl = new FormControl('');
|
|
623
|
+
control = computed(() => this.formControl() ?? this.internalFormControl, ...(ngDevMode ? [{ debugName: "control" }] : []));
|
|
624
|
+
width = input(30, ...(ngDevMode ? [{ debugName: "width" }] : []));
|
|
625
|
+
height = input(30, ...(ngDevMode ? [{ debugName: "height" }] : []));
|
|
626
|
+
borderRadius = input('50%', ...(ngDevMode ? [{ debugName: "borderRadius" }] : []));
|
|
627
|
+
radius = computed(() => {
|
|
628
|
+
return typeof this.borderRadius() === 'number'
|
|
629
|
+
? `${this.borderRadius()}px`
|
|
630
|
+
: this.borderRadius();
|
|
631
|
+
}, ...(ngDevMode ? [{ debugName: "radius" }] : []));
|
|
632
|
+
selectedColor = signal('#FFFFFF', ...(ngDevMode ? [{ debugName: "selectedColor" }] : []));
|
|
633
|
+
tooltip = input('', ...(ngDevMode ? [{ debugName: "tooltip" }] : []));
|
|
634
|
+
tooltipPosition = input('above', ...(ngDevMode ? [{ debugName: "tooltipPosition" }] : []));
|
|
635
|
+
customColor = input(false, { ...(ngDevMode ? { debugName: "customColor" } : {}), transform: booleanAttribute });
|
|
636
|
+
opacitySlider = input(false, { ...(ngDevMode ? { debugName: "opacitySlider" } : {}), transform: booleanAttribute });
|
|
637
|
+
// @Input() opacitySliderColor: 'primary' | 'accent' | 'warn' = 'primary';
|
|
638
|
+
opacitySliderLabel = input('שקיפות', ...(ngDevMode ? [{ debugName: "opacitySliderLabel" }] : []));
|
|
639
|
+
customColorTooltip = input('צבע מותאם אישית', ...(ngDevMode ? [{ debugName: "customColorTooltip" }] : []));
|
|
640
|
+
wrapperClass = input('', ...(ngDevMode ? [{ debugName: "wrapperClass" }] : []));
|
|
641
|
+
wrapperStyle = input('', ...(ngDevMode ? [{ debugName: "wrapperStyle" }] : []));
|
|
642
|
+
onColorChange = output();
|
|
643
|
+
// @Input() ngModel: string = '';
|
|
644
|
+
// @Output() ngModelChange = new EventEmitter<string>();
|
|
645
|
+
value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
646
|
+
constructor() {
|
|
647
|
+
this.runEffects();
|
|
648
|
+
}
|
|
649
|
+
runEffects() {
|
|
650
|
+
effect(() => {
|
|
651
|
+
if (this.formControl()) {
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
this.internalFormControl.setValue(this.value(), { emitEvent: false });
|
|
655
|
+
});
|
|
656
|
+
effect((onCleanup) => {
|
|
657
|
+
const ctrl = this.control();
|
|
658
|
+
this.selectedColor.set(ctrl.value);
|
|
659
|
+
const sub = ctrl.valueChanges.subscribe((val) => {
|
|
660
|
+
this.selectedColor.set(val);
|
|
661
|
+
this.value.set(val);
|
|
662
|
+
});
|
|
663
|
+
onCleanup(() => sub.unsubscribe());
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
ngOnInit() { }
|
|
667
|
+
onColorSelected(color) {
|
|
668
|
+
// this.selectedColor.set(color);
|
|
669
|
+
this.control().setValue(color);
|
|
670
|
+
this.onColorChange.emit(color);
|
|
671
|
+
}
|
|
672
|
+
_onColorChange(event) {
|
|
673
|
+
const color = event.target.value;
|
|
674
|
+
this.onColorSelected(color);
|
|
675
|
+
}
|
|
676
|
+
formatLabel(value) {
|
|
677
|
+
return Math.round(value) + '%';
|
|
678
|
+
}
|
|
679
|
+
getOpacity() {
|
|
680
|
+
const value = this.selectedColor().slice(7) || 'FF';
|
|
681
|
+
return Math.round((parseInt(value, 16) / 255) * 100);
|
|
682
|
+
}
|
|
683
|
+
setOpacity(value) {
|
|
684
|
+
this.selectedColor.set(this.selectedColor().slice(0, 7));
|
|
685
|
+
this.selectedColor.set(this.selectedColor() + value);
|
|
686
|
+
}
|
|
687
|
+
onOpacityValueChange(event) {
|
|
688
|
+
const value = +event.target.value;
|
|
689
|
+
if (value == null)
|
|
690
|
+
return;
|
|
691
|
+
let hex = Math.round((value / 100) * 255).toString(16);
|
|
692
|
+
if (hex.length < 2)
|
|
693
|
+
hex = '0' + hex;
|
|
694
|
+
this.setOpacity(hex);
|
|
695
|
+
this.updateSelectedColor();
|
|
696
|
+
}
|
|
697
|
+
opacityChangeHandler(value) {
|
|
698
|
+
let hex = Math.round((parseInt(value) / 100) * 255).toString(16);
|
|
699
|
+
if (hex.length < 2) {
|
|
700
|
+
hex = '0' + hex;
|
|
701
|
+
}
|
|
702
|
+
this.setOpacity(hex);
|
|
703
|
+
}
|
|
704
|
+
onOpacityChange(opacity) {
|
|
705
|
+
const value = opacity.target.value;
|
|
706
|
+
this.opacityChangeHandler(value);
|
|
707
|
+
}
|
|
708
|
+
updateSelectedColor() {
|
|
709
|
+
this.onColorSelected(structuredClone(this.selectedColor()));
|
|
710
|
+
}
|
|
711
|
+
writeValue(value) { }
|
|
712
|
+
registerOnChange(fn) { }
|
|
713
|
+
registerOnTouched(fn) { }
|
|
714
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmColorPicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
715
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: DmColorPicker, isStandalone: true, selector: "dm-color-picker", inputs: { colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, opacitySlider: { classPropertyName: "opacitySlider", publicName: "opacitySlider", isSignal: true, isRequired: false, transformFunction: null }, opacitySliderLabel: { classPropertyName: "opacitySliderLabel", publicName: "opacitySliderLabel", isSignal: true, isRequired: false, transformFunction: null }, customColorTooltip: { classPropertyName: "customColorTooltip", publicName: "customColorTooltip", isSignal: true, isRequired: false, transformFunction: null }, wrapperClass: { classPropertyName: "wrapperClass", publicName: "wrapperClass", isSignal: true, isRequired: false, transformFunction: null }, wrapperStyle: { classPropertyName: "wrapperStyle", publicName: "wrapperStyle", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onColorChange: "onColorChange", value: "valueChange" }, ngImport: i0, template: "<div class=\"dm-color-picker-wrapper\" [class]=\"wrapperClass()\" [style]=\"wrapperStyle()\">\n <div\n class=\"dm-color-picker\"\n [matMenuTriggerFor]=\"colorPicker\"\n [style.background-color]=\"selectedColor()\"\n [matTooltip]=\"tooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.border-radius]=\"radius()\"\n ></div>\n @if (opacitySlider()){\n <div class=\"dm-color-picker-slider-wrapper\">\n {{ opacitySliderLabel() }}\n <mat-slider min=\"0\" max=\"100\" step=\"1\" discrete [displayWith]=\"formatLabel\">\n <input\n matSliderThumb\n [value]=\"getOpacity()\"\n (input)=\"onOpacityChange($event)\"\n #slider\n (change)=\"updateSelectedColor()\"\n />\n </mat-slider>\n </div>\n }\n</div>\n\n<mat-menu #colorPicker=\"matMenu\">\n <div class=\"dm-color-picker-menu\">\n @for (color of colors(); track color.color){\n <div\n (click)=\"onColorSelected(color.color)\"\n class=\"dm-color-div\"\n [matTooltip]=\"color.tooltip || ''\"\n matTooltipPosition=\"above\"\n [style.background-color]=\"color.color\"\n ></div>\n } @if (customColor()){<input\n (click)=\"$event.stopPropagation()\"\n [matTooltip]=\"customColorTooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [value]=\"selectedColor()\"\n type=\"color\"\n class=\"pointer\"\n (change)=\"_onColorChange($event)\"\n />}\n </div>\n</mat-menu>\n", styles: [".dm-color-picker-wrapper{display:flex;flex-direction:column;align-items:start;width:fit-content}.dm-color-picker-wrapper .dm-color-picker{cursor:pointer;padding:3px;box-shadow:0 0 2.5px 1px #00000080}.dm-color-picker-wrapper .dm-color-picker-slider-wrapper{display:flex;align-items:center;gap:5px}.dm-color-picker-menu{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;height:100%}.dm-color-picker-menu .dm-color-div{width:30px;height:30px;border-radius:50%;margin:5px;cursor:pointer;box-shadow:0 0 2.5px 1px #00000080}.dm-color-picker-menu .dm-color-div:hover{box-shadow:0 0 5px 2px #00000080}.pointer{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i1$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i3$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }] });
|
|
716
|
+
}
|
|
717
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmColorPicker, decorators: [{
|
|
718
|
+
type: Component,
|
|
719
|
+
args: [{ selector: 'dm-color-picker', standalone: true, imports: [MatMenuModule, MatTooltipModule, CommonModule, MatSliderModule], template: "<div class=\"dm-color-picker-wrapper\" [class]=\"wrapperClass()\" [style]=\"wrapperStyle()\">\n <div\n class=\"dm-color-picker\"\n [matMenuTriggerFor]=\"colorPicker\"\n [style.background-color]=\"selectedColor()\"\n [matTooltip]=\"tooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.border-radius]=\"radius()\"\n ></div>\n @if (opacitySlider()){\n <div class=\"dm-color-picker-slider-wrapper\">\n {{ opacitySliderLabel() }}\n <mat-slider min=\"0\" max=\"100\" step=\"1\" discrete [displayWith]=\"formatLabel\">\n <input\n matSliderThumb\n [value]=\"getOpacity()\"\n (input)=\"onOpacityChange($event)\"\n #slider\n (change)=\"updateSelectedColor()\"\n />\n </mat-slider>\n </div>\n }\n</div>\n\n<mat-menu #colorPicker=\"matMenu\">\n <div class=\"dm-color-picker-menu\">\n @for (color of colors(); track color.color){\n <div\n (click)=\"onColorSelected(color.color)\"\n class=\"dm-color-div\"\n [matTooltip]=\"color.tooltip || ''\"\n matTooltipPosition=\"above\"\n [style.background-color]=\"color.color\"\n ></div>\n } @if (customColor()){<input\n (click)=\"$event.stopPropagation()\"\n [matTooltip]=\"customColorTooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [value]=\"selectedColor()\"\n type=\"color\"\n class=\"pointer\"\n (change)=\"_onColorChange($event)\"\n />}\n </div>\n</mat-menu>\n", styles: [".dm-color-picker-wrapper{display:flex;flex-direction:column;align-items:start;width:fit-content}.dm-color-picker-wrapper .dm-color-picker{cursor:pointer;padding:3px;box-shadow:0 0 2.5px 1px #00000080}.dm-color-picker-wrapper .dm-color-picker-slider-wrapper{display:flex;align-items:center;gap:5px}.dm-color-picker-menu{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;height:100%}.dm-color-picker-menu .dm-color-div{width:30px;height:30px;border-radius:50%;margin:5px;cursor:pointer;box-shadow:0 0 2.5px 1px #00000080}.dm-color-picker-menu .dm-color-div:hover{box-shadow:0 0 5px 2px #00000080}.pointer{cursor:pointer}\n"] }]
|
|
720
|
+
}], ctorParameters: () => [], propDecorators: { colors: [{ type: i0.Input, args: [{ isSignal: true, alias: "colors", required: false }] }], formControl: [{ type: i0.Input, args: [{ isSignal: true, alias: "formControl", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], borderRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderRadius", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], tooltipPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipPosition", required: false }] }], customColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "customColor", required: false }] }], opacitySlider: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacitySlider", required: false }] }], opacitySliderLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacitySliderLabel", required: false }] }], customColorTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "customColorTooltip", required: false }] }], wrapperClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapperClass", required: false }] }], wrapperStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapperStyle", required: false }] }], onColorChange: [{ type: i0.Output, args: ["onColorChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
|
|
721
|
+
|
|
722
|
+
const DEFAULT_SPINNER_ID = 'dm-spinner';
|
|
723
|
+
class DmSpinnerService {
|
|
724
|
+
// visibility$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
|
|
725
|
+
visibility$ = signal(false, ...(ngDevMode ? [{ debugName: "visibility$" }] : []));
|
|
726
|
+
spinnerToShow$ = signal(DEFAULT_SPINNER_ID, ...(ngDevMode ? [{ debugName: "spinnerToShow$" }] : []));
|
|
727
|
+
spinnerTasks$ = signal(new Set(), ...(ngDevMode ? [{ debugName: "spinnerTasks$" }] : []));
|
|
728
|
+
// spinnerToShow$: BehaviorSubject<string> = new BehaviorSubject<string>(
|
|
729
|
+
// 'dm-cmps-spinner'
|
|
730
|
+
// );
|
|
731
|
+
// spinnerTasks$: BehaviorSubject<Set<string>> = new BehaviorSubject<
|
|
732
|
+
// Set<string>
|
|
733
|
+
// >(new Set());
|
|
734
|
+
spinnerText = signal('', ...(ngDevMode ? [{ debugName: "spinnerText" }] : []));
|
|
735
|
+
constructor() { }
|
|
736
|
+
showSpinner(spinnerId = DEFAULT_SPINNER_ID) {
|
|
737
|
+
this.visibility$.set(true);
|
|
738
|
+
this.spinnerToShow$.set(spinnerId);
|
|
739
|
+
}
|
|
740
|
+
startLoading(taskName, spinnerId = DEFAULT_SPINNER_ID) {
|
|
741
|
+
this.spinnerToShow$.set(spinnerId);
|
|
742
|
+
const tasks = new Set(this.spinnerTasks$());
|
|
743
|
+
tasks.add(taskName);
|
|
744
|
+
this.spinnerTasks$.set(tasks);
|
|
745
|
+
}
|
|
746
|
+
stopLoading(taskName) {
|
|
747
|
+
let tasks = new Set(this.spinnerTasks$());
|
|
748
|
+
tasks.delete(taskName);
|
|
749
|
+
this.spinnerTasks$.set(tasks);
|
|
750
|
+
if (tasks.size === 0) {
|
|
751
|
+
this.spinnerToShow$.set(DEFAULT_SPINNER_ID);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
hideSpinner() {
|
|
755
|
+
this.visibility$.set(false);
|
|
756
|
+
this.spinnerToShow$.set(DEFAULT_SPINNER_ID);
|
|
757
|
+
}
|
|
758
|
+
setSpinnerText(text) {
|
|
759
|
+
this.spinnerText.set(text);
|
|
760
|
+
}
|
|
761
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmSpinnerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
762
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmSpinnerService, providedIn: 'root' });
|
|
763
|
+
}
|
|
764
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmSpinnerService, decorators: [{
|
|
765
|
+
type: Injectable,
|
|
766
|
+
args: [{
|
|
767
|
+
providedIn: 'root',
|
|
768
|
+
}]
|
|
769
|
+
}], ctorParameters: () => [] });
|
|
770
|
+
|
|
771
|
+
class DmSpinner {
|
|
772
|
+
_spinnerService;
|
|
773
|
+
renderer;
|
|
774
|
+
styleVariables = {
|
|
775
|
+
color: { field: '--dm-spinner-color' },
|
|
776
|
+
size: { field: '--dm-spinner-size' },
|
|
777
|
+
shapeSize: { field: '--dm-spinner-shape-size' },
|
|
778
|
+
speed: { field: '--dm-spinner-speed' },
|
|
779
|
+
borderThikness: { field: '--dm-spinner-border-thikness' },
|
|
780
|
+
position: { field: '--dm-spinner-position' },
|
|
781
|
+
backgroundColor: { field: '--dm-spinner-background-color' },
|
|
782
|
+
textColor: { field: '--dm-spinner-text-color' },
|
|
783
|
+
fontSize: { field: '--dm-spinner-font-size' },
|
|
784
|
+
textPosition: { field: '--dm-spinner-text-position' },
|
|
785
|
+
_backgroundBlur: { field: '--dm-spinner-background-blur' },
|
|
786
|
+
textPositionYOffset: { field: '--dm-spinner-text-position-y-offset' },
|
|
787
|
+
};
|
|
788
|
+
color = input('#1a4bd6', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
789
|
+
type = input('rounded', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
790
|
+
gifSrc = input('https://media.tenor.com/I6kN-6X7nhAAAAAi/loading-buffering.gif', ...(ngDevMode ? [{ debugName: "gifSrc" }] : []));
|
|
791
|
+
size = input(40, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
792
|
+
shapeSize = input(25, ...(ngDevMode ? [{ debugName: "shapeSize" }] : []));
|
|
793
|
+
speed = input(2, ...(ngDevMode ? [{ debugName: "speed" }] : []));
|
|
794
|
+
borderThikness = input(5, ...(ngDevMode ? [{ debugName: "borderThikness" }] : []));
|
|
795
|
+
position = input('absolute', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
796
|
+
backgroundColor = input('', ...(ngDevMode ? [{ debugName: "backgroundColor" }] : []));
|
|
797
|
+
text = input('טוען...', ...(ngDevMode ? [{ debugName: "text" }] : []));
|
|
798
|
+
textColor = input('#000000', ...(ngDevMode ? [{ debugName: "textColor" }] : []));
|
|
799
|
+
fontSize = input(20, ...(ngDevMode ? [{ debugName: "fontSize" }] : []));
|
|
800
|
+
textPosition = input('center', ...(ngDevMode ? [{ debugName: "textPosition" }] : []));
|
|
801
|
+
colors = input(['#1a4bd6', '#000000'], ...(ngDevMode ? [{ debugName: "colors" }] : []));
|
|
802
|
+
backgroundBlur = input(5, { ...(ngDevMode ? { debugName: "backgroundBlur" } : {}), transform: numberAttribute });
|
|
803
|
+
textPositionYOffset = input(0, { ...(ngDevMode ? { debugName: "textPositionYOffset" } : {}), transform: numberAttribute });
|
|
804
|
+
_backgroundBlur = computed(() => {
|
|
805
|
+
return `${this.backgroundBlur() || 0}px`;
|
|
806
|
+
}, ...(ngDevMode ? [{ debugName: "_backgroundBlur" }] : []));
|
|
807
|
+
name = input(DEFAULT_SPINNER_ID, ...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
808
|
+
spinnerText = signal('', ...(ngDevMode ? [{ debugName: "spinnerText" }] : []));
|
|
809
|
+
constructor(_spinnerService, renderer) {
|
|
810
|
+
this._spinnerService = _spinnerService;
|
|
811
|
+
this.renderer = renderer;
|
|
812
|
+
this.runEffects();
|
|
813
|
+
}
|
|
814
|
+
runEffects() {
|
|
815
|
+
effect(() => {
|
|
816
|
+
const isVisible = this._spinnerService.visibility$();
|
|
817
|
+
if (isVisible) {
|
|
818
|
+
this.renderer.addClass(document.body, 'loading-active');
|
|
819
|
+
}
|
|
820
|
+
else {
|
|
821
|
+
this.renderer.removeClass(document.body, 'loading-active');
|
|
822
|
+
}
|
|
823
|
+
});
|
|
824
|
+
effect(() => {
|
|
825
|
+
const text = this._spinnerService.spinnerText() || this.text();
|
|
826
|
+
this.spinnerText.set(text);
|
|
827
|
+
});
|
|
828
|
+
effect(() => {
|
|
829
|
+
for (const [key, value] of Object.entries(this.styleVariables)) {
|
|
830
|
+
const fieldValue = this[key]();
|
|
831
|
+
if (fieldValue === undefined || fieldValue === null) {
|
|
832
|
+
if (value.defaultValue !== undefined) {
|
|
833
|
+
document.documentElement.style.setProperty(value.field, value.defaultValue);
|
|
834
|
+
}
|
|
835
|
+
continue;
|
|
836
|
+
}
|
|
837
|
+
document.documentElement.style.setProperty(value.field, fieldValue ?? value.defaultValue ?? '');
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
ngOnInit() { }
|
|
842
|
+
ngOnDestroy() { }
|
|
843
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmSpinner, deps: [{ token: DmSpinnerService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
844
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: DmSpinner, isStandalone: true, selector: "dm-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, gifSrc: { classPropertyName: "gifSrc", publicName: "gifSrc", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shapeSize: { classPropertyName: "shapeSize", publicName: "shapeSize", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null }, borderThikness: { classPropertyName: "borderThikness", publicName: "borderThikness", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, textColor: { classPropertyName: "textColor", publicName: "textColor", isSignal: true, isRequired: false, transformFunction: null }, fontSize: { classPropertyName: "fontSize", publicName: "fontSize", isSignal: true, isRequired: false, transformFunction: null }, textPosition: { classPropertyName: "textPosition", publicName: "textPosition", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, backgroundBlur: { classPropertyName: "backgroundBlur", publicName: "backgroundBlur", isSignal: true, isRequired: false, transformFunction: null }, textPositionYOffset: { classPropertyName: "textPositionYOffset", publicName: "textPositionYOffset", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if ( (_spinnerService.visibility$() && (_spinnerService.spinnerToShow$() == name())) ||\n(_spinnerService.spinnerTasks$().size > 0 && name() == 'dm-spinner')) {\n\n<div class=\"dm-spinner-wrapper\">\n <div class=\"dm-spinner-inner-wrapper\">\n @switch (type()) { @case ('flower') {\n <div class=\"dm-spinner-flower\"></div>\n } @case ('rounded') {\n <div class=\"dm-spinner-rounded\"></div>\n } @case ('gif') {\n <img class=\"dm-spinner-gif\" [src]=\"gifSrc()\" [width]=\"size()\" [height]=\"'auto'\" />\n } }\n <div class=\"dm-spinner-text\" [style.font-size.px]=\"fontSize()\">\n {{ spinnerText() }}\n </div>\n </div>\n</div>\n}\n", styles: [":host-context(.loading-active) .dm-spinner-wrapper{pointer-events:none}:host-context(.loading-active) .dm-spinner-wrapper{pointer-events:auto}.dm-spinner-wrapper{position:var(--dm-spinner-position, absolute);top:0;left:0;height:100%;width:100%;background-color:var(--dm-spinner-background-color, rgba(0, 0, 0, .2));z-index:9999999999;-webkit-backdrop-filter:blur(var(--dm-spinner-background-blur, 5px));backdrop-filter:blur(var(--dm-spinner-background-blur, 5px))}.dm-spinner-wrapper .dm-spinner-inner-wrapper{position:relative;width:100%;height:100%;display:block}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-rounded{width:calc(var(--dm-spinner-size, 60) * 1px);position:absolute;height:calc(var(--dm-spinner-size, 60) * 1px);transform-origin:center;top:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);left:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);border-top:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-first-color, #1a4bd6);border-right:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-second-color, #e6f0fb);border-bottom:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-first-color, #1a4bd6);border-left:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-second-color, #e6f0fb);border-radius:50%;animation:spin calc(var(--dm-spinner-speed, 2) * 1s) linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-flower{width:calc(var(--dm-spinner-shape-size, 25) * 1px);position:absolute;height:calc(var(--dm-spinner-shape-size, 25) * 1px);background-color:none;border-radius:50%;transform-origin:center;top:calc(50% - var(--dm-spinner-shape-size, 25) / 2 * 1px);left:calc(50% - var(--dm-spinner-shape-size, 25) / 2 * 1px);animation:flower calc(var(--dm-spinner-speed, 2) * 1s) linear infinite}@keyframes flower{0%{rotate:0deg;transform:scale(0);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-second-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-thired-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-fourth-color, #e6f0fb)}25%{rotate:180deg;transform:scale(1);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-fourth-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-thired-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-second-color, #e6f0fb)}50%{rotate:360deg;transform:scale(1);box-shadow:0 0 0 var(--dm-spinner-first-color, #1a4bd6),0 0 0 var(--dm-spinner-second-color, #e6f0fb),0 0 0 var(--dm-spinner-thired-color, #1a4bd6),0 0 0 var(--dm-spinner-fourth-color, #e6f0fb)}75%{rotate:540deg;transform:scale(1);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-second-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-fourth-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-thired-color, #1a4bd6)}to{rotate:720deg;transform:scale(0);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-second-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-thired-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-fourth-color, #e6f0fb)}}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-gif{width:calc(var(--dm-spinner-size, 60) * 1px);position:absolute;height:calc(var(--dm-spinner-size, 60) * 1px);transform-origin:center;top:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);left:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);background-size:cover}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-text{position:relative;display:flow-root;top:calc(50% + var(--dm-spinner-size, 60) * 1px / 2 + 5px + var(--dm-spinner-font-size, 20) * 1px / 2 + var(--dm-spinner-text-position-y-offset, 0px) * 1px);margin:0 auto;color:var(--dm-spinner-text-color, #000);text-align:center;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
845
|
+
}
|
|
846
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DmSpinner, decorators: [{
|
|
847
|
+
type: Component,
|
|
848
|
+
args: [{ selector: 'dm-spinner', standalone: true, imports: [CommonModule], template: "@if ( (_spinnerService.visibility$() && (_spinnerService.spinnerToShow$() == name())) ||\n(_spinnerService.spinnerTasks$().size > 0 && name() == 'dm-spinner')) {\n\n<div class=\"dm-spinner-wrapper\">\n <div class=\"dm-spinner-inner-wrapper\">\n @switch (type()) { @case ('flower') {\n <div class=\"dm-spinner-flower\"></div>\n } @case ('rounded') {\n <div class=\"dm-spinner-rounded\"></div>\n } @case ('gif') {\n <img class=\"dm-spinner-gif\" [src]=\"gifSrc()\" [width]=\"size()\" [height]=\"'auto'\" />\n } }\n <div class=\"dm-spinner-text\" [style.font-size.px]=\"fontSize()\">\n {{ spinnerText() }}\n </div>\n </div>\n</div>\n}\n", styles: [":host-context(.loading-active) .dm-spinner-wrapper{pointer-events:none}:host-context(.loading-active) .dm-spinner-wrapper{pointer-events:auto}.dm-spinner-wrapper{position:var(--dm-spinner-position, absolute);top:0;left:0;height:100%;width:100%;background-color:var(--dm-spinner-background-color, rgba(0, 0, 0, .2));z-index:9999999999;-webkit-backdrop-filter:blur(var(--dm-spinner-background-blur, 5px));backdrop-filter:blur(var(--dm-spinner-background-blur, 5px))}.dm-spinner-wrapper .dm-spinner-inner-wrapper{position:relative;width:100%;height:100%;display:block}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-rounded{width:calc(var(--dm-spinner-size, 60) * 1px);position:absolute;height:calc(var(--dm-spinner-size, 60) * 1px);transform-origin:center;top:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);left:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);border-top:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-first-color, #1a4bd6);border-right:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-second-color, #e6f0fb);border-bottom:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-first-color, #1a4bd6);border-left:calc(var(--dm-spinner-border-thikness, 5) * 1px) solid var(--dm-spinner-second-color, #e6f0fb);border-radius:50%;animation:spin calc(var(--dm-spinner-speed, 2) * 1s) linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-flower{width:calc(var(--dm-spinner-shape-size, 25) * 1px);position:absolute;height:calc(var(--dm-spinner-shape-size, 25) * 1px);background-color:none;border-radius:50%;transform-origin:center;top:calc(50% - var(--dm-spinner-shape-size, 25) / 2 * 1px);left:calc(50% - var(--dm-spinner-shape-size, 25) / 2 * 1px);animation:flower calc(var(--dm-spinner-speed, 2) * 1s) linear infinite}@keyframes flower{0%{rotate:0deg;transform:scale(0);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-second-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-thired-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-fourth-color, #e6f0fb)}25%{rotate:180deg;transform:scale(1);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-fourth-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-thired-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-second-color, #e6f0fb)}50%{rotate:360deg;transform:scale(1);box-shadow:0 0 0 var(--dm-spinner-first-color, #1a4bd6),0 0 0 var(--dm-spinner-second-color, #e6f0fb),0 0 0 var(--dm-spinner-thired-color, #1a4bd6),0 0 0 var(--dm-spinner-fourth-color, #e6f0fb)}75%{rotate:540deg;transform:scale(1);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-second-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 var(--dm-spinner-fourth-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 var(--dm-spinner-thired-color, #1a4bd6)}to{rotate:720deg;transform:scale(0);box-shadow:calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-first-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * 1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-second-color, #e6f0fb),calc(var(--dm-spinner-size, 60) / 2 * -1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-thired-color, #1a4bd6),calc(var(--dm-spinner-size, 60) / 2 * 1px) calc(var(--dm-spinner-size, 60) / 2 * -1px) 0 calc(var(--dm-spinner-size, 60) / 2 * 1px) var(--dm-spinner-fourth-color, #e6f0fb)}}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-gif{width:calc(var(--dm-spinner-size, 60) * 1px);position:absolute;height:calc(var(--dm-spinner-size, 60) * 1px);transform-origin:center;top:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);left:calc(50% - var(--dm-spinner-size, 60) / 2 * 1px);background-size:cover}.dm-spinner-wrapper .dm-spinner-inner-wrapper .dm-spinner-text{position:relative;display:flow-root;top:calc(50% + var(--dm-spinner-size, 60) * 1px / 2 + 5px + var(--dm-spinner-font-size, 20) * 1px / 2 + var(--dm-spinner-text-position-y-offset, 0px) * 1px);margin:0 auto;color:var(--dm-spinner-text-color, #000);text-align:center;font-weight:700}\n"] }]
|
|
849
|
+
}], ctorParameters: () => [{ type: DmSpinnerService }, { type: i0.Renderer2 }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], gifSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "gifSrc", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shapeSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "shapeSize", required: false }] }], speed: [{ type: i0.Input, args: [{ isSignal: true, alias: "speed", required: false }] }], borderThikness: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderThikness", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], backgroundColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundColor", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], textColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "textColor", required: false }] }], fontSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "fontSize", required: false }] }], textPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "textPosition", required: false }] }], colors: [{ type: i0.Input, args: [{ isSignal: true, alias: "colors", required: false }] }], backgroundBlur: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundBlur", required: false }] }], textPositionYOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "textPositionYOffset", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] } });
|
|
606
850
|
|
|
607
851
|
/**
|
|
608
852
|
* Generated bundle index. Do not edit.
|
|
609
853
|
*/
|
|
610
854
|
|
|
611
|
-
export { DmCmpsDataSource, DmMatSelect };
|
|
855
|
+
export { DmCmpsDataSource, DmColorPicker, DmMatSelect, DmSpinner, DmSpinnerService };
|
|
612
856
|
//# sourceMappingURL=dmlibs-dm-cmps.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dmlibs-dm-cmps.mjs","sources":["../../../projects/dm-cmps/src/lib/utils/dm-cmps-data-source.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/utils.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/dm-mat-select.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/dm-mat-select.html","../../../projects/dm-cmps/src/public-api.ts","../../../projects/dm-cmps/src/dmlibs-dm-cmps.ts"],"sourcesContent":["import { signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged, Subject, Subscription, switchMap } from 'rxjs';\n\nexport interface DmCmpsDataSourceSort {\n direction: 'asc' | 'desc';\n field: string;\n sortFn?: (a: any, b: any) => number;\n}\n\nexport class DmCmpsDataSource<T> implements DmCmpsDataSourceConfig<T> {\n private data: T[];\n private filteredData: T[];\n private _resultData: T[];\n\n public result = signal<T[]>([]);\n\n private paginationEnabled: boolean = false;\n private currentPageIndex: number = 0;\n private pageSize: number = 10;\n private autoPaginationAboveItemsCount: number = 100;\n private propertiesToSkipInSearchSet: Set<string> = new Set([\n '_id',\n 'createdAt',\n 'updatedAt',\n '__v',\n 'createdBy',\n 'updatedBy',\n 'creatorName',\n 'updaterName',\n ]);\n\n private searchTerm: string = '';\n\n private speratedSearch: boolean = false;\n private filterPredicate: (data: T, filter: string) => boolean = (item: T, filter: string) => {\n if (!item || !filter) {\n return true;\n }\n if (typeof item === 'string') {\n return item.toLowerCase().includes(filter.toLowerCase());\n }\n const match = (term: string) => {\n return Object.entries(item).some(\n ([key, value]) =>\n !this.propertiesToSkipInSearchSet.has(key) &&\n value != null &&\n value.toString().toLowerCase().includes(term.toLowerCase())\n );\n };\n if (this.speratedSearch) {\n const terms = filter\n .split(' ')\n .map((t) => t.trim())\n .filter((t) => !!t);\n return terms.every((term) => match(term));\n }\n return match(filter);\n };\n\n private filterByObject: Partial<T> | null = null;\n\n private fieldsToSearchIn: string[] = [];\n\n private sortMap: DmCmpsDataSourceSort[] = [];\n private sortFn: ((a: T, b: T) => number) | null = null;\n\n private searchTerms$: Subject<string> = new Subject<string>();\n private searchDebounceTime = signal<number>(300);\n\n private readonly subscription = new Subscription();\n\n /**\n * builds a new DmCmpsDataSource\n * @param initialData The data to be used as datasource\n */\n constructor(initialData: T[] = []) {\n this.data = initialData;\n this.filteredData = [...initialData];\n this._resultData = [...initialData];\n if (\n this.autoPaginationAboveItemsCount > 0 &&\n initialData.length > this.autoPaginationAboveItemsCount\n ) {\n this.paginationEnabled = true;\n }\n this.updateResultSignal();\n\n this.subscription.add(\n toObservable(this.searchDebounceTime)\n .pipe(\n switchMap((debounceMs) =>\n this.searchTerms$.pipe(\n debounceTime(debounceMs),\n distinctUntilChanged((p, c) => p === c)\n )\n )\n )\n .subscribe((term) => {\n this.searchTerm = term;\n this.applySearch();\n })\n );\n // this.searchTerms$\n // .pipe(\n // debounceTime(this.searchDebounceTime),\n // distinctUntilChanged((p, c) => p === c && c != '')\n // )\n // .subscribe((term) => {\n // this.searchTerm = term;\n // this.applySearch();\n // });\n }\n\n private updateResultData() {\n this.applySorting();\n this.applySearch();\n this.updateResultSignal();\n }\n\n disconnect(): void {\n this.subscription.unsubscribe();\n }\n\n setAutoPaginationAboveItemsCount(count: number): void {\n this.autoPaginationAboveItemsCount = count;\n if (count > 0 && this._resultData.length > count) {\n this.paginationEnabled = true;\n } else {\n this.paginationEnabled = false;\n }\n this.updateResultSignal();\n }\n\n applyPagination(pageSize?: number): void {\n if (pageSize !== undefined && pageSize < 5) {\n throw new Error('Page size must be at least 5');\n }\n this.currentPageIndex = 0;\n this.paginationEnabled = true;\n if (pageSize) {\n this.pageSize = pageSize;\n }\n }\n\n setPageSize(pageSize: number): void {\n if (pageSize < 5) {\n throw new Error('Page size must be at least 5');\n }\n this.pageSize = pageSize;\n this.updateResultSignal();\n }\n\n disablePagination(): void {\n this.currentPageIndex = 0;\n this.paginationEnabled = false;\n this.updateResultSignal();\n }\n\n nextPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n const totalPages = Math.ceil(this._resultData.length / this.pageSize);\n if (this.currentPageIndex < totalPages - 1) {\n this.currentPageIndex++;\n }\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n previousPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n if (this.currentPageIndex > 0) {\n this.currentPageIndex--;\n }\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n firstPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n this.currentPageIndex = 0;\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n lastPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n const totalPages = Math.ceil(this._resultData.length / this.pageSize);\n this.currentPageIndex = totalPages - 1;\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n getCurrentPageIndex(): number {\n return this.currentPageIndex;\n }\n\n getTotalPagesCount(): number {\n if (this.pageSize <= 0) {\n return 1;\n }\n return Math.ceil(this._resultData.length / this.pageSize);\n }\n\n setSearchDebounceTime(milliseconds: number): void {\n this.searchDebounceTime.set(milliseconds);\n }\n\n setDatasource(newData: T[]) {\n this.data = [...newData];\n this.applyObjectFilter();\n }\n\n private updateResultSignal() {\n const res = (() => {\n if (\n this.pageSize > 0 &&\n (this.paginationEnabled ||\n (this.autoPaginationAboveItemsCount > 0 &&\n this._resultData.length > this.autoPaginationAboveItemsCount))\n ) {\n const startIndex = this.currentPageIndex * this.pageSize;\n return this._resultData.slice(startIndex, startIndex + this.pageSize);\n }\n return this._resultData;\n })();\n this.result.set(res);\n }\n\n // get resultData(): T[] {\n // if (\n // this.pageSize > 0 &&\n // (this.paginationEnabled ||\n // (this.autoPaginationAboveItemsCount > 0 &&\n // this._resultData.length > this.autoPaginationAboveItemsCount))\n // ) {\n // const startIndex = this.currentPageIndex * this.pageSize;\n // return this.filteredData.slice(startIndex, startIndex + this.pageSize);\n // }\n\n // return this.filteredData;\n // }\n\n search(filterTerm: string): void {\n this.searchTerms$.next(filterTerm);\n }\n\n private applySearch(): void {\n if (!this.searchTerm) {\n this._resultData = [...this.filteredData];\n } else {\n this.currentPageIndex = 0;\n this._resultData = this.filteredData.filter((item) =>\n this.filterPredicate(item, this.searchTerm)\n );\n }\n this.updateResultSignal();\n }\n\n setFilterPredicate(predicate: (data: T, filter: string) => boolean): void {\n this.filterPredicate = predicate;\n }\n\n setFieldsToSearchIn(fields: string[]) {\n if (!fields || fields.length === 0) {\n throw new Error('Fields to search in cannot be empty');\n }\n this.fieldsToSearchIn = fields;\n this.setFilterPredicate((item: T, filter: string) => {\n if (!item || !filter) {\n return true;\n }\n if (this.speratedSearch) {\n const terms = filter\n .split(' ')\n .map((t) => t.trim())\n .filter((t) => !!t);\n return terms.every((term) => {\n return this.fieldsToSearchIn.some((field) => {\n const value = (item as any)[field];\n if (value != null) {\n return value.toString().toLowerCase().includes(term.toLowerCase());\n }\n return false;\n });\n });\n }\n return this.fieldsToSearchIn.some((field) => {\n const value = (item as any)[field];\n if (value != null) {\n return value.toString().toLowerCase().includes(filter.toLowerCase());\n }\n return false;\n });\n });\n }\n\n setSortFunction(sortFn: ((a: T, b: T) => number) | null): void {\n this.sortFn = sortFn;\n }\n\n private applySorting() {\n if (this.sortMap.length === 0 && !this.sortFn) {\n return;\n }\n if (this.sortFn) {\n this.filteredData.sort(this.sortFn);\n return;\n }\n\n this.filteredData.sort((a, b) => {\n for (const sort of this.sortMap) {\n let comparison = 0;\n if (sort.sortFn) {\n comparison = sort.sortFn(a, b);\n } else {\n const aValue = (a as any)[sort.field];\n const bValue = (b as any)[sort.field];\n if (isNaN(aValue) || isNaN(bValue)) {\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n comparison = aValue.localeCompare(bValue);\n } else {\n comparison = 0;\n }\n } else if (aValue < bValue) {\n comparison = -1;\n } else if (aValue > bValue) {\n comparison = 1;\n } else {\n comparison = 0;\n }\n }\n\n if (comparison !== 0) {\n return sort.direction === 'asc' ? comparison : -comparison;\n }\n }\n return 0;\n });\n }\n\n sortByFields(sortMap: DmCmpsDataSourceSort[]): void {\n this.sortMap = sortMap;\n this.sortFn = null;\n this.updateResultData();\n }\n\n resetSorting(): void {\n this.sortMap = [];\n this.sortFn = null;\n this.applyObjectFilter();\n }\n\n setFilterByObjectFields(filterObj: Partial<T> | null): void {\n this.filterByObject = filterObj;\n this.applyObjectFilter();\n }\n\n private applyObjectFilter(): void {\n if (!this.filterByObject) {\n this.filteredData = [...this.data];\n } else {\n this.filteredData = this.data.filter((item) => {\n for (const [key, value] of Object.entries(this.filterByObject!)) {\n if ((item as any)[key] !== value) {\n return false;\n }\n }\n return true;\n });\n }\n this.updateResultData();\n }\n\n applySperatedSearch(enabled: boolean): void {\n this.speratedSearch = enabled;\n }\n\n setPropertiesToSkipInSearch(...props: string[]): void {\n this.propertiesToSkipInSearchSet = new Set(props);\n }\n}\n\ninterface DmCmpsDataSourceConfig<T = any> {\n /**\n * Disconnects the data source and performs any necessary cleanup.\n */\n disconnect: () => void;\n\n /**\n * Sets auto pagination threshold.\n * When the number of items exceeds the given count, pagination will be enabled automatically.\n * Use -1 to disable auto pagination.\n *\n * @param count Number of items threshold\n * @default 100\n */\n setAutoPaginationAboveItemsCount: (count: number) => void;\n\n /**\n * ApplyPagination - Enables pagination with the given page size.\n *\n * @param pageSize Number of items per page, optional, default is 10, must be at least 5\n * @default 10\n */\n applyPagination: (pageSize?: number) => void;\n\n /**\n * Sets the page size for pagination.\n * @param pageSize Number of items per page, must be at least 5\n */\n setPageSize: (pageSize: number) => void;\n\n /**\n * Disables pagination.\n */\n disablePagination: () => void;\n\n /**\n * Moves to the next page and returns the current page index.\n * @returns New current page index\n */\n nextPage: () => number;\n\n /**\n * Moves to the previous page and returns the current page index.\n * @returns New current page index\n */\n previousPage: () => number;\n\n /**\n * Moves to the first page and returns the current page index.\n * @returns New current page index\n */\n firstPage: () => number;\n\n /**\n * Moves to the last page and returns the current page index.\n * @returns New current page index\n */\n lastPage: () => number;\n\n /**\n * Gets the current page index.\n * @returns Current page index\n */\n getCurrentPageIndex: () => number;\n\n /**\n * Gets the total number of pages.\n * @returns Total pages count\n */\n getTotalPagesCount: () => number;\n\n /**\n * Sets the debounce time for search input.\n * @param milliseconds Debounce time in milliseconds\n * @default 300\n */\n setSearchDebounceTime: (milliseconds: number) => void;\n\n /**\n * Sets the data source.\n * @param newData New data array\n */\n setDatasource: (newData: T[]) => void;\n\n /**\n * Performs a search with the given filter term.\n * @param filterTerm The term to filter the data\n */\n search: (filterTerm: string) => void;\n\n /**\n * Sets the filter predicate function.\n * @param predicate Function to filter data items\n *\n * @default - A default predicate that checks if the item includes the filter term in any of its non Object properties.\n */\n setFilterPredicate: (predicate: (data: T, filter: string) => boolean) => void;\n\n /**\n * Sets the fields to search in.\n * @param fields Array of field names to search in\n *\n * @default - All non Object properties of the data items.\n */\n setFieldsToSearchIn: (fields: string[]) => void;\n\n /**\n * Sets a custom sort function.\n * @param sortFn Custom sort function\n *\n * @default - No custom sort function.\n */\n setSortFunction: (sortFn: ((a: T, b: T) => number) | null) => void;\n\n /**\n * Sorts the data by the given fields and directions.\n * @param sortMap\n * @default - No sorting applied.\n */\n sortByFields: (sortMap: DmCmpsDataSourceSort[]) => void;\n\n /**\n * Resets any applied sorting.\n */\n resetSorting: () => void;\n\n /**\n * Sets filter by object fields.\n * @param filterObj Object with fields and values to filter by\n * @default null (no filtering)\n */\n setFilterByObjectFields: (filterObj: Partial<T> | null) => void;\n\n /**\n * Enables or disables separated search.\n * When enabled, the search term is split by spaces and each term is searched separately.\n * @param enabled true to enable separated search, false to disable\n * @default false\n */\n applySperatedSearch: (enabled: boolean) => void;\n\n /**\n * Sets keys to skip in default search.\n * @param Props Array of properties names to skip\n * @returns\n */\n setPropertiesToSkipInSearch: (...props: string[]) => void;\n}\n","import {\n Input,\n InputSignal,\n InputSignalWithTransform,\n ModelSignal,\n OutputEmitterRef,\n} from '@angular/core';\nimport { DmMatSelectOutput } from './dm-mat-select';\nimport { FormControl } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\n\nexport const SEARCH_SECTION_BG_COLOR_VAR = '--dm-mat-select-search-section-bg-color';\nexport const SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE = '#faf9fd';\n\n/**\n * Public API for <dm-mat-select>\n *\n * This interface describes all inputs, outputs, and configuration options.\n * It is used only for documentation and IntelliSense — not for runtime behavior.\n */\nexport interface DmMatSelectConfig<T = any> {\n /**\n * CSS classes applied to the mat-form-field element.\n * ```\n * type string\n * ```\n *\n */\n formFieldClass?: InputSignal<string>;\n\n /**\n * CSS classes applied to the wrapper div element.\n * ```\n * type string\n * ```\n *\n */\n wrapperClass?: InputSignal<string>;\n\n /**\n * Appearance style of the select component.\n * ```\n * type 'fill' | 'outline'\n * ```\n *\n * @default fill\n */\n appearance?: InputSignal<'fill' | 'outline'>;\n\n /**\n * Enables multiple selection mode.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n multiple?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Enables a \"Select All\" option in the dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n selectAllEnabled?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Text of the \"Select All\" checkbox.\n * ```\n * type string\n * ```\n *\n * @default 'בחר הכל'\n */\n selectAllLabel?: InputSignal<string>;\n\n /**\n * Label shown in the form field.\n * ```\n * type string\n * ```\n *\n * @default ''\n */\n label?: InputSignal<string>;\n\n /**\n * The list of items shown in the dropdown.\n * ```\n * type T[]\n * ```\n *\n * @default []\n */\n options: InputSignal<T[]>;\n\n /**\n * The property to use as the unique identifier of each item.\n * ```\n * type keyof T\n * ```\n *\n * @default '_id'\n */\n optionValueKey?: InputSignal<keyof T>;\n\n /**\n * The property to use as the display label.\n * ```\n * type keyof T\n * ```\n *\n * @default 'name'\n */\n optionLabelKey?: InputSignal<keyof T>;\n\n /**\n * Enables searching inside the dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n searchable?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Function to filter options based on search input.\n * ```\n * type ((option: T, filter: string) => boolean) | null\n * ```\n *\n * @default null\n */\n filterPredicate?: InputSignal<((option: T, filter: string) => boolean) | null>;\n\n /**\n * Marks field as required.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n required?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Disables the component.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n disabled?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Custom error message.\n * ```\n * type string | null\n * ```\n *\n * @default null\n */\n error?: InputSignal<string | null>;\n\n /**\n * Placeholder text for the search input.\n * ```\n * type string\n * ```\n *\n * @default 'חפש...'\n */\n searchPlaceholder?: InputSignal<string>;\n\n /**\n * Enables an empty option in the select dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n emptyOption?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Label for the empty option.\n * ```\n * type string\n * ```\n *\n * @default 'ללא'\n */\n emptyOptionLabel?: InputSignal<string>;\n\n /**\n * Value for the empty option.\n * ```\n * type null | string | number\n * ```\n *\n * @default null\n */\n emptyOptionValue?: InputSignal<T | null>;\n\n /**\n * Function to format option names for display.\n * ```\n * type (option: T) => string\n * ```\n *\n */\n optionNameFormat?: InputSignal<((option: T) => string) | null>;\n\n /**\n * Width of the select panel.\n * To set the panel width to match the trigger width, use 'auto'.\n * To set a custom width, provide a CSS width value (e.g., '300px', '50%', etc.).\n * To have the panel width adjust to its content, set to null or empty string.\n * ```\n * type string | null\n * ```\n *\n * @default 'auto'\n */\n panelWidth?: InputSignal<string | null>;\n\n /**\\\n * Custom CSS classes applied to the select panel.\n * Can be a string, array of strings, Set of strings, or an object with class names as keys and boolean values.\n * Accepts the same values as ngClass.\n * ```\n * type string | string[] | Set<string> | { [key: string]: any }\n * ```\n *\n * @default ''\n */\n panelClass?: InputSignal<string | string[] | Set<string> | { [key: string]: any }>;\n\n /**\\\n * Background color for the search section.\n * Uses CSS variable '--dm-mat-select-search-section-bg-color'.\n * ```\n * type string | null\n * ```\n *\n * @default '#faf9fd'\n */\n searchSectionBackgroundColor?: InputSignal<string | null>;\n\n /**\n * Sort selected items at top of the list.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n sortBySelectedOnTop?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * A signal that holds the selected value(s) of the select component.\n * ```\n * type ModelSignal<DmMatSelectOutput<T>>\n * ```\n *\n * @default null\n */\n value?: ModelSignal<DmMatSelectOutput<T>>;\n\n /**\n * FormControl to bind to the select component.\n * ```\n * type FormControl<DmMatSelectOutput<T>> | null\n * ```\n *\n * @default null\n */\n formControl?: InputSignal<FormControl<DmMatSelectOutput<T>> | null>;\n\n /**\n * Event emitted when the selection changes.\n * ```\n * type OutputEmitterRef<MatSelectChange<DmMatSelectOutput<T>>>\n * ```\n *\n *\n */\n selectionChange?: OutputEmitterRef<MatSelectChange<DmMatSelectOutput<T>>>;\n\n /**\n * Icon name to display in the select trigger.\n * Can be a Material icon name or a Bootstrap icon html (like <i class=\"bi bi-name\"></i>).\n * ```\n * type string | null\n * ```\n *\n * @default null\n */\n icon?: InputSignal<string | null>;\n\n /**\n * Label to show in disabled option when there is no data to display.\n * ```\n * type string\n * ```\n *\n * @default 'אין נתונים להצגה'\n */\n noDataLabel?: InputSignal<string>;\n\n /**\n * Cleans the search input after selecting an option.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n clearSearchAfterSelect?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Tooltip text for the clear search button.\n * ```\n * type string\n * ```\n * @default 'נקה חיפוש'\n */\n clearSearchButtonTooltip?: InputSignal<string>;\n\n /**\n * Automatically focuses the search input when the panel opens.\n * ```\n * type boolean\n * ```\n *\n * @default true\n */\n focusSearchInputOnPanelOpen?: InputSignalWithTransform<boolean, unknown>;\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n input,\n model,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { MatFormFieldModule, MatSuffix } from '@angular/material/form-field';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { DmCmpsDataSource } from '../utils/dm-cmps-data-source';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatOptionSelectionChange } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport {\n DmMatSelectConfig,\n SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE,\n SEARCH_SECTION_BG_COLOR_VAR,\n} from './utils';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nexport type DmMatSelectOutput<T> = T | T[] | string | string[] | number | number[] | null;\ntype DmMatSelectOption<T> = T & { __dmMatSelectFormattedName: string };\n\n@Component({\n selector: 'dm-mat-select',\n standalone: true,\n imports: [\n MatFormFieldModule,\n MatSelectModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n MatCheckboxModule,\n MatIcon,\n MatButtonModule,\n MatTooltip,\n MatSuffix,\n ],\n templateUrl: './dm-mat-select.html',\n styleUrl: './dm-mat-select.scss',\n})\nexport class DmMatSelect<T = any> implements DmMatSelectConfig<T>, OnDestroy {\n formFieldClass = input<string>('');\n wrapperClass = input<string>('');\n appearance = input<'fill' | 'outline'>('fill');\n multiple = input(false, { transform: booleanAttribute });\n selectAllEnabled = input(false, { transform: booleanAttribute });\n selectAllLabel = input<string>('בחר הכל');\n label = input<string>('');\n options = input<T[]>([]);\n optionValueKey = input<keyof T>('_id' as keyof T);\n optionLabelKey = input<keyof T>('name' as keyof T);\n searchable = input(false, { transform: booleanAttribute });\n\n required = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n error = input<string | null>(null);\n\n searchPlaceholder = input<string>('חפש...');\n\n emptyOption = input(false, { transform: booleanAttribute });\n emptyOptionLabel = input<string>('ללא');\n emptyOptionValue = input<T | null>(null);\n\n optionNameFormat = input<((option: T) => string) | null>(null);\n private _optionNameFormat: ((option: T) => string) | null = null;\n\n protected datasource = signal<DmCmpsDataSource<DmMatSelectOption<T>>>(\n new DmCmpsDataSource<DmMatSelectOption<T>>()\n );\n\n value = model<DmMatSelectOutput<T>>(null);\n\n formControl = input<FormControl<DmMatSelectOutput<T>> | null>(null);\n panelWidth = input<string | null>('auto');\n panelClass = input<string | string[] | Set<string> | { [key: string]: any }>('');\n searchSectionBackgroundColor = input<string | null>(SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE);\n\n sortBySelectedOnTop = input(false, { transform: booleanAttribute });\n\n private internalControl = new FormControl<DmMatSelectOutput<T>>(null);\n\n protected control = computed(() => this.formControl() ?? this.internalControl);\n\n selectionChange = output<MatSelectChange<DmMatSelectOutput<T>>>();\n\n icon = input<string | null>(null);\n\n protected isBootstrapIcon = computed(() => {\n return this.icon() ? this.icon()!.includes('bi-') : false;\n });\n\n noDataLabel = input<string>('אין נתונים להצגה');\n\n clearSearchAfterSelect = input(true, { transform: booleanAttribute });\n\n clearSearchButtonTooltip = input<string>('נקה חיפוש');\n\n focusSearchInputOnPanelOpen = input(true, { transform: booleanAttribute });\n\n filterPredicate = input<((option: T, filterText: string) => boolean) | null>(null);\n private _filterPredicate: ((option: T, filterText: string) => boolean) | null = null;\n\n propertiesToSkipInSearch = input<string[]>([\n '_id',\n 'createdAt',\n 'updatedAt',\n '__v',\n 'createdBy',\n 'updatedBy',\n 'creatorName',\n 'updaterName',\n ]);\n\n simpleArray = computed(() => {\n return typeof this.options()[0] === 'string' || typeof this.options()[0] === 'number';\n });\n\n private selectedOptionsIdsSet = signal<Set<any>>(new Set());\n\n protected filterText = model<string>('');\n\n protected checkIfAllSelected = computed(() => {\n const options = this.datasource().result();\n const selected = this.control().value;\n const allSelected =\n options.length > 0 &&\n Array.isArray(selected) &&\n selected.length >= options.length &&\n options.every((option) => {\n const optionValue = this.getOptionValue(option);\n return this.selectedOptionsIdsSet().has(optionValue);\n });\n\n return allSelected;\n });\n\n constructor() {\n this.runEffects();\n }\n\n ngOnDestroy(): void {\n this.datasource().disconnect();\n }\n\n setOptionsFormattedNames(options: DmMatSelectOption<T>[]) {\n if (this._optionNameFormat) {\n for (const option of options) {\n option.__dmMatSelectFormattedName = this._optionNameFormat(option);\n }\n }\n }\n\n private runEffects() {\n effect(() => {\n this._filterPredicate = this.filterPredicate();\n this._optionNameFormat = this.optionNameFormat();\n this.datasource().setPropertiesToSkipInSearch(...this.propertiesToSkipInSearch());\n });\n\n effect(() => {\n const opts = this.options() as DmMatSelectOption<T>[];\n this.setOptionsFormattedNames(opts);\n this.datasource().setAutoPaginationAboveItemsCount(-1);\n if (this._filterPredicate) {\n this.datasource().setFilterPredicate(this._filterPredicate);\n }\n if (this.sortBySelectedOnTop() && this.multiple()) {\n this.datasource().setSortFunction(\n ((a: T, b: T) => {\n const aSelected = this.selectedOptionsIdsSet().has(this.getOptionValue(a));\n const bSelected = this.selectedOptionsIdsSet().has(this.getOptionValue(b));\n if (aSelected && !bSelected) {\n return -1;\n } else if (!aSelected && bSelected) {\n return 1;\n } else {\n return 0;\n }\n }).bind(this)\n );\n }\n this.datasource().setDatasource(opts);\n });\n\n effect(() => {\n if (this.formControl()) {\n return;\n }\n this.internalControl.setValue(this.value(), { emitEvent: false });\n });\n\n effect((onCleanup) => {\n const ctrl = this.control();\n const setSelectedIdsSet = (selectedVal: DmMatSelectOutput<T>) => {\n const newSelectedIdsSet = new Set<any>();\n if (this.multiple()) {\n const arr = Array.isArray(selectedVal) ? selectedVal : [];\n for (const item of arr) {\n const id = this.getOptionValue(item as T);\n newSelectedIdsSet.add(id);\n }\n this.selectedOptionsIdsSet.set(newSelectedIdsSet);\n }\n };\n setSelectedIdsSet(ctrl.value);\n\n const sub = ctrl.valueChanges.subscribe((val) => {\n setSelectedIdsSet(val);\n this.value.set(val);\n });\n\n onCleanup(() => sub.unsubscribe());\n });\n\n effect(() => {\n document.documentElement.style.setProperty(\n SEARCH_SECTION_BG_COLOR_VAR,\n this.searchSectionBackgroundColor() ?? SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE\n );\n });\n }\n\n protected applyFilter(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n this.filterText.set(target.value);\n this.datasource().search(this.filterText());\n }\n\n protected selectionChangeHandler(event: MatSelectChange<T | T[] | null>) {\n this.selectionChange.emit(event);\n }\n\n private getOptionValue(option: T): any {\n if (this.simpleArray()) return option;\n return typeof option === 'object' && option != null\n ? (option as any)[this.optionValueKey()]\n : option;\n }\n\n protected onSelectionChangeHandler(event: MatOptionSelectionChange, option: T | null) {\n if (!event.isUserInput) return;\n const selected = event.source.selected;\n const currentValue = this.control().value;\n if (this.multiple()) {\n if (!option) return;\n const arr = Array.isArray(currentValue) ? currentValue : [];\n let newValue: (string | number | T)[];\n if (selected) {\n newValue = [...arr, this.getOptionValue(option)];\n } else {\n newValue = arr.filter((v) => v !== this.getOptionValue(option));\n }\n this.control().setValue(newValue as DmMatSelectOutput<T>);\n } else {\n if (!option) {\n this.control().setValue(this.emptyOptionValue());\n return;\n }\n if (selected) {\n this.control().setValue(this.getOptionValue(option) as DmMatSelectOutput<T>);\n } else {\n this.control().setValue(null);\n }\n }\n if (this.clearSearchAfterSelect()) {\n this.resetSearch();\n }\n }\n\n protected selectAllChange(event: MatCheckboxChange) {\n if (event.checked) {\n const allValues = this.datasource()\n .result()\n .map((option) => this.getOptionValue(option));\n const newValues = Array.isArray(this.control().value)\n ? (this.control().value as (string | T)[])\n : [];\n for (const val of allValues) {\n if (!this.selectedOptionsIdsSet().has(val)) {\n newValues.push(val);\n }\n }\n this.control().setValue(newValues as DmMatSelectOutput<T>);\n } else {\n const selectedValues = (this.control().value as (string | T)[]).filter((val) => {\n const allOptionValues = this.datasource()\n .result()\n .map((option) => this.getOptionValue(option));\n return !allOptionValues.includes(val as any);\n });\n this.control().setValue(selectedValues as DmMatSelectOutput<T>);\n }\n }\n\n protected resetSearch() {\n this.filterText.set('');\n this.datasource().search('');\n }\n\n protected onPanelOpened() {\n if (this.focusSearchInputOnPanelOpen()) {\n const searchInput = document.getElementById('dm-mat-select-search-input') as HTMLInputElement;\n setTimeout(() => {\n if (searchInput) {\n searchInput.focus();\n }\n }, 0);\n }\n }\n}\n","<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n","/*\n * Public API Surface of dm-cmps\n */\n\nexport { DmCmpsDataSource } from './lib/utils/dm-cmps-data-source';\nexport type { DmCmpsDataSourceSort } from './lib/utils/dm-cmps-data-source';\nexport { DmMatSelect } from './lib/dm-mat-select/dm-mat-select';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;MAUa,gBAAgB,CAAA;AACnB,IAAA,IAAI;AACJ,IAAA,YAAY;AACZ,IAAA,WAAW;AAEZ,IAAA,MAAM,GAAG,MAAM,CAAM,EAAE,kDAAC;IAEvB,iBAAiB,GAAY,KAAK;IAClC,gBAAgB,GAAW,CAAC;IAC5B,QAAQ,GAAW,EAAE;IACrB,6BAA6B,GAAW,GAAG;IAC3C,2BAA2B,GAAgB,IAAI,GAAG,CAAC;QACzD,KAAK;QACL,WAAW;QACX,WAAW;QACX,KAAK;QACL,WAAW;QACX,WAAW;QACX,aAAa;QACb,aAAa;AACd,KAAA,CAAC;IAEM,UAAU,GAAW,EAAE;IAEvB,cAAc,GAAY,KAAK;AAC/B,IAAA,eAAe,GAAyC,CAAC,IAAO,EAAE,MAAc,KAAI;AAC1F,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1D;AACA,QAAA,MAAM,KAAK,GAAG,CAAC,IAAY,KAAI;YAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KACX,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,gBAAA,KAAK,IAAI,IAAI;AACb,gBAAA,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAC9D;AACH,QAAA,CAAC;AACD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,KAAK,GAAG;iBACX,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;iBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C;AACA,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,IAAA,CAAC;IAEO,cAAc,GAAsB,IAAI;IAExC,gBAAgB,GAAa,EAAE;IAE/B,OAAO,GAA2B,EAAE;IACpC,MAAM,GAAoC,IAAI;AAE9C,IAAA,YAAY,GAAoB,IAAI,OAAO,EAAU;AACrD,IAAA,kBAAkB,GAAG,MAAM,CAAS,GAAG,8DAAC;AAE/B,IAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AAElD;;;AAGG;AACH,IAAA,WAAA,CAAY,cAAmB,EAAE,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC;AACnC,QAAA,IACE,IAAI,CAAC,6BAA6B,GAAG,CAAC;AACtC,YAAA,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,6BAA6B,EACvD;AACA,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;QACA,IAAI,CAAC,kBAAkB,EAAE;QAEzB,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,YAAY,CAAC,IAAI,CAAC,kBAAkB;AACjC,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,UAAU,KACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,YAAY,CAAC,UAAU,CAAC,EACxB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACxC,CACF;AAEF,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,WAAW,EAAE;QACpB,CAAC,CAAC,CACL;;;;;;;;;;IAUH;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAEA,IAAA,gCAAgC,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,6BAA6B,GAAG,KAAK;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE;AAChD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAChC;QACA,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,eAAe,CAAC,QAAiB,EAAA;QAC/B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC7B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QAC1B;IACF;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC9B,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrE,IAAI,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,gBAAgB,EAAE;QACzB;QACA,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,gBAAgB,EAAE;QACzB;QACA,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrE,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,CAAC;QACtC,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC;QACV;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3D;AAEA,IAAA,qBAAqB,CAAC,YAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC;IAC3C;AAEA,IAAA,aAAa,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,GAAG,GAAG,CAAC,MAAK;AAChB,YAAA,IACE,IAAI,CAAC,QAAQ,GAAG,CAAC;iBAChB,IAAI,CAAC,iBAAiB;AACrB,qBAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC;wBACrC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,6BAA6B,CAAC,CAAC,EAClE;gBACA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AACxD,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvE;YACA,OAAO,IAAI,CAAC,WAAW;QACzB,CAAC,GAAG;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB;;;;;;;;;;;;;AAgBA,IAAA,MAAM,CAAC,UAAkB,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACpC;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3C;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAC5C;QACH;QACA,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,kBAAkB,CAAC,SAA+C,EAAA;AAChE,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;IAClC;AAEA,IAAA,mBAAmB,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;QACxD;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;QAC9B,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAO,EAAE,MAAc,KAAI;AAClD,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,KAAK,GAAG;qBACX,KAAK,CAAC,GAAG;qBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;qBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAI;oBAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC1C,wBAAA,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC;AAClC,wBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,4BAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACpE;AACA,wBAAA,OAAO,KAAK;AACd,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;YACA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC1C,gBAAA,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC;AAClC,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,oBAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACtE;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,MAAuC,EAAA;AACrD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC7C;QACF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACnC;QACF;QAEA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9B,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,IAAI,UAAU,GAAG,CAAC;AAClB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChC;qBAAO;oBACL,MAAM,MAAM,GAAI,CAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,MAAM,MAAM,GAAI,CAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;wBAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5D,4BAAA,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;wBAC3C;6BAAO;4BACL,UAAU,GAAG,CAAC;wBAChB;oBACF;AAAO,yBAAA,IAAI,MAAM,GAAG,MAAM,EAAE;wBAC1B,UAAU,GAAG,CAAC,CAAC;oBACjB;AAAO,yBAAA,IAAI,MAAM,GAAG,MAAM,EAAE;wBAC1B,UAAU,GAAG,CAAC;oBAChB;yBAAO;wBACL,UAAU,GAAG,CAAC;oBAChB;gBACF;AAEA,gBAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,oBAAA,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,UAAU,GAAG,CAAC,UAAU;gBAC5D;YACF;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,OAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA,IAAA,uBAAuB,CAAC,SAA4B,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAC/B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpC;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AAC5C,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAe,CAAC,EAAE;AAC/D,oBAAA,IAAK,IAAY,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AAChC,wBAAA,OAAO,KAAK;oBACd;gBACF;AACA,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC,CAAC;QACJ;QACA,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;IAC/B;IAEA,2BAA2B,CAAC,GAAG,KAAe,EAAA;QAC5C,IAAI,CAAC,2BAA2B,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;IACnD;AACD;;AC1XM,MAAM,2BAA2B,GAAG,yCAAyC;AAC7E,MAAM,qCAAqC,GAAG,SAAS;;MCsCjD,WAAW,CAAA;AACtB,IAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;AAClC,IAAA,YAAY,GAAG,KAAK,CAAS,EAAE,wDAAC;AAChC,IAAA,UAAU,GAAG,KAAK,CAAqB,MAAM,sDAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,gBAAgB,GAAG,KAAK,CAAC,KAAK,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAChE,IAAA,cAAc,GAAG,KAAK,CAAS,SAAS,0DAAC;AACzC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,OAAO,GAAG,KAAK,CAAM,EAAE,mDAAC;AACxB,IAAA,cAAc,GAAG,KAAK,CAAU,KAAgB,0DAAC;AACjD,IAAA,cAAc,GAAG,KAAK,CAAU,MAAiB,0DAAC;IAClD,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE1D,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC;AAElC,IAAA,iBAAiB,GAAG,KAAK,CAAS,QAAQ,6DAAC;IAE3C,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC3D,IAAA,gBAAgB,GAAG,KAAK,CAAS,KAAK,4DAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAW,IAAI,4DAAC;AAExC,IAAA,gBAAgB,GAAG,KAAK,CAAiC,IAAI,4DAAC;IACtD,iBAAiB,GAAmC,IAAI;AAEtD,IAAA,UAAU,GAAG,MAAM,CAC3B,IAAI,gBAAgB,EAAwB,sDAC7C;AAED,IAAA,KAAK,GAAG,KAAK,CAAuB,IAAI,iDAAC;AAEzC,IAAA,WAAW,GAAG,KAAK,CAA2C,IAAI,uDAAC;AACnE,IAAA,UAAU,GAAG,KAAK,CAAgB,MAAM,sDAAC;AACzC,IAAA,UAAU,GAAG,KAAK,CAA2D,EAAE,sDAAC;AAChF,IAAA,4BAA4B,GAAG,KAAK,CAAgB,qCAAqC,wEAAC;IAE1F,mBAAmB,GAAG,KAAK,CAAC,KAAK,gEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D,IAAA,eAAe,GAAG,IAAI,WAAW,CAAuB,IAAI,CAAC;AAE3D,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,eAAe,mDAAC;IAE9E,eAAe,GAAG,MAAM,EAAyC;AAEjE,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,gDAAC;AAEvB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACxC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK;AAC3D,IAAA,CAAC,2DAAC;AAEF,IAAA,WAAW,GAAG,KAAK,CAAS,kBAAkB,uDAAC;IAE/C,sBAAsB,GAAG,KAAK,CAAC,IAAI,mEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAErE,IAAA,wBAAwB,GAAG,KAAK,CAAS,WAAW,oEAAC;IAErD,2BAA2B,GAAG,KAAK,CAAC,IAAI,wEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1E,IAAA,eAAe,GAAG,KAAK,CAAsD,IAAI,2DAAC;IAC1E,gBAAgB,GAAwD,IAAI;IAEpF,wBAAwB,GAAG,KAAK,CAAW;QACzC,KAAK;QACL,WAAW;QACX,WAAW;QACX,KAAK;QACL,WAAW;QACX,WAAW;QACX,aAAa;QACb,aAAa;AACd,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ;AACvF,IAAA,CAAC,uDAAC;AAEM,IAAA,qBAAqB,GAAG,MAAM,CAAW,IAAI,GAAG,EAAE,iEAAC;AAEjD,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,sDAAC;AAE9B,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;AACrC,QAAA,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,GAAG,CAAC;AAClB,YAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACvB,YAAA,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;AACjC,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAI;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC/C,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,YAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,WAAW;AACpB,IAAA,CAAC,8DAAC;AAEF,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE;IAChC;AAEA,IAAA,wBAAwB,CAAC,OAA+B,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACpE;QACF;IACF;IAEQ,UAAU,GAAA;QAChB,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,EAAE,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAA4B;AACrD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC7D;YACA,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjD,gBAAA,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,CAC/B,CAAC,CAAC,CAAI,EAAE,CAAI,KAAI;AACd,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1E,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1E,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE;wBAC3B,OAAO,CAAC,CAAC;oBACX;AAAO,yBAAA,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;AAClC,wBAAA,OAAO,CAAC;oBACV;yBAAO;AACL,wBAAA,OAAO,CAAC;oBACV;AACF,gBAAA,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CACd;YACH;YACA,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB;YACF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnE,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,MAAM,iBAAiB,GAAG,CAAC,WAAiC,KAAI;AAC9D,gBAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAO;AACxC,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,oBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,EAAE;AACzD,oBAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;wBACtB,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAS,CAAC;AACzC,wBAAA,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B;AACA,oBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBACnD;AACF,YAAA,CAAC;AACD,YAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;gBAC9C,iBAAiB,CAAC,GAAG,CAAC;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,2BAA2B,EAC3B,IAAI,CAAC,4BAA4B,EAAE,IAAI,qCAAqC,CAC7E;AACH,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,WAAW,CAAC,KAAoB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;QAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7C;AAEU,IAAA,sBAAsB,CAAC,KAAsC,EAAA;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AAEQ,IAAA,cAAc,CAAC,MAAS,EAAA;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,MAAM;AACrC,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI;AAC7C,cAAG,MAAc,CAAC,IAAI,CAAC,cAAc,EAAE;cACrC,MAAM;IACZ;IAEU,wBAAwB,CAAC,KAA+B,EAAE,MAAgB,EAAA;QAClF,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,EAAE;AAC3D,YAAA,IAAI,QAAiC;YACrC,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAClD;iBAAO;AACL,gBAAA,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACjE;YACA,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAgC,CAAC;QAC3D;aAAO;YACL,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChD;YACF;YACA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAyB,CAAC;YAC9E;iBAAO;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC/B;QACF;AACA,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEU,IAAA,eAAe,CAAC,KAAwB,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AAC9B,iBAAA,MAAM;AACN,iBAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/C,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;AAClD,kBAAG,IAAI,CAAC,OAAO,EAAE,CAAC;kBAChB,EAAE;AACN,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1C,oBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBACrB;YACF;YACA,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,SAAiC,CAAC;QAC5D;aAAO;AACL,YAAA,MAAM,cAAc,GAAI,IAAI,CAAC,OAAO,EAAE,CAAC,KAAwB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAC7E,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU;AACpC,qBAAA,MAAM;AACN,qBAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/C,gBAAA,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAU,CAAC;AAC9C,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAsC,CAAC;QACjE;IACF;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE,EAAE;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,4BAA4B,CAAqB;YAC7F,UAAU,CAAC,MAAK;gBACd,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,KAAK,EAAE;gBACrB;YACF,CAAC,EAAE,CAAC,CAAC;QACP;IACF;uGA5QW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDxB,8pFAoFA,EAAA,MAAA,EAAA,CAAA,okBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjDI,kBAAkB,wgBAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,8mBACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,obACjB,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMD,WAAW,EAAA,UAAA,EAAA,CAAA;kBAnBvB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP;wBACP,kBAAkB;wBAClB,eAAe;wBACf,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,iBAAiB;wBACjB,OAAO;wBACP,eAAe;wBACf,UAAU;wBACV,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,8pFAAA,EAAA,MAAA,EAAA,CAAA,okBAAA,CAAA,EAAA;;;AE9CH;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"dmlibs-dm-cmps.mjs","sources":["../../../projects/dm-cmps/src/lib/utils/dm-cmps-data-source.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/utils.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/dm-mat-select.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/dm-mat-select.html","../../../projects/dm-cmps/src/lib/dm-color-picker/dm-color-picker.ts","../../../projects/dm-cmps/src/lib/dm-color-picker/dm-color-picker.html","../../../projects/dm-cmps/src/lib/dm-spinner/dm-spinner.service.ts","../../../projects/dm-cmps/src/lib/dm-spinner/dm-spinner.ts","../../../projects/dm-cmps/src/lib/dm-spinner/dm-spinner.html","../../../projects/dm-cmps/src/dmlibs-dm-cmps.ts"],"sourcesContent":["import { signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged, Subject, Subscription, switchMap } from 'rxjs';\n\nexport interface DmCmpsDataSourceSort {\n direction: 'asc' | 'desc';\n field: string;\n sortFn?: (a: any, b: any) => number;\n}\n\nexport class DmCmpsDataSource<T> implements DmCmpsDataSourceConfig<T> {\n private data: T[];\n private filteredData: T[];\n private _resultData: T[];\n\n public result = signal<T[]>([]);\n\n private paginationEnabled: boolean = false;\n private currentPageIndex: number = 0;\n private pageSize: number = 10;\n private autoPaginationAboveItemsCount: number = 100;\n private propertiesToSkipInSearchSet: Set<string> = new Set([\n '_id',\n 'createdAt',\n 'updatedAt',\n '__v',\n 'createdBy',\n 'updatedBy',\n 'creatorName',\n 'updaterName',\n ]);\n\n private searchTerm: string = '';\n\n private speratedSearch: boolean = false;\n private filterPredicate: (data: T, filter: string) => boolean = (item: T, filter: string) => {\n if (!item || !filter) {\n return true;\n }\n if (typeof item === 'string') {\n return item.toLowerCase().includes(filter.toLowerCase());\n }\n const match = (term: string) => {\n return Object.entries(item).some(\n ([key, value]) =>\n !this.propertiesToSkipInSearchSet.has(key) &&\n value != null &&\n value.toString().toLowerCase().includes(term.toLowerCase())\n );\n };\n if (this.speratedSearch) {\n const terms = filter\n .split(' ')\n .map((t) => t.trim())\n .filter((t) => !!t);\n return terms.every((term) => match(term));\n }\n return match(filter);\n };\n\n private filterByObject: Partial<T> | null = null;\n\n private fieldsToSearchIn: string[] = [];\n\n private sortMap: DmCmpsDataSourceSort[] = [];\n private sortFn: ((a: T, b: T) => number) | null = null;\n\n private searchTerms$: Subject<string> = new Subject<string>();\n private searchDebounceTime = signal<number>(300);\n\n private readonly subscription = new Subscription();\n\n /**\n * builds a new DmCmpsDataSource\n * @param initialData The data to be used as datasource\n */\n constructor(initialData: T[] = []) {\n this.data = initialData;\n this.filteredData = [...initialData];\n this._resultData = [...initialData];\n if (\n this.autoPaginationAboveItemsCount > 0 &&\n initialData.length > this.autoPaginationAboveItemsCount\n ) {\n this.paginationEnabled = true;\n }\n this.updateResultSignal();\n\n this.subscription.add(\n toObservable(this.searchDebounceTime)\n .pipe(\n switchMap((debounceMs) =>\n this.searchTerms$.pipe(\n debounceTime(debounceMs),\n distinctUntilChanged((p, c) => p === c)\n )\n )\n )\n .subscribe((term) => {\n this.searchTerm = term;\n this.applySearch();\n })\n );\n // this.searchTerms$\n // .pipe(\n // debounceTime(this.searchDebounceTime),\n // distinctUntilChanged((p, c) => p === c && c != '')\n // )\n // .subscribe((term) => {\n // this.searchTerm = term;\n // this.applySearch();\n // });\n }\n\n private updateResultData() {\n this.applySorting();\n this.applySearch();\n this.updateResultSignal();\n }\n\n disconnect(): void {\n this.subscription.unsubscribe();\n }\n\n setAutoPaginationAboveItemsCount(count: number): void {\n this.autoPaginationAboveItemsCount = count;\n if (count > 0 && this._resultData.length > count) {\n this.paginationEnabled = true;\n } else {\n this.paginationEnabled = false;\n }\n this.updateResultSignal();\n }\n\n applyPagination(pageSize?: number): void {\n if (pageSize !== undefined && pageSize < 5) {\n throw new Error('Page size must be at least 5');\n }\n this.currentPageIndex = 0;\n this.paginationEnabled = true;\n if (pageSize) {\n this.pageSize = pageSize;\n }\n }\n\n setPageSize(pageSize: number): void {\n if (pageSize < 5) {\n throw new Error('Page size must be at least 5');\n }\n this.pageSize = pageSize;\n this.updateResultSignal();\n }\n\n disablePagination(): void {\n this.currentPageIndex = 0;\n this.paginationEnabled = false;\n this.updateResultSignal();\n }\n\n nextPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n const totalPages = Math.ceil(this._resultData.length / this.pageSize);\n if (this.currentPageIndex < totalPages - 1) {\n this.currentPageIndex++;\n }\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n previousPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n if (this.currentPageIndex > 0) {\n this.currentPageIndex--;\n }\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n firstPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n this.currentPageIndex = 0;\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n lastPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n const totalPages = Math.ceil(this._resultData.length / this.pageSize);\n this.currentPageIndex = totalPages - 1;\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n getCurrentPageIndex(): number {\n return this.currentPageIndex;\n }\n\n getTotalPagesCount(): number {\n if (this.pageSize <= 0) {\n return 1;\n }\n return Math.ceil(this._resultData.length / this.pageSize);\n }\n\n setSearchDebounceTime(milliseconds: number): void {\n this.searchDebounceTime.set(milliseconds);\n }\n\n setDatasource(newData: T[]) {\n this.data = [...newData];\n this.applyObjectFilter();\n }\n\n private updateResultSignal() {\n const res = (() => {\n if (\n this.pageSize > 0 &&\n (this.paginationEnabled ||\n (this.autoPaginationAboveItemsCount > 0 &&\n this._resultData.length > this.autoPaginationAboveItemsCount))\n ) {\n const startIndex = this.currentPageIndex * this.pageSize;\n return this._resultData.slice(startIndex, startIndex + this.pageSize);\n }\n return this._resultData;\n })();\n this.result.set(res);\n }\n\n // get resultData(): T[] {\n // if (\n // this.pageSize > 0 &&\n // (this.paginationEnabled ||\n // (this.autoPaginationAboveItemsCount > 0 &&\n // this._resultData.length > this.autoPaginationAboveItemsCount))\n // ) {\n // const startIndex = this.currentPageIndex * this.pageSize;\n // return this.filteredData.slice(startIndex, startIndex + this.pageSize);\n // }\n\n // return this.filteredData;\n // }\n\n search(filterTerm: string): void {\n this.searchTerms$.next(filterTerm);\n }\n\n private applySearch(): void {\n if (!this.searchTerm) {\n this._resultData = [...this.filteredData];\n } else {\n this.currentPageIndex = 0;\n this._resultData = this.filteredData.filter((item) =>\n this.filterPredicate(item, this.searchTerm)\n );\n }\n this.updateResultSignal();\n }\n\n setFilterPredicate(predicate: (data: T, filter: string) => boolean): void {\n this.filterPredicate = predicate;\n }\n\n setFieldsToSearchIn(fields: string[]) {\n if (!fields || fields.length === 0) {\n throw new Error('Fields to search in cannot be empty');\n }\n this.fieldsToSearchIn = fields;\n this.setFilterPredicate((item: T, filter: string) => {\n if (!item || !filter) {\n return true;\n }\n if (this.speratedSearch) {\n const terms = filter\n .split(' ')\n .map((t) => t.trim())\n .filter((t) => !!t);\n return terms.every((term) => {\n return this.fieldsToSearchIn.some((field) => {\n const value = (item as any)[field];\n if (value != null) {\n return value.toString().toLowerCase().includes(term.toLowerCase());\n }\n return false;\n });\n });\n }\n return this.fieldsToSearchIn.some((field) => {\n const value = (item as any)[field];\n if (value != null) {\n return value.toString().toLowerCase().includes(filter.toLowerCase());\n }\n return false;\n });\n });\n }\n\n setSortFunction(sortFn: ((a: T, b: T) => number) | null): void {\n this.sortFn = sortFn;\n }\n\n private applySorting() {\n if (this.sortMap.length === 0 && !this.sortFn) {\n return;\n }\n if (this.sortFn) {\n this.filteredData.sort(this.sortFn);\n return;\n }\n\n this.filteredData.sort((a, b) => {\n for (const sort of this.sortMap) {\n let comparison = 0;\n if (sort.sortFn) {\n comparison = sort.sortFn(a, b);\n } else {\n const aValue = (a as any)[sort.field];\n const bValue = (b as any)[sort.field];\n if (isNaN(aValue) || isNaN(bValue)) {\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n comparison = aValue.localeCompare(bValue);\n } else {\n comparison = 0;\n }\n } else if (aValue < bValue) {\n comparison = -1;\n } else if (aValue > bValue) {\n comparison = 1;\n } else {\n comparison = 0;\n }\n }\n\n if (comparison !== 0) {\n return sort.direction === 'asc' ? comparison : -comparison;\n }\n }\n return 0;\n });\n }\n\n sortByFields(sortMap: DmCmpsDataSourceSort[]): void {\n this.sortMap = sortMap;\n this.sortFn = null;\n this.updateResultData();\n }\n\n resetSorting(): void {\n this.sortMap = [];\n this.sortFn = null;\n this.applyObjectFilter();\n }\n\n setFilterByObjectFields(filterObj: Partial<T> | null): void {\n this.filterByObject = filterObj;\n this.applyObjectFilter();\n }\n\n private applyObjectFilter(): void {\n if (!this.filterByObject) {\n this.filteredData = [...this.data];\n } else {\n this.filteredData = this.data.filter((item) => {\n for (const [key, value] of Object.entries(this.filterByObject!)) {\n if ((item as any)[key] !== value) {\n return false;\n }\n }\n return true;\n });\n }\n this.updateResultData();\n }\n\n applySperatedSearch(enabled: boolean): void {\n this.speratedSearch = enabled;\n }\n\n setPropertiesToSkipInSearch(...props: string[]): void {\n this.propertiesToSkipInSearchSet = new Set(props);\n }\n}\n\ninterface DmCmpsDataSourceConfig<T = any> {\n /**\n * Disconnects the data source and performs any necessary cleanup.\n */\n disconnect: () => void;\n\n /**\n * Sets auto pagination threshold.\n * When the number of items exceeds the given count, pagination will be enabled automatically.\n * Use -1 to disable auto pagination.\n *\n * @param count Number of items threshold\n * @default 100\n */\n setAutoPaginationAboveItemsCount: (count: number) => void;\n\n /**\n * ApplyPagination - Enables pagination with the given page size.\n *\n * @param pageSize Number of items per page, optional, default is 10, must be at least 5\n * @default 10\n */\n applyPagination: (pageSize?: number) => void;\n\n /**\n * Sets the page size for pagination.\n * @param pageSize Number of items per page, must be at least 5\n */\n setPageSize: (pageSize: number) => void;\n\n /**\n * Disables pagination.\n */\n disablePagination: () => void;\n\n /**\n * Moves to the next page and returns the current page index.\n * @returns New current page index\n */\n nextPage: () => number;\n\n /**\n * Moves to the previous page and returns the current page index.\n * @returns New current page index\n */\n previousPage: () => number;\n\n /**\n * Moves to the first page and returns the current page index.\n * @returns New current page index\n */\n firstPage: () => number;\n\n /**\n * Moves to the last page and returns the current page index.\n * @returns New current page index\n */\n lastPage: () => number;\n\n /**\n * Gets the current page index.\n * @returns Current page index\n */\n getCurrentPageIndex: () => number;\n\n /**\n * Gets the total number of pages.\n * @returns Total pages count\n */\n getTotalPagesCount: () => number;\n\n /**\n * Sets the debounce time for search input.\n * @param milliseconds Debounce time in milliseconds\n * @default 300\n */\n setSearchDebounceTime: (milliseconds: number) => void;\n\n /**\n * Sets the data source.\n * @param newData New data array\n */\n setDatasource: (newData: T[]) => void;\n\n /**\n * Performs a search with the given filter term.\n * @param filterTerm The term to filter the data\n */\n search: (filterTerm: string) => void;\n\n /**\n * Sets the filter predicate function.\n * @param predicate Function to filter data items\n *\n * @default - A default predicate that checks if the item includes the filter term in any of its non Object properties.\n */\n setFilterPredicate: (predicate: (data: T, filter: string) => boolean) => void;\n\n /**\n * Sets the fields to search in.\n * @param fields Array of field names to search in\n *\n * @default - All non Object properties of the data items.\n */\n setFieldsToSearchIn: (fields: string[]) => void;\n\n /**\n * Sets a custom sort function.\n * @param sortFn Custom sort function\n *\n * @default - No custom sort function.\n */\n setSortFunction: (sortFn: ((a: T, b: T) => number) | null) => void;\n\n /**\n * Sorts the data by the given fields and directions.\n * @param sortMap\n * @default - No sorting applied.\n */\n sortByFields: (sortMap: DmCmpsDataSourceSort[]) => void;\n\n /**\n * Resets any applied sorting.\n */\n resetSorting: () => void;\n\n /**\n * Sets filter by object fields.\n * @param filterObj Object with fields and values to filter by\n * @default null (no filtering)\n */\n setFilterByObjectFields: (filterObj: Partial<T> | null) => void;\n\n /**\n * Enables or disables separated search.\n * When enabled, the search term is split by spaces and each term is searched separately.\n * @param enabled true to enable separated search, false to disable\n * @default false\n */\n applySperatedSearch: (enabled: boolean) => void;\n\n /**\n * Sets keys to skip in default search.\n * @param Props Array of properties names to skip\n * @returns\n */\n setPropertiesToSkipInSearch: (...props: string[]) => void;\n}\n","import {\n Input,\n InputSignal,\n InputSignalWithTransform,\n ModelSignal,\n OutputEmitterRef,\n} from '@angular/core';\nimport { DmMatSelectOutput } from './dm-mat-select';\nimport { FormControl } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\n\nexport const SEARCH_SECTION_BG_COLOR_VAR = '--dm-mat-select-search-section-bg-color';\nexport const SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE = '#faf9fd';\n\n/**\n * Public API for <dm-mat-select>\n *\n * This interface describes all inputs, outputs, and configuration options.\n * It is used only for documentation and IntelliSense — not for runtime behavior.\n */\nexport interface DmMatSelectConfig<T = any> {\n /**\n * CSS classes applied to the mat-form-field element.\n * ```\n * type string\n * ```\n *\n */\n formFieldClass?: InputSignal<string>;\n\n /**\n * CSS classes applied to the wrapper div element.\n * ```\n * type string\n * ```\n *\n */\n wrapperClass?: InputSignal<string>;\n\n /**\n * Appearance style of the select component.\n * ```\n * type 'fill' | 'outline'\n * ```\n *\n * @default fill\n */\n appearance?: InputSignal<'fill' | 'outline'>;\n\n /**\n * Enables multiple selection mode.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n multiple?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Enables a \"Select All\" option in the dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n selectAllEnabled?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Text of the \"Select All\" checkbox.\n * ```\n * type string\n * ```\n *\n * @default 'בחר הכל'\n */\n selectAllLabel?: InputSignal<string>;\n\n /**\n * Label shown in the form field.\n * ```\n * type string\n * ```\n *\n * @default ''\n */\n label?: InputSignal<string>;\n\n /**\n * The list of items shown in the dropdown.\n * ```\n * type T[]\n * ```\n *\n * @default []\n */\n options: InputSignal<T[]>;\n\n /**\n * The property to use as the unique identifier of each item.\n * ```\n * type keyof T\n * ```\n *\n * @default '_id'\n */\n optionValueKey?: InputSignal<keyof T>;\n\n /**\n * The property to use as the display label.\n * ```\n * type keyof T\n * ```\n *\n * @default 'name'\n */\n optionLabelKey?: InputSignal<keyof T>;\n\n /**\n * Enables searching inside the dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n searchable?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Function to filter options based on search input.\n * ```\n * type ((option: T, filter: string) => boolean) | null\n * ```\n *\n * @default null\n */\n filterPredicate?: InputSignal<((option: T, filter: string) => boolean) | null>;\n\n /**\n * Marks field as required.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n required?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Disables the component.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n disabled?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Custom error message.\n * ```\n * type string | null\n * ```\n *\n * @default null\n */\n error?: InputSignal<string | null>;\n\n /**\n * Placeholder text for the search input.\n * ```\n * type string\n * ```\n *\n * @default 'חפש...'\n */\n searchPlaceholder?: InputSignal<string>;\n\n /**\n * Enables an empty option in the select dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n emptyOption?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Label for the empty option.\n * ```\n * type string\n * ```\n *\n * @default 'ללא'\n */\n emptyOptionLabel?: InputSignal<string>;\n\n /**\n * Value for the empty option.\n * ```\n * type null | string | number\n * ```\n *\n * @default null\n */\n emptyOptionValue?: InputSignal<T | null>;\n\n /**\n * Function to format option names for display.\n * ```\n * type (option: T) => string\n * ```\n *\n */\n optionNameFormat?: InputSignal<((option: T) => string) | null>;\n\n /**\n * Width of the select panel.\n * To set the panel width to match the trigger width, use 'auto'.\n * To set a custom width, provide a CSS width value (e.g., '300px', '50%', etc.).\n * To have the panel width adjust to its content, set to null or empty string.\n * ```\n * type string | null\n * ```\n *\n * @default 'auto'\n */\n panelWidth?: InputSignal<string | null>;\n\n /**\\\n * Custom CSS classes applied to the select panel.\n * Can be a string, array of strings, Set of strings, or an object with class names as keys and boolean values.\n * Accepts the same values as ngClass.\n * ```\n * type string | string[] | Set<string> | { [key: string]: any }\n * ```\n *\n * @default ''\n */\n panelClass?: InputSignal<string | string[] | Set<string> | { [key: string]: any }>;\n\n /**\\\n * Background color for the search section.\n * Uses CSS variable '--dm-mat-select-search-section-bg-color'.\n * ```\n * type string | null\n * ```\n *\n * @default '#faf9fd'\n */\n searchSectionBackgroundColor?: InputSignal<string | null>;\n\n /**\n * Sort selected items at top of the list.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n sortBySelectedOnTop?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * A signal that holds the selected value(s) of the select component.\n * ```\n * type ModelSignal<DmMatSelectOutput<T>>\n * ```\n *\n * @default null\n */\n value?: ModelSignal<DmMatSelectOutput<T>>;\n\n /**\n * FormControl to bind to the select component.\n * ```\n * type FormControl<DmMatSelectOutput<T>> | null\n * ```\n *\n * @default null\n */\n formControl?: InputSignal<FormControl<DmMatSelectOutput<T>> | null>;\n\n /**\n * Event emitted when the selection changes.\n * ```\n * type OutputEmitterRef<MatSelectChange<DmMatSelectOutput<T>>>\n * ```\n *\n *\n */\n selectionChange?: OutputEmitterRef<MatSelectChange<DmMatSelectOutput<T>>>;\n\n /**\n * Icon name to display in the select trigger.\n * Can be a Material icon name or a Bootstrap icon html (like <i class=\"bi bi-name\"></i>).\n * ```\n * type string | null\n * ```\n *\n * @default null\n */\n icon?: InputSignal<string | null>;\n\n /**\n * Label to show in disabled option when there is no data to display.\n * ```\n * type string\n * ```\n *\n * @default 'אין נתונים להצגה'\n */\n noDataLabel?: InputSignal<string>;\n\n /**\n * Cleans the search input after selecting an option.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n clearSearchAfterSelect?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Tooltip text for the clear search button.\n * ```\n * type string\n * ```\n * @default 'נקה חיפוש'\n */\n clearSearchButtonTooltip?: InputSignal<string>;\n\n /**\n * Automatically focuses the search input when the panel opens.\n * ```\n * type boolean\n * ```\n *\n * @default true\n */\n focusSearchInputOnPanelOpen?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Properties to skip in default search.\n * ```\n * type string[]\n * ```\n *\n * @default ['_id',\n 'createdAt',\n 'updatedAt',\n '__v',\n 'createdBy',\n 'updatedBy',\n 'creatorName',\n 'updaterName',]\n */\n propertiesToSkipInSearch?: InputSignal<string[]>;\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n input,\n model,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { MatFormFieldModule, MatSuffix } from '@angular/material/form-field';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { DmCmpsDataSource } from '../utils/dm-cmps-data-source';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatOptionSelectionChange } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport {\n DmMatSelectConfig,\n SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE,\n SEARCH_SECTION_BG_COLOR_VAR,\n} from './utils';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nexport type DmMatSelectOutput<T> = T | T[] | string | string[] | number | number[] | null;\ntype DmMatSelectOption<T> = T & { __dmMatSelectFormattedName: string };\n\n@Component({\n selector: 'dm-mat-select',\n standalone: true,\n imports: [\n MatFormFieldModule,\n MatSelectModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n MatCheckboxModule,\n MatIcon,\n MatButtonModule,\n MatTooltip,\n MatSuffix,\n ],\n templateUrl: './dm-mat-select.html',\n styleUrl: './dm-mat-select.scss',\n})\nexport class DmMatSelect<T = any> implements DmMatSelectConfig<T>, OnDestroy {\n formFieldClass = input<string>('');\n wrapperClass = input<string>('');\n appearance = input<'fill' | 'outline'>('fill');\n multiple = input(false, { transform: booleanAttribute });\n selectAllEnabled = input(false, { transform: booleanAttribute });\n selectAllLabel = input<string>('בחר הכל');\n label = input<string>('');\n options = input<T[]>([]);\n optionValueKey = input<keyof T>('_id' as keyof T);\n optionLabelKey = input<keyof T>('name' as keyof T);\n searchable = input(false, { transform: booleanAttribute });\n\n required = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n error = input<string | null>(null);\n\n searchPlaceholder = input<string>('חפש...');\n\n emptyOption = input(false, { transform: booleanAttribute });\n emptyOptionLabel = input<string>('ללא');\n emptyOptionValue = input<T | null>(null);\n\n optionNameFormat = input<((option: T) => string) | null>(null);\n private _optionNameFormat: ((option: T) => string) | null = null;\n\n protected datasource = signal<DmCmpsDataSource<DmMatSelectOption<T>>>(\n new DmCmpsDataSource<DmMatSelectOption<T>>()\n );\n\n value = model<DmMatSelectOutput<T>>(null);\n\n formControl = input<FormControl<DmMatSelectOutput<T>> | null>(null);\n panelWidth = input<string | null>('auto');\n panelClass = input<string | string[] | Set<string> | { [key: string]: any }>('');\n searchSectionBackgroundColor = input<string | null>(SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE);\n\n sortBySelectedOnTop = input(false, { transform: booleanAttribute });\n\n private internalControl = new FormControl<DmMatSelectOutput<T>>(null);\n\n protected control = computed(() => this.formControl() ?? this.internalControl);\n\n selectionChange = output<MatSelectChange<DmMatSelectOutput<T>>>();\n\n icon = input<string | null>(null);\n\n protected isBootstrapIcon = computed(() => {\n return this.icon() ? this.icon()!.includes('bi-') : false;\n });\n\n noDataLabel = input<string>('אין נתונים להצגה');\n\n clearSearchAfterSelect = input(true, { transform: booleanAttribute });\n\n clearSearchButtonTooltip = input<string>('נקה חיפוש');\n\n focusSearchInputOnPanelOpen = input(true, { transform: booleanAttribute });\n\n filterPredicate = input<((option: T, filterText: string) => boolean) | null>(null);\n private _filterPredicate: ((option: T, filterText: string) => boolean) | null = null;\n\n propertiesToSkipInSearch = input<string[]>([\n '_id',\n 'createdAt',\n 'updatedAt',\n '__v',\n 'createdBy',\n 'updatedBy',\n 'creatorName',\n 'updaterName',\n ]);\n\n simpleArray = computed(() => {\n return typeof this.options()[0] === 'string' || typeof this.options()[0] === 'number';\n });\n\n private selectedOptionsIdsSet = signal<Set<any>>(new Set());\n\n protected filterText = model<string>('');\n\n protected checkIfAllSelected = computed(() => {\n const options = this.datasource().result();\n const selected = this.control().value;\n const allSelected =\n options.length > 0 &&\n Array.isArray(selected) &&\n selected.length >= options.length &&\n options.every((option) => {\n const optionValue = this.getOptionValue(option);\n return this.selectedOptionsIdsSet().has(optionValue);\n });\n\n return allSelected;\n });\n\n constructor() {\n this.runEffects();\n }\n\n ngOnDestroy(): void {\n this.datasource().disconnect();\n }\n\n setOptionsFormattedNames(options: DmMatSelectOption<T>[]) {\n if (this._optionNameFormat) {\n for (const option of options) {\n option.__dmMatSelectFormattedName = this._optionNameFormat(option);\n }\n }\n }\n\n private runEffects() {\n effect(() => {\n this._filterPredicate = this.filterPredicate();\n this._optionNameFormat = this.optionNameFormat();\n this.datasource().setPropertiesToSkipInSearch(...this.propertiesToSkipInSearch());\n });\n\n effect(() => {\n const opts = this.options() as DmMatSelectOption<T>[];\n this.setOptionsFormattedNames(opts);\n this.datasource().setAutoPaginationAboveItemsCount(-1);\n if (this._filterPredicate) {\n this.datasource().setFilterPredicate(this._filterPredicate);\n }\n if (this.sortBySelectedOnTop() && this.multiple()) {\n this.datasource().setSortFunction(\n ((a: T, b: T) => {\n const aSelected = this.selectedOptionsIdsSet().has(this.getOptionValue(a));\n const bSelected = this.selectedOptionsIdsSet().has(this.getOptionValue(b));\n if (aSelected && !bSelected) {\n return -1;\n } else if (!aSelected && bSelected) {\n return 1;\n } else {\n return 0;\n }\n }).bind(this)\n );\n }\n this.datasource().setDatasource(opts);\n });\n\n effect(() => {\n if (this.formControl()) {\n return;\n }\n this.internalControl.setValue(this.value(), { emitEvent: false });\n });\n\n effect((onCleanup) => {\n const ctrl = this.control();\n const setSelectedIdsSet = (selectedVal: DmMatSelectOutput<T>) => {\n const newSelectedIdsSet = new Set<any>();\n if (this.multiple()) {\n const arr = Array.isArray(selectedVal) ? selectedVal : [];\n for (const item of arr) {\n const id = this.getOptionValue(item as T);\n newSelectedIdsSet.add(id);\n }\n this.selectedOptionsIdsSet.set(newSelectedIdsSet);\n }\n };\n setSelectedIdsSet(ctrl.value);\n\n const sub = ctrl.valueChanges.subscribe((val) => {\n setSelectedIdsSet(val);\n this.value.set(val);\n });\n\n onCleanup(() => sub.unsubscribe());\n });\n\n effect(() => {\n document.documentElement.style.setProperty(\n SEARCH_SECTION_BG_COLOR_VAR,\n this.searchSectionBackgroundColor() ?? SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE\n );\n });\n }\n\n protected applyFilter(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n this.filterText.set(target.value);\n this.datasource().search(this.filterText());\n }\n\n protected selectionChangeHandler(event: MatSelectChange<T | T[] | null>) {\n this.selectionChange.emit(event);\n }\n\n private getOptionValue(option: T): any {\n if (this.simpleArray()) return option;\n return typeof option === 'object' && option != null\n ? (option as any)[this.optionValueKey()]\n : option;\n }\n\n protected onSelectionChangeHandler(event: MatOptionSelectionChange, option: T | null) {\n if (!event.isUserInput) return;\n const selected = event.source.selected;\n const currentValue = this.control().value;\n if (this.multiple()) {\n if (!option) return;\n const arr = Array.isArray(currentValue) ? currentValue : [];\n let newValue: (string | number | T)[];\n if (selected) {\n newValue = [...arr, this.getOptionValue(option)];\n } else {\n newValue = arr.filter((v) => v !== this.getOptionValue(option));\n }\n this.control().setValue(newValue as DmMatSelectOutput<T>);\n } else {\n if (!option) {\n this.control().setValue(this.emptyOptionValue());\n return;\n }\n if (selected) {\n this.control().setValue(this.getOptionValue(option) as DmMatSelectOutput<T>);\n } else {\n this.control().setValue(null);\n }\n }\n if (this.clearSearchAfterSelect()) {\n this.resetSearch();\n }\n }\n\n protected selectAllChange(event: MatCheckboxChange) {\n if (event.checked) {\n const allValues = this.datasource()\n .result()\n .map((option) => this.getOptionValue(option));\n const newValues = Array.isArray(this.control().value)\n ? (this.control().value as (string | T)[])\n : [];\n for (const val of allValues) {\n if (!this.selectedOptionsIdsSet().has(val)) {\n newValues.push(val);\n }\n }\n this.control().setValue(newValues as DmMatSelectOutput<T>);\n } else {\n const selectedValues = (this.control().value as (string | T)[]).filter((val) => {\n const allOptionValues = this.datasource()\n .result()\n .map((option) => this.getOptionValue(option));\n return !allOptionValues.includes(val as any);\n });\n this.control().setValue(selectedValues as DmMatSelectOutput<T>);\n }\n }\n\n protected resetSearch() {\n this.filterText.set('');\n this.datasource().search('');\n }\n\n protected onPanelOpened() {\n if (this.focusSearchInputOnPanelOpen()) {\n const searchInput = document.getElementById('dm-mat-select-search-input') as HTMLInputElement;\n setTimeout(() => {\n if (searchInput) {\n searchInput.focus();\n }\n }, 0);\n }\n }\n}\n","<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\" style=\"width: 100%\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n (keyDown.Space)=\"$event.stopPropagation()\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n effect,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSliderModule, MatSliderThumb } from '@angular/material/slider';\nimport { MatTooltipModule, TooltipPosition } from '@angular/material/tooltip';\n\nexport interface DmCmpsColor {\n color: string;\n tooltip?: string;\n}\n\n@Component({\n selector: 'dm-color-picker',\n standalone: true,\n imports: [MatMenuModule, MatTooltipModule, CommonModule, MatSliderModule],\n templateUrl: './dm-color-picker.html',\n styleUrl: './dm-color-picker.scss',\n})\nexport class DmColorPicker {\n colors = input<DmCmpsColor[]>([\n { color: '#FF0000' },\n { color: '#FFA500' },\n { color: '#FFFF00' },\n { color: '#008000' },\n { color: '#0000FF' },\n { color: '#4B0082' },\n { color: '#EE82EE' },\n { color: '#A9A9A9' },\n { color: '#FFFFFF' },\n { color: '#000000' },\n ]);\n\n formControl = input<FormControl | null>(null);\n private internalFormControl: FormControl = new FormControl('');\n\n protected control = computed(() => this.formControl() ?? this.internalFormControl);\n\n width = input<number>(30);\n height = input<number>(30);\n borderRadius = input<number | string>('50%');\n\n protected radius = computed(() => {\n return typeof this.borderRadius() === 'number'\n ? `${this.borderRadius()}px`\n : this.borderRadius();\n });\n\n selectedColor = signal<string>('#FFFFFF');\n\n tooltip = input<string>('');\n tooltipPosition = input<TooltipPosition>('above');\n customColor = input(false, { transform: booleanAttribute });\n\n opacitySlider = input(false, { transform: booleanAttribute });\n // @Input() opacitySliderColor: 'primary' | 'accent' | 'warn' = 'primary';\n opacitySliderLabel = input<string>('שקיפות');\n customColorTooltip = input<string>('צבע מותאם אישית');\n\n wrapperClass = input<string>('');\n wrapperStyle = input<string>('');\n onColorChange = output<string>();\n\n // @Input() ngModel: string = '';\n // @Output() ngModelChange = new EventEmitter<string>();\n\n value = model<string>('');\n\n constructor() {\n this.runEffects();\n }\n\n runEffects() {\n effect(() => {\n if (this.formControl()) {\n return;\n }\n this.internalFormControl.setValue(this.value(), { emitEvent: false });\n });\n\n effect((onCleanup) => {\n const ctrl = this.control();\n\n this.selectedColor.set(ctrl.value);\n const sub = ctrl.valueChanges.subscribe((val) => {\n this.selectedColor.set(val);\n this.value.set(val);\n });\n\n onCleanup(() => sub.unsubscribe());\n });\n }\n\n ngOnInit(): void {}\n\n onColorSelected(color: string) {\n // this.selectedColor.set(color);\n this.control().setValue(color);\n this.onColorChange.emit(color);\n }\n\n _onColorChange(event: any) {\n const color = event.target.value;\n this.onColorSelected(color);\n }\n\n formatLabel(value: number): string {\n return Math.round(value) + '%';\n }\n\n getOpacity() {\n const value = this.selectedColor().slice(7) || 'FF';\n return Math.round((parseInt(value, 16) / 255) * 100);\n }\n\n setOpacity(value: string) {\n this.selectedColor.set(this.selectedColor().slice(0, 7));\n this.selectedColor.set(this.selectedColor() + value);\n }\n\n onOpacityValueChange(event: Event) {\n const value = +(event.target as HTMLInputElement).value;\n if (value == null) return;\n\n let hex = Math.round((value / 100) * 255).toString(16);\n if (hex.length < 2) hex = '0' + hex;\n\n this.setOpacity(hex);\n this.updateSelectedColor();\n }\n\n opacityChangeHandler(value: string) {\n let hex = Math.round((parseInt(value) / 100) * 255).toString(16);\n if (hex.length < 2) {\n hex = '0' + hex;\n }\n this.setOpacity(hex);\n }\n\n onOpacityChange(opacity: Event) {\n const value = (opacity.target as HTMLInputElement).value;\n this.opacityChangeHandler(value);\n }\n\n updateSelectedColor() {\n this.onColorSelected(structuredClone(this.selectedColor()));\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: any): void {}\n\n registerOnTouched(fn: any): void {}\n}\n","<div class=\"dm-color-picker-wrapper\" [class]=\"wrapperClass()\" [style]=\"wrapperStyle()\">\n <div\n class=\"dm-color-picker\"\n [matMenuTriggerFor]=\"colorPicker\"\n [style.background-color]=\"selectedColor()\"\n [matTooltip]=\"tooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.border-radius]=\"radius()\"\n ></div>\n @if (opacitySlider()){\n <div class=\"dm-color-picker-slider-wrapper\">\n {{ opacitySliderLabel() }}\n <mat-slider min=\"0\" max=\"100\" step=\"1\" discrete [displayWith]=\"formatLabel\">\n <input\n matSliderThumb\n [value]=\"getOpacity()\"\n (input)=\"onOpacityChange($event)\"\n #slider\n (change)=\"updateSelectedColor()\"\n />\n </mat-slider>\n </div>\n }\n</div>\n\n<mat-menu #colorPicker=\"matMenu\">\n <div class=\"dm-color-picker-menu\">\n @for (color of colors(); track color.color){\n <div\n (click)=\"onColorSelected(color.color)\"\n class=\"dm-color-div\"\n [matTooltip]=\"color.tooltip || ''\"\n matTooltipPosition=\"above\"\n [style.background-color]=\"color.color\"\n ></div>\n } @if (customColor()){<input\n (click)=\"$event.stopPropagation()\"\n [matTooltip]=\"customColorTooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [value]=\"selectedColor()\"\n type=\"color\"\n class=\"pointer\"\n (change)=\"_onColorChange($event)\"\n />}\n </div>\n</mat-menu>\n","import { Injectable, signal } from '@angular/core';\n\nexport const DEFAULT_SPINNER_ID = 'dm-spinner';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DmSpinnerService {\n // visibility$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n visibility$ = signal<boolean>(false);\n spinnerToShow$ = signal<string>(DEFAULT_SPINNER_ID);\n spinnerTasks$ = signal<Set<string>>(new Set());\n\n // spinnerToShow$: BehaviorSubject<string> = new BehaviorSubject<string>(\n // 'dm-cmps-spinner'\n // );\n // spinnerTasks$: BehaviorSubject<Set<string>> = new BehaviorSubject<\n // Set<string>\n // >(new Set());\n\n spinnerText = signal('');\n constructor() {}\n\n showSpinner(spinnerId: string = DEFAULT_SPINNER_ID) {\n this.visibility$.set(true);\n this.spinnerToShow$.set(spinnerId);\n }\n\n startLoading(taskName: string, spinnerId: string = DEFAULT_SPINNER_ID) {\n this.spinnerToShow$.set(spinnerId);\n const tasks = new Set(this.spinnerTasks$());\n tasks.add(taskName);\n this.spinnerTasks$.set(tasks);\n }\n\n stopLoading(taskName: string) {\n let tasks = new Set(this.spinnerTasks$());\n tasks.delete(taskName);\n this.spinnerTasks$.set(tasks);\n if (tasks.size === 0) {\n this.spinnerToShow$.set(DEFAULT_SPINNER_ID);\n }\n }\n\n hideSpinner() {\n this.visibility$.set(false);\n this.spinnerToShow$.set(DEFAULT_SPINNER_ID);\n }\n\n setSpinnerText(text: string) {\n this.spinnerText.set(text);\n }\n}\n","import {\n Component,\n computed,\n effect,\n input,\n numberAttribute,\n Renderer2,\n signal,\n} from '@angular/core';\nimport { DEFAULT_SPINNER_ID, DmSpinnerService } from './dm-spinner.service';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'dm-spinner',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dm-spinner.html',\n styleUrl: './dm-spinner.scss',\n})\nexport class DmSpinner {\n protected readonly styleVariables: {\n [key: string]: {\n field: string;\n defaultValue?: string;\n };\n } = {\n color: { field: '--dm-spinner-color' },\n size: { field: '--dm-spinner-size' },\n shapeSize: { field: '--dm-spinner-shape-size' },\n speed: { field: '--dm-spinner-speed' },\n borderThikness: { field: '--dm-spinner-border-thikness' },\n position: { field: '--dm-spinner-position' },\n backgroundColor: { field: '--dm-spinner-background-color' },\n textColor: { field: '--dm-spinner-text-color' },\n fontSize: { field: '--dm-spinner-font-size' },\n textPosition: { field: '--dm-spinner-text-position' },\n _backgroundBlur: { field: '--dm-spinner-background-blur' },\n textPositionYOffset: { field: '--dm-spinner-text-position-y-offset' },\n };\n\n color = input('#1a4bd6');\n type = input<'rounded' | 'flower' | 'gif'>('rounded');\n gifSrc = input('https://media.tenor.com/I6kN-6X7nhAAAAAi/loading-buffering.gif');\n size = input<number>(40);\n shapeSize = input<number>(25);\n speed = input<number>(2);\n borderThikness = input<number>(5);\n position = input<'absolute' | 'relative' | 'fixed'>('absolute');\n backgroundColor = input<string>('');\n text = input<string>('טוען...');\n textColor = input<string>('#000000');\n fontSize = input<number>(20);\n textPosition = input<'center' | 'bottom'>('center');\n colors = input<string[]>(['#1a4bd6', '#000000']);\n backgroundBlur = input(5, { transform: numberAttribute });\n textPositionYOffset = input(0, { transform: numberAttribute });\n\n private _backgroundBlur = computed(() => {\n return `${this.backgroundBlur() || 0}px`;\n });\n\n name = input<string>(DEFAULT_SPINNER_ID);\n\n protected spinnerText = signal<string>('');\n\n constructor(protected _spinnerService: DmSpinnerService, private renderer: Renderer2) {\n this.runEffects();\n }\n\n runEffects() {\n effect(() => {\n const isVisible = this._spinnerService.visibility$();\n if (isVisible) {\n this.renderer.addClass(document.body, 'loading-active');\n } else {\n this.renderer.removeClass(document.body, 'loading-active');\n }\n });\n\n effect(() => {\n const text = this._spinnerService.spinnerText() || this.text();\n this.spinnerText.set(text);\n });\n\n effect(() => {\n for (const [key, value] of Object.entries(this.styleVariables)) {\n const fieldValue = (this as any)[key]();\n if (fieldValue === undefined || fieldValue === null) {\n if (value.defaultValue !== undefined) {\n document.documentElement.style.setProperty(value.field, value.defaultValue);\n }\n continue;\n }\n document.documentElement.style.setProperty(\n value.field,\n fieldValue ?? value.defaultValue ?? ''\n );\n }\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {}\n}\n","@if ( (_spinnerService.visibility$() && (_spinnerService.spinnerToShow$() == name())) ||\n(_spinnerService.spinnerTasks$().size > 0 && name() == 'dm-spinner')) {\n\n<div class=\"dm-spinner-wrapper\">\n <div class=\"dm-spinner-inner-wrapper\">\n @switch (type()) { @case ('flower') {\n <div class=\"dm-spinner-flower\"></div>\n } @case ('rounded') {\n <div class=\"dm-spinner-rounded\"></div>\n } @case ('gif') {\n <img class=\"dm-spinner-gif\" [src]=\"gifSrc()\" [width]=\"size()\" [height]=\"'auto'\" />\n } }\n <div class=\"dm-spinner-text\" [style.font-size.px]=\"fontSize()\">\n {{ spinnerText() }}\n </div>\n </div>\n</div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1.DmSpinnerService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InputSignal, InputSignalWithTransform, ModelSignal, OutputEmitterRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { InputSignal, InputSignalWithTransform, ModelSignal, OutputEmitterRef, OnDestroy, Renderer2 } from '@angular/core';
|
|
3
3
|
import { MatSelectChange } from '@angular/material/select';
|
|
4
4
|
import { FormControl } from '@angular/forms';
|
|
5
5
|
import { MatOptionSelectionChange } from '@angular/material/core';
|
|
6
6
|
import { MatCheckboxChange } from '@angular/material/checkbox';
|
|
7
|
+
import { TooltipPosition } from '@angular/material/tooltip';
|
|
7
8
|
|
|
8
9
|
interface DmCmpsDataSourceSort {
|
|
9
10
|
direction: 'asc' | 'desc';
|
|
@@ -574,5 +575,99 @@ declare class DmMatSelect<T = any> implements DmMatSelectConfig<T>, OnDestroy {
|
|
|
574
575
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DmMatSelect<any>, "dm-mat-select", never, { "formFieldClass": { "alias": "formFieldClass"; "required": false; "isSignal": true; }; "wrapperClass": { "alias": "wrapperClass"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "selectAllEnabled": { "alias": "selectAllEnabled"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionValueKey": { "alias": "optionValueKey"; "required": false; "isSignal": true; }; "optionLabelKey": { "alias": "optionLabelKey"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyOption": { "alias": "emptyOption"; "required": false; "isSignal": true; }; "emptyOptionLabel": { "alias": "emptyOptionLabel"; "required": false; "isSignal": true; }; "emptyOptionValue": { "alias": "emptyOptionValue"; "required": false; "isSignal": true; }; "optionNameFormat": { "alias": "optionNameFormat"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "searchSectionBackgroundColor": { "alias": "searchSectionBackgroundColor"; "required": false; "isSignal": true; }; "sortBySelectedOnTop": { "alias": "sortBySelectedOnTop"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "noDataLabel": { "alias": "noDataLabel"; "required": false; "isSignal": true; }; "clearSearchAfterSelect": { "alias": "clearSearchAfterSelect"; "required": false; "isSignal": true; }; "clearSearchButtonTooltip": { "alias": "clearSearchButtonTooltip"; "required": false; "isSignal": true; }; "focusSearchInputOnPanelOpen": { "alias": "focusSearchInputOnPanelOpen"; "required": false; "isSignal": true; }; "filterPredicate": { "alias": "filterPredicate"; "required": false; "isSignal": true; }; "propertiesToSkipInSearch": { "alias": "propertiesToSkipInSearch"; "required": false; "isSignal": true; }; "filterText": { "alias": "filterText"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "selectionChange": "selectionChange"; "filterText": "filterTextChange"; }, never, ["[dm-mat-select-suffix]"], true, never>;
|
|
575
576
|
}
|
|
576
577
|
|
|
577
|
-
|
|
578
|
+
interface DmCmpsColor {
|
|
579
|
+
color: string;
|
|
580
|
+
tooltip?: string;
|
|
581
|
+
}
|
|
582
|
+
declare class DmColorPicker {
|
|
583
|
+
colors: _angular_core.InputSignal<DmCmpsColor[]>;
|
|
584
|
+
formControl: _angular_core.InputSignal<FormControl<any> | null>;
|
|
585
|
+
private internalFormControl;
|
|
586
|
+
protected control: _angular_core.Signal<FormControl<any>>;
|
|
587
|
+
width: _angular_core.InputSignal<number>;
|
|
588
|
+
height: _angular_core.InputSignal<number>;
|
|
589
|
+
borderRadius: _angular_core.InputSignal<string | number>;
|
|
590
|
+
protected radius: _angular_core.Signal<string | number>;
|
|
591
|
+
selectedColor: _angular_core.WritableSignal<string>;
|
|
592
|
+
tooltip: _angular_core.InputSignal<string>;
|
|
593
|
+
tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
|
|
594
|
+
customColor: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
595
|
+
opacitySlider: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
596
|
+
opacitySliderLabel: _angular_core.InputSignal<string>;
|
|
597
|
+
customColorTooltip: _angular_core.InputSignal<string>;
|
|
598
|
+
wrapperClass: _angular_core.InputSignal<string>;
|
|
599
|
+
wrapperStyle: _angular_core.InputSignal<string>;
|
|
600
|
+
onColorChange: _angular_core.OutputEmitterRef<string>;
|
|
601
|
+
value: _angular_core.ModelSignal<string>;
|
|
602
|
+
constructor();
|
|
603
|
+
runEffects(): void;
|
|
604
|
+
ngOnInit(): void;
|
|
605
|
+
onColorSelected(color: string): void;
|
|
606
|
+
_onColorChange(event: any): void;
|
|
607
|
+
formatLabel(value: number): string;
|
|
608
|
+
getOpacity(): number;
|
|
609
|
+
setOpacity(value: string): void;
|
|
610
|
+
onOpacityValueChange(event: Event): void;
|
|
611
|
+
opacityChangeHandler(value: string): void;
|
|
612
|
+
onOpacityChange(opacity: Event): void;
|
|
613
|
+
updateSelectedColor(): void;
|
|
614
|
+
writeValue(value: any): void;
|
|
615
|
+
registerOnChange(fn: any): void;
|
|
616
|
+
registerOnTouched(fn: any): void;
|
|
617
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DmColorPicker, never>;
|
|
618
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DmColorPicker, "dm-color-picker", never, { "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "customColor": { "alias": "customColor"; "required": false; "isSignal": true; }; "opacitySlider": { "alias": "opacitySlider"; "required": false; "isSignal": true; }; "opacitySliderLabel": { "alias": "opacitySliderLabel"; "required": false; "isSignal": true; }; "customColorTooltip": { "alias": "customColorTooltip"; "required": false; "isSignal": true; }; "wrapperClass": { "alias": "wrapperClass"; "required": false; "isSignal": true; }; "wrapperStyle": { "alias": "wrapperStyle"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "onColorChange": "onColorChange"; "value": "valueChange"; }, never, never, true, never>;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
declare class DmSpinnerService {
|
|
622
|
+
visibility$: _angular_core.WritableSignal<boolean>;
|
|
623
|
+
spinnerToShow$: _angular_core.WritableSignal<string>;
|
|
624
|
+
spinnerTasks$: _angular_core.WritableSignal<Set<string>>;
|
|
625
|
+
spinnerText: _angular_core.WritableSignal<string>;
|
|
626
|
+
constructor();
|
|
627
|
+
showSpinner(spinnerId?: string): void;
|
|
628
|
+
startLoading(taskName: string, spinnerId?: string): void;
|
|
629
|
+
stopLoading(taskName: string): void;
|
|
630
|
+
hideSpinner(): void;
|
|
631
|
+
setSpinnerText(text: string): void;
|
|
632
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DmSpinnerService, never>;
|
|
633
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DmSpinnerService>;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
declare class DmSpinner {
|
|
637
|
+
protected _spinnerService: DmSpinnerService;
|
|
638
|
+
private renderer;
|
|
639
|
+
protected readonly styleVariables: {
|
|
640
|
+
[key: string]: {
|
|
641
|
+
field: string;
|
|
642
|
+
defaultValue?: string;
|
|
643
|
+
};
|
|
644
|
+
};
|
|
645
|
+
color: _angular_core.InputSignal<string>;
|
|
646
|
+
type: _angular_core.InputSignal<"rounded" | "flower" | "gif">;
|
|
647
|
+
gifSrc: _angular_core.InputSignal<string>;
|
|
648
|
+
size: _angular_core.InputSignal<number>;
|
|
649
|
+
shapeSize: _angular_core.InputSignal<number>;
|
|
650
|
+
speed: _angular_core.InputSignal<number>;
|
|
651
|
+
borderThikness: _angular_core.InputSignal<number>;
|
|
652
|
+
position: _angular_core.InputSignal<"absolute" | "relative" | "fixed">;
|
|
653
|
+
backgroundColor: _angular_core.InputSignal<string>;
|
|
654
|
+
text: _angular_core.InputSignal<string>;
|
|
655
|
+
textColor: _angular_core.InputSignal<string>;
|
|
656
|
+
fontSize: _angular_core.InputSignal<number>;
|
|
657
|
+
textPosition: _angular_core.InputSignal<"center" | "bottom">;
|
|
658
|
+
colors: _angular_core.InputSignal<string[]>;
|
|
659
|
+
backgroundBlur: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
660
|
+
textPositionYOffset: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
661
|
+
private _backgroundBlur;
|
|
662
|
+
name: _angular_core.InputSignal<string>;
|
|
663
|
+
protected spinnerText: _angular_core.WritableSignal<string>;
|
|
664
|
+
constructor(_spinnerService: DmSpinnerService, renderer: Renderer2);
|
|
665
|
+
runEffects(): void;
|
|
666
|
+
ngOnInit(): void;
|
|
667
|
+
ngOnDestroy(): void;
|
|
668
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DmSpinner, never>;
|
|
669
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DmSpinner, "dm-spinner", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "gifSrc": { "alias": "gifSrc"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shapeSize": { "alias": "shapeSize"; "required": false; "isSignal": true; }; "speed": { "alias": "speed"; "required": false; "isSignal": true; }; "borderThikness": { "alias": "borderThikness"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "textColor": { "alias": "textColor"; "required": false; "isSignal": true; }; "fontSize": { "alias": "fontSize"; "required": false; "isSignal": true; }; "textPosition": { "alias": "textPosition"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "backgroundBlur": { "alias": "backgroundBlur"; "required": false; "isSignal": true; }; "textPositionYOffset": { "alias": "textPositionYOffset"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
export { DmCmpsDataSource, DmColorPicker, DmMatSelect, DmSpinner, DmSpinnerService };
|
|
578
673
|
export type { DmCmpsDataSourceSort };
|