react-native-paper-dates 0.4.6 → 0.7.0

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.
Files changed (245) hide show
  1. package/README.md +79 -22
  2. package/lib/commonjs/Date/AnimatedCrossView.js +9 -8
  3. package/lib/commonjs/Date/AnimatedCrossView.js.map +1 -1
  4. package/lib/commonjs/Date/AutoSizer.js +6 -5
  5. package/lib/commonjs/Date/AutoSizer.js.map +1 -1
  6. package/lib/commonjs/Date/Calendar.js +46 -39
  7. package/lib/commonjs/Date/Calendar.js.map +1 -1
  8. package/lib/commonjs/Date/CalendarEdit.js +32 -111
  9. package/lib/commonjs/Date/CalendarEdit.js.map +1 -1
  10. package/lib/commonjs/Date/CalendarHeader.js +23 -12
  11. package/lib/commonjs/Date/CalendarHeader.js.map +1 -1
  12. package/lib/commonjs/Date/DatePickerInput.js +93 -20
  13. package/lib/commonjs/Date/DatePickerInput.js.map +1 -1
  14. package/lib/commonjs/Date/DatePickerModal.js +2 -2
  15. package/lib/commonjs/Date/DatePickerModalContent.js +7 -4
  16. package/lib/commonjs/Date/DatePickerModalContent.js.map +1 -1
  17. package/lib/commonjs/Date/DatePickerModalContentHeader.js +43 -34
  18. package/lib/commonjs/Date/DatePickerModalContentHeader.js.map +1 -1
  19. package/lib/commonjs/Date/DatePickerModalHeader.js +12 -5
  20. package/lib/commonjs/Date/DatePickerModalHeader.js.map +1 -1
  21. package/lib/commonjs/Date/DatePickerModalHeaderBackground.js +6 -5
  22. package/lib/commonjs/Date/DatePickerModalHeaderBackground.js.map +1 -1
  23. package/lib/commonjs/Date/DateRangeInput.js +23 -24
  24. package/lib/commonjs/Date/DateRangeInput.js.map +1 -1
  25. package/lib/commonjs/Date/Day.js +7 -3
  26. package/lib/commonjs/Date/Day.js.map +1 -1
  27. package/lib/commonjs/Date/DayName.js +6 -5
  28. package/lib/commonjs/Date/DayName.js.map +1 -1
  29. package/lib/commonjs/Date/DayNames.js +7 -6
  30. package/lib/commonjs/Date/DayNames.js.map +1 -1
  31. package/lib/commonjs/Date/DayRange.js +9 -8
  32. package/lib/commonjs/Date/DayRange.js.map +1 -1
  33. package/lib/commonjs/Date/Month.js +59 -49
  34. package/lib/commonjs/Date/Month.js.map +1 -1
  35. package/lib/commonjs/Date/Swiper.js +35 -29
  36. package/lib/commonjs/Date/Swiper.js.map +1 -1
  37. package/lib/commonjs/Date/Swiper.native.js +29 -23
  38. package/lib/commonjs/Date/Swiper.native.js.map +1 -1
  39. package/lib/commonjs/Date/SwiperUtils.js +7 -6
  40. package/lib/commonjs/Date/SwiperUtils.js.map +1 -1
  41. package/lib/commonjs/Date/YearPicker.js +30 -20
  42. package/lib/commonjs/Date/YearPicker.js.map +1 -1
  43. package/lib/commonjs/Date/dateUtils.js +106 -37
  44. package/lib/commonjs/Date/dateUtils.js.map +1 -1
  45. package/lib/commonjs/Date/inputUtils.js +84 -0
  46. package/lib/commonjs/Date/inputUtils.js.map +1 -0
  47. package/lib/commonjs/TextInputMask.js +11 -10
  48. package/lib/commonjs/TextInputMask.js.map +1 -1
  49. package/lib/commonjs/Time/AmPmSwitcher.js +37 -19
  50. package/lib/commonjs/Time/AmPmSwitcher.js.map +1 -1
  51. package/lib/commonjs/Time/AnalogClock.js +25 -15
  52. package/lib/commonjs/Time/AnalogClock.js.map +1 -1
  53. package/lib/commonjs/Time/AnalogClockHours.js +17 -11
  54. package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
  55. package/lib/commonjs/Time/AnalogClockMinutes.js +7 -6
  56. package/lib/commonjs/Time/AnalogClockMinutes.js.map +1 -1
  57. package/lib/commonjs/Time/AnimatedClockSwitcher.js +8 -7
  58. package/lib/commonjs/Time/AnimatedClockSwitcher.js.map +1 -1
  59. package/lib/commonjs/Time/TimeInput.js +16 -12
  60. package/lib/commonjs/Time/TimeInput.js.map +1 -1
  61. package/lib/commonjs/Time/TimeInputs.js +12 -11
  62. package/lib/commonjs/Time/TimeInputs.js.map +1 -1
  63. package/lib/commonjs/Time/TimePicker.js +37 -15
  64. package/lib/commonjs/Time/TimePicker.js.map +1 -1
  65. package/lib/commonjs/Time/TimePickerModal.js +19 -15
  66. package/lib/commonjs/Time/TimePickerModal.js.map +1 -1
  67. package/lib/commonjs/Time/timeUtils.js +14 -9
  68. package/lib/commonjs/Time/timeUtils.js.map +1 -1
  69. package/lib/commonjs/index.js +66 -5
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/translations/en.js +25 -0
  72. package/lib/commonjs/translations/en.js.map +1 -0
  73. package/lib/commonjs/translations/enGB.js +25 -0
  74. package/lib/commonjs/translations/enGB.js.map +1 -0
  75. package/lib/commonjs/translations/nl.js +25 -0
  76. package/lib/commonjs/translations/nl.js.map +1 -0
  77. package/lib/commonjs/translations/pl.js +25 -0
  78. package/lib/commonjs/translations/pl.js.map +1 -0
  79. package/lib/commonjs/translations/utils.js +31 -0
  80. package/lib/commonjs/translations/utils.js.map +1 -0
  81. package/lib/commonjs/utils.js +19 -9
  82. package/lib/commonjs/utils.js.map +1 -1
  83. package/lib/module/Date/AnimatedCrossView.js +7 -6
  84. package/lib/module/Date/AnimatedCrossView.js.map +1 -1
  85. package/lib/module/Date/AutoSizer.js +4 -3
  86. package/lib/module/Date/AutoSizer.js.map +1 -1
  87. package/lib/module/Date/Calendar.js +46 -39
  88. package/lib/module/Date/Calendar.js.map +1 -1
  89. package/lib/module/Date/CalendarEdit.js +28 -104
  90. package/lib/module/Date/CalendarEdit.js.map +1 -1
  91. package/lib/module/Date/CalendarHeader.js +19 -9
  92. package/lib/module/Date/CalendarHeader.js.map +1 -1
  93. package/lib/module/Date/DatePickerInput.js +88 -18
  94. package/lib/module/Date/DatePickerInput.js.map +1 -1
  95. package/lib/module/Date/DatePickerModalContent.js +5 -2
  96. package/lib/module/Date/DatePickerModalContent.js.map +1 -1
  97. package/lib/module/Date/DatePickerModalContentHeader.js +38 -30
  98. package/lib/module/Date/DatePickerModalContentHeader.js.map +1 -1
  99. package/lib/module/Date/DatePickerModalHeader.js +9 -3
  100. package/lib/module/Date/DatePickerModalHeader.js.map +1 -1
  101. package/lib/module/Date/DatePickerModalHeaderBackground.js +4 -3
  102. package/lib/module/Date/DatePickerModalHeaderBackground.js.map +1 -1
  103. package/lib/module/Date/DateRangeInput.js +22 -22
  104. package/lib/module/Date/DateRangeInput.js.map +1 -1
  105. package/lib/module/Date/Day.js +5 -1
  106. package/lib/module/Date/Day.js.map +1 -1
  107. package/lib/module/Date/DayName.js +4 -3
  108. package/lib/module/Date/DayName.js.map +1 -1
  109. package/lib/module/Date/DayNames.js +5 -4
  110. package/lib/module/Date/DayNames.js.map +1 -1
  111. package/lib/module/Date/DayRange.js +7 -6
  112. package/lib/module/Date/DayRange.js.map +1 -1
  113. package/lib/module/Date/Month.js +54 -45
  114. package/lib/module/Date/Month.js.map +1 -1
  115. package/lib/module/Date/Swiper.js +32 -26
  116. package/lib/module/Date/Swiper.js.map +1 -1
  117. package/lib/module/Date/Swiper.native.js +27 -21
  118. package/lib/module/Date/Swiper.native.js.map +1 -1
  119. package/lib/module/Date/SwiperUtils.js +5 -4
  120. package/lib/module/Date/SwiperUtils.js.map +1 -1
  121. package/lib/module/Date/YearPicker.js +28 -18
  122. package/lib/module/Date/YearPicker.js.map +1 -1
  123. package/lib/module/Date/dateUtils.js +78 -29
  124. package/lib/module/Date/dateUtils.js.map +1 -1
  125. package/lib/module/Date/inputUtils.js +70 -0
  126. package/lib/module/Date/inputUtils.js.map +1 -0
  127. package/lib/module/TextInputMask.js +9 -8
  128. package/lib/module/TextInputMask.js.map +1 -1
  129. package/lib/module/Time/AmPmSwitcher.js +35 -18
  130. package/lib/module/Time/AmPmSwitcher.js.map +1 -1
  131. package/lib/module/Time/AnalogClock.js +23 -14
  132. package/lib/module/Time/AnalogClock.js.map +1 -1
  133. package/lib/module/Time/AnalogClockHours.js +14 -9
  134. package/lib/module/Time/AnalogClockHours.js.map +1 -1
  135. package/lib/module/Time/AnalogClockMinutes.js +5 -4
  136. package/lib/module/Time/AnalogClockMinutes.js.map +1 -1
  137. package/lib/module/Time/AnimatedClockSwitcher.js +6 -5
  138. package/lib/module/Time/AnimatedClockSwitcher.js.map +1 -1
  139. package/lib/module/Time/TimeInput.js +14 -10
  140. package/lib/module/Time/TimeInput.js.map +1 -1
  141. package/lib/module/Time/TimeInputs.js +10 -9
  142. package/lib/module/Time/TimeInputs.js.map +1 -1
  143. package/lib/module/Time/TimePicker.js +32 -12
  144. package/lib/module/Time/TimePicker.js.map +1 -1
  145. package/lib/module/Time/TimePickerModal.js +17 -13
  146. package/lib/module/Time/TimePickerModal.js.map +1 -1
  147. package/lib/module/Time/timeUtils.js +5 -1
  148. package/lib/module/Time/timeUtils.js.map +1 -1
  149. package/lib/module/index.js +6 -0
  150. package/lib/module/index.js.map +1 -1
  151. package/lib/module/translations/en.js +18 -0
  152. package/lib/module/translations/en.js.map +1 -0
  153. package/lib/module/translations/enGB.js +18 -0
  154. package/lib/module/translations/enGB.js.map +1 -0
  155. package/lib/module/translations/nl.js +18 -0
  156. package/lib/module/translations/nl.js.map +1 -0
  157. package/lib/module/translations/pl.js +18 -0
  158. package/lib/module/translations/pl.js.map +1 -0
  159. package/lib/module/translations/utils.js +22 -0
  160. package/lib/module/translations/utils.js.map +1 -0
  161. package/lib/module/utils.js +11 -5
  162. package/lib/module/utils.js.map +1 -1
  163. package/lib/typescript/{src/Date → Date}/AnimatedCrossView.d.ts +0 -0
  164. package/lib/typescript/{src/Date → Date}/AutoSizer.d.ts +0 -0
  165. package/lib/typescript/{src/Date → Date}/Calendar.d.ts +5 -3
  166. package/lib/typescript/{src/Date → Date}/CalendarEdit.d.ts +3 -3
  167. package/lib/typescript/{src/Date → Date}/CalendarHeader.d.ts +1 -1
  168. package/lib/typescript/Date/DatePickerInput.d.ts +18 -0
  169. package/lib/typescript/{src/Date → Date}/DatePickerModal.d.ts +0 -0
  170. package/lib/typescript/{src/Date → Date}/DatePickerModalContent.d.ts +2 -1
  171. package/lib/typescript/{src/Date → Date}/DatePickerModalContentHeader.d.ts +4 -4
  172. package/lib/typescript/{src/Date → Date}/DatePickerModalHeader.d.ts +1 -0
  173. package/lib/typescript/{src/Date → Date}/DatePickerModalHeaderBackground.d.ts +0 -0
  174. package/lib/typescript/Date/DateRangeInput.d.ts +3 -0
  175. package/lib/typescript/{src/Date → Date}/Day.d.ts +0 -0
  176. package/lib/typescript/{src/Date → Date}/DayName.d.ts +0 -0
  177. package/lib/typescript/{src/Date → Date}/DayNames.d.ts +0 -0
  178. package/lib/typescript/{src/Date → Date}/DayRange.d.ts +0 -0
  179. package/lib/typescript/{src/Date → Date}/Month.d.ts +0 -0
  180. package/lib/typescript/{src/Date → Date}/Swiper.d.ts +0 -0
  181. package/lib/typescript/{src/Date → Date}/Swiper.native.d.ts +0 -0
  182. package/lib/typescript/{src/Date → Date}/SwiperUtils.d.ts +1 -1
  183. package/lib/typescript/{src/Date → Date}/Week.d.ts +0 -0
  184. package/lib/typescript/{src/Date → Date}/YearPicker.d.ts +0 -0
  185. package/lib/typescript/{src/Date → Date}/dateUtils.d.ts +15 -0
  186. package/lib/typescript/{src/Date → Date}/dateUtils.test.d.ts +0 -0
  187. package/lib/typescript/Date/inputUtils.d.ts +14 -0
  188. package/lib/typescript/TextInputMask.d.ts +11 -0
  189. package/lib/typescript/Time/AmPmSwitcher.d.ts +4 -0
  190. package/lib/typescript/{src/Time → Time}/AnalogClock.d.ts +1 -1
  191. package/lib/typescript/{src/Time → Time}/AnalogClockHours.d.ts +0 -0
  192. package/lib/typescript/{src/Time → Time}/AnalogClockMinutes.d.ts +0 -0
  193. package/lib/typescript/{src/Time → Time}/AnimatedClockSwitcher.d.ts +0 -0
  194. package/lib/typescript/{src/Time → Time}/TimeInput.d.ts +0 -0
  195. package/lib/typescript/{src/Time → Time}/TimeInputs.d.ts +1 -1
  196. package/lib/typescript/{src/Time → Time}/TimePicker.d.ts +4 -0
  197. package/lib/typescript/{src/Time → Time}/TimePickerModal.d.ts +1 -1
  198. package/lib/typescript/{src/Time → Time}/timeUtils.d.ts +0 -0
  199. package/lib/typescript/index.d.ts +13 -0
  200. package/lib/typescript/translations/en.d.ts +3 -0
  201. package/lib/typescript/translations/enGB.d.ts +3 -0
  202. package/lib/typescript/translations/nl.d.ts +3 -0
  203. package/lib/typescript/translations/pl.d.ts +3 -0
  204. package/lib/typescript/translations/utils.d.ts +18 -0
  205. package/lib/typescript/utils.d.ts +58 -0
  206. package/package.json +39 -38
  207. package/src/.DS_Store +0 -0
  208. package/src/Date/Calendar.tsx +14 -13
  209. package/src/Date/CalendarEdit.tsx +17 -121
  210. package/src/Date/CalendarHeader.tsx +18 -3
  211. package/src/Date/DatePickerInput.tsx +103 -25
  212. package/src/Date/DatePickerModalContent.tsx +5 -1
  213. package/src/Date/DatePickerModalContentHeader.tsx +26 -12
  214. package/src/Date/DatePickerModalHeader.tsx +8 -1
  215. package/src/Date/DateRangeInput.tsx +26 -17
  216. package/src/Date/Day.tsx +4 -0
  217. package/src/Date/Month.tsx +20 -44
  218. package/src/Date/Swiper.tsx +1 -0
  219. package/src/Date/SwiperUtils.ts +1 -1
  220. package/src/Date/YearPicker.tsx +6 -1
  221. package/src/Date/dateUtils.tsx +70 -9
  222. package/src/Date/inputUtils.ts +94 -0
  223. package/src/TextInputMask.tsx +10 -3
  224. package/src/Time/AmPmSwitcher.tsx +20 -11
  225. package/src/Time/AnalogClock.tsx +12 -14
  226. package/src/Time/AnalogClockHours.tsx +14 -5
  227. package/src/Time/AnalogClockMinutes.tsx +4 -1
  228. package/src/Time/TimeInput.tsx +3 -0
  229. package/src/Time/TimeInputs.tsx +1 -5
  230. package/src/Time/TimePicker.tsx +44 -22
  231. package/src/Time/TimePickerModal.tsx +4 -1
  232. package/src/Time/timeUtils.ts +4 -1
  233. package/src/index.tsx +7 -0
  234. package/src/translations/en.ts +20 -0
  235. package/src/translations/enGB.ts +20 -0
  236. package/src/translations/nl.ts +20 -0
  237. package/src/translations/pl.ts +21 -0
  238. package/src/translations/utils.ts +47 -0
  239. package/src/utils.ts +13 -5
  240. package/lib/typescript/src/Date/DatePickerInput.d.ts +0 -1
  241. package/lib/typescript/src/Date/DateRangeInput.d.ts +0 -1
  242. package/lib/typescript/src/TextInputMask.d.ts +0 -3
  243. package/lib/typescript/src/Time/AmPmSwitcher.d.ts +0 -4
  244. package/lib/typescript/src/index.d.ts +0 -6
  245. package/lib/typescript/src/utils.d.ts +0 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["React","StyleSheet","View","Swiper","Month","areDatesOnSameDay","dateToUnix","getInitialIndex","CalendarHeader","useCallback","useMemo","YearPicker","Color","useTheme","useLatest","Calendar","props","locale","mode","onChange","startDate","endDate","date","disableWeekDays","dates","validRange","theme","selectColor","dark","colors","primary","hex","lighten","scrollMode","selectedYear","setSelectedYear","useState","undefined","selectingYear","setSelectingYear","onPressYear","year","prev","startDateRef","endDateRef","onChangeRef","datesRef","onPressDate","d","current","sd","ed","isStart","Date","getFullYear","getMonth","getDate","exists","some","newDates","filter","sort","a","b","getTime","datePressed","change","firstDate","styles","root","index","roundness","onPrev","onNext","create","flex","viewPager","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { StyleSheet, View } from 'react-native'\n\nimport Swiper from './Swiper'\n\nimport Month from './Month'\nimport {\n areDatesOnSameDay,\n dateToUnix,\n DisableWeekDaysType,\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 } 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}\n\nexport type BaseCalendarProps = {\n locale?: undefined | string\n disableWeekDays?: DisableWeekDaysType\n validRange?: ValidRangeType\n\n // here they are optional but in final implemenation they are required\n date?: CalendarDate\n dates?: CalendarDates\n startDate?: CalendarDate\n endDate?: CalendarDate\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 }) => any\n\nexport type MultiChange = (params: {\n dates: CalendarDates\n datePressed: Date\n change: 'added' | 'removed'\n}) => any\n\nexport type MultiConfirm = (params: { dates: Date[] }) => any\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 dates,\n validRange,\n } = props\n\n const theme = useTheme()\n\n const selectColor = useMemo<string>(() => {\n if (theme.dark) {\n return Color(theme.colors.primary).hex()\n }\n return Color(theme.colors.primary).lighten(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: 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\n ? new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59, 59)\n : 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, onChangeRef, startDateRef, endDateRef, datesRef]\n )\n\n const firstDate = startDate || date || dates?.[0]\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 />\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"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"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","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"],"mappings":"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","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\n // here they are optional but in final implemenation 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 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.9).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 />\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"]}
