Skip to content

Commit c605cd8

Browse files
authored
Merge branch '26_1' into issue-3609_26_1
2 parents 3202178 + 70844dd commit c605cd8

39 files changed

Lines changed: 2324 additions & 1190 deletions

File tree

apps/demos/Demos/Scheduler/ResolveTimeConflicts/Angular/app/app.component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ export class AppComponent {
6262
onInitialized: (e: DxPopupTypes.InitializedEvent) => { this.popup = e.component; },
6363
onHidden: () => {
6464
this.setConflictError(false);
65-
this.form?.updateData('assigneeId', []);
6665
},
6766
};
6867

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ const App = () => {
157157
},
158158
onHidden: () => {
159159
setConflictError(false);
160-
formRef.current?.updateData('assigneeId', []);
161160
},
162161
}), [setConflictError]);
163162

apps/demos/Demos/Scheduler/ResolveTimeConflicts/ReactJs/App.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ const App = () => {
130130
},
131131
onHidden: () => {
132132
setConflictError(false);
133-
formRef.current?.updateData('assigneeId', []);
134133
},
135134
}),
136135
[setConflictError],

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ const popupOptions = {
186186
},
187187
onHidden: () => {
188188
setConflictError(false);
189-
form?.updateData('assigneeId', []);
190189
},
191190
};
192191

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ $(() => {
2929
},
3030
onHidden: () => {
3131
setConflictError(false);
32-
form?.updateData('assigneeId', []);
3332
},
3433
},
3534
form: {

apps/demos/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"inferno": "catalog:",
5555
"inferno-create-element": "catalog:",
5656
"jquery": "catalog:",
57-
"jspdf": "4.2.0",
57+
"jspdf": "4.2.1",
5858
"jspdf-autotable": "5.0.2",
5959
"jszip": "^3.10.1",
6060
"luxon": "3.4.4",
@@ -91,9 +91,9 @@
9191
},
9292
"devDependencies": {
9393
"@angular/platform-server": "21.1.6",
94-
"@babel/core": "7.28.6",
94+
"@babel/core": "7.29.0",
9595
"@babel/eslint-parser": "catalog:",
96-
"@babel/preset-env": "7.28.6",
96+
"@babel/preset-env": "7.29.0",
9797
"@babel/preset-react": "7.28.5",
9898
"@babel/preset-typescript": "7.28.5",
9999
"@eslint/compat": "1.4.1",
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import React from 'react';
2+
import type { Meta, StoryObj } from '@storybook/react-webpack5';
3+
import { Tooltip } from 'devextreme-react/tooltip';
4+
5+
const meta: Meta<typeof Tooltip> = {
6+
title: 'Components/Tooltip',
7+
component: Tooltip,
8+
parameters: {
9+
layout: 'padded',
10+
},
11+
};
12+
13+
export default meta;
14+
15+
type Story = StoryObj<typeof Tooltip>;
16+
17+
const HoverableExample: Story['render'] = (args) => (
18+
<div style={{ padding: '80px 40px' }}>
19+
<p style={{ marginBottom: 16 }}>
20+
Hover the button to show the tooltip, then move the pointer onto
21+
the tooltip content — it must stay open.
22+
</p>
23+
<button id="tooltip-target">
24+
Hover me
25+
</button>
26+
<Tooltip
27+
{...args}
28+
target="#tooltip-target"
29+
showEvent="mouseenter"
30+
hideEvent="mouseleave"
31+
>
32+
<div style={{ padding: '8px 12px' }}>
33+
<strong>WCAG — Hoverable</strong>
34+
<p style={{ margin: '6px 0 0' }}>
35+
Move your pointer here from the button.
36+
<br />
37+
The tooltip stays open as long as the pointer
38+
<br />
39+
is over the target <em>or</em> this content.
40+
</p>
41+
</div>
42+
</Tooltip>
43+
</div>
44+
);
45+
46+
export const Hoverable: Story = {
47+
args: {
48+
position: 'bottom',
49+
},
50+
argTypes: {
51+
position: {
52+
control: 'select',
53+
options: ['top', 'bottom', 'left', 'right'],
54+
},
55+
},
56+
render: HoverableExample,
57+
};
58+
59+
const HoverableWithDelayExample: Story['render'] = (args) => (
60+
<div style={{ padding: '80px 40px' }}>
61+
<p style={{ marginBottom: 16 }}>
62+
Show delay: <strong>500 ms</strong> — Hide delay: <strong>300 ms</strong>.
63+
Moving onto the tooltip content cancels the hide timeout.
64+
</p>
65+
<button id="tooltip-target-delay">
66+
Hover me (with delay)
67+
</button>
68+
<Tooltip
69+
{...args}
70+
target="#tooltip-target-delay"
71+
showEvent={{ name: 'mouseenter', delay: 500 }}
72+
hideEvent={{ name: 'mouseleave', delay: 300 }}
73+
>
74+
<div style={{ padding: '8px 12px' }}>
75+
Move here to cancel the hide timeout.
76+
</div>
77+
</Tooltip>
78+
</div>
79+
);
80+
81+
export const HoverableWithDelay: Story = {
82+
args: {
83+
position: 'bottom',
84+
},
85+
argTypes: {
86+
position: {
87+
control: 'select',
88+
options: ['top', 'bottom', 'left', 'right'],
89+
},
90+
},
91+
render: HoverableWithDelayExample,
92+
};

e2e/testcafe-devextreme/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
},
99
"devDependencies": {
1010
"@babel/eslint-parser": "catalog:eslint8",
11-
"@babel/plugin-transform-runtime": "7.28.5",
11+
"@babel/plugin-transform-runtime": "7.29.0",
1212
"@testcafe-community/axe": "3.5.0",
1313
"@types/jquery": "catalog:",
1414
"axe-core": "catalog:",

e2e/wrappers/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@
5656
"@angular-devkit/build-angular": "catalog:angular",
5757
"@angular/cli": "catalog:angular",
5858
"@angular/compiler-cli": "catalog:angular",
59-
"@eslint/js": "9.39.3",
59+
"@eslint/js": "9.39.4",
6060
"@types/jasmine": "5.1.4",
6161
"@types/react": "19.1.2",
6262
"@types/react-dom": "19.1.3",
6363
"@vitejs/plugin-react": "4.4.1",
6464
"@vitejs/plugin-vue": "5.2.4",
65-
"eslint": "9.39.3",
65+
"eslint": "9.39.4",
6666
"eslint-plugin-react-hooks": "7.0.1",
6767
"eslint-plugin-react-refresh": "0.4.26",
6868
"globals": "15.15.0",

packages/devextreme-angular/src/ui/scheduler/index.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424

2525
import type dxSortable from 'devextreme/ui/sortable';
2626
import type dxDraggable from 'devextreme/ui/draggable';
27-
import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, RecurrenceEditMode, dxSchedulerScrolling, dxSchedulerToolbar } from 'devextreme/ui/scheduler';
27+
import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, RecurrenceEditMode, dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler';
2828
import type { event } from 'devextreme/events/events.types';
2929
import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source';
3030
import type { Store } from 'devextreme/data/store';
@@ -762,6 +762,16 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh
762762
}
763763

