Skip to content

Commit e26eff3

Browse files
committed
Merge branch '25_2' of github.com:DevExpress/DevExtreme into AI-Column-Scroll-Position
2 parents 05017b6 + 3a85cd7 commit e26eff3

File tree

96 files changed

+7247
-1419
lines changed

Some content is hidden

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

96 files changed

+7247
-1419
lines changed

.github/workflows/build_all.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ on:
66
- 'apps/**/*.md'
77
push:
88
branches: [25_2]
9+
workflow_dispatch:
10+
inputs:
11+
SBOM:
12+
description: 'Build SBOM'
13+
required: false
14+
default: false
15+
type: boolean
916

1017
jobs:
1118
build:
@@ -45,14 +52,31 @@ jobs:
4552
- name: Build npm packages
4653
run: pnpm run all:build
4754

48-
- name: Copy build artifacts
55+
- name: Upload build artifacts
4956
uses: actions/upload-artifact@v4
5057
with:
5158
name: devextreme-npm-packages
5259
path: |
5360
artifacts/npm/*.tgz
5461
retention-days: 1
5562

63+
- name: Build SBOMs
64+
if: ${{ github.event_name == 'push' || github.event.inputs.SBOM == 'true' }}
65+
env:
66+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67+
run: |
68+
pnpm set //npm.pkg.github.com/:_authToken="$NODE_AUTH_TOKEN";
69+
pnpm nx build sbom;
70+
71+
- name: Upload SBOM artifacts
72+
if: ${{ github.event_name == 'push' || github.event.inputs.SBOM == 'true' }}
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: sbom
76+
path: |
77+
packages/sbom/dist/**/*
78+
retention-days: 1
79+
5680
custom_bundles:
5781
runs-on: devextreme-shr2
5882
needs: build

