カレンダーを描画する際には「react-calendar」ライブラリを使用していたのですが、今回はカレンダーにスケジュールと登録する必要があるとのことで、別のライブラリを導入しました。
それが、「react-scheduler」ライブラリです。
GitHub のページはこちらから。
aldabil21/react-scheduler: React scheduler component based on Material-UI & date-fns
https://github.com/aldabil21/react-scheduler
インストール方法は、まずコマンドで下記を実行します。
npm install @aldabil/react-scheduler --save
…が、GitHub ではこれだけしか説明がありませんでしたが、実際に実行してみると他にもいろいろインストールする必要があるようで…。
個人的には、package.json
を開いて下記を追加して npm install
コマンドを実行することをおすすめします。
{ "@aldabil/react-scheduler": "^2.2.1", "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@mui/icons-material": "^5.6.2", "@mui/lab": "^5.0.0-alpha.81", "@mui/material": "^5.7.0", "@mui/styled-engine": "^5.7.0" }
上記がインストール出来たら準備は完了です。
あとはページを参考にコードを追加しましょう。
サンプルコードは下記のとおりです。
まず、import 文でライブラリをインポートします。
import { Scheduler } from "@aldabil/react-scheduler"; import ja from 'date-fns/locale/ja'
render 内には下記を追加します。
<Scheduler locale={ja} view="month" day={null} week={null} events={[ { event_id: 1, title: "Event 1", start: new Date("2022/5/2 09:30"), end: new Date("2022/5/2 10:30"), }, { event_id: 2, title: "Event 2", start: new Date("2022/5/4 10:00"), end: new Date("2022/5/4 11:00"), }, ]} />
上記コードでは、予定を追加しているのに加えて、週カレンダーと日カレンダーを表示しないようにしています。
今回は月のカレンダーのみが表示されればOKという仕様なのでこのようにしていますが、適宜変更してください。
また、locale
に ja
を指定することで、カレンダーを日本語化しています。
…が、何故か今日に戻る Today ボタンだけ英語なので、こちらも変更できるか調査中です。
触ってみた感じ、分かりやすいしカスタマイズもしやすかったです!
あとは、過去の月には戻れないようにしたり、3ヶ月以上未来の月は表示できないようにしたいので、そのあたりを調べる予定です。
以上、React でスケジューラーを実装できるライブラリ「react-scheduler」のご紹介でした。
ご参考になれば幸いです。