react-native-paper-dates 0.4.5 → 0.6.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 (249) hide show
  1. package/README.md +80 -16
  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 +35 -110
  9. package/lib/commonjs/Date/CalendarEdit.js.map +1 -1
  10. package/lib/commonjs/Date/CalendarHeader.js +19 -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 +4 -6
  15. package/lib/commonjs/Date/DatePickerModal.js.map +1 -1
  16. package/lib/commonjs/Date/DatePickerModalContent.js +9 -5
  17. package/lib/commonjs/Date/DatePickerModalContent.js.map +1 -1
  18. package/lib/commonjs/Date/DatePickerModalContentHeader.js +42 -34
  19. package/lib/commonjs/Date/DatePickerModalContentHeader.js.map +1 -1
  20. package/lib/commonjs/Date/DatePickerModalHeader.js +14 -6
  21. package/lib/commonjs/Date/DatePickerModalHeader.js.map +1 -1
  22. package/lib/commonjs/Date/DatePickerModalHeaderBackground.js +6 -5
  23. package/lib/commonjs/Date/DatePickerModalHeaderBackground.js.map +1 -1
  24. package/lib/commonjs/Date/DateRangeInput.js +23 -24
  25. package/lib/commonjs/Date/DateRangeInput.js.map +1 -1
  26. package/lib/commonjs/Date/Day.js +7 -3
  27. package/lib/commonjs/Date/Day.js.map +1 -1
  28. package/lib/commonjs/Date/DayName.js +6 -5
  29. package/lib/commonjs/Date/DayName.js.map +1 -1
  30. package/lib/commonjs/Date/DayNames.js +7 -6
  31. package/lib/commonjs/Date/DayNames.js.map +1 -1
  32. package/lib/commonjs/Date/DayRange.js +9 -8
  33. package/lib/commonjs/Date/DayRange.js.map +1 -1
  34. package/lib/commonjs/Date/Month.js +57 -49
  35. package/lib/commonjs/Date/Month.js.map +1 -1
  36. package/lib/commonjs/Date/Swiper.js +35 -29
  37. package/lib/commonjs/Date/Swiper.js.map +1 -1
  38. package/lib/commonjs/Date/Swiper.native.js +29 -23
  39. package/lib/commonjs/Date/Swiper.native.js.map +1 -1
  40. package/lib/commonjs/Date/SwiperUtils.js +7 -6
  41. package/lib/commonjs/Date/SwiperUtils.js.map +1 -1
  42. package/lib/commonjs/Date/YearPicker.js +28 -20
  43. package/lib/commonjs/Date/YearPicker.js.map +1 -1
  44. package/lib/commonjs/Date/dateUtils.js +107 -38
  45. package/lib/commonjs/Date/dateUtils.js.map +1 -1
  46. package/lib/commonjs/Date/inputUtils.js +84 -0
  47. package/lib/commonjs/Date/inputUtils.js.map +1 -0
  48. package/lib/commonjs/TextInputMask.js +11 -10
  49. package/lib/commonjs/TextInputMask.js.map +1 -1
  50. package/lib/commonjs/Time/AmPmSwitcher.js +37 -19
  51. package/lib/commonjs/Time/AmPmSwitcher.js.map +1 -1
  52. package/lib/commonjs/Time/AnalogClock.js +28 -26
  53. package/lib/commonjs/Time/AnalogClock.js.map +1 -1
  54. package/lib/commonjs/Time/AnalogClockHours.js +18 -12
  55. package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
  56. package/lib/commonjs/Time/AnalogClockMinutes.js +9 -8
  57. package/lib/commonjs/Time/AnalogClockMinutes.js.map +1 -1
  58. package/lib/commonjs/Time/AnimatedClockSwitcher.js +8 -7
  59. package/lib/commonjs/Time/AnimatedClockSwitcher.js.map +1 -1
  60. package/lib/commonjs/Time/TimeInput.js +16 -12
  61. package/lib/commonjs/Time/TimeInput.js.map +1 -1
  62. package/lib/commonjs/Time/TimeInputs.js +12 -11
  63. package/lib/commonjs/Time/TimeInputs.js.map +1 -1
  64. package/lib/commonjs/Time/TimePicker.js +39 -17
  65. package/lib/commonjs/Time/TimePicker.js.map +1 -1
  66. package/lib/commonjs/Time/TimePickerModal.js +19 -15
  67. package/lib/commonjs/Time/TimePickerModal.js.map +1 -1
  68. package/lib/commonjs/Time/timeUtils.js +17 -9
  69. package/lib/commonjs/Time/timeUtils.js.map +1 -1
  70. package/lib/commonjs/index.js +66 -5
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/translations/en.js +20 -0
  73. package/lib/commonjs/translations/en.js.map +1 -0
  74. package/lib/commonjs/translations/enGB.js +20 -0
  75. package/lib/commonjs/translations/enGB.js.map +1 -0
  76. package/lib/commonjs/translations/nl.js +20 -0
  77. package/lib/commonjs/translations/nl.js.map +1 -0
  78. package/lib/commonjs/translations/pl.js +20 -0
  79. package/lib/commonjs/translations/pl.js.map +1 -0
  80. package/lib/commonjs/translations/utils.js +31 -0
  81. package/lib/commonjs/translations/utils.js.map +1 -0
  82. package/lib/commonjs/utils.js +19 -9
  83. package/lib/commonjs/utils.js.map +1 -1
  84. package/lib/module/Date/AnimatedCrossView.js +7 -6
  85. package/lib/module/Date/AnimatedCrossView.js.map +1 -1
  86. package/lib/module/Date/AutoSizer.js +4 -3
  87. package/lib/module/Date/AutoSizer.js.map +1 -1
  88. package/lib/module/Date/Calendar.js +46 -39
  89. package/lib/module/Date/Calendar.js.map +1 -1
  90. package/lib/module/Date/CalendarEdit.js +31 -103
  91. package/lib/module/Date/CalendarEdit.js.map +1 -1
  92. package/lib/module/Date/CalendarHeader.js +16 -9
  93. package/lib/module/Date/CalendarHeader.js.map +1 -1
  94. package/lib/module/Date/DatePickerInput.js +88 -18
  95. package/lib/module/Date/DatePickerInput.js.map +1 -1
  96. package/lib/module/Date/DatePickerModal.js +3 -5
  97. package/lib/module/Date/DatePickerModal.js.map +1 -1
  98. package/lib/module/Date/DatePickerModalContent.js +7 -3
  99. package/lib/module/Date/DatePickerModalContent.js.map +1 -1
  100. package/lib/module/Date/DatePickerModalContentHeader.js +37 -30
  101. package/lib/module/Date/DatePickerModalContentHeader.js.map +1 -1
  102. package/lib/module/Date/DatePickerModalHeader.js +11 -4
  103. package/lib/module/Date/DatePickerModalHeader.js.map +1 -1
  104. package/lib/module/Date/DatePickerModalHeaderBackground.js +4 -3
  105. package/lib/module/Date/DatePickerModalHeaderBackground.js.map +1 -1
  106. package/lib/module/Date/DateRangeInput.js +22 -22
  107. package/lib/module/Date/DateRangeInput.js.map +1 -1
  108. package/lib/module/Date/Day.js +5 -1
  109. package/lib/module/Date/Day.js.map +1 -1
  110. package/lib/module/Date/DayName.js +4 -3
  111. package/lib/module/Date/DayName.js.map +1 -1
  112. package/lib/module/Date/DayNames.js +5 -4
  113. package/lib/module/Date/DayNames.js.map +1 -1
  114. package/lib/module/Date/DayRange.js +7 -6
  115. package/lib/module/Date/DayRange.js.map +1 -1
  116. package/lib/module/Date/Month.js +52 -45
  117. package/lib/module/Date/Month.js.map +1 -1
  118. package/lib/module/Date/Swiper.js +32 -26
  119. package/lib/module/Date/Swiper.js.map +1 -1
  120. package/lib/module/Date/Swiper.native.js +27 -21
  121. package/lib/module/Date/Swiper.native.js.map +1 -1
  122. package/lib/module/Date/SwiperUtils.js +5 -4
  123. package/lib/module/Date/SwiperUtils.js.map +1 -1
  124. package/lib/module/Date/YearPicker.js +26 -18
  125. package/lib/module/Date/YearPicker.js.map +1 -1
  126. package/lib/module/Date/dateUtils.js +79 -30
  127. package/lib/module/Date/dateUtils.js.map +1 -1
  128. package/lib/module/Date/inputUtils.js +70 -0
  129. package/lib/module/Date/inputUtils.js.map +1 -0
  130. package/lib/module/TextInputMask.js +9 -8
  131. package/lib/module/TextInputMask.js.map +1 -1
  132. package/lib/module/Time/AmPmSwitcher.js +35 -18
  133. package/lib/module/Time/AmPmSwitcher.js.map +1 -1
  134. package/lib/module/Time/AnalogClock.js +20 -17
  135. package/lib/module/Time/AnalogClock.js.map +1 -1
  136. package/lib/module/Time/AnalogClockHours.js +15 -10
  137. package/lib/module/Time/AnalogClockHours.js.map +1 -1
  138. package/lib/module/Time/AnalogClockMinutes.js +6 -5
  139. package/lib/module/Time/AnalogClockMinutes.js.map +1 -1
  140. package/lib/module/Time/AnimatedClockSwitcher.js +6 -5
  141. package/lib/module/Time/AnimatedClockSwitcher.js.map +1 -1
  142. package/lib/module/Time/TimeInput.js +14 -10
  143. package/lib/module/Time/TimeInput.js.map +1 -1
  144. package/lib/module/Time/TimeInputs.js +10 -9
  145. package/lib/module/Time/TimeInputs.js.map +1 -1
  146. package/lib/module/Time/TimePicker.js +34 -13
  147. package/lib/module/Time/TimePicker.js.map +1 -1
  148. package/lib/module/Time/TimePickerModal.js +17 -13
  149. package/lib/module/Time/TimePickerModal.js.map +1 -1
  150. package/lib/module/Time/timeUtils.js +8 -2
  151. package/lib/module/Time/timeUtils.js.map +1 -1
  152. package/lib/module/index.js +6 -0
  153. package/lib/module/index.js.map +1 -1
  154. package/lib/module/translations/en.js +13 -0
  155. package/lib/module/translations/en.js.map +1 -0
  156. package/lib/module/translations/enGB.js +13 -0
  157. package/lib/module/translations/enGB.js.map +1 -0
  158. package/lib/module/translations/nl.js +13 -0
  159. package/lib/module/translations/nl.js.map +1 -0
  160. package/lib/module/translations/pl.js +13 -0
  161. package/lib/module/translations/pl.js.map +1 -0
  162. package/lib/module/translations/utils.js +22 -0
  163. package/lib/module/translations/utils.js.map +1 -0
  164. package/lib/module/utils.js +11 -5
  165. package/lib/module/utils.js.map +1 -1
  166. package/lib/typescript/{src/Date → Date}/AnimatedCrossView.d.ts +0 -0
  167. package/lib/typescript/{src/Date → Date}/AutoSizer.d.ts +0 -0
  168. package/lib/typescript/{src/Date → Date}/Calendar.d.ts +5 -3
  169. package/lib/typescript/{src/Date → Date}/CalendarEdit.d.ts +4 -3
  170. package/lib/typescript/{src/Date → Date}/CalendarHeader.d.ts +1 -1
  171. package/lib/typescript/Date/DatePickerInput.d.ts +18 -0
  172. package/lib/typescript/{src/Date → Date}/DatePickerModal.d.ts +0 -0
  173. package/lib/typescript/{src/Date → Date}/DatePickerModalContent.d.ts +2 -0
  174. package/lib/typescript/{src/Date → Date}/DatePickerModalContentHeader.d.ts +4 -4
  175. package/lib/typescript/{src/Date → Date}/DatePickerModalHeader.d.ts +1 -0
  176. package/lib/typescript/{src/Date → Date}/DatePickerModalHeaderBackground.d.ts +0 -0
  177. package/lib/typescript/Date/DateRangeInput.d.ts +3 -0
  178. package/lib/typescript/{src/Date → Date}/Day.d.ts +0 -0
  179. package/lib/typescript/{src/Date → Date}/DayName.d.ts +0 -0
  180. package/lib/typescript/{src/Date → Date}/DayNames.d.ts +0 -0
  181. package/lib/typescript/{src/Date → Date}/DayRange.d.ts +0 -0
  182. package/lib/typescript/{src/Date → Date}/Month.d.ts +0 -0
  183. package/lib/typescript/{src/Date → Date}/Swiper.d.ts +0 -0
  184. package/lib/typescript/{src/Date → Date}/Swiper.native.d.ts +0 -0
  185. package/lib/typescript/{src/Date → Date}/SwiperUtils.d.ts +1 -1
  186. package/lib/typescript/{src/Date → Date}/Week.d.ts +0 -0
  187. package/lib/typescript/{src/Date → Date}/YearPicker.d.ts +0 -0
  188. package/lib/typescript/{src/Date → Date}/dateUtils.d.ts +15 -0
  189. package/lib/typescript/{src/Date → Date}/dateUtils.test.d.ts +0 -0
  190. package/lib/typescript/Date/inputUtils.d.ts +14 -0
  191. package/lib/typescript/TextInputMask.d.ts +11 -0
  192. package/lib/typescript/Time/AmPmSwitcher.d.ts +4 -0
  193. package/lib/typescript/{src/Time → Time}/AnalogClock.d.ts +1 -2
  194. package/lib/typescript/{src/Time → Time}/AnalogClockHours.d.ts +0 -0
  195. package/lib/typescript/{src/Time → Time}/AnalogClockMinutes.d.ts +0 -0
  196. package/lib/typescript/{src/Time → Time}/AnimatedClockSwitcher.d.ts +0 -0
  197. package/lib/typescript/{src/Time → Time}/TimeInput.d.ts +0 -0
  198. package/lib/typescript/{src/Time → Time}/TimeInputs.d.ts +1 -1
  199. package/lib/typescript/{src/Time → Time}/TimePicker.d.ts +4 -0
  200. package/lib/typescript/{src/Time → Time}/TimePickerModal.d.ts +1 -1
  201. package/lib/typescript/{src/Time → Time}/timeUtils.d.ts +1 -0
  202. package/lib/typescript/index.d.ts +13 -0
  203. package/lib/typescript/translations/en.d.ts +3 -0
  204. package/lib/typescript/translations/enGB.d.ts +3 -0
  205. package/lib/typescript/translations/nl.d.ts +3 -0
  206. package/lib/typescript/translations/pl.d.ts +3 -0
  207. package/lib/typescript/translations/utils.d.ts +13 -0
  208. package/lib/typescript/utils.d.ts +58 -0
  209. package/package.json +39 -31
  210. package/src/.DS_Store +0 -0
  211. package/src/Date/Calendar.tsx +14 -13
  212. package/src/Date/CalendarEdit.tsx +21 -120
  213. package/src/Date/CalendarHeader.tsx +15 -3
  214. package/src/Date/DatePickerInput.tsx +103 -25
  215. package/src/Date/DatePickerModal.tsx +3 -8
  216. package/src/Date/DatePickerModalContent.tsx +6 -0
  217. package/src/Date/DatePickerModalContentHeader.tsx +21 -12
  218. package/src/Date/DatePickerModalHeader.tsx +13 -2
  219. package/src/Date/DateRangeInput.tsx +26 -17
  220. package/src/Date/Day.tsx +4 -0
  221. package/src/Date/Month.tsx +18 -44
  222. package/src/Date/Swiper.tsx +1 -0
  223. package/src/Date/SwiperUtils.ts +1 -1
  224. package/src/Date/YearPicker.tsx +4 -1
  225. package/src/Date/dateUtils.tsx +71 -10
  226. package/src/Date/inputUtils.ts +94 -0
  227. package/src/TextInputMask.tsx +10 -3
  228. package/src/Time/AmPmSwitcher.tsx +20 -11
  229. package/src/Time/AnalogClock.tsx +10 -18
  230. package/src/Time/AnalogClockHours.tsx +15 -6
  231. package/src/Time/AnalogClockMinutes.tsx +5 -2
  232. package/src/Time/TimeInput.tsx +3 -0
  233. package/src/Time/TimeInputs.tsx +1 -5
  234. package/src/Time/TimePicker.tsx +46 -23
  235. package/src/Time/TimePickerModal.tsx +4 -1
  236. package/src/Time/timeUtils.ts +7 -1
  237. package/src/index.tsx +7 -0
  238. package/src/translations/en.ts +15 -0
  239. package/src/translations/enGB.ts +15 -0
  240. package/src/translations/nl.ts +15 -0
  241. package/src/translations/pl.ts +15 -0
  242. package/src/translations/utils.ts +42 -0
  243. package/src/utils.ts +13 -5
  244. package/lib/typescript/src/Date/DatePickerInput.d.ts +0 -1
  245. package/lib/typescript/src/Date/DateRangeInput.d.ts +0 -1
  246. package/lib/typescript/src/TextInputMask.d.ts +0 -3
  247. package/lib/typescript/src/Time/AmPmSwitcher.d.ts +0 -4
  248. package/lib/typescript/src/index.d.ts +0 -6
  249. package/lib/typescript/src/utils.d.ts +0 -7
