@fluentui/react-tooltip 9.10.2 → 9.10.4

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.md CHANGED
@@ -1,12 +1,36 @@
1
1
  # Change Log - @fluentui/react-tooltip
2
2
 
3
- This log was last generated on Tue, 26 May 2026 09:33:36 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 04 Aug 2026 10:09:59 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.10.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-tooltip_v9.10.4)
8
+
9
+ Tue, 04 Aug 2026 10:09:59 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tooltip_v9.10.3..@fluentui/react-tooltip_v9.10.4)
11
+
12
+ ### Patches
13
+
14
+ - fix: hide Tooltip when its trigger scrolls outside an overflow container ([PR #36386](https://github.com/microsoft/fluentui/pull/36386) by paulmardling@microsoft.com)
15
+ - Bump @fluentui/react-positioning to v9.23.0 ([PR #36453](https://github.com/microsoft/fluentui/pull/36453) by beachball)
16
+
17
+ ## [9.10.3](https://github.com/microsoft/fluentui/tree/@fluentui/react-tooltip_v9.10.3)
18
+
19
+ Wed, 24 Jun 2026 11:10:03 GMT
20
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tooltip_v9.10.2..@fluentui/react-tooltip_v9.10.3)
21
+
22
+ ### Patches
23
+
24
+ - fix: remove redundant use no memo directives, and add justification to valid ones ([PR #36224](https://github.com/microsoft/fluentui/pull/36224) by martinhochel@microsoft.com)
25
+ - Bump @fluentui/react-jsx-runtime to v9.4.4 ([commit](https://github.com/microsoft/fluentui/commit/a4b871ca80c1f16f35ab4229def4fe02be7f30ea) by beachball)
26
+ - Bump @fluentui/react-portal to v9.8.14 ([commit](https://github.com/microsoft/fluentui/commit/a4b871ca80c1f16f35ab4229def4fe02be7f30ea) by beachball)
27
+ - Bump @fluentui/react-positioning to v9.22.3 ([commit](https://github.com/microsoft/fluentui/commit/a4b871ca80c1f16f35ab4229def4fe02be7f30ea) by beachball)
28
+ - Bump @fluentui/react-tabster to v9.26.16 ([commit](https://github.com/microsoft/fluentui/commit/a4b871ca80c1f16f35ab4229def4fe02be7f30ea) by beachball)
29
+ - Bump @fluentui/react-utilities to v9.26.5 ([commit](https://github.com/microsoft/fluentui/commit/a4b871ca80c1f16f35ab4229def4fe02be7f30ea) by beachball)
30
+
7
31
  ## [9.10.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-tooltip_v9.10.2)
8
32
 
9
- Tue, 26 May 2026 09:33:36 GMT
33
+ Tue, 26 May 2026 09:39:14 GMT
10
34
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tooltip_v9.10.1..@fluentui/react-tooltip_v9.10.2)
11
35
 
12
36
  ### Patches
package/dist/index.d.ts CHANGED
@@ -117,6 +117,10 @@ export declare type TooltipSlots = {
117
117
  */
118
118
  export declare type TooltipState = ComponentState<TooltipSlots> & Pick<TooltipProps, 'mountNode' | 'relationship'> & Required<Pick<TooltipProps, 'appearance' | 'hideDelay' | 'positioning' | 'showDelay' | 'visible' | 'withArrow'>> & {
119
119
  children?: JSXElement | null;
120
+ /**
121
+ * Whether positioning has determined that the tooltip or its target is outside its clipping boundary.
122
+ */
123
+ hidden?: boolean;
120
124
  /**
121
125
  * Whether the tooltip should be rendered to the DOM.
122
126
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/Tooltip.types.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { PositioningShorthand } from '@fluentui/react-positioning';\nimport type { ComponentProps, ComponentState, JSXElement, Slot, TriggerProps } from '@fluentui/react-utilities';\nimport type { PortalProps } from '@fluentui/react-portal';\n\n/**\n * Slot properties for Tooltip\n */\nexport type TooltipSlots = {\n /**\n * The text or JSX content of the tooltip.\n */\n content: NonNullable<Slot<'div'>>;\n};\n\n/**\n * The properties that are added to the child of the Tooltip\n */\nexport type TooltipChildProps = {\n ref?: React.Ref<unknown>;\n} & Pick<\n React.HTMLAttributes<HTMLElement>,\n | 'aria-describedby'\n | 'aria-label'\n | 'aria-labelledby'\n | 'onBlur'\n | 'onFocus'\n | 'onPointerEnter'\n | 'onPointerLeave'\n | 'aria-haspopup'\n | 'aria-expanded'\n>;\n\n/**\n * Data for the Tooltip's onVisibleChange event.\n */\nexport type OnVisibleChangeData = {\n visible: boolean;\n\n /**\n * The event object, if this visibility change was triggered by a keyboard event on the document element\n * (such as Escape to hide the visible tooltip). Otherwise undefined.\n */\n documentKeyboardEvent?: KeyboardEvent;\n};\n\n/**\n * Properties for Tooltip\n */\nexport type TooltipProps = ComponentProps<TooltipSlots> &\n TriggerProps<TooltipChildProps> &\n Pick<PortalProps, 'mountNode'> & {\n /**\n * The tooltip's visual appearance.\n * * `normal` - Uses the theme's background and text colors.\n * * `inverted` - Higher contrast variant that uses the theme's inverted colors.\n *\n * @default normal\n */\n appearance?: 'normal' | 'inverted';\n /**\n * Delay before the tooltip is hidden, in milliseconds.\n *\n * @default 250\n */\n hideDelay?: number;\n\n /**\n * Notification when the visibility of the tooltip is changing.\n *\n * **Note**: for backwards compatibility, `event` will be undefined if this was triggered by a keyboard event on\n * the document element. Use `data.documentKeyboardEvent` if the keyboard event object is needed.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onVisibleChange?: (\n event: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined,\n data: OnVisibleChangeData,\n ) => void;\n\n /**\n * Configure the positioning of the tooltip\n *\n * @default above\n */\n positioning?: PositioningShorthand;\n\n /**\n * (Required) Specifies whether this tooltip is acting as the description or label of its trigger element.\n *\n * * `label` - The tooltip sets the trigger's aria-label or aria-labelledby attribute. This is useful for buttons\n * displaying only an icon, for example.\n * * `description` - The tooltip sets the trigger's aria-description or aria-describedby attribute.\n * * `inaccessible` - No aria attributes are set on the trigger. This makes the tooltip's content inaccessible to\n * screen readers, and should only be used if the tooltip's text is available by some other means.\n */\n relationship: 'label' | 'description' | 'inaccessible';\n\n /**\n * Delay before the tooltip is shown, in milliseconds.\n *\n * @default 250\n */\n showDelay?: number;\n\n /**\n * Control the tooltip's visibility programatically.\n *\n * This can be used in conjunction with onVisibleChange to modify the tooltip's show and hide behavior.\n *\n * If not provided, the visibility will be controlled by the tooltip itself, based on hover and focus events on the\n * trigger (child) element.\n *\n * @default false\n */\n visible?: boolean;\n\n /**\n * Render an arrow pointing to the target element\n *\n * @default false\n */\n withArrow?: boolean;\n };\n\nexport type TooltipBaseProps = Omit<TooltipProps, 'appearance'>;\n\n/**\n * State used in rendering Tooltip\n */\nexport type TooltipState = ComponentState<TooltipSlots> &\n Pick<TooltipProps, 'mountNode' | 'relationship'> &\n Required<Pick<TooltipProps, 'appearance' | 'hideDelay' | 'positioning' | 'showDelay' | 'visible' | 'withArrow'>> & {\n children?: JSXElement | null;\n\n /**\n * Whether the tooltip should be rendered to the DOM.\n */\n shouldRenderTooltip?: boolean;\n\n /**\n * Ref to the arrow element\n */\n arrowRef?: React.Ref<HTMLDivElement>;\n\n /**\n * CSS class for the arrow element\n */\n arrowClassName?: string;\n };\n\nexport type TooltipBaseState = Omit<TooltipState, 'appearance'>;\n"],"names":[],"mappings":"AAsJA,WAAgE"}
1
+ {"version":3,"sources":["../src/components/Tooltip/Tooltip.types.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { PositioningShorthand } from '@fluentui/react-positioning';\nimport type { ComponentProps, ComponentState, JSXElement, Slot, TriggerProps } from '@fluentui/react-utilities';\nimport type { PortalProps } from '@fluentui/react-portal';\n\n/**\n * Slot properties for Tooltip\n */\nexport type TooltipSlots = {\n /**\n * The text or JSX content of the tooltip.\n */\n content: NonNullable<Slot<'div'>>;\n};\n\n/**\n * The properties that are added to the child of the Tooltip\n */\nexport type TooltipChildProps = {\n ref?: React.Ref<unknown>;\n} & Pick<\n React.HTMLAttributes<HTMLElement>,\n | 'aria-describedby'\n | 'aria-label'\n | 'aria-labelledby'\n | 'onBlur'\n | 'onFocus'\n | 'onPointerEnter'\n | 'onPointerLeave'\n | 'aria-haspopup'\n | 'aria-expanded'\n>;\n\n/**\n * Data for the Tooltip's onVisibleChange event.\n */\nexport type OnVisibleChangeData = {\n visible: boolean;\n\n /**\n * The event object, if this visibility change was triggered by a keyboard event on the document element\n * (such as Escape to hide the visible tooltip). Otherwise undefined.\n */\n documentKeyboardEvent?: KeyboardEvent;\n};\n\n/**\n * Properties for Tooltip\n */\nexport type TooltipProps = ComponentProps<TooltipSlots> &\n TriggerProps<TooltipChildProps> &\n Pick<PortalProps, 'mountNode'> & {\n /**\n * The tooltip's visual appearance.\n * * `normal` - Uses the theme's background and text colors.\n * * `inverted` - Higher contrast variant that uses the theme's inverted colors.\n *\n * @default normal\n */\n appearance?: 'normal' | 'inverted';\n /**\n * Delay before the tooltip is hidden, in milliseconds.\n *\n * @default 250\n */\n hideDelay?: number;\n\n /**\n * Notification when the visibility of the tooltip is changing.\n *\n * **Note**: for backwards compatibility, `event` will be undefined if this was triggered by a keyboard event on\n * the document element. Use `data.documentKeyboardEvent` if the keyboard event object is needed.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onVisibleChange?: (\n event: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined,\n data: OnVisibleChangeData,\n ) => void;\n\n /**\n * Configure the positioning of the tooltip\n *\n * @default above\n */\n positioning?: PositioningShorthand;\n\n /**\n * (Required) Specifies whether this tooltip is acting as the description or label of its trigger element.\n *\n * * `label` - The tooltip sets the trigger's aria-label or aria-labelledby attribute. This is useful for buttons\n * displaying only an icon, for example.\n * * `description` - The tooltip sets the trigger's aria-description or aria-describedby attribute.\n * * `inaccessible` - No aria attributes are set on the trigger. This makes the tooltip's content inaccessible to\n * screen readers, and should only be used if the tooltip's text is available by some other means.\n */\n relationship: 'label' | 'description' | 'inaccessible';\n\n /**\n * Delay before the tooltip is shown, in milliseconds.\n *\n * @default 250\n */\n showDelay?: number;\n\n /**\n * Control the tooltip's visibility programatically.\n *\n * This can be used in conjunction with onVisibleChange to modify the tooltip's show and hide behavior.\n *\n * If not provided, the visibility will be controlled by the tooltip itself, based on hover and focus events on the\n * trigger (child) element.\n *\n * @default false\n */\n visible?: boolean;\n\n /**\n * Render an arrow pointing to the target element\n *\n * @default false\n */\n withArrow?: boolean;\n };\n\nexport type TooltipBaseProps = Omit<TooltipProps, 'appearance'>;\n\n/**\n * State used in rendering Tooltip\n */\nexport type TooltipState = ComponentState<TooltipSlots> &\n Pick<TooltipProps, 'mountNode' | 'relationship'> &\n Required<Pick<TooltipProps, 'appearance' | 'hideDelay' | 'positioning' | 'showDelay' | 'visible' | 'withArrow'>> & {\n children?: JSXElement | null;\n\n /**\n * Whether positioning has determined that the tooltip or its target is outside its clipping boundary.\n */\n hidden?: boolean;\n\n /**\n * Whether the tooltip should be rendered to the DOM.\n */\n shouldRenderTooltip?: boolean;\n\n /**\n * Ref to the arrow element\n */\n arrowRef?: React.Ref<HTMLDivElement>;\n\n /**\n * CSS class for the arrow element\n */\n arrowClassName?: string;\n };\n\nexport type TooltipBaseState = Omit<TooltipState, 'appearance'>;\n"],"names":[],"mappings":"AA2JA,WAAgE"}
@@ -8,7 +8,7 @@ import { useTooltipBase_unstable } from './useTooltipBase';
8
8
  *
9
9
  * @param props - props from this instance of Tooltip
10
10
  */ export const useTooltip_unstable = (props)=>{
11
- 'use no memo';
11
+ 'use no memo'; // justified: compiler would optimize useTooltip_unstable — manual opt-out to preserve runtime behavior
12
12
  const { appearance = 'normal', ...baseProps } = props;
13
13
  const state = useTooltipBase_unstable(baseProps);
14
14
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltip.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipProps, TooltipState } from './Tooltip.types';\nimport { useTooltipBase_unstable } from './useTooltipBase';\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltip_unstable = (props: TooltipProps): TooltipState => {\n 'use no memo';\n\n const { appearance = 'normal', ...baseProps } = props;\n\n const state = useTooltipBase_unstable(baseProps);\n\n return {\n appearance,\n ...state,\n };\n};\n"],"names":["useTooltipBase_unstable","useTooltip_unstable","props","appearance","baseProps","state"],"mappings":"AAAA;AAGA,SAASA,uBAAuB,QAAQ,mBAAmB;AAE3D;;;;;;;CAOC,GACD,OAAO,MAAMC,sBAAsB,CAACC;IAClC;IAEA,MAAM,EAAEC,aAAa,QAAQ,EAAE,GAAGC,WAAW,GAAGF;IAEhD,MAAMG,QAAQL,wBAAwBI;IAEtC,OAAO;QACLD;QACA,GAAGE,KAAK;IACV;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/Tooltip/useTooltip.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipProps, TooltipState } from './Tooltip.types';\nimport { useTooltipBase_unstable } from './useTooltipBase';\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltip_unstable = (props: TooltipProps): TooltipState => {\n 'use no memo'; // justified: compiler would optimize useTooltip_unstable — manual opt-out to preserve runtime behavior\n\n const { appearance = 'normal', ...baseProps } = props;\n\n const state = useTooltipBase_unstable(baseProps);\n\n return {\n appearance,\n ...state,\n };\n};\n"],"names":["useTooltipBase_unstable","useTooltip_unstable","props","appearance","baseProps","state"],"mappings":"AAAA;AAGA,SAASA,uBAAuB,QAAQ,mBAAmB;AAE3D;;;;;;;CAOC,GACD,OAAO,MAAMC,sBAAsB,CAACC;IAClC,eAAe,uGAAuG;IAEtH,MAAM,EAAEC,aAAa,QAAQ,EAAE,GAAGC,WAAW,GAAGF;IAEhD,MAAMG,QAAQL,wBAAwBI;IAEtC,OAAO;QACLD;QACA,GAAGE,KAAK;IACV;AACF,EAAE"}
@@ -15,7 +15,6 @@ import { Escape } from '@fluentui/keyboard-keys';
15
15
  *
16
16
  * @param props - props from this instance of Tooltip
17
17
  */ export const useTooltipBase_unstable = (props)=>{
18
- 'use no memo';
19
18
  var _child_props, _child_props1, _child_props2, _child_props3, _child_props4, _child_props5, _child_props6;
20
19
  const context = useTooltipVisibility();
21
20
  const isServerSideRender = useIsSSR();
@@ -24,6 +23,7 @@ import { Escape } from '@fluentui/keyboard-keys';
24
23
  state: props.visible,
25
24
  initialState: false
26
25
  });
26
+ const [hidden, setHidden] = React.useState(false);
27
27
  const { children, content, withArrow = false, positioning = 'above', onVisibleChange, relationship, showDelay = 250, hideDelay = 250, mountNode } = props;
28
28
  const state = {
29
29
  withArrow,
@@ -32,6 +32,7 @@ import { Escape } from '@fluentui/keyboard-keys';
32
32
  hideDelay,
33
33
  relationship,
34
34
  visible,
35
+ hidden,
35
36
  shouldRenderTooltip: visible,
36
37
  mountNode,
37
38
  // Slots
@@ -46,13 +47,21 @@ import { Escape } from '@fluentui/keyboard-keys';
46
47
  })
47
48
  };
48
49
  state.content.id = useId('tooltip-', state.content.id);
50
+ const resolvedPositioning = resolvePositioningShorthand(state.positioning);
51
+ const onPositioningEnd = useEventCallback((event)=>{
52
+ var _resolvedPositioning_onPositioningEnd;
53
+ const { escaped, referenceHidden } = event.detail;
54
+ setHidden(escaped || referenceHidden);
55
+ (_resolvedPositioning_onPositioningEnd = resolvedPositioning.onPositioningEnd) === null || _resolvedPositioning_onPositioningEnd === void 0 ? void 0 : _resolvedPositioning_onPositioningEnd.call(resolvedPositioning, event);
56
+ });
49
57
  const positioningOptions = {
50
58
  enabled: state.visible,
51
59
  arrowPadding: 2 * tooltipBorderRadius,
52
60
  position: 'above',
53
61
  align: 'center',
54
62
  offset: 4,
55
- ...resolvePositioningShorthand(state.positioning)
63
+ ...resolvedPositioning,
64
+ onPositioningEnd
56
65
  };
57
66
  if (state.withArrow) {
58
67
  positioningOptions.offset = mergeArrowOffset(positioningOptions.offset, arrowHeight);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltipBase.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { mergeArrowOffset, resolvePositioningShorthand, usePositioning } from '@fluentui/react-positioning';\nimport {\n useTooltipVisibility_unstable as useTooltipVisibility,\n useFluent_unstable as useFluent,\n} from '@fluentui/react-shared-contexts';\nimport type { KeyborgFocusInEvent } from '@fluentui/react-tabster';\nimport { KEYBORG_FOCUSIN, useIsNavigatingWithKeyboard } from '@fluentui/react-tabster';\nimport {\n applyTriggerPropsToChildren,\n useControllableState,\n useId,\n useIsomorphicLayoutEffect,\n useIsSSR,\n useMergedRefs,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n slot,\n getReactElementRef,\n} from '@fluentui/react-utilities';\nimport type { TooltipBaseProps, TooltipBaseState, TooltipChildProps, OnVisibleChangeData } from './Tooltip.types';\nimport { arrowHeight, tooltipBorderRadius } from './private/constants';\nimport { useTooltipTimeout } from './private/useTooltipTimeout';\nimport { Escape } from '@fluentui/keyboard-keys';\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltipBase_unstable = (props: TooltipBaseProps): TooltipBaseState => {\n 'use no memo';\n\n const context = useTooltipVisibility();\n const isServerSideRender = useIsSSR();\n const { targetDocument } = useFluent();\n\n const [visible, setVisibleInternal] = useControllableState({ state: props.visible, initialState: false });\n\n const {\n children,\n content,\n withArrow = false,\n positioning = 'above',\n onVisibleChange,\n relationship,\n showDelay = 250,\n hideDelay = 250,\n mountNode,\n } = props;\n\n const state: TooltipBaseState = {\n withArrow,\n positioning,\n showDelay,\n hideDelay,\n relationship,\n visible,\n shouldRenderTooltip: visible,\n mountNode,\n // Slots\n components: {\n content: 'div',\n },\n content: slot.always(content, {\n defaultProps: {\n role: 'tooltip',\n },\n elementType: 'div',\n }),\n };\n\n state.content.id = useId('tooltip-', state.content.id);\n\n const positioningOptions = {\n enabled: state.visible,\n arrowPadding: 2 * tooltipBorderRadius,\n position: 'above' as const,\n align: 'center' as const,\n offset: 4,\n ...resolvePositioningShorthand(state.positioning),\n };\n\n if (state.withArrow) {\n positioningOptions.offset = mergeArrowOffset(positioningOptions.offset, arrowHeight);\n }\n\n const {\n targetRef,\n containerRef,\n arrowRef,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n targetRef: React.MutableRefObject<unknown>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n containerRef: React.MutableRefObject<HTMLDivElement>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n arrowRef: React.MutableRefObject<HTMLDivElement>;\n } = usePositioning(positioningOptions);\n\n const [setDelayTimeout, clearDelayTimeout] = useTooltipTimeout(containerRef);\n\n const setVisible = React.useCallback(\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined, data: OnVisibleChangeData) => {\n clearDelayTimeout();\n setVisibleInternal(oldVisible => {\n if (data.visible !== oldVisible) {\n onVisibleChange?.(ev, data);\n }\n return data.visible;\n });\n },\n [clearDelayTimeout, setVisibleInternal, onVisibleChange],\n );\n\n state.content.ref = useMergedRefs(state.content.ref, containerRef);\n state.arrowRef = arrowRef;\n\n // When this tooltip is visible, hide any other tooltips, and register it\n // as the visibleTooltip with the TooltipContext.\n // Also add a listener on document to hide the tooltip if Escape is pressed\n useIsomorphicLayoutEffect(() => {\n if (visible) {\n const thisTooltip = {\n hide: (ev?: KeyboardEvent) => setVisible(undefined, { visible: false, documentKeyboardEvent: ev }),\n };\n\n context.visibleTooltip?.hide();\n // eslint-disable-next-line react-hooks/immutability\n context.visibleTooltip = thisTooltip;\n\n const onDocumentKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === Escape && !ev.defaultPrevented) {\n thisTooltip.hide(ev);\n // stop propagation to avoid conflicting with other elements that listen for `Escape`\n // e,g: Dialog, Popover, Menu and Tooltip\n ev.preventDefault();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, {\n // As this event is added at targeted document,\n // we need to capture the event to be sure keydown handling from tooltip happens first\n capture: true,\n });\n\n // Dismiss the tooltip when the document becomes hidden (e.g. tab backgrounded,\n // app switched on mobile). The original trigger (hover/tap/focus) is no longer\n // active in this case, so persisting the tooltip is a stale UI state.\n const onDocumentVisibilityChange = () => {\n if (targetDocument?.visibilityState === 'hidden') {\n thisTooltip.hide();\n }\n };\n\n targetDocument?.addEventListener('visibilitychange', onDocumentVisibilityChange);\n\n return () => {\n if (context.visibleTooltip === thisTooltip) {\n context.visibleTooltip = undefined;\n }\n\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n targetDocument?.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n };\n }\n }, [context, targetDocument, visible, setVisible]);\n\n // Used to skip showing the tooltip in certain situations when the trigger is focused.\n // See comments where this is set for more info.\n const ignoreNextFocusEventRef = React.useRef(false);\n\n // Listener for onPointerEnter and onFocus on the trigger element\n const onEnterTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n if (ev.type === 'focus' && ignoreNextFocusEventRef.current) {\n ignoreNextFocusEventRef.current = false;\n return;\n }\n\n // Show immediately if another tooltip is already visible\n const delay = context.visibleTooltip ? 0 : state.showDelay;\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: true });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.showDelay, context],\n );\n\n const isNavigatingWithKeyboard = useIsNavigatingWithKeyboard();\n\n // Callback ref that attaches a keyborg:focusin event listener.\n const [keyborgListenerCallbackRef] = React.useState(() => {\n const onKeyborgFocusIn = ((ev: KeyborgFocusInEvent) => {\n // Skip showing the tooltip if focus moved programmatically.\n // For example, we don't want to show the tooltip when a dialog is closed\n // and Tabster programmatically restores focus to the trigger button.\n // See https://github.com/microsoft/fluentui/issues/27576\n if (ev.detail?.isFocusedProgrammatically && !isNavigatingWithKeyboard()) {\n ignoreNextFocusEventRef.current = true;\n }\n }) as EventListener;\n\n // Save the current element to remove the listener when the ref changes\n let current: Element | null = null;\n\n // Callback ref that attaches the listener to the element\n return (element: Element | null) => {\n current?.removeEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n element?.addEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n current = element;\n };\n });\n\n // Listener for onPointerLeave and onBlur on the trigger element\n const onLeaveTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n let delay = state.hideDelay;\n\n if (ev.type === 'blur') {\n // Hide immediately when losing focus\n delay = 0;\n\n // The focused element gets a blur event when the document loses focus\n // (e.g. switching tabs in the browser), but we don't want to show the\n // tooltip again when the document gets focus back. Handle this case by\n // checking if the blurred element is still the document's activeElement.\n // See https://github.com/microsoft/fluentui/issues/13541\n ignoreNextFocusEventRef.current = targetDocument?.activeElement === ev.target;\n }\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: false });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.hideDelay, targetDocument],\n );\n\n // Cancel the hide timer when the mouse or focus enters the tooltip, and restart it when the mouse or focus leaves.\n // This keeps the tooltip visible when the mouse is moved over it, or it has focus within.\n // eslint-disable-next-line react-hooks/immutability\n state.content.onPointerEnter = mergeCallbacks(state.content.onPointerEnter, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onPointerLeave = mergeCallbacks(state.content.onPointerLeave, onLeaveTrigger);\n // eslint-disable-next-line react-hooks/immutability\n state.content.onFocus = mergeCallbacks(state.content.onFocus, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onBlur = mergeCallbacks(state.content.onBlur, onLeaveTrigger);\n\n const child = getTriggerChild(children);\n\n const triggerAriaProps: Pick<TooltipChildProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby'> = {};\n const isPopupExpanded =\n child?.props?.['aria-haspopup'] &&\n (child?.props?.['aria-expanded'] === true || child?.props?.['aria-expanded'] === 'true');\n\n if (relationship === 'label') {\n // aria-label only works if the content is a string. Otherwise, need to use aria-labelledby.\n if (typeof state.content.children === 'string') {\n triggerAriaProps['aria-label'] = state.content.children;\n } else {\n triggerAriaProps['aria-labelledby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-labelledby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n } else if (relationship === 'description') {\n triggerAriaProps['aria-describedby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-describedby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n\n // Case 1: Don't render the Tooltip in SSR to avoid hydration errors\n // Case 2: Don't render the Tooltip, if it triggers Menu or another popup and it's already opened\n if (isServerSideRender || isPopupExpanded) {\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = false;\n }\n\n // Apply the trigger props to the child, either by calling the render function, or cloning with the new props\n // eslint-disable-next-line react-hooks/immutability\n state.children = applyTriggerPropsToChildren(children, {\n ...triggerAriaProps,\n ...child?.props,\n ref: useMergedRefs(\n getReactElementRef<HTMLButtonElement>(child),\n keyborgListenerCallbackRef,\n // If the target prop is not provided, attach targetRef to the trigger element's ref prop\n positioningOptions.target === undefined ? targetRef : undefined,\n ),\n // eslint-disable-next-line react-hooks/refs\n onPointerEnter: useEventCallback(mergeCallbacks(child?.props?.onPointerEnter, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onPointerLeave: useEventCallback(mergeCallbacks(child?.props?.onPointerLeave, onLeaveTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onFocus: useEventCallback(mergeCallbacks(child?.props?.onFocus, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onBlur: useEventCallback(mergeCallbacks(child?.props?.onBlur, onLeaveTrigger)),\n });\n\n return state;\n};\n"],"names":["React","mergeArrowOffset","resolvePositioningShorthand","usePositioning","useTooltipVisibility_unstable","useTooltipVisibility","useFluent_unstable","useFluent","KEYBORG_FOCUSIN","useIsNavigatingWithKeyboard","applyTriggerPropsToChildren","useControllableState","useId","useIsomorphicLayoutEffect","useIsSSR","useMergedRefs","getTriggerChild","mergeCallbacks","useEventCallback","slot","getReactElementRef","arrowHeight","tooltipBorderRadius","useTooltipTimeout","Escape","useTooltipBase_unstable","props","child","context","isServerSideRender","targetDocument","visible","setVisibleInternal","state","initialState","children","content","withArrow","positioning","onVisibleChange","relationship","showDelay","hideDelay","mountNode","shouldRenderTooltip","components","always","defaultProps","role","elementType","id","positioningOptions","enabled","arrowPadding","position","align","offset","targetRef","containerRef","arrowRef","setDelayTimeout","clearDelayTimeout","setVisible","useCallback","ev","data","oldVisible","ref","thisTooltip","hide","undefined","documentKeyboardEvent","visibleTooltip","onDocumentKeyDown","key","defaultPrevented","preventDefault","addEventListener","capture","onDocumentVisibilityChange","visibilityState","removeEventListener","ignoreNextFocusEventRef","useRef","onEnterTrigger","type","current","delay","persist","isNavigatingWithKeyboard","keyborgListenerCallbackRef","useState","onKeyborgFocusIn","detail","isFocusedProgrammatically","element","onLeaveTrigger","activeElement","target","onPointerEnter","onPointerLeave","onFocus","onBlur","triggerAriaProps","isPopupExpanded"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/Tooltip/useTooltipBase.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { mergeArrowOffset, resolvePositioningShorthand, usePositioning } from '@fluentui/react-positioning';\nimport type { PositioningProps } from '@fluentui/react-positioning';\nimport {\n useTooltipVisibility_unstable as useTooltipVisibility,\n useFluent_unstable as useFluent,\n} from '@fluentui/react-shared-contexts';\nimport type { KeyborgFocusInEvent } from '@fluentui/react-tabster';\nimport { KEYBORG_FOCUSIN, useIsNavigatingWithKeyboard } from '@fluentui/react-tabster';\nimport {\n applyTriggerPropsToChildren,\n useControllableState,\n useId,\n useIsomorphicLayoutEffect,\n useIsSSR,\n useMergedRefs,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n slot,\n getReactElementRef,\n} from '@fluentui/react-utilities';\nimport type { TooltipBaseProps, TooltipBaseState, TooltipChildProps, OnVisibleChangeData } from './Tooltip.types';\nimport { arrowHeight, tooltipBorderRadius } from './private/constants';\nimport { useTooltipTimeout } from './private/useTooltipTimeout';\nimport { Escape } from '@fluentui/keyboard-keys';\n\ntype OnPositioningEndEvent = Parameters<Exclude<PositioningProps['onPositioningEnd'], undefined>>[0];\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltipBase_unstable = (props: TooltipBaseProps): TooltipBaseState => {\n const context = useTooltipVisibility();\n const isServerSideRender = useIsSSR();\n const { targetDocument } = useFluent();\n\n const [visible, setVisibleInternal] = useControllableState({ state: props.visible, initialState: false });\n const [hidden, setHidden] = React.useState(false);\n\n const {\n children,\n content,\n withArrow = false,\n positioning = 'above',\n onVisibleChange,\n relationship,\n showDelay = 250,\n hideDelay = 250,\n mountNode,\n } = props;\n\n const state: TooltipBaseState = {\n withArrow,\n positioning,\n showDelay,\n hideDelay,\n relationship,\n visible,\n hidden,\n shouldRenderTooltip: visible,\n mountNode,\n // Slots\n components: {\n content: 'div',\n },\n content: slot.always(content, {\n defaultProps: {\n role: 'tooltip',\n },\n elementType: 'div',\n }),\n };\n\n state.content.id = useId('tooltip-', state.content.id);\n\n const resolvedPositioning = resolvePositioningShorthand(state.positioning);\n const onPositioningEnd = useEventCallback((event: OnPositioningEndEvent) => {\n const { escaped, referenceHidden } = event.detail;\n\n setHidden(escaped || referenceHidden);\n resolvedPositioning.onPositioningEnd?.(event);\n });\n\n const positioningOptions = {\n enabled: state.visible,\n arrowPadding: 2 * tooltipBorderRadius,\n position: 'above' as const,\n align: 'center' as const,\n offset: 4,\n ...resolvedPositioning,\n onPositioningEnd,\n };\n\n if (state.withArrow) {\n positioningOptions.offset = mergeArrowOffset(positioningOptions.offset, arrowHeight);\n }\n\n const {\n targetRef,\n containerRef,\n arrowRef,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n targetRef: React.MutableRefObject<unknown>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n containerRef: React.MutableRefObject<HTMLDivElement>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n arrowRef: React.MutableRefObject<HTMLDivElement>;\n } = usePositioning(positioningOptions);\n\n const [setDelayTimeout, clearDelayTimeout] = useTooltipTimeout(containerRef);\n\n const setVisible = React.useCallback(\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined, data: OnVisibleChangeData) => {\n clearDelayTimeout();\n setVisibleInternal(oldVisible => {\n if (data.visible !== oldVisible) {\n onVisibleChange?.(ev, data);\n }\n return data.visible;\n });\n },\n [clearDelayTimeout, setVisibleInternal, onVisibleChange],\n );\n\n state.content.ref = useMergedRefs(state.content.ref, containerRef);\n state.arrowRef = arrowRef;\n\n // When this tooltip is visible, hide any other tooltips, and register it\n // as the visibleTooltip with the TooltipContext.\n // Also add a listener on document to hide the tooltip if Escape is pressed\n useIsomorphicLayoutEffect(() => {\n if (visible) {\n const thisTooltip = {\n hide: (ev?: KeyboardEvent) => setVisible(undefined, { visible: false, documentKeyboardEvent: ev }),\n };\n\n context.visibleTooltip?.hide();\n // eslint-disable-next-line react-hooks/immutability\n context.visibleTooltip = thisTooltip;\n\n const onDocumentKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === Escape && !ev.defaultPrevented) {\n thisTooltip.hide(ev);\n // stop propagation to avoid conflicting with other elements that listen for `Escape`\n // e,g: Dialog, Popover, Menu and Tooltip\n ev.preventDefault();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, {\n // As this event is added at targeted document,\n // we need to capture the event to be sure keydown handling from tooltip happens first\n capture: true,\n });\n\n // Dismiss the tooltip when the document becomes hidden (e.g. tab backgrounded,\n // app switched on mobile). The original trigger (hover/tap/focus) is no longer\n // active in this case, so persisting the tooltip is a stale UI state.\n const onDocumentVisibilityChange = () => {\n if (targetDocument?.visibilityState === 'hidden') {\n thisTooltip.hide();\n }\n };\n\n targetDocument?.addEventListener('visibilitychange', onDocumentVisibilityChange);\n\n return () => {\n if (context.visibleTooltip === thisTooltip) {\n context.visibleTooltip = undefined;\n }\n\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n targetDocument?.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n };\n }\n }, [context, targetDocument, visible, setVisible]);\n\n // Used to skip showing the tooltip in certain situations when the trigger is focused.\n // See comments where this is set for more info.\n const ignoreNextFocusEventRef = React.useRef(false);\n\n // Listener for onPointerEnter and onFocus on the trigger element\n const onEnterTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n if (ev.type === 'focus' && ignoreNextFocusEventRef.current) {\n ignoreNextFocusEventRef.current = false;\n return;\n }\n\n // Show immediately if another tooltip is already visible\n const delay = context.visibleTooltip ? 0 : state.showDelay;\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: true });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.showDelay, context],\n );\n\n const isNavigatingWithKeyboard = useIsNavigatingWithKeyboard();\n\n // Callback ref that attaches a keyborg:focusin event listener.\n const [keyborgListenerCallbackRef] = React.useState(() => {\n const onKeyborgFocusIn = ((ev: KeyborgFocusInEvent) => {\n // Skip showing the tooltip if focus moved programmatically.\n // For example, we don't want to show the tooltip when a dialog is closed\n // and Tabster programmatically restores focus to the trigger button.\n // See https://github.com/microsoft/fluentui/issues/27576\n if (ev.detail?.isFocusedProgrammatically && !isNavigatingWithKeyboard()) {\n ignoreNextFocusEventRef.current = true;\n }\n }) as EventListener;\n\n // Save the current element to remove the listener when the ref changes\n let current: Element | null = null;\n\n // Callback ref that attaches the listener to the element\n return (element: Element | null) => {\n current?.removeEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n element?.addEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n current = element;\n };\n });\n\n // Listener for onPointerLeave and onBlur on the trigger element\n const onLeaveTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n let delay = state.hideDelay;\n\n if (ev.type === 'blur') {\n // Hide immediately when losing focus\n delay = 0;\n\n // The focused element gets a blur event when the document loses focus\n // (e.g. switching tabs in the browser), but we don't want to show the\n // tooltip again when the document gets focus back. Handle this case by\n // checking if the blurred element is still the document's activeElement.\n // See https://github.com/microsoft/fluentui/issues/13541\n ignoreNextFocusEventRef.current = targetDocument?.activeElement === ev.target;\n }\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: false });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.hideDelay, targetDocument],\n );\n\n // Cancel the hide timer when the mouse or focus enters the tooltip, and restart it when the mouse or focus leaves.\n // This keeps the tooltip visible when the mouse is moved over it, or it has focus within.\n // eslint-disable-next-line react-hooks/immutability\n state.content.onPointerEnter = mergeCallbacks(state.content.onPointerEnter, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onPointerLeave = mergeCallbacks(state.content.onPointerLeave, onLeaveTrigger);\n // eslint-disable-next-line react-hooks/immutability\n state.content.onFocus = mergeCallbacks(state.content.onFocus, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onBlur = mergeCallbacks(state.content.onBlur, onLeaveTrigger);\n\n const child = getTriggerChild(children);\n\n const triggerAriaProps: Pick<TooltipChildProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby'> = {};\n const isPopupExpanded =\n child?.props?.['aria-haspopup'] &&\n (child?.props?.['aria-expanded'] === true || child?.props?.['aria-expanded'] === 'true');\n\n if (relationship === 'label') {\n // aria-label only works if the content is a string. Otherwise, need to use aria-labelledby.\n if (typeof state.content.children === 'string') {\n triggerAriaProps['aria-label'] = state.content.children;\n } else {\n triggerAriaProps['aria-labelledby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-labelledby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n } else if (relationship === 'description') {\n triggerAriaProps['aria-describedby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-describedby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n\n // Case 1: Don't render the Tooltip in SSR to avoid hydration errors\n // Case 2: Don't render the Tooltip, if it triggers Menu or another popup and it's already opened\n if (isServerSideRender || isPopupExpanded) {\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = false;\n }\n\n // Apply the trigger props to the child, either by calling the render function, or cloning with the new props\n // eslint-disable-next-line react-hooks/immutability\n state.children = applyTriggerPropsToChildren(children, {\n ...triggerAriaProps,\n ...child?.props,\n ref: useMergedRefs(\n getReactElementRef<HTMLButtonElement>(child),\n keyborgListenerCallbackRef,\n // If the target prop is not provided, attach targetRef to the trigger element's ref prop\n positioningOptions.target === undefined ? targetRef : undefined,\n ),\n // eslint-disable-next-line react-hooks/refs\n onPointerEnter: useEventCallback(mergeCallbacks(child?.props?.onPointerEnter, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onPointerLeave: useEventCallback(mergeCallbacks(child?.props?.onPointerLeave, onLeaveTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onFocus: useEventCallback(mergeCallbacks(child?.props?.onFocus, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onBlur: useEventCallback(mergeCallbacks(child?.props?.onBlur, onLeaveTrigger)),\n });\n\n return state;\n};\n"],"names":["React","mergeArrowOffset","resolvePositioningShorthand","usePositioning","useTooltipVisibility_unstable","useTooltipVisibility","useFluent_unstable","useFluent","KEYBORG_FOCUSIN","useIsNavigatingWithKeyboard","applyTriggerPropsToChildren","useControllableState","useId","useIsomorphicLayoutEffect","useIsSSR","useMergedRefs","getTriggerChild","mergeCallbacks","useEventCallback","slot","getReactElementRef","arrowHeight","tooltipBorderRadius","useTooltipTimeout","Escape","useTooltipBase_unstable","props","child","context","isServerSideRender","targetDocument","visible","setVisibleInternal","state","initialState","hidden","setHidden","useState","children","content","withArrow","positioning","onVisibleChange","relationship","showDelay","hideDelay","mountNode","shouldRenderTooltip","components","always","defaultProps","role","elementType","id","resolvedPositioning","onPositioningEnd","event","escaped","referenceHidden","detail","positioningOptions","enabled","arrowPadding","position","align","offset","targetRef","containerRef","arrowRef","setDelayTimeout","clearDelayTimeout","setVisible","useCallback","ev","data","oldVisible","ref","thisTooltip","hide","undefined","documentKeyboardEvent","visibleTooltip","onDocumentKeyDown","key","defaultPrevented","preventDefault","addEventListener","capture","onDocumentVisibilityChange","visibilityState","removeEventListener","ignoreNextFocusEventRef","useRef","onEnterTrigger","type","current","delay","persist","isNavigatingWithKeyboard","keyborgListenerCallbackRef","onKeyborgFocusIn","isFocusedProgrammatically","element","onLeaveTrigger","activeElement","target","onPointerEnter","onPointerLeave","onFocus","onBlur","triggerAriaProps","isPopupExpanded"],"mappings":"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"}
@@ -54,6 +54,10 @@ const useStyles = /*#__PURE__*/__styles({
54
54
  visible: {
55
55
  mc9l5x: "ftgm304"
56
56
  },
57
+ hidden: {
58
+ Bcdw1i0: "fd7fpy0",
59
+ Bkecrkj: "f1aehjj5"
60
+ },
57
61
  inverted: {
58
62
  De3pzq: "fg3r6xk",
59
63
  sj55zd: "fonrgv7"
@@ -115,7 +119,7 @@ const useStyles = /*#__PURE__*/__styles({
115
119
  p: -2
116
120
  }], [".f1bzqsji{padding:4px 11px 6px 11px;}", {
117
121
  p: -1
118
- }], ".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".f19n0e5{color:var(--colorNeutralForeground1);}", ".fxeb0a7{filter:drop-shadow(0 0 2px var(--colorNeutralShadowAmbient)) drop-shadow(0 4px 8px var(--colorNeutralShadowKey));}", ".ftgm304{display:block;}", ".fg3r6xk{background-color:var(--colorNeutralBackgroundStatic);}", ".fonrgv7{color:var(--colorNeutralForegroundStaticInverted);}", ".f1euv43f{position:absolute;}", ".f1bsuimh{z-index:-1;}", ".f1s3jn22{--fui-positioning-arrow-height:8.484px;}", ".fv40uqz{--fui-positioning-arrow-offset:-4.242px;}", ".f1u2r49w{background-color:inherit;}", ".fqhgnl{background-clip:content-box;}", ".f17bz04i{border-bottom-left-radius:var(--borderRadiusSmall);}", ".f36o3x3{transform:rotate(var(--fui-positioning-arrow-angle));}", ".fzofk8q{height:var(--fui-positioning-arrow-height);}", ".f1wbx1ie{width:var(--fui-positioning-arrow-height);}", ".f1wl9k8s::before{content:\"\";}", ".f1aocrix::before{display:block;}", ".f1ljr5q2::before{background-color:inherit;}", [".f155f1qt::before{margin:-1px;}", {
122
+ }], ".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".f19n0e5{color:var(--colorNeutralForeground1);}", ".fxeb0a7{filter:drop-shadow(0 0 2px var(--colorNeutralShadowAmbient)) drop-shadow(0 4px 8px var(--colorNeutralShadowKey));}", ".ftgm304{display:block;}", ".fd7fpy0{visibility:hidden;}", ".f1aehjj5{pointer-events:none;}", ".fg3r6xk{background-color:var(--colorNeutralBackgroundStatic);}", ".fonrgv7{color:var(--colorNeutralForegroundStaticInverted);}", ".f1euv43f{position:absolute;}", ".f1bsuimh{z-index:-1;}", ".f1s3jn22{--fui-positioning-arrow-height:8.484px;}", ".fv40uqz{--fui-positioning-arrow-offset:-4.242px;}", ".f1u2r49w{background-color:inherit;}", ".fqhgnl{background-clip:content-box;}", ".f17bz04i{border-bottom-left-radius:var(--borderRadiusSmall);}", ".f36o3x3{transform:rotate(var(--fui-positioning-arrow-angle));}", ".fzofk8q{height:var(--fui-positioning-arrow-height);}", ".f1wbx1ie{width:var(--fui-positioning-arrow-height);}", ".f1wl9k8s::before{content:\"\";}", ".f1aocrix::before{display:block;}", ".f1ljr5q2::before{background-color:inherit;}", [".f155f1qt::before{margin:-1px;}", {
119
123
  p: -1
120
124
  }], ".f9mhzq7::before{width:100%;}", ".fr6rhvx::before{height:100%;}", [".f1kc0wz4::before{border:1px solid var(--colorTransparentStroke);}", {
121
125
  p: -2
@@ -125,11 +129,9 @@ const useStyles = /*#__PURE__*/__styles({
125
129
  * Apply styling to the Tooltip slots based on the state
126
130
  */
127
131
  export const useTooltipStyles_unstable = state => {
128
- 'use no memo';
129
-
130
132
  const styles = useStyles();
131
133
  // eslint-disable-next-line react-hooks/immutability
132
- state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.content.className);
134
+ state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.hidden && styles.hidden, state.content.className);
133
135
  // eslint-disable-next-line react-hooks/immutability
134
136
  state.arrowClassName = styles.arrow;
135
137
  return state;
@@ -1 +1 @@
1
- {"version":3,"names":["__styles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","mc9l5x","B7ck84d","B2u0y6b","Bceei9c","Bahqtrf","Be2twd7","Bg96gwp","Btd35i7","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","De3pzq","sj55zd","Bhu2qc9","visible","inverted","arrow","qhf8xq","Bj3rh1h","rhnwrx","Bdy53xb","B2eet1l","Bz10aip","Bqenvij","a9b677","Ftih45","Br0sdwz","cmx5o7","susq4k","Biibvgv","Bicfajf","qehafq","Brs5u8j","Ccq8qp","Baz25je","Bcgcnre","Bqjgrrk","qa3bma","y0oebl","Biqmznv","Bm6vgfq","Bbv0w2i","uvfttm","eqrjj","Bk5zm6e","m598lv","B4f6apu","ydt019","Bq4z7u6","Bdkvgpv","B0qfbqy","kj8mxx","r59vdv","Bkw5xw4","hl6cv3","aea9ga","yayu3t","Bhsv975","rhl9o9","B7gxrvb","B6q6orb","B0lu1f8","d","p","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"sources":["useTooltipStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nexport const tooltipClassNames = {\n content: 'fui-Tooltip__content'\n};\n/**\n * Styles for the tooltip\n */ const useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px',\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter: `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` + `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`\n },\n visible: {\n display: 'block'\n },\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted\n },\n arrow: createArrowStyles({\n arrowHeight\n })\n});\n/**\n * Apply styling to the Tooltip slots based on the state\n */ export const useTooltipStyles_unstable = (state)=>{\n 'use no memo';\n const styles = useStyles();\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.content.className);\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n return state;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,QAAQ,qBAAqB;AACjD,OAAO,MAAMC,iBAAiB,GAAG;EAC7BC,OAAO,EAAE;AACb,CAAC;AACD;AACA;AACA;AAAI,MAAMC,SAAS,gBAAGP,QAAA;EAAAQ,IAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;EAAAC,OAAA;IAAAtC,MAAA;EAAA;EAAAuC,QAAA;IAAAJ,MAAA;IAAAC,MAAA;EAAA;EAAAI,KAAA;IAAAvC,OAAA;IAAAwC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAT,MAAA;IAAAU,OAAA;IAAArC,OAAA;IAAAsC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,KAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CA4BrB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMC,yBAAyB,GAAIC,KAAK,IAAG;EAClD,aAAa;;EACb,MAAMC,MAAM,GAAG5F,SAAS,CAAC,CAAC;EAC1B;EACA2F,KAAK,CAAC5F,OAAO,CAAC8F,SAAS,GAAGnG,YAAY,CAACI,iBAAiB,CAACC,OAAO,EAAE6F,MAAM,CAAC3F,IAAI,EAAE0F,KAAK,CAACG,UAAU,KAAK,UAAU,IAAIF,MAAM,CAACnD,QAAQ,EAAEkD,KAAK,CAACnD,OAAO,IAAIoD,MAAM,CAACpD,OAAO,EAAEmD,KAAK,CAAC5F,OAAO,CAAC8F,SAAS,CAAC;EAC5L;EACAF,KAAK,CAACI,cAAc,GAAGH,MAAM,CAAClD,KAAK;EACnC,OAAOiD,KAAK;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__styles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","mc9l5x","B7ck84d","B2u0y6b","Bceei9c","Bahqtrf","Be2twd7","Bg96gwp","Btd35i7","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","De3pzq","sj55zd","Bhu2qc9","visible","hidden","Bcdw1i0","Bkecrkj","inverted","arrow","qhf8xq","Bj3rh1h","rhnwrx","Bdy53xb","B2eet1l","Bz10aip","Bqenvij","a9b677","Ftih45","Br0sdwz","cmx5o7","susq4k","Biibvgv","Bicfajf","qehafq","Brs5u8j","Ccq8qp","Baz25je","Bcgcnre","Bqjgrrk","qa3bma","y0oebl","Biqmznv","Bm6vgfq","Bbv0w2i","uvfttm","eqrjj","Bk5zm6e","m598lv","B4f6apu","ydt019","Bq4z7u6","Bdkvgpv","B0qfbqy","kj8mxx","r59vdv","Bkw5xw4","hl6cv3","aea9ga","yayu3t","Bhsv975","rhl9o9","B7gxrvb","B6q6orb","B0lu1f8","d","p","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"sources":["useTooltipStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nexport const tooltipClassNames = {\n content: 'fui-Tooltip__content'\n};\n/**\n * Styles for the tooltip\n */ const useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px',\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter: `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` + `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`\n },\n visible: {\n display: 'block'\n },\n hidden: {\n visibility: 'hidden',\n pointerEvents: 'none'\n },\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted\n },\n arrow: createArrowStyles({\n arrowHeight\n })\n});\n/**\n * Apply styling to the Tooltip slots based on the state\n */ export const useTooltipStyles_unstable = (state)=>{\n const styles = useStyles();\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.hidden && styles.hidden, state.content.className);\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n return state;\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,QAAQ,qBAAqB;AACjD,OAAO,MAAMC,iBAAiB,GAAG;EAC7BC,OAAO,EAAE;AACb,CAAC;AACD;AACA;AACA;AAAI,MAAMC,SAAS,gBAAGP,QAAA;EAAAQ,IAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;EAAAC,OAAA;IAAAtC,MAAA;EAAA;EAAAuC,MAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAC,QAAA;IAAAP,MAAA;IAAAC,MAAA;EAAA;EAAAO,KAAA;IAAA1C,OAAA;IAAA2C,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAZ,MAAA;IAAAa,OAAA;IAAAxC,OAAA;IAAAyC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,KAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAgCrB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMC,yBAAyB,GAAIC,KAAK,IAAG;EAClD,MAAMC,MAAM,GAAG/F,SAAS,CAAC,CAAC;EAC1B;EACA8F,KAAK,CAAC/F,OAAO,CAACiG,SAAS,GAAGtG,YAAY,CAACI,iBAAiB,CAACC,OAAO,EAAEgG,MAAM,CAAC9F,IAAI,EAAE6F,KAAK,CAACG,UAAU,KAAK,UAAU,IAAIF,MAAM,CAACnD,QAAQ,EAAEkD,KAAK,CAACtD,OAAO,IAAIuD,MAAM,CAACvD,OAAO,EAAEsD,KAAK,CAACrD,MAAM,IAAIsD,MAAM,CAACtD,MAAM,EAAEqD,KAAK,CAAC/F,OAAO,CAACiG,SAAS,CAAC;EAC3N;EACAF,KAAK,CAACI,cAAc,GAAGH,MAAM,CAAClD,KAAK;EACnC,OAAOiD,KAAK;AAChB,CAAC","ignoreList":[]}
@@ -29,6 +29,10 @@ export const tooltipClassNames = {
29
29
  visible: {
30
30
  display: 'block'
31
31
  },
32
+ hidden: {
33
+ visibility: 'hidden',
34
+ pointerEvents: 'none'
35
+ },
32
36
  inverted: {
33
37
  backgroundColor: tokens.colorNeutralBackgroundStatic,
34
38
  color: tokens.colorNeutralForegroundStaticInverted
@@ -40,10 +44,9 @@ export const tooltipClassNames = {
40
44
  /**
41
45
  * Apply styling to the Tooltip slots based on the state
42
46
  */ export const useTooltipStyles_unstable = (state)=>{
43
- 'use no memo';
44
47
  const styles = useStyles();
45
48
  // eslint-disable-next-line react-hooks/immutability
46
- state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.content.className);
49
+ state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.hidden && styles.hidden, state.content.className);
47
50
  // eslint-disable-next-line react-hooks/immutability
48
51
  state.arrowClassName = styles.arrow;
49
52
  return state;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltipStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nimport type { TooltipSlots, TooltipState } from './Tooltip.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const tooltipClassNames: SlotClassNames<TooltipSlots> = {\n content: 'fui-Tooltip__content',\n};\n\n/**\n * Styles for the tooltip\n */\nconst useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px', // '5px 12px 7px 12px' minus the border width '1px'\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter:\n `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` +\n `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`,\n },\n\n visible: {\n display: 'block',\n },\n\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted,\n },\n\n arrow: createArrowStyles({ arrowHeight }),\n});\n\n/**\n * Apply styling to the Tooltip slots based on the state\n */\nexport const useTooltipStyles_unstable = (state: TooltipState): TooltipState => {\n 'use no memo';\n\n const styles = useStyles();\n\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(\n tooltipClassNames.content,\n styles.root,\n state.appearance === 'inverted' && styles.inverted,\n state.visible && styles.visible,\n state.content.className,\n );\n\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n\n return state;\n};\n"],"names":["makeStyles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","display","boxSizing","maxWidth","cursor","fontFamily","fontFamilyBase","fontSize","fontSizeBase200","lineHeight","lineHeightBase200","overflowWrap","borderRadius","borderRadiusMedium","border","colorTransparentStroke","padding","backgroundColor","colorNeutralBackground1","color","colorNeutralForeground1","filter","colorNeutralShadowAmbient","colorNeutralShadowKey","visible","inverted","colorNeutralBackgroundStatic","colorNeutralForegroundStaticInverted","arrow","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"mappings":"AAAA;AAEA,SAASA,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,WAAW,QAAQ,sBAAsB;AAIlD,OAAO,MAAMC,oBAAkD;IAC7DC,SAAS;AACX,EAAE;AAEF;;CAEC,GACD,MAAMC,YAAYP,WAAW;IAC3BQ,MAAM;QACJC,SAAS;QACTC,WAAW;QACXC,UAAU;QACVC,QAAQ;QACRC,YAAYV,OAAOW,cAAc;QACjCC,UAAUZ,OAAOa,eAAe;QAChCC,YAAYd,OAAOe,iBAAiB;QACpCC,cAAc;QACdC,cAAcjB,OAAOkB,kBAAkB;QACvCC,QAAQ,CAAC,UAAU,EAAEnB,OAAOoB,sBAAsB,EAAE;QACpDC,SAAS;QACTC,iBAAiBtB,OAAOuB,uBAAuB;QAC/CC,OAAOxB,OAAOyB,uBAAuB;QAErC,uFAAuF;QACvFC,QACE,CAAC,oBAAoB,EAAE1B,OAAO2B,yBAAyB,CAAC,EAAE,CAAC,GAC3D,CAAC,sBAAsB,EAAE3B,OAAO4B,qBAAqB,CAAC,CAAC,CAAC;IAC5D;IAEAC,SAAS;QACPvB,SAAS;IACX;IAEAwB,UAAU;QACRR,iBAAiBtB,OAAO+B,4BAA4B;QACpDP,OAAOxB,OAAOgC,oCAAoC;IACpD;IAEAC,OAAOlC,kBAAkB;QAAEE;IAAY;AACzC;AAEA;;CAEC,GACD,OAAO,MAAMiC,4BAA4B,CAACC;IACxC;IAEA,MAAMC,SAAShC;IAEf,oDAAoD;IACpD+B,MAAMhC,OAAO,CAACkC,SAAS,GAAGvC,aACxBI,kBAAkBC,OAAO,EACzBiC,OAAO/B,IAAI,EACX8B,MAAMG,UAAU,KAAK,cAAcF,OAAON,QAAQ,EAClDK,MAAMN,OAAO,IAAIO,OAAOP,OAAO,EAC/BM,MAAMhC,OAAO,CAACkC,SAAS;IAGzB,oDAAoD;IACpDF,MAAMI,cAAc,GAAGH,OAAOH,KAAK;IAEnC,OAAOE;AACT,EAAE"}
1
+ {"version":3,"sources":["../src/components/Tooltip/useTooltipStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nimport type { TooltipSlots, TooltipState } from './Tooltip.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const tooltipClassNames: SlotClassNames<TooltipSlots> = {\n content: 'fui-Tooltip__content',\n};\n\n/**\n * Styles for the tooltip\n */\nconst useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px', // '5px 12px 7px 12px' minus the border width '1px'\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter:\n `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` +\n `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`,\n },\n\n visible: {\n display: 'block',\n },\n\n hidden: {\n visibility: 'hidden',\n pointerEvents: 'none',\n },\n\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted,\n },\n\n arrow: createArrowStyles({ arrowHeight }),\n});\n\n/**\n * Apply styling to the Tooltip slots based on the state\n */\nexport const useTooltipStyles_unstable = (state: TooltipState): TooltipState => {\n const styles = useStyles();\n\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(\n tooltipClassNames.content,\n styles.root,\n state.appearance === 'inverted' && styles.inverted,\n state.visible && styles.visible,\n state.hidden && styles.hidden,\n state.content.className,\n );\n\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n\n return state;\n};\n"],"names":["makeStyles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","display","boxSizing","maxWidth","cursor","fontFamily","fontFamilyBase","fontSize","fontSizeBase200","lineHeight","lineHeightBase200","overflowWrap","borderRadius","borderRadiusMedium","border","colorTransparentStroke","padding","backgroundColor","colorNeutralBackground1","color","colorNeutralForeground1","filter","colorNeutralShadowAmbient","colorNeutralShadowKey","visible","hidden","visibility","pointerEvents","inverted","colorNeutralBackgroundStatic","colorNeutralForegroundStaticInverted","arrow","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"mappings":"AAAA;AAEA,SAASA,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,WAAW,QAAQ,sBAAsB;AAIlD,OAAO,MAAMC,oBAAkD;IAC7DC,SAAS;AACX,EAAE;AAEF;;CAEC,GACD,MAAMC,YAAYP,WAAW;IAC3BQ,MAAM;QACJC,SAAS;QACTC,WAAW;QACXC,UAAU;QACVC,QAAQ;QACRC,YAAYV,OAAOW,cAAc;QACjCC,UAAUZ,OAAOa,eAAe;QAChCC,YAAYd,OAAOe,iBAAiB;QACpCC,cAAc;QACdC,cAAcjB,OAAOkB,kBAAkB;QACvCC,QAAQ,CAAC,UAAU,EAAEnB,OAAOoB,sBAAsB,EAAE;QACpDC,SAAS;QACTC,iBAAiBtB,OAAOuB,uBAAuB;QAC/CC,OAAOxB,OAAOyB,uBAAuB;QAErC,uFAAuF;QACvFC,QACE,CAAC,oBAAoB,EAAE1B,OAAO2B,yBAAyB,CAAC,EAAE,CAAC,GAC3D,CAAC,sBAAsB,EAAE3B,OAAO4B,qBAAqB,CAAC,CAAC,CAAC;IAC5D;IAEAC,SAAS;QACPvB,SAAS;IACX;IAEAwB,QAAQ;QACNC,YAAY;QACZC,eAAe;IACjB;IAEAC,UAAU;QACRX,iBAAiBtB,OAAOkC,4BAA4B;QACpDV,OAAOxB,OAAOmC,oCAAoC;IACpD;IAEAC,OAAOrC,kBAAkB;QAAEE;IAAY;AACzC;AAEA;;CAEC,GACD,OAAO,MAAMoC,4BAA4B,CAACC;IACxC,MAAMC,SAASnC;IAEf,oDAAoD;IACpDkC,MAAMnC,OAAO,CAACqC,SAAS,GAAG1C,aACxBI,kBAAkBC,OAAO,EACzBoC,OAAOlC,IAAI,EACXiC,MAAMG,UAAU,KAAK,cAAcF,OAAON,QAAQ,EAClDK,MAAMT,OAAO,IAAIU,OAAOV,OAAO,EAC/BS,MAAMR,MAAM,IAAIS,OAAOT,MAAM,EAC7BQ,MAAMnC,OAAO,CAACqC,SAAS;IAGzB,oDAAoD;IACpDF,MAAMI,cAAc,GAAGH,OAAOH,KAAK;IAEnC,OAAOE;AACT,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/Tooltip.types.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { PositioningShorthand } from '@fluentui/react-positioning';\nimport type { ComponentProps, ComponentState, JSXElement, Slot, TriggerProps } from '@fluentui/react-utilities';\nimport type { PortalProps } from '@fluentui/react-portal';\n\n/**\n * Slot properties for Tooltip\n */\nexport type TooltipSlots = {\n /**\n * The text or JSX content of the tooltip.\n */\n content: NonNullable<Slot<'div'>>;\n};\n\n/**\n * The properties that are added to the child of the Tooltip\n */\nexport type TooltipChildProps = {\n ref?: React.Ref<unknown>;\n} & Pick<\n React.HTMLAttributes<HTMLElement>,\n | 'aria-describedby'\n | 'aria-label'\n | 'aria-labelledby'\n | 'onBlur'\n | 'onFocus'\n | 'onPointerEnter'\n | 'onPointerLeave'\n | 'aria-haspopup'\n | 'aria-expanded'\n>;\n\n/**\n * Data for the Tooltip's onVisibleChange event.\n */\nexport type OnVisibleChangeData = {\n visible: boolean;\n\n /**\n * The event object, if this visibility change was triggered by a keyboard event on the document element\n * (such as Escape to hide the visible tooltip). Otherwise undefined.\n */\n documentKeyboardEvent?: KeyboardEvent;\n};\n\n/**\n * Properties for Tooltip\n */\nexport type TooltipProps = ComponentProps<TooltipSlots> &\n TriggerProps<TooltipChildProps> &\n Pick<PortalProps, 'mountNode'> & {\n /**\n * The tooltip's visual appearance.\n * * `normal` - Uses the theme's background and text colors.\n * * `inverted` - Higher contrast variant that uses the theme's inverted colors.\n *\n * @default normal\n */\n appearance?: 'normal' | 'inverted';\n /**\n * Delay before the tooltip is hidden, in milliseconds.\n *\n * @default 250\n */\n hideDelay?: number;\n\n /**\n * Notification when the visibility of the tooltip is changing.\n *\n * **Note**: for backwards compatibility, `event` will be undefined if this was triggered by a keyboard event on\n * the document element. Use `data.documentKeyboardEvent` if the keyboard event object is needed.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onVisibleChange?: (\n event: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined,\n data: OnVisibleChangeData,\n ) => void;\n\n /**\n * Configure the positioning of the tooltip\n *\n * @default above\n */\n positioning?: PositioningShorthand;\n\n /**\n * (Required) Specifies whether this tooltip is acting as the description or label of its trigger element.\n *\n * * `label` - The tooltip sets the trigger's aria-label or aria-labelledby attribute. This is useful for buttons\n * displaying only an icon, for example.\n * * `description` - The tooltip sets the trigger's aria-description or aria-describedby attribute.\n * * `inaccessible` - No aria attributes are set on the trigger. This makes the tooltip's content inaccessible to\n * screen readers, and should only be used if the tooltip's text is available by some other means.\n */\n relationship: 'label' | 'description' | 'inaccessible';\n\n /**\n * Delay before the tooltip is shown, in milliseconds.\n *\n * @default 250\n */\n showDelay?: number;\n\n /**\n * Control the tooltip's visibility programatically.\n *\n * This can be used in conjunction with onVisibleChange to modify the tooltip's show and hide behavior.\n *\n * If not provided, the visibility will be controlled by the tooltip itself, based on hover and focus events on the\n * trigger (child) element.\n *\n * @default false\n */\n visible?: boolean;\n\n /**\n * Render an arrow pointing to the target element\n *\n * @default false\n */\n withArrow?: boolean;\n };\n\nexport type TooltipBaseProps = Omit<TooltipProps, 'appearance'>;\n\n/**\n * State used in rendering Tooltip\n */\nexport type TooltipState = ComponentState<TooltipSlots> &\n Pick<TooltipProps, 'mountNode' | 'relationship'> &\n Required<Pick<TooltipProps, 'appearance' | 'hideDelay' | 'positioning' | 'showDelay' | 'visible' | 'withArrow'>> & {\n children?: JSXElement | null;\n\n /**\n * Whether the tooltip should be rendered to the DOM.\n */\n shouldRenderTooltip?: boolean;\n\n /**\n * Ref to the arrow element\n */\n arrowRef?: React.Ref<HTMLDivElement>;\n\n /**\n * CSS class for the arrow element\n */\n arrowClassName?: string;\n };\n\nexport type TooltipBaseState = Omit<TooltipState, 'appearance'>;\n"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../src/components/Tooltip/Tooltip.types.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { PositioningShorthand } from '@fluentui/react-positioning';\nimport type { ComponentProps, ComponentState, JSXElement, Slot, TriggerProps } from '@fluentui/react-utilities';\nimport type { PortalProps } from '@fluentui/react-portal';\n\n/**\n * Slot properties for Tooltip\n */\nexport type TooltipSlots = {\n /**\n * The text or JSX content of the tooltip.\n */\n content: NonNullable<Slot<'div'>>;\n};\n\n/**\n * The properties that are added to the child of the Tooltip\n */\nexport type TooltipChildProps = {\n ref?: React.Ref<unknown>;\n} & Pick<\n React.HTMLAttributes<HTMLElement>,\n | 'aria-describedby'\n | 'aria-label'\n | 'aria-labelledby'\n | 'onBlur'\n | 'onFocus'\n | 'onPointerEnter'\n | 'onPointerLeave'\n | 'aria-haspopup'\n | 'aria-expanded'\n>;\n\n/**\n * Data for the Tooltip's onVisibleChange event.\n */\nexport type OnVisibleChangeData = {\n visible: boolean;\n\n /**\n * The event object, if this visibility change was triggered by a keyboard event on the document element\n * (such as Escape to hide the visible tooltip). Otherwise undefined.\n */\n documentKeyboardEvent?: KeyboardEvent;\n};\n\n/**\n * Properties for Tooltip\n */\nexport type TooltipProps = ComponentProps<TooltipSlots> &\n TriggerProps<TooltipChildProps> &\n Pick<PortalProps, 'mountNode'> & {\n /**\n * The tooltip's visual appearance.\n * * `normal` - Uses the theme's background and text colors.\n * * `inverted` - Higher contrast variant that uses the theme's inverted colors.\n *\n * @default normal\n */\n appearance?: 'normal' | 'inverted';\n /**\n * Delay before the tooltip is hidden, in milliseconds.\n *\n * @default 250\n */\n hideDelay?: number;\n\n /**\n * Notification when the visibility of the tooltip is changing.\n *\n * **Note**: for backwards compatibility, `event` will be undefined if this was triggered by a keyboard event on\n * the document element. Use `data.documentKeyboardEvent` if the keyboard event object is needed.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onVisibleChange?: (\n event: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined,\n data: OnVisibleChangeData,\n ) => void;\n\n /**\n * Configure the positioning of the tooltip\n *\n * @default above\n */\n positioning?: PositioningShorthand;\n\n /**\n * (Required) Specifies whether this tooltip is acting as the description or label of its trigger element.\n *\n * * `label` - The tooltip sets the trigger's aria-label or aria-labelledby attribute. This is useful for buttons\n * displaying only an icon, for example.\n * * `description` - The tooltip sets the trigger's aria-description or aria-describedby attribute.\n * * `inaccessible` - No aria attributes are set on the trigger. This makes the tooltip's content inaccessible to\n * screen readers, and should only be used if the tooltip's text is available by some other means.\n */\n relationship: 'label' | 'description' | 'inaccessible';\n\n /**\n * Delay before the tooltip is shown, in milliseconds.\n *\n * @default 250\n */\n showDelay?: number;\n\n /**\n * Control the tooltip's visibility programatically.\n *\n * This can be used in conjunction with onVisibleChange to modify the tooltip's show and hide behavior.\n *\n * If not provided, the visibility will be controlled by the tooltip itself, based on hover and focus events on the\n * trigger (child) element.\n *\n * @default false\n */\n visible?: boolean;\n\n /**\n * Render an arrow pointing to the target element\n *\n * @default false\n */\n withArrow?: boolean;\n };\n\nexport type TooltipBaseProps = Omit<TooltipProps, 'appearance'>;\n\n/**\n * State used in rendering Tooltip\n */\nexport type TooltipState = ComponentState<TooltipSlots> &\n Pick<TooltipProps, 'mountNode' | 'relationship'> &\n Required<Pick<TooltipProps, 'appearance' | 'hideDelay' | 'positioning' | 'showDelay' | 'visible' | 'withArrow'>> & {\n children?: JSXElement | null;\n\n /**\n * Whether positioning has determined that the tooltip or its target is outside its clipping boundary.\n */\n hidden?: boolean;\n\n /**\n * Whether the tooltip should be rendered to the DOM.\n */\n shouldRenderTooltip?: boolean;\n\n /**\n * Ref to the arrow element\n */\n arrowRef?: React.Ref<HTMLDivElement>;\n\n /**\n * CSS class for the arrow element\n */\n arrowClassName?: string;\n };\n\nexport type TooltipBaseState = Omit<TooltipState, 'appearance'>;\n"],"names":[],"mappings":""}
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "useTooltip_unstable", {
11
11
  });
12
12
  const _useTooltipBase = require("./useTooltipBase");
13
13
  const useTooltip_unstable = (props)=>{
14
- 'use no memo';
14
+ 'use no memo'; // justified: compiler would optimize useTooltip_unstable — manual opt-out to preserve runtime behavior
15
15
  const { appearance = 'normal', ...baseProps } = props;
16
16
  const state = (0, _useTooltipBase.useTooltipBase_unstable)(baseProps);
17
17
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltip.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipProps, TooltipState } from './Tooltip.types';\nimport { useTooltipBase_unstable } from './useTooltipBase';\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltip_unstable = (props: TooltipProps): TooltipState => {\n 'use no memo';\n\n const { appearance = 'normal', ...baseProps } = props;\n\n const state = useTooltipBase_unstable(baseProps);\n\n return {\n appearance,\n ...state,\n };\n};\n"],"names":["useTooltipBase_unstable","useTooltip_unstable","props","appearance","baseProps","state"],"mappings":"AAAA;;;;;;;;;;;gCAGwC,mBAAmB;AAUpD,MAAMC,sBAAsB,CAACC;IAClC;IAEA,MAAM,EAAEC,aAAa,QAAQ,EAAE,GAAGC,WAAW,GAAGF;IAEhD,MAAMG,YAAQL,uCAAAA,EAAwBI;IAEtC,OAAO;QACLD;QACA,GAAGE,KAAK;IACV;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/Tooltip/useTooltip.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipProps, TooltipState } from './Tooltip.types';\nimport { useTooltipBase_unstable } from './useTooltipBase';\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltip_unstable = (props: TooltipProps): TooltipState => {\n 'use no memo'; // justified: compiler would optimize useTooltip_unstable — manual opt-out to preserve runtime behavior\n\n const { appearance = 'normal', ...baseProps } = props;\n\n const state = useTooltipBase_unstable(baseProps);\n\n return {\n appearance,\n ...state,\n };\n};\n"],"names":["useTooltipBase_unstable","useTooltip_unstable","props","appearance","baseProps","state"],"mappings":"AAAA;;;;;;;;;;;gCAGwC,mBAAmB;AAUpD,MAAMC,sBAAsB,CAACC;IAClC,eAAe,uGAAuG;IAEtH,MAAM,EAAEC,aAAa,QAAQ,EAAE,GAAGC,WAAW,GAAGF;IAEhD,MAAMG,YAAQL,uCAAAA,EAAwBI;IAEtC,OAAO;QACLD;QACA,GAAGE,KAAK;IACV;AACF,EAAE"}
@@ -19,7 +19,6 @@ const _constants = require("./private/constants");
19
19
  const _useTooltipTimeout = require("./private/useTooltipTimeout");
20
20
  const _keyboardkeys = require("@fluentui/keyboard-keys");
21
21
  const useTooltipBase_unstable = (props)=>{
22
- 'use no memo';
23
22
  var _child_props, _child_props1, _child_props2, _child_props3, _child_props4, _child_props5, _child_props6;
24
23
  const context = (0, _reactsharedcontexts.useTooltipVisibility_unstable)();
25
24
  const isServerSideRender = (0, _reactutilities.useIsSSR)();
@@ -28,6 +27,7 @@ const useTooltipBase_unstable = (props)=>{
28
27
  state: props.visible,
29
28
  initialState: false
30
29
  });
30
+ const [hidden, setHidden] = _react.useState(false);
31
31
  const { children, content, withArrow = false, positioning = 'above', onVisibleChange, relationship, showDelay = 250, hideDelay = 250, mountNode } = props;
32
32
  const state = {
33
33
  withArrow,
@@ -36,6 +36,7 @@ const useTooltipBase_unstable = (props)=>{
36
36
  hideDelay,
37
37
  relationship,
38
38
  visible,
39
+ hidden,
39
40
  shouldRenderTooltip: visible,
40
41
  mountNode,
41
42
  // Slots
@@ -50,13 +51,21 @@ const useTooltipBase_unstable = (props)=>{
50
51
  })
51
52
  };
52
53
  state.content.id = (0, _reactutilities.useId)('tooltip-', state.content.id);
54
+ const resolvedPositioning = (0, _reactpositioning.resolvePositioningShorthand)(state.positioning);
55
+ const onPositioningEnd = (0, _reactutilities.useEventCallback)((event)=>{
56
+ var _resolvedPositioning_onPositioningEnd;
57
+ const { escaped, referenceHidden } = event.detail;
58
+ setHidden(escaped || referenceHidden);
59
+ (_resolvedPositioning_onPositioningEnd = resolvedPositioning.onPositioningEnd) === null || _resolvedPositioning_onPositioningEnd === void 0 ? void 0 : _resolvedPositioning_onPositioningEnd.call(resolvedPositioning, event);
60
+ });
53
61
  const positioningOptions = {
54
62
  enabled: state.visible,
55
63
  arrowPadding: 2 * _constants.tooltipBorderRadius,
56
64
  position: 'above',
57
65
  align: 'center',
58
66
  offset: 4,
59
- ...(0, _reactpositioning.resolvePositioningShorthand)(state.positioning)
67
+ ...resolvedPositioning,
68
+ onPositioningEnd
60
69
  };
61
70
  if (state.withArrow) {
62
71
  positioningOptions.offset = (0, _reactpositioning.mergeArrowOffset)(positioningOptions.offset, _constants.arrowHeight);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltipBase.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { mergeArrowOffset, resolvePositioningShorthand, usePositioning } from '@fluentui/react-positioning';\nimport {\n useTooltipVisibility_unstable as useTooltipVisibility,\n useFluent_unstable as useFluent,\n} from '@fluentui/react-shared-contexts';\nimport type { KeyborgFocusInEvent } from '@fluentui/react-tabster';\nimport { KEYBORG_FOCUSIN, useIsNavigatingWithKeyboard } from '@fluentui/react-tabster';\nimport {\n applyTriggerPropsToChildren,\n useControllableState,\n useId,\n useIsomorphicLayoutEffect,\n useIsSSR,\n useMergedRefs,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n slot,\n getReactElementRef,\n} from '@fluentui/react-utilities';\nimport type { TooltipBaseProps, TooltipBaseState, TooltipChildProps, OnVisibleChangeData } from './Tooltip.types';\nimport { arrowHeight, tooltipBorderRadius } from './private/constants';\nimport { useTooltipTimeout } from './private/useTooltipTimeout';\nimport { Escape } from '@fluentui/keyboard-keys';\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltipBase_unstable = (props: TooltipBaseProps): TooltipBaseState => {\n 'use no memo';\n\n const context = useTooltipVisibility();\n const isServerSideRender = useIsSSR();\n const { targetDocument } = useFluent();\n\n const [visible, setVisibleInternal] = useControllableState({ state: props.visible, initialState: false });\n\n const {\n children,\n content,\n withArrow = false,\n positioning = 'above',\n onVisibleChange,\n relationship,\n showDelay = 250,\n hideDelay = 250,\n mountNode,\n } = props;\n\n const state: TooltipBaseState = {\n withArrow,\n positioning,\n showDelay,\n hideDelay,\n relationship,\n visible,\n shouldRenderTooltip: visible,\n mountNode,\n // Slots\n components: {\n content: 'div',\n },\n content: slot.always(content, {\n defaultProps: {\n role: 'tooltip',\n },\n elementType: 'div',\n }),\n };\n\n state.content.id = useId('tooltip-', state.content.id);\n\n const positioningOptions = {\n enabled: state.visible,\n arrowPadding: 2 * tooltipBorderRadius,\n position: 'above' as const,\n align: 'center' as const,\n offset: 4,\n ...resolvePositioningShorthand(state.positioning),\n };\n\n if (state.withArrow) {\n positioningOptions.offset = mergeArrowOffset(positioningOptions.offset, arrowHeight);\n }\n\n const {\n targetRef,\n containerRef,\n arrowRef,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n targetRef: React.MutableRefObject<unknown>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n containerRef: React.MutableRefObject<HTMLDivElement>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n arrowRef: React.MutableRefObject<HTMLDivElement>;\n } = usePositioning(positioningOptions);\n\n const [setDelayTimeout, clearDelayTimeout] = useTooltipTimeout(containerRef);\n\n const setVisible = React.useCallback(\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined, data: OnVisibleChangeData) => {\n clearDelayTimeout();\n setVisibleInternal(oldVisible => {\n if (data.visible !== oldVisible) {\n onVisibleChange?.(ev, data);\n }\n return data.visible;\n });\n },\n [clearDelayTimeout, setVisibleInternal, onVisibleChange],\n );\n\n state.content.ref = useMergedRefs(state.content.ref, containerRef);\n state.arrowRef = arrowRef;\n\n // When this tooltip is visible, hide any other tooltips, and register it\n // as the visibleTooltip with the TooltipContext.\n // Also add a listener on document to hide the tooltip if Escape is pressed\n useIsomorphicLayoutEffect(() => {\n if (visible) {\n const thisTooltip = {\n hide: (ev?: KeyboardEvent) => setVisible(undefined, { visible: false, documentKeyboardEvent: ev }),\n };\n\n context.visibleTooltip?.hide();\n // eslint-disable-next-line react-hooks/immutability\n context.visibleTooltip = thisTooltip;\n\n const onDocumentKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === Escape && !ev.defaultPrevented) {\n thisTooltip.hide(ev);\n // stop propagation to avoid conflicting with other elements that listen for `Escape`\n // e,g: Dialog, Popover, Menu and Tooltip\n ev.preventDefault();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, {\n // As this event is added at targeted document,\n // we need to capture the event to be sure keydown handling from tooltip happens first\n capture: true,\n });\n\n // Dismiss the tooltip when the document becomes hidden (e.g. tab backgrounded,\n // app switched on mobile). The original trigger (hover/tap/focus) is no longer\n // active in this case, so persisting the tooltip is a stale UI state.\n const onDocumentVisibilityChange = () => {\n if (targetDocument?.visibilityState === 'hidden') {\n thisTooltip.hide();\n }\n };\n\n targetDocument?.addEventListener('visibilitychange', onDocumentVisibilityChange);\n\n return () => {\n if (context.visibleTooltip === thisTooltip) {\n context.visibleTooltip = undefined;\n }\n\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n targetDocument?.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n };\n }\n }, [context, targetDocument, visible, setVisible]);\n\n // Used to skip showing the tooltip in certain situations when the trigger is focused.\n // See comments where this is set for more info.\n const ignoreNextFocusEventRef = React.useRef(false);\n\n // Listener for onPointerEnter and onFocus on the trigger element\n const onEnterTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n if (ev.type === 'focus' && ignoreNextFocusEventRef.current) {\n ignoreNextFocusEventRef.current = false;\n return;\n }\n\n // Show immediately if another tooltip is already visible\n const delay = context.visibleTooltip ? 0 : state.showDelay;\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: true });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.showDelay, context],\n );\n\n const isNavigatingWithKeyboard = useIsNavigatingWithKeyboard();\n\n // Callback ref that attaches a keyborg:focusin event listener.\n const [keyborgListenerCallbackRef] = React.useState(() => {\n const onKeyborgFocusIn = ((ev: KeyborgFocusInEvent) => {\n // Skip showing the tooltip if focus moved programmatically.\n // For example, we don't want to show the tooltip when a dialog is closed\n // and Tabster programmatically restores focus to the trigger button.\n // See https://github.com/microsoft/fluentui/issues/27576\n if (ev.detail?.isFocusedProgrammatically && !isNavigatingWithKeyboard()) {\n ignoreNextFocusEventRef.current = true;\n }\n }) as EventListener;\n\n // Save the current element to remove the listener when the ref changes\n let current: Element | null = null;\n\n // Callback ref that attaches the listener to the element\n return (element: Element | null) => {\n current?.removeEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n element?.addEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n current = element;\n };\n });\n\n // Listener for onPointerLeave and onBlur on the trigger element\n const onLeaveTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n let delay = state.hideDelay;\n\n if (ev.type === 'blur') {\n // Hide immediately when losing focus\n delay = 0;\n\n // The focused element gets a blur event when the document loses focus\n // (e.g. switching tabs in the browser), but we don't want to show the\n // tooltip again when the document gets focus back. Handle this case by\n // checking if the blurred element is still the document's activeElement.\n // See https://github.com/microsoft/fluentui/issues/13541\n ignoreNextFocusEventRef.current = targetDocument?.activeElement === ev.target;\n }\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: false });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.hideDelay, targetDocument],\n );\n\n // Cancel the hide timer when the mouse or focus enters the tooltip, and restart it when the mouse or focus leaves.\n // This keeps the tooltip visible when the mouse is moved over it, or it has focus within.\n // eslint-disable-next-line react-hooks/immutability\n state.content.onPointerEnter = mergeCallbacks(state.content.onPointerEnter, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onPointerLeave = mergeCallbacks(state.content.onPointerLeave, onLeaveTrigger);\n // eslint-disable-next-line react-hooks/immutability\n state.content.onFocus = mergeCallbacks(state.content.onFocus, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onBlur = mergeCallbacks(state.content.onBlur, onLeaveTrigger);\n\n const child = getTriggerChild(children);\n\n const triggerAriaProps: Pick<TooltipChildProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby'> = {};\n const isPopupExpanded =\n child?.props?.['aria-haspopup'] &&\n (child?.props?.['aria-expanded'] === true || child?.props?.['aria-expanded'] === 'true');\n\n if (relationship === 'label') {\n // aria-label only works if the content is a string. Otherwise, need to use aria-labelledby.\n if (typeof state.content.children === 'string') {\n triggerAriaProps['aria-label'] = state.content.children;\n } else {\n triggerAriaProps['aria-labelledby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-labelledby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n } else if (relationship === 'description') {\n triggerAriaProps['aria-describedby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-describedby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n\n // Case 1: Don't render the Tooltip in SSR to avoid hydration errors\n // Case 2: Don't render the Tooltip, if it triggers Menu or another popup and it's already opened\n if (isServerSideRender || isPopupExpanded) {\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = false;\n }\n\n // Apply the trigger props to the child, either by calling the render function, or cloning with the new props\n // eslint-disable-next-line react-hooks/immutability\n state.children = applyTriggerPropsToChildren(children, {\n ...triggerAriaProps,\n ...child?.props,\n ref: useMergedRefs(\n getReactElementRef<HTMLButtonElement>(child),\n keyborgListenerCallbackRef,\n // If the target prop is not provided, attach targetRef to the trigger element's ref prop\n positioningOptions.target === undefined ? targetRef : undefined,\n ),\n // eslint-disable-next-line react-hooks/refs\n onPointerEnter: useEventCallback(mergeCallbacks(child?.props?.onPointerEnter, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onPointerLeave: useEventCallback(mergeCallbacks(child?.props?.onPointerLeave, onLeaveTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onFocus: useEventCallback(mergeCallbacks(child?.props?.onFocus, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onBlur: useEventCallback(mergeCallbacks(child?.props?.onBlur, onLeaveTrigger)),\n });\n\n return state;\n};\n"],"names":["React","mergeArrowOffset","resolvePositioningShorthand","usePositioning","useTooltipVisibility_unstable","useTooltipVisibility","useFluent_unstable","useFluent","KEYBORG_FOCUSIN","useIsNavigatingWithKeyboard","applyTriggerPropsToChildren","useControllableState","useId","useIsomorphicLayoutEffect","useIsSSR","useMergedRefs","getTriggerChild","mergeCallbacks","useEventCallback","slot","getReactElementRef","arrowHeight","tooltipBorderRadius","useTooltipTimeout","Escape","useTooltipBase_unstable","props","child","context","isServerSideRender","targetDocument","visible","setVisibleInternal","state","initialState","children","content","withArrow","positioning","onVisibleChange","relationship","showDelay","hideDelay","mountNode","shouldRenderTooltip","components","always","defaultProps","role","elementType","id","positioningOptions","enabled","arrowPadding","position","align","offset","targetRef","containerRef","arrowRef","setDelayTimeout","clearDelayTimeout","setVisible","useCallback","ev","data","oldVisible","ref","thisTooltip","hide","undefined","documentKeyboardEvent","visibleTooltip","onDocumentKeyDown","key","defaultPrevented","preventDefault","addEventListener","capture","onDocumentVisibilityChange","visibilityState","removeEventListener","ignoreNextFocusEventRef","useRef","onEnterTrigger","type","current","delay","persist","isNavigatingWithKeyboard","keyborgListenerCallbackRef","useState","onKeyborgFocusIn","detail","isFocusedProgrammatically","element","onLeaveTrigger","activeElement","target","onPointerEnter","onPointerLeave","onFocus","onBlur","triggerAriaProps","isPopupExpanded"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/Tooltip/useTooltipBase.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { mergeArrowOffset, resolvePositioningShorthand, usePositioning } from '@fluentui/react-positioning';\nimport type { PositioningProps } from '@fluentui/react-positioning';\nimport {\n useTooltipVisibility_unstable as useTooltipVisibility,\n useFluent_unstable as useFluent,\n} from '@fluentui/react-shared-contexts';\nimport type { KeyborgFocusInEvent } from '@fluentui/react-tabster';\nimport { KEYBORG_FOCUSIN, useIsNavigatingWithKeyboard } from '@fluentui/react-tabster';\nimport {\n applyTriggerPropsToChildren,\n useControllableState,\n useId,\n useIsomorphicLayoutEffect,\n useIsSSR,\n useMergedRefs,\n getTriggerChild,\n mergeCallbacks,\n useEventCallback,\n slot,\n getReactElementRef,\n} from '@fluentui/react-utilities';\nimport type { TooltipBaseProps, TooltipBaseState, TooltipChildProps, OnVisibleChangeData } from './Tooltip.types';\nimport { arrowHeight, tooltipBorderRadius } from './private/constants';\nimport { useTooltipTimeout } from './private/useTooltipTimeout';\nimport { Escape } from '@fluentui/keyboard-keys';\n\ntype OnPositioningEndEvent = Parameters<Exclude<PositioningProps['onPositioningEnd'], undefined>>[0];\n\n/**\n * Create the state required to render Tooltip.\n *\n * The returned state can be modified with hooks such as useTooltipStyles_unstable,\n * before being passed to renderTooltip_unstable.\n *\n * @param props - props from this instance of Tooltip\n */\nexport const useTooltipBase_unstable = (props: TooltipBaseProps): TooltipBaseState => {\n const context = useTooltipVisibility();\n const isServerSideRender = useIsSSR();\n const { targetDocument } = useFluent();\n\n const [visible, setVisibleInternal] = useControllableState({ state: props.visible, initialState: false });\n const [hidden, setHidden] = React.useState(false);\n\n const {\n children,\n content,\n withArrow = false,\n positioning = 'above',\n onVisibleChange,\n relationship,\n showDelay = 250,\n hideDelay = 250,\n mountNode,\n } = props;\n\n const state: TooltipBaseState = {\n withArrow,\n positioning,\n showDelay,\n hideDelay,\n relationship,\n visible,\n hidden,\n shouldRenderTooltip: visible,\n mountNode,\n // Slots\n components: {\n content: 'div',\n },\n content: slot.always(content, {\n defaultProps: {\n role: 'tooltip',\n },\n elementType: 'div',\n }),\n };\n\n state.content.id = useId('tooltip-', state.content.id);\n\n const resolvedPositioning = resolvePositioningShorthand(state.positioning);\n const onPositioningEnd = useEventCallback((event: OnPositioningEndEvent) => {\n const { escaped, referenceHidden } = event.detail;\n\n setHidden(escaped || referenceHidden);\n resolvedPositioning.onPositioningEnd?.(event);\n });\n\n const positioningOptions = {\n enabled: state.visible,\n arrowPadding: 2 * tooltipBorderRadius,\n position: 'above' as const,\n align: 'center' as const,\n offset: 4,\n ...resolvedPositioning,\n onPositioningEnd,\n };\n\n if (state.withArrow) {\n positioningOptions.offset = mergeArrowOffset(positioningOptions.offset, arrowHeight);\n }\n\n const {\n targetRef,\n containerRef,\n arrowRef,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n targetRef: React.MutableRefObject<unknown>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n containerRef: React.MutableRefObject<HTMLDivElement>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n arrowRef: React.MutableRefObject<HTMLDivElement>;\n } = usePositioning(positioningOptions);\n\n const [setDelayTimeout, clearDelayTimeout] = useTooltipTimeout(containerRef);\n\n const setVisible = React.useCallback(\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement> | undefined, data: OnVisibleChangeData) => {\n clearDelayTimeout();\n setVisibleInternal(oldVisible => {\n if (data.visible !== oldVisible) {\n onVisibleChange?.(ev, data);\n }\n return data.visible;\n });\n },\n [clearDelayTimeout, setVisibleInternal, onVisibleChange],\n );\n\n state.content.ref = useMergedRefs(state.content.ref, containerRef);\n state.arrowRef = arrowRef;\n\n // When this tooltip is visible, hide any other tooltips, and register it\n // as the visibleTooltip with the TooltipContext.\n // Also add a listener on document to hide the tooltip if Escape is pressed\n useIsomorphicLayoutEffect(() => {\n if (visible) {\n const thisTooltip = {\n hide: (ev?: KeyboardEvent) => setVisible(undefined, { visible: false, documentKeyboardEvent: ev }),\n };\n\n context.visibleTooltip?.hide();\n // eslint-disable-next-line react-hooks/immutability\n context.visibleTooltip = thisTooltip;\n\n const onDocumentKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === Escape && !ev.defaultPrevented) {\n thisTooltip.hide(ev);\n // stop propagation to avoid conflicting with other elements that listen for `Escape`\n // e,g: Dialog, Popover, Menu and Tooltip\n ev.preventDefault();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, {\n // As this event is added at targeted document,\n // we need to capture the event to be sure keydown handling from tooltip happens first\n capture: true,\n });\n\n // Dismiss the tooltip when the document becomes hidden (e.g. tab backgrounded,\n // app switched on mobile). The original trigger (hover/tap/focus) is no longer\n // active in this case, so persisting the tooltip is a stale UI state.\n const onDocumentVisibilityChange = () => {\n if (targetDocument?.visibilityState === 'hidden') {\n thisTooltip.hide();\n }\n };\n\n targetDocument?.addEventListener('visibilitychange', onDocumentVisibilityChange);\n\n return () => {\n if (context.visibleTooltip === thisTooltip) {\n context.visibleTooltip = undefined;\n }\n\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n targetDocument?.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n };\n }\n }, [context, targetDocument, visible, setVisible]);\n\n // Used to skip showing the tooltip in certain situations when the trigger is focused.\n // See comments where this is set for more info.\n const ignoreNextFocusEventRef = React.useRef(false);\n\n // Listener for onPointerEnter and onFocus on the trigger element\n const onEnterTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n if (ev.type === 'focus' && ignoreNextFocusEventRef.current) {\n ignoreNextFocusEventRef.current = false;\n return;\n }\n\n // Show immediately if another tooltip is already visible\n const delay = context.visibleTooltip ? 0 : state.showDelay;\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: true });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.showDelay, context],\n );\n\n const isNavigatingWithKeyboard = useIsNavigatingWithKeyboard();\n\n // Callback ref that attaches a keyborg:focusin event listener.\n const [keyborgListenerCallbackRef] = React.useState(() => {\n const onKeyborgFocusIn = ((ev: KeyborgFocusInEvent) => {\n // Skip showing the tooltip if focus moved programmatically.\n // For example, we don't want to show the tooltip when a dialog is closed\n // and Tabster programmatically restores focus to the trigger button.\n // See https://github.com/microsoft/fluentui/issues/27576\n if (ev.detail?.isFocusedProgrammatically && !isNavigatingWithKeyboard()) {\n ignoreNextFocusEventRef.current = true;\n }\n }) as EventListener;\n\n // Save the current element to remove the listener when the ref changes\n let current: Element | null = null;\n\n // Callback ref that attaches the listener to the element\n return (element: Element | null) => {\n current?.removeEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n element?.addEventListener(KEYBORG_FOCUSIN, onKeyborgFocusIn);\n current = element;\n };\n });\n\n // Listener for onPointerLeave and onBlur on the trigger element\n const onLeaveTrigger = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n (ev: React.PointerEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => {\n let delay = state.hideDelay;\n\n if (ev.type === 'blur') {\n // Hide immediately when losing focus\n delay = 0;\n\n // The focused element gets a blur event when the document loses focus\n // (e.g. switching tabs in the browser), but we don't want to show the\n // tooltip again when the document gets focus back. Handle this case by\n // checking if the blurred element is still the document's activeElement.\n // See https://github.com/microsoft/fluentui/issues/13541\n ignoreNextFocusEventRef.current = targetDocument?.activeElement === ev.target;\n }\n\n setDelayTimeout(() => {\n setVisible(ev, { visible: false });\n }, delay);\n\n ev.persist(); // Persist the event since the setVisible call will happen asynchronously\n },\n [setDelayTimeout, setVisible, state.hideDelay, targetDocument],\n );\n\n // Cancel the hide timer when the mouse or focus enters the tooltip, and restart it when the mouse or focus leaves.\n // This keeps the tooltip visible when the mouse is moved over it, or it has focus within.\n // eslint-disable-next-line react-hooks/immutability\n state.content.onPointerEnter = mergeCallbacks(state.content.onPointerEnter, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onPointerLeave = mergeCallbacks(state.content.onPointerLeave, onLeaveTrigger);\n // eslint-disable-next-line react-hooks/immutability\n state.content.onFocus = mergeCallbacks(state.content.onFocus, clearDelayTimeout);\n // eslint-disable-next-line react-hooks/immutability, react-hooks/refs\n state.content.onBlur = mergeCallbacks(state.content.onBlur, onLeaveTrigger);\n\n const child = getTriggerChild(children);\n\n const triggerAriaProps: Pick<TooltipChildProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby'> = {};\n const isPopupExpanded =\n child?.props?.['aria-haspopup'] &&\n (child?.props?.['aria-expanded'] === true || child?.props?.['aria-expanded'] === 'true');\n\n if (relationship === 'label') {\n // aria-label only works if the content is a string. Otherwise, need to use aria-labelledby.\n if (typeof state.content.children === 'string') {\n triggerAriaProps['aria-label'] = state.content.children;\n } else {\n triggerAriaProps['aria-labelledby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-labelledby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n } else if (relationship === 'description') {\n triggerAriaProps['aria-describedby'] = state.content.id;\n // Always render the tooltip even if hidden, so that aria-describedby refers to a valid element\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = true;\n }\n\n // Case 1: Don't render the Tooltip in SSR to avoid hydration errors\n // Case 2: Don't render the Tooltip, if it triggers Menu or another popup and it's already opened\n if (isServerSideRender || isPopupExpanded) {\n // eslint-disable-next-line react-hooks/immutability\n state.shouldRenderTooltip = false;\n }\n\n // Apply the trigger props to the child, either by calling the render function, or cloning with the new props\n // eslint-disable-next-line react-hooks/immutability\n state.children = applyTriggerPropsToChildren(children, {\n ...triggerAriaProps,\n ...child?.props,\n ref: useMergedRefs(\n getReactElementRef<HTMLButtonElement>(child),\n keyborgListenerCallbackRef,\n // If the target prop is not provided, attach targetRef to the trigger element's ref prop\n positioningOptions.target === undefined ? targetRef : undefined,\n ),\n // eslint-disable-next-line react-hooks/refs\n onPointerEnter: useEventCallback(mergeCallbacks(child?.props?.onPointerEnter, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onPointerLeave: useEventCallback(mergeCallbacks(child?.props?.onPointerLeave, onLeaveTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onFocus: useEventCallback(mergeCallbacks(child?.props?.onFocus, onEnterTrigger)),\n // eslint-disable-next-line react-hooks/refs\n onBlur: useEventCallback(mergeCallbacks(child?.props?.onBlur, onLeaveTrigger)),\n });\n\n return state;\n};\n"],"names":["React","mergeArrowOffset","resolvePositioningShorthand","usePositioning","useTooltipVisibility_unstable","useTooltipVisibility","useFluent_unstable","useFluent","KEYBORG_FOCUSIN","useIsNavigatingWithKeyboard","applyTriggerPropsToChildren","useControllableState","useId","useIsomorphicLayoutEffect","useIsSSR","useMergedRefs","getTriggerChild","mergeCallbacks","useEventCallback","slot","getReactElementRef","arrowHeight","tooltipBorderRadius","useTooltipTimeout","Escape","useTooltipBase_unstable","props","child","context","isServerSideRender","targetDocument","visible","setVisibleInternal","state","initialState","hidden","setHidden","useState","children","content","withArrow","positioning","onVisibleChange","relationship","showDelay","hideDelay","mountNode","shouldRenderTooltip","components","always","defaultProps","role","elementType","id","resolvedPositioning","onPositioningEnd","event","escaped","referenceHidden","detail","positioningOptions","enabled","arrowPadding","position","align","offset","targetRef","containerRef","arrowRef","setDelayTimeout","clearDelayTimeout","setVisible","useCallback","ev","data","oldVisible","ref","thisTooltip","hide","undefined","documentKeyboardEvent","visibleTooltip","onDocumentKeyDown","key","defaultPrevented","preventDefault","addEventListener","capture","onDocumentVisibilityChange","visibilityState","removeEventListener","ignoreNextFocusEventRef","useRef","onEnterTrigger","type","current","delay","persist","isNavigatingWithKeyboard","keyborgListenerCallbackRef","onKeyborgFocusIn","isFocusedProgrammatically","element","onLeaveTrigger","activeElement","target","onPointerEnter","onPointerLeave","onFocus","onBlur","triggerAriaProps","isPopupExpanded"],"mappings":"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"}
@@ -67,6 +67,10 @@ const tooltipClassNames = {
67
67
  visible: {
68
68
  mc9l5x: "ftgm304"
69
69
  },
70
+ hidden: {
71
+ Bcdw1i0: "fd7fpy0",
72
+ Bkecrkj: "f1aehjj5"
73
+ },
70
74
  inverted: {
71
75
  De3pzq: "fg3r6xk",
72
76
  sj55zd: "fonrgv7"
@@ -153,6 +157,8 @@ const tooltipClassNames = {
153
157
  ".f19n0e5{color:var(--colorNeutralForeground1);}",
154
158
  ".fxeb0a7{filter:drop-shadow(0 0 2px var(--colorNeutralShadowAmbient)) drop-shadow(0 4px 8px var(--colorNeutralShadowKey));}",
155
159
  ".ftgm304{display:block;}",
160
+ ".fd7fpy0{visibility:hidden;}",
161
+ ".f1aehjj5{pointer-events:none;}",
156
162
  ".fg3r6xk{background-color:var(--colorNeutralBackgroundStatic);}",
157
163
  ".fonrgv7{color:var(--colorNeutralForegroundStaticInverted);}",
158
164
  ".f1euv43f{position:absolute;}",
@@ -195,10 +201,9 @@ const tooltipClassNames = {
195
201
  ]
196
202
  });
197
203
  const useTooltipStyles_unstable = (state)=>{
198
- 'use no memo';
199
204
  const styles = useStyles();
200
205
  // eslint-disable-next-line react-hooks/immutability
201
- state.content.className = (0, _react.mergeClasses)(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.content.className);
206
+ state.content.className = (0, _react.mergeClasses)(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.hidden && styles.hidden, state.content.className);
202
207
  // eslint-disable-next-line react-hooks/immutability
203
208
  state.arrowClassName = styles.arrow;
204
209
  return state;
@@ -1 +1 @@
1
- {"version":3,"sources":["useTooltipStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nexport const tooltipClassNames = {\n content: 'fui-Tooltip__content'\n};\n/**\n * Styles for the tooltip\n */ const useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px',\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter: `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` + `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`\n },\n visible: {\n display: 'block'\n },\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted\n },\n arrow: createArrowStyles({\n arrowHeight\n })\n});\n/**\n * Apply styling to the Tooltip slots based on the state\n */ export const useTooltipStyles_unstable = (state)=>{\n 'use no memo';\n const styles = useStyles();\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.content.className);\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n return state;\n};\n"],"names":["__styles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","mc9l5x","B7ck84d","B2u0y6b","Bceei9c","Bahqtrf","Be2twd7","Bg96gwp","Btd35i7","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","De3pzq","sj55zd","Bhu2qc9","visible","inverted","arrow","qhf8xq","Bj3rh1h","rhnwrx","Bdy53xb","B2eet1l","Bz10aip","Bqenvij","a9b677","Ftih45","Br0sdwz","cmx5o7","susq4k","Biibvgv","Bicfajf","qehafq","Brs5u8j","Ccq8qp","Baz25je","Bcgcnre","Bqjgrrk","qa3bma","y0oebl","Biqmznv","Bm6vgfq","Bbv0w2i","uvfttm","eqrjj","Bk5zm6e","m598lv","B4f6apu","ydt019","Bq4z7u6","Bdkvgpv","B0qfbqy","kj8mxx","r59vdv","Bkw5xw4","hl6cv3","aea9ga","yayu3t","Bhsv975","rhl9o9","B7gxrvb","B6q6orb","B0lu1f8","d","p","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"mappings":"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"}
1
+ {"version":3,"sources":["useTooltipStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nexport const tooltipClassNames = {\n content: 'fui-Tooltip__content'\n};\n/**\n * Styles for the tooltip\n */ const useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px',\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter: `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` + `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`\n },\n visible: {\n display: 'block'\n },\n hidden: {\n visibility: 'hidden',\n pointerEvents: 'none'\n },\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted\n },\n arrow: createArrowStyles({\n arrowHeight\n })\n});\n/**\n * Apply styling to the Tooltip slots based on the state\n */ export const useTooltipStyles_unstable = (state)=>{\n const styles = useStyles();\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.hidden && styles.hidden, state.content.className);\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n return state;\n};\n"],"names":["__styles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","mc9l5x","B7ck84d","B2u0y6b","Bceei9c","Bahqtrf","Be2twd7","Bg96gwp","Btd35i7","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","De3pzq","sj55zd","Bhu2qc9","visible","hidden","Bcdw1i0","Bkecrkj","inverted","arrow","qhf8xq","Bj3rh1h","rhnwrx","Bdy53xb","B2eet1l","Bz10aip","Bqenvij","a9b677","Ftih45","Br0sdwz","cmx5o7","susq4k","Biibvgv","Bicfajf","qehafq","Brs5u8j","Ccq8qp","Baz25je","Bcgcnre","Bqjgrrk","qa3bma","y0oebl","Biqmznv","Bm6vgfq","Bbv0w2i","uvfttm","eqrjj","Bk5zm6e","m598lv","B4f6apu","ydt019","Bq4z7u6","Bdkvgpv","B0qfbqy","kj8mxx","r59vdv","Bkw5xw4","hl6cv3","aea9ga","yayu3t","Bhsv975","rhl9o9","B7gxrvb","B6q6orb","B0lu1f8","d","p","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"mappings":"AAAA,YAAY;;;;;;;;;;;;IAKCK,iBAAiB;;;IAwCb+F,yBAAyB;;;;uBA5CD,gBAAgB;AAIlD,0BAA0B;IAC7B9F,OAAO,EAAE;AACb,CAAC;AACD;;CAEA,GAAI,MAAMC,SAAS,GAAA,WAAA,OAAGP,eAAA,EAAA;IAAAQ,IAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAC,OAAA,EAAA;QAAAtC,MAAA,EAAA;IAAA;IAAAuC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAC,QAAA,EAAA;QAAAP,MAAA,EAAA;QAAAC,MAAA,EAAA;IAAA;IAAAO,KAAA,EAAA;QAAA1C,OAAA,EAAA;QAAA2C,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAZ,MAAA,EAAA;QAAAa,OAAA,EAAA;QAAAxC,OAAA,EAAA;QAAAyC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,KAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;YAAA;YAAA;gBAAAA,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;YAAA;YAAA;gBAAAA,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAA,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;KAAA;AAAA,CAgCrB,CAAC;AAGS,kCAAmCE,KAAK,IAAG;IAClD,MAAMC,MAAM,GAAG/F,SAAS,CAAC,CAAC;IAC1B,oDAAA;IACA8F,KAAK,CAAC/F,OAAO,CAACiG,SAAS,OAAGtG,mBAAY,EAACI,iBAAiB,CAACC,OAAO,EAAEgG,MAAM,CAAC9F,IAAI,EAAE6F,KAAK,CAACG,UAAU,KAAK,UAAU,IAAIF,MAAM,CAACnD,QAAQ,EAAEkD,KAAK,CAACtD,OAAO,IAAIuD,MAAM,CAACvD,OAAO,EAAEsD,KAAK,CAACrD,MAAM,IAAIsD,MAAM,CAACtD,MAAM,EAAEqD,KAAK,CAAC/F,OAAO,CAACiG,SAAS,CAAC;IAC3N,oDAAA;IACAF,KAAK,CAACI,cAAc,GAAGH,MAAM,CAAClD,KAAK;IACnC,OAAOiD,KAAK;AAChB,CAAC"}
@@ -47,6 +47,10 @@ const tooltipClassNames = {
47
47
  visible: {
48
48
  display: 'block'
49
49
  },
50
+ hidden: {
51
+ visibility: 'hidden',
52
+ pointerEvents: 'none'
53
+ },
50
54
  inverted: {
51
55
  backgroundColor: _reacttheme.tokens.colorNeutralBackgroundStatic,
52
56
  color: _reacttheme.tokens.colorNeutralForegroundStaticInverted
@@ -56,10 +60,9 @@ const tooltipClassNames = {
56
60
  })
57
61
  });
58
62
  const useTooltipStyles_unstable = (state)=>{
59
- 'use no memo';
60
63
  const styles = useStyles();
61
64
  // eslint-disable-next-line react-hooks/immutability
62
- state.content.className = (0, _react.mergeClasses)(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.content.className);
65
+ state.content.className = (0, _react.mergeClasses)(tooltipClassNames.content, styles.root, state.appearance === 'inverted' && styles.inverted, state.visible && styles.visible, state.hidden && styles.hidden, state.content.className);
63
66
  // eslint-disable-next-line react-hooks/immutability
64
67
  state.arrowClassName = styles.arrow;
65
68
  return state;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltipStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nimport type { TooltipSlots, TooltipState } from './Tooltip.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const tooltipClassNames: SlotClassNames<TooltipSlots> = {\n content: 'fui-Tooltip__content',\n};\n\n/**\n * Styles for the tooltip\n */\nconst useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px', // '5px 12px 7px 12px' minus the border width '1px'\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter:\n `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` +\n `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`,\n },\n\n visible: {\n display: 'block',\n },\n\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted,\n },\n\n arrow: createArrowStyles({ arrowHeight }),\n});\n\n/**\n * Apply styling to the Tooltip slots based on the state\n */\nexport const useTooltipStyles_unstable = (state: TooltipState): TooltipState => {\n 'use no memo';\n\n const styles = useStyles();\n\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(\n tooltipClassNames.content,\n styles.root,\n state.appearance === 'inverted' && styles.inverted,\n state.visible && styles.visible,\n state.content.className,\n );\n\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n\n return state;\n};\n"],"names":["makeStyles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","display","boxSizing","maxWidth","cursor","fontFamily","fontFamilyBase","fontSize","fontSizeBase200","lineHeight","lineHeightBase200","overflowWrap","borderRadius","borderRadiusMedium","border","colorTransparentStroke","padding","backgroundColor","colorNeutralBackground1","color","colorNeutralForeground1","filter","colorNeutralShadowAmbient","colorNeutralShadowKey","visible","inverted","colorNeutralBackgroundStatic","colorNeutralForegroundStaticInverted","arrow","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"mappings":"AAAA;;;;;;;;;;;;IASaK,iBAAAA;;;IA4CAgC,yBAAAA;;;;uBAnD4B,iBAAiB;kCACxB,8BAA8B;4BACzC,wBAAwB;2BACnB,sBAAsB;AAI3C,0BAAwD;IAC7D/B,SAAS;AACX,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYP,iBAAAA,EAAW;IAC3BQ,MAAM;QACJC,SAAS;QACTC,WAAW;QACXC,UAAU;QACVC,QAAQ;QACRC,YAAYV,kBAAAA,CAAOW,cAAc;QACjCC,UAAUZ,kBAAAA,CAAOa,eAAe;QAChCC,YAAYd,kBAAAA,CAAOe,iBAAiB;QACpCC,cAAc;QACdC,cAAcjB,kBAAAA,CAAOkB,kBAAkB;QACvCC,QAAQ,CAAC,UAAU,EAAEnB,kBAAAA,CAAOoB,sBAAsB,EAAE;QACpDC,SAAS;QACTC,iBAAiBtB,kBAAAA,CAAOuB,uBAAuB;QAC/CC,OAAOxB,kBAAAA,CAAOyB,uBAAuB;QAErC,uFAAuF;QACvFC,QACE,CAAC,oBAAoB,EAAE1B,kBAAAA,CAAO2B,yBAAyB,CAAC,EAAE,CAAC,GAC3D,CAAC,sBAAsB,EAAE3B,kBAAAA,CAAO4B,qBAAqB,CAAC,CAAC,CAAC;IAC5D;IAEAC,SAAS;QACPvB,SAAS;IACX;IAEAwB,UAAU;QACRR,iBAAiBtB,kBAAAA,CAAO+B,4BAA4B;QACpDP,OAAOxB,kBAAAA,CAAOgC,oCAAoC;IACpD;IAEAC,WAAOlC,mCAAAA,EAAkB;qBAAEE,sBAAAA;IAAY;AACzC;AAKO,kCAAkC,CAACkC;IACxC;IAEA,MAAMC,SAAShC;IAEf,oDAAoD;IACpD+B,MAAMhC,OAAO,CAACkC,SAAS,OAAGvC,mBAAAA,EACxBI,kBAAkBC,OAAO,EACzBiC,OAAO/B,IAAI,EACX8B,MAAMG,UAAU,KAAK,cAAcF,OAAON,QAAQ,EAClDK,MAAMN,OAAO,IAAIO,OAAOP,OAAO,EAC/BM,MAAMhC,OAAO,CAACkC,SAAS;IAGzB,oDAAoD;IACpDF,MAAMI,cAAc,GAAGH,OAAOH,KAAK;IAEnC,OAAOE;AACT,EAAE"}
1
+ {"version":3,"sources":["../src/components/Tooltip/useTooltipStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { createArrowStyles } from '@fluentui/react-positioning';\nimport { tokens } from '@fluentui/react-theme';\nimport { arrowHeight } from './private/constants';\nimport type { TooltipSlots, TooltipState } from './Tooltip.types';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const tooltipClassNames: SlotClassNames<TooltipSlots> = {\n content: 'fui-Tooltip__content',\n};\n\n/**\n * Styles for the tooltip\n */\nconst useStyles = makeStyles({\n root: {\n display: 'none',\n boxSizing: 'border-box',\n maxWidth: '240px',\n cursor: 'default',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase200,\n lineHeight: tokens.lineHeightBase200,\n overflowWrap: 'break-word',\n borderRadius: tokens.borderRadiusMedium,\n border: `1px solid ${tokens.colorTransparentStroke}`,\n padding: '4px 11px 6px 11px', // '5px 12px 7px 12px' minus the border width '1px'\n backgroundColor: tokens.colorNeutralBackground1,\n color: tokens.colorNeutralForeground1,\n\n // TODO need to add versions of tokens.alias.shadow.shadow8, etc. that work with filter\n filter:\n `drop-shadow(0 0 2px ${tokens.colorNeutralShadowAmbient}) ` +\n `drop-shadow(0 4px 8px ${tokens.colorNeutralShadowKey})`,\n },\n\n visible: {\n display: 'block',\n },\n\n hidden: {\n visibility: 'hidden',\n pointerEvents: 'none',\n },\n\n inverted: {\n backgroundColor: tokens.colorNeutralBackgroundStatic,\n color: tokens.colorNeutralForegroundStaticInverted,\n },\n\n arrow: createArrowStyles({ arrowHeight }),\n});\n\n/**\n * Apply styling to the Tooltip slots based on the state\n */\nexport const useTooltipStyles_unstable = (state: TooltipState): TooltipState => {\n const styles = useStyles();\n\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(\n tooltipClassNames.content,\n styles.root,\n state.appearance === 'inverted' && styles.inverted,\n state.visible && styles.visible,\n state.hidden && styles.hidden,\n state.content.className,\n );\n\n // eslint-disable-next-line react-hooks/immutability\n state.arrowClassName = styles.arrow;\n\n return state;\n};\n"],"names":["makeStyles","mergeClasses","createArrowStyles","tokens","arrowHeight","tooltipClassNames","content","useStyles","root","display","boxSizing","maxWidth","cursor","fontFamily","fontFamilyBase","fontSize","fontSizeBase200","lineHeight","lineHeightBase200","overflowWrap","borderRadius","borderRadiusMedium","border","colorTransparentStroke","padding","backgroundColor","colorNeutralBackground1","color","colorNeutralForeground1","filter","colorNeutralShadowAmbient","colorNeutralShadowKey","visible","hidden","visibility","pointerEvents","inverted","colorNeutralBackgroundStatic","colorNeutralForegroundStaticInverted","arrow","useTooltipStyles_unstable","state","styles","className","appearance","arrowClassName"],"mappings":"AAAA;;;;;;;;;;;;IASaK,iBAAAA;;;IAiDAmC,yBAAAA;;;;uBAxD4B,iBAAiB;kCACxB,8BAA8B;4BACzC,wBAAwB;2BACnB,sBAAsB;AAI3C,0BAAwD;IAC7DlC,SAAS;AACX,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYP,iBAAAA,EAAW;IAC3BQ,MAAM;QACJC,SAAS;QACTC,WAAW;QACXC,UAAU;QACVC,QAAQ;QACRC,YAAYV,kBAAAA,CAAOW,cAAc;QACjCC,UAAUZ,kBAAAA,CAAOa,eAAe;QAChCC,YAAYd,kBAAAA,CAAOe,iBAAiB;QACpCC,cAAc;QACdC,cAAcjB,kBAAAA,CAAOkB,kBAAkB;QACvCC,QAAQ,CAAC,UAAU,EAAEnB,kBAAAA,CAAOoB,sBAAsB,EAAE;QACpDC,SAAS;QACTC,iBAAiBtB,kBAAAA,CAAOuB,uBAAuB;QAC/CC,OAAOxB,kBAAAA,CAAOyB,uBAAuB;QAErC,uFAAuF;QACvFC,QACE,CAAC,oBAAoB,EAAE1B,kBAAAA,CAAO2B,yBAAyB,CAAC,EAAE,CAAC,GAC3D,CAAC,sBAAsB,EAAE3B,kBAAAA,CAAO4B,qBAAqB,CAAC,CAAC,CAAC;IAC5D;IAEAC,SAAS;QACPvB,SAAS;IACX;IAEAwB,QAAQ;QACNC,YAAY;QACZC,eAAe;IACjB;IAEAC,UAAU;QACRX,iBAAiBtB,kBAAAA,CAAOkC,4BAA4B;QACpDV,OAAOxB,kBAAAA,CAAOmC,oCAAoC;IACpD;IAEAC,WAAOrC,mCAAAA,EAAkB;qBAAEE,sBAAAA;IAAY;AACzC;AAKO,kCAAkC,CAACqC;IACxC,MAAMC,SAASnC;IAEf,oDAAoD;IACpDkC,MAAMnC,OAAO,CAACqC,SAAS,OAAG1C,mBAAAA,EACxBI,kBAAkBC,OAAO,EACzBoC,OAAOlC,IAAI,EACXiC,MAAMG,UAAU,KAAK,cAAcF,OAAON,QAAQ,EAClDK,MAAMT,OAAO,IAAIU,OAAOV,OAAO,EAC/BS,MAAMR,MAAM,IAAIS,OAAOT,MAAM,EAC7BQ,MAAMnC,OAAO,CAACqC,SAAS;IAGzB,oDAAoD;IACpDF,MAAMI,cAAc,GAAGH,OAAOH,KAAK;IAEnC,OAAOE;AACT,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-tooltip",
3
- "version": "9.10.2",
3
+ "version": "9.10.4",
4
4
  "description": "React components for building web experiences",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -13,13 +13,13 @@
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
15
  "@fluentui/keyboard-keys": "^9.0.8",
16
- "@fluentui/react-jsx-runtime": "^9.4.3",
17
- "@fluentui/react-portal": "^9.8.13",
18
- "@fluentui/react-positioning": "^9.22.2",
16
+ "@fluentui/react-jsx-runtime": "^9.4.4",
17
+ "@fluentui/react-portal": "^9.8.14",
18
+ "@fluentui/react-positioning": "^9.23.0",
19
19
  "@fluentui/react-shared-contexts": "^9.26.2",
20
- "@fluentui/react-tabster": "^9.26.15",
20
+ "@fluentui/react-tabster": "^9.26.16",
21
21
  "@fluentui/react-theme": "^9.2.1",
22
- "@fluentui/react-utilities": "^9.26.4",
22
+ "@fluentui/react-utilities": "^9.26.5",
23
23
  "@griffel/react": "^1.5.32",
24
24
  "@swc/helpers": "^0.5.1"
25
25
  },