diff --git a/src/basic/Accordion.js b/src/basic/Accordion.js
index 02805dce9..229d9ccda 100644
--- a/src/basic/Accordion.js
+++ b/src/basic/Accordion.js
@@ -16,39 +16,42 @@ import { Icon } from './Icon';
class DefaultHeader extends React.Component {
render() {
+ const {
+ expanded,
+ expandedIcon,
+ expandedIconStyle,
+ headerStyle,
+ icon,
+ iconStyle,
+ title
+ } = this.props;
+
const variables = this.context.theme
? this.context.theme['@@shoutem.theme/themeStyle'].variables
: variable;
+
return (
- {this.props.title}
+ {title}
@@ -58,19 +61,18 @@ class DefaultHeader extends React.Component {
class DefaultContent extends React.Component {
render() {
+ const { content, contentStyle } = this.props;
const variables = this.context.theme
? this.context.theme['@@shoutem.theme/themeStyle'].variables
: variable;
return (
- {this.props.content}
+ {content}
);
}
@@ -88,10 +90,11 @@ class AccordionSubItem extends React.Component {
}).start();
}
render() {
+ const { children, style } = this.props;
const { fadeAnim } = this.state;
return (
-
- {this.props.children}
+
+ {children}
);
}
@@ -99,35 +102,56 @@ class AccordionSubItem extends React.Component {
class AccordionItem extends React.Component {
render() {
+ const {
+ contentStyle,
+ expanded,
+ expandedIcon,
+ expandedIconStyle,
+ headerStyle,
+ icon,
+ iconStyle,
+ index,
+ item,
+ onAccordionClose,
+ onAccordionOpen,
+ renderContent,
+ renderHeader,
+ setSelected
+ } = this.props;
+
return (
this.props.setSelected(this.props.index)}
+ onPress={() => {
+ onAccordionOpen && !expanded && onAccordionOpen(item, index);
+ onAccordionClose && expanded && onAccordionClose(item, index);
+ setSelected(index);
+ }}
>
- {this.props.renderHeader ? (
- this.props.renderHeader(this.props.item, this.props.expanded)
+ {renderHeader ? (
+ renderHeader(item, expanded)
) : (
)}
- {this.props.expanded ? (
+ {expanded ? (
- {this.props.renderContent ? (
- this.props.renderContent(this.props.item)
+ {renderContent ? (
+ renderContent(item)
) : (
)}
@@ -154,36 +178,53 @@ export class Accordion extends React.Component {
}
render() {
+ const {
+ contentStyle,
+ dataArray,
+ expandedIcon,
+ expandedIconStyle,
+ headerStyle,
+ icon,
+ iconStyle,
+ onAccordionClose,
+ onAccordionOpen,
+ renderContent,
+ renderHeader,
+ style
+ } = this.props;
+
const variables = this.context.theme
? this.context.theme['@@shoutem.theme/themeStyle'].variables
: variable;
return (
String(index)}
renderItem={({ item, index }) => (
this.setSelected(i)}
- headerStyle={this.props.headerStyle}
- contentStyle={this.props.contentStyle}
- renderHeader={this.props.renderHeader}
- renderContent={this.props.renderContent}
- icon={this.props.icon}
- iconStyle={this.props.iconStyle}
- expandedIcon={this.props.expandedIcon}
- expandedIconStyle={this.props.expandedIconStyle}
/>
)}
{...this.props}
@@ -195,7 +236,7 @@ export class Accordion extends React.Component {
const styles = StyleSheet.create({
defaultHeader: {
flexDirection: 'row',
- padding: 10,
+ padding: variable.accordionContentPadding,
justifyContent: 'space-between',
alignItems: 'center'
}
diff --git a/src/theme/variables/platform.js b/src/theme/variables/platform.js
index f3ad9c6ca..f8e569dc4 100644
--- a/src/theme/variables/platform.js
+++ b/src/theme/variables/platform.js
@@ -21,11 +21,13 @@ export default {
platform,
// Accordion
- headerStyle: '#edebed',
- iconStyle: '#000',
+ accordionBorderColor: '#d3d3d3',
+ accordionContentPadding: 10,
+ accordionIconFontSize: 18,
contentStyle: '#f5f4f5',
expandedIconStyle: '#000',
- accordionBorderColor: '#d3d3d3',
+ headerStyle: '#edebed',
+ iconStyle: '#000',
// Android
androidRipple: true,