Your search did not match any results.
Scheduler

Adaptability

When the adaptivityEnabled option is set to true, Scheduler elements adapt to small screens as follows:

  • Cell overflow indicators become larger to accommodate touch gestures.
  • The appointment list for a chosen date slides in from the edge of the screen.
  • The appointment details form occupies the entire screen.
  • Instead of the view switcher, a drop-down menu is used to switch between views. To open this menu, users should click or tap a button in the upper right corner.

In this demo, we also added the floating action button as an alternative way to create a new appointment. The button is implemented with the SpeedDialAction component.

Copy to CodePen
Apply
Reset
var DemoApp = angular.module('DemoApp', ['dx']); DemoApp.controller('DemoController', function DemoController($scope) { $scope.scheduler = null; $scope.schedulerOptions = { dataSource: data, views: ["week", "month"], adaptivityEnabled: true, currentView: "month", startDayHour: 9, currentDate: new Date(2017, 4, 25), height: 590, resources: [{ fieldExpr: "priorityId", dataSource: priorities, label: "Priority" }], }; $scope.speedDialActionOptions = { icon: "plus", onClick: showAppointmentPopup } function showAppointmentPopup() { var scheduler = $('#scheduler').dxScheduler('instance'); scheduler.showAppointmentPopup(createAppointmentPopupData()); } function createAppointmentPopupData() { var scheduler = $('#scheduler').dxScheduler('instance'); var currentDate = scheduler.option('currentDate'); var cellDuration = scheduler.option('cellDuration'); return { startDate: new Date(currentDate), endDate: new Date(currentDate.setMinutes(cellDuration)) }; } });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.1.8/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.1.8/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular.min.js"></script> <script>window.angular || document.write(decodeURIComponent('%3Cscript src="js/angular.min.js"%3E%3C\/script%3E'))</script> <script src="https://cdn3.devexpress.com/jslib/20.1.8/js/dx.all.js"></script> <script src="data.js"></script> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container" ng-app="DemoApp" ng-controller="DemoController"> <div id="scheduler" dx-scheduler="schedulerOptions"></div> <div id="speed-dial-action" dx-speed-dial-action="speedDialActionOptions"></div> </div> </body> </html>
@media only screen and (max-width: 370px) { .dx-popup:not(.dx-scheduler-appointment-popup) .dx-dialog .dx-popup-bottom.dx-toolbar .dx-toolbar-items-container { height: auto; } .dx-popup:not(.dx-scheduler-appointment-popup) .dx-dialog .dx-toolbar-items-container .dx-toolbar-center { display: flex; flex-direction: column; } .dx-popup:not(.dx-scheduler-appointment-popup) .dx-dialog .dx-toolbar-items-container .dx-toolbar-center .dx-toolbar-button { padding: 0; } .dx-popup:not(.dx-scheduler-appointment-popup) .dx-dialog .dx-toolbar-items-container .dx-toolbar-center .dx-toolbar-button .dx-button { width: 200px; } .dx-popup:not(.dx-scheduler-appointment-popup) .dx-dialog .dx-toolbar-items-container .dx-toolbar-center .dx-toolbar-button:nth-child(1) { margin-bottom: 12px; } }
var data = [ { text: "Website Re-Design Plan", startDate: new Date(2017, 4, 1, 9, 30), endDate: new Date(2017, 4, 1, 11, 30), recurrenceRule: "FREQ=WEEKLY;BYDAY=MO,FR;WKST=TU;INTERVAL=2;COUNT=32", }, { text: "Book Flights to San Fran for Sales Trip", startDate: new Date(2017, 4, 1, 9, 30), endDate: new Date(2017, 4, 1, 11, 30), recurrenceRule: "FREQ=WEEKLY;BYDAY=MO,FR;INTERVAL=4;COUNT=32", allDay: true, priorityId: [1] }, { text: "Install New Router in Dev Room", startDate: new Date(2017, 4, 1, 9, 30), endDate: new Date(2017, 4, 1, 11, 30), recurrenceRule: "FREQ=WEEKLY;BYDAY=FR;INTERVAL=2;COUNT=32" }, { text: "Approve Personal Computer Upgrade Plan", startDate: new Date(2017, 4, 10, 10, 0), endDate: new Date(2017, 4, 10, 11, 0), recurrenceRule: "FREQ=WEEKLY;BYDAY=WE;INTERVAL=2;COUNT=32", priorityId: [2] }, { text: "Final Budget Review", startDate: new Date(2017, 4, 25, 12, 0), endDate: new Date(2017, 4, 25, 13, 35) }, { text: "New Brochures", startDate: new Date(2017, 4, 25, 14, 30), endDate: new Date(2017, 4, 25, 15, 45) }, { text: "Install New Database", startDate: new Date(2017, 4, 25, 9, 45), endDate: new Date(2017, 4, 25, 11, 15) }, { text: "Approve New Online Marketing Strategy", startDate: new Date(2017, 4, 25, 12, 0), endDate: new Date(2017, 4, 25, 14, 0) }, { text: "Upgrade Personal Computers", startDate: new Date(2017, 4, 25, 15, 15), endDate: new Date(2017, 4, 25, 16, 30) }, { text: "Upgrade Personal Computers", startDate: new Date(2017, 4, 26, 15, 15), endDate: new Date(2017, 4, 26, 16, 30) } ]; var priorities = [ { text: "High priority", id: 1, color: "#cc5c53" }, { text: "Low priority", id: 2, color: "#ff9747" } ];