diff --git a/packages/react-native-web/src/exports/Text/__tests__/__snapshots__/index-test.js.snap b/packages/react-native-web/src/exports/Text/__tests__/__snapshots__/index-test.js.snap
index 16325de8..54406d33 100644
--- a/packages/react-native-web/src/exports/Text/__tests__/__snapshots__/index-test.js.snap
+++ b/packages/react-native-web/src/exports/Text/__tests__/__snapshots__/index-test.js.snap
@@ -67,6 +67,17 @@ exports[`components/Text prop "accessibilityRole" value is set 1`] = `
/>
`;
+exports[`components/Text prop "hrefAttrs" values are set 1`] = `
+
+`;
+
exports[`components/Text prop "nativeID" value is set 1`] = `
{
expect(container.firstChild).toMatchSnapshot();
});
+ describe('prop "hrefAttrs"', () => {
+ test('values are set', () => {
+ const { container } = render(
+
+ );
+ expect(container.firstChild).toMatchSnapshot();
+ });
+ });
+
describe('prop "nativeID"', () => {
test('value is set', () => {
const { container } = render();
diff --git a/packages/react-native-web/src/exports/Text/index.js b/packages/react-native-web/src/exports/Text/index.js
index fede9ffe..4044fcb5 100644
--- a/packages/react-native-web/src/exports/Text/index.js
+++ b/packages/react-native-web/src/exports/Text/index.js
@@ -65,9 +65,7 @@ const forwardPropsList = {
onMouseUp: true,
onScroll: true,
onWheel: true,
- href: true,
- rel: true,
- target: true
+ href: true
};
const pickProps = props => pick(props, forwardPropsList);
@@ -75,6 +73,7 @@ const pickProps = props => pick(props, forwardPropsList);
const Text = forwardRef((props, forwardedRef) => {
const {
dir,
+ hrefAttrs,
numberOfLines,
onClick,
onLayout,
@@ -155,6 +154,18 @@ const Text = forwardRef((props, forwardedRef) => {
}
supportedProps.onClick = handleClick;
supportedProps.style = style;
+ if (props.href != null && hrefAttrs != null) {
+ const { download, rel, target } = hrefAttrs;
+ if (download != null) {
+ supportedProps.download = download;
+ }
+ if (rel != null) {
+ supportedProps.rel = rel;
+ }
+ if (typeof target === 'string' && target.charAt(0) !== '_') {
+ supportedProps.target = '_' + target;
+ }
+ }
const platformMethodsRef = usePlatformMethods(supportedProps);
const setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef);
diff --git a/packages/react-native-web/src/exports/View/index.js b/packages/react-native-web/src/exports/View/index.js
index 8271ba24..1029e1ed 100644
--- a/packages/react-native-web/src/exports/View/index.js
+++ b/packages/react-native-web/src/exports/View/index.js
@@ -63,15 +63,14 @@ const forwardPropsList = {
onMouseUp: true,
onScroll: true,
onWheel: true,
- href: true,
- rel: true,
- target: true
+ href: true
};
const pickProps = props => pick(props, forwardPropsList);
const View = forwardRef((props, forwardedRef) => {
const {
+ hrefAttrs,
onLayout,
onMoveShouldSetResponder,
onMoveShouldSetResponderCapture,
@@ -130,6 +129,18 @@ const View = forwardRef((props, forwardedRef) => {
const supportedProps = pickProps(props);
supportedProps.classList = classList;
supportedProps.style = style;
+ if (props.href != null && hrefAttrs != null) {
+ const { download, rel, target } = hrefAttrs;
+ if (download != null) {
+ supportedProps.download = download;
+ }
+ if (rel != null) {
+ supportedProps.rel = rel;
+ }
+ if (typeof target === 'string' && target.charAt(0) !== '_') {
+ supportedProps.target = '_' + target;
+ }
+ }
const platformMethodsRef = usePlatformMethods(supportedProps);
const setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef);