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: Rueben Jacobs

Last Updated:

Views: 5583

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Rueben Jacobs

Birthday: 1999-03-14

Address: 951 Caterina Walk, Schambergerside, CA 67667-0896

Phone: +6881806848632

Job: Internal Education Planner

Hobby: Candle making, Cabaret, Poi, Gambling, Rock climbing, Wood carving, Computer programming

Introduction: My name is Rueben Jacobs, I am a cooperative, beautiful, kind, comfortable, glamorous, open, magnificent person who loves writing and wants to share my knowledge and understanding with you.