@codeleap/mobile 5.4.0 → 5.4.1

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,82 @@
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
+ dayjs.extend(isSameOrBefore);
9
8
  export * from './styles';
10
9
  export * from './types';
10
+ const DATE_FORMAT = 'YYYY-MM-DD';
11
+ const formatDate = (date) => {
12
+ return dayjs(date).startOf('day').format(DATE_FORMAT);
13
+ };
11
14
  export const Calendar = (props) => {
12
- const { style, value, onValueChange, parseToDate, ...calendarProps } = props;
15
+ const { style, value, onValueChange, ...calendarProps } = props;
13
16
  const styles = useStylesFor(Calendar.styleRegistryName, style);
14
- const isDateValue = TypeGuards.isInstance(value, Date);
15
- const isDateRange = Array.isArray(value);
17
+ const isRange = Array.isArray(value);
16
18
  const stringValue = useMemo(() => {
17
- if (isDateRange) {
18
- return value.map(date => isDateValue ? dayjs.utc(date).format('YYYY-MM-DD') : date ?? '');
19
+ if (!value)
20
+ return isRange ? [] : '';
21
+ if (isRange) {
22
+ return value.map(v => v ? formatDate(v) : '');
19
23
  }
20
- return isDateValue ? dayjs.utc(value).format('YYYY-MM-DD') : value ?? '';
21
- }, [value]);
24
+ return formatDate(value);
25
+ }, [value, isRange]);
22
26
  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;
27
+ if (!isRange) {
28
+ return stringValue ? { [stringValue]: { selected: true } } : {};
46
29
  }
47
- return { [stringValue]: { selected: true } };
48
- }, [stringValue]);
49
- const onChange = useCallback((date) => {
50
- if (isDateRange) {
51
- const newValue = Array.isArray(value) ? [...value] : [];
30
+ const rangeValues = stringValue;
31
+ if (rangeValues.length === 0)
32
+ return {};
33
+ if (rangeValues.length === 1) {
34
+ return { [rangeValues[0]]: { selected: true } };
35
+ }
36
+ const [start, end] = rangeValues;
37
+ const startDate = dayjs(start);
38
+ const endDate = dayjs(end);
39
+ const marked = {};
40
+ let current = startDate;
41
+ while (current.isSameOrBefore(endDate)) {
42
+ const dateStr = formatDate(current);
43
+ marked[dateStr] = {
44
+ selected: true,
45
+ ...(current.isSame(startDate) && { startingDay: true }),
46
+ ...(current.isSame(endDate) && { endingDay: true }),
47
+ };
48
+ current = current.add(1, 'day');
49
+ }
50
+ return marked;
51
+ }, [stringValue, isRange]);
52
+ const handleDateChange = useCallback((date) => {
53
+ if (!onValueChange)
54
+ return;
55
+ const selected = dayjs(date.dateString).startOf('day');
56
+ if (isRange) {
57
+ const current = Array.isArray(value) ? value : [];
52
58
  let newDates = [];
53
- if (newValue.length === 0 || newValue.length === 2) {
54
- newDates = [date.dateString];
59
+ if (current.length === 0 || current.length === 2) {
60
+ newDates = [selected];
55
61
  }
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
- }
62
+ else if (current.length === 1) {
63
+ const first = dayjs(current[0]).startOf('day');
64
+ newDates = first.isAfter(selected)
65
+ ? [selected, first]
66
+ : [first, selected];
65
67
  }
66
- const parsedDates = isDateValue || parseToDate ?
67
- newDates.map(d => dayjs(d).toDate()) :
68
- newDates;
69
- onValueChange?.(parsedDates);
68
+ onValueChange(newDates);
70
69
  }
71
70
  else {
72
- const newValue = isDateValue || parseToDate ? dayjs(date.dateString).toDate() : date.dateString;
73
- onValueChange?.(newValue);
71
+ onValueChange(selected);
74
72
  }
75
- }, [onValueChange, value]);
73
+ }, [onValueChange, value, isRange]);
76
74
  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={{
75
+ return isRange
76
+ ? (Array.isArray(stringValue) ? stringValue[0] : '')
77
+ : stringValue;
78
+ }, [stringValue, isRange]);
79
+ return (<RNCalendar onDayPress={handleDateChange} current={currentValue} monthFormat={'MMMM yyyy'} {...calendarProps} markedDates={{
80
80
  ...markedDates,
81
81
  ...calendarProps?.markedDates
82
82
  }} style={styles?.wrapper} headerStyle={styles?.header} theme={{
@@ -90,8 +90,6 @@ Calendar.rootElement = 'wrapper';
90
90
  Calendar.withVariantTypes = (styles) => {
91
91
  return Calendar;
92
92
  };
93
- Calendar.defaultProps = {
94
- parseToDate: false,
95
- };
93
+ Calendar.defaultProps = {};
96
94
  MobileStyleRegistry.registerComponent(Calendar);
97
95
  //# 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
  };
@@ -6,12 +6,10 @@ import { View } from '../View';
6
6
  import { Calendar } from '../Calendar';
7
7
  import { TextInput } from '../TextInput';
8
8
  import dayjs from 'dayjs';
9
- import utc from 'dayjs/plugin/utc';
10
9
  import Animated, { FadeOut, FadeIn } from 'react-native-reanimated';
11
10
  import { useInputBase } from '../InputBase';
12
11
  import { fields } from '@codeleap/form';
13
12
  import { useInputOverlay } from '../InputBase/useInputOverlay';
14
- dayjs.extend(utc);
15
13
  export * from './styles';
16
14
  export * from './types';
17
15
  export const CalendarInput = (props) => {
@@ -25,15 +23,16 @@ 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
+ const normalize = (d) => dayjs(d).startOf('day').format(format);
27
+ if (!inputValue)
30
28
  return '';
31
- if (isRange) {
32
- return inputValue
33
- .map(date => dayjs.utc(date).format(format))
34
- .join(' - ');
29
+ if (Array.isArray(inputValue)) {
30
+ const filled = inputValue.filter(Boolean);
31
+ if (filled.length < inputValue.length)
32
+ return '';
33
+ return filled.map(normalize).join(' - ');
35
34
  }
36
- return dayjs.utc(inputValue).format(format);
35
+ return normalize(inputValue);
37
36
  }, [inputValue, format]);
38
37
  return (<View style={[styles.wrapper, { position: 'relative' }]}>
39
38
  <TextInput placeholder='Select Date' disabled={disabled} {...textInputProps} style={compositionStyles.input} leftIcon={!leftIcon ? null : {
@@ -54,7 +53,7 @@ export const CalendarInput = (props) => {
54
53
  } : {
55
54
  marginTop: gap,
56
55
  }}>
57
- <Calendar style={compositionStyles.calendar} value={inputValue} onValueChange={onInputValueChange} parseToDate {...calendarProps}/>
56
+ <Calendar style={compositionStyles.calendar} value={inputValue} onValueChange={onInputValueChange} {...calendarProps}/>
58
57
  </Animated.View>)}
59
58
  </View>);
60
59
  };
