or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

adapters-localization.mdcalendar-clock-components.mddate-pickers.mddatetime-pickers.mdfield-components.mdindex.mdtime-pickers.mdvalidation-utilities.md

datetime-pickers.mddocs/

0

# Date-Time Pickers

1

2

Date-time picker components provide combined date and time selection with tabbed interface for switching between date and time views.

3

4

## Capabilities

5

6

### DateTimePicker

7

8

Main responsive date-time picker component that combines date and time selection with automatic interface adaptation.

9

10

```typescript { .api }

11

/**

12

* Main responsive date-time picker component

13

* @param props - DateTimePicker configuration properties

14

* @returns JSX element for date-time picker

15

*/

16

function DateTimePicker<TDate>(props: DateTimePickerProps<TDate>): JSX.Element;

17

18

interface DateTimePickerProps<TDate> {

19

/** Current date-time value */

20

value?: TDate | null;

21

/** Callback fired when date-time changes */

22

onChange?: (value: TDate | null, context: PickerChangeContext) => void;

23

/** Input label text */

24

label?: React.ReactNode;

25

/** If true, the picker is disabled */

26

disabled?: boolean;

27

/** If true, the picker is read-only */

28

readOnly?: boolean;

29

/** If true, disable dates after today */

30

disableFuture?: boolean;

31

/** If true, disable dates before today */

32

disablePast?: boolean;

33

/** Minimum selectable date */

34

minDate?: TDate;

35

/** Maximum selectable date */

36

maxDate?: TDate;

37

/** Minimum selectable time */

38

minTime?: TDate;

39

/** Maximum selectable time */

40

maxTime?: TDate;

41

/** Minimum selectable date-time */

42

minDateTime?: TDate;

43

/** Maximum selectable date-time */

44

maxDateTime?: TDate;

45

/** Function to disable specific dates */

46

shouldDisableDate?: (day: TDate) => boolean;

47

/** Function to disable specific times */

48

shouldDisableTime?: (value: TDate, view: TimeView) => boolean;

49

/** Available views for the picker */

50

views?: readonly DateOrTimeView[];

51

/** View to show when picker opens */

52

openTo?: DateOrTimeView;

53

/** Format string for date-time display */

54

format?: string;

55

/** Time step options for time views */

56

timeSteps?: TimeStepOptions;

57

/** If true, use 12-hour format with AM/PM */

58

ampm?: boolean;

59

/** Props passed to picker slots */

60

slotProps?: DateTimePickerSlotProps<TDate>;

61

/** Component slots for customization */

62

slots?: DateTimePickerSlots<TDate>;

63

/** Default calendar month when no value is set */

64

defaultCalendarMonth?: TDate;

65

/** Custom day rendering function */

66

renderDay?: (day: TDate, selectedDays: TDate[], pickersDayProps: PickersDayProps<TDate>) => JSX.Element;

67

}

68

69

interface DateTimePickerSlots<TDate> {

70

field?: React.ElementType;

71

textField?: React.ElementType;

72

openPickerIcon?: React.ElementType;

73

switchViewButton?: React.ElementType;

74

switchViewIcon?: React.ElementType;

75

previousIconButton?: React.ElementType;

76

nextIconButton?: React.ElementType;

77

leftArrowIcon?: React.ElementType;

78

rightArrowIcon?: React.ElementType;

79

calendarHeader?: React.ElementType;

80

day?: React.ElementType;

81

toolbar?: React.ElementType;

82

tabs?: React.ElementType;

83

actionBar?: React.ElementType;

84

shortcuts?: React.ElementType;

85

layout?: React.ElementType;

86

}

87

88

interface DateTimePickerSlotProps<TDate> {

89

field?: PickerFieldSlotProps<TDate>;

90

textField?: BuiltInFieldTextFieldProps;

91

openPickerIcon?: IconButtonProps;

92

switchViewButton?: IconButtonProps;

93

switchViewIcon?: SvgIconProps;

94

previousIconButton?: IconButtonProps;

95

nextIconButton?: IconButtonProps;

96

leftArrowIcon?: SvgIconProps;

97

rightArrowIcon?: SvgIconProps;

98

calendarHeader?: PickersCalendarHeaderSlotProps<TDate>;

99

day?: PickersDayProps<TDate>;

100

toolbar?: DateTimePickerToolbarProps<TDate>;

101

tabs?: DateTimePickerTabsProps;

102

actionBar?: PickersActionBarProps;

103

shortcuts?: PickersShortcutsProps<TDate>;

104

layout?: PickersLayoutSlotProps<TDate>;

105

}

106

107

type DateOrTimeView = DateView | TimeView;

108

type DateView = 'year' | 'month' | 'day';

109

type TimeView = 'hours' | 'minutes' | 'seconds';

110

```

