react-native-paper-dates 0.11.11 → 0.11.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/Date/Calendar.js +4 -0
- package/lib/commonjs/Date/Calendar.js.map +1 -1
- package/lib/commonjs/Date/CalendarHeader.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalContent.js +1 -1
- package/lib/commonjs/Date/DatePickerModalContent.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalContentHeader.js +15 -11
- package/lib/commonjs/Date/DatePickerModalContentHeader.js.map +1 -1
- package/lib/commonjs/Date/DatePickerModalHeader.js +5 -4
- package/lib/commonjs/Date/DatePickerModalHeader.js.map +1 -1
- package/lib/commonjs/Date/Day.js +4 -4
- package/lib/commonjs/Date/Day.js.map +1 -1
- package/lib/commonjs/Date/DayName.js +3 -2
- package/lib/commonjs/Date/DayName.js.map +1 -1
- package/lib/commonjs/Date/Month.js +4 -3
- package/lib/commonjs/Date/Month.js.map +1 -1
- package/lib/commonjs/Date/YearPicker.js +6 -4
- package/lib/commonjs/Date/YearPicker.js.map +1 -1
- package/lib/commonjs/Time/timeUtils.js +5 -1
- package/lib/commonjs/Time/timeUtils.js.map +1 -1
- package/lib/commonjs/utils.js +11 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/Date/Calendar.js +4 -0
- package/lib/module/Date/Calendar.js.map +1 -1
- package/lib/module/Date/CalendarHeader.js.map +1 -1
- package/lib/module/Date/DatePickerModalContent.js +1 -1
- package/lib/module/Date/DatePickerModalContent.js.map +1 -1
- package/lib/module/Date/DatePickerModalContentHeader.js +15 -11
- package/lib/module/Date/DatePickerModalContentHeader.js.map +1 -1
- package/lib/module/Date/DatePickerModalHeader.js +6 -5
- package/lib/module/Date/DatePickerModalHeader.js.map +1 -1
- package/lib/module/Date/Day.js +4 -4
- package/lib/module/Date/Day.js.map +1 -1
- package/lib/module/Date/DayName.js +3 -2
- package/lib/module/Date/DayName.js.map +1 -1
- package/lib/module/Date/Month.js +4 -3
- package/lib/module/Date/Month.js.map +1 -1
- package/lib/module/Date/YearPicker.js +6 -4
- package/lib/module/Date/YearPicker.js.map +1 -1
- package/lib/module/Time/timeUtils.js +5 -1
- package/lib/module/Time/timeUtils.js.map +1 -1
- package/lib/module/utils.js +11 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/utils.d.ts +1 -1
- package/package.json +1 -1
- package/src/Date/Calendar.tsx +3 -0
- package/src/Date/CalendarHeader.tsx +0 -1
- package/src/Date/DatePickerModalContent.tsx +1 -4
- package/src/Date/DatePickerModalContentHeader.tsx +41 -12
- package/src/Date/DatePickerModalHeader.tsx +4 -3
- package/src/Date/Day.tsx +24 -10
- package/src/Date/DayName.tsx +8 -2
- package/src/Date/Month.tsx +19 -6
- package/src/Date/YearPicker.tsx +8 -2
- package/src/Time/timeUtils.ts +4 -1
- package/src/utils.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Month","props","index","mode","date","dates","startDate","endDate","onPressYear","selectingYear","onPressDate","scrollMode","primaryColor","selectColor","roundness","disableWeekDays","locale","validRange","theme","useTheme","textColorOnPrimary","useTextColorOnPrimary","realIndex","getRealIndex","isHorizontal","isDisabled","isWithinValidRange","useRangeChecker","monthName","month","year","React","useMemo","md","addMonths","Date","y","getFullYear","m","getMonth","formatter","Intl","DateTimeFormat","format","grid","today","daysInMonth","getDaysInMonth","dayOfWeek","getFirstDayOfMonth","emptyDays","monthGrid","map","days","weekGrid","weekIndex","generatedDays","_","dayIndex","isFirstWeek","realDayIndex","beforeWeekDay","dayOfMonth","afterWeekDay","day","isToday","areDatesOnSameDay","inRange","disabled","selected","leftCrop","rightCrop","isFirstDayOfMonth","isLastDayOfMonth","selectedStartDay","selectedEndDay","isDateBetween","safeDates","some","d","yesterday","tomorrow","yesterdaySelected","tomorrowSelected","isWithinOptionalValidRange","textFont","isV3","fonts","bodyMedium","medium","styles","height","getMonthHeight","monthHeader","marginTop","monthHeaderSingleMarginTop","marginBottom","monthHeaderSingleMarginBottom","undefined","yearButton","borderRadius","yearButtonInner","monthLabel","opacity1","opacity0","week","filter","gd","showWeekDay","weekMargin","weekSize","daySize","montHeaderHeight","monthHeaderSingleHeight","StyleSheet","create","flexDirection","justifyContent","overflow","fontSize","opacity","alignSelf","marginLeft","paddingLeft","alignItems","Array","getGridCount","fill","getIndexCount","startAtIndex","weeksOffset","off","i","cIndex","gridCounts","getIndexFromHorizontalOffset","offset","width","Math","floor","getIndexFromVerticalOffset","estimatedIndex","ceil","estimatedMonthHeight","realOffset","getVerticalMonthsOffset","difference","beginOffset","getHorizontalMonthOffset","count","ob","monthsHeight","c","dayNamesHeight","calendarHeight","getCalendarHeaderHeight","gc","currentMonthHeight","extraHeight","memo"],"sources":["Month.tsx"],"sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport {\n IconButton,\n Text,\n useTheme,\n TouchableRipple,\n MD2Theme,\n} from 'react-native-paper'\nimport Day, { EmptyDay } from './Day'\n\nimport {\n addMonths,\n areDatesOnSameDay,\n daySize,\n DisableWeekDaysType,\n getDaysInMonth,\n getFirstDayOfMonth,\n getRealIndex,\n getGridCount,\n isDateBetween,\n gridCounts,\n showWeekDay,\n startAtIndex,\n beginOffset,\n estimatedMonthHeight,\n useRangeChecker,\n} from './dateUtils'\nimport { getCalendarHeaderHeight } from './CalendarHeader'\nimport type {\n CalendarDate,\n CalendarDates,\n ModeType,\n ValidRangeType,\n} from './Calendar'\nimport { dayNamesHeight } from './DayNames'\nimport { useTextColorOnPrimary } from '../utils'\n\ninterface BaseMonthProps {\n locale: undefined | string\n scrollMode: 'horizontal' | 'vertical'\n disableWeekDays?: DisableWeekDaysType\n mode: ModeType\n index: number\n onPressYear: (year: number) => any\n selectingYear: boolean\n onPressDate: (date: Date) => any\n primaryColor: string\n selectColor: string\n roundness: number\n validRange?: ValidRangeType\n\n // some of these should be required in final implementation\n startDate?: CalendarDate\n endDate?: CalendarDate\n date?: CalendarDate\n dates?: CalendarDates\n}\n\ninterface MonthRangeProps extends BaseMonthProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n}\n\ninterface MonthSingleProps extends BaseMonthProps {\n mode: 'single'\n date: CalendarDate\n}\n\ninterface MonthMultiProps extends BaseMonthProps {\n mode: 'multiple'\n dates: CalendarDates\n}\n\nfunction Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {\n const {\n index,\n mode,\n date,\n dates,\n startDate,\n endDate,\n onPressYear,\n selectingYear,\n onPressDate,\n scrollMode,\n primaryColor,\n selectColor,\n roundness,\n disableWeekDays,\n locale,\n validRange,\n } = props\n const theme = useTheme()\n const textColorOnPrimary = useTextColorOnPrimary()\n const realIndex = getRealIndex(index)\n const isHorizontal = scrollMode === 'horizontal'\n const { isDisabled, isWithinValidRange } = useRangeChecker(validRange)\n const { monthName, month, year } = React.useMemo(() => {\n const md = addMonths(new Date(), realIndex)\n const y = md.getFullYear()\n const m = md.getMonth()\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n })\n return { monthName: formatter.format(md), month: m, year: y }\n }, [realIndex, locale])\n\n const grid = React.useMemo(() => {\n const today = new Date()\n\n const daysInMonth = getDaysInMonth({ year, month })\n const dayOfWeek = getFirstDayOfMonth({ year, month })\n const emptyDays = dayOfWeek\n\n return monthGrid(index).map(({ days, weekGrid }) => {\n return {\n weekIndex: weekGrid,\n generatedDays: days.map((_, dayIndex) => {\n const isFirstWeek = weekGrid === 0\n const realDayIndex = emptyDays - dayIndex\n const beforeWeekDay = isFirstWeek && realDayIndex > 0\n const dayOfMonth = weekGrid * 7 + dayIndex - emptyDays + 1\n const afterWeekDay = dayOfMonth > daysInMonth\n\n const day = new Date(year, month, dayOfMonth)\n const isToday = areDatesOnSameDay(day, today)\n\n let inRange = false\n let disabled = isDisabled(day)\n let selected = false\n\n let leftCrop = dayOfMonth === 1\n let rightCrop = dayOfMonth === daysInMonth\n\n const isFirstDayOfMonth = dayOfMonth === 1\n const isLastDayOfMonth = dayOfMonth === daysInMonth\n\n if (mode === 'range') {\n const selectedStartDay = areDatesOnSameDay(day, startDate)\n const selectedEndDay = areDatesOnSameDay(day, endDate)\n selected = selectedStartDay || selectedEndDay\n inRange = isDateBetween(day, {\n startDate,\n endDate,\n })\n if (selectedStartDay) {\n leftCrop = true\n }\n if (selectedEndDay) {\n rightCrop = true\n }\n if (dayIndex === 0 && !selectedStartDay) {\n leftCrop = false\n }\n\n if (dayIndex === 6 && !selectedEndDay) {\n rightCrop = false\n }\n\n if (\n (isFirstDayOfMonth && selectedEndDay) ||\n (isLastDayOfMonth && selectedStartDay)\n ) {\n inRange = false\n }\n } else if (mode === 'multiple') {\n const safeDates = dates || []\n selected = safeDates.some((d) => areDatesOnSameDay(day, d))\n\n const yesterday = new Date(year, month, dayOfMonth - 1)\n const tomorrow = new Date(year, month, dayOfMonth + 1)\n\n const yesterdaySelected = safeDates.some((d) =>\n areDatesOnSameDay(d, yesterday)\n )\n const tomorrowSelected = safeDates.some((d) =>\n areDatesOnSameDay(d, tomorrow)\n )\n\n if (selected) {\n if (tomorrowSelected && yesterdaySelected) {\n inRange = true\n }\n if (tomorrowSelected && !yesterdaySelected) {\n inRange = true\n leftCrop = true\n }\n\n if (yesterdaySelected && !tomorrowSelected) {\n inRange = true\n rightCrop = true\n }\n\n if (isFirstDayOfMonth && !tomorrowSelected) {\n inRange = false\n }\n\n if (isLastDayOfMonth && !yesterdaySelected) {\n inRange = false\n }\n\n if (inRange && !leftCrop && !rightCrop) {\n selected = false\n }\n }\n } else if (mode === 'single') {\n selected = areDatesOnSameDay(day, date)\n }\n\n const isWithinOptionalValidRange = isWithinValidRange(day)\n\n if (inRange && !disabled) {\n disabled = false\n }\n\n if (!isWithinOptionalValidRange) {\n disabled = true\n }\n\n return {\n beforeWeekDay,\n afterWeekDay,\n year,\n month,\n dayOfMonth,\n dayIndex,\n mode,\n selected,\n inRange,\n leftCrop,\n rightCrop,\n isToday,\n disabled,\n }\n }),\n }\n })\n }, [\n year,\n month,\n index,\n isDisabled,\n mode,\n isWithinValidRange,\n startDate,\n endDate,\n dates,\n date,\n ])\n\n let textFont = theme?.isV3\n ? theme.fonts.bodyMedium\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={[styles.month, { height: getMonthHeight(scrollMode, index) }]}>\n <View\n style={[\n styles.monthHeader,\n isHorizontal\n ? {\n marginTop: monthHeaderSingleMarginTop,\n marginBottom: monthHeaderSingleMarginBottom,\n }\n : null,\n ]}\n >\n <TouchableRipple\n disabled={!isHorizontal}\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n accessibilityRole=\"button\"\n accessibilityLabel={`${monthName} ${year}`}\n style={[\n styles.yearButton,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <View\n style={[\n styles.yearButtonInner,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <Text\n style={[styles.monthLabel, { ...textFont }]}\n selectable={false}\n >\n {monthName} {year}\n </Text>\n <View style={isHorizontal ? styles.opacity1 : styles.opacity0}>\n <IconButton\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n icon={selectingYear ? 'chevron-up' : 'chevron-down'}\n />\n </View>\n </View>\n </TouchableRipple>\n </View>\n\n {grid.map(({ weekIndex, generatedDays }) => (\n <View style={styles.week} key={weekIndex}>\n {generatedDays\n .filter((gd) => showWeekDay(gd.dayIndex, disableWeekDays))\n .map((gd) =>\n gd.beforeWeekDay || gd.afterWeekDay ? (\n <EmptyDay key={gd.dayIndex} />\n ) : (\n <Day\n key={gd.dayIndex}\n theme={theme}\n day={gd.dayOfMonth}\n month={gd.month}\n year={gd.year}\n selected={gd.selected}\n inRange={gd.inRange}\n leftCrop={gd.leftCrop}\n rightCrop={gd.rightCrop}\n onPressDate={onPressDate}\n isToday={gd.isToday}\n selectColor={selectColor}\n primaryColor={primaryColor}\n disabled={gd.disabled}\n textColorOnPrimary={textColorOnPrimary}\n />\n )\n )}\n </View>\n ))}\n </View>\n )\n}\n\nexport const weekMargin = 6\nexport const weekSize = daySize + weekMargin\nexport const montHeaderHeight = 56\nexport const monthHeaderSingleMarginTop = 4\nexport const monthHeaderSingleMarginBottom = 8 + 44 + 12\nexport const monthHeaderSingleHeight =\n monthHeaderSingleMarginTop + monthHeaderSingleMarginBottom\n\nconst styles = StyleSheet.create({\n week: {\n flexDirection: 'row',\n marginBottom: weekMargin,\n height: daySize,\n },\n\n month: {},\n\n monthHeader: {\n height: montHeaderHeight,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n monthLabel: { fontSize: 14, opacity: 0.7 },\n yearButton: { alignSelf: 'flex-start', marginLeft: 6 },\n yearButtonInner: {\n paddingLeft: 16,\n flexDirection: 'row',\n alignItems: 'center',\n },\n opacity0: { opacity: 0 },\n opacity1: { opacity: 1 },\n})\n\nconst monthGrid = (index: number) => {\n return Array(getGridCount(index))\n .fill(null)\n .map((_, weekGrid) => {\n const days = Array(7).fill(null)\n return { weekGrid, days }\n })\n}\n\nfunction getIndexCount(index: number): number {\n if (index > startAtIndex) {\n return index - startAtIndex\n }\n\n return -(startAtIndex - index)\n}\n\nfunction weeksOffset(index: number): number {\n if (index === startAtIndex) {\n return 0\n }\n let off = 0\n if (index > startAtIndex) {\n for (let i = 0; i < index - startAtIndex; i++) {\n const cIndex = startAtIndex + i\n off += gridCounts[cIndex] || getGridCount(cIndex)\n }\n } else {\n for (let i = 0; i < startAtIndex - index; i++) {\n const cIndex = startAtIndex - i - 1\n off -= gridCounts[cIndex] || getGridCount(cIndex)\n }\n }\n return off\n}\n\nexport function getIndexFromHorizontalOffset(\n offset: number,\n width: number\n): number {\n return startAtIndex + Math.floor(offset / width)\n}\n\nexport function getIndexFromVerticalOffset(offset: number): number {\n let estimatedIndex = startAtIndex + Math.ceil(offset / estimatedMonthHeight)\n\n const realOffset = getVerticalMonthsOffset(estimatedIndex)\n const difference = (realOffset - beginOffset - offset) / estimatedMonthHeight\n if (difference >= 1 || difference <= -1) {\n estimatedIndex -= Math.floor(difference)\n }\n return estimatedIndex\n}\n\nexport function getHorizontalMonthOffset(index: number, width: number) {\n if (index < 0) {\n return 0\n }\n return width * index\n}\n\nexport function getVerticalMonthsOffset(index: number) {\n const count = getIndexCount(index)\n const ob = weeksOffset(index)\n const monthsHeight = weekSize * ob\n const c = monthsHeight + count * (dayNamesHeight + montHeaderHeight)\n\n return (c || 0) + beginOffset\n}\n\nexport function getMonthHeight(\n scrollMode: 'horizontal' | 'vertical',\n index: number\n): number {\n const calendarHeight = getCalendarHeaderHeight(scrollMode)\n const gc = getGridCount(index)\n\n const currentMonthHeight = weekSize * gc\n const extraHeight =\n scrollMode === 'horizontal' ? monthHeaderSingleHeight : montHeaderHeight\n const c = calendarHeight + currentMonthHeight + extraHeight\n return c || 0\n}\n\nexport default React.memo(Month)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Month","props","index","mode","date","dates","startDate","endDate","onPressYear","selectingYear","onPressDate","scrollMode","primaryColor","selectColor","roundness","disableWeekDays","locale","validRange","theme","useTheme","textColorOnPrimary","useTextColorOnPrimary","realIndex","getRealIndex","isHorizontal","isDisabled","isWithinValidRange","useRangeChecker","monthName","month","year","React","useMemo","md","addMonths","Date","y","getFullYear","m","getMonth","formatter","Intl","DateTimeFormat","format","grid","today","daysInMonth","getDaysInMonth","dayOfWeek","getFirstDayOfMonth","emptyDays","monthGrid","map","days","weekGrid","weekIndex","generatedDays","_","dayIndex","isFirstWeek","realDayIndex","beforeWeekDay","dayOfMonth","afterWeekDay","day","isToday","areDatesOnSameDay","inRange","disabled","selected","leftCrop","rightCrop","isFirstDayOfMonth","isLastDayOfMonth","selectedStartDay","selectedEndDay","isDateBetween","safeDates","some","d","yesterday","tomorrow","yesterdaySelected","tomorrowSelected","isWithinOptionalValidRange","textFont","isV3","fonts","titleSmall","medium","styles","height","getMonthHeight","monthHeader","marginTop","monthHeaderSingleMarginTop","marginBottom","monthHeaderSingleMarginBottom","undefined","yearButton","borderRadius","yearButtonInner","monthLabel","color","colors","onSurfaceVariant","onSurface","opacity1","opacity0","week","filter","gd","showWeekDay","weekMargin","weekSize","daySize","montHeaderHeight","monthHeaderSingleHeight","StyleSheet","create","flexDirection","justifyContent","overflow","fontSize","opacity","alignSelf","marginLeft","paddingLeft","alignItems","Array","getGridCount","fill","getIndexCount","startAtIndex","weeksOffset","off","i","cIndex","gridCounts","getIndexFromHorizontalOffset","offset","width","Math","floor","getIndexFromVerticalOffset","estimatedIndex","ceil","estimatedMonthHeight","realOffset","getVerticalMonthsOffset","difference","beginOffset","getHorizontalMonthOffset","count","ob","monthsHeight","c","dayNamesHeight","calendarHeight","getCalendarHeaderHeight","gc","currentMonthHeight","extraHeight","memo"],"sources":["Month.tsx"],"sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport {\n IconButton,\n Text,\n useTheme,\n TouchableRipple,\n MD2Theme,\n} from 'react-native-paper'\nimport Day, { EmptyDay } from './Day'\n\nimport {\n addMonths,\n areDatesOnSameDay,\n daySize,\n DisableWeekDaysType,\n getDaysInMonth,\n getFirstDayOfMonth,\n getRealIndex,\n getGridCount,\n isDateBetween,\n gridCounts,\n showWeekDay,\n startAtIndex,\n beginOffset,\n estimatedMonthHeight,\n useRangeChecker,\n} from './dateUtils'\nimport { getCalendarHeaderHeight } from './CalendarHeader'\nimport type {\n CalendarDate,\n CalendarDates,\n ModeType,\n ValidRangeType,\n} from './Calendar'\nimport { dayNamesHeight } from './DayNames'\nimport { useTextColorOnPrimary } from '../utils'\n\ninterface BaseMonthProps {\n locale: undefined | string\n scrollMode: 'horizontal' | 'vertical'\n disableWeekDays?: DisableWeekDaysType\n mode: ModeType\n index: number\n onPressYear: (year: number) => any\n selectingYear: boolean\n onPressDate: (date: Date) => any\n primaryColor: string\n selectColor: string\n roundness: number\n validRange?: ValidRangeType\n\n // some of these should be required in final implementation\n startDate?: CalendarDate\n endDate?: CalendarDate\n date?: CalendarDate\n dates?: CalendarDates\n}\n\ninterface MonthRangeProps extends BaseMonthProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n}\n\ninterface MonthSingleProps extends BaseMonthProps {\n mode: 'single'\n date: CalendarDate\n}\n\ninterface MonthMultiProps extends BaseMonthProps {\n mode: 'multiple'\n dates: CalendarDates\n}\n\nfunction Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {\n const {\n index,\n mode,\n date,\n dates,\n startDate,\n endDate,\n onPressYear,\n selectingYear,\n onPressDate,\n scrollMode,\n primaryColor,\n selectColor,\n roundness,\n disableWeekDays,\n locale,\n validRange,\n } = props\n const theme = useTheme()\n const textColorOnPrimary = useTextColorOnPrimary()\n const realIndex = getRealIndex(index)\n const isHorizontal = scrollMode === 'horizontal'\n const { isDisabled, isWithinValidRange } = useRangeChecker(validRange)\n const { monthName, month, year } = React.useMemo(() => {\n const md = addMonths(new Date(), realIndex)\n const y = md.getFullYear()\n const m = md.getMonth()\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n })\n return { monthName: formatter.format(md), month: m, year: y }\n }, [realIndex, locale])\n\n const grid = React.useMemo(() => {\n const today = new Date()\n\n const daysInMonth = getDaysInMonth({ year, month })\n const dayOfWeek = getFirstDayOfMonth({ year, month })\n const emptyDays = dayOfWeek\n\n return monthGrid(index).map(({ days, weekGrid }) => {\n return {\n weekIndex: weekGrid,\n generatedDays: days.map((_, dayIndex) => {\n const isFirstWeek = weekGrid === 0\n const realDayIndex = emptyDays - dayIndex\n const beforeWeekDay = isFirstWeek && realDayIndex > 0\n const dayOfMonth = weekGrid * 7 + dayIndex - emptyDays + 1\n const afterWeekDay = dayOfMonth > daysInMonth\n\n const day = new Date(year, month, dayOfMonth)\n const isToday = areDatesOnSameDay(day, today)\n\n let inRange = false\n let disabled = isDisabled(day)\n let selected = false\n\n let leftCrop = dayOfMonth === 1\n let rightCrop = dayOfMonth === daysInMonth\n\n const isFirstDayOfMonth = dayOfMonth === 1\n const isLastDayOfMonth = dayOfMonth === daysInMonth\n\n if (mode === 'range') {\n const selectedStartDay = areDatesOnSameDay(day, startDate)\n const selectedEndDay = areDatesOnSameDay(day, endDate)\n selected = selectedStartDay || selectedEndDay\n inRange = isDateBetween(day, {\n startDate,\n endDate,\n })\n if (selectedStartDay) {\n leftCrop = true\n }\n if (selectedEndDay) {\n rightCrop = true\n }\n if (dayIndex === 0 && !selectedStartDay) {\n leftCrop = false\n }\n\n if (dayIndex === 6 && !selectedEndDay) {\n rightCrop = false\n }\n\n if (\n (isFirstDayOfMonth && selectedEndDay) ||\n (isLastDayOfMonth && selectedStartDay)\n ) {\n inRange = false\n }\n } else if (mode === 'multiple') {\n const safeDates = dates || []\n selected = safeDates.some((d) => areDatesOnSameDay(day, d))\n\n const yesterday = new Date(year, month, dayOfMonth - 1)\n const tomorrow = new Date(year, month, dayOfMonth + 1)\n\n const yesterdaySelected = safeDates.some((d) =>\n areDatesOnSameDay(d, yesterday)\n )\n const tomorrowSelected = safeDates.some((d) =>\n areDatesOnSameDay(d, tomorrow)\n )\n\n if (selected) {\n if (tomorrowSelected && yesterdaySelected) {\n inRange = true\n }\n if (tomorrowSelected && !yesterdaySelected) {\n inRange = true\n leftCrop = true\n }\n\n if (yesterdaySelected && !tomorrowSelected) {\n inRange = true\n rightCrop = true\n }\n\n if (isFirstDayOfMonth && !tomorrowSelected) {\n inRange = false\n }\n\n if (isLastDayOfMonth && !yesterdaySelected) {\n inRange = false\n }\n\n if (inRange && !leftCrop && !rightCrop) {\n selected = false\n }\n }\n } else if (mode === 'single') {\n selected = areDatesOnSameDay(day, date)\n }\n\n const isWithinOptionalValidRange = isWithinValidRange(day)\n\n if (inRange && !disabled) {\n disabled = false\n }\n\n if (!isWithinOptionalValidRange) {\n disabled = true\n }\n\n return {\n beforeWeekDay,\n afterWeekDay,\n year,\n month,\n dayOfMonth,\n dayIndex,\n mode,\n selected,\n inRange,\n leftCrop,\n rightCrop,\n isToday,\n disabled,\n }\n }),\n }\n })\n }, [\n year,\n month,\n index,\n isDisabled,\n mode,\n isWithinValidRange,\n startDate,\n endDate,\n dates,\n date,\n ])\n\n let textFont = theme?.isV3\n ? theme.fonts.titleSmall\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={[styles.month, { height: getMonthHeight(scrollMode, index) }]}>\n <View\n style={[\n styles.monthHeader,\n isHorizontal\n ? {\n marginTop: monthHeaderSingleMarginTop,\n marginBottom: monthHeaderSingleMarginBottom,\n }\n : null,\n ]}\n >\n <TouchableRipple\n disabled={!isHorizontal}\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n accessibilityRole=\"button\"\n accessibilityLabel={`${monthName} ${year}`}\n style={[\n styles.yearButton,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <View\n style={[\n styles.yearButtonInner,\n {\n borderRadius: roundness,\n },\n ]}\n >\n <Text\n style={[\n styles.monthLabel,\n {\n ...textFont,\n color: theme.isV3\n ? theme.colors.onSurfaceVariant\n : theme.colors.onSurface,\n },\n ]}\n selectable={false}\n >\n {monthName} {year}\n </Text>\n <View style={isHorizontal ? styles.opacity1 : styles.opacity0}>\n <IconButton\n onPress={isHorizontal ? () => onPressYear(year) : undefined}\n icon={\n selectingYear\n ? theme.isV3\n ? 'menu-up'\n : 'chevron-up'\n : theme.isV3\n ? 'menu-down'\n : 'chevron-down'\n }\n />\n </View>\n </View>\n </TouchableRipple>\n </View>\n {grid.map(({ weekIndex, generatedDays }) => (\n <View style={styles.week} key={weekIndex}>\n {generatedDays\n .filter((gd) => showWeekDay(gd.dayIndex, disableWeekDays))\n .map((gd) =>\n gd.beforeWeekDay || gd.afterWeekDay ? (\n <EmptyDay key={gd.dayIndex} />\n ) : (\n <Day\n key={gd.dayIndex}\n theme={theme}\n day={gd.dayOfMonth}\n month={gd.month}\n year={gd.year}\n selected={gd.selected}\n inRange={gd.inRange}\n leftCrop={gd.leftCrop}\n rightCrop={gd.rightCrop}\n onPressDate={onPressDate}\n isToday={gd.isToday}\n selectColor={selectColor}\n primaryColor={primaryColor}\n disabled={gd.disabled}\n textColorOnPrimary={textColorOnPrimary}\n />\n )\n )}\n </View>\n ))}\n </View>\n )\n}\n\nexport const weekMargin = 6\nexport const weekSize = daySize + weekMargin\nexport const montHeaderHeight = 56\nexport const monthHeaderSingleMarginTop = 4\nexport const monthHeaderSingleMarginBottom = 8 + 44 + 12\nexport const monthHeaderSingleHeight =\n monthHeaderSingleMarginTop + monthHeaderSingleMarginBottom\n\nconst styles = StyleSheet.create({\n week: {\n flexDirection: 'row',\n marginBottom: weekMargin,\n height: daySize,\n },\n month: {},\n monthHeader: {\n height: montHeaderHeight,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n monthLabel: { fontSize: 14, opacity: 0.7 },\n yearButton: { alignSelf: 'flex-start', marginLeft: 6 },\n yearButtonInner: {\n paddingLeft: 16,\n flexDirection: 'row',\n alignItems: 'center',\n },\n opacity0: { opacity: 0 },\n opacity1: { opacity: 1 },\n})\n\nconst monthGrid = (index: number) => {\n return Array(getGridCount(index))\n .fill(null)\n .map((_, weekGrid) => {\n const days = Array(7).fill(null)\n return { weekGrid, days }\n })\n}\n\nfunction getIndexCount(index: number): number {\n if (index > startAtIndex) {\n return index - startAtIndex\n }\n\n return -(startAtIndex - index)\n}\n\nfunction weeksOffset(index: number): number {\n if (index === startAtIndex) {\n return 0\n }\n let off = 0\n if (index > startAtIndex) {\n for (let i = 0; i < index - startAtIndex; i++) {\n const cIndex = startAtIndex + i\n off += gridCounts[cIndex] || getGridCount(cIndex)\n }\n } else {\n for (let i = 0; i < startAtIndex - index; i++) {\n const cIndex = startAtIndex - i - 1\n off -= gridCounts[cIndex] || getGridCount(cIndex)\n }\n }\n return off\n}\n\nexport function getIndexFromHorizontalOffset(\n offset: number,\n width: number\n): number {\n return startAtIndex + Math.floor(offset / width)\n}\n\nexport function getIndexFromVerticalOffset(offset: number): number {\n let estimatedIndex = startAtIndex + Math.ceil(offset / estimatedMonthHeight)\n\n const realOffset = getVerticalMonthsOffset(estimatedIndex)\n const difference = (realOffset - beginOffset - offset) / estimatedMonthHeight\n if (difference >= 1 || difference <= -1) {\n estimatedIndex -= Math.floor(difference)\n }\n return estimatedIndex\n}\n\nexport function getHorizontalMonthOffset(index: number, width: number) {\n if (index < 0) {\n return 0\n }\n return width * index\n}\n\nexport function getVerticalMonthsOffset(index: number) {\n const count = getIndexCount(index)\n const ob = weeksOffset(index)\n const monthsHeight = weekSize * ob\n const c = monthsHeight + count * (dayNamesHeight + montHeaderHeight)\n\n return (c || 0) + beginOffset\n}\n\nexport function getMonthHeight(\n scrollMode: 'horizontal' | 'vertical',\n index: number\n): number {\n const calendarHeight = getCalendarHeaderHeight(scrollMode)\n const gc = getGridCount(index)\n\n const currentMonthHeight = weekSize * gc\n const extraHeight =\n scrollMode === 'horizontal' ? monthHeaderSingleHeight : montHeaderHeight\n const c = calendarHeight + currentMonthHeight + extraHeight\n return c || 0\n}\n\nexport default React.memo(Month)\n"],"mappings":"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"}
|
|
@@ -84,7 +84,12 @@ function YearPure(_ref3) {
|
|
|
84
84
|
backgroundColor: theme.colors.primary
|
|
85
85
|
} : null]
|
|
86
86
|
}, /*#__PURE__*/React.createElement(_reactNativePaper.Text, {
|
|
87
|
-
style: [styles.yearLabel, selected ?
|
|
87
|
+
style: [styles.yearLabel, selected ? // eslint-disable-next-line react-native/no-inline-styles
|
|
88
|
+
{
|
|
89
|
+
color: theme.isV3 ? theme.colors.onPrimary : '#fff'
|
|
90
|
+
} : {
|
|
91
|
+
color: theme.isV3 ? theme.colors.onSurfaceVariant : undefined
|
|
92
|
+
}, { ...textFont
|
|
88
93
|
}],
|
|
89
94
|
selectable: false
|
|
90
95
|
}, year))));
|
|
@@ -108,9 +113,6 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
108
113
|
height: ITEM_HEIGHT,
|
|
109
114
|
justifyContent: 'center'
|
|
110
115
|
},
|
|
111
|
-
selectedYear: {
|
|
112
|
-
color: '#fff'
|
|
113
|
-
},
|
|
114
116
|
yearButton: {
|
|
115
117
|
borderRadius: 46 / 2,
|
|
116
118
|
overflow: 'hidden'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ITEM_HEIGHT","YearPicker","selectedYear","selectingYear","onPressYear","startYear","endYear","theme","useTheme","flatList","React","useRef","years","range","isNaN","useEffect","current","indexToGo","scrollToOffset","offset","animated","StyleSheet","absoluteFill","styles","root","backgroundColor","colors","surface","opacity1","opacity0","list","item","YearPure","year","selected","textFont","isV3","fonts","bodyLarge","medium","String","yearButton","yearInner","primary","yearLabel","Year","memo","create","flex","top","zIndex","marginLeft","marginRight","height","justifyContent","
|
|
1
|
+
{"version":3,"names":["ITEM_HEIGHT","YearPicker","selectedYear","selectingYear","onPressYear","startYear","endYear","theme","useTheme","flatList","React","useRef","years","range","isNaN","useEffect","current","indexToGo","scrollToOffset","offset","animated","StyleSheet","absoluteFill","styles","root","backgroundColor","colors","surface","opacity1","opacity0","list","item","YearPure","year","selected","textFont","isV3","fonts","bodyLarge","medium","String","yearButton","yearInner","primary","yearLabel","color","onPrimary","onSurfaceVariant","undefined","Year","memo","create","flex","top","zIndex","marginLeft","marginRight","height","justifyContent","borderRadius","overflow","alignItems","fontSize","opacity"],"sources":["YearPicker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { FlatList, StyleSheet, View } from 'react-native'\nimport { MD2Theme, Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { range } from '../utils'\n\nconst ITEM_HEIGHT = 62\n\nexport default function YearPicker({\n selectedYear,\n selectingYear,\n onPressYear,\n startYear,\n endYear,\n}: {\n selectedYear: number | undefined\n selectingYear: boolean\n onPressYear: (year: number) => any\n startYear: number\n endYear: number\n}) {\n const theme = useTheme()\n const flatList = React.useRef<FlatList<number> | null>(null)\n const years = range(\n isNaN(startYear) ? 1800 : startYear,\n isNaN(endYear) ? 2200 : endYear\n )\n\n // scroll to selected year\n React.useEffect(() => {\n if (flatList.current && selectedYear) {\n const indexToGo = selectedYear - startYear\n flatList.current.scrollToOffset({\n offset: (indexToGo / 3) * ITEM_HEIGHT - ITEM_HEIGHT,\n animated: false,\n })\n }\n }, [flatList, selectedYear, startYear])\n\n return (\n <View\n style={[\n StyleSheet.absoluteFill,\n styles.root,\n { backgroundColor: theme.colors.surface },\n selectingYear ? styles.opacity1 : styles.opacity0,\n ]}\n pointerEvents={selectingYear ? 'auto' : 'none'}\n >\n <FlatList<number>\n ref={flatList}\n style={styles.list}\n data={years}\n renderItem={({ item }) => (\n <Year\n year={item}\n selected={selectedYear === item}\n onPressYear={onPressYear}\n />\n )}\n keyExtractor={(item) => `${item}`}\n numColumns={3}\n />\n </View>\n )\n}\n\nfunction YearPure({\n year,\n selected,\n onPressYear,\n}: {\n year: number\n selected: boolean\n onPressYear: (newYear: number) => any\n}) {\n const theme = useTheme()\n\n let textFont = theme?.isV3\n ? theme.fonts.bodyLarge\n : (theme as any as MD2Theme).fonts.medium\n\n return (\n <View style={styles.year}>\n <TouchableRipple\n onPress={() => onPressYear(year)}\n accessibilityRole=\"button\"\n accessibilityLabel={String(year)}\n style={styles.yearButton}\n >\n <View\n style={[\n styles.yearInner,\n selected ? { backgroundColor: theme.colors.primary } : null,\n ]}\n >\n <Text\n style={[\n styles.yearLabel,\n selected\n ? // eslint-disable-next-line react-native/no-inline-styles\n { color: theme.isV3 ? theme.colors.onPrimary : '#fff' }\n : {\n color: theme.isV3\n ? theme.colors.onSurfaceVariant\n : undefined,\n },\n { ...textFont },\n ]}\n selectable={false}\n >\n {year}\n </Text>\n </View>\n </TouchableRipple>\n </View>\n )\n}\nconst Year = React.memo(YearPure)\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n top: 56,\n zIndex: 100,\n },\n\n list: {\n flex: 1,\n },\n year: {\n flex: 1,\n marginLeft: 16,\n marginRight: 16,\n height: ITEM_HEIGHT,\n justifyContent: 'center',\n },\n yearButton: {\n borderRadius: 46 / 2,\n overflow: 'hidden',\n },\n yearInner: {\n borderRadius: 46 / 2,\n height: 46,\n alignItems: 'center',\n justifyContent: 'center',\n },\n yearLabel: {\n fontSize: 16,\n },\n opacity0: {\n opacity: 0,\n },\n opacity1: {\n opacity: 1,\n },\n})\n"],"mappings":"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"}
|
|
@@ -278,7 +278,11 @@ function toHourOutputFormat(newHours, previousHours, is24Hour) {
|
|
|
278
278
|
return newHours;
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
if (
|
|
281
|
+
if (previousHours === 0 && newHours !== 0) {
|
|
282
|
+
return newHours - 12 < 0 ? newHours : newHours - 12;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
if (previousHours >= 12 && newHours < 12) {
|
|
282
286
|
return newHours + 12;
|
|
283
287
|
}
|
|
284
288
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["circleSize","hourTypes","am","pm","getHourType","hours","undefined","inputTypes","keyboard","picker","reverseInputTypes","inputTypeIcons","getTimeInputTypeIcon","inputType","inputIconMap","clockTypes","minutes","outerHeight","_30","Math","PI","_12","_360","_90","snap","angle","step","a","diff","getHourTypeFromOffset","left","top","size","w","x","y","distance","sqrt","maxPm","getMinutes","handAngle","minute","parseInt","toFixed","getHours","hourType","hour","getAngle","atan","useSwitchColors","highlighted","theme","useTheme","backgroundColor","React","useMemo","dark","isV3","colors","tertiaryContainer","Color","primary","hex","backdrop","primaryContainer","lighten","surface","color","onSurfaceVariant","onTertiaryContainer","background","placeholder","useInputColors","surfaceVariant","secondaryContainer","darken","onSurface","onBackground","onPrimaryContainer","text","toHourInputFormat","is24Hour","toHourOutputFormat","newHours","previousHours"],"sources":["timeUtils.ts"],"sourcesContent":["import * as React from 'react'\nimport Color from 'color'\nimport { MD2Theme, useTheme } from 'react-native-paper'\n\nexport const circleSize = 256\n\nexport type PossibleHourTypes = 'am' | 'pm'\nexport type HourTypeMap = {\n [hourType in PossibleHourTypes]: PossibleHourTypes\n}\nexport const hourTypes: HourTypeMap = {\n am: 'am',\n pm: 'pm',\n}\n\nexport function getHourType(hours: number): PossibleHourTypes | undefined {\n if (hours >= 0 && hours <= 12) {\n return hourTypes.am\n }\n if (hours > 12 && hours <= 24) {\n return hourTypes.pm\n }\n return undefined\n}\n\nexport type PossibleInputTypes = 'keyboard' | 'picker'\nexport type InputTypeMap = {\n [inputType in PossibleInputTypes]: PossibleInputTypes\n}\nexport const inputTypes: InputTypeMap = {\n keyboard: 'keyboard',\n picker: 'picker',\n}\n\nexport const reverseInputTypes: InputTypeMap = {\n keyboard: 'picker',\n picker: 'keyboard',\n}\ntype InputIconMap = {\n [inputType in PossibleInputTypes]: string\n}\nexport const inputTypeIcons: InputIconMap = {\n keyboard: 'keyboard-outline',\n picker: 'clock-outline',\n}\n\nexport const getTimeInputTypeIcon = (\n inputType: PossibleInputTypes,\n inputIconMap?: InputIconMap\n) => {\n return (\n inputIconMap?.[reverseInputTypes[inputType]] ||\n inputTypeIcons?.[reverseInputTypes[inputType]]\n )\n}\n\nexport type PossibleClockTypes = 'hours' | 'minutes'\nexport type ClockTypeMap = {\n [clockType in PossibleClockTypes]: PossibleClockTypes\n}\nexport const clockTypes: ClockTypeMap = {\n minutes: 'minutes',\n hours: 'hours',\n}\n\n// Code inspiration and copied from: https://github.com/ShaneGH/analogue-time-picker/blob/master/src/utils/angle.ts\n\nconst outerHeight = 34\nconst _30 = Math.PI / 6\nconst _12 = Math.PI / 30\nconst _360 = Math.PI * 2\nconst _90 = Math.PI / 2\n\n/** Snap an angle to a given step. E.g. if angle = 22° and step = 10°, round down to 20° */\nexport function snap(angle: number, step: number) {\n let a = angle\n while (a < 0) a += _360\n let diff = a % step\n\n if (diff <= step / 2) {\n return angle - diff\n }\n\n return angle - diff + step\n}\n\n// detect am / pm based on offset\nexport function getHourTypeFromOffset(\n left: number,\n top: number,\n size: number\n): PossibleHourTypes {\n const w = size / 2\n const x = w - left\n const y = size / 2 - top\n\n const distance = Math.sqrt(x * x + y * y)\n const maxPm = w - outerHeight\n\n return distance > maxPm ? hourTypes.am : hourTypes.pm\n}\n\n// Calculate the minute from the hand angle\nexport function getMinutes(handAngle: number) {\n handAngle = snap(handAngle, _12)\n\n let minute = parseInt((((handAngle - _90) % _360) / _12).toFixed(), 10)\n while (minute < 0) minute += 60\n while (minute >= 60) minute -= 60\n\n return minute\n}\n\n// Calculate the hour from the hand angle\nexport function getHours(\n handAngle: number,\n hourType: PossibleHourTypes | undefined\n) {\n handAngle = snap(handAngle, _30)\n\n let hour = parseInt((((handAngle - _90) % _360) / _30).toFixed(), 10)\n if (hour < 0) hour += 12\n if (hour >= 12) hour -= 12\n\n if (hourType === hourTypes.am) {\n if (hour <= 0) {\n hour += 12\n } else if (hour >= 12) {\n hour -= 12\n }\n }\n if (hourType === hourTypes.pm) {\n if (hour <= 0) {\n hour += 12\n } else if (hour > 12) {\n hour -= 12\n }\n }\n\n return hour\n}\n\n/** Get the angle of the left/top co-ordinate from the center of the width.height box */\nexport function getAngle(left: number, top: number, size: number) {\n const x = size / 2 - left\n const y = size / 2 - top\n\n // tan O = y / x\n let angle = x ? Math.atan(y / x) : y < 0 ? -_90 : _90\n if (x < 0) {\n // reflect along vertical axis\n angle = -angle + 2 * (_90 + angle)\n }\n\n return angle\n}\n\nexport function useSwitchColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.tertiaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.colors.backdrop\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n\n return Color(theme.colors.primary).lighten(1).hex()\n }\n return theme.colors.surface\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.primary\n }\n if (highlighted && theme.dark) {\n return theme.isV3\n ? theme.colors.onTertiaryContainer\n : theme.colors.background\n }\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n } else {\n return (theme as any as MD2Theme).colors.placeholder\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function useInputColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.primaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.isV3\n ? theme.colors.surfaceVariant\n : Color(theme.colors.surface).lighten(1.4).hex()\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.secondaryContainer\n }\n return Color(theme.colors.primary).lighten(1).hex()\n }\n if (theme.isV3) {\n return theme.colors.surfaceVariant\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (theme.isV3) {\n if (!highlighted) {\n return theme.isV3 ? theme.colors.onSurface : theme.colors.onBackground\n }\n return theme.isV3\n ? theme.colors.onPrimaryContainer\n : theme.colors.onBackground\n } else {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n return (theme as any as MD2Theme).colors.text\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function toHourInputFormat(hours: number, is24Hour: boolean): number {\n if (is24Hour) {\n if (hours === 24) {\n return 0\n }\n return hours\n }\n if (hours > 12) {\n return hours - 12\n }\n if (hours === 0) {\n return hours + 12\n }\n return hours\n}\n\nexport function toHourOutputFormat(\n newHours: number,\n previousHours: number,\n is24Hour: boolean\n): number {\n if (is24Hour) {\n return newHours\n }\n if ((!is24Hour && previousHours === 0) || newHours === 0) {\n return newHours + 12\n }\n return newHours\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["circleSize","hourTypes","am","pm","getHourType","hours","undefined","inputTypes","keyboard","picker","reverseInputTypes","inputTypeIcons","getTimeInputTypeIcon","inputType","inputIconMap","clockTypes","minutes","outerHeight","_30","Math","PI","_12","_360","_90","snap","angle","step","a","diff","getHourTypeFromOffset","left","top","size","w","x","y","distance","sqrt","maxPm","getMinutes","handAngle","minute","parseInt","toFixed","getHours","hourType","hour","getAngle","atan","useSwitchColors","highlighted","theme","useTheme","backgroundColor","React","useMemo","dark","isV3","colors","tertiaryContainer","Color","primary","hex","backdrop","primaryContainer","lighten","surface","color","onSurfaceVariant","onTertiaryContainer","background","placeholder","useInputColors","surfaceVariant","secondaryContainer","darken","onSurface","onBackground","onPrimaryContainer","text","toHourInputFormat","is24Hour","toHourOutputFormat","newHours","previousHours"],"sources":["timeUtils.ts"],"sourcesContent":["import * as React from 'react'\nimport Color from 'color'\nimport { MD2Theme, useTheme } from 'react-native-paper'\n\nexport const circleSize = 256\n\nexport type PossibleHourTypes = 'am' | 'pm'\nexport type HourTypeMap = {\n [hourType in PossibleHourTypes]: PossibleHourTypes\n}\nexport const hourTypes: HourTypeMap = {\n am: 'am',\n pm: 'pm',\n}\n\nexport function getHourType(hours: number): PossibleHourTypes | undefined {\n if (hours >= 0 && hours <= 12) {\n return hourTypes.am\n }\n if (hours > 12 && hours <= 24) {\n return hourTypes.pm\n }\n return undefined\n}\n\nexport type PossibleInputTypes = 'keyboard' | 'picker'\nexport type InputTypeMap = {\n [inputType in PossibleInputTypes]: PossibleInputTypes\n}\nexport const inputTypes: InputTypeMap = {\n keyboard: 'keyboard',\n picker: 'picker',\n}\n\nexport const reverseInputTypes: InputTypeMap = {\n keyboard: 'picker',\n picker: 'keyboard',\n}\ntype InputIconMap = {\n [inputType in PossibleInputTypes]: string\n}\nexport const inputTypeIcons: InputIconMap = {\n keyboard: 'keyboard-outline',\n picker: 'clock-outline',\n}\n\nexport const getTimeInputTypeIcon = (\n inputType: PossibleInputTypes,\n inputIconMap?: InputIconMap\n) => {\n return (\n inputIconMap?.[reverseInputTypes[inputType]] ||\n inputTypeIcons?.[reverseInputTypes[inputType]]\n )\n}\n\nexport type PossibleClockTypes = 'hours' | 'minutes'\nexport type ClockTypeMap = {\n [clockType in PossibleClockTypes]: PossibleClockTypes\n}\nexport const clockTypes: ClockTypeMap = {\n minutes: 'minutes',\n hours: 'hours',\n}\n\n// Code inspiration and copied from: https://github.com/ShaneGH/analogue-time-picker/blob/master/src/utils/angle.ts\n\nconst outerHeight = 34\nconst _30 = Math.PI / 6\nconst _12 = Math.PI / 30\nconst _360 = Math.PI * 2\nconst _90 = Math.PI / 2\n\n/** Snap an angle to a given step. E.g. if angle = 22° and step = 10°, round down to 20° */\nexport function snap(angle: number, step: number) {\n let a = angle\n while (a < 0) a += _360\n let diff = a % step\n\n if (diff <= step / 2) {\n return angle - diff\n }\n\n return angle - diff + step\n}\n\n// detect am / pm based on offset\nexport function getHourTypeFromOffset(\n left: number,\n top: number,\n size: number\n): PossibleHourTypes {\n const w = size / 2\n const x = w - left\n const y = size / 2 - top\n\n const distance = Math.sqrt(x * x + y * y)\n const maxPm = w - outerHeight\n\n return distance > maxPm ? hourTypes.am : hourTypes.pm\n}\n\n// Calculate the minute from the hand angle\nexport function getMinutes(handAngle: number) {\n handAngle = snap(handAngle, _12)\n\n let minute = parseInt((((handAngle - _90) % _360) / _12).toFixed(), 10)\n while (minute < 0) minute += 60\n while (minute >= 60) minute -= 60\n\n return minute\n}\n\n// Calculate the hour from the hand angle\nexport function getHours(\n handAngle: number,\n hourType: PossibleHourTypes | undefined\n) {\n handAngle = snap(handAngle, _30)\n\n let hour = parseInt((((handAngle - _90) % _360) / _30).toFixed(), 10)\n if (hour < 0) hour += 12\n if (hour >= 12) hour -= 12\n\n if (hourType === hourTypes.am) {\n if (hour <= 0) {\n hour += 12\n } else if (hour >= 12) {\n hour -= 12\n }\n }\n if (hourType === hourTypes.pm) {\n if (hour <= 0) {\n hour += 12\n } else if (hour > 12) {\n hour -= 12\n }\n }\n\n return hour\n}\n\n/** Get the angle of the left/top co-ordinate from the center of the width.height box */\nexport function getAngle(left: number, top: number, size: number) {\n const x = size / 2 - left\n const y = size / 2 - top\n\n // tan O = y / x\n let angle = x ? Math.atan(y / x) : y < 0 ? -_90 : _90\n if (x < 0) {\n // reflect along vertical axis\n angle = -angle + 2 * (_90 + angle)\n }\n\n return angle\n}\n\nexport function useSwitchColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.tertiaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.colors.backdrop\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n\n return Color(theme.colors.primary).lighten(1).hex()\n }\n return theme.colors.surface\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.primary\n }\n if (highlighted && theme.dark) {\n return theme.isV3\n ? theme.colors.onTertiaryContainer\n : theme.colors.background\n }\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n } else {\n return (theme as any as MD2Theme).colors.placeholder\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function useInputColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.primaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.isV3\n ? theme.colors.surfaceVariant\n : Color(theme.colors.surface).lighten(1.4).hex()\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.secondaryContainer\n }\n return Color(theme.colors.primary).lighten(1).hex()\n }\n if (theme.isV3) {\n return theme.colors.surfaceVariant\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (theme.isV3) {\n if (!highlighted) {\n return theme.isV3 ? theme.colors.onSurface : theme.colors.onBackground\n }\n return theme.isV3\n ? theme.colors.onPrimaryContainer\n : theme.colors.onBackground\n } else {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n return (theme as any as MD2Theme).colors.text\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function toHourInputFormat(hours: number, is24Hour: boolean): number {\n if (is24Hour) {\n if (hours === 24) {\n return 0\n }\n return hours\n }\n if (hours > 12) {\n return hours - 12\n }\n if (hours === 0) {\n return hours + 12\n }\n return hours\n}\n\nexport function toHourOutputFormat(\n newHours: number,\n previousHours: number,\n is24Hour: boolean\n): number {\n if (is24Hour) {\n return newHours\n }\n if (previousHours === 0 && newHours !== 0) {\n return newHours - 12 < 0 ? newHours : newHours - 12\n }\n if (previousHours >= 12 && newHours < 12) {\n return newHours + 12\n }\n return newHours\n}\n"],"mappings":"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"}
|
package/lib/commonjs/utils.js
CHANGED
|
@@ -32,6 +32,11 @@ function useLatest(value) {
|
|
|
32
32
|
|
|
33
33
|
function useHeaderBackgroundColor() {
|
|
34
34
|
const theme = (0, _reactNativePaper.useTheme)();
|
|
35
|
+
|
|
36
|
+
if (theme.isV3) {
|
|
37
|
+
return theme.colors.surface;
|
|
38
|
+
}
|
|
39
|
+
|
|
35
40
|
return theme.dark && theme.mode === 'adaptive' ? (0, _reactNativePaper.overlay)(4, theme.colors.surface) : theme.colors.primary;
|
|
36
41
|
}
|
|
37
42
|
|
|
@@ -42,7 +47,13 @@ function useHeaderColorIsLight() {
|
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
function useHeaderTextColor() {
|
|
50
|
+
const theme = (0, _reactNativePaper.useTheme)();
|
|
45
51
|
const isLight = useHeaderColorIsLight();
|
|
52
|
+
|
|
53
|
+
if (theme.isV3) {
|
|
54
|
+
return theme.colors.onSurfaceVariant;
|
|
55
|
+
}
|
|
56
|
+
|
|
46
57
|
return !isLight ? '#fff' : '#000';
|
|
47
58
|
}
|
|
48
59
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useLatest","value","ref","React","useRef","current","useHeaderBackgroundColor","theme","useTheme","
|
|
1
|
+
{"version":3,"names":["useLatest","value","ref","React","useRef","current","useHeaderBackgroundColor","theme","useTheme","isV3","colors","surface","dark","mode","overlay","primary","useHeaderColorIsLight","background","Color","isLight","useHeaderTextColor","onSurfaceVariant","useTextColorOnPrimary","isDark","onSurface","onPrimary","range","start","end","Array","fill","map","_","i","lightenBy","color","ratio","lightness","darkenBy"],"sources":["utils.ts"],"sourcesContent":["import * as React from 'react'\nimport {\n DefaultTheme,\n MD3DarkTheme,\n overlay,\n useTheme,\n} from 'react-native-paper'\nimport Color from 'color'\n\nexport type PaperTheme = typeof MD3DarkTheme | typeof DefaultTheme\n\nexport function useLatest<T>(value: T) {\n const ref = React.useRef(value)\n ref.current = value\n return ref\n}\n\nexport function useHeaderBackgroundColor() {\n const theme = useTheme()\n if (theme.isV3) {\n return theme.colors.surface\n }\n return theme.dark && theme.mode === 'adaptive'\n ? overlay(4, theme.colors.surface)\n : theme.colors.primary\n}\n\nexport function useHeaderColorIsLight() {\n const theme = useTheme()\n const background =\n theme.dark && theme.mode === 'adaptive'\n ? theme.colors.surface\n : theme.colors.primary\n return Color(background).isLight()\n}\n\nexport function useHeaderTextColor() {\n const theme = useTheme()\n const isLight = useHeaderColorIsLight()\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n }\n return !isLight ? '#fff' : '#000'\n}\n\nexport function useTextColorOnPrimary() {\n const theme = useTheme()\n const isDark = !Color(theme.colors.primary).isLight()\n\n if (theme.isV3) {\n if (isDark && theme.dark) {\n return theme.colors.onSurface\n } else {\n return theme.colors.onPrimary\n }\n }\n\n return isDark ? '#fff' : '#000'\n}\n\nexport function range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, i) => start + i)\n}\n\nexport function lightenBy(color: Color, ratio: number) {\n const lightness = color.lightness()\n return color.lightness(lightness + (100 - lightness) * ratio)\n}\n\nexport function darkenBy(color: Color, ratio: number) {\n const lightness = color.lightness()\n return color.lightness(lightness - lightness * ratio)\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AAMA;;;;;;;;AAIO,SAASA,SAAT,CAAsBC,KAAtB,EAAgC;EACrC,MAAMC,GAAG,GAAGC,KAAK,CAACC,MAAN,CAAaH,KAAb,CAAZ;EACAC,GAAG,CAACG,OAAJ,GAAcJ,KAAd;EACA,OAAOC,GAAP;AACD;;AAEM,SAASI,wBAAT,GAAoC;EACzC,MAAMC,KAAK,GAAG,IAAAC,0BAAA,GAAd;;EACA,IAAID,KAAK,CAACE,IAAV,EAAgB;IACd,OAAOF,KAAK,CAACG,MAAN,CAAaC,OAApB;EACD;;EACD,OAAOJ,KAAK,CAACK,IAAN,IAAcL,KAAK,CAACM,IAAN,KAAe,UAA7B,GACH,IAAAC,yBAAA,EAAQ,CAAR,EAAWP,KAAK,CAACG,MAAN,CAAaC,OAAxB,CADG,GAEHJ,KAAK,CAACG,MAAN,CAAaK,OAFjB;AAGD;;AAEM,SAASC,qBAAT,GAAiC;EACtC,MAAMT,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMS,UAAU,GACdV,KAAK,CAACK,IAAN,IAAcL,KAAK,CAACM,IAAN,KAAe,UAA7B,GACIN,KAAK,CAACG,MAAN,CAAaC,OADjB,GAEIJ,KAAK,CAACG,MAAN,CAAaK,OAHnB;EAIA,OAAO,IAAAG,cAAA,EAAMD,UAAN,EAAkBE,OAAlB,EAAP;AACD;;AAEM,SAASC,kBAAT,GAA8B;EACnC,MAAMb,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMW,OAAO,GAAGH,qBAAqB,EAArC;;EACA,IAAIT,KAAK,CAACE,IAAV,EAAgB;IACd,OAAOF,KAAK,CAACG,MAAN,CAAaW,gBAApB;EACD;;EACD,OAAO,CAACF,OAAD,GAAW,MAAX,GAAoB,MAA3B;AACD;;AAEM,SAASG,qBAAT,GAAiC;EACtC,MAAMf,KAAK,GAAG,IAAAC,0BAAA,GAAd;EACA,MAAMe,MAAM,GAAG,CAAC,IAAAL,cAAA,EAAMX,KAAK,CAACG,MAAN,CAAaK,OAAnB,EAA4BI,OAA5B,EAAhB;;EAEA,IAAIZ,KAAK,CAACE,IAAV,EAAgB;IACd,IAAIc,MAAM,IAAIhB,KAAK,CAACK,IAApB,EAA0B;MACxB,OAAOL,KAAK,CAACG,MAAN,CAAac,SAApB;IACD,CAFD,MAEO;MACL,OAAOjB,KAAK,CAACG,MAAN,CAAae,SAApB;IACD;EACF;;EAED,OAAOF,MAAM,GAAG,MAAH,GAAY,MAAzB;AACD;;AAEM,SAASG,KAAT,CAAeC,KAAf,EAA8BC,GAA9B,EAA2C;EAChD,OAAOC,KAAK,CAACD,GAAG,GAAGD,KAAN,GAAc,CAAf,CAAL,CACJG,IADI,CACC,IADD,EAEJC,GAFI,CAEA,CAACC,CAAD,EAAIC,CAAJ,KAAUN,KAAK,GAAGM,CAFlB,CAAP;AAGD;;AAEM,SAASC,SAAT,CAAmBC,KAAnB,EAAiCC,KAAjC,EAAgD;EACrD,MAAMC,SAAS,GAAGF,KAAK,CAACE,SAAN,EAAlB;EACA,OAAOF,KAAK,CAACE,SAAN,CAAgBA,SAAS,GAAG,CAAC,MAAMA,SAAP,IAAoBD,KAAhD,CAAP;AACD;;AAEM,SAASE,QAAT,CAAkBH,KAAlB,EAAgCC,KAAhC,EAA+C;EACpD,MAAMC,SAAS,GAAGF,KAAK,CAACE,SAAN,EAAlB;EACA,OAAOF,KAAK,CAACE,SAAN,CAAgBA,SAAS,GAAGA,SAAS,GAAGD,KAAxC,CAAP;AACD"}
|
|
@@ -27,6 +27,10 @@ function Calendar(props) {
|
|
|
27
27
|
} = props;
|
|
28
28
|
const theme = useTheme();
|
|
29
29
|
const selectColor = useMemo(() => {
|
|
30
|
+
if (theme.isV3) {
|
|
31
|
+
return theme.colors.primaryContainer;
|
|
32
|
+
}
|
|
33
|
+
|
|
30
34
|
if (theme.dark) {
|
|
31
35
|
return darkenBy(Color(theme.colors.primary), 0.1).hex();
|
|
32
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","Swiper","Month","areDatesOnSameDay","dateToUnix","getEndOfDay","getInitialIndex","CalendarHeader","useCallback","useMemo","YearPicker","Color","useTheme","useLatest","lightenBy","darkenBy","Calendar","props","locale","mode","onChange","startDate","endDate","date","disableWeekDays","startYear","endYear","dates","validRange","dateMode","theme","selectColor","dark","colors","primary","hex","scrollMode","selectedYear","setSelectedYear","useState","undefined","selectingYear","setSelectingYear","onPressYear","year","prev","startDateRef","endDateRef","onChangeRef","datesRef","onPressDate","d","current","sd","ed","isStart","exists","some","newDates","filter","sort","a","b","getTime","datePressed","change","firstDate","styles","root","index","roundness","onPrev","onNext","create","flex","viewPager","memo"],"sources":["Calendar.tsx"],"sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport Swiper from './Swiper'\nimport Month from './Month'\nimport {\n areDatesOnSameDay,\n dateToUnix,\n DisableWeekDaysType,\n getEndOfDay,\n getInitialIndex,\n} from './dateUtils'\n\nimport CalendarHeader from './CalendarHeader'\nimport { useCallback, useMemo } from 'react'\nimport YearPicker from './YearPicker'\nimport Color from 'color'\nimport { useTheme } from 'react-native-paper'\nimport { useLatest, lightenBy, darkenBy } from '../utils'\n\nexport type ModeType = 'single' | 'range' | 'multiple'\n\nexport type ScrollModeType = 'horizontal' | 'vertical'\n\nexport type ValidRangeType = {\n startDate?: Date\n endDate?: Date\n disabledDates?: Date[]\n}\n\nexport type BaseCalendarProps = {\n locale: string\n disableWeekDays?: DisableWeekDaysType\n validRange?: ValidRangeType\n startYear?: number\n endYear?: number\n\n // here they are optional but in final implementation they are required\n date?: CalendarDate\n dates?: CalendarDates\n startDate?: CalendarDate\n endDate?: CalendarDate\n dateMode?: 'start' | 'end'\n}\n\nexport type CalendarDate = Date | undefined\nexport type CalendarDates = Date[] | undefined | null\n\nexport type RangeChange = (params: {\n startDate: CalendarDate\n endDate: CalendarDate\n}) => any\n\nexport type SingleChange = (params: { date: CalendarDate }) => void\n\nexport type MultiChange = (params: {\n dates: CalendarDates\n datePressed: Date\n change: 'added' | 'removed'\n}) => any\n\nexport type MultiConfirm = (params: { dates: Date[] }) => void\n\nexport interface CalendarSingleProps extends BaseCalendarProps {\n mode: 'single'\n date: CalendarDate\n onChange: SingleChange\n}\n\nexport interface CalendarRangeProps extends BaseCalendarProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n onChange: RangeChange\n}\n\nexport interface CalendarMultiProps extends BaseCalendarProps {\n mode: 'multiple'\n dates: CalendarDates\n onChange: MultiChange\n}\n\nfunction Calendar(\n props: CalendarSingleProps | CalendarRangeProps | CalendarMultiProps\n) {\n const {\n locale,\n mode,\n onChange,\n startDate,\n endDate,\n date,\n disableWeekDays,\n startYear,\n endYear,\n dates,\n validRange,\n dateMode,\n } = props\n\n const theme = useTheme()\n\n const selectColor = useMemo<string>(() => {\n if (theme.dark) {\n return darkenBy(Color(theme.colors.primary), 0.1).hex()\n }\n return lightenBy(Color(theme.colors.primary), 0.9).hex()\n }, [theme])\n\n const scrollMode =\n mode === 'range' || mode === 'multiple' ? 'vertical' : 'horizontal'\n\n const [selectedYear, setSelectedYear] = React.useState<number | undefined>(\n undefined\n )\n const [selectingYear, setSelectingYear] = React.useState<boolean>(false)\n const onPressYear = useCallback(\n (year: number) => {\n setSelectedYear(year)\n setSelectingYear((prev) => !prev)\n },\n [setSelectingYear]\n )\n\n // prevent re-rendering all months when something changed we only need the\n // latest version of the props and we don't want the useCallback to change\n const startDateRef = useLatest<CalendarDate>(startDate)\n const endDateRef = useLatest<CalendarDate>(endDate)\n const onChangeRef = useLatest<RangeChange | SingleChange | MultiChange>(\n onChange\n )\n const datesRef = useLatest<CalendarDates>(dates)\n\n const onPressDate = useCallback(\n (d: Date) => {\n if (mode === 'single') {\n ;(onChangeRef.current as SingleChange)({\n date: dateMode === 'start' ? d : getEndOfDay(d),\n })\n } else if (mode === 'range') {\n const sd = startDateRef.current\n const ed = endDateRef.current\n let isStart: boolean = true\n if (sd && !ed && dateToUnix(d) >= dateToUnix(sd!)) {\n isStart = false\n }\n ;(onChangeRef.current as RangeChange)({\n startDate: isStart ? d : sd,\n endDate: !isStart ? getEndOfDay(d) : undefined,\n })\n } else if (mode === 'multiple') {\n datesRef.current = datesRef.current || []\n const exists = datesRef.current.some((ed) => areDatesOnSameDay(ed, d))\n\n const newDates = exists\n ? datesRef.current.filter((ed) => !areDatesOnSameDay(ed, d))\n : [...datesRef.current, d]\n\n newDates.sort((a, b) => a.getTime() - b.getTime())\n ;(onChangeRef.current as MultiChange)({\n dates: newDates,\n datePressed: d,\n change: exists ? 'removed' : 'added',\n })\n }\n },\n [mode, dateMode, onChangeRef, startDateRef, endDateRef, datesRef]\n )\n\n const firstDate = startDate || date || dates?.[0]\n\n return (\n <View style={styles.root}>\n <Swiper\n initialIndex={getInitialIndex(firstDate)}\n selectedYear={selectedYear}\n scrollMode={scrollMode}\n renderItem={({ index }) => (\n <Month\n locale={locale}\n mode={mode}\n key={index}\n validRange={validRange}\n index={index}\n startDate={startDate}\n endDate={endDate}\n date={date}\n dates={dates}\n onPressYear={onPressYear}\n selectingYear={selectingYear}\n onPressDate={onPressDate}\n scrollMode={scrollMode}\n primaryColor={theme.colors.primary}\n selectColor={selectColor}\n roundness={theme.roundness}\n disableWeekDays={disableWeekDays}\n />\n )}\n renderHeader={({ onPrev, onNext }) => (\n <CalendarHeader\n locale={locale}\n onPrev={onPrev}\n onNext={onNext}\n scrollMode={scrollMode}\n disableWeekDays={disableWeekDays}\n />\n )}\n />\n {scrollMode === 'horizontal' ? (\n <YearPicker\n selectedYear={selectedYear}\n selectingYear={selectingYear}\n onPressYear={onPressYear}\n startYear={startYear || 1800}\n endYear={endYear || 2200}\n />\n ) : null}\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n root: { flex: 1 },\n viewPager: { flex: 1 },\n})\n\nexport default React.memo(Calendar)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","Swiper","Month","areDatesOnSameDay","dateToUnix","getEndOfDay","getInitialIndex","CalendarHeader","useCallback","useMemo","YearPicker","Color","useTheme","useLatest","lightenBy","darkenBy","Calendar","props","locale","mode","onChange","startDate","endDate","date","disableWeekDays","startYear","endYear","dates","validRange","dateMode","theme","selectColor","isV3","colors","primaryContainer","dark","primary","hex","scrollMode","selectedYear","setSelectedYear","useState","undefined","selectingYear","setSelectingYear","onPressYear","year","prev","startDateRef","endDateRef","onChangeRef","datesRef","onPressDate","d","current","sd","ed","isStart","exists","some","newDates","filter","sort","a","b","getTime","datePressed","change","firstDate","styles","root","index","roundness","onPrev","onNext","create","flex","viewPager","memo"],"sources":["Calendar.tsx"],"sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport Swiper from './Swiper'\nimport Month from './Month'\nimport {\n areDatesOnSameDay,\n dateToUnix,\n DisableWeekDaysType,\n getEndOfDay,\n getInitialIndex,\n} from './dateUtils'\n\nimport CalendarHeader from './CalendarHeader'\nimport { useCallback, useMemo } from 'react'\nimport YearPicker from './YearPicker'\nimport Color from 'color'\nimport { useTheme } from 'react-native-paper'\nimport { useLatest, lightenBy, darkenBy } from '../utils'\n\nexport type ModeType = 'single' | 'range' | 'multiple'\n\nexport type ScrollModeType = 'horizontal' | 'vertical'\n\nexport type ValidRangeType = {\n startDate?: Date\n endDate?: Date\n disabledDates?: Date[]\n}\n\nexport type BaseCalendarProps = {\n locale: string\n disableWeekDays?: DisableWeekDaysType\n validRange?: ValidRangeType\n startYear?: number\n endYear?: number\n\n // here they are optional but in final implementation they are required\n date?: CalendarDate\n dates?: CalendarDates\n startDate?: CalendarDate\n endDate?: CalendarDate\n dateMode?: 'start' | 'end'\n}\n\nexport type CalendarDate = Date | undefined\nexport type CalendarDates = Date[] | undefined | null\n\nexport type RangeChange = (params: {\n startDate: CalendarDate\n endDate: CalendarDate\n}) => any\n\nexport type SingleChange = (params: { date: CalendarDate }) => void\n\nexport type MultiChange = (params: {\n dates: CalendarDates\n datePressed: Date\n change: 'added' | 'removed'\n}) => any\n\nexport type MultiConfirm = (params: { dates: Date[] }) => void\n\nexport interface CalendarSingleProps extends BaseCalendarProps {\n mode: 'single'\n date: CalendarDate\n onChange: SingleChange\n}\n\nexport interface CalendarRangeProps extends BaseCalendarProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n onChange: RangeChange\n}\n\nexport interface CalendarMultiProps extends BaseCalendarProps {\n mode: 'multiple'\n dates: CalendarDates\n onChange: MultiChange\n}\n\nfunction Calendar(\n props: CalendarSingleProps | CalendarRangeProps | CalendarMultiProps\n) {\n const {\n locale,\n mode,\n onChange,\n startDate,\n endDate,\n date,\n disableWeekDays,\n startYear,\n endYear,\n dates,\n validRange,\n dateMode,\n } = props\n\n const theme = useTheme()\n\n const selectColor = useMemo<string>(() => {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n if (theme.dark) {\n return darkenBy(Color(theme.colors.primary), 0.1).hex()\n }\n return lightenBy(Color(theme.colors.primary), 0.9).hex()\n }, [theme])\n\n const scrollMode =\n mode === 'range' || mode === 'multiple' ? 'vertical' : 'horizontal'\n\n const [selectedYear, setSelectedYear] = React.useState<number | undefined>(\n undefined\n )\n const [selectingYear, setSelectingYear] = React.useState<boolean>(false)\n const onPressYear = useCallback(\n (year: number) => {\n setSelectedYear(year)\n setSelectingYear((prev) => !prev)\n },\n [setSelectingYear]\n )\n\n // prevent re-rendering all months when something changed we only need the\n // latest version of the props and we don't want the useCallback to change\n const startDateRef = useLatest<CalendarDate>(startDate)\n const endDateRef = useLatest<CalendarDate>(endDate)\n const onChangeRef = useLatest<RangeChange | SingleChange | MultiChange>(\n onChange\n )\n const datesRef = useLatest<CalendarDates>(dates)\n\n const onPressDate = useCallback(\n (d: Date) => {\n if (mode === 'single') {\n ;(onChangeRef.current as SingleChange)({\n date: dateMode === 'start' ? d : getEndOfDay(d),\n })\n } else if (mode === 'range') {\n const sd = startDateRef.current\n const ed = endDateRef.current\n let isStart: boolean = true\n if (sd && !ed && dateToUnix(d) >= dateToUnix(sd!)) {\n isStart = false\n }\n ;(onChangeRef.current as RangeChange)({\n startDate: isStart ? d : sd,\n endDate: !isStart ? getEndOfDay(d) : undefined,\n })\n } else if (mode === 'multiple') {\n datesRef.current = datesRef.current || []\n const exists = datesRef.current.some((ed) => areDatesOnSameDay(ed, d))\n\n const newDates = exists\n ? datesRef.current.filter((ed) => !areDatesOnSameDay(ed, d))\n : [...datesRef.current, d]\n\n newDates.sort((a, b) => a.getTime() - b.getTime())\n ;(onChangeRef.current as MultiChange)({\n dates: newDates,\n datePressed: d,\n change: exists ? 'removed' : 'added',\n })\n }\n },\n [mode, dateMode, onChangeRef, startDateRef, endDateRef, datesRef]\n )\n\n const firstDate = startDate || date || dates?.[0]\n\n return (\n <View style={styles.root}>\n <Swiper\n initialIndex={getInitialIndex(firstDate)}\n selectedYear={selectedYear}\n scrollMode={scrollMode}\n renderItem={({ index }) => (\n <Month\n locale={locale}\n mode={mode}\n key={index}\n validRange={validRange}\n index={index}\n startDate={startDate}\n endDate={endDate}\n date={date}\n dates={dates}\n onPressYear={onPressYear}\n selectingYear={selectingYear}\n onPressDate={onPressDate}\n scrollMode={scrollMode}\n primaryColor={theme.colors.primary}\n selectColor={selectColor}\n roundness={theme.roundness}\n disableWeekDays={disableWeekDays}\n />\n )}\n renderHeader={({ onPrev, onNext }) => (\n <CalendarHeader\n locale={locale}\n onPrev={onPrev}\n onNext={onNext}\n scrollMode={scrollMode}\n disableWeekDays={disableWeekDays}\n />\n )}\n />\n {scrollMode === 'horizontal' ? (\n <YearPicker\n selectedYear={selectedYear}\n selectingYear={selectingYear}\n onPressYear={onPressYear}\n startYear={startYear || 1800}\n endYear={endYear || 2200}\n />\n ) : null}\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n root: { flex: 1 },\n viewPager: { flex: 1 },\n})\n\nexport default React.memo(Calendar)\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","IconButton","useTheme","DayNames","dayNamesHeight","getTranslation","buttonContainerHeight","buttonContainerMarginTop","buttonContainerMarginBottom","getCalendarHeaderHeight","scrollMode","CalendarHeader","onPrev","onNext","disableWeekDays","locale","theme","isHorizontal","styles","datePickerHeader","buttonContainer","spacer","buttonWrapper","backgroundColor","colors","surface","create","position","top","right","left","zIndex","height","marginTop","marginBottom","flexDirection","alignItems","flex","memo"],"sources":["CalendarHeader.tsx"],"sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { IconButton, useTheme } from 'react-native-paper'\nimport DayNames, { dayNamesHeight } from './DayNames'\nimport type { DisableWeekDaysType } from './dateUtils'\nimport { getTranslation } from '../translations/utils'\n\nconst buttonContainerHeight = 56\nconst buttonContainerMarginTop = 4\nconst buttonContainerMarginBottom = 8\n\nexport function getCalendarHeaderHeight(scrollMode: 'horizontal' | 'vertical') {\n if (scrollMode === 'horizontal') {\n return (\n buttonContainerHeight +\n buttonContainerMarginTop +\n buttonContainerMarginBottom +\n dayNamesHeight\n )\n }\n return dayNamesHeight\n}\n\nfunction CalendarHeader({\n scrollMode,\n onPrev,\n onNext,\n disableWeekDays,\n locale,\n}: {\n locale: undefined | string\n scrollMode: 'horizontal' | 'vertical'\n onPrev: () => any\n onNext: () => any\n disableWeekDays?: DisableWeekDaysType\n}) {\n const theme = useTheme()\n const isHorizontal = scrollMode === 'horizontal'\n return (\n <View style={styles.datePickerHeader} pointerEvents={'box-none'}>\n {isHorizontal ? (\n <View style={styles.buttonContainer} pointerEvents={'box-none'}>\n <View style={styles.spacer} pointerEvents={'box-none'} />\n <View\n style={[\n styles.buttonWrapper,\n { backgroundColor: theme.colors.surface },\n ]}\n >\n <IconButton\n icon=\"chevron-left\"\n accessibilityLabel={getTranslation(locale, 'previous')}\n onPress={onPrev}\n />\n </View>\n
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","IconButton","useTheme","DayNames","dayNamesHeight","getTranslation","buttonContainerHeight","buttonContainerMarginTop","buttonContainerMarginBottom","getCalendarHeaderHeight","scrollMode","CalendarHeader","onPrev","onNext","disableWeekDays","locale","theme","isHorizontal","styles","datePickerHeader","buttonContainer","spacer","buttonWrapper","backgroundColor","colors","surface","create","position","top","right","left","zIndex","height","marginTop","marginBottom","flexDirection","alignItems","flex","memo"],"sources":["CalendarHeader.tsx"],"sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { IconButton, useTheme } from 'react-native-paper'\nimport DayNames, { dayNamesHeight } from './DayNames'\nimport type { DisableWeekDaysType } from './dateUtils'\nimport { getTranslation } from '../translations/utils'\n\nconst buttonContainerHeight = 56\nconst buttonContainerMarginTop = 4\nconst buttonContainerMarginBottom = 8\n\nexport function getCalendarHeaderHeight(scrollMode: 'horizontal' | 'vertical') {\n if (scrollMode === 'horizontal') {\n return (\n buttonContainerHeight +\n buttonContainerMarginTop +\n buttonContainerMarginBottom +\n dayNamesHeight\n )\n }\n return dayNamesHeight\n}\n\nfunction CalendarHeader({\n scrollMode,\n onPrev,\n onNext,\n disableWeekDays,\n locale,\n}: {\n locale: undefined | string\n scrollMode: 'horizontal' | 'vertical'\n onPrev: () => any\n onNext: () => any\n disableWeekDays?: DisableWeekDaysType\n}) {\n const theme = useTheme()\n const isHorizontal = scrollMode === 'horizontal'\n return (\n <View style={styles.datePickerHeader} pointerEvents={'box-none'}>\n {isHorizontal ? (\n <View style={styles.buttonContainer} pointerEvents={'box-none'}>\n <View style={styles.spacer} pointerEvents={'box-none'} />\n <View\n style={[\n styles.buttonWrapper,\n { backgroundColor: theme.colors.surface },\n ]}\n >\n <IconButton\n icon=\"chevron-left\"\n accessibilityLabel={getTranslation(locale, 'previous')}\n onPress={onPrev}\n />\n </View>\n <View\n style={[\n styles.buttonWrapper,\n { backgroundColor: theme.colors.surface },\n ]}\n >\n <IconButton\n icon=\"chevron-right\"\n accessibilityLabel={getTranslation(locale, 'next')}\n onPress={onNext}\n />\n </View>\n </View>\n ) : null}\n <DayNames disableWeekDays={disableWeekDays} locale={locale} />\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n datePickerHeader: {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0,\n zIndex: 10,\n },\n buttonContainer: {\n height: buttonContainerHeight,\n marginTop: buttonContainerMarginTop,\n marginBottom: buttonContainerMarginBottom,\n flexDirection: 'row',\n alignItems: 'center',\n },\n buttonWrapper: {},\n spacer: { flex: 1 },\n})\n\nexport default React.memo(CalendarHeader)\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AACA,SAASC,UAAT,EAAqBC,QAArB,QAAqC,oBAArC;AACA,OAAOC,QAAP,IAAmBC,cAAnB,QAAyC,YAAzC;AAEA,SAASC,cAAT,QAA+B,uBAA/B;AAEA,MAAMC,qBAAqB,GAAG,EAA9B;AACA,MAAMC,wBAAwB,GAAG,CAAjC;AACA,MAAMC,2BAA2B,GAAG,CAApC;AAEA,OAAO,SAASC,uBAAT,CAAiCC,UAAjC,EAAwE;EAC7E,IAAIA,UAAU,KAAK,YAAnB,EAAiC;IAC/B,OACEJ,qBAAqB,GACrBC,wBADA,GAEAC,2BAFA,GAGAJ,cAJF;EAMD;;EACD,OAAOA,cAAP;AACD;;AAED,SAASO,cAAT,OAYG;EAAA,IAZqB;IACtBD,UADsB;IAEtBE,MAFsB;IAGtBC,MAHsB;IAItBC,eAJsB;IAKtBC;EALsB,CAYrB;EACD,MAAMC,KAAK,GAAGd,QAAQ,EAAtB;EACA,MAAMe,YAAY,GAAGP,UAAU,KAAK,YAApC;EACA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEQ,MAAM,CAACC,gBAApB;IAAsC,aAAa,EAAE;EAArD,GACGF,YAAY,gBACX,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACE,eAApB;IAAqC,aAAa,EAAE;EAApD,gBACE,oBAAC,IAAD;IAAM,KAAK,EAAEF,MAAM,CAACG,MAApB;IAA4B,aAAa,EAAE;EAA3C,EADF,eAEE,oBAAC,IAAD;IACE,KAAK,EAAE,CACLH,MAAM,CAACI,aADF,EAEL;MAAEC,eAAe,EAAEP,KAAK,CAACQ,MAAN,CAAaC;IAAhC,CAFK;EADT,gBAME,oBAAC,UAAD;IACE,IAAI,EAAC,cADP;IAEE,kBAAkB,EAAEpB,cAAc,CAACU,MAAD,EAAS,UAAT,CAFpC;IAGE,OAAO,EAAEH;EAHX,EANF,CAFF,eAcE,oBAAC,IAAD;IACE,KAAK,EAAE,CACLM,MAAM,CAACI,aADF,EAEL;MAAEC,eAAe,EAAEP,KAAK,CAACQ,MAAN,CAAaC;IAAhC,CAFK;EADT,gBAME,oBAAC,UAAD;IACE,IAAI,EAAC,eADP;IAEE,kBAAkB,EAAEpB,cAAc,CAACU,MAAD,EAAS,MAAT,CAFpC;IAGE,OAAO,EAAEF;EAHX,EANF,CAdF,CADW,GA4BT,IA7BN,eA8BE,oBAAC,QAAD;IAAU,eAAe,EAAEC,eAA3B;IAA4C,MAAM,EAAEC;EAApD,EA9BF,CADF;AAkCD;;AAED,MAAMG,MAAM,GAAGnB,UAAU,CAAC2B,MAAX,CAAkB;EAC/BP,gBAAgB,EAAE;IAChBQ,QAAQ,EAAE,UADM;IAEhBC,GAAG,EAAE,CAFW;IAGhBC,KAAK,EAAE,CAHS;IAIhBC,IAAI,EAAE,CAJU;IAKhBC,MAAM,EAAE;EALQ,CADa;EAQ/BX,eAAe,EAAE;IACfY,MAAM,EAAE1B,qBADO;IAEf2B,SAAS,EAAE1B,wBAFI;IAGf2B,YAAY,EAAE1B,2BAHC;IAIf2B,aAAa,EAAE,KAJA;IAKfC,UAAU,EAAE;EALG,CARc;EAe/Bd,aAAa,EAAE,EAfgB;EAgB/BD,MAAM,EAAE;IAAEgB,IAAI,EAAE;EAAR;AAhBuB,CAAlB,CAAf;AAmBA,4BAAevC,KAAK,CAACwC,IAAN,CAAW3B,cAAX,CAAf"}
|
|
@@ -87,7 +87,7 @@ export function DatePickerModalContent(props) {
|
|
|
87
87
|
endLabel: props.endLabel,
|
|
88
88
|
uppercase: props.uppercase ?? true,
|
|
89
89
|
locale: locale,
|
|
90
|
-
editIcon: props.editIcon,
|
|
90
|
+
editIcon: props === null || props === void 0 ? void 0 : props.editIcon,
|
|
91
91
|
calendarIcon: props.calendarIcon
|
|
92
92
|
})), /*#__PURE__*/React.createElement(AnimatedCrossView, {
|
|
93
93
|
collapsed: collapsed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Calendar","AnimatedCrossView","DatePickerModalHeader","DatePickerModalContentHeader","CalendarEdit","DatePickerModalHeaderBackground","DatePickerModalContent","props","mode","onChange","onConfirm","onDismiss","disableSafeTop","disableWeekDays","locale","validRange","dateMode","startYear","endYear","anyProps","state","setState","useState","date","startDate","endDate","dates","useEffect","collapsed","setCollapsed","onInnerChange","useCallback","params","prev","onInnerConfirm","onToggleCollapse","saveLabel","saveLabelDisabled","uppercase","closeIcon","headerSeparator","emptyLabel","label","moreLabel","startLabel","endLabel","editIcon","calendarIcon","memo"],"sources":["DatePickerModalContent.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport Calendar, {\n BaseCalendarProps,\n CalendarDate,\n CalendarDates,\n MultiChange,\n MultiConfirm,\n RangeChange,\n SingleChange,\n} from './Calendar'\n\nimport AnimatedCrossView from './AnimatedCrossView'\
|
|
1
|
+
{"version":3,"names":["React","Calendar","AnimatedCrossView","DatePickerModalHeader","DatePickerModalContentHeader","CalendarEdit","DatePickerModalHeaderBackground","DatePickerModalContent","props","mode","onChange","onConfirm","onDismiss","disableSafeTop","disableWeekDays","locale","validRange","dateMode","startYear","endYear","anyProps","state","setState","useState","date","startDate","endDate","dates","useEffect","collapsed","setCollapsed","onInnerChange","useCallback","params","prev","onInnerConfirm","onToggleCollapse","saveLabel","saveLabelDisabled","uppercase","closeIcon","headerSeparator","emptyLabel","label","moreLabel","startLabel","endLabel","editIcon","calendarIcon","memo"],"sources":["DatePickerModalContent.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport Calendar, {\n BaseCalendarProps,\n CalendarDate,\n CalendarDates,\n MultiChange,\n MultiConfirm,\n RangeChange,\n SingleChange,\n} from './Calendar'\n\nimport AnimatedCrossView from './AnimatedCrossView'\nimport DatePickerModalHeader from './DatePickerModalHeader'\nimport DatePickerModalContentHeader, {\n HeaderPickProps,\n} from './DatePickerModalContentHeader'\nimport CalendarEdit from './CalendarEdit'\nimport DatePickerModalHeaderBackground from './DatePickerModalHeaderBackground'\n\nexport type LocalState = {\n startDate: CalendarDate\n endDate: CalendarDate\n date: CalendarDate\n dates: CalendarDates\n}\n\ninterface DatePickerModalContentBaseProps {\n inputFormat?: string\n locale: string\n onDismiss: () => any\n disableSafeTop?: boolean\n saveLabelDisabled?: boolean\n uppercase?: boolean\n}\n\nexport interface DatePickerModalContentRangeProps\n extends HeaderPickProps,\n BaseCalendarProps,\n DatePickerModalContentBaseProps {\n mode: 'range'\n startDate: CalendarDate\n endDate: CalendarDate\n onChange?: RangeChange\n onConfirm: RangeChange\n}\n\nexport interface DatePickerModalContentSingleProps\n extends HeaderPickProps,\n BaseCalendarProps,\n DatePickerModalContentBaseProps {\n mode: 'single'\n date?: CalendarDate\n onChange?: SingleChange\n onConfirm: SingleChange\n dateMode?: 'start' | 'end'\n}\n\nexport interface DatePickerModalContentMultiProps\n extends HeaderPickProps,\n BaseCalendarProps,\n DatePickerModalContentBaseProps {\n mode: 'multiple'\n dates?: CalendarDates\n onChange?: MultiChange\n onConfirm: MultiConfirm\n}\n\nexport function DatePickerModalContent(\n props:\n | DatePickerModalContentRangeProps\n | DatePickerModalContentSingleProps\n | DatePickerModalContentMultiProps\n) {\n const {\n mode,\n onChange,\n onConfirm,\n onDismiss,\n disableSafeTop,\n disableWeekDays,\n locale,\n validRange,\n dateMode,\n startYear,\n endYear,\n } = props\n const anyProps = props as any\n\n // use local state to add only onConfirm state changes\n const [state, setState] = React.useState<LocalState>({\n date: anyProps.date,\n startDate: anyProps.startDate,\n endDate: anyProps.endDate,\n dates: anyProps.dates,\n })\n\n // update local state if changed from outside or if modal is opened\n React.useEffect(() => {\n setState({\n date: anyProps.date,\n startDate: anyProps.startDate,\n endDate: anyProps.endDate,\n dates: anyProps.dates,\n })\n }, [anyProps.date, anyProps.startDate, anyProps.endDate, anyProps.dates])\n\n const [collapsed, setCollapsed] = React.useState<boolean>(true)\n\n const onInnerChange = React.useCallback(\n (params: any) => {\n onChange && onChange(params)\n setState((prev) => ({ ...prev, ...params }))\n },\n [onChange, setState]\n )\n\n const onInnerConfirm = React.useCallback(() => {\n if (mode === 'single') {\n ;(onConfirm as DatePickerModalContentSingleProps['onConfirm'])({\n date: state.date,\n })\n } else if (mode === 'range') {\n ;(onConfirm as DatePickerModalContentRangeProps['onConfirm'])({\n startDate: state.startDate,\n endDate: state.endDate,\n })\n } else if (mode === 'multiple') {\n ;(onConfirm as DatePickerModalContentMultiProps['onConfirm'])({\n dates: state.dates || [],\n })\n }\n }, [state, mode, onConfirm])\n\n const onToggleCollapse = React.useCallback(() => {\n setCollapsed((prev) => !prev)\n }, [setCollapsed])\n\n return (\n <>\n <DatePickerModalHeaderBackground>\n <DatePickerModalHeader\n locale={locale}\n onSave={onInnerConfirm}\n onDismiss={onDismiss}\n saveLabel={props.saveLabel}\n saveLabelDisabled={props.saveLabelDisabled ?? false}\n uppercase={props.uppercase ?? true}\n disableSafeTop={disableSafeTop}\n closeIcon={props.closeIcon}\n />\n <DatePickerModalContentHeader\n state={state}\n mode={mode}\n collapsed={collapsed}\n onToggle={onToggleCollapse}\n headerSeparator={props.headerSeparator}\n emptyLabel={props.emptyLabel}\n label={props.label}\n moreLabel={props.moreLabel}\n startLabel={props.startLabel}\n endLabel={props.endLabel}\n uppercase={props.uppercase ?? true}\n locale={locale}\n editIcon={props?.editIcon}\n calendarIcon={props.calendarIcon}\n />\n </DatePickerModalHeaderBackground>\n <AnimatedCrossView\n collapsed={collapsed}\n calendar={\n <Calendar\n locale={locale}\n mode={mode}\n startDate={state.startDate}\n endDate={state.endDate}\n date={state.date}\n onChange={onInnerChange}\n disableWeekDays={disableWeekDays}\n dates={state.dates}\n validRange={validRange}\n dateMode={dateMode}\n startYear={startYear}\n endYear={endYear}\n />\n }\n calendarEdit={\n <CalendarEdit\n mode={mode}\n state={state}\n label={props.label}\n startLabel={props.startLabel}\n endLabel={props.endLabel}\n collapsed={collapsed}\n onChange={onInnerChange}\n validRange={validRange}\n locale={locale}\n />\n }\n />\n </>\n )\n}\n\nexport default React.memo(DatePickerModalContent)\n"],"mappings":"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"}
|
|
@@ -34,19 +34,20 @@ export default function DatePickerModalContentHeader(props) {
|
|
|
34
34
|
mode,
|
|
35
35
|
moreLabel,
|
|
36
36
|
uppercase,
|
|
37
|
-
editIcon
|
|
38
|
-
calendarIcon
|
|
37
|
+
editIcon,
|
|
38
|
+
calendarIcon
|
|
39
39
|
} = props;
|
|
40
40
|
const theme = useTheme();
|
|
41
41
|
const label = getLabel(props.locale, props.mode, props.label);
|
|
42
42
|
const color = useHeaderTextColor();
|
|
43
|
+
const supportingTextColor = theme.isV3 ? theme.colors.onSurfaceVariant : color;
|
|
43
44
|
const allowEditing = mode !== 'multiple';
|
|
44
|
-
let textFont = theme !== null && theme !== void 0 && theme.isV3 ? theme.fonts.
|
|
45
|
+
let textFont = theme !== null && theme !== void 0 && theme.isV3 ? theme.fonts.labelMedium : theme.fonts.medium;
|
|
45
46
|
return /*#__PURE__*/React.createElement(View, {
|
|
46
|
-
style:
|
|
47
|
+
style: styles.header
|
|
47
48
|
}, /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Text, {
|
|
48
49
|
style: [styles.label, {
|
|
49
|
-
color,
|
|
50
|
+
color: supportingTextColor,
|
|
50
51
|
...textFont
|
|
51
52
|
}]
|
|
52
53
|
}, uppercase ? label.toUpperCase() : label), /*#__PURE__*/React.createElement(View, {
|
|
@@ -61,9 +62,9 @@ export default function DatePickerModalContentHeader(props) {
|
|
|
61
62
|
})) : null)), /*#__PURE__*/React.createElement(View, {
|
|
62
63
|
style: styles.fill
|
|
63
64
|
}), allowEditing ? /*#__PURE__*/React.createElement(IconButton, {
|
|
64
|
-
icon: collapsed ? editIcon : calendarIcon,
|
|
65
|
+
icon: collapsed ? editIcon ?? theme.isV3 ? 'pencil-outline' : 'pencil' : calendarIcon ?? theme.isV3 ? 'calendar-blank' : 'calendar',
|
|
65
66
|
accessibilityLabel: collapsed ? getTranslation(props.locale, 'typeInDate') : getTranslation(props.locale, 'pickDateFromCalendar'),
|
|
66
|
-
iconColor: color,
|
|
67
|
+
iconColor: theme.isV3 ? theme.colors.onSurface : color,
|
|
67
68
|
onPress: onToggle
|
|
68
69
|
}) : null);
|
|
69
70
|
}
|
|
@@ -74,8 +75,9 @@ export function HeaderContentSingle(_ref) {
|
|
|
74
75
|
color,
|
|
75
76
|
locale
|
|
76
77
|
} = _ref;
|
|
78
|
+
const theme = useTheme();
|
|
77
79
|
const lighterColor = Color(color).fade(0.5).rgb().toString();
|
|
78
|
-
const dateColor = state.date ? color : lighterColor;
|
|
80
|
+
const dateColor = state.date ? theme.isV3 ? theme.colors.onSurface : color : lighterColor;
|
|
79
81
|
const formatter = React.useMemo(() => {
|
|
80
82
|
return new Intl.DateTimeFormat(locale, {
|
|
81
83
|
month: 'short',
|
|
@@ -98,9 +100,10 @@ export function HeaderContentMulti(_ref2) {
|
|
|
98
100
|
color,
|
|
99
101
|
locale
|
|
100
102
|
} = _ref2;
|
|
103
|
+
const theme = useTheme();
|
|
101
104
|
const dateCount = ((_state$dates = state.dates) === null || _state$dates === void 0 ? void 0 : _state$dates.length) || 0;
|
|
102
105
|
const lighterColor = Color(color).fade(0.5).rgb().toString();
|
|
103
|
-
const dateColor = dateCount ? color : lighterColor;
|
|
106
|
+
const dateColor = dateCount ? theme.isV3 ? theme.colors.onSurface : color : lighterColor;
|
|
104
107
|
const formatter = React.useMemo(() => {
|
|
105
108
|
return new Intl.DateTimeFormat(locale, {
|
|
106
109
|
month: 'short',
|
|
@@ -132,6 +135,7 @@ export function HeaderContentRange(_ref3) {
|
|
|
132
135
|
endLabel = 'End',
|
|
133
136
|
color
|
|
134
137
|
} = _ref3;
|
|
138
|
+
const theme = useTheme();
|
|
135
139
|
const formatter = React.useMemo(() => {
|
|
136
140
|
return new Intl.DateTimeFormat(locale, {
|
|
137
141
|
month: 'short',
|
|
@@ -139,8 +143,8 @@ export function HeaderContentRange(_ref3) {
|
|
|
139
143
|
});
|
|
140
144
|
}, [locale]);
|
|
141
145
|
const lighterColor = Color(color).fade(0.5).rgb().toString();
|
|
142
|
-
const startColor = state.startDate ? color : lighterColor;
|
|
143
|
-
const endColor = state.endDate ? color : lighterColor;
|
|
146
|
+
const startColor = state.startDate ? theme.isV3 ? theme.colors.onSurface : color : lighterColor;
|
|
147
|
+
const endColor = state.endDate ? theme.isV3 ? theme.colors.onSurface : color : lighterColor;
|
|
144
148
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
|
|
145
149
|
style: [styles.rangeHeaderText, {
|
|
146
150
|
color: startColor
|