@bigbinary/neetoui-rn 0.0.243 → 0.0.245
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/index.d.ts +4 -27
- package/lib/components/BottomSheet.js +1 -1
- package/lib/components/CheckBox.js +1 -1
- package/lib/components/InputEmailChip.js +1 -1
- package/lib/components/MultiSelect.js +1 -1
- package/lib/components/NotificationPreferenceList.js +1 -1
- package/lib/components/RadioButton.js +1 -1
- package/lib/components/ToggleSwitch.js +1 -1
- package/lib/components/Touchable.js +1 -1
- package/lib/components/index.js +1 -1
- package/package.json +1 -1
- package/src/components/BottomSheet.jsx +17 -17
- package/src/components/CheckBox.jsx +10 -35
- package/src/components/InputEmailChip.jsx +13 -8
- package/src/components/MultiSelect.jsx +10 -11
- package/src/components/NotificationPreferenceList.jsx +84 -42
- package/src/components/RadioButton.jsx +13 -14
- package/src/components/ToggleSwitch.jsx +1 -0
- package/src/components/Touchable.jsx +1 -1
- package/src/components/index.js +0 -2
- package/lib/components/Select.js +0 -1
- package/lib/components/SelectButton.js +0 -1
- package/src/components/Select.jsx +0 -495
- package/src/components/SelectButton.jsx +0 -150
|
@@ -5,7 +5,7 @@ import Icon from "react-native-remix-icon";
|
|
|
5
5
|
import { moderateScale } from "react-native-size-matters";
|
|
6
6
|
import { ThemeContext } from "styled-components/native";
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { Typography, Touchable } from "@components";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
@@ -59,34 +59,26 @@ export const CheckBox = ({
|
|
|
59
59
|
onSelect,
|
|
60
60
|
disabled,
|
|
61
61
|
label,
|
|
62
|
-
checkboxStyle,
|
|
63
62
|
checkIconStyle,
|
|
64
63
|
labelStyle,
|
|
65
64
|
...rest
|
|
66
65
|
}) => {
|
|
67
66
|
const theme = useContext(ThemeContext);
|
|
68
67
|
const disabledProps = {
|
|
69
|
-
bg: theme.colors.background[checked ? "grey400" : "white"],
|
|
70
68
|
labelProps: {
|
|
71
69
|
color: theme.colors.font.grey400,
|
|
72
70
|
},
|
|
73
71
|
};
|
|
74
72
|
|
|
75
73
|
const checkedProps = {
|
|
76
|
-
bg: theme.colors.background.base,
|
|
77
74
|
labelProps: {
|
|
78
|
-
fontFamily: theme.fonts.
|
|
79
|
-
color: theme.colors.font.primary,
|
|
75
|
+
fontFamily: theme.fonts.sf600,
|
|
80
76
|
},
|
|
81
77
|
};
|
|
82
78
|
|
|
83
79
|
const unCheckedProps = {
|
|
84
|
-
bg: theme.colors.background.white,
|
|
85
|
-
borderWidth: moderateScale(1),
|
|
86
|
-
borderColor: theme.colors.border.secondary,
|
|
87
80
|
labelProps: {
|
|
88
81
|
fontFamily: theme.fonts.sf400,
|
|
89
|
-
color: theme.colors.font.secondary,
|
|
90
82
|
},
|
|
91
83
|
};
|
|
92
84
|
|
|
@@ -96,33 +88,14 @@ export const CheckBox = ({
|
|
|
96
88
|
disabled={disabled}
|
|
97
89
|
flexDirection="row"
|
|
98
90
|
flexShrink={1}
|
|
91
|
+
py={moderateScale(8)}
|
|
99
92
|
onPress={onSelect}
|
|
100
93
|
{...rest}
|
|
101
94
|
>
|
|
102
|
-
<Container
|
|
103
|
-
alignItems="center"
|
|
104
|
-
borderRadius={moderateScale(3)}
|
|
105
|
-
height={moderateScale(16)}
|
|
106
|
-
justifyContent="center"
|
|
107
|
-
width={moderateScale(16)}
|
|
108
|
-
{...(!checked && unCheckedProps)}
|
|
109
|
-
{...(checked && checkedProps)}
|
|
110
|
-
{...(disabled && disabledProps)}
|
|
111
|
-
{...checkboxStyle}
|
|
112
|
-
>
|
|
113
|
-
{checked && (
|
|
114
|
-
<Icon
|
|
115
|
-
color={theme.colors.font.white}
|
|
116
|
-
name="ri-check-line"
|
|
117
|
-
size={moderateScale(14)}
|
|
118
|
-
{...checkIconStyle}
|
|
119
|
-
/>
|
|
120
|
-
)}
|
|
121
|
-
</Container>
|
|
122
95
|
<Typography
|
|
123
96
|
flex={1}
|
|
124
97
|
fontSize="m"
|
|
125
|
-
|
|
98
|
+
lineHeight={`${moderateScale(22)}px`}
|
|
126
99
|
{...(checked && checkedProps.labelProps)}
|
|
127
100
|
{...(!checked && unCheckedProps.labelProps)}
|
|
128
101
|
{...(disabled && disabledProps.labelProps)}
|
|
@@ -130,6 +103,12 @@ export const CheckBox = ({
|
|
|
130
103
|
>
|
|
131
104
|
{label}
|
|
132
105
|
</Typography>
|
|
106
|
+
<Icon
|
|
107
|
+
color={theme.colors.font.primary}
|
|
108
|
+
name={checked ? "checkbox-line" : "checkbox-blank-line"}
|
|
109
|
+
size={moderateScale(20)}
|
|
110
|
+
{...checkIconStyle}
|
|
111
|
+
/>
|
|
133
112
|
</Touchable>
|
|
134
113
|
);
|
|
135
114
|
};
|
|
@@ -151,10 +130,6 @@ CheckBox.propTypes = {
|
|
|
151
130
|
* Text label to be shown with radio button.
|
|
152
131
|
*/
|
|
153
132
|
label: Proptypes.string,
|
|
154
|
-
/**
|
|
155
|
-
* Customize checkbox style.
|
|
156
|
-
*/
|
|
157
|
-
checkboxStyle: Proptypes.object,
|
|
158
133
|
/**
|
|
159
134
|
* Customize check icon style.
|
|
160
135
|
*/
|
|
@@ -66,8 +66,6 @@ export const InputEmailChip = ({
|
|
|
66
66
|
const handleInputTouchStart = () => setEmailIndexForDeletion(-1);
|
|
67
67
|
|
|
68
68
|
const handleTouchStart = () => {
|
|
69
|
-
if (disabled) return;
|
|
70
|
-
|
|
71
69
|
if (!inputRef.current?.isFocused()) {
|
|
72
70
|
inputRef.current?.focus();
|
|
73
71
|
}
|
|
@@ -81,6 +79,10 @@ export const InputEmailChip = ({
|
|
|
81
79
|
}
|
|
82
80
|
};
|
|
83
81
|
|
|
82
|
+
const handleOnEndEditing = event => {
|
|
83
|
+
checkAndUpdateEmails(event.nativeEvent.text);
|
|
84
|
+
};
|
|
85
|
+
|
|
84
86
|
const checkAndUpdateEmails = text => {
|
|
85
87
|
const emailCandidate = trimChars(text, delimiters);
|
|
86
88
|
|
|
@@ -181,17 +183,21 @@ export const InputEmailChip = ({
|
|
|
181
183
|
onTouchStart: handleInputTouchStart,
|
|
182
184
|
onFocus: handleOnFocus,
|
|
183
185
|
onBlur: handleOnBlur,
|
|
186
|
+
onEndEditing: handleOnEndEditing,
|
|
184
187
|
}}
|
|
185
188
|
onChangeText={handleTextChange}
|
|
186
189
|
/>
|
|
187
190
|
</Container>
|
|
188
191
|
)}
|
|
189
192
|
</Container>
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
{!disabled && (
|
|
194
|
+
<TextInput
|
|
195
|
+
editable={false}
|
|
196
|
+
pointerEvents={shouldShowInput ? "box-none" : "auto"}
|
|
197
|
+
style={styles.touchableTextInputWrapper}
|
|
198
|
+
onTouchStart={handleTouchStart}
|
|
199
|
+
/>
|
|
200
|
+
)}
|
|
195
201
|
</Container>
|
|
196
202
|
);
|
|
197
203
|
};
|
|
@@ -203,7 +209,6 @@ const styles = StyleSheet.create({
|
|
|
203
209
|
bottom: 0,
|
|
204
210
|
left: 0,
|
|
205
211
|
right: 0,
|
|
206
|
-
backgroundColor: "transparent",
|
|
207
212
|
},
|
|
208
213
|
});
|
|
209
214
|
|
|
@@ -282,14 +282,12 @@ export const MultiSelect = ({
|
|
|
282
282
|
);
|
|
283
283
|
|
|
284
284
|
return (
|
|
285
|
-
<
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
/>
|
|
292
|
-
</Container>
|
|
285
|
+
<CheckBox
|
|
286
|
+
checked={itemIndex !== -1}
|
|
287
|
+
disabled={disabled}
|
|
288
|
+
label={item?.label || labelExtractor(item, index) || item}
|
|
289
|
+
onSelect={onPress}
|
|
290
|
+
/>
|
|
293
291
|
);
|
|
294
292
|
};
|
|
295
293
|
|
|
@@ -402,9 +400,10 @@ export const MultiSelect = ({
|
|
|
402
400
|
borderRadius={moderateScale(12)}
|
|
403
401
|
flexDirection="row"
|
|
404
402
|
justifyContent="space-between"
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
403
|
+
mr={moderateScale(4)}
|
|
404
|
+
mt={moderateScale(4)}
|
|
405
|
+
px={moderateScale(10)}
|
|
406
|
+
py={moderateScale(4)}
|
|
408
407
|
{...moreItemLabelContainerStyle}
|
|
409
408
|
>
|
|
410
409
|
<Typography {...moreItemLabelStyle}>
|
|
@@ -3,7 +3,13 @@ import React from "react";
|
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import { moderateScale } from "react-native-size-matters";
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
Container,
|
|
8
|
+
Typography,
|
|
9
|
+
Divider,
|
|
10
|
+
ToggleSwitch,
|
|
11
|
+
Loader,
|
|
12
|
+
} from "@components";
|
|
7
13
|
|
|
8
14
|
/**
|
|
9
15
|
*
|
|
@@ -76,63 +82,87 @@ import { Container, Typography, Divider, ToggleSwitch } from "@components";
|
|
|
76
82
|
*
|
|
77
83
|
*/
|
|
78
84
|
|
|
85
|
+
const lineHeight = moderateScale(22);
|
|
79
86
|
export const NotificationPreferenceList = ({
|
|
87
|
+
isLoading,
|
|
80
88
|
data,
|
|
81
89
|
itemWrapperProps,
|
|
82
90
|
itemContainerProps,
|
|
83
91
|
labelContainerProps,
|
|
84
92
|
labelProps,
|
|
93
|
+
title,
|
|
94
|
+
titleProps,
|
|
85
95
|
...rest
|
|
86
96
|
}) => (
|
|
87
|
-
<Container
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
<Container width="100%">
|
|
98
|
+
<Container
|
|
99
|
+
alignItems="center"
|
|
100
|
+
flexDirection="row"
|
|
101
|
+
pb={moderateScale(8)}
|
|
102
|
+
pt={moderateScale(16)}
|
|
103
|
+
>
|
|
104
|
+
{!!title && (
|
|
105
|
+
<Typography
|
|
106
|
+
color="font.grey600"
|
|
107
|
+
fontSize="2xl"
|
|
108
|
+
lineHeight={`${lineHeight}px`}
|
|
109
|
+
{...titleProps}
|
|
110
|
+
>
|
|
111
|
+
{title}
|
|
112
|
+
</Typography>
|
|
113
|
+
)}
|
|
114
|
+
{isLoading && (
|
|
115
|
+
<Container
|
|
116
|
+
height={lineHeight}
|
|
117
|
+
justifyContent="center"
|
|
118
|
+
mx={moderateScale(8)}
|
|
119
|
+
>
|
|
120
|
+
<Loader />
|
|
121
|
+
</Container>
|
|
122
|
+
)}
|
|
123
|
+
</Container>
|
|
124
|
+
<Container
|
|
125
|
+
bg="background.secondary"
|
|
126
|
+
borderRadius={moderateScale(8)}
|
|
127
|
+
{...rest}
|
|
128
|
+
>
|
|
129
|
+
{data?.map((item, index) => {
|
|
130
|
+
const { label, enabled, onSwitch, LeftIcon } = item;
|
|
131
|
+
const isLastItem = index === data.length - 1;
|
|
95
132
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<Container
|
|
99
|
-
alignItems="center"
|
|
100
|
-
flexDirection="row"
|
|
101
|
-
justifyContent="space-between"
|
|
102
|
-
py={moderateScale(15)}
|
|
103
|
-
{...itemContainerProps}
|
|
104
|
-
>
|
|
133
|
+
return (
|
|
134
|
+
<Container key={index} px={moderateScale(16)} {...itemWrapperProps}>
|
|
105
135
|
<Container
|
|
106
136
|
alignItems="center"
|
|
107
137
|
flexDirection="row"
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
{...
|
|
138
|
+
justifyContent="space-between"
|
|
139
|
+
py={moderateScale(12)}
|
|
140
|
+
{...itemContainerProps}
|
|
111
141
|
>
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
)}
|
|
117
|
-
<Typography
|
|
118
|
-
color="font.grey800"
|
|
119
|
-
fontFamily="sf400"
|
|
120
|
-
fontSize="l"
|
|
121
|
-
{...labelProps}
|
|
142
|
+
<Container
|
|
143
|
+
alignItems="center"
|
|
144
|
+
flexDirection="row"
|
|
145
|
+
{...labelContainerProps}
|
|
122
146
|
>
|
|
123
|
-
{
|
|
124
|
-
|
|
147
|
+
{LeftIcon && (
|
|
148
|
+
<Container mr={moderateScale(10)}>
|
|
149
|
+
<LeftIcon />
|
|
150
|
+
</Container>
|
|
151
|
+
)}
|
|
152
|
+
<Typography fontSize="l" mr={moderateScale(10)} {...labelProps}>
|
|
153
|
+
{label}
|
|
154
|
+
</Typography>
|
|
155
|
+
</Container>
|
|
156
|
+
<ToggleSwitch
|
|
157
|
+
value={enabled}
|
|
158
|
+
onValueChange={() => onSwitch(item, index)}
|
|
159
|
+
/>
|
|
125
160
|
</Container>
|
|
126
|
-
<
|
|
127
|
-
mt={moderateScale(4)}
|
|
128
|
-
value={enabled}
|
|
129
|
-
onValueChange={() => onSwitch(item, index)}
|
|
130
|
-
/>
|
|
161
|
+
{!isLastItem && <Divider bg="background.grey300" />}
|
|
131
162
|
</Container>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
})}
|
|
163
|
+
);
|
|
164
|
+
})}
|
|
165
|
+
</Container>
|
|
136
166
|
</Container>
|
|
137
167
|
);
|
|
138
168
|
|
|
@@ -157,4 +187,16 @@ NotificationPreferenceList.propTypes = {
|
|
|
157
187
|
* Customize item label
|
|
158
188
|
*/
|
|
159
189
|
labelProps: PropTypes.object,
|
|
190
|
+
/**
|
|
191
|
+
* Title value.
|
|
192
|
+
*/
|
|
193
|
+
title: PropTypes.string,
|
|
194
|
+
/**
|
|
195
|
+
* Customize title style.
|
|
196
|
+
*/
|
|
197
|
+
titleProps: PropTypes.string,
|
|
198
|
+
/**
|
|
199
|
+
* Show loader
|
|
200
|
+
*/
|
|
201
|
+
isLoading: PropTypes.bool,
|
|
160
202
|
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React, { useContext } from "react";
|
|
2
2
|
|
|
3
3
|
import Proptypes from "prop-types";
|
|
4
|
+
import Icon from "react-native-remix-icon";
|
|
4
5
|
import { moderateScale } from "react-native-size-matters";
|
|
5
6
|
import { ThemeContext } from "styled-components/native";
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
+
import { Typography, Touchable } from "@components";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
*
|
|
@@ -59,7 +60,7 @@ export const RadioButton = ({
|
|
|
59
60
|
onSelect,
|
|
60
61
|
disabled,
|
|
61
62
|
label,
|
|
62
|
-
|
|
63
|
+
selectIconStyle,
|
|
63
64
|
labelStyle,
|
|
64
65
|
...rest
|
|
65
66
|
}) => {
|
|
@@ -94,23 +95,15 @@ export const RadioButton = ({
|
|
|
94
95
|
alignItems="center"
|
|
95
96
|
disabled={disabled}
|
|
96
97
|
flexDirection="row"
|
|
98
|
+
py={moderateScale(8)}
|
|
97
99
|
onPress={onSelect}
|
|
98
100
|
{...rest}
|
|
99
101
|
>
|
|
100
|
-
<Container
|
|
101
|
-
bg={theme.colors.background.white}
|
|
102
|
-
borderRadius={moderateScale(8)}
|
|
103
|
-
height={moderateScale(16)}
|
|
104
|
-
width={moderateScale(16)}
|
|
105
|
-
{...(selected && selectedProps)}
|
|
106
|
-
{...(!selected && unselectedProps)}
|
|
107
|
-
{...(disabled && disabledProps)}
|
|
108
|
-
{...radioButtonStyle}
|
|
109
|
-
/>
|
|
110
102
|
<Typography
|
|
103
|
+
color="font.primary"
|
|
111
104
|
flex={1}
|
|
112
105
|
fontSize="m"
|
|
113
|
-
|
|
106
|
+
lineHeight={`${moderateScale(22)}px`}
|
|
114
107
|
{...(selected && selectedProps.labelProps)}
|
|
115
108
|
{...(!selected && unselectedProps.labelProps)}
|
|
116
109
|
{...(disabled && disabledProps.labelProps)}
|
|
@@ -118,6 +111,12 @@ export const RadioButton = ({
|
|
|
118
111
|
>
|
|
119
112
|
{label}
|
|
120
113
|
</Typography>
|
|
114
|
+
<Icon
|
|
115
|
+
color={theme.colors.font.primary}
|
|
116
|
+
name={selected ? "ri-radio-button-line" : "checkbox-blank-circle-line"}
|
|
117
|
+
size={moderateScale(20)}
|
|
118
|
+
{...selectIconStyle}
|
|
119
|
+
/>
|
|
121
120
|
</Touchable>
|
|
122
121
|
);
|
|
123
122
|
};
|
|
@@ -142,7 +141,7 @@ RadioButton.propTypes = {
|
|
|
142
141
|
/**
|
|
143
142
|
* Customize radio button style.
|
|
144
143
|
*/
|
|
145
|
-
|
|
144
|
+
selectIconStyle: Proptypes.object,
|
|
146
145
|
/**
|
|
147
146
|
* Customize label style.
|
|
148
147
|
*/
|
package/src/components/index.js
CHANGED
|
@@ -21,7 +21,6 @@ export { Card } from "./Card";
|
|
|
21
21
|
export { TopBar } from "./TopBar";
|
|
22
22
|
export { RadioButton } from "./RadioButton";
|
|
23
23
|
export { CheckBox } from "./CheckBox";
|
|
24
|
-
export { Select } from "./Select";
|
|
25
24
|
export { MultiSelect } from "./MultiSelect";
|
|
26
25
|
export { Divider } from "./Divider";
|
|
27
26
|
export { FlatList } from "./FlatList";
|
|
@@ -40,4 +39,3 @@ export { NotificationPreferenceList } from "./NotificationPreferenceList";
|
|
|
40
39
|
export { OrganizationItem } from "./OrganizationItem";
|
|
41
40
|
export { Loader } from "./Loader";
|
|
42
41
|
export { InputEmailChip } from "./InputEmailChip";
|
|
43
|
-
export { SelectButton } from "./SelectButton";
|
package/lib/components/Select.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Select=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeGestureHandler=require("react-native-gesture-handler");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./");var _excluded=["options","label","value","placeholder","emptyOptionsPlaceholder","labelExtractor","valueExtractor","onSelect","isLoading","isSearchable","showCreateOption","showCreateOptionLoader","createOptionLabel","onPressCreateOption","labelStyle","containerStyle","inputContainerStyle","dropdownContainerStyle","itemContainerStyle","itemLabelStyle","selectedItemContainerStyle","selectedItemLabelStyle","searchInputContainerStyle","searchInputStyle","emptyOptionsContainerStyle","emptyOptionsLabelStyle","createSearchedOptionContainerStyle","createSearchedOptionLabelStyle"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Select.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var DropdownItem=function DropdownItem(_ref){var label=_ref.label,isSelectedItem=_ref.isSelectedItem,defaultDropdownItemHeight=_ref.defaultDropdownItemHeight,onPress=_ref.onPress,itemContainerStyle=_ref.itemContainerStyle,selectedItemContainerStyle=_ref.selectedItemContainerStyle,itemLabelStyle=_ref.itemLabelStyle,selectedItemLabelStyle=_ref.selectedItemLabelStyle;return _react.default.createElement(_reactNative.TouchableWithoutFeedback,{onPress:onPress,__self:_this,__source:{fileName:_jsxFileName,lineNumber:36,columnNumber:3}},_react.default.createElement(_.Container,(0,_extends2.default)({bg:isSelectedItem?"background.base":"background.white",height:defaultDropdownItemHeight,p:(0,_reactNativeSizeMatters.moderateScale)(2)},itemContainerStyle,isSelectedItem&&selectedItemContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:37,columnNumber:5}}),_react.default.createElement(_.Typography,(0,_extends2.default)({color:isSelectedItem?"font.white":"font.grey",fontFamily:"sf400",fontSize:"s"},itemLabelStyle,isSelectedItem&&selectedItemLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:44,columnNumber:7}}),label)));};DropdownItem.propTypes={label:_propTypes.default.string.isRequired,isSelectedItem:_propTypes.default.bool,defaultDropdownItemHeight:_propTypes.default.number,onPress:_propTypes.default.func,itemContainerStyle:_propTypes.default.object,selectedItemContainerStyle:_propTypes.default.object,itemLabelStyle:_propTypes.default.object,selectedItemLabelStyle:_propTypes.default.object};var Select=function Select(_ref2){var options=_ref2.options,label=_ref2.label,value=_ref2.value,placeholder=_ref2.placeholder,emptyOptionsPlaceholder=_ref2.emptyOptionsPlaceholder,labelExtractor=_ref2.labelExtractor,valueExtractor=_ref2.valueExtractor,onSelect=_ref2.onSelect,isLoading=_ref2.isLoading,isSearchable=_ref2.isSearchable,showCreateOption=_ref2.showCreateOption,showCreateOptionLoader=_ref2.showCreateOptionLoader,createOptionLabel=_ref2.createOptionLabel,onPressCreateOption=_ref2.onPressCreateOption,labelStyle=_ref2.labelStyle,containerStyle=_ref2.containerStyle,inputContainerStyle=_ref2.inputContainerStyle,dropdownContainerStyle=_ref2.dropdownContainerStyle,itemContainerStyle=_ref2.itemContainerStyle,itemLabelStyle=_ref2.itemLabelStyle,selectedItemContainerStyle=_ref2.selectedItemContainerStyle,selectedItemLabelStyle=_ref2.selectedItemLabelStyle,searchInputContainerStyle=_ref2.searchInputContainerStyle,searchInputStyle=_ref2.searchInputStyle,emptyOptionsContainerStyle=_ref2.emptyOptionsContainerStyle,emptyOptionsLabelStyle=_ref2.emptyOptionsLabelStyle,createSearchedOptionContainerStyle=_ref2.createSearchedOptionContainerStyle,createSearchedOptionLabelStyle=_ref2.createSearchedOptionLabelStyle,rest=(0,_objectWithoutProperties2.default)(_ref2,_excluded);var theme=(0,_react.useContext)(_native.ThemeContext);var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),showDropdown=_useState2[0],setShowDropdown=_useState2[1];var _useState3=(0,_react.useState)(""),_useState4=(0,_slicedToArray2.default)(_useState3,2),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var dropdownAnimatedHeight=(0,_reactNativeReanimated.useSharedValue)(0);var formatStr=function formatStr(str){var _str$toLowerCase;return str==null?void 0:(_str$toLowerCase=str.toLowerCase())==null?void 0:_str$toLowerCase.trim();};var filteredOptions=options.filter(function(item,index){var label=labelExtractor(item,index);if((searchQuery==null?void 0:searchQuery.length)===0)return true;return formatStr(label).includes(formatStr(searchQuery));});var isOptionsEmpty=!options||(options==null?void 0:options.length)===0;var isSearchedOptionsEmpty=searchQuery.length>0&&filteredOptions.length===0;var emptyOptionsPlaceholderHeight=(0,_reactNativeSizeMatters.moderateScale)(40);var emptySearchedOptionsHeight=(0,_reactNativeSizeMatters.moderateScale)(40);var searchInputHeight=(0,_reactNativeSizeMatters.moderateScale)(35);var defaultDropdownItemHeight=(itemContainerStyle==null?void 0:itemContainerStyle.height)||(0,_reactNativeSizeMatters.moderateScale)(32);var dropdownHeight=(dropdownContainerStyle==null?void 0:dropdownContainerStyle.height)||(dropdownContainerStyle==null?void 0:dropdownContainerStyle.maxHeight)||defaultDropdownItemHeight*Math.min(filteredOptions==null?void 0:filteredOptions.length,(0,_reactNativeSizeMatters.moderateScale)(6))+(isSearchable?searchInputHeight+(0,_reactNativeSizeMatters.moderateScale)(10):0)+(isOptionsEmpty&&!(isSearchedOptionsEmpty&&showCreateOption)?emptyOptionsPlaceholderHeight:0)+(isSearchedOptionsEmpty&&showCreateOption?emptySearchedOptionsHeight:0);var selectedOptionLabel=labelExtractor(value||{});var selectedOptionValue=valueExtractor(value||{});var animatedStyles=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){return{height:(0,_reactNativeReanimated.withTiming)(dropdownAnimatedHeight.value,{duration:100,easing:_reactNativeReanimated.Easing.ease},function(){var _f=function _f(){if(dropdownAnimatedHeight.value===0){(0,_reactNativeReanimated.runOnJS)(setShowDropdown)(false);}};_f._closure={dropdownAnimatedHeight:dropdownAnimatedHeight,runOnJS:_reactNativeReanimated.runOnJS,setShowDropdown:setShowDropdown};_f.asString="function _f(){const{dropdownAnimatedHeight,runOnJS,setShowDropdown}=jsThis._closure;{if(dropdownAnimatedHeight.value===0){runOnJS(setShowDropdown)(false);}}}";_f.__workletHash=8540692570337;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Select.jsx (187:8)";return _f;}())};};_f._closure={withTiming:_reactNativeReanimated.withTiming,dropdownAnimatedHeight:dropdownAnimatedHeight,Easing:{ease:_reactNativeReanimated.Easing.ease},runOnJS:_reactNativeReanimated.runOnJS,setShowDropdown:setShowDropdown};_f.asString="function _f(){const{withTiming,dropdownAnimatedHeight,Easing,runOnJS,setShowDropdown}=jsThis._closure;{return{height:withTiming(dropdownAnimatedHeight.value,{duration:100,easing:Easing.ease},function(){if(dropdownAnimatedHeight.value===0){runOnJS(setShowDropdown)(false);}})};}}";_f.__workletHash=4835541372615;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Select.jsx (180:4)";return _f;}(),[]);var toggleAnimation=function toggleAnimation(){dropdownAnimatedHeight.value=dropdownAnimatedHeight.value===0?dropdownHeight:0;};var handleOpenDropdown=function handleOpenDropdown(){_reactNative.Keyboard.dismiss();setSearchQuery("");if(!showDropdown){setShowDropdown(true);}if(showDropdown){toggleAnimation();}};var handleItemSelection=function handleItemSelection(item,index){toggleAnimation();onSelect(item,index);};(0,_react.useEffect)(function(){if(showDropdown){dropdownAnimatedHeight.value=dropdownHeight;}},[showDropdown,dropdownHeight]);return _react.default.createElement(_.Container,(0,_extends2.default)({},containerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:226,columnNumber:5}}),_react.default.createElement(_.Typography,(0,_extends2.default)({color:"font.base",fontFamily:"sf400",fontSize:"s",mb:(0,_reactNativeSizeMatters.moderateScale)(1)},labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:227,columnNumber:7}}),label),_react.default.createElement(_reactNative.TouchableWithoutFeedback,{disabled:isLoading,onPress:handleOpenDropdown,__self:_this,__source:{fileName:_jsxFileName,lineNumber:236,columnNumber:7}},_react.default.createElement(_.Container,(0,_extends2.default)({alignItems:"center",borderColor:"border.grey400",borderWidth:(0,_reactNativeSizeMatters.moderateScale)(1),flexDirection:"row",justifyContent:"space-between",p:(0,_reactNativeSizeMatters.moderateScale)(2)},inputContainerStyle,rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:240,columnNumber:9}}),_react.default.createElement(_.Typography,{color:"font.grey",fontFamily:"sf400",fontSize:"s",__self:_this,__source:{fileName:_jsxFileName,lineNumber:250,columnNumber:11}},selectedOptionLabel||placeholder),isLoading?_react.default.createElement(_.Loader,{color:theme.colors.background.base,__self:_this,__source:{fileName:_jsxFileName,lineNumber:254,columnNumber:13}}):_react.default.createElement(_reactNativeRemixIcon.default,{color:"grey",name:"arrow-"+(showDropdown?"up":"down")+"-s-line",size:(0,_reactNativeSizeMatters.moderateScale)(20),__self:_this,__source:{fileName:_jsxFileName,lineNumber:256,columnNumber:13}}))),showDropdown&&_react.default.createElement(_.Container,{overflow:"hidden",__self:_this,__source:{fileName:_jsxFileName,lineNumber:265,columnNumber:9}},_react.default.createElement(_reactNativeReanimated.default.View,{style:animatedStyles,__self:_this,__source:{fileName:_jsxFileName,lineNumber:266,columnNumber:11}},_react.default.createElement(_.Card,(0,_extends2.default)({bg:"background.white",borderColor:"border.grey400",borderWidth:(0,_reactNativeSizeMatters.moderateScale)(1),maxHeight:dropdownHeight},dropdownContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:267,columnNumber:13}}),isSearchable&&_react.default.createElement(_.Container,(0,_extends2.default)({p:(0,_reactNativeSizeMatters.moderateScale)(1)},searchInputContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:275,columnNumber:17}}),_react.default.createElement(_.Input,(0,_extends2.default)({fontSize:"s",placeholder:"Search",containerStyles:{height:searchInputHeight,justifyContent:"center"},onChangeText:setSearchQuery},searchInputStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:276,columnNumber:19}}))),isOptionsEmpty&&!(isSearchedOptionsEmpty&&showCreateOption)&&_react.default.createElement(_.Container,(0,_extends2.default)({alignItems:"center",height:emptyOptionsPlaceholderHeight,justifyContent:"center"},emptyOptionsContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:289,columnNumber:17}}),_react.default.createElement(_.Typography,(0,_extends2.default)({color:"font.grey",fontFamily:"sf400",fontSize:"s"},emptyOptionsLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:295,columnNumber:19}}),emptyOptionsPlaceholder||"No Options")),isSearchedOptionsEmpty&&showCreateOption&&_react.default.createElement(_.Touchable,(0,_extends2.default)({alignItems:"center",height:emptySearchedOptionsHeight,justifyContent:"center",onPress:function onPress(){return onPressCreateOption(searchQuery);}},createSearchedOptionContainerStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:306,columnNumber:17}}),showCreateOptionLoader?_react.default.createElement(_.Loader,{color:theme.colors.background.base,size:"s",__self:_this,__source:{fileName:_jsxFileName,lineNumber:314,columnNumber:21}}):_react.default.createElement(_.Typography,(0,_extends2.default)({color:"font.grey",fontFamily:"sf400",fontSize:"s"},createSearchedOptionLabelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:316,columnNumber:21}}),createOptionLabel||"Create "+searchQuery+" option")),_react.default.createElement(_.Container,{height:0,__self:_this,__source:{fileName:_jsxFileName,lineNumber:328,columnNumber:15}},_react.default.createElement(_.Input,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:329,columnNumber:17}})),_react.default.createElement(_reactNativeGestureHandler.ScrollView,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:331,columnNumber:15}},filteredOptions.map(function(item,index){var optionLabel=labelExtractor(item,index);var optionValue=valueExtractor(item,index);var isSelectedItem=selectedOptionValue&&selectedOptionValue===optionValue;return _react.default.createElement(DropdownItem,{defaultDropdownItemHeight:defaultDropdownItemHeight,isSelectedItem:isSelectedItem,itemContainerStyle:itemContainerStyle,itemLabelStyle:itemLabelStyle,key:index,label:optionLabel,selectedItemContainerStyle:selectedItemContainerStyle,selectedItemLabelStyle:selectedItemLabelStyle,onPress:function onPress(){return handleItemSelection(item,index);},__self:_this,__source:{fileName:_jsxFileName,lineNumber:339,columnNumber:21}});}))))));};exports.Select=Select;Select.propTypes={label:_propTypes.default.string,options:_propTypes.default.arrayOf(_propTypes.default.shape({label:_propTypes.default.string,value:_propTypes.default.string})).isRequired,placeholder:_propTypes.default.string,emptyOptionsPlaceholder:_propTypes.default.string,labelExtractor:_propTypes.default.func,valueExtractor:_propTypes.default.func,value:_propTypes.default.object,onSelect:_propTypes.default.func,isLoading:_propTypes.default.bool,isSearchable:_propTypes.default.bool,showCreateOption:_propTypes.default.bool,showCreateOptionLoader:_propTypes.default.bool,createOptionLabel:_propTypes.default.string,onPressCreateOption:_propTypes.default.func,labelStyle:_propTypes.default.object,containerStyle:_propTypes.default.object,inputContainerStyle:_propTypes.default.object,dropdownContainerStyle:_propTypes.default.object,itemContainerStyle:_propTypes.default.object,itemLabelStyle:_propTypes.default.object,selectedItemContainerStyle:_propTypes.default.object,selectedItemLabelStyle:_propTypes.default.object,searchInputContainerStyle:_propTypes.default.object,searchInputStyle:_propTypes.default.object,emptyOptionsContainerStyle:_propTypes.default.object,emptyOptionsLabelStyle:_propTypes.default.object,createSearchedOptionContainerStyle:_propTypes.default.object,createSearchedOptionLabelStyle:_propTypes.default.object};Select.defaultProps={label:null,placeholder:"Select Option",emptyOptionsPlaceholder:null,labelExtractor:function labelExtractor(option){return option==null?void 0:option.label;},valueExtractor:function valueExtractor(option){return option==null?void 0:option.value;},value:null,onSelect:function onSelect(){},isLoading:false,isSearchable:false,showCreateOption:false,showCreateOptionLoader:false,createOptionLabel:null,onPressCreateOption:function onPressCreateOption(){}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SelectButton=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./");var _excluded=["selected","onSelect","disabled","label","selectIconStyle","labelStyle"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SelectButton.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var SelectButton=function SelectButton(_ref){var selected=_ref.selected,onSelect=_ref.onSelect,disabled=_ref.disabled,label=_ref.label,selectIconStyle=_ref.selectIconStyle,labelStyle=_ref.labelStyle,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var theme=(0,_react.useContext)(_native.ThemeContext);var disabledProps={labelProps:{opacity:0.5}};var selectedProps={labelProps:{fontFamily:theme.fonts.sf700}};var unselectedProps={labelProps:{fontFamily:theme.fonts.sf400}};return _react.default.createElement(_.Touchable,(0,_extends2.default)({alignItems:"center",disabled:disabled,flexDirection:"row",py:(0,_reactNativeSizeMatters.moderateScale)(8),onPress:onSelect},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:88,columnNumber:5}}),_react.default.createElement(_.Typography,(0,_extends2.default)({color:"font.primary",flex:1,fontSize:"m",lineHeight:(0,_reactNativeSizeMatters.moderateScale)(22)+"px"},selected&&selectedProps.labelProps,!selected&&unselectedProps.labelProps,disabled&&disabledProps.labelProps,labelStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:96,columnNumber:7}}),label),selected&&_react.default.createElement(_reactNativeRemixIcon.default,(0,_extends2.default)({color:theme.colors.font.primary,name:"check-fill",size:(0,_reactNativeSizeMatters.moderateScale)(20)},selectIconStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:109,columnNumber:9}})));};exports.SelectButton=SelectButton;SelectButton.propTypes={selected:_propTypes.default.bool.isRequired,onSelect:_propTypes.default.func.isRequired,disabled:_propTypes.default.bool,label:_propTypes.default.string,selectIconStyle:_propTypes.default.object,labelStyle:_propTypes.default.object};SelectButton.defaultProps={selected:false,onSelect:function onSelect(){}};
|