diff --git a/apps/fluent-tester/src/testPages.ts b/apps/fluent-tester/src/testPages.ts index fc3412690b..495f698df0 100644 --- a/apps/fluent-tester/src/testPages.ts +++ b/apps/fluent-tester/src/testPages.ts @@ -185,7 +185,7 @@ export const tests: TestDescription[] = [ name: 'Link V1', component: LinkV1Test, testPageButton: Constants.HOMEPAGE_LINKV1_BUTTON, - platforms: ['win32', 'android', 'windows'], + platforms: ['macos', 'win32', 'android', 'windows'], }, { name: 'Menu', diff --git a/change/@fluentui-react-native-link-a9326e1b-bd1d-4dc4-b4f1-8f3ea2447708.json b/change/@fluentui-react-native-link-a9326e1b-bd1d-4dc4-b4f1-8f3ea2447708.json new file mode 100644 index 0000000000..fe37e6858e --- /dev/null +++ b/change/@fluentui-react-native-link-a9326e1b-bd1d-4dc4-b4f1-8f3ea2447708.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Remove text from Link a11y tree and add a11yLabel", + "packageName": "@fluentui-react-native/link", + "email": "krsiler@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@fluentui-react-native-tester-384ba26f-dbdb-472c-9b9f-70a0931eb6b7.json b/change/@fluentui-react-native-tester-384ba26f-dbdb-472c-9b9f-70a0931eb6b7.json new file mode 100644 index 0000000000..4636828ce7 --- /dev/null +++ b/change/@fluentui-react-native-tester-384ba26f-dbdb-472c-9b9f-70a0931eb6b7.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "add LinkV1 to macOS test pages", + "packageName": "@fluentui-react-native/tester", + "email": "krsiler@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/packages/components/Link/src/Link.tsx b/packages/components/Link/src/Link.tsx index 2f81c02990..a86601834d 100644 --- a/packages/components/Link/src/Link.tsx +++ b/packages/components/Link/src/Link.tsx @@ -1,5 +1,6 @@ /** @jsxRuntime classic */ /** @jsx withSlots */ +import React from 'react'; import { Platform, View } from 'react-native'; import type { UseSlots } from '@fluentui-react-native/framework'; @@ -48,11 +49,20 @@ export const Link = compose({ // Views in Text, we use that to handle interactions instead. const supportsInteractionOnText = Platform.OS !== 'macos'; + // Find the first child that's a string and save it to set as the link's + // accessibilityLabel if one isn't defined. + let linkA11yLabel = ''; + linkA11yLabel = React.Children.toArray(children) + .find((child) => typeof child === 'string') + .toString(); + return supportsA11yTextInText && supportsInteractionOnText && (inline || mergedProps.selectable) ? ( {children} ) : ( - - {children} + + + {children} + ); }; diff --git a/packages/components/Link/src/__tests__/__snapshots__/Link.test.tsx.snap b/packages/components/Link/src/__tests__/__snapshots__/Link.test.tsx.snap index 8579f1d552..209cbebd0a 100644 --- a/packages/components/Link/src/__tests__/__snapshots__/Link.test.tsx.snap +++ b/packages/components/Link/src/__tests__/__snapshots__/Link.test.tsx.snap @@ -2,6 +2,7 @@ exports[`Link component tests Default Link 1`] = `