@fluentui/react-message-bar 9.7.5 → 9.7.6

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,24 @@
1
1
  # Change Log - @fluentui/react-message-bar
2
2
 
3
- <!-- This log was last generated on Tue, 11 Aug 2026 17:16:02 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Mon, 24 Aug 2026 08:15:11 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.7.6](https://github.com/microsoft/fluentui/tree/@fluentui/react-message-bar_v9.7.6)
8
+
9
+ Mon, 24 Aug 2026 08:15:11 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-message-bar_v9.7.5..@fluentui/react-message-bar_v9.7.6)
11
+
12
+ ### Patches
13
+
14
+ - fix: align react/react-dom/@types peerDependencies with the react/jsx-runtime 16.14.0 floor ([PR #36551](https://github.com/microsoft/fluentui/pull/36551) by martinhochel@microsoft.com)
15
+ - Keep motion ref handling out of the headless MessageBar base hook. ([PR #36549](https://github.com/microsoft/fluentui/pull/36549) by dmytrokirpa@microsoft.com)
16
+ - Bump @fluentui/react-motion to v9.16.3 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
17
+ - Bump @fluentui/react-motion-components-preview to v0.15.8 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
18
+
7
19
  ## [9.7.5](https://github.com/microsoft/fluentui/tree/@fluentui/react-message-bar_v9.7.5)
8
20
 
9
- Tue, 11 Aug 2026 17:16:02 GMT
21
+ Tue, 11 Aug 2026 17:20:14 GMT
10
22
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-message-bar_v9.7.4..@fluentui/react-message-bar_v9.7.5)
11
23
 
12
24
  ### Patches
@@ -19,7 +19,6 @@ import { useMotionForwardedRef } from "@fluentui/react-motion";
19
19
  const computedLayout = autoReflow ? reflowing ? 'multiline' : 'singleline' : layout;
20
20
  // eslint-disable-next-line @typescript-eslint/no-deprecated
21
21
  const { className: transitionClassName, nodeRef } = useMessageBarTransitionContext();
22
- const motionRef = useMotionForwardedRef();
23
22
  const actionsRef = React.useRef(null);
24
23
  const bodyRef = React.useRef(null);
25
24
  const { announce } = useAnnounce();
@@ -49,7 +48,7 @@ import { useMotionForwardedRef } from "@fluentui/react-motion";
49
48
  bottomReflowSpacer: 'div'
50
49
  },
51
50
  root: slot.always(getIntrinsicElementProps('div', {
52
- ref: useMergedRefs(ref, reflowRef, nodeRef, motionRef),
51
+ ref: useMergedRefs(ref, reflowRef, nodeRef),
53
52
  role: 'group',
54
53
  'aria-labelledby': titleId,
55
54
  ...props
@@ -82,7 +81,8 @@ import { useMotionForwardedRef } from "@fluentui/react-motion";
82
81
  * @param ref - reference to root HTMLElement of MessageBar
83
82
  */ export const useMessageBar_unstable = (props, ref)=>{
84
83
  const { shape = 'rounded', ...baseProps } = props;
85
- const state = useMessageBarBase_unstable(baseProps, ref);
84
+ const motionRef = useMotionForwardedRef();
85
+ const state = useMessageBarBase_unstable(baseProps, useMergedRefs(ref, motionRef));
86
86
  return {
87
87
  ...state,
88
88
  shape,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/MessageBar/useMessageBar.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport { useAnnounce } from '@fluentui/react-shared-contexts';\nimport type { MessageBarBaseProps, MessageBarBaseState, MessageBarProps, MessageBarState } from './MessageBar.types';\nimport { getIntentIcon } from './getIntentIcon';\nimport { useMessageBarReflow } from './useMessageBarReflow';\nimport { useMessageBarTransitionContext } from '../../contexts/messageBarTransitionContext';\nimport { useMotionForwardedRef } from '@fluentui/react-motion';\n\n/**\n * Create the base state required to render MessageBar without design-specific props.\n *\n * @param props - props from this instance of MessageBar (without shape)\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBarBase_unstable = (\n props: MessageBarBaseProps,\n ref: React.Ref<HTMLDivElement>,\n): MessageBarBaseState => {\n const { layout = 'auto', intent = 'info', politeness } = props;\n const computedPoliteness = politeness ?? intent === 'info' ? 'polite' : 'assertive';\n const autoReflow = layout === 'auto';\n const { ref: reflowRef, reflowing } = useMessageBarReflow(autoReflow);\n const computedLayout = autoReflow ? (reflowing ? 'multiline' : 'singleline') : layout;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { className: transitionClassName, nodeRef } = useMessageBarTransitionContext();\n const motionRef = useMotionForwardedRef();\n\n const actionsRef = React.useRef<HTMLDivElement | null>(null);\n const bodyRef = React.useRef<HTMLDivElement | null>(null);\n const { announce } = useAnnounce();\n const titleId = useId();\n\n React.useEffect(() => {\n const bodyMessage = bodyRef.current?.textContent;\n const actionsMessage = actionsRef.current?.textContent;\n\n const message = [bodyMessage, actionsMessage].filter(Boolean).join(',');\n announce(message, { polite: computedPoliteness === 'polite', alert: computedPoliteness === 'assertive' });\n }, [bodyRef, actionsRef, announce, computedPoliteness]);\n\n return {\n components: {\n root: 'div',\n icon: 'div',\n bottomReflowSpacer: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref: useMergedRefs(ref, reflowRef, nodeRef, motionRef),\n role: 'group',\n 'aria-labelledby': titleId,\n ...props,\n }),\n { elementType: 'div' },\n ),\n icon: slot.optional(props.icon, {\n renderByDefault: true,\n elementType: 'div',\n }),\n bottomReflowSpacer: slot.optional(props.bottomReflowSpacer, {\n renderByDefault: computedLayout === 'multiline',\n elementType: 'div',\n }),\n layout: computedLayout,\n intent,\n transitionClassName,\n actionsRef,\n bodyRef,\n titleId,\n };\n};\n\n/**\n * Create the state required to render MessageBar.\n *\n * The returned state can be modified with hooks such as useMessageBarStyles_unstable,\n * before being passed to renderMessageBar_unstable.\n *\n * @param props - props from this instance of MessageBar\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBar_unstable = (props: MessageBarProps, ref: React.Ref<HTMLDivElement>): MessageBarState => {\n const { shape = 'rounded', ...baseProps } = props;\n\n const state = useMessageBarBase_unstable(baseProps, ref);\n\n return {\n ...state,\n shape,\n icon: slot.optional(props.icon, {\n defaultProps: {\n children: getIntentIcon(state.intent),\n },\n renderByDefault: true,\n elementType: 'div',\n }),\n };\n};\n"],"names":["React","getIntrinsicElementProps","slot","useId","useMergedRefs","useAnnounce","getIntentIcon","useMessageBarReflow","useMessageBarTransitionContext","useMotionForwardedRef","useMessageBarBase_unstable","props","ref","layout","intent","politeness","computedPoliteness","autoReflow","reflowRef","reflowing","computedLayout","className","transitionClassName","nodeRef","motionRef","actionsRef","useRef","bodyRef","announce","titleId","useEffect","bodyMessage","current","textContent","actionsMessage","message","filter","Boolean","join","polite","alert","components","root","icon","bottomReflowSpacer","always","role","elementType","optional","renderByDefault","useMessageBar_unstable","shape","baseProps","state","defaultProps","children"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,wBAAwB,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,QAAQ,4BAA4B;AACjG,SAASC,WAAW,QAAQ,kCAAkC;AAE9D,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,mBAAmB,QAAQ,2BAAwB;AAC5D,SAASC,8BAA8B,QAAQ,gDAA6C;AAC5F,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D;;;;;CAKC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,SAAS,MAAM,EAAEC,SAAS,MAAM,EAAEC,UAAU,EAAE,GAAGJ;IACzD,MAAMK,qBAAqBD,CAAAA,uBAAAA,wBAAAA,aAAcD,WAAW,MAAK,IAAI,WAAW;IACxE,MAAMG,aAAaJ,WAAW;IAC9B,MAAM,EAAED,KAAKM,SAAS,EAAEC,SAAS,EAAE,GAAGZ,oBAAoBU;IAC1D,MAAMG,iBAAiBH,aAAcE,YAAY,cAAc,eAAgBN;IAE/E,4DAA4D;IAC5D,MAAM,EAAEQ,WAAWC,mBAAmB,EAAEC,OAAO,EAAE,GAAGf;IACpD,MAAMgB,YAAYf;IAElB,MAAMgB,aAAazB,MAAM0B,MAAM,CAAwB;IACvD,MAAMC,UAAU3B,MAAM0B,MAAM,CAAwB;IACpD,MAAM,EAAEE,QAAQ,EAAE,GAAGvB;IACrB,MAAMwB,UAAU1B;IAEhBH,MAAM8B,SAAS,CAAC;YACMH,kBACGF;QADvB,MAAMM,eAAcJ,mBAAAA,QAAQK,OAAO,cAAfL,uCAAAA,iBAAiBM,WAAW;QAChD,MAAMC,kBAAiBT,sBAAAA,WAAWO,OAAO,cAAlBP,0CAAAA,oBAAoBQ,WAAW;QAEtD,MAAME,UAAU;YAACJ;YAAaG;SAAe,CAACE,MAAM,CAACC,SAASC,IAAI,CAAC;QACnEV,SAASO,SAAS;YAAEI,QAAQvB,uBAAuB;YAAUwB,OAAOxB,uBAAuB;QAAY;IACzG,GAAG;QAACW;QAASF;QAAYG;QAAUZ;KAAmB;IAEtD,OAAO;QACLyB,YAAY;YACVC,MAAM;YACNC,MAAM;YACNC,oBAAoB;QACtB;QACAF,MAAMxC,KAAK2C,MAAM,CACf5C,yBAAyB,OAAO;YAC9BW,KAAKR,cAAcQ,KAAKM,WAAWK,SAASC;YAC5CsB,MAAM;YACN,mBAAmBjB;YACnB,GAAGlB,KAAK;QACV,IACA;YAAEoC,aAAa;QAAM;QAEvBJ,MAAMzC,KAAK8C,QAAQ,CAACrC,MAAMgC,IAAI,EAAE;YAC9BM,iBAAiB;YACjBF,aAAa;QACf;QACAH,oBAAoB1C,KAAK8C,QAAQ,CAACrC,MAAMiC,kBAAkB,EAAE;YAC1DK,iBAAiB7B,mBAAmB;YACpC2B,aAAa;QACf;QACAlC,QAAQO;QACRN;QACAQ;QACAG;QACAE;QACAE;IACF;AACF,EAAE;AAEF;;;;;;;;CAQC,GACD,OAAO,MAAMqB,yBAAyB,CAACvC,OAAwBC;IAC7D,MAAM,EAAEuC,QAAQ,SAAS,EAAE,GAAGC,WAAW,GAAGzC;IAE5C,MAAM0C,QAAQ3C,2BAA2B0C,WAAWxC;IAEpD,OAAO;QACL,GAAGyC,KAAK;QACRF;QACAR,MAAMzC,KAAK8C,QAAQ,CAACrC,MAAMgC,IAAI,EAAE;YAC9BW,cAAc;gBACZC,UAAUjD,cAAc+C,MAAMvC,MAAM;YACtC;YACAmC,iBAAiB;YACjBF,aAAa;QACf;IACF;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/MessageBar/useMessageBar.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport { useAnnounce } from '@fluentui/react-shared-contexts';\nimport type { MessageBarBaseProps, MessageBarBaseState, MessageBarProps, MessageBarState } from './MessageBar.types';\nimport { getIntentIcon } from './getIntentIcon';\nimport { useMessageBarReflow } from './useMessageBarReflow';\nimport { useMessageBarTransitionContext } from '../../contexts/messageBarTransitionContext';\nimport { useMotionForwardedRef } from '@fluentui/react-motion';\n\n/**\n * Create the base state required to render MessageBar without design-specific props.\n *\n * @param props - props from this instance of MessageBar (without shape)\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBarBase_unstable = (\n props: MessageBarBaseProps,\n ref: React.Ref<HTMLDivElement>,\n): MessageBarBaseState => {\n const { layout = 'auto', intent = 'info', politeness } = props;\n const computedPoliteness = politeness ?? intent === 'info' ? 'polite' : 'assertive';\n const autoReflow = layout === 'auto';\n const { ref: reflowRef, reflowing } = useMessageBarReflow(autoReflow);\n const computedLayout = autoReflow ? (reflowing ? 'multiline' : 'singleline') : layout;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { className: transitionClassName, nodeRef } = useMessageBarTransitionContext();\n\n const actionsRef = React.useRef<HTMLDivElement | null>(null);\n const bodyRef = React.useRef<HTMLDivElement | null>(null);\n const { announce } = useAnnounce();\n const titleId = useId();\n\n React.useEffect(() => {\n const bodyMessage = bodyRef.current?.textContent;\n const actionsMessage = actionsRef.current?.textContent;\n\n const message = [bodyMessage, actionsMessage].filter(Boolean).join(',');\n announce(message, { polite: computedPoliteness === 'polite', alert: computedPoliteness === 'assertive' });\n }, [bodyRef, actionsRef, announce, computedPoliteness]);\n\n return {\n components: {\n root: 'div',\n icon: 'div',\n bottomReflowSpacer: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref: useMergedRefs(ref, reflowRef, nodeRef),\n role: 'group',\n 'aria-labelledby': titleId,\n ...props,\n }),\n { elementType: 'div' },\n ),\n icon: slot.optional(props.icon, {\n renderByDefault: true,\n elementType: 'div',\n }),\n bottomReflowSpacer: slot.optional(props.bottomReflowSpacer, {\n renderByDefault: computedLayout === 'multiline',\n elementType: 'div',\n }),\n layout: computedLayout,\n intent,\n transitionClassName,\n actionsRef,\n bodyRef,\n titleId,\n };\n};\n\n/**\n * Create the state required to render MessageBar.\n *\n * The returned state can be modified with hooks such as useMessageBarStyles_unstable,\n * before being passed to renderMessageBar_unstable.\n *\n * @param props - props from this instance of MessageBar\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBar_unstable = (props: MessageBarProps, ref: React.Ref<HTMLDivElement>): MessageBarState => {\n const { shape = 'rounded', ...baseProps } = props;\n\n const motionRef = useMotionForwardedRef();\n const state = useMessageBarBase_unstable(baseProps, useMergedRefs(ref, motionRef));\n\n return {\n ...state,\n shape,\n icon: slot.optional(props.icon, {\n defaultProps: {\n children: getIntentIcon(state.intent),\n },\n renderByDefault: true,\n elementType: 'div',\n }),\n };\n};\n"],"names":["React","getIntrinsicElementProps","slot","useId","useMergedRefs","useAnnounce","getIntentIcon","useMessageBarReflow","useMessageBarTransitionContext","useMotionForwardedRef","useMessageBarBase_unstable","props","ref","layout","intent","politeness","computedPoliteness","autoReflow","reflowRef","reflowing","computedLayout","className","transitionClassName","nodeRef","actionsRef","useRef","bodyRef","announce","titleId","useEffect","bodyMessage","current","textContent","actionsMessage","message","filter","Boolean","join","polite","alert","components","root","icon","bottomReflowSpacer","always","role","elementType","optional","renderByDefault","useMessageBar_unstable","shape","baseProps","motionRef","state","defaultProps","children"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,wBAAwB,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,QAAQ,4BAA4B;AACjG,SAASC,WAAW,QAAQ,kCAAkC;AAE9D,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,mBAAmB,QAAQ,2BAAwB;AAC5D,SAASC,8BAA8B,QAAQ,gDAA6C;AAC5F,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D;;;;;CAKC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,SAAS,MAAM,EAAEC,SAAS,MAAM,EAAEC,UAAU,EAAE,GAAGJ;IACzD,MAAMK,qBAAqBD,CAAAA,uBAAAA,wBAAAA,aAAcD,WAAW,MAAK,IAAI,WAAW;IACxE,MAAMG,aAAaJ,WAAW;IAC9B,MAAM,EAAED,KAAKM,SAAS,EAAEC,SAAS,EAAE,GAAGZ,oBAAoBU;IAC1D,MAAMG,iBAAiBH,aAAcE,YAAY,cAAc,eAAgBN;IAE/E,4DAA4D;IAC5D,MAAM,EAAEQ,WAAWC,mBAAmB,EAAEC,OAAO,EAAE,GAAGf;IAEpD,MAAMgB,aAAaxB,MAAMyB,MAAM,CAAwB;IACvD,MAAMC,UAAU1B,MAAMyB,MAAM,CAAwB;IACpD,MAAM,EAAEE,QAAQ,EAAE,GAAGtB;IACrB,MAAMuB,UAAUzB;IAEhBH,MAAM6B,SAAS,CAAC;YACMH,kBACGF;QADvB,MAAMM,eAAcJ,mBAAAA,QAAQK,OAAO,cAAfL,uCAAAA,iBAAiBM,WAAW;QAChD,MAAMC,kBAAiBT,sBAAAA,WAAWO,OAAO,cAAlBP,0CAAAA,oBAAoBQ,WAAW;QAEtD,MAAME,UAAU;YAACJ;YAAaG;SAAe,CAACE,MAAM,CAACC,SAASC,IAAI,CAAC;QACnEV,SAASO,SAAS;YAAEI,QAAQtB,uBAAuB;YAAUuB,OAAOvB,uBAAuB;QAAY;IACzG,GAAG;QAACU;QAASF;QAAYG;QAAUX;KAAmB;IAEtD,OAAO;QACLwB,YAAY;YACVC,MAAM;YACNC,MAAM;YACNC,oBAAoB;QACtB;QACAF,MAAMvC,KAAK0C,MAAM,CACf3C,yBAAyB,OAAO;YAC9BW,KAAKR,cAAcQ,KAAKM,WAAWK;YACnCsB,MAAM;YACN,mBAAmBjB;YACnB,GAAGjB,KAAK;QACV,IACA;YAAEmC,aAAa;QAAM;QAEvBJ,MAAMxC,KAAK6C,QAAQ,CAACpC,MAAM+B,IAAI,EAAE;YAC9BM,iBAAiB;YACjBF,aAAa;QACf;QACAH,oBAAoBzC,KAAK6C,QAAQ,CAACpC,MAAMgC,kBAAkB,EAAE;YAC1DK,iBAAiB5B,mBAAmB;YACpC0B,aAAa;QACf;QACAjC,QAAQO;QACRN;QACAQ;QACAE;QACAE;QACAE;IACF;AACF,EAAE;AAEF;;;;;;;;CAQC,GACD,OAAO,MAAMqB,yBAAyB,CAACtC,OAAwBC;IAC7D,MAAM,EAAEsC,QAAQ,SAAS,EAAE,GAAGC,WAAW,GAAGxC;IAE5C,MAAMyC,YAAY3C;IAClB,MAAM4C,QAAQ3C,2BAA2ByC,WAAW/C,cAAcQ,KAAKwC;IAEvE,OAAO;QACL,GAAGC,KAAK;QACRH;QACAR,MAAMxC,KAAK6C,QAAQ,CAACpC,MAAM+B,IAAI,EAAE;YAC9BY,cAAc;gBACZC,UAAUjD,cAAc+C,MAAMvC,MAAM;YACtC;YACAkC,iBAAiB;YACjBF,aAAa;QACf;IACF;AACF,EAAE"}
@@ -33,7 +33,6 @@ const useMessageBarBase_unstable = (props, ref)=>{
33
33
  const computedLayout = autoReflow ? reflowing ? 'multiline' : 'singleline' : layout;
34
34
  // eslint-disable-next-line @typescript-eslint/no-deprecated
35
35
  const { className: transitionClassName, nodeRef } = (0, _messageBarTransitionContext.useMessageBarTransitionContext)();
36
- const motionRef = (0, _reactmotion.useMotionForwardedRef)();
37
36
  const actionsRef = _react.useRef(null);
38
37
  const bodyRef = _react.useRef(null);
39
38
  const { announce } = (0, _reactsharedcontexts.useAnnounce)();
@@ -63,7 +62,7 @@ const useMessageBarBase_unstable = (props, ref)=>{
63
62
  bottomReflowSpacer: 'div'
64
63
  },
65
64
  root: _reactutilities.slot.always((0, _reactutilities.getIntrinsicElementProps)('div', {
66
- ref: (0, _reactutilities.useMergedRefs)(ref, reflowRef, nodeRef, motionRef),
65
+ ref: (0, _reactutilities.useMergedRefs)(ref, reflowRef, nodeRef),
67
66
  role: 'group',
68
67
  'aria-labelledby': titleId,
69
68
  ...props
@@ -88,7 +87,8 @@ const useMessageBarBase_unstable = (props, ref)=>{
88
87
  };
89
88
  const useMessageBar_unstable = (props, ref)=>{
90
89
  const { shape = 'rounded', ...baseProps } = props;
91
- const state = useMessageBarBase_unstable(baseProps, ref);
90
+ const motionRef = (0, _reactmotion.useMotionForwardedRef)();
91
+ const state = useMessageBarBase_unstable(baseProps, (0, _reactutilities.useMergedRefs)(ref, motionRef));
92
92
  return {
93
93
  ...state,
94
94
  shape,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/MessageBar/useMessageBar.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport { useAnnounce } from '@fluentui/react-shared-contexts';\nimport type { MessageBarBaseProps, MessageBarBaseState, MessageBarProps, MessageBarState } from './MessageBar.types';\nimport { getIntentIcon } from './getIntentIcon';\nimport { useMessageBarReflow } from './useMessageBarReflow';\nimport { useMessageBarTransitionContext } from '../../contexts/messageBarTransitionContext';\nimport { useMotionForwardedRef } from '@fluentui/react-motion';\n\n/**\n * Create the base state required to render MessageBar without design-specific props.\n *\n * @param props - props from this instance of MessageBar (without shape)\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBarBase_unstable = (\n props: MessageBarBaseProps,\n ref: React.Ref<HTMLDivElement>,\n): MessageBarBaseState => {\n const { layout = 'auto', intent = 'info', politeness } = props;\n const computedPoliteness = politeness ?? intent === 'info' ? 'polite' : 'assertive';\n const autoReflow = layout === 'auto';\n const { ref: reflowRef, reflowing } = useMessageBarReflow(autoReflow);\n const computedLayout = autoReflow ? (reflowing ? 'multiline' : 'singleline') : layout;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { className: transitionClassName, nodeRef } = useMessageBarTransitionContext();\n const motionRef = useMotionForwardedRef();\n\n const actionsRef = React.useRef<HTMLDivElement | null>(null);\n const bodyRef = React.useRef<HTMLDivElement | null>(null);\n const { announce } = useAnnounce();\n const titleId = useId();\n\n React.useEffect(() => {\n const bodyMessage = bodyRef.current?.textContent;\n const actionsMessage = actionsRef.current?.textContent;\n\n const message = [bodyMessage, actionsMessage].filter(Boolean).join(',');\n announce(message, { polite: computedPoliteness === 'polite', alert: computedPoliteness === 'assertive' });\n }, [bodyRef, actionsRef, announce, computedPoliteness]);\n\n return {\n components: {\n root: 'div',\n icon: 'div',\n bottomReflowSpacer: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref: useMergedRefs(ref, reflowRef, nodeRef, motionRef),\n role: 'group',\n 'aria-labelledby': titleId,\n ...props,\n }),\n { elementType: 'div' },\n ),\n icon: slot.optional(props.icon, {\n renderByDefault: true,\n elementType: 'div',\n }),\n bottomReflowSpacer: slot.optional(props.bottomReflowSpacer, {\n renderByDefault: computedLayout === 'multiline',\n elementType: 'div',\n }),\n layout: computedLayout,\n intent,\n transitionClassName,\n actionsRef,\n bodyRef,\n titleId,\n };\n};\n\n/**\n * Create the state required to render MessageBar.\n *\n * The returned state can be modified with hooks such as useMessageBarStyles_unstable,\n * before being passed to renderMessageBar_unstable.\n *\n * @param props - props from this instance of MessageBar\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBar_unstable = (props: MessageBarProps, ref: React.Ref<HTMLDivElement>): MessageBarState => {\n const { shape = 'rounded', ...baseProps } = props;\n\n const state = useMessageBarBase_unstable(baseProps, ref);\n\n return {\n ...state,\n shape,\n icon: slot.optional(props.icon, {\n defaultProps: {\n children: getIntentIcon(state.intent),\n },\n renderByDefault: true,\n elementType: 'div',\n }),\n };\n};\n"],"names":["React","getIntrinsicElementProps","slot","useId","useMergedRefs","useAnnounce","getIntentIcon","useMessageBarReflow","useMessageBarTransitionContext","useMotionForwardedRef","useMessageBarBase_unstable","props","ref","layout","intent","politeness","computedPoliteness","autoReflow","reflowRef","reflowing","computedLayout","className","transitionClassName","nodeRef","motionRef","actionsRef","useRef","bodyRef","announce","titleId","useEffect","bodyMessage","current","textContent","actionsMessage","message","filter","Boolean","join","polite","alert","components","root","icon","bottomReflowSpacer","always","role","elementType","optional","renderByDefault","useMessageBar_unstable","shape","baseProps","state","defaultProps","children"],"mappings":"AAAA;;;;;;;;;;;;IAiBaU,0BAAAA;;;0BAoEAwC;eAAAA;;;;iEAnFU,QAAQ;gCACsC,4BAA4B;qCACrE,kCAAkC;+BAEhC,qBAAkB;qCACZ,2BAAwB;6CACb,gDAA6C;6BACtD,yBAAyB;AAQxD,mCAAmC,CACxCvC,OACAC;IAEA,MAAM,EAAEC,SAAS,MAAM,EAAEC,SAAS,MAAM,EAAEC,UAAU,EAAE,GAAGJ;IACzD,MAAMK,qBAAqBD,CAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,aAAcD,WAAW,MAAA,CAAK,GAAI,WAAW;IACxE,MAAMG,aAAaJ,WAAW;IAC9B,MAAM,EAAED,KAAKM,SAAS,EAAEC,SAAS,EAAE,OAAGZ,wCAAAA,EAAoBU;IAC1D,MAAMG,iBAAiBH,aAAcE,YAAY,cAAc,eAAgBN;IAE/E,4DAA4D;IAC5D,MAAM,EAAEQ,WAAWC,mBAAmB,EAAEC,OAAO,EAAE,OAAGf,2DAAAA;IACpD,MAAMgB,gBAAYf,kCAAAA;IAElB,MAAMgB,aAAazB,OAAM0B,MAAM,CAAwB;IACvD,MAAMC,UAAU3B,OAAM0B,MAAM,CAAwB;IACpD,MAAM,EAAEE,QAAQ,EAAE,OAAGvB,gCAAAA;IACrB,MAAMwB,cAAU1B,qBAAAA;IAEhBH,OAAM8B,SAAS,CAAC;YACMH,kBACGF;QADvB,MAAMM,cAAAA,CAAcJ,mBAAAA,QAAQK,OAAAA,AAAO,MAAA,QAAfL,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBM,WAAW;QAChD,MAAMC,iBAAAA,AAAiBT,uBAAAA,WAAWO,OAAAA,AAAO,MAAA,QAAlBP,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoBQ,WAAW;QAEtD,MAAME,UAAU;YAACJ;YAAaG;SAAe,CAACE,MAAM,CAACC,SAASC,IAAI,CAAC;QACnEV,SAASO,SAAS;YAAEI,QAAQvB,uBAAuB;YAAUwB,OAAOxB,uBAAuB;QAAY;IACzG,GAAG;QAACW;QAASF;QAAYG;QAAUZ;KAAmB;IAEtD,OAAO;QACLyB,YAAY;YACVC,MAAM;YACNC,MAAM;YACNC,oBAAoB;QACtB;QACAF,MAAMxC,oBAAAA,CAAK2C,MAAM,KACf5C,wCAAAA,EAAyB,OAAO;YAC9BW,SAAKR,6BAAAA,EAAcQ,KAAKM,WAAWK,SAASC;YAC5CsB,MAAM;YACN,mBAAmBjB;YACnB,GAAGlB,KAAK;QACV,IACA;YAAEoC,aAAa;QAAM;QAEvBJ,MAAMzC,oBAAAA,CAAK8C,QAAQ,CAACrC,MAAMgC,IAAI,EAAE;YAC9BM,iBAAiB;YACjBF,aAAa;QACf;QACAH,oBAAoB1C,oBAAAA,CAAK8C,QAAQ,CAACrC,MAAMiC,kBAAkB,EAAE;YAC1DK,iBAAiB7B,mBAAmB;YACpC2B,aAAa;QACf;QACAlC,QAAQO;QACRN;QACAQ;QACAG;QACAE;QACAE;IACF;AACF,EAAE;AAWK,+BAA+B,CAAClB,OAAwBC;IAC7D,MAAM,EAAEuC,QAAQ,SAAS,EAAE,GAAGC,WAAW,GAAGzC;IAE5C,MAAM0C,QAAQ3C,2BAA2B0C,WAAWxC;IAEpD,OAAO;QACL,GAAGyC,KAAK;QACRF;QACAR,MAAMzC,oBAAAA,CAAK8C,QAAQ,CAACrC,MAAMgC,IAAI,EAAE;YAC9BW,cAAc;gBACZC,cAAUjD,4BAAAA,EAAc+C,MAAMvC,MAAM;YACtC;YACAmC,iBAAiB;YACjBF,aAAa;QACf;IACF;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/MessageBar/useMessageBar.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getIntrinsicElementProps, slot, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport { useAnnounce } from '@fluentui/react-shared-contexts';\nimport type { MessageBarBaseProps, MessageBarBaseState, MessageBarProps, MessageBarState } from './MessageBar.types';\nimport { getIntentIcon } from './getIntentIcon';\nimport { useMessageBarReflow } from './useMessageBarReflow';\nimport { useMessageBarTransitionContext } from '../../contexts/messageBarTransitionContext';\nimport { useMotionForwardedRef } from '@fluentui/react-motion';\n\n/**\n * Create the base state required to render MessageBar without design-specific props.\n *\n * @param props - props from this instance of MessageBar (without shape)\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBarBase_unstable = (\n props: MessageBarBaseProps,\n ref: React.Ref<HTMLDivElement>,\n): MessageBarBaseState => {\n const { layout = 'auto', intent = 'info', politeness } = props;\n const computedPoliteness = politeness ?? intent === 'info' ? 'polite' : 'assertive';\n const autoReflow = layout === 'auto';\n const { ref: reflowRef, reflowing } = useMessageBarReflow(autoReflow);\n const computedLayout = autoReflow ? (reflowing ? 'multiline' : 'singleline') : layout;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { className: transitionClassName, nodeRef } = useMessageBarTransitionContext();\n\n const actionsRef = React.useRef<HTMLDivElement | null>(null);\n const bodyRef = React.useRef<HTMLDivElement | null>(null);\n const { announce } = useAnnounce();\n const titleId = useId();\n\n React.useEffect(() => {\n const bodyMessage = bodyRef.current?.textContent;\n const actionsMessage = actionsRef.current?.textContent;\n\n const message = [bodyMessage, actionsMessage].filter(Boolean).join(',');\n announce(message, { polite: computedPoliteness === 'polite', alert: computedPoliteness === 'assertive' });\n }, [bodyRef, actionsRef, announce, computedPoliteness]);\n\n return {\n components: {\n root: 'div',\n icon: 'div',\n bottomReflowSpacer: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref: useMergedRefs(ref, reflowRef, nodeRef),\n role: 'group',\n 'aria-labelledby': titleId,\n ...props,\n }),\n { elementType: 'div' },\n ),\n icon: slot.optional(props.icon, {\n renderByDefault: true,\n elementType: 'div',\n }),\n bottomReflowSpacer: slot.optional(props.bottomReflowSpacer, {\n renderByDefault: computedLayout === 'multiline',\n elementType: 'div',\n }),\n layout: computedLayout,\n intent,\n transitionClassName,\n actionsRef,\n bodyRef,\n titleId,\n };\n};\n\n/**\n * Create the state required to render MessageBar.\n *\n * The returned state can be modified with hooks such as useMessageBarStyles_unstable,\n * before being passed to renderMessageBar_unstable.\n *\n * @param props - props from this instance of MessageBar\n * @param ref - reference to root HTMLElement of MessageBar\n */\nexport const useMessageBar_unstable = (props: MessageBarProps, ref: React.Ref<HTMLDivElement>): MessageBarState => {\n const { shape = 'rounded', ...baseProps } = props;\n\n const motionRef = useMotionForwardedRef();\n const state = useMessageBarBase_unstable(baseProps, useMergedRefs(ref, motionRef));\n\n return {\n ...state,\n shape,\n icon: slot.optional(props.icon, {\n defaultProps: {\n children: getIntentIcon(state.intent),\n },\n renderByDefault: true,\n elementType: 'div',\n }),\n };\n};\n"],"names":["React","getIntrinsicElementProps","slot","useId","useMergedRefs","useAnnounce","getIntentIcon","useMessageBarReflow","useMessageBarTransitionContext","useMotionForwardedRef","useMessageBarBase_unstable","props","ref","layout","intent","politeness","computedPoliteness","autoReflow","reflowRef","reflowing","computedLayout","className","transitionClassName","nodeRef","actionsRef","useRef","bodyRef","announce","titleId","useEffect","bodyMessage","current","textContent","actionsMessage","message","filter","Boolean","join","polite","alert","components","root","icon","bottomReflowSpacer","always","role","elementType","optional","renderByDefault","useMessageBar_unstable","shape","baseProps","motionRef","state","defaultProps","children"],"mappings":"AAAA;;;;;;;;;;;;IAiBaU,0BAAAA;;;0BAmEAuC;eAAAA;;;;iEAlFU,QAAQ;gCACsC,4BAA4B;qCACrE,kCAAkC;+BAEhC,qBAAkB;qCACZ,2BAAwB;6CACb,gDAA6C;6BACtD,yBAAyB;AAQxD,mCAAmC,CACxCtC,OACAC;IAEA,MAAM,EAAEC,SAAS,MAAM,EAAEC,SAAS,MAAM,EAAEC,UAAU,EAAE,GAAGJ;IACzD,MAAMK,qBAAqBD,CAAAA,eAAAA,QAAAA,eAAAA,KAAAA,IAAAA,aAAcD,WAAW,MAAA,CAAK,GAAI,WAAW;IACxE,MAAMG,aAAaJ,WAAW;IAC9B,MAAM,EAAED,KAAKM,SAAS,EAAEC,SAAS,EAAE,OAAGZ,wCAAAA,EAAoBU;IAC1D,MAAMG,iBAAiBH,aAAcE,YAAY,cAAc,eAAgBN;IAE/E,4DAA4D;IAC5D,MAAM,EAAEQ,WAAWC,mBAAmB,EAAEC,OAAO,EAAE,OAAGf,2DAAAA;IAEpD,MAAMgB,aAAaxB,OAAMyB,MAAM,CAAwB;IACvD,MAAMC,UAAU1B,OAAMyB,MAAM,CAAwB;IACpD,MAAM,EAAEE,QAAQ,EAAE,GAAGtB,oCAAAA;IACrB,MAAMuB,cAAUzB,qBAAAA;IAEhBH,OAAM6B,SAAS,CAAC;YACMH,kBACGF;QADvB,MAAMM,cAAAA,CAAcJ,mBAAAA,QAAQK,OAAO,AAAPA,MAAO,QAAfL,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBM,WAAW;QAChD,MAAMC,iBAAAA,CAAiBT,sBAAAA,WAAWO,OAAAA,AAAO,MAAA,QAAlBP,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoBQ,WAAW;QAEtD,MAAME,UAAU;YAACJ;YAAaG;SAAe,CAACE,MAAM,CAACC,SAASC,IAAI,CAAC;QACnEV,SAASO,SAAS;YAAEI,QAAQtB,uBAAuB;YAAUuB,OAAOvB,uBAAuB;QAAY;IACzG,GAAG;QAACU;QAASF;QAAYG;QAAUX;KAAmB;IAEtD,OAAO;QACLwB,YAAY;YACVC,MAAM;YACNC,MAAM;YACNC,oBAAoB;QACtB;QACAF,MAAMvC,oBAAAA,CAAK0C,MAAM,KACf3C,wCAAAA,EAAyB,OAAO;YAC9BW,SAAKR,6BAAAA,EAAcQ,KAAKM,WAAWK;YACnCsB,MAAM;YACN,mBAAmBjB;YACnB,GAAGjB,KAAK;QACV,IACA;YAAEmC,aAAa;QAAM;QAEvBJ,MAAMxC,oBAAAA,CAAK6C,QAAQ,CAACpC,MAAM+B,IAAI,EAAE;YAC9BM,iBAAiB;YACjBF,aAAa;QACf;QACAH,oBAAoBzC,oBAAAA,CAAK6C,QAAQ,CAACpC,MAAMgC,kBAAkB,EAAE;YAC1DK,iBAAiB5B,mBAAmB;YACpC0B,aAAa;QACf;QACAjC,QAAQO;QACRN;QACAQ;QACAE;QACAE;QACAE;IACF;AACF,EAAE;AAWK,+BAA+B,CAACjB,OAAwBC;IAC7D,MAAM,EAAEsC,QAAQ,SAAS,EAAE,GAAGC,WAAW,GAAGxC;IAE5C,MAAMyC,gBAAY3C,kCAAAA;IAClB,MAAM4C,QAAQ3C,2BAA2ByC,eAAW/C,6BAAAA,EAAcQ,KAAKwC;IAEvE,OAAO;QACL,GAAGC,KAAK;QACRH;QACAR,MAAMxC,oBAAAA,CAAK6C,QAAQ,CAACpC,MAAM+B,IAAI,EAAE;YAC9BY,cAAc;gBACZC,cAAUjD,4BAAAA,EAAc+C,MAAMvC,MAAM;YACtC;YACAkC,iBAAiB;YACjBF,aAAa;QACf;IACF;AACF,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-message-bar",
3
- "version": "9.7.5",
3
+ "version": "9.7.6",
4
4
  "description": "Fluent UI MessageBar component",
5
5
  "main": "lib-commonjs/index.cjs",
6
6
  "module": "lib/index.js",
@@ -16,8 +16,8 @@
16
16
  "@fluentui/react-icons": "^2.0.245",
17
17
  "@fluentui/react-jsx-runtime": "^9.4.5",
18
18
  "@fluentui/react-link": "^9.8.4",
19
- "@fluentui/react-motion": "^9.16.2",
20
- "@fluentui/react-motion-components-preview": "^0.15.7",
19
+ "@fluentui/react-motion": "^9.16.3",
20
+ "@fluentui/react-motion-components-preview": "^0.15.8",
21
21
  "@fluentui/react-shared-contexts": "^9.26.3",
22
22
  "@fluentui/react-theme": "^9.2.2",
23
23
  "@fluentui/react-utilities": "^9.26.6",
@@ -25,10 +25,10 @@
25
25
  "@swc/helpers": "^0.5.1"
26
26
  },
27
27
  "peerDependencies": {
28
- "@types/react": ">=16.8.0 <20.0.0",
29
- "@types/react-dom": ">=16.8.0 <20.0.0",
28
+ "@types/react": ">=16.14.0 <20.0.0",
29
+ "@types/react-dom": ">=16.9.0 <20.0.0",
30
30
  "react": ">=16.14.0 <20.0.0",
31
- "react-dom": ">=16.8.0 <20.0.0"
31
+ "react-dom": ">=16.14.0 <20.0.0"
32
32
  },
33
33
  "exports": {
34
34
  ".": {