Commit Graph
26 Commits
Author SHA1 Message Date
Nicolas Gallagher 38fd574984 [add] Pressable support for hover state
This patch ports the 'useHover' hook to React Native for Web, providing hover
state that is scoped to a pressable and does not bubble to ancestor pressables.
This behavior aligns with the behavior of the focus and press states.

Fix #1708
2020-10-09 11:35:36 -07:00
James WardandNicolas Gallagher d97a1ca567 [add] Modal component
This adds support for the React Native Modal on web.

The app content is hidden from screen readers by setting the aria-modal flag on
the modal. This focus is trapped within the modal, both when attempting to
focus elsewhere using the mouse as well as when attempting to focus elsewhere
using the keyboard. A built-in "Escape to close" mechanism is been implemented
that calls 'onRequestClose' for the active modal.

Close #1646
Fix #1020
2020-10-09 11:32:31 -07:00
Shobhit ChittoraandNicolas Gallagher 06d3cadf05 Update docs suggested preset to metro-react-native-babel-preset
Updating the document as `babel-preset-react-native` is deprecated in favor for
`metro-react-native-babel-preset`. More info here -
https://www.npmjs.com/package/babel-preset-react-native.

Close #1751
2020-10-05 14:48:38 -07:00
Nicolas Gallagher 5dda71c2a6 [change] Remove 'accessibilityRelationship'; add 'dataSet'
Remove the 'accessibilityRelationship' prop which is not part of React Native.
The general approach to supporting ARIA-like accessibility APIs in React Native
needs revisiting and it will be easier to stop going down this path.

This patch also reverts the "unstable_ariaSet" change, and renames
"unstable_dataSet" to "dataSet". Avoiding another breaking change to
accessibility props will ease upgrading for now.
2020-06-26 14:51:55 -07:00
Nicolas Gallagher c2d4fd6d77 Fix TextInput onSelectionChange logic 2020-06-26 14:51:51 -07:00
Jaap FrolichandNicolas Gallagher 324995ec2b [add] Appearance module
Close #1597
2020-06-26 14:51:50 -07:00
Nicolas Gallagher cecacbc3ac Add eslint-plugin-flowtype 2020-06-26 14:51:49 -07:00
Nicolas Gallagher ff6109ec1c Update README and docs 2020-06-26 14:51:49 -07:00
Nicolas Gallagher aa647567ad [change] Remove hitSlop
Rely on the native behavior of browsers to provide hitslop for touch on
interactive elements.

Fix 1609
2020-06-26 14:51:48 -07:00
Nicolas Gallagher cf7d5e9b07 [fix] forwarding of refs and props
Fixes a performance regression in prop forwarding by reintroducing prop filtering.
Fixes ref forwarding to host components, mutating the host node to add imperative APIs.
2020-06-26 14:51:45 -07:00
Nicolas Gallagher 88f5dedffd [change] Add Pressable and replace Touchables
Port and rewrite "Pressability" from React Native as "PressResponder". This
integrates a press target with the responder system on web. It avoids
performing layout measurement during gestures by eschewing React Native's
iOS-like UX in favor of expected Web UX: a press target will look pressed until
the pointer is released, even if the pointer has moved outside the bounding
rect of the target.

The PressResponder is used to reimplement the existing Touchables. It's
expected that they will eventually be removed in favor of Pressable.

Fix #1583
Fix #1564
Fix #1534
Fix #1419
Fix #1219
Fix #1166
2020-06-26 14:51:43 -07:00
Nicolas Gallagher 4146b16a68 Add PanResponder examples to docs 2020-06-05 11:53:48 -07:00
Nicolas Gallagher fa6e269832 Add missing imports to docs mdx files 2020-06-02 10:57:38 -07:00
Nicolas Gallagher 7e616f6d46 Fix props table for docs
Stop using the built-in Props table from Storybook (which wasn't working.)
2020-06-02 10:57:36 -07:00
Nicolas Gallagher 8952eccf86 [change] Explicitly forward props and introduce unstable_{ariaSet,dataSet}
Rather than filtering props, they are explicitly forwarded in each component.
This makes it easier to see exactly which props are being forwarded to host
components by each React Native component. Two new props - `unstable_ariaSet`
and `unstable_dataSet` - are introduced to avoid iterating over props to find
`aria` and `data` props.

The `accessibilityValue` prop is also implemented.
2020-06-02 10:57:35 -07:00
Nicolas Gallagher 654f65e3e0 [change] modernize TextInput
Rewrite TextInput to use function components and hooks.
Rewrite the unit tests to replace enzyme with testing-library.

Fix #1339
2020-06-02 10:55:51 -07:00
Nicolas Gallagher 2724ca0293 Add eslint-plugin-react-hooks 2020-06-02 10:55:48 -07:00
Nicolas Gallagher e670e8135b [fix] TextInput forwards placeholderTextColor
Fix a bug introduced by 924e891f58

Ref #1512
2019-12-20 23:30:37 +00:00
Nicolas Gallagher e22f0bebb3 [fix] ScrollView disabling of scroll
Make sure 'scrollEnabled={false}' works on desktop browsers and no longer
relies on using 'e.preventDefault()'.

Fix #1491
2019-12-20 19:30:09 +00:00
Nicolas Gallagher fc033a3161 [add] TextInput disabled prop
Add support for disabling TextInput elements

Fix #1036
2019-12-20 19:18:01 +00:00
Max ThirouinandNicolas Gallagher 4763cc71c6 Document reasoning behind hairlineWidth value
Close #1488
2019-12-18 16:33:36 +00:00
Nicolas Gallagher aa8593ba97 [change] Switch prop 'trackColor' support
Remove support for legacy React Native props and add support for the
'trackColor' object. Retains support for the web-only equivalents as I think
this API is preferable to the one in React Native, both in terms of flexibility
and performance (no inline objects).

Fix #1382
2019-12-18 16:22:54 +00:00
Nicolas Gallagher 3c9cc66264 Update storybook dependencies 2019-12-18 14:52:03 +00:00
Nicolas Gallagher 1ad1693039 [change] Remove PropTypes exports and internal use
Removes the following deprecated exports: `ColorPropType`,
`EdgeInsetsPropType`, `PointPropType`, `TextPropTypes`, and `ViewPropTypes`.

Remove all use of `prop-types` in the implementations of components. Flow types
are used instead, so there will no longer be runtime warnings related to props.

NOTE: Removes support for `className` prop.

Fix #1383
Close #1477
Close #1474
Close #1489
2019-12-18 12:40:31 +00:00
Nicolas Gallagher afb8d3b7fb [change] Configure hydration using AppRegistry.runApplication()
Client-side hydration of server-rendered HTML now requires that `hydrate` is explicitly set in the `appParams` passed to `AppRegistry.runApplication()`.

Fix #1374
2019-11-12 16:54:51 -08:00
Nicolas Gallagher 297cda7901 Rewrite interactive documentation
Consolidate all docs within the latest storybook

Ref #1172
2019-11-12 15:19:48 -08:00