React Date Box - Overview (2024)

import React, { useCallback, useMemo, useState } from 'react';import DateBox, { DateBoxTypes } from 'devextreme-react/date-box';import service from './data.ts';const dateTimeLabel = { 'aria-label': 'Date Time' };const dateLabel = { 'aria-label': 'Date' };const timeLabel = { 'aria-label': 'Time' };const disabledLabel = { 'aria-label': 'Disabled' };const pickerLabel = { 'aria-label': 'Picker' };const clearLabel = { 'aria-label': 'Clear' };const customFormatLabel = { 'aria-label': 'Custom Format' };const birthDateLabel = { 'aria-label': 'Birth Date' };function App() { const [value, setValue] = useState(new Date(1981, 3, 27)); const now = new Date(); const firstWorkDay2017 = new Date(2017, 0, 3); const min = new Date(1900, 0, 1); const dateClear = new Date(2015, 11, 1, 6); const disabledDates = service.getFederalHolidays(); const diffInDay = useMemo( () => `${Math.floor( Math.abs((new Date().getTime() - value.getTime()) / (24 * 60 * 60 * 1000)), )} days`, [value], ); const onValueChanged = useCallback((e: DateBoxTypes.ValueChangedEvent) => { setValue(e.value); }, []); return ( <div> <div className="dx-fieldset"> <div className="dx-field"> <div className="dx-field-label">Date</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={dateLabel} type="date" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Time</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={timeLabel} type="time" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Date and time</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={dateTimeLabel} type="datetime" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Custom format</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={customFormatLabel} displayFormat="EEEE, MMM dd" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Date picker</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={pickerLabel} pickerType="rollers" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Clear button</div> <div className="dx-field-value"> <DateBox defaultValue={dateClear} type="time" inputAttr={clearLabel} showClearButton={true} /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Disabled</div> <div className="dx-field-value"> <DateBox defaultValue={now} type="datetime" inputAttr={disabledLabel} disabled={true} /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Disable certain dates</div> <div className="dx-field-value"> <DateBox defaultValue={firstWorkDay2017} type="date" pickerType="calendar" inputAttr={disabledLabel} disabledDates={disabledDates} /> </div> </div> </div> <div className="dx-fieldset"> <div className="dx-fieldset-header">Event Handling</div> <div className="dx-field"> <div className="dx-field-label">Set Birthday</div> <div className="dx-field-value"> <DateBox applyValueMode="useButtons" value={value} min={min} max={now} inputAttr={birthDateLabel} onValueChanged={onValueChanged} /> </div> </div> <div className="dx-field"> <div className="dx-field-value"> Your age is <div id="age">{diffInDay}</div> </div> </div> </div> </div> );}export default App;

