Skip to content

Commit b519205

Browse files
Merge branch '25_2' of https://github.com/DevExpress/DevExtreme into 25_2_update_angular19
# Conflicts: # pnpm-lock.yaml
2 parents afc5ce0 + 36f9eb8 commit b519205

File tree

9 files changed

+6805
-6114
lines changed

9 files changed

+6805
-6114
lines changed

.github/workflows/demos_visual_tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888
steps:
8989
- name: Determine framework tests scope
9090
id: determine
91-
run: |
91+
run: |
9292
if [ "${{ github.event_name }}" != "pull_request" ] || [ "${{ contains(github.event.pull_request.labels.*.name, 'force all tests') }}" = "true" ]; then
9393
echo "Framework tests scope: all demos"
9494
echo "framework-tests-scope=all" >> $GITHUB_OUTPUT
@@ -110,7 +110,7 @@ jobs:
110110
needs.determine-framework-tests-scope.result == 'success'
111111
env:
112112
NODE_OPTIONS: --max-old-space-size=8192
113-
timeout-minutes: 20
113+
timeout-minutes: 30
114114

115115
steps:
116116
- name: Get sources
@@ -603,12 +603,12 @@ jobs:
603603
id: chrome-flags
604604
run: |
605605
BASE_FLAGS="chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647"
606-
606+
607607
# For Material theme, enable better font rendering to avoid instability
608608
if [[ "${{ matrix.THEME }}" != *"material"* ]]; then
609609
BASE_FLAGS="$BASE_FLAGS --font-render-hinting=none --disable-font-subpixel-positioning"
610610
fi
611-
611+
612612
echo "flags=$BASE_FLAGS" >> $GITHUB_OUTPUT
613613
614614
- name: Run TestCafe tests (jQuery)
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +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.
1+
The DevExtreme Chat allows users to attach files. 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.
22

33
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.
44
<!--split-->
55

6-
You can further customize the file upload process with [fileUploaderOptions](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#fileUploaderOptions) properties:
6+
You can customize the file upload process with the following [fileUploaderOptions](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#fileUploaderOptions) properties:
77

88
- **maxFileSize**
9-
Specifies the maximum allowed file size.
9+
Specifies maximum allowed file size.
1010
- **minFileSize**
11-
Specifies the minimum allowed file size.
11+
Specifies minimum allowed file size.
1212
- **multiple**
1313
When set to `false`, limits uploads to a single file.
1414
- **allowedFileExtensions**
1515
Restricts accepted file types.
1616

1717
For the complete list of configuration options, refer to the following API section: [fileUploaderOptions](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#fileUploaderOptions).
1818

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.
19+
[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.
2020

2121
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.
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
The DevExtreme Form ships with AI-powered **Smart Paste** functionality. When a user copies unstructured text from external sources such as documents, spreadsheets, web pages, or emails, **Smart Paste** processes the clipboard data and populates related form fields.
1+
The DevExtreme Form ships with AI-powered **Smart Paste** functionality. When a user copies unstructured text from external sources such as documents, spreadsheets, web pages, or emails, **Smart Paste** processes clipboard data and populates related form fields automatically.
22
<!--split-->
33

4-
Use the following APIs to enable **Smart Paste** in the Form component:
4+
Use the following APIs to activate **Smart Paste** in our Form component:
55

66
- [aiIntegration](/Documentation/ApiReference/UI_Components/dxForm/Configuration/#aiIntegration) - accepts an [AIIntegration](/Documentation/ApiReference/Common_Types/AIIntegration/) object that contains AI Service settings.
7-
- *'smartPaste'* – adds a built-in **Smart Paste** button to the Form (see [name](/Documentation/ApiReference/UI_Components/dxForm/Types/#FormPredefinedButtonItem) for more details). To initiate this functionality from code, call the [smartPaste(text)](/Documentation/ApiReference/UI_Components/dxForm/Methods/#smartPastetext) method. This demo shows how to use this method to implement a custom shortcut that activates **Smart Paste**.
7+
- *'smartPaste'* – adds a built-in **Smart Paste** button to the Form (see [name](/Documentation/ApiReference/UI_Components/dxForm/Types/#FormPredefinedButtonItem) for additional information). To use this capability in code, call the [smartPaste(text)](/Documentation/ApiReference/UI_Components/dxForm/Methods/#smartPastetext) method. This sample leverages this method and implements a custom shortcut to activate **Smart Paste**.
88

99
Configure each Form item using [aiOptions](/Documentation/ApiReference/UI_Components/dxForm/Item_Types/SimpleItem/aiOptions/):
1010
- **disabled** - prevents AI-generated text from being pasted into this item.
11-
- **instruction** - specifies the item instruction for the AI service.
11+
- **instruction** - specifies item instruction for the AI service.
Loading

e2e/testcafe-devextreme/tests/scheduler/common/appointmentForm/form.visual.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,3 +264,39 @@ test.meta({ browserSize: [1500, 1500] })('appointment form resource with multipl
264264
},
265265
});
266266
});
267+
268+
test.meta({ browserSize: [1500, 1500] })('appointment main form with opened startDate calendar', async (t) => {
269+
const { takeScreenshot, compareResults } = createScreenshotsComparer(t);
270+
271+
const appointment = {
272+
text: 'Appointment',
273+
startDate: new Date('2021-04-26T16:30:00.000Z'),
274+
endDate: new Date('2021-04-26T18:30:00.000Z'),
275+
allDay: false,
276+
};
277+
278+
const scheduler = new Scheduler(SCHEDULER_SELECTOR);
279+
const appointmentPopup = await scheduler.openAppointmentPopup(t, appointment, false);
280+
281+
await t.click(appointmentPopup.startDateEditor.dropDownEditorButton);
282+
283+
const calendarPopup = appointmentPopup.startDateEditor.getPopup();
284+
await t.expect(await calendarPopup.isVisible()).ok();
285+
286+
await testScreenshot(
287+
t,
288+
takeScreenshot,
289+
'scheduler__appointment__main-form__startDate-calendar-opened.png',
290+
);
291+
292+
await t
293+
.expect(compareResults.isValid())
294+
.ok(compareResults.errorMessages());
295+
}).before(async () => {
296+
await createWidget('dxScheduler', {
297+
dataSource: [],
298+
views: ['week'],
299+
currentView: 'week',
300+
currentDate: new Date(2021, 2, 25),
301+
});
302+
});

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@
7171
"json5@<1.0.2": "^2.2.3",
7272
"axios@<1.8.2": "^1.13.2",
7373
"braces@<3.0.3": "^3.0.3",
74-
"semver@<5.7.2": "^5.7.2"
74+
"semver@<5.7.2": "^5.7.2",
75+
"glob@>=10.2.0 <10.5.0": "^10.5.0"
7576
}
7677
},
7778
"packageManager": "[email protected]"

packages/devextreme/js/__internal/scheduler/appointment_popup/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const getStartDateCommonConfig = (firstDayOfWeek: string): SimpleItem =>
3030
useMaskBehavior: true,
3131
calendarOptions: {
3232
firstDayOfWeek,
33+
showTodayButton: true,
3334
},
3435
} as unknown as DateBoxProperties,
3536
});

packages/nx-infra-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
},
1414
"dependencies": {
1515
"fs-extra": "^11.2.0",
16-
"glob": "10.4.5",
16+
"glob": "11.1.0",
1717
"rimraf": "3.0.2"
1818
},
1919
"peerDependencies": {

0 commit comments

Comments
 (0)