Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

IconButton.tsx 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import React from 'react';
  2. import { TouchableHighlight } from 'react-native';
  3. import Icon from '../../../icons/components/Icon';
  4. import styles from '../../../react/components/native/styles';
  5. import { IIconButtonProps } from '../../../react/types';
  6. import { BUTTON_TYPES } from '../../constants.native';
  7. import BaseTheme from '../BaseTheme.native';
  8. const IconButton: React.FC<IIconButtonProps> = ({
  9. accessibilityLabel,
  10. color: iconColor,
  11. disabled,
  12. onPress,
  13. size,
  14. src,
  15. style,
  16. tapColor,
  17. type
  18. }: IIconButtonProps) => {
  19. const { PRIMARY, SECONDARY, TERTIARY } = BUTTON_TYPES;
  20. let color;
  21. let underlayColor;
  22. let iconButtonContainerStyles;
  23. if (type === PRIMARY) {
  24. color = BaseTheme.palette.icon01;
  25. iconButtonContainerStyles = styles.iconButtonContainerPrimary;
  26. underlayColor = BaseTheme.palette.action01;
  27. } else if (type === SECONDARY) {
  28. color = BaseTheme.palette.icon04;
  29. iconButtonContainerStyles = styles.iconButtonContainerSecondary;
  30. underlayColor = BaseTheme.palette.action02;
  31. } else if (type === TERTIARY) {
  32. color = iconColor;
  33. iconButtonContainerStyles = styles.iconButtonContainer;
  34. underlayColor = BaseTheme.palette.action03;
  35. } else {
  36. color = iconColor;
  37. underlayColor = tapColor;
  38. }
  39. if (disabled) {
  40. color = BaseTheme.palette.icon03;
  41. iconButtonContainerStyles = styles.iconButtonContainerDisabled;
  42. underlayColor = 'transparent';
  43. }
  44. return (
  45. <TouchableHighlight
  46. accessibilityLabel = { accessibilityLabel }
  47. disabled = { disabled }
  48. onPress = { onPress }
  49. style = { [
  50. iconButtonContainerStyles,
  51. style
  52. ] }
  53. underlayColor = { underlayColor }>
  54. <Icon
  55. color = { color }
  56. size = { 20 || size }
  57. src = { src } />
  58. </TouchableHighlight>
  59. );
  60. };
  61. export default IconButton;