@@ -1,20 +1,19 @@
1
1
  import * as React from 'react';
2
2
  import { View, StyleSheet, Keyboard } from 'react-native';
3
- import TextInputWithMask from '../TextInputMask';
4
- import { HelperText, useTheme } from 'react-native-paper';
5
- import { dateToUnix, isDateWithinOptionalRange } from './dateUtils';
3
+ import DatePickerInput from './DatePickerInput';
6
4
 
7
- function CalendarEdit({
8
- mode,
9
- state,
10
- label = '',
11
- startLabel = 'Start',
12
- endLabel = 'End',
13
- collapsed,
14
- onChange,
15
- validRange,
16
- locale
17
- }) {
5
+ function CalendarEdit(_ref) {
6
+ let {
7
+ mode,
8
+ state,
9
+ label = '',
10
+ startLabel = 'Start',
11
+ endLabel = 'End',
12
+ collapsed,
13
+ onChange,
14
+ validRange,
15
+ locale
16
+ } = _ref;
18
17
  const dateInput = React.useRef(null);
19
18
  const startInput = React.useRef(null);
20
19
  const endInput = React.useRef(null); // when switching views focus, or un-focus text input
@@ -47,7 +46,8 @@ function CalendarEdit({
47
46
  style: styles.root
48
47
  }, /*#__PURE__*/React.createElement(View, {
49
48
  style: styles.inner
50
- }, mode === 'single' ? /*#__PURE__*/React.createElement(CalendarInput, {
49
+ }, mode === 'single' ? /*#__PURE__*/React.createElement(DatePickerInput, {
50
+ inputMode: "start",
51
51
  ref: dateInput,
52
52
  label: label,
53
53
  value: state.date,
@@ -56,8 +56,11 @@ function CalendarEdit({
56
56
  }),
57
57
  onSubmitEditing: onSubmitInput,
58
58
  validRange: validRange,
59
- locale: locale
60
- }) : null, mode === 'range' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CalendarInput, {
59
+ locale: locale,
60
+ withModal: false,
61
+ autoCompleteType: 'off'
62
+ }) : null, mode === 'range' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DatePickerInput, {
63
+ inputMode: "start",
61
64
  ref: startInput,
62
65
  label: startLabel,
63
66
  value: state.startDate,
@@ -67,106 +70,27 @@ function CalendarEdit({
67
70
  returnKeyType: 'next',
68
71
  onSubmitEditing: onSubmitStartInput,
69
72
  validRange: validRange,
70
- locale: locale
73
+ locale: locale,
74
+ withModal: false,
75
+ autoCompleteType: 'off'
71
76
  }), /*#__PURE__*/React.createElement(View, {
72
77
  style: styles.separator
73
- }), /*#__PURE__*/React.createElement(CalendarInput, {
78
+ }), /*#__PURE__*/React.createElement(DatePickerInput, {
79
+ inputMode: "end",
74
80
  ref: endInput,
75
81
  label: endLabel,
76
82
  value: state.endDate,
77
83
  onChange: endDate => onChange({ ...state,
78
84
  endDate
79
85
  }),
80
- isEndDate: true,
81
86
  onSubmitEditing: onSubmitEndInput,
82
87
  validRange: validRange,
83
- locale: locale
88
+ locale: locale,
89
+ withModal: false,
90
+ autoCompleteType: 'off'
84
91
  })) : null));
85
92
  }
86
93
 
87
- function CalendarInputPure({
88
- label,
89
- value,
90
- onChange,
91
- isEndDate,
92
- returnKeyType,
93
- onSubmitEditing,
94
- locale,
95
- validRange
96
- }, ref) {
97
- const theme = useTheme();
98
- const [error, setError] = React.useState(null);
99
- const formatter = React.useMemo(() => {
100
- return new Intl.DateTimeFormat(locale, {
101
- month: '2-digit',
102
- day: '2-digit',
103
- year: 'numeric'
104
- });
105
- }, [locale]);
106
- const inputFormat = React.useMemo(() => {
107
- // TODO: something cleaner and more universal?
108
- const inputDate = formatter.format(new Date(2020, 10 - 1, 1));
109
- return inputDate.replace('2020', 'YYYY').replace('10', 'MM').replace('01', 'DD');
110
- }, [formatter]);
111
- const formattedValue = formatter.format(value);
112
-
113
- const onChangeText = date => {
114
- const dayIndex = inputFormat.indexOf('DD');
115
- const monthIndex = inputFormat.indexOf('MM');
116
- const yearIndex = inputFormat.indexOf('YYYY');
117
- const day = Number(date.slice(dayIndex, dayIndex + 2));
118
- const year = Number(date.slice(yearIndex, yearIndex + 4));
119
- const month = Number(date.slice(monthIndex, monthIndex + 2));
120
-
121
- if (Number.isNaN(day) || Number.isNaN(year) || Number.isNaN(month)) {
122
- setError(inputFormat);
123
- return;
124
- }
125
-
126
- const finalDate = isEndDate ? new Date(year, month - 1, day, 23, 59, 59) : new Date(year, month - 1, day);
127
- const validStart = validRange === null || validRange === void 0 ? void 0 : validRange.startDate;
128
- const validEnd = validRange === null || validRange === void 0 ? void 0 : validRange.endDate;
129
-
130
- if (!isDateWithinOptionalRange(finalDate, {
131
- startUnix: validStart ? dateToUnix(validStart) : undefined,
132
- endUnix: validEnd ? dateToUnix(validEnd) : undefined
133
- })) {
134
- let errors = validStart && validEnd ? [`${formatter.format(validStart)} - ${formatter.format(validEnd)}`] : [validStart ? `> ${formatter.format(validStart)}` : '', validEnd ? `< ${formatter.format(validEnd)}` : ''];
135
- setError(errors.filter(n => n).join(' '));
136
- return;
137
- }
138
-
139
- setError(null);
140
-
141
- if (isEndDate) {
142
- onChange(finalDate);
143
- } else {
144
- onChange(finalDate);
145
- }
146
- };
147
-
148
- return /*#__PURE__*/React.createElement(View, {
149
- style: styles.inputContainer
150
- }, /*#__PURE__*/React.createElement(TextInputWithMask, {
151
- ref: ref,
152
- value: formattedValue,
153
- style: styles.input,
154
- label: `${label} (${inputFormat})`,
155
- keyboardType: 'number-pad',
156
- placeholder: inputFormat,
157
- mask: inputFormat,
158
- onChangeText: onChangeText,
159
- returnKeyType: returnKeyType,
160
- onSubmitEditing: onSubmitEditing,
161
- keyboardAppearance: theme.dark ? 'dark' : 'default',
162
- error: !!error
163
- }), /*#__PURE__*/React.createElement(HelperText, {
164
- type: "error",
165
- visible: !!error
166
- }, error));
167
- }
168
-
169
- const CalendarInput = /*#__PURE__*/React.forwardRef(CalendarInputPure);
170
94
  const styles = StyleSheet.create({
171
95
  root: {
172
96
  padding: 12
@@ -1 +1 @@
1
- {"version":3,"sources":["CalendarEdit.tsx"],"names":["React","View","StyleSheet","Keyboard","TextInputWithMask","HelperText","useTheme","dateToUnix","isDateWithinOptionalRange","CalendarEdit","mode","state","label","startLabel","endLabel","collapsed","onChange","validRange","locale","dateInput","useRef","startInput","endInput","useEffect","dismiss","inputsToFocus","current","filter","n","inputsToBlur","forEach","ip","blur","focus","onSubmitStartInput","useCallback","onSubmitEndInput","onSubmitInput","styles","root","inner","date","startDate","separator","endDate","CalendarInputPure","value","isEndDate","returnKeyType","onSubmitEditing","ref","theme","error","setError","useState","formatter","useMemo","Intl","DateTimeFormat","month","day","year","inputFormat","inputDate","format","Date","replace","formattedValue","onChangeText","dayIndex","indexOf","monthIndex","yearIndex","Number","slice","isNaN","finalDate","validStart","validEnd","startUnix","undefined","endUnix","errors","join","inputContainer","input","dark","CalendarInput","forwardRef","create","padding","flexDirection","flex","width","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n View,\n StyleSheet,\n TextInput as TextInputNative,\n Keyboard,\n} from 'react-native'\n\nimport { CalendarDate, ModeType, ValidRangeType } from './Calendar'\nimport { LocalState } from './DatePickerModalContent'\nimport TextInputWithMask from '../TextInputMask'\nimport { HelperText, useTheme } from 'react-native-paper'\nimport { dateToUnix, isDateWithinOptionalRange } from './dateUtils'\n\nfunction CalendarEdit({\n mode,\n state,\n label = '',\n startLabel = 'Start',\n endLabel = 'End',\n collapsed,\n onChange,\n validRange,\n locale,\n}: {\n mode: ModeType\n label?: string\n startLabel?: string\n endLabel?: string\n state: LocalState\n collapsed: boolean\n onChange: (s: LocalState) => any\n validRange: ValidRangeType | undefined\n locale?: undefined | string\n}) {\n const dateInput = React.useRef<TextInputNative | null>(null)\n const startInput = React.useRef<TextInputNative | null>(null)\n const endInput = React.useRef<TextInputNative | null>(null)\n\n // when switching views focus, or un-focus text input\n React.useEffect(() => {\n // hide open keyboard\n if (collapsed) {\n Keyboard.dismiss()\n }\n\n const inputsToFocus = [dateInput.current, startInput.current].filter(\n (n) => n\n ) as TextInputNative[]\n\n const inputsToBlur = [\n dateInput.current,\n startInput.current,\n endInput.current,\n ].filter((n) => n) as TextInputNative[]\n\n if (collapsed) {\n inputsToBlur.forEach((ip) => ip.blur())\n } else {\n inputsToFocus.forEach((ip) => ip.focus())\n }\n }, [mode, startInput, endInput, dateInput, collapsed])\n\n const onSubmitStartInput = React.useCallback(() => {\n if (endInput.current) {\n endInput.current.focus()\n }\n }, [endInput])\n\n const onSubmitEndInput = React.useCallback(() => {\n // TODO: close modal and persist range\n }, [])\n\n const onSubmitInput = React.useCallback(() => {\n // TODO: close modal and persist range\n }, [])\n\n return (\n <View style={styles.root}>\n <View style={styles.inner}>\n {mode === 'single' ? (\n <CalendarInput\n ref={dateInput}\n label={label}\n value={state.date}\n onChange={(date) => onChange({ ...state, date })}\n onSubmitEditing={onSubmitInput}\n validRange={validRange}\n locale={locale}\n />\n ) : null}\n {mode === 'range' ? (\n <>\n <CalendarInput\n ref={startInput}\n label={startLabel}\n value={state.startDate}\n onChange={(startDate) => onChange({ ...state, startDate })}\n returnKeyType={'next'}\n onSubmitEditing={onSubmitStartInput}\n validRange={validRange}\n locale={locale}\n />\n <View style={styles.separator} />\n <CalendarInput\n ref={endInput}\n label={endLabel}\n value={state.endDate}\n onChange={(endDate) => onChange({ ...state, endDate })}\n isEndDate\n onSubmitEditing={onSubmitEndInput}\n validRange={validRange}\n locale={locale}\n />\n </>\n ) : null}\n </View>\n </View>\n )\n}\n\nfunction CalendarInputPure(\n {\n label,\n value,\n onChange,\n isEndDate,\n returnKeyType,\n onSubmitEditing,\n locale,\n validRange,\n }: {\n locale?: undefined | string\n label: string\n value: CalendarDate\n onChange: (d: Date | undefined) => any\n isEndDate?: boolean\n returnKeyType?: string\n onSubmitEditing?: () => any\n validRange: ValidRangeType | undefined\n },\n ref: any\n) {\n const theme = useTheme()\n const [error, setError] = React.useState<null | string>(null)\n const formatter = React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n })\n }, [locale])\n\n const inputFormat = React.useMemo(() => {\n // TODO: something cleaner and more universal?\n const inputDate = formatter.format(new Date(2020, 10 - 1, 1))\n return inputDate\n .replace('2020', 'YYYY')\n .replace('10', 'MM')\n .replace('01', 'DD')\n }, [formatter])\n\n const formattedValue = formatter.format(value)\n const onChangeText = (date: string) => {\n const dayIndex = inputFormat.indexOf('DD')\n const monthIndex = inputFormat.indexOf('MM')\n const yearIndex = inputFormat.indexOf('YYYY')\n\n const day = Number(date.slice(dayIndex, dayIndex + 2))\n const year = Number(date.slice(yearIndex, yearIndex + 4))\n const month = Number(date.slice(monthIndex, monthIndex + 2))\n\n if (Number.isNaN(day) || Number.isNaN(year) || Number.isNaN(month)) {\n setError(inputFormat)\n return\n }\n\n const finalDate = isEndDate\n ? new Date(year, month - 1, day, 23, 59, 59)\n : new Date(year, month - 1, day)\n\n const validStart = validRange?.startDate\n const validEnd = validRange?.endDate\n if (\n !isDateWithinOptionalRange(finalDate, {\n startUnix: validStart ? dateToUnix(validStart) : undefined,\n endUnix: validEnd ? dateToUnix(validEnd) : undefined,\n })\n ) {\n let errors =\n validStart && validEnd\n ? [`${formatter.format(validStart)} - ${formatter.format(validEnd)}`]\n : [\n validStart ? `> ${formatter.format(validStart)}` : '',\n validEnd ? `< ${formatter.format(validEnd)}` : '',\n ]\n setError(errors.filter((n) => n).join(' '))\n return\n }\n\n setError(null)\n if (isEndDate) {\n onChange(finalDate)\n } else {\n onChange(finalDate)\n }\n }\n return (\n <View style={styles.inputContainer}>\n <TextInputWithMask\n ref={ref}\n value={formattedValue}\n style={styles.input}\n label={`${label} (${inputFormat})`}\n keyboardType={'number-pad'}\n placeholder={inputFormat}\n mask={inputFormat}\n onChangeText={onChangeText}\n returnKeyType={returnKeyType}\n onSubmitEditing={onSubmitEditing}\n keyboardAppearance={theme.dark ? 'dark' : 'default'}\n error={!!error}\n />\n <HelperText type=\"error\" visible={!!error}>\n {error}\n </HelperText>\n </View>\n )\n}\n\nconst CalendarInput = React.forwardRef(CalendarInputPure)\n\nconst styles = StyleSheet.create({\n root: { padding: 12 },\n inner: { flexDirection: 'row' },\n inputContainer: { flex: 1 },\n input: { flex: 1 },\n separator: { width: 12 },\n})\n\nexport default React.memo(CalendarEdit)\n"]}
1
+ {"version":3,"sources":["CalendarEdit.tsx"],"names":["React","View","StyleSheet","Keyboard","DatePickerInput","CalendarEdit","mode","state","label","startLabel","endLabel","collapsed","onChange","validRange","locale","dateInput","useRef","startInput","endInput","useEffect","dismiss","inputsToFocus","current","filter","n","inputsToBlur","forEach","ip","blur","focus","onSubmitStartInput","useCallback","onSubmitEndInput","onSubmitInput","styles","root","inner","date","startDate","separator","endDate","create","padding","flexDirection","inputContainer","flex","input","width","memo"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport {\n View,\n StyleSheet,\n TextInput as TextInputNative,\n Keyboard,\n} from 'react-native'\n\nimport type { ModeType, ValidRangeType } from './Calendar'\nimport type { LocalState } from './DatePickerModalContent'\n\nimport DatePickerInput from './DatePickerInput'\n\nfunction CalendarEdit({\n mode,\n state,\n label = '',\n startLabel = 'Start',\n endLabel = 'End',\n collapsed,\n onChange,\n validRange,\n locale,\n}: {\n mode: ModeType\n label?: string\n startLabel?: string\n endLabel?: string\n state: LocalState\n collapsed: boolean\n onChange: (s: LocalState) => any\n validRange: ValidRangeType | undefined\n locale: string\n}) {\n const dateInput = React.useRef<TextInputNative | null>(null)\n const startInput = React.useRef<TextInputNative | null>(null)\n const endInput = React.useRef<TextInputNative | null>(null)\n\n // when switching views focus, or un-focus text input\n React.useEffect(() => {\n // hide open keyboard\n if (collapsed) {\n Keyboard.dismiss()\n }\n\n const inputsToFocus = [dateInput.current, startInput.current].filter(\n (n) => n\n ) as TextInputNative[]\n\n const inputsToBlur = [\n dateInput.current,\n startInput.current,\n endInput.current,\n ].filter((n) => n) as TextInputNative[]\n\n if (collapsed) {\n inputsToBlur.forEach((ip) => ip.blur())\n } else {\n inputsToFocus.forEach((ip) => ip.focus())\n }\n }, [mode, startInput, endInput, dateInput, collapsed])\n\n const onSubmitStartInput = React.useCallback(() => {\n if (endInput.current) {\n endInput.current.focus()\n }\n }, [endInput])\n\n const onSubmitEndInput = React.useCallback(() => {\n // TODO: close modal and persist range\n }, [])\n\n const onSubmitInput = React.useCallback(() => {\n // TODO: close modal and persist range\n }, [])\n\n return (\n <View style={styles.root}>\n <View style={styles.inner}>\n {mode === 'single' ? (\n <DatePickerInput\n inputMode=\"start\"\n ref={dateInput}\n label={label}\n value={state.date}\n onChange={(date) => onChange({ ...state, date })}\n onSubmitEditing={onSubmitInput}\n validRange={validRange}\n locale={locale}\n withModal={false}\n autoCompleteType={'off'}\n />\n ) : null}\n {mode === 'range' ? (\n <>\n <DatePickerInput\n inputMode=\"start\"\n ref={startInput}\n label={startLabel}\n value={state.startDate}\n onChange={(startDate) => onChange({ ...state, startDate })}\n returnKeyType={'next'}\n onSubmitEditing={onSubmitStartInput}\n validRange={validRange}\n locale={locale}\n withModal={false}\n autoCompleteType={'off'}\n />\n <View style={styles.separator} />\n <DatePickerInput\n inputMode=\"end\"\n ref={endInput}\n label={endLabel}\n value={state.endDate}\n onChange={(endDate) => onChange({ ...state, endDate })}\n onSubmitEditing={onSubmitEndInput}\n validRange={validRange}\n locale={locale}\n withModal={false}\n autoCompleteType={'off'}\n />\n </>\n ) : null}\n </View>\n </View>\n )\n}\n\nconst styles = StyleSheet.create({\n root: { padding: 12 },\n inner: { flexDirection: 'row' },\n inputContainer: { flex: 1 },\n input: { flex: 1 },\n separator: { width: 12 },\n})\n\nexport default React.memo(CalendarEdit)\n"]}
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { IconButton, useTheme } from 'react-native-paper';
4
4
  import DayNames, { dayNamesHeight } from './DayNames';
5
+ import { getTranslation } from '../translations/utils';
5
6
  const buttonContainerHeight = 56;
6
7
  const buttonContainerMarginTop = 4;
7
8
  const buttonContainerMarginBottom = 8;
@@ -13,13 +14,14 @@ export function getCalendarHeaderHeight(scrollMode) {
13
14
  return dayNamesHeight;
14
15
  }
15
16
 
16
- function CalendarHeader({
17
- scrollMode,
18
- onPrev,
19
- onNext,
20
- disableWeekDays,
21
- locale
22
- }) {
17
+ function CalendarHeader(_ref) {
18
+ let {
19
+ scrollMode,
20
+ onPrev,
21
+ onNext,
22
+ disableWeekDays,
23
+ locale
24
+ } = _ref;
23
25
  const theme = useTheme();
24
26
  const isHorizontal = scrollMode === 'horizontal';
25
27
  return /*#__PURE__*/React.createElement(View, {
@@ -37,14 +39,22 @@ function CalendarHeader({
37
39
  }]
38
40
  }, /*#__PURE__*/React.createElement(IconButton, {
39
41
  icon: "chevron-left",
40
- onPress: onPrev
42
+ accessibilityLabel: getTranslation(locale, 'previous'),
43
+ onPress: onPrev // RN types bug
44
+ ,
45
+ hasTVPreferredFocus: undefined,
46
+ tvParallaxProperties: undefined
41
47
  })), /*#__PURE__*/React.createElement(View, {
42
48
  style: [styles.buttonWrapper, {
43
49
  backgroundColor: theme.colors.surface
44
50
  }]
45
51
  }, /*#__PURE__*/React.createElement(IconButton, {
46
52
  icon: "chevron-right",
47
- onPress: onNext
53
+ accessibilityLabel: getTranslation(locale, 'next'),
54
+ onPress: onNext // RN types bug
55
+ ,
56
+ hasTVPreferredFocus: undefined,
57
+ tvParallaxProperties: undefined
48
58
  }))) : null, /*#__PURE__*/React.createElement(DayNames, {
49
59
  disableWeekDays: disableWeekDays,
50
60
  locale: locale
@@ -1 +1 @@
1
- {"version":3,"sources":["CalendarHeader.tsx"],"names":["React","StyleSheet","View","IconButton","useTheme","DayNames","dayNamesHeight","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"],"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;AAGA,MAAMC,qBAAqB,GAAG,EAA9B;AACA,MAAMC,wBAAwB,GAAG,CAAjC;AACA,MAAMC,2BAA2B,GAAG,CAApC;AAEA,OAAO,SAASC,uBAAT,CAAiCC,UAAjC,EAAwE;AAC7E,MAAIA,UAAU,KAAK,YAAnB,EAAiC;AAC/B,WACEJ,qBAAqB,GACrBC,wBADA,GAEAC,2BAFA,GAGAH,cAJF;AAMD;;AACD,SAAOA,cAAP;AACD;;AAED,SAASM,cAAT,CAAwB;AACtBD,EAAAA,UADsB;AAEtBE,EAAAA,MAFsB;AAGtBC,EAAAA,MAHsB;AAItBC,EAAAA,eAJsB;AAKtBC,EAAAA;AALsB,CAAxB,EAYG;AACD,QAAMC,KAAK,GAAGb,QAAQ,EAAtB;AACA,QAAMc,YAAY,GAAGP,UAAU,KAAK,YAApC;AACA,sBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEQ,MAAM,CAACC,gBAApB;AAAsC,IAAA,aAAa,EAAE;AAArD,KACGF,YAAY,gBACX,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACE,eAApB;AAAqC,IAAA,aAAa,EAAE;AAApD,kBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEF,MAAM,CAACG,MAApB;AAA4B,IAAA,aAAa,EAAE;AAA3C,IADF,eAEE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE,CACLH,MAAM,CAACI,aADF,EAEL;AAAEC,MAAAA,eAAe,EAAEP,KAAK,CAACQ,MAAN,CAAaC;AAAhC,KAFK;AADT,kBAME,oBAAC,UAAD;AAAY,IAAA,IAAI,EAAC,cAAjB;AAAgC,IAAA,OAAO,EAAEb;AAAzC,IANF,CAFF,eAWE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE,CACLM,MAAM,CAACI,aADF,EAEL;AAAEC,MAAAA,eAAe,EAAEP,KAAK,CAACQ,MAAN,CAAaC;AAAhC,KAFK;AADT,kBAME,oBAAC,UAAD;AAAY,IAAA,IAAI,EAAC,eAAjB;AAAiC,IAAA,OAAO,EAAEZ;AAA1C,IANF,CAXF,CADW,GAqBT,IAtBN,eAuBE,oBAAC,QAAD;AAAU,IAAA,eAAe,EAAEC,eAA3B;AAA4C,IAAA,MAAM,EAAEC;AAApD,IAvBF,CADF;AA2BD;;AAED,MAAMG,MAAM,GAAGlB,UAAU,CAAC0B,MAAX,CAAkB;AAC/BP,EAAAA,gBAAgB,EAAE;AAChBQ,IAAAA,QAAQ,EAAE,UADM;AAEhBC,IAAAA,GAAG,EAAE,CAFW;AAGhBC,IAAAA,KAAK,EAAE,CAHS;AAIhBC,IAAAA,IAAI,EAAE,CAJU;AAKhBC,IAAAA,MAAM,EAAE;AALQ,GADa;AAQ/BX,EAAAA,eAAe,EAAE;AACfY,IAAAA,MAAM,EAAE1B,qBADO;AAEf2B,IAAAA,SAAS,EAAE1B,wBAFI;AAGf2B,IAAAA,YAAY,EAAE1B,2BAHC;AAIf2B,IAAAA,aAAa,EAAE,KAJA;AAKfC,IAAAA,UAAU,EAAE;AALG,GARc;AAe/Bd,EAAAA,aAAa,EAAE,EAfgB;AAgB/BD,EAAAA,MAAM,EAAE;AAAEgB,IAAAA,IAAI,EAAE;AAAR;AAhBuB,CAAlB,CAAf;AAmBA,4BAAetC,KAAK,CAACuC,IAAN,CAAW3B,cAAX,CAAf","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 { DisableWeekDaysType } from './dateUtils'\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 icon=\"chevron-left\" onPress={onPrev} />\n </View>\n\n <View\n style={[\n styles.buttonWrapper,\n { backgroundColor: theme.colors.surface },\n ]}\n >\n <IconButton icon=\"chevron-right\" onPress={onNext} />\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"]}
1
+ {"version":3,"sources":["CalendarHeader.tsx"],"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","undefined","create","position","top","right","left","zIndex","height","marginTop","marginBottom","flexDirection","alignItems","flex","memo"],"mappings":"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","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 // RN types bug\n hasTVPreferredFocus={undefined}\n tvParallaxProperties={undefined}\n />\n </View>\n\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 // RN types bug\n hasTVPreferredFocus={undefined}\n tvParallaxProperties={undefined}\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"]}
@@ -1,50 +1,120 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
1
3
  import * as React from 'react';
2
4
  import TextInputWithMask from '../TextInputMask';
3
- import { IconButton } from 'react-native-paper';
5
+ import { HelperText, IconButton, useTheme } from 'react-native-paper';
4
6
  import { View, StyleSheet } from 'react-native';
5
7
  import DatePickerModal from './DatePickerModal';
6
- export default function DatePickerInput() {
8
+ import useDateInput from './inputUtils';
9
+ import { useLatest } from '../utils';
10
+
11
+ function DatePickerInput(_ref, ref) {
12
+ let {
13
+ label,
14
+ value,
15
+ onChange,
16
+ style,
17
+ locale,
18
+ validRange,
19
+ inputMode,
20
+ withModal = true,
21
+ withDateFormatInLabel = true,
22
+ ...rest
23
+ } = _ref;
24
+ const theme = useTheme();
25
+ const {
26
+ formattedValue,
27
+ inputFormat,
28
+ onChangeText,
29
+ error
30
+ } = useDateInput({
31
+ locale,
32
+ value,
33
+ validRange,
34
+ inputMode,
35
+ onChange
36
+ });
7
37
  const [visible, setVisible] = React.useState(false);
8
38
  const onDismiss = React.useCallback(() => {
9
39
  setVisible(false);
10
40
  }, [setVisible]);
11
- const onConfirm = React.useCallback(() => {
41
+ const onChangeRef = useLatest(onChange);
42
+ const onInnerConfirm = React.useCallback(_ref2 => {
43
+ let {
44
+ date
45
+ } = _ref2;
12
46
  setVisible(false);
13
- }, [setVisible]);
47
+ onChangeRef.current(date);
48
+ }, [setVisible, onChangeRef]);
14
49
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
15
50
  style: styles.root
16
- }, /*#__PURE__*/React.createElement(TextInputWithMask, {
17
- value: '',
18
- keyboardType: 'numeric',
19
- placeholder: 'DD-MM-YYY',
20
- mask: 'DD-MM-YYY',
21
- onChangeText: () => {},
22
- style: styles.input
23
- }), /*#__PURE__*/React.createElement(IconButton, {
51
+ }, /*#__PURE__*/React.createElement(TextInputWithMask, _extends({}, rest, {
52
+ ref: ref,
53
+ label: getLabel({
54
+ label,
55
+ inputFormat,
56
+ withDateFormatInLabel
57
+ }),
58
+ value: formattedValue,
59
+ keyboardType: 'number-pad',
60
+ placeholder: inputFormat,
61
+ mask: inputFormat,
62
+ onChangeText: onChangeText,
63
+ keyboardAppearance: theme.dark ? 'dark' : 'default',
64
+ error: !!error,
65
+ style: [styles.input, style]
66
+ })), withModal ? /*#__PURE__*/React.createElement(IconButton, {
24
67
  size: 24,
25
68
  style: styles.calendarButton,
26
69
  icon: "calendar",
27
- onPress: () => setVisible(true)
28
- })), /*#__PURE__*/React.createElement(DatePickerModal, {
70
+ onPress: () => setVisible(true) // RN types bug
71
+ ,
72
+ hasTVPreferredFocus: undefined,
73
+ tvParallaxProperties: undefined
74
+ }) : null), /*#__PURE__*/React.createElement(HelperText, {
75
+ type: "error",
76
+ visible: !!error
77
+ }, error), withModal ? /*#__PURE__*/React.createElement(DatePickerModal, {
78
+ date: value,
29
79
  mode: "single",
30
80
  visible: visible,
31
81
  onDismiss: onDismiss,
32
- onConfirm: onConfirm
33
- }));
82
+ onConfirm: onInnerConfirm,
83
+ locale: locale,
84
+ dateMode: inputMode
85
+ }) : null);
86
+ }
87
+
88
+ function getLabel(_ref3) {
89
+ let {
90
+ withDateFormatInLabel,
91
+ inputFormat,
92
+ label
93
+ } = _ref3;
94
+
95
+ if (withDateFormatInLabel) {
96
+ return label ? `${label} (${inputFormat})` : inputFormat;
97
+ }
98
+
99
+ return label || '';
34
100
  }
101
+
35
102
  const styles = StyleSheet.create({
36
103
  root: {
104
+ minWidth: 150,
37
105
  flexDirection: 'row',
38
106
  position: 'relative',
39
107
  alignItems: 'center',
40
- flex: 1
108
+ flexGrow: 1,
109
+ alignSelf: 'flex-start'
41
110
  },
42
111
  input: {
43
- flex: 1
112
+ flexGrow: 1
44
113
  },
45
114
  calendarButton: {
46
115
  position: 'absolute',
47
116
  right: 0
48
117
  }
49
118
  });
119
+ export default /*#__PURE__*/React.forwardRef(DatePickerInput);
50
120
  //# sourceMappingURL=DatePickerInput.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePickerInput.tsx"],"names":["React","TextInputWithMask","IconButton","View","StyleSheet","DatePickerModal","DatePickerInput","visible","setVisible","useState","onDismiss","useCallback","onConfirm","styles","root","input","calendarButton","create","flexDirection","position","alignItems","flex","right"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,iBAAP,MAA8B,kBAA9B;AACA,SAASC,UAAT,QAA2B,oBAA3B;AACA,SAASC,IAAT,EAAeC,UAAf,QAAiC,cAAjC;AACA,OAAOC,eAAP,MAA4B,mBAA5B;AAEA,eAAe,SAASC,eAAT,GAA2B;AACxC,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBR,KAAK,CAACS,QAAN,CAAwB,KAAxB,CAA9B;AACA,QAAMC,SAAS,GAAGV,KAAK,CAACW,WAAN,CAAkB,MAAM;AACxCH,IAAAA,UAAU,CAAC,KAAD,CAAV;AACD,GAFiB,EAEf,CAACA,UAAD,CAFe,CAAlB;AAGA,QAAMI,SAAS,GAAGZ,KAAK,CAACW,WAAN,CAAkB,MAAM;AACxCH,IAAAA,UAAU,CAAC,KAAD,CAAV;AACD,GAFiB,EAEf,CAACA,UAAD,CAFe,CAAlB;AAIA,sBACE,uDACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEK,MAAM,CAACC;AAApB,kBACE,oBAAC,iBAAD;AACE,IAAA,KAAK,EAAE,EADT;AAEE,IAAA,YAAY,EAAE,SAFhB;AAGE,IAAA,WAAW,EAAE,WAHf;AAIE,IAAA,IAAI,EAAE,WAJR;AAKE,IAAA,YAAY,EAAE,MAAM,CAAE,CALxB;AAME,IAAA,KAAK,EAAED,MAAM,CAACE;AANhB,IADF,eASE,oBAAC,UAAD;AACE,IAAA,IAAI,EAAE,EADR;AAEE,IAAA,KAAK,EAAEF,MAAM,CAACG,cAFhB;AAGE,IAAA,IAAI,EAAC,UAHP;AAIE,IAAA,OAAO,EAAE,MAAMR,UAAU,CAAC,IAAD;AAJ3B,IATF,CADF,eAiBE,oBAAC,eAAD;AACE,IAAA,IAAI,EAAC,QADP;AAEE,IAAA,OAAO,EAAED,OAFX;AAGE,IAAA,SAAS,EAAEG,SAHb;AAIE,IAAA,SAAS,EAAEE;AAJb,IAjBF,CADF;AA0BD;AAED,MAAMC,MAAM,GAAGT,UAAU,CAACa,MAAX,CAAkB;AAC/BH,EAAAA,IAAI,EAAE;AACJI,IAAAA,aAAa,EAAE,KADX;AAEJC,IAAAA,QAAQ,EAAE,UAFN;AAGJC,IAAAA,UAAU,EAAE,QAHR;AAIJC,IAAAA,IAAI,EAAE;AAJF,GADyB;AAO/BN,EAAAA,KAAK,EAAE;AAAEM,IAAAA,IAAI,EAAE;AAAR,GAPwB;AAQ/BL,EAAAA,cAAc,EAAE;AAAEG,IAAAA,QAAQ,EAAE,UAAZ;AAAwBG,IAAAA,KAAK,EAAE;AAA/B;AARe,CAAlB,CAAf","sourcesContent":["import * as React from 'react'\n\nimport TextInputWithMask from '../TextInputMask'\nimport { IconButton } from 'react-native-paper'\nimport { View, StyleSheet } from 'react-native'\nimport DatePickerModal from './DatePickerModal'\n\nexport default function DatePickerInput() {\n const [visible, setVisible] = React.useState<boolean>(false)\n const onDismiss = React.useCallback(() => {\n setVisible(false)\n }, [setVisible])\n const onConfirm = React.useCallback(() => {\n setVisible(false)\n }, [setVisible])\n\n return (\n <>\n <View style={styles.root}>\n <TextInputWithMask\n value={''}\n keyboardType={'numeric'}\n placeholder={'DD-MM-YYY'}\n mask={'DD-MM-YYY'}\n onChangeText={() => {}}\n style={styles.input}\n />\n <IconButton\n size={24}\n style={styles.calendarButton}\n icon=\"calendar\"\n onPress={() => setVisible(true)}\n />\n </View>\n <DatePickerModal\n mode=\"single\"\n visible={visible}\n onDismiss={onDismiss}\n onConfirm={onConfirm}\n />\n </>\n )\n}\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: 'row',\n position: 'relative',\n alignItems: 'center',\n flex: 1,\n },\n input: { flex: 1 },\n calendarButton: { position: 'absolute', right: 0 },\n})\n"]}
1
+ {"version":3,"sources":["DatePickerInput.tsx"],"names":["React","TextInputWithMask","HelperText","IconButton","useTheme","View","StyleSheet","DatePickerModal","useDateInput","useLatest","DatePickerInput","ref","label","value","onChange","style","locale","validRange","inputMode","withModal","withDateFormatInLabel","rest","theme","formattedValue","inputFormat","onChangeText","error","visible","setVisible","useState","onDismiss","useCallback","onChangeRef","onInnerConfirm","date","current","styles","root","getLabel","dark","input","calendarButton","undefined","create","minWidth","flexDirection","position","alignItems","flexGrow","alignSelf","right","forwardRef"],"mappings":"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","sourcesContent":["import * as React from 'react'\n\nimport TextInputWithMask from '../TextInputMask'\nimport { HelperText, IconButton, TextInput, useTheme } from 'react-native-paper'\nimport { View, StyleSheet } from 'react-native'\nimport DatePickerModal from './DatePickerModal'\nimport useDateInput from './inputUtils'\nimport type { ValidRangeType } from './Calendar'\nimport { useLatest } from '../utils'\n\nfunction DatePickerInput(\n {\n label,\n value,\n onChange,\n style,\n locale,\n validRange,\n inputMode,\n withModal = true,\n withDateFormatInLabel = true,\n ...rest\n }: Omit<React.ComponentProps<typeof TextInput>, 'value' | 'onChange'> & {\n inputMode: 'start' | 'end'\n locale: string\n onChange: (date: Date | undefined) => void\n value: Date | undefined\n validRange?: ValidRangeType | undefined\n withModal?: boolean\n withDateFormatInLabel?: boolean\n },\n ref: any\n) {\n const theme = useTheme()\n const { formattedValue, inputFormat, onChangeText, error } = useDateInput({\n locale,\n value,\n validRange,\n inputMode,\n onChange,\n })\n\n const [visible, setVisible] = React.useState<boolean>(false)\n const onDismiss = React.useCallback(() => {\n setVisible(false)\n }, [setVisible])\n const onChangeRef = useLatest(onChange)\n const onInnerConfirm = React.useCallback(\n ({ date }) => {\n setVisible(false)\n onChangeRef.current(date)\n },\n [setVisible, onChangeRef]\n )\n\n return (\n <>\n <View style={styles.root}>\n <TextInputWithMask\n {...rest}\n ref={ref}\n label={getLabel({ label, inputFormat, withDateFormatInLabel })}\n value={formattedValue}\n keyboardType={'number-pad'}\n placeholder={inputFormat}\n mask={inputFormat}\n onChangeText={onChangeText}\n keyboardAppearance={theme.dark ? 'dark' : 'default'}\n error={!!error}\n style={[styles.input, style]}\n />\n {withModal ? (\n <IconButton\n size={24}\n style={styles.calendarButton}\n icon=\"calendar\"\n onPress={() => setVisible(true)}\n // RN types bug\n hasTVPreferredFocus={undefined}\n tvParallaxProperties={undefined}\n />\n ) : null}\n </View>\n <HelperText type=\"error\" visible={!!error}>\n {error}\n </HelperText>\n\n {withModal ? (\n <DatePickerModal\n date={value}\n mode=\"single\"\n visible={visible}\n onDismiss={onDismiss}\n onConfirm={onInnerConfirm}\n locale={locale}\n dateMode={inputMode}\n />\n ) : null}\n </>\n )\n}\n\nfunction getLabel({\n withDateFormatInLabel,\n inputFormat,\n label,\n}: {\n withDateFormatInLabel: boolean\n inputFormat: string\n label: string | undefined\n}) {\n if (withDateFormatInLabel) {\n return label ? `${label} (${inputFormat})` : inputFormat\n }\n return label || ''\n}\n\nconst styles = StyleSheet.create({\n root: {\n minWidth: 150,\n flexDirection: 'row',\n position: 'relative',\n alignItems: 'center',\n flexGrow: 1,\n alignSelf: 'flex-start',\n },\n input: {\n flexGrow: 1,\n },\n calendarButton: { position: 'absolute', right: 0 },\n})\nexport default React.forwardRef(DatePickerInput)\n"]}
@@ -14,7 +14,8 @@ export function DatePickerModalContent(props) {
14
14
  disableSafeTop,
15
15
  disableWeekDays,
16
16
  locale,
17
- validRange
17
+ validRange,
18
+ dateMode
18
19
  } = props;
19
20
  const anyProps = props; // use local state to add only onConfirm state changes
20
21
 
@@ -63,6 +64,7 @@ export function DatePickerModalContent(props) {
63
64
  setCollapsed(prev => !prev);
64
65
  }, [setCollapsed]);
65
66
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DatePickerModalHeaderBackground, null, /*#__PURE__*/React.createElement(DatePickerModalHeader, {
67
+ locale: locale,
66
68
  onSave: onInnerConfirm,
67
69
  onDismiss: onDismiss,
68
70
  saveLabel: props.saveLabel,
@@ -90,7 +92,8 @@ export function DatePickerModalContent(props) {
90
92
  onChange: onInnerChange,
91
93
  disableWeekDays: disableWeekDays,
92
94
  dates: state.dates,
93
- validRange: validRange
95
+ validRange: validRange,
96
+ dateMode: dateMode
94
97
  }),
95
98
  calendarEdit: /*#__PURE__*/React.createElement(CalendarEdit, {
96
99
  mode: mode,
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePickerModalContent.tsx"],"names":["React","Calendar","AnimatedCrossView","DatePickerModalHeader","DatePickerModalContentHeader","CalendarEdit","DatePickerModalHeaderBackground","DatePickerModalContent","props","mode","onChange","onConfirm","onDismiss","disableSafeTop","disableWeekDays","locale","validRange","anyProps","state","setState","useState","date","startDate","endDate","dates","useEffect","collapsed","setCollapsed","onInnerChange","useCallback","params","prev","onInnerConfirm","onToggleCollapse","saveLabel","headerSeparator","emptyLabel","label","moreLabel","startLabel","endLabel","memo"],"mappings":"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","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'\n\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?: undefined | string\n onDismiss: () => any\n disableSafeTop?: 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}\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 } = props\n\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) => {\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 onSave={onInnerConfirm}\n onDismiss={onDismiss}\n saveLabel={props.saveLabel}\n disableSafeTop={disableSafeTop}\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 locale={locale}\n />\n </DatePickerModalHeaderBackground>\n\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 />\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"]}
1
+ {"version":3,"sources":["DatePickerModalContent.tsx"],"names":["React","Calendar","AnimatedCrossView","DatePickerModalHeader","DatePickerModalContentHeader","CalendarEdit","DatePickerModalHeaderBackground","DatePickerModalContent","props","mode","onChange","onConfirm","onDismiss","disableSafeTop","disableWeekDays","locale","validRange","dateMode","anyProps","state","setState","useState","date","startDate","endDate","dates","useEffect","collapsed","setCollapsed","onInnerChange","useCallback","params","prev","onInnerConfirm","onToggleCollapse","saveLabel","headerSeparator","emptyLabel","label","moreLabel","startLabel","endLabel","memo"],"mappings":"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","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'\n\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}\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 } = props\n\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) => {\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 disableSafeTop={disableSafeTop}\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 locale={locale}\n />\n </DatePickerModalHeaderBackground>\n\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 />\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"]}