Skip to content

Commit 1cdc337

Browse files
committed
fixup! feat(react-menu): add base hooks for Menu, MenuList and export them
1 parent 21792df commit 1cdc337

19 files changed

Lines changed: 163 additions & 87 deletions

File tree

packages/react-components/react-menu/library/etc/react-menu.api.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ export const Menu: React_2.FC<MenuProps>;
3232
// @public
3333
export const MENU_ENTER_EVENT = "fuimenuenter";
3434

35+
// @public (undocumented)
36+
export type MenuBaseProps = Omit<MenuProps, 'surfaceMotion'>;
37+
38+
// @public (undocumented)
39+
export type MenuBaseState = Omit<MenuState, 'surfaceMotion' | 'components'>;
40+
3541
// @public (undocumented)
3642
export type MenuCheckedValueChangeData = {
3743
checkedItems: string[];
@@ -167,6 +173,12 @@ export type MenuItemProps = Omit<ComponentProps<Partial<MenuItemSlots>>, 'conten
167173
// @public
168174
export const MenuItemRadio: ForwardRefComponent<MenuItemRadioProps>;
169175

176+
// @public
177+
export type MenuItemRadioBaseProps = MenuItemRadioProps;
178+
179+
// @public
180+
export type MenuItemRadioBaseState = MenuItemRadioState;
181+
170182
// @public (undocumented)
171183
export const menuItemRadioClassNames: SlotClassNames<Omit<MenuItemSlots, 'submenuIndicator'>>;
172184

@@ -482,6 +494,13 @@ export const useMenu_unstable: (props: MenuProps & {
482494
};
483495
}) => MenuState;
484496

497+
// @public
498+
export const useMenuBase_unstable: (props: MenuBaseProps & {
499+
safeZone?: boolean | {
500+
timeout?: number;
501+
};
502+
}) => MenuBaseState;
503+
485504
// @public (undocumented)
486505
export const useMenuContext_unstable: <T>(selector: ContextSelector<MenuContextValue, T>) => T;
487506

@@ -515,21 +534,33 @@ export const useMenuGroupStyles_unstable: (state: MenuGroupState) => MenuGroupSt
515534
// @public
516535
export const useMenuItem_unstable: (props: MenuItemProps, ref: React_2.Ref<ARIAButtonElement<"div">>) => MenuItemState;
517536

537+
// @public
538+
export const useMenuItemBase_unstable: (props: MenuItemProps, ref: React_2.Ref<ARIAButtonElement<"div">>) => MenuItemState;
539+
518540
// @public
519541
export const useMenuItemCheckbox_unstable: (props: MenuItemCheckboxProps, ref: React_2.Ref<ARIAButtonElement<"div">>) => MenuItemCheckboxState;
520542

543+
// @public
544+
export const useMenuItemCheckboxBase_unstable: (props: MenuItemCheckboxProps, ref: React_2.Ref<ARIAButtonElement<"div">>) => MenuItemCheckboxState;
545+
521546
// @public (undocumented)
522547
export const useMenuItemCheckboxStyles_unstable: (state: MenuItemCheckboxState) => MenuItemCheckboxState;
523548

524549
// @public
525550
export const useMenuItemLink_unstable: (props: MenuItemLinkProps, ref: React_2.Ref<HTMLAnchorElement>) => MenuItemLinkState;
526551

552+
// @public
553+
export const useMenuItemLinkBase_unstable: (props: MenuItemLinkProps, ref: React_2.Ref<HTMLAnchorElement>) => MenuItemLinkState;
554+
527555
// @public
528556
export const useMenuItemLinkStyles_unstable: (state: MenuItemLinkState) => MenuItemLinkState;
529557

530558
// @public
531559
export const useMenuItemRadio_unstable: (props: MenuItemRadioProps, ref: React_2.Ref<ARIAButtonElement<"div">>) => MenuItemRadioState;
532560

