Skip to content

Commit cb276d2

Browse files
authored
Merge branch '25_2' into v2_2682_25_2
2 parents 55d2265 + 002885a commit cb276d2

File tree

2,492 files changed

+8911
-6385
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,492 files changed

+8911
-6385
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
applyTo: "**/localization/messages/**/*.json"
3+
---
4+
5+
# CRITICAL: DO NOT REVIEW LOCALIZATION FILES
6+
7+
These files are managed by a dedicated localization team through a separate workflow.
8+
9+
## Absolute Prohibitions - You MUST NOT:
10+
11+
- ❌ NEVER suggest translating English text to other languages
12+
- ❌ NEVER comment that text should be translated to match the locale
13+
- ❌ NEVER suggest alternative translations or phrasings in any language
14+
- ❌ NEVER comment on language consistency (e.g., "this should be in Arabic")
15+
- ❌ NEVER suggest changing text content for localization purposes
16+
- ❌ NEVER comment on which language should be used
17+
- ❌ NEVER suggest adding or removing message keys
18+
- ❌ NEVER provide language-specific style recommendations
19+
20+
## Why These Files Are Off-Limits:
21+
22+
Translation suggestions make PR pages UNRESPONSIVE and overwhelm human reviewers. The localization team handles all translation work through a separate quality assurance process.
23+
24+
## The ONLY Acceptable Comments:
25+
26+
✅ Critical JSON syntax errors that would break the build (missing commas, unclosed brackets)
27+
✅ Severe grammar errors (ONLY if they would cause user confusion)
28+
29+
## Examples of FORBIDDEN Comments:
30+
31+
- ❌ "This English text should be translated to Arabic"
32+
- ❌ "Translation is missing for this locale"
33+
- ❌ "Consider translating '(No subject)' to '(بدون موضوع)'"
34+
- ❌ "This text is in English but should be in German"
35+
- ❌ "Inconsistent language - use native translation"
36+
37+
If you have ANY doubt about whether to comment on a localization file, DO NOT COMMENT.
38+
39+
Focus your review on actual code files instead.

.github/workflows/testcafe_tests.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,8 @@ jobs:
102102
{ componentFolder: "dataGrid/common", name: "dataGrid / common (3/5)", indices: "3/5" },
103103
{ componentFolder: "dataGrid/common", name: "dataGrid / common (4/5)", indices: "4/5" },
104104
{ componentFolder: "dataGrid/common", name: "dataGrid / common (5/5)", indices: "5/5" },
105-
{ componentFolder: "dataGrid/sticky/common", name: "dataGrid / sticky common" },
106-
{ componentFolder: "dataGrid/sticky/fixed", name: "dataGrid / sticky (1/3)", indices: "1/3" },
107-
{ componentFolder: "dataGrid/sticky/fixed", name: "dataGrid / sticky (2/3)", indices: "2/3" },
108-
{ componentFolder: "dataGrid/sticky/fixed", name: "dataGrid / sticky (3/3)", indices: "3/3" },
105+
{ componentFolder: "dataGrid/sticky", name: "dataGrid / sticky (1/2)", indices: "1/2" },
106+
{ componentFolder: "dataGrid/sticky", name: "dataGrid / sticky (2/2)", indices: "2/2" },
109107
{ componentFolder: "cardView", name: "cardView" },
110108

111109
# Scheduler tests need to be reworked to work in fluent theme
@@ -120,8 +118,7 @@ jobs:
120118
{ componentFolder: "scheduler/timezones", name: "scheduler / timezones (Europe/Berlin)", timezone: "Europe/Berlin", theme: 'generic.light' },
121119
{ componentFolder: "scheduler/timezones", name: "scheduler / timezones (America/Los_Angeles)", timezone: "America/Los_Angeles", theme: 'generic.light' },
122120

123-
{ componentFolder: "editors", name: "editors (1/2)", indices: "1/2" },
124-
{ componentFolder: "editors", name: "editors (2/2)", indices: "2/2" },
121+
{ componentFolder: "editors", name: "editors" },
125122
{ componentFolder: "navigation", name: "navigation" },
126123
]
127124
runs-on: devextreme-shr2

apps/demos/Demos/FilterBuilder/WithDataGrid/Angular/app/app.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[dataSource]="dataSource"
99
[filterValue]="gridFilterValue"
1010
[showBorders]="true"
11-
[columns]="fields"
11+
[columns]="columns"
1212
[height]="300"
1313
>
1414
</dx-data-grid>

