日付ピッカー

DatePickerは、日付を扱うためのフォームコンポーネントです。


import DatePicker from 'primevue/datepicker';

DatePickerは、`v-model`プロパティを持つ制御された入力コンポーネントを使用します。


<DatePicker v-model="date" />

デフォルトの日付フォーマットは`mm/dd/yy`で、`dateFormat`プロパティを使用してカスタマイズできます。以下のオプションをフォーマットの一部にすることができます。

  • `d` - 日 (先行ゼロなし)
  • `dd` - 日 (2桁)
  • `o` - 年の日付 (先行ゼロなし)
  • `oo` - 年の日付 (3桁)
  • `D` - 曜日の短縮名
  • `DD` - 曜日の正式名称
  • `m` - 月 (先行ゼロなし)
  • `mm` - 月 (2桁)
  • `M` - 月の短縮名
  • `MM` - 月の正式名称
  • `y` - 年 (2桁)
  • `yy` - 年 (4桁)
  • `@` - Unixタイムスタンプ (1970年1月1日からのミリ秒)
  • `!` - Windows ticks (0001年1月1日からの100ナノ秒)
  • `'...'` - リテラルテキスト
  • `''` - シングルクォート
  • `anything else` - リテラルテキスト

<DatePicker v-model="date" dateFormat="dd/mm/yy" />

異なる言語とフォーマットのロケールはグローバルに定義されています。詳しくは、PrimeVueロケールの設定を参照してください。

`showIcon`が存在する場合、入力フィールドの横にアイコンが表示されます。


<DatePicker v-model="buttondisplay" showIcon fluid :showOnFocus="false" />
<DatePicker v-model="icondisplay" showIcon fluid iconDisplay="input" />
<DatePicker v-model="templatedisplay" showIcon fluid iconDisplay="input" timeOnly>
    <template #inputicon="slotProps">
        <i class="pi pi-clock" @click="slotProps.clickCallback" />
    </template>
</DatePicker>

入力可能な日付の範囲は、`minDate`と`maxDate`プロパティで定義されます。


<DatePicker v-model="date" :minDate="minDate" :maxDate="maxDate" :manualInput="false" />

複数の日付を選択するには、`selectionMode`を`multiple`に設定します。このモードでは、値バインディングは配列である必要があります。


<DatePicker v-model="dates" selectionMode="multiple" :manualInput="false" />

`selectionMode`を`range`として定義することで、日付の範囲を選択できます。この場合、バインドされた値は、最初の日付が範囲の開始、2番目の日付が範囲の終了となる2つの値を持つ配列になります。


<DatePicker v-model="dates" selectionMode="range" :manualInput="false" />

`showButtonBar`が存在する場合、フッターに「今日」と「クリア」ボタンが表示されます。


<DatePicker v-model="date" showButtonBar />

`showTime`が有効になっている場合、時間ピッカーが表示され、12/24時間形式は`hourFormat`プロパティで設定されます。時間のみを選択する必要がある場合は、`timeOnly`を追加して日付セクションを非表示にします。


<DatePicker id="datepicker-12h" v-model="datetime12h" showTime hourFormat="12" fluid />
<DatePicker id="datepicker-24h" v-model="datetime24h" showTime hourFormat="24" fluid />
<DatePicker id="datepicker-timeonly" v-model="time" timeOnly fluid />

適切な`dateFormat`に加えて、`view`を`month`として指定することで、月のみのピッカーが有効になります。


<DatePicker v-model="date" view="month" dateFormat="mm/yy" />

適切な`dateFormat`に加えて、`view`を`year`として指定することで、年ピッカーが有効になります。


<DatePicker v-model="date" view="year" dateFormat="yy" />

表示する月の数は、`numberOfMonths`プロパティで設定されます。


<DatePicker v-model="date" :numberOfMonths="2" />

日付としてDateを受け取る`date`スロットを使用して、カスタムコンテンツを日付セル内に配置できます。


<DatePicker v-model="date">
    <template #date="slotProps">
        <strong v-if="slotProps.date.day > 10 && slotProps.date.day < 15" style="text-decoration: line-through">{{ slotProps.date.day }}</strong>
        <template v-else>{{ slotProps.date.day }}</template>
    </template>
</DatePicker>

DatePickerはデフォルトでポップアップとして表示されます。`inline`プロパティを追加して、この動作をカスタマイズします。

351234567
36891011121314
3715161718192021
3822232425262728
39293012345

<DatePicker v-model="date" inline showWeek />

フォーカスされると、入力フィールドの上にフローティングラベルが表示されます。詳しくは、フローティングラベルのドキュメントを参照してください。


<FloatLabel>
    <DatePicker v-model="date" inputId="birth_date" />
    <label for="birth_date">Birth Date</label>
</FloatLabel>

`variant`プロパティを`filled`として指定すると、デフォルトの`outlined`スタイルよりも視覚的に強調されたコンポーネントが表示されます。


<DatePicker v-model="date" variant="filled" />

