@fluentui/react-accordion 9.9.2 → 9.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/dist/index.d.ts +40 -4
  3. package/lib/AccordionHeader.js.map +1 -1
  4. package/lib/components/Accordion/Accordion.types.js +1 -1
  5. package/lib/components/Accordion/Accordion.types.js.map +1 -1
  6. package/lib/components/Accordion/renderAccordion.js.map +1 -1
  7. package/lib/components/Accordion/useAccordion.js.map +1 -1
  8. package/lib/components/Accordion/useAccordionContextValues.js +10 -3
  9. package/lib/components/Accordion/useAccordionContextValues.js.map +1 -1
  10. package/lib/components/AccordionHeader/AccordionHeader.types.js.map +1 -1
  11. package/lib/components/AccordionHeader/index.js.map +1 -1
  12. package/lib/components/AccordionHeader/renderAccordionHeader.js.map +1 -1
  13. package/lib/components/AccordionHeader/useAccordionHeader.js +8 -5
  14. package/lib/components/AccordionHeader/useAccordionHeader.js.map +1 -1
  15. package/lib/components/AccordionItem/AccordionItem.types.js.map +1 -1
  16. package/lib/components/AccordionItem/useAccordionItem.js +0 -1
  17. package/lib/components/AccordionItem/useAccordionItem.js.map +1 -1
  18. package/lib/components/AccordionItem/useAccordionItemContextValues.js.map +1 -1
  19. package/lib/components/AccordionPanel/AccordionPanel.types.js.map +1 -1
  20. package/lib/components/AccordionPanel/useAccordionPanel.js +8 -2
  21. package/lib/components/AccordionPanel/useAccordionPanel.js.map +1 -1
  22. package/lib/contexts/accordion.js.map +1 -1
  23. package/lib/contexts/accordionItem.js.map +1 -1
  24. package/lib/index.js +3 -9
  25. package/lib/index.js.map +1 -1
  26. package/lib-commonjs/AccordionHeader.js.map +1 -1
  27. package/lib-commonjs/components/Accordion/Accordion.types.js +0 -2
  28. package/lib-commonjs/components/Accordion/Accordion.types.js.map +1 -1
  29. package/lib-commonjs/components/Accordion/renderAccordion.js.map +1 -1
  30. package/lib-commonjs/components/Accordion/useAccordion.js.map +1 -1
  31. package/lib-commonjs/components/Accordion/useAccordionContextValues.js +11 -3
  32. package/lib-commonjs/components/Accordion/useAccordionContextValues.js.map +1 -1
  33. package/lib-commonjs/components/AccordionHeader/AccordionHeader.types.js.map +1 -1
  34. package/lib-commonjs/components/AccordionHeader/index.js.map +1 -1
  35. package/lib-commonjs/components/AccordionHeader/renderAccordionHeader.js.map +1 -1
  36. package/lib-commonjs/components/AccordionHeader/useAccordionHeader.js +8 -5
  37. package/lib-commonjs/components/AccordionHeader/useAccordionHeader.js.map +1 -1
  38. package/lib-commonjs/components/AccordionItem/AccordionItem.types.js.map +1 -1
  39. package/lib-commonjs/components/AccordionItem/useAccordionItem.js +0 -2
  40. package/lib-commonjs/components/AccordionItem/useAccordionItem.js.map +1 -1
  41. package/lib-commonjs/components/AccordionItem/useAccordionItemContextValues.js.map +1 -1
  42. package/lib-commonjs/components/AccordionPanel/AccordionPanel.types.js.map +1 -1
  43. package/lib-commonjs/components/AccordionPanel/useAccordionPanel.js +8 -3
  44. package/lib-commonjs/components/AccordionPanel/useAccordionPanel.js.map +1 -1
  45. package/lib-commonjs/contexts/accordion.js.map +1 -1
  46. package/lib-commonjs/contexts/accordionItem.js.map +1 -1
  47. package/lib-commonjs/index.js +9 -6
  48. package/lib-commonjs/index.js.map +1 -1
  49. package/package.json +8 -8
package/CHANGELOG.md CHANGED
@@ -1,12 +1,44 @@
1
1
  # Change Log - @fluentui/react-accordion
2
2
 
