react-native-paper-dates 0.11.8 → 0.11.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/Date/DatePickerInput.js +12 -3
- package/lib/commonjs/Date/DatePickerInput.js.map +1 -1
- package/lib/commonjs/Date/DatePickerInput.shared.js.map +1 -1
- package/lib/commonjs/Date/DatePickerInputWithoutModal.js +21 -11
- package/lib/commonjs/Date/DatePickerInputWithoutModal.js.map +1 -1
- package/lib/commonjs/Date/inputUtils.js +12 -4
- package/lib/commonjs/Date/inputUtils.js.map +1 -1
- package/lib/commonjs/TextInputMask.js +4 -0
- package/lib/commonjs/TextInputMask.js.map +1 -1
- package/lib/commonjs/Time/AnalogClock.js +1 -1
- package/lib/commonjs/Time/AnalogClock.js.map +1 -1
- package/lib/commonjs/Time/AnalogClockHours.js +1 -1
- package/lib/commonjs/Time/AnalogClockHours.js.map +1 -1
- package/lib/commonjs/Time/timeUtils.js +9 -5
- package/lib/commonjs/Time/timeUtils.js.map +1 -1
- package/lib/module/Date/DatePickerInput.js +12 -3
- package/lib/module/Date/DatePickerInput.js.map +1 -1
- package/lib/module/Date/DatePickerInput.shared.js.map +1 -1
- package/lib/module/Date/DatePickerInputWithoutModal.js +21 -11
- package/lib/module/Date/DatePickerInputWithoutModal.js.map +1 -1
- package/lib/module/Date/inputUtils.js +12 -4
- package/lib/module/Date/inputUtils.js.map +1 -1
- package/lib/module/TextInputMask.js +4 -0
- package/lib/module/TextInputMask.js.map +1 -1
- package/lib/module/Time/AnalogClock.js +1 -1
- package/lib/module/Time/AnalogClock.js.map +1 -1
- package/lib/module/Time/AnalogClockHours.js +1 -1
- package/lib/module/Time/AnalogClockHours.js.map +1 -1
- package/lib/module/Time/timeUtils.js +9 -5
- package/lib/module/Time/timeUtils.js.map +1 -1
- package/lib/typescript/Date/DatePickerInput.d.ts +1 -1
- package/lib/typescript/Date/DatePickerInput.shared.d.ts +8 -0
- package/lib/typescript/Date/DatePickerInputWithoutModal.d.ts +13 -1
- package/lib/typescript/Date/inputUtils.d.ts +2 -1
- package/package.json +1 -1
- package/src/Date/DatePickerInput.shared.tsx +8 -0
- package/src/Date/DatePickerInput.tsx +16 -1
- package/src/Date/DatePickerInputWithoutModal.tsx +36 -11
- package/src/Date/inputUtils.ts +16 -9
- package/src/TextInputMask.tsx +4 -0
- package/src/Time/AnalogClock.tsx +1 -1
- package/src/Time/AnalogClockHours.tsx +1 -1
- package/src/Time/timeUtils.ts +7 -4
|
@@ -51,14 +51,19 @@ function DatePickerInput(_ref, ref) {
|
|
|
51
51
|
style: styles.calendarButton,
|
|
52
52
|
icon: calendarIcon,
|
|
53
53
|
onPress: () => setVisible(true)
|
|
54
|
-
}) : null
|
|
54
|
+
}) : null // eslint-disable-next-line react/no-unstable-nested-components
|
|
55
|
+
,
|
|
55
56
|
modal: _ref3 => {
|
|
56
57
|
let {
|
|
57
58
|
value,
|
|
58
59
|
locale,
|
|
59
60
|
inputMode,
|
|
60
61
|
validRange,
|
|
61
|
-
saveLabel
|
|
62
|
+
saveLabel,
|
|
63
|
+
saveLabelDisabled,
|
|
64
|
+
uppercase,
|
|
65
|
+
startYear,
|
|
66
|
+
endYear
|
|
62
67
|
} = _ref3;
|
|
63
68
|
return withModal ? /*#__PURE__*/React.createElement(_DatePickerModal.default, {
|
|
64
69
|
date: value,
|
|
@@ -69,7 +74,11 @@ function DatePickerInput(_ref, ref) {
|
|
|
69
74
|
locale: locale,
|
|
70
75
|
dateMode: inputMode,
|
|
71
76
|
validRange: validRange,
|
|
72
|
-
saveLabel: saveLabel
|
|
77
|
+
saveLabel: saveLabel,
|
|
78
|
+
saveLabelDisabled: saveLabelDisabled ?? false,
|
|
79
|
+
uppercase: uppercase ?? true,
|
|
80
|
+
startYear: startYear ?? 1800,
|
|
81
|
+
endYear: endYear ?? 2200
|
|
73
82
|
}) : null;
|
|
74
83
|
}
|
|
75
84
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DatePickerInput","ref","withModal","calendarIcon","rest","visible","setVisible","React","useState","onDismiss","useCallback","onChangeRef","useLatest","onChange","onInnerConfirm","date","current","styles","calendarButton","value","locale","inputMode","validRange","saveLabel","StyleSheet","create","position","right","zIndex","forwardRef"],"sources":["DatePickerInput.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { IconButton } from 'react-native-paper'\nimport { StyleSheet } from 'react-native'\nimport DatePickerModal from './DatePickerModal'\nimport { useLatest } from '../utils'\nimport type { DatePickerInputProps } from './DatePickerInput.shared'\nimport DatePickerInputWithoutModal from './DatePickerInputWithoutModal'\n\nfunction DatePickerInput(\n {\n withModal = true,\n calendarIcon = 'calendar',\n ...rest\n }: DatePickerInputProps,\n ref: any\n) {\n const [visible, setVisible] = React.useState<boolean>(false)\n const onDismiss = React.useCallback(() => {\n setVisible(false)\n }, [setVisible])\n const onChangeRef = useLatest(rest.onChange)\n const onInnerConfirm = React.useCallback(\n ({ date }: any) => {\n setVisible(false)\n onChangeRef.current(date)\n },\n [setVisible, onChangeRef]\n )\n\n return (\n <DatePickerInputWithoutModal\n ref={ref}\n {...rest}\n inputButtons={\n withModal ? (\n <IconButton\n size={24}\n style={styles.calendarButton}\n icon={calendarIcon}\n onPress={() => setVisible(true)}\n />\n ) : null\n }\n modal={({
|
|
1
|
+
{"version":3,"names":["DatePickerInput","ref","withModal","calendarIcon","rest","visible","setVisible","React","useState","onDismiss","useCallback","onChangeRef","useLatest","onChange","onInnerConfirm","date","current","styles","calendarButton","value","locale","inputMode","validRange","saveLabel","saveLabelDisabled","uppercase","startYear","endYear","StyleSheet","create","position","right","zIndex","forwardRef"],"sources":["DatePickerInput.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { IconButton } from 'react-native-paper'\nimport { StyleSheet } from 'react-native'\nimport DatePickerModal from './DatePickerModal'\nimport { useLatest } from '../utils'\nimport type { DatePickerInputProps } from './DatePickerInput.shared'\nimport DatePickerInputWithoutModal from './DatePickerInputWithoutModal'\n\nfunction DatePickerInput(\n {\n withModal = true,\n calendarIcon = 'calendar',\n ...rest\n }: DatePickerInputProps,\n ref: any\n) {\n const [visible, setVisible] = React.useState<boolean>(false)\n const onDismiss = React.useCallback(() => {\n setVisible(false)\n }, [setVisible])\n const onChangeRef = useLatest(rest.onChange)\n const onInnerConfirm = React.useCallback(\n ({ date }: any) => {\n setVisible(false)\n onChangeRef.current(date)\n },\n [setVisible, onChangeRef]\n )\n\n return (\n <DatePickerInputWithoutModal\n ref={ref}\n {...rest}\n inputButtons={\n withModal ? (\n <IconButton\n size={24}\n style={styles.calendarButton}\n icon={calendarIcon}\n onPress={() => setVisible(true)}\n />\n ) : null\n }\n // eslint-disable-next-line react/no-unstable-nested-components\n modal={({\n value,\n locale,\n inputMode,\n validRange,\n saveLabel,\n saveLabelDisabled,\n uppercase,\n startYear,\n endYear,\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 validRange={validRange}\n saveLabel={saveLabel}\n saveLabelDisabled={saveLabelDisabled ?? false}\n uppercase={uppercase ?? true}\n startYear={startYear ?? 1800}\n endYear={endYear ?? 2200}\n />\n ) : null\n }\n />\n )\n}\n\nconst styles = StyleSheet.create({\n calendarButton: { position: 'absolute', right: 0, zIndex: 10 },\n})\n\nexport default React.forwardRef(DatePickerInput)\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,SAASA,eAAT,OAMEC,GANF,EAOE;EAAA,IANA;IACEC,SAAS,GAAG,IADd;IAEEC,YAAY,GAAG,UAFjB;IAGE,GAAGC;EAHL,CAMA;EACA,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBC,KAAK,CAACC,QAAN,CAAwB,KAAxB,CAA9B;EACA,MAAMC,SAAS,GAAGF,KAAK,CAACG,WAAN,CAAkB,MAAM;IACxCJ,UAAU,CAAC,KAAD,CAAV;EACD,CAFiB,EAEf,CAACA,UAAD,CAFe,CAAlB;EAGA,MAAMK,WAAW,GAAG,IAAAC,gBAAA,EAAUR,IAAI,CAACS,QAAf,CAApB;EACA,MAAMC,cAAc,GAAGP,KAAK,CAACG,WAAN,CACrB,SAAmB;IAAA,IAAlB;MAAEK;IAAF,CAAkB;IACjBT,UAAU,CAAC,KAAD,CAAV;IACAK,WAAW,CAACK,OAAZ,CAAoBD,IAApB;EACD,CAJoB,EAKrB,CAACT,UAAD,EAAaK,WAAb,CALqB,CAAvB;EAQA,oBACE,oBAAC,oCAAD;IACE,GAAG,EAAEV;EADP,GAEMG,IAFN;IAGE,YAAY,EACVF,SAAS,gBACP,oBAAC,4BAAD;MACE,IAAI,EAAE,EADR;MAEE,KAAK,EAAEe,MAAM,CAACC,cAFhB;MAGE,IAAI,EAAEf,YAHR;MAIE,OAAO,EAAE,MAAMG,UAAU,CAAC,IAAD;IAJ3B,EADO,GAOL,IAXR,CAaE;IAbF;IAcE,KAAK,EAAE;MAAA,IAAC;QACNa,KADM;QAENC,MAFM;QAGNC,SAHM;QAINC,UAJM;QAKNC,SALM;QAMNC,iBANM;QAONC,SAPM;QAQNC,SARM;QASNC;MATM,CAAD;MAAA,OAWLzB,SAAS,gBACP,oBAAC,wBAAD;QACE,IAAI,EAAEiB,KADR;QAEE,IAAI,EAAC,QAFP;QAGE,OAAO,EAAEd,OAHX;QAIE,SAAS,EAAEI,SAJb;QAKE,SAAS,EAAEK,cALb;QAME,MAAM,EAAEM,MANV;QAOE,QAAQ,EAAEC,SAPZ;QAQE,UAAU,EAAEC,UARd;QASE,SAAS,EAAEC,SATb;QAUE,iBAAiB,EAAEC,iBAAiB,IAAI,KAV1C;QAWE,SAAS,EAAEC,SAAS,IAAI,IAX1B;QAYE,SAAS,EAAEC,SAAS,IAAI,IAZ1B;QAaE,OAAO,EAAEC,OAAO,IAAI;MAbtB,EADO,GAgBL,IA3BC;IAAA;EAdT,GADF;AA8CD;;AAED,MAAMV,MAAM,GAAGW,uBAAA,CAAWC,MAAX,CAAkB;EAC/BX,cAAc,EAAE;IAAEY,QAAQ,EAAE,UAAZ;IAAwBC,KAAK,EAAE,CAA/B;IAAkCC,MAAM,EAAE;EAA1C;AADe,CAAlB,CAAf;;4BAIezB,KAAK,CAAC0B,UAAN,CAAiBjC,eAAjB,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["DatePickerInput.shared.tsx"],"sourcesContent":["import type { ValidRangeType } from './Calendar'\nimport type * as React from 'react'\nimport type { TextInput } from 'react-native-paper'\n\nexport type DatePickerInputProps = {\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 calendarIcon?: string\n saveLabel?: string\n} & Omit<\n React.ComponentProps<typeof TextInput>,\n 'value' | 'onChange' | 'onChangeText'\n>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["DatePickerInput.shared.tsx"],"sourcesContent":["import type { ValidRangeType } from './Calendar'\nimport type * as React from 'react'\nimport type { TextInput } from 'react-native-paper'\n\nexport type DatePickerInputProps = {\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 hideValidationErrors?: boolean\n hasError?: boolean\n onValidationError?: ((error: string | null) => void) | undefined\n calendarIcon?: string\n saveLabel?: string\n saveLabelDisabled?: boolean\n uppercase?: boolean\n startYear?: number\n endYear?: number\n onChangeText?: (text: string | undefined) => void\n} & Omit<\n React.ComponentProps<typeof TextInput>,\n 'value' | 'onChange' | 'onChangeText'\n>\n"],"mappings":""}
|
|
@@ -33,23 +33,32 @@ function DatePickerInputWithoutModal(_ref, ref) {
|
|
|
33
33
|
validRange,
|
|
34
34
|
inputMode,
|
|
35
35
|
withDateFormatInLabel = true,
|
|
36
|
+
hasError,
|
|
37
|
+
hideValidationErrors,
|
|
38
|
+
onValidationError,
|
|
36
39
|
modal,
|
|
37
40
|
inputButtons,
|
|
38
41
|
saveLabel,
|
|
42
|
+
saveLabelDisabled,
|
|
43
|
+
uppercase,
|
|
44
|
+
startYear,
|
|
45
|
+
endYear,
|
|
46
|
+
onChangeText,
|
|
39
47
|
...rest
|
|
40
48
|
} = _ref;
|
|
41
49
|
const theme = (0, _reactNativePaper.useTheme)();
|
|
42
50
|
const {
|
|
43
51
|
formattedValue,
|
|
44
52
|
inputFormat,
|
|
45
|
-
onChangeText,
|
|
53
|
+
onChangeText: onDateInputChangeText,
|
|
46
54
|
error
|
|
47
55
|
} = (0, _inputUtils.default)({
|
|
48
56
|
locale,
|
|
49
57
|
value,
|
|
50
58
|
validRange,
|
|
51
59
|
inputMode,
|
|
52
|
-
onChange
|
|
60
|
+
onChange,
|
|
61
|
+
onValidationError
|
|
53
62
|
});
|
|
54
63
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
55
64
|
style: styles.root
|
|
@@ -64,15 +73,14 @@ function DatePickerInputWithoutModal(_ref, ref) {
|
|
|
64
73
|
withDateFormatInLabel
|
|
65
74
|
}),
|
|
66
75
|
value: formattedValue,
|
|
67
|
-
keyboardType: 'number-pad',
|
|
68
|
-
placeholder: inputFormat,
|
|
76
|
+
keyboardType: rest.keyboardType ?? 'number-pad',
|
|
69
77
|
mask: inputFormat,
|
|
70
|
-
onChangeText:
|
|
78
|
+
onChangeText: onDateInputChangeText,
|
|
79
|
+
onChange: e => onChangeText && onChangeText(e.nativeEvent.text),
|
|
71
80
|
keyboardAppearance: theme.dark ? 'dark' : 'default',
|
|
72
|
-
error: !!error,
|
|
81
|
+
error: !!error && !hideValidationErrors || !!hasError,
|
|
73
82
|
style: [styles.input, style]
|
|
74
|
-
})), inputButtons), error ? /*#__PURE__*/React.createElement(_reactNativePaper.HelperText, {
|
|
75
|
-
style: styles.helperText,
|
|
83
|
+
})), inputButtons), error && !hideValidationErrors ? /*#__PURE__*/React.createElement(_reactNativePaper.HelperText, {
|
|
76
84
|
type: "error",
|
|
77
85
|
visible: !!error
|
|
78
86
|
}, error) : null), modal === null || modal === void 0 ? void 0 : modal({
|
|
@@ -80,7 +88,11 @@ function DatePickerInputWithoutModal(_ref, ref) {
|
|
|
80
88
|
locale,
|
|
81
89
|
inputMode,
|
|
82
90
|
validRange,
|
|
83
|
-
saveLabel
|
|
91
|
+
saveLabel,
|
|
92
|
+
saveLabelDisabled,
|
|
93
|
+
uppercase,
|
|
94
|
+
startYear,
|
|
95
|
+
endYear
|
|
84
96
|
}));
|
|
85
97
|
}
|
|
86
98
|
|
|
@@ -110,8 +122,6 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
110
122
|
},
|
|
111
123
|
input: {
|
|
112
124
|
flexGrow: 1
|
|
113
|
-
},
|
|
114
|
-
helperText: {// flex: 1,
|
|
115
125
|
}
|
|
116
126
|
});
|
|
117
127
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DatePickerInputWithoutModal","ref","label","value","onChange","style","locale","validRange","inputMode","withDateFormatInLabel","modal","inputButtons","saveLabel","rest","theme","useTheme","formattedValue","inputFormat","
|
|
1
|
+
{"version":3,"names":["DatePickerInputWithoutModal","ref","label","value","onChange","style","locale","validRange","inputMode","withDateFormatInLabel","hasError","hideValidationErrors","onValidationError","modal","inputButtons","saveLabel","saveLabelDisabled","uppercase","startYear","endYear","onChangeText","rest","theme","useTheme","formattedValue","inputFormat","onDateInputChangeText","error","useDateInput","styles","root","inputContainer","getLabel","keyboardType","e","nativeEvent","text","dark","input","StyleSheet","create","flexGrow","flexDirection","alignItems","justifyContent","React","forwardRef"],"sources":["DatePickerInputWithoutModal.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport TextInputWithMask from '../TextInputMask'\nimport { HelperText, useTheme } from 'react-native-paper'\nimport { View, StyleSheet } from 'react-native'\nimport useDateInput from './inputUtils'\nimport type { DatePickerInputProps } from './DatePickerInput.shared'\n\nfunction DatePickerInputWithoutModal(\n {\n label,\n value,\n onChange,\n style,\n locale,\n validRange,\n inputMode,\n withDateFormatInLabel = true,\n hasError,\n hideValidationErrors,\n onValidationError,\n modal,\n inputButtons,\n saveLabel,\n saveLabelDisabled,\n uppercase,\n startYear,\n endYear,\n onChangeText,\n ...rest\n }: DatePickerInputProps & {\n modal?: (params: {\n value: DatePickerInputProps['value']\n locale: DatePickerInputProps['locale']\n inputMode: DatePickerInputProps['inputMode']\n validRange: DatePickerInputProps['validRange']\n saveLabel: DatePickerInputProps['saveLabel']\n saveLabelDisabled: DatePickerInputProps['saveLabelDisabled']\n uppercase: DatePickerInputProps['uppercase']\n startYear: DatePickerInputProps['startYear']\n endYear: DatePickerInputProps['endYear']\n }) => any\n inputButtons?: any\n },\n ref: any\n) {\n const theme = useTheme()\n const {\n formattedValue,\n inputFormat,\n onChangeText: onDateInputChangeText,\n error,\n } = useDateInput({\n locale,\n value,\n validRange,\n inputMode,\n onChange,\n onValidationError,\n })\n\n return (\n <>\n <View style={styles.root}>\n <View style={styles.inputContainer}>\n <TextInputWithMask\n {...rest}\n ref={ref}\n label={getLabel({\n // TODO: support label components?\n label: label as any,\n inputFormat,\n withDateFormatInLabel,\n })}\n value={formattedValue}\n keyboardType={rest.keyboardType ?? 'number-pad'}\n mask={inputFormat}\n onChangeText={onDateInputChangeText}\n onChange={(e) => onChangeText && onChangeText(e.nativeEvent.text)}\n keyboardAppearance={theme.dark ? 'dark' : 'default'}\n error={(!!error && !hideValidationErrors) || !!hasError}\n style={[styles.input, style]}\n />\n {inputButtons}\n </View>\n {error && !hideValidationErrors ? (\n <HelperText type=\"error\" visible={!!error}>\n {error}\n </HelperText>\n ) : null}\n </View>\n {modal?.({\n value,\n locale,\n inputMode,\n validRange,\n saveLabel,\n saveLabelDisabled,\n uppercase,\n startYear,\n endYear,\n })}\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 flexGrow: 1,\n },\n inputContainer: {\n flexGrow: 1,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n input: {\n flexGrow: 1,\n },\n})\nexport default React.forwardRef(DatePickerInputWithoutModal)\n"],"mappings":"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"}
|
|
@@ -21,7 +21,8 @@ function useDateInput(_ref) {
|
|
|
21
21
|
value,
|
|
22
22
|
validRange,
|
|
23
23
|
inputMode,
|
|
24
|
-
onChange
|
|
24
|
+
onChange,
|
|
25
|
+
onValidationError
|
|
25
26
|
} = _ref;
|
|
26
27
|
const {
|
|
27
28
|
isDisabled,
|
|
@@ -37,7 +38,7 @@ function useDateInput(_ref) {
|
|
|
37
38
|
formatter,
|
|
38
39
|
locale
|
|
39
40
|
});
|
|
40
|
-
const formattedValue = value
|
|
41
|
+
const formattedValue = value ? formatter.format(value) : '';
|
|
41
42
|
|
|
42
43
|
const onChangeText = date => {
|
|
43
44
|
const dayIndex = inputFormat.indexOf('DD');
|
|
@@ -48,24 +49,31 @@ function useDateInput(_ref) {
|
|
|
48
49
|
const month = Number(date.slice(monthIndex, monthIndex + 2));
|
|
49
50
|
|
|
50
51
|
if (Number.isNaN(day) || Number.isNaN(year) || Number.isNaN(month)) {
|
|
51
|
-
|
|
52
|
+
const inputError = (0, _utils.getTranslation)(locale, 'notAccordingToDateFormat', () => 'notAccordingToDateFormat')(inputFormat);
|
|
53
|
+
setError(inputError);
|
|
54
|
+
onValidationError && onValidationError(inputError);
|
|
52
55
|
return;
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
const finalDate = inputMode === 'end' ? new Date(year, month - 1, day, 23, 59, 59) : new Date(year, month - 1, day);
|
|
56
59
|
|
|
57
60
|
if (isDisabled(finalDate)) {
|
|
58
|
-
|
|
61
|
+
const inputError = (0, _utils.getTranslation)(locale, 'dateIsDisabled');
|
|
62
|
+
setError(inputError);
|
|
63
|
+
onValidationError && onValidationError(inputError);
|
|
59
64
|
return;
|
|
60
65
|
}
|
|
61
66
|
|
|
62
67
|
if (!isWithinValidRange(finalDate)) {
|
|
63
68
|
let errors = validStart && validEnd ? [`${(0, _utils.getTranslation)(locale, 'mustBeBetween', () => 'mustBeBetween')(formatter.format(validStart), formatter.format(validEnd))}`] : [validStart ? (0, _utils.getTranslation)(locale, 'mustBeHigherThan', () => 'mustBeHigherThan')(formatter.format(validStart)) : '', validEnd ? (0, _utils.getTranslation)(locale, 'mustBeLowerThan', () => 'mustBeLowerThan')(formatter.format(validEnd)) : ''];
|
|
69
|
+
const inputError = errors.filter(n => n).join(' ');
|
|
64
70
|
setError(errors.filter(n => n).join(' '));
|
|
71
|
+
onValidationError && onValidationError(inputError);
|
|
65
72
|
return;
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
setError(null);
|
|
76
|
+
onValidationError && onValidationError(null);
|
|
69
77
|
|
|
70
78
|
if (inputMode === 'end') {
|
|
71
79
|
onChange(finalDate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDateInput","locale","value","validRange","inputMode","onChange","isDisabled","isWithinValidRange","validStart","validEnd","useRangeChecker","error","setError","React","useState","formatter","useInputFormatter","inputFormat","useInputFormat","formattedValue","format","onChangeText","date","dayIndex","indexOf","monthIndex","yearIndex","day","Number","slice","year","month","isNaN","getTranslation","finalDate","Date","errors","filter","n","join"],"sources":["inputUtils.ts"],"sourcesContent":["import { useInputFormat, useInputFormatter, useRangeChecker } from './dateUtils'\nimport * as React from 'react'\nimport type { ValidRangeType } from './Calendar'\nimport { getTranslation } from '../translations/utils'\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, locale })\n const formattedValue = value
|
|
1
|
+
{"version":3,"names":["useDateInput","locale","value","validRange","inputMode","onChange","onValidationError","isDisabled","isWithinValidRange","validStart","validEnd","useRangeChecker","error","setError","React","useState","formatter","useInputFormatter","inputFormat","useInputFormat","formattedValue","format","onChangeText","date","dayIndex","indexOf","monthIndex","yearIndex","day","Number","slice","year","month","isNaN","inputError","getTranslation","finalDate","Date","errors","filter","n","join"],"sources":["inputUtils.ts"],"sourcesContent":["import { useInputFormat, useInputFormatter, useRangeChecker } from './dateUtils'\nimport * as React from 'react'\nimport type { ValidRangeType } from './Calendar'\nimport { getTranslation } from '../translations/utils'\n\nexport default function useDateInput({\n locale,\n value,\n validRange,\n inputMode,\n onChange,\n onValidationError,\n}: {\n onChange: (d: Date) => void\n locale: undefined | string\n value: Date | undefined\n validRange: ValidRangeType | undefined\n inputMode: 'start' | 'end'\n onValidationError?: ((error: string | null) => void) | undefined\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, locale })\n const formattedValue = value ? formatter.format(value) : ''\n const onChangeText = (date: string) => {\n const dayIndex = inputFormat.indexOf('DD')\n const monthIndex = inputFormat.indexOf('MM')\n const yearIndex =\n locale === 'pt'\n ? inputFormat.indexOf('AAAA')\n : 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 const inputError = getTranslation(\n locale,\n 'notAccordingToDateFormat',\n () => 'notAccordingToDateFormat'\n )(inputFormat)\n setError(inputError)\n onValidationError && onValidationError(inputError)\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 const inputError = getTranslation(locale, 'dateIsDisabled')\n setError(inputError)\n onValidationError && onValidationError(inputError)\n return\n }\n if (!isWithinValidRange(finalDate)) {\n let errors =\n validStart && validEnd\n ? [\n `${getTranslation(\n locale,\n 'mustBeBetween',\n () => 'mustBeBetween'\n )(formatter.format(validStart), formatter.format(validEnd))}`,\n ]\n : [\n validStart\n ? getTranslation(\n locale,\n 'mustBeHigherThan',\n () => 'mustBeHigherThan'\n )(formatter.format(validStart))\n : '',\n validEnd\n ? getTranslation(\n locale,\n 'mustBeLowerThan',\n () => 'mustBeLowerThan'\n )(formatter.format(validEnd))\n : '',\n ]\n const inputError = errors.filter((n) => n).join(' ')\n setError(errors.filter((n) => n).join(' '))\n onValidationError && onValidationError(inputError)\n return\n }\n\n setError(null)\n onValidationError && onValidationError(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"],"mappings":"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"}
|
|
@@ -70,6 +70,7 @@ function enhanceTextWithMask(text, mask, previousValue) {
|
|
|
70
70
|
function TextInputWithMask(_ref, ref) {
|
|
71
71
|
let {
|
|
72
72
|
onChangeText,
|
|
73
|
+
onChange,
|
|
73
74
|
value,
|
|
74
75
|
mask,
|
|
75
76
|
...rest
|
|
@@ -97,6 +98,9 @@ function TextInputWithMask(_ref, ref) {
|
|
|
97
98
|
}, rest, {
|
|
98
99
|
value: controlledValue,
|
|
99
100
|
onChangeText: onInnerChange,
|
|
101
|
+
onChange: e => {
|
|
102
|
+
onChange && onChange(e);
|
|
103
|
+
},
|
|
100
104
|
onBlur: onInnerBlur
|
|
101
105
|
}));
|
|
102
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["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","React","useState","onInnerChange","onInnerBlur","enhancedText","useEffect","forwardRef"],"sources":["TextInputMask.tsx"],"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; value: string },\n ref: any\n) {\n const [controlledValue, setControlledValue] = React.useState<string>(\n value || ''\n )\n\n const onInnerChange = (text: string) => {\n if (text.length === mask.length) {\n onChangeText && onChangeText(text)\n }\n setControlledValue(text)\n }\n\n const onInnerBlur = () => {\n const enhancedText = enhanceTextWithMask(value, mask, controlledValue)\n setControlledValue(enhancedText)\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 onBlur={onInnerBlur}\n />\n )\n}\n\nexport default React.forwardRef(TextInputWithMask)\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEA,MAAMA,eAAe,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,CAAxB;;AACA,SAASC,eAAT,CAAyBC,IAAzB,EAA+C;EAC7C,MAAMC,CAAC,GAAGH,eAAe,CAACI,IAAhB,CAAsBC,EAAD,IAAQH,IAAI,CAACI,QAAL,CAAcD,EAAd,CAA7B,CAAV;EACA,OAAOF,CAAC,IAAI,EAAZ;AACD;;AAED,SAASI,mBAAT,CACEC,IADF,EAEEN,IAFF,EAGEO,aAHF,EAIU;EACR,MAAMC,WAAW,GAAGD,aAAa,CAACE,MAAd,GAAuBH,IAAI,CAACG,MAAhD;EACA,MAAMC,cAAc,GAAGX,eAAe,CAACC,IAAD,CAAtC;EAEA,MAAMW,SAAS,GAAGX,IAAI,CAACY,KAAL,CAAWF,cAAX,CAAlB;EACA,MAAMG,SAAS,GAAGP,IAAI,CAACM,KAAL,CAAWF,cAAX,CAAlB;EAEA,IAAII,WAAqB,GAAG,EAA5B;;EACA,KAAK,IAAIC,aAAa,GAAG,CAAzB,EAA4BA,aAAa,GAAGf,IAAI,CAACS,MAAjD,EAAyDM,aAAa,EAAtE,EAA0E;IACxE,IAAIC,UAAoB,GAAG,EAA3B;IAEA,MAAMC,QAAQ,GAAGN,SAAS,CAACI,aAAD,CAA1B;IACA,MAAMG,QAAQ,GAAGL,SAAS,CAACE,aAAD,CAA1B;;IACA,IAAI,CAACG,QAAL,EAAe;MACb;IACD;;IAED,KACE,IAAIC,cAAc,GAAG,CADvB,EAEEA,cAAc,GAAGF,QAAQ,CAACR,MAF5B,EAGEU,cAAc,EAHhB,EAIE;MACA,MAAMC,gBAAgB,GAAGF,QAAQ,CAACC,cAAD,CAAjC;;MAEA,IAAIX,WAAW,IAAIY,gBAAgB,KAAKC,SAAxC,EAAmD;QACjD;MACD;;MAED,MAAMC,SAAS,GAAGJ,QAAQ,CAACC,cAAD,CAA1B;;MAEA,IAAIG,SAAS,KAAKD,SAAlB,EAA6B;QAC3BL,UAAU,CAACO,IAAX,CAAgBD,SAAhB;MACD;IACF;;IAEDR,WAAW,CAACS,IAAZ,CAAiBP,UAAU,CAACQ,IAAX,CAAgB,EAAhB,CAAjB;EACD;;EAED,MAAMC,QAAQ,GAAGX,WAAW,CAACA,WAAW,CAACL,MAAZ,GAAqB,CAAtB,CAA5B;EACA,MAAMiB,YAAY,GAAGf,SAAS,CAACG,WAAW,CAACL,MAAZ,GAAqB,CAAtB,CAA9B;;EACA,KACE;EACAK,WAAW,CAACL,MAAZ,KAAuBE,SAAS,CAACF,MAAjC,IACA;EACAgB,QAFA,IAGAC,YAHA,IAIAD,QAAQ,CAAChB,MAAT,KAAoBiB,YAAY,CAACjB,MANnC,EAOE;IACA,OACEK,WAAW,CAACU,IAAZ,CAAiBd,cAAjB,KAAoCF,WAAW,GAAG,EAAH,GAAQE,cAAvD,CADF;EAGD;;EACD,OAAOI,WAAW,CAACU,IAAZ,CAAiBd,cAAjB,CAAP;AACD;;AAED,SAASiB,iBAAT,
|
|
1
|
+
{"version":3,"names":["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","onChange","value","rest","controlledValue","setControlledValue","React","useState","onInnerChange","onInnerBlur","enhancedText","useEffect","e","forwardRef"],"sources":["TextInputMask.tsx"],"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 onChange,\n value,\n mask,\n ...rest\n }: React.ComponentProps<typeof TextInput> & { mask: string; value: string },\n ref: any\n) {\n const [controlledValue, setControlledValue] = React.useState<string>(\n value || ''\n )\n\n const onInnerChange = (text: string) => {\n if (text.length === mask.length) {\n onChangeText && onChangeText(text)\n }\n setControlledValue(text)\n }\n\n const onInnerBlur = () => {\n const enhancedText = enhanceTextWithMask(value, mask, controlledValue)\n setControlledValue(enhancedText)\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 onChange={(e) => {\n onChange && onChange(e)\n }}\n onBlur={onInnerBlur}\n />\n )\n}\n\nexport default React.forwardRef(TextInputWithMask)\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEA,MAAMA,eAAe,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,CAAxB;;AACA,SAASC,eAAT,CAAyBC,IAAzB,EAA+C;EAC7C,MAAMC,CAAC,GAAGH,eAAe,CAACI,IAAhB,CAAsBC,EAAD,IAAQH,IAAI,CAACI,QAAL,CAAcD,EAAd,CAA7B,CAAV;EACA,OAAOF,CAAC,IAAI,EAAZ;AACD;;AAED,SAASI,mBAAT,CACEC,IADF,EAEEN,IAFF,EAGEO,aAHF,EAIU;EACR,MAAMC,WAAW,GAAGD,aAAa,CAACE,MAAd,GAAuBH,IAAI,CAACG,MAAhD;EACA,MAAMC,cAAc,GAAGX,eAAe,CAACC,IAAD,CAAtC;EAEA,MAAMW,SAAS,GAAGX,IAAI,CAACY,KAAL,CAAWF,cAAX,CAAlB;EACA,MAAMG,SAAS,GAAGP,IAAI,CAACM,KAAL,CAAWF,cAAX,CAAlB;EAEA,IAAII,WAAqB,GAAG,EAA5B;;EACA,KAAK,IAAIC,aAAa,GAAG,CAAzB,EAA4BA,aAAa,GAAGf,IAAI,CAACS,MAAjD,EAAyDM,aAAa,EAAtE,EAA0E;IACxE,IAAIC,UAAoB,GAAG,EAA3B;IAEA,MAAMC,QAAQ,GAAGN,SAAS,CAACI,aAAD,CAA1B;IACA,MAAMG,QAAQ,GAAGL,SAAS,CAACE,aAAD,CAA1B;;IACA,IAAI,CAACG,QAAL,EAAe;MACb;IACD;;IAED,KACE,IAAIC,cAAc,GAAG,CADvB,EAEEA,cAAc,GAAGF,QAAQ,CAACR,MAF5B,EAGEU,cAAc,EAHhB,EAIE;MACA,MAAMC,gBAAgB,GAAGF,QAAQ,CAACC,cAAD,CAAjC;;MAEA,IAAIX,WAAW,IAAIY,gBAAgB,KAAKC,SAAxC,EAAmD;QACjD;MACD;;MAED,MAAMC,SAAS,GAAGJ,QAAQ,CAACC,cAAD,CAA1B;;MAEA,IAAIG,SAAS,KAAKD,SAAlB,EAA6B;QAC3BL,UAAU,CAACO,IAAX,CAAgBD,SAAhB;MACD;IACF;;IAEDR,WAAW,CAACS,IAAZ,CAAiBP,UAAU,CAACQ,IAAX,CAAgB,EAAhB,CAAjB;EACD;;EAED,MAAMC,QAAQ,GAAGX,WAAW,CAACA,WAAW,CAACL,MAAZ,GAAqB,CAAtB,CAA5B;EACA,MAAMiB,YAAY,GAAGf,SAAS,CAACG,WAAW,CAACL,MAAZ,GAAqB,CAAtB,CAA9B;;EACA,KACE;EACAK,WAAW,CAACL,MAAZ,KAAuBE,SAAS,CAACF,MAAjC,IACA;EACAgB,QAFA,IAGAC,YAHA,IAIAD,QAAQ,CAAChB,MAAT,KAAoBiB,YAAY,CAACjB,MANnC,EAOE;IACA,OACEK,WAAW,CAACU,IAAZ,CAAiBd,cAAjB,KAAoCF,WAAW,GAAG,EAAH,GAAQE,cAAvD,CADF;EAGD;;EACD,OAAOI,WAAW,CAACU,IAAZ,CAAiBd,cAAjB,CAAP;AACD;;AAED,SAASiB,iBAAT,OAQEC,GARF,EASE;EAAA,IARA;IACEC,YADF;IAEEC,QAFF;IAGEC,KAHF;IAIE/B,IAJF;IAKE,GAAGgC;EALL,CAQA;EACA,MAAM,CAACC,eAAD,EAAkBC,kBAAlB,IAAwCC,KAAK,CAACC,QAAN,CAC5CL,KAAK,IAAI,EADmC,CAA9C;;EAIA,MAAMM,aAAa,GAAI/B,IAAD,IAAkB;IACtC,IAAIA,IAAI,CAACG,MAAL,KAAgBT,IAAI,CAACS,MAAzB,EAAiC;MAC/BoB,YAAY,IAAIA,YAAY,CAACvB,IAAD,CAA5B;IACD;;IACD4B,kBAAkB,CAAC5B,IAAD,CAAlB;EACD,CALD;;EAOA,MAAMgC,WAAW,GAAG,MAAM;IACxB,MAAMC,YAAY,GAAGlC,mBAAmB,CAAC0B,KAAD,EAAQ/B,IAAR,EAAciC,eAAd,CAAxC;IACAC,kBAAkB,CAACK,YAAD,CAAlB;EACD,CAHD;;EAKAJ,KAAK,CAACK,SAAN,CAAgB,MAAM;IACpBN,kBAAkB,CAACH,KAAK,IAAI,EAAV,CAAlB;EACD,CAFD,EAEG,CAACA,KAAD,CAFH;EAIA,oBACE,oBAAC,2BAAD;IACE,GAAG,EAAEH;EADP,GAEMI,IAFN;IAGE,KAAK,EAAEC,eAHT;IAIE,YAAY,EAAEI,aAJhB;IAKE,QAAQ,EAAGI,CAAD,IAAO;MACfX,QAAQ,IAAIA,QAAQ,CAACW,CAAD,CAApB;IACD,CAPH;IAQE,MAAM,EAAEH;EARV,GADF;AAYD;;4BAEcH,KAAK,CAACO,UAAN,CAAiBf,iBAAjB,C"}
|
|
@@ -65,7 +65,7 @@ function AnalogClock(_ref) {
|
|
|
65
65
|
let hours24 = is24HourRef.current;
|
|
66
66
|
let previousHourType = (0, _timeUtils.getHourType)(hoursRef.current);
|
|
67
67
|
let pickedHours = (0, _timeUtils.getHours)(angle, previousHourType);
|
|
68
|
-
let hours12AndPm = !hours24 && modeRef.current === '
|
|
68
|
+
let hours12AndPm = !hours24 && modeRef.current === 'PM';
|
|
69
69
|
let hourTypeFromOffset = (0, _timeUtils.getHourTypeFromOffset)(x, y, _timeUtils.circleSize);
|
|
70
70
|
let hours24AndPM = hours24 && hourTypeFromOffset === _timeUtils.hourTypes.pm; // Avoiding the "24h"
|
|
71
71
|
// Should be 12h for 12 hours and PM mode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AnalogClock","hours","minutes","focused","is24Hour","onChange","theme","useTheme","mode","React","useContext","DisplayModeContext","shortPointer","clockRef","useRef","hoursRef","useLatest","onChangeRef","minutesRef","focusedRef","is24HourRef","modeRef","onPointerMove","useCallback","e","final","x","nativeEvent","locationX","y","locationY","angle","getAngle","circleSize","current","clockTypes","hours24","previousHourType","getHourType","pickedHours","getHours","hours12AndPm","hourTypeFromOffset","getHourTypeFromOffset","hours24AndPM","hourTypes","pm","undefined","pickedMinutes","getMinutes","panResponder","PanResponder","create","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onStartShouldSetPanResponder","returnTrue","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderTerminationRequest","onShouldBlockNativeResponder","dynamicSize","pointerNumber","degreesPerNumber","panHandlers","styles","clock","backgroundColor","isV3","colors","surfaceVariant","dark","Color","surface","lighten","hex","darken","line","primary","transform","rotate","translateX","width","endPoint","StyleSheet","absoluteFill","center","middlePoint","height","position","justifyContent","alignItems","borderRadius","right","bottom","memo"],"sources":["AnalogClock.tsx"],"sourcesContent":["import Color from 'color'\nimport {\n GestureResponderEvent,\n PanResponder,\n StyleSheet,\n View,\n} from 'react-native'\nimport { useTheme } from 'react-native-paper'\nimport {\n circleSize,\n clockTypes,\n getAngle,\n getHours,\n getHourType,\n getHourTypeFromOffset,\n getMinutes,\n hourTypes,\n PossibleClockTypes,\n} from './timeUtils'\nimport * as React from 'react'\nimport { useLatest } from '../utils'\nimport AnalogClockHours from './AnalogClockHours'\nimport AnimatedClockSwitcher from './AnimatedClockSwitcher'\nimport AnalogClockMinutes from './AnalogClockMinutes'\nimport { DisplayModeContext } from './TimePicker'\nfunction AnalogClock({\n hours,\n minutes,\n focused,\n is24Hour,\n onChange,\n}: {\n hours: number\n minutes: number\n focused: PossibleClockTypes\n is24Hour: boolean\n onChange: (hoursMinutesAndFocused: {\n hours: number\n minutes: number\n focused?: undefined | PossibleClockTypes\n }) => any\n}) {\n const theme = useTheme()\n const { mode } = React.useContext(DisplayModeContext)\n // used to make pointer shorter if hours are selected and above 12\n const shortPointer = (hours === 0 || hours > 12) && is24Hour\n const clockRef = React.useRef<View | null>(null)\n // Hooks are nice, sometimes... :-)..\n // We need the latest values, since the onPointerMove uses a closure to the function\n const hoursRef = useLatest(hours)\n const onChangeRef = useLatest(onChange)\n const minutesRef = useLatest(minutes)\n const focusedRef = useLatest(focused)\n const is24HourRef = useLatest(is24Hour)\n const modeRef = useLatest(mode)\n const onPointerMove = React.useCallback(\n (e: GestureResponderEvent, final: boolean) => {\n let x = e.nativeEvent.locationX\n let y = e.nativeEvent.locationY\n let angle = getAngle(x, y, circleSize)\n if (focusedRef.current === clockTypes.hours) {\n let hours24 = is24HourRef.current\n let previousHourType = getHourType(hoursRef.current)\n let pickedHours = getHours(angle, previousHourType)\n\n let hours12AndPm = !hours24 && modeRef.current === 'AM'\n\n let hourTypeFromOffset = getHourTypeFromOffset(x, y, circleSize)\n let hours24AndPM = hours24 && hourTypeFromOffset === hourTypes.pm\n\n // Avoiding the \"24h\"\n // Should be 12h for 12 hours and PM mode\n\n if (hours12AndPm || hours24AndPM) {\n pickedHours += 12\n }\n if (modeRef.current === 'AM' && pickedHours === 12) {\n pickedHours = 0\n }\n\n if (\n (!hours24 && modeRef.current === 'AM' && pickedHours === 12) ||\n pickedHours === 24\n ) {\n pickedHours = 0\n }\n\n if (hoursRef.current !== pickedHours || final) {\n onChangeRef.current({\n hours: pickedHours,\n minutes: minutesRef.current,\n focused: final ? clockTypes.minutes : undefined,\n })\n }\n } else if (focusedRef.current === clockTypes.minutes) {\n let pickedMinutes = getMinutes(angle)\n if (minutesRef.current !== pickedMinutes) {\n onChangeRef.current({\n hours: hoursRef.current,\n minutes: pickedMinutes,\n })\n }\n }\n },\n [focusedRef, is24HourRef, hoursRef, onChangeRef, minutesRef, modeRef]\n )\n const panResponder = React.useRef(\n PanResponder.create({\n onPanResponderGrant: (e) => onPointerMove(e, false),\n onPanResponderMove: (e) => onPointerMove(e, false),\n onPanResponderRelease: (e) => onPointerMove(e, true),\n onStartShouldSetPanResponder: returnTrue,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: returnTrue,\n onMoveShouldSetPanResponderCapture: returnTrue,\n onPanResponderTerminationRequest: returnTrue,\n onShouldBlockNativeResponder: returnTrue,\n })\n ).current\n const dynamicSize = focused === clockTypes.hours && shortPointer ? 33 : 0\n const pointerNumber = focused === clockTypes.hours ? hours : minutes\n const degreesPerNumber = focused === clockTypes.hours ? 30 : 6\n return (\n <View\n ref={clockRef}\n {...panResponder.panHandlers}\n style={[\n styles.clock,\n {\n backgroundColor: theme.isV3\n ? theme.colors.surfaceVariant\n : theme.dark\n ? Color(theme.colors.surface).lighten(1.4).hex()\n : Color(theme.colors.surface).darken(0.1).hex(),\n },\n ]}\n // @ts-ignore -> https://github.com/necolas/react-native-web/issues/506\n cursor={'pointer'}\n >\n <View\n style={[\n styles.line,\n {\n backgroundColor: theme.colors.primary,\n transform: [\n { rotate: -90 + pointerNumber * degreesPerNumber + 'deg' },\n {\n translateX:\n circleSize / 4 -\n (focused === clockTypes.hours &&\n pointerNumber >= 0 &&\n pointerNumber < 13\n ? 0\n : 4) +\n (focused === clockTypes.minutes ? 4 : 0) -\n dynamicSize / 2,\n },\n ],\n width: circleSize / 2 - 4 - dynamicSize,\n },\n ]}\n pointerEvents=\"none\"\n >\n <View\n style={[styles.endPoint, { backgroundColor: theme.colors.primary }]}\n />\n </View>\n <View\n style={[StyleSheet.absoluteFill, styles.center]}\n pointerEvents=\"none\"\n >\n <View\n style={[\n styles.middlePoint,\n {\n backgroundColor: theme.colors.primary,\n },\n ]}\n />\n </View>\n <AnimatedClockSwitcher\n focused={focused}\n hours={<AnalogClockHours is24Hour={is24Hour} hours={hours} />}\n minutes={<AnalogClockMinutes minutes={minutes} />}\n />\n </View>\n )\n}\nconst styles = StyleSheet.create({\n clock: {\n height: circleSize,\n width: circleSize,\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: circleSize / 2,\n },\n middlePoint: {\n borderRadius: 4,\n height: 8,\n width: 8,\n },\n center: { justifyContent: 'center', alignItems: 'center' },\n endPoint: {\n borderRadius: 24,\n height: 48,\n width: 48,\n position: 'absolute',\n right: 0,\n bottom: -23,\n },\n line: {\n position: 'absolute',\n height: 2,\n borderRadius: 4,\n },\n})\nfunction returnTrue() {\n return true\n}\nexport default React.memo(AnalogClock)\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AnalogClock","hours","minutes","focused","is24Hour","onChange","theme","useTheme","mode","React","useContext","DisplayModeContext","shortPointer","clockRef","useRef","hoursRef","useLatest","onChangeRef","minutesRef","focusedRef","is24HourRef","modeRef","onPointerMove","useCallback","e","final","x","nativeEvent","locationX","y","locationY","angle","getAngle","circleSize","current","clockTypes","hours24","previousHourType","getHourType","pickedHours","getHours","hours12AndPm","hourTypeFromOffset","getHourTypeFromOffset","hours24AndPM","hourTypes","pm","undefined","pickedMinutes","getMinutes","panResponder","PanResponder","create","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onStartShouldSetPanResponder","returnTrue","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderTerminationRequest","onShouldBlockNativeResponder","dynamicSize","pointerNumber","degreesPerNumber","panHandlers","styles","clock","backgroundColor","isV3","colors","surfaceVariant","dark","Color","surface","lighten","hex","darken","line","primary","transform","rotate","translateX","width","endPoint","StyleSheet","absoluteFill","center","middlePoint","height","position","justifyContent","alignItems","borderRadius","right","bottom","memo"],"sources":["AnalogClock.tsx"],"sourcesContent":["import Color from 'color'\nimport {\n GestureResponderEvent,\n PanResponder,\n StyleSheet,\n View,\n} from 'react-native'\nimport { useTheme } from 'react-native-paper'\nimport {\n circleSize,\n clockTypes,\n getAngle,\n getHours,\n getHourType,\n getHourTypeFromOffset,\n getMinutes,\n hourTypes,\n PossibleClockTypes,\n} from './timeUtils'\nimport * as React from 'react'\nimport { useLatest } from '../utils'\nimport AnalogClockHours from './AnalogClockHours'\nimport AnimatedClockSwitcher from './AnimatedClockSwitcher'\nimport AnalogClockMinutes from './AnalogClockMinutes'\nimport { DisplayModeContext } from './TimePicker'\nfunction AnalogClock({\n hours,\n minutes,\n focused,\n is24Hour,\n onChange,\n}: {\n hours: number\n minutes: number\n focused: PossibleClockTypes\n is24Hour: boolean\n onChange: (hoursMinutesAndFocused: {\n hours: number\n minutes: number\n focused?: undefined | PossibleClockTypes\n }) => any\n}) {\n const theme = useTheme()\n const { mode } = React.useContext(DisplayModeContext)\n // used to make pointer shorter if hours are selected and above 12\n const shortPointer = (hours === 0 || hours > 12) && is24Hour\n const clockRef = React.useRef<View | null>(null)\n // Hooks are nice, sometimes... :-)..\n // We need the latest values, since the onPointerMove uses a closure to the function\n const hoursRef = useLatest(hours)\n const onChangeRef = useLatest(onChange)\n const minutesRef = useLatest(minutes)\n const focusedRef = useLatest(focused)\n const is24HourRef = useLatest(is24Hour)\n const modeRef = useLatest(mode)\n const onPointerMove = React.useCallback(\n (e: GestureResponderEvent, final: boolean) => {\n let x = e.nativeEvent.locationX\n let y = e.nativeEvent.locationY\n let angle = getAngle(x, y, circleSize)\n if (focusedRef.current === clockTypes.hours) {\n let hours24 = is24HourRef.current\n let previousHourType = getHourType(hoursRef.current)\n let pickedHours = getHours(angle, previousHourType)\n\n let hours12AndPm = !hours24 && modeRef.current === 'PM'\n\n let hourTypeFromOffset = getHourTypeFromOffset(x, y, circleSize)\n let hours24AndPM = hours24 && hourTypeFromOffset === hourTypes.pm\n\n // Avoiding the \"24h\"\n // Should be 12h for 12 hours and PM mode\n\n if (hours12AndPm || hours24AndPM) {\n pickedHours += 12\n }\n if (modeRef.current === 'AM' && pickedHours === 12) {\n pickedHours = 0\n }\n\n if (\n (!hours24 && modeRef.current === 'AM' && pickedHours === 12) ||\n pickedHours === 24\n ) {\n pickedHours = 0\n }\n\n if (hoursRef.current !== pickedHours || final) {\n onChangeRef.current({\n hours: pickedHours,\n minutes: minutesRef.current,\n focused: final ? clockTypes.minutes : undefined,\n })\n }\n } else if (focusedRef.current === clockTypes.minutes) {\n let pickedMinutes = getMinutes(angle)\n if (minutesRef.current !== pickedMinutes) {\n onChangeRef.current({\n hours: hoursRef.current,\n minutes: pickedMinutes,\n })\n }\n }\n },\n [focusedRef, is24HourRef, hoursRef, onChangeRef, minutesRef, modeRef]\n )\n const panResponder = React.useRef(\n PanResponder.create({\n onPanResponderGrant: (e) => onPointerMove(e, false),\n onPanResponderMove: (e) => onPointerMove(e, false),\n onPanResponderRelease: (e) => onPointerMove(e, true),\n onStartShouldSetPanResponder: returnTrue,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: returnTrue,\n onMoveShouldSetPanResponderCapture: returnTrue,\n onPanResponderTerminationRequest: returnTrue,\n onShouldBlockNativeResponder: returnTrue,\n })\n ).current\n const dynamicSize = focused === clockTypes.hours && shortPointer ? 33 : 0\n const pointerNumber = focused === clockTypes.hours ? hours : minutes\n const degreesPerNumber = focused === clockTypes.hours ? 30 : 6\n return (\n <View\n ref={clockRef}\n {...panResponder.panHandlers}\n style={[\n styles.clock,\n {\n backgroundColor: theme.isV3\n ? theme.colors.surfaceVariant\n : theme.dark\n ? Color(theme.colors.surface).lighten(1.4).hex()\n : Color(theme.colors.surface).darken(0.1).hex(),\n },\n ]}\n // @ts-ignore -> https://github.com/necolas/react-native-web/issues/506\n cursor={'pointer'}\n >\n <View\n style={[\n styles.line,\n {\n backgroundColor: theme.colors.primary,\n transform: [\n { rotate: -90 + pointerNumber * degreesPerNumber + 'deg' },\n {\n translateX:\n circleSize / 4 -\n (focused === clockTypes.hours &&\n pointerNumber >= 0 &&\n pointerNumber < 13\n ? 0\n : 4) +\n (focused === clockTypes.minutes ? 4 : 0) -\n dynamicSize / 2,\n },\n ],\n width: circleSize / 2 - 4 - dynamicSize,\n },\n ]}\n pointerEvents=\"none\"\n >\n <View\n style={[styles.endPoint, { backgroundColor: theme.colors.primary }]}\n />\n </View>\n <View\n style={[StyleSheet.absoluteFill, styles.center]}\n pointerEvents=\"none\"\n >\n <View\n style={[\n styles.middlePoint,\n {\n backgroundColor: theme.colors.primary,\n },\n ]}\n />\n </View>\n <AnimatedClockSwitcher\n focused={focused}\n hours={<AnalogClockHours is24Hour={is24Hour} hours={hours} />}\n minutes={<AnalogClockMinutes minutes={minutes} />}\n />\n </View>\n )\n}\nconst styles = StyleSheet.create({\n clock: {\n height: circleSize,\n width: circleSize,\n position: 'relative',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: circleSize / 2,\n },\n middlePoint: {\n borderRadius: 4,\n height: 8,\n width: 8,\n },\n center: { justifyContent: 'center', alignItems: 'center' },\n endPoint: {\n borderRadius: 24,\n height: 48,\n width: 48,\n position: 'absolute',\n right: 0,\n bottom: -23,\n },\n line: {\n position: 'absolute',\n height: 2,\n borderRadius: 4,\n },\n})\nfunction returnTrue() {\n return true\n}\nexport default React.memo(AnalogClock)\n"],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ function AnalogClockHours(_ref) {
|
|
|
47
47
|
} : null,
|
|
48
48
|
variant: "bodyLarge",
|
|
49
49
|
selectable: false
|
|
50
|
-
}, mode === 'AM' &&
|
|
50
|
+
}, mode === 'AM' && is24Hour && i + 1 === 12 ? '00' : i + 1)))), is24Hour ? innerRange.map((a, i) => /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
51
51
|
key: i,
|
|
52
52
|
pointerEvents: "none",
|
|
53
53
|
style: [styles.innerHourRoot, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AnalogClockHours","is24Hour","hours","mode","React","useContext","DisplayModeContext","outerRange","getHourNumbers","circleSize","innerRange","color","useTextColorOnPrimary","map","a","i","styles","outerHourRoot","top","left","outerHourInner","innerHourRoot","innerHourInner","StyleSheet","create","position","justifyContent","alignItems","zIndex","width","height","marginLeft","marginTop","borderRadius","size","count","arrayLength","angle","step","Math","PI","radius","Array","fill","x","round","cos","y","sin","memo"],"sources":["AnalogClockHours.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Text } from 'react-native-paper'\nimport { circleSize } from './timeUtils'\nimport { useTextColorOnPrimary } from '../utils'\nimport { DisplayModeContext } from './TimePicker'\n\nfunction AnalogClockHours({\n is24Hour,\n hours,\n}: {\n is24Hour: boolean\n hours: number\n}) {\n const { mode } = React.useContext(DisplayModeContext)\n const outerRange = getHourNumbers(false, circleSize, 12, 12)\n const innerRange = getHourNumbers(true, circleSize, 12, 12)\n const color = useTextColorOnPrimary()\n\n return (\n <>\n {outerRange.map((a, i) => (\n <View\n key={i}\n pointerEvents=\"none\"\n style={[\n styles.outerHourRoot,\n {\n top: a[1] || 0,\n left: a[0] || 0,\n },\n ]}\n >\n <View style={styles.outerHourInner}>\n {/* Display 00 instead of 12 for AM hours */}\n <Text\n style={hours === i + 1 ? { color } : null}\n variant=\"bodyLarge\"\n selectable={false}\n >\n {mode === 'AM' &&
|
|
1
|
+
{"version":3,"names":["AnalogClockHours","is24Hour","hours","mode","React","useContext","DisplayModeContext","outerRange","getHourNumbers","circleSize","innerRange","color","useTextColorOnPrimary","map","a","i","styles","outerHourRoot","top","left","outerHourInner","innerHourRoot","innerHourInner","StyleSheet","create","position","justifyContent","alignItems","zIndex","width","height","marginLeft","marginTop","borderRadius","size","count","arrayLength","angle","step","Math","PI","radius","Array","fill","x","round","cos","y","sin","memo"],"sources":["AnalogClockHours.tsx"],"sourcesContent":["import * as React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Text } from 'react-native-paper'\nimport { circleSize } from './timeUtils'\nimport { useTextColorOnPrimary } from '../utils'\nimport { DisplayModeContext } from './TimePicker'\n\nfunction AnalogClockHours({\n is24Hour,\n hours,\n}: {\n is24Hour: boolean\n hours: number\n}) {\n const { mode } = React.useContext(DisplayModeContext)\n const outerRange = getHourNumbers(false, circleSize, 12, 12)\n const innerRange = getHourNumbers(true, circleSize, 12, 12)\n const color = useTextColorOnPrimary()\n\n return (\n <>\n {outerRange.map((a, i) => (\n <View\n key={i}\n pointerEvents=\"none\"\n style={[\n styles.outerHourRoot,\n {\n top: a[1] || 0,\n left: a[0] || 0,\n },\n ]}\n >\n <View style={styles.outerHourInner}>\n {/* Display 00 instead of 12 for AM hours */}\n <Text\n style={hours === i + 1 ? { color } : null}\n variant=\"bodyLarge\"\n selectable={false}\n >\n {mode === 'AM' && is24Hour && i + 1 === 12 ? '00' : i + 1}\n </Text>\n </View>\n </View>\n ))}\n {is24Hour\n ? innerRange.map((a, i) => (\n <View\n key={i}\n pointerEvents=\"none\"\n style={[\n styles.innerHourRoot,\n {\n top: a[1] || 0,\n left: a[0] || 0,\n },\n ]}\n >\n <View style={styles.innerHourInner}>\n <Text\n selectable={false}\n style={[\n i + 13 === hours || (i + 13 === 24 && hours === 0)\n ? { color }\n : null,\n ]}\n variant=\"bodyLarge\"\n >\n {i + 13 === 24 ? '00' : i + 13}\n </Text>\n </View>\n </View>\n ))\n : null}\n </>\n )\n}\n\nconst styles = StyleSheet.create({\n outerHourRoot: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 20,\n width: 48,\n height: 48,\n marginLeft: -24,\n marginTop: -24,\n borderRadius: 24,\n },\n outerHourInner: { borderRadius: 24 },\n innerHourRoot: {\n position: 'absolute',\n zIndex: 20,\n justifyContent: 'center',\n alignItems: 'center',\n width: 48,\n height: 48,\n marginLeft: -24,\n marginTop: -24,\n borderRadius: 24,\n },\n innerHourInner: { borderRadius: 24 },\n})\n\nfunction getHourNumbers(\n is24Hour: boolean,\n size: number,\n count: number,\n arrayLength: number\n) {\n let angle = 0\n let step = (2 * Math.PI) / count\n let radius = size / (is24Hour ? 4 : 2.5)\n\n angle = (-90 * Math.PI) / 180 + Math.PI / 6\n\n return Array(arrayLength)\n .fill(true)\n .map(() => {\n let x = Math.round(size / 2 + radius * Math.cos(angle))\n let y = Math.round(size / 2 + radius * Math.sin(angle))\n angle += step\n return [x, y]\n })\n}\n\nexport default React.memo(AnalogClockHours)\n"],"mappings":"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"}
|
|
@@ -254,11 +254,11 @@ function useInputColors(highlighted) {
|
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
function toHourInputFormat(hours, is24Hour) {
|
|
257
|
-
if (hours === 24) {
|
|
258
|
-
return 0;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
257
|
if (is24Hour) {
|
|
258
|
+
if (hours === 24) {
|
|
259
|
+
return 0;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
262
|
return hours;
|
|
263
263
|
}
|
|
264
264
|
|
|
@@ -266,6 +266,10 @@ function toHourInputFormat(hours, is24Hour) {
|
|
|
266
266
|
return hours - 12;
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
if (hours === 0) {
|
|
270
|
+
return hours + 12;
|
|
271
|
+
}
|
|
272
|
+
|
|
269
273
|
return hours;
|
|
270
274
|
}
|
|
271
275
|
|
|
@@ -274,7 +278,7 @@ function toHourOutputFormat(newHours, previousHours, is24Hour) {
|
|
|
274
278
|
return newHours;
|
|
275
279
|
}
|
|
276
280
|
|
|
277
|
-
if (previousHours
|
|
281
|
+
if (!is24Hour && previousHours === 0 || newHours === 0) {
|
|
278
282
|
return newHours + 12;
|
|
279
283
|
}
|
|
280
284
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["circleSize","hourTypes","am","pm","getHourType","hours","undefined","inputTypes","keyboard","picker","reverseInputTypes","inputTypeIcons","getTimeInputTypeIcon","inputType","inputIconMap","clockTypes","minutes","outerHeight","_30","Math","PI","_12","_360","_90","snap","angle","step","a","diff","getHourTypeFromOffset","left","top","size","w","x","y","distance","sqrt","maxPm","getMinutes","handAngle","minute","parseInt","toFixed","getHours","hourType","hour","getAngle","atan","useSwitchColors","highlighted","theme","useTheme","backgroundColor","React","useMemo","dark","isV3","colors","tertiaryContainer","Color","primary","hex","backdrop","primaryContainer","lighten","surface","color","onSurfaceVariant","onTertiaryContainer","background","placeholder","useInputColors","surfaceVariant","secondaryContainer","darken","onSurface","onBackground","onPrimaryContainer","text","toHourInputFormat","is24Hour","toHourOutputFormat","newHours","previousHours"],"sources":["timeUtils.ts"],"sourcesContent":["import * as React from 'react'\nimport Color from 'color'\nimport { MD2Theme, useTheme } from 'react-native-paper'\n\nexport const circleSize = 256\n\nexport type PossibleHourTypes = 'am' | 'pm'\nexport type HourTypeMap = {\n [hourType in PossibleHourTypes]: PossibleHourTypes\n}\nexport const hourTypes: HourTypeMap = {\n am: 'am',\n pm: 'pm',\n}\n\nexport function getHourType(hours: number): PossibleHourTypes | undefined {\n if (hours >= 0 && hours <= 12) {\n return hourTypes.am\n }\n if (hours > 12 && hours <= 24) {\n return hourTypes.pm\n }\n return undefined\n}\n\nexport type PossibleInputTypes = 'keyboard' | 'picker'\nexport type InputTypeMap = {\n [inputType in PossibleInputTypes]: PossibleInputTypes\n}\nexport const inputTypes: InputTypeMap = {\n keyboard: 'keyboard',\n picker: 'picker',\n}\n\nexport const reverseInputTypes: InputTypeMap = {\n keyboard: 'picker',\n picker: 'keyboard',\n}\ntype InputIconMap = {\n [inputType in PossibleInputTypes]: string\n}\nexport const inputTypeIcons: InputIconMap = {\n keyboard: 'keyboard-outline',\n picker: 'clock-outline',\n}\n\nexport const getTimeInputTypeIcon = (\n inputType: PossibleInputTypes,\n inputIconMap?: InputIconMap\n) => {\n return (\n inputIconMap?.[reverseInputTypes[inputType]] ||\n inputTypeIcons?.[reverseInputTypes[inputType]]\n )\n}\n\nexport type PossibleClockTypes = 'hours' | 'minutes'\nexport type ClockTypeMap = {\n [clockType in PossibleClockTypes]: PossibleClockTypes\n}\nexport const clockTypes: ClockTypeMap = {\n minutes: 'minutes',\n hours: 'hours',\n}\n\n// Code inspiration and copied from: https://github.com/ShaneGH/analogue-time-picker/blob/master/src/utils/angle.ts\n\nconst outerHeight = 34\nconst _30 = Math.PI / 6\nconst _12 = Math.PI / 30\nconst _360 = Math.PI * 2\nconst _90 = Math.PI / 2\n\n/** Snap an angle to a given step. E.g. if angle = 22° and step = 10°, round down to 20° */\nexport function snap(angle: number, step: number) {\n let a = angle\n while (a < 0) a += _360\n let diff = a % step\n\n if (diff <= step / 2) {\n return angle - diff\n }\n\n return angle - diff + step\n}\n\n// detect am / pm based on offset\nexport function getHourTypeFromOffset(\n left: number,\n top: number,\n size: number\n): PossibleHourTypes {\n const w = size / 2\n const x = w - left\n const y = size / 2 - top\n\n const distance = Math.sqrt(x * x + y * y)\n const maxPm = w - outerHeight\n\n return distance > maxPm ? hourTypes.am : hourTypes.pm\n}\n\n// Calculate the minute from the hand angle\nexport function getMinutes(handAngle: number) {\n handAngle = snap(handAngle, _12)\n\n let minute = parseInt((((handAngle - _90) % _360) / _12).toFixed(), 10)\n while (minute < 0) minute += 60\n while (minute >= 60) minute -= 60\n\n return minute\n}\n\n// Calculate the hour from the hand angle\nexport function getHours(\n handAngle: number,\n hourType: PossibleHourTypes | undefined\n) {\n handAngle = snap(handAngle, _30)\n\n let hour = parseInt((((handAngle - _90) % _360) / _30).toFixed(), 10)\n if (hour < 0) hour += 12\n if (hour >= 12) hour -= 12\n\n if (hourType === hourTypes.am) {\n if (hour <= 0) {\n hour += 12\n } else if (hour >= 12) {\n hour -= 12\n }\n }\n if (hourType === hourTypes.pm) {\n if (hour <= 0) {\n hour += 12\n } else if (hour > 12) {\n hour -= 12\n }\n }\n\n return hour\n}\n\n/** Get the angle of the left/top co-ordinate from the center of the width.height box */\nexport function getAngle(left: number, top: number, size: number) {\n const x = size / 2 - left\n const y = size / 2 - top\n\n // tan O = y / x\n let angle = x ? Math.atan(y / x) : y < 0 ? -_90 : _90\n if (x < 0) {\n // reflect along vertical axis\n angle = -angle + 2 * (_90 + angle)\n }\n\n return angle\n}\n\nexport function useSwitchColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.tertiaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.colors.backdrop\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n\n return Color(theme.colors.primary).lighten(1).hex()\n }\n return theme.colors.surface\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.primary\n }\n if (highlighted && theme.dark) {\n return theme.isV3\n ? theme.colors.onTertiaryContainer\n : theme.colors.background\n }\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n } else {\n return (theme as any as MD2Theme).colors.placeholder\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function useInputColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.primaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.isV3\n ? theme.colors.surfaceVariant\n : Color(theme.colors.surface).lighten(1.4).hex()\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.secondaryContainer\n }\n return Color(theme.colors.primary).lighten(1).hex()\n }\n if (theme.isV3) {\n return theme.colors.surfaceVariant\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (theme.isV3) {\n if (!highlighted) {\n return theme.isV3 ? theme.colors.onSurface : theme.colors.onBackground\n }\n return theme.isV3\n ? theme.colors.onPrimaryContainer\n : theme.colors.onBackground\n } else {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n return (theme as any as MD2Theme).colors.text\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function toHourInputFormat(hours: number, is24Hour: boolean): number {\n if (hours === 24) {\n return 0\n }\n if (is24Hour) {\n return hours\n }\n if (hours > 12) {\n return hours - 12\n }\n return hours\n}\n\nexport function toHourOutputFormat(\n newHours: number,\n previousHours: number,\n is24Hour: boolean\n): number {\n if (is24Hour) {\n return newHours\n }\n if (previousHours > 12 && newHours < 12) {\n return newHours + 12\n }\n return newHours\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["circleSize","hourTypes","am","pm","getHourType","hours","undefined","inputTypes","keyboard","picker","reverseInputTypes","inputTypeIcons","getTimeInputTypeIcon","inputType","inputIconMap","clockTypes","minutes","outerHeight","_30","Math","PI","_12","_360","_90","snap","angle","step","a","diff","getHourTypeFromOffset","left","top","size","w","x","y","distance","sqrt","maxPm","getMinutes","handAngle","minute","parseInt","toFixed","getHours","hourType","hour","getAngle","atan","useSwitchColors","highlighted","theme","useTheme","backgroundColor","React","useMemo","dark","isV3","colors","tertiaryContainer","Color","primary","hex","backdrop","primaryContainer","lighten","surface","color","onSurfaceVariant","onTertiaryContainer","background","placeholder","useInputColors","surfaceVariant","secondaryContainer","darken","onSurface","onBackground","onPrimaryContainer","text","toHourInputFormat","is24Hour","toHourOutputFormat","newHours","previousHours"],"sources":["timeUtils.ts"],"sourcesContent":["import * as React from 'react'\nimport Color from 'color'\nimport { MD2Theme, useTheme } from 'react-native-paper'\n\nexport const circleSize = 256\n\nexport type PossibleHourTypes = 'am' | 'pm'\nexport type HourTypeMap = {\n [hourType in PossibleHourTypes]: PossibleHourTypes\n}\nexport const hourTypes: HourTypeMap = {\n am: 'am',\n pm: 'pm',\n}\n\nexport function getHourType(hours: number): PossibleHourTypes | undefined {\n if (hours >= 0 && hours <= 12) {\n return hourTypes.am\n }\n if (hours > 12 && hours <= 24) {\n return hourTypes.pm\n }\n return undefined\n}\n\nexport type PossibleInputTypes = 'keyboard' | 'picker'\nexport type InputTypeMap = {\n [inputType in PossibleInputTypes]: PossibleInputTypes\n}\nexport const inputTypes: InputTypeMap = {\n keyboard: 'keyboard',\n picker: 'picker',\n}\n\nexport const reverseInputTypes: InputTypeMap = {\n keyboard: 'picker',\n picker: 'keyboard',\n}\ntype InputIconMap = {\n [inputType in PossibleInputTypes]: string\n}\nexport const inputTypeIcons: InputIconMap = {\n keyboard: 'keyboard-outline',\n picker: 'clock-outline',\n}\n\nexport const getTimeInputTypeIcon = (\n inputType: PossibleInputTypes,\n inputIconMap?: InputIconMap\n) => {\n return (\n inputIconMap?.[reverseInputTypes[inputType]] ||\n inputTypeIcons?.[reverseInputTypes[inputType]]\n )\n}\n\nexport type PossibleClockTypes = 'hours' | 'minutes'\nexport type ClockTypeMap = {\n [clockType in PossibleClockTypes]: PossibleClockTypes\n}\nexport const clockTypes: ClockTypeMap = {\n minutes: 'minutes',\n hours: 'hours',\n}\n\n// Code inspiration and copied from: https://github.com/ShaneGH/analogue-time-picker/blob/master/src/utils/angle.ts\n\nconst outerHeight = 34\nconst _30 = Math.PI / 6\nconst _12 = Math.PI / 30\nconst _360 = Math.PI * 2\nconst _90 = Math.PI / 2\n\n/** Snap an angle to a given step. E.g. if angle = 22° and step = 10°, round down to 20° */\nexport function snap(angle: number, step: number) {\n let a = angle\n while (a < 0) a += _360\n let diff = a % step\n\n if (diff <= step / 2) {\n return angle - diff\n }\n\n return angle - diff + step\n}\n\n// detect am / pm based on offset\nexport function getHourTypeFromOffset(\n left: number,\n top: number,\n size: number\n): PossibleHourTypes {\n const w = size / 2\n const x = w - left\n const y = size / 2 - top\n\n const distance = Math.sqrt(x * x + y * y)\n const maxPm = w - outerHeight\n\n return distance > maxPm ? hourTypes.am : hourTypes.pm\n}\n\n// Calculate the minute from the hand angle\nexport function getMinutes(handAngle: number) {\n handAngle = snap(handAngle, _12)\n\n let minute = parseInt((((handAngle - _90) % _360) / _12).toFixed(), 10)\n while (minute < 0) minute += 60\n while (minute >= 60) minute -= 60\n\n return minute\n}\n\n// Calculate the hour from the hand angle\nexport function getHours(\n handAngle: number,\n hourType: PossibleHourTypes | undefined\n) {\n handAngle = snap(handAngle, _30)\n\n let hour = parseInt((((handAngle - _90) % _360) / _30).toFixed(), 10)\n if (hour < 0) hour += 12\n if (hour >= 12) hour -= 12\n\n if (hourType === hourTypes.am) {\n if (hour <= 0) {\n hour += 12\n } else if (hour >= 12) {\n hour -= 12\n }\n }\n if (hourType === hourTypes.pm) {\n if (hour <= 0) {\n hour += 12\n } else if (hour > 12) {\n hour -= 12\n }\n }\n\n return hour\n}\n\n/** Get the angle of the left/top co-ordinate from the center of the width.height box */\nexport function getAngle(left: number, top: number, size: number) {\n const x = size / 2 - left\n const y = size / 2 - top\n\n // tan O = y / x\n let angle = x ? Math.atan(y / x) : y < 0 ? -_90 : _90\n if (x < 0) {\n // reflect along vertical axis\n angle = -angle + 2 * (_90 + angle)\n }\n\n return angle\n}\n\nexport function useSwitchColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.tertiaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.colors.backdrop\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.primaryContainer\n }\n\n return Color(theme.colors.primary).lighten(1).hex()\n }\n return theme.colors.surface\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (highlighted && !theme.dark) {\n return theme.isV3 ? theme.colors.onSurfaceVariant : theme.colors.primary\n }\n if (highlighted && theme.dark) {\n return theme.isV3\n ? theme.colors.onTertiaryContainer\n : theme.colors.background\n }\n if (theme.isV3) {\n return theme.colors.onSurfaceVariant\n } else {\n return (theme as any as MD2Theme).colors.placeholder\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function useInputColors(highlighted: boolean) {\n const theme = useTheme()\n const backgroundColor = React.useMemo<string>(() => {\n if (theme.dark) {\n if (highlighted) {\n return theme.isV3\n ? theme.colors.primaryContainer\n : Color(theme.colors.primary).hex()\n }\n return theme.isV3\n ? theme.colors.surfaceVariant\n : Color(theme.colors.surface).lighten(1.4).hex()\n }\n\n if (highlighted) {\n if (theme.isV3) {\n return theme.colors.secondaryContainer\n }\n return Color(theme.colors.primary).lighten(1).hex()\n }\n if (theme.isV3) {\n return theme.colors.surfaceVariant\n }\n return Color(theme.colors.surface).darken(0.1).hex()\n }, [highlighted, theme])\n\n const color = React.useMemo<string>(() => {\n if (theme.isV3) {\n if (!highlighted) {\n return theme.isV3 ? theme.colors.onSurface : theme.colors.onBackground\n }\n return theme.isV3\n ? theme.colors.onPrimaryContainer\n : theme.colors.onBackground\n } else {\n if (highlighted && !theme.dark) {\n return theme.colors.primary\n }\n return (theme as any as MD2Theme).colors.text\n }\n }, [highlighted, theme])\n\n return { backgroundColor, color }\n}\n\nexport function toHourInputFormat(hours: number, is24Hour: boolean): number {\n if (is24Hour) {\n if (hours === 24) {\n return 0\n }\n return hours\n }\n if (hours > 12) {\n return hours - 12\n }\n if (hours === 0) {\n return hours + 12\n }\n return hours\n}\n\nexport function toHourOutputFormat(\n newHours: number,\n previousHours: number,\n is24Hour: boolean\n): number {\n if (is24Hour) {\n return newHours\n }\n if ((!is24Hour && previousHours === 0) || newHours === 0) {\n return newHours + 12\n }\n return newHours\n}\n"],"mappings":"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"}
|
|
@@ -33,14 +33,19 @@ function DatePickerInput(_ref, ref) {
|
|
|
33
33
|
style: styles.calendarButton,
|
|
34
34
|
icon: calendarIcon,
|
|
35
35
|
onPress: () => setVisible(true)
|
|
36
|
-
}) : null
|
|
36
|
+
}) : null // eslint-disable-next-line react/no-unstable-nested-components
|
|
37
|
+
,
|
|
37
38
|
modal: _ref3 => {
|
|
38
39
|
let {
|
|
39
40
|
value,
|
|
40
41
|
locale,
|
|
41
42
|
inputMode,
|
|
42
43
|
validRange,
|
|
43
|
-
saveLabel
|
|
44
|
+
saveLabel,
|
|
45
|
+
saveLabelDisabled,
|
|
46
|
+
uppercase,
|
|
47
|
+
startYear,
|
|
48
|
+
endYear
|
|
44
49
|
} = _ref3;
|
|
45
50
|
return withModal ? /*#__PURE__*/React.createElement(DatePickerModal, {
|
|
46
51
|
date: value,
|
|
@@ -51,7 +56,11 @@ function DatePickerInput(_ref, ref) {
|
|
|
51
56
|
locale: locale,
|
|
52
57
|
dateMode: inputMode,
|
|
53
58
|
validRange: validRange,
|
|
54
|
-
saveLabel: saveLabel
|
|
59
|
+
saveLabel: saveLabel,
|
|
60
|
+
saveLabelDisabled: saveLabelDisabled ?? false,
|
|
61
|
+
uppercase: uppercase ?? true,
|
|
62
|
+
startYear: startYear ?? 1800,
|
|
63
|
+
endYear: endYear ?? 2200
|
|
55
64
|
}) : null;
|
|
56
65
|
}
|
|
57
66
|
}));
|