@@ -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.1",
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.1",
13
+ "@codeleap/utils": "5.4.1",
14
+ "@codeleap/hooks": "5.4.1",
15
+ "@codeleap/form": "5.4.1",
16
+ "@codeleap/query": "5.4.1",
17
+ "@codeleap/logger": "5.4.1",
18
+ "@codeleap/config": "5.4.1",
19
+ "@codeleap/modals": "5.4.1"
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.1",
27
+ "@codeleap/utils": "5.4.1",
28
+ "@codeleap/hooks": "5.4.1",
29
+ "@codeleap/form": "5.4.1",
30
+ "@codeleap/query": "5.4.1",
31
+ "@codeleap/logger": "5.4.1",
32
+ "@codeleap/styles": "5.4.1",
33
+ "@codeleap/modals": "5.4.1",
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.1",
4
4
  "main": "src/index.ts",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -1,116 +1,110 @@
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'
10
9
 
11
- dayjs.extend(utc)
10
+ dayjs.extend(isSameOrBefore)
12
11
 
13
12
  export * from './styles'
14
13
  export * from './types'
15
14
 
15
+ const DATE_FORMAT = 'YYYY-MM-DD'
16
+
17
+ const formatDate = (date: Dayjs | Date | string): string => {
18
+ return dayjs(date).startOf('day').format(DATE_FORMAT)
19
+ }
20
+
16
21
  export const Calendar = (props: CalendarProps) => {
17
22
  const {
18
23
  style,
19
24
  value,
20
25
  onValueChange,
21
- parseToDate,
22
26
  ...calendarProps
23
27
  } = props
24
28
 
25
29
  const styles = useStylesFor(Calendar.styleRegistryName, style)
26
30
 
27
- const isDateValue = TypeGuards.isInstance(value, Date)
28
- const isDateRange = Array.isArray(value)
31
+ const isRange = Array.isArray(value)
29
32
 
30
33
  const stringValue = useMemo(() => {
31
- if (isDateRange) {
32
- return value.map(date =>
33
- isDateValue ? dayjs.utc(date).format('YYYY-MM-DD') : date ?? ''
34
- )
34
+ if (!value) return isRange ? [] : ''
35
+
36
+ if (isRange) {
37
+ return (value as any).map(v => v ? formatDate(v) : '')
35
38
  }
36
39
 
37
- return isDateValue ? dayjs.utc(value).format('YYYY-MM-DD') : value ?? ''
38
- }, [value])
40
+ return formatDate(value)
41
+ }, [value, isRange])
39
42
 
