diff --git a/.changeset/new-buckets-accept.md b/.changeset/new-buckets-accept.md new file mode 100644 index 0000000..d72857f --- /dev/null +++ b/.changeset/new-buckets-accept.md @@ -0,0 +1,5 @@ +--- +"@openfun/cunningham-react": minor +--- + +add datepicker component diff --git a/packages/react/src/components/Forms/DatePicker/Calendar.tsx b/packages/react/src/components/Forms/DatePicker/Calendar.tsx new file mode 100644 index 0000000..4372ce3 --- /dev/null +++ b/packages/react/src/components/Forms/DatePicker/Calendar.tsx @@ -0,0 +1,323 @@ +import React, { useEffect, useMemo, useRef } from "react"; +import { + CalendarDate, + createCalendar, + DateValue, + GregorianCalendar, + toCalendar, +} from "@internationalized/date"; +import { useDateFormatter, useLocale } from "@react-aria/i18n"; +import { useCalendarState } from "@react-stately/calendar"; +import { useCalendar } from "@react-aria/calendar"; +import { + useSelect, + UseSelectReturnValue, + UseSelectStateChange, +} from "downshift"; +import classNames from "classnames"; +import { CalendarProps } from "react-aria"; +import { range } from ":/utils"; +import { Button } from ":/components/Button"; +import { CalendarGrid } from ":/components/Forms/DatePicker/CalendarGrid"; +import { useCunningham } from ":/components/Provider"; + +// todo to be factorized with the select component +interface Option { + value: number; + label: string; + disabled?: boolean; +} + +// todo to be factorized with the select component +const optionToString = (option: Option | null) => { + return option ? option.label : ""; +}; + +type DropdownValuesProps = { + options: Array