@progress/kendo-angular-filter 13.4.0-develop.1 → 13.4.0-develop.10
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/base-filter-row.component.d.ts +0 -2
- package/esm2020/base-filter-row.component.mjs +1 -8
- package/esm2020/editors/boolean-editor.component.mjs +1 -1
- package/esm2020/filter-expression-operators.component.mjs +1 -1
- package/esm2020/filter-expression.component.mjs +29 -31
- package/esm2020/filter-group.component.mjs +34 -42
- package/esm2020/filter.component.mjs +7 -6
- package/esm2020/navigation.service.mjs +7 -21
- package/esm2020/package-metadata.mjs +2 -2
- package/esm2020/util.mjs +2 -1
- package/fesm2015/progress-kendo-angular-filter.mjs +84 -113
- package/fesm2020/progress-kendo-angular-filter.mjs +84 -113
- package/package.json +11 -11
- package/schematics/ngAdd/index.js +3 -3
|
@@ -19,8 +19,6 @@ export declare abstract class BaseFilterRowComponent {
|
|
|
19
19
|
constructor(element: ElementRef, navigationService: NavigationService, localization: LocalizationService, renderer: Renderer2);
|
|
20
20
|
itemNumber: number;
|
|
21
21
|
get toolbarElement(): HTMLElement;
|
|
22
|
-
onFocus(): void;
|
|
23
|
-
onBlur(): void;
|
|
24
22
|
messageFor(key: string): string;
|
|
25
23
|
onMouseDown(event: any): void;
|
|
26
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<BaseFilterRowComponent, never>;
|
|
@@ -23,13 +23,6 @@ export class BaseFilterRowComponent {
|
|
|
23
23
|
get toolbarElement() {
|
|
24
24
|
return this.element.nativeElement.querySelector('.k-toolbar');
|
|
25
25
|
}
|
|
26
|
-
onFocus() {
|
|
27
|
-
this.renderer.addClass(this.navigationService.flattenFilterItems[this.itemNumber].toolbarElement, 'k-focus');
|
|
28
|
-
this.navigationService.isInnerNavigationActivated = false;
|
|
29
|
-
}
|
|
30
|
-
onBlur() {
|
|
31
|
-
this.renderer.removeClass(this.navigationService.flattenFilterItems[this.itemNumber].toolbarElement, 'k-focus');
|
|
32
|
-
}
|
|
33
26
|
messageFor(key) {
|
|
34
27
|
return this.localization.get(key);
|
|
35
28
|
}
|
|
@@ -53,7 +46,7 @@ export class BaseFilterRowComponent {
|
|
|
53
46
|
this.navigationService.currentToolbarItemChildrenIndex = 0;
|
|
54
47
|
this.navigationService.isInnerNavigationActivated = false;
|
|
55
48
|
this.navigationService.isFilterExpressionComponentFocused = false;
|
|
56
|
-
elementToFocus = this.navigationService.flattenFilterItems[this.itemNumber].
|
|
49
|
+
elementToFocus = this.navigationService.flattenFilterItems[this.itemNumber].focusableChildren[0];
|
|
57
50
|
}
|
|
58
51
|
this.navigationService.currentToolbarItemIndex = this.itemNumber;
|
|
59
52
|
this.navigationService.focusCurrentElement(elementToFocus, true);
|
|
@@ -62,7 +62,7 @@ FilterBooleanEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
62
62
|
valueField="value"
|
|
63
63
|
>
|
|
64
64
|
</kendo-dropdownlist>
|
|
65
|
-
`, isInline: true, components: [{ type: i2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i3.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }] });
|
|
65
|
+
`, isInline: true, components: [{ type: i2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i3.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }] });
|
|
66
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterBooleanEditorComponent, decorators: [{
|
|
67
67
|
type: Component,
|
|
68
68
|
args: [{
|
|
@@ -48,7 +48,7 @@ FilterExpressionOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersio
|
|
|
48
48
|
<span>{{ getOperator(dataItem.value) }}</span>
|
|
49
49
|
</ng-template>
|
|
50
50
|
</kendo-dropdownlist>
|
|
51
|
-
`, isInline: true, components: [{ type: i2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i3.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i2.ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { type: i2.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }] });
|
|
51
|
+
`, isInline: true, components: [{ type: i2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i3.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i2.ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { type: i2.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }] });
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExpressionOperatorsComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
54
|
args: [{
|
|
@@ -201,8 +201,8 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
201
201
|
useExisting: forwardRef(() => FilterExpressionComponent)
|
|
202
202
|
}], usesInheritance: true, ngImport: i0, template: `
|
|
203
203
|
<div class="k-filter-toolbar">
|
|
204
|
-
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (
|
|
205
|
-
<div class="k-filter-
|
|
204
|
+
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
205
|
+
<div class="k-filter-field k-toolbar-item" >
|
|
206
206
|
<kendo-dropdownlist
|
|
207
207
|
[tabindex]="-1"
|
|
208
208
|
[kendoAriaLabelValue]="messageFor('filterFieldAriaLabel')"
|
|
@@ -215,7 +215,7 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
215
215
|
(valueChange)="filterValueChange($event)">
|
|
216
216
|
</kendo-dropdownlist>
|
|
217
217
|
</div>
|
|
218
|
-
<div *ngIf="!isBoolean" class="k-filter-
|
|
218
|
+
<div *ngIf="!isBoolean" class="k-filter-operator k-toolbar-item" >
|
|
219
219
|
<kendo-filter-expression-operators
|
|
220
220
|
[currentItem]="currentItem"
|
|
221
221
|
[operators]="operators"
|
|
@@ -224,7 +224,7 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
224
224
|
</kendo-filter-expression-operators>
|
|
225
225
|
</div>
|
|
226
226
|
|
|
227
|
-
<div class="k-filter-
|
|
227
|
+
<div class="k-filter-value k-toolbar-item">
|
|
228
228
|
<ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">
|
|
229
229
|
<kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
|
|
230
230
|
<kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" [format]="numericEditorFormat" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
|
|
@@ -238,20 +238,19 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
238
238
|
</ng-container>
|
|
239
239
|
</div>
|
|
240
240
|
|
|
241
|
-
<
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
</div>
|
|
241
|
+
<button
|
|
242
|
+
kendoButton
|
|
243
|
+
class="k-toolbar-button"
|
|
244
|
+
tabindex="-1"
|
|
245
|
+
icon="x"
|
|
246
|
+
[svgIcon]="xIcon"
|
|
247
|
+
fillMode="flat"
|
|
248
|
+
[title]="messageFor('remove')"
|
|
249
|
+
(click)="removeFilterExpression()">
|
|
250
|
+
</button>
|
|
252
251
|
</div>
|
|
253
252
|
</div>
|
|
254
|
-
`, isInline: true, components: [{ type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i5.FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { type: i6.FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: i7.FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { type: i8.FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i9.FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { type: i10.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i11.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i12.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
|
|
253
|
+
`, isInline: true, components: [{ type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i5.FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { type: i6.FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: i7.FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { type: i8.FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i9.FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled", "format"], outputs: ["valueChange"] }, { type: i10.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i11.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i12.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
|
|
255
254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExpressionComponent, decorators: [{
|
|
256
255
|
type: Component,
|
|
257
256
|
args: [{
|
|
@@ -262,8 +261,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
262
261
|
selector: 'kendo-filter-expression',
|
|
263
262
|
template: `
|
|
264
263
|
<div class="k-filter-toolbar">
|
|
265
|
-
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (
|
|
266
|
-
<div class="k-filter-
|
|
264
|
+
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
265
|
+
<div class="k-filter-field k-toolbar-item" >
|
|
267
266
|
<kendo-dropdownlist
|
|
268
267
|
[tabindex]="-1"
|
|
269
268
|
[kendoAriaLabelValue]="messageFor('filterFieldAriaLabel')"
|
|
@@ -276,7 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
276
275
|
(valueChange)="filterValueChange($event)">
|
|
277
276
|
</kendo-dropdownlist>
|
|
278
277
|
</div>
|
|
279
|
-
<div *ngIf="!isBoolean" class="k-filter-
|
|
278
|
+
<div *ngIf="!isBoolean" class="k-filter-operator k-toolbar-item" >
|
|
280
279
|
<kendo-filter-expression-operators
|
|
281
280
|
[currentItem]="currentItem"
|
|
282
281
|
[operators]="operators"
|
|
@@ -285,7 +284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
285
284
|
</kendo-filter-expression-operators>
|
|
286
285
|
</div>
|
|
287
286
|
|
|
288
|
-
<div class="k-filter-
|
|
287
|
+
<div class="k-filter-value k-toolbar-item">
|
|
289
288
|
<ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">
|
|
290
289
|
<kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
|
|
291
290
|
<kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" [format]="numericEditorFormat" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
|
|
@@ -299,17 +298,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
299
298
|
</ng-container>
|
|
300
299
|
</div>
|
|
301
300
|
|
|
302
|
-
<
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
</div>
|
|
301
|
+
<button
|
|
302
|
+
kendoButton
|
|
303
|
+
class="k-toolbar-button"
|
|
304
|
+
tabindex="-1"
|
|
305
|
+
icon="x"
|
|
306
|
+
[svgIcon]="xIcon"
|
|
307
|
+
fillMode="flat"
|
|
308
|
+
[title]="messageFor('remove')"
|
|
309
|
+
(click)="removeFilterExpression()">
|
|
310
|
+
</button>
|
|
313
311
|
</div>
|
|
314
312
|
</div>
|
|
315
313
|
`
|
|
@@ -83,24 +83,18 @@ export class FilterGroupComponent extends BaseFilterRowComponent {
|
|
|
83
83
|
this.valueChange.emit(true);
|
|
84
84
|
}
|
|
85
85
|
onMouseDown(event) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
if (event.target.closest(selectors.orButton)) {
|
|
93
|
-
index = 1;
|
|
94
|
-
}
|
|
95
|
-
this.navigationService.currentToolbarItemChildrenIndex = index;
|
|
96
|
-
this.navigationService.isInnerNavigationActivated = true;
|
|
97
|
-
elementToFocus = this.navigationService.flattenFilterItems[this.itemNumber].focusableChildren[index];
|
|
86
|
+
const toolbarItemElement = Array.from(event.target.closest(selectors.kendoToolbar).children).indexOf(event.target.closest(selectors.kendoFilterToolbarItem));
|
|
87
|
+
const buttonElement = Array.from(event.target.closest(selectors.kendoToolbar).children).indexOf(event.target.closest(selectors.kendoFilterToolbarButton));
|
|
88
|
+
let index = (toolbarItemElement > -1 ? toolbarItemElement : buttonElement) + 1;
|
|
89
|
+
if (event.target.closest(selectors.andButton)) {
|
|
90
|
+
index = 0;
|
|
98
91
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.navigationService.isInnerNavigationActivated = false;
|
|
102
|
-
elementToFocus = this.navigationService.flattenFilterItems[this.itemNumber].toolbarElement;
|
|
92
|
+
if (event.target.closest(selectors.orButton)) {
|
|
93
|
+
index = 1;
|
|
103
94
|
}
|
|
95
|
+
this.navigationService.currentToolbarItemChildrenIndex = index;
|
|
96
|
+
this.navigationService.isInnerNavigationActivated = true;
|
|
97
|
+
const elementToFocus = this.navigationService.flattenFilterItems[this.itemNumber].focusableChildren[index];
|
|
104
98
|
this.navigationService.isFilterExpressionComponentFocused = false;
|
|
105
99
|
this.navigationService.currentToolbarItemIndex = this.itemNumber;
|
|
106
100
|
this.navigationService.focusCurrentElement(elementToFocus, true);
|
|
@@ -112,26 +106,26 @@ FilterGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
112
106
|
useExisting: forwardRef(() => FilterGroupComponent)
|
|
113
107
|
}], viewQueries: [{ propertyName: "_filterItems", predicate: FilterItem, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
114
108
|
<div class="k-filter-toolbar">
|
|
115
|
-
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (
|
|
116
|
-
<div class="k-
|
|
117
|
-
|
|
118
|
-
<button
|
|
109
|
+
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
110
|
+
<div class="k-toolbar-button-group k-button-group k-button-group-solid" role="group">
|
|
111
|
+
<button
|
|
119
112
|
tabindex="-1"
|
|
120
113
|
*ngFor="let operator of operators"
|
|
121
114
|
kendoButton
|
|
115
|
+
class="k-toolbar-button"
|
|
122
116
|
[ngClass]="{'k-group-start': operator.value === 'and', 'k-group-end': operator.value === 'or'}"
|
|
123
117
|
[selected]="currentItem.logic === operator.value"
|
|
124
118
|
[attr.aria-pressed]="currentItem.logic === operator.value"
|
|
125
119
|
[title]="operator.text"
|
|
126
120
|
(click)="selectedChange(operator.value)"
|
|
127
|
-
|
|
121
|
+
>
|
|
128
122
|
{{getOperator(operator.value)}}
|
|
129
|
-
|
|
130
|
-
</div>
|
|
123
|
+
</button>
|
|
131
124
|
</div>
|
|
132
|
-
|
|
125
|
+
|
|
133
126
|
<button
|
|
134
127
|
kendoButton
|
|
128
|
+
class="k-toolbar-button"
|
|
135
129
|
tabindex="-1"
|
|
136
130
|
[title]="messageFor('addFilter')"
|
|
137
131
|
icon="filter-add-expression"
|
|
@@ -139,10 +133,10 @@ FilterGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
139
133
|
(click)="addFilterExpression()">
|
|
140
134
|
{{messageFor('addFilter')}}
|
|
141
135
|
</button>
|
|
142
|
-
|
|
143
|
-
<div class="k-filter-toolbar-item">
|
|
136
|
+
|
|
144
137
|
<button
|
|
145
138
|
kendoButton
|
|
139
|
+
class="k-toolbar-button"
|
|
146
140
|
tabindex="-1"
|
|
147
141
|
[title]="messageFor('addGroup')"
|
|
148
142
|
icon="filter-add-group"
|
|
@@ -150,10 +144,10 @@ FilterGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
150
144
|
(click)="addFilterGroup()">
|
|
151
145
|
{{messageFor('addGroup')}}
|
|
152
146
|
</button>
|
|
153
|
-
|
|
154
|
-
<div class="k-filter-toolbar-item">
|
|
147
|
+
|
|
155
148
|
<button
|
|
156
149
|
kendoButton
|
|
150
|
+
class="k-toolbar-button"
|
|
157
151
|
tabindex="-1"
|
|
158
152
|
icon="x"
|
|
159
153
|
[svgIcon]="xIcon"
|
|
@@ -161,7 +155,6 @@ FilterGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
161
155
|
[title]="messageFor('remove')"
|
|
162
156
|
(click)="removeFilterGroup()">
|
|
163
157
|
</button>
|
|
164
|
-
</div>
|
|
165
158
|
</div>
|
|
166
159
|
</div>
|
|
167
160
|
|
|
@@ -192,26 +185,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
192
185
|
selector: 'kendo-filter-group',
|
|
193
186
|
template: `
|
|
194
187
|
<div class="k-filter-toolbar">
|
|
195
|
-
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (
|
|
196
|
-
<div class="k-
|
|
197
|
-
|
|
198
|
-
<button
|
|
188
|
+
<div class="k-toolbar k-toolbar-md" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
189
|
+
<div class="k-toolbar-button-group k-button-group k-button-group-solid" role="group">
|
|
190
|
+
<button
|
|
199
191
|
tabindex="-1"
|
|
200
192
|
*ngFor="let operator of operators"
|
|
201
193
|
kendoButton
|
|
194
|
+
class="k-toolbar-button"
|
|
202
195
|
[ngClass]="{'k-group-start': operator.value === 'and', 'k-group-end': operator.value === 'or'}"
|
|
203
196
|
[selected]="currentItem.logic === operator.value"
|
|
204
197
|
[attr.aria-pressed]="currentItem.logic === operator.value"
|
|
205
198
|
[title]="operator.text"
|
|
206
199
|
(click)="selectedChange(operator.value)"
|
|
207
|
-
|
|
200
|
+
>
|
|
208
201
|
{{getOperator(operator.value)}}
|
|
209
|
-
|
|
210
|
-
</div>
|
|
202
|
+
</button>
|
|
211
203
|
</div>
|
|
212
|
-
|
|
204
|
+
|
|
213
205
|
<button
|
|
214
206
|
kendoButton
|
|
207
|
+
class="k-toolbar-button"
|
|
215
208
|
tabindex="-1"
|
|
216
209
|
[title]="messageFor('addFilter')"
|
|
217
210
|
icon="filter-add-expression"
|
|
@@ -219,10 +212,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
219
212
|
(click)="addFilterExpression()">
|
|
220
213
|
{{messageFor('addFilter')}}
|
|
221
214
|
</button>
|
|
222
|
-
|
|
223
|
-
<div class="k-filter-toolbar-item">
|
|
215
|
+
|
|
224
216
|
<button
|
|
225
217
|
kendoButton
|
|
218
|
+
class="k-toolbar-button"
|
|
226
219
|
tabindex="-1"
|
|
227
220
|
[title]="messageFor('addGroup')"
|
|
228
221
|
icon="filter-add-group"
|
|
@@ -230,10 +223,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
230
223
|
(click)="addFilterGroup()">
|
|
231
224
|
{{messageFor('addGroup')}}
|
|
232
225
|
</button>
|
|
233
|
-
|
|
234
|
-
<div class="k-filter-toolbar-item">
|
|
226
|
+
|
|
235
227
|
<button
|
|
236
228
|
kendoButton
|
|
229
|
+
class="k-toolbar-button"
|
|
237
230
|
tabindex="-1"
|
|
238
231
|
icon="x"
|
|
239
232
|
[svgIcon]="xIcon"
|
|
@@ -241,7 +234,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
241
234
|
[title]="messageFor('remove')"
|
|
242
235
|
(click)="removeFilterGroup()">
|
|
243
236
|
</button>
|
|
244
|
-
</div>
|
|
245
237
|
</div>
|
|
246
238
|
</div>
|
|
247
239
|
|
|
@@ -76,7 +76,7 @@ export class FilterComponent {
|
|
|
76
76
|
setTimeout(() => {
|
|
77
77
|
if (!(document.activeElement.closest('.k-filter'))) {
|
|
78
78
|
this.renderer.setAttribute(this.navigationService.currentlyFocusedElement, 'tabindex', '-1');
|
|
79
|
-
this.navigationService.currentlyFocusedElement = this.navigationService.flattenFilterItems[this.navigationService.currentToolbarItemIndex].
|
|
79
|
+
this.navigationService.currentlyFocusedElement = this.navigationService.flattenFilterItems[this.navigationService.currentToolbarItemIndex].focusableChildren[0];
|
|
80
80
|
this.renderer.setAttribute(this.navigationService.currentlyFocusedElement, 'tabindex', '0');
|
|
81
81
|
this.navigationService.isInnerNavigationActivated = false;
|
|
82
82
|
this.navigationService.isFilterExpressionComponentFocused = false;
|
|
@@ -150,7 +150,7 @@ export class FilterComponent {
|
|
|
150
150
|
}
|
|
151
151
|
this.navigationService.reset(this.filterItems);
|
|
152
152
|
if (!this.navigationService.currentlyFocusedElement) {
|
|
153
|
-
const firstElement = this.navigationService.flattenFilterItems[0].
|
|
153
|
+
const firstElement = this.navigationService.flattenFilterItems[0].focusableChildren[0];
|
|
154
154
|
this.navigationService.currentlyFocusedElement = firstElement;
|
|
155
155
|
this.renderer.setAttribute(firstElement, 'tabindex', '0');
|
|
156
156
|
}
|
|
@@ -177,9 +177,10 @@ export class FilterComponent {
|
|
|
177
177
|
if (this.navigationService.currentToolbarItemIndex === this.navigationService.flattenFilterItems.length) {
|
|
178
178
|
this.navigationService.currentToolbarItemIndex -= 1;
|
|
179
179
|
}
|
|
180
|
-
this.navigationService.isInnerNavigationActivated = false;
|
|
181
180
|
this.navigationService.isFilterExpressionComponentFocused = false;
|
|
182
|
-
|
|
181
|
+
const itemIndex = this.navigationService.currentToolbarItemIndex;
|
|
182
|
+
const activeChildIndex = this.navigationService.currentToolbarItemChildrenIndex;
|
|
183
|
+
this.navigationService.currentlyFocusedElement = this.navigationService.flattenFilterItems[itemIndex].focusableChildren[activeChildIndex];
|
|
183
184
|
this.renderer.setAttribute(this.navigationService.currentlyFocusedElement, 'tabindex', '0');
|
|
184
185
|
this.renderer.addClass(this.navigationService.currentlyFocusedElement, 'k-focus');
|
|
185
186
|
this.navigationService.currentlyFocusedElement.focus();
|
|
@@ -361,7 +362,7 @@ FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
|
|
|
361
362
|
filterComponentAriaLabel="filter component"
|
|
362
363
|
>
|
|
363
364
|
</ng-container>
|
|
364
|
-
<div class="k-
|
|
365
|
+
<div class="k-filter" [attr.dir]="direction">
|
|
365
366
|
<ul class='k-filter-container' role="tree" [attr.aria-label]="messageFor('filterComponentAriaLabel')">
|
|
366
367
|
<li class='k-filter-group-main' role="treeitem">
|
|
367
368
|
<kendo-filter-group
|
|
@@ -500,7 +501,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
500
501
|
filterComponentAriaLabel="filter component"
|
|
501
502
|
>
|
|
502
503
|
</ng-container>
|
|
503
|
-
<div class="k-
|
|
504
|
+
<div class="k-filter" [attr.dir]="direction">
|
|
504
505
|
<ul class='k-filter-container' role="tree" [attr.aria-label]="messageFor('filterComponentAriaLabel')">
|
|
505
506
|
<li class='k-filter-group-main' role="treeitem">
|
|
506
507
|
<kendo-filter-group
|
|
@@ -17,38 +17,32 @@ export class NavigationService {
|
|
|
17
17
|
this.flattenFilterItems = [];
|
|
18
18
|
this.currentToolbarItemIndex = 0;
|
|
19
19
|
this.currentToolbarItemChildrenIndex = 0;
|
|
20
|
-
this.isInnerNavigationActivated =
|
|
20
|
+
this.isInnerNavigationActivated = true;
|
|
21
21
|
this.isFilterExpressionComponentFocused = false;
|
|
22
22
|
}
|
|
23
23
|
processKeyDown(key, event) {
|
|
24
24
|
switch (key) {
|
|
25
25
|
case Keys.ArrowUp: {
|
|
26
26
|
event.preventDefault();
|
|
27
|
-
if (!this.
|
|
27
|
+
if (!this.isFilterExpressionComponentFocused) {
|
|
28
|
+
this.currentToolbarItemChildrenIndex = 0;
|
|
28
29
|
this.currentToolbarItemIndex > 0 ? this.currentToolbarItemIndex-- : this.currentToolbarItemIndex;
|
|
29
|
-
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].
|
|
30
|
+
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].focusableChildren[0];
|
|
30
31
|
this.focusCurrentElement(elementToFocus);
|
|
31
32
|
}
|
|
32
33
|
break;
|
|
33
34
|
}
|
|
34
35
|
case Keys.ArrowDown: {
|
|
35
36
|
event.preventDefault();
|
|
36
|
-
if (!this.
|
|
37
|
+
if (!this.isFilterExpressionComponentFocused) {
|
|
38
|
+
this.currentToolbarItemChildrenIndex = 0;
|
|
37
39
|
this.currentToolbarItemIndex < this.flattenFilterItems.length - 1 ? this.currentToolbarItemIndex++ : this.currentToolbarItemIndex;
|
|
38
|
-
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].
|
|
40
|
+
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].focusableChildren[0];
|
|
39
41
|
this.focusCurrentElement(elementToFocus);
|
|
40
42
|
}
|
|
41
43
|
break;
|
|
42
44
|
}
|
|
43
45
|
case Keys.Enter: {
|
|
44
|
-
const isEventTargetFilterToolbar = event.target.closest(selectors.kendoToolbar);
|
|
45
|
-
if (!this.isInnerNavigationActivated && isEventTargetFilterToolbar) {
|
|
46
|
-
event.preventDefault();
|
|
47
|
-
this.isInnerNavigationActivated = true;
|
|
48
|
-
this.currentToolbarItemChildrenIndex = 0;
|
|
49
|
-
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].focusableChildren[this.currentToolbarItemChildrenIndex];
|
|
50
|
-
this.focusCurrentElement(elementToFocus);
|
|
51
|
-
}
|
|
52
46
|
const isEventTargetKendoFilterToolbarItem = event.target.closest(selectors.kendoFilterToolbarItem);
|
|
53
47
|
const isEventTargetButton = event.target.closest(selectors.kendoButton);
|
|
54
48
|
if (this.isInnerNavigationActivated &&
|
|
@@ -67,17 +61,9 @@ export class NavigationService {
|
|
|
67
61
|
break;
|
|
68
62
|
}
|
|
69
63
|
case Keys.Escape: {
|
|
70
|
-
if (this.isInnerNavigationActivated && !this.isFilterExpressionComponentFocused) {
|
|
71
|
-
event.preventDefault();
|
|
72
|
-
this.isInnerNavigationActivated = false;
|
|
73
|
-
this.currentToolbarItemChildrenIndex = 0;
|
|
74
|
-
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].toolbarElement;
|
|
75
|
-
this.focusCurrentElement(elementToFocus);
|
|
76
|
-
}
|
|
77
64
|
if (this.isFilterExpressionComponentFocused) {
|
|
78
65
|
event.preventDefault();
|
|
79
66
|
this.isFilterExpressionComponentFocused = false;
|
|
80
|
-
this.isInnerNavigationActivated = true;
|
|
81
67
|
const elementToFocus = this.flattenFilterItems[this.currentToolbarItemIndex].focusableChildren[this.currentToolbarItemChildrenIndex];
|
|
82
68
|
this.focusCurrentElement(elementToFocus);
|
|
83
69
|
}
|
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-filter',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
13
|
-
version: '13.4.0-develop.
|
|
12
|
+
publishDate: 1692971963,
|
|
13
|
+
version: '13.4.0-develop.10',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
15
15
|
};
|
package/esm2020/util.mjs
CHANGED
|
@@ -169,5 +169,6 @@ export const selectors = {
|
|
|
169
169
|
textAreaElement: `textarea`,
|
|
170
170
|
kendoToolbar: `.k-toolbar`,
|
|
171
171
|
kendoButton: `.k-button`,
|
|
172
|
-
kendoFilterToolbarItem: `.k-
|
|
172
|
+
kendoFilterToolbarItem: `.k-toolbar-item`,
|
|
173
|
+
kendoFilterToolbarButton: `.k-toolbar-button`
|
|
173
174
|
};
|