@progress/kendo-angular-filter 25.1.0-develop.3 → 25.1.0-develop.5
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/fesm2022/progress-kendo-angular-filter.mjs +552 -128
- package/index.d.ts +216 -73
- package/package-metadata.mjs +2 -2
- package/package.json +12 -12
- package/schematics/ngAdd/index.js +4 -4
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Injectable, Directive, ContentChild, Input, Component, EventEmitter, Output, isDevMode, forwardRef, ViewChildren, ContentChildren, HostBinding, HostListener, NgModule } from '@angular/core';
|
|
6
|
+
import { signal, Injectable, Directive, ContentChild, Input, Component, EventEmitter, Output, afterNextRender, ChangeDetectionStrategy, isDevMode, forwardRef, ViewChildren, ContentChildren, HostBinding, HostListener, NgModule } from '@angular/core';
|
|
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';
|
|
@@ -22,9 +22,15 @@ import { DialogContainerService, DialogService, WindowService, WindowContainerSe
|
|
|
22
22
|
* @hidden
|
|
23
23
|
*/
|
|
24
24
|
class FilterService {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
_normalizedValue = signal({ logic: 'and', filters: [] }, ...(ngDevMode ? [{ debugName: "_normalizedValue" }] : []));
|
|
26
|
+
_filters = signal([], ...(ngDevMode ? [{ debugName: "_filters" }] : []));
|
|
27
|
+
_fieldTemplate = signal(null, ...(ngDevMode ? [{ debugName: "_fieldTemplate" }] : []));
|
|
28
|
+
set normalizedValue(value) { this._normalizedValue.set(value); }
|
|
29
|
+
get normalizedValue() { return this._normalizedValue(); }
|
|
30
|
+
set filters(value) { this._filters.set(value); }
|
|
31
|
+
get filters() { return this._filters(); }
|
|
32
|
+
set fieldTemplate(value) { this._fieldTemplate.set(value); }
|
|
33
|
+
get fieldTemplate() { return this._fieldTemplate(); }
|
|
28
34
|
addFilterGroup(item) {
|
|
29
35
|
const filterGroup = { logic: 'and', filters: [] };
|
|
30
36
|
item.filters.push(filterGroup);
|
|
@@ -232,8 +238,8 @@ const packageMetadata = {
|
|
|
232
238
|
productName: 'Kendo UI for Angular',
|
|
233
239
|
productCode: 'KENDOUIANGULAR',
|
|
234
240
|
productCodes: ['KENDOUIANGULAR'],
|
|
235
|
-
publishDate:
|
|
236
|
-
version: '25.1.0-develop.
|
|
241
|
+
publishDate: 1787151369,
|
|
242
|
+
version: '25.1.0-develop.5',
|
|
237
243
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
238
244
|
};
|
|
239
245
|
|
|
@@ -324,28 +330,37 @@ class FilterFieldComponent {
|
|
|
324
330
|
/**
|
|
325
331
|
* Specifies the `field` that will be used by the user-defined filter.
|
|
326
332
|
*/
|
|
327
|
-
field
|
|
333
|
+
set field(value) {
|
|
334
|
+
this._field.set(value);
|
|
335
|
+
}
|
|
336
|
+
get field() {
|
|
337
|
+
return this._field();
|
|
338
|
+
}
|
|
328
339
|
/**
|
|
329
340
|
* Specifies the `title` text that will be displayed by the user-defined filter.
|
|
330
341
|
* If the `title` isn't set, the value passed to `field` is used.
|
|
331
342
|
*/
|
|
332
343
|
set title(_title) {
|
|
333
344
|
if (_title) {
|
|
334
|
-
this._title
|
|
345
|
+
this._title.set(_title);
|
|
335
346
|
}
|
|
336
347
|
else {
|
|
337
|
-
this._title
|
|
348
|
+
this._title.set(this.field);
|
|
338
349
|
}
|
|
339
350
|
}
|
|
340
351
|
get title() {
|
|
341
|
-
return this._title;
|
|
352
|
+
return this._title();
|
|
342
353
|
}
|
|
343
|
-
_title;
|
|
344
354
|
/**
|
|
345
355
|
* Specifies the user-defined filter `editor` type that will be used.
|
|
346
356
|
* The available options are 'string', 'number', 'boolean', and 'date'.
|
|
347
357
|
*/
|
|
348
|
-
editor
|
|
358
|
+
set editor(value) {
|
|
359
|
+
this._editor.set(value);
|
|
360
|
+
}
|
|
361
|
+
get editor() {
|
|
362
|
+
return this._editor();
|
|
363
|
+
}
|
|
349
364
|
/**
|
|
350
365
|
* Specifies the operators that will be available in the order of providing them.
|
|
351
366
|
* If no operators are provided, default operators are used for each filter type.
|
|
@@ -374,11 +389,26 @@ class FilterFieldComponent {
|
|
|
374
389
|
*
|
|
375
390
|
* The boolean operator is always set to `eq`
|
|
376
391
|
*/
|
|
377
|
-
operators
|
|
392
|
+
set operators(value) {
|
|
393
|
+
this._operators.set(value);
|
|
394
|
+
}
|
|
395
|
+
get operators() {
|
|
396
|
+
return this._operators();
|
|
397
|
+
}
|
|
378
398
|
/**
|
|
379
399
|
* Specifies the user-defined filter `editor` format that will be used. ([see example](https://www.telerik.com/kendo-angular-ui/components/filter/filter-editors-format))
|
|
380
400
|
*/
|
|
381
|
-
editorFormat
|
|
401
|
+
set editorFormat(value) {
|
|
402
|
+
this._editorFormat.set(value);
|
|
403
|
+
}
|
|
404
|
+
get editorFormat() {
|
|
405
|
+
return this._editorFormat();
|
|
406
|
+
}
|
|
407
|
+
_field = signal(undefined, ...(ngDevMode ? [{ debugName: "_field" }] : []));
|
|
408
|
+
_title = signal(undefined, ...(ngDevMode ? [{ debugName: "_title" }] : []));
|
|
409
|
+
_editor = signal(undefined, ...(ngDevMode ? [{ debugName: "_editor" }] : []));
|
|
410
|
+
_operators = signal(undefined, ...(ngDevMode ? [{ debugName: "_operators" }] : []));
|
|
411
|
+
_editorFormat = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorFormat" }] : []));
|
|
382
412
|
/**
|
|
383
413
|
* @hidden
|
|
384
414
|
*/
|
|
@@ -591,7 +621,13 @@ class BaseFilterRowComponent {
|
|
|
591
621
|
navigationService;
|
|
592
622
|
localization;
|
|
593
623
|
renderer;
|
|
594
|
-
index
|
|
624
|
+
set index(value) {
|
|
625
|
+
this._index.set(value);
|
|
626
|
+
}
|
|
627
|
+
get index() {
|
|
628
|
+
return this._index();
|
|
629
|
+
}
|
|
630
|
+
_index = signal(undefined, ...(ngDevMode ? [{ debugName: "_index" }] : []));
|
|
595
631
|
valueChange = new EventEmitter();
|
|
596
632
|
constructor(element, navigationService, localization, renderer) {
|
|
597
633
|
this.element = element;
|
|
@@ -654,16 +690,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
654
690
|
class AriaLabelValueDirective {
|
|
655
691
|
hostElement;
|
|
656
692
|
renderer;
|
|
657
|
-
|
|
658
|
-
|
|
693
|
+
injector;
|
|
694
|
+
set ariaLabel(value) {
|
|
695
|
+
this._ariaLabel.set(value);
|
|
696
|
+
}
|
|
697
|
+
get ariaLabel() {
|
|
698
|
+
return this._ariaLabel();
|
|
699
|
+
}
|
|
700
|
+
_ariaLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_ariaLabel" }] : []));
|
|
701
|
+
constructor(hostElement, renderer, injector) {
|
|
659
702
|
this.hostElement = hostElement;
|
|
660
703
|
this.renderer = renderer;
|
|
704
|
+
this.injector = injector;
|
|
661
705
|
}
|
|
662
706
|
ngOnInit() {
|
|
663
|
-
|
|
664
|
-
|
|
707
|
+
afterNextRender(() => {
|
|
708
|
+
const target = this.hostElement.nativeElement.querySelector('input') || this.hostElement.nativeElement;
|
|
709
|
+
this.renderer.setAttribute(target, 'aria-label', this.ariaLabel);
|
|
710
|
+
}, { injector: this.injector });
|
|
665
711
|
}
|
|
666
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AriaLabelValueDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
712
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AriaLabelValueDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
667
713
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: AriaLabelValueDirective, isStandalone: true, selector: "[kendoAriaLabelValue]", inputs: { ariaLabel: ["kendoAriaLabelValue", "ariaLabel"] }, ngImport: i0 });
|
|
668
714
|
}
|
|
669
715
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AriaLabelValueDirective, decorators: [{
|
|
@@ -672,7 +718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
672
718
|
selector: '[kendoAriaLabelValue]',
|
|
673
719
|
standalone: true
|
|
674
720
|
}]
|
|
675
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { ariaLabel: [{
|
|
721
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }], propDecorators: { ariaLabel: [{
|
|
676
722
|
type: Input,
|
|
677
723
|
args: ['kendoAriaLabelValue']
|
|
678
724
|
}] } });
|
|
@@ -682,10 +728,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
682
728
|
*/
|
|
683
729
|
class FilterDateEditorComponent {
|
|
684
730
|
localization;
|
|
685
|
-
currentItem
|
|
686
|
-
|
|
687
|
-
|
|
731
|
+
set currentItem(value) {
|
|
732
|
+
this._currentItem.set(value);
|
|
733
|
+
}
|
|
734
|
+
get currentItem() {
|
|
735
|
+
return this._currentItem();
|
|
736
|
+
}
|
|
737
|
+
set isDisabled(value) {
|
|
738
|
+
this._isDisabled.set(value);
|
|
739
|
+
}
|
|
740
|
+
get isDisabled() {
|
|
741
|
+
return this._isDisabled();
|
|
742
|
+
}
|
|
743
|
+
set format(value) {
|
|
744
|
+
this._format.set(value);
|
|
745
|
+
}
|
|
746
|
+
get format() {
|
|
747
|
+
return this._format();
|
|
748
|
+
}
|
|
688
749
|
valueChange = new EventEmitter();
|
|
750
|
+
_currentItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
751
|
+
_isDisabled = signal(undefined, ...(ngDevMode ? [{ debugName: "_isDisabled" }] : []));
|
|
752
|
+
_format = signal(undefined, ...(ngDevMode ? [{ debugName: "_format" }] : []));
|
|
689
753
|
constructor(localization) {
|
|
690
754
|
this.localization = localization;
|
|
691
755
|
}
|
|
@@ -710,12 +774,13 @@ class FilterDateEditorComponent {
|
|
|
710
774
|
[today]="messageFor('editorDateTodayText')">
|
|
711
775
|
</kendo-datepicker-messages>
|
|
712
776
|
</kendo-datepicker>
|
|
713
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }, { kind: "directive", type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "component", type: DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }] });
|
|
777
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DatePickerComponent, selector: "kendo-datepicker", inputs: ["focusableId", "cellTemplate", "clearButton", "inputAttributes", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "footer", "navigationItemTemplate", "weekDaysFormat", "showOtherMonthDays", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "autoFill", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "adaptiveTitle", "adaptiveSubtitle", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode", "adaptiveMode"], outputs: ["valueChange", "focus", "blur", "open", "close", "escape"], exportAs: ["kendo-datepicker"] }, { kind: "directive", type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "component", type: DatePickerCustomMessagesComponent, selector: "kendo-datepicker-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
714
778
|
}
|
|
715
779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterDateEditorComponent, decorators: [{
|
|
716
780
|
type: Component,
|
|
717
781
|
args: [{
|
|
718
782
|
selector: 'kendo-filter-date-editor',
|
|
783
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
719
784
|
template: `
|
|
720
785
|
<kendo-datepicker
|
|
721
786
|
[tabindex]="-1"
|
|
@@ -748,8 +813,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
748
813
|
*/
|
|
749
814
|
class FilterBooleanEditorComponent {
|
|
750
815
|
localization;
|
|
751
|
-
|
|
816
|
+
cdr;
|
|
817
|
+
set currentItem(value) {
|
|
818
|
+
this._currentItem.set(value);
|
|
819
|
+
}
|
|
820
|
+
get currentItem() {
|
|
821
|
+
return this._currentItem();
|
|
822
|
+
}
|
|
752
823
|
valueChange = new EventEmitter();
|
|
824
|
+
_currentItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
753
825
|
get items() {
|
|
754
826
|
return [
|
|
755
827
|
{ text: this.getBooleanText(true), value: true },
|
|
@@ -759,8 +831,9 @@ class FilterBooleanEditorComponent {
|
|
|
759
831
|
get defaultItem() {
|
|
760
832
|
return { text: this.getBooleanText(null), value: null };
|
|
761
833
|
}
|
|
762
|
-
constructor(localization) {
|
|
834
|
+
constructor(localization, cdr) {
|
|
763
835
|
this.localization = localization;
|
|
836
|
+
this.cdr = cdr;
|
|
764
837
|
}
|
|
765
838
|
messageFor(key) {
|
|
766
839
|
return this.localization.get(key);
|
|
@@ -778,7 +851,7 @@ class FilterBooleanEditorComponent {
|
|
|
778
851
|
this.currentItem.value = value;
|
|
779
852
|
this.valueChange.emit();
|
|
780
853
|
}
|
|
781
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterBooleanEditorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
854
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterBooleanEditorComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
782
855
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: FilterBooleanEditorComponent, isStandalone: true, selector: "kendo-filter-boolean-editor", inputs: { currentItem: "currentItem" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
|
|
783
856
|
<kendo-dropdownlist
|
|
784
857
|
[tabindex]="-1"
|
|
@@ -793,12 +866,13 @@ class FilterBooleanEditorComponent {
|
|
|
793
866
|
<ng-template kendoDropDownListValueTemplate let-dataItem>{{ getBooleanText(dataItem.value) }}</ng-template>
|
|
794
867
|
<ng-template kendoDropDownListItemTemplate let-dataItem>{{ getBooleanText(dataItem.value) }}</ng-template>
|
|
795
868
|
</kendo-dropdownlist>
|
|
796
|
-
`, 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]" }] });
|
|
869
|
+
`, 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]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
797
870
|
}
|
|
798
871
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterBooleanEditorComponent, decorators: [{
|
|
799
872
|
type: Component,
|
|
800
873
|
args: [{
|
|
801
874
|
selector: 'kendo-filter-boolean-editor',
|
|
875
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
802
876
|
template: `
|
|
803
877
|
<kendo-dropdownlist
|
|
804
878
|
[tabindex]="-1"
|
|
@@ -817,7 +891,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
817
891
|
standalone: true,
|
|
818
892
|
imports: [DropDownListComponent, AriaLabelValueDirective, ValueTemplateDirective, ItemTemplateDirective]
|
|
819
893
|
}]
|
|
820
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }], propDecorators: { currentItem: [{
|
|
894
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }], propDecorators: { currentItem: [{
|
|
821
895
|
type: Input
|
|
822
896
|
}], valueChange: [{
|
|
823
897
|
type: Output
|
|
@@ -828,10 +902,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
828
902
|
*/
|
|
829
903
|
class FilterNumericEditorComponent {
|
|
830
904
|
localization;
|
|
831
|
-
currentItem
|
|
832
|
-
|
|
833
|
-
|
|
905
|
+
set currentItem(value) {
|
|
906
|
+
this._currentItem.set(value);
|
|
907
|
+
}
|
|
908
|
+
get currentItem() {
|
|
909
|
+
return this._currentItem();
|
|
910
|
+
}
|
|
911
|
+
set isDisabled(value) {
|
|
912
|
+
this._isDisabled.set(value);
|
|
913
|
+
}
|
|
914
|
+
get isDisabled() {
|
|
915
|
+
return this._isDisabled();
|
|
916
|
+
}
|
|
917
|
+
set format(value) {
|
|
918
|
+
this._format.set(value);
|
|
919
|
+
}
|
|
920
|
+
get format() {
|
|
921
|
+
return this._format();
|
|
922
|
+
}
|
|
834
923
|
valueChange = new EventEmitter();
|
|
924
|
+
_currentItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
925
|
+
_isDisabled = signal(undefined, ...(ngDevMode ? [{ debugName: "_isDisabled" }] : []));
|
|
926
|
+
_format = signal(undefined, ...(ngDevMode ? [{ debugName: "_format" }] : []));
|
|
835
927
|
constructor(localization) {
|
|
836
928
|
this.localization = localization;
|
|
837
929
|
}
|
|
@@ -856,12 +948,13 @@ class FilterNumericEditorComponent {
|
|
|
856
948
|
[decrement]="messageFor('editorNumericDecrement')">
|
|
857
949
|
</kendo-numerictextbox-messages>
|
|
858
950
|
</kendo-numerictextbox>
|
|
859
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "component", type: NumericTextBoxCustomMessagesComponent, selector: "kendo-numerictextbox-messages" }] });
|
|
951
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { kind: "component", type: NumericTextBoxCustomMessagesComponent, selector: "kendo-numerictextbox-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
860
952
|
}
|
|
861
953
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterNumericEditorComponent, decorators: [{
|
|
862
954
|
type: Component,
|
|
863
955
|
args: [{
|
|
864
956
|
selector: 'kendo-filter-numeric-editor',
|
|
957
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
865
958
|
template: `
|
|
866
959
|
<kendo-numerictextbox
|
|
867
960
|
[tabindex]="-1"
|
|
@@ -894,9 +987,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
894
987
|
*/
|
|
895
988
|
class FilterTextEditorComponent {
|
|
896
989
|
localization;
|
|
897
|
-
currentItem
|
|
898
|
-
|
|
990
|
+
set currentItem(value) {
|
|
991
|
+
this._currentItem.set(value);
|
|
992
|
+
}
|
|
993
|
+
get currentItem() {
|
|
994
|
+
return this._currentItem();
|
|
995
|
+
}
|
|
996
|
+
set isDisabled(value) {
|
|
997
|
+
this._isDisabled.set(value);
|
|
998
|
+
}
|
|
999
|
+
get isDisabled() {
|
|
1000
|
+
return this._isDisabled();
|
|
1001
|
+
}
|
|
899
1002
|
valueChange = new EventEmitter();
|
|
1003
|
+
_currentItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
1004
|
+
_isDisabled = signal(undefined, ...(ngDevMode ? [{ debugName: "_isDisabled" }] : []));
|
|
900
1005
|
constructor(localization) {
|
|
901
1006
|
this.localization = localization;
|
|
902
1007
|
}
|
|
@@ -916,12 +1021,13 @@ class FilterTextEditorComponent {
|
|
|
916
1021
|
(valueChange)="onValueChange($event)"
|
|
917
1022
|
[disabled]="isDisabled">
|
|
918
1023
|
</kendo-textbox>
|
|
919
|
-
`, isInline: true, dependencies: [{ kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }] });
|
|
1024
|
+
`, isInline: true, dependencies: [{ kind: "component", type: TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
920
1025
|
}
|
|
921
1026
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterTextEditorComponent, decorators: [{
|
|
922
1027
|
type: Component,
|
|
923
1028
|
args: [{
|
|
924
1029
|
selector: 'kendo-filter-text-editor',
|
|
1030
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
925
1031
|
template: `
|
|
926
1032
|
<kendo-textbox
|
|
927
1033
|
[tabindex]="-1"
|
|
@@ -947,11 +1053,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
947
1053
|
*/
|
|
948
1054
|
class FilterExpressionOperatorsComponent {
|
|
949
1055
|
localization;
|
|
950
|
-
currentItem
|
|
951
|
-
|
|
1056
|
+
set currentItem(value) {
|
|
1057
|
+
this._currentItem.set(value);
|
|
1058
|
+
}
|
|
1059
|
+
get currentItem() {
|
|
1060
|
+
return this._currentItem();
|
|
1061
|
+
}
|
|
1062
|
+
set editorType(value) {
|
|
1063
|
+
this._editorType.set(value);
|
|
1064
|
+
}
|
|
1065
|
+
get editorType() {
|
|
1066
|
+
return this._editorType();
|
|
1067
|
+
}
|
|
952
1068
|
valueChange = new EventEmitter();
|
|
953
|
-
operators
|
|
954
|
-
|
|
1069
|
+
set operators(value) {
|
|
1070
|
+
this._operators.set(value);
|
|
1071
|
+
}
|
|
1072
|
+
get operators() {
|
|
1073
|
+
return this._operators();
|
|
1074
|
+
}
|
|
1075
|
+
set operatorTemplate(value) {
|
|
1076
|
+
this._operatorTemplate.set(value);
|
|
1077
|
+
}
|
|
1078
|
+
get operatorTemplate() {
|
|
1079
|
+
return this._operatorTemplate();
|
|
1080
|
+
}
|
|
1081
|
+
_currentItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
1082
|
+
_editorType = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorType" }] : []));
|
|
1083
|
+
_operators = signal([], ...(ngDevMode ? [{ debugName: "_operators" }] : []));
|
|
1084
|
+
_operatorTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_operatorTemplate" }] : []));
|
|
955
1085
|
constructor(localization) {
|
|
956
1086
|
this.localization = localization;
|
|
957
1087
|
}
|
|
@@ -991,12 +1121,13 @@ class FilterExpressionOperatorsComponent {
|
|
|
991
1121
|
</ng-template>
|
|
992
1122
|
</kendo-dropdownlist>
|
|
993
1123
|
}
|
|
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"] }] });
|
|
1124
|
+
`, 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
995
1125
|
}
|
|
996
1126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterExpressionOperatorsComponent, decorators: [{
|
|
997
1127
|
type: Component,
|
|
998
1128
|
args: [{
|
|
999
1129
|
selector: "kendo-filter-expression-operators",
|
|
1130
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1000
1131
|
template: `
|
|
1001
1132
|
@if (operatorTemplate) {
|
|
1002
1133
|
<ng-container
|
|
@@ -1044,23 +1175,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
1044
1175
|
*/
|
|
1045
1176
|
class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
1046
1177
|
filterService;
|
|
1178
|
+
cdr;
|
|
1047
1179
|
/**
|
|
1048
1180
|
* @hidden
|
|
1049
1181
|
*/
|
|
1050
1182
|
xIcon = xIcon;
|
|
1051
1183
|
static ngAcceptInputType_currentItem;
|
|
1052
|
-
currentItem
|
|
1053
|
-
|
|
1054
|
-
|
|
1184
|
+
set currentItem(value) {
|
|
1185
|
+
const previousField = this._currentItem()?.field;
|
|
1186
|
+
this._currentItem.set(value);
|
|
1187
|
+
if (value) {
|
|
1188
|
+
this._previousField = value.field;
|
|
1189
|
+
if (this._initialized && value.field && value.field !== previousField) {
|
|
1190
|
+
this.applyFieldChange(value.field);
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
get currentItem() {
|
|
1195
|
+
return this._currentItem();
|
|
1196
|
+
}
|
|
1197
|
+
set operators(v) {
|
|
1198
|
+
this._operators.set(v);
|
|
1199
|
+
}
|
|
1200
|
+
get operators() {
|
|
1201
|
+
return this._operators();
|
|
1202
|
+
}
|
|
1203
|
+
set isBoolean(v) {
|
|
1204
|
+
this._isBoolean.set(v);
|
|
1205
|
+
}
|
|
1206
|
+
get isBoolean() {
|
|
1207
|
+
return this._isBoolean();
|
|
1208
|
+
}
|
|
1055
1209
|
editorType;
|
|
1056
|
-
isEditorDisabled
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1210
|
+
set isEditorDisabled(v) {
|
|
1211
|
+
this._isEditorDisabled.set(v);
|
|
1212
|
+
}
|
|
1213
|
+
get isEditorDisabled() {
|
|
1214
|
+
return this._isEditorDisabled();
|
|
1215
|
+
}
|
|
1216
|
+
set editorTemplate(v) {
|
|
1217
|
+
this._editorTemplate.set(v);
|
|
1218
|
+
}
|
|
1219
|
+
get editorTemplate() {
|
|
1220
|
+
return this._editorTemplate();
|
|
1221
|
+
}
|
|
1222
|
+
set operatorTemplate(v) {
|
|
1223
|
+
this._operatorTemplate.set(v);
|
|
1224
|
+
}
|
|
1225
|
+
get operatorTemplate() {
|
|
1226
|
+
return this._operatorTemplate();
|
|
1227
|
+
}
|
|
1228
|
+
set editorFormat(v) {
|
|
1229
|
+
this._editorFormat.set(v);
|
|
1230
|
+
}
|
|
1231
|
+
get editorFormat() {
|
|
1232
|
+
return this._editorFormat();
|
|
1233
|
+
}
|
|
1060
1234
|
get availableFilters() {
|
|
1061
1235
|
return this.filterService.filters || [];
|
|
1062
1236
|
}
|
|
1063
|
-
_previousField;
|
|
1064
1237
|
get fieldTemplate() {
|
|
1065
1238
|
return this.filterService.fieldTemplate;
|
|
1066
1239
|
}
|
|
@@ -1081,6 +1254,15 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1081
1254
|
}
|
|
1082
1255
|
return this.editorFormat;
|
|
1083
1256
|
}
|
|
1257
|
+
_previousField;
|
|
1258
|
+
_initialized = false;
|
|
1259
|
+
_currentItem = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
1260
|
+
_operators = signal([], ...(ngDevMode ? [{ debugName: "_operators" }] : []));
|
|
1261
|
+
_isBoolean = signal(false, ...(ngDevMode ? [{ debugName: "_isBoolean" }] : []));
|
|
1262
|
+
_isEditorDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_isEditorDisabled" }] : []));
|
|
1263
|
+
_editorTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorTemplate" }] : []));
|
|
1264
|
+
_operatorTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_operatorTemplate" }] : []));
|
|
1265
|
+
_editorFormat = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorFormat" }] : []));
|
|
1084
1266
|
isNumberFormat(obj) {
|
|
1085
1267
|
if (isDevMode() && obj &&
|
|
1086
1268
|
(obj['currency'] ||
|
|
@@ -1103,20 +1285,17 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1103
1285
|
return false;
|
|
1104
1286
|
}
|
|
1105
1287
|
}
|
|
1106
|
-
constructor(filterService, element, navigationService, localization, renderer) {
|
|
1288
|
+
constructor(filterService, element, navigationService, localization, renderer, cdr) {
|
|
1107
1289
|
super(element, navigationService, localization, renderer);
|
|
1108
1290
|
this.filterService = filterService;
|
|
1291
|
+
this.cdr = cdr;
|
|
1109
1292
|
}
|
|
1110
1293
|
ngDoCheck() {
|
|
1111
|
-
if (this.fieldTemplate && this.currentItem
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
const previousField = this._previousField;
|
|
1117
|
-
this._previousField = this.currentItem.field;
|
|
1118
|
-
if (previousField !== undefined) {
|
|
1119
|
-
this.filterValueChange(this.currentItem.field);
|
|
1294
|
+
if (this.fieldTemplate && this.currentItem) {
|
|
1295
|
+
const currentField = this.currentItem.field;
|
|
1296
|
+
if (currentField && currentField !== this._previousField) {
|
|
1297
|
+
this._previousField = currentField;
|
|
1298
|
+
this.filterValueChange(currentField);
|
|
1120
1299
|
}
|
|
1121
1300
|
}
|
|
1122
1301
|
}
|
|
@@ -1139,6 +1318,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1139
1318
|
this.setOperators(defaultFilter);
|
|
1140
1319
|
}
|
|
1141
1320
|
this.setTemplates();
|
|
1321
|
+
this._initialized = true;
|
|
1142
1322
|
}
|
|
1143
1323
|
normalizeOperators(filterEditor, operators) {
|
|
1144
1324
|
const result = [];
|
|
@@ -1162,13 +1342,20 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1162
1342
|
filterValueChange(value) {
|
|
1163
1343
|
this.navigationService.currentToolbarItemIndex = this.itemNumber;
|
|
1164
1344
|
this.navigationService.currentToolbarItemChildrenIndex = 0;
|
|
1165
|
-
this.currentItem.value = null;
|
|
1166
1345
|
this.currentItem.field = value;
|
|
1346
|
+
this.applyFieldChange(value);
|
|
1347
|
+
this.valueChange.emit();
|
|
1348
|
+
}
|
|
1349
|
+
applyFieldChange(field) {
|
|
1350
|
+
const current = this._currentItem();
|
|
1351
|
+
current.value = null;
|
|
1352
|
+
this._currentItem.set({ ...current });
|
|
1353
|
+
this._previousField = field;
|
|
1167
1354
|
this.setTemplates();
|
|
1168
|
-
const foundFilter = this.getFilterExpressionByField(
|
|
1355
|
+
const foundFilter = this.getFilterExpressionByField(field);
|
|
1169
1356
|
this.setOperators(foundFilter);
|
|
1170
|
-
this.editorFormat = foundFilter
|
|
1171
|
-
this.
|
|
1357
|
+
this.editorFormat = foundFilter?.editorFormat;
|
|
1358
|
+
this.cdr.markForCheck();
|
|
1172
1359
|
}
|
|
1173
1360
|
getDefaultOperators(operatorsType) {
|
|
1174
1361
|
switch (operatorsType) {
|
|
@@ -1230,7 +1417,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1230
1417
|
this.editorTemplate = filterExpression?.editorTemplate;
|
|
1231
1418
|
this.operatorTemplate = filterExpression?.operatorTemplate;
|
|
1232
1419
|
}
|
|
1233
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterExpressionComponent, deps: [{ token: FilterService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
1420
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterExpressionComponent, deps: [{ token: FilterService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1234
1421
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: FilterExpressionComponent, isStandalone: true, selector: "kendo-filter-expression", inputs: { currentItem: "currentItem" }, providers: [{
|
|
1235
1422
|
provide: FilterItem,
|
|
1236
1423
|
useExisting: forwardRef(() => FilterExpressionComponent)
|
|
@@ -1307,7 +1494,7 @@ class FilterExpressionComponent extends BaseFilterRowComponent {
|
|
|
1307
1494
|
</button>
|
|
1308
1495
|
</div>
|
|
1309
1496
|
</div>
|
|
1310
|
-
`, 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"] }] });
|
|
1497
|
+
`, 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1311
1498
|
}
|
|
1312
1499
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterExpressionComponent, decorators: [{
|
|
1313
1500
|
type: Component,
|
|
@@ -1317,6 +1504,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
1317
1504
|
useExisting: forwardRef(() => FilterExpressionComponent)
|
|
1318
1505
|
}],
|
|
1319
1506
|
selector: 'kendo-filter-expression',
|
|
1507
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1320
1508
|
template: `
|
|
1321
1509
|
<div class="k-filter-toolbar">
|
|
1322
1510
|
<div class="k-toolbar" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
@@ -1394,7 +1582,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
1394
1582
|
standalone: true,
|
|
1395
1583
|
imports: [DropDownListComponent, AriaLabelValueDirective, FilterExpressionOperatorsComponent, FilterTextEditorComponent, FilterNumericEditorComponent, FilterBooleanEditorComponent, FilterDateEditorComponent, NgTemplateOutlet, ButtonComponent]
|
|
1396
1584
|
}]
|
|
1397
|
-
}], ctorParameters: () => [{ type: FilterService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }], propDecorators: { currentItem: [{
|
|
1585
|
+
}], ctorParameters: () => [{ type: FilterService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { currentItem: [{
|
|
1398
1586
|
type: Input
|
|
1399
1587
|
}] } });
|
|
1400
1588
|
|
|
@@ -1429,15 +1617,21 @@ class FilterGroupComponent extends BaseFilterRowComponent {
|
|
|
1429
1617
|
// due to tracking by index, the filters should first be set to [] so that all rerender afterwards
|
|
1430
1618
|
const filtersCopy = this.currentItem.filters;
|
|
1431
1619
|
this.currentItem.filters = [];
|
|
1432
|
-
this.cdr.detectChanges();
|
|
1620
|
+
this.cdr.detectChanges(); // Needed: forces @for track-by-index reset before restoring filters
|
|
1433
1621
|
this.currentItem.filters = filtersCopy;
|
|
1434
1622
|
}
|
|
1435
1623
|
this.valueChange.emit(isRemoveOperation);
|
|
1436
1624
|
}
|
|
1437
|
-
currentItem
|
|
1625
|
+
set currentItem(value) {
|
|
1626
|
+
this._currentItem.set(value);
|
|
1627
|
+
}
|
|
1628
|
+
get currentItem() {
|
|
1629
|
+
return this._currentItem();
|
|
1630
|
+
}
|
|
1631
|
+
_currentItem = signal({
|
|
1438
1632
|
logic: 'or',
|
|
1439
1633
|
filters: []
|
|
1440
|
-
};
|
|
1634
|
+
}, ...(ngDevMode ? [{ debugName: "_currentItem" }] : []));
|
|
1441
1635
|
/**
|
|
1442
1636
|
* @hidden
|
|
1443
1637
|
*/
|
|
@@ -1472,7 +1666,7 @@ class FilterGroupComponent extends BaseFilterRowComponent {
|
|
|
1472
1666
|
}
|
|
1473
1667
|
removeFilterGroup() {
|
|
1474
1668
|
this.filterService.remove(this.currentItem, this.index);
|
|
1475
|
-
this.cdr.detectChanges();
|
|
1669
|
+
this.cdr.detectChanges(); // Needed: re-renders template after filter structure mutation before emitting valueChange
|
|
1476
1670
|
this.valueChange.emit(true);
|
|
1477
1671
|
}
|
|
1478
1672
|
onMouseDown(event) {
|
|
@@ -1573,7 +1767,7 @@ class FilterGroupComponent extends BaseFilterRowComponent {
|
|
|
1573
1767
|
}
|
|
1574
1768
|
</ul>
|
|
1575
1769
|
}
|
|
1576
|
-
`, 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"] }] });
|
|
1770
|
+
`, 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1577
1771
|
}
|
|
1578
1772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterGroupComponent, decorators: [{
|
|
1579
1773
|
type: Component,
|
|
@@ -1583,6 +1777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
1583
1777
|
useExisting: forwardRef(() => FilterGroupComponent)
|
|
1584
1778
|
}],
|
|
1585
1779
|
selector: 'kendo-filter-group',
|
|
1780
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1586
1781
|
template: `
|
|
1587
1782
|
<div class="k-filter-toolbar">
|
|
1588
1783
|
<div class="k-toolbar" role="toolbar" [attr.aria-label]="messageFor('filterToolbarAriaLabel')" (mousedown)="onMouseDown($event)">
|
|
@@ -1678,147 +1873,327 @@ class Messages extends ComponentMessages {
|
|
|
1678
1873
|
/**
|
|
1679
1874
|
* The text of the Filter Expression `operators` drop down title.
|
|
1680
1875
|
*/
|
|
1681
|
-
filterExpressionOperators
|
|
1876
|
+
set filterExpressionOperators(value) {
|
|
1877
|
+
this._filterExpressionOperators.set(value);
|
|
1878
|
+
}
|
|
1879
|
+
get filterExpressionOperators() {
|
|
1880
|
+
return this._filterExpressionOperators();
|
|
1881
|
+
}
|
|
1682
1882
|
/**
|
|
1683
1883
|
* The text of the Filter Expression 'fields' drop down title.
|
|
1684
1884
|
*/
|
|
1685
|
-
filterExpressionFilters
|
|
1885
|
+
set filterExpressionFilters(value) {
|
|
1886
|
+
this._filterExpressionFilters.set(value);
|
|
1887
|
+
}
|
|
1888
|
+
get filterExpressionFilters() {
|
|
1889
|
+
return this._filterExpressionFilters();
|
|
1890
|
+
}
|
|
1686
1891
|
/**
|
|
1687
1892
|
* The text of the `Remove Expression` button.
|
|
1688
1893
|
*/
|
|
1689
|
-
remove
|
|
1894
|
+
set remove(value) {
|
|
1895
|
+
this._remove.set(value);
|
|
1896
|
+
}
|
|
1897
|
+
get remove() {
|
|
1898
|
+
return this._remove();
|
|
1899
|
+
}
|
|
1690
1900
|
/**
|
|
1691
1901
|
* The text of the Filter Group `Add Group` button.
|
|
1692
1902
|
*/
|
|
1693
|
-
addGroup
|
|
1903
|
+
set addGroup(value) {
|
|
1904
|
+
this._addGroup.set(value);
|
|
1905
|
+
}
|
|
1906
|
+
get addGroup() {
|
|
1907
|
+
return this._addGroup();
|
|
1908
|
+
}
|
|
1694
1909
|
/**
|
|
1695
1910
|
* The text of the Filter Group `Add Filter` button.
|
|
1696
1911
|
*/
|
|
1697
|
-
addFilter
|
|
1912
|
+
set addFilter(value) {
|
|
1913
|
+
this._addFilter.set(value);
|
|
1914
|
+
}
|
|
1915
|
+
get addFilter() {
|
|
1916
|
+
return this._addFilter();
|
|
1917
|
+
}
|
|
1698
1918
|
/**
|
|
1699
1919
|
* The text of the `And` Filter Group logic.
|
|
1700
1920
|
*/
|
|
1701
|
-
filterAndLogic
|
|
1921
|
+
set filterAndLogic(value) {
|
|
1922
|
+
this._filterAndLogic.set(value);
|
|
1923
|
+
}
|
|
1924
|
+
get filterAndLogic() {
|
|
1925
|
+
return this._filterAndLogic();
|
|
1926
|
+
}
|
|
1702
1927
|
/**
|
|
1703
1928
|
* The text of the `Or` Filter Group logic.
|
|
1704
1929
|
*/
|
|
1705
|
-
filterOrLogic
|
|
1930
|
+
set filterOrLogic(value) {
|
|
1931
|
+
this._filterOrLogic.set(value);
|
|
1932
|
+
}
|
|
1933
|
+
get filterOrLogic() {
|
|
1934
|
+
return this._filterOrLogic();
|
|
1935
|
+
}
|
|
1706
1936
|
/**
|
|
1707
1937
|
* The text of the `Equal` (**Is equal to**) Filter Expression operator.
|
|
1708
1938
|
*/
|
|
1709
|
-
filterEqOperator
|
|
1939
|
+
set filterEqOperator(value) {
|
|
1940
|
+
this._filterEqOperator.set(value);
|
|
1941
|
+
}
|
|
1942
|
+
get filterEqOperator() {
|
|
1943
|
+
return this._filterEqOperator();
|
|
1944
|
+
}
|
|
1710
1945
|
/**
|
|
1711
1946
|
* The text of the `NotEqual` (**Is not equal to**) Filter Expression operator.
|
|
1712
1947
|
*/
|
|
1713
|
-
filterNotEqOperator
|
|
1948
|
+
set filterNotEqOperator(value) {
|
|
1949
|
+
this._filterNotEqOperator.set(value);
|
|
1950
|
+
}
|
|
1951
|
+
get filterNotEqOperator() {
|
|
1952
|
+
return this._filterNotEqOperator();
|
|
1953
|
+
}
|
|
1714
1954
|
/**
|
|
1715
1955
|
* The text of the `IsNull` (**Is null**) Filter Expression operator.
|
|
1716
1956
|
*/
|
|
1717
|
-
filterIsNullOperator
|
|
1957
|
+
set filterIsNullOperator(value) {
|
|
1958
|
+
this._filterIsNullOperator.set(value);
|
|
1959
|
+
}
|
|
1960
|
+
get filterIsNullOperator() {
|
|
1961
|
+
return this._filterIsNullOperator();
|
|
1962
|
+
}
|
|
1718
1963
|
/**
|
|
1719
1964
|
* The text of the `IsNotNull` (**Is not null**) Filter Expression operator.
|
|
1720
1965
|
*/
|
|
1721
|
-
filterIsNotNullOperator
|
|
1966
|
+
set filterIsNotNullOperator(value) {
|
|
1967
|
+
this._filterIsNotNullOperator.set(value);
|
|
1968
|
+
}
|
|
1969
|
+
get filterIsNotNullOperator() {
|
|
1970
|
+
return this._filterIsNotNullOperator();
|
|
1971
|
+
}
|
|
1722
1972
|
/**
|
|
1723
1973
|
* The text of the `IsEmpty` (**Is empty**) Filter Expression operator.
|
|
1724
1974
|
*/
|
|
1725
|
-
filterIsEmptyOperator
|
|
1975
|
+
set filterIsEmptyOperator(value) {
|
|
1976
|
+
this._filterIsEmptyOperator.set(value);
|
|
1977
|
+
}
|
|
1978
|
+
get filterIsEmptyOperator() {
|
|
1979
|
+
return this._filterIsEmptyOperator();
|
|
1980
|
+
}
|
|
1726
1981
|
/**
|
|
1727
1982
|
* The text of the `IsNotEmpty` (**Is not empty**) Filter Expression operator.
|
|
1728
1983
|
*/
|
|
1729
|
-
filterIsNotEmptyOperator
|
|
1984
|
+
set filterIsNotEmptyOperator(value) {
|
|
1985
|
+
this._filterIsNotEmptyOperator.set(value);
|
|
1986
|
+
}
|
|
1987
|
+
get filterIsNotEmptyOperator() {
|
|
1988
|
+
return this._filterIsNotEmptyOperator();
|
|
1989
|
+
}
|
|
1730
1990
|
/**
|
|
1731
1991
|
* The text of the `StartsWith` (**Starts with**) Filter Expression operator.
|
|
1732
1992
|
*/
|
|
1733
|
-
filterStartsWithOperator
|
|
1993
|
+
set filterStartsWithOperator(value) {
|
|
1994
|
+
this._filterStartsWithOperator.set(value);
|
|
1995
|
+
}
|
|
1996
|
+
get filterStartsWithOperator() {
|
|
1997
|
+
return this._filterStartsWithOperator();
|
|
1998
|
+
}
|
|
1734
1999
|
/**
|
|
1735
2000
|
* The text of the `Contains` (**Contains**) Filter Expression operator.
|
|
1736
2001
|
*/
|
|
1737
|
-
filterContainsOperator
|
|
2002
|
+
set filterContainsOperator(value) {
|
|
2003
|
+
this._filterContainsOperator.set(value);
|
|
2004
|
+
}
|
|
2005
|
+
get filterContainsOperator() {
|
|
2006
|
+
return this._filterContainsOperator();
|
|
2007
|
+
}
|
|
1738
2008
|
/**
|
|
1739
2009
|
* The text of the `DoesNotContain` (**Does not contain**) Filter Expression operator.
|
|
1740
2010
|
*/
|
|
1741
|
-
filterNotContainsOperator
|
|
2011
|
+
set filterNotContainsOperator(value) {
|
|
2012
|
+
this._filterNotContainsOperator.set(value);
|
|
2013
|
+
}
|
|
2014
|
+
get filterNotContainsOperator() {
|
|
2015
|
+
return this._filterNotContainsOperator();
|
|
2016
|
+
}
|
|
1742
2017
|
/**
|
|
1743
2018
|
* The text of the `EndsWith` (**Ends with**) string Filter Expression operator.
|
|
1744
2019
|
*/
|
|
1745
|
-
filterEndsWithOperator
|
|
2020
|
+
set filterEndsWithOperator(value) {
|
|
2021
|
+
this._filterEndsWithOperator.set(value);
|
|
2022
|
+
}
|
|
2023
|
+
get filterEndsWithOperator() {
|
|
2024
|
+
return this._filterEndsWithOperator();
|
|
2025
|
+
}
|
|
1746
2026
|
/**
|
|
1747
2027
|
* The text of the `GreaterOrEqualTo` (**Is greater than or equal to**) numeric Filter Expression operator.
|
|
1748
2028
|
*/
|
|
1749
|
-
filterGteOperator
|
|
2029
|
+
set filterGteOperator(value) {
|
|
2030
|
+
this._filterGteOperator.set(value);
|
|
2031
|
+
}
|
|
2032
|
+
get filterGteOperator() {
|
|
2033
|
+
return this._filterGteOperator();
|
|
2034
|
+
}
|
|
1750
2035
|
/**
|
|
1751
2036
|
* The text of the `Greater` (**Is greater than**) numeric Filter Expression operator.
|
|
1752
2037
|
*/
|
|
1753
|
-
filterGtOperator
|
|
2038
|
+
set filterGtOperator(value) {
|
|
2039
|
+
this._filterGtOperator.set(value);
|
|
2040
|
+
}
|
|
2041
|
+
get filterGtOperator() {
|
|
2042
|
+
return this._filterGtOperator();
|
|
2043
|
+
}
|
|
1754
2044
|
/**
|
|
1755
2045
|
* The text of the `LessOrEqualTo` (**Is less than or equal to**) numeric Filter Expression operator.
|
|
1756
2046
|
*/
|
|
1757
|
-
filterLteOperator
|
|
2047
|
+
set filterLteOperator(value) {
|
|
2048
|
+
this._filterLteOperator.set(value);
|
|
2049
|
+
}
|
|
2050
|
+
get filterLteOperator() {
|
|
2051
|
+
return this._filterLteOperator();
|
|
2052
|
+
}
|
|
1758
2053
|
/**
|
|
1759
2054
|
* The text of the `Less` (**Is less than**) numeric Filter Expression operator.
|
|
1760
2055
|
*/
|
|
1761
|
-
filterLtOperator
|
|
2056
|
+
set filterLtOperator(value) {
|
|
2057
|
+
this._filterLtOperator.set(value);
|
|
2058
|
+
}
|
|
2059
|
+
get filterLtOperator() {
|
|
2060
|
+
return this._filterLtOperator();
|
|
2061
|
+
}
|
|
1762
2062
|
/**
|
|
1763
2063
|
* The text of the `IsTrue` boolean Filter Expression option.
|
|
1764
2064
|
*/
|
|
1765
|
-
filterIsTrue
|
|
2065
|
+
set filterIsTrue(value) {
|
|
2066
|
+
this._filterIsTrue.set(value);
|
|
2067
|
+
}
|
|
2068
|
+
get filterIsTrue() {
|
|
2069
|
+
return this._filterIsTrue();
|
|
2070
|
+
}
|
|
1766
2071
|
/**
|
|
1767
2072
|
* The text of the `IsFalse` boolean Filter Expression option.
|
|
1768
2073
|
*/
|
|
1769
|
-
filterIsFalse
|
|
2074
|
+
set filterIsFalse(value) {
|
|
2075
|
+
this._filterIsFalse.set(value);
|
|
2076
|
+
}
|
|
2077
|
+
get filterIsFalse() {
|
|
2078
|
+
return this._filterIsFalse();
|
|
2079
|
+
}
|
|
1770
2080
|
/**
|
|
1771
2081
|
* The text of the `(All)` boolean Filter Expression option.
|
|
1772
2082
|
*/
|
|
1773
|
-
filterBooleanAll
|
|
2083
|
+
set filterBooleanAll(value) {
|
|
2084
|
+
this._filterBooleanAll.set(value);
|
|
2085
|
+
}
|
|
2086
|
+
get filterBooleanAll() {
|
|
2087
|
+
return this._filterBooleanAll();
|
|
2088
|
+
}
|
|
1774
2089
|
/**
|
|
1775
2090
|
* The text of the `AfterOrEqualTo` (**Is after or equal to**) date Filter Expression operator.
|
|
1776
2091
|
*/
|
|
1777
|
-
filterAfterOrEqualOperator
|
|
2092
|
+
set filterAfterOrEqualOperator(value) {
|
|
2093
|
+
this._filterAfterOrEqualOperator.set(value);
|
|
2094
|
+
}
|
|
2095
|
+
get filterAfterOrEqualOperator() {
|
|
2096
|
+
return this._filterAfterOrEqualOperator();
|
|
2097
|
+
}
|
|
1778
2098
|
/**
|
|
1779
2099
|
* The text of the `After` (**Is after**) date Filter Expression operator.
|
|
1780
2100
|
*/
|
|
1781
|
-
filterAfterOperator
|
|
2101
|
+
set filterAfterOperator(value) {
|
|
2102
|
+
this._filterAfterOperator.set(value);
|
|
2103
|
+
}
|
|
2104
|
+
get filterAfterOperator() {
|
|
2105
|
+
return this._filterAfterOperator();
|
|
2106
|
+
}
|
|
1782
2107
|
/**
|
|
1783
2108
|
* The text of the `Before` (**Is before**) date Filter Expression operator.
|
|
1784
2109
|
*/
|
|
1785
|
-
filterBeforeOperator
|
|
2110
|
+
set filterBeforeOperator(value) {
|
|
2111
|
+
this._filterBeforeOperator.set(value);
|
|
2112
|
+
}
|
|
2113
|
+
get filterBeforeOperator() {
|
|
2114
|
+
return this._filterBeforeOperator();
|
|
2115
|
+
}
|
|
1786
2116
|
/**
|
|
1787
2117
|
* The text of the `BeforeOrEqualTo` (**Is before or equal to**) date Filter Expression operator.
|
|
1788
2118
|
*/
|
|
1789
|
-
filterBeforeOrEqualOperator
|
|
2119
|
+
set filterBeforeOrEqualOperator(value) {
|
|
2120
|
+
this._filterBeforeOrEqualOperator.set(value);
|
|
2121
|
+
}
|
|
2122
|
+
get filterBeforeOrEqualOperator() {
|
|
2123
|
+
return this._filterBeforeOrEqualOperator();
|
|
2124
|
+
}
|
|
1790
2125
|
/**
|
|
1791
2126
|
* The title of the Decrement button of the Filter Expression numeric editor.
|
|
1792
2127
|
*/
|
|
1793
|
-
editorNumericDecrement
|
|
2128
|
+
set editorNumericDecrement(value) {
|
|
2129
|
+
this._editorNumericDecrement.set(value);
|
|
2130
|
+
}
|
|
2131
|
+
get editorNumericDecrement() {
|
|
2132
|
+
return this._editorNumericDecrement();
|
|
2133
|
+
}
|
|
1794
2134
|
/**
|
|
1795
2135
|
* The title of the Increment button of the Filter Expression numeric editor.
|
|
1796
2136
|
*/
|
|
1797
|
-
editorNumericIncrement
|
|
2137
|
+
set editorNumericIncrement(value) {
|
|
2138
|
+
this._editorNumericIncrement.set(value);
|
|
2139
|
+
}
|
|
2140
|
+
get editorNumericIncrement() {
|
|
2141
|
+
return this._editorNumericIncrement();
|
|
2142
|
+
}
|
|
1798
2143
|
/**
|
|
1799
2144
|
* The text of the Today button of the Filter Expression date editor.
|
|
1800
2145
|
*/
|
|
1801
|
-
editorDateTodayText
|
|
2146
|
+
set editorDateTodayText(value) {
|
|
2147
|
+
this._editorDateTodayText.set(value);
|
|
2148
|
+
}
|
|
2149
|
+
get editorDateTodayText() {
|
|
2150
|
+
return this._editorDateTodayText();
|
|
2151
|
+
}
|
|
1802
2152
|
/**
|
|
1803
2153
|
* The title of the Toggle button of the Filter Expression date editor.
|
|
1804
2154
|
*/
|
|
1805
|
-
editorDateToggleText
|
|
2155
|
+
set editorDateToggleText(value) {
|
|
2156
|
+
this._editorDateToggleText.set(value);
|
|
2157
|
+
}
|
|
2158
|
+
get editorDateToggleText() {
|
|
2159
|
+
return this._editorDateToggleText();
|
|
2160
|
+
}
|
|
1806
2161
|
/**
|
|
1807
2162
|
* The text of the filter field aria label.
|
|
1808
2163
|
*/
|
|
1809
|
-
filterFieldAriaLabel
|
|
2164
|
+
set filterFieldAriaLabel(value) {
|
|
2165
|
+
this._filterFieldAriaLabel.set(value);
|
|
2166
|
+
}
|
|
2167
|
+
get filterFieldAriaLabel() {
|
|
2168
|
+
return this._filterFieldAriaLabel();
|
|
2169
|
+
}
|
|
1810
2170
|
/**
|
|
1811
2171
|
* The text of the filter operator aria label.
|
|
1812
2172
|
*/
|
|
1813
|
-
filterOperatorAriaLabel
|
|
2173
|
+
set filterOperatorAriaLabel(value) {
|
|
2174
|
+
this._filterOperatorAriaLabel.set(value);
|
|
2175
|
+
}
|
|
2176
|
+
get filterOperatorAriaLabel() {
|
|
2177
|
+
return this._filterOperatorAriaLabel();
|
|
2178
|
+
}
|
|
1814
2179
|
/**
|
|
1815
2180
|
* The text of the filter value aria label.
|
|
1816
2181
|
*/
|
|
1817
|
-
filterValueAriaLabel
|
|
2182
|
+
set filterValueAriaLabel(value) {
|
|
2183
|
+
this._filterValueAriaLabel.set(value);
|
|
2184
|
+
}
|
|
2185
|
+
get filterValueAriaLabel() {
|
|
2186
|
+
return this._filterValueAriaLabel();
|
|
2187
|
+
}
|
|
1818
2188
|
/**
|
|
1819
2189
|
* The text of the filter row aria label.
|
|
1820
2190
|
*/
|
|
1821
|
-
filterToolbarAriaLabel
|
|
2191
|
+
set filterToolbarAriaLabel(value) {
|
|
2192
|
+
this._filterToolbarAriaLabel.set(value);
|
|
2193
|
+
}
|
|
2194
|
+
get filterToolbarAriaLabel() {
|
|
2195
|
+
return this._filterToolbarAriaLabel();
|
|
2196
|
+
}
|
|
1822
2197
|
/**
|
|
1823
2198
|
* The text of the Remove Group button.
|
|
1824
2199
|
*/
|
|
@@ -1826,7 +2201,49 @@ class Messages extends ComponentMessages {
|
|
|
1826
2201
|
/**
|
|
1827
2202
|
* The text of the filter toolbar aria label.
|
|
1828
2203
|
*/
|
|
1829
|
-
filterComponentAriaLabel
|
|
2204
|
+
set filterComponentAriaLabel(value) {
|
|
2205
|
+
this._filterComponentAriaLabel.set(value);
|
|
2206
|
+
}
|
|
2207
|
+
get filterComponentAriaLabel() {
|
|
2208
|
+
return this._filterComponentAriaLabel();
|
|
2209
|
+
}
|
|
2210
|
+
_filterExpressionOperators = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterExpressionOperators" }] : []));
|
|
2211
|
+
_filterExpressionFilters = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterExpressionFilters" }] : []));
|
|
2212
|
+
_remove = signal(undefined, ...(ngDevMode ? [{ debugName: "_remove" }] : []));
|
|
2213
|
+
_addGroup = signal(undefined, ...(ngDevMode ? [{ debugName: "_addGroup" }] : []));
|
|
2214
|
+
_addFilter = signal(undefined, ...(ngDevMode ? [{ debugName: "_addFilter" }] : []));
|
|
2215
|
+
_filterAndLogic = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterAndLogic" }] : []));
|
|
2216
|
+
_filterOrLogic = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterOrLogic" }] : []));
|
|
2217
|
+
_filterEqOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterEqOperator" }] : []));
|
|
2218
|
+
_filterNotEqOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterNotEqOperator" }] : []));
|
|
2219
|
+
_filterIsNullOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterIsNullOperator" }] : []));
|
|
2220
|
+
_filterIsNotNullOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterIsNotNullOperator" }] : []));
|
|
2221
|
+
_filterIsEmptyOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterIsEmptyOperator" }] : []));
|
|
2222
|
+
_filterIsNotEmptyOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterIsNotEmptyOperator" }] : []));
|
|
2223
|
+
_filterStartsWithOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterStartsWithOperator" }] : []));
|
|
2224
|
+
_filterContainsOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterContainsOperator" }] : []));
|
|
2225
|
+
_filterNotContainsOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterNotContainsOperator" }] : []));
|
|
2226
|
+
_filterEndsWithOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterEndsWithOperator" }] : []));
|
|
2227
|
+
_filterGteOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterGteOperator" }] : []));
|
|
2228
|
+
_filterGtOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterGtOperator" }] : []));
|
|
2229
|
+
_filterLteOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterLteOperator" }] : []));
|
|
2230
|
+
_filterLtOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterLtOperator" }] : []));
|
|
2231
|
+
_filterIsTrue = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterIsTrue" }] : []));
|
|
2232
|
+
_filterIsFalse = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterIsFalse" }] : []));
|
|
2233
|
+
_filterBooleanAll = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterBooleanAll" }] : []));
|
|
2234
|
+
_filterAfterOrEqualOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterAfterOrEqualOperator" }] : []));
|
|
2235
|
+
_filterAfterOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterAfterOperator" }] : []));
|
|
2236
|
+
_filterBeforeOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterBeforeOperator" }] : []));
|
|
2237
|
+
_filterBeforeOrEqualOperator = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterBeforeOrEqualOperator" }] : []));
|
|
2238
|
+
_editorNumericDecrement = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorNumericDecrement" }] : []));
|
|
2239
|
+
_editorNumericIncrement = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorNumericIncrement" }] : []));
|
|
2240
|
+
_editorDateTodayText = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorDateTodayText" }] : []));
|
|
2241
|
+
_editorDateToggleText = signal(undefined, ...(ngDevMode ? [{ debugName: "_editorDateToggleText" }] : []));
|
|
2242
|
+
_filterFieldAriaLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterFieldAriaLabel" }] : []));
|
|
2243
|
+
_filterOperatorAriaLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterOperatorAriaLabel" }] : []));
|
|
2244
|
+
_filterValueAriaLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterValueAriaLabel" }] : []));
|
|
2245
|
+
_filterToolbarAriaLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterToolbarAriaLabel" }] : []));
|
|
2246
|
+
_filterComponentAriaLabel = signal(undefined, ...(ngDevMode ? [{ debugName: "_filterComponentAriaLabel" }] : []));
|
|
1830
2247
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1831
2248
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: Messages, isStandalone: true, selector: "[kendoFilterMessages]", inputs: { filterExpressionOperators: "filterExpressionOperators", filterExpressionFilters: "filterExpressionFilters", remove: "remove", addGroup: "addGroup", addFilter: "addFilter", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", editorNumericDecrement: "editorNumericDecrement", editorNumericIncrement: "editorNumericIncrement", editorDateTodayText: "editorDateTodayText", editorDateToggleText: "editorDateToggleText", filterFieldAriaLabel: "filterFieldAriaLabel", filterOperatorAriaLabel: "filterOperatorAriaLabel", filterValueAriaLabel: "filterValueAriaLabel", filterToolbarAriaLabel: "filterToolbarAriaLabel", removeGroup: "removeGroup", filterComponentAriaLabel: "filterComponentAriaLabel" }, usesInheritance: true, ngImport: i0 });
|
|
1832
2249
|
}
|
|
@@ -2069,18 +2486,20 @@ class FilterComponent {
|
|
|
2069
2486
|
*/
|
|
2070
2487
|
set filters(_filters) {
|
|
2071
2488
|
if (_filters.length > 0) {
|
|
2072
|
-
|
|
2489
|
+
const mapped = _filters.map(filterExpression => {
|
|
2073
2490
|
const clonedFilter = Object.assign({}, filterExpression);
|
|
2074
2491
|
if (!clonedFilter.title) {
|
|
2075
2492
|
clonedFilter.title = clonedFilter.field;
|
|
2076
2493
|
}
|
|
2077
2494
|
return clonedFilter;
|
|
2078
2495
|
});
|
|
2496
|
+
this._filters.set(mapped);
|
|
2497
|
+
this.filterService.filters = this._filters();
|
|
2079
2498
|
this.setValue(this.value);
|
|
2080
2499
|
}
|
|
2081
2500
|
}
|
|
2082
2501
|
get filters() {
|
|
2083
|
-
return this.
|
|
2502
|
+
return this._filters();
|
|
2084
2503
|
}
|
|
2085
2504
|
/**
|
|
2086
2505
|
* Sets the initial `value` of the Filter component.
|
|
@@ -2088,17 +2507,17 @@ class FilterComponent {
|
|
|
2088
2507
|
set value(value) {
|
|
2089
2508
|
const clonedValue = structuredClone(value);
|
|
2090
2509
|
if (this.filtersTypeChanged(this.value, clonedValue)) {
|
|
2091
|
-
//
|
|
2092
|
-
this.
|
|
2093
|
-
this.cdr.detectChanges();
|
|
2510
|
+
// Resets @for track-by-index so Angular destroys+recreates child components before restoring filters
|
|
2511
|
+
this._currentFilter.set({ ...this._currentFilter(), filters: [] });
|
|
2512
|
+
this.cdr.detectChanges(); // Needed: forces @for track-by-index reset before restoring filters
|
|
2094
2513
|
}
|
|
2095
|
-
this._value
|
|
2514
|
+
this._value.set(clonedValue);
|
|
2096
2515
|
if (this.filters.length > 0) {
|
|
2097
|
-
this.setValue(this.
|
|
2516
|
+
this.setValue(this._value());
|
|
2098
2517
|
}
|
|
2099
2518
|
}
|
|
2100
2519
|
get value() {
|
|
2101
|
-
return this._value;
|
|
2520
|
+
return this._value();
|
|
2102
2521
|
}
|
|
2103
2522
|
/**
|
|
2104
2523
|
* Fires every time the Filter component value is updated.
|
|
@@ -2107,7 +2526,8 @@ class FilterComponent {
|
|
|
2107
2526
|
valueChange = new EventEmitter();
|
|
2108
2527
|
localizationSubscription;
|
|
2109
2528
|
filterFieldsSubscription;
|
|
2110
|
-
_value = { filters: [], logic: 'and' };
|
|
2529
|
+
_value = signal({ filters: [], logic: 'and' }, ...(ngDevMode ? [{ debugName: "_value" }] : []));
|
|
2530
|
+
_filters = signal([], ...(ngDevMode ? [{ debugName: "_filters" }] : []));
|
|
2111
2531
|
filterFields;
|
|
2112
2532
|
fieldTemplate;
|
|
2113
2533
|
_filterItems;
|
|
@@ -2130,7 +2550,7 @@ class FilterComponent {
|
|
|
2130
2550
|
ngOnInit() {
|
|
2131
2551
|
this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => {
|
|
2132
2552
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
2133
|
-
this.cdr.
|
|
2553
|
+
this.cdr.markForCheck();
|
|
2134
2554
|
});
|
|
2135
2555
|
}
|
|
2136
2556
|
ngAfterContentInit() {
|
|
@@ -2151,8 +2571,11 @@ class FilterComponent {
|
|
|
2151
2571
|
filterFieldsChanged() {
|
|
2152
2572
|
if (this.filterFields && this.filterFields.length > 0) {
|
|
2153
2573
|
this.filters = this.filterFields.map((filterField) => ({
|
|
2154
|
-
|
|
2155
|
-
title: filterField.title,
|
|
2574
|
+
field: filterField.field,
|
|
2575
|
+
title: filterField.title || filterField.field,
|
|
2576
|
+
editor: filterField.editor,
|
|
2577
|
+
operators: filterField.operators,
|
|
2578
|
+
editorFormat: filterField.editorFormat,
|
|
2156
2579
|
editorTemplate: filterField.editorTemplate?.templateRef,
|
|
2157
2580
|
operatorTemplate: filterField.operatorTemplate?.templateRef
|
|
2158
2581
|
}));
|
|
@@ -2167,24 +2590,24 @@ class FilterComponent {
|
|
|
2167
2590
|
this.renderer.setAttribute(firstElement, 'tabindex', '0');
|
|
2168
2591
|
}
|
|
2169
2592
|
}
|
|
2170
|
-
_currentFilter = { logic: 'and', filters: [] };
|
|
2593
|
+
_currentFilter = signal({ logic: 'and', filters: [] }, ...(ngDevMode ? [{ debugName: "_currentFilter" }] : []));
|
|
2171
2594
|
/**
|
|
2172
2595
|
* @hidden
|
|
2173
2596
|
*/
|
|
2174
2597
|
get currentFilter() {
|
|
2175
|
-
return this._currentFilter;
|
|
2598
|
+
return this._currentFilter();
|
|
2176
2599
|
}
|
|
2177
2600
|
/**
|
|
2178
2601
|
* @hidden
|
|
2179
2602
|
*/
|
|
2180
2603
|
set currentFilter(value) {
|
|
2181
|
-
this._currentFilter
|
|
2604
|
+
this._currentFilter.set(value);
|
|
2182
2605
|
}
|
|
2183
2606
|
/**
|
|
2184
2607
|
* @hidden
|
|
2185
2608
|
*/
|
|
2186
2609
|
onValueChange(isRemoveOperation) {
|
|
2187
|
-
this.cdr.detectChanges();
|
|
2610
|
+
this.cdr.detectChanges(); // Needed: re-renders template with mutated filter structure (plain object mutation, not signal)
|
|
2188
2611
|
this.valueChange.emit(this.filterService.normalizedValue);
|
|
2189
2612
|
this.navigationService.reset(this.filterItems);
|
|
2190
2613
|
if (isRemoveOperation) {
|
|
@@ -2232,7 +2655,7 @@ class FilterComponent {
|
|
|
2232
2655
|
this.normalizeValue(items);
|
|
2233
2656
|
this.filterService.normalizedValue = items;
|
|
2234
2657
|
this.currentFilter = items;
|
|
2235
|
-
this.cdr.detectChanges();
|
|
2658
|
+
this.cdr.detectChanges(); // Needed: populates filterItems ViewChildren synchronously before reset() reads them
|
|
2236
2659
|
this.navigationService.reset(this.filterItems);
|
|
2237
2660
|
}
|
|
2238
2661
|
normalizeValue(items) {
|
|
@@ -2415,7 +2838,7 @@ class FilterComponent {
|
|
|
2415
2838
|
</li>
|
|
2416
2839
|
</ul>
|
|
2417
2840
|
</div>
|
|
2418
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoFilterLocalizedMessages]" }, { kind: "component", type: FilterGroupComponent, selector: "kendo-filter-group", inputs: ["currentItem"] }] });
|
|
2841
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoFilterLocalizedMessages]" }, { kind: "component", type: FilterGroupComponent, selector: "kendo-filter-group", inputs: ["currentItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2419
2842
|
}
|
|
2420
2843
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: FilterComponent, decorators: [{
|
|
2421
2844
|
type: Component,
|
|
@@ -2560,6 +2983,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
2560
2983
|
</ul>
|
|
2561
2984
|
</div>
|
|
2562
2985
|
`,
|
|
2986
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2563
2987
|
standalone: true,
|
|
2564
2988
|
imports: [LocalizedMessagesDirective, FilterGroupComponent]
|
|
2565
2989
|
}]
|
|
@@ -2624,7 +3048,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
2624
3048
|
],
|
|
2625
3049
|
selector: 'kendo-filter-messages',
|
|
2626
3050
|
template: ``,
|
|
2627
|
-
standalone: true
|
|
3051
|
+
standalone: true,
|
|
2628
3052
|
}]
|
|
2629
3053
|
}], ctorParameters: () => [{ type: i1.LocalizationService }] });
|
|
2630
3054
|
|