diff --git a/demo/src/screens/componentScreens/StackAggregatorScreen.tsx b/demo/src/screens/componentScreens/StackAggregatorScreen.tsx index e122872aff..d24b494b11 100644 --- a/demo/src/screens/componentScreens/StackAggregatorScreen.tsx +++ b/demo/src/screens/componentScreens/StackAggregatorScreen.tsx @@ -68,7 +68,7 @@ export default class StackAggregatorScreen extends Component { containerStyle={{marginTop: 12}} onItemPress={this.onItemPress} collapsed={false} - contentContainerStyle={{backgroundColor: Colors.red70}} + backgroundColor={Colors.red70} // itemBorderRadius={10} // buttonProps={{color: Colors.green30, labelStyle: {...Typography.text80, fontWeight: '500'}}} > diff --git a/src/components/stackAggregator/index.tsx b/src/components/stackAggregator/index.tsx index 3da6c796c0..ac2532dd17 100644 --- a/src/components/stackAggregator/index.tsx +++ b/src/components/stackAggregator/index.tsx @@ -71,6 +71,7 @@ const StackAggregator = (props: StackAggregatorProps) => { disablePresses, onItemPress, contentContainerStyle, + backgroundColor, itemBorderRadius, onCollapseWillChange, onCollapseChanged @@ -83,11 +84,11 @@ const StackAggregator = (props: StackAggregatorProps) => { setIsCollapsed(collapsed); }, [collapsed]); - useDidUpdate(() => { + useDidUpdate(async () => { onCollapseWillChange?.(isCollapsed); - animate(); + await animate(); onCollapseChanged?.(isCollapsed); - }, [isCollapsed, onCollapseWillChange, onCollapseChanged]); + }, [isCollapsed, itemsCount]); /** Animations */ @@ -100,10 +101,11 @@ const StackAggregator = (props: StackAggregatorProps) => { const getItemScale = useCallback((index: number) => { if (isCollapsed) { - if (index === itemsCount - 2) { + if (index === 1) { return 0.95; } - if (index === itemsCount - 1) { + + if (index === 2) { return 0.9; } } @@ -185,10 +187,11 @@ const StackAggregator = (props: StackAggregatorProps) => { const getTop = (index: number) => { let start = 0; - if (index === itemsCount - 2) { + if (index === 1) { start += PEEP; } - if (index === itemsCount - 1) { + + if (index === 2) { start += PEEP * 2; } @@ -218,6 +221,10 @@ const StackAggregator = (props: StackAggregatorProps) => { ]; }, [firstItemHeight, itemsCount]); + const cardStyle = useMemo(() => { + return backgroundColor ? [styles.card, {backgroundColor}] : styles.card; + }, [backgroundColor]); + /** Events */ const _onItemPress = (index: number) => { @@ -241,7 +248,7 @@ const StackAggregator = (props: StackAggregatorProps) => { { ]} collapsable={false} > - _onItemPress(index)} borderRadius={itemBorderRadius} elevation={5}> + _onItemPress(index)} borderRadius={itemBorderRadius} elevation={5}> {item} @@ -324,8 +331,7 @@ const styles = StyleSheet.create({ }, card: { overflow: 'hidden', - flexShrink: 1, - backgroundColor: 'transparent' + flexShrink: 1 }, button: { zIndex: 100