@codeleap/mobile 5.4.5 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CalendarInput/index.js +9 -23
- package/dist/components/CalendarInput/index.js.map +1 -1
- package/dist/components/FileInput/index.js +3 -20
- package/dist/components/FileInput/index.js.map +1 -1
- package/dist/components/FileInput/types.d.ts +0 -3
- package/dist/components/InputBase/index.d.ts +6 -2
- package/dist/components/InputBase/index.js +14 -26
- package/dist/components/InputBase/index.js.map +1 -1
- package/dist/components/InputBase/types.d.ts +2 -2
- package/dist/components/InputOverlay/index.d.ts +8 -0
- package/dist/components/InputOverlay/index.js +75 -0
- package/dist/components/InputOverlay/index.js.map +1 -0
- package/dist/components/InputOverlay/store.d.ts +10 -0
- package/dist/components/InputOverlay/store.js +47 -0
- package/dist/components/InputOverlay/store.js.map +1 -0
- package/dist/components/InputOverlay/types.d.ts +22 -0
- package/dist/components/InputOverlay/types.js +2 -0
- package/dist/components/InputOverlay/types.js.map +1 -0
- package/dist/components/Scroll/index.d.ts +10 -2
- package/dist/components/Scroll/index.js +6 -22
- package/dist/components/Scroll/index.js.map +1 -1
- package/dist/components/TextInput/index.d.ts +10 -2
- package/dist/components/TextInput/index.js +2 -3
- package/dist/components/TextInput/index.js.map +1 -1
- package/dist/components/TextInput/useTextInput.js +2 -0
- package/dist/components/TextInput/useTextInput.js.map +1 -1
- package/dist/components/TimeInput/index.js +9 -24
- package/dist/components/TimeInput/index.js.map +1 -1
- package/dist/components/components.d.ts +1 -0
- package/dist/components/components.js +1 -0
- package/dist/components/components.js.map +1 -1
- package/dist/modules/backgroundTimer.js +3 -4
- package/dist/modules/backgroundTimer.js.map +1 -1
- package/package.json +17 -17
- package/package.json.bak +1 -1
- package/src/components/CalendarInput/index.tsx +31 -42
- package/src/components/FileInput/index.tsx +2 -25
- package/src/components/FileInput/types.ts +0 -3
- package/src/components/InputBase/index.tsx +18 -36
- package/src/components/InputBase/types.ts +2 -2
- package/src/components/InputOverlay/index.tsx +113 -0
- package/src/components/InputOverlay/store.ts +60 -0
- package/src/components/InputOverlay/types.ts +25 -0
- package/src/components/Scroll/index.tsx +6 -39
- package/src/components/TextInput/index.tsx +2 -3
- package/src/components/TextInput/useTextInput.ts +2 -0
- package/src/components/TimeInput/index.tsx +28 -41
- package/src/components/components.ts +2 -1
- package/src/modules/backgroundTimer.ts +6 -7
- package/dist/components/InputBase/useInputOverlay.d.ts +0 -1
- package/dist/components/InputBase/useInputOverlay.js +0 -30
- package/dist/components/InputBase/useInputOverlay.js.map +0 -1
- package/src/components/InputBase/useInputOverlay.ts +0 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TextInput/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TextInput/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAElF,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG;QACf,GAAG,SAAS,CAAC,YAAY;QACzB,GAAG,KAAK;KACT,CAAA;IAED,MAAM,EACJ,cAAc,EACd,MAAM,GACP,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAElC,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,KAAK,EACL,YAAY,EACZ,OAAO,EACP,WAAW,EACX,UAAU,EACV,KAAK,EACL,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,GAAG,cAAc,EAClB,GAAG,MAAM,CAAA;IAEV,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAE/D,MAAM,EACJ,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAA;IAEhE,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAElD,MAAM,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAA;IAE5C,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE;QACpF,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC,CAAC,QAAQ;QACjB,KAAK,EAAE,SAAS,IAAI,cAAc,EAAE,OAAO;KAC5C,CAAC,CAAA;IAEF,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,qBAAqB;QAC9B,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAY;QAC7D,SAAS,EAAE,GAAG,SAAS,oBAAoB;KAC5C,CAAC,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,SAAS,GAAG,cAAc,EAAE,SAAS,IAAI,qBAAqB,CAAA;IAEpE,MAAM,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;QAClC,YAAY,EAAE,gBAAgB;QAC9B,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,QAAQ;gBAAE,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAA;QAClD,CAAC;QACD,GAAG,OAAO;KACX,CAAC,CAAC,CAAC;QACF,YAAY,EAAE,kBAAkB;KACjC,CAAA;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC;QACpC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO,CAAC,SAAS,CACf,IAAI,cAAc,CAAC,CACnB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,GAAG,CAAC,CAAC,UAAU,CAAC,CAChB,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAClD,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3D,KAAK,CAAC,CAAC;YACL,GAAG,MAAM;YACT,YAAY,EAAE;gBACZ,MAAM,EAAE,YAAY;gBACpB,SAAS,IAAI,MAAM,CAAC,wBAAwB,CAAC;gBAC7C,gBAAgB,IAAI,MAAM,CAAC,+BAA+B,CAAC;aAC5D;SACF,CAAC,CACF,iBAAiB,CAAC,CAAC;YACjB,GAAG,CAAC,cAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC;YAC3C,OAAO;YACP,SAAS;YACT,eAAe,EAAE,KAAK;SACvB,CAAC,CACF,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,OAAO,CAAC,CAAC,SAAS,IAAI,cAAc,EAAE,OAAO,CAAC,CAC9C,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAEnB;IAAA,CAAC,YAAY,CACX,gBAAgB,CAAC,CAAC,KAAK,CAAC,CACxB,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CACtC,IAAI,eAAe,CAAC,CACpB,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAC9D,oBAAoB,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,CACxD,cAAc,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAChD,eAAe,CAAC,CAAC,MAAM,IAAI,eAAe,CAAC,CAC3C,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CACjD,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,IAAI,cAAc,CAAC,CACnB,KAAK,CAAC,CAAC,UAAU,CAAC,CAClB,YAAY,CAAC,CAAC,kBAAkB,CAAC,CACjC,MAAM,CAAC,CAAC,UAAU,CAAC,CACnB,OAAO,CAAC,CAAC,WAAW,CAAC,CACrB,KAAK,CAAC,CAAC;YACL,MAAM,EAAE,KAAK;YACb,SAAS,IAAI,MAAM,CAAC,iBAAiB,CAAC;YACtC,CAAC,SAAS,IAAI,cAAc,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC;YACjE,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC;YACjC,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC;YACtC,gBAAgB,IAAI,MAAM,CAAC,wBAAwB,CAAC;YACpD,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC;SAClC,CAAC,CACF,GAAG,CAAC,CAAC,aAAa,CAAC,CACnB,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAChD,IAAI,iBAAiB,CAAC,EAE1B;EAAA,EAAE,SAAS,CAAC,CAAA;AACd,CAAC,CAAA;AAED,SAAS,CAAC,iBAAiB,GAAG,WAAW,CAAA;AACzC,SAAS,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;AACjF,SAAS,CAAC,WAAW,GAAG,SAAS,CAAA;AAEjC,SAAS,CAAC,gBAAgB,GAAG,CAAsB,MAAS,EAAE,EAAE;IAC9D,OAAO,SAAiF,CAAA;AAC1F,CAAC,CAAA;AAED,SAAS,CAAC,YAAY,GAAG;IACvB,UAAU,EAAE,wBAAmC;IAC/C,WAAW,EAAE,yBAAoC;IACjD,gBAAgB,EAAE,KAAK;IACvB,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,KAAK;CACa,CAAA;AAE5B,mBAAmB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
2
|
import { useInputBase } from '../InputBase/useInputBase';
|
|
3
3
|
import { fields } from '@codeleap/form';
|
|
4
|
+
import { inputOverlayManager } from '../InputOverlay';
|
|
4
5
|
export function useTextInput(props) {
|
|
5
6
|
const { onFocus, onBlur, secure, field, autoAdjustSelection, selectionStart, masking, onChangeMask, multiline, forceError, value, onValueChange, } = props;
|
|
6
7
|
const [isFocused, setIsFocused] = useState(false);
|
|
@@ -30,6 +31,7 @@ export function useTextInput(props) {
|
|
|
30
31
|
if (autoAdjustSelection)
|
|
31
32
|
setCurrentSelection(null);
|
|
32
33
|
onFocus?.(e);
|
|
34
|
+
inputOverlayManager.closeAll();
|
|
33
35
|
}, [onFocus]);
|
|
34
36
|
const handleMaskChange = useCallback((masked, unmasked) => {
|
|
35
37
|
onInputValueChange(masking?.saveFormatted ? masked : masked);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTextInput.js","sourceRoot":"","sources":["../../../src/components/TextInput/useTextInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"useTextInput.js","sourceRoot":"","sources":["../../../src/components/TextInput/useTextInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { useCompositionStyles } from '@codeleap/styles';
|
|
3
3
|
import dayjs from 'dayjs';
|
|
4
|
-
import Animated, { FadeOut, FadeIn } from 'react-native-reanimated';
|
|
5
4
|
import { fields } from '@codeleap/form';
|
|
6
5
|
import DatePicker from 'react-native-date-picker';
|
|
7
6
|
import { useStylesFor } from '../../hooks';
|
|
@@ -9,7 +8,7 @@ import { useInputBase } from '../InputBase';
|
|
|
9
8
|
import { View } from '../View';
|
|
10
9
|
import { TextInput } from '../TextInput';
|
|
11
10
|
import { MobileStyleRegistry } from '../../Registry';
|
|
12
|
-
import {
|
|
11
|
+
import { InputOverlay, inputOverlayManager } from '../InputOverlay';
|
|
13
12
|
export * from './styles';
|
|
14
13
|
export * from './types';
|
|
15
14
|
export const TimeInput = (props) => {
|
|
@@ -20,32 +19,18 @@ export const TimeInput = (props) => {
|
|
|
20
19
|
const styles = useStylesFor(TimeInput.styleRegistryName, style);
|
|
21
20
|
const compositionStyles = useCompositionStyles(['input'], styles);
|
|
22
21
|
const { inputValue, onInputValueChange, } = useInputBase(field, fields.date, { value, onValueChange });
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
const { isOpen, toggle, id } = inputOverlayManager.use();
|
|
23
|
+
return (<InputOverlay.Layout style={styles.wrapper} position={timePickerPosition} gap={gap} isOpen={isOpen} mode={overlay ? 'overlay' : 'content'} hideOverlay={disabled} id={id} content={<View style={styles.timePicker}>
|
|
24
|
+
<DatePicker mode='time' theme='light' {...timePickerProps} onDateChange={onInputValueChange} date={inputValue ?? new Date()}/>
|
|
25
|
+
</View>}>
|
|
26
|
+
<TextInput placeholder='Select a time' disabled={disabled} {...textInputProps} style={compositionStyles.input} value={!inputValue ? '' : dayjs(inputValue).format(format)} onValueChange={() => inputValue} onPress={disabled ? undefined : toggle} focused={isOpen} leftIcon={!leftIcon ? null : {
|
|
27
27
|
...leftIcon,
|
|
28
28
|
onPress: toggle,
|
|
29
29
|
}} rightIcon={!rightIcon ? null : {
|
|
30
30
|
...rightIcon,
|
|
31
31
|
onPress: toggle,
|
|
32
|
-
}}
|
|
33
|
-
|
|
34
|
-
}} focused={isOpen} onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)}/>
|
|
35
|
-
|
|
36
|
-
{!isOpen || disabled ? null : (<Animated.View exiting={FadeOut.duration(150)} entering={FadeIn.duration(150)} style={overlay ? {
|
|
37
|
-
position: 'absolute',
|
|
38
|
-
zIndex: 1,
|
|
39
|
-
[timePickerPosition]: 0,
|
|
40
|
-
top: inputHeight + gap,
|
|
41
|
-
} : {
|
|
42
|
-
marginTop: gap,
|
|
43
|
-
}}>
|
|
44
|
-
<View style={styles.timePicker}>
|
|
45
|
-
<DatePicker mode='time' theme='light' {...timePickerProps} onDateChange={onInputValueChange} date={inputValue ?? new Date()}/>
|
|
46
|
-
</View>
|
|
47
|
-
</Animated.View>)}
|
|
48
|
-
</View>);
|
|
32
|
+
}}/>
|
|
33
|
+
</InputOverlay.Layout>);
|
|
49
34
|
};
|
|
50
35
|
TimeInput.styleRegistryName = 'TimeInput';
|
|
51
36
|
TimeInput.elements = ['wrapper', 'timePicker', 'input'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TimeInput/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TimeInput/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/components/components.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/components/components.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import BackgroundTimer from '@boterop/react-native-background-timer';
|
|
2
1
|
import { uuid } from '..';
|
|
3
2
|
const throttleTimerId = {};
|
|
4
3
|
export function throttle(func, ref, delay = 200) {
|
|
@@ -8,7 +7,7 @@ export function throttle(func, ref, delay = 200) {
|
|
|
8
7
|
if (throttleTimerId[ref]) {
|
|
9
8
|
return;
|
|
10
9
|
}
|
|
11
|
-
throttleTimerId[ref] =
|
|
10
|
+
throttleTimerId[ref] = setTimeout(function () {
|
|
12
11
|
func();
|
|
13
12
|
throttleTimerId[ref] = undefined;
|
|
14
13
|
}, delay);
|
|
@@ -20,9 +19,9 @@ export function debounce(func, ref, delay = 200) {
|
|
|
20
19
|
ref = uuid.v4();
|
|
21
20
|
}
|
|
22
21
|
if (debounceTimerId[ref]) {
|
|
23
|
-
|
|
22
|
+
clearTimeout(debounceTimerId[ref]);
|
|
24
23
|
}
|
|
25
|
-
debounceTimerId[ref] =
|
|
24
|
+
debounceTimerId[ref] = setTimeout(function () {
|
|
26
25
|
func();
|
|
27
26
|
debounceTimerId[ref] = undefined;
|
|
28
27
|
}, delay);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgroundTimer.js","sourceRoot":"","sources":["../../src/modules/backgroundTimer.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"backgroundTimer.js","sourceRoot":"","sources":["../../src/modules/backgroundTimer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AAEzB,MAAM,eAAe,GAAG,EAAE,CAAA;AAE1B,MAAM,UAAU,QAAQ,CAAC,IAAiB,EAAE,GAAY,EAAE,KAAK,GAAG,GAAG;IACnE,IAAI,CAAC,GAAG,EAAE;QACR,GAAG,GAAG,IAAI,CAAC,EAAE,EAAY,CAAA;KAC1B;IACD,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;QACxB,OAAM;KACP;IACD,eAAe,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAChC,IAAI,EAAE,CAAA;QACN,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAClC,CAAC,EAAE,KAAK,CAAC,CAAA;IAET,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,eAAe,GAAG,EAAE,CAAA;AAE1B,MAAM,UAAU,QAAQ,CAAC,IAAiB,EAAE,GAAY,EAAE,KAAK,GAAG,GAAG;IACnE,IAAI,CAAC,GAAG,EAAE;QACR,GAAG,GAAG,IAAI,CAAC,EAAE,EAAY,CAAA;KAC1B;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;QACxB,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAA;KACnC;IAED,eAAe,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAChC,IAAI,EAAE,CAAA;QACN,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAClC,CAAC,EAAE,KAAK,CAAC,CAAA;IAET,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codeleap/mobile",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.0",
|
|
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.
|
|
13
|
-
"@codeleap/utils": "5.
|
|
14
|
-
"@codeleap/hooks": "5.
|
|
15
|
-
"@codeleap/form": "5.
|
|
16
|
-
"@codeleap/query": "5.
|
|
17
|
-
"@codeleap/logger": "5.
|
|
18
|
-
"@codeleap/config": "5.
|
|
19
|
-
"@codeleap/modals": "5.
|
|
12
|
+
"@codeleap/types": "5.5.0",
|
|
13
|
+
"@codeleap/utils": "5.5.0",
|
|
14
|
+
"@codeleap/hooks": "5.5.0",
|
|
15
|
+
"@codeleap/form": "5.5.0",
|
|
16
|
+
"@codeleap/query": "5.5.0",
|
|
17
|
+
"@codeleap/logger": "5.5.0",
|
|
18
|
+
"@codeleap/config": "5.5.0",
|
|
19
|
+
"@codeleap/modals": "5.5.0"
|
|
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.
|
|
27
|
-
"@codeleap/utils": "5.
|
|
28
|
-
"@codeleap/hooks": "5.
|
|
29
|
-
"@codeleap/form": "5.
|
|
30
|
-
"@codeleap/query": "5.
|
|
31
|
-
"@codeleap/logger": "5.
|
|
32
|
-
"@codeleap/styles": "5.
|
|
33
|
-
"@codeleap/modals": "5.
|
|
26
|
+
"@codeleap/types": "5.5.0",
|
|
27
|
+
"@codeleap/utils": "5.5.0",
|
|
28
|
+
"@codeleap/hooks": "5.5.0",
|
|
29
|
+
"@codeleap/form": "5.5.0",
|
|
30
|
+
"@codeleap/query": "5.5.0",
|
|
31
|
+
"@codeleap/logger": "5.5.0",
|
|
32
|
+
"@codeleap/styles": "5.5.0",
|
|
33
|
+
"@codeleap/modals": "5.5.0",
|
|
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,16 +1,14 @@
|
|
|
1
|
-
import React, { useMemo
|
|
1
|
+
import React, { useMemo } from 'react'
|
|
2
2
|
import { AnyRecord, IJSX, StyledComponentProps, useCompositionStyles } from '@codeleap/styles'
|
|
3
3
|
import { MobileStyleRegistry } from '../../Registry'
|
|
4
4
|
import { useStylesFor } from '../../hooks'
|
|
5
5
|
import { CalendarInputProps } from './types'
|
|
6
|
-
import { View } from '../View'
|
|
7
6
|
import { Calendar } from '../Calendar'
|
|
8
7
|
import { TextInput } from '../TextInput'
|
|
9
|
-
import Animated, { FadeOut, FadeIn } from 'react-native-reanimated'
|
|
10
8
|
import { useInputBase } from '../InputBase'
|
|
11
9
|
import { fields } from '@codeleap/form'
|
|
12
|
-
import { useInputOverlay } from '../InputBase/useInputOverlay'
|
|
13
10
|
import { dateUtils } from '@codeleap/utils'
|
|
11
|
+
import { InputOverlay, inputOverlayManager } from '../InputOverlay'
|
|
14
12
|
|
|
15
13
|
export * from './styles'
|
|
16
14
|
export * from './types'
|
|
@@ -45,29 +43,50 @@ export const CalendarInput = (props: CalendarInputProps) => {
|
|
|
45
43
|
onInputValueChange,
|
|
46
44
|
} = useInputBase<any>(field, fields.date as any, { value, onValueChange })
|
|
47
45
|
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
const [isOpen, toggle] = useInputOverlay(autoClosePeersCalendars)
|
|
46
|
+
const { isOpen, toggle, id } = inputOverlayManager.use()
|
|
51
47
|
|
|
52
48
|
const formattedValue = useMemo(() => {
|
|
53
49
|
if (!inputValue) return ''
|
|
54
|
-
|
|
50
|
+
|
|
55
51
|
if (Array.isArray(inputValue)) {
|
|
56
52
|
const filled = inputValue.filter(Boolean)
|
|
57
53
|
if (filled.length < inputValue.length) return ''
|
|
58
54
|
return filled.map((v) => dateUtils.removeTimezoneAndFormat(v, format)).join(' - ')
|
|
59
55
|
}
|
|
60
|
-
|
|
56
|
+
|
|
61
57
|
return dateUtils.removeTimezoneAndFormat(inputValue, format)
|
|
62
58
|
}, [inputValue, format])
|
|
63
|
-
|
|
59
|
+
|
|
64
60
|
return (
|
|
65
|
-
<
|
|
61
|
+
<InputOverlay.Layout
|
|
62
|
+
style={styles.wrapper}
|
|
63
|
+
position={calendarPosition}
|
|
64
|
+
gap={gap}
|
|
65
|
+
isOpen={isOpen}
|
|
66
|
+
mode={overlay ? 'overlay' : 'content'}
|
|
67
|
+
hideOverlay={disabled}
|
|
68
|
+
id={id}
|
|
69
|
+
content={
|
|
70
|
+
<Calendar
|
|
71
|
+
style={compositionStyles.calendar}
|
|
72
|
+
value={inputValue}
|
|
73
|
+
onValueChange={onInputValueChange}
|
|
74
|
+
{...calendarProps}
|
|
75
|
+
/>
|
|
76
|
+
}
|
|
77
|
+
>
|
|
66
78
|
<TextInput
|
|
67
79
|
placeholder='Select Date'
|
|
68
80
|
disabled={disabled}
|
|
69
81
|
{...textInputProps}
|
|
70
82
|
style={compositionStyles.input}
|
|
83
|
+
value={formattedValue}
|
|
84
|
+
onValueChange={() => inputValue}
|
|
85
|
+
onPress={disabled ? undefined : toggle}
|
|
86
|
+
innerWrapperProps={{
|
|
87
|
+
rippleDisabled: true,
|
|
88
|
+
}}
|
|
89
|
+
focused={isOpen}
|
|
71
90
|
leftIcon={!leftIcon ? null : {
|
|
72
91
|
...leftIcon,
|
|
73
92
|
onPress: toggle,
|
|
@@ -76,38 +95,8 @@ export const CalendarInput = (props: CalendarInputProps) => {
|
|
|
76
95
|
...rightIcon,
|
|
77
96
|
onPress: toggle,
|
|
78
97
|
}}
|
|
79
|
-
value={formattedValue}
|
|
80
|
-
onValueChange={() => inputValue}
|
|
81
|
-
onPress={disabled ? null : toggle}
|
|
82
|
-
innerWrapperProps={{
|
|
83
|
-
rippleDisabled: true,
|
|
84
|
-
}}
|
|
85
|
-
focused={isOpen}
|
|
86
|
-
onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)}
|
|
87
98
|
/>
|
|
88
|
-
|
|
89
|
-
{!isOpen || disabled ? null : (
|
|
90
|
-
<Animated.View
|
|
91
|
-
exiting={FadeOut.duration(150)}
|
|
92
|
-
entering={FadeIn.duration(150)}
|
|
93
|
-
style={overlay ? {
|
|
94
|
-
position: 'absolute',
|
|
95
|
-
zIndex: 1,
|
|
96
|
-
[calendarPosition]: 0,
|
|
97
|
-
top: inputHeight + gap,
|
|
98
|
-
} : {
|
|
99
|
-
marginTop: gap,
|
|
100
|
-
}}
|
|
101
|
-
>
|
|
102
|
-
<Calendar
|
|
103
|
-
style={compositionStyles.calendar}
|
|
104
|
-
value={inputValue}
|
|
105
|
-
onValueChange={onInputValueChange}
|
|
106
|
-
{...calendarProps}
|
|
107
|
-
/>
|
|
108
|
-
</Animated.View>
|
|
109
|
-
)}
|
|
110
|
-
</View>
|
|
99
|
+
</InputOverlay.Layout>
|
|
111
100
|
)
|
|
112
101
|
}
|
|
113
102
|
|
|
@@ -2,7 +2,6 @@ import React, { forwardRef, useImperativeHandle, useRef } from 'react'
|
|
|
2
2
|
import { MobileFile } from '@codeleap/types'
|
|
3
3
|
import { parseFilePathData } from '@codeleap/utils'
|
|
4
4
|
import ImageCropPicker, { ImageOrVideo, Options } from 'react-native-image-crop-picker'
|
|
5
|
-
import DocumentPicker from 'react-native-document-picker'
|
|
6
5
|
import { FileInputImageSource, FileInputProps, FileInputRef, FileResult } from './types'
|
|
7
6
|
import { alert } from '@codeleap/modals'
|
|
8
7
|
|
|
@@ -33,12 +32,10 @@ function parsePickerData(data: ImageOrVideo): FileResult {
|
|
|
33
32
|
const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref) => {
|
|
34
33
|
const {
|
|
35
34
|
onFileSelect,
|
|
36
|
-
options,
|
|
37
35
|
type = 'image',
|
|
38
36
|
pickerOptions,
|
|
39
37
|
onOpenGallery = null,
|
|
40
38
|
onOpenFileSystem = null,
|
|
41
|
-
onError,
|
|
42
39
|
alertProps,
|
|
43
40
|
} = {
|
|
44
41
|
...fileInputProps,
|
|
@@ -55,26 +52,6 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
|
|
|
55
52
|
onFileSelect?.(files)
|
|
56
53
|
}
|
|
57
54
|
|
|
58
|
-
async function openFileSystem() {
|
|
59
|
-
try {
|
|
60
|
-
let files = await DocumentPicker.pick(options)
|
|
61
|
-
|
|
62
|
-
if (!Array.isArray(files)) {
|
|
63
|
-
files = [files]
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const filesWithPreview = files.map((file) => ({ preview: file.uri, file })) as FileResult[]
|
|
67
|
-
|
|
68
|
-
handleResolve?.(filesWithPreview)
|
|
69
|
-
} catch (err) {
|
|
70
|
-
handleError(err)
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function handleError(err) {
|
|
75
|
-
onError?.(err)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
55
|
const mergedOptions = {
|
|
79
56
|
...pickerDefaults,
|
|
80
57
|
...pickerOptions,
|
|
@@ -92,7 +69,7 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
|
|
|
92
69
|
|
|
93
70
|
const onPress = (open?: FileInputImageSource, options?: Options) => {
|
|
94
71
|
if (open == 'fs') {
|
|
95
|
-
openFileSystem()
|
|
72
|
+
// openFileSystem()
|
|
96
73
|
} else {
|
|
97
74
|
const call = open === 'camera' ? 'openCamera' : 'openPicker'
|
|
98
75
|
ImageCropPicker[call]({ ...mergedOptions, ...(options || {}) }).then(handlePickerResolution)
|
|
@@ -132,7 +109,7 @@ const _FileInput = forwardRef<FileInputRef, FileInputProps>((fileInputProps, ref
|
|
|
132
109
|
}
|
|
133
110
|
} else {
|
|
134
111
|
if (onOpenFileSystem) {
|
|
135
|
-
onOpenFileSystem(() => onPress('fs'))
|
|
112
|
+
// onOpenFileSystem(() => onPress('fs'))
|
|
136
113
|
} else {
|
|
137
114
|
onPress('fs')
|
|
138
115
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AnyRef, MobileInputFile } from '@codeleap/types'
|
|
2
|
-
import { DocumentPickerOptions } from 'react-native-document-picker'
|
|
3
2
|
import { Options } from 'react-native-image-crop-picker'
|
|
4
3
|
import { AlertOptions } from '@codeleap/modals'
|
|
5
4
|
|
|
@@ -14,7 +13,6 @@ export type FileInputRef = {
|
|
|
14
13
|
export type FileInputProps = {
|
|
15
14
|
mode: 'hidden' | 'button'
|
|
16
15
|
onFileSelect?: (files: FileResult[]) => void
|
|
17
|
-
options?: DocumentPickerOptions
|
|
18
16
|
ref?: AnyRef<FileInputRef>
|
|
19
17
|
type?: 'image' | 'anyFile'
|
|
20
18
|
alertProps?: AlertOptions & {}
|
|
@@ -22,5 +20,4 @@ export type FileInputProps = {
|
|
|
22
20
|
required?: boolean
|
|
23
21
|
onOpenFileSystem?: (resolve: (() => void)) => Promise<void>
|
|
24
22
|
onOpenGallery?: (resolve: (() => void)) => Promise<void>
|
|
25
|
-
onError?: (error: any) => void
|
|
26
23
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { TypeGuards } from '@codeleap/types'
|
|
3
3
|
import { getRenderedComponent } from '@codeleap/utils'
|
|
4
4
|
import { ActionIcon, ActionIconProps } from '../ActionIcon'
|
|
@@ -7,8 +7,6 @@ import { useInputBaseStyles } from './styles'
|
|
|
7
7
|
import { InputBaseProps } from './types'
|
|
8
8
|
import { Text } from '../Text'
|
|
9
9
|
import RNAnimated, { FadeIn, FadeOut } from 'react-native-reanimated'
|
|
10
|
-
import { View as RNView } from 'react-native'
|
|
11
|
-
import { StyledComponentProps, StyledComponentWithProps } from '@codeleap/styles'
|
|
12
10
|
|
|
13
11
|
export { useInputBase } from './useInputBase'
|
|
14
12
|
|
|
@@ -23,11 +21,7 @@ export const InputBaseDefaultOrder: InputBaseProps['order'] = [
|
|
|
23
21
|
'error',
|
|
24
22
|
]
|
|
25
23
|
|
|
26
|
-
const
|
|
27
|
-
return <>{props.children}</>
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export const InputBase = forwardRef<RNView, InputBaseProps>((props: InputBaseProps, ref) => {
|
|
24
|
+
export const InputBase = (props: InputBaseProps) => {
|
|
31
25
|
const {
|
|
32
26
|
children,
|
|
33
27
|
error = null,
|
|
@@ -35,9 +29,9 @@ export const InputBase = forwardRef<RNView, InputBaseProps>((props: InputBasePro
|
|
|
35
29
|
description = null,
|
|
36
30
|
leftIcon = null,
|
|
37
31
|
rightIcon = null,
|
|
38
|
-
wrapper
|
|
32
|
+
wrapper,
|
|
39
33
|
debugName,
|
|
40
|
-
innerWrapper
|
|
34
|
+
innerWrapper,
|
|
41
35
|
focused,
|
|
42
36
|
innerWrapperProps = {},
|
|
43
37
|
wrapperProps = {},
|
|
@@ -46,6 +40,7 @@ export const InputBase = forwardRef<RNView, InputBaseProps>((props: InputBasePro
|
|
|
46
40
|
style,
|
|
47
41
|
labelAsRow,
|
|
48
42
|
hideErrorMessage,
|
|
43
|
+
ref,
|
|
49
44
|
...otherProps
|
|
50
45
|
} = {
|
|
51
46
|
...InputBase.defaultProps,
|
|
@@ -68,26 +63,9 @@ export const InputBase = forwardRef<RNView, InputBaseProps>((props: InputBasePro
|
|
|
68
63
|
dismissKeyboard: false,
|
|
69
64
|
})
|
|
70
65
|
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const _error = TypeGuards.isString(error) ? <Text text={error} style={styles.errorStyle} /> : error
|
|
74
|
-
|
|
75
|
-
const _description = TypeGuards.isString(description) ? <Text text={description} style={styles.descriptionStyle} /> : description
|
|
66
|
+
const WrapperComponent = wrapper ?? View
|
|
76
67
|
|
|
77
|
-
const
|
|
78
|
-
label: labelAsRow ? <View style={styles.labelRowStyle}>
|
|
79
|
-
{_label}
|
|
80
|
-
{_description}
|
|
81
|
-
</View> : _label,
|
|
82
|
-
description: labelAsRow ? null : _description,
|
|
83
|
-
innerWrapper: <InnerWrapperComponent style={[
|
|
84
|
-
styles.innerWrapperStyle,
|
|
85
|
-
]} {...innerWrapperProps}>
|
|
86
|
-
{_leftIcon}
|
|
87
|
-
{children}
|
|
88
|
-
{_rightIcon}
|
|
89
|
-
</InnerWrapperComponent>,
|
|
90
|
-
}
|
|
68
|
+
const InnerWrapperComponent = innerWrapper ?? View
|
|
91
69
|
|
|
92
70
|
return <WrapperComponent
|
|
93
71
|
{...otherProps}
|
|
@@ -95,19 +73,23 @@ export const InputBase = forwardRef<RNView, InputBaseProps>((props: InputBasePro
|
|
|
95
73
|
style={styles.wrapperStyle}
|
|
96
74
|
ref={ref}
|
|
97
75
|
>
|
|
98
|
-
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
76
|
+
{TypeGuards.isString(label) ? <Text text={label} style={styles.labelStyle} /> : label}
|
|
77
|
+
|
|
78
|
+
{TypeGuards.isString(description) ? <Text text={description} style={styles.descriptionStyle} /> : description}
|
|
79
|
+
|
|
80
|
+
<InnerWrapperComponent style={styles.innerWrapperStyle} {...innerWrapperProps}>
|
|
81
|
+
{_leftIcon}
|
|
82
|
+
{children}
|
|
83
|
+
{_rightIcon}
|
|
84
|
+
</InnerWrapperComponent>
|
|
103
85
|
|
|
104
86
|
{hideErrorMessage || !error ? null : (
|
|
105
87
|
<RNAnimated.View exiting={FadeOut.duration(100)} entering={FadeIn.duration(200)}>
|
|
106
|
-
{
|
|
88
|
+
{TypeGuards.isString(error) ? <Text text={error} style={styles.errorStyle} /> : error}
|
|
107
89
|
</RNAnimated.View>
|
|
108
90
|
)}
|
|
109
91
|
</WrapperComponent>
|
|
110
|
-
}
|
|
92
|
+
}
|
|
111
93
|
|
|
112
94
|
InputBase.elements = ['wrapper', 'innerWrapper', 'label', 'errorMessage', 'description', 'icon', 'leftIcon', 'rightIcon']
|
|
113
95
|
|
|
@@ -13,9 +13,9 @@ export type InputBaseProps = React.PropsWithChildren<{
|
|
|
13
13
|
error?: React.ReactNode
|
|
14
14
|
leftIcon?: IconProp
|
|
15
15
|
rightIcon?: IconProp
|
|
16
|
-
wrapper?:
|
|
16
|
+
wrapper?: (props: any) => JSX.Element
|
|
17
17
|
wrapperProps?: any
|
|
18
|
-
innerWrapper?:
|
|
18
|
+
innerWrapper?: (props: any) => JSX.Element
|
|
19
19
|
innerWrapperProps?: any
|
|
20
20
|
description?: React.ReactNode
|
|
21
21
|
debugName?: string
|