@bigbinary/neetoui-rn 0.0.154 → 0.0.157
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 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Accordion=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.Accordion=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _native=require("styled-components/native");var _=require("./");var _excluded=["header","noBorder","iconProp","onStateChanged","children","position"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/Accordion.js";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 AccordionBody=function AccordionBody(_ref){var isExpanded=_ref.isExpanded,children=_ref.children;var animationController=(0,_react.useRef)(new _reactNative.Animated.Value(isExpanded?1:0)).current;var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),viewHeight=_useState2[0],setViewHeight=_useState2[1];(0,_react.useEffect)(function(){_reactNative.Animated.timing(animationController,{duration:300,toValue:isExpanded?1:0,useNativeDriver:false}).start();},[isExpanded]);var bodyContentHeight=animationController.interpolate({inputRange:[0,1],outputRange:[0,viewHeight]});var getLayout=function getLayout(event){var height=event.nativeEvent.layout.height;setViewHeight(height);};return _react.default.createElement(_reactNative.Animated.View,{style:{height:bodyContentHeight,overflow:"hidden"},__self:_this,__source:{fileName:_jsxFileName,lineNumber:80,columnNumber:5}},_react.default.createElement(_.Container,{width:"100%",position:"absolute",onLayout:getLayout,__self:_this,__source:{fileName:_jsxFileName,lineNumber:81,columnNumber:7}},children));};var Accordion=_react.default.forwardRef(function(props,ref){var header=props.header,_props$noBorder=props.noBorder,noBorder=_props$noBorder===void 0?false:_props$noBorder,_props$iconProp=props.iconProp,iconProp=_props$iconProp===void 0?{}:_props$iconProp,onStateChanged=props.onStateChanged,children=props.children,_props$position=props.position,position=_props$position===void 0?"bottom":_props$position,rest=(0,_objectWithoutProperties2.default)(props,_excluded);var name=iconProp.name,Label=iconProp.Label,size=iconProp.size,color=iconProp.color;var theme=(0,_react.useContext)(_native.ThemeContext);var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),isExpanded=_useState4[0],setExpanded=_useState4[1];var animationController=(0,_react.useRef)(new _reactNative.Animated.Value(isExpanded?1:0)).current;(0,_react.useEffect)(function(){_reactNative.Animated.timing(animationController,{duration:300,toValue:isExpanded?1:0,useNativeDriver:false}).start(function(){!!onStateChanged&&onStateChanged(isExpanded);});},[isExpanded]);var handleAnimation=function handleAnimation(){setExpanded(!isExpanded);};(0,_react.useImperativeHandle)(ref,function(){return{toggleAccordion:handleAnimation,openAccordion:function openAccordion(){return setExpanded(true);},closeAccordion:function closeAccordion(){return setExpanded(false);}};});var arrowAngle=animationController.interpolate({inputRange:[0,1],outputRange:["0rad",Math.PI+"rad"]});return _react.default.createElement(_.Container,(0,_extends2.default)({},!noBorder&&{borderColor:"border.grey400",borderWidth:1,borderRadius:8},{width:"100%"},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:132,columnNumber:5}}),position==="top"&&_react.default.createElement(AccordionBody,{isExpanded:isExpanded,__self:_this,__source:{fileName:_jsxFileName,lineNumber:142,columnNumber:9}},children),_react.default.createElement(_reactNative.TouchableOpacity,{rippleOpacity:0,style:styles.accordionContainer,onPress:function onPress(){handleAnimation();},__self:_this,__source:{fileName:_jsxFileName,lineNumber:144,columnNumber:7}},!!header&&_react.default.createElement(_.Container,{flexGrow:1,__self:_this,__source:{fileName:_jsxFileName,lineNumber:151,columnNumber:22}},header()),_react.default.createElement(_.Container,{alignItems:"center",justifyContent:"center",flexDirection:"row",px:1,__self:_this,__source:{fileName:_jsxFileName,lineNumber:152,columnNumber:9}},Label&&_react.default.createElement(Label,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:158,columnNumber:21}}),_react.default.createElement(_reactNative.Animated.View,{style:{alignItems:"flex-end",transform:[{rotateZ:arrowAngle}]},__self:_this,__source:{fileName:_jsxFileName,lineNumber:159,columnNumber:11}},_react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:165,columnNumber:13}},_react.default.createElement(_reactNativeRemixIcon.default,{name:name!=null?name:"ri-arrow-down-s-line",color:color!=null?color:theme.colors.font.grey700,size:size!=null?size:24,__self:_this,__source:{fileName:_jsxFileName,lineNumber:166,columnNumber:15}}))))),position==="bottom"&&_react.default.createElement(AccordionBody,{isExpanded:isExpanded,__self:_this,__source:{fileName:_jsxFileName,lineNumber:179,columnNumber:9}},children));});exports.Accordion=Accordion;AccordionBody.propTypes={isExpanded:_propTypes.default.bool.isRequired,children:_propTypes.default.element};Accordion.propTypes={header:_propTypes.default.func,children:_propTypes.default.node,noBorder:_propTypes.default.bool,onStateChanged:_propTypes.default.func,iconProp:_propTypes.default.shape({name:_propTypes.default.string,Label:_propTypes.default.elementType,size:_propTypes.default.number,color:_propTypes.default.string}),position:_propTypes.default.string};var styles=_reactNative.StyleSheet.create({accordionContainer:{flexDirection:"row",padding:12,alignItems:"center"}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SegmentPicker=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _propTypes=_interopRequireDefault(require("prop-types"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _=require("./");var _theme=require("../theme");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SegmentPicker.js";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 defaultShadowStyle={shadowColor:_theme.theme.colors.background.grey800,shadowOffset:{width:0,height:2},shadowOpacity:0.23,shadowRadius:2.62,elevation:4};var DEFAULT_SPRING_CONFIG={stiffness:150,damping:20,mass:1,overshootClamping:false,restSpeedThreshold:0.001,restDisplacementThreshold:0.001};var width=_reactNative.Dimensions.get("screen").width-32;var SegmentPicker=function SegmentPicker(_ref){var tabs=_ref.tabs,onChange=_ref.onChange,currentIndex=_ref.currentIndex,inactiveSegmentStyle=_ref.inactiveSegmentStyle,activeSegmentStyle=_ref.activeSegmentStyle,activeTextStyle=_ref.activeTextStyle,inactiveTextStyle=_ref.inactiveTextStyle,height=_ref.height;var translateValue=(width-4)/(tabs==null?void 0:tabs.length);var tabTranslateValue=(0,_reactNativeReanimated.useSharedValue)(0);var memoizedTabPressCallback=(0,_react.useCallback)(function(index){onChange(index);},[onChange]);(0,_react.useEffect)(function(){tabTranslateValue.value=(0,_reactNativeReanimated.withSpring)(currentIndex*(translateValue*1),DEFAULT_SPRING_CONFIG);},[currentIndex]);var tabTranslateAnimatedStyles=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){return{transform:[{translateX:tabTranslateValue.value}]};};_f._closure={tabTranslateValue:tabTranslateValue};_f.asString="function _f(){const{tabTranslateValue}=jsThis._closure;{return{transform:[{translateX:tabTranslateValue.value}]};}}";_f.__workletHash=13055522218631;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SegmentPicker.js (97:54)";_f.__optimalization=3;return _f;}());return _react.default.createElement(_reactNativeReanimated.default.View,{style:[styles.defaultSegmentedControlWrapper,inactiveSegmentStyle],__self:_this,__source:{fileName:_jsxFileName,lineNumber:104,columnNumber:5}},_react.default.createElement(_reactNativeReanimated.default.View,{style:[styles.movingSegmentStyle,activeSegmentStyle,defaultShadowStyle,_reactNative.StyleSheet.absoluteFill,{width:width/(tabs==null?void 0:tabs.length)},tabTranslateAnimatedStyles],__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:7}}),tabs.map(function(label,index){var currentIndexTextStyle=currentIndex===index?activeTextStyle:inactiveTextStyle;return _react.default.createElement(_.Touchable,{key:index,flex:1,
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SegmentPicker=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _propTypes=_interopRequireDefault(require("prop-types"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _=require("./");var _theme=require("../theme");var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SegmentPicker.js";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 defaultShadowStyle={shadowColor:_theme.theme.colors.background.grey800,shadowOffset:{width:0,height:2},shadowOpacity:0.23,shadowRadius:2.62,elevation:4};var DEFAULT_SPRING_CONFIG={stiffness:150,damping:20,mass:1,overshootClamping:false,restSpeedThreshold:0.001,restDisplacementThreshold:0.001};var width=_reactNative.Dimensions.get("screen").width-32;var SegmentPicker=function SegmentPicker(_ref){var tabs=_ref.tabs,onChange=_ref.onChange,currentIndex=_ref.currentIndex,inactiveSegmentStyle=_ref.inactiveSegmentStyle,activeSegmentStyle=_ref.activeSegmentStyle,activeTextStyle=_ref.activeTextStyle,inactiveTextStyle=_ref.inactiveTextStyle,height=_ref.height;var translateValue=(width-4)/(tabs==null?void 0:tabs.length);var tabTranslateValue=(0,_reactNativeReanimated.useSharedValue)(0);var memoizedTabPressCallback=(0,_react.useCallback)(function(index){onChange(index);},[onChange]);(0,_react.useEffect)(function(){tabTranslateValue.value=(0,_reactNativeReanimated.withSpring)(currentIndex*(translateValue*1),DEFAULT_SPRING_CONFIG);},[currentIndex]);var tabTranslateAnimatedStyles=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){return{transform:[{translateX:tabTranslateValue.value}]};};_f._closure={tabTranslateValue:tabTranslateValue};_f.asString="function _f(){const{tabTranslateValue}=jsThis._closure;{return{transform:[{translateX:tabTranslateValue.value}]};}}";_f.__workletHash=13055522218631;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/SegmentPicker.js (97:54)";_f.__optimalization=3;return _f;}());return _react.default.createElement(_reactNativeReanimated.default.View,{style:[styles.defaultSegmentedControlWrapper,inactiveSegmentStyle],__self:_this,__source:{fileName:_jsxFileName,lineNumber:104,columnNumber:5}},_react.default.createElement(_reactNativeReanimated.default.View,{style:[styles.movingSegmentStyle,activeSegmentStyle,defaultShadowStyle,_reactNative.StyleSheet.absoluteFill,{width:width/(tabs==null?void 0:tabs.length)},tabTranslateAnimatedStyles],__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:7}}),tabs.map(function(label,index){var currentIndexTextStyle=currentIndex===index?activeTextStyle:inactiveTextStyle;return _react.default.createElement(_.Touchable,{key:index,flex:1,onPress:function onPress(){return memoizedTabPressCallback(index);},height:height,justifyContent:"center",activeOpacity:0.7,__self:_this,__source:{fileName:_jsxFileName,lineNumber:124,columnNumber:11}},_react.default.createElement(_.Typography,(0,_extends2.default)({fontSize:"xs",textAlign:"center",color:"font.grey800",fontFamily:"sf500"},currentIndexTextStyle,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:132,columnNumber:13}}),label));}));};exports.SegmentPicker=SegmentPicker;var styles=_reactNative.StyleSheet.create({segmentedControlWrapper:{display:"flex",flexDirection:"row",alignItems:"center",borderRadius:8,width:width},defaultSegmentedControlWrapper:{position:"relative",display:"flex",flexDirection:"row",alignItems:"center",borderRadius:8,backgroundColor:"#F6F6FA",width:width},movingSegmentStyle:{top:0,marginVertical:2,marginHorizontal:2,borderRadius:6,backgroundColor:"#FFFFFF"}});SegmentPicker.propTypes={tabs:_propTypes.default.arrayOf(_propTypes.default.string).isRequired,onChange:_propTypes.default.func.isRequired,currentIndex:_propTypes.default.number.isRequired,inactiveSegmentStyle:_propTypes.default.object,activeSegmentStyle:_propTypes.default.object,inactiveTextStyle:_propTypes.default.object,activeTextStyle:_propTypes.default.object,height:_propTypes.default.number};SegmentPicker.defaultProps={tabs:[],onChange:function onChange(){},currentIndex:0,height:32};
|
package/package.json
CHANGED
|
@@ -5,12 +5,12 @@ import React, {
|
|
|
5
5
|
useEffect,
|
|
6
6
|
useImperativeHandle,
|
|
7
7
|
} from "react";
|
|
8
|
-
import { Animated } from "react-native";
|
|
8
|
+
import { Animated, StyleSheet, TouchableOpacity } from "react-native";
|
|
9
9
|
import PropTypes from "prop-types";
|
|
10
10
|
import Icon from "react-native-remix-icon";
|
|
11
11
|
import { ThemeContext } from "styled-components/native";
|
|
12
12
|
|
|
13
|
-
import { Container
|
|
13
|
+
import { Container } from "@components";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* A component used to display an expandable list item.
|
|
@@ -50,6 +50,41 @@ import { Container, Card } from "@components";
|
|
|
50
50
|
*
|
|
51
51
|
*/
|
|
52
52
|
|
|
53
|
+
const AccordionBody = ({ isExpanded, children }) => {
|
|
54
|
+
const animationController = useRef(
|
|
55
|
+
new Animated.Value(isExpanded ? 1 : 0)
|
|
56
|
+
).current;
|
|
57
|
+
|
|
58
|
+
const [viewHeight, setViewHeight] = useState(0);
|
|
59
|
+
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
Animated.timing(animationController, {
|
|
62
|
+
duration: 300,
|
|
63
|
+
toValue: isExpanded ? 1 : 0,
|
|
64
|
+
useNativeDriver: false,
|
|
65
|
+
}).start();
|
|
66
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
|
+
}, [isExpanded]);
|
|
68
|
+
|
|
69
|
+
const bodyContentHeight = animationController.interpolate({
|
|
70
|
+
inputRange: [0, 1],
|
|
71
|
+
outputRange: [0, viewHeight],
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const getLayout = event => {
|
|
75
|
+
const height = event.nativeEvent.layout.height;
|
|
76
|
+
setViewHeight(height);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<Animated.View style={{ height: bodyContentHeight, overflow: "hidden" }}>
|
|
81
|
+
<Container width="100%" position="absolute" onLayout={getLayout}>
|
|
82
|
+
{children}
|
|
83
|
+
</Container>
|
|
84
|
+
</Animated.View>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
|
|
53
88
|
export const Accordion = React.forwardRef((props, ref) => {
|
|
54
89
|
const {
|
|
55
90
|
header,
|
|
@@ -57,21 +92,16 @@ export const Accordion = React.forwardRef((props, ref) => {
|
|
|
57
92
|
iconProp = {},
|
|
58
93
|
onStateChanged,
|
|
59
94
|
children,
|
|
95
|
+
position = "bottom",
|
|
60
96
|
...rest
|
|
61
97
|
} = props;
|
|
62
98
|
const { name, Label, size, color } = iconProp;
|
|
63
99
|
const theme = useContext(ThemeContext);
|
|
64
100
|
const [isExpanded, setExpanded] = useState(false);
|
|
65
|
-
const [viewHeight, setViewHeight] = useState(0);
|
|
66
101
|
const animationController = useRef(
|
|
67
102
|
new Animated.Value(isExpanded ? 1 : 0)
|
|
68
103
|
).current;
|
|
69
104
|
|
|
70
|
-
const getLayout = event => {
|
|
71
|
-
const height = event.nativeEvent.layout.height;
|
|
72
|
-
setViewHeight(height);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
105
|
useEffect(() => {
|
|
76
106
|
Animated.timing(animationController, {
|
|
77
107
|
duration: 300,
|
|
@@ -89,6 +119,8 @@ export const Accordion = React.forwardRef((props, ref) => {
|
|
|
89
119
|
|
|
90
120
|
useImperativeHandle(ref, () => ({
|
|
91
121
|
toggleAccordion: handleAnimation,
|
|
122
|
+
openAccordion: () => setExpanded(true),
|
|
123
|
+
closeAccordion: () => setExpanded(false),
|
|
92
124
|
}));
|
|
93
125
|
|
|
94
126
|
const arrowAngle = animationController.interpolate({
|
|
@@ -96,11 +128,6 @@ export const Accordion = React.forwardRef((props, ref) => {
|
|
|
96
128
|
outputRange: ["0rad", `${Math.PI}rad`],
|
|
97
129
|
});
|
|
98
130
|
|
|
99
|
-
const bodyContentHeight = animationController.interpolate({
|
|
100
|
-
inputRange: [0, 1],
|
|
101
|
-
outputRange: [0, viewHeight],
|
|
102
|
-
});
|
|
103
|
-
|
|
104
131
|
return (
|
|
105
132
|
<Container
|
|
106
133
|
{...(!noBorder && {
|
|
@@ -111,10 +138,12 @@ export const Accordion = React.forwardRef((props, ref) => {
|
|
|
111
138
|
width="100%"
|
|
112
139
|
{...rest}
|
|
113
140
|
>
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
141
|
+
{position === "top" && (
|
|
142
|
+
<AccordionBody isExpanded={isExpanded}>{children}</AccordionBody>
|
|
143
|
+
)}
|
|
144
|
+
<TouchableOpacity
|
|
145
|
+
rippleOpacity={0}
|
|
146
|
+
style={styles.accordionContainer}
|
|
118
147
|
onPress={() => {
|
|
119
148
|
handleAnimation();
|
|
120
149
|
}}
|
|
@@ -142,16 +171,23 @@ export const Accordion = React.forwardRef((props, ref) => {
|
|
|
142
171
|
</Container>
|
|
143
172
|
</Animated.View>
|
|
144
173
|
</Container>
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
174
|
+
|
|
175
|
+
</TouchableOpacity>
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
{position === "bottom" && (
|
|
179
|
+
<AccordionBody isExpanded={isExpanded}>{children}</AccordionBody>
|
|
180
|
+
)}
|
|
181
|
+
|
|
151
182
|
</Container>
|
|
152
183
|
);
|
|
153
184
|
});
|
|
154
185
|
|
|
186
|
+
AccordionBody.propTypes = {
|
|
187
|
+
isExpanded: PropTypes.bool.isRequired,
|
|
188
|
+
children: PropTypes.element,
|
|
189
|
+
};
|
|
190
|
+
|
|
155
191
|
Accordion.propTypes = {
|
|
156
192
|
/**
|
|
157
193
|
* Render a component on the header.
|
|
@@ -182,4 +218,16 @@ Accordion.propTypes = {
|
|
|
182
218
|
size: PropTypes.number,
|
|
183
219
|
color: PropTypes.string,
|
|
184
220
|
}),
|
|
221
|
+
/**
|
|
222
|
+
* Determine whether the body should show at the top or bottom
|
|
223
|
+
*/
|
|
224
|
+
position: PropTypes.string,
|
|
185
225
|
};
|
|
226
|
+
|
|
227
|
+
const styles = StyleSheet.create({
|
|
228
|
+
accordionContainer: {
|
|
229
|
+
flexDirection: "row",
|
|
230
|
+
padding: 12,
|
|
231
|
+
alignItems: "center",
|
|
232
|
+
},
|
|
233
|
+
});
|