764764

765+
766+
@Input()
767+
get snapToCellsMode(): SnapToCellsMode {
768+
return this._getOption('snapToCellsMode');
769+
}
770+
set snapToCellsMode(value: SnapToCellsMode) {
771+
this._setOption('snapToCellsMode', value);
772+
}
773+
774+
765775
/**
766776
* [descr:dxSchedulerOptions.startDateExpr]
767777
@@ -884,10 +894,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh
884894
885895
*/
886896
@Input()
887-
get views(): Array<Record<string, any> | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: FirstDayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array<string>, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] {
897+
get views(): Array<Record<string, any> | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: FirstDayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array<string>, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] {
888898
return this._getOption('views');
889899
}
890-
set views(value: Array<Record<string, any> | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: FirstDayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array<string>, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) {
900+
set views(value: Array<Record<string, any> | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: FirstDayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array<string>, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) {
891901
this._setOption('views', value);
892902
}
893903

@@ -1397,6 +1407,13 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh
13971407
*/
13981408
@Output() showCurrentTimeIndicatorChange: EventEmitter<boolean>;
13991409

1410+
/**
1411+
1412+
* This member supports the internal infrastructure and is not intended to be used directly from your code.
1413+
1414+
*/
1415+
@Output() snapToCellsModeChange: EventEmitter<SnapToCellsMode>;
1416+
14001417
/**
14011418
14021419
* This member supports the internal infrastructure and is not intended to be used directly from your code.
@@ -1465,7 +1482,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh
14651482
* This member supports the internal infrastructure and is not intended to be used directly from your code.
14661483
14671484
*/
1468-
@Output() viewsChange: EventEmitter<Array<Record<string, any> | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: FirstDayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array<string>, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>;
1485+
@Output() viewsChange: EventEmitter<Array<Record<string, any> | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: FirstDayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array<string>, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>;
14691486

14701487
/**
14711488
@@ -1560,6 +1577,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh
15601577
{ emit: 'shadeUntilCurrentTimeChange' },
15611578
{ emit: 'showAllDayPanelChange' },
15621579
{ emit: 'showCurrentTimeIndicatorChange' },
1580+
{ emit: 'snapToCellsModeChange' },
15631581
{ emit: 'startDateExprChange' },
15641582
{ emit: 'startDateTimeZoneExprChange' },
15651583
{ emit: 'startDayHourChange' },

0 commit comments

Comments
 (0)