40
43
  const markedDates = useMemo(() => {
41
- if (isDateRange && Array.isArray(stringValue)) {
42
- if (stringValue.length === 0) return {}
43
- if (stringValue.length === 1) {
44
- const [start] = [...stringValue]
44
+ if (!isRange) {
45
+ return stringValue ? { [stringValue as string]: { selected: true } } : {}
46
+ }
45
47
 
46
- const dateStr = dayjs(start).format('YYYY-MM-DD')
48
+ const rangeValues = stringValue as string[]
49
+ if (rangeValues.length === 0) return {}
47
50
 
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')
51
+ if (rangeValues.length === 1) {
52
+ return { [rangeValues[0]]: { selected: true } }
53
+ }
54
+
55
+ const [start, end] = rangeValues
56
+ const startDate = dayjs(start)
57
+ const endDate = dayjs(end)
58
+ const marked: Record<string, any> = {}
59
+ let current = startDate
60
+
61
+ while (current.isSameOrBefore(endDate)) {
62
+ const dateStr = formatDate(current)
63
+ marked[dateStr] = {
64
+ selected: true,
65
+ ...(current.isSame(startDate) && { startingDay: true }),
66
+ ...(current.isSame(endDate) && { endingDay: true }),
69
67
  }
70
-
71
- return markedDates
68
+ current = current.add(1, 'day')
72
69
  }
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
- }
70
+
71
+ return marked
72
+ }, [stringValue, isRange])
73
+
74
+ const handleDateChange = useCallback((date: DateData) => {
75
+ if (!onValueChange) return
76
+
77
+ const selected = dayjs(date.dateString).startOf('day')
78
+
79
+ if (isRange) {
80
+ const current = Array.isArray(value) ? value : []
81
+ let newDates: Dayjs[] = []
82
+
83
+ if (current.length === 0 || current.length === 2) {
84
+ newDates = [selected]
85
+ } else if (current.length === 1) {
86
+ const first = dayjs(current[0]).startOf('day')
87
+ newDates = first.isAfter(selected)
88
+ ? [selected, first]
89
+ : [first, selected]
93
90
  }
94
-
95
- const parsedDates = isDateValue || parseToDate ?
96
- newDates.map(d => dayjs(d).toDate()) :
97
- newDates
98
-
99
- onValueChange?.(parsedDates)
91
+
92
+ onValueChange(newDates)
100
93
  } else {
101
- const newValue = isDateValue || parseToDate ? dayjs(date.dateString).toDate() : date.dateString
102
- onValueChange?.(newValue)
94
+ onValueChange(selected)
103
95
  }
104
- }, [onValueChange, value])
96
+ }, [onValueChange, value, isRange])
105
97
 
106
98
  const currentValue = useMemo(() => {
107
- return isDateRange ? (Array.isArray(stringValue) ? stringValue[0] : '') : stringValue
108
- }, [stringValue])
109
-
99
+ return isRange
100
+ ? (Array.isArray(stringValue) ? stringValue[0] : '')
101
+ : stringValue
102
+ }, [stringValue, isRange])
103
+
110
104
  return (
111
105
  <RNCalendar
112
- onDayPress={onChange}
113
- current={currentValue}
106
+ onDayPress={handleDateChange}
107
+ current={currentValue as string}
114
108
  monthFormat={'MMMM yyyy'}
115
109
  {...calendarProps}
116
110
  markedDates={{
@@ -135,8 +129,6 @@ Calendar.withVariantTypes = <S extends AnyRecord>(styles: S) => {
135
129
  return Calendar as (props: StyledComponentProps<CalendarProps, typeof styles>) => IJSX
136
130
  }
137
131
 
138
- Calendar.defaultProps = {
139
- parseToDate: false,
140
- } as Partial<CalendarProps>
132
+ Calendar.defaultProps = {} as Partial<CalendarProps>
141
133
 
142
134
  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,17 +4,14 @@ 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
9
  import dayjs from 'dayjs'
10
- import utc from 'dayjs/plugin/utc'
11
10
  import Animated, { FadeOut, FadeIn } from 'react-native-reanimated'
12
11
  import { useInputBase } from '../InputBase'
13
12
  import { fields } from '@codeleap/form'
14
13
  import { useInputOverlay } from '../InputBase/useInputOverlay'
15
14
 
16
- dayjs.extend(utc)
17
-
18
15
  export * from './styles'
19
16
  export * from './types'
20
17
 
@@ -46,26 +43,26 @@ 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
+ const normalize = (d: any) => dayjs(d).startOf('day').format(format)
54
+
55
+ if (!inputValue) return ''
56
+
57
+ if (Array.isArray(inputValue)) {
58
+ const filled = inputValue.filter(Boolean)
59
+ if (filled.length < inputValue.length) return ''
60
+ return filled.map(normalize).join(' - ')
64
61
  }
65
-
66
- return dayjs.utc(inputValue).format(format)
62
+
63
+ return normalize(inputValue)
67
64
  }, [inputValue, format])
68
-
65
+
69
66
  return (
70
67
  <View style={[styles.wrapper, { position: 'relative' }]}>
71
68
  <TextInput
@@ -108,7 +105,6 @@ export const CalendarInput = (props: CalendarInputProps) => {
108
105
  style={compositionStyles.calendar}
109
106
  value={inputValue}
110
107
  onValueChange={onInputValueChange}
111
- parseToDate
112
108
  {...calendarProps}
113
109
  />
114
110
  </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
+ }