window.onload = function () {
const now = new Date();
const eventDateBoxValue = ko.observable(new Date(1981, 3, 27));
const viewModel = {
dateFormat: {
type: 'date',
value: now,
},
timeFormat: {
type: 'time',
value: now,
},
dateTimeFormat: {
type: 'datetime',
value: now,
},
customFormat: {
displayFormat: 'EEEE, MMM dd',
value: now,
},
dateByPicker: {
pickerType: 'rollers',
value: now,
},
disabled: {
type: 'datetime',
disabled: true,
value: now,
},
disabledDates: {
type: 'date',
pickerType: 'calendar',
value: new Date(2017, 0, 3),
disabledDates: federalHolidays,
},
clear: {
type: 'time',
showClearButton: true,
value: new Date(2015, 11, 1, 6),
},
eventDateBoxOptions: {
applyValueMode: 'useButtons',
value: eventDateBoxValue,
max: new Date(),
min: new Date(1900, 0, 1),
diffInDay: ko.computed(() => `${Math.floor(Math.abs((new Date() - eventDateBoxValue()) / (24 * 60 * 60 * 1000)))} days`),
},
};
ko.applyBindings(viewModel, document.getElementById('date-box-demo'));
};
<!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>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/22.2.3/css/dx.light.css" />
<script src="https://cdn3.devexpress.com/jslib/22.2.3/js/dx.all.js"></script>
<script src="data.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script src="index.js"></script>
</head>
<body class="dx-viewport">
<div class="demo-container">
<div id="date-box-demo">
<div class="dx-fieldset">
<div class="dx-field">
<div class="dx-field-label">Date</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: dateFormat"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Time</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: timeFormat"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Date and time</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: dateTimeFormat"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Custom format</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: customFormat"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Date picker</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: dateByPicker"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Clear button</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: clear"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Disabled</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: disabled"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Disable certain dates</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: disabledDates"></div>
</div>
</div>
</div>
<div class="dx-fieldset">
<div class="dx-fieldset-header">Event Handling</div>
<div class="dx-field">
<div class="dx-field-label">Set Birthday</div>
<div class="dx-field-value">
<div data-bind="dxDateBox: eventDateBoxOptions"></div>
</div>
</div>
<div class="dx-field">
<div class="dx-field-value">
Your age is <div id="age" data-bind="text: eventDateBoxOptions.diffInDay"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
#age {
display: inline-block;
}
const federalHolidays = [
new Date(2017, 0, 1),
new Date(2017, 0, 2),
new Date(2017, 0, 16),
new Date(2017, 1, 20),
new Date(2017, 4, 29),
new Date(2017, 6, 4),
new Date(2017, 8, 4),
new Date(2017, 9, 9),
new Date(2017, 10, 11),
new Date(2017, 10, 23),
new Date(2017, 11, 25),
];