3
- This log was last generated on Tue, 03 Mar 2026 09:41:33 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 23 Apr 2026 11:59:38 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.11.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-accordion_v9.11.0)
8
+
9
+ Thu, 23 Apr 2026 11:59:38 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-accordion_v9.10.0..@fluentui/react-accordion_v9.11.0)
11
+
12
+ ### Minor changes
13
+
14
+ - feat: add CollapseParams to the motion slot type ([PR #36011](https://github.com/microsoft/fluentui/pull/36011) by robertpenner@microsoft.com)
15
+ - Bump @fluentui/react-aria to v9.17.11 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
16
+ - Bump @fluentui/react-context-selector to v9.2.16 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
17
+ - Bump @fluentui/react-jsx-runtime to v9.4.2 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
18
+ - Bump @fluentui/react-motion to v9.15.0 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
19
+ - Bump @fluentui/react-motion-components-preview to v0.15.4 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
20
+ - Bump @fluentui/react-tabster to v9.26.14 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
21
+ - Bump @fluentui/react-utilities to v9.26.3 ([PR #35996](https://github.com/microsoft/fluentui/pull/35996) by beachball)
22
+
23
+ ### Patches
24
+
25
+ - perf: memoize context values in use*ContextValues hooks ([PR #36008](https://github.com/microsoft/fluentui/pull/36008) by olfedias@microsoft.com)
26
+ - fix: prevent keyboard focus from entering a collapsing panel ([PR #35960](https://github.com/microsoft/fluentui/pull/35960) by 198982749+Copilot@users.noreply.github.com)
27
+
28
+ ## [9.10.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-accordion_v9.10.0)
29
+
30
+ Mon, 30 Mar 2026 14:37:39 GMT
31
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-accordion_v9.9.2..@fluentui/react-accordion_v9.10.0)
32
+
33
+ ### Minor changes
34
+
35
+ - feat: expose base hooks and types for Accordion components ([PR #35897](https://github.com/microsoft/fluentui/pull/35897) by dmytrokirpa@microsoft.com)
36
+ - Bump @fluentui/react-motion to v9.14.0 ([PR #35907](https://github.com/microsoft/fluentui/pull/35907) by beachball)
37
+ - Bump @fluentui/react-motion-components-preview to v0.15.3 ([PR #35907](https://github.com/microsoft/fluentui/pull/35907) by beachball)
38
+
7
39
  ## [9.9.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-accordion_v9.9.2)
8
40
 
9
- Tue, 03 Mar 2026 09:41:33 GMT
41
+ Tue, 03 Mar 2026 09:43:43 GMT
10
42
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-accordion_v9.9.1..@fluentui/react-accordion_v9.9.2)
11
43
 
12
44
  ### Patches
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import type { ARIAButtonSlotProps } from '@fluentui/react-aria';
2
+ import type { CollapseParams } from '@fluentui/react-motion-components-preview';
2
3
  import type { ComponentProps } from '@fluentui/react-utilities';
3
4
  import type { ComponentState } from '@fluentui/react-utilities';
4
- import { ContextSelector } from '@fluentui/react-context-selector';
5
+ import type { ContextSelector } from '@fluentui/react-context-selector';
5
6
  import { FC } from 'react';
6
7
  import type { ForwardRefComponent } from '@fluentui/react-utilities';
7
8
  import type { JSXElement } from '@fluentui/react-utilities';
@@ -17,6 +18,10 @@ import type { SlotClassNames } from '@fluentui/react-utilities';
17
18
  */
18
19
  export declare const Accordion: ForwardRefComponent<AccordionProps> & (<TItem>(props: AccordionProps<TItem>) => JSXElement);
19
20
 
21
+ export declare type AccordionBaseProps<Value = AccordionItemValue> = Omit<AccordionProps<Value>, 'navigation'>;
22
+
23
+ export declare type AccordionBaseState<Value = AccordionItemValue> = Omit<AccordionState<Value>, 'navigation'>;
24
+
20
25
  export declare const accordionClassNames: SlotClassNames<AccordionSlots>;
21
26
 
22
27
  export declare type AccordionContextValue<Value = AccordionItemValue> = {
@@ -44,6 +49,10 @@ export declare type AccordionContextValues = {
44
49
  */
45
50
  export declare const AccordionHeader: ForwardRefComponent<AccordionHeaderProps>;
46
51
 
52
+ export declare type AccordionHeaderBaseProps = Omit<AccordionHeaderProps, 'inline' | 'size'>;
53
+
54
+ export declare type AccordionHeaderBaseState = Omit<AccordionHeaderState, 'inline' | 'size'>;
55
+
47
56
  export declare const accordionHeaderClassNames: SlotClassNames<AccordionHeaderSlots>;
48
57
 
49
58
  export declare type AccordionHeaderContextValue = {
@@ -148,13 +157,17 @@ export declare type AccordionItemValue = unknown;
148
157
  */
149
158
  export declare const AccordionPanel: ForwardRefComponent<AccordionPanelProps>;
150
159
 
160
+ export declare type AccordionPanelBaseProps = ComponentProps<Omit<AccordionPanelSlots, 'collapseMotion'>>;
161
+
162
+ export declare type AccordionPanelBaseState = ComponentState<Omit<AccordionPanelSlots, 'collapseMotion'>> & Pick<AccordionPanelState, 'open'>;
163
+
151
164
  export declare const accordionPanelClassNames: SlotClassNames<Omit<AccordionPanelSlots, 'collapseMotion'>>;
152
165
 
153
166
  export declare type AccordionPanelProps = ComponentProps<AccordionPanelSlots>;
154
167
 
155
168
  export declare type AccordionPanelSlots = {
156
169
  root: NonNullable<Slot<'div'>>;
157
- collapseMotion?: Slot<PresenceMotionSlotProps>;
170
+ collapseMotion?: Slot<PresenceMotionSlotProps<CollapseParams>>;
158
171
  };
159
172
 
160
173
  export declare type AccordionPanelState = ComponentState<AccordionPanelSlots> & {
@@ -216,12 +229,12 @@ export declare type AccordionToggleEventHandler<Value = AccordionItemValue> = (e
216
229
  /**
217
230
  * Function that renders the final JSX of the component
218
231
  */
219
- export declare const renderAccordion_unstable: (state: AccordionState, contextValues: AccordionContextValues) => JSXElement;
232
+ export declare const renderAccordion_unstable: (state: AccordionBaseState, contextValues: AccordionContextValues) => JSXElement;
220
233
 
221
234
  /**
222
235
  * Function that renders the final JSX of the component
223
236
  */
224
- export declare const renderAccordionHeader_unstable: (state: AccordionHeaderState, contextValues: AccordionHeaderContextValues) => JSXElement;
237
+ export declare const renderAccordionHeader_unstable: (state: AccordionHeaderBaseState, contextValues: AccordionHeaderContextValues) => JSXElement;
225
238
 
226
239
  /**
227
240
  * Function that renders the final JSX of the component
@@ -240,6 +253,13 @@ export declare const renderAccordionPanel_unstable: (state: AccordionPanelState)
240
253
  */
241
254
  export declare const useAccordion_unstable: <Value = unknown>(props: AccordionProps<Value>, ref: React_2.Ref<HTMLElement>) => AccordionState<Value>;
242
255
 
256
+ /**
257
+ * Returns the props and state required to render the component
258
+ * @param props - Accordion properties
259
+ * @param ref - reference to root HTMLElement of Accordion
260
+ */
261
+ export declare const useAccordionBase_unstable: <Value = unknown>(props: AccordionBaseProps<Value>, ref: React_2.Ref<HTMLElement>) => AccordionBaseState<Value>;
262
+
243
263
  export declare const useAccordionContext_unstable: <T>(selector: ContextSelector<AccordionContextValue, T>) => T;
244
264
 
245
265
  export declare function useAccordionContextValues_unstable(state: AccordionState): AccordionContextValues;
@@ -252,6 +272,14 @@ export declare function useAccordionContextValues_unstable(state: AccordionState
252
272
  */
253
273
  export declare const useAccordionHeader_unstable: (props: AccordionHeaderProps, ref: React_2.Ref<HTMLElement>) => AccordionHeaderState;
254
274
 
275
+ /**
276
+ * Base state hook for AccordionHeader, without design related features.
277
+ *
278
+ * @param props - AccordionHeader properties
279
+ * @param ref - reference to root HTMLElement of AccordionHeader
280
+ */
281
+ export declare const useAccordionHeaderBase_unstable: (props: AccordionHeaderBaseProps, ref: React_2.Ref<HTMLElement>) => AccordionHeaderBaseState;
282
+
255
283
  export declare const useAccordionHeaderContext_unstable: () => AccordionHeaderContextValue;
256
284
 
257
285
  export declare function useAccordionHeaderContextValues_unstable(state: AccordionHeaderState): AccordionHeaderContextValues;
@@ -279,6 +307,14 @@ export declare const useAccordionItemStyles_unstable: (state: AccordionItemState
279
307
  */
280
308
  export declare const useAccordionPanel_unstable: (props: AccordionPanelProps, ref: React_2.Ref<HTMLElement>) => AccordionPanelState;
281
309
 
310
+ /**
311
+ * Base state hook for AccordionPanel, without design related features.
312
+ *
313
+ * @param props - AccordionPanelBaseProps properties
314
+ * @param ref - reference to root HTMLElement of AccordionPanel
315
+ */
316
+ export declare const useAccordionPanelBase_unstable: (props: AccordionPanelBaseProps, ref: React_2.Ref<HTMLElement>) => AccordionPanelBaseState;
317
+
282
318
  /** Applies style classnames to slots */
283
319
  export declare const useAccordionPanelStyles_unstable: (state: AccordionPanelState) => AccordionPanelState;
284
320
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AccordionHeader.ts"],"sourcesContent":["export type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n} from './components/AccordionHeader/index';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n useAccordionHeaderBase_unstable,\n} from './components/AccordionHeader/index';\n"],"names":["AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable"],"mappings":"AAQA,SACEA,eAAe,EACfC,yBAAyB,EACzBC,8BAA8B,EAC9BC,wCAAwC,EACxCC,iCAAiC,EACjCC,2BAA2B,EAC3BC,+BAA+B,QAC1B,qCAAqC"}
1
+ {"version":3,"sources":["../src/AccordionHeader.ts"],"sourcesContent":["export type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n AccordionHeaderBaseState,\n AccordionHeaderBaseProps,\n} from './components/AccordionHeader/index';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n useAccordionHeaderBase_unstable,\n} from './components/AccordionHeader/index';\n"],"names":["AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable"],"mappings":"AAUA,SACEA,eAAe,EACfC,yBAAyB,EACzBC,8BAA8B,EAC9BC,wCAAwC,EACxCC,iCAAiC,EACjCC,2BAA2B,EAC3BC,+BAA+B,QAC1B,qCAAqC"}
@@ -1 +1 @@
1
- import * as React from 'react';
1
+ export { };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/Accordion.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\n\nexport type AccordionIndex = number | number[];\n\nexport type AccordionToggleEvent<E = HTMLElement> = React.MouseEvent<E> | React.KeyboardEvent<E>;\n\nexport type AccordionToggleEventHandler<Value = AccordionItemValue> = (\n event: AccordionToggleEvent,\n data: AccordionToggleData<Value>,\n) => void;\n\nexport type AccordionContextValues = {\n accordion: AccordionContextValue;\n};\n\nexport type AccordionSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionToggleData<Value = AccordionItemValue> = {\n value: Value;\n openItems: Value[];\n};\n\nexport type AccordionProps<Value = AccordionItemValue> = Omit<ComponentProps<AccordionSlots>, 'onToggle'> & {\n /**\n * Default value for the uncontrolled state of the panel.\n */\n defaultOpenItems?: Value | Value[];\n\n /**\n * Indicates if Accordion support multiple Panels closed at the same time.\n */\n collapsible?: boolean;\n\n /**\n * Indicates if Accordion support multiple Panels opened at the same time.\n */\n multiple?: boolean;\n\n /**\n * @deprecated Arrow keyboard navigation is not recommended for accordions. Consider using Tree if arrow navigation is a hard requirement.\n * Indicates if keyboard navigation is available and gives two options, linear or circular navigation.\n */\n navigation?: 'linear' | 'circular';\n\n /**\n * Callback to be called when the opened items change.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onToggle?: AccordionToggleEventHandler<Value>;\n\n /**\n * Controls the state of the panel.\n */\n openItems?: Value | Value[];\n};\n\nexport type AccordionBaseProps<Value = AccordionItemValue> = Omit<AccordionProps<Value>, 'navigation'>;\n\nexport type AccordionState<Value = AccordionItemValue> = ComponentState<AccordionSlots> & AccordionContextValue<Value>;\n\nexport type AccordionBaseState<Value = AccordionItemValue> = Omit<AccordionState<Value>, 'navigation'>;\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
1
+ {"version":3,"sources":["../src/components/Accordion/Accordion.types.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\n\nexport type AccordionIndex = number | number[];\n\nexport type AccordionToggleEvent<E = HTMLElement> = React.MouseEvent<E> | React.KeyboardEvent<E>;\n\nexport type AccordionToggleEventHandler<Value = AccordionItemValue> = (\n event: AccordionToggleEvent,\n data: AccordionToggleData<Value>,\n) => void;\n\nexport type AccordionContextValues = {\n accordion: AccordionContextValue;\n};\n\nexport type AccordionSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionToggleData<Value = AccordionItemValue> = {\n value: Value;\n openItems: Value[];\n};\n\nexport type AccordionProps<Value = AccordionItemValue> = Omit<ComponentProps<AccordionSlots>, 'onToggle'> & {\n /**\n * Default value for the uncontrolled state of the panel.\n */\n defaultOpenItems?: Value | Value[];\n\n /**\n * Indicates if Accordion support multiple Panels closed at the same time.\n */\n collapsible?: boolean;\n\n /**\n * Indicates if Accordion support multiple Panels opened at the same time.\n */\n multiple?: boolean;\n\n /**\n * @deprecated Arrow keyboard navigation is not recommended for accordions. Consider using Tree if arrow navigation is a hard requirement.\n * Indicates if keyboard navigation is available and gives two options, linear or circular navigation.\n */\n navigation?: 'linear' | 'circular';\n\n /**\n * Callback to be called when the opened items change.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onToggle?: AccordionToggleEventHandler<Value>;\n\n /**\n * Controls the state of the panel.\n */\n openItems?: Value | Value[];\n};\n\nexport type AccordionBaseProps<Value = AccordionItemValue> = Omit<AccordionProps<Value>, 'navigation'>;\n\nexport type AccordionState<Value = AccordionItemValue> = ComponentState<AccordionSlots> & AccordionContextValue<Value>;\n\nexport type AccordionBaseState<Value = AccordionItemValue> = Omit<AccordionState<Value>, 'navigation'>;\n"],"names":[],"mappings":"AAiEA,WAAuG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/renderAccordion.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\nimport type { AccordionState, AccordionSlots, AccordionContextValues } from './Accordion.types';\nimport { AccordionProvider } from '../../contexts/accordion';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordion_unstable = (state: AccordionState, contextValues: AccordionContextValues): JSXElement => {\n assertSlots<AccordionSlots>(state);\n\n return (\n <state.root>\n <AccordionProvider value={contextValues.accordion}>{state.root.children}</AccordionProvider>\n </state.root>\n );\n};\n"],"names":["assertSlots","AccordionProvider","renderAccordion_unstable","state","contextValues","root","value","accordion","children"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAIxD,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D;;CAEC,GACD,OAAO,MAAMC,2BAA2B,CAACC,OAAuBC;IAC9DJ,YAA4BG;IAE5B,qBACE,KAACA,MAAME,IAAI;kBACT,cAAA,KAACJ;YAAkBK,OAAOF,cAAcG,SAAS;sBAAGJ,MAAME,IAAI,CAACG,QAAQ;;;AAG7E,EAAE"}
1
+ {"version":3,"sources":["../src/components/Accordion/renderAccordion.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\nimport type { AccordionBaseState, AccordionSlots, AccordionContextValues } from './Accordion.types';\nimport { AccordionProvider } from '../../contexts/accordion';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordion_unstable = (\n state: AccordionBaseState,\n contextValues: AccordionContextValues,\n): JSXElement => {\n assertSlots<AccordionSlots>(state);\n\n return (\n <state.root>\n <AccordionProvider value={contextValues.accordion}>{state.root.children}</AccordionProvider>\n </state.root>\n );\n};\n"],"names":["assertSlots","AccordionProvider","renderAccordion_unstable","state","contextValues","root","value","accordion","children"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAIxD,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D;;CAEC,GACD,OAAO,MAAMC,2BAA2B,CACtCC,OACAC;IAEAJ,YAA4BG;IAE5B,qBACE,KAACA,MAAME,IAAI;kBACT,cAAA,KAACJ;YAAkBK,OAAOF,cAAcG,SAAS;sBAAGJ,MAAME,IAAI,CAACG,QAAQ;;;AAG7E,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/useAccordion.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useControllableState, useEventCallback, slot } from '@fluentui/react-utilities';\nimport type { AccordionBaseProps, AccordionBaseState, AccordionProps, AccordionState } from './Accordion.types';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { AccordionRequestToggleData } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordion_unstable = <Value = AccordionItemValue>(\n props: AccordionProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionState<Value> => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n navigation,\n ...baseProps\n } = props;\n const state = useAccordionBase_unstable(baseProps, ref);\n\n /** FIXME: deprecated will be removed after navigation prop is removed */\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: navigation === 'circular',\n tabbable: true,\n });\n\n return {\n navigation,\n ...state,\n\n root: {\n ...state.root,\n ...(navigation ? arrowNavigationProps : undefined),\n },\n };\n};\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordionBase_unstable = <Value = AccordionItemValue>(\n props: AccordionBaseProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionBaseState<Value> => {\n const {\n openItems: controlledOpenItems,\n defaultOpenItems,\n multiple = false,\n collapsible = false,\n onToggle,\n ...rest\n } = props;\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => normalizeValues(controlledOpenItems), [controlledOpenItems]),\n defaultState: defaultOpenItems && (() => initializeUncontrolledOpenItems({ defaultOpenItems, multiple })),\n initialState: [],\n });\n\n const requestToggle = useEventCallback((data: AccordionRequestToggleData<Value>) => {\n const nextOpenItems = updateOpenItems(data.value, openItems, multiple, collapsible);\n onToggle?.(data.event, { value: data.value, openItems: nextOpenItems });\n setOpenItems(nextOpenItems);\n });\n\n return {\n collapsible,\n multiple,\n openItems,\n requestToggle,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n\n/**\n * Initial value for the uncontrolled case of the list of open indexes\n */\nfunction initializeUncontrolledOpenItems<Value = AccordionItemValue>({\n defaultOpenItems,\n multiple,\n}: Pick<AccordionProps<Value>, 'defaultOpenItems' | 'multiple'>): Value[] {\n if (defaultOpenItems !== undefined) {\n if (Array.isArray(defaultOpenItems)) {\n return multiple ? defaultOpenItems : [defaultOpenItems[0]];\n }\n return [defaultOpenItems];\n }\n return [];\n}\n\n/**\n * Updates the list of open indexes based on an index that changes\n * @param value - the index that will change\n * @param previousOpenItems - list of current open indexes\n * @param multiple - if Accordion support multiple Panels opened at the same time\n * @param collapsible - if Accordion support multiple Panels closed at the same time\n */\nfunction updateOpenItems<Value = AccordionItemValue>(\n value: Value,\n previousOpenItems: Value[],\n multiple: boolean,\n collapsible: boolean,\n) {\n if (multiple) {\n if (previousOpenItems.includes(value)) {\n if (previousOpenItems.length > 1 || collapsible) {\n return previousOpenItems.filter(i => i !== value);\n }\n } else {\n return [...previousOpenItems, value].sort();\n }\n } else {\n return previousOpenItems[0] === value && collapsible ? [] : [value];\n }\n return previousOpenItems;\n}\n\n/**\n * Normalizes Accordion index into an array of indexes\n */\nfunction normalizeValues<Value = AccordionItemValue>(index?: Value | Value[]): Value[] | undefined {\n if (index === undefined) {\n return undefined;\n }\n return Array.isArray(index) ? index : [index];\n}\n"],"names":["React","useControllableState","useEventCallback","slot","useArrowNavigationGroup","useAccordion_unstable","props","ref","navigation","baseProps","state","useAccordionBase_unstable","arrowNavigationProps","circular","tabbable","root","undefined","openItems","controlledOpenItems","defaultOpenItems","multiple","collapsible","onToggle","rest","setOpenItems","useMemo","normalizeValues","defaultState","initializeUncontrolledOpenItems","initialState","requestToggle","data","nextOpenItems","updateOpenItems","value","event","components","always","elementType","Array","isArray","previousOpenItems","includes","length","filter","i","sort","index"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,oBAAoB,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,4BAA4B;AAGzF,SAASC,uBAAuB,QAAQ,0BAA0B;AAGlE;;;;CAIC,GACD,OAAO,MAAMC,wBAAwB,CACnCC,OACAC;IAEA,MAAM,EACJ,4DAA4D;IAC5DC,UAAU,EACV,GAAGC,WACJ,GAAGH;IACJ,MAAMI,QAAQC,0BAA0BF,WAAWF;IAEnD,uEAAuE,GACvE,MAAMK,uBAAuBR,wBAAwB;QACnDS,UAAUL,eAAe;QACzBM,UAAU;IACZ;IAEA,OAAO;QACLN;QACA,GAAGE,KAAK;QAERK,MAAM;YACJ,GAAGL,MAAMK,IAAI;YACb,GAAIP,aAAaI,uBAAuBI,SAAS;QACnD;IACF;AACF,EAAE;AAEF;;;;CAIC,GACD,OAAO,MAAML,4BAA4B,CACvCL,OACAC;IAEA,MAAM,EACJU,WAAWC,mBAAmB,EAC9BC,gBAAgB,EAChBC,WAAW,KAAK,EAChBC,cAAc,KAAK,EACnBC,QAAQ,EACR,GAAGC,MACJ,GAAGjB;IACJ,MAAM,CAACW,WAAWO,aAAa,GAAGvB,qBAAqB;QACrDS,OAAOV,MAAMyB,OAAO,CAAC,IAAMC,gBAAgBR,sBAAsB;YAACA;SAAoB;QACtFS,cAAcR,oBAAqB,CAAA,IAAMS,gCAAgC;gBAAET;gBAAkBC;YAAS,EAAC;QACvGS,cAAc,EAAE;IAClB;IAEA,MAAMC,gBAAgB5B,iBAAiB,CAAC6B;QACtC,MAAMC,gBAAgBC,gBAAgBF,KAAKG,KAAK,EAAEjB,WAAWG,UAAUC;QACvEC,qBAAAA,+BAAAA,SAAWS,KAAKI,KAAK,EAAE;YAAED,OAAOH,KAAKG,KAAK;YAAEjB,WAAWe;QAAc;QACrER,aAAaQ;IACf;IAEA,OAAO;QACLX;QACAD;QACAH;QACAa;QACAM,YAAY;YACVrB,MAAM;QACR;QACAA,MAAMZ,KAAKkC,MAAM,CACf;YACE9B,KAAKA;YACL,GAAGgB,IAAI;QACT,GACA;YAAEe,aAAa;QAAM;IAEzB;AACF,EAAE;AAEF;;CAEC,GACD,SAASV,gCAA4D,EACnET,gBAAgB,EAChBC,QAAQ,EACqD;IAC7D,IAAID,qBAAqBH,WAAW;QAClC,IAAIuB,MAAMC,OAAO,CAACrB,mBAAmB;YACnC,OAAOC,WAAWD,mBAAmB;gBAACA,gBAAgB,CAAC,EAAE;aAAC;QAC5D;QACA,OAAO;YAACA;SAAiB;IAC3B;IACA,OAAO,EAAE;AACX;AAEA;;;;;;CAMC,GACD,SAASc,gBACPC,KAAY,EACZO,iBAA0B,EAC1BrB,QAAiB,EACjBC,WAAoB;IAEpB,IAAID,UAAU;QACZ,IAAIqB,kBAAkBC,QAAQ,CAACR,QAAQ;YACrC,IAAIO,kBAAkBE,MAAM,GAAG,KAAKtB,aAAa;gBAC/C,OAAOoB,kBAAkBG,MAAM,CAACC,CAAAA,IAAKA,MAAMX;YAC7C;QACF,OAAO;YACL,OAAO;mBAAIO;gBAAmBP;aAAM,CAACY,IAAI;QAC3C;IACF,OAAO;QACL,OAAOL,iBAAiB,CAAC,EAAE,KAAKP,SAASb,cAAc,EAAE,GAAG;YAACa;SAAM;IACrE;IACA,OAAOO;AACT;AAEA;;CAEC,GACD,SAASf,gBAA4CqB,KAAuB;IAC1E,IAAIA,UAAU/B,WAAW;QACvB,OAAOA;IACT;IACA,OAAOuB,MAAMC,OAAO,CAACO,SAASA,QAAQ;QAACA;KAAM;AAC/C"}
1
+ {"version":3,"sources":["../src/components/Accordion/useAccordion.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useControllableState, useEventCallback, slot } from '@fluentui/react-utilities';\nimport type { AccordionBaseProps, AccordionBaseState, AccordionProps, AccordionState } from './Accordion.types';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport type { AccordionRequestToggleData } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordion_unstable = <Value = AccordionItemValue>(\n props: AccordionProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionState<Value> => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n navigation,\n ...baseProps\n } = props;\n const state = useAccordionBase_unstable(baseProps, ref);\n\n /** FIXME: deprecated will be removed after navigation prop is removed */\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: navigation === 'circular',\n tabbable: true,\n });\n\n return {\n navigation,\n ...state,\n\n root: {\n ...state.root,\n ...(navigation ? arrowNavigationProps : undefined),\n },\n };\n};\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordionBase_unstable = <Value = AccordionItemValue>(\n props: AccordionBaseProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionBaseState<Value> => {\n const {\n openItems: controlledOpenItems,\n defaultOpenItems,\n multiple = false,\n collapsible = false,\n onToggle,\n ...rest\n } = props;\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => normalizeValues(controlledOpenItems), [controlledOpenItems]),\n defaultState: defaultOpenItems && (() => initializeUncontrolledOpenItems({ defaultOpenItems, multiple })),\n initialState: [],\n });\n\n const requestToggle = useEventCallback((data: AccordionRequestToggleData<Value>) => {\n const nextOpenItems = updateOpenItems(data.value, openItems, multiple, collapsible);\n onToggle?.(data.event, { value: data.value, openItems: nextOpenItems });\n setOpenItems(nextOpenItems);\n });\n\n return {\n collapsible,\n multiple,\n openItems,\n requestToggle,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n\n/**\n * Initial value for the uncontrolled case of the list of open indexes\n */\nfunction initializeUncontrolledOpenItems<Value = AccordionItemValue>({\n defaultOpenItems,\n multiple,\n}: Pick<AccordionProps<Value>, 'defaultOpenItems' | 'multiple'>): Value[] {\n if (defaultOpenItems !== undefined) {\n if (Array.isArray(defaultOpenItems)) {\n return multiple ? defaultOpenItems : [defaultOpenItems[0]];\n }\n return [defaultOpenItems];\n }\n return [];\n}\n\n/**\n * Updates the list of open indexes based on an index that changes\n * @param value - the index that will change\n * @param previousOpenItems - list of current open indexes\n * @param multiple - if Accordion support multiple Panels opened at the same time\n * @param collapsible - if Accordion support multiple Panels closed at the same time\n */\nfunction updateOpenItems<Value = AccordionItemValue>(\n value: Value,\n previousOpenItems: Value[],\n multiple: boolean,\n collapsible: boolean,\n) {\n if (multiple) {\n if (previousOpenItems.includes(value)) {\n if (previousOpenItems.length > 1 || collapsible) {\n return previousOpenItems.filter(i => i !== value);\n }\n } else {\n return [...previousOpenItems, value].sort();\n }\n } else {\n return previousOpenItems[0] === value && collapsible ? [] : [value];\n }\n return previousOpenItems;\n}\n\n/**\n * Normalizes Accordion index into an array of indexes\n */\nfunction normalizeValues<Value = AccordionItemValue>(index?: Value | Value[]): Value[] | undefined {\n if (index === undefined) {\n return undefined;\n }\n return Array.isArray(index) ? index : [index];\n}\n"],"names":["React","useControllableState","useEventCallback","slot","useArrowNavigationGroup","useAccordion_unstable","props","ref","navigation","baseProps","state","useAccordionBase_unstable","arrowNavigationProps","circular","tabbable","root","undefined","openItems","controlledOpenItems","defaultOpenItems","multiple","collapsible","onToggle","rest","setOpenItems","useMemo","normalizeValues","defaultState","initializeUncontrolledOpenItems","initialState","requestToggle","data","nextOpenItems","updateOpenItems","value","event","components","always","elementType","Array","isArray","previousOpenItems","includes","length","filter","i","sort","index"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,oBAAoB,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,4BAA4B;AAGzF,SAASC,uBAAuB,QAAQ,0BAA0B;AAGlE;;;;CAIC,GACD,OAAO,MAAMC,wBAAwB,CACnCC,OACAC;IAEA,MAAM,EACJ,4DAA4D;IAC5DC,UAAU,EACV,GAAGC,WACJ,GAAGH;IACJ,MAAMI,QAAQC,0BAA0BF,WAAWF;IAEnD,uEAAuE,GACvE,MAAMK,uBAAuBR,wBAAwB;QACnDS,UAAUL,eAAe;QACzBM,UAAU;IACZ;IAEA,OAAO;QACLN;QACA,GAAGE,KAAK;QAERK,MAAM;YACJ,GAAGL,MAAMK,IAAI;YACb,GAAIP,aAAaI,uBAAuBI,SAAS;QACnD;IACF;AACF,EAAE;AAEF;;;;CAIC,GACD,OAAO,MAAML,4BAA4B,CACvCL,OACAC;IAEA,MAAM,EACJU,WAAWC,mBAAmB,EAC9BC,gBAAgB,EAChBC,WAAW,KAAK,EAChBC,cAAc,KAAK,EACnBC,QAAQ,EACR,GAAGC,MACJ,GAAGjB;IACJ,MAAM,CAACW,WAAWO,aAAa,GAAGvB,qBAAqB;QACrDS,OAAOV,MAAMyB,OAAO,CAAC,IAAMC,gBAAgBR,sBAAsB;YAACA;SAAoB;QACtFS,cAAcR,oBAAqB,CAAA,IAAMS,gCAAgC;gBAAET;gBAAkBC;YAAS,EAAC;QACvGS,cAAc,EAAE;IAClB;IAEA,MAAMC,gBAAgB5B,iBAAiB,CAAC6B;QACtC,MAAMC,gBAAgBC,gBAAgBF,KAAKG,KAAK,EAAEjB,WAAWG,UAAUC;QACvEC,qBAAAA,+BAAAA,SAAWS,KAAKI,KAAK,EAAE;YAAED,OAAOH,KAAKG,KAAK;YAAEjB,WAAWe;QAAc;QACrER,aAAaQ;IACf;IAEA,OAAO;QACLX;QACAD;QACAH;QACAa;QACAM,YAAY;YACVrB,MAAM;QACR;QACAA,MAAMZ,KAAKkC,MAAM,CACf;YACE9B,KAAKA;YACL,GAAGgB,IAAI;QACT,GACA;YAAEe,aAAa;QAAM;IAEzB;AACF,EAAE;AAEF;;CAEC,GACD,SAASV,gCAA4D,EACnET,gBAAgB,EAChBC,QAAQ,EACqD;IAC7D,IAAID,qBAAqBH,WAAW;QAClC,IAAIuB,MAAMC,OAAO,CAACrB,mBAAmB;YACnC,OAAOC,WAAWD,mBAAmB;gBAACA,gBAAgB,CAAC,EAAE;aAAC;QAC5D;QACA,OAAO;YAACA;SAAiB;IAC3B;IACA,OAAO,EAAE;AACX;AAEA;;;;;;CAMC,GACD,SAASc,gBACPC,KAAY,EACZO,iBAA0B,EAC1BrB,QAAiB,EACjBC,WAAoB;IAEpB,IAAID,UAAU;QACZ,IAAIqB,kBAAkBC,QAAQ,CAACR,QAAQ;YACrC,IAAIO,kBAAkBE,MAAM,GAAG,KAAKtB,aAAa;gBAC/C,OAAOoB,kBAAkBG,MAAM,CAACC,CAAAA,IAAKA,MAAMX;YAC7C;QACF,OAAO;YACL,OAAO;mBAAIO;gBAAmBP;aAAM,CAACY,IAAI;QAC3C;IACF,OAAO;QACL,OAAOL,iBAAiB,CAAC,EAAE,KAAKP,SAASb,cAAc,EAAE,GAAG;YAACa;SAAM;IACrE;IACA,OAAOO;AACT;AAEA;;CAEC,GACD,SAASf,gBAA4CqB,KAAuB;IAC1E,IAAIA,UAAU/B,WAAW;QACvB,OAAOA;IACT;IACA,OAAOuB,MAAMC,OAAO,CAACO,SAASA,QAAQ;QAACA;KAAM;AAC/C"}
@@ -1,13 +1,20 @@
1
+ 'use client';
2
+ import * as React from 'react';
1
3
  export function useAccordionContextValues_unstable(state) {
2
4
  const { navigation, openItems, requestToggle, multiple, collapsible } = state;
3
- // This context is created with "@fluentui/react-context-selector", these is no sense to memoize it
4
- const accordion = {
5
+ const accordion = React.useMemo(()=>({
6
+ navigation,
7
+ openItems,
8
+ requestToggle,
9
+ collapsible,
10
+ multiple
11
+ }), [
5
12
  navigation,
6
13
  openItems,
7
14
  requestToggle,
8
15
  collapsible,
9
16
  multiple
10
- };
17
+ ]);
11
18
  return {
12
19
  accordion
13
20
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/useAccordionContextValues.ts"],"sourcesContent":["import type { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionContextValues, AccordionState } from './Accordion.types';\n\nexport function useAccordionContextValues_unstable(state: AccordionState): AccordionContextValues {\n const { navigation, openItems, requestToggle, multiple, collapsible } = state;\n\n // This context is created with \"@fluentui/react-context-selector\", these is no sense to memoize it\n const accordion: AccordionContextValue = {\n navigation,\n openItems,\n requestToggle,\n collapsible,\n multiple,\n };\n\n return { accordion };\n}\n"],"names":["useAccordionContextValues_unstable","state","navigation","openItems","requestToggle","multiple","collapsible","accordion"],"mappings":"AAGA,OAAO,SAASA,mCAAmCC,KAAqB;IACtE,MAAM,EAAEC,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGL;IAExE,mGAAmG;IACnG,MAAMM,YAAmC;QACvCL;QACAC;QACAC;QACAE;QACAD;IACF;IAEA,OAAO;QAAEE;IAAU;AACrB"}
1
+ {"version":3,"sources":["../src/components/Accordion/useAccordionContextValues.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionContextValues, AccordionState } from './Accordion.types';\n\nexport function useAccordionContextValues_unstable(state: AccordionState): AccordionContextValues {\n const { navigation, openItems, requestToggle, multiple, collapsible } = state;\n\n const accordion = React.useMemo<AccordionContextValue>(\n () => ({\n navigation,\n openItems,\n requestToggle,\n collapsible,\n multiple,\n }),\n [navigation, openItems, requestToggle, collapsible, multiple],\n );\n\n return { accordion };\n}\n"],"names":["React","useAccordionContextValues_unstable","state","navigation","openItems","requestToggle","multiple","collapsible","accordion","useMemo"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAI/B,OAAO,SAASC,mCAAmCC,KAAqB;IACtE,MAAM,EAAEC,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGL;IAExE,MAAMM,YAAYR,MAAMS,OAAO,CAC7B,IAAO,CAAA;YACLN;YACAC;YACAC;YACAE;YACAD;QACF,CAAA,GACA;QAACH;QAAYC;QAAWC;QAAeE;QAAaD;KAAS;IAG/D,OAAO;QAAEE;IAAU;AACrB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/AccordionHeader.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { ARIAButtonSlotProps } from '@fluentui/react-aria';\nimport type { AccordionHeaderContextValue } from '../../contexts/accordionHeader';\n\nexport type AccordionHeaderSize = 'small' | 'medium' | 'large' | 'extra-large';\nexport type AccordionHeaderExpandIconPosition = 'start' | 'end';\n\nexport type AccordionHeaderContextValues = {\n accordionHeader: AccordionHeaderContextValue;\n};\n\nexport type AccordionHeaderSlots = {\n /**\n * The element wrapping the button. By default this is a div, but can be a heading.\n */\n root: NonNullable<Slot<'div', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>>;\n /**\n * The component to be used as button in heading\n */\n button: NonNullable<Slot<ARIAButtonSlotProps<'a'>>>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n expandIcon?: Slot<'span'>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n icon?: Slot<'div'>;\n};\n\nexport type AccordionHeaderProps = ComponentProps<Partial<AccordionHeaderSlots>> & {\n /**\n * The position of the expand icon slot in heading.\n */\n expandIconPosition?: AccordionHeaderExpandIconPosition;\n\n /**\n * Indicates if the AccordionHeader should be rendered inline.\n */\n inline?: boolean;\n\n /**\n * Size of spacing in the heading.\n */\n size?: AccordionHeaderSize;\n};\n\nexport type AccordionHeaderState = ComponentState<AccordionHeaderSlots> &\n Required<Pick<AccordionHeaderProps, 'inline'>> &\n AccordionHeaderContextValue;\n"],"names":[],"mappings":"AA+CA,WAE8B"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/AccordionHeader.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { ARIAButtonSlotProps } from '@fluentui/react-aria';\nimport type { AccordionHeaderContextValue } from '../../contexts/accordionHeader';\n\nexport type AccordionHeaderSize = 'small' | 'medium' | 'large' | 'extra-large';\nexport type AccordionHeaderExpandIconPosition = 'start' | 'end';\n\nexport type AccordionHeaderContextValues = {\n accordionHeader: AccordionHeaderContextValue;\n};\n\nexport type AccordionHeaderSlots = {\n /**\n * The element wrapping the button. By default this is a div, but can be a heading.\n */\n root: NonNullable<Slot<'div', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>>;\n /**\n * The component to be used as button in heading\n */\n button: NonNullable<Slot<ARIAButtonSlotProps<'a'>>>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n expandIcon?: Slot<'span'>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n icon?: Slot<'div'>;\n};\n\nexport type AccordionHeaderProps = ComponentProps<Partial<AccordionHeaderSlots>> & {\n /**\n * The position of the expand icon slot in heading.\n */\n expandIconPosition?: AccordionHeaderExpandIconPosition;\n\n /**\n * Indicates if the AccordionHeader should be rendered inline.\n */\n inline?: boolean;\n\n /**\n * Size of spacing in the heading.\n */\n size?: AccordionHeaderSize;\n};\n\nexport type AccordionHeaderBaseProps = Omit<AccordionHeaderProps, 'inline' | 'size'>;\n\nexport type AccordionHeaderState = ComponentState<AccordionHeaderSlots> &\n Required<Pick<AccordionHeaderProps, 'inline'>> &\n AccordionHeaderContextValue;\n\nexport type AccordionHeaderBaseState = Omit<AccordionHeaderState, 'inline' | 'size'>;\n"],"names":[],"mappings":"AAqDA,WAAqF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/index.ts"],"sourcesContent":["export { AccordionHeader } from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n} from './AccordionHeader.types';\nexport { renderAccordionHeader_unstable } from './renderAccordionHeader';\nexport { useAccordionHeader_unstable, useAccordionHeaderBase_unstable } from './useAccordionHeader';\nexport { useAccordionHeaderContextValues_unstable } from './useAccordionHeaderContextValues';\nexport { accordionHeaderClassNames, useAccordionHeaderStyles_unstable } from './useAccordionHeaderStyles.styles';\n"],"names":["AccordionHeader","renderAccordionHeader_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable","useAccordionHeaderContextValues_unstable","accordionHeaderClassNames","useAccordionHeaderStyles_unstable"],"mappings":"AAAA,SAASA,eAAe,QAAQ,oBAAoB;AASpD,SAASC,8BAA8B,QAAQ,0BAA0B;AACzE,SAASC,2BAA2B,EAAEC,+BAA+B,QAAQ,uBAAuB;AACpG,SAASC,wCAAwC,QAAQ,oCAAoC;AAC7F,SAASC,yBAAyB,EAAEC,iCAAiC,QAAQ,oCAAoC"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/index.ts"],"sourcesContent":["export { AccordionHeader } from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n AccordionHeaderBaseState,\n AccordionHeaderBaseProps,\n} from './AccordionHeader.types';\nexport { renderAccordionHeader_unstable } from './renderAccordionHeader';\nexport { useAccordionHeader_unstable, useAccordionHeaderBase_unstable } from './useAccordionHeader';\nexport { useAccordionHeaderContextValues_unstable } from './useAccordionHeaderContextValues';\nexport { accordionHeaderClassNames, useAccordionHeaderStyles_unstable } from './useAccordionHeaderStyles.styles';\n"],"names":["AccordionHeader","renderAccordionHeader_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable","useAccordionHeaderContextValues_unstable","accordionHeaderClassNames","useAccordionHeaderStyles_unstable"],"mappings":"AAAA,SAASA,eAAe,QAAQ,oBAAoB;AAWpD,SAASC,8BAA8B,QAAQ,0BAA0B;AACzE,SAASC,2BAA2B,EAAEC,+BAA+B,QAAQ,uBAAuB;AACpG,SAASC,wCAAwC,QAAQ,oCAAoC;AAC7F,SAASC,yBAAyB,EAAEC,iCAAiC,QAAQ,oCAAoC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/renderAccordionHeader.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport type { AccordionHeaderState, AccordionHeaderSlots, AccordionHeaderContextValues } from './AccordionHeader.types';\nimport { AccordionHeaderProvider } from '../../contexts/accordionHeader';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordionHeader_unstable = (\n state: AccordionHeaderState,\n contextValues: AccordionHeaderContextValues,\n): JSXElement => {\n assertSlots<AccordionHeaderSlots>(state);\n\n return (\n <AccordionHeaderProvider value={contextValues.accordionHeader}>\n <state.root>\n <state.button>\n {state.expandIconPosition === 'start' && state.expandIcon && <state.expandIcon />}\n {state.icon && <state.icon />}\n {state.root.children}\n {state.expandIconPosition === 'end' && state.expandIcon && <state.expandIcon />}\n </state.button>\n </state.root>\n </AccordionHeaderProvider>\n );\n};\n"],"names":["assertSlots","AccordionHeaderProvider","renderAccordionHeader_unstable","state","contextValues","value","accordionHeader","root","button","expandIconPosition","expandIcon","icon","children"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAGxD,SAASC,uBAAuB,QAAQ,iCAAiC;AAEzE;;CAEC,GACD,OAAO,MAAMC,iCAAiC,CAC5CC,OACAC;IAEAJ,YAAkCG;IAElC,qBACE,KAACF;QAAwBI,OAAOD,cAAcE,eAAe;kBAC3D,cAAA,KAACH,MAAMI,IAAI;sBACT,cAAA,MAACJ,MAAMK,MAAM;;oBACVL,MAAMM,kBAAkB,KAAK,WAAWN,MAAMO,UAAU,kBAAI,KAACP,MAAMO,UAAU;oBAC7EP,MAAMQ,IAAI,kBAAI,KAACR,MAAMQ,IAAI;oBACzBR,MAAMI,IAAI,CAACK,QAAQ;oBACnBT,MAAMM,kBAAkB,KAAK,SAASN,MAAMO,UAAU,kBAAI,KAACP,MAAMO,UAAU;;;;;AAKtF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/renderAccordionHeader.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport type {\n AccordionHeaderBaseState,\n AccordionHeaderSlots,\n AccordionHeaderContextValues,\n} from './AccordionHeader.types';\nimport { AccordionHeaderProvider } from '../../contexts/accordionHeader';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordionHeader_unstable = (\n state: AccordionHeaderBaseState,\n contextValues: AccordionHeaderContextValues,\n): JSXElement => {\n assertSlots<AccordionHeaderSlots>(state);\n\n return (\n <AccordionHeaderProvider value={contextValues.accordionHeader}>\n <state.root>\n <state.button>\n {state.expandIconPosition === 'start' && state.expandIcon && <state.expandIcon />}\n {state.icon && <state.icon />}\n {state.root.children}\n {state.expandIconPosition === 'end' && state.expandIcon && <state.expandIcon />}\n </state.button>\n </state.root>\n </AccordionHeaderProvider>\n );\n};\n"],"names":["assertSlots","AccordionHeaderProvider","renderAccordionHeader_unstable","state","contextValues","value","accordionHeader","root","button","expandIconPosition","expandIcon","icon","children"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAOxD,SAASC,uBAAuB,QAAQ,iCAAiC;AAEzE;;CAEC,GACD,OAAO,MAAMC,iCAAiC,CAC5CC,OACAC;IAEAJ,YAAkCG;IAElC,qBACE,KAACF;QAAwBI,OAAOD,cAAcE,eAAe;kBAC3D,cAAA,KAACH,MAAMI,IAAI;sBACT,cAAA,MAACJ,MAAMK,MAAM;;oBACVL,MAAMM,kBAAkB,KAAK,WAAWN,MAAMO,UAAU,kBAAI,KAACP,MAAMO,UAAU;oBAC7EP,MAAMQ,IAAI,kBAAI,KAACR,MAAMQ,IAAI;oBACzBR,MAAMI,IAAI,CAACK,QAAQ;oBACnBT,MAAMM,kBAAkB,KAAK,SAASN,MAAMO,UAAU,kBAAI,KAACP,MAAMO,UAAU;;;;;AAKtF,EAAE"}
@@ -13,7 +13,8 @@ import { motionTokens } from '@fluentui/react-motion';
13
13
  * @param props - AccordionHeader properties
14
14
  * @param ref - reference to root HTMLElement of AccordionHeader
15
15
  */ export const useAccordionHeader_unstable = (props, ref)=>{
16
- const state = useAccordionHeaderBase_unstable(props, ref);
16
+ const { inline = false, size = 'medium', ...baseProps } = props;
17
+ const state = useAccordionHeaderBase_unstable(baseProps, ref);
17
18
  const { dir } = useFluent();
18
19
  // Calculate how to rotate the expand icon [>] (ChevronRightRegular)
19
20
  let expandIconRotation;
@@ -34,7 +35,11 @@ import { motionTokens } from '@fluentui/react-motion';
34
35
  }
35
36
  });
36
37
  }
37
- return state;
38
+ return {
39
+ ...state,
40
+ inline,
41
+ size
42
+ };
38
43
  };
39
44
  /**
40
45
  * Base state hook for AccordionHeader, without design related features.
@@ -42,7 +47,7 @@ import { motionTokens } from '@fluentui/react-motion';
42
47
  * @param props - AccordionHeader properties
43
48
  * @param ref - reference to root HTMLElement of AccordionHeader
44
49
  */ export const useAccordionHeaderBase_unstable = (props, ref)=>{
45
- const { icon, button, expandIcon, inline = false, size = 'medium', expandIconPosition = 'start', ...rest } = props;
50
+ const { icon, button, expandIcon, expandIconPosition = 'start', ...rest } = props;
46
51
  const { value, disabled, open } = useAccordionItemContext_unstable();
47
52
  const requestToggle = useAccordionContext_unstable((ctx)=>ctx.requestToggle);
48
53
  /**
@@ -73,8 +78,6 @@ import { motionTokens } from '@fluentui/react-motion';
73
78
  return {
74
79
  disabled,
75
80
  open,
76
- size,
77
- inline,
78
81
  expandIconPosition,
79
82
  components: {
80
83
  root: 'div',
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/useAccordionHeader.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useEventCallback, slot, isResolvedShorthand } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\nimport type { AccordionHeaderProps, AccordionHeaderState } from './AccordionHeader.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport { ChevronRightRegular } from '@fluentui/react-icons';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\nimport { motionTokens } from '@fluentui/react-motion';\n\n/**\n * Returns the props and state required to render the component\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeader_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const state = useAccordionHeaderBase_unstable(props, ref);\n const { dir } = useFluent();\n\n // Calculate how to rotate the expand icon [>] (ChevronRightRegular)\n let expandIconRotation: 0 | 90 | -90 | 180;\n if (state.expandIconPosition === 'end') {\n // If expand icon is at the end, the chevron points up [^] when open, and down [v] when closed\n expandIconRotation = state.open ? -90 : 90;\n } else {\n // Otherwise, the chevron points down [v] when open, and right [>] (or left [<] in RTL) when closed\n expandIconRotation = state.open ? 90 : dir !== 'rtl' ? 0 : 180;\n }\n\n if (state.expandIcon) {\n state.expandIcon.children ??= (\n <ChevronRightRegular\n style={{\n transform: `rotate(${expandIconRotation}deg)`,\n transition: `transform ${motionTokens.durationNormal}ms ease-out`,\n }}\n />\n );\n }\n\n return state;\n};\n\n/**\n * Base state hook for AccordionHeader, without design related features.\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeaderBase_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const { icon, button, expandIcon, inline = false, size = 'medium', expandIconPosition = 'start', ...rest } = props;\n const { value, disabled, open } = useAccordionItemContext_unstable();\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n\n /**\n * force disabled state on button if accordion isn't collapsible\n * and this is the only item opened\n */\n const disabledFocusable = useAccordionContext_unstable(ctx => !ctx.collapsible && ctx.openItems.length === 1 && open);\n\n const buttonSlot = slot.always(button, {\n elementType: 'button',\n defaultProps: {\n disabled,\n disabledFocusable,\n 'aria-expanded': open,\n type: 'button',\n },\n });\n\n buttonSlot.onClick = useEventCallback(event => {\n if (isResolvedShorthand(button)) {\n button.onClick?.(event);\n }\n if (!event.defaultPrevented) {\n requestToggle({ value, event });\n }\n });\n\n return {\n disabled,\n open,\n size,\n inline,\n expandIconPosition,\n components: {\n root: 'div',\n button: 'button',\n expandIcon: 'span',\n icon: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n icon: slot.optional(icon, { elementType: 'div' }),\n expandIcon: slot.optional(expandIcon, {\n renderByDefault: true,\n defaultProps: {\n 'aria-hidden': true,\n },\n elementType: 'span',\n }),\n button: useARIAButtonProps(buttonSlot.as, buttonSlot),\n };\n};\n"],"names":["React","useEventCallback","slot","isResolvedShorthand","useARIAButtonProps","useAccordionContext_unstable","ChevronRightRegular","useFluent_unstable","useFluent","useAccordionItemContext_unstable","motionTokens","useAccordionHeader_unstable","props","ref","state","useAccordionHeaderBase_unstable","dir","expandIconRotation","expandIconPosition","open","expandIcon","children","style","transform","transition","durationNormal","icon","button","inline","size","rest","value","disabled","requestToggle","ctx","disabledFocusable","collapsible","openItems","length","buttonSlot","always","elementType","defaultProps","type","onClick","event","defaultPrevented","components","root","optional","renderByDefault","as"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,EAAEC,IAAI,EAAEC,mBAAmB,QAAQ,4BAA4B;AACxF,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,4BAA4B,QAAQ,2BAA2B;AACxE,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,sBAAsBC,SAAS,QAAQ,kCAAkC;AAClF,SAASC,gCAAgC,QAAQ,+BAA+B;AAChF,SAASC,YAAY,QAAQ,yBAAyB;AAEtD;;;;;CAKC,GACD,OAAO,MAAMC,8BAA8B,CACzCC,OACAC;IAEA,MAAMC,QAAQC,gCAAgCH,OAAOC;IACrD,MAAM,EAAEG,GAAG,EAAE,GAAGR;IAEhB,oEAAoE;IACpE,IAAIS;IACJ,IAAIH,MAAMI,kBAAkB,KAAK,OAAO;QACtC,8FAA8F;QAC9FD,qBAAqBH,MAAMK,IAAI,GAAG,CAAC,KAAK;IAC1C,OAAO;QACL,mGAAmG;QACnGF,qBAAqBH,MAAMK,IAAI,GAAG,KAAKH,QAAQ,QAAQ,IAAI;IAC7D;IAEA,IAAIF,MAAMM,UAAU,EAAE;YACpBN;;QAAAA,cAAAA,oBAAAA,MAAMM,UAAU,EAACC,yDAAjBP,kBAAiBO,yBACf,oBAACf;YACCgB,OAAO;gBACLC,WAAW,CAAC,OAAO,EAAEN,mBAAmB,IAAI,CAAC;gBAC7CO,YAAY,CAAC,UAAU,EAAEd,aAAae,cAAc,CAAC,WAAW,CAAC;YACnE;;IAGN;IAEA,OAAOX;AACT,EAAE;AAEF;;;;;CAKC,GACD,OAAO,MAAMC,kCAAkC,CAC7CH,OACAC;IAEA,MAAM,EAAEa,IAAI,EAAEC,MAAM,EAAEP,UAAU,EAAEQ,SAAS,KAAK,EAAEC,OAAO,QAAQ,EAAEX,qBAAqB,OAAO,EAAE,GAAGY,MAAM,GAAGlB;IAC7G,MAAM,EAAEmB,KAAK,EAAEC,QAAQ,EAAEb,IAAI,EAAE,GAAGV;IAClC,MAAMwB,gBAAgB5B,6BAA6B6B,CAAAA,MAAOA,IAAID,aAAa;IAE3E;;;GAGC,GACD,MAAME,oBAAoB9B,6BAA6B6B,CAAAA,MAAO,CAACA,IAAIE,WAAW,IAAIF,IAAIG,SAAS,CAACC,MAAM,KAAK,KAAKnB;IAEhH,MAAMoB,aAAarC,KAAKsC,MAAM,CAACb,QAAQ;QACrCc,aAAa;QACbC,cAAc;YACZV;YACAG;YACA,iBAAiBhB;YACjBwB,MAAM;QACR;IACF;IAEAJ,WAAWK,OAAO,GAAG3C,iBAAiB4C,CAAAA;QACpC,IAAI1C,oBAAoBwB,SAAS;gBAC/BA;aAAAA,kBAAAA,OAAOiB,OAAO,cAAdjB,sCAAAA,qBAAAA,QAAiBkB;QACnB;QACA,IAAI,CAACA,MAAMC,gBAAgB,EAAE;YAC3Bb,cAAc;gBAAEF;gBAAOc;YAAM;QAC/B;IACF;IAEA,OAAO;QACLb;QACAb;QACAU;QACAD;QACAV;QACA6B,YAAY;YACVC,MAAM;YACNrB,QAAQ;YACRP,YAAY;YACZM,MAAM;QACR;QACAsB,MAAM9C,KAAKsC,MAAM,CACf;YACE3B,KAAKA;YACL,GAAGiB,IAAI;QACT,GACA;YAAEW,aAAa;QAAM;QAEvBf,MAAMxB,KAAK+C,QAAQ,CAACvB,MAAM;YAAEe,aAAa;QAAM;QAC/CrB,YAAYlB,KAAK+C,QAAQ,CAAC7B,YAAY;YACpC8B,iBAAiB;YACjBR,cAAc;gBACZ,eAAe;YACjB;YACAD,aAAa;QACf;QACAd,QAAQvB,mBAAmBmC,WAAWY,EAAE,EAAEZ;IAC5C;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/useAccordionHeader.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useEventCallback, slot, isResolvedShorthand } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\nimport type {\n AccordionHeaderBaseProps,\n AccordionHeaderBaseState,\n AccordionHeaderProps,\n AccordionHeaderState,\n} from './AccordionHeader.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport { ChevronRightRegular } from '@fluentui/react-icons';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\nimport { motionTokens } from '@fluentui/react-motion';\n\n/**\n * Returns the props and state required to render the component\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeader_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const { inline = false, size = 'medium', ...baseProps } = props;\n const state = useAccordionHeaderBase_unstable(baseProps, ref);\n const { dir } = useFluent();\n\n // Calculate how to rotate the expand icon [>] (ChevronRightRegular)\n let expandIconRotation: 0 | 90 | -90 | 180;\n if (state.expandIconPosition === 'end') {\n // If expand icon is at the end, the chevron points up [^] when open, and down [v] when closed\n expandIconRotation = state.open ? -90 : 90;\n } else {\n // Otherwise, the chevron points down [v] when open, and right [>] (or left [<] in RTL) when closed\n expandIconRotation = state.open ? 90 : dir !== 'rtl' ? 0 : 180;\n }\n\n if (state.expandIcon) {\n state.expandIcon.children ??= (\n <ChevronRightRegular\n style={{\n transform: `rotate(${expandIconRotation}deg)`,\n transition: `transform ${motionTokens.durationNormal}ms ease-out`,\n }}\n />\n );\n }\n\n return { ...state, inline, size };\n};\n\n/**\n * Base state hook for AccordionHeader, without design related features.\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeaderBase_unstable = (\n props: AccordionHeaderBaseProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderBaseState => {\n const { icon, button, expandIcon, expandIconPosition = 'start', ...rest } = props;\n const { value, disabled, open } = useAccordionItemContext_unstable();\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n\n /**\n * force disabled state on button if accordion isn't collapsible\n * and this is the only item opened\n */\n const disabledFocusable = useAccordionContext_unstable(ctx => !ctx.collapsible && ctx.openItems.length === 1 && open);\n\n const buttonSlot = slot.always(button, {\n elementType: 'button',\n defaultProps: {\n disabled,\n disabledFocusable,\n 'aria-expanded': open,\n type: 'button',\n },\n });\n\n buttonSlot.onClick = useEventCallback(event => {\n if (isResolvedShorthand(button)) {\n button.onClick?.(event);\n }\n if (!event.defaultPrevented) {\n requestToggle({ value, event });\n }\n });\n\n return {\n disabled,\n open,\n expandIconPosition,\n components: {\n root: 'div',\n button: 'button',\n expandIcon: 'span',\n icon: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n icon: slot.optional(icon, { elementType: 'div' }),\n expandIcon: slot.optional(expandIcon, {\n renderByDefault: true,\n defaultProps: {\n 'aria-hidden': true,\n },\n elementType: 'span',\n }),\n button: useARIAButtonProps(buttonSlot.as, buttonSlot),\n };\n};\n"],"names":["React","useEventCallback","slot","isResolvedShorthand","useARIAButtonProps","useAccordionContext_unstable","ChevronRightRegular","useFluent_unstable","useFluent","useAccordionItemContext_unstable","motionTokens","useAccordionHeader_unstable","props","ref","inline","size","baseProps","state","useAccordionHeaderBase_unstable","dir","expandIconRotation","expandIconPosition","open","expandIcon","children","style","transform","transition","durationNormal","icon","button","rest","value","disabled","requestToggle","ctx","disabledFocusable","collapsible","openItems","length","buttonSlot","always","elementType","defaultProps","type","onClick","event","defaultPrevented","components","root","optional","renderByDefault","as"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,EAAEC,IAAI,EAAEC,mBAAmB,QAAQ,4BAA4B;AACxF,SAASC,kBAAkB,QAAQ,uBAAuB;AAO1D,SAASC,4BAA4B,QAAQ,2BAA2B;AACxE,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,sBAAsBC,SAAS,QAAQ,kCAAkC;AAClF,SAASC,gCAAgC,QAAQ,+BAA+B;AAChF,SAASC,YAAY,QAAQ,yBAAyB;AAEtD;;;;;CAKC,GACD,OAAO,MAAMC,8BAA8B,CACzCC,OACAC;IAEA,MAAM,EAAEC,SAAS,KAAK,EAAEC,OAAO,QAAQ,EAAE,GAAGC,WAAW,GAAGJ;IAC1D,MAAMK,QAAQC,gCAAgCF,WAAWH;IACzD,MAAM,EAAEM,GAAG,EAAE,GAAGX;IAEhB,oEAAoE;IACpE,IAAIY;IACJ,IAAIH,MAAMI,kBAAkB,KAAK,OAAO;QACtC,8FAA8F;QAC9FD,qBAAqBH,MAAMK,IAAI,GAAG,CAAC,KAAK;IAC1C,OAAO;QACL,mGAAmG;QACnGF,qBAAqBH,MAAMK,IAAI,GAAG,KAAKH,QAAQ,QAAQ,IAAI;IAC7D;IAEA,IAAIF,MAAMM,UAAU,EAAE;YACpBN;;QAAAA,cAAAA,oBAAAA,MAAMM,UAAU,EAACC,yDAAjBP,kBAAiBO,yBACf,oBAAClB;YACCmB,OAAO;gBACLC,WAAW,CAAC,OAAO,EAAEN,mBAAmB,IAAI,CAAC;gBAC7CO,YAAY,CAAC,UAAU,EAAEjB,aAAakB,cAAc,CAAC,WAAW,CAAC;YACnE;;IAGN;IAEA,OAAO;QAAE,GAAGX,KAAK;QAAEH;QAAQC;IAAK;AAClC,EAAE;AAEF;;;;;CAKC,GACD,OAAO,MAAMG,kCAAkC,CAC7CN,OACAC;IAEA,MAAM,EAAEgB,IAAI,EAAEC,MAAM,EAAEP,UAAU,EAAEF,qBAAqB,OAAO,EAAE,GAAGU,MAAM,GAAGnB;IAC5E,MAAM,EAAEoB,KAAK,EAAEC,QAAQ,EAAEX,IAAI,EAAE,GAAGb;IAClC,MAAMyB,gBAAgB7B,6BAA6B8B,CAAAA,MAAOA,IAAID,aAAa;IAE3E;;;GAGC,GACD,MAAME,oBAAoB/B,6BAA6B8B,CAAAA,MAAO,CAACA,IAAIE,WAAW,IAAIF,IAAIG,SAAS,CAACC,MAAM,KAAK,KAAKjB;IAEhH,MAAMkB,aAAatC,KAAKuC,MAAM,CAACX,QAAQ;QACrCY,aAAa;QACbC,cAAc;YACZV;YACAG;YACA,iBAAiBd;YACjBsB,MAAM;QACR;IACF;IAEAJ,WAAWK,OAAO,GAAG5C,iBAAiB6C,CAAAA;QACpC,IAAI3C,oBAAoB2B,SAAS;gBAC/BA;aAAAA,kBAAAA,OAAOe,OAAO,cAAdf,sCAAAA,qBAAAA,QAAiBgB;QACnB;QACA,IAAI,CAACA,MAAMC,gBAAgB,EAAE;YAC3Bb,cAAc;gBAAEF;gBAAOc;YAAM;QAC/B;IACF;IAEA,OAAO;QACLb;QACAX;QACAD;QACA2B,YAAY;YACVC,MAAM;YACNnB,QAAQ;YACRP,YAAY;YACZM,MAAM;QACR;QACAoB,MAAM/C,KAAKuC,MAAM,CACf;YACE5B,KAAKA;YACL,GAAGkB,IAAI;QACT,GACA;YAAEW,aAAa;QAAM;QAEvBb,MAAM3B,KAAKgD,QAAQ,CAACrB,MAAM;YAAEa,aAAa;QAAM;QAC/CnB,YAAYrB,KAAKgD,QAAQ,CAAC3B,YAAY;YACpC4B,iBAAiB;YACjBR,cAAc;gBACZ,eAAe;YACjB;YACAD,aAAa;QACf;QACAZ,QAAQ1B,mBAAmBoC,WAAWY,EAAE,EAAEZ;IAC5C;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionItem/AccordionItem.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport type AccordionItemContextValues<Value = AccordionItemValue> = {\n accordionItem: AccordionItemContextValue<Value>;\n};\n\nexport type AccordionItemSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionItemProps<Value = AccordionItemValue> = ComponentProps<AccordionItemSlots> & {\n /**\n * Disables opening/closing of panel.\n */\n disabled?: boolean;\n /**\n * Required value that identifies this item inside an Accordion component.\n */\n value: Value;\n};\n\nexport type AccordionItemValue = unknown;\n\nexport type AccordionItemState<Value = AccordionItemValue> = ComponentState<AccordionItemSlots> &\n AccordionItemContextValue<Value>;\n"],"names":[],"mappings":"AAwBA,WACmC"}
1
+ {"version":3,"sources":["../src/components/AccordionItem/AccordionItem.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport type AccordionItemContextValues<Value = AccordionItemValue> = {\n accordionItem: AccordionItemContextValue<Value>;\n};\n\nexport type AccordionItemSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionItemProps<Value = AccordionItemValue> = ComponentProps<AccordionItemSlots> & {\n /**\n * Disables opening/closing of panel.\n */\n disabled?: boolean;\n /**\n * Required value that identifies this item inside an Accordion component.\n */\n value: Value;\n};\n\nexport type AccordionItemValue = unknown;\n\nexport type AccordionItemState<Value = AccordionItemValue> = ComponentState<AccordionItemSlots> &\n AccordionItemContextValue<Value>;\n"],"names":[],"mappings":"AAwBA,WACmC"}
@@ -1,5 +1,4 @@
1
1
  'use client';
2
- import * as React from 'react';
3
2
  import { slot, useEventCallback } from '@fluentui/react-utilities';
4
3
  import { useAccordionContext_unstable } from '../../contexts/accordion';
5
4
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionItem/useAccordionItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { slot, useEventCallback } from '@fluentui/react-utilities';\nimport type { AccordionItemProps, AccordionItemState } from './AccordionItem.types';\nimport type { AccordionToggleEvent } from '../Accordion/Accordion.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionItem properties\n * @param ref - reference to root HTMLElement of AccordionItem\n */\nexport const useAccordionItem_unstable = (\n props: AccordionItemProps,\n ref: React.Ref<HTMLElement>,\n): AccordionItemState => {\n const { value, disabled = false, ...rest } = props;\n\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n const open = useAccordionContext_unstable(ctx => ctx.openItems.includes(value));\n const onAccordionHeaderClick = useEventCallback((event: AccordionToggleEvent) => requestToggle({ event, value }));\n\n return {\n open,\n value,\n disabled,\n onHeaderClick: onAccordionHeaderClick,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n disabled,\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["React","slot","useEventCallback","useAccordionContext_unstable","useAccordionItem_unstable","props","ref","value","disabled","rest","requestToggle","ctx","open","openItems","includes","onAccordionHeaderClick","event","onHeaderClick","components","root","always","elementType"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,EAAEC,gBAAgB,QAAQ,4BAA4B;AAGnE,SAASC,4BAA4B,QAAQ,2BAA2B;AAExE;;;;CAIC,GACD,OAAO,MAAMC,4BAA4B,CACvCC,OACAC;IAEA,MAAM,EAAEC,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGC,MAAM,GAAGJ;IAE7C,MAAMK,gBAAgBP,6BAA6BQ,CAAAA,MAAOA,IAAID,aAAa;IAC3E,MAAME,OAAOT,6BAA6BQ,CAAAA,MAAOA,IAAIE,SAAS,CAACC,QAAQ,CAACP;IACxE,MAAMQ,yBAAyBb,iBAAiB,CAACc,QAAgCN,cAAc;YAAEM;YAAOT;QAAM;IAE9G,OAAO;QACLK;QACAL;QACAC;QACAS,eAAeF;QACfG,YAAY;YACVC,MAAM;QACR;QACAA,MAAMlB,KAAKmB,MAAM,CACf;YACEZ;YACAF,KAAKA;YACL,GAAGG,IAAI;QACT,GACA;YAAEY,aAAa;QAAM;IAEzB;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionItem/useAccordionItem.ts"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { slot, useEventCallback } from '@fluentui/react-utilities';\nimport type { AccordionItemProps, AccordionItemState } from './AccordionItem.types';\nimport type { AccordionToggleEvent } from '../Accordion/Accordion.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionItem properties\n * @param ref - reference to root HTMLElement of AccordionItem\n */\nexport const useAccordionItem_unstable = (\n props: AccordionItemProps,\n ref: React.Ref<HTMLElement>,\n): AccordionItemState => {\n const { value, disabled = false, ...rest } = props;\n\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n const open = useAccordionContext_unstable(ctx => ctx.openItems.includes(value));\n const onAccordionHeaderClick = useEventCallback((event: AccordionToggleEvent) => requestToggle({ event, value }));\n\n return {\n open,\n value,\n disabled,\n onHeaderClick: onAccordionHeaderClick,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n disabled,\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["slot","useEventCallback","useAccordionContext_unstable","useAccordionItem_unstable","props","ref","value","disabled","rest","requestToggle","ctx","open","openItems","includes","onAccordionHeaderClick","event","onHeaderClick","components","root","always","elementType"],"mappings":"AAAA;AAGA,SAASA,IAAI,EAAEC,gBAAgB,QAAQ,4BAA4B;AAGnE,SAASC,4BAA4B,QAAQ,2BAA2B;AAExE;;;;CAIC,GACD,OAAO,MAAMC,4BAA4B,CACvCC,OACAC;IAEA,MAAM,EAAEC,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGC,MAAM,GAAGJ;IAE7C,MAAMK,gBAAgBP,6BAA6BQ,CAAAA,MAAOA,IAAID,aAAa;IAC3E,MAAME,OAAOT,6BAA6BQ,CAAAA,MAAOA,IAAIE,SAAS,CAACC,QAAQ,CAACP;IACxE,MAAMQ,yBAAyBb,iBAAiB,CAACc,QAAgCN,cAAc;YAAEM;YAAOT;QAAM;IAE9G,OAAO;QACLK;QACAL;QACAC;QACAS,eAAeF;QACfG,YAAY;YACVC,MAAM;QACR;QACAA,MAAMlB,KAAKmB,MAAM,CACf;YACEZ;YACAF,KAAKA;YACL,GAAGG,IAAI;QACT,GACA;YAAEY,aAAa;QAAM;IAEzB;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionItem/useAccordionItemContextValues.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionItemContextValues, AccordionItemState } from './AccordionItem.types';\nimport { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport function useAccordionItemContextValues_unstable(state: AccordionItemState): AccordionItemContextValues {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { disabled, open, value, onHeaderClick } = state;\n const accordionItem = React.useMemo<AccordionItemContextValue>(\n () => ({ disabled, open, value, onHeaderClick }),\n [disabled, open, value, onHeaderClick],\n );\n\n return { accordionItem };\n}\n"],"names":["React","useAccordionItemContextValues_unstable","state","disabled","open","value","onHeaderClick","accordionItem","useMemo"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAI/B,OAAO,SAASC,uCAAuCC,KAAyB;IAC9E,4DAA4D;IAC5D,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGJ;IACjD,MAAMK,gBAAgBP,MAAMQ,OAAO,CACjC,IAAO,CAAA;YAAEL;YAAUC;YAAMC;YAAOC;QAAc,CAAA,GAC9C;QAACH;QAAUC;QAAMC;QAAOC;KAAc;IAGxC,OAAO;QAAEC;IAAc;AACzB"}
1
+ {"version":3,"sources":["../src/components/AccordionItem/useAccordionItemContextValues.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionItemContextValues, AccordionItemState } from './AccordionItem.types';\nimport type { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport function useAccordionItemContextValues_unstable(state: AccordionItemState): AccordionItemContextValues {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { disabled, open, value, onHeaderClick } = state;\n const accordionItem = React.useMemo<AccordionItemContextValue>(\n () => ({ disabled, open, value, onHeaderClick }),\n [disabled, open, value, onHeaderClick],\n );\n\n return { accordionItem };\n}\n"],"names":["React","useAccordionItemContextValues_unstable","state","disabled","open","value","onHeaderClick","accordionItem","useMemo"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAI/B,OAAO,SAASC,uCAAuCC,KAAyB;IAC9E,4DAA4D;IAC5D,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGJ;IACjD,MAAMK,gBAAgBP,MAAMQ,OAAO,CACjC,IAAO,CAAA;YAAEL;YAAUC;YAAMC;YAAOC;QAAc,CAAA,GAC9C;QAACH;QAAUC;QAAMC;QAAOC;KAAc;IAGxC,OAAO;QAAEC;IAAc;AACzB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionPanel/AccordionPanel.types.ts"],"sourcesContent":["import type { PresenceMotionSlotProps } from '@fluentui/react-motion';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type AccordionPanelSlots = {\n root: NonNullable<Slot<'div'>>;\n collapseMotion?: Slot<PresenceMotionSlotProps>;\n};\n\nexport type AccordionPanelProps = ComponentProps<AccordionPanelSlots>;\n\nexport type AccordionPanelBaseProps = ComponentProps<Omit<AccordionPanelSlots, 'collapseMotion'>>;\n\nexport type AccordionPanelState = ComponentState<AccordionPanelSlots> & {\n /**\n * Internal open state, provided by context.\n */\n open: boolean;\n};\n\nexport type AccordionPanelBaseState = ComponentState<Omit<AccordionPanelSlots, 'collapseMotion'>> &\n Pick<AccordionPanelState, 'open'>;\n"],"names":[],"mappings":"AAmBA,WACoC"}
1
+ {"version":3,"sources":["../src/components/AccordionPanel/AccordionPanel.types.ts"],"sourcesContent":["import type { PresenceMotionSlotProps } from '@fluentui/react-motion';\nimport type { CollapseParams } from '@fluentui/react-motion-components-preview';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type AccordionPanelSlots = {\n root: NonNullable<Slot<'div'>>;\n collapseMotion?: Slot<PresenceMotionSlotProps<CollapseParams>>;\n};\n\nexport type AccordionPanelProps = ComponentProps<AccordionPanelSlots>;\n\nexport type AccordionPanelBaseProps = ComponentProps<Omit<AccordionPanelSlots, 'collapseMotion'>>;\n\nexport type AccordionPanelState = ComponentState<AccordionPanelSlots> & {\n /**\n * Internal open state, provided by context.\n */\n open: boolean;\n};\n\nexport type AccordionPanelBaseState = ComponentState<Omit<AccordionPanelSlots, 'collapseMotion'>> &\n Pick<AccordionPanelState, 'open'>;\n"],"names":[],"mappings":"AAoBA,WACoC"}
@@ -1,5 +1,4 @@
1
1
  'use client';
2
- import * as React from 'react';
3
2
  import { slot } from '@fluentui/react-utilities';
4
3
  import { useTabsterAttributes } from '@fluentui/react-tabster';
5
4
  import { presenceMotionSlot } from '@fluentui/react-motion';
@@ -53,7 +52,14 @@ import { useAccordionItemContext_unstable } from '../../contexts/accordionItem';
53
52
  },
54
53
  root: slot.always({
55
54
  ref: ref,
56
- ...props
55
+ ...props,
56
+ // Prevent keyboard focus from entering the panel while it is closed/collapsing.
57
+ // tabIndex: -1 prevents the panel itself from being focused, and inert prevents
58
+ // all focusable descendants from being reachable via keyboard navigation.
59
+ ...open ? {} : {
60
+ tabIndex: -1,
61
+ inert: true
62
+ }
57
63
  }, {
58
64
  elementType: 'div'
59
65
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionPanel/useAccordionPanel.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { slot } from '@fluentui/react-utilities';\nimport { useTabsterAttributes } from '@fluentui/react-tabster';\nimport { presenceMotionSlot } from '@fluentui/react-motion';\nimport { Collapse } from '@fluentui/react-motion-components-preview';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport type {\n AccordionPanelBaseProps,\n AccordionPanelBaseState,\n AccordionPanelProps,\n AccordionPanelState,\n} from './AccordionPanel.types';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionPanel properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanel_unstable = (\n props: AccordionPanelProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelState => {\n const { collapseMotion, ...baseProps } = props;\n const state = useAccordionPanelBase_unstable(baseProps, ref);\n const focusableProps = useTabsterAttributes({ focusable: { excludeFromMover: true } });\n const navigation = useAccordionContext_unstable(ctx => ctx.navigation);\n\n return {\n ...state,\n components: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ...state.components,\n collapseMotion: Collapse,\n },\n root: {\n ...state.root,\n ...(navigation && focusableProps),\n },\n collapseMotion: presenceMotionSlot(props.collapseMotion, {\n elementType: Collapse,\n defaultProps: {\n visible: state.open,\n unmountOnExit: true,\n },\n }),\n };\n};\n\n/**\n * Base state hook for AccordionPanel, without design related features.\n *\n * @param props - AccordionPanelBaseProps properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanelBase_unstable = (\n props: AccordionPanelBaseProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelBaseState => {\n const { open } = useAccordionItemContext_unstable();\n\n return {\n open,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...props,\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["React","slot","useTabsterAttributes","presenceMotionSlot","Collapse","useAccordionContext_unstable","useAccordionItemContext_unstable","useAccordionPanel_unstable","props","ref","collapseMotion","baseProps","state","useAccordionPanelBase_unstable","focusableProps","focusable","excludeFromMover","navigation","ctx","components","root","elementType","defaultProps","visible","open","unmountOnExit","always"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,QAAQ,4BAA4B;AACjD,SAASC,oBAAoB,QAAQ,0BAA0B;AAC/D,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,QAAQ,QAAQ,4CAA4C;AACrE,SAASC,4BAA4B,QAAQ,2BAA2B;AAOxE,SAASC,gCAAgC,QAAQ,+BAA+B;AAEhF;;;;CAIC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,cAAc,EAAE,GAAGC,WAAW,GAAGH;IACzC,MAAMI,QAAQC,+BAA+BF,WAAWF;IACxD,MAAMK,iBAAiBZ,qBAAqB;QAAEa,WAAW;YAAEC,kBAAkB;QAAK;IAAE;IACpF,MAAMC,aAAaZ,6BAA6Ba,CAAAA,MAAOA,IAAID,UAAU;IAErE,OAAO;QACL,GAAGL,KAAK;QACRO,YAAY;YACV,4DAA4D;YAC5D,GAAGP,MAAMO,UAAU;YACnBT,gBAAgBN;QAClB;QACAgB,MAAM;YACJ,GAAGR,MAAMQ,IAAI;YACb,GAAIH,cAAcH,cAAc;QAClC;QACAJ,gBAAgBP,mBAAmBK,MAAME,cAAc,EAAE;YACvDW,aAAajB;YACbkB,cAAc;gBACZC,SAASX,MAAMY,IAAI;gBACnBC,eAAe;YACjB;QACF;IACF;AACF,EAAE;AAEF;;;;;CAKC,GACD,OAAO,MAAMZ,iCAAiC,CAC5CL,OACAC;IAEA,MAAM,EAAEe,IAAI,EAAE,GAAGlB;IAEjB,OAAO;QACLkB;QACAL,YAAY;YACVC,MAAM;QACR;QACAA,MAAMnB,KAAKyB,MAAM,CACf;YACEjB,KAAKA;YACL,GAAGD,KAAK;QACV,GACA;YAAEa,aAAa;QAAM;IAEzB;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionPanel/useAccordionPanel.ts"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { slot } from '@fluentui/react-utilities';\nimport { useTabsterAttributes } from '@fluentui/react-tabster';\nimport { presenceMotionSlot } from '@fluentui/react-motion';\nimport { Collapse } from '@fluentui/react-motion-components-preview';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport type {\n AccordionPanelBaseProps,\n AccordionPanelBaseState,\n AccordionPanelProps,\n AccordionPanelState,\n} from './AccordionPanel.types';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionPanel properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanel_unstable = (\n props: AccordionPanelProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelState => {\n const { collapseMotion, ...baseProps } = props;\n const state = useAccordionPanelBase_unstable(baseProps, ref);\n const focusableProps = useTabsterAttributes({ focusable: { excludeFromMover: true } });\n const navigation = useAccordionContext_unstable(ctx => ctx.navigation);\n\n return {\n ...state,\n components: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ...state.components,\n collapseMotion: Collapse,\n },\n root: {\n ...state.root,\n ...(navigation && focusableProps),\n },\n collapseMotion: presenceMotionSlot(props.collapseMotion, {\n elementType: Collapse,\n defaultProps: {\n visible: state.open,\n unmountOnExit: true,\n },\n }),\n };\n};\n\n/**\n * Base state hook for AccordionPanel, without design related features.\n *\n * @param props - AccordionPanelBaseProps properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanelBase_unstable = (\n props: AccordionPanelBaseProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelBaseState => {\n const { open } = useAccordionItemContext_unstable();\n\n return {\n open,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...props,\n // Prevent keyboard focus from entering the panel while it is closed/collapsing.\n // tabIndex: -1 prevents the panel itself from being focused, and inert prevents\n // all focusable descendants from being reachable via keyboard navigation.\n ...(open ? {} : { tabIndex: -1, inert: true }),\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["slot","useTabsterAttributes","presenceMotionSlot","Collapse","useAccordionContext_unstable","useAccordionItemContext_unstable","useAccordionPanel_unstable","props","ref","collapseMotion","baseProps","state","useAccordionPanelBase_unstable","focusableProps","focusable","excludeFromMover","navigation","ctx","components","root","elementType","defaultProps","visible","open","unmountOnExit","always","tabIndex","inert"],"mappings":"AAAA;AAGA,SAASA,IAAI,QAAQ,4BAA4B;AACjD,SAASC,oBAAoB,QAAQ,0BAA0B;AAC/D,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,QAAQ,QAAQ,4CAA4C;AACrE,SAASC,4BAA4B,QAAQ,2BAA2B;AAOxE,SAASC,gCAAgC,QAAQ,+BAA+B;AAEhF;;;;CAIC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,cAAc,EAAE,GAAGC,WAAW,GAAGH;IACzC,MAAMI,QAAQC,+BAA+BF,WAAWF;IACxD,MAAMK,iBAAiBZ,qBAAqB;QAAEa,WAAW;YAAEC,kBAAkB;QAAK;IAAE;IACpF,MAAMC,aAAaZ,6BAA6Ba,CAAAA,MAAOA,IAAID,UAAU;IAErE,OAAO;QACL,GAAGL,KAAK;QACRO,YAAY;YACV,4DAA4D;YAC5D,GAAGP,MAAMO,UAAU;YACnBT,gBAAgBN;QAClB;QACAgB,MAAM;YACJ,GAAGR,MAAMQ,IAAI;YACb,GAAIH,cAAcH,cAAc;QAClC;QACAJ,gBAAgBP,mBAAmBK,MAAME,cAAc,EAAE;YACvDW,aAAajB;YACbkB,cAAc;gBACZC,SAASX,MAAMY,IAAI;gBACnBC,eAAe;YACjB;QACF;IACF;AACF,EAAE;AAEF;;;;;CAKC,GACD,OAAO,MAAMZ,iCAAiC,CAC5CL,OACAC;IAEA,MAAM,EAAEe,IAAI,EAAE,GAAGlB;IAEjB,OAAO;QACLkB;QACAL,YAAY;YACVC,MAAM;QACR;QACAA,MAAMnB,KAAKyB,MAAM,CACf;YACEjB,KAAKA;YACL,GAAGD,KAAK;YACR,gFAAgF;YAChF,gFAAgF;YAChF,0EAA0E;YAC1E,GAAIgB,OAAO,CAAC,IAAI;gBAAEG,UAAU,CAAC;gBAAGC,OAAO;YAAK,CAAC;QAC/C,GACA;YAAEP,aAAa;QAAM;IAEzB;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/accordion.ts"],"sourcesContent":["'use client';\n\nimport { createContext, ContextSelector, useContextSelector } from '@fluentui/react-context-selector';\nimport type { Context } from '@fluentui/react-context-selector';\nimport { AccordionItemValue } from '../AccordionItem';\nimport { AccordionToggleData, AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionRequestToggleData<Value = AccordionItemValue> = { event: AccordionToggleEvent } & Pick<\n AccordionToggleData<Value>,\n 'value'\n>;\n\nexport type AccordionContextValue<Value = AccordionItemValue> = {\n /**\n * The list of opened panels by index\n */\n openItems: AccordionItemValue[];\n /**\n * Callback used by AccordionItem to request a change on it's own opened state\n * Should be used to toggle AccordionItem\n */\n requestToggle: (data: AccordionRequestToggleData<Value>) => void;\n collapsible: boolean;\n multiple: boolean;\n navigation: 'linear' | 'circular' | undefined;\n};\n\nconst AccordionContext = createContext<AccordionContextValue | undefined>(undefined) as Context<AccordionContextValue>;\n\nconst accordionContextDefaultValue: AccordionContextValue = {\n openItems: [],\n collapsible: false,\n multiple: false,\n navigation: undefined,\n requestToggle() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionProvider } = AccordionContext;\nexport const useAccordionContext_unstable = <T>(selector: ContextSelector<AccordionContextValue, T>): T =>\n useContextSelector(AccordionContext, (ctx = accordionContextDefaultValue) => selector(ctx));\n"],"names":["createContext","useContextSelector","AccordionContext","undefined","accordionContextDefaultValue","openItems","collapsible","multiple","navigation","requestToggle","Provider","AccordionProvider","useAccordionContext_unstable","selector","ctx"],"mappings":"AAAA;AAEA,SAASA,aAAa,EAAmBC,kBAAkB,QAAQ,mCAAmC;AAyBtG,MAAMC,mBAAmBF,cAAiDG;AAE1E,MAAMC,+BAAsD;IAC1DC,WAAW,EAAE;IACbC,aAAa;IACbC,UAAU;IACVC,YAAYL;IACZM;IACE,QAAQ,GACV;AACF;AAEA,OAAO,MAAM,EAAEC,UAAUC,iBAAiB,EAAE,GAAGT,iBAAiB;AAChE,OAAO,MAAMU,+BAA+B,CAAIC,WAC9CZ,mBAAmBC,kBAAkB,CAACY,MAAMV,4BAA4B,GAAKS,SAASC,MAAM"}
1
+ {"version":3,"sources":["../src/contexts/accordion.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport type { Context, ContextSelector } from '@fluentui/react-context-selector';\nimport type { AccordionItemValue } from '../AccordionItem';\nimport type { AccordionToggleData, AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionRequestToggleData<Value = AccordionItemValue> = { event: AccordionToggleEvent } & Pick<\n AccordionToggleData<Value>,\n 'value'\n>;\n\nexport type AccordionContextValue<Value = AccordionItemValue> = {\n /**\n * The list of opened panels by index\n */\n openItems: AccordionItemValue[];\n /**\n * Callback used by AccordionItem to request a change on it's own opened state\n * Should be used to toggle AccordionItem\n */\n requestToggle: (data: AccordionRequestToggleData<Value>) => void;\n collapsible: boolean;\n multiple: boolean;\n navigation: 'linear' | 'circular' | undefined;\n};\n\nconst AccordionContext = createContext<AccordionContextValue | undefined>(undefined) as Context<AccordionContextValue>;\n\nconst accordionContextDefaultValue: AccordionContextValue = {\n openItems: [],\n collapsible: false,\n multiple: false,\n navigation: undefined,\n requestToggle() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionProvider } = AccordionContext;\nexport const useAccordionContext_unstable = <T>(selector: ContextSelector<AccordionContextValue, T>): T =>\n useContextSelector(AccordionContext, (ctx = accordionContextDefaultValue) => selector(ctx));\n"],"names":["createContext","useContextSelector","AccordionContext","undefined","accordionContextDefaultValue","openItems","collapsible","multiple","navigation","requestToggle","Provider","AccordionProvider","useAccordionContext_unstable","selector","ctx"],"mappings":"AAAA;AAEA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,mCAAmC;AAyBrF,MAAMC,mBAAmBF,cAAiDG;AAE1E,MAAMC,+BAAsD;IAC1DC,WAAW,EAAE;IACbC,aAAa;IACbC,UAAU;IACVC,YAAYL;IACZM;IACE,QAAQ,GACV;AACF;AAEA,OAAO,MAAM,EAAEC,UAAUC,iBAAiB,EAAE,GAAGT,iBAAiB;AAChE,OAAO,MAAMU,+BAA+B,CAAIC,WAC9CZ,mBAAmBC,kBAAkB,CAACY,MAAMV,4BAA4B,GAAKS,SAASC,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/accordionItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { AccordionItemValue } from '../AccordionItem';\nimport { AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionItemContextValue<Value = AccordionItemValue> = {\n open: boolean;\n disabled: boolean;\n value: Value;\n /**\n * @deprecated - use `requestToggle` from AccordionContent instead\n */\n onHeaderClick(event: AccordionToggleEvent): void;\n};\n\nconst AccordionItemContext = React.createContext<AccordionItemContextValue<unknown> | undefined>(\n undefined,\n) as React.Context<AccordionItemContextValue<unknown>>;\n\nconst accordionItemContextDefaultValue: AccordionItemContextValue<unknown> = {\n open: false,\n disabled: false,\n value: undefined,\n onHeaderClick() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionItemProvider } = AccordionItemContext;\n\nexport const useAccordionItemContext_unstable = (): AccordionItemContextValue<unknown> => {\n return React.useContext(AccordionItemContext) ?? accordionItemContextDefaultValue;\n};\n"],"names":["React","AccordionItemContext","createContext","undefined","accordionItemContextDefaultValue","open","disabled","value","onHeaderClick","Provider","AccordionItemProvider","useAccordionItemContext_unstable","useContext"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAc/B,MAAMC,uBAAuBD,MAAME,aAAa,CAC9CC;AAGF,MAAMC,mCAAuE;IAC3EC,MAAM;IACNC,UAAU;IACVC,OAAOJ;IACPK;IACE,QAAQ,GACV;AACF;AAEA,OAAO,MAAM,EAAEC,UAAUC,qBAAqB,EAAE,GAAGT,qBAAqB;AAExE,OAAO,MAAMU,mCAAmC;QACvCX;IAAP,OAAOA,CAAAA,oBAAAA,MAAMY,UAAU,CAACX,mCAAjBD,+BAAAA,oBAA0CI;AACnD,EAAE"}
1
+ {"version":3,"sources":["../src/contexts/accordionItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionItemValue } from '../AccordionItem';\nimport type { AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionItemContextValue<Value = AccordionItemValue> = {\n open: boolean;\n disabled: boolean;\n value: Value;\n /**\n * @deprecated - use `requestToggle` from AccordionContent instead\n */\n onHeaderClick(event: AccordionToggleEvent): void;\n};\n\nconst AccordionItemContext = React.createContext<AccordionItemContextValue<unknown> | undefined>(\n undefined,\n) as React.Context<AccordionItemContextValue<unknown>>;\n\nconst accordionItemContextDefaultValue: AccordionItemContextValue<unknown> = {\n open: false,\n disabled: false,\n value: undefined,\n onHeaderClick() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionItemProvider } = AccordionItemContext;\n\nexport const useAccordionItemContext_unstable = (): AccordionItemContextValue<unknown> => {\n return React.useContext(AccordionItemContext) ?? accordionItemContextDefaultValue;\n};\n"],"names":["React","AccordionItemContext","createContext","undefined","accordionItemContextDefaultValue","open","disabled","value","onHeaderClick","Provider","AccordionItemProvider","useAccordionItemContext_unstable","useContext"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAc/B,MAAMC,uBAAuBD,MAAME,aAAa,CAC9CC;AAGF,MAAMC,mCAAuE;IAC3EC,MAAM;IACNC,UAAU;IACVC,OAAOJ;IACPK;IACE,QAAQ,GACV;AACF;AAEA,OAAO,MAAM,EAAEC,UAAUC,qBAAqB,EAAE,GAAGT,qBAAqB;AAExE,OAAO,MAAMU,mCAAmC;QACvCX;IAAP,OAAOA,CAAAA,oBAAAA,MAAMY,UAAU,CAACX,mCAAjBD,+BAAAA,oBAA0CI;AACnD,EAAE"}
package/lib/index.js CHANGED
@@ -1,13 +1,7 @@
1
- export { Accordion, accordionClassNames, renderAccordion_unstable, useAccordionContextValues_unstable, useAccordionStyles_unstable, useAccordion_unstable } from './Accordion';
1
+ export { Accordion, accordionClassNames, renderAccordion_unstable, useAccordionContextValues_unstable, useAccordionStyles_unstable, useAccordion_unstable, useAccordionBase_unstable } from './Accordion';
2
2
  export { AccordionItem, accordionItemClassNames, renderAccordionItem_unstable, useAccordionItemContextValues_unstable, useAccordionItemStyles_unstable, useAccordionItem_unstable } from './AccordionItem';
3
- export { AccordionHeader, accordionHeaderClassNames, renderAccordionHeader_unstable, useAccordionHeaderContextValues_unstable, useAccordionHeaderStyles_unstable, useAccordionHeader_unstable } from './AccordionHeader';
4
- export { AccordionPanel, accordionPanelClassNames, renderAccordionPanel_unstable, useAccordionPanelStyles_unstable, useAccordionPanel_unstable } from './AccordionPanel';
3
+ export { AccordionHeader, accordionHeaderClassNames, renderAccordionHeader_unstable, useAccordionHeaderContextValues_unstable, useAccordionHeaderStyles_unstable, useAccordionHeader_unstable, useAccordionHeaderBase_unstable } from './AccordionHeader';
4
+ export { AccordionPanel, accordionPanelClassNames, renderAccordionPanel_unstable, useAccordionPanelStyles_unstable, useAccordionPanel_unstable, useAccordionPanelBase_unstable } from './AccordionPanel';
5
5
  export { AccordionProvider, useAccordionContext_unstable } from './contexts/accordion';
6
6
  export { AccordionItemProvider, useAccordionItemContext_unstable } from './contexts/accordionItem';
7
7
  export { AccordionHeaderProvider, useAccordionHeaderContext_unstable } from './contexts/accordionHeader';
8
- // Experimental APIs
9
- // export type { AccordionBaseState, AccordionBaseProps } from './Accordion';
10
- // export { useAccordionBase_unstable } from './Accordion';
11
- // export { useAccordionHeaderBase_unstable } from './AccordionHeader';
12
- // export type { AccordionPanelBaseState, AccordionPanelBaseProps } from './AccordionPanel';
13
- // export { useAccordionPanelBase_unstable } from './AccordionPanel';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n Accordion,\n accordionClassNames,\n renderAccordion_unstable,\n useAccordionContextValues_unstable,\n useAccordionStyles_unstable,\n useAccordion_unstable,\n} from './Accordion';\nexport type {\n AccordionContextValues,\n AccordionIndex,\n AccordionProps,\n AccordionSlots,\n AccordionState,\n AccordionToggleData,\n AccordionToggleEvent,\n AccordionToggleEventHandler,\n} from './Accordion';\nexport {\n AccordionItem,\n accordionItemClassNames,\n renderAccordionItem_unstable,\n useAccordionItemContextValues_unstable,\n useAccordionItemStyles_unstable,\n useAccordionItem_unstable,\n} from './AccordionItem';\nexport type {\n AccordionItemContextValues,\n AccordionItemProps,\n AccordionItemSlots,\n AccordionItemState,\n AccordionItemValue,\n} from './AccordionItem';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n} from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n} from './AccordionHeader';\nexport {\n AccordionPanel,\n accordionPanelClassNames,\n renderAccordionPanel_unstable,\n useAccordionPanelStyles_unstable,\n useAccordionPanel_unstable,\n} from './AccordionPanel';\nexport type { AccordionPanelProps, AccordionPanelSlots, AccordionPanelState } from './AccordionPanel';\n\nexport { AccordionProvider, useAccordionContext_unstable } from './contexts/accordion';\n\nexport type { AccordionContextValue } from './contexts/accordion';\n\nexport { AccordionItemProvider, useAccordionItemContext_unstable } from './contexts/accordionItem';\n\nexport type { AccordionItemContextValue } from './contexts/accordionItem';\n\nexport { AccordionHeaderProvider, useAccordionHeaderContext_unstable } from './contexts/accordionHeader';\n\nexport type { AccordionHeaderContextValue } from './contexts/accordionHeader';\n\n// Experimental APIs\n// export type { AccordionBaseState, AccordionBaseProps } from './Accordion';\n// export { useAccordionBase_unstable } from './Accordion';\n// export { useAccordionHeaderBase_unstable } from './AccordionHeader';\n// export type { AccordionPanelBaseState, AccordionPanelBaseProps } from './AccordionPanel';\n// export { useAccordionPanelBase_unstable } from './AccordionPanel';\n"],"names":["Accordion","accordionClassNames","renderAccordion_unstable","useAccordionContextValues_unstable","useAccordionStyles_unstable","useAccordion_unstable","AccordionItem","accordionItemClassNames","renderAccordionItem_unstable","useAccordionItemContextValues_unstable","useAccordionItemStyles_unstable","useAccordionItem_unstable","AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","AccordionPanel","accordionPanelClassNames","renderAccordionPanel_unstable","useAccordionPanelStyles_unstable","useAccordionPanel_unstable","AccordionProvider","useAccordionContext_unstable","AccordionItemProvider","useAccordionItemContext_unstable","AccordionHeaderProvider","useAccordionHeaderContext_unstable"],"mappings":"AAAA,SACEA,SAAS,EACTC,mBAAmB,EACnBC,wBAAwB,EACxBC,kCAAkC,EAClCC,2BAA2B,EAC3BC,qBAAqB,QAChB,cAAc;AAWrB,SACEC,aAAa,EACbC,uBAAuB,EACvBC,4BAA4B,EAC5BC,sCAAsC,EACtCC,+BAA+B,EAC/BC,yBAAyB,QACpB,kBAAkB;AAQzB,SACEC,eAAe,EACfC,yBAAyB,EACzBC,8BAA8B,EAC9BC,wCAAwC,EACxCC,iCAAiC,EACjCC,2BAA2B,QACtB,oBAAoB;AAS3B,SACEC,cAAc,EACdC,wBAAwB,EACxBC,6BAA6B,EAC7BC,gCAAgC,EAChCC,0BAA0B,QACrB,mBAAmB;AAG1B,SAASC,iBAAiB,EAAEC,4BAA4B,QAAQ,uBAAuB;AAIvF,SAASC,qBAAqB,EAAEC,gCAAgC,QAAQ,2BAA2B;AAInG,SAASC,uBAAuB,EAAEC,kCAAkC,QAAQ,6BAA6B;CAIzG,oBAAoB;CACpB,6EAA6E;CAC7E,2DAA2D;CAC3D,uEAAuE;CACvE,4FAA4F;CAC5F,qEAAqE"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n Accordion,\n accordionClassNames,\n renderAccordion_unstable,\n useAccordionContextValues_unstable,\n useAccordionStyles_unstable,\n useAccordion_unstable,\n useAccordionBase_unstable,\n} from './Accordion';\nexport type {\n AccordionContextValues,\n AccordionIndex,\n AccordionProps,\n AccordionSlots,\n AccordionState,\n AccordionToggleData,\n AccordionToggleEvent,\n AccordionToggleEventHandler,\n AccordionBaseState,\n AccordionBaseProps,\n} from './Accordion';\nexport {\n AccordionItem,\n accordionItemClassNames,\n renderAccordionItem_unstable,\n useAccordionItemContextValues_unstable,\n useAccordionItemStyles_unstable,\n useAccordionItem_unstable,\n} from './AccordionItem';\nexport type {\n AccordionItemContextValues,\n AccordionItemProps,\n AccordionItemSlots,\n AccordionItemState,\n AccordionItemValue,\n} from './AccordionItem';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n useAccordionHeaderBase_unstable,\n} from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n AccordionHeaderBaseState,\n AccordionHeaderBaseProps,\n} from './AccordionHeader';\nexport {\n AccordionPanel,\n accordionPanelClassNames,\n renderAccordionPanel_unstable,\n useAccordionPanelStyles_unstable,\n useAccordionPanel_unstable,\n useAccordionPanelBase_unstable,\n} from './AccordionPanel';\nexport type {\n AccordionPanelProps,\n AccordionPanelSlots,\n AccordionPanelState,\n AccordionPanelBaseState,\n AccordionPanelBaseProps,\n} from './AccordionPanel';\n\nexport { AccordionProvider, useAccordionContext_unstable } from './contexts/accordion';\n\nexport type { AccordionContextValue } from './contexts/accordion';\n\nexport { AccordionItemProvider, useAccordionItemContext_unstable } from './contexts/accordionItem';\n\nexport type { AccordionItemContextValue } from './contexts/accordionItem';\n\nexport { AccordionHeaderProvider, useAccordionHeaderContext_unstable } from './contexts/accordionHeader';\n\nexport type { AccordionHeaderContextValue } from './contexts/accordionHeader';\n"],"names":["Accordion","accordionClassNames","renderAccordion_unstable","useAccordionContextValues_unstable","useAccordionStyles_unstable","useAccordion_unstable","useAccordionBase_unstable","AccordionItem","accordionItemClassNames","renderAccordionItem_unstable","useAccordionItemContextValues_unstable","useAccordionItemStyles_unstable","useAccordionItem_unstable","AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable","AccordionPanel","accordionPanelClassNames","renderAccordionPanel_unstable","useAccordionPanelStyles_unstable","useAccordionPanel_unstable","useAccordionPanelBase_unstable","AccordionProvider","useAccordionContext_unstable","AccordionItemProvider","useAccordionItemContext_unstable","AccordionHeaderProvider","useAccordionHeaderContext_unstable"],"mappings":"AAAA,SACEA,SAAS,EACTC,mBAAmB,EACnBC,wBAAwB,EACxBC,kCAAkC,EAClCC,2BAA2B,EAC3BC,qBAAqB,EACrBC,yBAAyB,QACpB,cAAc;AAarB,SACEC,aAAa,EACbC,uBAAuB,EACvBC,4BAA4B,EAC5BC,sCAAsC,EACtCC,+BAA+B,EAC/BC,yBAAyB,QACpB,kBAAkB;AAQzB,SACEC,eAAe,EACfC,yBAAyB,EACzBC,8BAA8B,EAC9BC,wCAAwC,EACxCC,iCAAiC,EACjCC,2BAA2B,EAC3BC,+BAA+B,QAC1B,oBAAoB;AAW3B,SACEC,cAAc,EACdC,wBAAwB,EACxBC,6BAA6B,EAC7BC,gCAAgC,EAChCC,0BAA0B,EAC1BC,8BAA8B,QACzB,mBAAmB;AAS1B,SAASC,iBAAiB,EAAEC,4BAA4B,QAAQ,uBAAuB;AAIvF,SAASC,qBAAqB,EAAEC,gCAAgC,QAAQ,2BAA2B;AAInG,SAASC,uBAAuB,EAAEC,kCAAkC,QAAQ,6BAA6B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AccordionHeader.ts"],"sourcesContent":["export type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n} from './components/AccordionHeader/index';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n useAccordionHeaderBase_unstable,\n} from './components/AccordionHeader/index';\n"],"names":["AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable"],"mappings":";;;;;;;;;;;;eASEA,sBAAe;;;eACfC,gCAAyB;;;eACzBC,qCAA8B;;;eAI9BI,sCAA+B;;;eAH/BH,+CAAwC;;;eACxCC,wCAAiC;;;eACjCC,kCAA2B;;;uBAEtB,qCAAqC"}
1
+ {"version":3,"sources":["../src/AccordionHeader.ts"],"sourcesContent":["export type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n AccordionHeaderBaseState,\n AccordionHeaderBaseProps,\n} from './components/AccordionHeader/index';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n useAccordionHeaderBase_unstable,\n} from './components/AccordionHeader/index';\n"],"names":["AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable"],"mappings":";;;;;;;;;;;;eAWEA,sBAAe;;;eACfC,gCAAyB;;;eACzBC,qCAA8B;;;eAI9BI,sCAA+B;;;eAH/BH,+CAAwC;;;eACxCC,wCAAiC;;;eACjCC,kCAA2B;;;uBAEtB,qCAAqC"}
@@ -2,5 +2,3 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
6
- const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/Accordion.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\n\nexport type AccordionIndex = number | number[];\n\nexport type AccordionToggleEvent<E = HTMLElement> = React.MouseEvent<E> | React.KeyboardEvent<E>;\n\nexport type AccordionToggleEventHandler<Value = AccordionItemValue> = (\n event: AccordionToggleEvent,\n data: AccordionToggleData<Value>,\n) => void;\n\nexport type AccordionContextValues = {\n accordion: AccordionContextValue;\n};\n\nexport type AccordionSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionToggleData<Value = AccordionItemValue> = {\n value: Value;\n openItems: Value[];\n};\n\nexport type AccordionProps<Value = AccordionItemValue> = Omit<ComponentProps<AccordionSlots>, 'onToggle'> & {\n /**\n * Default value for the uncontrolled state of the panel.\n */\n defaultOpenItems?: Value | Value[];\n\n /**\n * Indicates if Accordion support multiple Panels closed at the same time.\n */\n collapsible?: boolean;\n\n /**\n * Indicates if Accordion support multiple Panels opened at the same time.\n */\n multiple?: boolean;\n\n /**\n * @deprecated Arrow keyboard navigation is not recommended for accordions. Consider using Tree if arrow navigation is a hard requirement.\n * Indicates if keyboard navigation is available and gives two options, linear or circular navigation.\n */\n navigation?: 'linear' | 'circular';\n\n /**\n * Callback to be called when the opened items change.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onToggle?: AccordionToggleEventHandler<Value>;\n\n /**\n * Controls the state of the panel.\n */\n openItems?: Value | Value[];\n};\n\nexport type AccordionBaseProps<Value = AccordionItemValue> = Omit<AccordionProps<Value>, 'navigation'>;\n\nexport type AccordionState<Value = AccordionItemValue> = ComponentState<AccordionSlots> & AccordionContextValue<Value>;\n\nexport type AccordionBaseState<Value = AccordionItemValue> = Omit<AccordionState<Value>, 'navigation'>;\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
1
+ {"version":3,"sources":["../src/components/Accordion/Accordion.types.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\n\nexport type AccordionIndex = number | number[];\n\nexport type AccordionToggleEvent<E = HTMLElement> = React.MouseEvent<E> | React.KeyboardEvent<E>;\n\nexport type AccordionToggleEventHandler<Value = AccordionItemValue> = (\n event: AccordionToggleEvent,\n data: AccordionToggleData<Value>,\n) => void;\n\nexport type AccordionContextValues = {\n accordion: AccordionContextValue;\n};\n\nexport type AccordionSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionToggleData<Value = AccordionItemValue> = {\n value: Value;\n openItems: Value[];\n};\n\nexport type AccordionProps<Value = AccordionItemValue> = Omit<ComponentProps<AccordionSlots>, 'onToggle'> & {\n /**\n * Default value for the uncontrolled state of the panel.\n */\n defaultOpenItems?: Value | Value[];\n\n /**\n * Indicates if Accordion support multiple Panels closed at the same time.\n */\n collapsible?: boolean;\n\n /**\n * Indicates if Accordion support multiple Panels opened at the same time.\n */\n multiple?: boolean;\n\n /**\n * @deprecated Arrow keyboard navigation is not recommended for accordions. Consider using Tree if arrow navigation is a hard requirement.\n * Indicates if keyboard navigation is available and gives two options, linear or circular navigation.\n */\n navigation?: 'linear' | 'circular';\n\n /**\n * Callback to be called when the opened items change.\n */\n // eslint-disable-next-line @nx/workspace-consistent-callback-type -- can't change type of existing callback\n onToggle?: AccordionToggleEventHandler<Value>;\n\n /**\n * Controls the state of the panel.\n */\n openItems?: Value | Value[];\n};\n\nexport type AccordionBaseProps<Value = AccordionItemValue> = Omit<AccordionProps<Value>, 'navigation'>;\n\nexport type AccordionState<Value = AccordionItemValue> = ComponentState<AccordionSlots> & AccordionContextValue<Value>;\n\nexport type AccordionBaseState<Value = AccordionItemValue> = Omit<AccordionState<Value>, 'navigation'>;\n"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/renderAccordion.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\nimport type { AccordionState, AccordionSlots, AccordionContextValues } from './Accordion.types';\nimport { AccordionProvider } from '../../contexts/accordion';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordion_unstable = (state: AccordionState, contextValues: AccordionContextValues): JSXElement => {\n assertSlots<AccordionSlots>(state);\n\n return (\n <state.root>\n <AccordionProvider value={contextValues.accordion}>{state.root.children}</AccordionProvider>\n </state.root>\n );\n};\n"],"names":["assertSlots","AccordionProvider","renderAccordion_unstable","state","contextValues","root","value","accordion","children"],"mappings":";;;;+BAYaE;;;;;;4BAXb,gDAAiD;gCAErB,4BAA4B;2BAItB,2BAA2B;AAKtD,iCAAiC,CAACC,OAAuBC;QAC9DJ,2BAAAA,EAA4BG;IAE5B,OAAA,WAAA,OACE,eAAA,EAACA,MAAME,IAAI,EAAA;kBACT,WAAA,OAAA,eAAA,EAACJ,4BAAAA,EAAAA;YAAkBK,OAAOF,cAAcG,SAAS;sBAAGJ,MAAME,IAAI,CAACG,QAAQ;;;AAG7E,EAAE"}
1
+ {"version":3,"sources":["../src/components/Accordion/renderAccordion.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\nimport type { AccordionBaseState, AccordionSlots, AccordionContextValues } from './Accordion.types';\nimport { AccordionProvider } from '../../contexts/accordion';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordion_unstable = (\n state: AccordionBaseState,\n contextValues: AccordionContextValues,\n): JSXElement => {\n assertSlots<AccordionSlots>(state);\n\n return (\n <state.root>\n <AccordionProvider value={contextValues.accordion}>{state.root.children}</AccordionProvider>\n </state.root>\n );\n};\n"],"names":["assertSlots","AccordionProvider","renderAccordion_unstable","state","contextValues","root","value","accordion","children"],"mappings":";;;;+BAYaE;;;;;;4BAXb,gDAAiD;gCAErB,4BAA4B;2BAItB,2BAA2B;AAKtD,iCAAiC,CACtCC,OACAC;QAEAJ,2BAAAA,EAA4BG;IAE5B,OAAA,WAAA,OACE,eAAA,EAACA,MAAME,IAAI,EAAA;kBACT,WAAA,OAAA,eAAA,EAACJ,4BAAAA,EAAAA;YAAkBK,OAAOF,cAAcG,SAAS;sBAAGJ,MAAME,IAAI,CAACG,QAAQ;;;AAG7E,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/useAccordion.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useControllableState, useEventCallback, slot } from '@fluentui/react-utilities';\nimport type { AccordionBaseProps, AccordionBaseState, AccordionProps, AccordionState } from './Accordion.types';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { AccordionRequestToggleData } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordion_unstable = <Value = AccordionItemValue>(\n props: AccordionProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionState<Value> => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n navigation,\n ...baseProps\n } = props;\n const state = useAccordionBase_unstable(baseProps, ref);\n\n /** FIXME: deprecated will be removed after navigation prop is removed */\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: navigation === 'circular',\n tabbable: true,\n });\n\n return {\n navigation,\n ...state,\n\n root: {\n ...state.root,\n ...(navigation ? arrowNavigationProps : undefined),\n },\n };\n};\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordionBase_unstable = <Value = AccordionItemValue>(\n props: AccordionBaseProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionBaseState<Value> => {\n const {\n openItems: controlledOpenItems,\n defaultOpenItems,\n multiple = false,\n collapsible = false,\n onToggle,\n ...rest\n } = props;\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => normalizeValues(controlledOpenItems), [controlledOpenItems]),\n defaultState: defaultOpenItems && (() => initializeUncontrolledOpenItems({ defaultOpenItems, multiple })),\n initialState: [],\n });\n\n const requestToggle = useEventCallback((data: AccordionRequestToggleData<Value>) => {\n const nextOpenItems = updateOpenItems(data.value, openItems, multiple, collapsible);\n onToggle?.(data.event, { value: data.value, openItems: nextOpenItems });\n setOpenItems(nextOpenItems);\n });\n\n return {\n collapsible,\n multiple,\n openItems,\n requestToggle,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n\n/**\n * Initial value for the uncontrolled case of the list of open indexes\n */\nfunction initializeUncontrolledOpenItems<Value = AccordionItemValue>({\n defaultOpenItems,\n multiple,\n}: Pick<AccordionProps<Value>, 'defaultOpenItems' | 'multiple'>): Value[] {\n if (defaultOpenItems !== undefined) {\n if (Array.isArray(defaultOpenItems)) {\n return multiple ? defaultOpenItems : [defaultOpenItems[0]];\n }\n return [defaultOpenItems];\n }\n return [];\n}\n\n/**\n * Updates the list of open indexes based on an index that changes\n * @param value - the index that will change\n * @param previousOpenItems - list of current open indexes\n * @param multiple - if Accordion support multiple Panels opened at the same time\n * @param collapsible - if Accordion support multiple Panels closed at the same time\n */\nfunction updateOpenItems<Value = AccordionItemValue>(\n value: Value,\n previousOpenItems: Value[],\n multiple: boolean,\n collapsible: boolean,\n) {\n if (multiple) {\n if (previousOpenItems.includes(value)) {\n if (previousOpenItems.length > 1 || collapsible) {\n return previousOpenItems.filter(i => i !== value);\n }\n } else {\n return [...previousOpenItems, value].sort();\n }\n } else {\n return previousOpenItems[0] === value && collapsible ? [] : [value];\n }\n return previousOpenItems;\n}\n\n/**\n * Normalizes Accordion index into an array of indexes\n */\nfunction normalizeValues<Value = AccordionItemValue>(index?: Value | Value[]): Value[] | undefined {\n if (index === undefined) {\n return undefined;\n }\n return Array.isArray(index) ? index : [index];\n}\n"],"names":["React","useControllableState","useEventCallback","slot","useArrowNavigationGroup","useAccordion_unstable","props","ref","navigation","baseProps","state","useAccordionBase_unstable","arrowNavigationProps","circular","tabbable","root","undefined","openItems","controlledOpenItems","defaultOpenItems","multiple","collapsible","onToggle","rest","setOpenItems","useMemo","normalizeValues","defaultState","initializeUncontrolledOpenItems","initialState","requestToggle","data","nextOpenItems","updateOpenItems","value","event","components","always","elementType","Array","isArray","previousOpenItems","includes","length","filter","i","sort","index"],"mappings":"AAAA;;;;;;;;;;;;IA+CaW,yBAAAA;;;yBAjCAN;;;;;iEAZU,QAAQ;gCAC8B,4BAA4B;8BAGjD,0BAA0B;AAQ3D,MAAMA,wBAAwB,CACnCC,OACAC;IAEA,MAAM,EACJ,AACAC,UAAU,EACV,GAAGC,WACJ,GAAGH,+BAH0D;IAI9D,MAAMI,QAAQC,0BAA0BF,WAAWF;IAEnD,uEAAuE,GACvE,MAAMK,2BAAuBR,qCAAAA,EAAwB;QACnDS,UAAUL,eAAe;QACzBM,UAAU;IACZ;IAEA,OAAO;QACLN;QACA,GAAGE,KAAK;QAERK,MAAM;YACJ,GAAGL,MAAMK,IAAI;YACb,GAAIP,aAAaI,uBAAuBI,SAAS;QACnD;IACF;AACF,EAAE;AAOK,kCAAkC,CACvCV,OACAC;IAEA,MAAM,EACJU,WAAWC,mBAAmB,EAC9BC,gBAAgB,EAChBC,WAAW,KAAK,EAChBC,cAAc,KAAK,EACnBC,QAAQ,EACR,GAAGC,MACJ,GAAGjB;IACJ,MAAM,CAACW,WAAWO,aAAa,OAAGvB,oCAAAA,EAAqB;QACrDS,OAAOV,OAAMyB,OAAO,CAAC,IAAMC,gBAAgBR,sBAAsB;YAACA;SAAoB;QACtFS,cAAcR,oBAAqB,CAAA,IAAMS,gCAAgC;gBAAET;gBAAkBC;YAAS,EAAA,CAAC;QACvGS,cAAc,EAAE;IAClB;IAEA,MAAMC,oBAAgB5B,gCAAAA,EAAiB,CAAC6B;QACtC,MAAMC,gBAAgBC,gBAAgBF,KAAKG,KAAK,EAAEjB,WAAWG,UAAUC;QACvEC,aAAAA,QAAAA,aAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAWS,KAAKI,KAAK,EAAE;YAAED,OAAOH,KAAKG,KAAK;YAAEjB,WAAWe;QAAc;QACrER,aAAaQ;IACf;IAEA,OAAO;QACLX;QACAD;QACAH;QACAa;QACAM,YAAY;YACVrB,MAAM;QACR;QACAA,MAAMZ,oBAAAA,CAAKkC,MAAM,CACf;YACE9B,KAAKA;YACL,GAAGgB,IAAI;QACT,GACA;YAAEe,aAAa;QAAM;IAEzB;AACF,EAAE;AAEF;;CAEC,GACD,SAASV,gCAA4D,EACnET,gBAAgB,EAChBC,QAAQ,EACqD;IAC7D,IAAID,qBAAqBH,WAAW;QAClC,IAAIuB,MAAMC,OAAO,CAACrB,mBAAmB;YACnC,OAAOC,WAAWD,mBAAmB;gBAACA,gBAAgB,CAAC,EAAE;aAAC;QAC5D;QACA,OAAO;YAACA;SAAiB;IAC3B;IACA,OAAO,EAAE;AACX;AAEA;;;;;;CAMC,GACD,SAASc,gBACPC,KAAY,EACZO,iBAA0B,EAC1BrB,QAAiB,EACjBC,WAAoB;IAEpB,IAAID,UAAU;QACZ,IAAIqB,kBAAkBC,QAAQ,CAACR,QAAQ;YACrC,IAAIO,kBAAkBE,MAAM,GAAG,KAAKtB,aAAa;gBAC/C,OAAOoB,kBAAkBG,MAAM,CAACC,CAAAA,IAAKA,MAAMX;YAC7C;QACF,OAAO;YACL,OAAO;mBAAIO;gBAAmBP;aAAM,CAACY,IAAI;QAC3C;IACF,OAAO;QACL,OAAOL,iBAAiB,CAAC,EAAE,KAAKP,SAASb,cAAc,EAAE,GAAG;YAACa;SAAM;IACrE;IACA,OAAOO;AACT;AAEA;;CAEC,GACD,SAASf,gBAA4CqB,KAAuB;IAC1E,IAAIA,UAAU/B,WAAW;QACvB,OAAOA;IACT;IACA,OAAOuB,MAAMC,OAAO,CAACO,SAASA,QAAQ;QAACA;KAAM;AAC/C"}
1
+ {"version":3,"sources":["../src/components/Accordion/useAccordion.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useControllableState, useEventCallback, slot } from '@fluentui/react-utilities';\nimport type { AccordionBaseProps, AccordionBaseState, AccordionProps, AccordionState } from './Accordion.types';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport type { AccordionRequestToggleData } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordion_unstable = <Value = AccordionItemValue>(\n props: AccordionProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionState<Value> => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n navigation,\n ...baseProps\n } = props;\n const state = useAccordionBase_unstable(baseProps, ref);\n\n /** FIXME: deprecated will be removed after navigation prop is removed */\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: navigation === 'circular',\n tabbable: true,\n });\n\n return {\n navigation,\n ...state,\n\n root: {\n ...state.root,\n ...(navigation ? arrowNavigationProps : undefined),\n },\n };\n};\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordionBase_unstable = <Value = AccordionItemValue>(\n props: AccordionBaseProps<Value>,\n ref: React.Ref<HTMLElement>,\n): AccordionBaseState<Value> => {\n const {\n openItems: controlledOpenItems,\n defaultOpenItems,\n multiple = false,\n collapsible = false,\n onToggle,\n ...rest\n } = props;\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => normalizeValues(controlledOpenItems), [controlledOpenItems]),\n defaultState: defaultOpenItems && (() => initializeUncontrolledOpenItems({ defaultOpenItems, multiple })),\n initialState: [],\n });\n\n const requestToggle = useEventCallback((data: AccordionRequestToggleData<Value>) => {\n const nextOpenItems = updateOpenItems(data.value, openItems, multiple, collapsible);\n onToggle?.(data.event, { value: data.value, openItems: nextOpenItems });\n setOpenItems(nextOpenItems);\n });\n\n return {\n collapsible,\n multiple,\n openItems,\n requestToggle,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n\n/**\n * Initial value for the uncontrolled case of the list of open indexes\n */\nfunction initializeUncontrolledOpenItems<Value = AccordionItemValue>({\n defaultOpenItems,\n multiple,\n}: Pick<AccordionProps<Value>, 'defaultOpenItems' | 'multiple'>): Value[] {\n if (defaultOpenItems !== undefined) {\n if (Array.isArray(defaultOpenItems)) {\n return multiple ? defaultOpenItems : [defaultOpenItems[0]];\n }\n return [defaultOpenItems];\n }\n return [];\n}\n\n/**\n * Updates the list of open indexes based on an index that changes\n * @param value - the index that will change\n * @param previousOpenItems - list of current open indexes\n * @param multiple - if Accordion support multiple Panels opened at the same time\n * @param collapsible - if Accordion support multiple Panels closed at the same time\n */\nfunction updateOpenItems<Value = AccordionItemValue>(\n value: Value,\n previousOpenItems: Value[],\n multiple: boolean,\n collapsible: boolean,\n) {\n if (multiple) {\n if (previousOpenItems.includes(value)) {\n if (previousOpenItems.length > 1 || collapsible) {\n return previousOpenItems.filter(i => i !== value);\n }\n } else {\n return [...previousOpenItems, value].sort();\n }\n } else {\n return previousOpenItems[0] === value && collapsible ? [] : [value];\n }\n return previousOpenItems;\n}\n\n/**\n * Normalizes Accordion index into an array of indexes\n */\nfunction normalizeValues<Value = AccordionItemValue>(index?: Value | Value[]): Value[] | undefined {\n if (index === undefined) {\n return undefined;\n }\n return Array.isArray(index) ? index : [index];\n}\n"],"names":["React","useControllableState","useEventCallback","slot","useArrowNavigationGroup","useAccordion_unstable","props","ref","navigation","baseProps","state","useAccordionBase_unstable","arrowNavigationProps","circular","tabbable","root","undefined","openItems","controlledOpenItems","defaultOpenItems","multiple","collapsible","onToggle","rest","setOpenItems","useMemo","normalizeValues","defaultState","initializeUncontrolledOpenItems","initialState","requestToggle","data","nextOpenItems","updateOpenItems","value","event","components","always","elementType","Array","isArray","previousOpenItems","includes","length","filter","i","sort","index"],"mappings":"AAAA;;;;;;;;;;;;IA+CaW,yBAAAA;;;yBAjCAN;;;;;iEAZU,QAAQ;gCAC8B,4BAA4B;8BAGjD,0BAA0B;AAQ3D,MAAMA,wBAAwB,CACnCC,OACAC;IAEA,MAAM,EACJ,AACAC,UAAU,EACV,GAAGC,WACJ,GAAGH,+BAH0D;IAI9D,MAAMI,QAAQC,0BAA0BF,WAAWF;IAEnD,uEAAuE,GACvE,MAAMK,2BAAuBR,qCAAAA,EAAwB;QACnDS,UAAUL,eAAe;QACzBM,UAAU;IACZ;IAEA,OAAO;QACLN;QACA,GAAGE,KAAK;QAERK,MAAM;YACJ,GAAGL,MAAMK,IAAI;YACb,GAAIP,aAAaI,uBAAuBI,SAAS;QACnD;IACF;AACF,EAAE;AAOK,kCAAkC,CACvCV,OACAC;IAEA,MAAM,EACJU,WAAWC,mBAAmB,EAC9BC,gBAAgB,EAChBC,WAAW,KAAK,EAChBC,cAAc,KAAK,EACnBC,QAAQ,EACR,GAAGC,MACJ,GAAGjB;IACJ,MAAM,CAACW,WAAWO,aAAa,OAAGvB,oCAAAA,EAAqB;QACrDS,OAAOV,OAAMyB,OAAO,CAAC,IAAMC,gBAAgBR,sBAAsB;YAACA;SAAoB;QACtFS,cAAcR,oBAAqB,CAAA,IAAMS,gCAAgC;gBAAET;gBAAkBC;YAAS,EAAA,CAAC;QACvGS,cAAc,EAAE;IAClB;IAEA,MAAMC,oBAAgB5B,gCAAAA,EAAiB,CAAC6B;QACtC,MAAMC,gBAAgBC,gBAAgBF,KAAKG,KAAK,EAAEjB,WAAWG,UAAUC;QACvEC,aAAAA,QAAAA,aAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAWS,KAAKI,KAAK,EAAE;YAAED,OAAOH,KAAKG,KAAK;YAAEjB,WAAWe;QAAc;QACrER,aAAaQ;IACf;IAEA,OAAO;QACLX;QACAD;QACAH;QACAa;QACAM,YAAY;YACVrB,MAAM;QACR;QACAA,MAAMZ,oBAAAA,CAAKkC,MAAM,CACf;YACE9B,KAAKA;YACL,GAAGgB,IAAI;QACT,GACA;YAAEe,aAAa;QAAM;IAEzB;AACF,EAAE;AAEF;;CAEC,GACD,SAASV,gCAA4D,EACnET,gBAAgB,EAChBC,QAAQ,EACqD;IAC7D,IAAID,qBAAqBH,WAAW;QAClC,IAAIuB,MAAMC,OAAO,CAACrB,mBAAmB;YACnC,OAAOC,WAAWD,mBAAmB;gBAACA,gBAAgB,CAAC,EAAE;aAAC;QAC5D;QACA,OAAO;YAACA;SAAiB;IAC3B;IACA,OAAO,EAAE;AACX;AAEA;;;;;;CAMC,GACD,SAASc,gBACPC,KAAY,EACZO,iBAA0B,EAC1BrB,QAAiB,EACjBC,WAAoB;IAEpB,IAAID,UAAU;QACZ,IAAIqB,kBAAkBC,QAAQ,CAACR,QAAQ;YACrC,IAAIO,kBAAkBE,MAAM,GAAG,KAAKtB,aAAa;gBAC/C,OAAOoB,kBAAkBG,MAAM,CAACC,CAAAA,IAAKA,MAAMX;YAC7C;QACF,OAAO;YACL,OAAO;mBAAIO;gBAAmBP;aAAM,CAACY,IAAI;QAC3C;IACF,OAAO;QACL,OAAOL,iBAAiB,CAAC,EAAE,KAAKP,SAASb,cAAc,EAAE,GAAG;YAACa;SAAM;IACrE;IACA,OAAOO;AACT;AAEA;;CAEC,GACD,SAASf,gBAA4CqB,KAAuB;IAC1E,IAAIA,UAAU/B,WAAW;QACvB,OAAOA;IACT;IACA,OAAOuB,MAAMC,OAAO,CAACO,SAASA,QAAQ;QAACA;KAAM;AAC/C"}
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", {
3
4
  value: true
@@ -8,16 +9,23 @@ Object.defineProperty(exports, "useAccordionContextValues_unstable", {
8
9
  return useAccordionContextValues_unstable;
9
10
  }
10
11
  });
12
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
11
14
  function useAccordionContextValues_unstable(state) {
12
15
  const { navigation, openItems, requestToggle, multiple, collapsible } = state;
13
- // This context is created with "@fluentui/react-context-selector", these is no sense to memoize it
14
- const accordion = {
16
+ const accordion = _react.useMemo(()=>({
17
+ navigation,
18
+ openItems,
19
+ requestToggle,
20
+ collapsible,
21
+ multiple
22
+ }), [
15
23
  navigation,
16
24
  openItems,
17
25
  requestToggle,
18
26
  collapsible,
19
27
  multiple
20
- };
28
+ ]);
21
29
  return {
22
30
  accordion
23
31
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/useAccordionContextValues.ts"],"sourcesContent":["import type { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionContextValues, AccordionState } from './Accordion.types';\n\nexport function useAccordionContextValues_unstable(state: AccordionState): AccordionContextValues {\n const { navigation, openItems, requestToggle, multiple, collapsible } = state;\n\n // This context is created with \"@fluentui/react-context-selector\", these is no sense to memoize it\n const accordion: AccordionContextValue = {\n navigation,\n openItems,\n requestToggle,\n collapsible,\n multiple,\n };\n\n return { accordion };\n}\n"],"names":["useAccordionContextValues_unstable","state","navigation","openItems","requestToggle","multiple","collapsible","accordion"],"mappings":";;;;+BAGgBA;;;;;;AAAT,4CAA4CC,KAAqB;IACtE,MAAM,EAAEC,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGL;IAExE,mGAAmG;IACnG,MAAMM,YAAmC;QACvCL;QACAC;QACAC;QACAE;QACAD;IACF;IAEA,OAAO;QAAEE;IAAU;AACrB"}
1
+ {"version":3,"sources":["../src/components/Accordion/useAccordionContextValues.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionContextValue } from '../../contexts/accordion';\nimport type { AccordionContextValues, AccordionState } from './Accordion.types';\n\nexport function useAccordionContextValues_unstable(state: AccordionState): AccordionContextValues {\n const { navigation, openItems, requestToggle, multiple, collapsible } = state;\n\n const accordion = React.useMemo<AccordionContextValue>(\n () => ({\n navigation,\n openItems,\n requestToggle,\n collapsible,\n multiple,\n }),\n [navigation, openItems, requestToggle, collapsible, multiple],\n );\n\n return { accordion };\n}\n"],"names":["React","useAccordionContextValues_unstable","state","navigation","openItems","requestToggle","multiple","collapsible","accordion","useMemo"],"mappings":"AAAA;;;;;;;;;;;;iEAEuB,QAAQ;AAIxB,SAASC,mCAAmCC,KAAqB;IACtE,MAAM,EAAEC,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGL;IAExE,MAAMM,YAAYR,OAAMS,OAAO,CAC7B,IAAO,CAAA;YACLN;YACAC;YACAC;YACAE;YACAD;SACF,CAAA,EACA;QAACH;QAAYC;QAAWC;QAAeE;QAAaD;KAAS;IAG/D,OAAO;QAAEE;IAAU;AACrB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/AccordionHeader.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { ARIAButtonSlotProps } from '@fluentui/react-aria';\nimport type { AccordionHeaderContextValue } from '../../contexts/accordionHeader';\n\nexport type AccordionHeaderSize = 'small' | 'medium' | 'large' | 'extra-large';\nexport type AccordionHeaderExpandIconPosition = 'start' | 'end';\n\nexport type AccordionHeaderContextValues = {\n accordionHeader: AccordionHeaderContextValue;\n};\n\nexport type AccordionHeaderSlots = {\n /**\n * The element wrapping the button. By default this is a div, but can be a heading.\n */\n root: NonNullable<Slot<'div', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>>;\n /**\n * The component to be used as button in heading\n */\n button: NonNullable<Slot<ARIAButtonSlotProps<'a'>>>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n expandIcon?: Slot<'span'>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n icon?: Slot<'div'>;\n};\n\nexport type AccordionHeaderProps = ComponentProps<Partial<AccordionHeaderSlots>> & {\n /**\n * The position of the expand icon slot in heading.\n */\n expandIconPosition?: AccordionHeaderExpandIconPosition;\n\n /**\n * Indicates if the AccordionHeader should be rendered inline.\n */\n inline?: boolean;\n\n /**\n * Size of spacing in the heading.\n */\n size?: AccordionHeaderSize;\n};\n\nexport type AccordionHeaderState = ComponentState<AccordionHeaderSlots> &\n Required<Pick<AccordionHeaderProps, 'inline'>> &\n AccordionHeaderContextValue;\n"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/AccordionHeader.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { ARIAButtonSlotProps } from '@fluentui/react-aria';\nimport type { AccordionHeaderContextValue } from '../../contexts/accordionHeader';\n\nexport type AccordionHeaderSize = 'small' | 'medium' | 'large' | 'extra-large';\nexport type AccordionHeaderExpandIconPosition = 'start' | 'end';\n\nexport type AccordionHeaderContextValues = {\n accordionHeader: AccordionHeaderContextValue;\n};\n\nexport type AccordionHeaderSlots = {\n /**\n * The element wrapping the button. By default this is a div, but can be a heading.\n */\n root: NonNullable<Slot<'div', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>>;\n /**\n * The component to be used as button in heading\n */\n button: NonNullable<Slot<ARIAButtonSlotProps<'a'>>>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n expandIcon?: Slot<'span'>;\n /**\n * Expand icon slot rendered before (or after) children content in heading.\n */\n icon?: Slot<'div'>;\n};\n\nexport type AccordionHeaderProps = ComponentProps<Partial<AccordionHeaderSlots>> & {\n /**\n * The position of the expand icon slot in heading.\n */\n expandIconPosition?: AccordionHeaderExpandIconPosition;\n\n /**\n * Indicates if the AccordionHeader should be rendered inline.\n */\n inline?: boolean;\n\n /**\n * Size of spacing in the heading.\n */\n size?: AccordionHeaderSize;\n};\n\nexport type AccordionHeaderBaseProps = Omit<AccordionHeaderProps, 'inline' | 'size'>;\n\nexport type AccordionHeaderState = ComponentState<AccordionHeaderSlots> &\n Required<Pick<AccordionHeaderProps, 'inline'>> &\n AccordionHeaderContextValue;\n\nexport type AccordionHeaderBaseState = Omit<AccordionHeaderState, 'inline' | 'size'>;\n"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/index.ts"],"sourcesContent":["export { AccordionHeader } from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n} from './AccordionHeader.types';\nexport { renderAccordionHeader_unstable } from './renderAccordionHeader';\nexport { useAccordionHeader_unstable, useAccordionHeaderBase_unstable } from './useAccordionHeader';\nexport { useAccordionHeaderContextValues_unstable } from './useAccordionHeaderContextValues';\nexport { accordionHeaderClassNames, useAccordionHeaderStyles_unstable } from './useAccordionHeaderStyles.styles';\n"],"names":["AccordionHeader","renderAccordionHeader_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable","useAccordionHeaderContextValues_unstable","accordionHeaderClassNames","useAccordionHeaderStyles_unstable"],"mappings":";;;;;;;;;;;IAASA;+CAAe;;IAYfK;wEAAyB;;;eAHzBJ,qDAA8B;;;eACDE,mDAA+B;;;eAC5DC,yEAAwC;;;eACbE,iEAAiC;;;eAF5DJ,+CAA2B;;;iCAVJ,oBAAoB;uCASL,0BAA0B;oCACI,uBAAuB;iDAC3C,oCAAoC;gDAChB,oCAAoC"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/index.ts"],"sourcesContent":["export { AccordionHeader } from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n AccordionHeaderBaseState,\n AccordionHeaderBaseProps,\n} from './AccordionHeader.types';\nexport { renderAccordionHeader_unstable } from './renderAccordionHeader';\nexport { useAccordionHeader_unstable, useAccordionHeaderBase_unstable } from './useAccordionHeader';\nexport { useAccordionHeaderContextValues_unstable } from './useAccordionHeaderContextValues';\nexport { accordionHeaderClassNames, useAccordionHeaderStyles_unstable } from './useAccordionHeaderStyles.styles';\n"],"names":["AccordionHeader","renderAccordionHeader_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable","useAccordionHeaderContextValues_unstable","accordionHeaderClassNames","useAccordionHeaderStyles_unstable"],"mappings":";;;;;;;;;;;IAASA;+CAAe;;IAcfK;wEAAyB;;;eAHzBJ,qDAA8B;;;eACDE,mDAA+B;;;eAC5DC,yEAAwC;;;eACbE,iEAAiC;;;eAF5DJ,+CAA2B;;;iCAZJ,oBAAoB;uCAWL,0BAA0B;oCACI,uBAAuB;iDAC3C,oCAAoC;gDAChB,oCAAoC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/renderAccordionHeader.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport type { AccordionHeaderState, AccordionHeaderSlots, AccordionHeaderContextValues } from './AccordionHeader.types';\nimport { AccordionHeaderProvider } from '../../contexts/accordionHeader';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordionHeader_unstable = (\n state: AccordionHeaderState,\n contextValues: AccordionHeaderContextValues,\n): JSXElement => {\n assertSlots<AccordionHeaderSlots>(state);\n\n return (\n <AccordionHeaderProvider value={contextValues.accordionHeader}>\n <state.root>\n <state.button>\n {state.expandIconPosition === 'start' && state.expandIcon && <state.expandIcon />}\n {state.icon && <state.icon />}\n {state.root.children}\n {state.expandIconPosition === 'end' && state.expandIcon && <state.expandIcon />}\n </state.button>\n </state.root>\n </AccordionHeaderProvider>\n );\n};\n"],"names":["assertSlots","AccordionHeaderProvider","renderAccordionHeader_unstable","state","contextValues","value","accordionHeader","root","button","expandIconPosition","expandIcon","icon","children"],"mappings":";;;;+BAWaE;;;;;;4BAVb,iCAAiD;gCAErB,4BAA4B;iCAGhB,iCAAiC;AAKlE,uCAAuC,CAC5CC,OACAC;QAEAJ,2BAAAA,EAAkCG;IAElC,OAAA,WAAA,OACE,eAAA,EAACF,wCAAAA,EAAAA;QAAwBI,OAAOD,cAAcE,eAAe;kBAC3D,WAAA,GAAA,mBAAA,EAACH,MAAMI,IAAI,EAAA;sBACT,WAAA,OAAA,gBAAA,EAACJ,MAAMK,MAAM,EAAA;;oBACVL,MAAMM,kBAAkB,KAAK,WAAWN,MAAMO,UAAU,IAAA,WAAA,OAAI,eAAA,EAACP,MAAMO,UAAU,EAAA,CAAA;oBAC7EP,MAAMQ,IAAI,IAAA,WAAA,OAAI,eAAA,EAACR,MAAMQ,IAAI,EAAA,CAAA;oBACzBR,MAAMI,IAAI,CAACK,QAAQ;oBACnBT,MAAMM,kBAAkB,KAAK,SAASN,MAAMO,UAAU,IAAA,WAAA,OAAI,eAAA,EAACP,MAAMO,UAAU,EAAA,CAAA;;;;;AAKtF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/renderAccordionHeader.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport type {\n AccordionHeaderBaseState,\n AccordionHeaderSlots,\n AccordionHeaderContextValues,\n} from './AccordionHeader.types';\nimport { AccordionHeaderProvider } from '../../contexts/accordionHeader';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordionHeader_unstable = (\n state: AccordionHeaderBaseState,\n contextValues: AccordionHeaderContextValues,\n): JSXElement => {\n assertSlots<AccordionHeaderSlots>(state);\n\n return (\n <AccordionHeaderProvider value={contextValues.accordionHeader}>\n <state.root>\n <state.button>\n {state.expandIconPosition === 'start' && state.expandIcon && <state.expandIcon />}\n {state.icon && <state.icon />}\n {state.root.children}\n {state.expandIconPosition === 'end' && state.expandIcon && <state.expandIcon />}\n </state.button>\n </state.root>\n </AccordionHeaderProvider>\n );\n};\n"],"names":["assertSlots","AccordionHeaderProvider","renderAccordionHeader_unstable","state","contextValues","value","accordionHeader","root","button","expandIconPosition","expandIcon","icon","children"],"mappings":";;;;+BAeaE;;;;;;4BAdb,iCAAiD;gCAErB,4BAA4B;iCAOhB,iCAAiC;AAKlE,uCAAuC,CAC5CC,OACAC;QAEAJ,2BAAAA,EAAkCG;IAElC,OAAA,WAAA,OACE,eAAA,EAACF,wCAAAA,EAAAA;QAAwBI,OAAOD,cAAcE,eAAe;kBAC3D,WAAA,GAAA,mBAAA,EAACH,MAAMI,IAAI,EAAA;sBACT,WAAA,OAAA,gBAAA,EAACJ,MAAMK,MAAM,EAAA;;oBACVL,MAAMM,kBAAkB,KAAK,WAAWN,MAAMO,UAAU,IAAA,WAAA,OAAI,eAAA,EAACP,MAAMO,UAAU,EAAA,CAAA;oBAC7EP,MAAMQ,IAAI,IAAA,WAAA,OAAI,eAAA,EAACR,MAAMQ,IAAI,EAAA,CAAA;oBACzBR,MAAMI,IAAI,CAACK,QAAQ;oBACnBT,MAAMM,kBAAkB,KAAK,SAASN,MAAMO,UAAU,IAAA,WAAA,OAAI,eAAA,EAACP,MAAMO,UAAU,EAAA,CAAA;;;;;AAKtF,EAAE"}
@@ -27,7 +27,8 @@ const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
27
27
  const _accordionItem = require("../../contexts/accordionItem");
28
28
  const _reactmotion = require("@fluentui/react-motion");
29
29
  const useAccordionHeader_unstable = (props, ref)=>{
30
- const state = useAccordionHeaderBase_unstable(props, ref);
30
+ const { inline = false, size = 'medium', ...baseProps } = props;
31
+ const state = useAccordionHeaderBase_unstable(baseProps, ref);
31
32
  const { dir } = (0, _reactsharedcontexts.useFluent_unstable)();
32
33
  // Calculate how to rotate the expand icon [>] (ChevronRightRegular)
33
34
  let expandIconRotation;
@@ -48,10 +49,14 @@ const useAccordionHeader_unstable = (props, ref)=>{
48
49
  }
49
50
  });
50
51
  }
51
- return state;
52
+ return {
53
+ ...state,
54
+ inline,
55
+ size
56
+ };
52
57
  };
53
58
  const useAccordionHeaderBase_unstable = (props, ref)=>{
54
- const { icon, button, expandIcon, inline = false, size = 'medium', expandIconPosition = 'start', ...rest } = props;
59
+ const { icon, button, expandIcon, expandIconPosition = 'start', ...rest } = props;
55
60
  const { value, disabled, open } = (0, _accordionItem.useAccordionItemContext_unstable)();
56
61
  const requestToggle = (0, _accordion.useAccordionContext_unstable)((ctx)=>ctx.requestToggle);
57
62
  /**
@@ -82,8 +87,6 @@ const useAccordionHeaderBase_unstable = (props, ref)=>{
82
87
  return {
83
88
  disabled,
84
89
  open,
85
- size,
86
- inline,
87
90
  expandIconPosition,
88
91
  components: {
89
92
  root: 'div',
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionHeader/useAccordionHeader.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useEventCallback, slot, isResolvedShorthand } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\nimport type { AccordionHeaderProps, AccordionHeaderState } from './AccordionHeader.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport { ChevronRightRegular } from '@fluentui/react-icons';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\nimport { motionTokens } from '@fluentui/react-motion';\n\n/**\n * Returns the props and state required to render the component\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeader_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const state = useAccordionHeaderBase_unstable(props, ref);\n const { dir } = useFluent();\n\n // Calculate how to rotate the expand icon [>] (ChevronRightRegular)\n let expandIconRotation: 0 | 90 | -90 | 180;\n if (state.expandIconPosition === 'end') {\n // If expand icon is at the end, the chevron points up [^] when open, and down [v] when closed\n expandIconRotation = state.open ? -90 : 90;\n } else {\n // Otherwise, the chevron points down [v] when open, and right [>] (or left [<] in RTL) when closed\n expandIconRotation = state.open ? 90 : dir !== 'rtl' ? 0 : 180;\n }\n\n if (state.expandIcon) {\n state.expandIcon.children ??= (\n <ChevronRightRegular\n style={{\n transform: `rotate(${expandIconRotation}deg)`,\n transition: `transform ${motionTokens.durationNormal}ms ease-out`,\n }}\n />\n );\n }\n\n return state;\n};\n\n/**\n * Base state hook for AccordionHeader, without design related features.\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeaderBase_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const { icon, button, expandIcon, inline = false, size = 'medium', expandIconPosition = 'start', ...rest } = props;\n const { value, disabled, open } = useAccordionItemContext_unstable();\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n\n /**\n * force disabled state on button if accordion isn't collapsible\n * and this is the only item opened\n */\n const disabledFocusable = useAccordionContext_unstable(ctx => !ctx.collapsible && ctx.openItems.length === 1 && open);\n\n const buttonSlot = slot.always(button, {\n elementType: 'button',\n defaultProps: {\n disabled,\n disabledFocusable,\n 'aria-expanded': open,\n type: 'button',\n },\n });\n\n buttonSlot.onClick = useEventCallback(event => {\n if (isResolvedShorthand(button)) {\n button.onClick?.(event);\n }\n if (!event.defaultPrevented) {\n requestToggle({ value, event });\n }\n });\n\n return {\n disabled,\n open,\n size,\n inline,\n expandIconPosition,\n components: {\n root: 'div',\n button: 'button',\n expandIcon: 'span',\n icon: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n icon: slot.optional(icon, { elementType: 'div' }),\n expandIcon: slot.optional(expandIcon, {\n renderByDefault: true,\n defaultProps: {\n 'aria-hidden': true,\n },\n elementType: 'span',\n }),\n button: useARIAButtonProps(buttonSlot.as, buttonSlot),\n };\n};\n"],"names":["React","useEventCallback","slot","isResolvedShorthand","useARIAButtonProps","useAccordionContext_unstable","ChevronRightRegular","useFluent_unstable","useFluent","useAccordionItemContext_unstable","motionTokens","useAccordionHeader_unstable","props","ref","state","useAccordionHeaderBase_unstable","dir","expandIconRotation","expandIconPosition","open","expandIcon","children","style","transform","transition","durationNormal","icon","button","inline","size","rest","value","disabled","requestToggle","ctx","disabledFocusable","collapsible","openItems","length","buttonSlot","always","elementType","defaultProps","type","onClick","event","defaultPrevented","components","root","optional","renderByDefault","as"],"mappings":"AAAA;;;;;;;;;;;;mCAuDae;eAAAA;;IArCAJ,2BAAAA;;;;;iEAhBU,QAAQ;gCAC6B,4BAA4B;2BACrD,uBAAuB;2BAEb,2BAA2B;4BACpC,wBAAwB;qCACZ,kCAAkC;+BACjC,+BAA+B;6BACnD,yBAAyB;AAQ/C,oCAAoC,CACzCC,OACAC;IAEA,MAAMC,QAAQC,gCAAgCH,OAAOC;IACrD,MAAM,EAAEG,GAAG,EAAE,OAAGR,uCAAAA;IAEhB,oEAAoE;IACpE,IAAIS;IACJ,IAAIH,MAAMI,kBAAkB,KAAK,OAAO;QACtC,8FAA8F;QAC9FD,qBAAqBH,MAAMK,IAAI,GAAG,CAAC,KAAK;IAC1C,OAAO;QACL,mGAAmG;QACnGF,qBAAqBH,MAAMK,IAAI,GAAG,KAAKH,QAAQ,QAAQ,IAAI;IAC7D;IAEA,IAAIF,MAAMM,UAAU,EAAE;YACpBN;;QAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,MAAMM,UAAAA,AAAU,EAACC,QAAAA,MAAAA,QAAAA,cAAAA,KAAAA,IAAAA,YAAjBP,kBAAiBO,QAAAA,GAAAA,WAAAA,GACf,OAAA,aAAA,CAACf,+BAAAA,EAAAA;YACCgB,OAAO;gBACLC,WAAW,CAAC,OAAO,EAAEN,mBAAmB,IAAI,CAAC;gBAC7CO,YAAY,CAAC,UAAU,EAAEd,yBAAAA,CAAae,cAAc,CAAC,WAAW,CAAC;YACnE;;IAGN;IAEA,OAAOX;AACT,EAAE;AAQK,wCAAwC,CAC7CF,OACAC;IAEA,MAAM,EAAEa,IAAI,EAAEC,MAAM,EAAEP,UAAU,EAAEQ,SAAS,KAAK,EAAEC,OAAO,QAAQ,EAAEX,qBAAqB,OAAO,EAAE,GAAGY,MAAM,GAAGlB;IAC7G,MAAM,EAAEmB,KAAK,EAAEC,QAAQ,EAAEb,IAAI,EAAE,GAAGV,mDAAAA;IAClC,MAAMwB,oBAAgB5B,uCAAAA,EAA6B6B,CAAAA,MAAOA,IAAID,aAAa;IAE3E;;;GAGC,GACD,MAAME,wBAAoB9B,uCAAAA,EAA6B6B,CAAAA,MAAO,CAACA,IAAIE,WAAW,IAAIF,IAAIG,SAAS,CAACC,MAAM,KAAK,KAAKnB;IAEhH,MAAMoB,aAAarC,oBAAAA,CAAKsC,MAAM,CAACb,QAAQ;QACrCc,aAAa;QACbC,cAAc;YACZV;YACAG;YACA,iBAAiBhB;YACjBwB,MAAM;QACR;IACF;IAEAJ,WAAWK,OAAO,OAAG3C,gCAAAA,EAAiB4C,CAAAA;QACpC,QAAI1C,mCAAAA,EAAoBwB,SAAS;gBAC/BA;aAAAA,kBAAAA,OAAOiB,OAAAA,AAAO,MAAA,QAAdjB,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAAA,IAAAA,CAAAA,QAAiBkB;QACnB;QACA,IAAI,CAACA,MAAMC,gBAAgB,EAAE;YAC3Bb,cAAc;gBAAEF;gBAAOc;YAAM;QAC/B;IACF;IAEA,OAAO;QACLb;QACAb;QACAU;QACAD;QACAV;QACA6B,YAAY;YACVC,MAAM;YACNrB,QAAQ;YACRP,YAAY;YACZM,MAAM;QACR;QACAsB,MAAM9C,oBAAAA,CAAKsC,MAAM,CACf;YACE3B,KAAKA;YACL,GAAGiB,IAAI;QACT,GACA;YAAEW,aAAa;QAAM;QAEvBf,MAAMxB,oBAAAA,CAAK+C,QAAQ,CAACvB,MAAM;YAAEe,aAAa;QAAM;QAC/CrB,YAAYlB,oBAAAA,CAAK+C,QAAQ,CAAC7B,YAAY;YACpC8B,iBAAiB;YACjBR,cAAc;gBACZ,eAAe;YACjB;YACAD,aAAa;QACf;QACAd,YAAQvB,6BAAAA,EAAmBmC,WAAWY,EAAE,EAAEZ;IAC5C;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionHeader/useAccordionHeader.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useEventCallback, slot, isResolvedShorthand } from '@fluentui/react-utilities';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\nimport type {\n AccordionHeaderBaseProps,\n AccordionHeaderBaseState,\n AccordionHeaderProps,\n AccordionHeaderState,\n} from './AccordionHeader.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport { ChevronRightRegular } from '@fluentui/react-icons';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\nimport { motionTokens } from '@fluentui/react-motion';\n\n/**\n * Returns the props and state required to render the component\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeader_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const { inline = false, size = 'medium', ...baseProps } = props;\n const state = useAccordionHeaderBase_unstable(baseProps, ref);\n const { dir } = useFluent();\n\n // Calculate how to rotate the expand icon [>] (ChevronRightRegular)\n let expandIconRotation: 0 | 90 | -90 | 180;\n if (state.expandIconPosition === 'end') {\n // If expand icon is at the end, the chevron points up [^] when open, and down [v] when closed\n expandIconRotation = state.open ? -90 : 90;\n } else {\n // Otherwise, the chevron points down [v] when open, and right [>] (or left [<] in RTL) when closed\n expandIconRotation = state.open ? 90 : dir !== 'rtl' ? 0 : 180;\n }\n\n if (state.expandIcon) {\n state.expandIcon.children ??= (\n <ChevronRightRegular\n style={{\n transform: `rotate(${expandIconRotation}deg)`,\n transition: `transform ${motionTokens.durationNormal}ms ease-out`,\n }}\n />\n );\n }\n\n return { ...state, inline, size };\n};\n\n/**\n * Base state hook for AccordionHeader, without design related features.\n *\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeaderBase_unstable = (\n props: AccordionHeaderBaseProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderBaseState => {\n const { icon, button, expandIcon, expandIconPosition = 'start', ...rest } = props;\n const { value, disabled, open } = useAccordionItemContext_unstable();\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n\n /**\n * force disabled state on button if accordion isn't collapsible\n * and this is the only item opened\n */\n const disabledFocusable = useAccordionContext_unstable(ctx => !ctx.collapsible && ctx.openItems.length === 1 && open);\n\n const buttonSlot = slot.always(button, {\n elementType: 'button',\n defaultProps: {\n disabled,\n disabledFocusable,\n 'aria-expanded': open,\n type: 'button',\n },\n });\n\n buttonSlot.onClick = useEventCallback(event => {\n if (isResolvedShorthand(button)) {\n button.onClick?.(event);\n }\n if (!event.defaultPrevented) {\n requestToggle({ value, event });\n }\n });\n\n return {\n disabled,\n open,\n expandIconPosition,\n components: {\n root: 'div',\n button: 'button',\n expandIcon: 'span',\n icon: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n icon: slot.optional(icon, { elementType: 'div' }),\n expandIcon: slot.optional(expandIcon, {\n renderByDefault: true,\n defaultProps: {\n 'aria-hidden': true,\n },\n elementType: 'span',\n }),\n button: useARIAButtonProps(buttonSlot.as, buttonSlot),\n };\n};\n"],"names":["React","useEventCallback","slot","isResolvedShorthand","useARIAButtonProps","useAccordionContext_unstable","ChevronRightRegular","useFluent_unstable","useFluent","useAccordionItemContext_unstable","motionTokens","useAccordionHeader_unstable","props","ref","inline","size","baseProps","state","useAccordionHeaderBase_unstable","dir","expandIconRotation","expandIconPosition","open","expandIcon","children","style","transform","transition","durationNormal","icon","button","rest","value","disabled","requestToggle","ctx","disabledFocusable","collapsible","openItems","length","buttonSlot","always","elementType","defaultProps","type","onClick","event","defaultPrevented","components","root","optional","renderByDefault","as"],"mappings":"AAAA;;;;;;;;;;;;mCA6DakB;eAAAA;;IAtCAP,2BAAAA;;;;;iEArBU,QAAQ;gCAC6B,4BAA4B;2BACrD,uBAAuB;2BAOb,2BAA2B;4BACpC,wBAAwB;qCACZ,kCAAkC;+BACjC,+BAA+B;6BACnD,yBAAyB;AAQ/C,oCAAoC,CACzCC,OACAC;IAEA,MAAM,EAAEC,SAAS,KAAK,EAAEC,OAAO,QAAQ,EAAE,GAAGC,WAAW,GAAGJ;IAC1D,MAAMK,QAAQC,gCAAgCF,WAAWH;IACzD,MAAM,EAAEM,GAAG,EAAE,OAAGX,uCAAAA;IAEhB,oEAAoE;IACpE,IAAIY;IACJ,IAAIH,MAAMI,kBAAkB,KAAK,OAAO;QACtC,8FAA8F;QAC9FD,qBAAqBH,MAAMK,IAAI,GAAG,CAAC,KAAK;IAC1C,OAAO;QACL,mGAAmG;QACnGF,qBAAqBH,MAAMK,IAAI,GAAG,KAAKH,QAAQ,QAAQ,IAAI;IAC7D;IAEA,IAAIF,MAAMM,UAAU,EAAE;YACpBN;;QAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,MAAMM,UAAAA,AAAU,EAACC,QAAAA,MAAAA,QAAAA,cAAAA,KAAAA,IAAAA,YAAjBP,kBAAiBO,QAAAA,GAAAA,WAAAA,GACf,OAAA,aAAA,CAAClB,+BAAAA,EAAAA;YACCmB,OAAO;gBACLC,WAAW,CAAC,OAAO,EAAEN,mBAAmB,IAAI,CAAC;gBAC7CO,YAAY,CAAC,UAAU,EAAEjB,yBAAAA,CAAakB,cAAc,CAAC,WAAW,CAAC;YACnE;;IAGN;IAEA,OAAO;QAAE,GAAGX,KAAK;QAAEH;QAAQC;IAAK;AAClC,EAAE;AAQK,wCAAwC,CAC7CH,OACAC;IAEA,MAAM,EAAEgB,IAAI,EAAEC,MAAM,EAAEP,UAAU,EAAEF,qBAAqB,OAAO,EAAE,GAAGU,MAAM,GAAGnB;IAC5E,MAAM,EAAEoB,KAAK,EAAEC,QAAQ,EAAEX,IAAI,EAAE,OAAGb,+CAAAA;IAClC,MAAMyB,oBAAgB7B,uCAAAA,EAA6B8B,CAAAA,MAAOA,IAAID,aAAa;IAE3E;;;GAGC,GACD,MAAME,oBAAoB/B,2CAAAA,EAA6B8B,CAAAA,MAAO,CAACA,IAAIE,WAAW,IAAIF,IAAIG,SAAS,CAACC,MAAM,KAAK,KAAKjB;IAEhH,MAAMkB,aAAatC,oBAAAA,CAAKuC,MAAM,CAACX,QAAQ;QACrCY,aAAa;QACbC,cAAc;YACZV;YACAG;YACA,iBAAiBd;YACjBsB,MAAM;QACR;IACF;IAEAJ,WAAWK,OAAO,OAAG5C,gCAAAA,EAAiB6C,CAAAA;QACpC,IAAI3C,uCAAAA,EAAoB2B,SAAS;gBAC/BA;aAAAA,kBAAAA,OAAOe,OAAAA,AAAO,MAAA,QAAdf,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAAA,IAAAA,CAAAA,QAAiBgB;QACnB;QACA,IAAI,CAACA,MAAMC,gBAAgB,EAAE;YAC3Bb,cAAc;gBAAEF;gBAAOc;YAAM;QAC/B;IACF;IAEA,OAAO;QACLb;QACAX;QACAD;QACA2B,YAAY;YACVC,MAAM;YACNnB,QAAQ;YACRP,YAAY;YACZM,MAAM;QACR;QACAoB,MAAM/C,oBAAAA,CAAKuC,MAAM,CACf;YACE5B,KAAKA;YACL,GAAGkB,IAAI;QACT,GACA;YAAEW,aAAa;QAAM;QAEvBb,MAAM3B,oBAAAA,CAAKgD,QAAQ,CAACrB,MAAM;YAAEa,aAAa;QAAM;QAC/CnB,YAAYrB,oBAAAA,CAAKgD,QAAQ,CAAC3B,YAAY;YACpC4B,iBAAiB;YACjBR,cAAc;gBACZ,eAAe;YACjB;YACAD,aAAa;QACf;QACAZ,YAAQ1B,6BAAAA,EAAmBoC,WAAWY,EAAE,EAAEZ;IAC5C;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionItem/AccordionItem.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport type AccordionItemContextValues<Value = AccordionItemValue> = {\n accordionItem: AccordionItemContextValue<Value>;\n};\n\nexport type AccordionItemSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionItemProps<Value = AccordionItemValue> = ComponentProps<AccordionItemSlots> & {\n /**\n * Disables opening/closing of panel.\n */\n disabled?: boolean;\n /**\n * Required value that identifies this item inside an Accordion component.\n */\n value: Value;\n};\n\nexport type AccordionItemValue = unknown;\n\nexport type AccordionItemState<Value = AccordionItemValue> = ComponentState<AccordionItemSlots> &\n AccordionItemContextValue<Value>;\n"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../src/components/AccordionItem/AccordionItem.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport type AccordionItemContextValues<Value = AccordionItemValue> = {\n accordionItem: AccordionItemContextValue<Value>;\n};\n\nexport type AccordionItemSlots = {\n root: NonNullable<Slot<'div'>>;\n};\n\nexport type AccordionItemProps<Value = AccordionItemValue> = ComponentProps<AccordionItemSlots> & {\n /**\n * Disables opening/closing of panel.\n */\n disabled?: boolean;\n /**\n * Required value that identifies this item inside an Accordion component.\n */\n value: Value;\n};\n\nexport type AccordionItemValue = unknown;\n\nexport type AccordionItemState<Value = AccordionItemValue> = ComponentState<AccordionItemSlots> &\n AccordionItemContextValue<Value>;\n"],"names":[],"mappings":""}
@@ -9,8 +9,6 @@ Object.defineProperty(exports, "useAccordionItem_unstable", {
9
9
  return useAccordionItem_unstable;
10
10
  }
11
11
  });
12
- const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
- const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
12
  const _reactutilities = require("@fluentui/react-utilities");
15
13
  const _accordion = require("../../contexts/accordion");
16
14
  const useAccordionItem_unstable = (props, ref)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionItem/useAccordionItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { slot, useEventCallback } from '@fluentui/react-utilities';\nimport type { AccordionItemProps, AccordionItemState } from './AccordionItem.types';\nimport type { AccordionToggleEvent } from '../Accordion/Accordion.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionItem properties\n * @param ref - reference to root HTMLElement of AccordionItem\n */\nexport const useAccordionItem_unstable = (\n props: AccordionItemProps,\n ref: React.Ref<HTMLElement>,\n): AccordionItemState => {\n const { value, disabled = false, ...rest } = props;\n\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n const open = useAccordionContext_unstable(ctx => ctx.openItems.includes(value));\n const onAccordionHeaderClick = useEventCallback((event: AccordionToggleEvent) => requestToggle({ event, value }));\n\n return {\n open,\n value,\n disabled,\n onHeaderClick: onAccordionHeaderClick,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n disabled,\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["React","slot","useEventCallback","useAccordionContext_unstable","useAccordionItem_unstable","props","ref","value","disabled","rest","requestToggle","ctx","open","openItems","includes","onAccordionHeaderClick","event","onHeaderClick","components","root","always","elementType"],"mappings":"AAAA;;;;;+BAaaI;;;;;;;iEAXU,QAAQ;gCACQ,4BAA4B;2BAGtB,2BAA2B;AAOjE,kCAAkC,CACvCC,OACAC;IAEA,MAAM,EAAEC,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGC,MAAM,GAAGJ;IAE7C,MAAMK,oBAAgBP,uCAAAA,EAA6BQ,CAAAA,MAAOA,IAAID,aAAa;IAC3E,MAAME,WAAOT,uCAAAA,EAA6BQ,CAAAA,MAAOA,IAAIE,SAAS,CAACC,QAAQ,CAACP;IACxE,MAAMQ,yBAAyBb,oCAAAA,EAAiB,CAACc,QAAgCN,cAAc;YAAEM;YAAOT;QAAM;IAE9G,OAAO;QACLK;QACAL;QACAC;QACAS,eAAeF;QACfG,YAAY;YACVC,MAAM;QACR;QACAA,MAAMlB,oBAAAA,CAAKmB,MAAM,CACf;YACEZ;YACAF,KAAKA;YACL,GAAGG,IAAI;QACT,GACA;YAAEY,aAAa;QAAM;IAEzB;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionItem/useAccordionItem.ts"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { slot, useEventCallback } from '@fluentui/react-utilities';\nimport type { AccordionItemProps, AccordionItemState } from './AccordionItem.types';\nimport type { AccordionToggleEvent } from '../Accordion/Accordion.types';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionItem properties\n * @param ref - reference to root HTMLElement of AccordionItem\n */\nexport const useAccordionItem_unstable = (\n props: AccordionItemProps,\n ref: React.Ref<HTMLElement>,\n): AccordionItemState => {\n const { value, disabled = false, ...rest } = props;\n\n const requestToggle = useAccordionContext_unstable(ctx => ctx.requestToggle);\n const open = useAccordionContext_unstable(ctx => ctx.openItems.includes(value));\n const onAccordionHeaderClick = useEventCallback((event: AccordionToggleEvent) => requestToggle({ event, value }));\n\n return {\n open,\n value,\n disabled,\n onHeaderClick: onAccordionHeaderClick,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n disabled,\n ref: ref as React.Ref<HTMLDivElement>,\n ...rest,\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["slot","useEventCallback","useAccordionContext_unstable","useAccordionItem_unstable","props","ref","value","disabled","rest","requestToggle","ctx","open","openItems","includes","onAccordionHeaderClick","event","onHeaderClick","components","root","always","elementType"],"mappings":"AAAA;;;;;+BAaaG;;;;;;gCAV0B,4BAA4B;2BAGtB,2BAA2B;AAOjE,kCAAkC,CACvCC,OACAC;IAEA,MAAM,EAAEC,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGC,MAAM,GAAGJ;IAE7C,MAAMK,oBAAgBP,uCAAAA,EAA6BQ,CAAAA,MAAOA,IAAID,aAAa;IAC3E,MAAME,WAAOT,uCAAAA,EAA6BQ,CAAAA,MAAOA,IAAIE,SAAS,CAACC,QAAQ,CAACP;IACxE,MAAMQ,6BAAyBb,gCAAAA,EAAiB,CAACc,QAAgCN,cAAc;YAAEM;YAAOT;QAAM;IAE9G,OAAO;QACLK;QACAL;QACAC;QACAS,eAAeF;QACfG,YAAY;YACVC,MAAM;QACR;QACAA,MAAMlB,oBAAAA,CAAKmB,MAAM,CACf;YACEZ;YACAF,KAAKA;YACL,GAAGG,IAAI;QACT,GACA;YAAEY,aAAa;QAAM;IAEzB;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionItem/useAccordionItemContextValues.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionItemContextValues, AccordionItemState } from './AccordionItem.types';\nimport { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport function useAccordionItemContextValues_unstable(state: AccordionItemState): AccordionItemContextValues {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { disabled, open, value, onHeaderClick } = state;\n const accordionItem = React.useMemo<AccordionItemContextValue>(\n () => ({ disabled, open, value, onHeaderClick }),\n [disabled, open, value, onHeaderClick],\n );\n\n return { accordionItem };\n}\n"],"names":["React","useAccordionItemContextValues_unstable","state","disabled","open","value","onHeaderClick","accordionItem","useMemo"],"mappings":"AAAA;;;;;;;;;;;;iEAEuB,QAAQ;AAIxB,SAASC,uCAAuCC,KAAyB;IAC9E,4DAA4D;IAC5D,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGJ;IACjD,MAAMK,gBAAgBP,OAAMQ,OAAO,CACjC,IAAO,CAAA;YAAEL;YAAUC;YAAMC;YAAOC;SAAc,CAAA,EAC9C;QAACH;QAAUC;QAAMC;QAAOC;KAAc;IAGxC,OAAO;QAAEC;IAAc;AACzB"}
1
+ {"version":3,"sources":["../src/components/AccordionItem/useAccordionItemContextValues.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionItemContextValues, AccordionItemState } from './AccordionItem.types';\nimport type { AccordionItemContextValue } from '../../contexts/accordionItem';\n\nexport function useAccordionItemContextValues_unstable(state: AccordionItemState): AccordionItemContextValues {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { disabled, open, value, onHeaderClick } = state;\n const accordionItem = React.useMemo<AccordionItemContextValue>(\n () => ({ disabled, open, value, onHeaderClick }),\n [disabled, open, value, onHeaderClick],\n );\n\n return { accordionItem };\n}\n"],"names":["React","useAccordionItemContextValues_unstable","state","disabled","open","value","onHeaderClick","accordionItem","useMemo"],"mappings":"AAAA;;;;;;;;;;;;iEAEuB,QAAQ;AAIxB,SAASC,uCAAuCC,KAAyB;IAC9E,4DAA4D;IAC5D,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGJ;IACjD,MAAMK,gBAAgBP,OAAMQ,OAAO,CACjC,IAAO,CAAA;YAAEL;YAAUC;YAAMC;YAAOC;SAAc,CAAA,EAC9C;QAACH;QAAUC;QAAMC;QAAOC;KAAc;IAGxC,OAAO;QAAEC;IAAc;AACzB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionPanel/AccordionPanel.types.ts"],"sourcesContent":["import type { PresenceMotionSlotProps } from '@fluentui/react-motion';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type AccordionPanelSlots = {\n root: NonNullable<Slot<'div'>>;\n collapseMotion?: Slot<PresenceMotionSlotProps>;\n};\n\nexport type AccordionPanelProps = ComponentProps<AccordionPanelSlots>;\n\nexport type AccordionPanelBaseProps = ComponentProps<Omit<AccordionPanelSlots, 'collapseMotion'>>;\n\nexport type AccordionPanelState = ComponentState<AccordionPanelSlots> & {\n /**\n * Internal open state, provided by context.\n */\n open: boolean;\n};\n\nexport type AccordionPanelBaseState = ComponentState<Omit<AccordionPanelSlots, 'collapseMotion'>> &\n Pick<AccordionPanelState, 'open'>;\n"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../src/components/AccordionPanel/AccordionPanel.types.ts"],"sourcesContent":["import type { PresenceMotionSlotProps } from '@fluentui/react-motion';\nimport type { CollapseParams } from '@fluentui/react-motion-components-preview';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type AccordionPanelSlots = {\n root: NonNullable<Slot<'div'>>;\n collapseMotion?: Slot<PresenceMotionSlotProps<CollapseParams>>;\n};\n\nexport type AccordionPanelProps = ComponentProps<AccordionPanelSlots>;\n\nexport type AccordionPanelBaseProps = ComponentProps<Omit<AccordionPanelSlots, 'collapseMotion'>>;\n\nexport type AccordionPanelState = ComponentState<AccordionPanelSlots> & {\n /**\n * Internal open state, provided by context.\n */\n open: boolean;\n};\n\nexport type AccordionPanelBaseState = ComponentState<Omit<AccordionPanelSlots, 'collapseMotion'>> &\n Pick<AccordionPanelState, 'open'>;\n"],"names":[],"mappings":""}
@@ -17,8 +17,6 @@ _export(exports, {
17
17
  return useAccordionPanel_unstable;
18
18
  }
19
19
  });
20
- const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
21
- const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
22
20
  const _reactutilities = require("@fluentui/react-utilities");
23
21
  const _reacttabster = require("@fluentui/react-tabster");
24
22
  const _reactmotion = require("@fluentui/react-motion");
@@ -63,7 +61,14 @@ const useAccordionPanelBase_unstable = (props, ref)=>{
63
61
  },
64
62
  root: _reactutilities.slot.always({
65
63
  ref: ref,
66
- ...props
64
+ ...props,
65
+ // Prevent keyboard focus from entering the panel while it is closed/collapsing.
66
+ // tabIndex: -1 prevents the panel itself from being focused, and inert prevents
67
+ // all focusable descendants from being reachable via keyboard navigation.
68
+ ...open ? {} : {
69
+ tabIndex: -1,
70
+ inert: true
71
+ }
67
72
  }, {
68
73
  elementType: 'div'
69
74
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AccordionPanel/useAccordionPanel.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { slot } from '@fluentui/react-utilities';\nimport { useTabsterAttributes } from '@fluentui/react-tabster';\nimport { presenceMotionSlot } from '@fluentui/react-motion';\nimport { Collapse } from '@fluentui/react-motion-components-preview';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport type {\n AccordionPanelBaseProps,\n AccordionPanelBaseState,\n AccordionPanelProps,\n AccordionPanelState,\n} from './AccordionPanel.types';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionPanel properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanel_unstable = (\n props: AccordionPanelProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelState => {\n const { collapseMotion, ...baseProps } = props;\n const state = useAccordionPanelBase_unstable(baseProps, ref);\n const focusableProps = useTabsterAttributes({ focusable: { excludeFromMover: true } });\n const navigation = useAccordionContext_unstable(ctx => ctx.navigation);\n\n return {\n ...state,\n components: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ...state.components,\n collapseMotion: Collapse,\n },\n root: {\n ...state.root,\n ...(navigation && focusableProps),\n },\n collapseMotion: presenceMotionSlot(props.collapseMotion, {\n elementType: Collapse,\n defaultProps: {\n visible: state.open,\n unmountOnExit: true,\n },\n }),\n };\n};\n\n/**\n * Base state hook for AccordionPanel, without design related features.\n *\n * @param props - AccordionPanelBaseProps properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanelBase_unstable = (\n props: AccordionPanelBaseProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelBaseState => {\n const { open } = useAccordionItemContext_unstable();\n\n return {\n open,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...props,\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["React","slot","useTabsterAttributes","presenceMotionSlot","Collapse","useAccordionContext_unstable","useAccordionItemContext_unstable","useAccordionPanel_unstable","props","ref","collapseMotion","baseProps","state","useAccordionPanelBase_unstable","focusableProps","focusable","excludeFromMover","navigation","ctx","components","root","elementType","defaultProps","visible","open","unmountOnExit","always"],"mappings":"AAAA;;;;;;;;;;;;IAyDaa,8BAAAA;;;IApCAN,0BAAAA;;;;;iEAnBU,QAAQ;gCACV,4BAA4B;8BACZ,0BAA0B;6BAC5B,yBAAyB;8CACnC,4CAA4C;2BACxB,2BAA2B;+BAOvB,+BAA+B;AAOzE,mCAAmC,CACxCC,OACAC;IAEA,MAAM,EAAEC,cAAc,EAAE,GAAGC,WAAW,GAAGH;IACzC,MAAMI,QAAQC,+BAA+BF,WAAWF;IACxD,MAAMK,qBAAiBZ,kCAAAA,EAAqB;QAAEa,WAAW;YAAEC,kBAAkB;QAAK;IAAE;IACpF,MAAMC,iBAAaZ,uCAAAA,EAA6Ba,CAAAA,MAAOA,IAAID,UAAU;IAErE,OAAO;QACL,GAAGL,KAAK;QACRO,YAAY;YACV,4DAA4D;YAC5D,GAAGP,MAAMO,UAAU;YACnBT,gBAAgBN,sCAAAA;QAClB;QACAgB,MAAM;YACJ,GAAGR,MAAMQ,IAAI;YACb,GAAIH,cAAcH,cAAc;QAClC;QACAJ,oBAAgBP,+BAAAA,EAAmBK,MAAME,cAAc,EAAE;YACvDW,aAAajB,sCAAAA;YACbkB,cAAc;gBACZC,SAASX,MAAMY,IAAI;gBACnBC,eAAe;YACjB;QACF;IACF;AACF,EAAE;AAQK,uCAAuC,CAC5CjB,OACAC;IAEA,MAAM,EAAEe,IAAI,EAAE,OAAGlB,+CAAAA;IAEjB,OAAO;QACLkB;QACAL,YAAY;YACVC,MAAM;QACR;QACAA,MAAMnB,oBAAAA,CAAKyB,MAAM,CACf;YACEjB,KAAKA;YACL,GAAGD,KAAK;QACV,GACA;YAAEa,aAAa;QAAM;IAEzB;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/AccordionPanel/useAccordionPanel.ts"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { slot } from '@fluentui/react-utilities';\nimport { useTabsterAttributes } from '@fluentui/react-tabster';\nimport { presenceMotionSlot } from '@fluentui/react-motion';\nimport { Collapse } from '@fluentui/react-motion-components-preview';\nimport { useAccordionContext_unstable } from '../../contexts/accordion';\nimport type {\n AccordionPanelBaseProps,\n AccordionPanelBaseState,\n AccordionPanelProps,\n AccordionPanelState,\n} from './AccordionPanel.types';\nimport { useAccordionItemContext_unstable } from '../../contexts/accordionItem';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionPanel properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanel_unstable = (\n props: AccordionPanelProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelState => {\n const { collapseMotion, ...baseProps } = props;\n const state = useAccordionPanelBase_unstable(baseProps, ref);\n const focusableProps = useTabsterAttributes({ focusable: { excludeFromMover: true } });\n const navigation = useAccordionContext_unstable(ctx => ctx.navigation);\n\n return {\n ...state,\n components: {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ...state.components,\n collapseMotion: Collapse,\n },\n root: {\n ...state.root,\n ...(navigation && focusableProps),\n },\n collapseMotion: presenceMotionSlot(props.collapseMotion, {\n elementType: Collapse,\n defaultProps: {\n visible: state.open,\n unmountOnExit: true,\n },\n }),\n };\n};\n\n/**\n * Base state hook for AccordionPanel, without design related features.\n *\n * @param props - AccordionPanelBaseProps properties\n * @param ref - reference to root HTMLElement of AccordionPanel\n */\nexport const useAccordionPanelBase_unstable = (\n props: AccordionPanelBaseProps,\n ref: React.Ref<HTMLElement>,\n): AccordionPanelBaseState => {\n const { open } = useAccordionItemContext_unstable();\n\n return {\n open,\n components: {\n root: 'div',\n },\n root: slot.always(\n {\n ref: ref as React.Ref<HTMLDivElement>,\n ...props,\n // Prevent keyboard focus from entering the panel while it is closed/collapsing.\n // tabIndex: -1 prevents the panel itself from being focused, and inert prevents\n // all focusable descendants from being reachable via keyboard navigation.\n ...(open ? {} : { tabIndex: -1, inert: true }),\n },\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["slot","useTabsterAttributes","presenceMotionSlot","Collapse","useAccordionContext_unstable","useAccordionItemContext_unstable","useAccordionPanel_unstable","props","ref","collapseMotion","baseProps","state","useAccordionPanelBase_unstable","focusableProps","focusable","excludeFromMover","navigation","ctx","components","root","elementType","defaultProps","visible","open","unmountOnExit","always","tabIndex","inert"],"mappings":"AAAA;;;;;;;;;;;;IAyDaY,8BAAAA;;;IApCAN,0BAAAA;;;;gCAlBQ,4BAA4B;8BACZ,0BAA0B;6BAC5B,yBAAyB;8CACnC,4CAA4C;2BACxB,2BAA2B;+BAOvB,+BAA+B;AAOzE,mCAAmC,CACxCC,OACAC;IAEA,MAAM,EAAEC,cAAc,EAAE,GAAGC,WAAW,GAAGH;IACzC,MAAMI,QAAQC,+BAA+BF,WAAWF;IACxD,MAAMK,qBAAiBZ,kCAAAA,EAAqB;QAAEa,WAAW;YAAEC,kBAAkB;QAAK;IAAE;IACpF,MAAMC,iBAAaZ,uCAAAA,EAA6Ba,CAAAA,MAAOA,IAAID,UAAU;IAErE,OAAO;QACL,GAAGL,KAAK;QACRO,YAAY;YACV,4DAA4D;YAC5D,GAAGP,MAAMO,UAAU;YACnBT,gBAAgBN,sCAAAA;QAClB;QACAgB,MAAM;YACJ,GAAGR,MAAMQ,IAAI;YACb,GAAIH,cAAcH,cAAc;QAClC;QACAJ,oBAAgBP,+BAAAA,EAAmBK,MAAME,cAAc,EAAE;YACvDW,aAAajB,sCAAAA;YACbkB,cAAc;gBACZC,SAASX,MAAMY,IAAI;gBACnBC,eAAe;YACjB;QACF;IACF;AACF,EAAE;AAQK,uCAAuC,CAC5CjB,OACAC;IAEA,MAAM,EAAEe,IAAI,EAAE,OAAGlB,+CAAAA;IAEjB,OAAO;QACLkB;QACAL,YAAY;YACVC,MAAM;QACR;QACAA,MAAMnB,oBAAAA,CAAKyB,MAAM,CACf;YACEjB,KAAKA;YACL,GAAGD,KAAK;YACR,gFAAgF;YAChF,gFAAgF;YAChF,0EAA0E;YAC1E,GAAIgB,OAAO,CAAC,IAAI;gBAAEG,UAAU,CAAC;gBAAGC,OAAO;YAAK,CAAC;QAC/C,GACA;YAAEP,aAAa;QAAM;IAEzB;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/accordion.ts"],"sourcesContent":["'use client';\n\nimport { createContext, ContextSelector, useContextSelector } from '@fluentui/react-context-selector';\nimport type { Context } from '@fluentui/react-context-selector';\nimport { AccordionItemValue } from '../AccordionItem';\nimport { AccordionToggleData, AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionRequestToggleData<Value = AccordionItemValue> = { event: AccordionToggleEvent } & Pick<\n AccordionToggleData<Value>,\n 'value'\n>;\n\nexport type AccordionContextValue<Value = AccordionItemValue> = {\n /**\n * The list of opened panels by index\n */\n openItems: AccordionItemValue[];\n /**\n * Callback used by AccordionItem to request a change on it's own opened state\n * Should be used to toggle AccordionItem\n */\n requestToggle: (data: AccordionRequestToggleData<Value>) => void;\n collapsible: boolean;\n multiple: boolean;\n navigation: 'linear' | 'circular' | undefined;\n};\n\nconst AccordionContext = createContext<AccordionContextValue | undefined>(undefined) as Context<AccordionContextValue>;\n\nconst accordionContextDefaultValue: AccordionContextValue = {\n openItems: [],\n collapsible: false,\n multiple: false,\n navigation: undefined,\n requestToggle() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionProvider } = AccordionContext;\nexport const useAccordionContext_unstable = <T>(selector: ContextSelector<AccordionContextValue, T>): T =>\n useContextSelector(AccordionContext, (ctx = accordionContextDefaultValue) => selector(ctx));\n"],"names":["createContext","useContextSelector","AccordionContext","undefined","accordionContextDefaultValue","openItems","collapsible","multiple","navigation","requestToggle","Provider","AccordionProvider","useAccordionContext_unstable","selector","ctx"],"mappings":"AAAA;;;;;;;;;;;;qBAuC0C;;;gCAC7BY;;;;sCAtCsD,mCAAmC;AAyBtG,MAAMV,uBAAmBF,mCAAAA,EAAiDG;AAE1E,MAAMC,+BAAsD;IAC1DC,WAAW,EAAE;IACbC,aAAa;IACbC,UAAU;IACVC,YAAYL;IACZM;IACE,QAAQ,GACV;AACF;AAEO,MAAM,EAAEC,UAAUC,mBAAmB,GAAGT,iBAAiB;AACzD,MAAMU,+BAA+B,CAAIC,eAC9CZ,wCAAAA,EAAmBC,kBAAkB,CAACY,MAAMV,4BAA4B,GAAKS,SAASC,MAAM"}
1
+ {"version":3,"sources":["../src/contexts/accordion.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport type { Context, ContextSelector } from '@fluentui/react-context-selector';\nimport type { AccordionItemValue } from '../AccordionItem';\nimport type { AccordionToggleData, AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionRequestToggleData<Value = AccordionItemValue> = { event: AccordionToggleEvent } & Pick<\n AccordionToggleData<Value>,\n 'value'\n>;\n\nexport type AccordionContextValue<Value = AccordionItemValue> = {\n /**\n * The list of opened panels by index\n */\n openItems: AccordionItemValue[];\n /**\n * Callback used by AccordionItem to request a change on it's own opened state\n * Should be used to toggle AccordionItem\n */\n requestToggle: (data: AccordionRequestToggleData<Value>) => void;\n collapsible: boolean;\n multiple: boolean;\n navigation: 'linear' | 'circular' | undefined;\n};\n\nconst AccordionContext = createContext<AccordionContextValue | undefined>(undefined) as Context<AccordionContextValue>;\n\nconst accordionContextDefaultValue: AccordionContextValue = {\n openItems: [],\n collapsible: false,\n multiple: false,\n navigation: undefined,\n requestToggle() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionProvider } = AccordionContext;\nexport const useAccordionContext_unstable = <T>(selector: ContextSelector<AccordionContextValue, T>): T =>\n useContextSelector(AccordionContext, (ctx = accordionContextDefaultValue) => selector(ctx));\n"],"names":["createContext","useContextSelector","AccordionContext","undefined","accordionContextDefaultValue","openItems","collapsible","multiple","navigation","requestToggle","Provider","AccordionProvider","useAccordionContext_unstable","selector","ctx"],"mappings":"AAAA;;;;;;;;;;;;qBAuC0C;;;gCAC7BY;;;;sCAtCqC,mCAAmC;AAyBrF,MAAMV,uBAAmBF,mCAAAA,EAAiDG;AAE1E,MAAMC,+BAAsD;IAC1DC,WAAW,EAAE;IACbC,aAAa;IACbC,UAAU;IACVC,YAAYL;IACZM;IACE,QAAQ,GACV;AACF;AAEO,MAAM,EAAEC,UAAUC,mBAAmB,GAAGT,iBAAiB;AACzD,MAAMU,+BAA+B,CAAIC,eAC9CZ,wCAAAA,EAAmBC,kBAAkB,CAACY,MAAMV,4BAA4B,GAAKS,SAASC,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/accordionItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { AccordionItemValue } from '../AccordionItem';\nimport { AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionItemContextValue<Value = AccordionItemValue> = {\n open: boolean;\n disabled: boolean;\n value: Value;\n /**\n * @deprecated - use `requestToggle` from AccordionContent instead\n */\n onHeaderClick(event: AccordionToggleEvent): void;\n};\n\nconst AccordionItemContext = React.createContext<AccordionItemContextValue<unknown> | undefined>(\n undefined,\n) as React.Context<AccordionItemContextValue<unknown>>;\n\nconst accordionItemContextDefaultValue: AccordionItemContextValue<unknown> = {\n open: false,\n disabled: false,\n value: undefined,\n onHeaderClick() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionItemProvider } = AccordionItemContext;\n\nexport const useAccordionItemContext_unstable = (): AccordionItemContextValue<unknown> => {\n return React.useContext(AccordionItemContext) ?? accordionItemContextDefaultValue;\n};\n"],"names":["React","AccordionItemContext","createContext","undefined","accordionItemContextDefaultValue","open","disabled","value","onHeaderClick","Provider","AccordionItemProvider","useAccordionItemContext_unstable","useContext"],"mappings":"AAAA;;;;;;;;;;;;IA6ByBU;;;oCAEZC;;;;;iEA7BU,QAAQ;AAc/B,MAAMV,qCAAuBD,OAAME,aAAa,CAC9CC;AAGF,MAAMC,mCAAuE;IAC3EC,MAAM;IACNC,UAAU;IACVC,OAAOJ;IACPK;IACE,QAAQ,GACV;AACF;AAEO,MAAM,EAAEC,+BAA+B,EAAE,GAAGR,qBAAqB;AAEjE,MAAMU,mCAAmC;QACvCX;IAAP,OAAOA,CAAAA,oBAAAA,OAAMY,UAAU,CAACX,qBAAAA,MAAAA,QAAjBD,sBAAAA,KAAAA,IAAAA,oBAA0CI;AACnD,EAAE"}
1
+ {"version":3,"sources":["../src/contexts/accordionItem.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { AccordionItemValue } from '../AccordionItem';\nimport type { AccordionToggleEvent } from '../Accordion';\n\nexport type AccordionItemContextValue<Value = AccordionItemValue> = {\n open: boolean;\n disabled: boolean;\n value: Value;\n /**\n * @deprecated - use `requestToggle` from AccordionContent instead\n */\n onHeaderClick(event: AccordionToggleEvent): void;\n};\n\nconst AccordionItemContext = React.createContext<AccordionItemContextValue<unknown> | undefined>(\n undefined,\n) as React.Context<AccordionItemContextValue<unknown>>;\n\nconst accordionItemContextDefaultValue: AccordionItemContextValue<unknown> = {\n open: false,\n disabled: false,\n value: undefined,\n onHeaderClick() {\n /* noop */\n },\n};\n\nexport const { Provider: AccordionItemProvider } = AccordionItemContext;\n\nexport const useAccordionItemContext_unstable = (): AccordionItemContextValue<unknown> => {\n return React.useContext(AccordionItemContext) ?? accordionItemContextDefaultValue;\n};\n"],"names":["React","AccordionItemContext","createContext","undefined","accordionItemContextDefaultValue","open","disabled","value","onHeaderClick","Provider","AccordionItemProvider","useAccordionItemContext_unstable","useContext"],"mappings":"AAAA;;;;;;;;;;;;IA6ByBU;;;oCAEZC;;;;;iEA7BU,QAAQ;AAc/B,MAAMV,qCAAuBD,OAAME,aAAa,CAC9CC;AAGF,MAAMC,mCAAuE;IAC3EC,MAAM;IACNC,UAAU;IACVC,OAAOJ;IACPK;IACE,QAAQ,GACV;AACF;AAEO,MAAM,EAAEC,+BAA+B,EAAE,GAAGR,qBAAqB;AAEjE,MAAMU,mCAAmC;QACvCX;IAAP,OAAOA,CAAAA,oBAAAA,OAAMY,UAAU,CAACX,qBAAAA,MAAAA,QAAjBD,sBAAAA,KAAAA,IAAAA,oBAA0CI;AACnD,EAAE"}
@@ -54,12 +54,18 @@ _export(exports, {
54
54
  renderAccordion_unstable: function() {
55
55
  return _Accordion.renderAccordion_unstable;
56
56
  },
57
+ useAccordionBase_unstable: function() {
58
+ return _Accordion.useAccordionBase_unstable;
59
+ },
57
60
  useAccordionContextValues_unstable: function() {
58
61
  return _Accordion.useAccordionContextValues_unstable;
59
62
  },
60
63
  useAccordionContext_unstable: function() {
61
64
  return _accordion.useAccordionContext_unstable;
62
65
  },
66
+ useAccordionHeaderBase_unstable: function() {
67
+ return _AccordionHeader.useAccordionHeaderBase_unstable;
68
+ },
63
69
  useAccordionHeaderContextValues_unstable: function() {
64
70
  return _AccordionHeader.useAccordionHeaderContextValues_unstable;
65
71
  },
@@ -84,6 +90,9 @@ _export(exports, {
84
90
  useAccordionItem_unstable: function() {
85
91
  return _AccordionItem.useAccordionItem_unstable;
86
92
  },
93
+ useAccordionPanelBase_unstable: function() {
94
+ return _AccordionPanel.useAccordionPanelBase_unstable;
95
+ },
87
96
  useAccordionPanelStyles_unstable: function() {
88
97
  return _AccordionPanel.useAccordionPanelStyles_unstable;
89
98
  },
@@ -104,9 +113,3 @@ const _AccordionPanel = require("./AccordionPanel");
104
113
  const _accordion = require("./contexts/accordion");
105
114
  const _accordionItem = require("./contexts/accordionItem");
106
115
  const _accordionHeader = require("./contexts/accordionHeader");
107
- // Experimental APIs
108
- // export type { AccordionBaseState, AccordionBaseProps } from './Accordion';
109
- // export { useAccordionBase_unstable } from './Accordion';
110
- // export { useAccordionHeaderBase_unstable } from './AccordionHeader';
111
- // export type { AccordionPanelBaseState, AccordionPanelBaseProps } from './AccordionPanel';
112
- // export { useAccordionPanelBase_unstable } from './AccordionPanel';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n Accordion,\n accordionClassNames,\n renderAccordion_unstable,\n useAccordionContextValues_unstable,\n useAccordionStyles_unstable,\n useAccordion_unstable,\n} from './Accordion';\nexport type {\n AccordionContextValues,\n AccordionIndex,\n AccordionProps,\n AccordionSlots,\n AccordionState,\n AccordionToggleData,\n AccordionToggleEvent,\n AccordionToggleEventHandler,\n} from './Accordion';\nexport {\n AccordionItem,\n accordionItemClassNames,\n renderAccordionItem_unstable,\n useAccordionItemContextValues_unstable,\n useAccordionItemStyles_unstable,\n useAccordionItem_unstable,\n} from './AccordionItem';\nexport type {\n AccordionItemContextValues,\n AccordionItemProps,\n AccordionItemSlots,\n AccordionItemState,\n AccordionItemValue,\n} from './AccordionItem';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n} from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n} from './AccordionHeader';\nexport {\n AccordionPanel,\n accordionPanelClassNames,\n renderAccordionPanel_unstable,\n useAccordionPanelStyles_unstable,\n useAccordionPanel_unstable,\n} from './AccordionPanel';\nexport type { AccordionPanelProps, AccordionPanelSlots, AccordionPanelState } from './AccordionPanel';\n\nexport { AccordionProvider, useAccordionContext_unstable } from './contexts/accordion';\n\nexport type { AccordionContextValue } from './contexts/accordion';\n\nexport { AccordionItemProvider, useAccordionItemContext_unstable } from './contexts/accordionItem';\n\nexport type { AccordionItemContextValue } from './contexts/accordionItem';\n\nexport { AccordionHeaderProvider, useAccordionHeaderContext_unstable } from './contexts/accordionHeader';\n\nexport type { AccordionHeaderContextValue } from './contexts/accordionHeader';\n\n// Experimental APIs\n// export type { AccordionBaseState, AccordionBaseProps } from './Accordion';\n// export { useAccordionBase_unstable } from './Accordion';\n// export { useAccordionHeaderBase_unstable } from './AccordionHeader';\n// export type { AccordionPanelBaseState, AccordionPanelBaseProps } from './AccordionPanel';\n// export { useAccordionPanelBase_unstable } from './AccordionPanel';\n"],"names":["Accordion","accordionClassNames","renderAccordion_unstable","useAccordionContextValues_unstable","useAccordionStyles_unstable","useAccordion_unstable","AccordionItem","accordionItemClassNames","renderAccordionItem_unstable","useAccordionItemContextValues_unstable","useAccordionItemStyles_unstable","useAccordionItem_unstable","AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","AccordionPanel","accordionPanelClassNames","renderAccordionPanel_unstable","useAccordionPanelStyles_unstable","useAccordionPanel_unstable","AccordionProvider","useAccordionContext_unstable","AccordionItemProvider","useAccordionItemContext_unstable","AccordionHeaderProvider","useAccordionHeaderContext_unstable"],"mappings":";;;;;;;;;;;IACEA,SAAS;;;IAiCTY,eAAe;;;IAgCRe;uDAAuB;;;eA/C9BrB,4BAAa;;;eA2CNmB,oCAAqB;;;eAZ5BP,8BAAc;;IAQPK,iBAAiB;;;;eAxDxBtB,8BAAmB;;6BAiCM;eAAzBY;;;eAfAN,sCAAuB;;IA+BvBY;uDAAwB;;IAfxBL;8DAA8B;;;eAf9BN,2CAA4B;;IA+B5BY,6BAA6B;;;;eAjD7BlB,mCAAwB;;;eACxBC,6CAAkC;;gCAsDoB;eAA5BqB;;IArB1BT;wEAAwC;;IA6BRa;kEAAkC;;;eA5BlEZ,kDAAiC;;;eACjCC,4CAA2B;;;eAjB3BR,qDAAsC;;;eAwCRiB,+CAAgC;;;eAvC9DhB,8CAA+B;;;eAC/BC,wCAAyB;;;eA6BzBU,gDAAgC;;;eAChCC,0CAA0B;;+BAjDC;eAA3BlB;;;eACAC,gCAAqB;;;2BAChB,cAAc;+BAkBd,kBAAkB;iCAelB,oBAAoB;gCAepB,mBAAmB;2BAGsC,uBAAuB;+BAIf,2BAA2B;iCAIvB,6BAA6B;CAIzG,oBAAoB;CACpB,6EAA6E;CAC7E,2DAA2D;CAC3D,uEAAuE;CACvE,4FAA4F;CAC5F,qEAAqE"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n Accordion,\n accordionClassNames,\n renderAccordion_unstable,\n useAccordionContextValues_unstable,\n useAccordionStyles_unstable,\n useAccordion_unstable,\n useAccordionBase_unstable,\n} from './Accordion';\nexport type {\n AccordionContextValues,\n AccordionIndex,\n AccordionProps,\n AccordionSlots,\n AccordionState,\n AccordionToggleData,\n AccordionToggleEvent,\n AccordionToggleEventHandler,\n AccordionBaseState,\n AccordionBaseProps,\n} from './Accordion';\nexport {\n AccordionItem,\n accordionItemClassNames,\n renderAccordionItem_unstable,\n useAccordionItemContextValues_unstable,\n useAccordionItemStyles_unstable,\n useAccordionItem_unstable,\n} from './AccordionItem';\nexport type {\n AccordionItemContextValues,\n AccordionItemProps,\n AccordionItemSlots,\n AccordionItemState,\n AccordionItemValue,\n} from './AccordionItem';\nexport {\n AccordionHeader,\n accordionHeaderClassNames,\n renderAccordionHeader_unstable,\n useAccordionHeaderContextValues_unstable,\n useAccordionHeaderStyles_unstable,\n useAccordionHeader_unstable,\n useAccordionHeaderBase_unstable,\n} from './AccordionHeader';\nexport type {\n AccordionHeaderContextValues,\n AccordionHeaderExpandIconPosition,\n AccordionHeaderProps,\n AccordionHeaderSize,\n AccordionHeaderSlots,\n AccordionHeaderState,\n AccordionHeaderBaseState,\n AccordionHeaderBaseProps,\n} from './AccordionHeader';\nexport {\n AccordionPanel,\n accordionPanelClassNames,\n renderAccordionPanel_unstable,\n useAccordionPanelStyles_unstable,\n useAccordionPanel_unstable,\n useAccordionPanelBase_unstable,\n} from './AccordionPanel';\nexport type {\n AccordionPanelProps,\n AccordionPanelSlots,\n AccordionPanelState,\n AccordionPanelBaseState,\n AccordionPanelBaseProps,\n} from './AccordionPanel';\n\nexport { AccordionProvider, useAccordionContext_unstable } from './contexts/accordion';\n\nexport type { AccordionContextValue } from './contexts/accordion';\n\nexport { AccordionItemProvider, useAccordionItemContext_unstable } from './contexts/accordionItem';\n\nexport type { AccordionItemContextValue } from './contexts/accordionItem';\n\nexport { AccordionHeaderProvider, useAccordionHeaderContext_unstable } from './contexts/accordionHeader';\n\nexport type { AccordionHeaderContextValue } from './contexts/accordionHeader';\n"],"names":["Accordion","accordionClassNames","renderAccordion_unstable","useAccordionContextValues_unstable","useAccordionStyles_unstable","useAccordion_unstable","useAccordionBase_unstable","AccordionItem","accordionItemClassNames","renderAccordionItem_unstable","useAccordionItemContextValues_unstable","useAccordionItemStyles_unstable","useAccordionItem_unstable","AccordionHeader","accordionHeaderClassNames","renderAccordionHeader_unstable","useAccordionHeaderContextValues_unstable","useAccordionHeaderStyles_unstable","useAccordionHeader_unstable","useAccordionHeaderBase_unstable","AccordionPanel","accordionPanelClassNames","renderAccordionPanel_unstable","useAccordionPanelStyles_unstable","useAccordionPanel_unstable","useAccordionPanelBase_unstable","AccordionProvider","useAccordionContext_unstable","AccordionItemProvider","useAccordionItemContext_unstable","AccordionHeaderProvider","useAccordionHeaderContext_unstable"],"mappings":";;;;;;;;;;;IACEA;mCAAS;;mBAoCM;eAAfa;;IA0COiB,uBAAuB;;;IAzD9BvB;2CAAa;;;eAqDNqB,oCAAqB;;;eAnB5BR,8BAAc;;qBAeU;eAAjBM;;;eArEPzB,8BAAmB;;;eAoCnBa,0CAAyB;;;eAfzBN,sCAAuB;;;eAkCvBa,wCAAwB;;;eAlBxBN,+CAA8B;;;eAf9BN,2CAA4B;;IAkC5Ba,6BAA6B;;;;eAvD7BpB,mCAAwB;;;eAIxBI,oCAAyB;;;eAHzBH,6CAAkC;;;eAmERwB,uCAA4B;;;eA5BtDR,gDAA+B;;;eAH/BH,yDAAwC;;;eAuCRe,mDAAkC;;;eAtClEd,kDAAiC;;;eACjCC,4CAA2B;;IAjB3BR,sCAAsC;;;;eAkDRmB,+CAAgC;;;eAjD9DlB,8CAA+B;;;eAC/BC,wCAAyB;;;eAkCzBa,8CAA8B;;IAF9BF;+DAAgC;;;eAChCC,0CAA0B;;;eAvD1BpB,sCAA2B;;;eAC3BC,gCAAqB;;;2BAEhB,cAAc;+BAoBd,kBAAkB;iCAgBlB,oBAAoB;gCAkBpB,mBAAmB;2BASsC,uBAAuB;+BAIf,2BAA2B;iCAIvB,6BAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-accordion",
3
- "version": "9.9.2",
3
+ "version": "9.11.0",
4
4
  "description": "Fluent UI accordion component",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -12,16 +12,16 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@fluentui/react-aria": "^9.17.10",
16
- "@fluentui/react-context-selector": "^9.2.15",
15
+ "@fluentui/react-aria": "^9.17.11",
16
+ "@fluentui/react-context-selector": "^9.2.16",
17
17
  "@fluentui/react-icons": "^2.0.245",
18
- "@fluentui/react-jsx-runtime": "^9.4.1",
18
+ "@fluentui/react-jsx-runtime": "^9.4.2",
19
19
  "@fluentui/react-shared-contexts": "^9.26.2",
20
- "@fluentui/react-motion": "^9.13.0",
21
- "@fluentui/react-motion-components-preview": "^0.15.2",
22
- "@fluentui/react-tabster": "^9.26.13",
20
+ "@fluentui/react-motion": "^9.15.0",
21
+ "@fluentui/react-motion-components-preview": "^0.15.4",
22
+ "@fluentui/react-tabster": "^9.26.14",
23
23
  "@fluentui/react-theme": "^9.2.1",
24
- "@fluentui/react-utilities": "^9.26.2",
24
+ "@fluentui/react-utilities": "^9.26.3",
25
25
  "@griffel/react": "^1.5.32",
26
26
  "@swc/helpers": "^0.5.1"
27
27
  },