.github/workflows/packages_publishing.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ jobs:
8686
mkdir -p ./artifacts/deps-scanner
8787
cp reportGithub.json ./artifacts/deps-scanner/
8888
89+
- name: Build SBOMs
90+
env:
91+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
92+
run: |
93+
pnpm set //npm.pkg.github.com/:_authToken="$NODE_AUTH_TOKEN";
94+
pnpm nx build sbom;
95+
8996
- name: Build artifacts package
9097
run: npx ts-node tools/scripts/make-artifacts-package
9198

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
DevExtreme Chat supports file attachments. When this feature is activated ([fileUploaderOptions](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#fileUploaderOptions).**uploadFile** is specified), an “Attach” button appears in the message input field, allowing users to add files to their messages.
2+
3+
When users attach files, each file is displayed in the input area with a file-type icon, basic details (name and size), upload status, and an option to remove files before sending.
4+
<!--split-->
5+
6+
You can further customize the file upload process with [fileUploaderOptions](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#fileUploaderOptions) properties:
7+
8+
- **maxFileSize**
9+
Specifies the maximum allowed file size.
10+
- **minFileSize**
11+
Specifies the minimum allowed file size.
12+
- **multiple**
13+
When set to `false`, limits uploads to a single file.
14+
- **allowedFileExtensions**
15+
Restricts accepted file types.
16+
17+
For the complete list of configuration options, refer to the following API section: [fileUploaderOptions](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#fileUploaderOptions).
18+
19+
The [Attachment](/Documentation/ApiReference/UI_Components/dxChat/Types/Attachment/) type includes `name` and `size` fields. To add custom fields (such as `url` in this demo), handle the [onMessageEntered](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#onMessageEntered) event and update the message object’s [attachments](/Documentation/ApiReference/UI_Components/dxChat/Types/TextMessage/#attachments) array as needed. You can use this handler to save files to your server.
20+
21+
After a user sends a message, attachments appear in the corresponding message bubble. To allow users to download attachments, implement the [onAttachmentDownloadClick](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#onAttachmentDownloadClick) event handler. You can define custom download logic within the handler.

apps/demos/Demos/Scheduler/Agenda/Angular/app/app.component.html

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,4 @@
2323
icon="tags"
2424
>
2525
</dxi-scheduler-resource>
26-
27-
<dxo-scheduler-editing>
28-
<dxo-scheduler-form>
29-
<dxi-scheduler-item name="mainGroup">
30-
<dxi-scheduler-item name="subjectGroup"></dxi-scheduler-item>
31-
<dxi-scheduler-item name="dateGroup"></dxi-scheduler-item>
32-
<dxi-scheduler-item name="repeatGroup"></dxi-scheduler-item>
33-
<dxi-scheduler-item name="resourcesGroup">
34-
<dxi-scheduler-item
35-
name="assigneeIdGroup"
36-
[colCount]="3"
37-
[colCountByScreen]="{ xs: 3 }"
38-
>
39-
<dxi-scheduler-item name="assigneeIdIcon"></dxi-scheduler-item>
40-
<dxi-scheduler-item name="assigneeId"></dxi-scheduler-item>
41-
<dxi-scheduler-item name="priorityId"></dxi-scheduler-item>
42-
</dxi-scheduler-item>
43-
</dxi-scheduler-item>
44-
<dxi-scheduler-item name="descriptionGroup"></dxi-scheduler-item>
45-
</dxi-scheduler-item>
46-
<dxi-scheduler-item name="recurrenceGroup"></dxi-scheduler-item>
47-
</dxo-scheduler-form>
48-
</dxo-scheduler-editing>
4926
</dx-scheduler>

apps/demos/Demos/Scheduler/Agenda/React/App.tsx

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import React from 'react';
22
import Scheduler, {
33
Resource,
4-
Editing,
5-
Form as SchedulerForm,
6-
Item,
74
type SchedulerTypes,
85
} from 'devextreme-react/scheduler';
96
import ArrayStore from 'devextreme/data/array_store';
@@ -39,25 +36,6 @@ const App = () => (
3936
label="Priority"
4037
icon="tags"
4138
/>
42-
43-
<Editing>
44-
<SchedulerForm>
45-
<Item name="mainGroup">
46-
<Item name="subjectGroup" />
47-
<Item name="dateGroup" />
48-
<Item name="repeatGroup" />
49-
<Item name="resourcesGroup">
50-
<Item name="assigneeIdGroup" colCount={3} colCountByScreen={{ xs: 3 }}>
51-
<Item name="assigneeIdIcon" />
52-
<Item name="assigneeId" />
53-
<Item name="priorityId" />
54-
</Item>
55-
</Item>
56-
<Item name="descriptionGroup" />
57-
</Item>
58-
<Item name="recurrenceGroup" />
59-
</SchedulerForm>
60-
</Editing>
6139
</Scheduler>
6240
);
6341

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import React from 'react';
2-
import Scheduler, {
3-
Resource,
4-
Editing,
5-
Form as SchedulerForm,
6-
Item,
7-
} from 'devextreme-react/scheduler';
2+
import Scheduler, { Resource } from 'devextreme-react/scheduler';
83
import ArrayStore from 'devextreme/data/array_store';
94
import { assignees, data, priorities } from './data.js';
105

@@ -38,29 +33,6 @@ const App = () => (
3833
label="Priority"
3934
icon="tags"
4035
/>
41-
42-
<Editing>
43-
<SchedulerForm>
44-
<Item name="mainGroup">
45-
<Item name="subjectGroup" />
46-
<Item name="dateGroup" />
47-
<Item name="repeatGroup" />
48-
<Item name="resourcesGroup">
49-
<Item
50-
name="assigneeIdGroup"
51-
colCount={3}
52-
colCountByScreen={{ xs: 3 }}
53-
>
54-
<Item name="assigneeIdIcon" />
55-
<Item name="assigneeId" />
56-
<Item name="priorityId" />
57-
</Item>
58-
</Item>
59-
<Item name="descriptionGroup" />
60-
</Item>
61-
<Item name="recurrenceGroup" />
62-
</SchedulerForm>
63-
</Editing>
6436
</Scheduler>
6537
);
6638
export default App;

apps/demos/Demos/Scheduler/Agenda/Vue/App.vue

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,38 +22,12 @@
2222
label="Priority"
2323
icon="tags"
2424
/>
25-
26-
<DxEditing>
27-
<DxSchedulerForm>
28-
<DxItem name="mainGroup">
29-
<DxItem name="subjectGroup"/>
30-
<DxItem name="dateGroup"/>
31-
<DxItem name="repeatGroup"/>
32-
<DxItem name="resourcesGroup">
33-
<DxItem
34-
:col-count="3"
35-
:col-count-by-screen="{ xs: 3 }"
36-
name="assigneeIdGroup"
37-
>
38-
<DxItem name="assigneeIdIcon"/>
39-
<DxItem name="assigneeId"/>
40-
<DxItem name="priorityId"/>
41-
</DxItem>
42-
</DxItem>
43-
<DxItem name="descriptionGroup"/>
44-
</DxItem>
45-
<DxItem name="recurrenceGroup"/>
46-
</DxSchedulerForm>
47-
</DxEditing>
4825
</DxScheduler>
4926
</template>
5027
<script setup lang="ts">
5128
import DxScheduler, {
5229
DxResource,
53-
DxEditing,
54-
DxForm as DxSchedulerForm,
5530
} from 'devextreme-vue/scheduler';
56-
import { DxItem } from 'devextreme-vue/form';
5731
import { ArrayStore } from 'devextreme-vue/common/data';
5832
import { data, assignees, priorities } from './data.ts';
5933

apps/demos/Demos/Scheduler/Agenda/jQuery/index.js

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,6 @@ $(() => {
2323
label: 'Priority',
2424
icon: 'tags',
2525
}],
26-
editing: {
27-
form: {
28-
items: [
29-
{
30-
name: 'mainGroup',
31-
items: [
32-
'subjectGroup',
33-
'dateGroup',
34-
'repeatGroup',
35-
{
36-
name: 'resourcesGroup',
37-
items: [
38-
{
39-
name: 'assigneeIdGroup',
40-
colCount: 3,
41-
colCountByScreen: {
42-
xs: 3,
43-
},
44-
items: ['assigneeIdIcon', 'assigneeId', 'priorityId'],
45-
},
46-
],
47-
},
48-
'descriptionGroup',
49-
],
50-
},
51-
'recurrenceGroup',
52-
],
53-
},
54-
},
5526
height: 600,
5627
});
5728
});

apps/demos/Demos/Scheduler/Timelines/Angular/app/app.component.html

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,4 @@
2626
label="Priority"
2727
icon="tags"
2828
></dxi-scheduler-resource>
29-
30-
<dxo-scheduler-editing>
31-
<dxo-scheduler-form>
32-
<dxi-scheduler-item name="mainGroup">
33-
<dxi-scheduler-item name="subjectGroup"></dxi-scheduler-item>
34-
<dxi-scheduler-item name="dateGroup"></dxi-scheduler-item>
35-
<dxi-scheduler-item name="repeatGroup"></dxi-scheduler-item>
36-
<dxi-scheduler-item name="resourcesGroup">
37-
<dxi-scheduler-item
38-
name="ownerIdGroup"
39-
[colCount]="3"
40-
[colCountByScreen]="{ xs: 3 }"
41-
>
42-
<dxi-scheduler-item name="ownerIdIcon"></dxi-scheduler-item>
43-
<dxi-scheduler-item name="ownerId"></dxi-scheduler-item>
44-
<dxi-scheduler-item name="priority"></dxi-scheduler-item>
45-
</dxi-scheduler-item>
46-
</dxi-scheduler-item>
47-
<dxi-scheduler-item name="descriptionGroup"></dxi-scheduler-item>
48-
</dxi-scheduler-item>
49-
<dxi-scheduler-item name="recurrenceGroup"></dxi-scheduler-item>
50-
</dxo-scheduler-form>
51-
</dxo-scheduler-editing>
5229
</dx-scheduler>

apps/demos/Demos/Scheduler/Timelines/React/App.tsx

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ import React from 'react';
22

33
import Scheduler, {
44
Resource,
5-
Editing,
6-
Form as SchedulerForm,
7-
Item,
85
type SchedulerTypes,
96
} from 'devextreme-react/scheduler';
107

@@ -43,25 +40,6 @@ const App = () => (
4340
label="Priority"
4441
icon="tags"
4542
/>
46-
47-
<Editing>
48-
<SchedulerForm>
49-
<Item name="mainGroup">
50-
<Item name="subjectGroup" />
51-
<Item name="dateGroup" />
52-
<Item name="repeatGroup" />
53-
<Item name="resourcesGroup">
54-
<Item name="ownerIdGroup" colCount={3} colCountByScreen={{ xs: 3 }}>
55-
<Item name="ownerIdIcon" />
56-
<Item name="ownerId" />
57-
<Item name="priority" />
58-
</Item>
59-
</Item>
60-
<Item name="descriptionGroup" />
61-
</Item>
62-
<Item name="recurrenceGroup" />
63-
</SchedulerForm>
64-
</Editing>
6543
</Scheduler>
6644
);
6745

0 commit comments

Comments
 (0)