111

112

**Usage Examples:**

113

114

```typescript

115

import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

116

import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';

117

import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';

118

import dayjs, { Dayjs } from 'dayjs';

119

120

// Basic date-time picker

121

function BasicDateTimePicker() {

122

const [value, setValue] = React.useState<Dayjs | null>(null);

123

124

return (

125

<LocalizationProvider dateAdapter={AdapterDayjs}>

126

<DateTimePicker

127

label="Select date and time"

128

value={value}

129

onChange={(newValue) => setValue(newValue)}

130

/>

131

</LocalizationProvider>

132

);

133

}

134

135

// Date-time picker with validation

136

function AppointmentDateTimePicker() {

137

const [value, setValue] = React.useState<Dayjs | null>(null);

138

139

return (

140

<LocalizationProvider dateAdapter={AdapterDayjs}>

141

<DateTimePicker

142

label="Appointment date & time"

143

value={value}

144

onChange={(newValue) => setValue(newValue)}

145

disablePast

146

minDateTime={dayjs()}

147

maxDateTime={dayjs().add(3, 'month')}

148

shouldDisableTime={(time, view) => {

149

// Disable times outside business hours

150

if (view === 'hours') {

151

return time.hour() < 9 || time.hour() > 17;

152

}

153

return false;

154

}}

155

views={['year', 'month', 'day', 'hours', 'minutes']}

156

timeSteps={{ minutes: 30 }}

157

ampm={false}

158

/>

159

</LocalizationProvider>

160

);

161

}

162

```

163

164

### DesktopDateTimePicker

165

166

Desktop-optimized date-time picker with popover interface and tabbed date/time selection.

167

168

```typescript { .api }

169

/**

170

* Desktop-optimized date-time picker with popover interface

171

* @param props - DesktopDateTimePicker configuration properties

172

* @returns JSX element for desktop date-time picker

173

*/

174

function DesktopDateTimePicker<TDate>(props: DesktopDateTimePickerProps<TDate>): JSX.Element;

175

176

interface DesktopDateTimePickerProps<TDate> extends Omit<DateTimePickerProps<TDate>, 'slots' | 'slotProps'> {

177

/** Component slots for desktop customization */

178

slots?: DesktopDateTimePickerSlots<TDate>;

179

/** Props passed to desktop-specific slots */

180

slotProps?: DesktopDateTimePickerSlotProps<TDate>;

181

}

182

183

interface DesktopDateTimePickerSlots<TDate> extends DateTimePickerSlots<TDate> {

184

desktopPaper?: React.ElementType;

185

popper?: React.ElementType;

186

}

187

188

interface DesktopDateTimePickerSlotProps<TDate> extends DateTimePickerSlotProps<TDate> {

189

desktopPaper?: PaperProps;

190

popper?: PopperProps;

191

}

192

```

193

194

### MobileDateTimePicker

195

196

Mobile-optimized date-time picker with modal interface and touch-friendly navigation.

197

198

```typescript { .api }

199

/**

200

* Mobile-optimized date-time picker with modal interface

201

* @param props - MobileDateTimePicker configuration properties

202

* @returns JSX element for mobile date-time picker

203

*/

204

function MobileDateTimePicker<TDate>(props: MobileDateTimePickerProps<TDate>): JSX.Element;

205

206

interface MobileDateTimePickerProps<TDate> extends Omit<DateTimePickerProps<TDate>, 'slots' | 'slotProps'> {

207

/** Component slots for mobile customization */

208

slots?: MobileDateTimePickerSlots<TDate>;

209

/** Props passed to mobile-specific slots */

210

slotProps?: MobileDateTimePickerSlotProps<TDate>;

211

}

212

213

interface MobileDateTimePickerSlots<TDate> extends DateTimePickerSlots<TDate> {

214

mobilePaper?: React.ElementType;

215

dialog?: React.ElementType;

216

}

217

218

interface MobileDateTimePickerSlotProps<TDate> extends DateTimePickerSlotProps<TDate> {

219

mobilePaper?: PaperProps;

220

dialog?: DialogProps;

221

}

222

```

223

224

### StaticDateTimePicker

225

226

Always-visible date-time picker without input field, suitable for embedded date-time selection.

227

228

