flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
1 lines • 22.2 kB
Source Map (JSON)
{"version":3,"file":"Datepicker.cjs","sources":["../../../src/components/Datepicker/Datepicker.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { get } from \"../../helpers/get\";\nimport { resolveProps } from \"../../helpers/resolve-props\";\nimport { useResolveTheme } from \"../../helpers/resolve-theme\";\nimport { twMerge } from \"../../helpers/tailwind-merge\";\nimport { ArrowLeftIcon } from \"../../icons/arrow-left-icon\";\nimport { ArrowRightIcon } from \"../../icons/arrow-right-icon\";\nimport { CalendarIcon } from \"../../icons/calendar-icon\";\nimport { useThemeProvider } from \"../../theme/provider\";\nimport type { ThemingProps } from \"../../types\";\nimport { TextInput, type TextInputProps, type TextInputTheme } from \"../TextInput\";\nimport { DatepickerContext } from \"./DatepickerContext\";\nimport {\n addMonths,\n addYears,\n getFirstDateInRange,\n getFormattedDate,\n isDateEqual,\n startOfYearPeriod,\n Views,\n WeekStart,\n} from \"./helpers\";\nimport { datePickerTheme } from \"./theme\";\nimport type { DatepickerViewsDaysTheme } from \"./Views/Days\";\nimport { DatepickerViewsDays } from \"./Views/Days\";\nimport { DatepickerViewsDecades, type DatepickerViewsDecadesTheme } from \"./Views/Decades\";\nimport { DatepickerViewsMonth, type DatepickerViewsMonthsTheme } from \"./Views/Months\";\nimport { DatepickerViewsYears, type DatepickerViewsYearsTheme } from \"./Views/Years\";\n\nexport interface DatepickerTheme {\n root: {\n base: string;\n input?: TextInputTheme;\n };\n popup: DatepickerPopupTheme;\n views: {\n days: DatepickerViewsDaysTheme;\n months: DatepickerViewsMonthsTheme;\n years: DatepickerViewsYearsTheme;\n decades: DatepickerViewsDecadesTheme;\n };\n}\n\nexport interface DatepickerPopupTheme {\n root: {\n base: string;\n inline: string;\n inner: string;\n };\n header: {\n base: string;\n title: string;\n selectors: {\n base: string;\n button: {\n base: string;\n prev: string;\n next: string;\n view: string;\n };\n };\n };\n view: {\n base: string;\n };\n footer: {\n base: string;\n button: {\n base: string;\n today: string;\n clear: string;\n };\n };\n}\n\nexport interface DatepickerRef {\n /**\n * Focus the datepicker input.\n */\n focus: () => void;\n /**\n * Clears the datepicker value back to the defaultValue.\n */\n clear: () => void;\n}\n\nexport interface DatepickerProps\n extends Omit<TextInputProps, keyof ThemingProps<DatepickerTheme> | \"onChange\" | \"value\" | \"defaultValue\">,\n ThemingProps<DatepickerTheme> {\n defaultValue?: Date;\n open?: boolean;\n inline?: boolean;\n autoHide?: boolean;\n showClearButton?: boolean;\n labelClearButton?: string;\n showTodayButton?: boolean;\n labelTodayButton?: string;\n minDate?: Date;\n maxDate?: Date;\n language?: string;\n weekStart?: WeekStart;\n onChange?: (date: Date | null) => void;\n value?: Date | null;\n label?: string;\n}\n\nexport const Datepicker = forwardRef<DatepickerRef, DatepickerProps>((props, ref) => {\n const provider = useThemeProvider();\n const theme = useResolveTheme(\n [datePickerTheme, provider.theme?.datepicker, props.theme],\n [get(provider.clearTheme, \"datepicker\"), props.clearTheme],\n [get(provider.applyTheme, \"datepicker\"), props.applyTheme],\n );\n\n const {\n title,\n open,\n inline = false,\n autoHide = true, // Hide when selected the day\n showClearButton = true,\n labelClearButton = \"Clear\",\n showTodayButton = true,\n labelTodayButton = \"Today\",\n defaultValue,\n minDate,\n maxDate,\n language = \"en\",\n weekStart = WeekStart.Sunday,\n className,\n onChange,\n label,\n value,\n ...restProps\n } = resolveProps(props, provider.props?.datepicker);\n\n const initialDate = defaultValue ? getFirstDateInRange(defaultValue, minDate, maxDate) : null;\n\n const effectiveDefaultView = useMemo(() => {\n return defaultValue ? getFirstDateInRange(defaultValue, minDate, maxDate) : new Date();\n }, []);\n\n const [isOpen, setIsOpen] = useState(open);\n const [view, setView] = useState<Views>(Views.Days);\n // selectedDate is the date selected by the user\n const [selectedDate, setSelectedDate] = useState<Date | null>(value ?? initialDate);\n // viewDate is only for navigation\n const [viewDate, setViewDate] = useState<Date>(value ?? effectiveDefaultView);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const datepickerRef = useRef<HTMLDivElement>(null);\n\n // Triggers when user select the date\n function changeSelectedDate(date: Date | null, useAutohide: boolean) {\n setSelectedDate(date);\n\n if ((date === null || date) && onChange) {\n onChange(date);\n }\n\n if (autoHide && view === Views.Days && useAutohide == true && !inline) {\n setIsOpen(false);\n }\n }\n\n function clearDate() {\n changeSelectedDate(initialDate, true);\n if (defaultValue) {\n setViewDate(defaultValue);\n }\n }\n\n useImperativeHandle(ref, () => ({\n focus() {\n inputRef.current?.focus();\n },\n clear() {\n clearDate();\n },\n }));\n\n // Render the DatepickerView* node\n function renderView(type: Views): ReactNode {\n switch (type) {\n case Views.Decades:\n return <DatepickerViewsDecades />;\n case Views.Years:\n return <DatepickerViewsYears />;\n case Views.Months:\n return <DatepickerViewsMonth />;\n case Views.Days:\n default:\n return <DatepickerViewsDays />;\n }\n }\n\n // Coordinate the next view based on current view (statemachine-like)\n function getNextView(): Views {\n switch (view) {\n case Views.Days:\n return Views.Months;\n case Views.Months:\n return Views.Years;\n case Views.Years:\n return Views.Decades;\n }\n return view;\n }\n\n // Get the view title based on active View\n function getViewTitle(): string {\n switch (view) {\n case Views.Decades:\n return `${startOfYearPeriod(viewDate, 100) - 10} - ${startOfYearPeriod(viewDate, 100) + 100}`;\n case Views.Years:\n return `${startOfYearPeriod(viewDate, 10)} - ${startOfYearPeriod(viewDate, 10) + 11}`;\n case Views.Months:\n return getFormattedDate(language, viewDate, { year: \"numeric\" });\n case Views.Days:\n default:\n return getFormattedDate(language, viewDate, { month: \"long\", year: \"numeric\" });\n }\n }\n\n // Navigate to prev/next for given view's date by value\n function getViewDatePage(view: Views, date: Date, value: number): Date {\n switch (view) {\n case Views.Days:\n return new Date(addMonths(date, value));\n case Views.Months:\n return new Date(addYears(date, value));\n case Views.Years:\n return new Date(addYears(date, value * 10));\n case Views.Decades:\n return new Date(addYears(date, value * 100));\n default:\n return new Date(addYears(date, value * 10));\n }\n }\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const clickedInsideDatepicker = datepickerRef?.current?.contains(event.target as Node);\n const clickedInsideInput = inputRef?.current?.contains(event.target as Node);\n\n if (!clickedInsideDatepicker && !clickedInsideInput) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [inputRef, datepickerRef, setIsOpen]);\n\n useEffect(() => {\n const effectiveValue = value && getFirstDateInRange(new Date(value), minDate, maxDate);\n const effectiveSelectedDate = selectedDate && getFirstDateInRange(new Date(selectedDate), minDate, maxDate);\n if (effectiveSelectedDate && effectiveValue && !isDateEqual(effectiveValue, effectiveSelectedDate)) {\n setSelectedDate(effectiveValue);\n }\n if (selectedDate == null) {\n setSelectedDate(initialDate);\n }\n }, [value, setSelectedDate, setViewDate, selectedDate]);\n\n const displayValue = value === null ? label : getFormattedDate(language, selectedDate || new Date());\n\n return (\n <DatepickerContext.Provider\n value={{\n theme,\n language,\n minDate,\n maxDate,\n weekStart,\n isOpen,\n setIsOpen,\n view,\n setView,\n viewDate,\n setViewDate,\n selectedDate,\n setSelectedDate,\n changeSelectedDate,\n }}\n >\n <div className={twMerge(theme.root.base, className)}>\n {!inline && (\n <TextInput\n theme={theme.root.input}\n icon={CalendarIcon}\n ref={inputRef}\n onFocus={() => {\n if (selectedDate && !isDateEqual(viewDate, selectedDate)) {\n setViewDate(selectedDate);\n }\n setIsOpen(true);\n }}\n value={displayValue}\n defaultValue={initialDate ? getFormattedDate(language, initialDate) : label}\n readOnly\n {...restProps}\n />\n )}\n {(isOpen || inline) && (\n <div ref={datepickerRef} className={twMerge(theme.popup.root.base, inline && theme.popup.root.inline)}>\n <div className={theme.popup.root.inner}>\n <div className={theme.popup.header.base}>\n {title && <div className={theme.popup.header.title}>{title}</div>}\n <div className={theme.popup.header.selectors.base}>\n <button\n type=\"button\"\n className={twMerge(\n theme.popup.header.selectors.button.base,\n theme.popup.header.selectors.button.prev,\n )}\n onClick={() => setViewDate(getViewDatePage(view, viewDate, -1))}\n >\n <ArrowLeftIcon />\n </button>\n <button\n type=\"button\"\n className={twMerge(\n theme.popup.header.selectors.button.base,\n theme.popup.header.selectors.button.view,\n )}\n onClick={() => setView(getNextView())}\n >\n {getViewTitle()}\n </button>\n <button\n type=\"button\"\n className={twMerge(\n theme.popup.header.selectors.button.base,\n theme.popup.header.selectors.button.next,\n )}\n onClick={() => setViewDate(getViewDatePage(view, viewDate, 1))}\n >\n <ArrowRightIcon />\n </button>\n </div>\n </div>\n <div className={theme.popup.view.base}>{renderView(view)}</div>\n {(showClearButton || showTodayButton) && (\n <div className={theme.popup.footer.base}>\n {showTodayButton && (\n <button\n type=\"button\"\n className={twMerge(theme.popup.footer.button.base, theme.popup.footer.button.today)}\n onClick={() => {\n const today = new Date();\n changeSelectedDate(today, true);\n setViewDate(today);\n }}\n >\n {labelTodayButton}\n </button>\n )}\n {showClearButton && (\n <button\n type=\"button\"\n className={twMerge(theme.popup.footer.button.base, theme.popup.footer.button.clear)}\n onClick={() => {\n changeSelectedDate(null, true);\n }}\n >\n {labelClearButton}\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n </DatepickerContext.Provider>\n );\n});\n\nDatepicker.displayName = \"Datepicker\";\n"],"names":["forwardRef","provider","useThemeProvider","theme","useResolveTheme","datePickerTheme","get","WeekStart","resolveProps","getFirstDateInRange","useMemo","useState","Views","useRef","useImperativeHandle","jsx","DatepickerViewsDecades","DatepickerViewsYears","DatepickerViewsMonth","DatepickerViewsDays","startOfYearPeriod","getFormattedDate","addMonths","addYears","useEffect","isDateEqual","DatepickerContext","jsxs","twMerge","TextInput","CalendarIcon","ArrowLeftIcon","ArrowRightIcon"],"mappings":"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"}