@codeleap/mobile 5.4.0 → 5.4.2

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.
@@ -1,82 +1,80 @@
1
1
  import React, { useCallback, useMemo } from 'react';
2
- import { TypeGuards } from '@codeleap/types';
3
2
  import { Calendar as RNCalendar } from 'react-native-calendars';
4
3
  import { MobileStyleRegistry } from '../../Registry';
5
4
  import { useStylesFor } from '../../hooks';
6
5
  import dayjs from 'dayjs';
7
- import utc from 'dayjs/plugin/utc';
8
- dayjs.extend(utc);
6
+ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
7
+ import { dateUtils } from '@codeleap/utils';
8
+ dayjs.extend(isSameOrBefore);
9
9
  export * from './styles';
10
10
  export * from './types';
11
+ const DATE_FORMAT = 'YYYY-MM-DD';
11
12
  export const Calendar = (props) => {
12
- const { style, value, onValueChange, parseToDate, ...calendarProps } = props;
13
+ const { style, value, onValueChange, ...calendarProps } = props;
13
14
  const styles = useStylesFor(Calendar.styleRegistryName, style);
14
- const isDateValue = TypeGuards.isInstance(value, Date);
15
- const isDateRange = Array.isArray(value);
15
+ const isRange = Array.isArray(value);
16
16
  const stringValue = useMemo(() => {
17
- if (isDateRange) {
18
- return value.map(date => isDateValue ? dayjs.utc(date).format('YYYY-MM-DD') : date ?? '');
17
+ if (!value)
18
+ return isRange ? [] : '';
19
+ if (isRange) {
20
+ return value.map((v) => dateUtils.removeTimezoneAndFormat(v));
19
21
  }
20
- return isDateValue ? dayjs.utc(value).format('YYYY-MM-DD') : value ?? '';
21
- }, [value]);
22
+ return dateUtils.removeTimezoneAndFormat(value);
23
+ }, [value, isRange]);
22
24
  const markedDates = useMemo(() => {
23
- if (isDateRange && Array.isArray(stringValue)) {
24
- if (stringValue.length === 0)
25
- return {};
26
- if (stringValue.length === 1) {
27
- const [start] = [...stringValue];
28
- const dateStr = dayjs(start).format('YYYY-MM-DD');
29
- return { [dateStr]: { selected: true } };
30
- }
31
- const [start, end] = [...stringValue];
32
- const startDate = dayjs(start);
33
- const endDate = dayjs(end);
34
- const markedDates = {};
35
- let currentDate = startDate;
36
- while (currentDate.isBefore(endDate) || currentDate.isSame(endDate)) {
37
- const dateStr = currentDate.format('YYYY-MM-DD');
38
- markedDates[dateStr] = {
39
- selected: true,
40
- ...(currentDate.isSame(startDate) && { startingDay: true }),
41
- ...(currentDate.isSame(endDate) && { endingDay: true })
42
- };
43
- currentDate = currentDate.add(1, 'day');
44
- }
45
- return markedDates;
25
+ if (!isRange) {
26
+ return stringValue ? { [stringValue]: { selected: true } } : {};
27
+ }
28
+ const rangeValues = stringValue;
29
+ if (rangeValues.length === 0)
30
+ return {};
31
+ if (rangeValues.length === 1) {
32
+ return { [rangeValues[0]]: { selected: true } };
46
33
  }
47
- return { [stringValue]: { selected: true } };
48
- }, [stringValue]);
49
- const onChange = useCallback((date) => {
50
- if (isDateRange) {
51
- const newValue = Array.isArray(value) ? [...value] : [];
34
+ const [start, end] = rangeValues;
35
+ const startDate = dayjs(start);
36
+ const endDate = dayjs(end);
37
+ const marked = {};
38
+ let current = startDate;
39
+ while (current.isSameOrBefore(endDate)) {
40
+ const dateStr = dateUtils.removeTimezoneAndFormat(current);
41
+ marked[dateStr] = {
42
+ selected: true,
43
+ ...(current.isSame(startDate) && { startingDay: true }),
44
+ ...(current.isSame(endDate) && { endingDay: true }),
45
+ };
46
+ current = current.add(1, 'day');
47
+ }
48
+ return marked;
49
+ }, [stringValue, isRange]);
50
+ const handleDateChange = useCallback((date) => {
51
+ if (!onValueChange)
52
+ return;
53
+ const selected = dayjs(date.dateString).startOf('day');
54
+ if (isRange) {
55
+ const current = Array.isArray(value) ? value : [];
52
56
  let newDates = [];
53
- if (newValue.length === 0 || newValue.length === 2) {
54
- newDates = [date.dateString];
57
+ if (current.length === 0 || current.length === 2) {
58
+ newDates = [selected];
55
59
  }
56
- else if (newValue.length === 1) {
57
- const firstDate = newValue[0];
58
- const secondDate = date.dateString;
59
- if (dayjs(firstDate).isAfter(dayjs(secondDate))) {
60
- newDates = [secondDate, firstDate];
61
- }
62
- else {
63
- newDates = [firstDate, secondDate];
64
- }
60
+ else if (current.length === 1) {
61
+ const first = dayjs(current[0]).startOf('day');
62
+ newDates = first.isAfter(selected)
63
+ ? [selected, first]
64
+ : [first, selected];
65
65
  }
66
- const parsedDates = isDateValue || parseToDate ?
67
- newDates.map(d => dayjs(d).toDate()) :
68
- newDates;
69
- onValueChange?.(parsedDates);
66
+ onValueChange(newDates);
70
67
  }
71
68
  else {
72
- const newValue = isDateValue || parseToDate ? dayjs(date.dateString).toDate() : date.dateString;
73
- onValueChange?.(newValue);
69
+ onValueChange(selected);
74
70
  }
75
- }, [onValueChange, value]);
71
+ }, [onValueChange, value, isRange]);
76
72
  const currentValue = useMemo(() => {
77
- return isDateRange ? (Array.isArray(stringValue) ? stringValue[0] : '') : stringValue;
78
- }, [stringValue]);
79
- return (<RNCalendar onDayPress={onChange} current={currentValue} monthFormat={'MMMM yyyy'} {...calendarProps} markedDates={{
73
+ return isRange
74
+ ? (Array.isArray(stringValue) ? stringValue[0] : '')
75
+ : stringValue;
76
+ }, [stringValue, isRange]);
77
+ return (<RNCalendar onDayPress={handleDateChange} current={currentValue} monthFormat={'MMMM yyyy'} {...calendarProps} markedDates={{
80
78
  ...markedDates,
81
79
  ...calendarProps?.markedDates
82
80
  }} style={styles?.wrapper} headerStyle={styles?.header} theme={{
@@ -90,8 +88,6 @@ Calendar.rootElement = 'wrapper';
90
88
  Calendar.withVariantTypes = (styles) => {
91
89
  return Calendar;
92
90
  };
93
- Calendar.defaultProps = {
94
- parseToDate: false,
95
- };
91
+ Calendar.defaultProps = {};
96
92
  MobileStyleRegistry.registerComponent(Calendar);
97
93
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Calendar/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Calendar/index.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { StyledProp } from '@codeleap/styles';
2
2
  import { CalendarProps as RNCalendarProps } from 'react-native-calendars';
3
3
  import { CalendarComposition } from './styles';
4
- export type CalendarValue = (string | string[]) | (Date | Date[]);
4
+ import { Dayjs } from 'dayjs';
5
+ export type CalendarValue = Dayjs | Dayjs[];
5
6
  export type CalendarProps = Omit<RNCalendarProps, 'style'> & {
6
7
  onValueChange: (date: CalendarValue) => void;
7
8
  value: CalendarValue;
8
9
  style?: StyledProp<CalendarComposition>;
9
- parseToDate?: boolean;
10
10
  };
@@ -5,13 +5,11 @@ import { useStylesFor } from '../../hooks';
5
5
  import { View } from '../View';
6
6
  import { Calendar } from '../Calendar';
7
7
  import { TextInput } from '../TextInput';
8
- import dayjs from 'dayjs';
9
- import utc from 'dayjs/plugin/utc';
10
8
  import Animated, { FadeOut, FadeIn } from 'react-native-reanimated';
11
9
  import { useInputBase } from '../InputBase';
12
10
  import { fields } from '@codeleap/form';
13
11
  import { useInputOverlay } from '../InputBase/useInputOverlay';
14
- dayjs.extend(utc);
12
+ import { dateUtils } from '@codeleap/utils';
15
13
  export * from './styles';
16
14
  export * from './types';
17
15
  export const CalendarInput = (props) => {
@@ -25,15 +23,15 @@ export const CalendarInput = (props) => {
25
23
  const [inputHeight, setInputHeight] = useState(0);
26
24
  const [isOpen, toggle] = useInputOverlay(autoClosePeersCalendars);
27
25
  const formattedValue = useMemo(() => {
28
- const isRange = Array.isArray(inputValue);
29
- if (isRange ? inputValue?.some(v => !v) : !inputValue)
26
+ if (!inputValue)
30
27
  return '';
31
- if (isRange) {
32
- return inputValue
33
- .map(date => dayjs.utc(date).format(format))
34
- .join(' - ');
28
+ if (Array.isArray(inputValue)) {
29
+ const filled = inputValue.filter(Boolean);
30
+ if (filled.length < inputValue.length)
31
+ return '';
32
+ return filled.map((v) => dateUtils.removeTimezoneAndFormat(v)).join(' - ');
35
33
  }
36
- return dayjs.utc(inputValue).format(format);
34
+ return dateUtils.removeTimezoneAndFormat(inputValue);
37
35
  }, [inputValue, format]);
38
36
  return (<View style={[styles.wrapper, { position: 'relative' }]}>
39
37
  <TextInput placeholder='Select Date' disabled={disabled} {...textInputProps} style={compositionStyles.input} leftIcon={!leftIcon ? null : {
@@ -54,7 +52,7 @@ export const CalendarInput = (props) => {
54
52
  } : {
55
53
  marginTop: gap,
56
54
  }}>
57
- <Calendar style={compositionStyles.calendar} value={inputValue} onValueChange={onInputValueChange} parseToDate {...calendarProps}/>
55
+ <Calendar style={compositionStyles.calendar} value={inputValue} onValueChange={onInputValueChange} {...calendarProps}/>
58
56
  </Animated.View>)}
59
57
  </View>);
60
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CalendarInput/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CalendarInput/index.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@ import React from 'react';
2
2
  import { Options } from 'react-native-image-crop-picker';
3
3
  import { FileInputImageSource, FileInputProps, FileInputRef, FileResult } from './types';
4
4
  export * from './types';
5
- export declare const FileInput: (props: FileInputProps) => JSX.Element;
5
+ export declare const FileInput: ((props: FileInputProps) => JSX.Element) & {
6
+ defaultProps: Partial<FileInputProps>;
7
+ };
6
8
  export declare const useFileInput: () => {
7
9
  openFilePicker: (imageSource?: FileInputImageSource, options?: Partial<Options>) => Promise<FileResult[]>;
8
10
  ref: React.MutableRefObject<FileInputRef>;
@@ -1,8 +1,8 @@
1
1
  import { forwardRef, useImperativeHandle, useRef } from 'react';
2
2
  import { parseFilePathData } from '@codeleap/utils';
3
- import { OSAlert } from '../../utils';
4
3
  import ImageCropPicker from 'react-native-image-crop-picker';
5
4
  import DocumentPicker from 'react-native-document-picker';
5
+ import { alert } from '@codeleap/modals';
6
6
  export * from './types';
7
7
  const pickerDefaults = {
8
8
  cropping: true,
@@ -23,7 +23,10 @@ function parsePickerData(data) {
23
23
  };
24
24
  }
25
25
  const _FileInput = forwardRef((fileInputProps, ref) => {
26
- const { onFileSelect, options, type = 'image', alertProps, pickerOptions, onOpenCamera = null, onOpenGallery = null, onOpenFileSystem = null, onError, } = fileInputProps;
26
+ const { onFileSelect, options, type = 'image', pickerOptions, onOpenGallery = null, onOpenFileSystem = null, onError, alertProps, } = {
27
+ ...fileInputProps,
28
+ ...FileInput.defaultProps,
29
+ };
27
30
  const resolveWithFile = useRef();
28
31
  const handleResolve = (files) => {
29
32
  if (resolveWithFile.current) {
@@ -80,23 +83,11 @@ const _FileInput = forwardRef((fileInputProps, ref) => {
80
83
  onPress('library', options);
81
84
  }
82
85
  else {
83
- OSAlert.ask({
86
+ alert.ask({
84
87
  title: 'Change Image',
85
88
  body: 'Do you want to take a new picture or select an existing one?',
86
89
  ...alertProps,
87
90
  options: [
88
- {
89
- text: alertProps?.options?.[0]?.text || 'Camera',
90
- onPress: () => {
91
- if (onOpenCamera) {
92
- onOpenCamera(() => onPress('camera'));
93
- }
94
- else {
95
- onPress('camera');
96
- }
97
- },
98
- ...alertProps?.options?.[1],
99
- },
100
91
  {
101
92
  text: 'Library',
102
93
  onPress: () => {
@@ -107,15 +98,14 @@ const _FileInput = forwardRef((fileInputProps, ref) => {
107
98
  onPress('library');
108
99
  }
109
100
  },
110
- ...alertProps?.options?.[2],
101
+ ...alertProps?.options?.[0],
111
102
  },
112
103
  {
113
104
  text: 'Cancel',
114
105
  style: 'cancel',
115
- onPress: () => { },
116
- ...alertProps?.options?.[0],
106
+ ...alertProps?.options?.[1]
117
107
  },
118
- ],
108
+ ]
119
109
  });
120
110
  }
121
111
  }
@@ -139,6 +129,7 @@ const _FileInput = forwardRef((fileInputProps, ref) => {
139
129
  return null;
140
130
  });
141
131
  export const FileInput = _FileInput;
132
+ FileInput.defaultProps = {};
142
133
  export const useFileInput = () => {
143
134
  const inputRef = useRef(null);
144
135
  const openFilePicker = (imageSource = null, options = {}) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FileInput/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FileInput/index.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AnyRef, MobileInputFile } from '@codeleap/types';
2
2
  import { DocumentPickerOptions } from 'react-native-document-picker';
3
3
  import { Options } from 'react-native-image-crop-picker';
4
- import { OSAlert } from '../../utils';
4
+ import { AlertOptions } from '@codeleap/modals';
5
5
  export type FileInputImageSource = 'camera' | 'library' | 'fs';
6
6
  export type FileResult = MobileInputFile | string | number;
7
7
  export type FileInputRef = {
@@ -13,10 +13,9 @@ export type FileInputProps = {
13
13
  options?: DocumentPickerOptions;
14
14
  ref?: AnyRef<FileInputRef>;
15
15
  type?: 'image' | 'anyFile';
16
- alertProps?: Parameters<typeof OSAlert.ask>[0];
16
+ alertProps?: AlertOptions & {};
17
17
  pickerOptions?: Partial<Options>;
18
18
  required?: boolean;
19
- onOpenCamera?: (resolve: (() => void)) => Promise<void>;
20
19
  onOpenFileSystem?: (resolve: (() => void)) => Promise<void>;
21
20
  onOpenGallery?: (resolve: (() => void)) => Promise<void>;
22
21
  onError?: (error: any) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeleap/mobile",
3
- "version": "5.4.0",
3
+ "version": "5.4.2",
4
4
  "main": "src/index.ts",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -9,28 +9,28 @@
9
9
  "directory": "packages/mobile"
10
10
  },
11
11
  "devDependencies": {
12
- "@codeleap/types": "5.4.0",
13
- "@codeleap/utils": "5.4.0",
14
- "@codeleap/hooks": "5.4.0",
15
- "@codeleap/form": "5.4.0",
16
- "@codeleap/query": "5.4.0",
17
- "@codeleap/logger": "5.4.0",
18
- "@codeleap/config": "5.4.0",
19
- "@codeleap/modals": "5.4.0"
12
+ "@codeleap/types": "5.4.2",
13
+ "@codeleap/utils": "5.4.2",
14
+ "@codeleap/hooks": "5.4.2",
15
+ "@codeleap/form": "5.4.2",
16
+ "@codeleap/query": "5.4.2",
17
+ "@codeleap/logger": "5.4.2",
18
+ "@codeleap/config": "5.4.2",
19
+ "@codeleap/modals": "5.4.2"
20
20
  },
21
21
  "scripts": {
22
22
  "build": "tsc --build",
23
23
  "lint": "eslint -c .eslintrc.js --fix \"./src/**/*.{ts,tsx,js,jsx}\""
24
24
  },
25
25
  "peerDependencies": {
26
- "@codeleap/types": "5.4.0",
27
- "@codeleap/utils": "5.4.0",
28
- "@codeleap/hooks": "5.4.0",
29
- "@codeleap/form": "5.4.0",
30
- "@codeleap/query": "5.4.0",
31
- "@codeleap/logger": "5.4.0",
32
- "@codeleap/styles": "5.4.0",
33
- "@codeleap/modals": "5.4.0",
26
+ "@codeleap/types": "5.4.2",
27
+ "@codeleap/utils": "5.4.2",
28
+ "@codeleap/hooks": "5.4.2",
29
+ "@codeleap/form": "5.4.2",
30
+ "@codeleap/query": "5.4.2",
31
+ "@codeleap/logger": "5.4.2",
32
+ "@codeleap/styles": "5.4.2",
33
+ "@codeleap/modals": "5.4.2",
34
34
  "@d11/react-native-fast-image": "8.9.2",
35
35
  "@react-native-firebase/messaging": "21.12.0",
36
36
  "@react-navigation/bottom-tabs": "7.3.10",
package/package.json.bak CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeleap/mobile",
3
- "version": "5.4.0",
3
+ "version": "5.4.2",
4
4
  "main": "src/index.ts",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -1,116 +1,107 @@
1
1
  import React, { useCallback, useMemo } from 'react'
2
- import { TypeGuards } from '@codeleap/types'
3
2
  import { Calendar as RNCalendar, DateData } from 'react-native-calendars'
4
3
  import { AnyRecord, IJSX, StyledComponentProps } from '@codeleap/styles'
5
4
  import { MobileStyleRegistry } from '../../Registry'
6
5
  import { useStylesFor } from '../../hooks'
7
6
  import { CalendarProps } from './types'
8
- import dayjs from 'dayjs'
9
- import utc from 'dayjs/plugin/utc'
7
+ import dayjs, { Dayjs } from 'dayjs'
8
+ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'
9
+ import { dateUtils } from '@codeleap/utils'
10
10
 
11
- dayjs.extend(utc)
11
+ dayjs.extend(isSameOrBefore)
12
12
 
13
13
  export * from './styles'
14
14
  export * from './types'
15
15
 
16
+ const DATE_FORMAT = 'YYYY-MM-DD'
17
+
16
18
  export const Calendar = (props: CalendarProps) => {
17
19
  const {
18
20
  style,
19
21
  value,
20
22
  onValueChange,
21
- parseToDate,
22
23
  ...calendarProps
23
24
  } = props
24
25
 
25
26
  const styles = useStylesFor(Calendar.styleRegistryName, style)
26
27
 
27
- const isDateValue = TypeGuards.isInstance(value, Date)
28
- const isDateRange = Array.isArray(value)
28
+ const isRange = Array.isArray(value)
29
29
 
30
30
  const stringValue = useMemo(() => {
31
- if (isDateRange) {
32
- return value.map(date =>
33
- isDateValue ? dayjs.utc(date).format('YYYY-MM-DD') : date ?? ''
34
- )
31
+ if (!value) return isRange ? [] : ''
32
+
33
+ if (isRange) {
34
+ return (value as any).map((v) => dateUtils.removeTimezoneAndFormat(v))
35
35
  }
36
36
 
37
- return isDateValue ? dayjs.utc(value).format('YYYY-MM-DD') : value ?? ''
38
- }, [value])
37
+ return dateUtils.removeTimezoneAndFormat(value)
38
+ }, [value, isRange])
39
39
 
40
40
  const markedDates = useMemo(() => {
41
- if (isDateRange && Array.isArray(stringValue)) {
42
- if (stringValue.length === 0) return {}
43
- if (stringValue.length === 1) {
44
- const [start] = [...stringValue]
41
+ if (!isRange) {
42
+ return stringValue ? { [stringValue as string]: { selected: true } } : {}
43
+ }
45
44
 
46
- const dateStr = dayjs(start).format('YYYY-MM-DD')
45
+ const rangeValues = stringValue as string[]
46
+ if (rangeValues.length === 0) return {}
47
47
 
48
- return { [dateStr]: { selected: true } }
49
- }
50
-
51
- const [start, end] = [...stringValue]
52
- const startDate = dayjs(start)
53
- const endDate = dayjs(end)
54
-
55
- const markedDates: Record<string, any> = {}
56
-
57
- let currentDate = startDate
58
-
59
- while (currentDate.isBefore(endDate) || currentDate.isSame(endDate)) {
60
- const dateStr = currentDate.format('YYYY-MM-DD')
61
-
62
- markedDates[dateStr] = {
63
- selected: true,
64
- ...(currentDate.isSame(startDate) && { startingDay: true }),
65
- ...(currentDate.isSame(endDate) && { endingDay: true })
66
- }
67
-
68
- currentDate = currentDate.add(1, 'day')
48
+ if (rangeValues.length === 1) {
49
+ return { [rangeValues[0]]: { selected: true } }
50
+ }
51
+
52
+ const [start, end] = rangeValues
53
+ const startDate = dayjs(start)
54
+ const endDate = dayjs(end)
55
+ const marked: Record<string, any> = {}
56
+ let current = startDate
57
+
58
+ while (current.isSameOrBefore(endDate)) {
59
+ const dateStr = dateUtils.removeTimezoneAndFormat(current)
60
+ marked[dateStr] = {
61
+ selected: true,
62
+ ...(current.isSame(startDate) && { startingDay: true }),
63
+ ...(current.isSame(endDate) && { endingDay: true }),
69
64
  }
70
-
71
- return markedDates
65
+ current = current.add(1, 'day')
72
66
  }
73
-
74
- return { [stringValue as string]: { selected: true } }
75
- }, [stringValue])
76
-
77
- const onChange = useCallback((date: DateData) => {
78
- if (isDateRange) {
79
- const newValue = Array.isArray(value) ? [...value] : []
80
- let newDates: any = []
81
-
82
- if (newValue.length === 0 || newValue.length === 2) {
83
- newDates = [date.dateString]
84
- } else if (newValue.length === 1) {
85
- const firstDate = newValue[0]
86
- const secondDate = date.dateString
87
-
88
- if (dayjs(firstDate).isAfter(dayjs(secondDate))) {
89
- newDates = [secondDate, firstDate]
90
- } else {
91
- newDates = [firstDate, secondDate]
92
- }
67
+
68
+ return marked
69
+ }, [stringValue, isRange])
70
+
71
+ const handleDateChange = useCallback((date: DateData) => {
72
+ if (!onValueChange) return
73
+
74
+ const selected = dayjs(date.dateString).startOf('day')
75
+
76
+ if (isRange) {
77
+ const current = Array.isArray(value) ? value : []
78
+ let newDates: Dayjs[] = []
79
+
80
+ if (current.length === 0 || current.length === 2) {
81
+ newDates = [selected]
82
+ } else if (current.length === 1) {
83
+ const first = dayjs(current[0]).startOf('day')
84
+ newDates = first.isAfter(selected)
85
+ ? [selected, first]
86
+ : [first, selected]
93
87
  }
94
-
95
- const parsedDates = isDateValue || parseToDate ?
96
- newDates.map(d => dayjs(d).toDate()) :
97
- newDates
98
-
99
- onValueChange?.(parsedDates)
88
+
89
+ onValueChange(newDates)
100
90
  } else {
101
- const newValue = isDateValue || parseToDate ? dayjs(date.dateString).toDate() : date.dateString
102
- onValueChange?.(newValue)
91
+ onValueChange(selected)
103
92
  }
104
- }, [onValueChange, value])
93
+ }, [onValueChange, value, isRange])
105
94
 
106
95
  const currentValue = useMemo(() => {
107
- return isDateRange ? (Array.isArray(stringValue) ? stringValue[0] : '') : stringValue
108
- }, [stringValue])
109
-
96
+ return isRange
97
+ ? (Array.isArray(stringValue) ? stringValue[0] : '')
98
+ : stringValue
99
+ }, [stringValue, isRange])
100
+
110
101
  return (
111
102
  <RNCalendar
112
- onDayPress={onChange}
113
- current={currentValue}
103
+ onDayPress={handleDateChange}
104
+ current={currentValue as string}
114
105
  monthFormat={'MMMM yyyy'}
115
106
  {...calendarProps}
116
107
  markedDates={{
@@ -135,8 +126,6 @@ Calendar.withVariantTypes = <S extends AnyRecord>(styles: S) => {
135
126
  return Calendar as (props: StyledComponentProps<CalendarProps, typeof styles>) => IJSX
136
127
  }
137
128
 
138
- Calendar.defaultProps = {
139
- parseToDate: false,
140
- } as Partial<CalendarProps>
129
+ Calendar.defaultProps = {} as Partial<CalendarProps>
141
130
 
142
131
  MobileStyleRegistry.registerComponent(Calendar)
@@ -1,8 +1,9 @@
1
1
  import { StyledProp } from '@codeleap/styles'
2
2
  import { CalendarProps as RNCalendarProps } from 'react-native-calendars'
3
3
  import { CalendarComposition } from './styles'
4
+ import { Dayjs } from 'dayjs'
4
5
 
5
- export type CalendarValue = (string | string[]) | (Date | Date[])
6
+ export type CalendarValue = Dayjs | Dayjs[]
6
7
 
7
8
  export type CalendarProps =
8
9
  Omit<RNCalendarProps, 'style'> &
@@ -10,5 +11,4 @@ export type CalendarProps =
10
11
  onValueChange: (date: CalendarValue) => void
11
12
  value: CalendarValue
12
13
  style?: StyledProp<CalendarComposition>
13
- parseToDate?: boolean
14
14
  }
@@ -4,16 +4,13 @@ import { MobileStyleRegistry } from '../../Registry'
4
4
  import { useStylesFor } from '../../hooks'
5
5
  import { CalendarInputProps } from './types'
6
6
  import { View } from '../View'
7
- import { Calendar, CalendarProps } from '../Calendar'
7
+ import { Calendar } from '../Calendar'
8
8
  import { TextInput } from '../TextInput'
9
- import dayjs from 'dayjs'
10
- import utc from 'dayjs/plugin/utc'
11
9
  import Animated, { FadeOut, FadeIn } from 'react-native-reanimated'
12
10
  import { useInputBase } from '../InputBase'
13
11
  import { fields } from '@codeleap/form'
14
12
  import { useInputOverlay } from '../InputBase/useInputOverlay'
15
-
16
- dayjs.extend(utc)
13
+ import { dateUtils } from '@codeleap/utils'
17
14
 
18
15
  export * from './styles'
19
16
  export * from './types'
@@ -46,26 +43,24 @@ export const CalendarInput = (props: CalendarInputProps) => {
46
43
  const {
47
44
  inputValue,
48
45
  onInputValueChange,
49
- } = useInputBase<CalendarProps['value']>(field, fields.date as any, { value, onValueChange })
46
+ } = useInputBase<any>(field, fields.date as any, { value, onValueChange })
50
47
 
51
48
  const [inputHeight, setInputHeight] = useState(0)
52
49
 
53
50
  const [isOpen, toggle] = useInputOverlay(autoClosePeersCalendars)
54
51
 
55
52
  const formattedValue = useMemo(() => {
56
- const isRange = Array.isArray(inputValue)
57
-
58
- if (isRange ? inputValue?.some(v => !v) : !inputValue) return ''
59
-
60
- if (isRange) {
61
- return inputValue
62
- .map(date => dayjs.utc(date).format(format))
63
- .join(' - ')
53
+ if (!inputValue) return ''
54
+
55
+ if (Array.isArray(inputValue)) {
56
+ const filled = inputValue.filter(Boolean)
57
+ if (filled.length < inputValue.length) return ''
58
+ return filled.map((v) => dateUtils.removeTimezoneAndFormat(v)).join(' - ')
64
59
  }
65
-
66
- return dayjs.utc(inputValue).format(format)
60
+
61
+ return dateUtils.removeTimezoneAndFormat(inputValue)
67
62
  }, [inputValue, format])
68
-
63
+
69
64
  return (
70
65
  <View style={[styles.wrapper, { position: 'relative' }]}>
71
66
  <TextInput
@@ -108,7 +103,6 @@ export const CalendarInput = (props: CalendarInputProps) => {
108
103
  style={compositionStyles.calendar}
109
104
  value={inputValue}
110
105
  onValueChange={onInputValueChange}
111
- parseToDate
112
106
  {...calendarProps}
113
107
  />
114
108
  </Animated.View>
@@ -1,10 +1,10 @@
1
1
  import React, { forwardRef, useImperativeHandle, useRef } from 'react'
2
2
  import { MobileFile } from '@codeleap/types'
3
3
  import { parseFilePathData } from '@codeleap/utils'
4
- import { OSAlert } from '../../utils'
5
4
  import ImageCropPicker, { ImageOrVideo, Options } from 'react-native-image-crop-picker'
6
5
  import DocumentPicker from 'react-native-document-picker'
7
6
  import { FileInputImageSource, FileInputProps, FileInputRef, FileResult } from './types'
7
+ import { alert } from '@codeleap/modals'
8
8
 
9
9
  export * from './types'
10
10
 
@@ -35,13 +35,15 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
35
35
  onFileSelect,
36
36
  options,
37
37
  type = 'image',
38
- alertProps,
39
38
  pickerOptions,
40
- onOpenCamera = null,
41
39
  onOpenGallery = null,
42
40
  onOpenFileSystem = null,
43
41
  onError,
44
- } = fileInputProps
42
+ alertProps,
43
+ } = {
44
+ ...fileInputProps,
45
+ ...FileInput.defaultProps,
46
+ }
45
47
 
46
48
  const resolveWithFile = useRef<(file: FileResult[]) => any>()
47
49
 
@@ -56,6 +58,7 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
56
58
  async function openFileSystem() {
57
59
  try {
58
60
  let files = await DocumentPicker.pick(options)
61
+
59
62
  if (!Array.isArray(files)) {
60
63
  files = [files]
61
64
  }
@@ -103,22 +106,11 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
103
106
  } else if (imageSource === 'library') {
104
107
  onPress('library', options)
105
108
  } else {
106
- OSAlert.ask({
109
+ alert.ask({
107
110
  title: 'Change Image',
108
111
  body: 'Do you want to take a new picture or select an existing one?',
109
112
  ...alertProps,
110
113
  options: [
111
- {
112
- text: alertProps?.options?.[0]?.text || 'Camera',
113
- onPress: () => {
114
- if (onOpenCamera) {
115
- onOpenCamera(() => onPress('camera'))
116
- } else {
117
- onPress('camera')
118
- }
119
- },
120
- ...alertProps?.options?.[1],
121
- },
122
114
  {
123
115
  text: 'Library',
124
116
  onPress: () => {
@@ -128,26 +120,23 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
128
120
  onPress('library')
129
121
  }
130
122
  },
131
- ...alertProps?.options?.[2],
123
+ ...alertProps?.options?.[0],
132
124
  },
133
125
  {
134
126
  text: 'Cancel',
135
127
  style: 'cancel',
136
- onPress: () => { },
137
- ...alertProps?.options?.[0],
128
+ ...alertProps?.options?.[1]
138
129
  },
139
- ],
130
+ ]
140
131
  })
141
132
  }
142
133
  } else {
143
134
  if (onOpenFileSystem) {
144
135
  onOpenFileSystem(() => onPress('fs'))
145
136
  } else {
146
-
147
137
  onPress('fs')
148
138
  }
149
139
  }
150
-
151
140
  }
152
141
 
153
142
  useImperativeHandle(ref, () => ({
@@ -162,7 +151,9 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
162
151
  return null
163
152
  })
164
153
 
165
- export const FileInput = _FileInput as unknown as ((props: FileInputProps) => JSX.Element)
154
+ export const FileInput = _FileInput as unknown as ((props: FileInputProps) => JSX.Element) & { defaultProps: Partial<FileInputProps> }
155
+
156
+ FileInput.defaultProps = {}
166
157
 
167
158
  export const useFileInput = () => {
168
159
  const inputRef = useRef<FileInputRef>(null)
@@ -175,4 +166,4 @@ export const useFileInput = () => {
175
166
  openFilePicker,
176
167
  ref: inputRef as React.MutableRefObject<FileInputRef>,
177
168
  }
178
- }
169
+ }
@@ -1,7 +1,7 @@
1
1
  import { AnyRef, MobileInputFile } from '@codeleap/types'
2
2
  import { DocumentPickerOptions } from 'react-native-document-picker'
3
3
  import { Options } from 'react-native-image-crop-picker'
4
- import { OSAlert } from '../../utils'
4
+ import { AlertOptions } from '@codeleap/modals'
5
5
 
6
6
  export type FileInputImageSource = 'camera' | 'library' | 'fs'
7
7
 
@@ -17,11 +17,10 @@ export type FileInputProps = {
17
17
  options?: DocumentPickerOptions
18
18
  ref?: AnyRef<FileInputRef>
19
19
  type?: 'image' | 'anyFile'
20
- alertProps?: Parameters<typeof OSAlert.ask>[0]
20
+ alertProps?: AlertOptions & {}
21
21
  pickerOptions?: Partial<Options>
22
22
  required?: boolean
23
- onOpenCamera?: (resolve: (() => void)) => Promise<void>
24
23
  onOpenFileSystem?: (resolve: (() => void)) => Promise<void>
25
24
  onOpenGallery?: (resolve: (() => void)) => Promise<void>
26
25
  onError?: (error: any) => void
27
- }
26
+ }