devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
138 lines (136 loc) • 5.34 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/header/m_calendar.js)
* Version: 25.2.7
* Build date: Tue May 05 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _component_registrator = _interopRequireDefault(require("../../../core/component_registrator"));
var _devices = _interopRequireDefault(require("../../../core/devices"));
var _renderer = _interopRequireDefault(require("../../../core/renderer"));
var _ui = _interopRequireDefault(require("../../../ui/popover/ui.popover"));
var _ui2 = _interopRequireDefault(require("../../../ui/popup/ui.popup"));
var _widget = _interopRequireDefault(require("../../core/widget/widget"));
var _calendar = _interopRequireDefault(require("../../ui/calendar/calendar"));
var _scrollable = _interopRequireDefault(require("../../ui/scroll_view/scrollable"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const CALENDAR_CLASS = "dx-scheduler-navigator-calendar";
const CALENDAR_POPOVER_CLASS = "dx-scheduler-navigator-calendar-popover";
class SchedulerCalendar extends _widget.default {
async show(target) {
var _this$overlay2;
if (!SchedulerCalendar.isMobileLayout()) {
var _this$overlay;
null === (_this$overlay = this.overlay) || void 0 === _this$overlay || _this$overlay.option("target", target)
}
await (null === (_this$overlay2 = this.overlay) || void 0 === _this$overlay2 ? void 0 : _this$overlay2.show())
}
async hide() {
var _this$overlay3;
await (null === (_this$overlay3 = this.overlay) || void 0 === _this$overlay3 ? void 0 : _this$overlay3.hide())
}
_keyboardHandler(opts) {
var _this$calendar;
return (null === (_this$calendar = this.calendar) || void 0 === _this$calendar ? void 0 : _this$calendar._keyboardHandler(opts)) ?? false
}
_init() {
super._init();
this.$element()
}
_render() {
super._render();
this.renderOverlay()
}
renderOverlay() {
this.$element().addClass(CALENDAR_POPOVER_CLASS);
const isMobileLayout = SchedulerCalendar.isMobileLayout();
const overlayConfig = {
contentTemplate: () => this.createOverlayContent(),
onShown: () => {
var _this$calendar2;
null === (_this$calendar2 = this.calendar) || void 0 === _this$calendar2 || _this$calendar2.focus()
},
defaultOptionsRules: [{
device: () => isMobileLayout,
options: {
fullScreen: true,
showCloseButton: false,
toolbarItems: [{
shortcut: "cancel"
}],
_ignorePreventScrollEventsDeprecation: true,
preventScrollEvents: false,
enableBodyScroll: false
}
}]
};
if (isMobileLayout) {
this.overlay = this._createComponent(this.$element(), _ui2.default, overlayConfig)
} else {
this.overlay = this._createComponent(this.$element(), _ui.default, overlayConfig)
}
}
createOverlayContent() {
const result = (0, _renderer.default)("<div>").addClass(CALENDAR_CLASS);
this.calendar = this._createComponent(result, _calendar.default, this.getCalendarOptions());
if (SchedulerCalendar.isMobileLayout()) {
const scrollable = this.createScrollable(result);
return scrollable.$element()
}
return result
}
createScrollable(content) {
const result = this._createComponent("<div>", _scrollable.default, {
height: "auto",
direction: "both"
});
result.$content().append(content);
return result
}
_optionChanged(args) {
var _this$calendar3;
const {
name: name,
value: value
} = args;
if ("value" === name) {
null === (_this$calendar3 = this.calendar) || void 0 === _this$calendar3 || _this$calendar3.option("value", value)
}
}
getCalendarOptions() {
const {
value: value,
min: min,
max: max,
firstDayOfWeek: firstDayOfWeek,
focusStateEnabled: focusStateEnabled,
tabIndex: tabIndex,
onValueChanged: onValueChanged
} = this.option();
return {
value: value,
min: min,
max: max,
firstDayOfWeek: firstDayOfWeek,
focusStateEnabled: focusStateEnabled,
tabIndex: tabIndex,
onValueChanged: onValueChanged,
skipFocusCheck: true
}
}
static isMobileLayout() {
return !_devices.default.current().generic
}
}
exports.default = SchedulerCalendar;
(0, _component_registrator.default)("dxSchedulerCalendarPopup", SchedulerCalendar);