検証に失敗したことを示すために、`invalid`プロパティを使用して無効な状態が表示されます。フォーム検証ライブラリと統合する際に、このスタイルを使用できます。


<DatePicker v-model="date" :invalid="date === null"  />

DatePickerは、`v-model`プロパティを持つ制御された入力コンポーネントとして使用されます。


<DatePicker v-model="date" disabled />

スクリーンリーダー

コンポーネントを記述する値は、`label`タグと`inputId`プロパティを組み合わせて指定するか、`aria-labelledby`、`aria-label`プロパティを使用して指定できます。入力要素には、"none"としての`aria-autocomplete`、"dialog"としての`aria-haspopup`、`aria-expanded`属性に加えて、`combobox`ロールがあります。入力とポップアップの関係は、ポップアップのIDを参照する`aria-controls`属性によって作成されます。

オプションのdatepickerボタンには、状態を表す`aria-haspopup`、`aria-expanded`と、ポップアップとボタンの関係を定義する`aria-controls`が必要です。読み取る値は、ロケールAPIのariaプロパティの`chooseDate`キーから取得されます。このラベルは、ポップアップの`aria-label`にも使用されます。値が選択されている場合、その値はフォーマットされてラベルに追加され、ユーザーに現在の値を通知できます。

ポップアップには、`aria-modal`と`aria-label`に加えて、`dialog`ロールがあります。ヘッダーのナビゲーションボタンには、ロケールaria APIの`prevYear`、`nextYear`、`prevMonth`、`nextMonth`、`prevDecade`、`nextDecade`キーから取得された`aria-label`があります。同様に、月ピッカーボタンは`chooseMonth`キーを使用し、年ピッカーボタンは`chooseYear`キーを使用します。

メインの日付テーブルは、スコープとして`col`を持つth要素と、月の正式名称に解決される`abbr`タグを含む`grid`ロールを使用します。各日付セルには、日付の正式な値を参照する`aria-label`があります。フッターのボタンも、読み取り可能なラベルを`aria-label`として使用します。選択された日付には、`aria-selected`属性も付与されます。

時間ピッカーのスピナーボタンは、ariaロケールAPIの`prevHour`、`nextHour`、`prevMinute`、`nextMinute`、`prevSecond`、`nextSecond`、`am`、`pm`キーを使用して、`aria-label`のラベルを取得します。

DatePickerには、`aria-live`が"polite"に設定されたスクリーンリーダーのみが利用できる非表示のセクションも含まれています。この要素は、選択された日付が変更されたときに更新され、ユーザーに選択された現在の日付を指示します。


<label for="date1">Date</label>
<DatePicker inputId="date1" />

<span id="date2">Date</span>
<DatePicker aria-labelledby="date2" />

<DatePicker aria-label="Date" />

日付選択ボタンのキーボードサポート

キー機能
スペースポップアップを開き、選択された日付にフォーカスを移動します. 選択された日付がない場合は、今日にフォーカスします.
エンターポップアップを開き、選択された日付にフォーカスを移動します. 選択された日付がない場合は、今日にフォーカスします.

ポップアップキーボードサポート

キー機能
エスケープポップアップを閉じて、入力要素にフォーカスを移動します。
タブポップアップ内の次のフォーカス可能な要素にフォーカスを移動します。
`シフト` + `タブ`ポップアップ内の次のフォーカス可能な要素にフォーカスを移動します。

ヘッダーボタンキーボードサポート

キー機能
エンターボタンのアクションをトリガーします。
スペースボタンのアクションをトリガーします。

日付グリッドキーボードサポート

キー機能
エンター日付を選択し、ポップアップを閉じて、入力要素にフォーカスを移動します。
スペースポップアップを閉じて、入力要素にフォーカスを移動します。
上矢印前の週の同じ日にフォーカスを移動します。
`alt` + `上矢印`ポップアップを閉じて、入力要素にフォーカスを移動します。
下矢印次の週の同じ日にフォーカスを移動します。
右矢印次の日にフォーカスを移動します。
左矢印前の日にフォーカスを移動します。
ホーム現在の週の最初の日にフォーカスを移動します。
エンド現在の週の最後の日にフォーカスを移動します。
ページアップ日付ピッカーモードでは、日付を前の月に変更します。月ピッカーモードでは前の年に、年ピッカーモードでは前の10年に移動します。
`シフト` + `ページアップ`日付ピッカーモードでは、日付を前の年に変更します。月ピッカーまたは年ピッカーでは効果がありません。
ページダウン日付ピッカーモードでは、日付を次の月に変更します。月ピッカーモードでは次の年に、年ピッカーモードでは次の10年に移動します。
`シフト` + `ページダウン`日付ピッカーモードでは、日付を次の年に変更します。月ピッカーまたは年ピッカーでは効果がありません。

フッターボタンキーボードサポート

キー機能
エンターボタンのアクションをトリガーします。
スペースボタンのアクションをトリガーします。