Plus.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import * as React from 'react';
  2. import { Animated } from 'react-native';
  3. import { IconButton } from 'react-native-paper';
  4. import { Flex, ActivityIndicator } from '@ant-design/react-native';
  5. import { useAnimation } from 'react-native-animation-hooks';
  6. import Text from './Text';
  7. export default function PlusCom(props) {
  8. const { num, minus, plusEvent, loading } = props;
  9. const minusOpacity = useAnimation({
  10. type: 'timing',
  11. initialValue: 0,
  12. duration: 100,
  13. toValue: num ? 1 : 0,
  14. });
  15. return (
  16. <>
  17. <Flex
  18. style={{
  19. position: 'absolute',
  20. right: 0,
  21. bottom: 0,
  22. zIndex: 2,
  23. // transform: [{ translateY: 10 }],
  24. }}
  25. >
  26. <Animated.View
  27. style={{
  28. opacity: minusOpacity,
  29. }}
  30. >
  31. <Flex>
  32. <IconButton
  33. icon="minus-circle-outline"
  34. color="#FFB11E"
  35. size={20}
  36. disabled={!num}
  37. onPress={minus}
  38. />
  39. {loading ? (
  40. <ActivityIndicator />
  41. ) : (
  42. <Text size="c2">{num || 0}</Text>
  43. )}
  44. </Flex>
  45. </Animated.View>
  46. <IconButton
  47. icon="plus-circle"
  48. color="#FFB11E"
  49. size={20}
  50. onPress={plusEvent}
  51. />
  52. </Flex>
  53. </>
  54. );
  55. }