@marcura/marcura-combobox 19.0.0 → 19.1.0
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.
package/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# Marcura Combobox
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project marcura-combobox` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project marcura-combobox`.
|
|
8
|
-
> Note: Don't forget to add `--project marcura-combobox` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build marcura-combobox` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build marcura-combobox`, go to the dist folder `cd dist/marcura-combobox` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test marcura-combobox` to execute the unit tests via [
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
1
|
+
# Marcura Combobox
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project marcura-combobox` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project marcura-combobox`.
|
|
8
|
+
> Note: Don't forget to add `--project marcura-combobox` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build marcura-combobox` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build marcura-combobox`, go to the dist folder `cd dist/marcura-combobox` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test marcura-combobox` to execute the unit tests via [Jest](https://jestjs.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
@@ -150,11 +150,11 @@ class ComboboxPopupFooterComponent {
|
|
|
150
150
|
return this.minSearchText.replace('{minSearchCharacters}', this.minSearchCharacters.toString());
|
|
151
151
|
}
|
|
152
152
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ComboboxPopupFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: ComboboxPopupFooterComponent, isStandalone: false, selector: "sg-combobox-popup-footer", inputs: { isLoadingTextVisible: "isLoadingTextVisible", isNoItemsTextVisible: "isNoItemsTextVisible", isMinSearchTextVisible: "isMinSearchTextVisible", loadingText: "loadingText", noItemsText: "noItemsText", minSearchText: "minSearchText", minSearchCharacters: "minSearchCharacters" }, ngImport: i0, template: "<div\
|
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: ComboboxPopupFooterComponent, isStandalone: false, selector: "sg-combobox-popup-footer", inputs: { isLoadingTextVisible: "isLoadingTextVisible", isNoItemsTextVisible: "isNoItemsTextVisible", isMinSearchTextVisible: "isMinSearchTextVisible", loadingText: "loadingText", noItemsText: "noItemsText", minSearchText: "minSearchText", minSearchCharacters: "minSearchCharacters" }, ngImport: i0, template: "<div\n class=\"sg-combobox-popup-footer__inner\"\n *ngIf=\"isLoadingTextVisible || isNoItemsTextVisible || isMinSearchTextVisible\"\n>\n <span *ngIf=\"isLoadingTextVisible\" class=\"c-body c-body--3\">{{ loadingText }}</span>\n <span *ngIf=\"isNoItemsTextVisible\" class=\"c-body c-body--3\">{{ noItemsText }}</span>\n <span *ngIf=\"isMinSearchTextVisible\" class=\"c-body c-body--3\">{{ getMinSearchText() }}</span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
154
154
|
}
|
|
155
155
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ComboboxPopupFooterComponent, decorators: [{
|
|
156
156
|
type: Component,
|
|
157
|
-
args: [{ selector: 'sg-combobox-popup-footer', standalone: false, template: "<div\
|
|
157
|
+
args: [{ selector: 'sg-combobox-popup-footer', standalone: false, template: "<div\n class=\"sg-combobox-popup-footer__inner\"\n *ngIf=\"isLoadingTextVisible || isNoItemsTextVisible || isMinSearchTextVisible\"\n>\n <span *ngIf=\"isLoadingTextVisible\" class=\"c-body c-body--3\">{{ loadingText }}</span>\n <span *ngIf=\"isNoItemsTextVisible\" class=\"c-body c-body--3\">{{ noItemsText }}</span>\n <span *ngIf=\"isMinSearchTextVisible\" class=\"c-body c-body--3\">{{ getMinSearchText() }}</span>\n</div>\n" }]
|
|
158
158
|
}], propDecorators: { isLoadingTextVisible: [{
|
|
159
159
|
type: Input
|
|
160
160
|
}], isNoItemsTextVisible: [{
|
|
@@ -877,7 +877,7 @@ class ComboboxComponent extends AbstractComboboxComponent {
|
|
|
877
877
|
provide: SIZEABLE_CONTROL_COMPONENT,
|
|
878
878
|
useExisting: forwardRef(() => ComboboxComponent),
|
|
879
879
|
},
|
|
880
|
-
], queries: [{ propertyName: "itemTemplate", first: true, predicate: ComboboxItemTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-combobox\
|
|
880
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: ComboboxItemTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-combobox\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n [suggest]=\"shouldSuggest\"\n [allowCustom]=\"true\"\n [valueNormalizer]=\"valueNormalizer\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoComboBoxNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoComboBoxItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n</kendo-combobox>\n<div class=\"sg-combobox__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-combobox__state-line\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "directive", type: i3.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "component", type: ComboboxPopupFooterComponent, selector: "sg-combobox-popup-footer", inputs: ["isLoadingTextVisible", "isNoItemsTextVisible", "isMinSearchTextVisible", "loadingText", "noItemsText", "minSearchText", "minSearchCharacters"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
881
881
|
}
|
|
882
882
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ComboboxComponent, decorators: [{
|
|
883
883
|
type: Component,
|
|
@@ -907,7 +907,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
|
|
|
907
907
|
provide: SIZEABLE_CONTROL_COMPONENT,
|
|
908
908
|
useExisting: forwardRef(() => ComboboxComponent),
|
|
909
909
|
},
|
|
910
|
-
], template: "<kendo-combobox\
|
|
910
|
+
], template: "<kendo-combobox\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n [suggest]=\"shouldSuggest\"\n [allowCustom]=\"true\"\n [valueNormalizer]=\"valueNormalizer\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoComboBoxNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoComboBoxItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n</kendo-combobox>\n<div class=\"sg-combobox__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-combobox__state-line\"></div>\n" }]
|
|
911
911
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
912
912
|
type: Optional
|
|
913
913
|
}, {
|
|
@@ -1110,7 +1110,7 @@ class DropdownComponent extends AbstractDropdownComponent {
|
|
|
1110
1110
|
provide: SIZEABLE_CONTROL_COMPONENT,
|
|
1111
1111
|
useExisting: forwardRef(() => DropdownComponent),
|
|
1112
1112
|
},
|
|
1113
|
-
], queries: [{ propertyName: "itemTemplate", first: true, predicate: DropdownItemTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "valueTemplate", first: true, predicate: DropdownValueTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-dropdownlist\
|
|
1113
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: DropdownItemTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "valueTemplate", first: true, predicate: DropdownValueTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-dropdownlist\n #component\n [formControl]=\"valueFormControl\"\n [data]=\"items\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoading\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template *ngIf=\"itemTemplate\" kendoDropDownListItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n <ng-container *ngIf=\"dataItem\">\n <ng-container *ngIf=\"valueTemplate\">\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\n </ng-container>\n <ng-container *ngIf=\"!valueTemplate\">{{ dataItem[textField] }}</ng-container>\n </ng-container>\n <ng-container *ngIf=\"!dataItem\">\n <span *ngIf=\"placeholder\" class=\"k-placeholder\">{{ placeholder }}</span>\n <ng-container *ngIf=\"!placeholder && valueTemplate\">\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer [isNoItemsTextVisible]=\"items.length === 0\" [noItemsText]=\"noItemsText\">\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n</kendo-dropdownlist>\n<div class=\"sg-dropdown__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-dropdown__state-line\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "component", type: i3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: i3.ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { kind: "component", type: ComboboxPopupFooterComponent, selector: "sg-combobox-popup-footer", inputs: ["isLoadingTextVisible", "isNoItemsTextVisible", "isMinSearchTextVisible", "loadingText", "noItemsText", "minSearchText", "minSearchCharacters"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1114
1114
|
}
|
|
1115
1115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
1116
1116
|
type: Component,
|
|
@@ -1140,7 +1140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
|
|
|
1140
1140
|
provide: SIZEABLE_CONTROL_COMPONENT,
|
|
1141
1141
|
useExisting: forwardRef(() => DropdownComponent),
|
|
1142
1142
|
},
|
|
1143
|
-
], template: "<kendo-dropdownlist\
|
|
1143
|
+
], template: "<kendo-dropdownlist\n #component\n [formControl]=\"valueFormControl\"\n [data]=\"items\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoading\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template *ngIf=\"itemTemplate\" kendoDropDownListItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n <ng-container *ngIf=\"dataItem\">\n <ng-container *ngIf=\"valueTemplate\">\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\n </ng-container>\n <ng-container *ngIf=\"!valueTemplate\">{{ dataItem[textField] }}</ng-container>\n </ng-container>\n <ng-container *ngIf=\"!dataItem\">\n <span *ngIf=\"placeholder\" class=\"k-placeholder\">{{ placeholder }}</span>\n <ng-container *ngIf=\"!placeholder && valueTemplate\">\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer [isNoItemsTextVisible]=\"items.length === 0\" [noItemsText]=\"noItemsText\">\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n</kendo-dropdownlist>\n<div class=\"sg-dropdown__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-dropdown__state-line\"></div>\n" }]
|
|
1144
1144
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
1145
1145
|
type: Optional
|
|
1146
1146
|
}, {
|
|
@@ -1286,6 +1286,8 @@ class MultiselectComponent extends AbstractComboboxComponent {
|
|
|
1286
1286
|
this.isActivatedTag = () => false;
|
|
1287
1287
|
this.tagColor = () => null;
|
|
1288
1288
|
this.allowCustom = false;
|
|
1289
|
+
this.showCheckboxes = false;
|
|
1290
|
+
this.autoClose = true;
|
|
1289
1291
|
/**
|
|
1290
1292
|
* This field contains factory method which takes a custom text input and returns an Observable<TItem>.
|
|
1291
1293
|
* The observable sends the text to a remote service, which processes it and returns a generated TItem.
|
|
@@ -1381,7 +1383,7 @@ class MultiselectComponent extends AbstractComboboxComponent {
|
|
|
1381
1383
|
});
|
|
1382
1384
|
}
|
|
1383
1385
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: MultiselectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: MULTISELECT_LOCALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1384
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: MultiselectComponent, isStandalone: false, selector: "sg-multiselect", inputs: { formControl: "formControl", loadingText: "loadingText", noItemsText: "noItemsText", minSearchText: "minSearchText", isReadOnlyTag: "isReadOnlyTag", isActivatedTag: "isActivatedTag", tagColor: "tagColor", allowCustom: "allowCustom", itemFactoryAsync: "itemFactoryAsync", itemFactory: "itemFactory" }, host: { properties: { "class.sg-multiselect": "this.hasCssClass", "class.sg-multiselect--has-value": "this.hasValue", "class.sg-multiselect--is-focused": "this.hasIsFocusedCssClass", "class.sg-multiselect--is-hovered": "this.hasIsHoveredCssClass", "class.sg-multiselect--is-disabled": "this.hasIsDisabledCssClass", "class.sg-multiselect--type-success": "this.isSuccessType", "class.sg-multiselect--type-error": "this.isErrorType", "class.sg-multiselect--type-warning": "this.isWarningType", "class.sg-multiselect--state-highlighted": "this.isHighlightedState", "class.sg-multiselect--is-loading": "this.hasIsLoadingCssClass", "class.sg-multiselect--has-reset": "this.hasHasResetCssClass", "class.sg-multiselect--is-outline": "this.hasIsOutlineCssClass" } }, providers: [
|
|
1386
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: MultiselectComponent, isStandalone: false, selector: "sg-multiselect", inputs: { formControl: "formControl", loadingText: "loadingText", noItemsText: "noItemsText", minSearchText: "minSearchText", isReadOnlyTag: "isReadOnlyTag", isActivatedTag: "isActivatedTag", tagColor: "tagColor", allowCustom: "allowCustom", showCheckboxes: "showCheckboxes", autoClose: "autoClose", itemFactoryAsync: "itemFactoryAsync", itemFactory: "itemFactory" }, host: { properties: { "class.sg-multiselect": "this.hasCssClass", "class.sg-multiselect--has-value": "this.hasValue", "class.sg-multiselect--is-focused": "this.hasIsFocusedCssClass", "class.sg-multiselect--is-hovered": "this.hasIsHoveredCssClass", "class.sg-multiselect--is-disabled": "this.hasIsDisabledCssClass", "class.sg-multiselect--type-success": "this.isSuccessType", "class.sg-multiselect--type-error": "this.isErrorType", "class.sg-multiselect--type-warning": "this.isWarningType", "class.sg-multiselect--state-highlighted": "this.isHighlightedState", "class.sg-multiselect--is-loading": "this.hasIsLoadingCssClass", "class.sg-multiselect--has-reset": "this.hasHasResetCssClass", "class.sg-multiselect--is-outline": "this.hasIsOutlineCssClass" } }, providers: [
|
|
1385
1387
|
{
|
|
1386
1388
|
provide: NG_VALUE_ACCESSOR,
|
|
1387
1389
|
useExisting: forwardRef(() => MultiselectComponent),
|
|
@@ -1403,7 +1405,7 @@ class MultiselectComponent extends AbstractComboboxComponent {
|
|
|
1403
1405
|
provide: TYPEABLE_CONTROL_COMPONENT,
|
|
1404
1406
|
useExisting: forwardRef(() => MultiselectComponent),
|
|
1405
1407
|
},
|
|
1406
|
-
], queries: [{ propertyName: "itemTemplate", first: true, predicate: MultiselectItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "tagTemplate", first: true, predicate: MultiselectTagTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-multiselect\
|
|
1408
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: MultiselectItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "tagTemplate", first: true, predicate: MultiselectTagTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<kendo-multiselect\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n [allowCustom]=\"allowCustom\"\n [valueNormalizer]=\"valueNormalizer\"\n [checkboxes]=\"showCheckboxes\"\n [autoClose]=\"autoClose\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\n <span\n #tagWrapper=\"multiselectTagWrapper\"\n sgMultiselectTagWrapper\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\n >\n <sg-tag\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\n [color]=\"tagColor(dataItem)\"\n [isActivated]=\"isActivatedTag(dataItem)\"\n >\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\n </ng-container>\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\n </sg-tag>\n </span>\n </ng-template>\n</kendo-multiselect>\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-multiselect__state-line\"></div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "component", type: i3.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["showStickyHeader", "focusableId", "autoClose", "loading", "data", "value", "valueField", "textField", "tabindex", "tabIndex", "size", "rounded", "fillMode", "placeholder", "adaptiveMode", "title", "subtitle", "disabled", "itemDisabled", "checkboxes", "readonly", "filterable", "virtual", "popupSettings", "listHeight", "valuePrimitive", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "inputAttributes"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { kind: "directive", type: i3.TagTemplateDirective, selector: "[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]" }, { kind: "component", type: i4.TagComponent, selector: "sg-tag", inputs: ["color", "icon", "isActivated", "isDisabled", "isLoading", "isFocusable", "isHoverable", "isReadOnly"], outputs: ["clicked", "focused", "blurred", "iconClicked", "spinnerClicked"] }, { kind: "component", type: ComboboxPopupFooterComponent, selector: "sg-combobox-popup-footer", inputs: ["isLoadingTextVisible", "isNoItemsTextVisible", "isMinSearchTextVisible", "loadingText", "noItemsText", "minSearchText", "minSearchCharacters"] }, { kind: "directive", type: MultiselectTagWrapperDirective, selector: "[sgMultiselectTagWrapper]", inputs: ["isReadOnly"], exportAs: ["multiselectTagWrapper"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1407
1409
|
}
|
|
1408
1410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: MultiselectComponent, decorators: [{
|
|
1409
1411
|
type: Component,
|
|
@@ -1429,7 +1431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
|
|
|
1429
1431
|
provide: TYPEABLE_CONTROL_COMPONENT,
|
|
1430
1432
|
useExisting: forwardRef(() => MultiselectComponent),
|
|
1431
1433
|
},
|
|
1432
|
-
], template: "<kendo-multiselect\
|
|
1434
|
+
], template: "<kendo-multiselect\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n [allowCustom]=\"allowCustom\"\n [valueNormalizer]=\"valueNormalizer\"\n [checkboxes]=\"showCheckboxes\"\n [autoClose]=\"autoClose\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\n <span\n #tagWrapper=\"multiselectTagWrapper\"\n sgMultiselectTagWrapper\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\n >\n <sg-tag\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\n [color]=\"tagColor(dataItem)\"\n [isActivated]=\"isActivatedTag(dataItem)\"\n >\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\n </ng-container>\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\n </sg-tag>\n </span>\n </ng-template>\n</kendo-multiselect>\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-multiselect__state-line\"></div>\n" }]
|
|
1433
1435
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
1434
1436
|
type: Optional
|
|
1435
1437
|
}, {
|
|
@@ -1496,6 +1498,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
|
|
|
1496
1498
|
type: Input
|
|
1497
1499
|
}], allowCustom: [{
|
|
1498
1500
|
type: Input
|
|
1501
|
+
}], showCheckboxes: [{
|
|
1502
|
+
type: Input
|
|
1503
|
+
}], autoClose: [{
|
|
1504
|
+
type: Input
|
|
1499
1505
|
}], itemFactoryAsync: [{
|
|
1500
1506
|
type: Input
|
|
1501
1507
|
}], itemFactory: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marcura-marcura-combobox.mjs","sources":["../../src/lib/combobox.injectables.ts","../../src/lib/directives/combobox-item-template.directive.ts","../../src/lib/directives/dropdown-item-template.directive.ts","../../src/lib/directives/dropdown-value-template.directive.ts","../../src/lib/directives/multiselect-item-template.directive.ts","../../src/lib/directives/multiselect-tag-template.directive.ts","../../src/lib/directives/multiselect-tag-wrapper.directive.ts","../../src/lib/components/combobox-popup-footer/combobox-popup-footer.component.ts","../../src/lib/components/combobox-popup-footer/combobox-popup-footer.component.html","../../src/lib/model/combobox-changed.event.ts","../../src/lib/components/abstract-dropdown/abstract-dropdown.component.ts","../../src/lib/model/combobox-search-settings-operator.enum.ts","../../src/lib/components/abstract-combobox/abstract-combobox.component.ts","../../src/lib/components/combobox/combobox.component.ts","../../src/lib/components/combobox/combobox.component.html","../../src/lib/model/dropdown-changed.event.ts","../../src/lib/components/dropdown/dropdown.component.ts","../../src/lib/components/dropdown/dropdown.component.html","../../src/lib/model/multiselect-changed.event.ts","../../src/lib/components/multiselect/multiselect.component.ts","../../src/lib/components/multiselect/multiselect.component.html","../../src/lib/combobox.module.ts","../../src/marcura-marcura-combobox.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\r\nimport {IComboboxLocalization} from './model/combobox-localization.interface';\r\nimport {IDropdownLocalization} from './model/dropdown-localization.interface';\r\nimport {IDropdownLocalizer} from './model/dropdown-localizer.interface';\r\nimport {IMultiselectLocalization} from './model/multiselect-localization.interface';\r\n\r\nexport const COMBOBOX_LOCALIZER: InjectionToken<IDropdownLocalizer<IComboboxLocalization>> = new InjectionToken(\r\n 'ComboboxModule.IDropdownLocalizer<IComboboxLocalization>'\r\n);\r\nexport const DROPDOWN_LOCALIZER: InjectionToken<IDropdownLocalizer<IDropdownLocalization>> = new InjectionToken(\r\n 'ComboboxModule.IDropdownLocalizer<IDropdownLocalization>'\r\n);\r\nexport const MULTISELECT_LOCALIZER: InjectionToken<IDropdownLocalizer<IMultiselectLocalization>> = new InjectionToken(\r\n 'ComboboxModule.IDropdownLocalizer<IMultiselectLocalization>'\r\n);\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sgComboboxItem]',\r\n standalone: false,\r\n})\r\nexport class ComboboxItemTemplateDirective {}\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sgDropdownItem]',\r\n standalone: false,\r\n})\r\nexport class DropdownItemTemplateDirective {}\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sgDropdownValue]',\r\n standalone: false,\r\n})\r\nexport class DropdownValueTemplateDirective {}\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sgMultiselectItem]',\r\n standalone: false,\r\n})\r\nexport class MultiselectItemTemplateDirective {}\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sgMultiselectTag]',\r\n standalone: false,\r\n})\r\nexport class MultiselectTagTemplateDirective {}\r\n","import {Directive, ElementRef, Input} from '@angular/core';\r\n\r\n/**\r\n * Toggles CSS classes of kendo-multiselect tag wrapper (kendo-taglist li.k-button),\r\n * so necessary styles could be applied when tag state changes, read only state, for example.\r\n *\r\n * @export\r\n */\r\n@Directive({\r\n selector: '[sgMultiselectTagWrapper]',\r\n exportAs: 'multiselectTagWrapper',\r\n standalone: false,\r\n})\r\nexport class MultiselectTagWrapperDirective {\r\n private _getTagWrapperAttempts: number = 0;\r\n private _isReadOnly: boolean = false;\r\n private _tagWrapper: HTMLElement | null = null;\r\n @Input()\r\n public get isReadOnly(): boolean {\r\n return this._isReadOnly;\r\n }\r\n public set isReadOnly(isReadOnly: boolean) {\r\n // Will come as undefined if not set from the outside.\r\n this._isReadOnly = !!isReadOnly;\r\n this._tagWrapper = this._tagWrapper || this._getTagWrapper(this._element.nativeElement);\r\n this._setCssClass(this._tagWrapper);\r\n }\r\n\r\n private _getTagWrapper(element: HTMLElement): HTMLElement | null {\r\n if (element.classList.contains('k-button') && element.tagName === 'LI') {\r\n return element;\r\n } else {\r\n if (this._getTagWrapperAttempts >= 5) {\r\n return null;\r\n }\r\n\r\n this._getTagWrapperAttempts++;\r\n return element.parentElement ? this._getTagWrapper(element.parentElement) : null;\r\n }\r\n }\r\n\r\n private _setCssClass(tagWrapper: HTMLElement | null): void {\r\n if (!tagWrapper) {\r\n return;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n tagWrapper.classList.add('sg-multiselect__tag-wrapper--is-read-only');\r\n } else {\r\n tagWrapper.classList.remove('sg-multiselect__tag-wrapper--is-read-only');\r\n }\r\n }\r\n\r\n public constructor(private _element: ElementRef) {}\r\n}\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sg-combobox-popup-footer',\r\n templateUrl: 'combobox-popup-footer.component.html',\r\n standalone: false,\r\n})\r\nexport class ComboboxPopupFooterComponent {\r\n @Input()\r\n public isLoadingTextVisible: boolean = false;\r\n @Input()\r\n public isNoItemsTextVisible: boolean = false;\r\n @Input()\r\n public isMinSearchTextVisible: boolean = false;\r\n @Input()\r\n public loadingText: string = '';\r\n @Input()\r\n public noItemsText: string = '';\r\n @Input()\r\n public minSearchText: string = '';\r\n @Input()\r\n public minSearchCharacters: number = 0;\r\n\r\n public getMinSearchText(): string {\r\n return this.minSearchText.replace('{minSearchCharacters}', this.minSearchCharacters.toString());\r\n }\r\n}\r\n","<div\r\n class=\"sg-combobox-popup-footer__inner\"\r\n *ngIf=\"isLoadingTextVisible || isNoItemsTextVisible || isMinSearchTextVisible\"\r\n>\r\n <span *ngIf=\"isLoadingTextVisible\" class=\"c-body c-body--3\">{{ loadingText }}</span>\r\n <span *ngIf=\"isNoItemsTextVisible\" class=\"c-body c-body--3\">{{ noItemsText }}</span>\r\n <span *ngIf=\"isMinSearchTextVisible\" class=\"c-body c-body--3\">{{ getMinSearchText() }}</span>\r\n</div>\r\n","import {ControlChangedEvent} from '@marcura/marcura-common';\r\n\r\nexport class ComboboxChangedEvent<TValue> extends ControlChangedEvent<TValue> {}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, EventEmitter, Input, Output} from '@angular/core';\r\nimport {FormControl} from '@angular/forms';\r\nimport {\r\n AbstractControlComponent,\r\n ControlBlurredEvent,\r\n ControlChangedEvent,\r\n ControlState,\r\n ControlType,\r\n IOpenableControlComponent,\r\n IStateableControlComponent,\r\n ITypeableControlComponent,\r\n Nil,\r\n} from '@marcura/marcura-common';\r\nimport {GroupResult} from '@progress/kendo-data-query';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {IDropdownKendoComponent} from '../../model/dropdown-kendo-component.interface';\r\nimport {ComboboxItem} from '../../model/combobox-item.type';\r\n\r\ninterface IDropdownOpenedEvent {\r\n isOpen: boolean;\r\n shouldEmit: boolean;\r\n}\r\n\r\n@Directive()\r\nexport abstract class AbstractDropdownComponent<\r\n TItem,\r\n TValue,\r\n TKendoComponent extends IDropdownKendoComponent = IDropdownKendoComponent,\r\n TChangedEvent extends ControlChangedEvent<TValue> = ControlChangedEvent<TValue>\r\n> extends AbstractControlComponent<TValue, ControlBlurredEvent<TValue>, TChangedEvent>\r\n implements IOpenableControlComponent, IStateableControlComponent, ITypeableControlComponent {\r\n // TODO: technical debt - figure out way of putting default value\r\n private _valueField: keyof TItem = 'id' as any;\r\n private _textField: keyof TItem = 'name' as any;\r\n protected _resetedValue: TValue | null = null;\r\n protected _component!: TKendoComponent;\r\n protected _items: ComboboxItem<TItem>[] = [];\r\n protected readonly _isOpen: BehaviorSubject<IDropdownOpenedEvent> = new BehaviorSubject<IDropdownOpenedEvent>({\r\n isOpen: false,\r\n shouldEmit: false,\r\n });\r\n protected readonly _isLoading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n protected _type: ControlType | Nil = null;\r\n protected _state: ControlState | Nil = null;\r\n protected _isSuccessType: boolean = this._type === ControlType.Success;\r\n protected _isErrorType: boolean = this._type === ControlType.Error;\r\n protected _isWarningType: boolean = this._type === ControlType.Warning;\r\n protected _isHighlightedState: boolean = this._state === ControlState.Highlighted;\r\n public readonly valueFormControl: FormControl<TValue | null> = new FormControl();\r\n @Input()\r\n public get valueField(): keyof TItem {\r\n return this._valueField;\r\n }\r\n public set valueField(valueField: keyof TItem) {\r\n if (valueField && this._valueField !== valueField) {\r\n this._valueField = valueField;\r\n }\r\n }\r\n\r\n public get valueKey(): string {\r\n return this._valueField.toString();\r\n }\r\n\r\n @Input()\r\n public get textField(): keyof TItem {\r\n return this._textField;\r\n }\r\n public set textField(textField: keyof TItem) {\r\n if (textField && this._textField !== textField) {\r\n this._textField = textField;\r\n }\r\n }\r\n\r\n public get textKey(): string {\r\n return this._textField.toString();\r\n }\r\n @Input()\r\n public placeholder: string = '';\r\n @Input()\r\n public get isLoading(): boolean {\r\n return this._isLoading.value;\r\n }\r\n public set isLoading(isLoading: boolean) {\r\n this._isLoading.next(isLoading);\r\n // Mark hasIsLoadingCssClass @HostBinding for check.\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n @Input()\r\n public hasReset: boolean = true;\r\n @Input()\r\n public popupClass?: string;\r\n @Input()\r\n public get state(): ControlState | Nil {\r\n return this._state;\r\n }\r\n public set state(state: ControlState | Nil) {\r\n if (this._state !== state) {\r\n this._state = state;\r\n this._isHighlightedState = state === ControlState.Highlighted;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n @Input()\r\n public get type(): ControlType | Nil {\r\n return this._type;\r\n }\r\n public set type(type: ControlType | Nil) {\r\n if (this._type !== type) {\r\n this._type = type;\r\n this._isSuccessType = type === ControlType.Success;\r\n this._isErrorType = type === ControlType.Error;\r\n this._isWarningType = type === ControlType.Warning;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n @Input()\r\n public get items(): ComboboxItem<TItem>[] {\r\n return this._items;\r\n }\r\n public set items(items: ComboboxItem<TItem>[]) {\r\n this._items = items || [];\r\n }\r\n @Input()\r\n public listHeight: number = 200;\r\n\r\n /**\r\n * @deprecated please try to avoid it, as it forced me to create ComboboxItem<TItem>\r\n * with union of weird types. Item should be an object in most cases...\r\n */\r\n @Input()\r\n public isPrimitiveValue: boolean = false;\r\n @Input()\r\n public isOutline: boolean = false;\r\n @Output()\r\n public readonly opened: EventEmitter<void> = new EventEmitter();\r\n @Output()\r\n public readonly closed: EventEmitter<void> = new EventEmitter();\r\n public get isOpen(): boolean {\r\n return this._isOpen.value.isOpen;\r\n }\r\n\r\n public constructor(protected readonly _changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n protected _setComponent(component: TKendoComponent): void {\r\n this._component = component;\r\n }\r\n\r\n protected _emitChanged(value: TValue): void {}\r\n\r\n protected _reset(): void {\r\n const hasValueChanged: boolean = this.hasValueChanged(this.defaultValue);\r\n\r\n if (hasValueChanged) {\r\n this.writeValue(this.defaultValue);\r\n this.formControl.reset(this.defaultValue);\r\n this.valueFormControl.reset(this.defaultValue);\r\n this._component.reset();\r\n this._emitChanged(this.defaultValue);\r\n } else {\r\n this.formControl.markAsPristine();\r\n this.formControl.markAsUntouched();\r\n this.valueFormControl.reset(this.defaultValue);\r\n this._component.reset();\r\n }\r\n }\r\n\r\n public init(): void {\r\n this._observer.listen(this._isDisabled, (isDisabled) => {\r\n if (isDisabled) {\r\n this.valueFormControl.disable();\r\n } else {\r\n this.valueFormControl.enable();\r\n }\r\n });\r\n }\r\n\r\n public open(shouldEmitEvent: boolean = true): void {\r\n this._component.toggle(true);\r\n this._isOpen.next({isOpen: true, shouldEmit: shouldEmitEvent});\r\n }\r\n\r\n public close(shouldEmitEvent: boolean = true): void {\r\n this._component.toggle(false);\r\n this._isOpen.next({isOpen: false, shouldEmit: shouldEmitEvent});\r\n }\r\n\r\n public toggle(shouldEmitEvent: boolean = true): void {\r\n if (this._isOpen) {\r\n this.close(shouldEmitEvent);\r\n } else {\r\n this.open(shouldEmitEvent);\r\n }\r\n }\r\n\r\n public override focus(): void {\r\n this._component.focus();\r\n }\r\n\r\n public override blur(): void {\r\n this._component.blur();\r\n }\r\n\r\n public onOpened(): void {\r\n this._isOpen.next({isOpen: true, shouldEmit: true});\r\n }\r\n\r\n public onClosed(): void {\r\n this._isOpen.next({isOpen: false, shouldEmit: true});\r\n }\r\n\r\n public onFocused(): void {\r\n this.focused.emit();\r\n }\r\n\r\n public onBlurred(): void {\r\n this.blurred.emit(\r\n new ControlBlurredEvent<TValue>(\r\n this.value,\r\n this._resetedValue || this._focusedValue,\r\n this.hasValueChanged(this._resetedValue || this._focusedValue)\r\n )\r\n );\r\n this._resetedValue = null;\r\n }\r\n\r\n public onChanged(value: TValue): void {\r\n value = value === undefined ? this.defaultValue : value;\r\n this.value = value;\r\n this.propagateChanged(value);\r\n this.propagateTouched();\r\n this._emitChanged(value);\r\n }\r\n\r\n public onResetClicked(): void {\r\n if (!this.hasReset) {\r\n return;\r\n }\r\n\r\n this._resetedValue = this.value;\r\n this.focus();\r\n this._reset();\r\n this.open();\r\n }\r\n\r\n public override writeValue(value: TValue): void {\r\n // CSS class @HostBindings aren't updated with OnPush change detection strategy,\r\n // and are to be marked for check.\r\n this._changeDetectorRef.markForCheck();\r\n this.valueFormControl.setValue(value);\r\n super.writeValue(value);\r\n }\r\n\r\n public override setDisabledState(isDisabled: boolean): void {\r\n super.setDisabledState(isDisabled);\r\n // Mark hasIsDisabledCssClass @HostBinding for check.\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","export enum ComboboxSearchSettingsOperator {\r\n Contains = 'contains',\r\n StartsWith = 'startsWith',\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport {ControlValueAccessor} from '@angular/forms';\r\nimport {isFalse, Is, Observer, Worker, ControlChangedEvent, flatten} from '@marcura/marcura-common';\r\nimport {GroupResult} from '@progress/kendo-data-query';\r\nimport {combineLatest, BehaviorSubject, Observable} from 'rxjs';\r\nimport {debounceTime, distinctUntilChanged, filter, map, skip, tap} from 'rxjs/operators';\r\nimport {AbstractDropdownComponent} from '../../components/abstract-dropdown/abstract-dropdown.component';\r\nimport {IComboboxKendoComponent} from '../../model/combobox-kendo-component.interface';\r\nimport {ComboboxSearchFn} from '../../model/combobox-search-fn.type';\r\nimport {ComboboxSearchSettingsOperator} from '../../model/combobox-search-settings-operator.enum';\r\nimport {IComboboxSearchSettings} from '../../model/combobox-search-settings.interface';\r\nimport {ComboboxItem} from '../../model/combobox-item.type';\r\n\r\n@Directive()\r\nexport class AbstractComboboxComponent<TItem, TValue, TChangedEvent extends ControlChangedEvent<TValue> = ControlChangedEvent<TValue>>\r\n extends AbstractDropdownComponent<TItem, TValue, IComboboxKendoComponent, TChangedEvent>\r\n implements ControlValueAccessor, OnDestroy {\r\n private _debounceTime: number = 500;\r\n private readonly _debounceObserver: Observer = new Observer();\r\n private readonly _worker: Worker = new Worker();\r\n private readonly _additionalItems: BehaviorSubject<ComboboxItem<TItem>[]> = new BehaviorSubject<ComboboxItem<TItem>[]>([]);\r\n protected _valueNormalizerItems: (TItem | GroupResult)[] = [];\r\n protected _isSync: boolean = false;\r\n protected readonly _loadedItems: BehaviorSubject<ComboboxItem<TItem>[]> = new BehaviorSubject<ComboboxItem<TItem>[]>([]);\r\n protected readonly _hasSearched: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n protected readonly _isSearching: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n protected readonly _searchText: BehaviorSubject<string> = new BehaviorSubject('');\r\n public readonly combinedItems: Observable<(TItem | GroupResult)[]> = combineLatest([this._loadedItems, this._additionalItems]).pipe(\r\n map(([items, additionalItems]): (TItem | GroupResult)[] => [...items, ...additionalItems].filter(Is.truthy) as (TItem | GroupResult)[])\r\n );\r\n @Input()\r\n public isSearchable: boolean = true;\r\n @Input()\r\n public minSearchCharacters: number = 1;\r\n @Input()\r\n public search: ComboboxSearchFn<TItem> | null = null;\r\n @Input()\r\n public areItemsCached: boolean = false;\r\n @Input()\r\n public get debounceTime(): number {\r\n return this._debounceTime;\r\n }\r\n public set debounceTime(value: number) {\r\n this._debounceTime = value;\r\n this._listenToSearched();\r\n }\r\n @Input()\r\n public override get items(): ComboboxItem<TItem>[] {\r\n return this._items;\r\n }\r\n public override set items(items: ComboboxItem<TItem>[]) {\r\n this._isSync = true;\r\n this._items = items || [];\r\n this._listenToSearched();\r\n this._loadedItems.next(this._items);\r\n }\r\n @Input()\r\n public get additionalItems(): ComboboxItem<TItem>[] {\r\n return this._additionalItems.value;\r\n }\r\n public set additionalItems(additionalItems: ComboboxItem<TItem>[]) {\r\n this._additionalItems.next(additionalItems || []);\r\n }\r\n @Input()\r\n public searchSettings: IComboboxSearchSettings = {\r\n isCaseSensitive: false,\r\n operator: ComboboxSearchSettingsOperator.Contains,\r\n };\r\n @Input()\r\n public isGroupable: boolean = false;\r\n @Output()\r\n public searched: EventEmitter<string> = new EventEmitter();\r\n public readonly isNoItemsTextVisible: Observable<boolean> = combineLatest([\r\n this._isSearching,\r\n this._hasSearched,\r\n this._isFocused,\r\n this.combinedItems,\r\n ]).pipe(\r\n map(([isSearching, hasSearched, isFocused, combinedItems]) => {\r\n return !isSearching && hasSearched && isFocused && combinedItems.length === 0;\r\n })\r\n );\r\n public readonly isMinSearchTextVisible: Observable<boolean> = combineLatest([\r\n this._isSearching,\r\n this._hasSearched,\r\n this._isFocused,\r\n ]).pipe(\r\n map(([isSearching, hasSearched, isFocused]) => {\r\n return !this._isSync && !isSearching && !hasSearched && isFocused;\r\n })\r\n );\r\n public readonly isLoadingSpinnerVisible: Observable<boolean> = combineLatest([\r\n this._isLoading,\r\n this._isSearching,\r\n ]).pipe(map(([isLoading, isSearching]) => isLoading || isSearching));\r\n // To show loading properly we are to use loadedItems as they don't include additionalItems.\r\n public readonly isLoadingTextVisible: Observable<boolean> = combineLatest([\r\n this.isLoadingSpinnerVisible,\r\n this._loadedItems,\r\n ]).pipe(map(([isLoadingSpinnerVisible, loadedItems]) => isLoadingSpinnerVisible && loadedItems.length === 0));\r\n\r\n private _disableChromeAutocomplete(): void {\r\n if (this._component.searchbar && this._component.searchbar.input) {\r\n this._renderer.setAttribute(this._component.searchbar.input.nativeElement, 'autocomplete', 'disabled');\r\n }\r\n }\r\n\r\n private _listenToSearched(): void {\r\n this._debounceObserver.clear();\r\n this._debounceObserver.listen(\r\n this._searchText.pipe(\r\n distinctUntilChanged(),\r\n skip(1),\r\n tap((searchText) => {\r\n this.searched.emit(searchText);\r\n this._isSearching.next(this.canLoadItems(searchText) && this._isOpen.value.isOpen);\r\n }),\r\n debounceTime(this._isSync ? 0 : this.debounceTime),\r\n filter(() => this._isOpen.value.isOpen)\r\n ),\r\n this.loadItems\r\n );\r\n }\r\n\r\n private _filterItems(items: ComboboxItem<TItem>[], searchText: string): TItem[] {\r\n if (!items || !items.length) {\r\n return [];\r\n }\r\n\r\n // TODO: technical-debt - fix group result case to avoid any\r\n return (items as any[]).filter((item) => {\r\n let itemText: string = (item[this.textField] || '').toString().trim() ?? '';\r\n itemText = this.searchSettings.isCaseSensitive ? itemText : itemText.toLowerCase();\r\n\r\n return this.searchSettings.operator === ComboboxSearchSettingsOperator.Contains\r\n ? itemText.indexOf(searchText) !== -1\r\n : itemText.substring(0, searchText.length) === searchText;\r\n });\r\n }\r\n\r\n protected override _setComponent(component: IComboboxKendoComponent): void {\r\n this._component = component;\r\n this._disableChromeAutocomplete();\r\n }\r\n\r\n protected searchItems(searchText: string): ComboboxItem<TItem>[] {\r\n if (!this.searchSettings || !searchText || !this._items.length) {\r\n return this._items;\r\n }\r\n\r\n searchText = this.searchSettings.isCaseSensitive ? searchText : searchText.toLowerCase();\r\n\r\n if (this.isGroupable) {\r\n const groups: GroupResult[] = <any>this._items;\r\n const filteredGroups: GroupResult[] = groups\r\n .map((group): GroupResult => ({\r\n ...group,\r\n items: this._filterItems(<TItem[]>group.items, searchText) as any,\r\n }))\r\n .filter((group) => group.items.length > 0);\r\n\r\n return <any>filteredGroups;\r\n }\r\n\r\n return this._filterItems(this._items, searchText);\r\n }\r\n\r\n protected canLoadItems(searchText: string): boolean {\r\n return searchText.length >= this.minSearchCharacters && !this._isSync;\r\n }\r\n\r\n protected getItem(items: (TItem | GroupResult)[], text: string): TItem | null {\r\n text = text.toLowerCase();\r\n return this._unwrapGroups(items).find((item) => `${item[this.textField]}`.toLowerCase() === text) ?? null;\r\n }\r\n\r\n private _unwrapGroups(items: (TItem | GroupResult)[]): TItem[] {\r\n return flatten(\r\n items.map(item => this._isGroupResult(item) ? item.items as TItem[] : [item])\r\n );\r\n }\r\n\r\n private _isGroupResult(item: TItem | GroupResult): item is GroupResult {\r\n const object: any = item;\r\n return object.items !== undefined && object.aggregates !== undefined && object.field !== undefined && object.value !== undefined;\r\n }\r\n\r\n protected isItemEqual(item1: TItem | null | undefined, item2: TItem | null | undefined): boolean {\r\n const isItem1Empty: boolean = item1 === null || item1 === undefined;\r\n const isItem2Empty: boolean = item2 === null || item2 === undefined;\r\n\r\n if (isItem1Empty && isItem2Empty) {\r\n return true;\r\n }\r\n\r\n if (isItem1Empty || isItem2Empty) {\r\n return false;\r\n }\r\n\r\n return this.isPrimitiveValue ? item1 === item2 : item1![this.valueField] === item2![this.valueField];\r\n }\r\n\r\n protected loadItems = (searchText?: string): void => {\r\n searchText = (searchText || '').trim();\r\n\r\n if (this._isSync) {\r\n this._hasSearched.next(!!searchText);\r\n this._loadedItems.next(this.searchItems(searchText));\r\n } else {\r\n if (this.canLoadItems(searchText)) {\r\n this._isSearching.next(true);\r\n this._worker.handle(this.search ? this.search(searchText) : new BehaviorSubject([]), (items) => {\r\n this._hasSearched.next(true);\r\n this._loadedItems.next(items);\r\n this._valueNormalizerItems = [...items, ...this._additionalItems.value] as (TItem | GroupResult)[];\r\n this._isSearching.next(false);\r\n });\r\n } else {\r\n this._hasSearched.next(false);\r\n this._loadedItems.next([]);\r\n this._valueNormalizerItems = [];\r\n this._isSearching.next(false);\r\n }\r\n }\r\n };\r\n\r\n public constructor(changeDetectorRef: ChangeDetectorRef, protected readonly _renderer: Renderer2) {\r\n super(changeDetectorRef);\r\n }\r\n\r\n public override ngOnDestroy(): void {\r\n this._debounceObserver.destroy();\r\n this._worker.destroy();\r\n super.ngOnDestroy();\r\n }\r\n\r\n public override init(): void {\r\n super.init();\r\n this._listenToSearched();\r\n\r\n if (this._isSync) {\r\n this._loadedItems.next(this._items);\r\n }\r\n\r\n // Closed.\r\n this._observer.listen(\r\n this._isOpen.pipe(\r\n filter((event) => !event.isOpen),\r\n skip(1)\r\n ),\r\n (event) => {\r\n if (!this.areItemsCached && !this._isSync) {\r\n this._loadedItems.next([]);\r\n }\r\n\r\n this._worker.cancel();\r\n this._isSearching.next(false);\r\n\r\n if (event.shouldEmit) {\r\n this.closed.emit();\r\n }\r\n }\r\n );\r\n\r\n // Blurred.\r\n this._observer.listen(this._isFocused.pipe(filter(isFalse)), () => {\r\n // Restore original unfiltered items when the component is blurred\r\n // after some search text entered. Consider a case:\r\n // 1. Search with text that gives 0 items.\r\n // 2. Blur and focus.\r\n // 3. Search text is cleared, but items remain empty, so the list won't show up.\r\n this._loadedItems.next(this._items);\r\n this._hasSearched.next(false);\r\n });\r\n }\r\n\r\n public onSearched(searchText: string): void {\r\n this._searchText.next(searchText);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n forwardRef,\r\n HostBinding,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {\r\n ABSTRACT_CONTROL_COMPONENT,\r\n ControlSize,\r\n ISizeableControlComponent,\r\n isTrue,\r\n OPENABLE_CONTROL_COMPONENT,\r\n SIZEABLE_CONTROL_COMPONENT,\r\n STATEABLE_CONTROL_COMPONENT,\r\n TYPEABLE_CONTROL_COMPONENT,\r\n} from '@marcura/marcura-common';\r\nimport {ComboBoxComponent as KendoComboBoxComponent, PopupSettings} from '@progress/kendo-angular-dropdowns';\r\nimport {Observable} from 'rxjs';\r\nimport {debounceTime, filter, map} from 'rxjs/operators';\r\nimport {COMBOBOX_LOCALIZER} from '../../combobox.injectables';\r\nimport {ComboboxItemTemplateDirective} from '../../directives/combobox-item-template.directive';\r\nimport {ComboboxChangedEvent} from '../../model/combobox-changed.event';\r\nimport {IComboboxLocalization} from '../../model/combobox-localization.interface';\r\nimport {IDropdownLocalizer} from '../../model/dropdown-localizer.interface';\r\nimport {AbstractComboboxComponent} from '../abstract-combobox/abstract-combobox.component';\r\n\r\n@Component({\r\n selector: 'sg-combobox',\r\n templateUrl: 'combobox.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ABSTRACT_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n },\r\n {\r\n provide: OPENABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n },\r\n {\r\n provide: STATEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n },\r\n {\r\n provide: TYPEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n },\r\n {\r\n provide: SIZEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => ComboboxComponent),\r\n },\r\n ],\r\n})\r\nexport class ComboboxComponent<TItem> extends AbstractComboboxComponent<TItem, TItem | null, ComboboxChangedEvent<TItem>>\r\n implements ISizeableControlComponent, OnInit {\r\n @Input()\r\n public override formControl!: FormControl<TItem | null>;\r\n\r\n // TODO: technical-debt this component shouldn't have default value\r\n public override readonly defaultValue: TItem = null as any;\r\n private _size: ControlSize = ControlSize.Medium;\r\n private _loadingText: string | null = null;\r\n private _noItemsText: string | null = null;\r\n private _minSearchText: string | null = null;\r\n private _localization: IComboboxLocalization = {\r\n loadingText: 'Loading...',\r\n noItemsText: 'No items found.',\r\n minSearchText: 'Enter {minSearchCharacters} or more characters.',\r\n };\r\n @ViewChild('component', {static: true})\r\n public component!: KendoComboBoxComponent;\r\n @ContentChild(ComboboxItemTemplateDirective, {read: TemplateRef, static: true})\r\n public itemTemplate: TemplateRef<any> | null = null;\r\n @HostBinding('class.sg-combobox')\r\n public readonly hasCssClass: boolean = true;\r\n @HostBinding('class.sg-combobox--has-value')\r\n public get hasHasValueCssClass(): boolean {\r\n return this.hasValue;\r\n }\r\n @HostBinding('class.sg-combobox--is-hovered')\r\n public get hasIsHoveredCssClass(): boolean {\r\n return this._isHovered.value;\r\n }\r\n @HostBinding('class.sg-combobox--is-focused')\r\n public get hasIsFocusedCssClass(): boolean {\r\n return this.isFocused;\r\n }\r\n @HostBinding('class.sg-combobox--is-disabled')\r\n public get hasIsDisabledCssClass(): boolean {\r\n return this.isDisabled;\r\n }\r\n @HostBinding('class.sg-combobox--type-success')\r\n public get isSuccessType(): boolean {\r\n return this._isSuccessType;\r\n }\r\n @HostBinding('class.sg-combobox--type-error')\r\n public get isErrorType(): boolean {\r\n return this._isErrorType;\r\n }\r\n @HostBinding('class.sg-combobox--type-warning')\r\n public get isWarningType(): boolean {\r\n return this._isWarningType;\r\n }\r\n @HostBinding('class.sg-combobox--state-highlighted')\r\n public get isHighlightedState(): boolean {\r\n return this._isHighlightedState;\r\n }\r\n @HostBinding('class.sg-combobox--is-loading')\r\n public get hasIsLoadingCssClass(): boolean {\r\n return this.isLoading || this._isSearching.value;\r\n }\r\n @HostBinding('class.sg-combobox--has-reset')\r\n public get hasHasResetCssClass(): boolean {\r\n return this.hasReset;\r\n }\r\n @HostBinding('class.sg-combobox--is-outline')\r\n public get hasIsOutlineCssClass(): boolean {\r\n return this.isOutline;\r\n }\r\n @HostBinding('class.sg-combobox--size-small')\r\n public hasSmallSizeCssClass: boolean = false;\r\n @HostBinding('class.sg-combobox--size-medium')\r\n public hasMediumSizeCssClass: boolean = true;\r\n @Input()\r\n public get loadingText(): string {\r\n return this._loadingText || this._localization.loadingText;\r\n }\r\n public set loadingText(loadingText: string) {\r\n this._loadingText = loadingText;\r\n }\r\n @Input()\r\n public get noItemsText(): string {\r\n return this._noItemsText || this._localization.noItemsText;\r\n }\r\n public set noItemsText(noItemsText: string) {\r\n this._noItemsText = noItemsText;\r\n }\r\n @Input()\r\n public get minSearchText(): string {\r\n return this._minSearchText || this._localization.minSearchText;\r\n }\r\n public set minSearchText(minSearchText: string) {\r\n this._minSearchText = minSearchText;\r\n }\r\n @Input()\r\n public shouldSuggest: boolean = true;\r\n @Input()\r\n public openOnFocus: boolean = true;\r\n @Input()\r\n public allowCustom: boolean = false;\r\n @Input()\r\n public appendPopupToRoot: boolean = true;\r\n @Input()\r\n public get size(): ControlSize {\r\n return this._size;\r\n }\r\n public set size(size: ControlSize) {\r\n if (size) {\r\n this._size = size;\r\n }\r\n\r\n this.hasSmallSizeCssClass = this._size === ControlSize.Small;\r\n this.hasMediumSizeCssClass = this._size === ControlSize.Medium;\r\n }\r\n /**\r\n * This field contains factory method for items which will be created placing customizable values inside component. Works when allowCustom is true.\r\n *\r\n * @memberof ComboboxComponent\r\n */\r\n @Input()\r\n public itemFactory: (text: string) => TItem = (text: string): TItem => {\r\n return {[this.valueField]: null, [this.textField]: text} as any;\r\n };\r\n public get popupSettings(): PopupSettings {\r\n return {\r\n animate: true,\r\n appendTo: this.appendPopupToRoot ? 'root' : 'component',\r\n popupClass: `sg-combobox-popup${this.isGroupable ? ' sg-combobox-popup--is-groupable' : ''} ${\r\n this.popupClass || ''\r\n }`,\r\n };\r\n }\r\n\r\n public constructor(\r\n changeDetectorRef: ChangeDetectorRef,\r\n renderer: Renderer2,\r\n @Optional()\r\n @Inject(COMBOBOX_LOCALIZER)\r\n private readonly _localizer: IDropdownLocalizer<IComboboxLocalization>\r\n ) {\r\n super(changeDetectorRef, renderer);\r\n this._localize();\r\n }\r\n\r\n private _localize(): void {\r\n if (!this._localizer) {\r\n return;\r\n }\r\n\r\n this._localization = this._localizer.localization;\r\n this._observer.listen(this._localizer.localizationChanged, (localization) => {\r\n this._localization = localization;\r\n });\r\n }\r\n\r\n public override onResetClicked(): void {\r\n if (!this.hasReset) {\r\n return;\r\n }\r\n\r\n this._resetedValue = this.value;\r\n this.focus();\r\n this._reset();\r\n\r\n if (this.openOnFocus) {\r\n this.open();\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._setComponent(this.component);\r\n this.init();\r\n\r\n // Opened.\r\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => {\r\n if (!this.areItemsCached) {\r\n this._hasSearched.next(false);\r\n }\r\n\r\n if (this.canLoadItems(this._searchText.value) && this._loadedItems.value.length === 0) {\r\n this.loadItems(this._searchText.value);\r\n }\r\n });\r\n this._observer.listen(\r\n this._isOpen.pipe(\r\n filter((event) => event.isOpen),\r\n // When clicking reset icon, opened event triggers search event with\r\n // with old searchbar value instead of an empty string.\r\n // So we need to give searchbar a moment before fire opened event.\r\n // Steps to reproduce the bug:\r\n // 1) Search for Vladivostok and select it 2) Reset value with icon\r\n // 3) searchText remains \"Vladivostok\", but should be \"\".\r\n debounceTime(50)\r\n ),\r\n () => this.opened.emit()\r\n );\r\n\r\n // Focused.\r\n this._observer.listen(this._isFocused.pipe(filter(isTrue)), () => {\r\n if (this.openOnFocus) {\r\n this.open();\r\n }\r\n });\r\n }\r\n\r\n public override onChanged(value: TItem): void {\r\n if (!this.hasValueChanged(value)) {\r\n return;\r\n }\r\n\r\n value = value === undefined ? this.defaultValue : value;\r\n this.value = value;\r\n this.component.searchbar.suggestedText = '';\r\n this.propagateChanged(value);\r\n this.propagateTouched();\r\n this._emitChanged(value);\r\n\r\n if (!value && this._isSync) {\r\n // Restore original items after selection, otherwise when opening the list\r\n // next time, only the previously selected item will appear.\r\n // Steps to reproduce: 1) Select \"Cayman Brac\", 2) Focus out and focus back,\r\n // 3) Delete a couple of characters with a Backspace from the end and hit Enter.\r\n // 4) Open the list.\r\n this.loadItems();\r\n }\r\n }\r\n\r\n public valueNormalizer = (text$: Observable<string>): any =>\r\n text$.pipe(\r\n map(() => {\r\n let value: TItem | null = null;\r\n if (!this.component) {\r\n return value;\r\n }\r\n // Can't use this._searchText.value here as it might be empty, consider:\r\n // 1) type custom text, 2) focus out and back in 3) there's a text in searchbar,\r\n // but this._searchText.value is empty.\r\n // So this.component.searchbar.value is to be used.\r\n const text: string = (this.component.searchbar.value || '').trim();\r\n\r\n if (!text) {\r\n return value;\r\n }\r\n\r\n if (this.component.value && this.component.value[this.textField].toLowerCase() === text.toLowerCase()) {\r\n value = this.component.value;\r\n } else if (this.getItem(this._valueNormalizerItems, text)) {\r\n // If areItemsCached is off, then this.data will be lost by this moment,\r\n // so we use a cache this.valueNormalizerItems.\r\n // This is relevant especially in IE/Edge where this.component.value is null,\r\n // so the code falls back to this condition section.\r\n value = this.getItem(this._valueNormalizerItems, text);\r\n } else if (this.allowCustom) {\r\n value = this.itemFactory(text);\r\n\r\n if (this._isSync) {\r\n // Restore original items after selection, otherwise when opening the list\r\n // next time, only the selected item will appear.\r\n this.loadItems();\r\n }\r\n } else {\r\n // Clears search text if suggestion hasn't been selected.\r\n // Steps to reproduce.\r\n // 1. Use Dymanic Empty sample.\r\n // 2. Type 'to', wait for the list to load, but don't select 'Tokai'. Instead hit Esc key.\r\n // 3. See that the search bar still contains 'to' text, while the value is null,\r\n // which is wrong - search bar text should be removed.\r\n // this.component.searchbar.suggestedText = ''; // This doesn't work.\r\n // As the above line doesn't work, so workaround it by setting form control value to null.\r\n this.valueFormControl.setValue(value);\r\n }\r\n\r\n this._valueNormalizerItems = [];\r\n return value;\r\n })\r\n );\r\n\r\n protected override _emitChanged(value: TItem): void {\r\n this.changed.emit(new ComboboxChangedEvent(value));\r\n }\r\n\r\n protected override hasValueChanged(value: TItem | null | undefined): boolean {\r\n return !this.isItemEqual(this.value, value);\r\n }\r\n\r\n}\r\n","<kendo-combobox\r\n #component\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"valueFormControl\"\r\n [data]=\"combinedItems | async\"\r\n [filterable]=\"isSearchable\"\r\n [valueField]=\"valueKey\"\r\n [textField]=\"textKey\"\r\n [loading]=\"isLoadingSpinnerVisible | async\"\r\n [clearButton]=\"false\"\r\n [popupSettings]=\"popupSettings\"\r\n [listHeight]=\"listHeight\"\r\n [valuePrimitive]=\"isPrimitiveValue\"\r\n [suggest]=\"shouldSuggest\"\r\n [allowCustom]=\"true\"\r\n [valueNormalizer]=\"valueNormalizer\"\r\n (filterChange)=\"onSearched($event)\"\r\n (valueChange)=\"onChanged($event)\"\r\n (open)=\"onOpened()\"\r\n (close)=\"onClosed()\"\r\n (focus)=\"onFocused()\"\r\n (blur)=\"onBlurred()\"\r\n>\r\n <ng-template kendoDropDownListFooterTemplate>\r\n <sg-combobox-popup-footer\r\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\r\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\r\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\r\n [loadingText]=\"loadingText\"\r\n [noItemsText]=\"noItemsText\"\r\n [minSearchText]=\"minSearchText\"\r\n [minSearchCharacters]=\"minSearchCharacters\"\r\n >\r\n </sg-combobox-popup-footer>\r\n </ng-template>\r\n <ng-template kendoComboBoxNoDataTemplate></ng-template>\r\n <ng-template *ngIf=\"itemTemplate\" kendoComboBoxItemTemplate let-dataItem>\r\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\r\n </ng-template>\r\n</kendo-combobox>\r\n<div class=\"sg-combobox__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\r\n <i class=\"far fa-times\"></i>\r\n</div>\r\n<div class=\"sg-combobox__state-line\"></div>\r\n","import {ControlChangedEvent} from '@marcura/marcura-common';\r\n\r\nexport class DropdownChangedEvent<TValue> extends ControlChangedEvent<TValue> {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {\r\n ABSTRACT_CONTROL_COMPONENT, ControlBlurredEvent,\r\n ControlSize,\r\n ISizeableControlComponent,\r\n OPENABLE_CONTROL_COMPONENT,\r\n SIZEABLE_CONTROL_COMPONENT,\r\n STATEABLE_CONTROL_COMPONENT,\r\n TYPEABLE_CONTROL_COMPONENT,\r\n} from '@marcura/marcura-common';\r\nimport {DropDownListComponent, PopupSettings} from '@progress/kendo-angular-dropdowns';\r\nimport {filter, skip} from 'rxjs/operators';\r\nimport {DROPDOWN_LOCALIZER} from '../../combobox.injectables';\r\nimport {AbstractDropdownComponent} from '../../components/abstract-dropdown/abstract-dropdown.component';\r\nimport {DropdownItemTemplateDirective} from '../../directives/dropdown-item-template.directive';\r\nimport {DropdownValueTemplateDirective} from '../../directives/dropdown-value-template.directive';\r\nimport {DropdownChangedEvent} from '../../model/dropdown-changed.event';\r\nimport {IDropdownLocalization} from '../../model/dropdown-localization.interface';\r\nimport {IDropdownLocalizer} from '../../model/dropdown-localizer.interface';\r\n\r\n@Component({\r\n selector: 'sg-dropdown',\r\n templateUrl: 'dropdown.component.html',\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ABSTRACT_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n },\r\n {\r\n provide: OPENABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n },\r\n {\r\n provide: STATEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n },\r\n {\r\n provide: TYPEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n },\r\n {\r\n provide: SIZEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => DropdownComponent),\r\n },\r\n ],\r\n})\r\nexport class DropdownComponent<TItem> extends AbstractDropdownComponent<TItem, TItem | null, DropDownListComponent, DropdownChangedEvent<TItem>>\r\n implements ISizeableControlComponent, OnInit, ControlValueAccessor {\r\n @Input()\r\n public override formControl!: FormControl<TItem | null>;\r\n\r\n // TODO: technical-debt this component shouldn't have default value\r\n public override readonly defaultValue: TItem = null as any;\r\n private _size: ControlSize = ControlSize.Medium;\r\n private _noItemsText: string | null = null;\r\n private _localization: IDropdownLocalization = {\r\n noItemsText: 'No items found.',\r\n };\r\n @ViewChild('component', {static: true})\r\n public component!: DropDownListComponent;\r\n @ContentChild(DropdownItemTemplateDirective, {read: TemplateRef})\r\n public itemTemplate: TemplateRef<any> | null = null;\r\n @ContentChild(DropdownValueTemplateDirective, {read: TemplateRef})\r\n public valueTemplate: TemplateRef<any> | null = null;\r\n @HostBinding('class.sg-dropdown')\r\n public readonly hasCssClass: boolean = true;\r\n @HostBinding('class.sg-dropdown--has-value')\r\n public get hasHasValueCssClass(): boolean {\r\n return this.hasValue;\r\n }\r\n @HostBinding('class.sg-dropdown--is-focused')\r\n public get hasIsFocusedCssClass(): boolean {\r\n return this.isFocused;\r\n }\r\n @HostBinding('class.sg-dropdown--is-hovered')\r\n public get hasIsHoveredCssClass(): boolean {\r\n return this._isHovered.value;\r\n }\r\n @HostBinding('class.sg-dropdown--is-disabled')\r\n public get hasIsDisabledCssClass(): boolean {\r\n return this.isDisabled;\r\n }\r\n @HostBinding('class.sg-dropdown--type-success')\r\n public get isSuccessType(): boolean {\r\n return this._isSuccessType;\r\n }\r\n @HostBinding('class.sg-dropdown--type-error')\r\n public get isErrorType(): boolean {\r\n return this._isErrorType;\r\n }\r\n @HostBinding('class.sg-dropdown--type-warning')\r\n public get isWarningType(): boolean {\r\n return this._isWarningType;\r\n }\r\n @HostBinding('class.sg-dropdown--state-highlighted')\r\n public get isHighlightedState(): boolean {\r\n return this._isHighlightedState;\r\n }\r\n @HostBinding('class.sg-dropdown--is-loading')\r\n public get hasIsLoadingCssClass(): boolean {\r\n return this.isLoading;\r\n }\r\n @HostBinding('class.sg-dropdown--has-reset')\r\n public get hasHasResetCssClass(): boolean {\r\n return this.hasReset;\r\n }\r\n @HostBinding('class.sg-dropdown--is-outline')\r\n public get hasIsOutlineCssClass(): boolean {\r\n return this.isOutline;\r\n }\r\n @HostBinding('class.sg-dropdown--size-small')\r\n public hasSmallSizeCssClass: boolean = false;\r\n @HostBinding('class.sg-dropdown--size-medium')\r\n public hasMediumSizeCssClass: boolean = true;\r\n @Input()\r\n public get noItemsText(): string {\r\n return this._noItemsText || this._localization.noItemsText;\r\n }\r\n public set noItemsText(noItemsText: string) {\r\n this._noItemsText = noItemsText;\r\n }\r\n @Input()\r\n public get size(): ControlSize {\r\n return this._size;\r\n }\r\n public set size(size: ControlSize) {\r\n if (size) {\r\n this._size = size;\r\n }\r\n\r\n this.hasSmallSizeCssClass = this._size === ControlSize.Small;\r\n this.hasMediumSizeCssClass = this._size === ControlSize.Medium;\r\n }\r\n public get popupSettings(): PopupSettings {\r\n return {\r\n animate: true,\r\n popupClass: `sg-dropdown-popup ${this.popupClass || ''}`,\r\n };\r\n }\r\n\r\n public constructor(\r\n changeDetectorRef: ChangeDetectorRef,\r\n @Optional()\r\n @Inject(DROPDOWN_LOCALIZER)\r\n private readonly _localizer: IDropdownLocalizer<IDropdownLocalization>\r\n ) {\r\n super(changeDetectorRef);\r\n this._localize();\r\n }\r\n\r\n private _localize(): void {\r\n if (!this._localizer) {\r\n return;\r\n }\r\n\r\n this._localization = this._localizer.localization;\r\n this._observer.listen(this._localizer.localizationChanged, (localization) => {\r\n this._localization = localization;\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._setComponent(this.component);\r\n this.init();\r\n\r\n // Opened.\r\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => this.opened.emit());\r\n\r\n // Closed.\r\n this._observer.listen(\r\n this._isOpen.pipe(\r\n filter((event) => !event.isOpen),\r\n skip(1)\r\n ),\r\n (event) => {\r\n if (event.shouldEmit) {\r\n this.closed.emit();\r\n }\r\n }\r\n );\r\n }\r\n\r\n protected override _emitChanged(value: TItem): void {\r\n this.changed.emit(new DropdownChangedEvent(value));\r\n }\r\n}\r\n","<kendo-dropdownlist\r\n #component\r\n [formControl]=\"valueFormControl\"\r\n [data]=\"items\"\r\n [valueField]=\"valueKey\"\r\n [textField]=\"textKey\"\r\n [loading]=\"isLoading\"\r\n [popupSettings]=\"popupSettings\"\r\n [listHeight]=\"listHeight\"\r\n [valuePrimitive]=\"isPrimitiveValue\"\r\n (valueChange)=\"onChanged($event)\"\r\n (open)=\"onOpened()\"\r\n (close)=\"onClosed()\"\r\n (focus)=\"onFocused()\"\r\n (blur)=\"onBlurred()\"\r\n>\r\n <ng-template *ngIf=\"itemTemplate\" kendoDropDownListItemTemplate let-dataItem>\r\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\r\n </ng-template>\r\n <ng-template kendoDropDownListValueTemplate let-dataItem>\r\n <ng-container *ngIf=\"dataItem\">\r\n <ng-container *ngIf=\"valueTemplate\">\r\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueTemplate\">{{ dataItem[textField] }}</ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!dataItem\">\r\n <span *ngIf=\"placeholder\" class=\"k-placeholder\">{{ placeholder }}</span>\r\n <ng-container *ngIf=\"!placeholder && valueTemplate\">\r\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template kendoDropDownListFooterTemplate>\r\n <sg-combobox-popup-footer [isNoItemsTextVisible]=\"items.length === 0\" [noItemsText]=\"noItemsText\">\r\n </sg-combobox-popup-footer>\r\n </ng-template>\r\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\r\n</kendo-dropdownlist>\r\n<div class=\"sg-dropdown__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\r\n <i class=\"far fa-times\"></i>\r\n</div>\r\n<div class=\"sg-dropdown__state-line\"></div>\r\n","import {ControlChangedEvent} from '@marcura/marcura-common';\r\n\r\nexport class MultiselectChangedEvent<TValue> extends ControlChangedEvent<TValue> {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n forwardRef,\r\n HostBinding,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {\r\n ABSTRACT_CONTROL_COMPONENT,\r\n OPENABLE_CONTROL_COMPONENT,\r\n STATEABLE_CONTROL_COMPONENT,\r\n TYPEABLE_CONTROL_COMPONENT,\r\n} from '@marcura/marcura-common';\r\nimport {TagColor} from '@marcura/marcura-tag';\r\nimport {MultiSelectComponent, PopupSettings} from '@progress/kendo-angular-dropdowns';\r\nimport {Observable, of} from 'rxjs';\r\nimport {filter, map, switchMap, tap} from 'rxjs/operators';\r\nimport {MULTISELECT_LOCALIZER} from '../../combobox.injectables';\r\nimport {MultiselectItemTemplateDirective} from '../../directives/multiselect-item-template.directive';\r\nimport {MultiselectTagTemplateDirective} from '../../directives/multiselect-tag-template.directive';\r\nimport {IDropdownLocalizer} from '../../model/dropdown-localizer.interface';\r\nimport {MultiselectChangedEvent} from '../../model/multiselect-changed.event';\r\nimport {IMultiselectLocalization} from '../../model/multiselect-localization.interface';\r\nimport {AbstractComboboxComponent} from '../abstract-combobox/abstract-combobox.component';\r\n\r\n@Component({\r\n selector: 'sg-multiselect',\r\n templateUrl: 'multiselect.component.html',\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ABSTRACT_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n },\r\n {\r\n provide: OPENABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n },\r\n {\r\n provide: STATEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n },\r\n {\r\n provide: TYPEABLE_CONTROL_COMPONENT,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n },\r\n ],\r\n})\r\nexport class MultiselectComponent<TItem> extends AbstractComboboxComponent<TItem, TItem[], MultiselectChangedEvent<TItem[]>> implements OnInit {\r\n @Input()\r\n public override formControl!: FormControl<TItem[]>;\r\n public override readonly valueFormControl: FormControl<TItem[]> = new FormControl();\r\n\r\n private _loadingText: string | null = null;\r\n private _noItemsText: string | null = null;\r\n private _minSearchText: string | null = null;\r\n private _localization: IMultiselectLocalization = {\r\n loadingText: 'Loading...',\r\n noItemsText: 'No items found.',\r\n minSearchText: 'Enter {minSearchCharacters} or more characters.',\r\n };\r\n public override readonly defaultValue: TItem[] = [];\r\n\r\n @ViewChild('component', {static: true})\r\n public component!: MultiSelectComponent;\r\n @ContentChild(MultiselectItemTemplateDirective, {read: TemplateRef, static: true})\r\n public itemTemplate: TemplateRef<any> | null = null;\r\n @ContentChild(MultiselectTagTemplateDirective, {read: TemplateRef, static: true})\r\n public tagTemplate: TemplateRef<any> | null = null;\r\n @HostBinding('class.sg-multiselect')\r\n public readonly hasCssClass: boolean = true;\r\n @HostBinding('class.sg-multiselect--has-value')\r\n public override get hasValue(): boolean {\r\n return this.valueFormControl.value && this.valueFormControl.value.length > 0;\r\n }\r\n @HostBinding('class.sg-multiselect--is-focused')\r\n public get hasIsFocusedCssClass(): boolean {\r\n return this.isFocused;\r\n }\r\n @HostBinding('class.sg-multiselect--is-hovered')\r\n public get hasIsHoveredCssClass(): boolean {\r\n return this._isHovered.value;\r\n }\r\n @HostBinding('class.sg-multiselect--is-disabled')\r\n public get hasIsDisabledCssClass(): boolean {\r\n return this.isDisabled;\r\n }\r\n @HostBinding('class.sg-multiselect--type-success')\r\n public get isSuccessType(): boolean {\r\n return this._isSuccessType;\r\n }\r\n @HostBinding('class.sg-multiselect--type-error')\r\n public get isErrorType(): boolean {\r\n return this._isErrorType;\r\n }\r\n @HostBinding('class.sg-multiselect--type-warning')\r\n public get isWarningType(): boolean {\r\n return this._isWarningType;\r\n }\r\n @HostBinding('class.sg-multiselect--state-highlighted')\r\n public get isHighlightedState(): boolean {\r\n return this._isHighlightedState;\r\n }\r\n @HostBinding('class.sg-multiselect--is-loading')\r\n public get hasIsLoadingCssClass(): boolean {\r\n return this.isLoading || this._isSearching.value;\r\n }\r\n @HostBinding('class.sg-multiselect--has-reset')\r\n public get hasHasResetCssClass(): boolean {\r\n return this.hasReset;\r\n }\r\n @HostBinding('class.sg-multiselect--is-outline')\r\n public get hasIsOutlineCssClass(): boolean {\r\n return this.isOutline;\r\n }\r\n @Input()\r\n public get loadingText(): string {\r\n return this._loadingText || this._localization.loadingText;\r\n }\r\n public set loadingText(loadingText: string) {\r\n this._loadingText = loadingText;\r\n }\r\n @Input()\r\n public get noItemsText(): string {\r\n return this._noItemsText || this._localization.noItemsText;\r\n }\r\n public set noItemsText(noItemsText: string) {\r\n this._noItemsText = noItemsText;\r\n }\r\n @Input()\r\n public get minSearchText(): string {\r\n return this._minSearchText || this._localization.minSearchText;\r\n }\r\n public set minSearchText(minSearchText: string) {\r\n this._minSearchText = minSearchText;\r\n }\r\n @Input()\r\n public isReadOnlyTag: ((item: TItem) => boolean) | null = null;\r\n @Input()\r\n public isActivatedTag: (item: TItem) => boolean = () => false;\r\n @Input()\r\n public tagColor: (item: TItem) => any | TagColor = () => null;\r\n public get popupSettings(): PopupSettings {\r\n return {\r\n animate: true,\r\n popupClass: `sg-multiselect-popup${this.isGroupable ? ' sg-multiselect-popup--is-groupable' : ''} ${\r\n this.popupClass || ''\r\n }`,\r\n };\r\n }\r\n @Input()\r\n public allowCustom: boolean = false;\r\n /**\r\n * This field contains factory method which takes a custom text input and returns an Observable<TItem>.\r\n * The observable sends the text to a remote service, which processes it and returns a generated TItem.\r\n * Works when allowCustom is true.\r\n *\r\n * @memberof MultiselectComponent\r\n */\r\n @Input()\r\n public itemFactoryAsync: ((text: string) => Observable<TItem>) | undefined = undefined;\r\n /**\r\n * This field contains factory method for items which will be created placing customizable values inside component. Works when allowCustom is true.\r\n *\r\n * @memberof MultiselectComponent\r\n */\r\n @Input()\r\n public itemFactory: (text: string) => TItem = (text: string): TItem => {\r\n return {[this.valueField]: null, [this.textField]: text} as any;\r\n };\r\n\r\n public constructor(\r\n changeDetectorRef: ChangeDetectorRef,\r\n renderer: Renderer2,\r\n @Optional()\r\n @Inject(MULTISELECT_LOCALIZER)\r\n private readonly _localizer: IDropdownLocalizer<IMultiselectLocalization>\r\n ) {\r\n super(changeDetectorRef, renderer);\r\n this._localize();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._setComponent(this.component);\r\n this.init();\r\n\r\n // Opened.\r\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => {\r\n this._hasSearched.next(false);\r\n\r\n if (!this.areItemsCached && this._loadedItems.value.length === 0) {\r\n this.loadItems(this._searchText.value);\r\n }\r\n });\r\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => this.opened.emit());\r\n }\r\n\r\n public valueNormalizer = (text$: Observable<string>): any =>\r\n text$.pipe(\r\n switchMap(() => {\r\n if (!this.component) {\r\n return of(null);\r\n }\r\n // Can't use this._searchText.value here as it might be empty, consider:\r\n // 1) type custom text, 2) focus out and back in 3) there's a text in searchbar,\r\n // but this._searchText.value is empty.\r\n // So this.component.searchbar.value is to be used.\r\n const text: string = (this.component.searchbar.value || '').trim();\r\n\r\n if (!text) {\r\n return of(null);\r\n }\r\n\r\n const matchingValue: TItem | null = this.component.value?.find((item) =>\r\n item[this.textField].toLowerCase() === text.toLowerCase()) ?? null;\r\n // Handle case when value already contains items that match the search text.\r\n if (matchingValue) {\r\n return of(matchingValue);\r\n }\r\n // If no matches found in the selected values, check if item is in cache.\r\n const cachedValue: TItem | null = this.getItem(this._valueNormalizerItems, text);\r\n // If areItemsCached is off, then this.data will be lost by this moment,\r\n // so we use a cache this.valueNormalizerItems.\r\n // This is relevant especially in IE/Edge where this.component.value is null,\r\n // so the code falls back to this condition section.\r\n if (cachedValue) {\r\n return of(cachedValue);\r\n }\r\n // If no match is found and custom values are allowed, create a new custom item\r\n if (this.allowCustom) {\r\n return (this.itemFactoryAsync ? this.itemFactoryAsync(text) : of(this.itemFactory(text))).pipe(\r\n tap(() => {\r\n if (this._isSync) {\r\n // Restore original items after selection, otherwise when opening the list\r\n // next time, only the selected item will appear.\r\n this.loadItems();\r\n }\r\n }));\r\n }\r\n\r\n return of(null);\r\n }),\r\n map((value) => {\r\n this._valueNormalizerItems = [];\r\n return value;\r\n })\r\n );\r\n\r\n protected override _emitChanged(value: TItem[]): void {\r\n this.changed.emit(new MultiselectChangedEvent(value));\r\n }\r\n\r\n protected override hasValueChanged(value: TItem[]): boolean {\r\n const isOldValueEmpty: boolean = this.value === null || this.value === undefined || this.value.length === 0;\r\n const isNewValueEmpty: boolean = value === null || value === undefined || value.length === 0;\r\n\r\n if (isOldValueEmpty && isNewValueEmpty) {\r\n return false;\r\n }\r\n\r\n if (isOldValueEmpty || isNewValueEmpty) {\r\n return true;\r\n }\r\n\r\n return (\r\n this.value.length !== value.length || this.value.some((item, index) => !this.isItemEqual(item, value[index]))\r\n );\r\n }\r\n\r\n private _localize(): void {\r\n if (!this._localizer) {\r\n return;\r\n }\r\n\r\n this._localization = this._localizer.localization;\r\n this._observer.listen(this._localizer.localizationChanged, (localization) => {\r\n this._localization = localization;\r\n });\r\n }\r\n}\r\n","<kendo-multiselect\r\n #component\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"valueFormControl\"\r\n [data]=\"combinedItems | async\"\r\n [filterable]=\"isSearchable\"\r\n [valueField]=\"valueKey\"\r\n [textField]=\"textKey\"\r\n [loading]=\"isLoadingSpinnerVisible | async\"\r\n [clearButton]=\"false\"\r\n [popupSettings]=\"popupSettings\"\r\n [listHeight]=\"listHeight\"\r\n [valuePrimitive]=\"isPrimitiveValue\"\r\n [allowCustom]=\"allowCustom\"\r\n [valueNormalizer]=\"valueNormalizer\"\r\n (filterChange)=\"onSearched($event)\"\r\n (valueChange)=\"onChanged($event)\"\r\n (open)=\"onOpened()\"\r\n (close)=\"onClosed()\"\r\n (focus)=\"onFocused()\"\r\n (blur)=\"onBlurred()\"\r\n>\r\n <ng-template kendoDropDownListFooterTemplate>\r\n <sg-combobox-popup-footer\r\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\r\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\r\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\r\n [loadingText]=\"loadingText\"\r\n [noItemsText]=\"noItemsText\"\r\n [minSearchText]=\"minSearchText\"\r\n [minSearchCharacters]=\"minSearchCharacters\"\r\n >\r\n </sg-combobox-popup-footer>\r\n </ng-template>\r\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\r\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\r\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\r\n </ng-template>\r\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\r\n <span\r\n #tagWrapper=\"multiselectTagWrapper\"\r\n sgMultiselectTagWrapper\r\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\r\n >\r\n <sg-tag\r\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\r\n [color]=\"tagColor(dataItem)\"\r\n [isActivated]=\"isActivatedTag(dataItem)\"\r\n >\r\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\r\n </ng-container>\r\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\r\n </sg-tag>\r\n </span>\r\n </ng-template>\r\n</kendo-multiselect>\r\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\r\n <i class=\"far fa-times\"></i>\r\n</div>\r\n<div class=\"sg-multiselect__state-line\"></div>\r\n","import {CommonModule} from '@angular/common';\r\nimport {ElementRef, NgModule} from '@angular/core';\r\nimport {ReactiveFormsModule} from '@angular/forms';\r\nimport {TagModule} from '@marcura/marcura-tag';\r\nimport {ComboBoxModule, DropDownListModule, MultiSelectModule} from '@progress/kendo-angular-dropdowns';\r\nimport {PopupModule, POPUP_CONTAINER} from '@progress/kendo-angular-popup';\r\nimport {ComboboxItemTemplateDirective} from '../lib/directives/combobox-item-template.directive';\r\nimport {DropdownItemTemplateDirective} from '../lib/directives/dropdown-item-template.directive';\r\nimport {DropdownValueTemplateDirective} from '../lib/directives/dropdown-value-template.directive';\r\nimport {MultiselectItemTemplateDirective} from '../lib/directives/multiselect-item-template.directive';\r\nimport {MultiselectTagTemplateDirective} from '../lib/directives/multiselect-tag-template.directive';\r\nimport {MultiselectTagWrapperDirective} from '../lib/directives/multiselect-tag-wrapper.directive';\r\nimport {AbstractComboboxComponent} from './components/abstract-combobox/abstract-combobox.component';\r\nimport {AbstractDropdownComponent} from './components/abstract-dropdown/abstract-dropdown.component';\r\nimport {ComboboxPopupFooterComponent} from './components/combobox-popup-footer/combobox-popup-footer.component';\r\nimport {ComboboxComponent} from './components/combobox/combobox.component';\r\nimport {DropdownComponent} from './components/dropdown/dropdown.component';\r\nimport {MultiselectComponent} from './components/multiselect/multiselect.component';\r\n\r\nconst components: any[] = [\r\n ComboboxComponent,\r\n ComboboxPopupFooterComponent,\r\n MultiselectComponent,\r\n DropdownComponent,\r\n];\r\nconst directives: any[] = [\r\n ComboboxItemTemplateDirective,\r\n MultiselectItemTemplateDirective,\r\n MultiselectTagTemplateDirective,\r\n MultiselectTagWrapperDirective,\r\n DropdownItemTemplateDirective,\r\n DropdownValueTemplateDirective,\r\n];\r\n\r\nexport function getPopupContainer(): ElementRef {\r\n return {nativeElement: document.body} as ElementRef;\r\n}\r\n\r\n@NgModule({\r\n declarations: [...components, ...directives],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n ComboBoxModule,\r\n MultiSelectModule,\r\n PopupModule,\r\n TagModule,\r\n DropDownListModule,\r\n ],\r\n exports: [...components, ...directives],\r\n providers: [\r\n {\r\n provide: POPUP_CONTAINER,\r\n useFactory: getPopupContainer,\r\n },\r\n ],\r\n})\r\nexport class ComboboxModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.ComboboxPopupFooterComponent","i5.ComboboxPopupFooterComponent","i6.MultiselectTagWrapperDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"marcura-marcura-combobox.mjs","sources":["../../src/lib/combobox.injectables.ts","../../src/lib/directives/combobox-item-template.directive.ts","../../src/lib/directives/dropdown-item-template.directive.ts","../../src/lib/directives/dropdown-value-template.directive.ts","../../src/lib/directives/multiselect-item-template.directive.ts","../../src/lib/directives/multiselect-tag-template.directive.ts","../../src/lib/directives/multiselect-tag-wrapper.directive.ts","../../src/lib/components/combobox-popup-footer/combobox-popup-footer.component.ts","../../src/lib/components/combobox-popup-footer/combobox-popup-footer.component.html","../../src/lib/model/combobox-changed.event.ts","../../src/lib/components/abstract-dropdown/abstract-dropdown.component.ts","../../src/lib/model/combobox-search-settings-operator.enum.ts","../../src/lib/components/abstract-combobox/abstract-combobox.component.ts","../../src/lib/components/combobox/combobox.component.ts","../../src/lib/components/combobox/combobox.component.html","../../src/lib/model/dropdown-changed.event.ts","../../src/lib/components/dropdown/dropdown.component.ts","../../src/lib/components/dropdown/dropdown.component.html","../../src/lib/model/multiselect-changed.event.ts","../../src/lib/components/multiselect/multiselect.component.ts","../../src/lib/components/multiselect/multiselect.component.html","../../src/lib/combobox.module.ts","../../src/marcura-marcura-combobox.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\nimport {IComboboxLocalization} from './model/combobox-localization.interface';\nimport {IDropdownLocalization} from './model/dropdown-localization.interface';\nimport {IDropdownLocalizer} from './model/dropdown-localizer.interface';\nimport {IMultiselectLocalization} from './model/multiselect-localization.interface';\n\nexport const COMBOBOX_LOCALIZER: InjectionToken<IDropdownLocalizer<IComboboxLocalization>> = new InjectionToken(\n 'ComboboxModule.IDropdownLocalizer<IComboboxLocalization>'\n);\nexport const DROPDOWN_LOCALIZER: InjectionToken<IDropdownLocalizer<IDropdownLocalization>> = new InjectionToken(\n 'ComboboxModule.IDropdownLocalizer<IDropdownLocalization>'\n);\nexport const MULTISELECT_LOCALIZER: InjectionToken<IDropdownLocalizer<IMultiselectLocalization>> = new InjectionToken(\n 'ComboboxModule.IDropdownLocalizer<IMultiselectLocalization>'\n);\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[sgComboboxItem]',\n standalone: false,\n})\nexport class ComboboxItemTemplateDirective {}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[sgDropdownItem]',\n standalone: false,\n})\nexport class DropdownItemTemplateDirective {}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[sgDropdownValue]',\n standalone: false,\n})\nexport class DropdownValueTemplateDirective {}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[sgMultiselectItem]',\n standalone: false,\n})\nexport class MultiselectItemTemplateDirective {}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[sgMultiselectTag]',\n standalone: false,\n})\nexport class MultiselectTagTemplateDirective {}\n","import {Directive, ElementRef, Input} from '@angular/core';\n\n/**\n * Toggles CSS classes of kendo-multiselect tag wrapper (kendo-taglist li.k-button),\n * so necessary styles could be applied when tag state changes, read only state, for example.\n *\n * @export\n */\n@Directive({\n selector: '[sgMultiselectTagWrapper]',\n exportAs: 'multiselectTagWrapper',\n standalone: false,\n})\nexport class MultiselectTagWrapperDirective {\n private _getTagWrapperAttempts: number = 0;\n private _isReadOnly: boolean = false;\n private _tagWrapper: HTMLElement | null = null;\n @Input()\n public get isReadOnly(): boolean {\n return this._isReadOnly;\n }\n public set isReadOnly(isReadOnly: boolean) {\n // Will come as undefined if not set from the outside.\n this._isReadOnly = !!isReadOnly;\n this._tagWrapper = this._tagWrapper || this._getTagWrapper(this._element.nativeElement);\n this._setCssClass(this._tagWrapper);\n }\n\n private _getTagWrapper(element: HTMLElement): HTMLElement | null {\n if (element.classList.contains('k-button') && element.tagName === 'LI') {\n return element;\n } else {\n if (this._getTagWrapperAttempts >= 5) {\n return null;\n }\n\n this._getTagWrapperAttempts++;\n return element.parentElement ? this._getTagWrapper(element.parentElement) : null;\n }\n }\n\n private _setCssClass(tagWrapper: HTMLElement | null): void {\n if (!tagWrapper) {\n return;\n }\n\n if (this.isReadOnly) {\n tagWrapper.classList.add('sg-multiselect__tag-wrapper--is-read-only');\n } else {\n tagWrapper.classList.remove('sg-multiselect__tag-wrapper--is-read-only');\n }\n }\n\n public constructor(private _element: ElementRef) {}\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'sg-combobox-popup-footer',\n templateUrl: 'combobox-popup-footer.component.html',\n standalone: false,\n})\nexport class ComboboxPopupFooterComponent {\n @Input()\n public isLoadingTextVisible: boolean = false;\n @Input()\n public isNoItemsTextVisible: boolean = false;\n @Input()\n public isMinSearchTextVisible: boolean = false;\n @Input()\n public loadingText: string = '';\n @Input()\n public noItemsText: string = '';\n @Input()\n public minSearchText: string = '';\n @Input()\n public minSearchCharacters: number = 0;\n\n public getMinSearchText(): string {\n return this.minSearchText.replace('{minSearchCharacters}', this.minSearchCharacters.toString());\n }\n}\n","<div\n class=\"sg-combobox-popup-footer__inner\"\n *ngIf=\"isLoadingTextVisible || isNoItemsTextVisible || isMinSearchTextVisible\"\n>\n <span *ngIf=\"isLoadingTextVisible\" class=\"c-body c-body--3\">{{ loadingText }}</span>\n <span *ngIf=\"isNoItemsTextVisible\" class=\"c-body c-body--3\">{{ noItemsText }}</span>\n <span *ngIf=\"isMinSearchTextVisible\" class=\"c-body c-body--3\">{{ getMinSearchText() }}</span>\n</div>\n","import {ControlChangedEvent} from '@marcura/marcura-common';\n\nexport class ComboboxChangedEvent<TValue> extends ControlChangedEvent<TValue> {}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, EventEmitter, Input, Output} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {\n AbstractControlComponent,\n ControlBlurredEvent,\n ControlChangedEvent,\n ControlState,\n ControlType,\n IOpenableControlComponent,\n IStateableControlComponent,\n ITypeableControlComponent,\n Nil,\n} from '@marcura/marcura-common';\nimport {GroupResult} from '@progress/kendo-data-query';\nimport {BehaviorSubject} from 'rxjs';\nimport {IDropdownKendoComponent} from '../../model/dropdown-kendo-component.interface';\nimport {ComboboxItem} from '../../model/combobox-item.type';\n\ninterface IDropdownOpenedEvent {\n isOpen: boolean;\n shouldEmit: boolean;\n}\n\n@Directive()\nexport abstract class AbstractDropdownComponent<\n TItem,\n TValue,\n TKendoComponent extends IDropdownKendoComponent = IDropdownKendoComponent,\n TChangedEvent extends ControlChangedEvent<TValue> = ControlChangedEvent<TValue>\n> extends AbstractControlComponent<TValue, ControlBlurredEvent<TValue>, TChangedEvent>\n implements IOpenableControlComponent, IStateableControlComponent, ITypeableControlComponent {\n // TODO: technical debt - figure out way of putting default value\n private _valueField: keyof TItem = 'id' as any;\n private _textField: keyof TItem = 'name' as any;\n protected _resetedValue: TValue | null = null;\n protected _component!: TKendoComponent;\n protected _items: ComboboxItem<TItem>[] = [];\n protected readonly _isOpen: BehaviorSubject<IDropdownOpenedEvent> = new BehaviorSubject<IDropdownOpenedEvent>({\n isOpen: false,\n shouldEmit: false,\n });\n protected readonly _isLoading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n protected _type: ControlType | Nil = null;\n protected _state: ControlState | Nil = null;\n protected _isSuccessType: boolean = this._type === ControlType.Success;\n protected _isErrorType: boolean = this._type === ControlType.Error;\n protected _isWarningType: boolean = this._type === ControlType.Warning;\n protected _isHighlightedState: boolean = this._state === ControlState.Highlighted;\n public readonly valueFormControl: FormControl<TValue | null> = new FormControl();\n @Input()\n public get valueField(): keyof TItem {\n return this._valueField;\n }\n public set valueField(valueField: keyof TItem) {\n if (valueField && this._valueField !== valueField) {\n this._valueField = valueField;\n }\n }\n\n public get valueKey(): string {\n return this._valueField.toString();\n }\n\n @Input()\n public get textField(): keyof TItem {\n return this._textField;\n }\n public set textField(textField: keyof TItem) {\n if (textField && this._textField !== textField) {\n this._textField = textField;\n }\n }\n\n public get textKey(): string {\n return this._textField.toString();\n }\n @Input()\n public placeholder: string = '';\n @Input()\n public get isLoading(): boolean {\n return this._isLoading.value;\n }\n public set isLoading(isLoading: boolean) {\n this._isLoading.next(isLoading);\n // Mark hasIsLoadingCssClass @HostBinding for check.\n this._changeDetectorRef.markForCheck();\n }\n @Input()\n public hasReset: boolean = true;\n @Input()\n public popupClass?: string;\n @Input()\n public get state(): ControlState | Nil {\n return this._state;\n }\n public set state(state: ControlState | Nil) {\n if (this._state !== state) {\n this._state = state;\n this._isHighlightedState = state === ControlState.Highlighted;\n this._changeDetectorRef.markForCheck();\n }\n }\n @Input()\n public get type(): ControlType | Nil {\n return this._type;\n }\n public set type(type: ControlType | Nil) {\n if (this._type !== type) {\n this._type = type;\n this._isSuccessType = type === ControlType.Success;\n this._isErrorType = type === ControlType.Error;\n this._isWarningType = type === ControlType.Warning;\n this._changeDetectorRef.markForCheck();\n }\n }\n @Input()\n public get items(): ComboboxItem<TItem>[] {\n return this._items;\n }\n public set items(items: ComboboxItem<TItem>[]) {\n this._items = items || [];\n }\n @Input()\n public listHeight: number = 200;\n\n /**\n * @deprecated please try to avoid it, as it forced me to create ComboboxItem<TItem>\n * with union of weird types. Item should be an object in most cases...\n */\n @Input()\n public isPrimitiveValue: boolean = false;\n @Input()\n public isOutline: boolean = false;\n @Output()\n public readonly opened: EventEmitter<void> = new EventEmitter();\n @Output()\n public readonly closed: EventEmitter<void> = new EventEmitter();\n public get isOpen(): boolean {\n return this._isOpen.value.isOpen;\n }\n\n public constructor(protected readonly _changeDetectorRef: ChangeDetectorRef) {\n super();\n }\n\n protected _setComponent(component: TKendoComponent): void {\n this._component = component;\n }\n\n protected _emitChanged(value: TValue): void {}\n\n protected _reset(): void {\n const hasValueChanged: boolean = this.hasValueChanged(this.defaultValue);\n\n if (hasValueChanged) {\n this.writeValue(this.defaultValue);\n this.formControl.reset(this.defaultValue);\n this.valueFormControl.reset(this.defaultValue);\n this._component.reset();\n this._emitChanged(this.defaultValue);\n } else {\n this.formControl.markAsPristine();\n this.formControl.markAsUntouched();\n this.valueFormControl.reset(this.defaultValue);\n this._component.reset();\n }\n }\n\n public init(): void {\n this._observer.listen(this._isDisabled, (isDisabled) => {\n if (isDisabled) {\n this.valueFormControl.disable();\n } else {\n this.valueFormControl.enable();\n }\n });\n }\n\n public open(shouldEmitEvent: boolean = true): void {\n this._component.toggle(true);\n this._isOpen.next({isOpen: true, shouldEmit: shouldEmitEvent});\n }\n\n public close(shouldEmitEvent: boolean = true): void {\n this._component.toggle(false);\n this._isOpen.next({isOpen: false, shouldEmit: shouldEmitEvent});\n }\n\n public toggle(shouldEmitEvent: boolean = true): void {\n if (this._isOpen) {\n this.close(shouldEmitEvent);\n } else {\n this.open(shouldEmitEvent);\n }\n }\n\n public override focus(): void {\n this._component.focus();\n }\n\n public override blur(): void {\n this._component.blur();\n }\n\n public onOpened(): void {\n this._isOpen.next({isOpen: true, shouldEmit: true});\n }\n\n public onClosed(): void {\n this._isOpen.next({isOpen: false, shouldEmit: true});\n }\n\n public onFocused(): void {\n this.focused.emit();\n }\n\n public onBlurred(): void {\n this.blurred.emit(\n new ControlBlurredEvent<TValue>(\n this.value,\n this._resetedValue || this._focusedValue,\n this.hasValueChanged(this._resetedValue || this._focusedValue)\n )\n );\n this._resetedValue = null;\n }\n\n public onChanged(value: TValue): void {\n value = value === undefined ? this.defaultValue : value;\n this.value = value;\n this.propagateChanged(value);\n this.propagateTouched();\n this._emitChanged(value);\n }\n\n public onResetClicked(): void {\n if (!this.hasReset) {\n return;\n }\n\n this._resetedValue = this.value;\n this.focus();\n this._reset();\n this.open();\n }\n\n public override writeValue(value: TValue): void {\n // CSS class @HostBindings aren't updated with OnPush change detection strategy,\n // and are to be marked for check.\n this._changeDetectorRef.markForCheck();\n this.valueFormControl.setValue(value);\n super.writeValue(value);\n }\n\n public override setDisabledState(isDisabled: boolean): void {\n super.setDisabledState(isDisabled);\n // Mark hasIsDisabledCssClass @HostBinding for check.\n this._changeDetectorRef.markForCheck();\n }\n}\n","export enum ComboboxSearchSettingsOperator {\n Contains = 'contains',\n StartsWith = 'startsWith',\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {ControlValueAccessor} from '@angular/forms';\nimport {isFalse, Is, Observer, Worker, ControlChangedEvent, flatten} from '@marcura/marcura-common';\nimport {GroupResult} from '@progress/kendo-data-query';\nimport {combineLatest, BehaviorSubject, Observable} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, filter, map, skip, tap} from 'rxjs/operators';\nimport {AbstractDropdownComponent} from '../../components/abstract-dropdown/abstract-dropdown.component';\nimport {IComboboxKendoComponent} from '../../model/combobox-kendo-component.interface';\nimport {ComboboxSearchFn} from '../../model/combobox-search-fn.type';\nimport {ComboboxSearchSettingsOperator} from '../../model/combobox-search-settings-operator.enum';\nimport {IComboboxSearchSettings} from '../../model/combobox-search-settings.interface';\nimport {ComboboxItem} from '../../model/combobox-item.type';\n\n@Directive()\nexport class AbstractComboboxComponent<TItem, TValue, TChangedEvent extends ControlChangedEvent<TValue> = ControlChangedEvent<TValue>>\n extends AbstractDropdownComponent<TItem, TValue, IComboboxKendoComponent, TChangedEvent>\n implements ControlValueAccessor, OnDestroy {\n private _debounceTime: number = 500;\n private readonly _debounceObserver: Observer = new Observer();\n private readonly _worker: Worker = new Worker();\n private readonly _additionalItems: BehaviorSubject<ComboboxItem<TItem>[]> = new BehaviorSubject<ComboboxItem<TItem>[]>([]);\n protected _valueNormalizerItems: (TItem | GroupResult)[] = [];\n protected _isSync: boolean = false;\n protected readonly _loadedItems: BehaviorSubject<ComboboxItem<TItem>[]> = new BehaviorSubject<ComboboxItem<TItem>[]>([]);\n protected readonly _hasSearched: BehaviorSubject<boolean> = new BehaviorSubject(false);\n protected readonly _isSearching: BehaviorSubject<boolean> = new BehaviorSubject(false);\n protected readonly _searchText: BehaviorSubject<string> = new BehaviorSubject('');\n public readonly combinedItems: Observable<(TItem | GroupResult)[]> = combineLatest([this._loadedItems, this._additionalItems]).pipe(\n map(([items, additionalItems]): (TItem | GroupResult)[] => [...items, ...additionalItems].filter(Is.truthy) as (TItem | GroupResult)[])\n );\n @Input()\n public isSearchable: boolean = true;\n @Input()\n public minSearchCharacters: number = 1;\n @Input()\n public search: ComboboxSearchFn<TItem> | null = null;\n @Input()\n public areItemsCached: boolean = false;\n @Input()\n public get debounceTime(): number {\n return this._debounceTime;\n }\n public set debounceTime(value: number) {\n this._debounceTime = value;\n this._listenToSearched();\n }\n @Input()\n public override get items(): ComboboxItem<TItem>[] {\n return this._items;\n }\n public override set items(items: ComboboxItem<TItem>[]) {\n this._isSync = true;\n this._items = items || [];\n this._listenToSearched();\n this._loadedItems.next(this._items);\n }\n @Input()\n public get additionalItems(): ComboboxItem<TItem>[] {\n return this._additionalItems.value;\n }\n public set additionalItems(additionalItems: ComboboxItem<TItem>[]) {\n this._additionalItems.next(additionalItems || []);\n }\n @Input()\n public searchSettings: IComboboxSearchSettings = {\n isCaseSensitive: false,\n operator: ComboboxSearchSettingsOperator.Contains,\n };\n @Input()\n public isGroupable: boolean = false;\n @Output()\n public searched: EventEmitter<string> = new EventEmitter();\n public readonly isNoItemsTextVisible: Observable<boolean> = combineLatest([\n this._isSearching,\n this._hasSearched,\n this._isFocused,\n this.combinedItems,\n ]).pipe(\n map(([isSearching, hasSearched, isFocused, combinedItems]) => {\n return !isSearching && hasSearched && isFocused && combinedItems.length === 0;\n })\n );\n public readonly isMinSearchTextVisible: Observable<boolean> = combineLatest([\n this._isSearching,\n this._hasSearched,\n this._isFocused,\n ]).pipe(\n map(([isSearching, hasSearched, isFocused]) => {\n return !this._isSync && !isSearching && !hasSearched && isFocused;\n })\n );\n public readonly isLoadingSpinnerVisible: Observable<boolean> = combineLatest([\n this._isLoading,\n this._isSearching,\n ]).pipe(map(([isLoading, isSearching]) => isLoading || isSearching));\n // To show loading properly we are to use loadedItems as they don't include additionalItems.\n public readonly isLoadingTextVisible: Observable<boolean> = combineLatest([\n this.isLoadingSpinnerVisible,\n this._loadedItems,\n ]).pipe(map(([isLoadingSpinnerVisible, loadedItems]) => isLoadingSpinnerVisible && loadedItems.length === 0));\n\n private _disableChromeAutocomplete(): void {\n if (this._component.searchbar && this._component.searchbar.input) {\n this._renderer.setAttribute(this._component.searchbar.input.nativeElement, 'autocomplete', 'disabled');\n }\n }\n\n private _listenToSearched(): void {\n this._debounceObserver.clear();\n this._debounceObserver.listen(\n this._searchText.pipe(\n distinctUntilChanged(),\n skip(1),\n tap((searchText) => {\n this.searched.emit(searchText);\n this._isSearching.next(this.canLoadItems(searchText) && this._isOpen.value.isOpen);\n }),\n debounceTime(this._isSync ? 0 : this.debounceTime),\n filter(() => this._isOpen.value.isOpen)\n ),\n this.loadItems\n );\n }\n\n private _filterItems(items: ComboboxItem<TItem>[], searchText: string): TItem[] {\n if (!items || !items.length) {\n return [];\n }\n\n // TODO: technical-debt - fix group result case to avoid any\n return (items as any[]).filter((item) => {\n let itemText: string = (item[this.textField] || '').toString().trim() ?? '';\n itemText = this.searchSettings.isCaseSensitive ? itemText : itemText.toLowerCase();\n\n return this.searchSettings.operator === ComboboxSearchSettingsOperator.Contains\n ? itemText.indexOf(searchText) !== -1\n : itemText.substring(0, searchText.length) === searchText;\n });\n }\n\n protected override _setComponent(component: IComboboxKendoComponent): void {\n this._component = component;\n this._disableChromeAutocomplete();\n }\n\n protected searchItems(searchText: string): ComboboxItem<TItem>[] {\n if (!this.searchSettings || !searchText || !this._items.length) {\n return this._items;\n }\n\n searchText = this.searchSettings.isCaseSensitive ? searchText : searchText.toLowerCase();\n\n if (this.isGroupable) {\n const groups: GroupResult[] = <any>this._items;\n const filteredGroups: GroupResult[] = groups\n .map((group): GroupResult => ({\n ...group,\n items: this._filterItems(<TItem[]>group.items, searchText) as any,\n }))\n .filter((group) => group.items.length > 0);\n\n return <any>filteredGroups;\n }\n\n return this._filterItems(this._items, searchText);\n }\n\n protected canLoadItems(searchText: string): boolean {\n return searchText.length >= this.minSearchCharacters && !this._isSync;\n }\n\n protected getItem(items: (TItem | GroupResult)[], text: string): TItem | null {\n text = text.toLowerCase();\n return this._unwrapGroups(items).find((item) => `${item[this.textField]}`.toLowerCase() === text) ?? null;\n }\n\n private _unwrapGroups(items: (TItem | GroupResult)[]): TItem[] {\n return flatten(\n items.map(item => this._isGroupResult(item) ? item.items as TItem[] : [item])\n );\n }\n\n private _isGroupResult(item: TItem | GroupResult): item is GroupResult {\n const object: any = item;\n return object.items !== undefined && object.aggregates !== undefined && object.field !== undefined && object.value !== undefined;\n }\n\n protected isItemEqual(item1: TItem | null | undefined, item2: TItem | null | undefined): boolean {\n const isItem1Empty: boolean = item1 === null || item1 === undefined;\n const isItem2Empty: boolean = item2 === null || item2 === undefined;\n\n if (isItem1Empty && isItem2Empty) {\n return true;\n }\n\n if (isItem1Empty || isItem2Empty) {\n return false;\n }\n\n return this.isPrimitiveValue ? item1 === item2 : item1![this.valueField] === item2![this.valueField];\n }\n\n protected loadItems = (searchText?: string): void => {\n searchText = (searchText || '').trim();\n\n if (this._isSync) {\n this._hasSearched.next(!!searchText);\n this._loadedItems.next(this.searchItems(searchText));\n } else {\n if (this.canLoadItems(searchText)) {\n this._isSearching.next(true);\n this._worker.handle(this.search ? this.search(searchText) : new BehaviorSubject([]), (items) => {\n this._hasSearched.next(true);\n this._loadedItems.next(items);\n this._valueNormalizerItems = [...items, ...this._additionalItems.value] as (TItem | GroupResult)[];\n this._isSearching.next(false);\n });\n } else {\n this._hasSearched.next(false);\n this._loadedItems.next([]);\n this._valueNormalizerItems = [];\n this._isSearching.next(false);\n }\n }\n };\n\n public constructor(changeDetectorRef: ChangeDetectorRef, protected readonly _renderer: Renderer2) {\n super(changeDetectorRef);\n }\n\n public override ngOnDestroy(): void {\n this._debounceObserver.destroy();\n this._worker.destroy();\n super.ngOnDestroy();\n }\n\n public override init(): void {\n super.init();\n this._listenToSearched();\n\n if (this._isSync) {\n this._loadedItems.next(this._items);\n }\n\n // Closed.\n this._observer.listen(\n this._isOpen.pipe(\n filter((event) => !event.isOpen),\n skip(1)\n ),\n (event) => {\n if (!this.areItemsCached && !this._isSync) {\n this._loadedItems.next([]);\n }\n\n this._worker.cancel();\n this._isSearching.next(false);\n\n if (event.shouldEmit) {\n this.closed.emit();\n }\n }\n );\n\n // Blurred.\n this._observer.listen(this._isFocused.pipe(filter(isFalse)), () => {\n // Restore original unfiltered items when the component is blurred\n // after some search text entered. Consider a case:\n // 1. Search with text that gives 0 items.\n // 2. Blur and focus.\n // 3. Search text is cleared, but items remain empty, so the list won't show up.\n this._loadedItems.next(this._items);\n this._hasSearched.next(false);\n });\n }\n\n public onSearched(searchText: string): void {\n this._searchText.next(searchText);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n ABSTRACT_CONTROL_COMPONENT,\n ControlSize,\n ISizeableControlComponent,\n isTrue,\n OPENABLE_CONTROL_COMPONENT,\n SIZEABLE_CONTROL_COMPONENT,\n STATEABLE_CONTROL_COMPONENT,\n TYPEABLE_CONTROL_COMPONENT,\n} from '@marcura/marcura-common';\nimport {ComboBoxComponent as KendoComboBoxComponent, PopupSettings} from '@progress/kendo-angular-dropdowns';\nimport {Observable} from 'rxjs';\nimport {debounceTime, filter, map} from 'rxjs/operators';\nimport {COMBOBOX_LOCALIZER} from '../../combobox.injectables';\nimport {ComboboxItemTemplateDirective} from '../../directives/combobox-item-template.directive';\nimport {ComboboxChangedEvent} from '../../model/combobox-changed.event';\nimport {IComboboxLocalization} from '../../model/combobox-localization.interface';\nimport {IDropdownLocalizer} from '../../model/dropdown-localizer.interface';\nimport {AbstractComboboxComponent} from '../abstract-combobox/abstract-combobox.component';\n\n@Component({\n selector: 'sg-combobox',\n templateUrl: 'combobox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboboxComponent),\n multi: true,\n },\n {\n provide: ABSTRACT_CONTROL_COMPONENT,\n useExisting: forwardRef(() => ComboboxComponent),\n },\n {\n provide: OPENABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => ComboboxComponent),\n },\n {\n provide: STATEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => ComboboxComponent),\n },\n {\n provide: TYPEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => ComboboxComponent),\n },\n {\n provide: SIZEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => ComboboxComponent),\n },\n ],\n})\nexport class ComboboxComponent<TItem> extends AbstractComboboxComponent<TItem, TItem | null, ComboboxChangedEvent<TItem>>\n implements ISizeableControlComponent, OnInit {\n @Input()\n public override formControl!: FormControl<TItem | null>;\n\n // TODO: technical-debt this component shouldn't have default value\n public override readonly defaultValue: TItem = null as any;\n private _size: ControlSize = ControlSize.Medium;\n private _loadingText: string | null = null;\n private _noItemsText: string | null = null;\n private _minSearchText: string | null = null;\n private _localization: IComboboxLocalization = {\n loadingText: 'Loading...',\n noItemsText: 'No items found.',\n minSearchText: 'Enter {minSearchCharacters} or more characters.',\n };\n @ViewChild('component', {static: true})\n public component!: KendoComboBoxComponent;\n @ContentChild(ComboboxItemTemplateDirective, {read: TemplateRef, static: true})\n public itemTemplate: TemplateRef<any> | null = null;\n @HostBinding('class.sg-combobox')\n public readonly hasCssClass: boolean = true;\n @HostBinding('class.sg-combobox--has-value')\n public get hasHasValueCssClass(): boolean {\n return this.hasValue;\n }\n @HostBinding('class.sg-combobox--is-hovered')\n public get hasIsHoveredCssClass(): boolean {\n return this._isHovered.value;\n }\n @HostBinding('class.sg-combobox--is-focused')\n public get hasIsFocusedCssClass(): boolean {\n return this.isFocused;\n }\n @HostBinding('class.sg-combobox--is-disabled')\n public get hasIsDisabledCssClass(): boolean {\n return this.isDisabled;\n }\n @HostBinding('class.sg-combobox--type-success')\n public get isSuccessType(): boolean {\n return this._isSuccessType;\n }\n @HostBinding('class.sg-combobox--type-error')\n public get isErrorType(): boolean {\n return this._isErrorType;\n }\n @HostBinding('class.sg-combobox--type-warning')\n public get isWarningType(): boolean {\n return this._isWarningType;\n }\n @HostBinding('class.sg-combobox--state-highlighted')\n public get isHighlightedState(): boolean {\n return this._isHighlightedState;\n }\n @HostBinding('class.sg-combobox--is-loading')\n public get hasIsLoadingCssClass(): boolean {\n return this.isLoading || this._isSearching.value;\n }\n @HostBinding('class.sg-combobox--has-reset')\n public get hasHasResetCssClass(): boolean {\n return this.hasReset;\n }\n @HostBinding('class.sg-combobox--is-outline')\n public get hasIsOutlineCssClass(): boolean {\n return this.isOutline;\n }\n @HostBinding('class.sg-combobox--size-small')\n public hasSmallSizeCssClass: boolean = false;\n @HostBinding('class.sg-combobox--size-medium')\n public hasMediumSizeCssClass: boolean = true;\n @Input()\n public get loadingText(): string {\n return this._loadingText || this._localization.loadingText;\n }\n public set loadingText(loadingText: string) {\n this._loadingText = loadingText;\n }\n @Input()\n public get noItemsText(): string {\n return this._noItemsText || this._localization.noItemsText;\n }\n public set noItemsText(noItemsText: string) {\n this._noItemsText = noItemsText;\n }\n @Input()\n public get minSearchText(): string {\n return this._minSearchText || this._localization.minSearchText;\n }\n public set minSearchText(minSearchText: string) {\n this._minSearchText = minSearchText;\n }\n @Input()\n public shouldSuggest: boolean = true;\n @Input()\n public openOnFocus: boolean = true;\n @Input()\n public allowCustom: boolean = false;\n @Input()\n public appendPopupToRoot: boolean = true;\n @Input()\n public get size(): ControlSize {\n return this._size;\n }\n public set size(size: ControlSize) {\n if (size) {\n this._size = size;\n }\n\n this.hasSmallSizeCssClass = this._size === ControlSize.Small;\n this.hasMediumSizeCssClass = this._size === ControlSize.Medium;\n }\n /**\n * This field contains factory method for items which will be created placing customizable values inside component. Works when allowCustom is true.\n *\n * @memberof ComboboxComponent\n */\n @Input()\n public itemFactory: (text: string) => TItem = (text: string): TItem => {\n return {[this.valueField]: null, [this.textField]: text} as any;\n };\n public get popupSettings(): PopupSettings {\n return {\n animate: true,\n appendTo: this.appendPopupToRoot ? 'root' : 'component',\n popupClass: `sg-combobox-popup${this.isGroupable ? ' sg-combobox-popup--is-groupable' : ''} ${\n this.popupClass || ''\n }`,\n };\n }\n\n public constructor(\n changeDetectorRef: ChangeDetectorRef,\n renderer: Renderer2,\n @Optional()\n @Inject(COMBOBOX_LOCALIZER)\n private readonly _localizer: IDropdownLocalizer<IComboboxLocalization>\n ) {\n super(changeDetectorRef, renderer);\n this._localize();\n }\n\n private _localize(): void {\n if (!this._localizer) {\n return;\n }\n\n this._localization = this._localizer.localization;\n this._observer.listen(this._localizer.localizationChanged, (localization) => {\n this._localization = localization;\n });\n }\n\n public override onResetClicked(): void {\n if (!this.hasReset) {\n return;\n }\n\n this._resetedValue = this.value;\n this.focus();\n this._reset();\n\n if (this.openOnFocus) {\n this.open();\n }\n }\n\n public ngOnInit(): void {\n this._setComponent(this.component);\n this.init();\n\n // Opened.\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => {\n if (!this.areItemsCached) {\n this._hasSearched.next(false);\n }\n\n if (this.canLoadItems(this._searchText.value) && this._loadedItems.value.length === 0) {\n this.loadItems(this._searchText.value);\n }\n });\n this._observer.listen(\n this._isOpen.pipe(\n filter((event) => event.isOpen),\n // When clicking reset icon, opened event triggers search event with\n // with old searchbar value instead of an empty string.\n // So we need to give searchbar a moment before fire opened event.\n // Steps to reproduce the bug:\n // 1) Search for Vladivostok and select it 2) Reset value with icon\n // 3) searchText remains \"Vladivostok\", but should be \"\".\n debounceTime(50)\n ),\n () => this.opened.emit()\n );\n\n // Focused.\n this._observer.listen(this._isFocused.pipe(filter(isTrue)), () => {\n if (this.openOnFocus) {\n this.open();\n }\n });\n }\n\n public override onChanged(value: TItem): void {\n if (!this.hasValueChanged(value)) {\n return;\n }\n\n value = value === undefined ? this.defaultValue : value;\n this.value = value;\n this.component.searchbar.suggestedText = '';\n this.propagateChanged(value);\n this.propagateTouched();\n this._emitChanged(value);\n\n if (!value && this._isSync) {\n // Restore original items after selection, otherwise when opening the list\n // next time, only the previously selected item will appear.\n // Steps to reproduce: 1) Select \"Cayman Brac\", 2) Focus out and focus back,\n // 3) Delete a couple of characters with a Backspace from the end and hit Enter.\n // 4) Open the list.\n this.loadItems();\n }\n }\n\n public valueNormalizer = (text$: Observable<string>): any =>\n text$.pipe(\n map(() => {\n let value: TItem | null = null;\n if (!this.component) {\n return value;\n }\n // Can't use this._searchText.value here as it might be empty, consider:\n // 1) type custom text, 2) focus out and back in 3) there's a text in searchbar,\n // but this._searchText.value is empty.\n // So this.component.searchbar.value is to be used.\n const text: string = (this.component.searchbar.value || '').trim();\n\n if (!text) {\n return value;\n }\n\n if (this.component.value && this.component.value[this.textField].toLowerCase() === text.toLowerCase()) {\n value = this.component.value;\n } else if (this.getItem(this._valueNormalizerItems, text)) {\n // If areItemsCached is off, then this.data will be lost by this moment,\n // so we use a cache this.valueNormalizerItems.\n // This is relevant especially in IE/Edge where this.component.value is null,\n // so the code falls back to this condition section.\n value = this.getItem(this._valueNormalizerItems, text);\n } else if (this.allowCustom) {\n value = this.itemFactory(text);\n\n if (this._isSync) {\n // Restore original items after selection, otherwise when opening the list\n // next time, only the selected item will appear.\n this.loadItems();\n }\n } else {\n // Clears search text if suggestion hasn't been selected.\n // Steps to reproduce.\n // 1. Use Dymanic Empty sample.\n // 2. Type 'to', wait for the list to load, but don't select 'Tokai'. Instead hit Esc key.\n // 3. See that the search bar still contains 'to' text, while the value is null,\n // which is wrong - search bar text should be removed.\n // this.component.searchbar.suggestedText = ''; // This doesn't work.\n // As the above line doesn't work, so workaround it by setting form control value to null.\n this.valueFormControl.setValue(value);\n }\n\n this._valueNormalizerItems = [];\n return value;\n })\n );\n\n protected override _emitChanged(value: TItem): void {\n this.changed.emit(new ComboboxChangedEvent(value));\n }\n\n protected override hasValueChanged(value: TItem | null | undefined): boolean {\n return !this.isItemEqual(this.value, value);\n }\n\n}\n","<kendo-combobox\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n [suggest]=\"shouldSuggest\"\n [allowCustom]=\"true\"\n [valueNormalizer]=\"valueNormalizer\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoComboBoxNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoComboBoxItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n</kendo-combobox>\n<div class=\"sg-combobox__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-combobox__state-line\"></div>\n","import {ControlChangedEvent} from '@marcura/marcura-common';\n\nexport class DropdownChangedEvent<TValue> extends ControlChangedEvent<TValue> {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n ABSTRACT_CONTROL_COMPONENT, ControlBlurredEvent,\n ControlSize,\n ISizeableControlComponent,\n OPENABLE_CONTROL_COMPONENT,\n SIZEABLE_CONTROL_COMPONENT,\n STATEABLE_CONTROL_COMPONENT,\n TYPEABLE_CONTROL_COMPONENT,\n} from '@marcura/marcura-common';\nimport {DropDownListComponent, PopupSettings} from '@progress/kendo-angular-dropdowns';\nimport {filter, skip} from 'rxjs/operators';\nimport {DROPDOWN_LOCALIZER} from '../../combobox.injectables';\nimport {AbstractDropdownComponent} from '../../components/abstract-dropdown/abstract-dropdown.component';\nimport {DropdownItemTemplateDirective} from '../../directives/dropdown-item-template.directive';\nimport {DropdownValueTemplateDirective} from '../../directives/dropdown-value-template.directive';\nimport {DropdownChangedEvent} from '../../model/dropdown-changed.event';\nimport {IDropdownLocalization} from '../../model/dropdown-localization.interface';\nimport {IDropdownLocalizer} from '../../model/dropdown-localizer.interface';\n\n@Component({\n selector: 'sg-dropdown',\n templateUrl: 'dropdown.component.html',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true,\n },\n {\n provide: ABSTRACT_CONTROL_COMPONENT,\n useExisting: forwardRef(() => DropdownComponent),\n },\n {\n provide: OPENABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => DropdownComponent),\n },\n {\n provide: STATEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => DropdownComponent),\n },\n {\n provide: TYPEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => DropdownComponent),\n },\n {\n provide: SIZEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => DropdownComponent),\n },\n ],\n})\nexport class DropdownComponent<TItem> extends AbstractDropdownComponent<TItem, TItem | null, DropDownListComponent, DropdownChangedEvent<TItem>>\n implements ISizeableControlComponent, OnInit, ControlValueAccessor {\n @Input()\n public override formControl!: FormControl<TItem | null>;\n\n // TODO: technical-debt this component shouldn't have default value\n public override readonly defaultValue: TItem = null as any;\n private _size: ControlSize = ControlSize.Medium;\n private _noItemsText: string | null = null;\n private _localization: IDropdownLocalization = {\n noItemsText: 'No items found.',\n };\n @ViewChild('component', {static: true})\n public component!: DropDownListComponent;\n @ContentChild(DropdownItemTemplateDirective, {read: TemplateRef})\n public itemTemplate: TemplateRef<any> | null = null;\n @ContentChild(DropdownValueTemplateDirective, {read: TemplateRef})\n public valueTemplate: TemplateRef<any> | null = null;\n @HostBinding('class.sg-dropdown')\n public readonly hasCssClass: boolean = true;\n @HostBinding('class.sg-dropdown--has-value')\n public get hasHasValueCssClass(): boolean {\n return this.hasValue;\n }\n @HostBinding('class.sg-dropdown--is-focused')\n public get hasIsFocusedCssClass(): boolean {\n return this.isFocused;\n }\n @HostBinding('class.sg-dropdown--is-hovered')\n public get hasIsHoveredCssClass(): boolean {\n return this._isHovered.value;\n }\n @HostBinding('class.sg-dropdown--is-disabled')\n public get hasIsDisabledCssClass(): boolean {\n return this.isDisabled;\n }\n @HostBinding('class.sg-dropdown--type-success')\n public get isSuccessType(): boolean {\n return this._isSuccessType;\n }\n @HostBinding('class.sg-dropdown--type-error')\n public get isErrorType(): boolean {\n return this._isErrorType;\n }\n @HostBinding('class.sg-dropdown--type-warning')\n public get isWarningType(): boolean {\n return this._isWarningType;\n }\n @HostBinding('class.sg-dropdown--state-highlighted')\n public get isHighlightedState(): boolean {\n return this._isHighlightedState;\n }\n @HostBinding('class.sg-dropdown--is-loading')\n public get hasIsLoadingCssClass(): boolean {\n return this.isLoading;\n }\n @HostBinding('class.sg-dropdown--has-reset')\n public get hasHasResetCssClass(): boolean {\n return this.hasReset;\n }\n @HostBinding('class.sg-dropdown--is-outline')\n public get hasIsOutlineCssClass(): boolean {\n return this.isOutline;\n }\n @HostBinding('class.sg-dropdown--size-small')\n public hasSmallSizeCssClass: boolean = false;\n @HostBinding('class.sg-dropdown--size-medium')\n public hasMediumSizeCssClass: boolean = true;\n @Input()\n public get noItemsText(): string {\n return this._noItemsText || this._localization.noItemsText;\n }\n public set noItemsText(noItemsText: string) {\n this._noItemsText = noItemsText;\n }\n @Input()\n public get size(): ControlSize {\n return this._size;\n }\n public set size(size: ControlSize) {\n if (size) {\n this._size = size;\n }\n\n this.hasSmallSizeCssClass = this._size === ControlSize.Small;\n this.hasMediumSizeCssClass = this._size === ControlSize.Medium;\n }\n public get popupSettings(): PopupSettings {\n return {\n animate: true,\n popupClass: `sg-dropdown-popup ${this.popupClass || ''}`,\n };\n }\n\n public constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Optional()\n @Inject(DROPDOWN_LOCALIZER)\n private readonly _localizer: IDropdownLocalizer<IDropdownLocalization>\n ) {\n super(changeDetectorRef);\n this._localize();\n }\n\n private _localize(): void {\n if (!this._localizer) {\n return;\n }\n\n this._localization = this._localizer.localization;\n this._observer.listen(this._localizer.localizationChanged, (localization) => {\n this._localization = localization;\n });\n }\n\n public ngOnInit(): void {\n this._setComponent(this.component);\n this.init();\n\n // Opened.\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => this.opened.emit());\n\n // Closed.\n this._observer.listen(\n this._isOpen.pipe(\n filter((event) => !event.isOpen),\n skip(1)\n ),\n (event) => {\n if (event.shouldEmit) {\n this.closed.emit();\n }\n }\n );\n }\n\n protected override _emitChanged(value: TItem): void {\n this.changed.emit(new DropdownChangedEvent(value));\n }\n}\n","<kendo-dropdownlist\n #component\n [formControl]=\"valueFormControl\"\n [data]=\"items\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoading\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template *ngIf=\"itemTemplate\" kendoDropDownListItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n <ng-container *ngIf=\"dataItem\">\n <ng-container *ngIf=\"valueTemplate\">\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\n </ng-container>\n <ng-container *ngIf=\"!valueTemplate\">{{ dataItem[textField] }}</ng-container>\n </ng-container>\n <ng-container *ngIf=\"!dataItem\">\n <span *ngIf=\"placeholder\" class=\"k-placeholder\">{{ placeholder }}</span>\n <ng-container *ngIf=\"!placeholder && valueTemplate\">\n <span [ngTemplateOutlet]=\"valueTemplate\" [ngTemplateOutletContext]=\"{value: dataItem}\"></span>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer [isNoItemsTextVisible]=\"items.length === 0\" [noItemsText]=\"noItemsText\">\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n</kendo-dropdownlist>\n<div class=\"sg-dropdown__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-dropdown__state-line\"></div>\n","import {ControlChangedEvent} from '@marcura/marcura-common';\n\nexport class MultiselectChangedEvent<TValue> extends ControlChangedEvent<TValue> {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n ABSTRACT_CONTROL_COMPONENT,\n OPENABLE_CONTROL_COMPONENT,\n STATEABLE_CONTROL_COMPONENT,\n TYPEABLE_CONTROL_COMPONENT,\n} from '@marcura/marcura-common';\nimport {TagColor} from '@marcura/marcura-tag';\nimport {MultiSelectComponent, PopupSettings} from '@progress/kendo-angular-dropdowns';\nimport {Observable, of} from 'rxjs';\nimport {filter, map, switchMap, tap} from 'rxjs/operators';\nimport {MULTISELECT_LOCALIZER} from '../../combobox.injectables';\nimport {MultiselectItemTemplateDirective} from '../../directives/multiselect-item-template.directive';\nimport {MultiselectTagTemplateDirective} from '../../directives/multiselect-tag-template.directive';\nimport {IDropdownLocalizer} from '../../model/dropdown-localizer.interface';\nimport {MultiselectChangedEvent} from '../../model/multiselect-changed.event';\nimport {IMultiselectLocalization} from '../../model/multiselect-localization.interface';\nimport {AbstractComboboxComponent} from '../abstract-combobox/abstract-combobox.component';\n\n@Component({\n selector: 'sg-multiselect',\n templateUrl: 'multiselect.component.html',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiselectComponent),\n multi: true,\n },\n {\n provide: ABSTRACT_CONTROL_COMPONENT,\n useExisting: forwardRef(() => MultiselectComponent),\n },\n {\n provide: OPENABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => MultiselectComponent),\n },\n {\n provide: STATEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => MultiselectComponent),\n },\n {\n provide: TYPEABLE_CONTROL_COMPONENT,\n useExisting: forwardRef(() => MultiselectComponent),\n },\n ],\n})\nexport class MultiselectComponent<TItem> extends AbstractComboboxComponent<TItem, TItem[], MultiselectChangedEvent<TItem[]>> implements OnInit {\n @Input()\n public override formControl!: FormControl<TItem[]>;\n public override readonly valueFormControl: FormControl<TItem[]> = new FormControl();\n\n private _loadingText: string | null = null;\n private _noItemsText: string | null = null;\n private _minSearchText: string | null = null;\n private _localization: IMultiselectLocalization = {\n loadingText: 'Loading...',\n noItemsText: 'No items found.',\n minSearchText: 'Enter {minSearchCharacters} or more characters.',\n };\n public override readonly defaultValue: TItem[] = [];\n\n @ViewChild('component', {static: true})\n public component!: MultiSelectComponent;\n @ContentChild(MultiselectItemTemplateDirective, {read: TemplateRef, static: true})\n public itemTemplate: TemplateRef<any> | null = null;\n @ContentChild(MultiselectTagTemplateDirective, {read: TemplateRef, static: true})\n public tagTemplate: TemplateRef<any> | null = null;\n @HostBinding('class.sg-multiselect')\n public readonly hasCssClass: boolean = true;\n @HostBinding('class.sg-multiselect--has-value')\n public override get hasValue(): boolean {\n return this.valueFormControl.value && this.valueFormControl.value.length > 0;\n }\n @HostBinding('class.sg-multiselect--is-focused')\n public get hasIsFocusedCssClass(): boolean {\n return this.isFocused;\n }\n @HostBinding('class.sg-multiselect--is-hovered')\n public get hasIsHoveredCssClass(): boolean {\n return this._isHovered.value;\n }\n @HostBinding('class.sg-multiselect--is-disabled')\n public get hasIsDisabledCssClass(): boolean {\n return this.isDisabled;\n }\n @HostBinding('class.sg-multiselect--type-success')\n public get isSuccessType(): boolean {\n return this._isSuccessType;\n }\n @HostBinding('class.sg-multiselect--type-error')\n public get isErrorType(): boolean {\n return this._isErrorType;\n }\n @HostBinding('class.sg-multiselect--type-warning')\n public get isWarningType(): boolean {\n return this._isWarningType;\n }\n @HostBinding('class.sg-multiselect--state-highlighted')\n public get isHighlightedState(): boolean {\n return this._isHighlightedState;\n }\n @HostBinding('class.sg-multiselect--is-loading')\n public get hasIsLoadingCssClass(): boolean {\n return this.isLoading || this._isSearching.value;\n }\n @HostBinding('class.sg-multiselect--has-reset')\n public get hasHasResetCssClass(): boolean {\n return this.hasReset;\n }\n @HostBinding('class.sg-multiselect--is-outline')\n public get hasIsOutlineCssClass(): boolean {\n return this.isOutline;\n }\n @Input()\n public get loadingText(): string {\n return this._loadingText || this._localization.loadingText;\n }\n public set loadingText(loadingText: string) {\n this._loadingText = loadingText;\n }\n @Input()\n public get noItemsText(): string {\n return this._noItemsText || this._localization.noItemsText;\n }\n public set noItemsText(noItemsText: string) {\n this._noItemsText = noItemsText;\n }\n @Input()\n public get minSearchText(): string {\n return this._minSearchText || this._localization.minSearchText;\n }\n public set minSearchText(minSearchText: string) {\n this._minSearchText = minSearchText;\n }\n @Input()\n public isReadOnlyTag: ((item: TItem) => boolean) | null = null;\n @Input()\n public isActivatedTag: (item: TItem) => boolean = () => false;\n @Input()\n public tagColor: (item: TItem) => any | TagColor = () => null;\n public get popupSettings(): PopupSettings {\n return {\n animate: true,\n popupClass: `sg-multiselect-popup${this.isGroupable ? ' sg-multiselect-popup--is-groupable' : ''} ${\n this.popupClass || ''\n }`,\n };\n }\n @Input()\n public allowCustom: boolean = false;\n @Input()\n public showCheckboxes: boolean = false;\n @Input()\n public autoClose: boolean = true;\n /**\n * This field contains factory method which takes a custom text input and returns an Observable<TItem>.\n * The observable sends the text to a remote service, which processes it and returns a generated TItem.\n * Works when allowCustom is true.\n *\n * @memberof MultiselectComponent\n */\n @Input()\n public itemFactoryAsync: ((text: string) => Observable<TItem>) | undefined = undefined;\n /**\n * This field contains factory method for items which will be created placing customizable values inside component. Works when allowCustom is true.\n *\n * @memberof MultiselectComponent\n */\n @Input()\n public itemFactory: (text: string) => TItem = (text: string): TItem => {\n return {[this.valueField]: null, [this.textField]: text} as any;\n };\n\n public constructor(\n changeDetectorRef: ChangeDetectorRef,\n renderer: Renderer2,\n @Optional()\n @Inject(MULTISELECT_LOCALIZER)\n private readonly _localizer: IDropdownLocalizer<IMultiselectLocalization>\n ) {\n super(changeDetectorRef, renderer);\n this._localize();\n }\n\n public ngOnInit(): void {\n this._setComponent(this.component);\n this.init();\n\n // Opened.\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => {\n this._hasSearched.next(false);\n\n if (!this.areItemsCached && this._loadedItems.value.length === 0) {\n this.loadItems(this._searchText.value);\n }\n });\n this._observer.listen(this._isOpen.pipe(filter((event) => event.isOpen)), () => this.opened.emit());\n }\n\n public valueNormalizer = (text$: Observable<string>): any =>\n text$.pipe(\n switchMap(() => {\n if (!this.component) {\n return of(null);\n }\n // Can't use this._searchText.value here as it might be empty, consider:\n // 1) type custom text, 2) focus out and back in 3) there's a text in searchbar,\n // but this._searchText.value is empty.\n // So this.component.searchbar.value is to be used.\n const text: string = (this.component.searchbar.value || '').trim();\n\n if (!text) {\n return of(null);\n }\n\n const matchingValue: TItem | null = this.component.value?.find((item) =>\n item[this.textField].toLowerCase() === text.toLowerCase()) ?? null;\n // Handle case when value already contains items that match the search text.\n if (matchingValue) {\n return of(matchingValue);\n }\n // If no matches found in the selected values, check if item is in cache.\n const cachedValue: TItem | null = this.getItem(this._valueNormalizerItems, text);\n // If areItemsCached is off, then this.data will be lost by this moment,\n // so we use a cache this.valueNormalizerItems.\n // This is relevant especially in IE/Edge where this.component.value is null,\n // so the code falls back to this condition section.\n if (cachedValue) {\n return of(cachedValue);\n }\n // If no match is found and custom values are allowed, create a new custom item\n if (this.allowCustom) {\n return (this.itemFactoryAsync ? this.itemFactoryAsync(text) : of(this.itemFactory(text))).pipe(\n tap(() => {\n if (this._isSync) {\n // Restore original items after selection, otherwise when opening the list\n // next time, only the selected item will appear.\n this.loadItems();\n }\n }));\n }\n\n return of(null);\n }),\n map((value) => {\n this._valueNormalizerItems = [];\n return value;\n })\n );\n\n protected override _emitChanged(value: TItem[]): void {\n this.changed.emit(new MultiselectChangedEvent(value));\n }\n\n protected override hasValueChanged(value: TItem[]): boolean {\n const isOldValueEmpty: boolean = this.value === null || this.value === undefined || this.value.length === 0;\n const isNewValueEmpty: boolean = value === null || value === undefined || value.length === 0;\n\n if (isOldValueEmpty && isNewValueEmpty) {\n return false;\n }\n\n if (isOldValueEmpty || isNewValueEmpty) {\n return true;\n }\n\n return (\n this.value.length !== value.length || this.value.some((item, index) => !this.isItemEqual(item, value[index]))\n );\n }\n\n private _localize(): void {\n if (!this._localizer) {\n return;\n }\n\n this._localization = this._localizer.localization;\n this._observer.listen(this._localizer.localizationChanged, (localization) => {\n this._localization = localization;\n });\n }\n}\n","<kendo-multiselect\n #component\n [placeholder]=\"placeholder\"\n [formControl]=\"valueFormControl\"\n [data]=\"combinedItems | async\"\n [filterable]=\"isSearchable\"\n [valueField]=\"valueKey\"\n [textField]=\"textKey\"\n [loading]=\"isLoadingSpinnerVisible | async\"\n [clearButton]=\"false\"\n [popupSettings]=\"popupSettings\"\n [listHeight]=\"listHeight\"\n [valuePrimitive]=\"isPrimitiveValue\"\n [allowCustom]=\"allowCustom\"\n [valueNormalizer]=\"valueNormalizer\"\n [checkboxes]=\"showCheckboxes\"\n [autoClose]=\"autoClose\"\n (filterChange)=\"onSearched($event)\"\n (valueChange)=\"onChanged($event)\"\n (open)=\"onOpened()\"\n (close)=\"onClosed()\"\n (focus)=\"onFocused()\"\n (blur)=\"onBlurred()\"\n>\n <ng-template kendoDropDownListFooterTemplate>\n <sg-combobox-popup-footer\n [isLoadingTextVisible]=\"isLoadingTextVisible | async\"\n [isNoItemsTextVisible]=\"isNoItemsTextVisible | async\"\n [isMinSearchTextVisible]=\"isMinSearchTextVisible | async\"\n [loadingText]=\"loadingText\"\n [noItemsText]=\"noItemsText\"\n [minSearchText]=\"minSearchText\"\n [minSearchCharacters]=\"minSearchCharacters\"\n >\n </sg-combobox-popup-footer>\n </ng-template>\n <ng-template kendoDropDownListNoDataTemplate></ng-template>\n <ng-template *ngIf=\"itemTemplate\" kendoMultiSelectItemTemplate let-dataItem>\n <span [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\"></span>\n </ng-template>\n <ng-template kendoMultiSelectTagTemplate let-dataItem>\n <span\n #tagWrapper=\"multiselectTagWrapper\"\n sgMultiselectTagWrapper\n [isReadOnly]=\"isReadOnlyTag && isReadOnlyTag(dataItem)\"\n >\n <sg-tag\n [icon]=\"tagWrapper.isReadOnly ? '' : 'far fa-times'\"\n [color]=\"tagColor(dataItem)\"\n [isActivated]=\"isActivatedTag(dataItem)\"\n >\n <ng-container *ngIf=\"tagTemplate\" [ngTemplateOutlet]=\"tagTemplate\" [ngTemplateOutletContext]=\"{item: dataItem}\">\n </ng-container>\n <ng-container *ngIf=\"!tagTemplate\">{{ dataItem[textField] }}</ng-container>\n </sg-tag>\n </span>\n </ng-template>\n</kendo-multiselect>\n<div class=\"sg-multiselect__reset\" *ngIf=\"!isDisabled\" (click)=\"onResetClicked()\">\n <i class=\"far fa-times\"></i>\n</div>\n<div class=\"sg-multiselect__state-line\"></div>\n","import {CommonModule} from '@angular/common';\nimport {ElementRef, NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {TagModule} from '@marcura/marcura-tag';\nimport {ComboBoxModule, DropDownListModule, MultiSelectModule} from '@progress/kendo-angular-dropdowns';\nimport {PopupModule, POPUP_CONTAINER} from '@progress/kendo-angular-popup';\nimport {ComboboxItemTemplateDirective} from '../lib/directives/combobox-item-template.directive';\nimport {DropdownItemTemplateDirective} from '../lib/directives/dropdown-item-template.directive';\nimport {DropdownValueTemplateDirective} from '../lib/directives/dropdown-value-template.directive';\nimport {MultiselectItemTemplateDirective} from '../lib/directives/multiselect-item-template.directive';\nimport {MultiselectTagTemplateDirective} from '../lib/directives/multiselect-tag-template.directive';\nimport {MultiselectTagWrapperDirective} from '../lib/directives/multiselect-tag-wrapper.directive';\nimport {AbstractComboboxComponent} from './components/abstract-combobox/abstract-combobox.component';\nimport {AbstractDropdownComponent} from './components/abstract-dropdown/abstract-dropdown.component';\nimport {ComboboxPopupFooterComponent} from './components/combobox-popup-footer/combobox-popup-footer.component';\nimport {ComboboxComponent} from './components/combobox/combobox.component';\nimport {DropdownComponent} from './components/dropdown/dropdown.component';\nimport {MultiselectComponent} from './components/multiselect/multiselect.component';\n\nconst components: any[] = [\n ComboboxComponent,\n ComboboxPopupFooterComponent,\n MultiselectComponent,\n DropdownComponent,\n];\nconst directives: any[] = [\n ComboboxItemTemplateDirective,\n MultiselectItemTemplateDirective,\n MultiselectTagTemplateDirective,\n MultiselectTagWrapperDirective,\n DropdownItemTemplateDirective,\n DropdownValueTemplateDirective,\n];\n\nexport function getPopupContainer(): ElementRef {\n return {nativeElement: document.body} as ElementRef;\n}\n\n@NgModule({\n declarations: [...components, ...directives],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ComboBoxModule,\n MultiSelectModule,\n PopupModule,\n TagModule,\n DropDownListModule,\n ],\n exports: [...components, ...directives],\n providers: [\n {\n provide: POPUP_CONTAINER,\n useFactory: getPopupContainer,\n },\n ],\n})\nexport class ComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.ComboboxPopupFooterComponent","i5.ComboboxPopupFooterComponent","i6.MultiselectTagWrapperDirective"],"mappings":"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"}
|
|
@@ -43,6 +43,8 @@ export declare class MultiselectComponent<TItem> extends AbstractComboboxCompone
|
|
|
43
43
|
tagColor: (item: TItem) => any | TagColor;
|
|
44
44
|
get popupSettings(): PopupSettings;
|
|
45
45
|
allowCustom: boolean;
|
|
46
|
+
showCheckboxes: boolean;
|
|
47
|
+
autoClose: boolean;
|
|
46
48
|
/**
|
|
47
49
|
* This field contains factory method which takes a custom text input and returns an Observable<TItem>.
|
|
48
50
|
* The observable sends the text to a remote service, which processes it and returns a generated TItem.
|
|
@@ -64,5 +66,5 @@ export declare class MultiselectComponent<TItem> extends AbstractComboboxCompone
|
|
|
64
66
|
protected hasValueChanged(value: TItem[]): boolean;
|
|
65
67
|
private _localize;
|
|
66
68
|
static ɵfac: i0.ɵɵFactoryDeclaration<MultiselectComponent<any>, [null, null, { optional: true; }]>;
|
|
67
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MultiselectComponent<any>, "sg-multiselect", never, { "formControl": { "alias": "formControl"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "noItemsText": { "alias": "noItemsText"; "required": false; }; "minSearchText": { "alias": "minSearchText"; "required": false; }; "isReadOnlyTag": { "alias": "isReadOnlyTag"; "required": false; }; "isActivatedTag": { "alias": "isActivatedTag"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "allowCustom": { "alias": "allowCustom"; "required": false; }; "itemFactoryAsync": { "alias": "itemFactoryAsync"; "required": false; }; "itemFactory": { "alias": "itemFactory"; "required": false; }; }, {}, ["itemTemplate", "tagTemplate"], never, false, never>;
|
|
69
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MultiselectComponent<any>, "sg-multiselect", never, { "formControl": { "alias": "formControl"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "noItemsText": { "alias": "noItemsText"; "required": false; }; "minSearchText": { "alias": "minSearchText"; "required": false; }; "isReadOnlyTag": { "alias": "isReadOnlyTag"; "required": false; }; "isActivatedTag": { "alias": "isActivatedTag"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "allowCustom": { "alias": "allowCustom"; "required": false; }; "showCheckboxes": { "alias": "showCheckboxes"; "required": false; }; "autoClose": { "alias": "autoClose"; "required": false; }; "itemFactoryAsync": { "alias": "itemFactoryAsync"; "required": false; }; "itemFactory": { "alias": "itemFactory"; "required": false; }; }, {}, ["itemTemplate", "tagTemplate"], never, false, never>;
|
|
68
70
|
}
|