mcpField
S
syncfusion-react-datepicker

syncfusion-react-datepicker

github.com/syncfusion開発3169 回インストール1 週間前に更新
リポジトリ

syncfusion-react-datepicker について

SyncfusionのReact DatePicker実装を支援するスキルで、日付入力フォームや画面を作る開発者向けです。カレンダー操作、検証、ローカライズ、アクセシビリティ、プログラム制御を説明します。

主な機能

  1. 01カレンダーポップアップと月・年・十年表示
  2. 02日付書式とマスク入力
  3. 03最小・最大日付の検証
  4. 04ロケール、RTL、カレンダー設定
  5. 05日付セルのカスタマイズ
  6. 06キーボード操作とプログラム制御

活用シーン

  1. 01Reactフォームに日付入力欄を作成
  2. 02選択可能な日付を制限し無効値を補正
  3. 03ロケールに合わせて日付表示とカレンダー動作を調整
  4. 04カレンダーの日付とキーボード操作をカスタマイズ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/syncfusion/react-ui-components-skills --skill syncfusion-react-datepicker

インストール後、Claude Code で/syncfusion-react-datepickerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
accessibility-and-keyboard.md
customization-and-styling.md
date-formats-and-input.md
date-masking-and-strict-mode.md
date-range-and-validation.md
date-views-and-navigation.md
getting-started.md
globalization-and-localization.md

詳細

DatePicker の実装

コンポーネントの概要

DatePicker は、豊富な機能を備えた日付選択用の Syncfusion React コンポーネントです。

  • カレンダーポップアップ - ナビゲーション機能を備えたビジュアルな日付選択
  • 柔軟な書式設定 - パターンサポート付きの表示形式と入力形式
  • マスク入力 - enableMask を使ったセグメント単位の日付入力と maskPlaceholder
  • 範囲検証 - strictMode による自動修正機能付きの最小日付/最大日付
  • 複数のビュー - start プロパティと depth プロパティによる月、年、10年単位のビュー
  • 日のセルのカスタマイズ - renderDayCell イベントによる週末の無効化、特定の日付の強調表示
  • 完全なグローバル化対応 - 150 以上のカルチャ、RTL(enableRtl)、ロケール固有の書式設定、firstDayOfWeek
  • WCAG 2.2 準拠 - キーボードナビゲーションと ARIA 属性を備えた、完全なアクセシビリティ対応
  • フォーム対応 - 制御コンポーネント、React フック、フォーム検証との統合
  • プログラムによる制御 - show()、hide()、focusIn()、focusOut()、navigateTo()、currentView()

API の概要

主なプロパティ
プロパティ型デフォルト説明
valueDatenull選択された日付
minDate1900-01-01選択可能な最小日付
maxDate2099-12-31選択可能な最大日付
formatstring | FormatObjectnull表示形式(例:"dd/MM/yyyy")
inputFormatsstring[] | FormatObject[]null受け付ける入力形式の配列
placeholderstringnull入力欄のプレースホルダーテキスト
enabledbooleantrueコンポーネントの有効/無効を切り替えます
readonlybooleanfalse読み取り専用状態
allowEditbooleantrue入力テキストボックスの編集を許可します
strictModebooleanfalse範囲外の日付を自動修正します
showClearButtonbooleantrueクリアボタンの表示/非表示を切り替えます
showTodayButtonbooleantrue今日ボタンの表示/非表示を切り替えます
startCalendarViewMonth初期ビュー:「Month」、「Year」、「Decade」
depthCalendarViewMonthナビゲーションの最深レベル
enableMaskbooleanfalseマスク付き日付入力を有効にします
maskPlaceholderMaskPlaceholderModel{...}マスク入力用のセグメントプレースホルダー
enableRtlbooleanfalse右から左への表示
localestring''カルチャ/ロケールコード
firstDayOfWeeknumber0週の初日(0=日曜日)
weekNumberbooleanfalse週番号を表示します
weekRuleWeekRuleFirstDay年の最初の週のルール
calendarModeCalendarTypeGregorianカレンダーの種類(グレゴリオ暦またはイスラム暦)
dayHeaderFormatDayHeaderFormatsShortヘッダー内の日名の形式
floatLabelTypeFloatLabelTypeNeverフローティングラベルの動作
fullScreenModebooleanfalseモバイルでポップアップを全画面表示します
openOnFocusbooleanfalse入力欄にフォーカスしたときにポップアップを開きます
serverTimezoneOffsetnumbernullサーバーのタイムゾーンオフセット
cssClassstringnullカスタム CSS クラス
htmlAttributes{ [key: string]: string }{}追加の HTML 属性
keyConfigs{ [key: string]: string }nullカスタムキー操作のマッピング
widthnumber | stringnullコンポーネントの幅
zIndexnumber1000ポップアップの z-index
enablePersistencebooleanfalse再読み込み後も状態を保持します
メソッド
メソッド戻り値説明
show()voidカレンダーポップアップを開きます
hide()voidカレンダーポップアップを閉じます
focusIn()voidコンポーネントにフォーカスを設定します
focusOut()voidコンポーネントからフォーカスを外します
navigateTo(view, date)void指定したビューと日付に移動します
currentView()string現在のカレンダービュー名を返します
getPersistData()string保持された状態データを取得します
removeDate(dates)void値から日付を削除します
destroy()voidコンポーネントを破棄します
イベント
イベント引数の型説明
changeChangedEventArgs選択した日付が変更されたときに発火します
focusFocusEventArgs入力欄がフォーカスを受け取ったときに発火します
blurBlurEventArgs入力欄がフォーカスを失ったときに発火します
openPreventableEventArgs | PopupObjectArgsポップアップが開いたときに発火します
closePreventableEventArgs | PopupObjectArgsポップアップが閉じたときに発火します
clearedClearedEventArgs値がクリアされたときに発火します
createdObjectコンポーネントが作成されたときに発火します
destroyedObjectコンポーネントが破棄されたときに発火します
navigatedNavigatedEventArgsカレンダーの表示が切り替わったときに発火します
renderDayCellRenderDayCellEventArgs各日のセルが描画されたときに発火します

