@syncfusion/ej2-schedule 25.1.37 → 25.1.41
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/CHANGELOG.md +19 -0
- package/dist/ej2-schedule.min.js +2 -2
- package/dist/ej2-schedule.umd.min.js +2 -2
- package/dist/ej2-schedule.umd.min.js.map +1 -1
- package/dist/es6/ej2-schedule.es2015.js +98 -16
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +107 -20
- package/dist/es6/ej2-schedule.es5.js.map +1 -1
- package/dist/global/ej2-schedule.min.js +2 -2
- package/dist/global/ej2-schedule.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/schedule/actions/virtual-scroll.d.ts +2 -0
- package/src/schedule/actions/virtual-scroll.js +24 -1
- package/src/schedule/base/css-constant.d.ts +2 -0
- package/src/schedule/base/css-constant.js +2 -0
- package/src/schedule/base/interface.d.ts +1 -0
- package/src/schedule/base/resource.js +1 -0
- package/src/schedule/base/schedule.d.ts +1 -0
- package/src/schedule/base/schedule.js +20 -4
- package/src/schedule/event-renderer/month.js +1 -2
- package/src/schedule/event-renderer/timeline-view.js +17 -5
- package/src/schedule/event-renderer/vertical-view.js +16 -3
- package/src/schedule/popups/event-window.js +1 -1
- package/src/schedule/popups/quick-popups.js +3 -1
- package/src/schedule/renderer/header-renderer.js +3 -2
- package/src/schedule/renderer/renderer.js +1 -0
- package/src/schedule/renderer/timeline-year.js +4 -1
- package/src/schedule/renderer/vertical-view.js +14 -0
- package/src/schedule/renderer/view-base.js +1 -1
- package/styles/bootstrap-dark.css +8 -1
- package/styles/bootstrap.css +8 -1
- package/styles/bootstrap4.css +8 -1
- package/styles/bootstrap5-dark.css +8 -1
- package/styles/bootstrap5.css +8 -1
- package/styles/fabric-dark.css +8 -1
- package/styles/fabric.css +8 -1
- package/styles/fluent-dark.css +8 -1
- package/styles/fluent.css +8 -1
- package/styles/highcontrast-light.css +8 -1
- package/styles/highcontrast.css +8 -1
- package/styles/material-dark.css +8 -1
- package/styles/material.css +8 -1
- package/styles/material3-dark.css +8 -1
- package/styles/material3.css +8 -1
- package/styles/schedule/_layout.scss +18 -1
- package/styles/schedule/bootstrap-dark.css +8 -1
- package/styles/schedule/bootstrap.css +8 -1
- package/styles/schedule/bootstrap4.css +8 -1
- package/styles/schedule/bootstrap5-dark.css +8 -1
- package/styles/schedule/bootstrap5.css +8 -1
- package/styles/schedule/fabric-dark.css +8 -1
- package/styles/schedule/fabric.css +8 -1
- package/styles/schedule/fluent-dark.css +8 -1
- package/styles/schedule/fluent.css +8 -1
- package/styles/schedule/highcontrast-light.css +8 -1
- package/styles/schedule/highcontrast.css +8 -1
- package/styles/schedule/material-dark.css +8 -1
- package/styles/schedule/material.css +8 -1
- package/styles/schedule/material3-dark.css +8 -1
- package/styles/schedule/material3.css +8 -1
- package/styles/schedule/tailwind-dark.css +8 -1
- package/styles/schedule/tailwind.css +8 -1
- package/styles/tailwind-dark.css +8 -1
- package/styles/tailwind.css +8 -1
|
@@ -557,6 +557,8 @@ const RTL = 'e-rtl';
|
|
|
557
557
|
/** @private */
|
|
558
558
|
const DEVICE_CLASS = 'e-device';
|
|
559
559
|
/** @private */
|
|
560
|
+
const ADAPTIVE_CLASS = 'e-adaptive';
|
|
561
|
+
/** @private */
|
|
560
562
|
const MULTI_DRAG = 'e-multi-drag';
|
|
561
563
|
/** @private */
|
|
562
564
|
const ICON = 'e-icons';
|
|
@@ -1084,6 +1086,7 @@ class HeaderRenderer {
|
|
|
1084
1086
|
});
|
|
1085
1087
|
this.toolbarObj.root = this.parent.root ? this.parent.root : this.parent;
|
|
1086
1088
|
this.toolbarObj.appendTo(this.parent.element.querySelector('.' + HEADER_TOOLBAR));
|
|
1089
|
+
this.toolbarObj.element.setAttribute('aria-label', 'Scheduler');
|
|
1087
1090
|
const prevNavEle = this.toolbarObj.element.querySelector('.e-prev');
|
|
1088
1091
|
if (prevNavEle) {
|
|
1089
1092
|
prevNavEle.firstElementChild.setAttribute('title', this.l10n.getConstant('previous'));
|
|
@@ -1269,7 +1272,7 @@ class HeaderRenderer {
|
|
|
1269
1272
|
switch (item.name) {
|
|
1270
1273
|
case 'Today':
|
|
1271
1274
|
tbItem = {
|
|
1272
|
-
showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-
|
|
1275
|
+
showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',
|
|
1273
1276
|
text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'
|
|
1274
1277
|
};
|
|
1275
1278
|
tbItem.align = propItem.align ? propItem.align : item.align;
|
|
@@ -1355,7 +1358,7 @@ class HeaderRenderer {
|
|
|
1355
1358
|
}
|
|
1356
1359
|
else {
|
|
1357
1360
|
items.push({
|
|
1358
|
-
align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-
|
|
1361
|
+
align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',
|
|
1359
1362
|
text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'
|
|
1360
1363
|
});
|
|
1361
1364
|
if (this.parent.views.length > 1) {
|
|
@@ -6751,6 +6754,14 @@ class VerticalEvent extends EventBase {
|
|
|
6751
6754
|
const wrapperElements = [].slice.call(this.parent.element.querySelectorAll('.' + BLOCK_APPOINTMENT_CLASS +
|
|
6752
6755
|
',.' + APPOINTMENT_CLASS + ',.' + ROW_COUNT_WRAPPER_CLASS));
|
|
6753
6756
|
const isDragging = (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) ? true : false;
|
|
6757
|
+
const hideWrapper = (wrapper) => {
|
|
6758
|
+
if (this.parent.isReact && !isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {
|
|
6759
|
+
const appWrapper = closest(wrapper, '.' + DAY_WRAPPER_CLASS + ',.' + ALLDAY_APPOINTMENT_WRAPPER_CLASS);
|
|
6760
|
+
if (appWrapper && !appWrapper.classList.contains(APPOINTMENT_WRAPPER_HIDDEN_CLASS)) {
|
|
6761
|
+
addClass([appWrapper], APPOINTMENT_WRAPPER_HIDDEN_CLASS);
|
|
6762
|
+
}
|
|
6763
|
+
}
|
|
6764
|
+
};
|
|
6754
6765
|
for (const wrapper of wrapperElements) {
|
|
6755
6766
|
if (isDragging && !(wrapper.classList.contains(ALLDAY_APPOINTMENT_CLASS) ||
|
|
6756
6767
|
wrapper.classList.contains(ROW_COUNT_WRAPPER_CLASS))) {
|
|
@@ -6758,11 +6769,13 @@ class VerticalEvent extends EventBase {
|
|
|
6758
6769
|
for (let j = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; j < len; j++) {
|
|
6759
6770
|
if (groupIndex === this.parent.crudModule.crudObj.sourceEvent[parseInt(j.toString(), 10)].groupIndex ||
|
|
6760
6771
|
groupIndex === this.parent.crudModule.crudObj.targetEvent[parseInt(j.toString(), 10)].groupIndex) {
|
|
6772
|
+
hideWrapper(wrapper);
|
|
6761
6773
|
remove(wrapper);
|
|
6762
6774
|
}
|
|
6763
6775
|
}
|
|
6764
6776
|
}
|
|
6765
6777
|
else {
|
|
6778
|
+
hideWrapper(wrapper);
|
|
6766
6779
|
remove(wrapper);
|
|
6767
6780
|
}
|
|
6768
6781
|
}
|
|
@@ -7306,9 +7319,12 @@ class VerticalEvent extends EventBase {
|
|
|
7306
7319
|
return (tempLeft > 99 ? 99 : tempLeft) + '%';
|
|
7307
7320
|
}
|
|
7308
7321
|
getTopValue(date, day, resource) {
|
|
7309
|
-
const
|
|
7322
|
+
const viewDate = resetTime(this.dateRender[parseInt(resource.toString(), 10)][parseInt(day.toString(), 10)]);
|
|
7323
|
+
const startEndHours = getStartEndHours(viewDate, this.startHour, this.endHour);
|
|
7310
7324
|
const startHour = startEndHours.startHour;
|
|
7311
|
-
const
|
|
7325
|
+
const adjustedStartHour = isDaylightSavingTime(viewDate) && (startHour.getHours() !== this.startHour.getHours()) ?
|
|
7326
|
+
this.startHour.getHours() : startHour.getHours();
|
|
7327
|
+
const diffInMinutes = ((date.getHours() - adjustedStartHour) * 60) + (date.getMinutes() - startHour.getMinutes());
|
|
7312
7328
|
return (this.parent.activeViewOptions.timeScale.enable) ? ((diffInMinutes * this.cellHeight * this.slotCount) / this.interval) : 0;
|
|
7313
7329
|
}
|
|
7314
7330
|
getOverlapIndex(record, day, isAllDay, resource) {
|
|
@@ -8174,8 +8190,7 @@ class MonthEvent extends EventBase {
|
|
|
8174
8190
|
attrs: {
|
|
8175
8191
|
'role': 'button',
|
|
8176
8192
|
'tabindex': '0',
|
|
8177
|
-
'aria-label': this.parent.globalize.formatNumber(count) + '
|
|
8178
|
-
+ (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more')),
|
|
8193
|
+
'aria-label': this.parent.globalize.formatNumber(count) + ' ' + this.parent.localeObj.getConstant('moreEvents'),
|
|
8179
8194
|
'data-count': count.toString(),
|
|
8180
8195
|
'data-start-date': startDate.getTime().toString(),
|
|
8181
8196
|
'data-end-date': endDate.getTime().toString()
|
|
@@ -8282,8 +8297,16 @@ class TimelineEvent extends MonthEvent {
|
|
|
8282
8297
|
const appointments = [];
|
|
8283
8298
|
for (const app of appointmentsCollection) {
|
|
8284
8299
|
if (this.renderType === 'day') {
|
|
8285
|
-
|
|
8286
|
-
|
|
8300
|
+
const start = resetTime(startDate).getTime();
|
|
8301
|
+
const end = resetTime(endDate).getTime();
|
|
8302
|
+
const appStart = resetTime(app[this.fields.startTime]).getTime();
|
|
8303
|
+
const appEnd = resetTime(app[this.fields.endTime]).getTime();
|
|
8304
|
+
const isEndOverlap = () => {
|
|
8305
|
+
let endTime = (end - (getDateInMs(endDate) <= 0 ? MS_PER_DAY : 0));
|
|
8306
|
+
endTime = start > endTime ? start : endTime;
|
|
8307
|
+
return appEnd >= endTime && appStart <= endTime;
|
|
8308
|
+
};
|
|
8309
|
+
if (appStart <= start && appEnd >= start || isEndOverlap() || appStart > start && appEnd < end) {
|
|
8287
8310
|
appointments.push(app);
|
|
8288
8311
|
}
|
|
8289
8312
|
}
|
|
@@ -9156,7 +9179,7 @@ class QuickPopups {
|
|
|
9156
9179
|
renderMorePopup() {
|
|
9157
9180
|
const moreEventPopup = `<div class="${MORE_EVENT_POPUP_CLASS}"><div class="${MORE_EVENT_HEADER_CLASS}">` +
|
|
9158
9181
|
`<div class="${MORE_EVENT_CLOSE_CLASS}" title="${this.l10n.getConstant('close')}" tabindex="0" role="button"></div>` +
|
|
9159
|
-
`<div class="${MORE_EVENT_DATE_HEADER_CLASS}"><div class="${MORE_EVENT_HEADER_DAY_CLASS}"></div>` +
|
|
9182
|
+
`<div class="${MORE_EVENT_DATE_HEADER_CLASS}"><div class="${MORE_EVENT_HEADER_DAY_CLASS}" id="${this.parent.element.id}_more_popup"></div>` +
|
|
9160
9183
|
`<div class="${MORE_EVENT_HEADER_DATE_CLASS} ${NAVIGATE_CLASS}" tabindex="0" role="link"></div></div></div></div>`;
|
|
9161
9184
|
const moreEventWrapper = createElement('div', {
|
|
9162
9185
|
className: MORE_POPUP_WRAPPER_CLASS + ' e-popup-close',
|
|
@@ -9181,6 +9204,8 @@ class QuickPopups {
|
|
|
9181
9204
|
viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),
|
|
9182
9205
|
zIndex: (this.parent.isAdaptive ? 1002 : 2)
|
|
9183
9206
|
});
|
|
9207
|
+
this.morePopup.element.setAttribute('role', 'dialog');
|
|
9208
|
+
this.morePopup.element.setAttribute('aria-labelledby', this.parent.element.id + '_more_popup');
|
|
9184
9209
|
const closeButton = this.morePopup.element.querySelector('.' + MORE_EVENT_CLOSE_CLASS);
|
|
9185
9210
|
this.renderButton('e-round', ICON + ' ' + CLOSE_ICON_CLASS, false, closeButton, this.closeClick);
|
|
9186
9211
|
EventHandler.add(this.morePopup.element.querySelector('.' + MORE_EVENT_HEADER_DATE_CLASS), 'click', this.navigationClick, this);
|
|
@@ -12270,7 +12295,7 @@ class EventWindow {
|
|
|
12270
12295
|
const resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD$1, fieldName);
|
|
12271
12296
|
resourceDiv.appendChild(resourceInput);
|
|
12272
12297
|
const resourceTemplate = function (data) {
|
|
12273
|
-
return `<div class="e-resource-template"><div class="e-resource-color" style="background-color:${data[resourceData.colorField]}"></div><div class="e-resource-text">${data[resourceData.textField]}</div></div
|
|
12298
|
+
return SanitizeHtmlHelper.sanitize(`<div class="e-resource-template"><div class="e-resource-color" style="background-color:${data[resourceData.colorField]}"></div><div class="e-resource-text">${data[resourceData.textField]}</div></div>`);
|
|
12274
12299
|
};
|
|
12275
12300
|
initializeCSPTemplate(resourceTemplate, resourceData);
|
|
12276
12301
|
if (resourceData.allowMultiple) {
|
|
@@ -13798,6 +13823,27 @@ class VirtualScroll {
|
|
|
13798
13823
|
this.itemSize = getElementHeightFromClass(this.parent.activeView.element, WORK_CELLS_CLASS) || this.itemSize;
|
|
13799
13824
|
}
|
|
13800
13825
|
}
|
|
13826
|
+
refreshLayout() {
|
|
13827
|
+
const initialHeight = this.parent.uiStateValues.scheduleHeight;
|
|
13828
|
+
this.parent.uiStateValues.scheduleHeight = this.parent.element.offsetHeight;
|
|
13829
|
+
const preRenderedLength = this.renderedLength;
|
|
13830
|
+
if (this.parent.uiStateValues.scheduleHeight !== initialHeight) {
|
|
13831
|
+
if (preRenderedLength < this.getRenderedCount()) {
|
|
13832
|
+
this.isRemoteRefresh = true;
|
|
13833
|
+
}
|
|
13834
|
+
const resWrap = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
|
|
13835
|
+
const conWrap = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
|
|
13836
|
+
const eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
|
|
13837
|
+
let firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
|
|
13838
|
+
const endIndex = (firstTDIndex + this.renderedLength);
|
|
13839
|
+
firstTDIndex = (endIndex > this.parent.resourceBase.expandedResources.length) ?
|
|
13840
|
+
(this.parent.resourceBase.expandedResources.length - this.renderedLength) : firstTDIndex;
|
|
13841
|
+
this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.slice(firstTDIndex, endIndex);
|
|
13842
|
+
if (this.parent.resourceBase.renderedResources.length > 0) {
|
|
13843
|
+
this.updateContent(resWrap, conWrap, eventWrap, this.parent.resourceBase.renderedResources);
|
|
13844
|
+
}
|
|
13845
|
+
}
|
|
13846
|
+
}
|
|
13801
13847
|
renderEvents() {
|
|
13802
13848
|
this.setTabIndex();
|
|
13803
13849
|
const dynamicData = this.triggerScrollEvent(virtualScrollStop);
|
|
@@ -13832,7 +13878,9 @@ class VirtualScroll {
|
|
|
13832
13878
|
const eventWrap = this.parent.element.querySelector('.' + EVENT_TABLE_CLASS);
|
|
13833
13879
|
const timeIndicator = this.parent.element.querySelector('.' + CURRENT_TIMELINE_CLASS);
|
|
13834
13880
|
const conTable = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS);
|
|
13835
|
-
|
|
13881
|
+
if (!this.parent.rowAutoHeight) {
|
|
13882
|
+
addClass([conWrap, resWrap], 'e-transition');
|
|
13883
|
+
}
|
|
13836
13884
|
this.renderedLength = resWrap.querySelector('tbody').children.length;
|
|
13837
13885
|
const firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
|
|
13838
13886
|
const scrollHeight = this.parent.rowAutoHeight ?
|
|
@@ -14226,6 +14274,7 @@ class Render {
|
|
|
14226
14274
|
}
|
|
14227
14275
|
throw Error('Inject required modules');
|
|
14228
14276
|
}
|
|
14277
|
+
this.parent.uiStateValues.scheduleHeight = this.parent.element.offsetHeight;
|
|
14229
14278
|
this.parent.activeView.viewIndex = this.parent.viewIndex;
|
|
14230
14279
|
this.updateLabelText(viewName);
|
|
14231
14280
|
this.parent.activeView.addEventListener();
|
|
@@ -15914,6 +15963,7 @@ class ResourceBase {
|
|
|
15914
15963
|
args = {
|
|
15915
15964
|
cancel: false, event: (event) ? event.event : null, groupIndex: this.parent.uiStateValues.groupIndex, requestType: 'resourceChanged'
|
|
15916
15965
|
};
|
|
15966
|
+
this.parent.adaptiveGroupIndex = this.parent.uiStateValues.groupIndex;
|
|
15917
15967
|
this.parent.trigger(actionComplete, args);
|
|
15918
15968
|
}
|
|
15919
15969
|
});
|
|
@@ -16570,6 +16620,7 @@ let Schedule = class Schedule extends Component {
|
|
|
16570
16620
|
*/
|
|
16571
16621
|
constructor(options, element) {
|
|
16572
16622
|
super(options, element);
|
|
16623
|
+
this.adaptiveGroupIndex = 0;
|
|
16573
16624
|
}
|
|
16574
16625
|
/**
|
|
16575
16626
|
* Core method that initializes the control rendering.
|
|
@@ -16593,6 +16644,12 @@ let Schedule = class Schedule extends Component {
|
|
|
16593
16644
|
else {
|
|
16594
16645
|
removeClasses.push(DEVICE_CLASS);
|
|
16595
16646
|
}
|
|
16647
|
+
if (this.enableAdaptiveUI) {
|
|
16648
|
+
addClasses.push(ADAPTIVE_CLASS);
|
|
16649
|
+
}
|
|
16650
|
+
else {
|
|
16651
|
+
removeClasses.push(ADAPTIVE_CLASS);
|
|
16652
|
+
}
|
|
16596
16653
|
if (this.allowMultiDrag) {
|
|
16597
16654
|
addClasses.push(MULTI_DRAG);
|
|
16598
16655
|
}
|
|
@@ -17194,7 +17251,7 @@ let Schedule = class Schedule extends Component {
|
|
|
17194
17251
|
if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {
|
|
17195
17252
|
this.uiStateValues = {
|
|
17196
17253
|
expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,
|
|
17197
|
-
isIgnoreOccurrence: false, groupIndex:
|
|
17254
|
+
isIgnoreOccurrence: false, groupIndex: this.adaptiveGroupIndex, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false
|
|
17198
17255
|
};
|
|
17199
17256
|
}
|
|
17200
17257
|
this.currentTimezoneDate = this.getCurrentTime();
|
|
@@ -17686,6 +17743,9 @@ let Schedule = class Schedule extends Component {
|
|
|
17686
17743
|
&& document.activeElement.classList.contains(SUBJECT_CLASS))) {
|
|
17687
17744
|
return;
|
|
17688
17745
|
}
|
|
17746
|
+
if (this.virtualScrollModule && this.activeView.isTimelineView()) {
|
|
17747
|
+
this.virtualScrollModule.refreshLayout();
|
|
17748
|
+
}
|
|
17689
17749
|
if (this.activeViewOptions.timeScale.enable && this.activeView) {
|
|
17690
17750
|
this.activeView.highlightCurrentTime();
|
|
17691
17751
|
}
|
|
@@ -17697,7 +17757,12 @@ let Schedule = class Schedule extends Component {
|
|
|
17697
17757
|
&& !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {
|
|
17698
17758
|
this.activeView.resetColWidth();
|
|
17699
17759
|
this.notify(scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });
|
|
17700
|
-
|
|
17760
|
+
let isRemoteRefresh = false;
|
|
17761
|
+
if (this.activeViewOptions.enableLazyLoading && this.virtualScrollModule && this.virtualScrollModule.isRemoteRefresh) {
|
|
17762
|
+
isRemoteRefresh = this.virtualScrollModule.isRemoteRefresh;
|
|
17763
|
+
this.virtualScrollModule.isRemoteRefresh = false;
|
|
17764
|
+
}
|
|
17765
|
+
this.refreshEvents(isRemoteRefresh);
|
|
17701
17766
|
}
|
|
17702
17767
|
else {
|
|
17703
17768
|
this.notify(contentReady, {});
|
|
@@ -17880,7 +17945,7 @@ let Schedule = class Schedule extends Component {
|
|
|
17880
17945
|
* @private
|
|
17881
17946
|
*/
|
|
17882
17947
|
getPersistData() {
|
|
17883
|
-
return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft']);
|
|
17948
|
+
return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft', 'adaptiveGroupIndex']);
|
|
17884
17949
|
}
|
|
17885
17950
|
/**
|
|
17886
17951
|
* Called internally, if any of the property value changed.
|
|
@@ -22881,7 +22946,7 @@ class ViewBase {
|
|
|
22881
22946
|
const colWidth = (getElementWidth(contentBody) / (colElements.length / 2));
|
|
22882
22947
|
if (content.offsetHeight !== content.clientHeight) {
|
|
22883
22948
|
const resourceColumn = this.parent.element.querySelector('.' + RESOURCE_COLUMN_WRAP_CLASS);
|
|
22884
|
-
if (!isNullOrUndefined(resourceColumn)) {
|
|
22949
|
+
if (!isNullOrUndefined(resourceColumn) && resourceColumn.offsetHeight !== content.clientHeight) {
|
|
22885
22950
|
setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });
|
|
22886
22951
|
}
|
|
22887
22952
|
}
|
|
@@ -23698,6 +23763,20 @@ class VerticalView extends ViewBase {
|
|
|
23698
23763
|
append(tooltipTemplate, ntd);
|
|
23699
23764
|
}
|
|
23700
23765
|
ntd.setAttribute('data-date', cellDate.getTime().toString());
|
|
23766
|
+
const skeleton = 'full';
|
|
23767
|
+
if (!this.parent.activeViewOptions.timeScale.enable) {
|
|
23768
|
+
const announcementText = this.parent.globalize.formatDate(tdData.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });
|
|
23769
|
+
ntd.setAttribute('aria-label', announcementText);
|
|
23770
|
+
}
|
|
23771
|
+
else {
|
|
23772
|
+
const startDateText = this.parent.globalize.formatDate(cellDate, {
|
|
23773
|
+
type: 'dateTime', skeleton: skeleton, calendar: this.parent.getCalendarMode()
|
|
23774
|
+
});
|
|
23775
|
+
const endDateText = this.parent.globalize.formatDate(this.getEndDateFromStartDate(cellDate), {
|
|
23776
|
+
type: 'dateTime', skeleton: skeleton, calendar: this.parent.getCalendarMode()
|
|
23777
|
+
});
|
|
23778
|
+
ntd.setAttribute('aria-label', startDateText + ' ' + this.parent.localeObj.getConstant('endAt') + ' ' + endDateText);
|
|
23779
|
+
}
|
|
23701
23780
|
if (!isNullOrUndefined(tdData.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {
|
|
23702
23781
|
const groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :
|
|
23703
23782
|
tdData.groupIndex;
|
|
@@ -26924,11 +27003,14 @@ class TimelineYear extends Year {
|
|
|
26924
27003
|
groupIndex = this.colLevels.slice(-1)[0][parseInt(month.toString(), 10)].groupIndex;
|
|
26925
27004
|
classList$$1.push(WORKDAY_CLASS);
|
|
26926
27005
|
}
|
|
27006
|
+
const startDateText = this.parent.globalize.formatDate(date, { type: 'dateTime', skeleton: 'full', calendar: this.parent.getCalendarMode() });
|
|
27007
|
+
const endDateText = this.parent.globalize.formatDate(this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime())), { type: 'dateTime', skeleton: 'full', calendar: this.parent.getCalendarMode() });
|
|
26927
27008
|
const td = createElement('td', {
|
|
26928
27009
|
className: WORK_CELLS_CLASS,
|
|
26929
27010
|
attrs: {
|
|
26930
27011
|
'aria-selected': 'false',
|
|
26931
|
-
'data-date': date.getTime().toString()
|
|
27012
|
+
'data-date': date.getTime().toString(),
|
|
27013
|
+
'aria-label': startDateText + ' ' + this.parent.localeObj.getConstant('endAt') + ' ' + endDateText
|
|
26932
27014
|
}
|
|
26933
27015
|
});
|
|
26934
27016
|
addClass([td], classList$$1);
|