import React, { useCallback, useMemo, useState } from 'react';import DateBox from 'devextreme-react/date-box';import service from './data.js';const dateTimeLabel = { 'aria-label': 'Date Time' };const dateLabel = { 'aria-label': 'Date' };const timeLabel = { 'aria-label': 'Time' };const disabledLabel = { 'aria-label': 'Disabled' };const pickerLabel = { 'aria-label': 'Picker' };const clearLabel = { 'aria-label': 'Clear' };const customFormatLabel = { 'aria-label': 'Custom Format' };const birthDateLabel = { 'aria-label': 'Birth Date' };function App() { const [value, setValue] = useState(new Date(1981, 3, 27)); const now = new Date(); const firstWorkDay2017 = new Date(2017, 0, 3); const min = new Date(1900, 0, 1); const dateClear = new Date(2015, 11, 1, 6); const disabledDates = service.getFederalHolidays(); const diffInDay = useMemo( () => `${Math.floor( Math.abs((new Date().getTime() - value.getTime()) / (24 * 60 * 60 * 1000)), )} days`, [value], ); const onValueChanged = useCallback((e) => { setValue(e.value); }, []); return ( <div> <div className="dx-fieldset"> <div className="dx-field"> <div className="dx-field-label">Date</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={dateLabel} type="date" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Time</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={timeLabel} type="time" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Date and time</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={dateTimeLabel} type="datetime" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Custom format</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={customFormatLabel} displayFormat="EEEE, MMM dd" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Date picker</div> <div className="dx-field-value"> <DateBox defaultValue={now} inputAttr={pickerLabel} pickerType="rollers" /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Clear button</div> <div className="dx-field-value"> <DateBox defaultValue={dateClear} type="time" inputAttr={clearLabel} showClearButton={true} /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Disabled</div> <div className="dx-field-value"> <DateBox defaultValue={now} type="datetime" inputAttr={disabledLabel} disabled={true} /> </div> </div> <div className="dx-field"> <div className="dx-field-label">Disable certain dates</div> <div className="dx-field-value"> <DateBox defaultValue={firstWorkDay2017} type="date" pickerType="calendar" inputAttr={disabledLabel} disabledDates={disabledDates} /> </div> </div> </div> <div className="dx-fieldset"> <div className="dx-fieldset-header">Event Handling</div> <div className="dx-field"> <div className="dx-field-label">Set Birthday</div> <div className="dx-field-value"> <DateBox applyValueMode="useButtons" value={value} min={min} max={now} inputAttr={birthDateLabel} onValueChanged={onValueChanged} /> </div> </div> <div className="dx-field"> <div className="dx-field-value"> Your age is <div id="age">{diffInDay}</div> </div> </div> </div> </div> );}export default App;

import React from 'react';import ReactDOM from 'react-dom';import App from './App.tsx';ReactDOM.render(<App />, document.getElementById('app'));

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),];export default { getFederalHolidays() { return federalHolidays; },};

window.exports = window.exports || {};window.config = { transpiler: 'ts', typescriptOptions: { module: 'system', emitDecoratorMetadata: true, experimentalDecorators: true, jsx: 'react', }, meta: { 'react': { 'esModule': true, }, 'typescript': { 'exports': 'ts', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, }, paths: { 'npm:': 'https://unpkg.com/', }, defaultExtension: 'js', map: { 'ts': 'npm:plugin-typescript@4.2.4/lib/plugin.js', 'typescript': 'npm:typescript@4.2.4/lib/typescript.js', 'react': 'npm:react@17.0.2/umd/react.development.js', 'react-dom': 'npm:react-dom@17.0.2/umd/react-dom.development.js', 'prop-types': 'npm:prop-types@15.8.1/prop-types.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.1/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@23.2.5/cjs', 'devextreme-react': 'npm:devextreme-react@23.2.5/cjs', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.6.4/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.5/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.51/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.11/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'devextreme-cldr-data': 'npm:devextreme-cldr-data@1.0.3', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.4/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.4/parser-html.js', }, packages: { 'devextreme': { defaultExtension: 'js', }, 'devextreme-react': { main: 'index.js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/localization/messages': { format: 'json', defaultExtension: '', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.12/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, react: true, },};System.config(window.config);

import React from 'react';import ReactDOM from 'react-dom';import App from './App.js';ReactDOM.render(<App />, document.getElementById('app'));

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),];export default { getFederalHolidays() { return federalHolidays; },};

<!DOCTYPE html><html> <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" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/23.2.5/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="https://unpkg.com/core-js@2.6.12/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.tsx"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body></html>

#age { display: inline-block;}

React Date Box - Overview (2024)
Top Articles
Latest Posts
Article information

Author: Catherine Tremblay

Last Updated:

Views: 5683

Rating: 4.7 / 5 (67 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Catherine Tremblay

Birthday: 1999-09-23

Address: Suite 461 73643 Sherril Loaf, Dickinsonland, AZ 47941-2379

Phone: +2678139151039

Job: International Administration Supervisor

Hobby: Dowsing, Snowboarding, Rowing, Beekeeping, Calligraphy, Shooting, Air sports

Introduction: My name is Catherine Tremblay, I am a precious, perfect, tasty, enthusiastic, inexpensive, vast, kind person who loves writing and wants to share my knowledge and understanding with you.