```typescript { .api }

229

/**

230

* Always-visible date-time picker without input field

231

* @param props - StaticDateTimePicker configuration properties

232

* @returns JSX element for static date-time picker

233

*/

234

function StaticDateTimePicker<TDate>(props: StaticDateTimePickerProps<TDate>): JSX.Element;

235

236

interface StaticDateTimePickerProps<TDate> extends Omit<DateTimePickerProps<TDate>, 'open' | 'onClose' | 'slots' | 'slotProps'> {

237

/** Component slots for static customization */

238

slots?: StaticDateTimePickerSlots<TDate>;

239

/** Props passed to static-specific slots */

240

slotProps?: StaticDateTimePickerSlotProps<TDate>;

241

/** Display orientation */

242

orientation?: 'landscape' | 'portrait';

243

}

244

245

interface StaticDateTimePickerSlots<TDate> extends Omit<DateTimePickerSlots<TDate>, 'field' | 'textField' | 'openPickerIcon'> {

246

staticWrapperInner?: React.ElementType;

247

}

248

249

interface StaticDateTimePickerSlotProps<TDate> extends Omit<DateTimePickerSlotProps<TDate>, 'field' | 'textField' | 'openPickerIcon'> {

250

staticWrapperInner?: React.HTMLAttributes<HTMLDivElement>;

251

}

252

```

253

254

### DateTimePickerTabs

255

256

Tab component for switching between date and time views in date-time pickers.

257

258

```typescript { .api }

259

/**

260

* Tab component for date-time picker view switching

261

* @param props - DateTimePickerTabs configuration properties

262

* @returns JSX element for date-time picker tabs

263

*/

264

function DateTimePickerTabs(props: DateTimePickerTabsProps): JSX.Element;

265

266

interface DateTimePickerTabsProps {

267

/** Currently active view */

268

view: DateOrTimeView;

269

/** Callback when view changes */

270

onViewChange: (view: DateOrTimeView) => void;

271

/** If true, date tab is hidden */

272

hideDateTab?: boolean;

273

/** If true, time tab is hidden */

274

hideTimeTab?: boolean;

275

/** Icon for date tab */

276

dateIcon?: React.ReactNode;

277

/** Icon for time tab */

278

timeIcon?: React.ReactNode;

279

/** Additional CSS classes */

280

className?: string;

281

/** Inline styles */

282

sx?: SxProps<Theme>;

283

}

284

```

285

286

### DateTimePickerToolbar

287

288

Toolbar component displayed in date-time pickers showing selected date-time and view controls.

289

290

```typescript { .api }

291

/**

292

* Toolbar component for date-time pickers

293

* @param props - DateTimePickerToolbar configuration properties

294

* @returns JSX element for date-time picker toolbar

295

*/

296

function DateTimePickerToolbar<TDate>(props: DateTimePickerToolbarProps<TDate>): JSX.Element;

297

298

interface DateTimePickerToolbarProps<TDate> {

299

/** Current date-time value */

300

value?: TDate | null;

301

/** Currently active view */

302

view: DateOrTimeView;

303

/** Available views */

304

views: readonly DateOrTimeView[];

305

/** Callback when view changes */

306

onViewChange: (view: DateOrTimeView) => void;

307

/** Date adapter instance */

308

adapter: MuiPickersAdapter<TDate>;

309

/** Timezone for date-time operations */

310

timezone: PickersTimezone;

311

/** If true, use 12-hour format */

312

ampm?: boolean;

313

/** If true, toolbar is hidden */

314

hidden?: boolean;

315

/** Additional CSS classes */

316

className?: string;

317

/** Inline styles */

318

sx?: SxProps<Theme>;

319

}

320

```

321

322

## CSS Classes

323

324

### DateTimePickerTabs Classes

325

326

```typescript { .api }

327

const dateTimePickerTabsClasses: {

328

root: string;

329

};

330

331

type DateTimePickerTabsClassKey = keyof typeof dateTimePickerTabsClasses;

332

interface DateTimePickerTabsClasses extends Record<DateTimePickerTabsClassKey, string> {}

333

```

334

335

### DateTimePickerToolbar Classes

336

337

```typescript { .api }

338

const dateTimePickerToolbarClasses: {

339

root: string;

340

dateContainer: string;

341

timeContainer: string;

342

timeDigitsContainer: string;

343

separator: string;

344

ampmSelection: string;

345

ampmLandscape: string;

346

ampmLabel: string;

347

};

348

349

type DateTimePickerToolbarClassKey = keyof typeof dateTimePickerToolbarClasses;

350

interface DateTimePickerToolbarClasses extends Record<DateTimePickerToolbarClassKey, string> {}

351

```

352

353

## Shared Types

354

355

```typescript { .api }

356

interface DateTimePickerFieldProps<TDate> {

357

value?: TDate | null;

358

onChange?: (value: TDate | null, context: FieldChangeContext<TDate>) => void;

359

format?: string;

360

disabled?: boolean;

361

readOnly?: boolean;

362

ampm?: boolean;

363

}

364

```