Skip to content

Commit d0d8867

Browse files
authored
Move moment to be optional dependency (#2485)
1 parent 2818b7e commit d0d8867

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
"hoist-non-react-statics": "^3.0.0",
4747
"lodash": "^4.17.21",
4848
"memoize-one": "^5.0.5",
49-
"moment": "^2.24.0",
5049
"prop-types": "^15.5.10",
5150
"react-freeze": "^1.0.0",
5251
"react-native-redash": "^12.0.3",
@@ -100,6 +99,7 @@
10099
"jest": "^26.6.3",
101100
"metro-react-native-babel-preset": "^0.67.0",
102101
"mocha": "^5.0.0",
102+
"moment": "^2.24.0",
103103
"object-hash": "^3.0.0",
104104
"prettier-eslint": "12.0.0",
105105
"react": "17.0.2",

src/components/dateTimePicker/index.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import moment from 'moment';
21
import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
32
import {StyleProp, StyleSheet, ViewStyle} from 'react-native';
4-
import {DateTimePickerPackage as RNDateTimePicker} from '../../optionalDependencies';
3+
import {DateTimePickerPackage as RNDateTimePicker, MomentPackage as moment} from '../../optionalDependencies';
54
import {useDidUpdate} from 'hooks';
65
import {Colors} from '../../style';
76
import Assets from '../../assets';
@@ -151,6 +150,12 @@ function DateTimePicker(props: DateTimePickerPropsInternal) {
151150
}
152151
}, []);
153152

153+
useEffect(() => {
154+
if (!moment && (dateFormat || timeFormat)) {
155+
console.error(`RNUILib DateTimePicker component with date/time format requires installing "moment" dependency`);
156+
}
157+
}, [dateFormat, timeFormat]);
158+
154159
useDidUpdate(() => {
155160
setValue(propsValue);
156161
}, [propsValue]);
@@ -179,13 +184,13 @@ function DateTimePicker(props: DateTimePickerPropsInternal) {
179184
case MODES.DATE:
180185
return dateFormatter
181186
? dateFormatter(value)
182-
: dateFormat
187+
: dateFormat && moment
183188
? moment(value).format(dateFormat)
184189
: value.toLocaleDateString();
185190
case MODES.TIME:
186191
return timeFormatter
187192
? timeFormatter(value)
188-
: timeFormat
193+
: timeFormat && moment
189194
? moment(value).format(timeFormat)
190195
: value.toLocaleTimeString();
191196
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
let MomentPackage: typeof import('moment') | undefined;
2+
try {
3+
MomentPackage = require('moment');
4+
} catch (error) {}
5+
6+
export default MomentPackage;

src/optionalDependencies/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export {default as DateTimePickerPackage} from './DateTimePickerPackage';
22
export {default as FlashListPackage} from './FlashListPackage';
33
export {default as BlurViewPackage} from './BlurViewPackage';
4+
export {default as MomentPackage} from './MomentPackage';
45
export {default as NetInfoPackage} from './NetInfoPackage';
56
export {default as HapticFeedbackPackage} from './HapticFeedbackPackage';
67
export {default as SvgPackage} from './SvgPackage';

0 commit comments

Comments
 (0)