@@ -6,11 +6,12 @@ const ITEM_HEIGHT = 62;
6
6
  const startYear = 1800;
7
7
  const endYear = 2200;
8
8
  const years = range(startYear, endYear);
9
- export default function YearPicker({
10
- selectedYear,
11
- selectingYear,
12
- onPressYear
13
- }) {
9
+ export default function YearPicker(_ref) {
10
+ let {
11
+ selectedYear,
12
+ selectingYear,
13
+ onPressYear
14
+ } = _ref;
14
15
  const theme = useTheme();
15
16
  const flatList = React.useRef(null); // scroll to selected year
16
17
 
@@ -32,29 +33,36 @@ export default function YearPicker({
32
33
  ref: flatList,
33
34
  style: styles.list,
34
35
  data: years,
35
- renderItem: ({
36
- item
37
- }) => /*#__PURE__*/React.createElement(Year, {
38
- year: item,
39
- selected: selectedYear === item,
40
- onPressYear: onPressYear
41
- }),
36
+ renderItem: _ref2 => {
37
+ let {
38
+ item
39
+ } = _ref2;
40
+ return /*#__PURE__*/React.createElement(Year, {
41
+ year: item,
42
+ selected: selectedYear === item,
43
+ onPressYear: onPressYear
44
+ });
45
+ },
42
46
  keyExtractor: item => `${item}`,
43
47
  numColumns: 3
44
48
  }));
45
49
  }
46
50
 
