@progress/kendo-angular-filter 24.0.0-develop.8 → 24.0.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/directives.d.ts +4 -2
- package/fesm2022/progress-kendo-angular-filter.mjs +246 -86
- package/filter-expression-operators.component.d.ts +3 -2
- package/filter-expression.component.d.ts +8 -4
- package/filter-field.component.d.ts +7 -2
- package/filter.component.d.ts +5 -3
- package/filter.module.d.ts +4 -2
- package/filter.service.d.ts +2 -0
- package/index.d.ts +3 -1
- package/model/filter-expression.d.ts +6 -0
- package/package-metadata.mjs +2 -2
- package/package.json +12 -12
- package/schematics/ngAdd/index.js +4 -4
- package/templates/field-template.directive.d.ts +38 -0
- package/templates/operator-template.directive.d.ts +38 -0
- /package/templates/{value-editor.template.d.ts → value-editor-template.directive.d.ts} +0 -0
package/directives.d.ts
CHANGED
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
import { FilterFieldComponent } from "./filter-field.component";
|
|
6
6
|
import { FilterComponent } from "./filter.component";
|
|
7
7
|
import { CustomMessagesComponent } from "./localization/custom-messages.component";
|
|
8
|
-
import { FilterValueEditorTemplateDirective } from "./templates/value-editor.
|
|
8
|
+
import { FilterValueEditorTemplateDirective } from "./templates/value-editor-template.directive";
|
|
9
|
+
import { FilterOperatorTemplateDirective } from "./templates/operator-template.directive";
|
|
10
|
+
import { FilterFieldsTemplateDirective } from "./templates/field-template.directive";
|
|
9
11
|
/**
|
|
10
12
|
* Utility array that contains all `@progress/kendo-angular-filter` related components and directives
|
|
11
13
|
*/
|
|
12
|
-
export declare const KENDO_FILTER: readonly [typeof FilterComponent, typeof FilterFieldComponent, typeof CustomMessagesComponent, typeof FilterValueEditorTemplateDirective];
|
|
14
|
+
export declare const KENDO_FILTER: readonly [typeof FilterComponent, typeof FilterFieldComponent, typeof CustomMessagesComponent, typeof FilterValueEditorTemplateDirective, typeof FilterOperatorTemplateDirective, typeof FilterFieldsTemplateDirective];
|
|
@@ -7,13 +7,13 @@ import { Injectable, Directive, ContentChild, Input, Component, EventEmitter, Ou
|
|
|
7
7
|
import * as i1 from '@progress/kendo-angular-l10n';
|
|
8
8
|
import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
9
9
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
10
|
-
import { Keys,
|
|
10
|
+
import { Keys, normalizeKeys, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
11
11
|
import { xIcon, filterAddGroupIcon, filterAddExpressionIcon } from '@progress/kendo-svg-icons';
|
|
12
12
|
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
|
13
13
|
import { DatePickerComponent, DatePickerCustomMessagesComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, TimePickerDOMService, HoursService, MinutesService, SecondsService, MillisecondsService, DayPeriodService } from '@progress/kendo-angular-dateinputs';
|
|
14
14
|
import { DropDownListComponent, ValueTemplateDirective, ItemTemplateDirective } from '@progress/kendo-angular-dropdowns';
|
|
15
15
|
import { NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, TextBoxComponent } from '@progress/kendo-angular-inputs';
|
|
16
|
-
import { NgClass } from '@angular/common';
|
|
16
|
+
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
17
17
|
import { IconsService } from '@progress/kendo-angular-icons';
|
|
18
18
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
19
19
|
import { DialogContainerService, DialogService, WindowService, WindowContainerService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dialog';
|
|
@@ -24,6 +24,7 @@ import { DialogContainerService, DialogService, WindowService, WindowContainerSe
|
|
|
24
24
|
class FilterService {
|
|
25
25
|
normalizedValue = { logic: 'and', filters: [] };
|
|
26
26
|
filters = [];
|
|
27
|
+
fieldTemplate = null;
|
|
27
28
|
addFilterGroup(item) {
|
|
28
29
|
const filterGroup = { logic: 'and', filters: [] };
|
|
29
30
|
item.filters.push(filterGroup);
|
|
@@ -231,8 +232,8 @@ const packageMetadata = {
|
|
|
231
232
|
productName: 'Kendo UI for Angular',
|
|
232
233
|
productCode: 'KENDOUIANGULAR',
|
|
233
234
|
productCodes: ['KENDOUIANGULAR'],
|
|
234
|
-
publishDate:
|
|
235
|
-
version: '24.0.0
|
|
235
|
+
publishDate: 1779273617,
|
|
236
|
+
version: '24.0.0',
|
|
236
237
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
237
238
|
};
|
|
238
239
|
|
|
@@ -263,6 +264,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
263
264
|
}]
|
|
264
265
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
265
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Replaces the default operator DropDownList in the Filter component with a custom template.
|
|
269
|
+
* Apply it to an `ng-template` inside a `kendo-filter-field` element.
|
|
270
|
+
*
|
|
271
|
+
* The template context provides the following field:
|
|
272
|
+
*
|
|
273
|
+
* - `let-filter`—The [filter descriptor](slug:api_kendo-data-query_filterdescriptor) for the current row. Set its `operator` property when the user selects a new operator.
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```html
|
|
277
|
+
* <kendo-filter>
|
|
278
|
+
* <kendo-filter-field field="name" editor="string">
|
|
279
|
+
* <ng-template kendoFilterOperatorTemplate let-filter>
|
|
280
|
+
* <kendo-combobox
|
|
281
|
+
* [data]="customOperators"
|
|
282
|
+
* textField="text"
|
|
283
|
+
* valueField="value"
|
|
284
|
+
* [valuePrimitive]="true"
|
|
285
|
+
* [value]="filter.operator"
|
|
286
|
+
* (valueChange)="filter.operator = $event">
|
|
287
|
+
* </kendo-combobox>
|
|
288
|
+
* </ng-template>
|
|
289
|
+
* </kendo-filter-field>
|
|
290
|
+
* </kendo-filter>
|
|
291
|
+
* ```
|
|
292
|
+
*/
|
|
293
|
+
class FilterOperatorTemplateDirective {
|
|
294
|
+
templateRef;
|
|
295
|
+
constructor(templateRef) {
|
|
296
|
+
this.templateRef = templateRef;
|
|
297
|
+
}
|
|
298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterOperatorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
299
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: FilterOperatorTemplateDirective, isStandalone: true, selector: "[kendoFilterOperatorTemplate]", ngImport: i0 });
|
|
300
|
+
}
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterOperatorTemplateDirective, decorators: [{
|
|
302
|
+
type: Directive,
|
|
303
|
+
args: [{
|
|
304
|
+
selector: '[kendoFilterOperatorTemplate]',
|
|
305
|
+
standalone: true
|
|
306
|
+
}]
|
|
307
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
308
|
+
|
|
266
309
|
/**
|
|
267
310
|
* Represents the [Kendo UI Filter Field component for Angular](https://www.telerik.com/kendo-angular-ui/components/filter/api/filterfieldcomponent).
|
|
268
311
|
* Used to declare filter expressions for the Filter component.
|
|
@@ -340,8 +383,12 @@ class FilterFieldComponent {
|
|
|
340
383
|
* @hidden
|
|
341
384
|
*/
|
|
342
385
|
editorTemplate;
|
|
386
|
+
/**
|
|
387
|
+
* @hidden
|
|
388
|
+
*/
|
|
389
|
+
operatorTemplate;
|
|
343
390
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
344
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: FilterFieldComponent, isStandalone: true, selector: "kendo-filter-field", inputs: { field: "field", title: "title", editor: "editor", operators: "operators", editorFormat: "editorFormat" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: FilterValueEditorTemplateDirective, descendants: true }], ngImport: i0, template: ``, isInline: true });
|
|
391
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: FilterFieldComponent, isStandalone: true, selector: "kendo-filter-field", inputs: { field: "field", title: "title", editor: "editor", operators: "operators", editorFormat: "editorFormat" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: FilterValueEditorTemplateDirective, descendants: true }, { propertyName: "operatorTemplate", first: true, predicate: FilterOperatorTemplateDirective, descendants: true }], ngImport: i0, template: ``, isInline: true });
|
|
345
392
|
}
|
|
346
393
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterFieldComponent, decorators: [{
|
|
347
394
|
type: Component,
|
|
@@ -363,6 +410,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
363
410
|
}], editorTemplate: [{
|
|
364
411
|
type: ContentChild,
|
|
365
412
|
args: [FilterValueEditorTemplateDirective]
|
|
413
|
+
}], operatorTemplate: [{
|
|
414
|
+
type: ContentChild,
|
|
415
|
+
args: [FilterOperatorTemplateDirective]
|
|
366
416
|
}] } });
|
|
367
417
|
|
|
368
418
|
/**
|
|
@@ -901,6 +951,7 @@ class FilterExpressionOperatorsComponent {
|
|
|
901
951
|
editorType;
|
|
902
952
|
valueChange = new EventEmitter();
|
|
903
953
|
operators = [];
|
|
954
|
+
operatorTemplate;
|
|
904
955
|
constructor(localization) {
|
|
905
956
|
this.localization = localization;
|
|
906
957
|
}
|
|
@@ -914,53 +965,67 @@ class FilterExpressionOperatorsComponent {
|
|
|
914
965
|
this.valueChange.emit(value);
|
|
915
966
|
}
|
|
916
967
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterExpressionOperatorsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
917
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
968
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: FilterExpressionOperatorsComponent, isStandalone: true, selector: "kendo-filter-expression-operators", inputs: { currentItem: "currentItem", editorType: "editorType", operators: "operators", operatorTemplate: "operatorTemplate" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
|
|
969
|
+
@if (operatorTemplate) {
|
|
970
|
+
<ng-container
|
|
971
|
+
[ngTemplateOutlet]="operatorTemplate"
|
|
972
|
+
[ngTemplateOutletContext]="{$implicit: currentItem}">
|
|
973
|
+
</ng-container>
|
|
974
|
+
} @else {
|
|
975
|
+
<kendo-dropdownlist
|
|
976
|
+
[tabindex]="-1"
|
|
977
|
+
[kendoAriaLabelValue]="messageFor('filterOperatorAriaLabel')"
|
|
978
|
+
[data]="operators"
|
|
979
|
+
[title]="messageFor('filterExpressionOperators')"
|
|
980
|
+
[(value)]="currentItem.operator"
|
|
981
|
+
(valueChange)="operatorValueChange($event)"
|
|
982
|
+
[valuePrimitive]="true"
|
|
983
|
+
textField="text"
|
|
984
|
+
valueField="value"
|
|
985
|
+
>
|
|
986
|
+
<ng-template kendoDropDownListValueTemplate let-dataItem>
|
|
987
|
+
<span>{{ getOperator(dataItem.value) }}</span>
|
|
988
|
+
</ng-template>
|
|
989
|
+
<ng-template kendoDropDownListItemTemplate let-dataItem>
|
|
990
|
+
<span>{{ getOperator(dataItem.value) }}</span>
|
|
991
|
+
</ng-template>
|
|
992
|
+
</kendo-dropdownlist>
|
|
993
|
+
}
|
|
994
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "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: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "directive", type: ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { kind: "directive", type: ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
937
995
|
}
|
|
938
996
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterExpressionOperatorsComponent, decorators: [{
|
|
939
997
|
type: Component,
|
|
940
998
|
args: [{
|
|
941
999
|
selector: "kendo-filter-expression-operators",
|
|
942
1000
|
template: `
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
1001
|
+
@if (operatorTemplate) {
|
|
1002
|
+
<ng-container
|
|
1003
|
+
[ngTemplateOutlet]="operatorTemplate"
|
|
1004
|
+
[ngTemplateOutletContext]="{$implicit: currentItem}">
|
|
1005
|
+
</ng-container>
|
|
1006
|
+
} @else {
|
|
1007
|
+
<kendo-dropdownlist
|
|
1008
|
+
[tabindex]="-1"
|
|
1009
|
+
[kendoAriaLabelValue]="messageFor('filterOperatorAriaLabel')"
|
|
1010
|
+
[data]="operators"
|
|
1011
|
+
[title]="messageFor('filterExpressionOperators')"
|
|
1012
|
+
[(value)]="currentItem.operator"
|
|
1013
|
+
(valueChange)="operatorValueChange($event)"
|
|
1014
|
+
[valuePrimitive]="true"
|
|
1015
|
+
textField="text"
|
|
1016
|
+
valueField="value"
|
|
1017
|
+
>
|
|
1018
|
+
<ng-template kendoDropDownListValueTemplate let-dataItem>
|
|
1019
|
+
<span>{{ getOperator(dataItem.value) }}</span>
|
|
1020
|
+
</ng-template>
|
|
1021
|
+
<ng-template kendoDropDownListItemTemplate let-dataItem>
|
|
1022
|
+
<span>{{ getOperator(dataItem.value) }}</span>
|
|
1023
|
+
</ng-template>
|
|
1024
|
+
</kendo-dropdownlist>
|
|
1025
|
+
}
|
|
961
1026
|
`,
|
|
962
1027
|
standalone: true,
|
|
963
|
-
imports: [DropDownListComponent, AriaLabelValueDirective, ValueTemplateDirective, ItemTemplateDirective]
|
|
1028
|
+
imports: [DropDownListComponent, AriaLabelValueDirective, ValueTemplateDirective, ItemTemplateDirective, NgTemplateOutlet]
|
|
964
1029
|
}]
|
|
965
1030
|
}], ctorParameters: () => [{ type: i1.LocalizationService }], propDecorators: { currentItem: [{
|
|
966
1031
|
type: Input
|
|
@@ -970,6 +1035,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
970
1035
|
type: Output
|
|
971
1036
|
}], operators: [{
|
|
972
1037
|
type: Input
|
|
1038
|
+
}], operatorTemplate: [{
|
|
1039
|
+
type: Input
|
|
973
1040
|
}] } });
|
|
974
1041
|
|
|
975
1042
|
/**
|
|
@@ -988,7 +1055,15 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
988
1055
|
editorType;
|
|
989
1056
|
isEditorDisabled = false;
|
|
990
1057
|
editorTemplate;
|
|
1058
|
+
operatorTemplate;
|
|
991
1059
|
editorFormat;
|
|
1060
|
+
get availableFilters() {
|
|
1061
|
+
return this.filterService.filters || [];
|
|
1062
|
+
}
|
|
1063
|
+
_previousField;
|
|
1064
|
+
get fieldTemplate() {
|
|
1065
|
+
return this.filterService.fieldTemplate;
|
|
1066
|
+
}
|
|
992
1067
|
get currentFilterExpression() {
|
|
993
1068
|
return this.getFilterExpressionByField(this.currentItem.field);
|
|
994
1069
|
}
|
|
@@ -1032,7 +1107,21 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1032
1107
|
super(element, navigationService, localization, renderer);
|
|
1033
1108
|
this.filterService = filterService;
|
|
1034
1109
|
}
|
|
1110
|
+
ngDoCheck() {
|
|
1111
|
+
if (this.fieldTemplate && this.currentItem.field !== this._previousField) {
|
|
1112
|
+
if (!this.currentItem.field) {
|
|
1113
|
+
this.currentItem.field = this._previousField;
|
|
1114
|
+
return;
|
|
1115
|
+
}
|
|
1116
|
+
const previousField = this._previousField;
|
|
1117
|
+
this._previousField = this.currentItem.field;
|
|
1118
|
+
if (previousField !== undefined) {
|
|
1119
|
+
this.filterValueChange(this.currentItem.field);
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1035
1123
|
ngOnInit() {
|
|
1124
|
+
this._previousField = this.currentItem.field;
|
|
1036
1125
|
this.isEditorDisabled = nullOperators.indexOf(this.currentItem.operator) >= 0;
|
|
1037
1126
|
const foundFilter = this.getFilterExpressionByField(this.currentItem.field);
|
|
1038
1127
|
if (this.currentItem.field) {
|
|
@@ -1049,7 +1138,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1049
1138
|
}
|
|
1050
1139
|
this.setOperators(defaultFilter);
|
|
1051
1140
|
}
|
|
1052
|
-
this.
|
|
1141
|
+
this.setTemplates();
|
|
1053
1142
|
}
|
|
1054
1143
|
normalizeOperators(filterEditor, operators) {
|
|
1055
1144
|
const result = [];
|
|
@@ -1075,7 +1164,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1075
1164
|
this.navigationService.currentToolbarItemChildrenIndex = 0;
|
|
1076
1165
|
this.currentItem.value = null;
|
|
1077
1166
|
this.currentItem.field = value;
|
|
1078
|
-
this.
|
|
1167
|
+
this.setTemplates();
|
|
1079
1168
|
const foundFilter = this.getFilterExpressionByField(this.currentItem.field);
|
|
1080
1169
|
this.setOperators(foundFilter);
|
|
1081
1170
|
this.editorFormat = foundFilter.editorFormat;
|
|
@@ -1097,9 +1186,6 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1097
1186
|
const filterExpression = this.filterService.filters.find((filterExpression) => filterExpression.field === this.currentItem.field);
|
|
1098
1187
|
return filterExpression?.editor;
|
|
1099
1188
|
}
|
|
1100
|
-
getFilters() {
|
|
1101
|
-
return this.filterService.filters || [];
|
|
1102
|
-
}
|
|
1103
1189
|
removeFilterExpression() {
|
|
1104
1190
|
this.filterService.remove(this.currentItem, this.index);
|
|
1105
1191
|
this.valueChange.emit(true);
|
|
@@ -1116,6 +1202,9 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1116
1202
|
else {
|
|
1117
1203
|
this.operators = this.getDefaultOperators(filter.editor);
|
|
1118
1204
|
}
|
|
1205
|
+
if (filter.operatorTemplate) {
|
|
1206
|
+
return;
|
|
1207
|
+
}
|
|
1119
1208
|
if (!this.currentItem.operator) {
|
|
1120
1209
|
this.currentItem.operator = this.operators[0].value;
|
|
1121
1210
|
}
|
|
@@ -1136,9 +1225,10 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1136
1225
|
this.isEditorDisabled = false;
|
|
1137
1226
|
}
|
|
1138
1227
|
}
|
|
1139
|
-
|
|
1228
|
+
setTemplates() {
|
|
1140
1229
|
const filterExpression = this.filterService.filters.find((filter) => filter.field === this.currentItem.field);
|
|
1141
1230
|
this.editorTemplate = filterExpression?.editorTemplate;
|
|
1231
|
+
this.operatorTemplate = filterExpression?.operatorTemplate;
|
|
1142
1232
|
}
|
|
1143
1233
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterExpressionComponent, deps: [{ token: FilterService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
1144
1234
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: FilterExpressionComponent, isStandalone: true, selector: "kendo-filter-expression", inputs: { currentItem: "currentItem" }, providers: [{
|
|
@@ -1148,17 +1238,24 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1148
1238
|
<div class="k-filter-toolbar">
|
|
1149
1239
|
<div class="k-toolbar k-toolbar-md k-toolbar-solid" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
1150
1240
|
<div class="k-filter-field k-toolbar-item" >
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1241
|
+
@if (fieldTemplate) {
|
|
1242
|
+
<ng-container
|
|
1243
|
+
[ngTemplateOutlet]="fieldTemplate"
|
|
1244
|
+
[ngTemplateOutletContext]="{$implicit: currentItem, filters: availableFilters}">
|
|
1245
|
+
</ng-container>
|
|
1246
|
+
} @else {
|
|
1247
|
+
<kendo-dropdownlist
|
|
1248
|
+
[tabindex]="-1"
|
|
1249
|
+
[kendoAriaLabelValue]="messageFor('filterFieldAriaLabel')"
|
|
1250
|
+
[title]="messageFor('filterExpressionFilters')"
|
|
1251
|
+
[data]="availableFilters"
|
|
1252
|
+
textField="title"
|
|
1253
|
+
valueField="field"
|
|
1254
|
+
[value]="currentItem.field"
|
|
1255
|
+
[valuePrimitive]="true"
|
|
1256
|
+
(valueChange)="filterValueChange($event)">
|
|
1257
|
+
</kendo-dropdownlist>
|
|
1258
|
+
}
|
|
1162
1259
|
</div>
|
|
1163
1260
|
@if (!isBoolean) {
|
|
1164
1261
|
<div class="k-filter-operator k-toolbar-item" >
|
|
@@ -1166,6 +1263,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1166
1263
|
[currentItem]="currentItem"
|
|
1167
1264
|
[operators]="operators"
|
|
1168
1265
|
[editorType]="getEditorType()"
|
|
1266
|
+
[operatorTemplate]="operatorTemplate"
|
|
1169
1267
|
(valueChange)="onOperatorChange($event);">
|
|
1170
1268
|
</kendo-filter-expression-operators>
|
|
1171
1269
|
</div>
|
|
@@ -1189,9 +1287,10 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1189
1287
|
}
|
|
1190
1288
|
}
|
|
1191
1289
|
@if (editorTemplate) {
|
|
1192
|
-
<ng-
|
|
1193
|
-
[
|
|
1194
|
-
|
|
1290
|
+
<ng-container
|
|
1291
|
+
[ngTemplateOutlet]="editorTemplate"
|
|
1292
|
+
[ngTemplateOutletContext]="{$implicit: currentItem}">
|
|
1293
|
+
</ng-container>
|
|
1195
1294
|
}
|
|
1196
1295
|
</div>
|
|
1197
1296
|
|
|
@@ -1207,7 +1306,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1207
1306
|
</button>
|
|
1208
1307
|
</div>
|
|
1209
1308
|
</div>
|
|
1210
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "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: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "component", type: FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { kind: "component", type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { kind: "component", type: FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { kind: "component", type: FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { kind: "component", type: FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { kind: "directive", type:
|
|
1309
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "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: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "component", type: FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators", "operatorTemplate"], outputs: ["valueChange"] }, { kind: "component", type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { kind: "component", type: FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { kind: "component", type: FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { kind: "component", type: FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
1211
1310
|
}
|
|
1212
1311
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterExpressionComponent, decorators: [{
|
|
1213
1312
|
type: Component,
|
|
@@ -1221,17 +1320,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
1221
1320
|
<div class="k-filter-toolbar">
|
|
1222
1321
|
<div class="k-toolbar k-toolbar-md k-toolbar-solid" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
1223
1322
|
<div class="k-filter-field k-toolbar-item" >
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1323
|
+
@if (fieldTemplate) {
|
|
1324
|
+
<ng-container
|
|
1325
|
+
[ngTemplateOutlet]="fieldTemplate"
|
|
1326
|
+
[ngTemplateOutletContext]="{$implicit: currentItem, filters: availableFilters}">
|
|
1327
|
+
</ng-container>
|
|
1328
|
+
} @else {
|
|
1329
|
+
<kendo-dropdownlist
|
|
1330
|
+
[tabindex]="-1"
|
|
1331
|
+
[kendoAriaLabelValue]="messageFor('filterFieldAriaLabel')"
|
|
1332
|
+
[title]="messageFor('filterExpressionFilters')"
|
|
1333
|
+
[data]="availableFilters"
|
|
1334
|
+
textField="title"
|
|
1335
|
+
valueField="field"
|
|
1336
|
+
[value]="currentItem.field"
|
|
1337
|
+
[valuePrimitive]="true"
|
|
1338
|
+
(valueChange)="filterValueChange($event)">
|
|
1339
|
+
</kendo-dropdownlist>
|
|
1340
|
+
}
|
|
1235
1341
|
</div>
|
|
1236
1342
|
@if (!isBoolean) {
|
|
1237
1343
|
<div class="k-filter-operator k-toolbar-item" >
|
|
@@ -1239,6 +1345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
1239
1345
|
[currentItem]="currentItem"
|
|
1240
1346
|
[operators]="operators"
|
|
1241
1347
|
[editorType]="getEditorType()"
|
|
1348
|
+
[operatorTemplate]="operatorTemplate"
|
|
1242
1349
|
(valueChange)="onOperatorChange($event);">
|
|
1243
1350
|
</kendo-filter-expression-operators>
|
|
1244
1351
|
</div>
|
|
@@ -1262,9 +1369,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
1262
1369
|
}
|
|
1263
1370
|
}
|
|
1264
1371
|
@if (editorTemplate) {
|
|
1265
|
-
<ng-
|
|
1266
|
-
[
|
|
1267
|
-
|
|
1372
|
+
<ng-container
|
|
1373
|
+
[ngTemplateOutlet]="editorTemplate"
|
|
1374
|
+
[ngTemplateOutletContext]="{$implicit: currentItem}">
|
|
1375
|
+
</ng-container>
|
|
1268
1376
|
}
|
|
1269
1377
|
</div>
|
|
1270
1378
|
|
|
@@ -1282,7 +1390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
1282
1390
|
</div>
|
|
1283
1391
|
`,
|
|
1284
1392
|
standalone: true,
|
|
1285
|
-
imports: [DropDownListComponent, AriaLabelValueDirective, FilterExpressionOperatorsComponent, FilterTextEditorComponent, FilterNumericEditorComponent, FilterBooleanEditorComponent, FilterDateEditorComponent,
|
|
1393
|
+
imports: [DropDownListComponent, AriaLabelValueDirective, FilterExpressionOperatorsComponent, FilterTextEditorComponent, FilterNumericEditorComponent, FilterBooleanEditorComponent, FilterDateEditorComponent, NgTemplateOutlet, ButtonComponent]
|
|
1286
1394
|
}]
|
|
1287
1395
|
}], ctorParameters: () => [{ type: FilterService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }], propDecorators: { currentItem: [{
|
|
1288
1396
|
type: Input
|
|
@@ -1463,7 +1571,7 @@ class FilterGroupComponent extends BaseFilterRowComponent {
|
|
|
1463
1571
|
}
|
|
1464
1572
|
</ul>
|
|
1465
1573
|
}
|
|
1466
|
-
`, isInline: true, dependencies: [{ kind: "component", type: FilterGroupComponent, selector: "kendo-filter-group", inputs: ["currentItem"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"
|
|
1574
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FilterGroupComponent, selector: "kendo-filter-group", inputs: ["currentItem"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FilterExpressionComponent, selector: "kendo-filter-expression", inputs: ["currentItem"] }] });
|
|
1467
1575
|
}
|
|
1468
1576
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterGroupComponent, decorators: [{
|
|
1469
1577
|
type: Component,
|
|
@@ -1828,6 +1936,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
1828
1936
|
}]
|
|
1829
1937
|
}], ctorParameters: () => [{ type: i1.LocalizationService }] });
|
|
1830
1938
|
|
|
1939
|
+
/**
|
|
1940
|
+
* Replaces the default field selector DropDownList in the Filter component with a custom template.
|
|
1941
|
+
* Apply it to an `ng-template` that is a direct child of a `kendo-filter` element.
|
|
1942
|
+
*
|
|
1943
|
+
* The template context provides the following fields:
|
|
1944
|
+
*
|
|
1945
|
+
* - `let-currentItem`—The [filter descriptor](slug:api_kendo-data-query_filterdescriptor) for the current row. Set its `field` property to change the selected field. The component detects the change and updates the value, operator list, and editor type automatically.
|
|
1946
|
+
* - `let-filters="filters"`—The list of available [`FilterExpression`](slug:api_filter_filterexpression) items.
|
|
1947
|
+
*
|
|
1948
|
+
* @example
|
|
1949
|
+
* ```html
|
|
1950
|
+
* <kendo-filter>
|
|
1951
|
+
* <ng-template kendoFilterFieldsTemplate let-currentItem let-filters="filters">
|
|
1952
|
+
* <kendo-dropdownlist
|
|
1953
|
+
* [data]="filters"
|
|
1954
|
+
* textField="title"
|
|
1955
|
+
* valueField="field"
|
|
1956
|
+
* [valuePrimitive]="true"
|
|
1957
|
+
* [value]="currentItem.field"
|
|
1958
|
+
* (valueChange)="currentItem.field = $event">
|
|
1959
|
+
* </kendo-dropdownlist>
|
|
1960
|
+
* </ng-template>
|
|
1961
|
+
* <kendo-filter-field field="name" editor="string"></kendo-filter-field>
|
|
1962
|
+
* </kendo-filter>
|
|
1963
|
+
* ```
|
|
1964
|
+
*/
|
|
1965
|
+
class FilterFieldsTemplateDirective {
|
|
1966
|
+
templateRef;
|
|
1967
|
+
constructor(templateRef) {
|
|
1968
|
+
this.templateRef = templateRef;
|
|
1969
|
+
}
|
|
1970
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterFieldsTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1971
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: FilterFieldsTemplateDirective, isStandalone: true, selector: "[kendoFilterFieldsTemplate]", ngImport: i0 });
|
|
1972
|
+
}
|
|
1973
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterFieldsTemplateDirective, decorators: [{
|
|
1974
|
+
type: Directive,
|
|
1975
|
+
args: [{
|
|
1976
|
+
selector: '[kendoFilterFieldsTemplate]',
|
|
1977
|
+
standalone: true
|
|
1978
|
+
}]
|
|
1979
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
1980
|
+
|
|
1831
1981
|
/**
|
|
1832
1982
|
* Represents the [Kendo UI Filter component for Angular](https://www.telerik.com/kendo-angular-ui/components/filter).
|
|
1833
1983
|
* The Filter component enables users to define and apply complex filter criteria.
|
|
@@ -1951,6 +2101,7 @@ class FilterComponent {
|
|
|
1951
2101
|
filterFieldsSubscription;
|
|
1952
2102
|
_value = { filters: [], logic: 'and' };
|
|
1953
2103
|
filterFields;
|
|
2104
|
+
fieldTemplate;
|
|
1954
2105
|
_filterItems;
|
|
1955
2106
|
get filterItems() {
|
|
1956
2107
|
return this._filterItems.toArray();
|
|
@@ -1974,6 +2125,9 @@ class FilterComponent {
|
|
|
1974
2125
|
this.cdr.detectChanges();
|
|
1975
2126
|
});
|
|
1976
2127
|
}
|
|
2128
|
+
ngAfterContentInit() {
|
|
2129
|
+
this.filterService.fieldTemplate = this.fieldTemplate?.templateRef ?? null;
|
|
2130
|
+
}
|
|
1977
2131
|
ngAfterViewInit() {
|
|
1978
2132
|
this.filterFieldsChanged();
|
|
1979
2133
|
this.filterFieldsSubscription = this.filterFields.changes.subscribe(this.filterFieldsChanged.bind(this));
|
|
@@ -1991,7 +2145,8 @@ class FilterComponent {
|
|
|
1991
2145
|
this.filters = this.filterFields.map((filterField) => ({
|
|
1992
2146
|
...filterField,
|
|
1993
2147
|
title: filterField.title,
|
|
1994
|
-
editorTemplate: filterField.editorTemplate?.templateRef
|
|
2148
|
+
editorTemplate: filterField.editorTemplate?.templateRef,
|
|
2149
|
+
operatorTemplate: filterField.operatorTemplate?.templateRef
|
|
1995
2150
|
}));
|
|
1996
2151
|
}
|
|
1997
2152
|
if (this.filters.length === 0) {
|
|
@@ -2123,7 +2278,7 @@ class FilterComponent {
|
|
|
2123
2278
|
},
|
|
2124
2279
|
FilterService,
|
|
2125
2280
|
NavigationService
|
|
2126
|
-
], queries: [{ propertyName: "filterFields", predicate: FilterFieldComponent }], viewQueries: [{ propertyName: "_filterItems", predicate: FilterItem, descendants: true }], ngImport: i0, template: `
|
|
2281
|
+
], queries: [{ propertyName: "fieldTemplate", first: true, predicate: FilterFieldsTemplateDirective, descendants: true }, { propertyName: "filterFields", predicate: FilterFieldComponent }], viewQueries: [{ propertyName: "_filterItems", predicate: FilterItem, descendants: true }], ngImport: i0, template: `
|
|
2127
2282
|
<ng-container kendoFilterLocalizedMessages
|
|
2128
2283
|
i18n-editorDateTodayText="kendo.filter.editorDateTodayText|The text of the Today button of the Date editor"
|
|
2129
2284
|
editorDateTodayText="Today"
|
|
@@ -2413,6 +2568,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2413
2568
|
}], filterFields: [{
|
|
2414
2569
|
type: ContentChildren,
|
|
2415
2570
|
args: [FilterFieldComponent]
|
|
2571
|
+
}], fieldTemplate: [{
|
|
2572
|
+
type: ContentChild,
|
|
2573
|
+
args: [FilterFieldsTemplateDirective]
|
|
2416
2574
|
}], _filterItems: [{
|
|
2417
2575
|
type: ViewChildren,
|
|
2418
2576
|
args: [FilterItem]
|
|
@@ -2461,7 +2619,9 @@ const KENDO_FILTER = [
|
|
|
2461
2619
|
FilterComponent,
|
|
2462
2620
|
FilterFieldComponent,
|
|
2463
2621
|
CustomMessagesComponent,
|
|
2464
|
-
FilterValueEditorTemplateDirective
|
|
2622
|
+
FilterValueEditorTemplateDirective,
|
|
2623
|
+
FilterOperatorTemplateDirective,
|
|
2624
|
+
FilterFieldsTemplateDirective
|
|
2465
2625
|
];
|
|
2466
2626
|
|
|
2467
2627
|
// IMPORTANT: NgModule export kept for backwards compatibility
|
|
@@ -2498,7 +2658,7 @@ const KENDO_FILTER = [
|
|
|
2498
2658
|
*/
|
|
2499
2659
|
class FilterModule {
|
|
2500
2660
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2501
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: FilterModule, imports: [FilterComponent, FilterFieldComponent, CustomMessagesComponent, FilterValueEditorTemplateDirective], exports: [FilterComponent, FilterFieldComponent, CustomMessagesComponent, FilterValueEditorTemplateDirective] });
|
|
2661
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: FilterModule, imports: [FilterComponent, FilterFieldComponent, CustomMessagesComponent, FilterValueEditorTemplateDirective, FilterOperatorTemplateDirective, FilterFieldsTemplateDirective], exports: [FilterComponent, FilterFieldComponent, CustomMessagesComponent, FilterValueEditorTemplateDirective, FilterOperatorTemplateDirective, FilterFieldsTemplateDirective] });
|
|
2502
2662
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FilterModule, providers: [
|
|
2503
2663
|
// InputsModule providers
|
|
2504
2664
|
IconsService,
|
|
@@ -2558,5 +2718,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2558
2718
|
* Generated bundle index. Do not edit.
|
|
2559
2719
|
*/
|
|
2560
2720
|
|
|
2561
|
-
export { AriaLabelValueDirective, CustomMessagesComponent, FilterBooleanEditorComponent, FilterComponent, FilterDateEditorComponent, FilterExpressionComponent, FilterExpressionOperatorsComponent, FilterFieldComponent, FilterGroupComponent, FilterModule, FilterNumericEditorComponent, FilterTextEditorComponent, FilterValueEditorTemplateDirective, KENDO_FILTER, LocalizedMessagesDirective };
|
|
2721
|
+
export { AriaLabelValueDirective, CustomMessagesComponent, FilterBooleanEditorComponent, FilterComponent, FilterDateEditorComponent, FilterExpressionComponent, FilterExpressionOperatorsComponent, FilterFieldComponent, FilterFieldsTemplateDirective, FilterGroupComponent, FilterModule, FilterNumericEditorComponent, FilterOperatorTemplateDirective, FilterTextEditorComponent, FilterValueEditorTemplateDirective, KENDO_FILTER, LocalizedMessagesDirective };
|
|
2562
2722
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { EventEmitter } from '@angular/core';
|
|
5
|
+
import { EventEmitter, TemplateRef } from '@angular/core';
|
|
6
6
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { FilterDescriptor } from '@progress/kendo-data-query';
|
|
8
8
|
import { FilterEditor, FilterOperator } from './model/filter-expression';
|
|
@@ -19,10 +19,11 @@ export declare class FilterExpressionOperatorsComponent {
|
|
|
19
19
|
text: string;
|
|
20
20
|
value: string;
|
|
21
21
|
}[];
|
|
22
|
+
operatorTemplate: TemplateRef<any>;
|
|
22
23
|
constructor(localization: LocalizationService);
|
|
23
24
|
messageFor(key: string): string;
|
|
24
25
|
getOperator(operatorValue: FilterOperator): string;
|
|
25
26
|
operatorValueChange(value: FilterOperator): void;
|
|
26
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterExpressionOperatorsComponent, never>;
|
|
27
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FilterExpressionOperatorsComponent, "kendo-filter-expression-operators", never, { "currentItem": { "alias": "currentItem"; "required": false; }; "editorType": { "alias": "editorType"; "required": false; }; "operators": { "alias": "operators"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterExpressionOperatorsComponent, "kendo-filter-expression-operators", never, { "currentItem": { "alias": "currentItem"; "required": false; }; "editorType": { "alias": "editorType"; "required": false; }; "operators": { "alias": "operators"; "required": false; }; "operatorTemplate": { "alias": "operatorTemplate"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
28
29
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { ElementRef, OnInit, Renderer2, TemplateRef } from '@angular/core';
|
|
5
|
+
import { DoCheck, ElementRef, OnInit, Renderer2, TemplateRef } from '@angular/core';
|
|
6
6
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { CompositeFilterDescriptor, FilterDescriptor } from '@progress/kendo-data-query';
|
|
8
8
|
import { SVGIcon } from '@progress/kendo-svg-icons';
|
|
@@ -14,7 +14,7 @@ import * as i0 from "@angular/core";
|
|
|
14
14
|
/**
|
|
15
15
|
* @hidden
|
|
16
16
|
*/
|
|
17
|
-
export declare class FilterExpressionComponent extends BaseFilterRowComponent implements OnInit {
|
|
17
|
+
export declare class FilterExpressionComponent extends BaseFilterRowComponent implements OnInit, DoCheck {
|
|
18
18
|
private filterService;
|
|
19
19
|
/**
|
|
20
20
|
* @hidden
|
|
@@ -27,13 +27,18 @@ export declare class FilterExpressionComponent extends BaseFilterRowComponent im
|
|
|
27
27
|
editorType: FilterEditor;
|
|
28
28
|
isEditorDisabled: boolean;
|
|
29
29
|
editorTemplate: TemplateRef<any>;
|
|
30
|
+
operatorTemplate: TemplateRef<any>;
|
|
30
31
|
editorFormat: string | DateFormat | NumberFormat;
|
|
32
|
+
get availableFilters(): FilterExpression[];
|
|
33
|
+
private _previousField;
|
|
34
|
+
get fieldTemplate(): TemplateRef<any>;
|
|
31
35
|
private get currentFilterExpression();
|
|
32
36
|
get numericEditorFormat(): string | NumberFormat;
|
|
33
37
|
get dateEditorFormat(): string | DateFormat;
|
|
34
38
|
private isNumberFormat;
|
|
35
39
|
private isDateFormat;
|
|
36
40
|
constructor(filterService: FilterService, element: ElementRef, navigationService: NavigationService, localization: LocalizationService, renderer: Renderer2);
|
|
41
|
+
ngDoCheck(): void;
|
|
37
42
|
ngOnInit(): void;
|
|
38
43
|
normalizeOperators(filterEditor: FilterEditor, operators: FilterOperator[]): {
|
|
39
44
|
text: string;
|
|
@@ -46,11 +51,10 @@ export declare class FilterExpressionComponent extends BaseFilterRowComponent im
|
|
|
46
51
|
value: string;
|
|
47
52
|
}[];
|
|
48
53
|
getEditorType(): FilterEditor;
|
|
49
|
-
getFilters(): FilterExpression[];
|
|
50
54
|
removeFilterExpression(): void;
|
|
51
55
|
private setOperators;
|
|
52
56
|
onOperatorChange(value: string): void;
|
|
53
|
-
|
|
57
|
+
setTemplates(): void;
|
|
54
58
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterExpressionComponent, never>;
|
|
55
59
|
static ɵcmp: i0.ɵɵComponentDeclaration<FilterExpressionComponent, "kendo-filter-expression", never, { "currentItem": { "alias": "currentItem"; "required": false; }; }, {}, never, never, true, never>;
|
|
56
60
|
}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { DateFormat, FilterEditor, FilterOperator, NumberFormat } from './model/filter-expression';
|
|
6
|
-
import { FilterValueEditorTemplateDirective } from './templates/value-editor.
|
|
6
|
+
import { FilterValueEditorTemplateDirective } from './templates/value-editor-template.directive';
|
|
7
|
+
import { FilterOperatorTemplateDirective } from './templates/operator-template.directive';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
/**
|
|
9
10
|
* Represents the [Kendo UI Filter Field component for Angular](https://www.telerik.com/kendo-angular-ui/components/filter/api/filterfieldcomponent).
|
|
@@ -73,6 +74,10 @@ export declare class FilterFieldComponent {
|
|
|
73
74
|
* @hidden
|
|
74
75
|
*/
|
|
75
76
|
editorTemplate: FilterValueEditorTemplateDirective;
|
|
77
|
+
/**
|
|
78
|
+
* @hidden
|
|
79
|
+
*/
|
|
80
|
+
operatorTemplate: FilterOperatorTemplateDirective;
|
|
76
81
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterFieldComponent, never>;
|
|
77
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FilterFieldComponent, "kendo-filter-field", never, { "field": { "alias": "field"; "required": false; }; "title": { "alias": "title"; "required": false; }; "editor": { "alias": "editor"; "required": false; }; "operators": { "alias": "operators"; "required": false; }; "editorFormat": { "alias": "editorFormat"; "required": false; }; }, {}, ["editorTemplate"], never, true, never>;
|
|
82
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterFieldComponent, "kendo-filter-field", never, { "field": { "alias": "field"; "required": false; }; "title": { "alias": "title"; "required": false; }; "editor": { "alias": "editor"; "required": false; }; "operators": { "alias": "operators"; "required": false; }; "editorFormat": { "alias": "editorFormat"; "required": false; }; }, {}, ["editorTemplate", "operatorTemplate"], never, true, never>;
|
|
78
83
|
}
|
package/filter.component.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import {
|
|
5
|
+
import { AfterContentInit, ElementRef, EventEmitter, OnInit, Renderer2 } from '@angular/core';
|
|
6
6
|
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { FilterService } from './filter.service';
|
|
8
8
|
import { CompositeFilterDescriptor } from '@progress/kendo-data-query';
|
|
@@ -48,7 +48,7 @@ import * as i0 from "@angular/core";
|
|
|
48
48
|
* @remarks
|
|
49
49
|
* Supported children components are: {@link CustomMessagesComponent}, {@link FilterFieldComponent}.
|
|
50
50
|
*/
|
|
51
|
-
export declare class FilterComponent implements OnInit, OnDestroy {
|
|
51
|
+
export declare class FilterComponent implements OnInit, AfterContentInit, OnDestroy {
|
|
52
52
|
private filterService;
|
|
53
53
|
private localization;
|
|
54
54
|
private cdr;
|
|
@@ -87,11 +87,13 @@ export declare class FilterComponent implements OnInit, OnDestroy {
|
|
|
87
87
|
private filterFieldsSubscription;
|
|
88
88
|
private _value;
|
|
89
89
|
private filterFields;
|
|
90
|
+
private fieldTemplate;
|
|
90
91
|
private _filterItems;
|
|
91
92
|
get filterItems(): FilterItem[];
|
|
92
93
|
get toolbarElement(): HTMLElement;
|
|
93
94
|
constructor(filterService: FilterService, localization: LocalizationService, cdr: ChangeDetectorRef, element: ElementRef, navigationService: NavigationService, renderer: Renderer2);
|
|
94
95
|
ngOnInit(): void;
|
|
96
|
+
ngAfterContentInit(): void;
|
|
95
97
|
ngAfterViewInit(): void;
|
|
96
98
|
ngOnDestroy(): void;
|
|
97
99
|
private filterFieldsChanged;
|
|
@@ -120,5 +122,5 @@ export declare class FilterComponent implements OnInit, OnDestroy {
|
|
|
120
122
|
*/
|
|
121
123
|
private filtersTypeChanged;
|
|
122
124
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterComponent, never>;
|
|
123
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FilterComponent, "kendo-filter", never, { "filters": { "alias": "filters"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, ["filterFields"], never, true, never>;
|
|
125
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterComponent, "kendo-filter", never, { "filters": { "alias": "filters"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, ["fieldTemplate", "filterFields"], never, true, never>;
|
|
124
126
|
}
|
package/filter.module.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "./filter.component";
|
|
7
7
|
import * as i2 from "./filter-field.component";
|
|
8
8
|
import * as i3 from "./localization/custom-messages.component";
|
|
9
|
-
import * as i4 from "./templates/value-editor.
|
|
9
|
+
import * as i4 from "./templates/value-editor-template.directive";
|
|
10
|
+
import * as i5 from "./templates/operator-template.directive";
|
|
11
|
+
import * as i6 from "./templates/field-template.directive";
|
|
10
12
|
/**
|
|
11
13
|
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
12
14
|
* definition for the Filter component.
|
|
@@ -40,6 +42,6 @@ import * as i4 from "./templates/value-editor.template";
|
|
|
40
42
|
*/
|
|
41
43
|
export declare class FilterModule {
|
|
42
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterModule, never>;
|
|
43
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FilterModule, never, [typeof i1.FilterComponent, typeof i2.FilterFieldComponent, typeof i3.CustomMessagesComponent, typeof i4.FilterValueEditorTemplateDirective], [typeof i1.FilterComponent, typeof i2.FilterFieldComponent, typeof i3.CustomMessagesComponent, typeof i4.FilterValueEditorTemplateDirective]>;
|
|
45
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FilterModule, never, [typeof i1.FilterComponent, typeof i2.FilterFieldComponent, typeof i3.CustomMessagesComponent, typeof i4.FilterValueEditorTemplateDirective, typeof i5.FilterOperatorTemplateDirective, typeof i6.FilterFieldsTemplateDirective], [typeof i1.FilterComponent, typeof i2.FilterFieldComponent, typeof i3.CustomMessagesComponent, typeof i4.FilterValueEditorTemplateDirective, typeof i5.FilterOperatorTemplateDirective, typeof i6.FilterFieldsTemplateDirective]>;
|
|
44
46
|
static ɵinj: i0.ɵɵInjectorDeclaration<FilterModule>;
|
|
45
47
|
}
|
package/filter.service.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { TemplateRef } from '@angular/core';
|
|
5
6
|
import { CompositeFilterDescriptor, FilterDescriptor } from '@progress/kendo-data-query';
|
|
6
7
|
import { FilterExpression } from './model/filter-expression';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
@@ -11,6 +12,7 @@ import * as i0 from "@angular/core";
|
|
|
11
12
|
export declare class FilterService {
|
|
12
13
|
normalizedValue: CompositeFilterDescriptor;
|
|
13
14
|
filters: FilterExpression[];
|
|
15
|
+
fieldTemplate: TemplateRef<any> | null;
|
|
14
16
|
addFilterGroup(item: CompositeFilterDescriptor): void;
|
|
15
17
|
addFilterExpression(item: CompositeFilterDescriptor): void;
|
|
16
18
|
remove(item: CompositeFilterDescriptor | FilterDescriptor, positionIndex: number, parentItem?: CompositeFilterDescriptor): void;
|
package/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export { FilterExpressionComponent } from './filter-expression.component';
|
|
|
16
16
|
export { CustomMessagesComponent } from './localization/custom-messages.component';
|
|
17
17
|
export { LocalizedMessagesDirective } from './localization/localized-messages.directive';
|
|
18
18
|
export { FilterFieldComponent } from './filter-field.component';
|
|
19
|
-
export { FilterValueEditorTemplateDirective } from './templates/value-editor.
|
|
19
|
+
export { FilterValueEditorTemplateDirective } from './templates/value-editor-template.directive';
|
|
20
|
+
export { FilterOperatorTemplateDirective } from './templates/operator-template.directive';
|
|
21
|
+
export { FilterFieldsTemplateDirective } from './templates/field-template.directive';
|
|
20
22
|
export { FilterOperator, FilterEditor } from './model/filter-expression';
|
|
21
23
|
export * from './directives';
|
|
@@ -78,6 +78,12 @@ export interface FilterExpression {
|
|
|
78
78
|
* Specifies a template for the expression value editor input.
|
|
79
79
|
*/
|
|
80
80
|
editorTemplate?: TemplateRef<any>;
|
|
81
|
+
/**
|
|
82
|
+
* Specifies a custom template for the operator dropdown.
|
|
83
|
+
* When set, the default operator DropDownList is replaced with the provided template.
|
|
84
|
+
* The template receives the current [`FilterDescriptor`](slug:api_kendo-data-query_filterdescriptor) as implicit context.
|
|
85
|
+
*/
|
|
86
|
+
operatorTemplate?: TemplateRef<any>;
|
|
81
87
|
/**
|
|
82
88
|
* Specifies the user-defined filter `editor` format that will be used.
|
|
83
89
|
* See the [Filter editor formats documentation](https://www.telerik.com/kendo-angular-ui/components/filter/filter-editors-format).
|
package/package-metadata.mjs
CHANGED
|
@@ -7,7 +7,7 @@ export const packageMetadata = {
|
|
|
7
7
|
"productCodes": [
|
|
8
8
|
"KENDOUIANGULAR"
|
|
9
9
|
],
|
|
10
|
-
"publishDate":
|
|
11
|
-
"version": "24.0.0
|
|
10
|
+
"publishDate": 1779273617,
|
|
11
|
+
"version": "24.0.0",
|
|
12
12
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
13
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-filter",
|
|
3
|
-
"version": "24.0.0
|
|
3
|
+
"version": "24.0.0",
|
|
4
4
|
"description": "Kendo UI Angular Filter",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"package": {
|
|
18
18
|
"productName": "Kendo UI for Angular",
|
|
19
19
|
"productCode": "KENDOUIANGULAR",
|
|
20
|
-
"publishDate":
|
|
20
|
+
"publishDate": 1779273617,
|
|
21
21
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
@@ -28,20 +28,20 @@
|
|
|
28
28
|
"@angular/platform-browser": "19 - 21",
|
|
29
29
|
"@progress/kendo-data-query": "^1.7.3",
|
|
30
30
|
"@progress/kendo-licensing": "^1.11.0",
|
|
31
|
-
"@progress/kendo-angular-buttons": "24.0.0
|
|
32
|
-
"@progress/kendo-angular-common": "24.0.0
|
|
33
|
-
"@progress/kendo-angular-dateinputs": "24.0.0
|
|
34
|
-
"@progress/kendo-angular-dropdowns": "24.0.0
|
|
35
|
-
"@progress/kendo-angular-inputs": "24.0.0
|
|
36
|
-
"@progress/kendo-angular-intl": "24.0.0
|
|
37
|
-
"@progress/kendo-angular-l10n": "24.0.0
|
|
38
|
-
"@progress/kendo-angular-icons": "24.0.0
|
|
39
|
-
"@progress/kendo-angular-label": "24.0.0
|
|
31
|
+
"@progress/kendo-angular-buttons": "24.0.0",
|
|
32
|
+
"@progress/kendo-angular-common": "24.0.0",
|
|
33
|
+
"@progress/kendo-angular-dateinputs": "24.0.0",
|
|
34
|
+
"@progress/kendo-angular-dropdowns": "24.0.0",
|
|
35
|
+
"@progress/kendo-angular-inputs": "24.0.0",
|
|
36
|
+
"@progress/kendo-angular-intl": "24.0.0",
|
|
37
|
+
"@progress/kendo-angular-l10n": "24.0.0",
|
|
38
|
+
"@progress/kendo-angular-icons": "24.0.0",
|
|
39
|
+
"@progress/kendo-angular-label": "24.0.0",
|
|
40
40
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"tslib": "^2.3.1",
|
|
44
|
-
"@progress/kendo-angular-schematics": "24.0.0
|
|
44
|
+
"@progress/kendo-angular-schematics": "24.0.0"
|
|
45
45
|
},
|
|
46
46
|
"schematics": "./schematics/collection.json",
|
|
47
47
|
"module": "fesm2022/progress-kendo-angular-filter.mjs",
|
|
@@ -9,12 +9,12 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
|
9
9
|
function default_1(options) {
|
|
10
10
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'FilterModule', package: 'filter', peerDependencies: {
|
|
11
11
|
// peer deps of the dropdowns
|
|
12
|
-
'@progress/kendo-angular-treeview': '24.0.0
|
|
13
|
-
'@progress/kendo-angular-popup': '24.0.0
|
|
14
|
-
'@progress/kendo-angular-navigation': '24.0.0
|
|
12
|
+
'@progress/kendo-angular-treeview': '24.0.0',
|
|
13
|
+
'@progress/kendo-angular-popup': '24.0.0',
|
|
14
|
+
'@progress/kendo-angular-navigation': '24.0.0',
|
|
15
15
|
// peer dependency of kendo-angular-inputs
|
|
16
16
|
'@progress/kendo-drawing': '^1.16.0',
|
|
17
|
-
'@progress/kendo-angular-dialog': '24.0.0
|
|
17
|
+
'@progress/kendo-angular-dialog': '24.0.0',
|
|
18
18
|
// Peer dependency of icons
|
|
19
19
|
'@progress/kendo-svg-icons': '^4.0.0'
|
|
20
20
|
} });
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { TemplateRef } from '@angular/core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Replaces the default field selector DropDownList in the Filter component with a custom template.
|
|
9
|
+
* Apply it to an `ng-template` that is a direct child of a `kendo-filter` element.
|
|
10
|
+
*
|
|
11
|
+
* The template context provides the following fields:
|
|
12
|
+
*
|
|
13
|
+
* - `let-currentItem`—The [filter descriptor](slug:api_kendo-data-query_filterdescriptor) for the current row. Set its `field` property to change the selected field. The component detects the change and updates the value, operator list, and editor type automatically.
|
|
14
|
+
* - `let-filters="filters"`—The list of available [`FilterExpression`](slug:api_filter_filterexpression) items.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <kendo-filter>
|
|
19
|
+
* <ng-template kendoFilterFieldsTemplate let-currentItem let-filters="filters">
|
|
20
|
+
* <kendo-dropdownlist
|
|
21
|
+
* [data]="filters"
|
|
22
|
+
* textField="title"
|
|
23
|
+
* valueField="field"
|
|
24
|
+
* [valuePrimitive]="true"
|
|
25
|
+
* [value]="currentItem.field"
|
|
26
|
+
* (valueChange)="currentItem.field = $event">
|
|
27
|
+
* </kendo-dropdownlist>
|
|
28
|
+
* </ng-template>
|
|
29
|
+
* <kendo-filter-field field="name" editor="string"></kendo-filter-field>
|
|
30
|
+
* </kendo-filter>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class FilterFieldsTemplateDirective {
|
|
34
|
+
templateRef: TemplateRef<any>;
|
|
35
|
+
constructor(templateRef: TemplateRef<any>);
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterFieldsTemplateDirective, never>;
|
|
37
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FilterFieldsTemplateDirective, "[kendoFilterFieldsTemplate]", never, {}, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { TemplateRef } from '@angular/core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Replaces the default operator DropDownList in the Filter component with a custom template.
|
|
9
|
+
* Apply it to an `ng-template` inside a `kendo-filter-field` element.
|
|
10
|
+
*
|
|
11
|
+
* The template context provides the following field:
|
|
12
|
+
*
|
|
13
|
+
* - `let-filter`—The [filter descriptor](slug:api_kendo-data-query_filterdescriptor) for the current row. Set its `operator` property when the user selects a new operator.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```html
|
|
17
|
+
* <kendo-filter>
|
|
18
|
+
* <kendo-filter-field field="name" editor="string">
|
|
19
|
+
* <ng-template kendoFilterOperatorTemplate let-filter>
|
|
20
|
+
* <kendo-combobox
|
|
21
|
+
* [data]="customOperators"
|
|
22
|
+
* textField="text"
|
|
23
|
+
* valueField="value"
|
|
24
|
+
* [valuePrimitive]="true"
|
|
25
|
+
* [value]="filter.operator"
|
|
26
|
+
* (valueChange)="filter.operator = $event">
|
|
27
|
+
* </kendo-combobox>
|
|
28
|
+
* </ng-template>
|
|
29
|
+
* </kendo-filter-field>
|
|
30
|
+
* </kendo-filter>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class FilterOperatorTemplateDirective {
|
|
34
|
+
templateRef: TemplateRef<any>;
|
|
35
|
+
constructor(templateRef: TemplateRef<any>);
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterOperatorTemplateDirective, never>;
|
|
37
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FilterOperatorTemplateDirective, "[kendoFilterOperatorTemplate]", never, {}, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
File without changes
|