react-native#AccessibilityRole TypeScript Examples
The following examples show how to use
react-native#AccessibilityRole.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Button.tsx From mobile with Apache License 2.0 | 5 votes |
Button = ({
text,
onPress,
variant,
color: buttonColorName,
disabled,
loading,
externalLink,
}: ButtonProps) => {
const [i18n] = useI18n();
const theme = useTheme<Theme>();
const variantProps = theme.buttonVariants[variant];
const disabledProps = disabled ? variantProps.disabled || {} : {};
const themedStyles = {...variantProps, ...disabledProps};
const {fontSize, fontWeight, fontFamily, color, borderWidth, height} = (themedStyles as unknown) as TextStyle &
ViewStyle;
const textColor = themedStyles.textColor;
const buttonColor = buttonColorName && theme.colors[buttonColorName];
const onPressHandler = loading ? () => {} : onPress;
const externalLinkProps = externalLink
? {
accessibilityLabel: text,
accessibilityHint: i18n.translate('Home.ExternalLinkHint'),
accessibilityRole: 'link' as AccessibilityRole,
}
: {};
const externalArrowIcon = textColor === palette.white ? 'icon-external-arrow-light' : 'icon-external-arrow';
const content = (
<Box
borderRadius={4}
alignItems="center"
justifyContent="center"
style={{backgroundColor: color, minHeight: height, borderWidth, borderColor: buttonColor}}
paddingHorizontal="m"
flexDirection="row"
>
{loading ? (
<ActivityIndicator color={textColor} size="large" />
) : (
<>
<Text style={{...styles.content, color: textColor || buttonColor, fontWeight, fontFamily, fontSize}}>
{text}
</Text>
{externalLink && <Icon name={externalArrowIcon} />}
</>
)}
</Box>
);
const accessibilityProps = {
accessibilityRole: 'button' as 'button',
accessibilityState: {disabled},
...externalLinkProps,
};
if (Platform.OS === 'android') {
return (
<Ripple rippleContainerBorderRadius={4} onPress={onPressHandler} {...accessibilityProps}>
{content}
</Ripple>
);
}
return (
<TouchableOpacity onPress={onPressHandler} style={styles.stretch} disabled={disabled} {...accessibilityProps}>
{content}
</TouchableOpacity>
);
}
Example #2
Source File: Button.tsx From mobile with Apache License 2.0 | 4 votes |
Button = ({
text,
onPress,
variant,
color: buttonColorName,
disabled,
loading,
externalLink,
internalLink,
backButton,
iconName,
testID,
flagIcon,
}: ButtonProps) => {
const i18n = useI18n();
const theme = useTheme<Theme>();
const variantProps = theme.buttonVariants[variant];
const disabledProps = disabled ? variantProps.disabled || {} : {};
const themedStyles = {...variantProps, ...disabledProps};
const {
fontSize,
fontWeight,
fontFamily,
color,
borderBottomWidth,
height,
borderBottomColor,
} = (themedStyles as unknown) as TextStyle & ViewStyle;
const textColor = themedStyles.textColor;
const buttonColor = buttonColorName && theme.colors[buttonColorName];
const onPressHandler = loading ? () => {} : onPress;
const externalLinkProps = externalLink
? {
accessibilityLabel: text,
accessibilityHint: i18n.translate('Home.ExternalLinkHint'),
accessibilityRole: 'link' as AccessibilityRole,
}
: {};
const externalArrowIcon = textColor === palette.white ? 'icon-external-arrow-light' : 'icon-external-arrow';
const borderRadius = 13;
const boxStyles: BoxProps['style'] = {
backgroundColor: color,
minHeight: height,
borderBottomWidth,
borderBottomColor: Platform.OS === 'ios' ? palette.fadedWhiteDark : borderBottomColor,
shadowColor: color,
shadowOffset: {
width: 0,
height: 1,
},
shadowOpacity: 0.3,
shadowRadius: 10,
};
const content = (
<Box
borderRadius={borderRadius}
alignItems="center"
justifyContent="center"
shadowColor="bodyText"
style={boxStyles}
paddingHorizontal="m"
paddingVertical="m"
flexDirection="row"
>
{loading ? (
<ActivityIndicator color={textColor} size="large" />
) : (
<>
{backButton && (
<Box style={styles.backIcon} marginRight="s">
<Icon size={14} name="icon-chevron-back" />
</Box>
)}
{flagIcon && (
<Box marginRight="s">
<Icon size={25} name={flagIcon} />
</Box>
)}
<Text style={{...styles.content, color: textColor || buttonColor, fontWeight, fontFamily, fontSize}}>
{text}
</Text>
<Box style={{...styles.chevronOffset}}>
{externalLink && <Icon name={externalArrowIcon} />}
{internalLink && <Icon size={25} name="icon-chevron" />}
{iconName && <Icon size={25} name={iconName} />}
</Box>
</>
)}
</Box>
);
const accessibilityProps = {
accessibilityRole: 'button' as 'button',
accessibilityState: {disabled},
...externalLinkProps,
};
if (Platform.OS === 'android') {
return (
<Ripple
disabled={disabled}
onPress={onPressHandler}
backgroundColor={color}
borderRadius={borderRadius}
testID={testID}
{...accessibilityProps}
>
{content}
</Ripple>
);
}
return (
<TouchableOpacity
activeOpacity={0.8}
onPress={onPressHandler}
style={styles.stretch}
disabled={disabled}
testID={testID}
{...accessibilityProps}
>
{content}
</TouchableOpacity>
);
}
Example #3
Source File: ButtonMultiline.tsx From mobile with Apache License 2.0 | 4 votes |
ButtonMultiline = ({
text,
text1,
onPress,
variant,
color: buttonColorName,
disabled,
loading,
externalLink,
internalLink,
}: ButtonMultilineProps) => {
const i18n = useI18n();
const theme = useTheme<Theme>();
const variantProps = theme.buttonVariants[variant];
const disabledProps = disabled ? variantProps.disabled || {} : {};
const themedStyles = {...variantProps, ...disabledProps};
const {fontSize, fontWeight, fontFamily, color, borderWidth, height} = (themedStyles as unknown) as TextStyle &
ViewStyle;
const textColor = themedStyles.textColor;
const buttonColor = buttonColorName && theme.colors[buttonColorName];
const onPressHandler = loading ? () => {} : onPress;
const externalLinkProps = externalLink
? {
accessibilityLabel: text,
accessibilityHint: i18n.translate('Home.ExternalLinkHint'),
accessibilityRole: 'link' as AccessibilityRole,
}
: {};
const externalArrowIcon = textColor === palette.white ? 'icon-external-arrow-light' : 'icon-external-arrow';
const borderRadius = 10;
const boxStyles: BoxProps['style'] = {
backgroundColor: Platform.OS === 'ios' ? color : 'transparent',
minHeight: height,
borderWidth,
borderColor: buttonColor,
};
const content = (
<Box
borderRadius={borderRadius}
alignItems="center"
justifyContent="center"
style={boxStyles}
paddingHorizontal="m"
paddingVertical="m"
flexDirection="row"
>
{loading ? (
<ActivityIndicator color={textColor} size="large" />
) : (
<>
<Box
flex={1}
flexBasis="100%"
flexDirection="row-reverse"
alignItems="flex-start"
justifyContent="flex-start"
>
<Box flexBasis={25} style={{...styles.iconOffset}}>
{externalLink && <Icon name={externalArrowIcon} size={25} />}
{internalLink && <Icon name="icon-chevron-white" size={25} />}
</Box>
<Box flex={1} flexBasis="90%" alignItems="flex-start" justifyContent="flex-end">
<Text
style={{
...styles.content,
color: textColor || buttonColor,
fontFamily,
fontSize,
...styles.strong,
}}
>
{text}
</Text>
<Text style={{...styles.content, color: textColor || buttonColor, fontWeight, fontFamily, fontSize}}>
{text1}
</Text>
</Box>
</Box>
</>
)}
</Box>
);
const accessibilityProps = {
accessibilityRole: 'button' as 'button',
accessibilityState: {disabled},
...externalLinkProps,
};
if (Platform.OS === 'android') {
return (
<Ripple
disabled={disabled}
onPress={onPressHandler}
backgroundColor={color}
borderRadius={borderRadius}
{...accessibilityProps}
>
{content}
</Ripple>
);
}
return (
<TouchableOpacity
activeOpacity={0.6}
onPress={onPressHandler}
style={styles.stretch}
disabled={disabled}
{...accessibilityProps}
>
{content}
</TouchableOpacity>
);
}
Example #4
Source File: ButtonSingleLine.tsx From mobile with Apache License 2.0 | 4 votes |
ButtonSingleLine = ({
text,
onPress,
variant,
color: buttonColorName,
disabled,
loading,
externalLink,
internalLink,
iconName,
testID,
}: ButtonSingleLineProps) => {
const i18n = useI18n();
const theme = useTheme<Theme>();
const variantProps = theme.buttonVariants[variant];
const disabledProps = disabled ? variantProps.disabled || {} : {};
const themedStyles = {...variantProps, ...disabledProps};
const {color, borderWidth, height, borderBottomWidth, borderBottomColor} = (themedStyles as unknown) as TextStyle &
ViewStyle;
const textColor = themedStyles.textColor;
const buttonColor = buttonColorName && theme.colors[buttonColorName];
const onPressHandler = loading ? () => {} : onPress;
const externalLinkProps = externalLink
? {
accessibilityLabel: text,
accessibilityHint: i18n.translate('Home.ExternalLinkHint'),
accessibilityRole: 'link' as AccessibilityRole,
}
: {};
let externalArrowIcon: IconName = 'icon-external-arrow-light';
if (typeof externalLink === 'string') {
externalArrowIcon = externalLink;
}
const borderRadius = 13;
const boxStyles: BoxProps['style'] = {
backgroundColor: color,
minHeight: height,
borderWidth,
borderColor: buttonColor,
borderBottomWidth,
borderBottomColor: Platform.OS === 'ios' ? palette.fadedWhiteDark : borderBottomColor,
shadowColor: color,
shadowOffset: {
width: 0,
height: 1,
},
shadowOpacity: 0.3,
shadowRadius: 10,
};
const content = (
<Box
borderRadius={borderRadius}
alignItems="center"
justifyContent="center"
style={boxStyles}
paddingHorizontal="m"
paddingVertical="m"
flexDirection="row"
>
{loading ? (
<ActivityIndicator color={textColor} size="large" />
) : (
<Box flexDirection="row-reverse" alignItems="flex-start" justifyContent="flex-start">
{externalLink && (
<Box flex={0} style={{...styles.iconOffsetExternal}}>
<Icon name={externalArrowIcon} size={23} />
</Box>
)}
{internalLink && (
<Box flex={0} style={{...styles.iconOffsetChevron}}>
<Icon size={25} name="icon-chevron-white" />
</Box>
)}
{iconName && (
<Box flex={0} style={{...styles.iconOffsetChevron}}>
<Icon size={25} name={iconName} />
</Box>
)}
<Box flex={1} marginLeft="s" alignItems="flex-start" justifyContent="flex-end">
<Text
variant="menuItemTitle"
style={{
...styles.content,
color: textColor || buttonColor,
fontWeight: 'bold',
fontSize: 18,
lineHeight: 29,
}}
>
{text}
</Text>
</Box>
</Box>
)}
</Box>
);
const accessibilityProps = {
accessibilityRole: 'button' as 'button',
accessibilityState: {disabled},
...externalLinkProps,
};
if (Platform.OS === 'android') {
return externalLink ? (
<TouchableOpacity
accessible
disabled={disabled}
onPress={onPressHandler}
activeOpacity={0.6}
testID={testID}
{...accessibilityProps}
>
{content}
</TouchableOpacity>
) : (
<Ripple
disabled={disabled}
onPress={onPressHandler}
backgroundColor={color}
borderRadius={borderRadius}
testID={testID}
{...accessibilityProps}
>
{content}
</Ripple>
);
}
return (
<TouchableOpacity
activeOpacity={0.6}
onPress={onPressHandler}
style={styles.stretch}
disabled={disabled}
testID={testID}
{...accessibilityProps}
>
{content}
</TouchableOpacity>
);
}
Example #5
Source File: InfoButton.tsx From mobile with Apache License 2.0 | 4 votes |
InfoButton = ({
title,
text,
onPress,
variant,
color: buttonColorName,
disabled,
loading,
externalLink,
internalLink,
}: InfoButtonProps) => {
const i18n = useI18n();
const theme = useTheme<Theme>();
const variantProps = theme.buttonVariants[variant];
const disabledProps = disabled ? variantProps.disabled || {} : {};
const themedStyles = {...variantProps, ...disabledProps};
const {borderWidth, height} = (themedStyles as unknown) as TextStyle & ViewStyle;
const textColor = themedStyles.textColor;
const buttonColor = buttonColorName && theme.colors[buttonColorName];
const onPressHandler = loading ? () => {} : onPress;
const externalLinkProps = externalLink
? {
accessibilityLabel: text,
accessibilityHint: i18n.translate('Home.ExternalLinkHint'),
accessibilityRole: 'link' as AccessibilityRole,
}
: {};
const borderRadius = 13;
const boxStyle = {
shadowColor: buttonColor,
shadowOffset: {
width: 0,
height: 1,
},
shadowOpacity: 0.3,
shadowRadius: 10,
padding: 14,
};
const content = (
<Box
borderRadius={borderRadius}
style={{
minHeight: height,
borderWidth,
borderColor: buttonColor,
backgroundColor: buttonColor,
...boxStyle,
}}
flexDirection="row"
>
{loading ? (
<ActivityIndicator color={textColor} size="large" />
) : (
<>
<Box>
<Text variant="menuItemTitle" fontWeight="bold" color="bodyTitleWhite" marginBottom="s">
{title}
</Text>
<Text variant="menuItemTitle" color="bodyTextWhite">
{text}
</Text>
</Box>
<Box style={{...styles.chevronOffset}}>
{externalLink && <Icon name="icon-external-arrow-light" />}
{internalLink && <Icon size={25} name="icon-chevron-white" />}
</Box>
</>
)}
</Box>
);
const accessibilityProps = {
accessibilityRole: 'button' as 'button',
accessibilityState: {disabled},
...externalLinkProps,
};
if (Platform.OS === 'android') {
return (
<Ripple
disabled={disabled}
onPress={onPressHandler}
backgroundColor={buttonColor}
borderRadius={borderRadius}
{...accessibilityProps}
>
{content}
</Ripple>
);
}
return (
<TouchableOpacity activeOpacity={0.6} onPress={onPressHandler} disabled={disabled} {...accessibilityProps}>
{content}
</TouchableOpacity>
);
}