561+
// @public
562+
export const useMenuItemRadioBase_unstable: (props: MenuItemRadioBaseProps, ref: React_2.Ref<ARIAButtonElement<"div">>) => MenuItemRadioBaseState;
563+
533564
// @public (undocumented)
534565
export const useMenuItemRadioStyles_unstable: (state: MenuItemRadioState) => void;
535566

@@ -539,12 +570,18 @@ export const useMenuItemStyles_unstable: (state: MenuItemState) => MenuItemState
539570
// @public
540571
export const useMenuItemSwitch_unstable: (props: MenuItemSwitchProps, ref: React_2.Ref<HTMLDivElement>) => MenuItemSwitchState;
541572

573+
// @public
574+
export const useMenuItemSwitchBase_unstable: (props: MenuItemSwitchProps, ref: React_2.Ref<HTMLDivElement>) => MenuItemSwitchState;
575+
542576
// @public
543577
export const useMenuItemSwitchStyles_unstable: (state: MenuItemSwitchState) => MenuItemSwitchState;
544578

545579
// @public
546580
export const useMenuList_unstable: (props: MenuListProps, ref: React_2.Ref<HTMLElement>) => MenuListState;
547581

582+
// @public
583+
export const useMenuListBase_unstable: (props: MenuListProps, ref: React_2.Ref<HTMLElement>) => MenuListState;
584+
548585
// @public (undocumented)
549586
export const useMenuListContext_unstable: <T>(selector: ContextSelector<MenuListContextValue, T>) => T;
550587

@@ -557,6 +594,9 @@ export const useMenuListStyles_unstable: (state: MenuListState) => MenuListState
557594
// @public
558595
export const useMenuPopover_unstable: (props: MenuPopoverProps, ref: React_2.Ref<HTMLElement>) => MenuPopoverState;
559596

597+
// @public
598+
export const useMenuPopoverBase_unstable: (props: MenuPopoverProps, ref: React_2.Ref<HTMLElement>) => MenuPopoverState;
599+
560600
// @public
561601
export const useMenuPopoverStyles_unstable: (state: MenuPopoverState) => MenuPopoverState;
562602

packages/react-components/react-menu/library/src/MenuItemLink.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export {
33
MenuItemLink,
44
menuItemLinkClassNames,
55
renderMenuItemLink_unstable,
6+
useMenuItemLinkBase_unstable,
67
useMenuItemLinkStyles_unstable,
78
useMenuItemLink_unstable,
89
} from './components/MenuItemLink/index';
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
export type { MenuItemRadioProps, MenuItemRadioState } from './components/MenuItemRadio/index';
1+
export type {
2+
MenuItemRadioBaseProps,
3+
MenuItemRadioBaseState,
4+
MenuItemRadioProps,
5+
MenuItemRadioState,
6+
} from './components/MenuItemRadio/index';
27
export {
38
MenuItemRadio,
49
menuItemRadioClassNames,
510
renderMenuItemRadio_unstable,
11+
useMenuItemRadioBase_unstable,
612
useMenuItemRadioStyles_unstable,
713
useMenuItemRadio_unstable,
8-
useMenuItemRadioBase_unstable,
914
} from './components/MenuItemRadio/index';

packages/react-components/react-menu/library/src/MenuList.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
export type {
22
MenuCheckedValueChangeData,
33
MenuCheckedValueChangeEvent,
4-
MenuListBaseProps,
5-
MenuListBaseState,
64
MenuListContextValues,
75
MenuListProps,
86
MenuListSlots,

packages/react-components/react-menu/library/src/MenuPopover.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export {
33
MenuPopover,
44
menuPopoverClassNames,
55
renderMenuPopover_unstable,
6+
useMenuPopoverBase_unstable,
67
useMenuPopoverStyles_unstable,
78
useMenuPopover_unstable,
89
} from './components/MenuPopover/index';

packages/react-components/react-menu/library/src/components/Menu/Menu.types.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,17 +187,9 @@ export type MenuState = ComponentState<InternalMenuSlots> &
187187
safeZone?: React.ReactElement | null;
188188
};
189189

