React-datesはReact用の日付選択ライブラリです。Airbnbで開発され、後に独立組織に移管されました。
動作中の日付選択の例については、http://react-dates.github.io/react-datesをご覧ください。
デモを自分のコンピュータで実行するには
npm install
npm run storybook
あらゆる日付選択のニーズに対応できる、いくつかの異なるコンポーネントとユーティリティを用意しています!
DateRangePicker
この完全に制御されたコンポーネントは、ユーザーが開始日と終了日の両方を選択できるように設計されています。これは、来年のある時点での比較的短い日付範囲を選択するのに最適です。
プロパティ
日付:現在選択されている開始日と終了日を表現するMomentオブジェクト。日付がまだ選択されていないことを示すには、これらをnull
に設定します。
startDate: momentPropTypes.momentObj
endDate: momentPropTypes.momentObj
onDatesChange
は、親コンポーネントで保持されている日付の状態を更新し、それをDateRangePicker
にプロパティとして渡すために必要なコールバックです。onDatesChange
は、{ startDate: momentPropTypes.momentObj, endDate: momentPropTypes.momentObj }
形式のオブジェクトを引数として受け取ります。
onDatesChange: PropTypes.func
フォーカス:focusedInput
プロパティは、いずれかの入力のうち、現在フォーカスされている入力(もしあれば)を示します。react-dates/constants
からSTART_DATE
およびEND_DATE
定数をインポートできます。
focusedInput: PropTypes.oneOf([START_DATE, END_DATE])
onFocusChange
は、親コンポーネントで保持されているフォーカス状態を更新し、それをDateRangePicker
にプロパティとして渡すために必要なコールバックです。onFocusChange
は、START_DATE
、END_DATE
、またはnull
のいずれかを引数として受け取ります。
onFocusChange: PropTypes.func
日付選択ルール
minimumNights
の値は、開始日と終了日の間の最小日数を示します。
minimumNights: PropTypes.number
選択をブロックする日を指定するには、isDayBlocked
プロパティに関数を提供できます。v1.0.0以降、範囲内のブロックされた日付が許可されています。
isDayBlocked: PropTypes.func
isOutsideRange
は、選択可能な範囲外の日にちを示します。デフォルトでは、範囲外の過去の日付。過去の日付を選択できるようにするには、isOutsideRange
を() => true
に設定できます。
isOutsideRange: PropTypes.func
カレンダー表示
numberOfMonths
は、一度に表示される月の数を示します。
numberOfMonths: PropTypes.number
デフォルトでは、前月の曜日と翌月の曜日は、現在表示されている月の同じ表には表示されません。ただし、特にnumberOfMonths
プロパティが1に設定されている場合、ユーザーにこれらの曜日も表示させることが理にかなう場合があります。そうするには、enabledOutsideDays
をtrueに設定します。これらの曜日は、CalendarMonth__day--outside
クラスを選択することでスタイルを設定できます。
enableOutsideDays: PropTypes.bool
DayPicker表示:orientation
プロパティは、月が積み重ねて表示されるか、並べて表示されるかを示します。react-dates/constants
からHORIZONTAL_ORIENTATION
およびVERTICAL_ORIENTATION
定数をインポートできます。
orientation: PropTypes.oneOf([HORIZONTAL_ORIENTATION, VERTICAL_ORIENTATION])
withPortal
はモバイルデバイスでの使用を目的として設計されました。つまり、このプロパティがtrueに設定されている場合、DayPicker
は画面の中央に、現在の平面の上に透明な黒い背景を背にして表示されます。背景をクリックすると、DayPicker
が非表示になります。このオプションは現在、水平方向のDateRangePicker
でのみ使用できます。
withPortal: PropTypes.bool
withFullScreenPortal
は、withPortal
プロパティのフルスクリーン版です。withPortal
と同様に、DayPicker
は画面の中央に、現在の平面の上にレンダリングされます。ただし、クリック可能な透明な黒の背景ではなく、背景は白で不透明です。日付選択を閉じるには、日付を選択するか、画面の右上に配置されている閉じるボタンをクリックする必要があります。
withFullScreenPortal: PropTypes.bool
入力表示:startDateId
およびendDateId
プロパティは、アクセシビリティの理由から実際の<input>
DOM要素に割り当てられます。これらはデフォルトでSTART_DATE
およびEND_DATE
定数の値に設定されます。
startDateId: PropTypes.string
endDateId: PropTypes.string
startDatePlaceholderText
およびendDatePlaceholderText
プロパティは、2つの入力のプレースホルダーです。
startDatePlaceholderText: PropTypes.string,
endDatePlaceholderText: PropTypes.string,
showClearDates
プロパティがtrueに設定されている場合、入力ボックスに「x」が表示され、両方の日付をクリアして入力をリセットできます。
showClearDates: PropTypes.bool,
disabled
プロパティがtrueに設定されている場合、onStartDateFocus
またはonEndDateFocus
が呼び出されてもonFocusChange
は呼び出されず、disabled
は実際の<input>
DOM要素に割り当てられます。
disabled: PropTypes.bool,
便利なコールバック:ユーザーが月間を移動したときに何かを行う必要がある場合(たとえば、リストの可用性を確認する場合)、onPrevMonthClick
およびonNextMonthClick
プロパティを使用して実行できます。
onPrevMonthClick: PropTypes.func,
onNextMonthClick: PropTypes.func,
国際化:英語のデフォルト設定は適切ですが、世界には英語以外の言語もたくさんあることを理解しています!:) Airbnbでは、ユーザーの50%以上が英語以外の言語で当社のサイトにアクセスしています。したがって、momentロケールをサポートすることに加えて、DateRangePicker
はこれを可能にするための多くのプロパティを受け入れます。
monthFormat
プロパティはmomentの日付書式ルールに従い、各カレンダーの上部に日付を表示する形式を示します。デフォルトはMMMM YYYY
です。
monthFormat: PropTypes.string,
phrases
プロパティは、現在クラスに含まれているすべての英語のフレーズを含むオブジェクトです。現時点では、そのようなフレーズは2つだけで、どちらも表示されませんが、日付選択のスクリーンリーダーナビゲーションに使用されます。
phrases: PropTypes.shape({
closeDatePicker: PropTypes.node,
clearDates: PropTypes.node,
}),
react-datesには、独自のプロジェクト固有のテーマを追加するためにオーバーライドできるSCSS変数のセットが付属しています。css/variables.scss
にある変数を独自の変数でオーバーライドし、~react-dates/css/styles.scss
(および少数の変数のみをオーバーライドする場合は~react-dates/css/variables.scss
)をインポートします。