|
@@ -6,13 +6,14 @@ import {
|
|
|
UIManager,
|
|
|
View,
|
|
|
} from 'react-native';
|
|
|
-import React from 'react';
|
|
|
+import React, { useState } from 'react';
|
|
|
import NewscoutLogo from '../components/molecules/NewscoutLogo';
|
|
|
import fonts from '../theme/fonts';
|
|
|
import CircularPrimaryBackButton from '../components/organisms/Buttons/CircularPrimaryBackButton';
|
|
|
-import {List} from 'react-native-paper';
|
|
|
+import { List } from 'react-native-paper';
|
|
|
import colors from '../theme/colors';
|
|
|
import EntypoIcon from 'react-native-vector-icons/Entypo'
|
|
|
+import { ScrollView } from 'react-native-gesture-handler';
|
|
|
|
|
|
const data = [
|
|
|
{
|
|
@@ -37,13 +38,28 @@ const data = [
|
|
|
},
|
|
|
];
|
|
|
|
|
|
-const SidebarPage = ({navigation}) => {
|
|
|
+const SidebarPage = ({ navigation }) => {
|
|
|
if (
|
|
|
Platform.OS === 'android' &&
|
|
|
UIManager.setLayoutAnimationEnabledExperimental
|
|
|
) {
|
|
|
UIManager.setLayoutAnimationEnabledExperimental(true);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ const [isExpanded, setExpanded] = useState(
|
|
|
+ data.map((item) => {
|
|
|
+ return {
|
|
|
+ key: item.title,
|
|
|
+ value: false
|
|
|
+ };
|
|
|
+ }).reduce((result, item) => {
|
|
|
+ result[item.key] = item.value;
|
|
|
+ return result;
|
|
|
+ }, {})
|
|
|
+ )
|
|
|
+
|
|
|
return (
|
|
|
<View style={styles.sideBarContainer}>
|
|
|
<View style={styles.logoContainer}>
|
|
@@ -52,31 +68,43 @@ const SidebarPage = ({navigation}) => {
|
|
|
<View style={styles.buttonContainer}>
|
|
|
<CircularPrimaryBackButton onPress={() => navigation.toggleDrawer()} />
|
|
|
</View>
|
|
|
- <View style={styles.accordionContainer}>
|
|
|
- <List.AccordionGroup>
|
|
|
- {data.map(item => (
|
|
|
- <List.Accordion
|
|
|
- style={styles.accordionStyle}
|
|
|
- titleStyle={styles.accordionTextStyle}
|
|
|
- onPress={() =>
|
|
|
- LayoutAnimation.configureNext(
|
|
|
- LayoutAnimation.Presets.easeInEaseOut,
|
|
|
- )
|
|
|
- }
|
|
|
- right={() => <EntypoIcon name="chevron-down" size={12}/>}
|
|
|
- id={data.indexOf(item)}
|
|
|
- title={item.title}>
|
|
|
- {item.subTitles.map(subTitle => (
|
|
|
- <List.Item
|
|
|
- style={styles.accordionItemStyle}
|
|
|
- titleStyle={styles.accordionItemTextStyle}
|
|
|
- title={subTitle}
|
|
|
- />
|
|
|
- ))}
|
|
|
- </List.Accordion>
|
|
|
- ))}
|
|
|
- </List.AccordionGroup>
|
|
|
- </View>
|
|
|
+ <ScrollView>
|
|
|
+ <View style={styles.accordionContainer}>
|
|
|
+ <List.AccordionGroup>
|
|
|
+ {data.map(item => (
|
|
|
+ <List.Accordion
|
|
|
+ key={data.indexOf(item)}
|
|
|
+ id={`${data.indexOf(item)}`}
|
|
|
+ style={[styles.accordionStyle]}
|
|
|
+ titleStyle={[styles.accordionTextStyle, {}]}
|
|
|
+ onPress={() => {
|
|
|
+ // setExpandedsetIsShowingText(!isShowingText);
|
|
|
+ // LayoutAnimation.configureNext(
|
|
|
+ // LayoutAnimation.Presets.easeInEaseOut,
|
|
|
+ // )
|
|
|
+ // const nextState = { ...isExpanded };
|
|
|
+ // nextState[item.title] = !nextState[item.title];
|
|
|
+ //console.log("set state changes");
|
|
|
+ // setExpanded(nextState);
|
|
|
+ }}
|
|
|
+ expanded={isExpanded[item.title]}
|
|
|
+ left={() => <View style={{ paddingLeft: 16, }}><EntypoIcon name="box" size={24} /></View>}
|
|
|
+ right={() => <EntypoIcon name="chevron-down" size={12} />}
|
|
|
+ title={item.title}>
|
|
|
+ {item.subTitles.map(subTitle => (
|
|
|
+ <List.Item
|
|
|
+ key={item.subTitles.indexOf(subTitle)}
|
|
|
+ style={styles.accordionItemStyle}
|
|
|
+ titleStyle={styles.accordionItemTextStyle}
|
|
|
+ title={subTitle}
|
|
|
+ />
|
|
|
+ ))}
|
|
|
+ </List.Accordion>
|
|
|
+ ))}
|
|
|
+ </List.AccordionGroup>
|
|
|
+ </View>
|
|
|
+ </ScrollView>
|
|
|
+
|
|
|
</View>
|
|
|
);
|
|
|
};
|
|
@@ -107,7 +135,7 @@ const styles = StyleSheet.create({
|
|
|
borderRadius: fonts.getSize(8),
|
|
|
borderWidth: fonts.getSize(3),
|
|
|
borderColor: colors.lightGray,
|
|
|
- maxHeight: fonts.getSize(52)
|
|
|
+ maxHeight: fonts.getSize(52),
|
|
|
},
|
|
|
- accordionTextStyle: {fontFamily: fonts.type.medium},
|
|
|
+ accordionTextStyle: { fontFamily: fonts.type.medium },
|
|
|
});
|