190-
/**
191-
* MenuBase Props - omits the design-related `surfaceMotion` slot.
192-
*/
193190
export type MenuBaseProps = Omit<MenuProps, 'surfaceMotion'>;
194191

195-
/**
196-
* MenuBase State - omits the design-related `surfaceMotion` slot and its `components` entry.
197-
*/
198-
export type MenuBaseState = Omit<MenuState, 'surfaceMotion' | 'components'> & {
199-
components: Record<string, never>;
200-
};
192+
export type MenuBaseState = Omit<MenuState, 'surfaceMotion' | 'components'>;
201193

202194
export type MenuContextValues = {
203195
menu: MenuContextValue;

packages/react-components/react-menu/library/src/components/Menu/useMenu.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,15 @@ const submenuFallbackPositions: PositioningShorthandValue[] = [
5757
* @param props - props from this instance of Menu
5858
*/
5959
export const useMenu_unstable = (props: MenuProps & { safeZone?: boolean | { timeout?: number } }): MenuState => {
60-
const baseState = useMenuBase_unstable(props);
60+
const { surfaceMotion, ...baseProps } = props;
61+
const baseState = useMenuBase_unstable(baseProps);
6162

6263
return {
6364
...baseState,
6465
components: {
6566
surfaceMotion: MenuSurfaceMotion,
6667
},
67-
surfaceMotion: presenceMotionSlot(props.surfaceMotion, {
68+
surfaceMotion: presenceMotionSlot(surfaceMotion, {
6869
elementType: MenuSurfaceMotion,
6970
defaultProps: {
7071
visible: baseState.open,
@@ -79,7 +80,7 @@ export const useMenu_unstable = (props: MenuProps & { safeZone?: boolean | { tim
7980
* Base hook for Menu component, produces state required to render the component.
8081
* It doesn't set any design-related slots specific to Menu such as `surfaceMotion`.
8182
*
82-
* @internal
83+
* @param props - props from this instance of Menu
8384
*/
8485
export const useMenuBase_unstable = (
8586
props: MenuBaseProps & { safeZone?: boolean | { timeout?: number } },
@@ -224,7 +225,6 @@ export const useMenuBase_unstable = (
224225
mountNode,
225226
triggerRef,
226227
menuPopoverRef,
227-
components: {},
228228
openOnContext,
229229
open,
230230
setOpen,

packages/react-components/react-menu/library/src/components/MenuItem/useMenuItem.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ export const useMenuItem_unstable = (props: MenuItemProps, ref: React.Ref<ARIABu
4848
/**
4949
* Base hook for MenuItem component, produces state required to render the component.
5050
* It doesn't set any design-related props specific to MenuItem such as submenu indicator icon.
51-
*
52-
* @internal
5351
*/
5452
export const useMenuItemBase_unstable = (
5553
props: MenuItemProps,

packages/react-components/react-menu/library/src/components/MenuItemCheckbox/useMenuItemCheckbox.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ export const useMenuItemCheckbox_unstable = (
2525

2626
/**
2727
* Base hook for MenuItemCheckbox component, produces state required to render the component
28-
*
29-
* @internal
3028
*/
3129
export const useMenuItemCheckboxBase_unstable = (
3230
props: MenuItemCheckboxProps,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export { MenuItemLink } from './MenuItemLink';
22
export type { MenuItemLinkProps, MenuItemLinkSlots, MenuItemLinkState } from './MenuItemLink.types';
33
export { renderMenuItemLink_unstable } from './renderMenuItemLink';
4-
export { useMenuItemLink_unstable } from './useMenuItemLink';
4+
export { useMenuItemLinkBase_unstable, useMenuItemLink_unstable } from './useMenuItemLink';
55
export { menuItemLinkClassNames, useMenuItemLinkStyles_unstable } from './useMenuItemLinkStyles.styles';

0 commit comments

Comments
 (0)