1.2.0 • Published 2 years ago

react-native-expandable-stack v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

react-native-expandable-stack

This is a simple library that allows you to create a stack of items that can be expanded or collapsed.

Demo

Installation

This library requires react-native-reanimated, please refer to their installation guide.

npm:

npm install react-native-expandable-stack react-native-reanimated

yarn:

yarn add react-native-expandable-stack react-native-reanimated

Usage

Ideally, your stacked items should have the same height.

Basic

import { Stack } from 'react-native-expandable-stack';

const Component = () => {
  const [isExpanded, setIsExpanded] = useState(false);

  return (
    <Stack expanded={isExpanded} gap={20} offset={-40}>
      {/* Your items here */}
    </Stack>
  );
};

Custom Spring config

import { Stack } from 'react-native-expandable-stack';

const springConfig = {
  damping: 8,
  mass: 0.5,
};

const Component = () => {
  const [isExpanded, setIsExpanded] = useState(false);

  return (
    <Stack
      expanded={isExpanded}
      animation={{ type: 'spring', config: springConfig }}
    >
      {/* Your items here */}
    </Stack>
  );
};

Custom Timing config

import { Stack } from 'react-native-expandable-stack';

const timingConfig = {
  duration: 600,
};

const Component = () => {
  const [isExpanded, setIsExpanded] = useState(false);

  return (
    <Stack
      expanded={isExpanded}
      animation={{ type: 'timing', config: timingConfig }}
    >
      {/* Your items here */}
    </Stack>
  );
};

Props

NameTypeRequiredDefaultDescription
expandedbooleanYesfalseDetermines if the stack should be expanded or collapsed.
gapnumberNo10Determines the gap between items in expanded state.
offsetnumberNo-20Determines the overlap of the items in collapsed state. Usually you will want a negative number.
animation{type: 'timing', config: WithTimingConfig},{type: 'spring', config: WithSpringConfig}No{type: 'spring', config: {damping: 5, mass: 0.2}}Determines the animation to run. config is optional and takes in react-native-reanimated options, depending on the type:type: 'timing': withTiming options type: 'spring': withSpring options
onExpandStart() => voidNo-Runs a given function when expansion starts.
onExpandEnd() => voidNo-Runs a given function when expansion ends.
firstItemOnTopbooleanNofalseMakes the first item appear on top of the stack.
animatedProgressAnimated.SharedValue<number>No-Exposes animatedProgress value as a shared value, 0 means collapsed, 1 means expanded.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with create-react-native-library