devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
160 lines (157 loc) • 5.67 kB
JavaScript
/**
* DevExtreme (cjs/ui/scheduler/header/dateNavigator.js)
* Version: 21.2.4
* Build date: Mon Dec 06 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
exports.getDateNavigator = void 0;
var _themes = require("../../themes");
var _date = _interopRequireDefault(require("../../../core/utils/date"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
function _extends() {
_extends = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key]
}
}
}
return target
};
return _extends.apply(this, arguments)
}
var trimTime = _date.default.trimTime;
var DATE_NAVIGATOR_CLASS = "dx-scheduler-navigator";
var PREVIOUS_BUTTON_CLASS = "dx-scheduler-navigator-previous";
var CALENDAR_BUTTON_CLASS = "dx-scheduler-navigator-caption";
var NEXT_BUTTON_CLASS = "dx-scheduler-navigator-next";
var DIRECTION_LEFT = -1;
var DIRECTION_RIGHT = 1;
var getDateNavigator = function(header, item) {
var items = [getPreviousButtonOptions(header), getCalendarButtonOptions(header), getNextButtonOptions(header)];
var stylingMode = (0, _themes.isMaterial)() ? "text" : "contained";
return _extends({
widget: "dxButtonGroup",
cssClass: DATE_NAVIGATOR_CLASS,
options: {
items: items,
stylingMode: stylingMode,
selectionMode: "none",
onItemClick: function(e) {
e.itemData.clickHandler(e)
}
}
}, item)
};
exports.getDateNavigator = getDateNavigator;
var getPreviousButtonOptions = function(header) {
return {
key: "previous",
icon: "chevronprev",
elementAttr: {
class: PREVIOUS_BUTTON_CLASS
},
clickHandler: function() {
return header._updateDateByDirection(DIRECTION_LEFT)
},
onContentReady: function(e) {
var previousButton = e.component;
previousButton.option("disabled", isPreviousButtonDisabled(header));
header._addEvent("min", (function() {
previousButton.option("disabled", isPreviousButtonDisabled(header))
}));
header._addEvent("currentDate", (function() {
previousButton.option("disabled", isPreviousButtonDisabled(header))
}));
header._addEvent("startViewDate", (function() {
previousButton.option("disabled", isPreviousButtonDisabled(header))
}))
}
}
};
var getCalendarButtonOptions = function(header) {
return {
key: "calendar",
text: header.captionText,
elementAttr: {
class: CALENDAR_BUTTON_CLASS
},
clickHandler: function(e) {
return header._showCalendar(e)
},
onContentReady: function(e) {
var calendarButton = e.component;
header._addEvent("currentView", (function() {
calendarButton.option("text", header.captionText)
}));
header._addEvent("currentDate", (function() {
calendarButton.option("text", header.captionText)
}));
header._addEvent("startViewDate", (function() {
calendarButton.option("text", header.captionText)
}));
header._addEvent("views", (function() {
calendarButton.option("text", header.captionText)
}));
header._addEvent("firstDayOfWeek", (function() {
calendarButton.option("text", header.captionText)
}))
}
}
};
var getNextButtonOptions = function(header) {
return {
key: "next",
icon: "chevronnext",
elementAttr: {
class: NEXT_BUTTON_CLASS
},
clickHandler: function() {
return header._updateDateByDirection(DIRECTION_RIGHT)
},
onContentReady: function(e) {
var nextButton = e.component;
nextButton.option("disabled", isNextButtonDisabled(header));
header._addEvent("min", (function() {
nextButton.option("disabled", isNextButtonDisabled(header))
}));
header._addEvent("currentDate", (function() {
nextButton.option("disabled", isNextButtonDisabled(header))
}));
header._addEvent("startViewDate", (function() {
nextButton.option("disabled", isNextButtonDisabled(header))
}))
}
}
};
var isPreviousButtonDisabled = function(header) {
var min = header.option("min");
if (!min) {
return false
}
min = new Date(min);
var caption = header._getCaption();
min = trimTime(min);
var previousDate = header._getNextDate(-1, caption.endDate);
return previousDate < min
};
var isNextButtonDisabled = function(header) {
var max = header.option("max");
if (!max) {
return false
}
max = new Date(max);
var caption = header._getCaption();
max = max.setHours(23, 59, 59);
var nextDate = header._getNextDate(1, caption.startDate);
return nextDate > max
};