@fluentui-react-native/menu 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +28 -1
- package/CHANGELOG.md +12 -2
- package/lib/Menu/useMenu.d.ts.map +1 -1
- package/lib/Menu/useMenu.js +5 -1
- package/lib/Menu/useMenu.js.map +1 -1
- package/lib/MenuItem/MenuItem.d.ts.map +1 -1
- package/lib/MenuItem/MenuItem.js +4 -2
- package/lib/MenuItem/MenuItem.js.map +1 -1
- package/lib/MenuItem/MenuItem.styling.d.ts.map +1 -1
- package/lib/MenuItem/MenuItem.styling.js +6 -0
- package/lib/MenuItem/MenuItem.styling.js.map +1 -1
- package/lib/MenuItem/MenuItem.types.d.ts +2 -0
- package/lib/MenuItem/MenuItem.types.d.ts.map +1 -1
- package/lib/MenuItem/MenuItemTokens.d.ts.map +1 -1
- package/lib/MenuItem/MenuItemTokens.js +2 -0
- package/lib/MenuItem/MenuItemTokens.js.map +1 -1
- package/lib/MenuItem/MenuItemTokens.win32.d.ts.map +1 -1
- package/lib/MenuItem/MenuItemTokens.win32.js +2 -0
- package/lib/MenuItem/MenuItemTokens.win32.js.map +1 -1
- package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
- package/lib/MenuItem/useMenuItem.js +3 -1
- package/lib/MenuItem/useMenuItem.js.map +1 -1
- package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
- package/lib/MenuPopover/MenuPopover.js +1 -1
- package/lib/MenuPopover/MenuPopover.js.map +1 -1
- package/lib/MenuPopover/MenuPopover.types.d.ts +2 -1
- package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
- package/lib/MenuPopover/useMenuPopover.d.ts.map +1 -1
- package/lib/MenuPopover/useMenuPopover.js +12 -2
- package/lib/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.d.ts.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.js +4 -3
- package/lib/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.types.d.ts +11 -2
- package/lib/MenuTrigger/MenuTrigger.types.d.ts.map +1 -1
- package/lib/MenuTrigger/MenuTrigger.types.js.map +1 -1
- package/lib/MenuTrigger/useMenuTrigger.d.ts +2 -11
- package/lib/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
- package/lib/MenuTrigger/useMenuTrigger.js +4 -1
- package/lib/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib/context/menuTriggerContext.d.ts +9 -0
- package/lib/context/menuTriggerContext.d.ts.map +1 -0
- package/lib/context/menuTriggerContext.js +9 -0
- package/lib/context/menuTriggerContext.js.map +1 -0
- package/lib-commonjs/Menu/useMenu.d.ts.map +1 -1
- package/lib-commonjs/Menu/useMenu.js +5 -1
- package/lib-commonjs/Menu/useMenu.js.map +1 -1
- package/lib-commonjs/MenuItem/MenuItem.d.ts.map +1 -1
- package/lib-commonjs/MenuItem/MenuItem.js +3 -1
- package/lib-commonjs/MenuItem/MenuItem.js.map +1 -1
- package/lib-commonjs/MenuItem/MenuItem.styling.d.ts.map +1 -1
- package/lib-commonjs/MenuItem/MenuItem.styling.js +6 -0
- package/lib-commonjs/MenuItem/MenuItem.styling.js.map +1 -1
- package/lib-commonjs/MenuItem/MenuItem.types.d.ts +2 -0
- package/lib-commonjs/MenuItem/MenuItem.types.d.ts.map +1 -1
- package/lib-commonjs/MenuItem/MenuItemTokens.d.ts.map +1 -1
- package/lib-commonjs/MenuItem/MenuItemTokens.js +2 -0
- package/lib-commonjs/MenuItem/MenuItemTokens.js.map +1 -1
- package/lib-commonjs/MenuItem/MenuItemTokens.win32.d.ts.map +1 -1
- package/lib-commonjs/MenuItem/MenuItemTokens.win32.js +2 -0
- package/lib-commonjs/MenuItem/MenuItemTokens.win32.js.map +1 -1
- package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
- package/lib-commonjs/MenuItem/useMenuItem.js +3 -1
- package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.js +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
- package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +2 -1
- package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
- package/lib-commonjs/MenuPopover/useMenuPopover.d.ts.map +1 -1
- package/lib-commonjs/MenuPopover/useMenuPopover.js +11 -1
- package/lib-commonjs/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.js +4 -3
- package/lib-commonjs/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.types.d.ts +11 -2
- package/lib-commonjs/MenuTrigger/MenuTrigger.types.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/MenuTrigger.types.js.map +1 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts +2 -11
- package/lib-commonjs/MenuTrigger/useMenuTrigger.d.ts.map +1 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.js +4 -1
- package/lib-commonjs/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib-commonjs/context/menuTriggerContext.d.ts +9 -0
- package/lib-commonjs/context/menuTriggerContext.d.ts.map +1 -0
- package/lib-commonjs/context/menuTriggerContext.js +14 -0
- package/lib-commonjs/context/menuTriggerContext.js.map +1 -0
- package/package.json +3 -3
- package/src/Menu/useMenu.ts +6 -0
- package/src/MenuItem/MenuItem.styling.ts +7 -0
- package/src/MenuItem/MenuItem.tsx +10 -5
- package/src/MenuItem/MenuItem.types.ts +2 -0
- package/src/MenuItem/MenuItemTokens.ts +2 -0
- package/src/MenuItem/MenuItemTokens.win32.ts +2 -0
- package/src/MenuItem/useMenuItem.ts +3 -1
- package/src/MenuPopover/MenuPopover.tsx +1 -0
- package/src/MenuPopover/MenuPopover.types.ts +2 -1
- package/src/MenuPopover/useMenuPopover.ts +16 -3
- package/src/MenuTrigger/MenuTrigger.tsx +4 -3
- package/src/MenuTrigger/MenuTrigger.types.ts +14 -3
- package/src/MenuTrigger/useMenuTrigger.ts +6 -3
- package/src/context/menuTriggerContext.ts +10 -0
|
@@ -8,6 +8,8 @@ import { FontTokens, IBorderTokens, IColorTokens, LayoutTokens } from '@fluentui
|
|
|
8
8
|
export declare const menuItemName = "MenuItem";
|
|
9
9
|
export interface MenuItemTokens extends LayoutTokens, FontTokens, IBorderTokens, IColorTokens {
|
|
10
10
|
checkmarkSize?: number;
|
|
11
|
+
submenuIndicatorPadding?: number;
|
|
12
|
+
submenuIndicatorSize?: number;
|
|
11
13
|
gap?: number;
|
|
12
14
|
disabled?: MenuItemTokens;
|
|
13
15
|
focused?: MenuItemTokens;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.types.d.ts","sourceRoot":"","sources":["../../src/MenuItem/MenuItem.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAChI,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEtG,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,MAAM,WAAW,cAAe,SAAQ,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtF,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE3C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe,CAAC,aAAa,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACtG,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;CAC9B"}
|
|
1
|
+
{"version":3,"file":"MenuItem.types.d.ts","sourceRoot":"","sources":["../../src/MenuItem/MenuItem.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAChI,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEtG,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,MAAM,WAAW,cAAe,SAAQ,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtF,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE3C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe,CAAC,aAAa,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACtG,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemTokens.d.ts","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"MenuItemTokens.d.ts","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CA2BrE,CAAC"}
|
|
@@ -6,6 +6,8 @@ var defaultMenuItemTokens = function (t) { return ({
|
|
|
6
6
|
backgroundColor: t.colors.neutralBackground1,
|
|
7
7
|
borderRadius: theme_tokens_1.globalTokens.corner.radius.medium,
|
|
8
8
|
checkmarkSize: 16,
|
|
9
|
+
submenuIndicatorPadding: theme_tokens_1.globalTokens.spacing.none,
|
|
10
|
+
submenuIndicatorSize: 16,
|
|
9
11
|
color: t.colors.neutralForeground2,
|
|
10
12
|
fontFamily: t.typography.families.primary,
|
|
11
13
|
fontSize: theme_tokens_1.globalTokens.font.size[300],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemTokens.js","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,qBAAqB,GAAyC,UAAC,CAAQ,IAAqB,OAAA,CAAC;IACxG,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAC5C,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;IAC/C,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAClC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;IACzC,QAAQ,EAAE,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrC,UAAU,EAAE,2BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAA0B;IAC/D,GAAG,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAC5B,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,MAAM;IACpC,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;KACxC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;CACF,CAAC,
|
|
1
|
+
{"version":3,"file":"MenuItemTokens.js","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,qBAAqB,GAAyC,UAAC,CAAQ,IAAqB,OAAA,CAAC;IACxG,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAC5C,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;IAC/C,aAAa,EAAE,EAAE;IACjB,uBAAuB,EAAE,2BAAY,CAAC,OAAO,CAAC,IAAI;IAClD,oBAAoB,EAAE,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAClC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;IACzC,QAAQ,EAAE,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrC,UAAU,EAAE,2BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAA0B;IAC/D,GAAG,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAC5B,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,MAAM;IACpC,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;KACxC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;CACF,CAAC,EA3BuG,CA2BvG,CAAC;AA3BU,QAAA,qBAAqB,yBA2B/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemTokens.win32.d.ts","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"MenuItemTokens.win32.d.ts","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CA4BrE,CAAC"}
|
|
@@ -6,6 +6,8 @@ var defaultMenuItemTokens = function (t) { return ({
|
|
|
6
6
|
backgroundColor: t.colors.neutralBackground1,
|
|
7
7
|
borderRadius: theme_tokens_1.globalTokens.corner.radius.none,
|
|
8
8
|
checkmarkSize: 16,
|
|
9
|
+
submenuIndicatorPadding: theme_tokens_1.globalTokens.spacing.xxs,
|
|
10
|
+
submenuIndicatorSize: 16,
|
|
9
11
|
color: t.colors.neutralForeground1,
|
|
10
12
|
fontFamily: t.typography.families.primary,
|
|
11
13
|
fontSize: theme_tokens_1.globalTokens.font.size[200],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemTokens.win32.js","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.win32.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,qBAAqB,GAAyC,UAAC,CAAQ,IAAqB,OAAA,CAAC;IACxG,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAC5C,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;IAC7C,aAAa,EAAE,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAClC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;IACzC,QAAQ,EAAE,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrC,UAAU,EAAE,2BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAA0B;IAC/D,GAAG,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAC5B,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAChC,iBAAiB,EAAE,2BAAY,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;KACxC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;CACF,CAAC,
|
|
1
|
+
{"version":3,"file":"MenuItemTokens.win32.js","sourceRoot":"","sources":["../../src/MenuItem/MenuItemTokens.win32.ts"],"names":[],"mappings":";;;AACA,oEAAmE;AAI5D,IAAM,qBAAqB,GAAyC,UAAC,CAAQ,IAAqB,OAAA,CAAC;IACxG,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAC5C,YAAY,EAAE,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;IAC7C,aAAa,EAAE,EAAE;IACjB,uBAAuB,EAAE,2BAAY,CAAC,OAAO,CAAC,GAAG;IACjD,oBAAoB,EAAE,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;IAClC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;IACzC,QAAQ,EAAE,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrC,UAAU,EAAE,2BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAA0B;IAC/D,GAAG,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAC5B,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE;IAChC,iBAAiB,EAAE,2BAAY,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,uBAAuB;KACxC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,yBAAyB;KAC1C;CACF,CAAC,EA5BuG,CA4BvG,CAAC;AA5BU,QAAA,qBAAqB,yBA4B/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuItem.d.ts","sourceRoot":"","sources":["../../src/MenuItem/useMenuItem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useMenuItem.d.ts","sourceRoot":"","sources":["../../src/MenuItem/useMenuItem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOhE,eAAO,MAAM,WAAW,UAAW,aAAa,KAAG,aA2BlD,CAAC"}
|
|
@@ -7,13 +7,15 @@ var framework_1 = require("@fluentui-react-native/framework");
|
|
|
7
7
|
var interactive_hooks_1 = require("@fluentui-react-native/interactive-hooks");
|
|
8
8
|
var menuContext_1 = require("../context/menuContext");
|
|
9
9
|
var menuListContext_1 = require("../context/menuListContext");
|
|
10
|
+
var menuTriggerContext_1 = require("../context/menuTriggerContext");
|
|
10
11
|
var useMenuItem = function (props) {
|
|
11
12
|
// attach the pressable state handlers
|
|
12
13
|
var defaultComponentRef = React.useRef(null);
|
|
13
14
|
var onClick = props.onClick, accessibilityState = props.accessibilityState, _a = props.componentRef, componentRef = _a === void 0 ? defaultComponentRef : _a, disabled = props.disabled, rest = (0, tslib_1.__rest)(props, ["onClick", "accessibilityState", "componentRef", "disabled"]);
|
|
14
15
|
var pressable = (0, interactive_hooks_1.useAsPressable)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, rest), { disabled: disabled, onPress: onClick }));
|
|
15
16
|
var onKeyProps = (0, interactive_hooks_1.useKeyProps)(onClick, ' ', 'Enter');
|
|
16
|
-
var
|
|
17
|
+
var isTrigger = (0, menuTriggerContext_1.useMenuTriggerContext)();
|
|
18
|
+
var hasSubmenu = (0, menuContext_1.useMenuContext)().isSubmenu && isTrigger;
|
|
17
19
|
var hasCheckmarks = (0, menuListContext_1.useMenuListContext)().hasCheckmarks;
|
|
18
20
|
return {
|
|
19
21
|
props: (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, pressable.props), { accessible: true, accessibilityRole: 'menuitem', onAccessibilityTap: props.onAccessibilityTap || props.onClick, accessibilityLabel: props.accessibilityLabel, accessibilityState: getAccessibilityState(disabled, accessibilityState), enableFocusRing: true, focusable: !disabled, ref: componentRef }), onKeyProps),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuItem.js","sourceRoot":"","sources":["../../src/MenuItem/useMenuItem.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAG/B,8DAA2D;AAC3D,8EAAuF;AACvF,sDAAwD;AACxD,8DAAgE;
|
|
1
|
+
{"version":3,"file":"useMenuItem.js","sourceRoot":"","sources":["../../src/MenuItem/useMenuItem.ts"],"names":[],"mappings":";;;;AAAA,wDAA+B;AAG/B,8DAA2D;AAC3D,8EAAuF;AACvF,sDAAwD;AACxD,8DAAgE;AAChE,oEAAsE;AAE/D,IAAM,WAAW,GAAG,UAAC,KAAoB;IAC9C,sCAAsC;IACtC,IAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,IAAA,OAAO,GAAgF,KAAK,QAArF,EAAE,kBAAkB,GAA4D,KAAK,mBAAjE,EAAE,KAA0D,KAAK,aAA7B,EAAlC,YAAY,mBAAG,mBAAmB,KAAA,EAAE,QAAQ,GAAc,KAAK,SAAnB,EAAK,IAAI,uBAAK,KAAK,EAA9F,6DAAsF,CAAF,CAAW;IACrG,IAAM,SAAS,GAAG,IAAA,kCAAc,kDAAM,IAAI,KAAE,QAAQ,UAAA,EAAE,OAAO,EAAE,OAAO,IAAG,CAAC;IAC1E,IAAM,UAAU,GAAG,IAAA,+BAAW,EAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACtD,IAAM,SAAS,GAAG,IAAA,0CAAqB,GAAE,CAAC;IAC1C,IAAM,UAAU,GAAG,IAAA,4BAAc,GAAE,CAAC,SAAS,IAAI,SAAS,CAAC;IAC3D,IAAM,aAAa,GAAG,IAAA,oCAAkB,GAAE,CAAC,aAAa,CAAC;IAEzD,OAAO;QACL,KAAK,wEACA,SAAS,CAAC,KAAK,KAClB,UAAU,EAAE,IAAI,EAChB,iBAAiB,EAAE,UAAU,EAC7B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAC7D,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAC5C,kBAAkB,EAAE,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EACvE,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,QAAQ,EACpB,GAAG,EAAE,YAAY,KACd,UAAU,CACd;QACD,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,UAAU,YAAA;QACV,aAAa,eAAA;KACd,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,WAAW,eA2BtB;AAEF,IAAM,qBAAqB,GAAG,IAAA,mBAAO,EAAC,2BAA2B,CAAC,CAAC;AACnE,SAAS,2BAA2B,CAAC,QAAiB,EAAE,kBAAuC;IAC7F,IAAI,kBAAkB,EAAE;QACtB,+BAAS,QAAQ,UAAA,IAAK,kBAAkB,EAAG;KAC5C;IACD,OAAO,EAAE,QAAQ,UAAA,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxE,eAAO,MAAM,WAAW,iFAoBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
|
|
@@ -11,7 +11,7 @@ exports.MenuPopover = (0, framework_1.stagedComponent)(function (props) {
|
|
|
11
11
|
var state = (0, useMenuPopover_1.useMenuPopover)(props);
|
|
12
12
|
var theme = (0, framework_1.useFluentTheme)();
|
|
13
13
|
return function (_rest, children) {
|
|
14
|
-
return (react_1.default.createElement(callout_1.Callout, { borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible, target: state.triggerRef, onDismiss: state.onDismiss, dismissBehaviors: state.dismissBehaviors, setInitialFocus: state.setInitialFocus, doNotTakePointerCapture: state.doNotTakePointerCapture }, children));
|
|
14
|
+
return (react_1.default.createElement(callout_1.Callout, { borderWidth: 1, borderColor: theme.colors.neutralStrokeAccessible, target: state.triggerRef, onDismiss: state.onDismiss, dismissBehaviors: state.dismissBehaviors, setInitialFocus: state.setInitialFocus, directionalHint: state.directionalHint, doNotTakePointerCapture: state.doNotTakePointerCapture }, children));
|
|
15
15
|
};
|
|
16
16
|
});
|
|
17
17
|
exports.MenuPopover.displayName = MenuPopover_types_1.menuPopoverName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmF;AACnF,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,8BAAC,iBAAO,IACN,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,IAErD,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmF;AACnF,0DAAyD;AACzD,yDAAwE;AACxE,mDAAkD;AAErC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,KAAK,GAAG,IAAA,0BAAc,GAAE,CAAC;IAE/B,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,OAAO,CACL,8BAAC,iBAAO,IACN,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EACjD,MAAM,EAAE,KAAK,CAAC,UAAU,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,eAAe,EAAE,KAAK,CAAC,eAAe,EACtC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,IAErD,QAAQ,CACD,CACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
3
|
-
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
3
|
+
import { DirectionalHint, DismissBehaviors } from '@fluentui-react-native/callout';
|
|
4
4
|
export declare const menuPopoverName = "MenuPopover";
|
|
5
5
|
export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {
|
|
6
6
|
}
|
|
7
7
|
export interface MenuPopoverState {
|
|
8
|
+
directionalHint?: DirectionalHint;
|
|
8
9
|
dismissBehaviors: DismissBehaviors[];
|
|
9
10
|
doNotTakePointerCapture: boolean;
|
|
10
11
|
onDismiss: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuPopover.types.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/MenuPopover.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;CAAG;AAExE,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"useMenuPopover.d.ts","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAiBzD,CAAC"}
|
|
@@ -13,11 +13,21 @@ var useMenuPopover = function (_props) {
|
|
|
13
13
|
var dismissBehaviors = context.isControlled
|
|
14
14
|
? ['preventDismissOnKeyDown', 'preventDismissOnClickOutside']
|
|
15
15
|
: undefined;
|
|
16
|
+
var directionalHint = getDirectionalHint(context.isSubmenu, react_native_1.I18nManager.isRTL);
|
|
16
17
|
// Initial focus behavior differs per platform, Windows platforms move focus
|
|
17
18
|
// automatically onto first element of Callout
|
|
18
19
|
var setInitialFocus = react_native_1.Platform.OS === 'win32' || react_native_1.Platform.OS === 'windows';
|
|
19
20
|
var doNotTakePointerCapture = context.openOnHover;
|
|
20
|
-
return { triggerRef: triggerRef, onDismiss: onDismiss, dismissBehaviors: dismissBehaviors, doNotTakePointerCapture: doNotTakePointerCapture, setInitialFocus: setInitialFocus };
|
|
21
|
+
return { triggerRef: triggerRef, onDismiss: onDismiss, directionalHint: directionalHint, dismissBehaviors: dismissBehaviors, doNotTakePointerCapture: doNotTakePointerCapture, setInitialFocus: setInitialFocus };
|
|
21
22
|
};
|
|
22
23
|
exports.useMenuPopover = useMenuPopover;
|
|
24
|
+
var getDirectionalHint = function (isSubmenu, isRtl) {
|
|
25
|
+
if (!isSubmenu) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
if (isRtl) {
|
|
29
|
+
return 'leftTopEdge';
|
|
30
|
+
}
|
|
31
|
+
return 'rightTopEdge';
|
|
32
|
+
};
|
|
23
33
|
//# sourceMappingURL=useMenuPopover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"useMenuPopover.js","sourceRoot":"","sources":["../../src/MenuPopover/useMenuPopover.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,6CAAqD;AAErD,sDAAwD;AAGjD,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IACjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAM,SAAS,GAAG,eAAK,CAAC,WAAW,CAAC,cAAM,OAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAtC,CAAsC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY;QAC3C,CAAC,CAAE,CAAC,yBAAyB,EAAE,8BAA8B,CAAwB;QACrF,CAAC,CAAC,SAAS,CAAC;IACd,IAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,0BAAW,CAAC,KAAK,CAAC,CAAC;IAEjF,4EAA4E;IAC5E,8CAA8C;IAC9C,IAAM,eAAe,GAAG,uBAAQ,CAAC,EAAE,KAAM,OAAe,IAAI,uBAAQ,CAAC,EAAE,KAAK,SAAS,CAAC;IACtF,IAAM,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAEpD,OAAO,EAAE,UAAU,YAAA,EAAE,SAAS,WAAA,EAAE,eAAe,iBAAA,EAAE,gBAAgB,kBAAA,EAAE,uBAAuB,yBAAA,EAAE,eAAe,iBAAA,EAAE,CAAC;AAChH,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB;AAEF,IAAM,kBAAkB,GAAG,UAAC,SAAkB,EAAE,KAAc;IAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,KAAK,EAAE;QACT,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIxE,eAAO,MAAM,WAAW,iFAiBtB,CAAC;AAGH,eAAe,WAAW,CAAC"}
|
|
@@ -6,8 +6,9 @@ var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
|
6
6
|
var framework_1 = require("@fluentui-react-native/framework");
|
|
7
7
|
var MenuTrigger_types_1 = require("./MenuTrigger.types");
|
|
8
8
|
var useMenuTrigger_1 = require("./useMenuTrigger");
|
|
9
|
+
var menuTriggerContext_1 = require("../context/menuTriggerContext");
|
|
9
10
|
exports.MenuTrigger = (0, framework_1.stagedComponent)(function (props) {
|
|
10
|
-
var
|
|
11
|
+
var menuTrigger = (0, useMenuTrigger_1.useMenuTrigger)(props);
|
|
11
12
|
return function (_rest, children) {
|
|
12
13
|
var childrenArray = react_1.default.Children.toArray(children);
|
|
13
14
|
if (__DEV__) {
|
|
@@ -16,8 +17,8 @@ exports.MenuTrigger = (0, framework_1.stagedComponent)(function (props) {
|
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
var child = childrenArray[0];
|
|
19
|
-
var revised = react_1.default.cloneElement(child,
|
|
20
|
-
return react_1.default.createElement(
|
|
20
|
+
var revised = react_1.default.cloneElement(child, menuTrigger.props);
|
|
21
|
+
return react_1.default.createElement(menuTriggerContext_1.MenuTriggerProvider, { value: menuTrigger.hasSubmenu }, revised);
|
|
21
22
|
};
|
|
22
23
|
});
|
|
23
24
|
exports.MenuTrigger.displayName = MenuTrigger_types_1.menuTriggerName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmE;AACnE,yDAAwE;AACxE,mDAAkD;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.tsx"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAC1B,8DAAmE;AACnE,yDAAwE;AACxE,mDAAkD;AAClD,oEAAoE;AAEvD,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;IAE1C,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,IAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;aACzD;SACF;QAED,IAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAM,OAAO,GAAG,eAAK,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7D,OAAO,8BAAC,wCAAmB,IAAC,KAAK,EAAE,WAAW,CAAC,UAAU,IAAG,OAAO,CAAuB,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { InteractionEvent, IWithPressableOptions } from '@fluentui-react-native/interactive-hooks';
|
|
3
|
+
import { ViewProps } from 'react-native';
|
|
2
4
|
export declare const menuTriggerName = "MenuTrigger";
|
|
3
|
-
export interface MenuTriggerProps extends Omit<
|
|
5
|
+
export interface MenuTriggerProps extends Omit<IWithPressableOptions<ViewProps>, 'onPress'> {
|
|
6
|
+
/**
|
|
7
|
+
* A RefObject to refer to the trigger component.
|
|
8
|
+
*/
|
|
9
|
+
componentRef?: React.RefObject<React.Component>;
|
|
10
|
+
onClick?: (e: InteractionEvent) => void;
|
|
4
11
|
}
|
|
5
12
|
export interface MenuTriggerState {
|
|
13
|
+
props: MenuTriggerProps;
|
|
14
|
+
hasSubmenu: boolean;
|
|
6
15
|
}
|
|
7
16
|
//# sourceMappingURL=MenuTrigger.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MenuTrigger.types.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACzF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuTrigger.types.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MenuTrigger.types.js","sourceRoot":"","sources":["../../src/MenuTrigger/MenuTrigger.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAAG,aAAa,CAAC"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { MenuTriggerProps } from './MenuTrigger.types';
|
|
4
|
-
export declare const useMenuTrigger: (_props: MenuTriggerProps) => {
|
|
5
|
-
onClick: (e: InteractionEvent) => void;
|
|
6
|
-
onHoverIn: (e: InteractionEvent) => void;
|
|
7
|
-
onHoverOut: (e: InteractionEvent) => void;
|
|
8
|
-
componentRef: import("react").RefObject<import("react").Component<{}, {}, any>>;
|
|
9
|
-
delayHoverIn: number;
|
|
10
|
-
delayHoverOut: number;
|
|
11
|
-
};
|
|
1
|
+
import { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';
|
|
2
|
+
export declare const useMenuTrigger: (_props: MenuTriggerProps) => MenuTriggerState;
|
|
12
3
|
//# sourceMappingURL=useMenuTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAiCzD,CAAC"}
|
|
@@ -26,7 +26,10 @@ var useMenuTrigger = function (_props) {
|
|
|
26
26
|
var onClick = function (e) {
|
|
27
27
|
setOpen(e, !open);
|
|
28
28
|
};
|
|
29
|
-
return {
|
|
29
|
+
return {
|
|
30
|
+
props: { onClick: onClick, onHoverIn: onHoverIn, onHoverOut: onHoverOut, componentRef: triggerRef, delayHoverIn: delayHover, delayHoverOut: delayHover },
|
|
31
|
+
hasSubmenu: context.isSubmenu,
|
|
32
|
+
};
|
|
30
33
|
};
|
|
31
34
|
exports.useMenuTrigger = useMenuTrigger;
|
|
32
35
|
//# sourceMappingURL=useMenuTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAGxD,6CAAwC;AAEjC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,UAAU,GAAG,uBAAQ,CAAC,MAAM,CAAC;QACjC,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG,EAAE,QAAQ;KACvB,CAAC,CAAC;IAEH,IAAM,SAAS,GAAG,UAAC,CAAmB;QACpC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,CAAmB;QACrC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;SAChC;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,UAAU,YAAA,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.js","sourceRoot":"","sources":["../../src/MenuTrigger/useMenuTrigger.ts"],"names":[],"mappings":";;;AAAA,sDAAwD;AAGxD,6CAAwC;AAEjC,IAAM,cAAc,GAAG,UAAC,MAAwB;IACrD,IAAM,OAAO,GAAG,IAAA,4BAAc,GAAE,CAAC;IAEjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,IAAM,UAAU,GAAG,uBAAQ,CAAC,MAAM,CAAC;QACjC,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG,EAAE,QAAQ;KACvB,CAAC,CAAC;IAEH,IAAM,SAAS,GAAG,UAAC,CAAmB;QACpC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,CAAmB;QACrC,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;SAChC;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,UAAC,CAAmB;QAClC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,UAAU,YAAA,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE;QACxH,UAAU,EAAE,OAAO,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,cAAc,kBAiCzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* This context keeps track of whether a trigger component is for a submenu.
|
|
4
|
+
* This allows the trigger to show a submenu indicator.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MenuTriggerContext: React.Context<boolean>;
|
|
7
|
+
export declare const MenuTriggerProvider: React.Provider<boolean>;
|
|
8
|
+
export declare const useMenuTriggerContext: () => boolean;
|
|
9
|
+
//# sourceMappingURL=menuTriggerContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuTriggerContext.d.ts","sourceRoot":"","sources":["../../src/context/menuTriggerContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wBAAsC,CAAC;AAEtE,eAAO,MAAM,mBAAmB,yBAA8B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,eAA6C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMenuTriggerContext = exports.MenuTriggerProvider = exports.MenuTriggerContext = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
|
+
/**
|
|
7
|
+
* This context keeps track of whether a trigger component is for a submenu.
|
|
8
|
+
* This allows the trigger to show a submenu indicator.
|
|
9
|
+
*/
|
|
10
|
+
exports.MenuTriggerContext = react_1.default.createContext(false);
|
|
11
|
+
exports.MenuTriggerProvider = exports.MenuTriggerContext.Provider;
|
|
12
|
+
var useMenuTriggerContext = function () { return react_1.default.useContext(exports.MenuTriggerContext); };
|
|
13
|
+
exports.useMenuTriggerContext = useMenuTriggerContext;
|
|
14
|
+
//# sourceMappingURL=menuTriggerContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuTriggerContext.js","sourceRoot":"","sources":["../../src/context/menuTriggerContext.ts"],"names":[],"mappings":";;;;AAAA,6DAA0B;AAE1B;;;GAGG;AACU,QAAA,kBAAkB,GAAG,eAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAC;AAEzD,QAAA,mBAAmB,GAAG,0BAAkB,CAAC,QAAQ,CAAC;AACxD,IAAM,qBAAqB,GAAG,cAAM,OAAA,eAAK,CAAC,UAAU,CAAC,0BAAkB,CAAC,EAApC,CAAoC,CAAC;AAAnE,QAAA,qBAAqB,yBAA8C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentui-react-native/menu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "A cross-platform Menu component using the Fluent Design System",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@fluentui-react-native/adapters": ">=0.8.5 <1.0.0",
|
|
26
|
-
"@fluentui-react-native/callout": ">=0.20.
|
|
26
|
+
"@fluentui-react-native/callout": ">=0.20.4 <1.0.0",
|
|
27
27
|
"@fluentui-react-native/experimental-text": ">=0.9.0 <1.0.0",
|
|
28
28
|
"@fluentui-react-native/framework": "0.7.30",
|
|
29
|
-
"@fluentui-react-native/interactive-hooks": ">=0.
|
|
29
|
+
"@fluentui-react-native/interactive-hooks": ">=0.16.0 <1.0.0",
|
|
30
30
|
"@fluentui-react-native/theme-tokens": ">=0.18.0 <1.0.0",
|
|
31
31
|
"@fluentui-react-native/tokens": ">=0.14.0 <1.0.0",
|
|
32
32
|
"@fluentui-react-native/use-styling": ">=0.8.3 <1.0.0",
|
package/src/Menu/useMenu.ts
CHANGED
|
@@ -10,7 +10,13 @@ export const useMenu = (props: MenuProps): MenuState => {
|
|
|
10
10
|
const isControlled = typeof props.open !== 'undefined';
|
|
11
11
|
const [open, setOpen] = useMenuOpenState(isControlled, props);
|
|
12
12
|
|
|
13
|
+
// Default behaviot for submenu is to open on hover
|
|
14
|
+
// the ...props line below will override this behavior for a submenu
|
|
15
|
+
// or apply openOnHover if passed into a root Menu.
|
|
16
|
+
const openOnHover = isSubmenu;
|
|
17
|
+
|
|
13
18
|
return {
|
|
19
|
+
openOnHover,
|
|
14
20
|
...props,
|
|
15
21
|
open,
|
|
16
22
|
setOpen,
|
|
@@ -47,6 +47,13 @@ export const stylingSettings: UseStylingOptions<MenuItemProps, MenuItemSlotProps
|
|
|
47
47
|
(tokens: MenuItemTokens) => {
|
|
48
48
|
return {
|
|
49
49
|
color: tokens.color,
|
|
50
|
+
height: 16,
|
|
51
|
+
width: 16,
|
|
52
|
+
viewBox:
|
|
53
|
+
'0 0 ' +
|
|
54
|
+
(tokens.submenuIndicatorSize - tokens.submenuIndicatorPadding * 2) +
|
|
55
|
+
' ' +
|
|
56
|
+
(tokens.submenuIndicatorSize - tokens.submenuIndicatorPadding * 2),
|
|
50
57
|
};
|
|
51
58
|
},
|
|
52
59
|
['color'],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsx withSlots */
|
|
2
|
-
import { View } from 'react-native';
|
|
2
|
+
import { I18nManager, View } from 'react-native';
|
|
3
3
|
import { SvgXml } from 'react-native-svg';
|
|
4
4
|
import { compose, mergeProps, UseSlots, withSlots } from '@fluentui-react-native/framework';
|
|
5
5
|
import { Text } from '@fluentui-react-native/experimental-text';
|
|
@@ -22,10 +22,15 @@ export const MenuItem = compose<MenuItemType>({
|
|
|
22
22
|
|
|
23
23
|
return (final: MenuItemProps) => {
|
|
24
24
|
const mergedProps = mergeProps(menuItem.props, final);
|
|
25
|
-
const chevronXml =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
const chevronXml = I18nManager.isRTL
|
|
26
|
+
? `
|
|
27
|
+
<svg>
|
|
28
|
+
<path fill='currentColor' d='M7.35355 2.14645C7.54882 2.34171 7.54882 2.65829 7.35355 2.85355L4.20711 6L7.35355 9.14645C7.54882 9.34171 7.54882 9.65829 7.35355 9.85355C7.15829 10.0488 6.84171 10.0488 6.64645 9.85355L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645L6.64645 2.14645C6.84171 1.95118 7.15829 1.95118 7.35355 2.14645Z' />
|
|
29
|
+
</svg>`
|
|
30
|
+
: `
|
|
31
|
+
<svg>
|
|
32
|
+
<path fill='currentColor' d='M4.64645 2.14645C4.45118 2.34171 4.45118 2.65829 4.64645 2.85355L7.79289 6L4.64645 9.14645C4.45118 9.34171 4.45118 9.65829 4.64645 9.85355C4.84171 10.0488 5.15829 10.0488 5.35355 9.85355L8.85355 6.35355C9.04882 6.15829 9.04882 5.84171 8.85355 5.64645L5.35355 2.14645C5.15829 1.95118 4.84171 1.95118 4.64645 2.14645Z' />
|
|
33
|
+
</svg>`;
|
|
29
34
|
|
|
30
35
|
return (
|
|
31
36
|
<Slots.root {...mergedProps}>
|
|
@@ -10,6 +10,8 @@ export const menuItemName = 'MenuItem';
|
|
|
10
10
|
|
|
11
11
|
export interface MenuItemTokens extends LayoutTokens, FontTokens, IBorderTokens, IColorTokens {
|
|
12
12
|
checkmarkSize?: number;
|
|
13
|
+
submenuIndicatorPadding?: number;
|
|
14
|
+
submenuIndicatorSize?: number;
|
|
13
15
|
gap?: number;
|
|
14
16
|
|
|
15
17
|
disabled?: MenuItemTokens;
|
|
@@ -7,6 +7,8 @@ export const defaultMenuItemTokens: TokenSettings<MenuItemTokens, Theme> = (t: T
|
|
|
7
7
|
backgroundColor: t.colors.neutralBackground1,
|
|
8
8
|
borderRadius: globalTokens.corner.radius.medium,
|
|
9
9
|
checkmarkSize: 16,
|
|
10
|
+
submenuIndicatorPadding: globalTokens.spacing.none,
|
|
11
|
+
submenuIndicatorSize: 16,
|
|
10
12
|
color: t.colors.neutralForeground2,
|
|
11
13
|
fontFamily: t.typography.families.primary,
|
|
12
14
|
fontSize: globalTokens.font.size[300],
|
|
@@ -7,6 +7,8 @@ export const defaultMenuItemTokens: TokenSettings<MenuItemTokens, Theme> = (t: T
|
|
|
7
7
|
backgroundColor: t.colors.neutralBackground1,
|
|
8
8
|
borderRadius: globalTokens.corner.radius.none,
|
|
9
9
|
checkmarkSize: 16,
|
|
10
|
+
submenuIndicatorPadding: globalTokens.spacing.xxs,
|
|
11
|
+
submenuIndicatorSize: 16,
|
|
10
12
|
color: t.colors.neutralForeground1,
|
|
11
13
|
fontFamily: t.typography.families.primary,
|
|
12
14
|
fontSize: globalTokens.font.size[200],
|
|
@@ -5,6 +5,7 @@ import { memoize } from '@fluentui-react-native/framework';
|
|
|
5
5
|
import { useAsPressable, useKeyProps } from '@fluentui-react-native/interactive-hooks';
|
|
6
6
|
import { useMenuContext } from '../context/menuContext';
|
|
7
7
|
import { useMenuListContext } from '../context/menuListContext';
|
|
8
|
+
import { useMenuTriggerContext } from '../context/menuTriggerContext';
|
|
8
9
|
|
|
9
10
|
export const useMenuItem = (props: MenuItemProps): MenuItemState => {
|
|
10
11
|
// attach the pressable state handlers
|
|
@@ -12,7 +13,8 @@ export const useMenuItem = (props: MenuItemProps): MenuItemState => {
|
|
|
12
13
|
const { onClick, accessibilityState, componentRef = defaultComponentRef, disabled, ...rest } = props;
|
|
13
14
|
const pressable = useAsPressable({ ...rest, disabled, onPress: onClick });
|
|
14
15
|
const onKeyProps = useKeyProps(onClick, ' ', 'Enter');
|
|
15
|
-
const
|
|
16
|
+
const isTrigger = useMenuTriggerContext();
|
|
17
|
+
const hasSubmenu = useMenuContext().isSubmenu && isTrigger;
|
|
16
18
|
const hasCheckmarks = useMenuListContext().hasCheckmarks;
|
|
17
19
|
|
|
18
20
|
return {
|
|
@@ -17,6 +17,7 @@ export const MenuPopover = stagedComponent((props: MenuPopoverProps) => {
|
|
|
17
17
|
onDismiss={state.onDismiss}
|
|
18
18
|
dismissBehaviors={state.dismissBehaviors}
|
|
19
19
|
setInitialFocus={state.setInitialFocus}
|
|
20
|
+
directionalHint={state.directionalHint}
|
|
20
21
|
doNotTakePointerCapture={state.doNotTakePointerCapture}
|
|
21
22
|
>
|
|
22
23
|
{children}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { IViewProps } from '@fluentui-react-native/adapters';
|
|
2
|
-
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
2
|
+
import { DirectionalHint, DismissBehaviors } from '@fluentui-react-native/callout';
|
|
3
3
|
|
|
4
4
|
export const menuPopoverName = 'MenuPopover';
|
|
5
5
|
|
|
6
6
|
export interface MenuPopoverProps extends Omit<IViewProps, 'onPress'> {}
|
|
7
7
|
|
|
8
8
|
export interface MenuPopoverState {
|
|
9
|
+
directionalHint?: DirectionalHint;
|
|
9
10
|
dismissBehaviors: DismissBehaviors[];
|
|
10
11
|
doNotTakePointerCapture: boolean;
|
|
11
12
|
onDismiss: () => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Platform } from 'react-native';
|
|
3
|
-
import { DismissBehaviors } from '@fluentui-react-native/callout';
|
|
2
|
+
import { I18nManager, Platform } from 'react-native';
|
|
3
|
+
import { DirectionalHint, DismissBehaviors } from '@fluentui-react-native/callout';
|
|
4
4
|
import { useMenuContext } from '../context/menuContext';
|
|
5
5
|
import { MenuPopoverProps, MenuPopoverState } from './MenuPopover.types';
|
|
6
6
|
|
|
@@ -13,11 +13,24 @@ export const useMenuPopover = (_props: MenuPopoverProps): MenuPopoverState => {
|
|
|
13
13
|
const dismissBehaviors = context.isControlled
|
|
14
14
|
? (['preventDismissOnKeyDown', 'preventDismissOnClickOutside'] as DismissBehaviors[])
|
|
15
15
|
: undefined;
|
|
16
|
+
const directionalHint = getDirectionalHint(context.isSubmenu, I18nManager.isRTL);
|
|
16
17
|
|
|
17
18
|
// Initial focus behavior differs per platform, Windows platforms move focus
|
|
18
19
|
// automatically onto first element of Callout
|
|
19
20
|
const setInitialFocus = Platform.OS === ('win32' as any) || Platform.OS === 'windows';
|
|
20
21
|
const doNotTakePointerCapture = context.openOnHover;
|
|
21
22
|
|
|
22
|
-
return { triggerRef, onDismiss, dismissBehaviors, doNotTakePointerCapture, setInitialFocus };
|
|
23
|
+
return { triggerRef, onDismiss, directionalHint, dismissBehaviors, doNotTakePointerCapture, setInitialFocus };
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const getDirectionalHint = (isSubmenu: boolean, isRtl: boolean): DirectionalHint | undefined => {
|
|
27
|
+
if (!isSubmenu) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (isRtl) {
|
|
32
|
+
return 'leftTopEdge';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return 'rightTopEdge';
|
|
23
36
|
};
|
|
@@ -2,9 +2,10 @@ import React from 'react';
|
|
|
2
2
|
import { stagedComponent } from '@fluentui-react-native/framework';
|
|
3
3
|
import { menuTriggerName, MenuTriggerProps } from './MenuTrigger.types';
|
|
4
4
|
import { useMenuTrigger } from './useMenuTrigger';
|
|
5
|
+
import { MenuTriggerProvider } from '../context/menuTriggerContext';
|
|
5
6
|
|
|
6
7
|
export const MenuTrigger = stagedComponent((props: MenuTriggerProps) => {
|
|
7
|
-
const
|
|
8
|
+
const menuTrigger = useMenuTrigger(props);
|
|
8
9
|
|
|
9
10
|
return (_rest: MenuTriggerProps, children: React.ReactNode) => {
|
|
10
11
|
const childrenArray = React.Children.toArray(children) as React.ReactElement[];
|
|
@@ -16,9 +17,9 @@ export const MenuTrigger = stagedComponent((props: MenuTriggerProps) => {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
const child = childrenArray[0];
|
|
19
|
-
const revised = React.cloneElement(child,
|
|
20
|
+
const revised = React.cloneElement(child, menuTrigger.props);
|
|
20
21
|
|
|
21
|
-
return
|
|
22
|
+
return <MenuTriggerProvider value={menuTrigger.hasSubmenu}>{revised}</MenuTriggerProvider>;
|
|
22
23
|
};
|
|
23
24
|
});
|
|
24
25
|
MenuTrigger.displayName = menuTriggerName;
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { InteractionEvent, IWithPressableOptions } from '@fluentui-react-native/interactive-hooks';
|
|
2
|
+
import { ViewProps } from 'react-native';
|
|
2
3
|
|
|
3
4
|
export const menuTriggerName = 'MenuTrigger';
|
|
4
5
|
|
|
5
|
-
export interface MenuTriggerProps extends Omit<
|
|
6
|
+
export interface MenuTriggerProps extends Omit<IWithPressableOptions<ViewProps>, 'onPress'> {
|
|
7
|
+
/**
|
|
8
|
+
* A RefObject to refer to the trigger component.
|
|
9
|
+
*/
|
|
10
|
+
componentRef?: React.RefObject<React.Component>;
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
onClick?: (e: InteractionEvent) => void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface MenuTriggerState {
|
|
16
|
+
props: MenuTriggerProps;
|
|
17
|
+
hasSubmenu: boolean;
|
|
18
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useMenuContext } from '../context/menuContext';
|
|
2
2
|
import { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
|
|
3
|
-
import { MenuTriggerProps } from './MenuTrigger.types';
|
|
3
|
+
import { MenuTriggerProps, MenuTriggerState } from './MenuTrigger.types';
|
|
4
4
|
import { Platform } from 'react-native';
|
|
5
5
|
|
|
6
|
-
export const useMenuTrigger = (_props: MenuTriggerProps) => {
|
|
6
|
+
export const useMenuTrigger = (_props: MenuTriggerProps): MenuTriggerState => {
|
|
7
7
|
const context = useMenuContext();
|
|
8
8
|
|
|
9
9
|
const setOpen = context.setOpen;
|
|
@@ -32,5 +32,8 @@ export const useMenuTrigger = (_props: MenuTriggerProps) => {
|
|
|
32
32
|
setOpen(e, !open);
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
return {
|
|
35
|
+
return {
|
|
36
|
+
props: { onClick, onHoverIn, onHoverOut, componentRef: triggerRef, delayHoverIn: delayHover, delayHoverOut: delayHover },
|
|
37
|
+
hasSubmenu: context.isSubmenu,
|
|
38
|
+
};
|
|
36
39
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This context keeps track of whether a trigger component is for a submenu.
|
|
5
|
+
* This allows the trigger to show a submenu indicator.
|
|
6
|
+
*/
|
|
7
|
+
export const MenuTriggerContext = React.createContext<boolean>(false);
|
|
8
|
+
|
|
9
|
+
export const MenuTriggerProvider = MenuTriggerContext.Provider;
|
|
10
|
+
export const useMenuTriggerContext = () => React.useContext(MenuTriggerContext);
|