@progress/kendo-angular-grid 21.1.1-develop.2 → 21.2.0-develop.2
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/esm2022/adaptiveness/adaptive-renderer.component.mjs +850 -756
- package/esm2022/aggregates/status-bar.component.mjs +13 -11
- package/esm2022/column-menu/column-chooser-content.component.mjs +133 -123
- package/esm2022/column-menu/column-list.component.mjs +62 -59
- package/esm2022/column-menu/column-menu-autosize-all.component.mjs +12 -11
- package/esm2022/column-menu/column-menu-autosize.component.mjs +12 -11
- package/esm2022/column-menu/column-menu-item.component.mjs +221 -85
- package/esm2022/column-menu/column-menu-position.component.mjs +46 -43
- package/esm2022/column-menu/column-menu.component.mjs +401 -315
- package/esm2022/editing/add-command.directive.mjs +27 -17
- package/esm2022/editing/cancel-command.directive.mjs +27 -17
- package/esm2022/editing/edit-command.directive.mjs +27 -17
- package/esm2022/editing/form/form-formfield.component.mjs +97 -70
- package/esm2022/editing/form/form.component.mjs +77 -61
- package/esm2022/editing/remove-command.directive.mjs +27 -17
- package/esm2022/editing/save-command.directive.mjs +27 -17
- package/esm2022/excel/excel-command.directive.mjs +27 -17
- package/esm2022/filtering/cell/filter-cell-operators.component.mjs +20 -17
- package/esm2022/filtering/cell/filter-cell.component.mjs +35 -33
- package/esm2022/filtering/filter-row.component.mjs +37 -29
- package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +34 -31
- package/esm2022/filtering/menu/date-filter-menu.component.mjs +52 -49
- package/esm2022/filtering/menu/filter-menu-container.component.mjs +97 -89
- package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +50 -47
- package/esm2022/filtering/menu/string-filter-menu.component.mjs +36 -33
- package/esm2022/filtering/multicheckbox-filter.component.mjs +54 -43
- package/esm2022/grid.component.mjs +1579 -1483
- package/esm2022/grouping/group-header.component.mjs +113 -89
- package/esm2022/grouping/group-panel.component.mjs +82 -75
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pdf/pdf-command.directive.mjs +27 -17
- package/esm2022/rendering/cell.component.mjs +411 -365
- package/esm2022/rendering/common/col-group.component.mjs +25 -15
- package/esm2022/rendering/common/loading.component.mjs +23 -19
- package/esm2022/rendering/details/detail-template.directive.mjs +6 -4
- package/esm2022/rendering/footer/footer.component.mjs +128 -112
- package/esm2022/rendering/header/header.component.mjs +412 -351
- package/esm2022/rendering/list.component.mjs +225 -202
- package/esm2022/rendering/table-body.component.mjs +553 -493
- package/esm2022/rendering/toolbar/toolbar.component.mjs +13 -11
- package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +86 -79
- package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +54 -51
- package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +138 -115
- package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +72 -65
- package/fesm2022/progress-kendo-angular-grid.mjs +6426 -5525
- package/package.json +24 -24
- package/rendering/details/detail-template.directive.d.ts +6 -4
- package/schematics/ngAdd/index.js +7 -7
|
@@ -8,7 +8,7 @@ import { DetailTemplateDirective } from '../rendering/details/detail-template.di
|
|
|
8
8
|
import { ContextService } from '../common/provider.service';
|
|
9
9
|
import { LogicalCellDirective } from '../navigation/logical-cell.directive';
|
|
10
10
|
import { FilterCellComponent } from './cell/filter-cell.component';
|
|
11
|
-
import {
|
|
11
|
+
import { NgStyle, NgClass } from '@angular/common';
|
|
12
12
|
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "../common/provider.service";
|
|
@@ -47,63 +47,71 @@ export class FilterRowComponent {
|
|
|
47
47
|
return this.ctx.grid?.isStacked;
|
|
48
48
|
}
|
|
49
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterRowComponent, deps: [{ token: i1.ContextService }, { token: i2.ColumnInfoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
51
|
-
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterRowComponent, isStandalone: true, selector: "[kendoGridFilterRow]", inputs: { columns: "columns", filter: "filter", groups: "groups", detailTemplate: "detailTemplate", logicalRowIndex: "logicalRowIndex", lockedColumnsCount: "lockedColumnsCount" }, host: { properties: { "class.k-filter-row": "this.filterRowClass" } }, ngImport: i0, template: `
|
|
51
|
+
@for (g of groups; track g) {
|
|
52
|
+
<td
|
|
52
53
|
class="k-table-td k-group-cell k-table-group-td"
|
|
53
|
-
*ngFor="let g of groups"
|
|
54
54
|
role="presentation">
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
</td>
|
|
56
|
+
}
|
|
57
|
+
@if (detailTemplate?.templateRef && !isStacked) {
|
|
58
|
+
<td
|
|
57
59
|
class="k-table-td k-hierarchy-cell"
|
|
58
|
-
*ngIf="detailTemplate?.templateRef && !isStacked"
|
|
59
60
|
role="presentation">
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
</td>
|
|
62
|
+
}
|
|
63
|
+
@for (column of columns; track column; let columnIndex = $index) {
|
|
64
|
+
<td
|
|
62
65
|
class="k-table-td"
|
|
63
66
|
[class.k-grid-header-sticky]="column.sticky"
|
|
64
67
|
[ngStyle]="addStickyStyles(column)"
|
|
65
68
|
[ngClass]="column.filterClass"
|
|
66
69
|
[attr.aria-label]="filterLabel($any(column))"
|
|
67
70
|
kendoGridFilterCell
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
[column]="$any(column)"
|
|
72
|
+
[filter]="filter"
|
|
70
73
|
kendoGridLogicalCell
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
[logicalRowIndex]="logicalRowIndex"
|
|
75
|
+
[logicalColIndex]="getLogicalColIndex(columnIndex)"
|
|
76
|
+
></td>
|
|
77
|
+
}
|
|
78
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FilterCellComponent, selector: "[kendoGridFilterCell]", inputs: ["column", "filter", "size"] }, { kind: "directive", type: LogicalCellDirective, selector: "[kendoGridLogicalCell]", inputs: ["logicalColIndex", "logicalRowIndex", "logicalSlaveCell", "colIndex", "colSpan", "rowSpan", "groupItem", "dataRowIndex", "dataItem", "detailExpandCell", "headerLabelText"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
75
79
|
}
|
|
76
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterRowComponent, decorators: [{
|
|
77
81
|
type: Component,
|
|
78
82
|
args: [{
|
|
79
83
|
selector: '[kendoGridFilterRow]',
|
|
80
84
|
template: `
|
|
81
|
-
|
|
85
|
+
@for (g of groups; track g) {
|
|
86
|
+
<td
|
|
82
87
|
class="k-table-td k-group-cell k-table-group-td"
|
|
83
|
-
*ngFor="let g of groups"
|
|
84
88
|
role="presentation">
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
</td>
|
|
90
|
+
}
|
|
91
|
+
@if (detailTemplate?.templateRef && !isStacked) {
|
|
92
|
+
<td
|
|
87
93
|
class="k-table-td k-hierarchy-cell"
|
|
88
|
-
*ngIf="detailTemplate?.templateRef && !isStacked"
|
|
89
94
|
role="presentation">
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
</td>
|
|
96
|
+
}
|
|
97
|
+
@for (column of columns; track column; let columnIndex = $index) {
|
|
98
|
+
<td
|
|
92
99
|
class="k-table-td"
|
|
93
100
|
[class.k-grid-header-sticky]="column.sticky"
|
|
94
101
|
[ngStyle]="addStickyStyles(column)"
|
|
95
102
|
[ngClass]="column.filterClass"
|
|
96
103
|
[attr.aria-label]="filterLabel($any(column))"
|
|
97
104
|
kendoGridFilterCell
|
|
98
|
-
|
|
99
|
-
|
|
105
|
+
[column]="$any(column)"
|
|
106
|
+
[filter]="filter"
|
|
100
107
|
kendoGridLogicalCell
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
108
|
+
[logicalRowIndex]="logicalRowIndex"
|
|
109
|
+
[logicalColIndex]="getLogicalColIndex(columnIndex)"
|
|
110
|
+
></td>
|
|
111
|
+
}
|
|
112
|
+
`,
|
|
105
113
|
standalone: true,
|
|
106
|
-
imports: [
|
|
114
|
+
imports: [FilterCellComponent, LogicalCellDirective, NgStyle, NgClass]
|
|
107
115
|
}]
|
|
108
116
|
}], ctorParameters: () => [{ type: i1.ContextService }, { type: i2.ColumnInfoService }], propDecorators: { columns: [{
|
|
109
117
|
type: Input
|
|
@@ -9,7 +9,6 @@ import { guid, replaceMessagePlaceholder } from '@progress/kendo-angular-common'
|
|
|
9
9
|
import { BooleanFilterRadioButtonDirective } from './filter-radio-button.directive';
|
|
10
10
|
import { MenuTabbingService } from './menu-tabbing.service';
|
|
11
11
|
import { ContextService } from '../../common/provider.service';
|
|
12
|
-
import { NgFor } from '@angular/common';
|
|
13
12
|
import { RadioButtonComponent } from '@progress/kendo-angular-inputs';
|
|
14
13
|
import * as i0 from "@angular/core";
|
|
15
14
|
import * as i1 from "../../common/provider.service";
|
|
@@ -105,24 +104,26 @@ export class BooleanFilterMenuComponent extends BooleanFilterComponent {
|
|
|
105
104
|
return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);
|
|
106
105
|
}
|
|
107
106
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BooleanFilterMenuComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BooleanFilterMenuComponent, isStandalone: true, selector: "kendo-grid-boolean-filter-menu", inputs: { filter: "filter", filterService: "filterService", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, viewQueries: [{ propertyName: "radioButtons", predicate: BooleanFilterRadioButtonDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
109
108
|
<ul class="k-radio-list k-reset">
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
109
|
+
@for (item of items; track item) {
|
|
110
|
+
<li>
|
|
111
|
+
<kendo-radiobutton
|
|
112
|
+
kendoFilterMenuRadioButton
|
|
113
|
+
[columnLabel]="columnLabel"
|
|
114
|
+
#input
|
|
115
|
+
[size]="ctx.grid?.isActionSheetExpanded ? 'large' : null"
|
|
116
|
+
[name]="idPrefix"
|
|
117
|
+
[checked]="isSelected(item.value)"
|
|
118
|
+
[attr.id]="radioId(item.value)"
|
|
119
|
+
(change)="onChange(item.value, input)"
|
|
120
|
+
(keydown.shift.tab)="onShiftTab($event)"
|
|
121
|
+
></kendo-radiobutton>
|
|
122
|
+
<label class="k-radio-label" [attr.for]="input.focusableId">{{item.text}}</label>
|
|
123
123
|
</li>
|
|
124
|
+
}
|
|
124
125
|
</ul>
|
|
125
|
-
|
|
126
|
+
`, isInline: true, dependencies: [{ kind: "component", type: RadioButtonComponent, selector: "kendo-radiobutton", inputs: ["checked"], outputs: ["checkedChange"], exportAs: ["kendoRadioButton"] }, { kind: "directive", type: BooleanFilterRadioButtonDirective, selector: "[kendoFilterMenuRadioButton]", inputs: ["columnLabel"] }] });
|
|
126
127
|
}
|
|
127
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BooleanFilterMenuComponent, decorators: [{
|
|
128
129
|
type: Component,
|
|
@@ -130,24 +131,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
130
131
|
selector: 'kendo-grid-boolean-filter-menu',
|
|
131
132
|
template: `
|
|
132
133
|
<ul class="k-radio-list k-reset">
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
134
|
+
@for (item of items; track item) {
|
|
135
|
+
<li>
|
|
136
|
+
<kendo-radiobutton
|
|
137
|
+
kendoFilterMenuRadioButton
|
|
138
|
+
[columnLabel]="columnLabel"
|
|
139
|
+
#input
|
|
140
|
+
[size]="ctx.grid?.isActionSheetExpanded ? 'large' : null"
|
|
141
|
+
[name]="idPrefix"
|
|
142
|
+
[checked]="isSelected(item.value)"
|
|
143
|
+
[attr.id]="radioId(item.value)"
|
|
144
|
+
(change)="onChange(item.value, input)"
|
|
145
|
+
(keydown.shift.tab)="onShiftTab($event)"
|
|
146
|
+
></kendo-radiobutton>
|
|
147
|
+
<label class="k-radio-label" [attr.for]="input.focusableId">{{item.text}}</label>
|
|
146
148
|
</li>
|
|
149
|
+
}
|
|
147
150
|
</ul>
|
|
148
|
-
|
|
151
|
+
`,
|
|
149
152
|
standalone: true,
|
|
150
|
-
imports: [
|
|
153
|
+
imports: [RadioButtonComponent, BooleanFilterRadioButtonDirective]
|
|
151
154
|
}]
|
|
152
155
|
}], ctorParameters: () => [{ type: i1.ContextService }], propDecorators: { hostClasses: [{
|
|
153
156
|
type: HostBinding,
|
|
@@ -9,7 +9,6 @@ import { DateFilterComponent } from '../date-filter.component';
|
|
|
9
9
|
import { setFilter, logicOperators } from '../base-filter-cell.component';
|
|
10
10
|
import { ContextService } from '../../common/provider.service';
|
|
11
11
|
import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
|
|
12
|
-
import { NgIf } from '@angular/common';
|
|
13
12
|
import { DateFilterMenuInputComponent } from './date-filter-menu-input.component';
|
|
14
13
|
import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
|
|
15
14
|
import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
|
|
@@ -81,27 +80,27 @@ export class DateFilterMenuComponent extends DateFilterComponent {
|
|
|
81
80
|
super.localizationChange();
|
|
82
81
|
}
|
|
83
82
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateFilterMenuComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
83
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DateFilterMenuComponent, isStandalone: true, selector: "kendo-grid-date-filter-menu", inputs: { filter: "filter", extra: "extra", filterService: "filterService", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: `
|
|
85
84
|
<kendo-grid-date-filter-menu-input
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
85
|
+
[currentFilter]="firstFilter"
|
|
86
|
+
[operators]="operators"
|
|
87
|
+
[filterService]="filterService"
|
|
88
|
+
[column]="column"
|
|
89
|
+
[filter]="filter"
|
|
90
|
+
[activeView]="activeView"
|
|
91
|
+
[bottomView]="bottomView"
|
|
92
|
+
[topView]="topView"
|
|
93
|
+
[format]="format"
|
|
94
|
+
[formatPlaceholder]="formatPlaceholder"
|
|
95
|
+
[placeholder]="placeholder"
|
|
96
|
+
[min]="min"
|
|
97
|
+
[max]="max"
|
|
98
|
+
[weekNumber]="weekNumber"
|
|
99
|
+
[isFirstDropDown]="true"
|
|
100
|
+
[menuTabbingService]="menuTabbingService">
|
|
102
101
|
</kendo-grid-date-filter-menu-input>
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
@if (extra) {
|
|
103
|
+
<kendo-dropdownlist
|
|
105
104
|
kendoFilterMenuDropDown
|
|
106
105
|
[adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
|
|
107
106
|
[adaptiveMode]="ctx.grid?.adaptiveMode"
|
|
@@ -114,9 +113,10 @@ export class DateFilterMenuComponent extends DateFilterComponent {
|
|
|
114
113
|
[value]="filter?.logic"
|
|
115
114
|
textField="text"
|
|
116
115
|
valueField="value">
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
</kendo-dropdownlist>
|
|
117
|
+
}
|
|
118
|
+
@if (extra) {
|
|
119
|
+
<kendo-grid-date-filter-menu-input
|
|
120
120
|
[operators]="operators"
|
|
121
121
|
[currentFilter]="secondFilter"
|
|
122
122
|
[filterService]="filterService"
|
|
@@ -132,8 +132,9 @@ export class DateFilterMenuComponent extends DateFilterComponent {
|
|
|
132
132
|
[max]="max"
|
|
133
133
|
[weekNumber]="weekNumber"
|
|
134
134
|
[menuTabbingService]="menuTabbingService">
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
</kendo-grid-date-filter-menu-input>
|
|
136
|
+
}
|
|
137
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DateFilterMenuInputComponent, selector: "kendo-grid-date-filter-menu-input", inputs: ["operators", "column", "filter", "operator", "currentFilter", "filterService", "menuTabbingService", "format", "formatPlaceholder", "placeholder", "min", "max", "activeView", "bottomView", "topView", "weekNumber", "isFirstDropDown"] }, { 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: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: ["filterMenuDropDownLabel"] }] });
|
|
137
138
|
}
|
|
138
139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateFilterMenuComponent, decorators: [{
|
|
139
140
|
type: Component,
|
|
@@ -141,25 +142,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
141
142
|
selector: 'kendo-grid-date-filter-menu',
|
|
142
143
|
template: `
|
|
143
144
|
<kendo-grid-date-filter-menu-input
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
145
|
+
[currentFilter]="firstFilter"
|
|
146
|
+
[operators]="operators"
|
|
147
|
+
[filterService]="filterService"
|
|
148
|
+
[column]="column"
|
|
149
|
+
[filter]="filter"
|
|
150
|
+
[activeView]="activeView"
|
|
151
|
+
[bottomView]="bottomView"
|
|
152
|
+
[topView]="topView"
|
|
153
|
+
[format]="format"
|
|
154
|
+
[formatPlaceholder]="formatPlaceholder"
|
|
155
|
+
[placeholder]="placeholder"
|
|
156
|
+
[min]="min"
|
|
157
|
+
[max]="max"
|
|
158
|
+
[weekNumber]="weekNumber"
|
|
159
|
+
[isFirstDropDown]="true"
|
|
160
|
+
[menuTabbingService]="menuTabbingService">
|
|
160
161
|
</kendo-grid-date-filter-menu-input>
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
@if (extra) {
|
|
163
|
+
<kendo-dropdownlist
|
|
163
164
|
kendoFilterMenuDropDown
|
|
164
165
|
[adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
|
|
165
166
|
[adaptiveMode]="ctx.grid?.adaptiveMode"
|
|
@@ -172,9 +173,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
172
173
|
[value]="filter?.logic"
|
|
173
174
|
textField="text"
|
|
174
175
|
valueField="value">
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
</kendo-dropdownlist>
|
|
177
|
+
}
|
|
178
|
+
@if (extra) {
|
|
179
|
+
<kendo-grid-date-filter-menu-input
|
|
178
180
|
[operators]="operators"
|
|
179
181
|
[currentFilter]="secondFilter"
|
|
180
182
|
[filterService]="filterService"
|
|
@@ -190,10 +192,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
190
192
|
[max]="max"
|
|
191
193
|
[weekNumber]="weekNumber"
|
|
192
194
|
[menuTabbingService]="menuTabbingService">
|
|
193
|
-
|
|
194
|
-
|
|
195
|
+
</kendo-grid-date-filter-menu-input>
|
|
196
|
+
}
|
|
197
|
+
`,
|
|
195
198
|
standalone: true,
|
|
196
|
-
imports: [DateFilterMenuInputComponent,
|
|
199
|
+
imports: [DateFilterMenuInputComponent, DropDownListComponent, FilterMenuDropDownListDirective]
|
|
197
200
|
}]
|
|
198
201
|
}], ctorParameters: () => [{ type: i1.ContextService }], propDecorators: { hostClasses: [{
|
|
199
202
|
type: HostBinding,
|
|
@@ -11,7 +11,7 @@ import { isPresent, isNullOrEmptyString } from "../../utils";
|
|
|
11
11
|
import { cloneFilters } from '../../common/filter-descriptor-differ';
|
|
12
12
|
import { ContextService } from '../../common/provider.service';
|
|
13
13
|
import { FilterMenuHostDirective } from './filter-menu-host.directive';
|
|
14
|
-
import {
|
|
14
|
+
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
15
15
|
import { FormsModule } from '@angular/forms';
|
|
16
16
|
import { AdaptiveGridService } from '../../common/adaptiveness.service';
|
|
17
17
|
import { MultiCheckboxFilterComponent } from '../multicheckbox-filter.component';
|
|
@@ -266,55 +266,59 @@ export class FilterMenuContainerComponent {
|
|
|
266
266
|
return eq(checkboxFilter, gridFilter);
|
|
267
267
|
}
|
|
268
268
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: i1.FilterService, skipSelf: true }, { token: i1.FilterService }, { token: i2.ContextService }, { token: i0.ChangeDetectorRef }, { token: i3.MenuTabbingService }, { token: i4.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
|
|
269
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
269
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterMenuContainerComponent, isStandalone: true, selector: "kendo-grid-filter-menu-container", inputs: { column: "column", isLast: "isLast", isExpanded: "isExpanded", menuTabbingService: "menuTabbingService", filter: "filter", actionsClass: "actionsClass" }, outputs: { close: "close" }, providers: [
|
|
270
270
|
FilterService,
|
|
271
271
|
MenuTabbingService
|
|
272
272
|
], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }], ngImport: i0, template: `
|
|
273
273
|
<form (submit)="submit()" (reset)="reset()"
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
274
|
+
class="k-filter-menu"
|
|
275
|
+
[ngClass]="{'k-popup k-group k-reset': isMultiFilter && !ctx.grid?.isActionSheetExpanded}">
|
|
276
|
+
<div class="k-filter-menu-container">
|
|
277
|
+
@switch (hasTemplate) {
|
|
278
|
+
@case (false) {
|
|
279
|
+
@if (!isMultiFilter) {
|
|
280
|
+
<ng-container
|
|
281
|
+
kendoFilterMenuHost
|
|
282
|
+
[filterService]="childService"
|
|
283
|
+
[column]="column"
|
|
284
|
+
[filter]="childFilter"
|
|
285
|
+
[menuTabbingService]="menuTabbingService">
|
|
286
|
+
</ng-container>
|
|
287
|
+
} @else {
|
|
288
|
+
<kendo-grid-multicheckbox-filter style="display: contents;" [column]="column" (filterChange)="onCheckboxFilterChange($event)"></kendo-grid-multicheckbox-filter>
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
@case (true) {
|
|
292
|
+
@if (column.filterMenuTemplateRef) {
|
|
293
|
+
<ng-template
|
|
294
|
+
[ngTemplateOutlet]="column.filterMenuTemplateRef"
|
|
295
|
+
[ngTemplateOutletContext]="templateContext"
|
|
296
|
+
>
|
|
297
|
+
</ng-template>
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
@if (!ctx.grid?.isActionSheetExpanded) {
|
|
302
|
+
<div [ngClass]="actionsClass">
|
|
303
|
+
<button #filterButton kendoButton
|
|
304
|
+
themeColor="primary"
|
|
305
|
+
type="submit"
|
|
306
|
+
[ngClass]="{'k-button-rectangle': !isMultiFilter}"
|
|
307
|
+
[disabled]="disabled"
|
|
308
|
+
[icon]="getButtonIcon('filter', 'icon')"
|
|
309
|
+
[svgIcon]="getButtonIcon('filter', 'svgIcon')"
|
|
310
|
+
(keydown.tab)="onTab($event, 'filter')">{{filterText}}</button>
|
|
311
|
+
<button #resetButton kendoButton
|
|
312
|
+
type="reset"
|
|
313
|
+
[ngClass]="{'k-button-rectangle': !isMultiFilter}"
|
|
314
|
+
[icon]="getButtonIcon('reset', 'icon')"
|
|
315
|
+
[svgIcon]="getButtonIcon('reset', 'svgIcon')"
|
|
316
|
+
(keydown.tab)="onTab($event, 'reset')">{{clearText}}</button>
|
|
317
|
+
</div>
|
|
318
|
+
}
|
|
319
|
+
</div>
|
|
316
320
|
</form>
|
|
317
|
-
|
|
321
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: FilterMenuHostDirective, selector: "[kendoFilterMenuHost]", inputs: ["filterService", "menuTabbingService"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MultiCheckboxFilterComponent, selector: "kendo-grid-multicheckbox-filter", inputs: ["column"], outputs: ["filterChange"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
318
322
|
}
|
|
319
323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{
|
|
320
324
|
type: Component,
|
|
@@ -326,52 +330,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
326
330
|
selector: 'kendo-grid-filter-menu-container',
|
|
327
331
|
template: `
|
|
328
332
|
<form (submit)="submit()" (reset)="reset()"
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
333
|
+
class="k-filter-menu"
|
|
334
|
+
[ngClass]="{'k-popup k-group k-reset': isMultiFilter && !ctx.grid?.isActionSheetExpanded}">
|
|
335
|
+
<div class="k-filter-menu-container">
|
|
336
|
+
@switch (hasTemplate) {
|
|
337
|
+
@case (false) {
|
|
338
|
+
@if (!isMultiFilter) {
|
|
339
|
+
<ng-container
|
|
340
|
+
kendoFilterMenuHost
|
|
341
|
+
[filterService]="childService"
|
|
342
|
+
[column]="column"
|
|
343
|
+
[filter]="childFilter"
|
|
344
|
+
[menuTabbingService]="menuTabbingService">
|
|
345
|
+
</ng-container>
|
|
346
|
+
} @else {
|
|
347
|
+
<kendo-grid-multicheckbox-filter style="display: contents;" [column]="column" (filterChange)="onCheckboxFilterChange($event)"></kendo-grid-multicheckbox-filter>
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
@case (true) {
|
|
351
|
+
@if (column.filterMenuTemplateRef) {
|
|
352
|
+
<ng-template
|
|
353
|
+
[ngTemplateOutlet]="column.filterMenuTemplateRef"
|
|
354
|
+
[ngTemplateOutletContext]="templateContext"
|
|
355
|
+
>
|
|
356
|
+
</ng-template>
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
@if (!ctx.grid?.isActionSheetExpanded) {
|
|
361
|
+
<div [ngClass]="actionsClass">
|
|
362
|
+
<button #filterButton kendoButton
|
|
363
|
+
themeColor="primary"
|
|
364
|
+
type="submit"
|
|
365
|
+
[ngClass]="{'k-button-rectangle': !isMultiFilter}"
|
|
366
|
+
[disabled]="disabled"
|
|
367
|
+
[icon]="getButtonIcon('filter', 'icon')"
|
|
368
|
+
[svgIcon]="getButtonIcon('filter', 'svgIcon')"
|
|
369
|
+
(keydown.tab)="onTab($event, 'filter')">{{filterText}}</button>
|
|
370
|
+
<button #resetButton kendoButton
|
|
371
|
+
type="reset"
|
|
372
|
+
[ngClass]="{'k-button-rectangle': !isMultiFilter}"
|
|
373
|
+
[icon]="getButtonIcon('reset', 'icon')"
|
|
374
|
+
[svgIcon]="getButtonIcon('reset', 'svgIcon')"
|
|
375
|
+
(keydown.tab)="onTab($event, 'reset')">{{clearText}}</button>
|
|
376
|
+
</div>
|
|
377
|
+
}
|
|
378
|
+
</div>
|
|
371
379
|
</form>
|
|
372
|
-
|
|
380
|
+
`,
|
|
373
381
|
standalone: true,
|
|
374
|
-
imports: [FormsModule,
|
|
382
|
+
imports: [FormsModule, FilterMenuHostDirective, NgTemplateOutlet, NgClass, MultiCheckboxFilterComponent, ButtonComponent]
|
|
375
383
|
}]
|
|
376
384
|
}], ctorParameters: () => [{ type: i1.FilterService, decorators: [{
|
|
377
385
|
type: SkipSelf
|