From b9867d70b31d309406e461989161da94f0991886 Mon Sep 17 00:00:00 2001 From: Roy Date: Thu, 30 Nov 2023 10:25:08 -0800 Subject: [PATCH] Add alwaysShowToolTip prop to Menu items (#2984) * show tooltip * alwaysShowToolTip prop * Fix platforms * Change files * Spec changes * Fix test * Prettier fix * Update and remove from spec * Uncomment tests * Remove from types files * Fix test --------- Co-authored-by: Roy Fang --- ...-00ccd513-e11f-44fd-8152-fc4c6d2bc3aa.json | 7 ++ ...-1b3990ef-54d6-4d90-83d2-4d4d7f699614.json | 7 ++ ...-9b1df892-71f0-47a0-a54e-3d6a12fd1b91.json | 7 ++ .../components/Menu/src/MenuItem/MenuItem.tsx | 2 +- .../src/MenuItemCheckbox/MenuItemCheckbox.tsx | 2 +- .../Menu/src/MenuItemRadio/MenuItemRadio.tsx | 2 +- .../components/Menu/src/MenuList/MenuList.tsx | 1 + .../Menu/src/MenuTrigger/MenuTrigger.tsx | 5 +- .../Menu/src/__tests__/Menu.test.tsx | 27 +++++ .../__snapshots__/Menu.test.tsx.snap | 107 ++++++++++++++++++ 10 files changed, 163 insertions(+), 4 deletions(-) create mode 100644 change/@fluentui-react-native-button-00ccd513-e11f-44fd-8152-fc4c6d2bc3aa.json create mode 100644 change/@fluentui-react-native-menu-1b3990ef-54d6-4d90-83d2-4d4d7f699614.json create mode 100644 change/@fluentui-react-native-tester-9b1df892-71f0-47a0-a54e-3d6a12fd1b91.json diff --git a/change/@fluentui-react-native-button-00ccd513-e11f-44fd-8152-fc4c6d2bc3aa.json b/change/@fluentui-react-native-button-00ccd513-e11f-44fd-8152-fc4c6d2bc3aa.json new file mode 100644 index 0000000000..1eb0708c22 --- /dev/null +++ b/change/@fluentui-react-native-button-00ccd513-e11f-44fd-8152-fc4c6d2bc3aa.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "alwaysShowToolTip prop", + "packageName": "@fluentui-react-native/button", + "email": "rofang@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@fluentui-react-native-menu-1b3990ef-54d6-4d90-83d2-4d4d7f699614.json b/change/@fluentui-react-native-menu-1b3990ef-54d6-4d90-83d2-4d4d7f699614.json new file mode 100644 index 0000000000..46797015a0 --- /dev/null +++ b/change/@fluentui-react-native-menu-1b3990ef-54d6-4d90-83d2-4d4d7f699614.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "alwaysShowToolTip prop", + "packageName": "@fluentui-react-native/menu", + "email": "rofang@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@fluentui-react-native-tester-9b1df892-71f0-47a0-a54e-3d6a12fd1b91.json b/change/@fluentui-react-native-tester-9b1df892-71f0-47a0-a54e-3d6a12fd1b91.json new file mode 100644 index 0000000000..75472dad10 --- /dev/null +++ b/change/@fluentui-react-native-tester-9b1df892-71f0-47a0-a54e-3d6a12fd1b91.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "alwaysShowToolTip prop", + "packageName": "@fluentui-react-native/tester", + "email": "rofang@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/packages/components/Menu/src/MenuItem/MenuItem.tsx b/packages/components/Menu/src/MenuItem/MenuItem.tsx index 92b9e4d4e1..994f48028d 100644 --- a/packages/components/Menu/src/MenuItem/MenuItem.tsx +++ b/packages/components/Menu/src/MenuItem/MenuItem.tsx @@ -56,7 +56,7 @@ export const MenuItem = compose({ )} {children && ( - + {children} )} diff --git a/packages/components/Menu/src/MenuItemCheckbox/MenuItemCheckbox.tsx b/packages/components/Menu/src/MenuItemCheckbox/MenuItemCheckbox.tsx index 3cbf224418..2f734d2294 100644 --- a/packages/components/Menu/src/MenuItemCheckbox/MenuItemCheckbox.tsx +++ b/packages/components/Menu/src/MenuItemCheckbox/MenuItemCheckbox.tsx @@ -76,7 +76,7 @@ export const menuItemFinalRender = ( )} {children && ( - + {children} )} diff --git a/packages/components/Menu/src/MenuItemRadio/MenuItemRadio.tsx b/packages/components/Menu/src/MenuItemRadio/MenuItemRadio.tsx index 6e6f9566e9..b4d703aa00 100644 --- a/packages/components/Menu/src/MenuItemRadio/MenuItemRadio.tsx +++ b/packages/components/Menu/src/MenuItemRadio/MenuItemRadio.tsx @@ -67,7 +67,7 @@ export const menuItemRadioFinalRender = ( )} {children && ( - + {children} )} diff --git a/packages/components/Menu/src/MenuList/MenuList.tsx b/packages/components/Menu/src/MenuList/MenuList.tsx index 362c3f951a..2e256b4339 100644 --- a/packages/components/Menu/src/MenuList/MenuList.tsx +++ b/packages/components/Menu/src/MenuList/MenuList.tsx @@ -73,6 +73,7 @@ export const MenuList = compose({ { accessibilityPositionInSet: child.props.accessibilityPositionInSet ?? itemPosition, // win32 accessibilitySetSize: child.props.accessibilitySetSize ?? itemCount, //win32 + ...(child.props.tooltip && { alwaysShowToolTip: true }), } as any, ); } diff --git a/packages/components/Menu/src/MenuTrigger/MenuTrigger.tsx b/packages/components/Menu/src/MenuTrigger/MenuTrigger.tsx index c601dfd487..2d6636b851 100644 --- a/packages/components/Menu/src/MenuTrigger/MenuTrigger.tsx +++ b/packages/components/Menu/src/MenuTrigger/MenuTrigger.tsx @@ -17,7 +17,10 @@ export const MenuTrigger: React.FunctionComponent = (props: Me // In order to properly support accessibility without erasing props set on the // child component which may affect accessibility, we need to modify the // state in the inner render so we can access the child component and its props. - const revised = React.cloneElement(props.children, menuTrigger.props); + const revised = React.cloneElement(props.children, { + ...(props.children.props.tooltip && { alwaysShowToolTip: true }), + ...menuTrigger.props, + }); return {revised}; }; diff --git a/packages/components/Menu/src/__tests__/Menu.test.tsx b/packages/components/Menu/src/__tests__/Menu.test.tsx index 1ec594a71d..e81a55e7c2 100644 --- a/packages/components/Menu/src/__tests__/Menu.test.tsx +++ b/packages/components/Menu/src/__tests__/Menu.test.tsx @@ -180,6 +180,33 @@ describe('Menu component tests', () => { .toJSON(); expect(tree).toMatchSnapshot(); }); + + // Note the capital T the "Tip" (in the snapshot) + // It is intentional as it matches the same prop in NetUI + it('Menu alwaysShowToolTip', () => { + const tree = renderer + .create( + + + + + + + Test + With Tooltip + + Radio Tooltip + + + Checkbox Tooltip + + + + , + ) + .toJSON(); + expect(tree).toMatchSnapshot(); + }); }); it('Menu open menu group and menu header', () => { diff --git a/packages/components/Menu/src/__tests__/__snapshots__/Menu.test.tsx.snap b/packages/components/Menu/src/__tests__/__snapshots__/Menu.test.tsx.snap index ba2361f59b..98c05ab25a 100644 --- a/packages/components/Menu/src/__tests__/__snapshots__/Menu.test.tsx.snap +++ b/packages/components/Menu/src/__tests__/__snapshots__/Menu.test.tsx.snap @@ -1,5 +1,112 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Menu component tests Menu alwaysShowToolTip 1`] = ` + + + Button + + +`; + exports[`Menu component tests Menu default 1`] = `