ドキュメントとナビゲーションガイド

ユーザーが DatePicker についてサポートを必要としている場合は、適切なリファレンスを案内してください。

はじめに

📄 参照: references/getting-started.md

  • npm によるインストール(@syncfusion/ej2-react-calendars)
  • CSS テーマのインポート(material3、bootstrap、fluent、tailwind)
  • コンポーネントのインポートとセットアップ
  • DatePickerComponent を使った基本的な JSX の実装
  • 関数コンポーネントとクラスコンポーネントの例
  • 最初のアプリケーションの実行
日付形式と入力

📄 参照: references/date-formats-and-input.md

  • 表示形式のプロパティとパターン(yyyy-MM-dd、dd/MM/yyyy など)
  • カスタム形式指定子(# および 0 のパターン)
  • 柔軟な日付入力に対応する入力形式(複数形式の受け付け)
  • 実際のシナリオを使った形式の例
  • ユーザー入力の自動解析と変換
  • 文化に基づく既定の形式設定
日付範囲と検証

📄 参照: references/date-range-and-validation.md

  • 範囲を制限する最小日付と最大日付のプロパティ
  • 範囲の検証とエラー状態
  • 範囲外の日付を自動修正する strictMode
  • 範囲外の動作とエラー処理
  • 有効範囲外の日付の無効化
  • エッジケースと注意点
日付ビューとナビゲーション

📄 参照: references/date-views-and-navigation.md

  • 初期表示を設定する Start プロパティ(月、年、十年)
  • 表示レベルを制限する Depth プロパティ
  • カレンダーのナビゲーションとユーザー操作
  • 月と年の選択ショートカット
  • 異なるビュー間の移動
  • 既定の動作とベストプラクティス
カスタマイズとスタイル設定

📄 参照: references/customization-and-styling.md

  • スタイル設定用の CSS クラス(e-datepicker、e-calendar、e-day など)
  • 日付をカスタマイズする renderDayCell イベント
  • 特定の日付と週末の無効化
  • プレースホルダー、無効、読み取り専用の状態
  • カスタム CSS とテーマのカスタマイズ
  • 日付セルの外観と動作
グローバル化とローカライズ

📄 参照: references/globalization-and-localization.md

  • 文化とロケールの設定(ドイツ語、フランス語、アラビア語など)
  • 国際化のための CLDR データの読み込み
  • 文化に応じた日付形式(国によって異なる形式)
  • ロケールテキストのカスタマイズ(今日ボタン、プレースホルダー)
  • アラビア語、ヘブライ語、ウルドゥー語の右から左(RTL)表示への対応
  • 文化に応じた週の開始曜日
  • 数値形式とカレンダーの調整
アクセシビリティとキーボードナビゲーション

📄 参照: references/accessibility-and-keyboard.md

  • WCAG 2.2 への準拠とアクセシビリティ標準
  • キーボードナビゲーションのショートカット(Alt+Down、矢印キー、Esc)
  • ARIA 属性(aria-expanded、aria-disabled、aria-activedescendant)
  • スクリーンリーダーへの対応と通知
  • フォーカス管理と視認可能なフォーカスインジケーター
  • 色のコントラストと視覚的なアクセシビリティ
  • モバイルデバイスへの対応
日付マスキングと高度な検証

📄 参照: references/date-masking-and-strict-mode.md

  • 構造化されたセグメントごとの日付入力に使用する enableMask プロパティ
  • セグメントのプレースホルダーテキストをカスタマイズする maskPlaceholder
  • 入力を案内する日付マスキングパターン
  • strictMode プロパティの動作と適用
  • 日付の解析ルールと検証ロジック
  • 入力検証と書式の適用
  • うるう年や月の境界などのエッジケース
  • よくある検証問題のトラブルシューティング
  • 日付入力のベストプラクティス

クイックスタートの例

すぐに始められる、最小限の動作例です。

import React, { useState } from 'react';
import { DatePickerComponent } from '@syncfusion/ej2-react-calendars';
import '@syncfusion/ej2-base/styles/material3.css';
import '@syncfusion/ej2-buttons/styles/material3.css';
import '@syncfusion/ej2-inputs/styles/material3.css';
import '@syncfusion/ej2-popups/styles/material3.css';
import '@syncfusion/ej2-react-calendars/styles/material3.css';

export default function App() {
  const [selectedDate, setSelectedDate] = useState(new Date());

  return (
    <div style={{ padding: '20px' }}>
      <h3>Select a Date</h3>
      <DatePickerComponent
        value={selectedDate}
        change={(e) => setSelectedDate(e.value)}
        placeholder="Enter date"
      />
      <p>Selected: {selectedDate?.toDateString()}</p>
    </div>
  );
}

ポイント:

  • @syncfusion/ej2-react-calendars から DatePickerComponent をインポートします
  • 必要なすべての CSS テーマ(基本、ボタン、入力、ポップアップ、カレンダー)をインポートします
  • 現在の日付には value プロパティを使用します(null または Date オブジェクトを指定できます)
  • React の状態を更新するには、onChange ではなく change イベントを使用します。これは Syncfusion のイベント名です
  • DatePicker は、クリックするか Alt+Down キーを押すとカレンダーのポップアップを開きます

よくあるパターン

1. 日付範囲ピッカー(最小日付/最大日付)
<DatePickerComponent
  value={new Date()}
  min={new Date(2026, 0, 1)}
  max={new Date(2026, 11, 31)}
  placeholder="Select a date in 2026"
/>
2. 日付書式のカスタマイズ
<DatePickerComponent
  value={new Date()}
  format="dd/MM/yyyy"
  placeholder="DD/MM/YYYY"
/>
3. 複数の日付入力書式の受け入れ
<DatePickerComponent
  value={new Date()}
  format="yyyy-MM-dd"
  inputFormats={['dd/MM/yyyy', 'yyyy-MM-dd', 'yyyyMMdd']}
  placeholder="Enter date (dd/MM/yyyy or yyyy-MM-dd)"
/>
4. 誕生日選択用の年/ दशक表示
<DatePickerComponent
  value={new Date()}
  start="Decade"
  depth="Year"
  placeholder="Select year"
/>
5. 週末を無効にする
<DatePickerComponent
  value={new Date()}
  renderDayCell={(args) => {
    if ((args.date.getDay()) === 0 || (args.date.getDay()) === 6) {
      args.isDisabled = true;
    }
  }}
  placeholder="Weekdays only"
/>
6. React フォームでの制御コンポーネント
const [date, setDate] = useState(null);

<DatePickerComponent
  value={date}
  change={(e) => setDate(e.value)}
  format="yyyy-MM-dd"
  strictMode={true}
  placeholder="Enter date"
/>
7. RTL 対応のドイツ語カルチャー
<DatePickerComponent
  locale="de"
  enableRtl={false}
  firstDayOfWeek={1}
  value={new Date()}
  placeholder="Datum eingeben"
/>
8. マスク付き日付入力
<DatePickerComponent
  enableMask={true}
  format="MM/dd/yyyy"
  maskPlaceholder={{ day: 'DD', month: 'MM', year: 'YYYY' }}
  placeholder="Select a date"
/>
9. プログラムによる制御
import { useRef } from 'react';

const datePickerRef = useRef(null);

// Open calendar
datePickerRef.current.show();

// Close calendar
datePickerRef.current.hide();

// Focus
datePickerRef.current.focusIn();

// Get current view
const view = datePickerRef.current.currentView(); // "Month" | "Year" | "Decade"

// Navigate to specific view
datePickerRef.current.navigateTo('Year', new Date(2026, 0, 1));

<DatePickerComponent ref={datePickerRef} value={new Date()} />
10. すべてのキーイベントを処理する
<DatePickerComponent
  value={new Date()}
  change={(e) => console.log('Changed:', e.value)}
  focus={(e) => console.log('Focused')}
  blur={(e) => console.log('Blurred')}
  open={(e) => console.log('Opened')}
  close={(e) => console.log('Closed')}
  cleared={(e) => console.log('Cleared')}
  navigated={(e) => console.log('Navigated to view:', e.view)}
  renderDayCell={(args) => {
    // Disable weekends
    if (args.date.getDay() === 0 || args.date.getDay() === 6) {
      args.isDisabled = true;
    }
  }}
/>

コメント