mirror of
https://github.com/zhigang1992/react-native-web.git
synced 2026-03-27 01:34:17 +08:00
Text: add props 'accessibilityLabel' and 'accessible'
These properties are missing in React Native but important for accessible web interfaces.
This commit is contained in:
@@ -10,27 +10,41 @@ The `Text` is unique relative to layout: child elements use text layout
|
||||
a `Text` are not rectangles, as they wrap when reaching the edge of their
|
||||
container.
|
||||
|
||||
Unsupported React Native props:
|
||||
`allowFontScaling` (ios),
|
||||
`suppressHighlighting` (ios)
|
||||
|
||||
## Props
|
||||
|
||||
NOTE: `Text` will transfer all other props to the rendered HTML element.
|
||||
|
||||
**children** any
|
||||
(web) **accessibilityLabel**: string
|
||||
|
||||
Defines the text available to assistive technologies upon interaction with the
|
||||
element. (This is implemented using `aria-label`.)
|
||||
|
||||
(web) **accessible**: bool = true
|
||||
|
||||
When `false`, the text is hidden from assistive technologies. (This is
|
||||
implemented using `aria-hidden`.)
|
||||
|
||||
**children**: any
|
||||
|
||||
Child content.
|
||||
|
||||
**component** function or string
|
||||
(web) **component**: function | string = 'span'
|
||||
|
||||
Default is `span`.
|
||||
Backing component.
|
||||
|
||||
**numberOfLines** number.
|
||||
**numberOfLines**: number
|
||||
|
||||
Truncates the text with an ellipsis after this many lines.
|
||||
Truncates the text with an ellipsis after this many lines. Currently only supports `1`.
|
||||
|
||||
**onPress** function
|
||||
**onPress**: function
|
||||
|
||||
This function is called on press.
|
||||
|
||||
**style** style
|
||||
**style**: style
|
||||
|
||||
+ `backgroundColor`
|
||||
+ `color`
|
||||
@@ -49,7 +63,7 @@ This function is called on press.
|
||||
+ `whiteSpace`
|
||||
+ `wordWrap`
|
||||
|
||||
**testID** string
|
||||
**testID**: string
|
||||
|
||||
Used to locate this view in end-to-end tests.
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@ const styles = {
|
||||
|
||||
class Text extends React.Component {
|
||||
static propTypes = {
|
||||
accessibilityLabel: PropTypes.string,
|
||||
accessible: PropTypes.bool,
|
||||
children: PropTypes.any,
|
||||
component: CoreComponent.propTypes.component,
|
||||
numberOfLines: PropTypes.number,
|
||||
@@ -45,6 +47,8 @@ class Text extends React.Component {
|
||||
|
||||
render() {
|
||||
const {
|
||||
accessibilityLabel,
|
||||
accessible,
|
||||
children,
|
||||
component,
|
||||
numberOfLines,
|
||||
@@ -59,6 +63,8 @@ class Text extends React.Component {
|
||||
return (
|
||||
<CoreComponent
|
||||
{...other}
|
||||
aria-hidden={accessible ? null : true}
|
||||
aria-label={accessibilityLabel}
|
||||
children={children}
|
||||
className={'Text'}
|
||||
component={component}
|
||||
|
||||
@@ -7,6 +7,14 @@ import Text from '.'
|
||||
const ReactTestUtils = React.addons.TestUtils
|
||||
|
||||
suite('Text', () => {
|
||||
test('prop "accessibilityLabel"', () => {
|
||||
assertProps.accessibilityLabel(Text)
|
||||
})
|
||||
|
||||
test('prop "accessible"', () => {
|
||||
assertProps.accessible(Text)
|
||||
})
|
||||
|
||||
test('prop "children"', () => {
|
||||
const children = 'children'
|
||||
const result = shallowRender(<Text>{children}</Text>)
|
||||
|
||||
Reference in New Issue
Block a user