@widergy/mobile-ui 1.18.1 → 1.18.3
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/CHANGELOG.md +14 -0
- package/lib/components/CheckList/components/CheckBoxRenderer/index.js +8 -10
- package/lib/components/Label/propTypes.js +2 -5
- package/lib/components/UTAutocomplete/index.js +5 -11
- package/lib/components/UTBadge/index.js +2 -3
- package/lib/components/UTBaseInputField/README.md +31 -22
- package/lib/components/UTBaseInputField/components/ActionAdornment/index.js +6 -3
- package/lib/components/UTBaseInputField/constants.js +3 -1
- package/lib/components/UTBaseInputField/index.js +17 -6
- package/lib/components/UTBaseInputField/proptypes.js +10 -20
- package/lib/components/UTBaseInputField/theme.js +1 -2
- package/lib/components/UTButton/proptypes.js +4 -5
- package/lib/components/UTCBUInput/index.js +11 -12
- package/lib/components/UTCheckBox/README.md +14 -14
- package/lib/components/UTCheckBox/index.js +11 -6
- package/lib/components/UTCheckBox/proptypes.js +3 -4
- package/lib/components/UTCheckBox/theme.js +11 -4
- package/lib/components/UTCheckList/README.MD +22 -32
- package/lib/components/UTCheckList/index.js +6 -7
- package/lib/components/UTCheckList/proptypes.js +12 -24
- package/lib/components/UTFieldLabel/index.js +11 -13
- package/lib/components/UTIcon/index.js +2 -3
- package/lib/components/UTPasswordField/versions/V1/constants.js +4 -0
- package/lib/components/UTPasswordField/versions/V1/index.js +12 -13
- package/lib/components/UTPhoneInput/index.js +26 -27
- package/lib/components/UTProductItem/index.js +3 -3
- package/lib/components/UTSearchField/README.md +14 -13
- package/lib/components/UTSearchField/index.js +6 -4
- package/lib/components/UTSearchField/proptypes.js +5 -9
- package/lib/components/UTSelect/versions/V1/README.md +29 -35
- package/lib/components/UTSelect/versions/V1/index.js +73 -44
- package/lib/components/UTSelect/versions/V1/proptypes.js +17 -16
- package/lib/components/UTSelect/versions/V1/styles.js +3 -0
- package/lib/components/UTSelect/versions/V1/utils.js +21 -0
- package/lib/components/UTSelectableCard/index.js +5 -2
- package/lib/components/UTTextInput/versions/V1/README.md +35 -34
- package/lib/components/UTTextInput/versions/V1/components/TextInputField/index.js +13 -14
- package/lib/components/UTTextInput/versions/V1/index.js +12 -10
- package/lib/components/UTTextInput/versions/V1/proptypes.js +20 -19
- package/lib/components/UTValidation/index.js +3 -3
- package/lib/components/UTValidation/styles.js +3 -0
- package/lib/constants/inputs.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.18.3](https://github.com/widergy/mobile-ui/compare/v1.18.2...v1.18.3) (2024-08-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* utautocomplete updated and utvalidation fix ([#341](https://github.com/widergy/mobile-ui/issues/341)) ([33107d3](https://github.com/widergy/mobile-ui/commit/33107d3a08812a0ef6eb9625fefc1a2608a7368e))
|
|
7
|
+
|
|
8
|
+
## [1.18.2](https://github.com/widergy/mobile-ui/compare/v1.18.1...v1.18.2) (2024-08-19)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* select V1 fixes ([#327](https://github.com/widergy/mobile-ui/issues/327)) ([94b61d6](https://github.com/widergy/mobile-ui/commit/94b61d6145e2a9477c50ad2a8a522734c5aa0307))
|
|
14
|
+
|
|
1
15
|
## [1.18.1](https://github.com/widergy/mobile-ui/compare/v1.18.0...v1.18.1) (2024-08-12)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
/* eslint-disable react/forbid-prop-types */
|
|
2
1
|
import React, { memo } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { bool, string, func, number, shape, any } from 'prop-types';
|
|
2
|
+
import { bool, string, func, number, object } from 'prop-types';
|
|
5
3
|
|
|
6
4
|
import Checkbox from '../../../Checkbox/index';
|
|
7
5
|
|
|
@@ -48,18 +46,18 @@ const CheckBoxRenderer = ({
|
|
|
48
46
|
};
|
|
49
47
|
|
|
50
48
|
CheckBoxRenderer.propTypes = {
|
|
51
|
-
labelsContainerStyle:
|
|
52
|
-
checkboxContainerStyle:
|
|
49
|
+
labelsContainerStyle: object,
|
|
50
|
+
checkboxContainerStyle: object,
|
|
53
51
|
index: number,
|
|
54
52
|
checkedColor: string,
|
|
55
53
|
reversed: bool,
|
|
56
|
-
item:
|
|
57
|
-
alternateColors:
|
|
54
|
+
item: object,
|
|
55
|
+
alternateColors: object,
|
|
58
56
|
disabledStyleEnabled: bool,
|
|
59
|
-
disabledStyle:
|
|
60
|
-
coloredStyle:
|
|
57
|
+
disabledStyle: object,
|
|
58
|
+
coloredStyle: object,
|
|
61
59
|
disabledCheckedColor: string,
|
|
62
|
-
textProps:
|
|
60
|
+
textProps: object,
|
|
63
61
|
isChecked: bool,
|
|
64
62
|
handleChange: func
|
|
65
63
|
};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { Text } from 'react-native';
|
|
4
|
-
import { bool, oneOfType, string } from 'prop-types';
|
|
1
|
+
import { bool, object, oneOfType, string } from 'prop-types';
|
|
5
2
|
|
|
6
3
|
import { themeType } from '../../theming';
|
|
7
4
|
|
|
8
5
|
export default {
|
|
9
6
|
color: oneOfType([bool, string]),
|
|
10
|
-
textProps:
|
|
7
|
+
textProps: object,
|
|
11
8
|
theme: themeType,
|
|
12
9
|
allowFontScaling: bool,
|
|
13
10
|
useMarkdown: bool
|
|
@@ -17,14 +17,12 @@ const UTAutocomplete = ({
|
|
|
17
17
|
filterOptions,
|
|
18
18
|
input,
|
|
19
19
|
label,
|
|
20
|
-
labelBackgroundColor,
|
|
21
20
|
ListEmptyComponent,
|
|
22
21
|
MenuOptionComponent,
|
|
23
22
|
options,
|
|
24
23
|
persistSelectedOption = false,
|
|
25
|
-
|
|
26
|
-
withGoogleAttribution
|
|
27
|
-
styles: propStyles
|
|
24
|
+
styles: propStyles,
|
|
25
|
+
withGoogleAttribution
|
|
28
26
|
}) => {
|
|
29
27
|
const [selectedOption, setSelectedOption] = useState();
|
|
30
28
|
|
|
@@ -63,12 +61,10 @@ const UTAutocomplete = ({
|
|
|
63
61
|
<UTTextInput
|
|
64
62
|
disabled={disabled}
|
|
65
63
|
error={error}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
onChange={() => {}}
|
|
69
|
-
RightIcon={{ name: 'caret-down', type: 'font-awesome' }}
|
|
64
|
+
RightIcon="IconChevronDown"
|
|
65
|
+
title={label}
|
|
70
66
|
value={selectedOption?.label || ''}
|
|
71
|
-
|
|
67
|
+
version="V1"
|
|
72
68
|
/>
|
|
73
69
|
</UTMenu>
|
|
74
70
|
</View>
|
|
@@ -88,7 +84,6 @@ UTAutocomplete.propTypes = {
|
|
|
88
84
|
value: string.isRequired
|
|
89
85
|
}),
|
|
90
86
|
label: string,
|
|
91
|
-
labelBackgroundColor: string,
|
|
92
87
|
ListEmptyComponent: element,
|
|
93
88
|
MenuOptionComponent: element,
|
|
94
89
|
options: arrayOf(
|
|
@@ -100,7 +95,6 @@ UTAutocomplete.propTypes = {
|
|
|
100
95
|
),
|
|
101
96
|
persistSelectedOption: bool,
|
|
102
97
|
styles: ViewPropTypes.style,
|
|
103
|
-
variant: string,
|
|
104
98
|
withGoogleAttribution: bool
|
|
105
99
|
};
|
|
106
100
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { number, oneOfType, string } from 'prop-types';
|
|
2
|
+
import { number, object, oneOfType, string } from 'prop-types';
|
|
3
3
|
import { View } from 'react-native';
|
|
4
|
-
import { ViewPropTypes } from 'deprecated-react-native-prop-types';
|
|
5
4
|
|
|
6
5
|
import { useTheme } from '../../theming';
|
|
7
6
|
import UTLabel from '../UTLabel';
|
|
@@ -31,7 +30,7 @@ UTBadge.defaultProps = DEFAULT_PROPS;
|
|
|
31
30
|
UTBadge.propTypes = {
|
|
32
31
|
children: oneOfType([string, number]),
|
|
33
32
|
colorTheme: string,
|
|
34
|
-
style:
|
|
33
|
+
style: object
|
|
35
34
|
};
|
|
36
35
|
|
|
37
36
|
export default UTBadge;
|
|
@@ -1,25 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
1
|
+
# UTBaseInputField
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
`UTBaseInputField` is a flexible and customizable input field component that supports various input types, adornments, and styles. It can be used to create text inputs with additional functionality such as icons, prefixes, suffixes, and action buttons.
|
|
6
|
+
|
|
7
|
+
## Props
|
|
8
|
+
|
|
9
|
+
| Name | Type | Default | Description |
|
|
10
|
+
| --------------------- | --------------------------------------------------------- | -------- | --------------------------------------------------------- |
|
|
11
|
+
| alwaysShowPlaceholder | bool | false | Whether to always show the placeholder text. |
|
|
12
|
+
| disabled | bool | | Whether the input field is disabled. |
|
|
13
|
+
| error | string | | Error message to display. |
|
|
14
|
+
| id | oneOfType([number, string]) | | Unique identifier for the input field. |
|
|
15
|
+
| value | string | '' | The value of the input field. |
|
|
16
|
+
| onChange | func.isRequired | () => {} | Callback function to handle change event. |
|
|
17
|
+
| inputSize | string | 'large' | Size of the input field. One of: `small`, `large`. |
|
|
18
|
+
| leftAdornments | arrayOf(shape({ name: string, props: object })) | | Elements to display on the left side of the input field. |
|
|
19
|
+
| maxCount | number | | Maximum number of characters allowed. |
|
|
20
|
+
| maxRows | number | | Maximum number of rows for multiline input. |
|
|
21
|
+
| onBlur | func | | Callback function to handle blur event. |
|
|
22
|
+
| onFocus | func | | Callback function to handle focus event. |
|
|
23
|
+
| onSubmitEditing | func | | Callback function to handle submit editing event. |
|
|
24
|
+
| placeholder | string | | Placeholder text for the input field. |
|
|
25
|
+
| readOnly | bool | | Whether the input field is read-only. |
|
|
26
|
+
| returnKeyType | string | | Type of return key to display on the keyboard. |
|
|
27
|
+
| rightAdornments | arrayOf(shape({ name: string, props: object })) | | Elements to display on the right side of the input field. |
|
|
28
|
+
| style | shape({ container: object, input: object, root: object }) | {} | Custom styles to apply to the component. |
|
|
29
|
+
| type | string | | Type of the input field (e.g., email, numeric, password). |
|
|
30
|
+
| variant | string | 'white' | Variant of the input field. One of: `white`, `gray`. |
|
|
31
|
+
| editable | bool | true | Whether the input field is editable. |
|
|
23
32
|
|
|
24
33
|
## Input Types
|
|
25
34
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { bool, shape } from 'prop-types';
|
|
3
|
-
import { ViewPropTypes } from 'deprecated-react-native-prop-types';
|
|
2
|
+
import { bool, object, shape } from 'prop-types';
|
|
4
3
|
|
|
5
4
|
import UTButton from '../../../UTButton';
|
|
6
5
|
import { propTypes as utbuttonProptypes } from '../../../UTButton/proptypes';
|
|
@@ -17,7 +16,11 @@ const ActionAdornment = ({ action, disabled, actionStyle }) => {
|
|
|
17
16
|
|
|
18
17
|
ActionAdornment.propTypes = {
|
|
19
18
|
action: shape(utbuttonProptypes),
|
|
20
|
-
actionStyle: shape({
|
|
19
|
+
actionStyle: shape({
|
|
20
|
+
childrenContainer: object,
|
|
21
|
+
icon: object,
|
|
22
|
+
root: object
|
|
23
|
+
}),
|
|
21
24
|
disabled: bool
|
|
22
25
|
};
|
|
23
26
|
|
|
@@ -10,6 +10,7 @@ export const TYPES = {
|
|
|
10
10
|
NUMBER: 'number',
|
|
11
11
|
NUMERIC: 'numeric',
|
|
12
12
|
PASSWORD: 'password',
|
|
13
|
+
PASSWORD_NUMERIC: 'password_numeric',
|
|
13
14
|
PHONE: 'phone'
|
|
14
15
|
};
|
|
15
16
|
|
|
@@ -17,7 +18,8 @@ export const KEYBOARD_BY_TYPE = {
|
|
|
17
18
|
[TYPES.EMAIL]: 'email-address',
|
|
18
19
|
[TYPES.NUMBER]: 'number-pad',
|
|
19
20
|
[TYPES.NUMERIC]: 'numeric',
|
|
20
|
-
[TYPES.PHONE]: 'phone-pad'
|
|
21
|
+
[TYPES.PHONE]: 'phone-pad',
|
|
22
|
+
[TYPES.PASSWORD_NUMERIC]: 'numeric'
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
export const COMPONENT_KEYS = {
|
|
@@ -25,12 +25,12 @@ const UTBaseInputField = forwardRef(
|
|
|
25
25
|
editable,
|
|
26
26
|
error,
|
|
27
27
|
id,
|
|
28
|
-
input,
|
|
29
28
|
inputSize,
|
|
30
29
|
leftAdornments,
|
|
31
30
|
maxLength,
|
|
32
31
|
maxRows,
|
|
33
32
|
onBlur,
|
|
33
|
+
onChange,
|
|
34
34
|
onFocus,
|
|
35
35
|
onSubmitEditing,
|
|
36
36
|
placeholder,
|
|
@@ -40,11 +40,11 @@ const UTBaseInputField = forwardRef(
|
|
|
40
40
|
showCharacterCount,
|
|
41
41
|
style,
|
|
42
42
|
type,
|
|
43
|
+
value,
|
|
43
44
|
variant
|
|
44
45
|
},
|
|
45
46
|
ref
|
|
46
47
|
) => {
|
|
47
|
-
const { value, onChange } = input;
|
|
48
48
|
const [displayValue, setDisplayValue] = useState(value);
|
|
49
49
|
const [focused, setFocused] = useState(false);
|
|
50
50
|
const inputWidthRef = useRef(null);
|
|
@@ -93,7 +93,7 @@ const UTBaseInputField = forwardRef(
|
|
|
93
93
|
};
|
|
94
94
|
|
|
95
95
|
const { actionStyle, containerStyle, inputRowStyle, inputStyle, textLengthRowStyle } = retrieveStyle({
|
|
96
|
-
disabled,
|
|
96
|
+
disabled: disabled && !readOnly,
|
|
97
97
|
error,
|
|
98
98
|
focused,
|
|
99
99
|
inputSize,
|
|
@@ -112,10 +112,21 @@ const UTBaseInputField = forwardRef(
|
|
|
112
112
|
useImperativeHandle(ref, () => ({
|
|
113
113
|
truncate: () => {
|
|
114
114
|
setDisplayValue(truncateText(value));
|
|
115
|
-
}
|
|
115
|
+
},
|
|
116
|
+
focus: () => {
|
|
117
|
+
if (inputRef.current) {
|
|
118
|
+
handleFocus();
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
blur: () => {
|
|
122
|
+
if (inputRef.current) {
|
|
123
|
+
handleBlur();
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
...inputRef.current
|
|
116
127
|
}));
|
|
117
128
|
|
|
118
|
-
const secureTextEntry =
|
|
129
|
+
const secureTextEntry = [TYPES.PASSWORD, TYPES.PASSWORD_NUMERIC].includes(type);
|
|
119
130
|
const autoCapitalize = type === TYPES.EMAIL ? 'none' : 'sentences';
|
|
120
131
|
const keyboardType = KEYBOARD_BY_TYPE[type] || 'default';
|
|
121
132
|
|
|
@@ -129,7 +140,7 @@ const UTBaseInputField = forwardRef(
|
|
|
129
140
|
error={error}
|
|
130
141
|
focused={focused}
|
|
131
142
|
inputStyle={inputStyle}
|
|
132
|
-
key={element.name}
|
|
143
|
+
key={element.key || element.name}
|
|
133
144
|
{...element.props}
|
|
134
145
|
/>
|
|
135
146
|
) : null;
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { bool, func, number,
|
|
2
|
-
import { ViewPropTypes } from 'deprecated-react-native-prop-types';
|
|
1
|
+
import { arrayOf, bool, func, number, object, oneOfType, shape, string } from 'prop-types';
|
|
3
2
|
|
|
4
3
|
import { VARIANT, SIZES } from './constants';
|
|
5
4
|
|
|
6
5
|
export const defaultProps = {
|
|
7
6
|
alwaysShowPlaceholder: false,
|
|
8
7
|
editable: true,
|
|
9
|
-
maxRows: 1,
|
|
10
|
-
input: {
|
|
11
|
-
value: [],
|
|
12
|
-
onChange: () => {}
|
|
13
|
-
},
|
|
14
8
|
inputSize: SIZES.LARGE,
|
|
15
9
|
leftAdornments: [],
|
|
10
|
+
maxRows: 1,
|
|
11
|
+
onChange: () => {},
|
|
16
12
|
rightAdornments: [],
|
|
13
|
+
value: null,
|
|
17
14
|
variant: VARIANT.WHITE
|
|
18
15
|
};
|
|
19
16
|
|
|
@@ -24,17 +21,10 @@ export const propTypes = {
|
|
|
24
21
|
editable: bool,
|
|
25
22
|
error: oneOfType([bool, string]),
|
|
26
23
|
id: oneOfType([number, string]),
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
onChange: func
|
|
30
|
-
}),
|
|
24
|
+
value: oneOfType([string, number]),
|
|
25
|
+
onChange: func,
|
|
31
26
|
inputSize: string,
|
|
32
|
-
leftAdornments: arrayOf(
|
|
33
|
-
shape({
|
|
34
|
-
name: string.isRequired,
|
|
35
|
-
props: shape({})
|
|
36
|
-
})
|
|
37
|
-
),
|
|
27
|
+
leftAdornments: arrayOf(shape({ name: string.isRequired, props: shape({}) })),
|
|
38
28
|
maxLength: number,
|
|
39
29
|
maxRows: number,
|
|
40
30
|
onBlur: func,
|
|
@@ -51,9 +41,9 @@ export const propTypes = {
|
|
|
51
41
|
),
|
|
52
42
|
showCharacterCount: bool,
|
|
53
43
|
style: shape({
|
|
54
|
-
container:
|
|
55
|
-
input:
|
|
56
|
-
root:
|
|
44
|
+
container: object,
|
|
45
|
+
input: object,
|
|
46
|
+
root: object
|
|
57
47
|
}),
|
|
58
48
|
type: string,
|
|
59
49
|
variant: string
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { bool, func,
|
|
2
|
-
import { ViewPropTypes } from 'deprecated-react-native-prop-types';
|
|
1
|
+
import { bool, elementType, func, number, object, shape, string } from 'prop-types';
|
|
3
2
|
|
|
4
3
|
import { ICON_PLACEMENTS, SIZES } from './constants';
|
|
5
4
|
|
|
@@ -22,9 +21,9 @@ export const propTypes = {
|
|
|
22
21
|
onPress: func,
|
|
23
22
|
size: string,
|
|
24
23
|
style: shape({
|
|
25
|
-
childrenContainer:
|
|
26
|
-
icon:
|
|
27
|
-
root:
|
|
24
|
+
childrenContainer: object,
|
|
25
|
+
icon: object,
|
|
26
|
+
root: object
|
|
28
27
|
}),
|
|
29
28
|
variant: string
|
|
30
29
|
};
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/* eslint-disable camelcase */
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import { shape, func,
|
|
2
|
+
import { shape, func, object, elementType, oneOfType, number, string } from 'prop-types';
|
|
4
3
|
|
|
5
4
|
import UTTextInput from '../UTTextInput';
|
|
6
5
|
|
|
7
|
-
const UTCBUInput = ({ input,
|
|
6
|
+
const UTCBUInput = ({ input, field, ...props }) => {
|
|
8
7
|
const { onChange, value, onBlur } = input;
|
|
9
|
-
const { entities, cbu_number_key, cbu_entity_key } = configuration;
|
|
8
|
+
const { entities, cbu_number_key: cbuNumberKey, cbu_entity_key: cbuEntityKey } = field?.configuration || {};
|
|
10
9
|
|
|
11
10
|
const findEntity = inputNumber => {
|
|
12
11
|
const entityObject = entities?.find(entity => new RegExp(entity.expression).test(inputNumber));
|
|
@@ -15,7 +14,7 @@ const UTCBUInput = ({ input, configuration, ...props }) => {
|
|
|
15
14
|
|
|
16
15
|
const handleOnChange = inputValue => {
|
|
17
16
|
const newValue = inputValue
|
|
18
|
-
? { [
|
|
17
|
+
? { [cbuNumberKey]: inputValue, [cbuEntityKey]: findEntity(inputValue) }
|
|
19
18
|
: null;
|
|
20
19
|
onChange(newValue);
|
|
21
20
|
};
|
|
@@ -28,20 +27,20 @@ const UTCBUInput = ({ input, configuration, ...props }) => {
|
|
|
28
27
|
return (
|
|
29
28
|
<UTTextInput
|
|
30
29
|
{...props}
|
|
31
|
-
|
|
32
|
-
captionLabel={value?.[cbu_entity_key]}
|
|
33
|
-
onChange={handleOnChange}
|
|
34
|
-
onBlur={handleOnBlur}
|
|
30
|
+
helpText={value?.[cbuEntityKey]}
|
|
35
31
|
maxLength={22}
|
|
32
|
+
onBlur={handleOnBlur}
|
|
33
|
+
onChange={handleOnChange}
|
|
34
|
+
value={value?.[cbuNumberKey]}
|
|
35
|
+
version="V1"
|
|
36
36
|
/>
|
|
37
37
|
);
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
UTCBUInput.propTypes = {
|
|
41
|
+
field: shape({ configuration: object }),
|
|
41
42
|
input: shape({ onChange: func.isRequired, value: oneOfType([number, string]) }),
|
|
42
|
-
InputComponent: elementType
|
|
43
|
-
// eslint-disable-next-line react/forbid-prop-types
|
|
44
|
-
configuration: any
|
|
43
|
+
InputComponent: elementType
|
|
45
44
|
};
|
|
46
45
|
|
|
47
46
|
export default UTCBUInput;
|
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
|
|
7
7
|
## Props
|
|
8
8
|
|
|
9
|
-
| Name | Type | Default | Description
|
|
10
|
-
| ------------- | ------ | ------- |
|
|
11
|
-
| checked | bool | false | Indicates if the checkbox is checked.
|
|
12
|
-
| disabled | bool | false | Disables the checkbox, making it unclickable.
|
|
13
|
-
| indeterminate | bool | false | Indicates if the checkbox is in an indeterminate state.
|
|
14
|
-
| isSimple | bool | false | **Deprecated**: Use standard checkboxes instead.
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
| variant | string | | The variant to use for styling the checkbox.
|
|
9
|
+
| Name | Type | Default | Description |
|
|
10
|
+
| ------------- | ------ | ------- | --------------------------------------------------------------------------- |
|
|
11
|
+
| checked | bool | false | Indicates if the checkbox is checked. |
|
|
12
|
+
| disabled | bool | false | Disables the checkbox, making it unclickable. |
|
|
13
|
+
| indeterminate | bool | false | Indicates if the checkbox is in an indeterminate state. |
|
|
14
|
+
| isSimple | bool | false | **Deprecated**: Use standard checkboxes instead. |
|
|
15
|
+
| onPress | func | | Function to call when the checkbox is pressed. |
|
|
16
|
+
| required | bool | false | Indicates if the checkbox is required. |
|
|
17
|
+
| reversed | bool | false | If true, reverses the order of title and checkbox. |
|
|
18
|
+
| spacing | string | large | If "small", reduces the column gap from 16 to 8. |
|
|
19
|
+
| style | shape | {} | Custom styles to apply to the checkbox container. Can contain root or title |
|
|
20
|
+
| title | string | | Title to display next to the checkbox. |
|
|
21
|
+
| variant | string | | The variant to use for styling the checkbox. |
|
|
22
22
|
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
@@ -31,7 +31,7 @@ import UTCheckBox from './UTCheckBox';
|
|
|
31
31
|
const Example = () => {
|
|
32
32
|
const [checked, setChecked] = React.useState(false);
|
|
33
33
|
|
|
34
|
-
return <UTCheckBox checked={checked}
|
|
34
|
+
return <UTCheckBox checked={checked} title="Check me" onPress={() => setChecked(!checked)} />;
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
export default Example;
|
|
@@ -13,20 +13,20 @@ import styles from './styles';
|
|
|
13
13
|
const UTCheckBox = ({
|
|
14
14
|
checked,
|
|
15
15
|
disabled,
|
|
16
|
-
isSimple,
|
|
17
16
|
indeterminate,
|
|
18
|
-
|
|
17
|
+
isSimple,
|
|
19
18
|
onPress,
|
|
20
19
|
required,
|
|
21
20
|
reversed,
|
|
22
21
|
spacing,
|
|
23
22
|
style,
|
|
23
|
+
title,
|
|
24
24
|
variant
|
|
25
25
|
}) => {
|
|
26
26
|
const theme = useTheme();
|
|
27
27
|
const [pressed, setPressed] = useState(false);
|
|
28
28
|
|
|
29
|
-
const { containerStyles, iconContainerStyles, boxStyles, pressableStyles } = useMemo(
|
|
29
|
+
const { containerStyles, iconContainerStyles, boxStyles, pressableStyles, titleStyles } = useMemo(
|
|
30
30
|
() =>
|
|
31
31
|
retrieveStyle({
|
|
32
32
|
checked,
|
|
@@ -60,7 +60,12 @@ const UTCheckBox = ({
|
|
|
60
60
|
>
|
|
61
61
|
<View style={containerStyles}>
|
|
62
62
|
{isSimple ? (
|
|
63
|
-
<UTIcon
|
|
63
|
+
<UTIcon
|
|
64
|
+
name="IconCheck"
|
|
65
|
+
shade="04"
|
|
66
|
+
colorTheme="accent"
|
|
67
|
+
style={checked ? undefined : styles.hidden}
|
|
68
|
+
/>
|
|
64
69
|
) : (
|
|
65
70
|
<View style={boxStyles}>
|
|
66
71
|
<View style={iconContainerStyles}>
|
|
@@ -68,8 +73,8 @@ const UTCheckBox = ({
|
|
|
68
73
|
</View>
|
|
69
74
|
</View>
|
|
70
75
|
)}
|
|
71
|
-
<UTFieldLabel
|
|
72
|
-
{
|
|
76
|
+
<UTFieldLabel colorTheme={checked ? 'accent' : 'dark'} required={required} style={titleStyles}>
|
|
77
|
+
{title}
|
|
73
78
|
</UTFieldLabel>
|
|
74
79
|
</View>
|
|
75
80
|
</Pressable>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { bool, func, string } from 'prop-types';
|
|
2
|
-
import { ViewPropTypes } from 'deprecated-react-native-prop-types';
|
|
1
|
+
import { bool, func, object, string } from 'prop-types';
|
|
3
2
|
|
|
4
3
|
import { SPACING } from './constants';
|
|
5
4
|
|
|
@@ -17,11 +16,11 @@ export const propTypes = {
|
|
|
17
16
|
disabled: bool,
|
|
18
17
|
indeterminate: bool,
|
|
19
18
|
isSimple: bool,
|
|
20
|
-
label: string,
|
|
21
19
|
onPress: func,
|
|
22
20
|
required: bool,
|
|
23
21
|
reversed: bool,
|
|
24
22
|
spacing: string,
|
|
25
|
-
style:
|
|
23
|
+
style: object,
|
|
24
|
+
title: string,
|
|
26
25
|
variant: string
|
|
27
26
|
};
|
|
@@ -21,6 +21,9 @@ const baseCheckBoxTheme = theme => ({
|
|
|
21
21
|
borderRadius: 25,
|
|
22
22
|
overflow: 'hidden',
|
|
23
23
|
padding: 6
|
|
24
|
+
},
|
|
25
|
+
title: {
|
|
26
|
+
maxWidth: '80%'
|
|
24
27
|
}
|
|
25
28
|
});
|
|
26
29
|
|
|
@@ -109,18 +112,22 @@ export const retrieveStyle = ({
|
|
|
109
112
|
});
|
|
110
113
|
|
|
111
114
|
return {
|
|
115
|
+
boxStyles: {
|
|
116
|
+
...baseThemeStyles.box,
|
|
117
|
+
...box
|
|
118
|
+
},
|
|
112
119
|
containerStyles: {
|
|
113
120
|
...baseThemeStyles.container,
|
|
114
121
|
...container,
|
|
115
|
-
...style
|
|
122
|
+
...style.root
|
|
116
123
|
},
|
|
117
124
|
iconContainerStyles: {
|
|
118
125
|
...baseThemeStyles.iconContainer,
|
|
119
126
|
...iconContainer
|
|
120
127
|
},
|
|
121
|
-
|
|
122
|
-
...baseThemeStyles.
|
|
123
|
-
...
|
|
128
|
+
titleStyles: {
|
|
129
|
+
...baseThemeStyles.title,
|
|
130
|
+
...style.title
|
|
124
131
|
},
|
|
125
132
|
pressableStyles: pressable
|
|
126
133
|
};
|