47
- function YearPure({
48
- year,
49
- selected,
50
- onPressYear
51
- }) {
51
+ function YearPure(_ref3) {
52
+ let {
53
+ year,
54
+ selected,
55
+ onPressYear
56
+ } = _ref3;
52
57
  const theme = useTheme();
53
58
  return /*#__PURE__*/React.createElement(View, {
54
59
  style: styles.year
55
60
  }, /*#__PURE__*/React.createElement(TouchableRipple, {
56
61
  onPress: () => onPressYear(year),
57
- style: styles.yearButton
62
+ style: styles.yearButton // RN types bug
63
+ ,
64
+ hasTVPreferredFocus: undefined,
65
+ tvParallaxProperties: undefined
58
66
  }, /*#__PURE__*/React.createElement(View, {
59
67
  style: [styles.yearInner, selected ? {
60
68
  backgroundColor: theme.colors.primary
@@ -1 +1 @@
1
- {"version":3,"sources":["YearPicker.tsx"],"names":["React","FlatList","StyleSheet","View","Text","TouchableRipple","useTheme","range","ITEM_HEIGHT","startYear","endYear","years","YearPicker","selectedYear","selectingYear","onPressYear","theme","flatList","useRef","useEffect","current","indexToGo","scrollToOffset","offset","animated","absoluteFill","styles","root","backgroundColor","colors","surface","opacity1","opacity0","list","item","YearPure","year","selected","yearButton","yearInner","primary","yearLabel","Year","memo","create","flex","top","zIndex","marginLeft","marginRight","height","justifyContent","color","borderRadius","overflow","alignItems","fontSize","opacity"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { FlatList, StyleSheet, View } from 'react-native'\nimport { Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { range } from '../utils'\n\nconst ITEM_HEIGHT = 62\n\nconst startYear = 1800\nconst endYear = 2200\nconst years = range(startYear, endYear)\n\nexport default function YearPicker({\n selectedYear,\n selectingYear,\n onPressYear,\n}: {\n selectedYear: number | undefined\n selectingYear: boolean\n onPressYear: (year: number) => any\n}) {\n const theme = useTheme()\n const flatList = React.useRef<FlatList<number> | null>(null)\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])\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: (year: number) => any\n}) {\n const theme = useTheme()\n return (\n <View style={styles.year}>\n <TouchableRipple\n onPress={() => onPressYear(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={[styles.yearLabel, selected ? styles.selectedYear : null]}\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 selectedYear: { color: '#fff' },\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"]}
1
+ {"version":3,"sources":["YearPicker.tsx"],"names":["React","FlatList","StyleSheet","View","Text","TouchableRipple","useTheme","range","ITEM_HEIGHT","startYear","endYear","years","YearPicker","selectedYear","selectingYear","onPressYear","theme","flatList","useRef","useEffect","current","indexToGo","scrollToOffset","offset","animated","absoluteFill","styles","root","backgroundColor","colors","surface","opacity1","opacity0","list","item","YearPure","year","selected","yearButton","undefined","yearInner","primary","yearLabel","Year","memo","create","flex","top","zIndex","marginLeft","marginRight","height","justifyContent","color","borderRadius","overflow","alignItems","fontSize","opacity"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { FlatList, StyleSheet, View } from 'react-native'\nimport { Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { range } from '../utils'\n\nconst ITEM_HEIGHT = 62\n\nconst startYear = 1800\nconst endYear = 2200\nconst years = range(startYear, endYear)\n\nexport default function YearPicker({\n selectedYear,\n selectingYear,\n onPressYear,\n}: {\n selectedYear: number | undefined\n selectingYear: boolean\n onPressYear: (year: number) => any\n}) {\n const theme = useTheme()\n const flatList = React.useRef<FlatList<number> | null>(null)\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])\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 return (\n <View style={styles.year}>\n <TouchableRipple\n onPress={() => onPressYear(year)}\n style={styles.yearButton}\n // RN types bug\n hasTVPreferredFocus={undefined}\n tvParallaxProperties={undefined}\n >\n <View\n style={[\n styles.yearInner,\n selected ? { backgroundColor: theme.colors.primary } : null,\n ]}\n >\n <Text\n style={[styles.yearLabel, selected ? styles.selectedYear : null]}\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 selectedYear: { color: '#fff' },\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"]}
@@ -1,3 +1,5 @@
1
+ import * as React from 'react';
2
+ import { useLatest } from '../utils';
1
3
  export function showWeekDay(dayIndex, disableWeekDays) {
2
4
  return !(disableWeekDays && disableWeekDays.some(di => di === dayIndex));
3
5
  }
@@ -17,29 +19,44 @@ export function addMonths(date, count) {
17
19
  } // https://stackoverflow.com/a/1185068/2508481
18
20
  // pass in any date as parameter anyDateInMonth based on dayjs
19
21
 
20
- export function getDaysInMonth({
21
- year,
22
- month
23
- }) {
22
+ export function getDaysInMonth(_ref) {
23
+ let {
24
+ year,
25
+ month
26
+ } = _ref;
24
27
  return [31, isLeapYear({
25
28
  year
26
29
  }) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
27
30
  }
28
- export function getFirstDayOfMonth({
29
- year,
30
- month
31
- }) {
31
+ export function getFirstDayOfMonth(_ref2) {
32
+ let {
33
+ year,
34
+ month
35
+ } = _ref2;
32
36
  return new Date(year, month, 1).getDay();
33
- } // export function getLastDayOfMonth({
34
- // year,
35
- // month,
36
- // }: {
37
- // year: number
38
- // month: number
39
- // }): number {
40
- // return new Date(year, month, getDaysInMonth({ year, month })).getDay()
41
- // }
42
-
37
+ }
38
+ export function useRangeChecker(validRange) {
39
+ const validStart = validRange === null || validRange === void 0 ? void 0 : validRange.startDate;
40
+ const validEnd = validRange === null || validRange === void 0 ? void 0 : validRange.endDate;
41
+ const startUnix = validStart instanceof Date ? dateToUnix(getStartOfDay(validStart)) : undefined;
42
+ const endUnix = validEnd instanceof Date ? dateToUnix(getEndOfDay(validEnd)) : undefined;
43
+ const validDisabledDatesRef = useLatest(validRange === null || validRange === void 0 ? void 0 : validRange.disabledDates);
44
+ const isWithinValidRange = React.useCallback(day => {
45
+ return isDateWithinOptionalRange(day, {
46
+ startUnix: startUnix,
47
+ endUnix: endUnix
48
+ });
49
+ }, [startUnix, endUnix]);
50
+ const isDisabled = React.useCallback(day => {
51
+ return validDisabledDatesRef.current ? validDisabledDatesRef.current.some(disabledDate => areDatesOnSameDay(disabledDate, day)) : false;
52
+ }, [validDisabledDatesRef]);
53
+ return {
54
+ isDisabled,
55
+ isWithinValidRange,
56
+ validStart,
57
+ validEnd
58
+ };
59
+ }
43
60
  export function areDatesOnSameDay(a, b) {
44
61
  if (!b) {
45
62
  return false;
@@ -47,10 +64,12 @@ export function areDatesOnSameDay(a, b) {
47
64
 
48
65
  return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
49
66
  }
50
- export function isDateBetween(date, {
51
- startDate,
52
- endDate
53
- }) {
67
+ export function isDateBetween(date, _ref3) {
68
+ let {
69
+ startDate,
70
+ endDate
71
+ } = _ref3;
72
+
54
73
  if (!startDate || !endDate) {
55
74
  return false;
56
75
  }
@@ -63,15 +82,16 @@ export function isDateBetween(date, {
63
82
  * If the range doesn't exist, it defaults to `true`.
64
83
  */
65
84
 
66
- export function isDateWithinOptionalRange(date, {
67
- startUnix,
68
- endUnix
69
- }) {
85
+ export function isDateWithinOptionalRange(date, _ref4) {
86
+ let {
87
+ startUnix,
88
+ endUnix
89
+ } = _ref4;
70
90
  const dateUnix = dateToUnix(date); // if startUnix is provided and date is before start
71
91
 
72
92
  if (startUnix && dateUnix < startUnix) {
73
93
  return false;
74
- } // if startUnix is provided and date is after end
94
+ } // if endUnix is provided and date is after end
75
95
 
76
96
 
77
97
  if (endUnix && dateUnix > endUnix) {
@@ -80,9 +100,10 @@ export function isDateWithinOptionalRange(date, {
80
100
 
81
101
  return true;
82
102
  }
83
- export function isLeapYear({
84
- year
85
- }) {
103
+ export function isLeapYear(_ref5) {
104
+ let {
105
+ year
106
+ } = _ref5;
86
107
  return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
87
108
  }
88
109
  export const daySize = 46;
@@ -128,6 +149,34 @@ export function getInitialIndex(date) {
128
149
  const months = differenceInMonths(today, date);
129
150
  return startAtIndex + months;
130
151
  }
152
+ export function useInputFormatter(_ref6) {
153
+ let {
154
+ locale
155
+ } = _ref6;
156
+ return React.useMemo(() => {
157
+ return new Intl.DateTimeFormat(locale, {
158
+ month: '2-digit',
159
+ day: '2-digit',
160
+ year: 'numeric'
161
+ });
162
+ }, [locale]);
163
+ }
164
+ export function getStartOfDay(d) {
165
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0);
166
+ }
167
+ export function getEndOfDay(d) {
168
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59, 59);
169
+ }
170
+ export function useInputFormat(_ref7) {
171
+ let {
172
+ formatter
173
+ } = _ref7;
174
+ return React.useMemo(() => {
175
+ // TODO: something cleaner and more universal?
176
+ const inputDate = formatter.format(new Date(2020, 10 - 1, 1));
177
+ return inputDate.replace('2020', 'YYYY').replace('10', 'MM').replace('01', 'DD');
178
+ }, [formatter]);
179
+ }
131
180
  export function differenceInMonths(firstDate, secondDate) {
132
181
  let diffMonths = (secondDate.getFullYear() - firstDate.getFullYear()) * 12;
133
182
  diffMonths -= firstDate.getMonth();
@@ -1 +1 @@
1
- {"version":3,"sources":["dateUtils.tsx"],"names":["showWeekDay","dayIndex","disableWeekDays","some","di","dateToUnix","d","Math","round","getTime","addMonths","date","count","n","getDate","n2","Date","setDate","setMonth","getMonth","min","getDaysInMonth","year","getFullYear","month","isLeapYear","getFirstDayOfMonth","getDay","areDatesOnSameDay","a","b","isDateBetween","startDate","endDate","isDateWithinOptionalRange","startUnix","endUnix","dateUnix","daySize","estimatedMonthHeight","startAtIndex","totalMonths","beginOffset","gridCounts","Array","getGridCount","index","cHeight","monthDate","getRealIndex","h","getGridCountForDate","daysInMonth","dayOfWeek","ceil","getInitialIndex","today","months","differenceInMonths","firstDate","secondDate","diffMonths"],"mappings":"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","sourcesContent":["export type DisableWeekDaysType = number[]\n\nexport function showWeekDay(\n dayIndex: number,\n disableWeekDays?: DisableWeekDaysType\n): boolean {\n return !(disableWeekDays && disableWeekDays.some((di) => di === dayIndex))\n}\n\nexport function dateToUnix(d: Date): number {\n return Math.round(d.getTime() / 1000)\n}\n\nexport function addMonths(date: Date, count: number) {\n let n = date.getDate()\n let n2 = new Date(date.getTime())\n n2.setDate(1)\n n2.setMonth(n2.getMonth() + count)\n n2.setDate(\n Math.min(\n n,\n getDaysInMonth({ year: n2.getFullYear(), month: n2.getMonth() })\n )\n )\n\n return n2\n}\n\n// https://stackoverflow.com/a/1185068/2508481\n// pass in any date as parameter anyDateInMonth based on dayjs\nexport function getDaysInMonth({\n year,\n month,\n}: {\n year: number\n month: number\n}): number {\n return [\n 31,\n isLeapYear({ year }) ? 29 : 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31,\n ][month]\n}\n\nexport function getFirstDayOfMonth({\n year,\n month,\n}: {\n year: number\n month: number\n}): number {\n return new Date(year, month, 1).getDay()\n}\n\n// export function getLastDayOfMonth({\n// year,\n// month,\n// }: {\n// year: number\n// month: number\n// }): number {\n// return new Date(year, month, getDaysInMonth({ year, month })).getDay()\n// }\n\nexport function areDatesOnSameDay(a: Date, b?: Date | null | undefined) {\n if (!b) {\n return false\n }\n\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nexport function isDateBetween(\n date: Date,\n {\n startDate,\n endDate,\n }: {\n startDate?: Date | null | undefined\n endDate?: Date | null | undefined\n }\n): boolean {\n if (!startDate || !endDate) {\n return false\n }\n return date <= endDate && date >= startDate\n}\n\n/**\n * Check if a date is within an optional range.\n *\n * If the range doesn't exist, it defaults to `true`.\n */\nexport function isDateWithinOptionalRange(\n date: Date,\n {\n startUnix,\n endUnix,\n }: { startUnix: number | undefined; endUnix: number | undefined }\n) {\n const dateUnix = dateToUnix(date)\n // if startUnix is provided and date is before start\n if (startUnix && dateUnix < startUnix) {\n return false\n }\n\n // if startUnix is provided and date is after end\n if (endUnix && dateUnix > endUnix) {\n return false\n }\n\n return true\n}\n\nexport function isLeapYear({ year }: { year: number }) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0\n}\n\nexport const daySize = 46\nexport const estimatedMonthHeight = 360\nexport const startAtIndex = 1200\nexport const totalMonths = startAtIndex * 2\nexport const beginOffset = estimatedMonthHeight * startAtIndex\nexport const gridCounts = new Array<number | undefined>(totalMonths)\n\nexport function getGridCount(index: number) {\n const cHeight = gridCounts[index]\n if (cHeight) {\n return cHeight\n }\n const monthDate = addMonths(new Date(), getRealIndex(index))\n const h = getGridCountForDate(monthDate)\n gridCounts[index] = h\n return h\n}\n\nexport function getGridCountForDate(date: Date) {\n const year = date.getFullYear()\n const month = date.getMonth()\n const daysInMonth = getDaysInMonth({ year, month })\n const dayOfWeek = getFirstDayOfMonth({ year, month })\n return Math.ceil((daysInMonth + dayOfWeek) / 7)\n}\n\nexport function getRealIndex(index: number) {\n return index - startAtIndex\n}\n\nexport function getInitialIndex(date: Date | undefined) {\n if (!date) {\n return startAtIndex\n }\n\n const today = new Date()\n const months = differenceInMonths(today, date)\n\n return startAtIndex + months\n}\n\nexport function differenceInMonths(firstDate: Date, secondDate: Date) {\n let diffMonths = (secondDate.getFullYear() - firstDate.getFullYear()) * 12\n diffMonths -= firstDate.getMonth()\n diffMonths += secondDate.getMonth()\n return diffMonths\n}\n"]}
1
+ {"version":3,"sources":["dateUtils.tsx"],"names":["React","useLatest","showWeekDay","dayIndex","disableWeekDays","some","di","dateToUnix","d","Math","round","getTime","addMonths","date","count","n","getDate","n2","Date","setDate","setMonth","getMonth","min","getDaysInMonth","year","getFullYear","month","isLeapYear","getFirstDayOfMonth","getDay","useRangeChecker","validRange","validStart","startDate","validEnd","endDate","startUnix","getStartOfDay","undefined","endUnix","getEndOfDay","validDisabledDatesRef","disabledDates","isWithinValidRange","useCallback","day","isDateWithinOptionalRange","isDisabled","current","disabledDate","areDatesOnSameDay","a","b","isDateBetween","dateUnix","daySize","estimatedMonthHeight","startAtIndex","totalMonths","beginOffset","gridCounts","Array","getGridCount","index","cHeight","monthDate","getRealIndex","h","getGridCountForDate","daysInMonth","dayOfWeek","ceil","getInitialIndex","today","months","differenceInMonths","useInputFormatter","locale","useMemo","Intl","DateTimeFormat","useInputFormat","formatter","inputDate","format","replace","firstDate","secondDate","diffMonths"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,SAAT,QAA0B,UAA1B;AAKA,OAAO,SAASC,WAAT,CACLC,QADK,EAELC,eAFK,EAGI;AACT,SAAO,EAAEA,eAAe,IAAIA,eAAe,CAACC,IAAhB,CAAsBC,EAAD,IAAQA,EAAE,KAAKH,QAApC,CAArB,CAAP;AACD;AAED,OAAO,SAASI,UAAT,CAAoBC,CAApB,EAAqC;AAC1C,SAAOC,IAAI,CAACC,KAAL,CAAWF,CAAC,CAACG,OAAF,KAAc,IAAzB,CAAP;AACD;AAED,OAAO,SAASC,SAAT,CAAmBC,IAAnB,EAA+BC,KAA/B,EAA8C;AACnD,MAAIC,CAAC,GAAGF,IAAI,CAACG,OAAL,EAAR;AACA,MAAIC,EAAE,GAAG,IAAIC,IAAJ,CAASL,IAAI,CAACF,OAAL,EAAT,CAAT;AACAM,EAAAA,EAAE,CAACE,OAAH,CAAW,CAAX;AACAF,EAAAA,EAAE,CAACG,QAAH,CAAYH,EAAE,CAACI,QAAH,KAAgBP,KAA5B;AACAG,EAAAA,EAAE,CAACE,OAAH,CACEV,IAAI,CAACa,GAAL,CACEP,CADF,EAEEQ,cAAc,CAAC;AAAEC,IAAAA,IAAI,EAAEP,EAAE,CAACQ,WAAH,EAAR;AAA0BC,IAAAA,KAAK,EAAET,EAAE,CAACI,QAAH;AAAjC,GAAD,CAFhB,CADF;AAOA,SAAOJ,EAAP;AACD,C,CAED;AACA;;AACA,OAAO,SAASM,cAAT,OAMI;AAAA,MANoB;AAC7BC,IAAAA,IAD6B;AAE7BE,IAAAA;AAF6B,GAMpB;AACT,SAAO,CACL,EADK,EAELC,UAAU,CAAC;AAAEH,IAAAA;AAAF,GAAD,CAAV,GAAuB,EAAvB,GAA4B,EAFvB,EAGL,EAHK,EAIL,EAJK,EAKL,EALK,EAML,EANK,EAOL,EAPK,EAQL,EARK,EASL,EATK,EAUL,EAVK,EAWL,EAXK,EAYL,EAZK,EAaLE,KAbK,CAAP;AAcD;AAED,OAAO,SAASE,kBAAT,QAMI;AAAA,MANwB;AACjCJ,IAAAA,IADiC;AAEjCE,IAAAA;AAFiC,GAMxB;AACT,SAAO,IAAIR,IAAJ,CAASM,IAAT,EAAeE,KAAf,EAAsB,CAAtB,EAAyBG,MAAzB,EAAP;AACD;AAED,OAAO,SAASC,eAAT,CAAyBC,UAAzB,EAAiE;AACtE,QAAMC,UAAU,GAAGD,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEE,SAA/B;AACA,QAAMC,QAAQ,GAAGH,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEI,OAA7B;AACA,QAAMC,SAAS,GACbJ,UAAU,YAAYd,IAAtB,GACIX,UAAU,CAAC8B,aAAa,CAACL,UAAD,CAAd,CADd,GAEIM,SAHN;AAKA,QAAMC,OAAO,GACXL,QAAQ,YAAYhB,IAApB,GAA2BX,UAAU,CAACiC,WAAW,CAACN,QAAD,CAAZ,CAArC,GAA+DI,SADjE;AAGA,QAAMG,qBAAqB,GAAGxC,SAAS,CAAC8B,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEW,aAAb,CAAvC;AAEA,QAAMC,kBAAkB,GAAG3C,KAAK,CAAC4C,WAAN,CACxBC,GAAD,IAAe;AACb,WAAOC,yBAAyB,CAACD,GAAD,EAAM;AACpCT,MAAAA,SAAS,EAAEA,SADyB;AAEpCG,MAAAA,OAAO,EAAEA;AAF2B,KAAN,CAAhC;AAID,GANwB,EAOzB,CAACH,SAAD,EAAYG,OAAZ,CAPyB,CAA3B;AAUA,QAAMQ,UAAU,GAAG/C,KAAK,CAAC4C,WAAN,CAChBC,GAAD,IAAe;AACb,WAAOJ,qBAAqB,CAACO,OAAtB,GACHP,qBAAqB,CAACO,OAAtB,CAA8B3C,IAA9B,CAAoC4C,YAAD,IACjCC,iBAAiB,CAACD,YAAD,EAAeJ,GAAf,CADnB,CADG,GAIH,KAJJ;AAKD,GAPgB,EAQjB,CAACJ,qBAAD,CARiB,CAAnB;AAWA,SAAO;AAAEM,IAAAA,UAAF;AAAcJ,IAAAA,kBAAd;AAAkCX,IAAAA,UAAlC;AAA8CE,IAAAA;AAA9C,GAAP;AACD;AAED,OAAO,SAASgB,iBAAT,CAA2BC,CAA3B,EAAoCC,CAApC,EAAiE;AACtE,MAAI,CAACA,CAAL,EAAQ;AACN,WAAO,KAAP;AACD;;AAED,SACED,CAAC,CAAC1B,WAAF,OAAoB2B,CAAC,CAAC3B,WAAF,EAApB,IACA0B,CAAC,CAAC9B,QAAF,OAAiB+B,CAAC,CAAC/B,QAAF,EADjB,IAEA8B,CAAC,CAACnC,OAAF,OAAgBoC,CAAC,CAACpC,OAAF,EAHlB;AAKD;AAED,OAAO,SAASqC,aAAT,CACLxC,IADK,SASI;AAAA,MAPT;AACEoB,IAAAA,SADF;AAEEE,IAAAA;AAFF,GAOS;;AACT,MAAI,CAACF,SAAD,IAAc,CAACE,OAAnB,EAA4B;AAC1B,WAAO,KAAP;AACD;;AACD,SAAOtB,IAAI,IAAIsB,OAAR,IAAmBtB,IAAI,IAAIoB,SAAlC;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASa,yBAAT,CACLjC,IADK,SAML;AAAA,MAJA;AACEuB,IAAAA,SADF;AAEEG,IAAAA;AAFF,GAIA;AACA,QAAMe,QAAQ,GAAG/C,UAAU,CAACM,IAAD,CAA3B,CADA,CAEA;;AACA,MAAIuB,SAAS,IAAIkB,QAAQ,GAAGlB,SAA5B,EAAuC;AACrC,WAAO,KAAP;AACD,GALD,CAOA;;;AACA,MAAIG,OAAO,IAAIe,QAAQ,GAAGf,OAA1B,EAAmC;AACjC,WAAO,KAAP;AACD;;AAED,SAAO,IAAP;AACD;AAED,OAAO,SAASZ,UAAT,QAAgD;AAAA,MAA5B;AAAEH,IAAAA;AAAF,GAA4B;AACrD,SAAQA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAAP,KAAe,CAAlC,IAAwCA,IAAI,GAAG,GAAP,KAAe,CAA9D;AACD;AAED,OAAO,MAAM+B,OAAO,GAAG,EAAhB;AACP,OAAO,MAAMC,oBAAoB,GAAG,GAA7B;AACP,OAAO,MAAMC,YAAY,GAAG,IAArB;AACP,OAAO,MAAMC,WAAW,GAAGD,YAAY,GAAG,CAAnC;AACP,OAAO,MAAME,WAAW,GAAGH,oBAAoB,GAAGC,YAA3C;AACP,OAAO,MAAMG,UAAU,GAAG,IAAIC,KAAJ,CAA8BH,WAA9B,CAAnB;AAEP,OAAO,SAASI,YAAT,CAAsBC,KAAtB,EAAqC;AAC1C,QAAMC,OAAO,GAAGJ,UAAU,CAACG,KAAD,CAA1B;;AACA,MAAIC,OAAJ,EAAa;AACX,WAAOA,OAAP;AACD;;AACD,QAAMC,SAAS,GAAGrD,SAAS,CAAC,IAAIM,IAAJ,EAAD,EAAagD,YAAY,CAACH,KAAD,CAAzB,CAA3B;AACA,QAAMI,CAAC,GAAGC,mBAAmB,CAACH,SAAD,CAA7B;AACAL,EAAAA,UAAU,CAACG,KAAD,CAAV,GAAoBI,CAApB;AACA,SAAOA,CAAP;AACD;AAED,OAAO,SAASC,mBAAT,CAA6BvD,IAA7B,EAAyC;AAC9C,QAAMW,IAAI,GAAGX,IAAI,CAACY,WAAL,EAAb;AACA,QAAMC,KAAK,GAAGb,IAAI,CAACQ,QAAL,EAAd;AACA,QAAMgD,WAAW,GAAG9C,cAAc,CAAC;AAAEC,IAAAA,IAAF;AAAQE,IAAAA;AAAR,GAAD,CAAlC;AACA,QAAM4C,SAAS,GAAG1C,kBAAkB,CAAC;AAAEJ,IAAAA,IAAF;AAAQE,IAAAA;AAAR,GAAD,CAApC;AACA,SAAOjB,IAAI,CAAC8D,IAAL,CAAU,CAACF,WAAW,GAAGC,SAAf,IAA4B,CAAtC,CAAP;AACD;AAED,OAAO,SAASJ,YAAT,CAAsBH,KAAtB,EAAqC;AAC1C,SAAOA,KAAK,GAAGN,YAAf;AACD;AAED,OAAO,SAASe,eAAT,CAAyB3D,IAAzB,EAAiD;AACtD,MAAI,CAACA,IAAL,EAAW;AACT,WAAO4C,YAAP;AACD;;AAED,QAAMgB,KAAK,GAAG,IAAIvD,IAAJ,EAAd;AACA,QAAMwD,MAAM,GAAGC,kBAAkB,CAACF,KAAD,EAAQ5D,IAAR,CAAjC;AAEA,SAAO4C,YAAY,GAAGiB,MAAtB;AACD;AAED,OAAO,SAASE,iBAAT,QAAuE;AAAA,MAA5C;AAAEC,IAAAA;AAAF,GAA4C;AAC5E,SAAO7E,KAAK,CAAC8E,OAAN,CAAc,MAAM;AACzB,WAAO,IAAIC,IAAI,CAACC,cAAT,CAAwBH,MAAxB,EAAgC;AACrCnD,MAAAA,KAAK,EAAE,SAD8B;AAErCmB,MAAAA,GAAG,EAAE,SAFgC;AAGrCrB,MAAAA,IAAI,EAAE;AAH+B,KAAhC,CAAP;AAKD,GANM,EAMJ,CAACqD,MAAD,CANI,CAAP;AAOD;AACD,OAAO,SAASxC,aAAT,CAAuB7B,CAAvB,EAAsC;AAC3C,SAAO,IAAIU,IAAJ,CAASV,CAAC,CAACiB,WAAF,EAAT,EAA0BjB,CAAC,CAACa,QAAF,EAA1B,EAAwCb,CAAC,CAACQ,OAAF,EAAxC,EAAqD,CAArD,EAAwD,CAAxD,EAA2D,CAA3D,CAAP;AACD;AACD,OAAO,SAASwB,WAAT,CAAqBhC,CAArB,EAAoC;AACzC,SAAO,IAAIU,IAAJ,CAASV,CAAC,CAACiB,WAAF,EAAT,EAA0BjB,CAAC,CAACa,QAAF,EAA1B,EAAwCb,CAAC,CAACQ,OAAF,EAAxC,EAAqD,EAArD,EAAyD,EAAzD,EAA6D,EAA7D,CAAP;AACD;AACD,OAAO,SAASiE,cAAT,QAIJ;AAAA,MAJ4B;AAC7BC,IAAAA;AAD6B,GAI5B;AACD,SAAOlF,KAAK,CAAC8E,OAAN,CAAc,MAAM;AACzB;AACA,UAAMK,SAAS,GAAGD,SAAS,CAACE,MAAV,CAAiB,IAAIlE,IAAJ,CAAS,IAAT,EAAe,KAAK,CAApB,EAAuB,CAAvB,CAAjB,CAAlB;AACA,WAAOiE,SAAS,CACbE,OADI,CACI,MADJ,EACY,MADZ,EAEJA,OAFI,CAEI,IAFJ,EAEU,IAFV,EAGJA,OAHI,CAGI,IAHJ,EAGU,IAHV,CAAP;AAID,GAPM,EAOJ,CAACH,SAAD,CAPI,CAAP;AAQD;AAED,OAAO,SAASP,kBAAT,CAA4BW,SAA5B,EAA6CC,UAA7C,EAA+D;AACpE,MAAIC,UAAU,GAAG,CAACD,UAAU,CAAC9D,WAAX,KAA2B6D,SAAS,CAAC7D,WAAV,EAA5B,IAAuD,EAAxE;AACA+D,EAAAA,UAAU,IAAIF,SAAS,CAACjE,QAAV,EAAd;AACAmE,EAAAA,UAAU,IAAID,UAAU,CAAClE,QAAX,EAAd;AACA,SAAOmE,UAAP;AACD","sourcesContent":["import * as React from 'react'\nimport { useLatest } from '../utils'\nimport type { ValidRangeType } from './Calendar'\n\nexport type DisableWeekDaysType = number[]\n\nexport function showWeekDay(\n dayIndex: number,\n disableWeekDays?: DisableWeekDaysType\n): boolean {\n return !(disableWeekDays && disableWeekDays.some((di) => di === dayIndex))\n}\n\nexport function dateToUnix(d: Date): number {\n return Math.round(d.getTime() / 1000)\n}\n\nexport function addMonths(date: Date, count: number) {\n let n = date.getDate()\n let n2 = new Date(date.getTime())\n n2.setDate(1)\n n2.setMonth(n2.getMonth() + count)\n n2.setDate(\n Math.min(\n n,\n getDaysInMonth({ year: n2.getFullYear(), month: n2.getMonth() })\n )\n )\n\n return n2\n}\n\n// https://stackoverflow.com/a/1185068/2508481\n// pass in any date as parameter anyDateInMonth based on dayjs\nexport function getDaysInMonth({\n year,\n month,\n}: {\n year: number\n month: number\n}): number {\n return [\n 31,\n isLeapYear({ year }) ? 29 : 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31,\n ][month]\n}\n\nexport function getFirstDayOfMonth({\n year,\n month,\n}: {\n year: number\n month: number\n}): number {\n return new Date(year, month, 1).getDay()\n}\n\nexport function useRangeChecker(validRange: ValidRangeType | undefined) {\n const validStart = validRange?.startDate\n const validEnd = validRange?.endDate\n const startUnix =\n validStart instanceof Date\n ? dateToUnix(getStartOfDay(validStart))\n : undefined\n\n const endUnix =\n validEnd instanceof Date ? dateToUnix(getEndOfDay(validEnd)) : undefined\n\n const validDisabledDatesRef = useLatest(validRange?.disabledDates)\n\n const isWithinValidRange = React.useCallback(\n (day: Date) => {\n return isDateWithinOptionalRange(day, {\n startUnix: startUnix,\n endUnix: endUnix,\n })\n },\n [startUnix, endUnix]\n )\n\n const isDisabled = React.useCallback(\n (day: Date) => {\n return validDisabledDatesRef.current\n ? validDisabledDatesRef.current.some((disabledDate) =>\n areDatesOnSameDay(disabledDate, day)\n )\n : false\n },\n [validDisabledDatesRef]\n )\n\n return { isDisabled, isWithinValidRange, validStart, validEnd }\n}\n\nexport function areDatesOnSameDay(a: Date, b?: Date | null | undefined) {\n if (!b) {\n return false\n }\n\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nexport function isDateBetween(\n date: Date,\n {\n startDate,\n endDate,\n }: {\n startDate?: Date | null | undefined\n endDate?: Date | null | undefined\n }\n): boolean {\n if (!startDate || !endDate) {\n return false\n }\n return date <= endDate && date >= startDate\n}\n\n/**\n * Check if a date is within an optional range.\n *\n * If the range doesn't exist, it defaults to `true`.\n */\nexport function isDateWithinOptionalRange(\n date: Date,\n {\n startUnix,\n endUnix,\n }: { startUnix: number | undefined; endUnix: number | undefined }\n) {\n const dateUnix = dateToUnix(date)\n // if startUnix is provided and date is before start\n if (startUnix && dateUnix < startUnix) {\n return false\n }\n\n // if endUnix is provided and date is after end\n if (endUnix && dateUnix > endUnix) {\n return false\n }\n\n return true\n}\n\nexport function isLeapYear({ year }: { year: number }) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0\n}\n\nexport const daySize = 46\nexport const estimatedMonthHeight = 360\nexport const startAtIndex = 1200\nexport const totalMonths = startAtIndex * 2\nexport const beginOffset = estimatedMonthHeight * startAtIndex\nexport const gridCounts = new Array<number | undefined>(totalMonths)\n\nexport function getGridCount(index: number) {\n const cHeight = gridCounts[index]\n if (cHeight) {\n return cHeight\n }\n const monthDate = addMonths(new Date(), getRealIndex(index))\n const h = getGridCountForDate(monthDate)\n gridCounts[index] = h\n return h\n}\n\nexport function getGridCountForDate(date: Date) {\n const year = date.getFullYear()\n const month = date.getMonth()\n const daysInMonth = getDaysInMonth({ year, month })\n const dayOfWeek = getFirstDayOfMonth({ year, month })\n return Math.ceil((daysInMonth + dayOfWeek) / 7)\n}\n\nexport function getRealIndex(index: number) {\n return index - startAtIndex\n}\n\nexport function getInitialIndex(date: Date | undefined) {\n if (!date) {\n return startAtIndex\n }\n\n const today = new Date()\n const months = differenceInMonths(today, date)\n\n return startAtIndex + months\n}\n\nexport function useInputFormatter({ locale }: { locale: string | undefined }) {\n return React.useMemo(() => {\n return new Intl.DateTimeFormat(locale, {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n })\n }, [locale])\n}\nexport function getStartOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0)\n}\nexport function getEndOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59, 59)\n}\nexport function useInputFormat({\n formatter,\n}: {\n formatter: Intl.DateTimeFormat\n}) {\n return 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\nexport function differenceInMonths(firstDate: Date, secondDate: Date) {\n let diffMonths = (secondDate.getFullYear() - firstDate.getFullYear()) * 12\n diffMonths -= firstDate.getMonth()\n diffMonths += secondDate.getMonth()\n return diffMonths\n}\n"]}
@@ -0,0 +1,70 @@
1
+ import { useInputFormat, useInputFormatter, useRangeChecker } from './dateUtils';
2
+ import * as React from 'react';
3
+ import { getTranslation } from 'react-native-paper-dates';
4
+ export default function useDateInput(_ref) {
5
+ let {
6
+ locale,
7
+ value,
8
+ validRange,
9
+ inputMode,
10
+ onChange
11
+ } = _ref;
12
+ const {
13
+ isDisabled,
14
+ isWithinValidRange,
15
+ validStart,
16
+ validEnd
17
+ } = useRangeChecker(validRange);
18
+ const [error, setError] = React.useState(null);
19
+ const formatter = useInputFormatter({
20
+ locale
21
+ });
22
+ const inputFormat = useInputFormat({
23
+ formatter
24
+ });
25
+ const formattedValue = formatter.format(value);
26
+
27
+ const onChangeText = date => {
28
+ const dayIndex = inputFormat.indexOf('DD');
29
+ const monthIndex = inputFormat.indexOf('MM');
30
+ const yearIndex = inputFormat.indexOf('YYYY');
31
+ const day = Number(date.slice(dayIndex, dayIndex + 2));
32
+ const year = Number(date.slice(yearIndex, yearIndex + 4));
33
+ const month = Number(date.slice(monthIndex, monthIndex + 2));
34
+
35
+ if (Number.isNaN(day) || Number.isNaN(year) || Number.isNaN(month)) {
36
+ setError(getTranslation(locale, 'notAccordingToDateFormat', () => 'notAccordingToDateFormat')(inputFormat));
37
+ return;
38
+ }
39
+
40
+ const finalDate = inputMode === 'end' ? new Date(year, month - 1, day, 23, 59, 59) : new Date(year, month - 1, day);
41
+
42
+ if (isDisabled(finalDate)) {
43
+ setError(getTranslation(locale, 'dateIsDisabled'));
44
+ return;
45
+ }
46
+
47
+ if (!isWithinValidRange(finalDate)) {
48
+ let errors = validStart && validEnd ? [`${getTranslation(locale, 'mustBeBetween')} ${formatter.format(validStart)} - ${formatter.format(validEnd)}`] : [validStart ? `${getTranslation(locale, 'mustBeHigherThan')} ${formatter.format(validStart)}` : '', validEnd ? `${getTranslation(locale, 'mustBeLowerThan')} ${formatter.format(validEnd)}` : ''];
49
+ setError(errors.filter(n => n).join(' '));
50
+ return;
51
+ }
52
+
53
+ setError(null);
54
+
55
+ if (inputMode === 'end') {
56
+ onChange(finalDate);
57
+ } else {
58
+ onChange(finalDate);
59
+ }
60
+ };
61
+
62
+ return {
63
+ onChange,
64
+ error,
65
+ formattedValue,
66
+ onChangeText,
67
+ inputFormat
68
+ };
69
+ }
70
+ //# sourceMappingURL=inputUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["inputUtils.ts"],"names":["useInputFormat","useInputFormatter","useRangeChecker","React","getTranslation","useDateInput","locale","value","validRange","inputMode","onChange","isDisabled","isWithinValidRange","validStart","validEnd","error","setError","useState","formatter","inputFormat","formattedValue","format","onChangeText","date","dayIndex","indexOf","monthIndex","yearIndex","day","Number","slice","year","month","isNaN","finalDate","Date","errors","filter","n","join"],"mappings":"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","sourcesContent":["import { useInputFormat, useInputFormatter, useRangeChecker } from './dateUtils'\nimport * as React from 'react'\nimport type { ValidRangeType } from './Calendar'\nimport { getTranslation } from 'react-native-paper-dates'\n\nexport default function useDateInput({\n locale,\n value,\n validRange,\n inputMode,\n onChange,\n}: {\n onChange: (d: Date) => void\n locale: undefined | string\n value: Date | undefined\n validRange: ValidRangeType | undefined\n inputMode: 'start' | 'end'\n}) {\n const { isDisabled, isWithinValidRange, validStart, validEnd } =\n useRangeChecker(validRange)\n const [error, setError] = React.useState<null | string>(null)\n const formatter = useInputFormatter({ locale })\n const inputFormat = useInputFormat({ formatter })\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(\n getTranslation(\n locale,\n 'notAccordingToDateFormat',\n () => 'notAccordingToDateFormat'\n )(inputFormat)\n )\n return\n }\n\n const finalDate =\n inputMode === 'end'\n ? new Date(year, month - 1, day, 23, 59, 59)\n : new Date(year, month - 1, day)\n\n if (isDisabled(finalDate)) {\n setError(getTranslation(locale, 'dateIsDisabled'))\n return\n }\n if (!isWithinValidRange(finalDate)) {\n let errors =\n validStart && validEnd\n ? [\n `${getTranslation(locale, 'mustBeBetween')} ${formatter.format(\n validStart\n )} - ${formatter.format(validEnd)}`,\n ]\n : [\n validStart\n ? `${getTranslation(\n locale,\n 'mustBeHigherThan'\n )} ${formatter.format(validStart)}`\n : '',\n validEnd\n ? `${getTranslation(\n locale,\n 'mustBeLowerThan'\n )} ${formatter.format(validEnd)}`\n : '',\n ]\n setError(errors.filter((n) => n).join(' '))\n return\n }\n\n setError(null)\n if (inputMode === 'end') {\n onChange(finalDate)\n } else {\n onChange(finalDate)\n }\n }\n return {\n onChange,\n error,\n formattedValue,\n onChangeText,\n inputFormat,\n }\n}\n"]}
@@ -54,13 +54,14 @@ function enhanceTextWithMask(text, mask, previousValue) {
54
54
  return finalString.join(splitCharacter);
55
55
  }
56
56
 
57
- function TextInputWithMask({
58
- onChangeText,
59
- value,
60
- mask,
61
- ...rest
62
- }, ref) {
63
- const [controlledValue, setControlledValue] = React.useState(value);
57
+ function TextInputWithMask(_ref, ref) {
58
+ let {
59
+ onChangeText,
60
+ value,
61
+ mask,
62
+ ...rest
63
+ } = _ref;
64
+ const [controlledValue, setControlledValue] = React.useState(value || '');
64
65
 
65
66
  const onInnerChange = text => {
66
67
  const enhancedText = enhanceTextWithMask(text, mask, controlledValue);
@@ -72,7 +73,7 @@ function TextInputWithMask({
72
73
  };
73
74
 
74
75
  React.useEffect(() => {
75
- setControlledValue(value);
76
+ setControlledValue(value || '');
76
77
  }, [value]);
77
78
  return /*#__PURE__*/React.createElement(TextInput, _extends({
78
79
  ref: ref
@@ -1 +1 @@
1
- {"version":3,"sources":["TextInputMask.tsx"],"names":["React","TextInput","splitCharacters","detectCharacter","mask","c","find","ch","includes","enhanceTextWithMask","text","previousValue","isBackSpace","length","splitCharacter","maskParts","split","textParts","finalString","maskPartIndex","partString","maskPart","textPart","maskDigitIndex","currentCharacter","undefined","character","push","join","lastPart","lastMaskPart","TextInputWithMask","onChangeText","value","rest","ref","controlledValue","setControlledValue","useState","onInnerChange","enhancedText","useEffect","forwardRef"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { TextInput } from 'react-native-paper'\n\nconst splitCharacters = ['-', '/', '.', '年', ' ']\nfunction detectCharacter(mask: string): string {\n const c = splitCharacters.find((ch) => mask.includes(ch))\n return c || ''\n}\n\nfunction enhanceTextWithMask(\n text: string,\n mask: string,\n previousValue: string\n): string {\n const isBackSpace = previousValue.length > text.length\n const splitCharacter = detectCharacter(mask)\n\n const maskParts = mask.split(splitCharacter)\n const textParts = text.split(splitCharacter)\n\n let finalString: string[] = []\n for (let maskPartIndex = 0; maskPartIndex < mask.length; maskPartIndex++) {\n let partString: string[] = []\n\n const maskPart = maskParts[maskPartIndex]\n const textPart = textParts[maskPartIndex]\n if (!textPart) {\n continue\n }\n\n for (\n let maskDigitIndex = 0;\n maskDigitIndex < maskPart.length;\n maskDigitIndex++\n ) {\n const currentCharacter = textPart[maskDigitIndex]\n\n if (isBackSpace && currentCharacter === undefined) {\n continue\n }\n\n const character = textPart[maskDigitIndex]\n\n if (character !== undefined) {\n partString.push(character)\n }\n }\n\n finalString.push(partString.join(''))\n }\n\n const lastPart = finalString[finalString.length - 1]\n const lastMaskPart = maskParts[finalString.length - 1]\n if (\n // if mask is completed\n finalString.length !== maskParts.length &&\n // or ...\n lastPart &&\n lastMaskPart &&\n lastPart.length === lastMaskPart.length\n ) {\n return (\n finalString.join(splitCharacter) + (isBackSpace ? '' : splitCharacter)\n )\n }\n return finalString.join(splitCharacter)\n}\n\nfunction TextInputWithMask(\n { onChangeText, value, mask, ...rest }: any,\n ref: any\n) {\n const [controlledValue, setControlledValue] = React.useState<string>(value)\n\n const onInnerChange = (text: string) => {\n const enhancedText = enhanceTextWithMask(text, mask, controlledValue)\n setControlledValue(enhancedText)\n\n if (text.length === mask.length) {\n onChangeText && onChangeText(text)\n }\n }\n\n React.useEffect(() => {\n setControlledValue(value)\n }, [value])\n\n return (\n <TextInput\n ref={ref}\n {...rest}\n value={controlledValue}\n onChangeText={onInnerChange}\n />\n )\n}\n\nexport default React.forwardRef(TextInputWithMask)\n"]}
1
+ {"version":3,"sources":["TextInputMask.tsx"],"names":["React","TextInput","splitCharacters","detectCharacter","mask","c","find","ch","includes","enhanceTextWithMask","text","previousValue","isBackSpace","length","splitCharacter","maskParts","split","textParts","finalString","maskPartIndex","partString","maskPart","textPart","maskDigitIndex","currentCharacter","undefined","character","push","join","lastPart","lastMaskPart","TextInputWithMask","ref","onChangeText","value","rest","controlledValue","setControlledValue","useState","onInnerChange","enhancedText","useEffect","forwardRef"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { TextInput } from 'react-native-paper'\n\nconst splitCharacters = ['-', '/', '.', '年', ' ']\nfunction detectCharacter(mask: string): string {\n const c = splitCharacters.find((ch) => mask.includes(ch))\n return c || ''\n}\n\nfunction enhanceTextWithMask(\n text: string,\n mask: string,\n previousValue: string\n): string {\n const isBackSpace = previousValue.length > text.length\n const splitCharacter = detectCharacter(mask)\n\n const maskParts = mask.split(splitCharacter)\n const textParts = text.split(splitCharacter)\n\n let finalString: string[] = []\n for (let maskPartIndex = 0; maskPartIndex < mask.length; maskPartIndex++) {\n let partString: string[] = []\n\n const maskPart = maskParts[maskPartIndex]\n const textPart = textParts[maskPartIndex]\n if (!textPart) {\n continue\n }\n\n for (\n let maskDigitIndex = 0;\n maskDigitIndex < maskPart.length;\n maskDigitIndex++\n ) {\n const currentCharacter = textPart[maskDigitIndex]\n\n if (isBackSpace && currentCharacter === undefined) {\n continue\n }\n\n const character = textPart[maskDigitIndex]\n\n if (character !== undefined) {\n partString.push(character)\n }\n }\n\n finalString.push(partString.join(''))\n }\n\n const lastPart = finalString[finalString.length - 1]\n const lastMaskPart = maskParts[finalString.length - 1]\n if (\n // if mask is completed\n finalString.length !== maskParts.length &&\n // or ...\n lastPart &&\n lastMaskPart &&\n lastPart.length === lastMaskPart.length\n ) {\n return (\n finalString.join(splitCharacter) + (isBackSpace ? '' : splitCharacter)\n )\n }\n return finalString.join(splitCharacter)\n}\n\nfunction TextInputWithMask(\n {\n onChangeText,\n value,\n mask,\n ...rest\n }: React.ComponentProps<typeof TextInput> & { mask: string },\n ref: any\n) {\n const [controlledValue, setControlledValue] = React.useState<string>(\n value || ''\n )\n\n const onInnerChange = (text: string) => {\n const enhancedText = enhanceTextWithMask(text, mask, controlledValue)\n setControlledValue(enhancedText)\n\n if (text.length === mask.length) {\n onChangeText && onChangeText(text)\n }\n }\n\n React.useEffect(() => {\n setControlledValue(value || '')\n }, [value])\n\n return (\n <TextInput\n ref={ref}\n {...rest}\n value={controlledValue}\n onChangeText={onInnerChange}\n />\n )\n}\n\nexport default React.forwardRef(TextInputWithMask)\n"]}
@@ -3,11 +3,17 @@ import { View, StyleSheet } from 'react-native';
3
3
  import { Text, TouchableRipple, useTheme } from 'react-native-paper';
4
4
  import { useMemo } from 'react';
5
5
  import Color from 'color';
6
- import { getHourType, hourTypes, useSwitchColors } from './timeUtils';
7
- export default function AmPmSwitcher({
8
- hours,
9
- onChange
10
- }) {
6
+ import { useSwitchColors } from './timeUtils';
7
+ import { DisplayModeContext } from './TimePicker';
8
+ export default function AmPmSwitcher(_ref) {
9
+ let {
10
+ onChange,
11
+ hours
12
+ } = _ref;
13
+ const {
14
+ setMode,
15
+ mode
16
+ } = React.useContext(DisplayModeContext);
11
17
  const theme = useTheme();
12
18
  const backgroundColor = useMemo(() => {
13
19
  if (theme.dark) {
@@ -16,9 +22,7 @@ export default function AmPmSwitcher({
16
22
 
17
23
  return Color(theme.colors.surface).darken(0.1).hex();
18
24
  }, [theme]);
19
- const hourType = getHourType(hours);
20
- const isAM = hourType === hourTypes.am;
21
- const isPM = hourType === hourTypes.pm;
25
+ const isAM = mode === 'AM';
22
26
  return /*#__PURE__*/React.createElement(View, {
23
27
  style: [styles.root, {
24
28
  borderColor: backgroundColor,
@@ -26,7 +30,13 @@ export default function AmPmSwitcher({
26
30
  }]
27
31
  }, /*#__PURE__*/React.createElement(SwitchButton, {
28
32
  label: "AM",
29
- onPress: isAM ? undefined : () => onChange(hours - 12),
33
+ onPress: () => {
34
+ setMode('AM');
35
+
36
+ if (hours - 12 >= 0) {
37
+ onChange(hours - 12);
38
+ }
39
+ },
30
40
  selected: isAM,
31
41
  disabled: isAM
32
42
  }), /*#__PURE__*/React.createElement(View, {
@@ -35,18 +45,25 @@ export default function AmPmSwitcher({
35
45
  }]
36
46
  }), /*#__PURE__*/React.createElement(SwitchButton, {
37
47
  label: "PM",
38
- onPress: isPM ? undefined : () => onChange(hours + 12),
39
- selected: isPM,
40
- disabled: isPM
48
+ onPress: () => {
49
+ setMode('PM');
50
+
51
+ if (hours + 12 <= 24) {
52
+ onChange(hours + 12);
53
+ }
54
+ },
55
+ selected: !isAM,
56
+ disabled: !isAM
41
57
  }));
42
58
  }
43
59
 
44
- function SwitchButton({
45
- label,
46
- onPress,
47
- selected,
48
- disabled
49
- }) {
60
+ function SwitchButton(_ref2) {
61
+ let {
62
+ label,
63
+ onPress,
64
+ selected,
65
+ disabled
66
+ } = _ref2;
50
67
  const theme = useTheme();
51
68
  const {
52
69
  backgroundColor,
@@ -1 +1 @@
1
- {"version":3,"sources":["AmPmSwitcher.tsx"],"names":["React","View","StyleSheet","Text","TouchableRipple","useTheme","useMemo","Color","getHourType","hourTypes","useSwitchColors","AmPmSwitcher","hours","onChange","theme","backgroundColor","dark","colors","surface","lighten","hex","darken","hourType","isAM","am","isPM","pm","styles","root","borderColor","borderRadius","roundness","undefined","switchSeparator","SwitchButton","label","onPress","selected","disabled","color","switchButton","switchButtonInner","fonts","medium","create","width","height","borderWidth","overflow","flex","alignItems","justifyContent"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,IAAT,EAAeC,UAAf,QAAiC,cAAjC;AACA,SAASC,IAAT,EAAeC,eAAf,EAAgCC,QAAhC,QAAgD,oBAAhD;AACA,SAASC,OAAT,QAAwB,OAAxB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,WAAT,EAAsBC,SAAtB,EAAiCC,eAAjC,QAAwD,aAAxD;AAEA,eAAe,SAASC,YAAT,CAAsB;AACnCC,EAAAA,KADmC;AAEnCC,EAAAA;AAFmC,CAAtB,EAMZ;AACD,QAAMC,KAAK,GAAGT,QAAQ,EAAtB;AACA,QAAMU,eAAe,GAAGT,OAAO,CAAS,MAAM;AAC5C,QAAIQ,KAAK,CAACE,IAAV,EAAgB;AACd,aAAOT,KAAK,CAACO,KAAK,CAACG,MAAN,CAAaC,OAAd,CAAL,CAA4BC,OAA5B,CAAoC,GAApC,EAAyCC,GAAzC,EAAP;AACD;;AACD,WAAOb,KAAK,CAACO,KAAK,CAACG,MAAN,CAAaC,OAAd,CAAL,CAA4BG,MAA5B,CAAmC,GAAnC,EAAwCD,GAAxC,EAAP;AACD,GAL8B,EAK5B,CAACN,KAAD,CAL4B,CAA/B;AAOA,QAAMQ,QAAQ,GAAGd,WAAW,CAACI,KAAD,CAA5B;AACA,QAAMW,IAAI,GAAGD,QAAQ,KAAKb,SAAS,CAACe,EAApC;AACA,QAAMC,IAAI,GAAGH,QAAQ,KAAKb,SAAS,CAACiB,EAApC;AAEA,sBACE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE,CACLC,MAAM,CAACC,IADF,EAEL;AACEC,MAAAA,WAAW,EAAEd,eADf;AAEEe,MAAAA,YAAY,EAAEhB,KAAK,CAACiB;AAFtB,KAFK;AADT,kBASE,oBAAC,YAAD;AACE,IAAA,KAAK,EAAC,IADR;AAEE,IAAA,OAAO,EAAER,IAAI,GAAGS,SAAH,GAAe,MAAMnB,QAAQ,CAACD,KAAK,GAAG,EAAT,CAF5C;AAGE,IAAA,QAAQ,EAAEW,IAHZ;AAIE,IAAA,QAAQ,EAAEA;AAJZ,IATF,eAeE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACI,MAAM,CAACM,eAAR,EAAyB;AAAElB,MAAAA;AAAF,KAAzB;AAAb,IAfF,eAgBE,oBAAC,YAAD;AACE,IAAA,KAAK,EAAC,IADR;AAEE,IAAA,OAAO,EAAEU,IAAI,GAAGO,SAAH,GAAe,MAAMnB,QAAQ,CAACD,KAAK,GAAG,EAAT,CAF5C;AAGE,IAAA,QAAQ,EAAEa,IAHZ;AAIE,IAAA,QAAQ,EAAEA;AAJZ,IAhBF,CADF;AAyBD;;AAED,SAASS,YAAT,CAAsB;AACpBC,EAAAA,KADoB;AAEpBC,EAAAA,OAFoB;AAGpBC,EAAAA,QAHoB;AAIpBC,EAAAA;AAJoB,CAAtB,EAUG;AACD,QAAMxB,KAAK,GAAGT,QAAQ,EAAtB;AACA,QAAM;AAAEU,IAAAA,eAAF;AAAmBwB,IAAAA;AAAnB,MAA6B7B,eAAe,CAAC2B,QAAD,CAAlD;AAEA,sBACE,oBAAC,eAAD;AACE,IAAA,OAAO,EAAED,OADX;AAEE,IAAA,KAAK,EAAET,MAAM,CAACa,YAFhB;AAGE,IAAA,kBAAkB,EAAEL,KAHtB,CAIE;AAJF;AAKE,IAAA,mBAAmB,EAAEG,QAAQ,GAAG,CAAC,QAAD,EAAW,UAAX,CAAH,GAA4B,QAL3D,CAME;AANF;AAOE,IAAA,0BAA0B,EAAC,QAP7B;AAQE,IAAA,iBAAiB,EAAC,QARpB;AASE,IAAA,kBAAkB,EAAE;AAAEA,MAAAA;AAAF,KATtB;AAUE,IAAA,QAAQ,EAAEA;AAVZ,kBAYE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACX,MAAM,CAACc,iBAAR,EAA2B;AAAE1B,MAAAA;AAAF,KAA3B;AAAb,kBACE,oBAAC,IAAD;AACE,IAAA,UAAU,EAAE,KADd;AAEE,IAAA,KAAK,EAAE,CACL,EACE,GAAGD,KAAK,CAAC4B,KAAN,CAAYC,MADjB;AAEEJ,MAAAA,KAAK,EAAEA;AAFT,KADK;AAFT,KASGJ,KATH,CADF,CAZF,CADF;AA4BD;;AAED,MAAMR,MAAM,GAAGzB,UAAU,CAAC0C,MAAX,CAAkB;AAC/BhB,EAAAA,IAAI,EAAE;AACJiB,IAAAA,KAAK,EAAE,EADH;AAEJC,IAAAA,MAAM,EAAE,EAFJ;AAGJC,IAAAA,WAAW,EAAE,CAHT;AAIJC,IAAAA,QAAQ,EAAE;AAJN,GADyB;AAO/Bf,EAAAA,eAAe,EAAE;AACfa,IAAAA,MAAM,EAAE,CADO;AAEfD,IAAAA,KAAK,EAAE;AAFQ,GAPc;AAW/BL,EAAAA,YAAY,EAAE;AACZS,IAAAA,IAAI,EAAE;AADM,GAXiB;AAc/BR,EAAAA,iBAAiB,EAAE;AACjBQ,IAAAA,IAAI,EAAE,CADW;AAEjBC,IAAAA,UAAU,EAAE,QAFK;AAGjBC,IAAAA,cAAc,EAAE;AAHC;AAdY,CAAlB,CAAf","sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { useMemo } from 'react'\nimport Color from 'color'\nimport { getHourType, hourTypes, useSwitchColors } from './timeUtils'\n\nexport default function AmPmSwitcher({\n hours,\n onChange,\n}: {\n hours: number\n onChange: (hours: number) => any\n}) {\n const theme = useTheme()\n const backgroundColor = useMemo<string>(() => {\n if (theme.dark) {\n return Color(theme.colors.surface).lighten(1.2).hex()\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [theme])\n\n const hourType = getHourType(hours)\n const isAM = hourType === hourTypes.am\n const isPM = hourType === hourTypes.pm\n\n return (\n <View\n style={[\n styles.root,\n {\n borderColor: backgroundColor,\n borderRadius: theme.roundness,\n },\n ]}\n >\n <SwitchButton\n label=\"AM\"\n onPress={isAM ? undefined : () => onChange(hours - 12)}\n selected={isAM}\n disabled={isAM}\n />\n <View style={[styles.switchSeparator, { backgroundColor }]} />\n <SwitchButton\n label=\"PM\"\n onPress={isPM ? undefined : () => onChange(hours + 12)}\n selected={isPM}\n disabled={isPM}\n />\n </View>\n )\n}\n\nfunction SwitchButton({\n label,\n onPress,\n selected,\n disabled,\n}: {\n label: string\n onPress: (() => any) | undefined\n selected: boolean\n disabled: boolean\n}) {\n const theme = useTheme()\n const { backgroundColor, color } = useSwitchColors(selected)\n\n return (\n <TouchableRipple\n onPress={onPress}\n style={styles.switchButton}\n accessibilityLabel={label}\n // @ts-ignore old React Native versions\n accessibilityTraits={disabled ? ['button', 'disabled'] : 'button'}\n // @ts-ignore old React Native versions\n accessibilityComponentType=\"button\"\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n disabled={disabled}\n >\n <View style={[styles.switchButtonInner, { backgroundColor }]}>\n <Text\n selectable={false}\n style={[\n {\n ...theme.fonts.medium,\n color: color,\n },\n ]}\n >\n {label}\n </Text>\n </View>\n </TouchableRipple>\n )\n}\n\nconst styles = StyleSheet.create({\n root: {\n width: 50,\n height: 80,\n borderWidth: 1,\n overflow: 'hidden',\n },\n switchSeparator: {\n height: 1,\n width: 48,\n },\n switchButton: {\n flex: 1,\n },\n switchButtonInner: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n"]}
1
+ {"version":3,"sources":["AmPmSwitcher.tsx"],"names":["React","View","StyleSheet","Text","TouchableRipple","useTheme","useMemo","Color","useSwitchColors","DisplayModeContext","AmPmSwitcher","onChange","hours","setMode","mode","useContext","theme","backgroundColor","dark","colors","surface","lighten","hex","darken","isAM","styles","root","borderColor","borderRadius","roundness","switchSeparator","SwitchButton","label","onPress","selected","disabled","color","switchButton","switchButtonInner","fonts","medium","create","width","height","borderWidth","overflow","flex","alignItems","justifyContent"],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Text, TouchableRipple, useTheme } from 'react-native-paper'\nimport { useMemo } from 'react'\nimport Color from 'color'\nimport { useSwitchColors } from './timeUtils'\nimport { DisplayModeContext } from './TimePicker'\n\nexport default function AmPmSwitcher({\n onChange,\n hours,\n}: {\n hours: number\n onChange: (newHours: number) => any\n}) {\n const { setMode, mode } = React.useContext(DisplayModeContext)\n const theme = useTheme()\n const backgroundColor = useMemo<string>(() => {\n if (theme.dark) {\n return Color(theme.colors.surface).lighten(1.2).hex()\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [theme])\n\n const isAM = mode === 'AM'\n return (\n <View\n style={[\n styles.root,\n {\n borderColor: backgroundColor,\n borderRadius: theme.roundness,\n },\n ]}\n >\n <SwitchButton\n label=\"AM\"\n onPress={() => {\n setMode('AM')\n if (hours - 12 >= 0) {\n onChange(hours - 12)\n }\n }}\n selected={isAM}\n disabled={isAM}\n />\n <View style={[styles.switchSeparator, { backgroundColor }]} />\n <SwitchButton\n label=\"PM\"\n onPress={() => {\n setMode('PM')\n if (hours + 12 <= 24) {\n onChange(hours + 12)\n }\n }}\n selected={!isAM}\n disabled={!isAM}\n />\n </View>\n )\n}\n\nfunction SwitchButton({\n label,\n onPress,\n selected,\n disabled,\n}: {\n label: string\n onPress: (() => any) | undefined\n selected: boolean\n disabled: boolean\n}) {\n const theme = useTheme()\n const { backgroundColor, color } = useSwitchColors(selected)\n\n return (\n <TouchableRipple\n onPress={onPress}\n style={styles.switchButton}\n accessibilityLabel={label}\n // @ts-ignore old React Native versions\n accessibilityTraits={disabled ? ['button', 'disabled'] : 'button'}\n // @ts-ignore old React Native versions\n accessibilityComponentType=\"button\"\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n disabled={disabled}\n >\n <View style={[styles.switchButtonInner, { backgroundColor }]}>\n <Text\n selectable={false}\n style={[\n {\n ...theme.fonts.medium,\n color: color,\n },\n ]}\n >\n {label}\n </Text>\n </View>\n </TouchableRipple>\n )\n}\n\nconst styles = StyleSheet.create({\n root: {\n width: 50,\n height: 80,\n borderWidth: 1,\n overflow: 'hidden',\n },\n switchSeparator: {\n height: 1,\n width: 48,\n },\n switchButton: {\n flex: 1,\n },\n switchButtonInner: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n"]}