1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】MUI DatePickerの非活性/表示オプションについて

Posted at

前置き

今日は10月31日。
世間では、ハロウィンで騒いでいたりいなかったり…
そんな日は早く違う日に変更したい方も居ることだと思います。
そんなあなたはMUI DatePickerを使って変更しましょう!

前提

ライブラリはDayjsを使用
他のライブラリの場合は適宜変更して下さい。

基礎

'use client';

import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import React from 'react';


return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        <DatePicker />
    </LocalizationProvider>
);

image.png

カレンダーを出すとこんな感じ
image.png

日本圏表示にする

'use client';

import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import React from 'react';
import 'dayjs/locale/ja';

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        adapterLocale={'ja'}>
        <DatePicker />
    </LocalizationProvider>
);

image.png

これだけだと、カレンダー側はちぐはぐになる
image.png


直すためにカレンダー側に、フォーマットを設定する。

'use client';

import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import React from 'react';
import 'dayjs/locale/ja';

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker />
    </LocalizationProvider>
);

image.png

色々変えてみる

初期値に今日の日付を入れる

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker value={dayjs()}/>
    </LocalizationProvider>
);

image.png

読み取り専用

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker
            value={dayjs()}
            readOnly/>
    </LocalizationProvider>
);

image.png

無効

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker
            value={dayjs()}
            disabled/>
    </LocalizationProvider>
);

image.png

アイコンの非表示

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker
            value={dayjs()}
            disableOpenPicker/>
    </LocalizationProvider>
);

image.png

カレンダーでの日付の選択不可

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker
            value={dayjs()}
            disablePast/>
    </LocalizationProvider>
);

image.png

テキストのみ読み取り専用

return (
    <LocalizationProvider 
        dateAdapter={AdapterDayjs}
        dateFormats={{ monthAndYear: 'YYYY年M月' }}
        adapterLocale={'ja'}>
        <DatePicker
            value={dayjs()}
            slotProps={{
                textField: {
                    readOnly: 'readOnly',
                }, 
            }}/>
    </LocalizationProvider>
);

image.png

最後に

今回は、テキストのみ読み取り専用を実装するのに調べたので、
備忘録したわけで決してハロウィンになにかあるわけではありません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?