apps/demos/Demos/FilterBuilder/WithDataGrid/Angular/app/app.component.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
} from 'devextreme-angular';
99

1010
import { Service } from './app.service';
11-
import type { Fields, Condition, Product } from './app.service';
11+
import type { Fields, Columns, Condition, Product } from './app.service';
1212

1313
if (!/localhost/.test(document.location.host)) {
1414
enableProdMode();
@@ -32,12 +32,15 @@ export class AppComponent {
3232

3333
fields: Fields;
3434

35+
columns: Columns;
36+
3537
filter: Condition;
3638

3739
gridFilterValue: Condition;
3840

3941
constructor(service: Service) {
4042
this.fields = service.getFields();
43+
this.columns = service.getColumns();
4144
this.filter = service.getFilter();
4245
this.gridFilterValue = this.filter;
4346
this.dataSource = service.getProducts();

apps/demos/Demos/FilterBuilder/WithDataGrid/Angular/app/app.service.ts

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
22

33
export type Condition = Condition[] | string | number;
44
export type Fields = typeof fields;
5+
export type Columns = typeof columns;
56

67
export interface Product {
78
Product_ID: number;
@@ -21,12 +22,43 @@ const filter: Condition = [
2122
['Product_Cost', '<', 200],
2223
],
2324
];
24-
const fields: Record<string, string | number>[] = [
25+
26+
const fields: Record<string, string>[] = [
27+
{
28+
caption: 'ID',
29+
dataField: 'Product_ID',
30+
dataType: 'number',
31+
}, {
32+
dataField: 'Product_Name',
33+
dataType: 'string',
34+
}, {
35+
caption: 'Cost',
36+
dataField: 'Product_Cost',
37+
dataType: 'number',
38+
format: 'currency',
39+
}, {
40+
dataField: 'Product_Sale_Price',
41+
caption: 'Sale Price',
42+
dataType: 'number',
43+
format: 'currency',
44+
}, {
45+
dataField: 'Product_Retail_Price',
46+
caption: 'Retail Price',
47+
dataType: 'number',
48+
format: 'currency',
49+
}, {
50+
dataField: 'Product_Current_Inventory',
51+
dataType: 'number',
52+
caption: 'Inventory',
53+
},
54+
];
55+
56+
const columns: Record<string, string | number>[] = [
2557
{
2658
caption: 'ID',
27-
width: 50,
2859
dataField: 'Product_ID',
2960
dataType: 'number',
61+
width: 50,
3062
}, {
3163
dataField: 'Product_Name',
3264
dataType: 'string',
@@ -209,6 +241,10 @@ const products: Product[] = [
209241

210242
@Injectable()
211243
export class Service {
244+
getColumns(): Columns {
245+
return columns;
246+
}
247+
212248
getFields(): Fields {
213249
return fields;
214250
}

apps/demos/Demos/FilterBuilder/WithDataGrid/React/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useCallback, useState } from 'react';
22
import FilterBuilder, { type FilterBuilderTypes } from 'devextreme-react/filter-builder';
33
import Button from 'devextreme-react/button';
44
import DataGrid from 'devextreme-react/data-grid';
5-
import { filter, fields, products } from './data.ts';
5+
import { filter, fields, columns, products } from './data.ts';
66

77
const App = () => {
88
const [value, setValue] = useState(filter);
@@ -27,7 +27,7 @@ const App = () => {
2727
dataSource={products}
2828
filterValue={gridFilterValue}
2929
showBorders={true}
30-
columns={fields}
30+
columns={columns}
3131
height={300}
3232
/>
3333
</div>

apps/demos/Demos/FilterBuilder/WithDataGrid/React/data.ts

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
import { DataType } from 'devextreme/common';
22

3+
interface Product {
4+
Product_ID: number;
5+
Product_Name: string;
6+
Product_Cost: string;
7+
Product_Sale_Price: string;
8+
Product_Retail_Price: string;
9+
Product_Current_Inventory: number;
10+
}
11+
12+
interface Field {
13+
caption?: string,
14+
dataField: string,
15+
dataType: DataType,
16+
format?: string,
17+
}
18+
19+
interface Column extends Field {
20+
width?: number,
21+
}
22+
323
export const filter = [
424
['Product_Current_Inventory', '<>', 0],
525
'or',
@@ -10,16 +30,9 @@ export const filter = [
1030
],
1131
];
1232

13-
export const fields: {
14-
caption?: string,
15-
width?: number,
16-
dataField: string,
17-
dataType: DataType,
18-
format?: string,
19-
}[] = [
33+
export const fields: Field[] = [
2034
{
2135
caption: 'ID',
22-
width: 50,
2336
dataField: 'Product_ID',
2437
dataType: 'number',
2538
}, {
@@ -47,14 +60,36 @@ export const fields: {
4760
},
4861
];
4962

50-
interface Product {
51-
Product_ID: number;
52-
Product_Name: string;
53-
Product_Cost: string;
54-
Product_Sale_Price: string;
55-
Product_Retail_Price: string;
56-
Product_Current_Inventory: number;
57-
}
63+
export const columns: Column[] = [
64+
{
65+
caption: 'ID',
66+
dataField: 'Product_ID',
67+
dataType: 'number',
68+
width: 50,
69+
}, {
70+
dataField: 'Product_Name',
71+
dataType: 'string',
72+
}, {
73+
caption: 'Cost',
74+
dataField: 'Product_Cost',
75+
dataType: 'number',
76+
format: 'currency',
77+
}, {
78+
dataField: 'Product_Sale_Price',
79+
caption: 'Sale Price',
80+
dataType: 'number',
81+
format: 'currency',
82+
}, {
83+
dataField: 'Product_Retail_Price',
84+
caption: 'Retail Price',
85+
dataType: 'number',
86+
format: 'currency',
87+
}, {
88+
dataField: 'Product_Current_Inventory',
89+
dataType: 'number',
90+
caption: 'Inventory',
91+
},
92+
];
5893

5994
export const products: Product[] = [
6095
{

apps/demos/Demos/FilterBuilder/WithDataGrid/ReactJs/App.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import React, { useCallback, useState } from 'react';
22
import FilterBuilder from 'devextreme-react/filter-builder';
33
import Button from 'devextreme-react/button';
44
import DataGrid from 'devextreme-react/data-grid';
5-
import { filter, fields, products } from './data.js';
5+
import {
6+
filter, fields, columns, products,
7+
} from './data.js';
68

79
const App = () => {
810
const [value, setValue] = useState(filter);
@@ -35,7 +37,7 @@ const App = () => {
3537
dataSource={products}
3638
filterValue={gridFilterValue}
3739
showBorders={true}
38-
columns={fields}
40+
columns={columns}
3941
height={300}
4042
/>
4143
</div>

apps/demos/Demos/FilterBuilder/WithDataGrid/ReactJs/data.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export const filter = [
66
export const fields = [
77
{
88
caption: 'ID',
9-
width: 50,
109
dataField: 'Product_ID',
1110
dataType: 'number',
1211
},
@@ -38,6 +37,41 @@ export const fields = [
3837
caption: 'Inventory',
3938
},
4039
];
40+
export const columns = [
41+
{
42+
caption: 'ID',
43+
dataField: 'Product_ID',
44+
dataType: 'number',
45+
width: 50,
46+
},
47+
{
48+
dataField: 'Product_Name',
49+
dataType: 'string',
50+
},
51+
{
52+
caption: 'Cost',
53+
dataField: 'Product_Cost',
54+
dataType: 'number',
55+
format: 'currency',
56+
},
57+
{
58+
dataField: 'Product_Sale_Price',
59+
caption: 'Sale Price',
60+
dataType: 'number',
61+
format: 'currency',
62+
},
63+
{
64+
dataField: 'Product_Retail_Price',
65+
caption: 'Retail Price',
66+
dataType: 'number',
67+
format: 'currency',
68+
},
69+
{
70+
dataField: 'Product_Current_Inventory',
71+
dataType: 'number',
72+
caption: 'Inventory',
73+
},
74+
];
4175
export const products = [
4276
{
4377
Product_ID: 1,

apps/demos/Demos/FilterBuilder/WithDataGrid/Vue/App.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
:data-source="products"
1717
:filter-value="gridFilterValue"
1818
:show-borders="true"
19-
:columns="fields"
19+
:columns="columns"
2020
:height="300"
2121
/>
2222
</div>
@@ -26,7 +26,7 @@ import { ref } from 'vue';
2626
import DxFilterBuilder from 'devextreme-vue/filter-builder';
2727
import DxButton from 'devextreme-vue/button';
2828
import DxDataGrid from 'devextreme-vue/data-grid';
29-
import { filter, fields, products } from './data.ts';
29+
import { filter, fields, columns, products } from './data.ts';
3030
3131
const filterValue = ref(filter);
3232
const gridFilterValue = ref(filter);

0 commit comments

Comments
 (0)