@fluentui/react-tree 9.12.2 → 9.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,44 @@
1
1
  # Change Log - @fluentui/react-tree
2
2
 
3
- This log was last generated on Wed, 30 Jul 2025 08:41:07 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 07 Aug 2025 09:59:10 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.12.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-tree_v9.12.4)
8
+
9
+ Thu, 07 Aug 2025 09:59:10 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tree_v9.12.3..@fluentui/react-tree_v9.12.4)
11
+
12
+ ### Patches
13
+
14
+ - Fixed no onNavigate event not firing when clicked on a leaf ([PR #34964](https://github.com/microsoft/fluentui/pull/34964) by patrycja.fogelman@microsoft.com)
15
+ - fix: migrate to R19 compatible JSX.* namespace types ([PR #34923](https://github.com/microsoft/fluentui/pull/34923) by martinhochel@microsoft.com)
16
+ - Bump @fluentui/react-aria to v9.16.3 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
17
+ - Bump @fluentui/react-avatar to v9.9.4 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
18
+ - Bump @fluentui/react-button to v9.6.4 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
19
+ - Bump @fluentui/react-checkbox to v9.5.3 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
20
+ - Bump @fluentui/react-context-selector to v9.2.5 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
21
+ - Bump @fluentui/react-motion-components-preview to v0.8.2 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
22
+ - Bump @fluentui/react-motion to v9.10.2 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
23
+ - Bump @fluentui/react-radio to v9.5.3 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
24
+ - Bump @fluentui/react-tabster to v9.26.3 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
25
+ - Bump @fluentui/react-utilities to v9.23.2 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
26
+ - Bump @fluentui/react-jsx-runtime to v9.1.5 ([PR #34980](https://github.com/microsoft/fluentui/pull/34980) by beachball)
27
+
28
+ ## [9.12.3](https://github.com/microsoft/fluentui/tree/@fluentui/react-tree_v9.12.3)
29
+
30
+ Wed, 30 Jul 2025 16:55:39 GMT
31
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tree_v9.12.2..@fluentui/react-tree_v9.12.3)
32
+
33
+ ### Patches
34
+
35
+ - Bump @fluentui/react-aria to v9.16.2 ([PR #34945](https://github.com/microsoft/fluentui/pull/34945) by beachball)
36
+ - Bump @fluentui/react-avatar to v9.9.3 ([PR #34945](https://github.com/microsoft/fluentui/pull/34945) by beachball)
37
+ - Bump @fluentui/react-button to v9.6.3 ([PR #34945](https://github.com/microsoft/fluentui/pull/34945) by beachball)
38
+
7
39
  ## [9.12.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-tree_v9.12.2)
8
40
 
9
- Wed, 30 Jul 2025 08:41:07 GMT
41
+ Wed, 30 Jul 2025 13:10:57 GMT
10
42
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tree_v9.12.1..@fluentui/react-tree_v9.12.2)
11
43
 
12
44
  ### Patches
package/dist/index.d.ts CHANGED
@@ -20,6 +20,7 @@ import type { EventHandler } from '@fluentui/react-utilities';
20
20
  import type { ExtractSlotProps } from '@fluentui/react-utilities';
21
21
  import { ForwardRefComponent } from '@fluentui/react-utilities';
22
22
  import type { Home } from '@fluentui/keyboard-keys';
23
+ import type { JSXElement } from '@fluentui/react-utilities';
23
24
  import type { PresenceMotionSlotProps } from '@fluentui/react-motion';
24
25
  import { Radio } from '@fluentui/react-radio';
25
26
  import { RadioProps } from '@fluentui/react-radio';
@@ -356,7 +357,7 @@ declare const internalSetSymbol: unique symbol;
356
357
 
357
358
  declare type MultiSelectValue = NonNullable<CheckboxProps['checked']>;
358
359
 
359
- export declare const renderFlatTree_unstable: (state: FlatTreeState, contextValues: FlatTreeContextValues) => JSX.Element;
360
+ export declare const renderFlatTree_unstable: (state: FlatTreeState, contextValues: FlatTreeContextValues) => JSXElement;
360
361
 
361
362
  export declare const renderTree_unstable: (state: TreeState, contextValues: TreeContextValues) => JSX.Element;
362
363
 
@@ -823,11 +824,11 @@ export declare type TreeProps = ComponentProps<TreeSlots> & {
823
824
  };
824
825
 
825
826
  export declare const TreeProvider: {
826
- (props: React_2.ProviderProps<TreeContextValue | SubtreeContextValue>): JSX.Element;
827
+ (props: React_2.ProviderProps<TreeContextValue | SubtreeContextValue>): JSXElement;
827
828
  displayName: string;
828
829
  };
829
830
 
830
- export declare const TreeRootReset: (props: TreeRootResetProps) => JSX.Element;
831
+ export declare const TreeRootReset: (props: TreeRootResetProps) => JSXElement;
831
832
 
832
833
  declare type TreeRootResetProps = {
833
834
  children?: React_2.ReactNode;
@@ -1,3 +1,2 @@
1
1
  import { renderTree_unstable } from '../../Tree';
2
- // eslint-disable-next-line @typescript-eslint/no-deprecated
3
2
  export const renderFlatTree_unstable = renderTree_unstable;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FlatTree/renderFlatTree.ts"],"sourcesContent":["import { renderTree_unstable } from '../../Tree';\nimport type { FlatTreeContextValues, FlatTreeState } from './FlatTree.types';\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const renderFlatTree_unstable: (state: FlatTreeState, contextValues: FlatTreeContextValues) => JSX.Element =\n renderTree_unstable;\n"],"names":["renderTree_unstable","renderFlatTree_unstable"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,aAAa;AAGjD,4DAA4D;AAC5D,OAAO,MAAMC,0BACXD,oBAAoB"}
1
+ {"version":3,"sources":["../src/components/FlatTree/renderFlatTree.ts"],"sourcesContent":["import { renderTree_unstable } from '../../Tree';\nimport type { FlatTreeContextValues, FlatTreeState } from './FlatTree.types';\nimport type { JSXElement } from '@fluentui/react-utilities';\nexport const renderFlatTree_unstable: (state: FlatTreeState, contextValues: FlatTreeContextValues) => JSXElement =\n renderTree_unstable;\n"],"names":["renderTree_unstable","renderFlatTree_unstable"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,aAAa;AAGjD,OAAO,MAAMC,0BACXD,oBAAoB"}
@@ -102,11 +102,10 @@ import { treeClassNames } from '../../Tree';
102
102
  } else if (!isEventFromExpandIcon) {
103
103
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
104
104
  }
105
- if (event.isDefaultPrevented() || itemType === 'leaf') {
105
+ if (event.isDefaultPrevented()) {
106
106
  return;
107
107
  }
108
108
  ReactDOM.unstable_batchedUpdates(()=>{
109
- var _props_onOpenChange;
110
109
  const data = {
111
110
  event,
112
111
  value,
@@ -114,12 +113,15 @@ import { treeClassNames } from '../../Tree';
114
113
  target: event.currentTarget,
115
114
  type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click
116
115
  };
117
- (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
118
- requestTreeResponse({
119
- ...data,
120
- itemType,
121
- requestType: 'open'
122
- });
116
+ if (itemType !== 'leaf') {
117
+ var _props_onOpenChange;
118
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
119
+ requestTreeResponse({
120
+ ...data,
121
+ itemType,
122
+ requestType: 'open'
123
+ });
124
+ }
123
125
  requestTreeResponse({
124
126
  ...data,
125
127
  itemType,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/TreeItem/useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport {\n getIntrinsicElementProps,\n useId,\n useEventCallback,\n slot,\n elementContains,\n useMergedRefs,\n isHTMLElement,\n} from '@fluentui/react-utilities';\nimport type { TreeItemProps, TreeItemState, TreeItemValue } from './TreeItem.types';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\nimport {\n useTreeContext_unstable,\n useSubtreeContext_unstable,\n useTreeItemContext_unstable,\n TreeContext,\n} from '../../contexts';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { useHasParentContext } from '@fluentui/react-context-selector';\nimport { treeClassNames } from '../../Tree';\n\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */\nexport function useTreeItem_unstable(props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState {\n 'use no memo';\n\n const treeType = useTreeContext_unstable(ctx => ctx.treeType);\n if (treeType === 'flat') {\n warnIfNoProperPropsFlatTreeItem(props);\n }\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n const navigationMode = useTreeContext_unstable(ctx => ctx.navigationMode ?? 'tree');\n const forceUpdateRovingTabIndex = useTreeContext_unstable(ctx => ctx.forceUpdateRovingTabIndex);\n const { level: contextLevel } = useSubtreeContext_unstable();\n const parentValue = useTreeItemContext_unstable(ctx => props.parentValue ?? ctx.value);\n\n // note, if the value is not externally provided,\n // then selection and expansion will not work properly\n const internalValue = useId('fuiTreeItemValue-');\n const value: TreeItemValue = props.value ?? internalValue;\n\n const {\n onClick,\n onKeyDown,\n onChange,\n as = 'div',\n itemType = 'leaf',\n 'aria-level': level = contextLevel,\n 'aria-selected': ariaSelected,\n 'aria-expanded': ariaExpanded,\n ...rest\n } = props;\n\n const actionsRef = React.useRef<HTMLDivElement>(null);\n const expandIconRef = React.useRef<HTMLDivElement>(null);\n const layoutRef = React.useRef<HTMLDivElement>(null);\n const subtreeRef = React.useRef<HTMLDivElement>(null);\n const selectionRef = React.useRef<HTMLInputElement>(null);\n const treeItemRef = React.useRef<HTMLDivElement>(null);\n\n if (process.env.NODE_ENV !== 'production') {\n // This is acceptable since the NODE_ENV will not change during runtime\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasTreeContext = useHasParentContext(TreeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (hasTreeContext) {\n return;\n }\n\n if (treeItemRef.current?.querySelector(`.${treeClassNames.root}`)) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [useTreeItem]:\n <TreeItem> should be declared inside a <Tree> component.\n `);\n }\n }, [hasTreeContext]);\n }\n\n React.useEffect(() => {\n // When the tree item is mounted, we might need to update the roving tab index\n // in edge cases where the tree is empty and then populated\n forceUpdateRovingTabIndex?.();\n const treeItem = treeItemRef.current;\n return () => {\n // When the tree item is unmounted, we need to update the roving tab index\n // if the tree item is the current tab indexed item\n if (treeItem && treeItem.tabIndex === 0) {\n forceUpdateRovingTabIndex?.();\n }\n };\n }, [forceUpdateRovingTabIndex]);\n\n const open = useTreeContext_unstable(ctx => props.open ?? ctx.openItems.has(value));\n const getNextOpen = () => (itemType === 'branch' ? !open : open);\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n const checked = useTreeContext_unstable(ctx => ctx.checkedItems.get(value) ?? false);\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const isEventFromActions = () => actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n\n const isEventFromSubtree = () => subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n\n const isEventFromSelection = () => selectionRef.current?.contains(event.target as Node);\n\n const isEventFromExpandIcon = expandIconRef.current?.contains(event.target as Node);\n\n if (isEventFromActions() || isEventFromSubtree() || isEventFromSelection()) {\n return;\n } else if (!isEventFromExpandIcon) {\n onClick?.(event);\n }\n if (event.isDefaultPrevented() || itemType === 'leaf') {\n return;\n }\n\n ReactDOM.unstable_batchedUpdates(() => {\n const data = {\n event,\n value,\n open: getNextOpen(),\n target: event.currentTarget,\n type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click,\n } as const;\n props.onOpenChange?.(event, data);\n requestTreeResponse({\n ...data,\n itemType,\n requestType: 'open',\n });\n requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: 'navigate',\n type: treeDataTypes.Click,\n });\n });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.isDefaultPrevented() || !treeItemRef.current) {\n return;\n }\n const isEventFromTreeItem = event.currentTarget === event.target;\n const isEventFromActions = actionsRef.current && actionsRef.current.contains(event.target as Node);\n\n switch (event.key) {\n case Space: {\n if (!isEventFromTreeItem) {\n return;\n }\n if (selectionMode !== 'none') {\n selectionRef.current?.click();\n // Prevents the page from scrolling down when the spacebar is pressed\n event.preventDefault();\n }\n return;\n }\n case treeDataTypes.Enter: {\n if (!isEventFromTreeItem) {\n return;\n }\n return event.currentTarget.click();\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowDown: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n if (isEventFromActions && (!isHTMLElement(event.target) || event.target.hasAttribute('aria-haspopup'))) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowLeft: {\n // arrow left with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n itemType,\n parentValue,\n target: event.currentTarget,\n } as const;\n\n if (isEventFromActions && navigationMode === 'treegrid') {\n requestTreeResponse({ ...data, requestType: 'navigate' });\n return;\n }\n if (!isEventFromTreeItem) {\n return;\n }\n // do not navigate to parent if the item is on the top level\n if (level === 1 && !open) {\n return;\n }\n if (open) {\n props.onOpenChange?.(event, data);\n }\n requestTreeResponse({ ...data, requestType: open ? 'open' : 'navigate' });\n return;\n }\n case treeDataTypes.ArrowRight: {\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n // arrow right with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n target: event.currentTarget,\n } as const;\n\n if (itemType === 'branch' && !open) {\n props.onOpenChange?.(event, data);\n requestTreeResponse({ ...data, itemType, requestType: 'open' });\n } else {\n requestTreeResponse({ ...data, itemType, parentValue, requestType: 'navigate' });\n }\n return;\n }\n }\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n requestType: 'navigate',\n event,\n target: event.currentTarget,\n value,\n itemType,\n type: treeDataTypes.TypeAhead,\n parentValue,\n });\n }\n });\n\n const handleChange = useEventCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n requestTreeResponse({\n requestType: 'selection',\n event,\n value,\n itemType,\n type: 'Change',\n target: event.currentTarget,\n checked: checked === 'mixed' ? true : !checked,\n });\n });\n\n return {\n value,\n open,\n checked,\n subtreeRef,\n layoutRef,\n selectionRef,\n expandIconRef,\n treeItemRef,\n actionsRef,\n itemType,\n level,\n components: {\n root: 'div',\n },\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isAsideVisible: false,\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isActionsVisible: false,\n root: slot.always(\n getIntrinsicElementProps(as, {\n tabIndex: -1,\n [dataTreeItemValueAttrName]: value,\n role: 'treeitem',\n ...rest,\n ref: useMergedRefs(ref, treeItemRef),\n 'aria-level': level,\n 'aria-checked': selectionMode === 'multiselect' ? checked : undefined,\n 'aria-selected': ariaSelected !== undefined ? ariaSelected : selectionMode === 'single' ? !!checked : undefined,\n 'aria-expanded': ariaExpanded !== undefined ? ariaExpanded : itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n } as const),\n { elementType: 'div' },\n ),\n };\n}\n\nfunction warnIfNoProperPropsFlatTreeItem(\n props: Pick<TreeItemProps, 'aria-setsize' | 'aria-posinset' | 'aria-level' | 'parentValue'>,\n) {\n if (process.env.NODE_ENV !== 'production') {\n if (\n props['aria-posinset'] === undefined ||\n props['aria-setsize'] === undefined ||\n props['aria-level'] === undefined ||\n (props.parentValue === undefined && props['aria-level'] !== 1)\n ) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [${useTreeItem_unstable.name}]:\n A flat treeitem must have \"aria-posinset\", \"aria-setsize\", \"aria-level\"\n and \"parentValue\" (if \"aria-level\" > 1) to ensure a11y and navigation.\n\n - \"aria-posinset\": the position of this treeitem in the current level of the tree.\n - \"aria-setsize\": the number of siblings in this level of the tree.\n - \"aria-level\": the current level of the treeitem.\n - \"parentValue\": the \"value\" property of the parent item of this item.\n `);\n }\n }\n}\n"],"names":["React","ReactDOM","getIntrinsicElementProps","useId","useEventCallback","slot","elementContains","useMergedRefs","isHTMLElement","Space","treeDataTypes","useTreeContext_unstable","useSubtreeContext_unstable","useTreeItemContext_unstable","TreeContext","dataTreeItemValueAttrName","useHasParentContext","treeClassNames","useTreeItem_unstable","props","ref","treeType","ctx","warnIfNoProperPropsFlatTreeItem","requestTreeResponse","navigationMode","forceUpdateRovingTabIndex","level","contextLevel","parentValue","value","internalValue","onClick","onKeyDown","onChange","as","itemType","ariaSelected","ariaExpanded","rest","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","treeItemRef","process","env","NODE_ENV","hasTreeContext","useEffect","current","querySelector","root","console","error","treeItem","tabIndex","open","openItems","has","getNextOpen","selectionMode","checked","checkedItems","get","handleClick","event","isEventFromActions","target","isEventFromSubtree","isEventFromSelection","contains","isEventFromExpandIcon","isDefaultPrevented","unstable_batchedUpdates","data","currentTarget","type","ExpandIconClick","Click","onOpenChange","requestType","handleKeyDown","isEventFromTreeItem","key","click","preventDefault","Enter","End","Home","ArrowUp","ArrowDown","hasAttribute","ArrowLeft","altKey","ArrowRight","isTypeAheadCharacter","length","match","ctrlKey","metaKey","TypeAhead","handleChange","components","isAsideVisible","isActionsVisible","always","role","undefined","elementType","name"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/TreeItem/useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport {\n getIntrinsicElementProps,\n useId,\n useEventCallback,\n slot,\n elementContains,\n useMergedRefs,\n isHTMLElement,\n} from '@fluentui/react-utilities';\nimport type { TreeItemProps, TreeItemState, TreeItemValue } from './TreeItem.types';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\nimport {\n useTreeContext_unstable,\n useSubtreeContext_unstable,\n useTreeItemContext_unstable,\n TreeContext,\n} from '../../contexts';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { useHasParentContext } from '@fluentui/react-context-selector';\nimport { treeClassNames } from '../../Tree';\n\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */\nexport function useTreeItem_unstable(props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState {\n 'use no memo';\n\n const treeType = useTreeContext_unstable(ctx => ctx.treeType);\n if (treeType === 'flat') {\n warnIfNoProperPropsFlatTreeItem(props);\n }\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n const navigationMode = useTreeContext_unstable(ctx => ctx.navigationMode ?? 'tree');\n const forceUpdateRovingTabIndex = useTreeContext_unstable(ctx => ctx.forceUpdateRovingTabIndex);\n const { level: contextLevel } = useSubtreeContext_unstable();\n const parentValue = useTreeItemContext_unstable(ctx => props.parentValue ?? ctx.value);\n\n // note, if the value is not externally provided,\n // then selection and expansion will not work properly\n const internalValue = useId('fuiTreeItemValue-');\n const value: TreeItemValue = props.value ?? internalValue;\n\n const {\n onClick,\n onKeyDown,\n onChange,\n as = 'div',\n itemType = 'leaf',\n 'aria-level': level = contextLevel,\n 'aria-selected': ariaSelected,\n 'aria-expanded': ariaExpanded,\n ...rest\n } = props;\n\n const actionsRef = React.useRef<HTMLDivElement>(null);\n const expandIconRef = React.useRef<HTMLDivElement>(null);\n const layoutRef = React.useRef<HTMLDivElement>(null);\n const subtreeRef = React.useRef<HTMLDivElement>(null);\n const selectionRef = React.useRef<HTMLInputElement>(null);\n const treeItemRef = React.useRef<HTMLDivElement>(null);\n\n if (process.env.NODE_ENV !== 'production') {\n // This is acceptable since the NODE_ENV will not change during runtime\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasTreeContext = useHasParentContext(TreeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (hasTreeContext) {\n return;\n }\n\n if (treeItemRef.current?.querySelector(`.${treeClassNames.root}`)) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [useTreeItem]:\n <TreeItem> should be declared inside a <Tree> component.\n `);\n }\n }, [hasTreeContext]);\n }\n\n React.useEffect(() => {\n // When the tree item is mounted, we might need to update the roving tab index\n // in edge cases where the tree is empty and then populated\n forceUpdateRovingTabIndex?.();\n const treeItem = treeItemRef.current;\n return () => {\n // When the tree item is unmounted, we need to update the roving tab index\n // if the tree item is the current tab indexed item\n if (treeItem && treeItem.tabIndex === 0) {\n forceUpdateRovingTabIndex?.();\n }\n };\n }, [forceUpdateRovingTabIndex]);\n\n const open = useTreeContext_unstable(ctx => props.open ?? ctx.openItems.has(value));\n const getNextOpen = () => (itemType === 'branch' ? !open : open);\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n const checked = useTreeContext_unstable(ctx => ctx.checkedItems.get(value) ?? false);\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const isEventFromActions = () => actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n\n const isEventFromSubtree = () => subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n\n const isEventFromSelection = () => selectionRef.current?.contains(event.target as Node);\n\n const isEventFromExpandIcon = expandIconRef.current?.contains(event.target as Node);\n\n if (isEventFromActions() || isEventFromSubtree() || isEventFromSelection()) {\n return;\n } else if (!isEventFromExpandIcon) {\n onClick?.(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n\n ReactDOM.unstable_batchedUpdates(() => {\n const data = {\n event,\n value,\n open: getNextOpen(),\n target: event.currentTarget,\n type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click,\n } as const;\n if (itemType !== 'leaf') {\n props.onOpenChange?.(event, data);\n requestTreeResponse({\n ...data,\n itemType,\n requestType: 'open',\n });\n }\n requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: 'navigate',\n type: treeDataTypes.Click,\n });\n });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.isDefaultPrevented() || !treeItemRef.current) {\n return;\n }\n const isEventFromTreeItem = event.currentTarget === event.target;\n const isEventFromActions = actionsRef.current && actionsRef.current.contains(event.target as Node);\n\n switch (event.key) {\n case Space: {\n if (!isEventFromTreeItem) {\n return;\n }\n if (selectionMode !== 'none') {\n selectionRef.current?.click();\n // Prevents the page from scrolling down when the spacebar is pressed\n event.preventDefault();\n }\n return;\n }\n case treeDataTypes.Enter: {\n if (!isEventFromTreeItem) {\n return;\n }\n return event.currentTarget.click();\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowDown: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n if (isEventFromActions && (!isHTMLElement(event.target) || event.target.hasAttribute('aria-haspopup'))) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowLeft: {\n // arrow left with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n itemType,\n parentValue,\n target: event.currentTarget,\n } as const;\n\n if (isEventFromActions && navigationMode === 'treegrid') {\n requestTreeResponse({ ...data, requestType: 'navigate' });\n return;\n }\n if (!isEventFromTreeItem) {\n return;\n }\n // do not navigate to parent if the item is on the top level\n if (level === 1 && !open) {\n return;\n }\n if (open) {\n props.onOpenChange?.(event, data);\n }\n requestTreeResponse({ ...data, requestType: open ? 'open' : 'navigate' });\n return;\n }\n case treeDataTypes.ArrowRight: {\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n // arrow right with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n target: event.currentTarget,\n } as const;\n\n if (itemType === 'branch' && !open) {\n props.onOpenChange?.(event, data);\n requestTreeResponse({ ...data, itemType, requestType: 'open' });\n } else {\n requestTreeResponse({ ...data, itemType, parentValue, requestType: 'navigate' });\n }\n return;\n }\n }\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n requestType: 'navigate',\n event,\n target: event.currentTarget,\n value,\n itemType,\n type: treeDataTypes.TypeAhead,\n parentValue,\n });\n }\n });\n\n const handleChange = useEventCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n requestTreeResponse({\n requestType: 'selection',\n event,\n value,\n itemType,\n type: 'Change',\n target: event.currentTarget,\n checked: checked === 'mixed' ? true : !checked,\n });\n });\n\n return {\n value,\n open,\n checked,\n subtreeRef,\n layoutRef,\n selectionRef,\n expandIconRef,\n treeItemRef,\n actionsRef,\n itemType,\n level,\n components: {\n root: 'div',\n },\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isAsideVisible: false,\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isActionsVisible: false,\n root: slot.always(\n getIntrinsicElementProps(as, {\n tabIndex: -1,\n [dataTreeItemValueAttrName]: value,\n role: 'treeitem',\n ...rest,\n ref: useMergedRefs(ref, treeItemRef),\n 'aria-level': level,\n 'aria-checked': selectionMode === 'multiselect' ? checked : undefined,\n 'aria-selected': ariaSelected !== undefined ? ariaSelected : selectionMode === 'single' ? !!checked : undefined,\n 'aria-expanded': ariaExpanded !== undefined ? ariaExpanded : itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n } as const),\n { elementType: 'div' },\n ),\n };\n}\n\nfunction warnIfNoProperPropsFlatTreeItem(\n props: Pick<TreeItemProps, 'aria-setsize' | 'aria-posinset' | 'aria-level' | 'parentValue'>,\n) {\n if (process.env.NODE_ENV !== 'production') {\n if (\n props['aria-posinset'] === undefined ||\n props['aria-setsize'] === undefined ||\n props['aria-level'] === undefined ||\n (props.parentValue === undefined && props['aria-level'] !== 1)\n ) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [${useTreeItem_unstable.name}]:\n A flat treeitem must have \"aria-posinset\", \"aria-setsize\", \"aria-level\"\n and \"parentValue\" (if \"aria-level\" > 1) to ensure a11y and navigation.\n\n - \"aria-posinset\": the position of this treeitem in the current level of the tree.\n - \"aria-setsize\": the number of siblings in this level of the tree.\n - \"aria-level\": the current level of the treeitem.\n - \"parentValue\": the \"value\" property of the parent item of this item.\n `);\n }\n }\n}\n"],"names":["React","ReactDOM","getIntrinsicElementProps","useId","useEventCallback","slot","elementContains","useMergedRefs","isHTMLElement","Space","treeDataTypes","useTreeContext_unstable","useSubtreeContext_unstable","useTreeItemContext_unstable","TreeContext","dataTreeItemValueAttrName","useHasParentContext","treeClassNames","useTreeItem_unstable","props","ref","treeType","ctx","warnIfNoProperPropsFlatTreeItem","requestTreeResponse","navigationMode","forceUpdateRovingTabIndex","level","contextLevel","parentValue","value","internalValue","onClick","onKeyDown","onChange","as","itemType","ariaSelected","ariaExpanded","rest","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","treeItemRef","process","env","NODE_ENV","hasTreeContext","useEffect","current","querySelector","root","console","error","treeItem","tabIndex","open","openItems","has","getNextOpen","selectionMode","checked","checkedItems","get","handleClick","event","isEventFromActions","target","isEventFromSubtree","isEventFromSelection","contains","isEventFromExpandIcon","isDefaultPrevented","unstable_batchedUpdates","data","currentTarget","type","ExpandIconClick","Click","onOpenChange","requestType","handleKeyDown","isEventFromTreeItem","key","click","preventDefault","Enter","End","Home","ArrowUp","ArrowDown","hasAttribute","ArrowLeft","altKey","ArrowRight","isTypeAheadCharacter","length","match","ctrlKey","metaKey","TypeAhead","handleChange","components","isAsideVisible","isActionsVisible","always","role","undefined","elementType","name"],"mappings":"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"}
@@ -6,7 +6,6 @@ import { SubtreeContext, TreeContext } from '../contexts';
6
6
  level: 1,
7
7
  contextType: 'subtree'
8
8
  };
9
- // eslint-disable-next-line @typescript-eslint/no-deprecated
10
9
  export const TreeProvider = (props)=>{
11
10
  if (props.value.contextType === 'subtree') {
12
11
  return /*#__PURE__*/ React.createElement(SubtreeContext.Provider, {
@@ -20,7 +19,6 @@ export const TreeProvider = (props)=>{
20
19
  }, props.children));
21
20
  };
22
21
  TreeProvider.displayName = 'TreeProvider';
23
- // eslint-disable-next-line @typescript-eslint/no-deprecated
24
22
  export const TreeRootReset = (props)=>/*#__PURE__*/ React.createElement(SubtreeContext.Provider, {
25
23
  value: undefined
26
24
  }, props.children);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/TreeProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SubtreeContext, SubtreeContextValue, TreeContextValue, TreeContext } from '../contexts';\n\n/**\n * @internal\n */\nconst rootSubtreeContextValue: SubtreeContextValue = {\n level: 1,\n contextType: 'subtree',\n};\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const TreeProvider = (props: React.ProviderProps<TreeContextValue | SubtreeContextValue>): JSX.Element => {\n if (props.value.contextType === 'subtree') {\n return <SubtreeContext.Provider value={props.value}>{props.children}</SubtreeContext.Provider>;\n }\n return (\n <TreeContext.Provider value={props.value}>\n <SubtreeContext.Provider value={rootSubtreeContextValue}>{props.children}</SubtreeContext.Provider>\n </TreeContext.Provider>\n );\n};\n\nTreeProvider.displayName = 'TreeProvider';\n\nexport type TreeRootResetProps = {\n children?: React.ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const TreeRootReset = (props: TreeRootResetProps): JSX.Element => (\n <SubtreeContext.Provider value={undefined as unknown as SubtreeContextValue}>\n {props.children}\n </SubtreeContext.Provider>\n);\n"],"names":["React","SubtreeContext","TreeContext","rootSubtreeContextValue","level","contextType","TreeProvider","props","value","Provider","children","displayName","TreeRootReset","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,cAAc,EAAyCC,WAAW,QAAQ,cAAc;AAEjG;;CAEC,GACD,MAAMC,0BAA+C;IACnDC,OAAO;IACPC,aAAa;AACf;AAEA,4DAA4D;AAC5D,OAAO,MAAMC,eAAe,CAACC;IAC3B,IAAIA,MAAMC,KAAK,CAACH,WAAW,KAAK,WAAW;QACzC,qBAAO,oBAACJ,eAAeQ,QAAQ;YAACD,OAAOD,MAAMC,KAAK;WAAGD,MAAMG,QAAQ;IACrE;IACA,qBACE,oBAACR,YAAYO,QAAQ;QAACD,OAAOD,MAAMC,KAAK;qBACtC,oBAACP,eAAeQ,QAAQ;QAACD,OAAOL;OAA0BI,MAAMG,QAAQ;AAG9E,EAAE;AAEFJ,aAAaK,WAAW,GAAG;AAM3B,4DAA4D;AAC5D,OAAO,MAAMC,gBAAgB,CAACL,sBAC5B,oBAACN,eAAeQ,QAAQ;QAACD,OAAOK;OAC7BN,MAAMG,QAAQ,EAEjB"}
1
+ {"version":3,"sources":["../src/components/TreeProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SubtreeContext, SubtreeContextValue, TreeContextValue, TreeContext } from '../contexts';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\n/**\n * @internal\n */\nconst rootSubtreeContextValue: SubtreeContextValue = {\n level: 1,\n contextType: 'subtree',\n};\nexport const TreeProvider = (props: React.ProviderProps<TreeContextValue | SubtreeContextValue>): JSXElement => {\n if (props.value.contextType === 'subtree') {\n return <SubtreeContext.Provider value={props.value}>{props.children}</SubtreeContext.Provider>;\n }\n return (\n <TreeContext.Provider value={props.value}>\n <SubtreeContext.Provider value={rootSubtreeContextValue}>{props.children}</SubtreeContext.Provider>\n </TreeContext.Provider>\n );\n};\n\nTreeProvider.displayName = 'TreeProvider';\n\nexport type TreeRootResetProps = {\n children?: React.ReactNode;\n};\nexport const TreeRootReset = (props: TreeRootResetProps): JSXElement => (\n <SubtreeContext.Provider value={undefined as unknown as SubtreeContextValue}>\n {props.children}\n </SubtreeContext.Provider>\n);\n"],"names":["React","SubtreeContext","TreeContext","rootSubtreeContextValue","level","contextType","TreeProvider","props","value","Provider","children","displayName","TreeRootReset","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,cAAc,EAAyCC,WAAW,QAAQ,cAAc;AAGjG;;CAEC,GACD,MAAMC,0BAA+C;IACnDC,OAAO;IACPC,aAAa;AACf;AACA,OAAO,MAAMC,eAAe,CAACC;IAC3B,IAAIA,MAAMC,KAAK,CAACH,WAAW,KAAK,WAAW;QACzC,qBAAO,oBAACJ,eAAeQ,QAAQ;YAACD,OAAOD,MAAMC,KAAK;WAAGD,MAAMG,QAAQ;IACrE;IACA,qBACE,oBAACR,YAAYO,QAAQ;QAACD,OAAOD,MAAMC,KAAK;qBACtC,oBAACP,eAAeQ,QAAQ;QAACD,OAAOL;OAA0BI,MAAMG,QAAQ;AAG9E,EAAE;AAEFJ,aAAaK,WAAW,GAAG;AAK3B,OAAO,MAAMC,gBAAgB,CAACL,sBAC5B,oBAACN,eAAeQ,QAAQ;QAACD,OAAOK;OAC7BN,MAAMG,QAAQ,EAEjB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FlatTree/renderFlatTree.ts"],"sourcesContent":["import { renderTree_unstable } from '../../Tree';\nimport type { FlatTreeContextValues, FlatTreeState } from './FlatTree.types';\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const renderFlatTree_unstable: (state: FlatTreeState, contextValues: FlatTreeContextValues) => JSX.Element =\n renderTree_unstable;\n"],"names":["renderTree_unstable","renderFlatTree_unstable"],"mappings":";;;;;;;;;;sBAAoC,aAAa;AAI1C,MAAMC,0BACXD,yBAAAA,CAAoB"}
1
+ {"version":3,"sources":["../src/components/FlatTree/renderFlatTree.ts"],"sourcesContent":["import { renderTree_unstable } from '../../Tree';\nimport type { FlatTreeContextValues, FlatTreeState } from './FlatTree.types';\nimport type { JSXElement } from '@fluentui/react-utilities';\nexport const renderFlatTree_unstable: (state: FlatTreeState, contextValues: FlatTreeContextValues) => JSXElement =\n renderTree_unstable;\n"],"names":["renderTree_unstable","renderFlatTree_unstable"],"mappings":";;;;;;;;;;sBAAoC,aAAa;AAG1C,MAAMC,0BACXD,yBAAAA,CAAoB"}
@@ -105,11 +105,10 @@ function useTreeItem_unstable(props, ref) {
105
105
  } else if (!isEventFromExpandIcon) {
106
106
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
107
107
  }
108
- if (event.isDefaultPrevented() || itemType === 'leaf') {
108
+ if (event.isDefaultPrevented()) {
109
109
  return;
110
110
  }
111
111
  _reactdom.unstable_batchedUpdates(()=>{
112
- var _props_onOpenChange;
113
112
  const data = {
114
113
  event,
115
114
  value,
@@ -117,12 +116,15 @@ function useTreeItem_unstable(props, ref) {
117
116
  target: event.currentTarget,
118
117
  type: isEventFromExpandIcon ? _tokens.treeDataTypes.ExpandIconClick : _tokens.treeDataTypes.Click
119
118
  };
120
- (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
121
- requestTreeResponse({
122
- ...data,
123
- itemType,
124
- requestType: 'open'
125
- });
119
+ if (itemType !== 'leaf') {
120
+ var _props_onOpenChange;
121
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
122
+ requestTreeResponse({
123
+ ...data,
124
+ itemType,
125
+ requestType: 'open'
126
+ });
127
+ }
126
128
  requestTreeResponse({
127
129
  ...data,
128
130
  itemType,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/TreeItem/useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport {\n getIntrinsicElementProps,\n useId,\n useEventCallback,\n slot,\n elementContains,\n useMergedRefs,\n isHTMLElement,\n} from '@fluentui/react-utilities';\nimport type { TreeItemProps, TreeItemState, TreeItemValue } from './TreeItem.types';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\nimport {\n useTreeContext_unstable,\n useSubtreeContext_unstable,\n useTreeItemContext_unstable,\n TreeContext,\n} from '../../contexts';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { useHasParentContext } from '@fluentui/react-context-selector';\nimport { treeClassNames } from '../../Tree';\n\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */\nexport function useTreeItem_unstable(props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState {\n 'use no memo';\n\n const treeType = useTreeContext_unstable(ctx => ctx.treeType);\n if (treeType === 'flat') {\n warnIfNoProperPropsFlatTreeItem(props);\n }\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n const navigationMode = useTreeContext_unstable(ctx => ctx.navigationMode ?? 'tree');\n const forceUpdateRovingTabIndex = useTreeContext_unstable(ctx => ctx.forceUpdateRovingTabIndex);\n const { level: contextLevel } = useSubtreeContext_unstable();\n const parentValue = useTreeItemContext_unstable(ctx => props.parentValue ?? ctx.value);\n\n // note, if the value is not externally provided,\n // then selection and expansion will not work properly\n const internalValue = useId('fuiTreeItemValue-');\n const value: TreeItemValue = props.value ?? internalValue;\n\n const {\n onClick,\n onKeyDown,\n onChange,\n as = 'div',\n itemType = 'leaf',\n 'aria-level': level = contextLevel,\n 'aria-selected': ariaSelected,\n 'aria-expanded': ariaExpanded,\n ...rest\n } = props;\n\n const actionsRef = React.useRef<HTMLDivElement>(null);\n const expandIconRef = React.useRef<HTMLDivElement>(null);\n const layoutRef = React.useRef<HTMLDivElement>(null);\n const subtreeRef = React.useRef<HTMLDivElement>(null);\n const selectionRef = React.useRef<HTMLInputElement>(null);\n const treeItemRef = React.useRef<HTMLDivElement>(null);\n\n if (process.env.NODE_ENV !== 'production') {\n // This is acceptable since the NODE_ENV will not change during runtime\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasTreeContext = useHasParentContext(TreeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (hasTreeContext) {\n return;\n }\n\n if (treeItemRef.current?.querySelector(`.${treeClassNames.root}`)) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [useTreeItem]:\n <TreeItem> should be declared inside a <Tree> component.\n `);\n }\n }, [hasTreeContext]);\n }\n\n React.useEffect(() => {\n // When the tree item is mounted, we might need to update the roving tab index\n // in edge cases where the tree is empty and then populated\n forceUpdateRovingTabIndex?.();\n const treeItem = treeItemRef.current;\n return () => {\n // When the tree item is unmounted, we need to update the roving tab index\n // if the tree item is the current tab indexed item\n if (treeItem && treeItem.tabIndex === 0) {\n forceUpdateRovingTabIndex?.();\n }\n };\n }, [forceUpdateRovingTabIndex]);\n\n const open = useTreeContext_unstable(ctx => props.open ?? ctx.openItems.has(value));\n const getNextOpen = () => (itemType === 'branch' ? !open : open);\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n const checked = useTreeContext_unstable(ctx => ctx.checkedItems.get(value) ?? false);\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const isEventFromActions = () => actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n\n const isEventFromSubtree = () => subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n\n const isEventFromSelection = () => selectionRef.current?.contains(event.target as Node);\n\n const isEventFromExpandIcon = expandIconRef.current?.contains(event.target as Node);\n\n if (isEventFromActions() || isEventFromSubtree() || isEventFromSelection()) {\n return;\n } else if (!isEventFromExpandIcon) {\n onClick?.(event);\n }\n if (event.isDefaultPrevented() || itemType === 'leaf') {\n return;\n }\n\n ReactDOM.unstable_batchedUpdates(() => {\n const data = {\n event,\n value,\n open: getNextOpen(),\n target: event.currentTarget,\n type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click,\n } as const;\n props.onOpenChange?.(event, data);\n requestTreeResponse({\n ...data,\n itemType,\n requestType: 'open',\n });\n requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: 'navigate',\n type: treeDataTypes.Click,\n });\n });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.isDefaultPrevented() || !treeItemRef.current) {\n return;\n }\n const isEventFromTreeItem = event.currentTarget === event.target;\n const isEventFromActions = actionsRef.current && actionsRef.current.contains(event.target as Node);\n\n switch (event.key) {\n case Space: {\n if (!isEventFromTreeItem) {\n return;\n }\n if (selectionMode !== 'none') {\n selectionRef.current?.click();\n // Prevents the page from scrolling down when the spacebar is pressed\n event.preventDefault();\n }\n return;\n }\n case treeDataTypes.Enter: {\n if (!isEventFromTreeItem) {\n return;\n }\n return event.currentTarget.click();\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowDown: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n if (isEventFromActions && (!isHTMLElement(event.target) || event.target.hasAttribute('aria-haspopup'))) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowLeft: {\n // arrow left with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n itemType,\n parentValue,\n target: event.currentTarget,\n } as const;\n\n if (isEventFromActions && navigationMode === 'treegrid') {\n requestTreeResponse({ ...data, requestType: 'navigate' });\n return;\n }\n if (!isEventFromTreeItem) {\n return;\n }\n // do not navigate to parent if the item is on the top level\n if (level === 1 && !open) {\n return;\n }\n if (open) {\n props.onOpenChange?.(event, data);\n }\n requestTreeResponse({ ...data, requestType: open ? 'open' : 'navigate' });\n return;\n }\n case treeDataTypes.ArrowRight: {\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n // arrow right with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n target: event.currentTarget,\n } as const;\n\n if (itemType === 'branch' && !open) {\n props.onOpenChange?.(event, data);\n requestTreeResponse({ ...data, itemType, requestType: 'open' });\n } else {\n requestTreeResponse({ ...data, itemType, parentValue, requestType: 'navigate' });\n }\n return;\n }\n }\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n requestType: 'navigate',\n event,\n target: event.currentTarget,\n value,\n itemType,\n type: treeDataTypes.TypeAhead,\n parentValue,\n });\n }\n });\n\n const handleChange = useEventCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n requestTreeResponse({\n requestType: 'selection',\n event,\n value,\n itemType,\n type: 'Change',\n target: event.currentTarget,\n checked: checked === 'mixed' ? true : !checked,\n });\n });\n\n return {\n value,\n open,\n checked,\n subtreeRef,\n layoutRef,\n selectionRef,\n expandIconRef,\n treeItemRef,\n actionsRef,\n itemType,\n level,\n components: {\n root: 'div',\n },\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isAsideVisible: false,\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isActionsVisible: false,\n root: slot.always(\n getIntrinsicElementProps(as, {\n tabIndex: -1,\n [dataTreeItemValueAttrName]: value,\n role: 'treeitem',\n ...rest,\n ref: useMergedRefs(ref, treeItemRef),\n 'aria-level': level,\n 'aria-checked': selectionMode === 'multiselect' ? checked : undefined,\n 'aria-selected': ariaSelected !== undefined ? ariaSelected : selectionMode === 'single' ? !!checked : undefined,\n 'aria-expanded': ariaExpanded !== undefined ? ariaExpanded : itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n } as const),\n { elementType: 'div' },\n ),\n };\n}\n\nfunction warnIfNoProperPropsFlatTreeItem(\n props: Pick<TreeItemProps, 'aria-setsize' | 'aria-posinset' | 'aria-level' | 'parentValue'>,\n) {\n if (process.env.NODE_ENV !== 'production') {\n if (\n props['aria-posinset'] === undefined ||\n props['aria-setsize'] === undefined ||\n props['aria-level'] === undefined ||\n (props.parentValue === undefined && props['aria-level'] !== 1)\n ) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [${useTreeItem_unstable.name}]:\n A flat treeitem must have \"aria-posinset\", \"aria-setsize\", \"aria-level\"\n and \"parentValue\" (if \"aria-level\" > 1) to ensure a11y and navigation.\n\n - \"aria-posinset\": the position of this treeitem in the current level of the tree.\n - \"aria-setsize\": the number of siblings in this level of the tree.\n - \"aria-level\": the current level of the treeitem.\n - \"parentValue\": the \"value\" property of the parent item of this item.\n `);\n }\n }\n}\n"],"names":["React","ReactDOM","getIntrinsicElementProps","useId","useEventCallback","slot","elementContains","useMergedRefs","isHTMLElement","Space","treeDataTypes","useTreeContext_unstable","useSubtreeContext_unstable","useTreeItemContext_unstable","TreeContext","dataTreeItemValueAttrName","useHasParentContext","treeClassNames","useTreeItem_unstable","props","ref","treeType","ctx","warnIfNoProperPropsFlatTreeItem","requestTreeResponse","navigationMode","forceUpdateRovingTabIndex","level","contextLevel","parentValue","value","internalValue","onClick","onKeyDown","onChange","as","itemType","ariaSelected","ariaExpanded","rest","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","treeItemRef","process","env","NODE_ENV","hasTreeContext","useEffect","current","querySelector","root","console","error","treeItem","tabIndex","open","openItems","has","getNextOpen","selectionMode","checked","checkedItems","get","handleClick","event","isEventFromActions","target","isEventFromSubtree","isEventFromSelection","contains","isEventFromExpandIcon","isDefaultPrevented","unstable_batchedUpdates","data","currentTarget","type","ExpandIconClick","Click","onOpenChange","requestType","handleKeyDown","isEventFromTreeItem","key","click","preventDefault","Enter","End","Home","ArrowUp","ArrowDown","hasAttribute","ArrowLeft","altKey","ArrowRight","isTypeAheadCharacter","length","match","ctrlKey","metaKey","TypeAhead","handleChange","components","isAsideVisible","isActionsVisible","always","role","undefined","elementType","name"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/TreeItem/useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport {\n getIntrinsicElementProps,\n useId,\n useEventCallback,\n slot,\n elementContains,\n useMergedRefs,\n isHTMLElement,\n} from '@fluentui/react-utilities';\nimport type { TreeItemProps, TreeItemState, TreeItemValue } from './TreeItem.types';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\nimport {\n useTreeContext_unstable,\n useSubtreeContext_unstable,\n useTreeItemContext_unstable,\n TreeContext,\n} from '../../contexts';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { useHasParentContext } from '@fluentui/react-context-selector';\nimport { treeClassNames } from '../../Tree';\n\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */\nexport function useTreeItem_unstable(props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState {\n 'use no memo';\n\n const treeType = useTreeContext_unstable(ctx => ctx.treeType);\n if (treeType === 'flat') {\n warnIfNoProperPropsFlatTreeItem(props);\n }\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n const navigationMode = useTreeContext_unstable(ctx => ctx.navigationMode ?? 'tree');\n const forceUpdateRovingTabIndex = useTreeContext_unstable(ctx => ctx.forceUpdateRovingTabIndex);\n const { level: contextLevel } = useSubtreeContext_unstable();\n const parentValue = useTreeItemContext_unstable(ctx => props.parentValue ?? ctx.value);\n\n // note, if the value is not externally provided,\n // then selection and expansion will not work properly\n const internalValue = useId('fuiTreeItemValue-');\n const value: TreeItemValue = props.value ?? internalValue;\n\n const {\n onClick,\n onKeyDown,\n onChange,\n as = 'div',\n itemType = 'leaf',\n 'aria-level': level = contextLevel,\n 'aria-selected': ariaSelected,\n 'aria-expanded': ariaExpanded,\n ...rest\n } = props;\n\n const actionsRef = React.useRef<HTMLDivElement>(null);\n const expandIconRef = React.useRef<HTMLDivElement>(null);\n const layoutRef = React.useRef<HTMLDivElement>(null);\n const subtreeRef = React.useRef<HTMLDivElement>(null);\n const selectionRef = React.useRef<HTMLInputElement>(null);\n const treeItemRef = React.useRef<HTMLDivElement>(null);\n\n if (process.env.NODE_ENV !== 'production') {\n // This is acceptable since the NODE_ENV will not change during runtime\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasTreeContext = useHasParentContext(TreeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (hasTreeContext) {\n return;\n }\n\n if (treeItemRef.current?.querySelector(`.${treeClassNames.root}`)) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [useTreeItem]:\n <TreeItem> should be declared inside a <Tree> component.\n `);\n }\n }, [hasTreeContext]);\n }\n\n React.useEffect(() => {\n // When the tree item is mounted, we might need to update the roving tab index\n // in edge cases where the tree is empty and then populated\n forceUpdateRovingTabIndex?.();\n const treeItem = treeItemRef.current;\n return () => {\n // When the tree item is unmounted, we need to update the roving tab index\n // if the tree item is the current tab indexed item\n if (treeItem && treeItem.tabIndex === 0) {\n forceUpdateRovingTabIndex?.();\n }\n };\n }, [forceUpdateRovingTabIndex]);\n\n const open = useTreeContext_unstable(ctx => props.open ?? ctx.openItems.has(value));\n const getNextOpen = () => (itemType === 'branch' ? !open : open);\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n const checked = useTreeContext_unstable(ctx => ctx.checkedItems.get(value) ?? false);\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n const isEventFromActions = () => actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n\n const isEventFromSubtree = () => subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n\n const isEventFromSelection = () => selectionRef.current?.contains(event.target as Node);\n\n const isEventFromExpandIcon = expandIconRef.current?.contains(event.target as Node);\n\n if (isEventFromActions() || isEventFromSubtree() || isEventFromSelection()) {\n return;\n } else if (!isEventFromExpandIcon) {\n onClick?.(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n\n ReactDOM.unstable_batchedUpdates(() => {\n const data = {\n event,\n value,\n open: getNextOpen(),\n target: event.currentTarget,\n type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click,\n } as const;\n if (itemType !== 'leaf') {\n props.onOpenChange?.(event, data);\n requestTreeResponse({\n ...data,\n itemType,\n requestType: 'open',\n });\n }\n requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: 'navigate',\n type: treeDataTypes.Click,\n });\n });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.isDefaultPrevented() || !treeItemRef.current) {\n return;\n }\n const isEventFromTreeItem = event.currentTarget === event.target;\n const isEventFromActions = actionsRef.current && actionsRef.current.contains(event.target as Node);\n\n switch (event.key) {\n case Space: {\n if (!isEventFromTreeItem) {\n return;\n }\n if (selectionMode !== 'none') {\n selectionRef.current?.click();\n // Prevents the page from scrolling down when the spacebar is pressed\n event.preventDefault();\n }\n return;\n }\n case treeDataTypes.Enter: {\n if (!isEventFromTreeItem) {\n return;\n }\n return event.currentTarget.click();\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowDown: {\n if (!isEventFromTreeItem && !isEventFromActions) {\n return;\n }\n if (isEventFromActions && (!isHTMLElement(event.target) || event.target.hasAttribute('aria-haspopup'))) {\n return;\n }\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget,\n });\n }\n case treeDataTypes.ArrowLeft: {\n // arrow left with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n itemType,\n parentValue,\n target: event.currentTarget,\n } as const;\n\n if (isEventFromActions && navigationMode === 'treegrid') {\n requestTreeResponse({ ...data, requestType: 'navigate' });\n return;\n }\n if (!isEventFromTreeItem) {\n return;\n }\n // do not navigate to parent if the item is on the top level\n if (level === 1 && !open) {\n return;\n }\n if (open) {\n props.onOpenChange?.(event, data);\n }\n requestTreeResponse({ ...data, requestType: open ? 'open' : 'navigate' });\n return;\n }\n case treeDataTypes.ArrowRight: {\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n // arrow right with alt key is reserved for history navigation\n if (event.altKey) {\n return;\n }\n const data = {\n value,\n event,\n open: getNextOpen(),\n type: event.key,\n target: event.currentTarget,\n } as const;\n\n if (itemType === 'branch' && !open) {\n props.onOpenChange?.(event, data);\n requestTreeResponse({ ...data, itemType, requestType: 'open' });\n } else {\n requestTreeResponse({ ...data, itemType, parentValue, requestType: 'navigate' });\n }\n return;\n }\n }\n // Ignore keyboard events that do not originate from the current tree item.\n if (!isEventFromTreeItem) {\n return;\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n requestType: 'navigate',\n event,\n target: event.currentTarget,\n value,\n itemType,\n type: treeDataTypes.TypeAhead,\n parentValue,\n });\n }\n });\n\n const handleChange = useEventCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n requestTreeResponse({\n requestType: 'selection',\n event,\n value,\n itemType,\n type: 'Change',\n target: event.currentTarget,\n checked: checked === 'mixed' ? true : !checked,\n });\n });\n\n return {\n value,\n open,\n checked,\n subtreeRef,\n layoutRef,\n selectionRef,\n expandIconRef,\n treeItemRef,\n actionsRef,\n itemType,\n level,\n components: {\n root: 'div',\n },\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isAsideVisible: false,\n // FIXME: this property is not necessary anymore, but as removing it would be a breaking change, we need to keep it as false\n isActionsVisible: false,\n root: slot.always(\n getIntrinsicElementProps(as, {\n tabIndex: -1,\n [dataTreeItemValueAttrName]: value,\n role: 'treeitem',\n ...rest,\n ref: useMergedRefs(ref, treeItemRef),\n 'aria-level': level,\n 'aria-checked': selectionMode === 'multiselect' ? checked : undefined,\n 'aria-selected': ariaSelected !== undefined ? ariaSelected : selectionMode === 'single' ? !!checked : undefined,\n 'aria-expanded': ariaExpanded !== undefined ? ariaExpanded : itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n } as const),\n { elementType: 'div' },\n ),\n };\n}\n\nfunction warnIfNoProperPropsFlatTreeItem(\n props: Pick<TreeItemProps, 'aria-setsize' | 'aria-posinset' | 'aria-level' | 'parentValue'>,\n) {\n if (process.env.NODE_ENV !== 'production') {\n if (\n props['aria-posinset'] === undefined ||\n props['aria-setsize'] === undefined ||\n props['aria-level'] === undefined ||\n (props.parentValue === undefined && props['aria-level'] !== 1)\n ) {\n // eslint-disable-next-line no-console\n console.error(/** #__DE-INDENT__ */ `\n @fluentui/react-tree [${useTreeItem_unstable.name}]:\n A flat treeitem must have \"aria-posinset\", \"aria-setsize\", \"aria-level\"\n and \"parentValue\" (if \"aria-level\" > 1) to ensure a11y and navigation.\n\n - \"aria-posinset\": the position of this treeitem in the current level of the tree.\n - \"aria-setsize\": the number of siblings in this level of the tree.\n - \"aria-level\": the current level of the treeitem.\n - \"parentValue\": the \"value\" property of the parent item of this item.\n `);\n }\n }\n}\n"],"names":["React","ReactDOM","getIntrinsicElementProps","useId","useEventCallback","slot","elementContains","useMergedRefs","isHTMLElement","Space","treeDataTypes","useTreeContext_unstable","useSubtreeContext_unstable","useTreeItemContext_unstable","TreeContext","dataTreeItemValueAttrName","useHasParentContext","treeClassNames","useTreeItem_unstable","props","ref","treeType","ctx","warnIfNoProperPropsFlatTreeItem","requestTreeResponse","navigationMode","forceUpdateRovingTabIndex","level","contextLevel","parentValue","value","internalValue","onClick","onKeyDown","onChange","as","itemType","ariaSelected","ariaExpanded","rest","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","treeItemRef","process","env","NODE_ENV","hasTreeContext","useEffect","current","querySelector","root","console","error","treeItem","tabIndex","open","openItems","has","getNextOpen","selectionMode","checked","checkedItems","get","handleClick","event","isEventFromActions","target","isEventFromSubtree","isEventFromSelection","contains","isEventFromExpandIcon","isDefaultPrevented","unstable_batchedUpdates","data","currentTarget","type","ExpandIconClick","Click","onOpenChange","requestType","handleKeyDown","isEventFromTreeItem","key","click","preventDefault","Enter","End","Home","ArrowUp","ArrowDown","hasAttribute","ArrowLeft","altKey","ArrowRight","isTypeAheadCharacter","length","match","ctrlKey","metaKey","TypeAhead","handleChange","components","isAsideVisible","isActionsVisible","always","role","undefined","elementType","name"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/TreeProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SubtreeContext, SubtreeContextValue, TreeContextValue, TreeContext } from '../contexts';\n\n/**\n * @internal\n */\nconst rootSubtreeContextValue: SubtreeContextValue = {\n level: 1,\n contextType: 'subtree',\n};\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const TreeProvider = (props: React.ProviderProps<TreeContextValue | SubtreeContextValue>): JSX.Element => {\n if (props.value.contextType === 'subtree') {\n return <SubtreeContext.Provider value={props.value}>{props.children}</SubtreeContext.Provider>;\n }\n return (\n <TreeContext.Provider value={props.value}>\n <SubtreeContext.Provider value={rootSubtreeContextValue}>{props.children}</SubtreeContext.Provider>\n </TreeContext.Provider>\n );\n};\n\nTreeProvider.displayName = 'TreeProvider';\n\nexport type TreeRootResetProps = {\n children?: React.ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const TreeRootReset = (props: TreeRootResetProps): JSX.Element => (\n <SubtreeContext.Provider value={undefined as unknown as SubtreeContextValue}>\n {props.children}\n </SubtreeContext.Provider>\n);\n"],"names":["React","SubtreeContext","TreeContext","rootSubtreeContextValue","level","contextType","TreeProvider","props","value","Provider","children","displayName","TreeRootReset","undefined"],"mappings":";;;;;;;;;;;IAYaM,YAAAA;;;iBAkBAM;;;;;iEA9BU,QAAQ;0BACoD,cAAc;AAEjG;;CAEC,GACD,MAAMT,0BAA+C;IACnDC,OAAO;IACPC,aAAa;AACf;AAGO,qBAAqB,CAACE;IAC3B,IAAIA,MAAMC,KAAK,CAACH,WAAW,KAAK,WAAW;QACzC,OAAA,WAAA,GAAO,OAAA,aAAA,CAACJ,wBAAAA,CAAeQ,QAAQ,EAAA;YAACD,OAAOD,MAAMC,KAAK;WAAGD,MAAMG,QAAQ;IACrE;IACA,OAAA,WAAA,GACE,OAAA,aAAA,CAACR,qBAAAA,CAAYO,QAAQ,EAAA;QAACD,OAAOD,MAAMC,KAAK;qBACtC,OAAA,aAAA,CAACP,wBAAAA,CAAeQ,QAAQ,EAAA;QAACD,OAAOL;OAA0BI,MAAMG,QAAQ;AAG9E,EAAE;AAEFJ,aAAaK,WAAW,GAAG;AAOpB,MAAMC,gBAAgB,CAACL,QAAAA,WAAAA,GAC5B,OAAA,aAAA,CAACN,wBAAAA,CAAeQ,QAAQ,EAAA;QAACD,OAAOK;OAC7BN,MAAMG,QAAQ,EAEjB"}
1
+ {"version":3,"sources":["../src/components/TreeProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { SubtreeContext, SubtreeContextValue, TreeContextValue, TreeContext } from '../contexts';\nimport type { JSXElement } from '@fluentui/react-utilities';\n\n/**\n * @internal\n */\nconst rootSubtreeContextValue: SubtreeContextValue = {\n level: 1,\n contextType: 'subtree',\n};\nexport const TreeProvider = (props: React.ProviderProps<TreeContextValue | SubtreeContextValue>): JSXElement => {\n if (props.value.contextType === 'subtree') {\n return <SubtreeContext.Provider value={props.value}>{props.children}</SubtreeContext.Provider>;\n }\n return (\n <TreeContext.Provider value={props.value}>\n <SubtreeContext.Provider value={rootSubtreeContextValue}>{props.children}</SubtreeContext.Provider>\n </TreeContext.Provider>\n );\n};\n\nTreeProvider.displayName = 'TreeProvider';\n\nexport type TreeRootResetProps = {\n children?: React.ReactNode;\n};\nexport const TreeRootReset = (props: TreeRootResetProps): JSXElement => (\n <SubtreeContext.Provider value={undefined as unknown as SubtreeContextValue}>\n {props.children}\n </SubtreeContext.Provider>\n);\n"],"names":["React","SubtreeContext","TreeContext","rootSubtreeContextValue","level","contextType","TreeProvider","props","value","Provider","children","displayName","TreeRootReset","undefined"],"mappings":";;;;;;;;;;;IAWaM,YAAAA;;;iBAgBAM;;;;;iEA3BU,QAAQ;0BACoD,cAAc;AAGjG;;CAEC,GACD,MAAMT,0BAA+C;IACnDC,OAAO;IACPC,aAAa;AACf;AACO,qBAAqB,CAACE;IAC3B,IAAIA,MAAMC,KAAK,CAACH,WAAW,KAAK,WAAW;QACzC,OAAA,WAAA,GAAO,OAAA,aAAA,CAACJ,wBAAAA,CAAeQ,QAAQ,EAAA;YAACD,OAAOD,MAAMC,KAAK;WAAGD,MAAMG,QAAQ;IACrE;IACA,OAAA,WAAA,GACE,OAAA,aAAA,CAACR,qBAAAA,CAAYO,QAAQ,EAAA;QAACD,OAAOD,MAAMC,KAAK;qBACtC,OAAA,aAAA,CAACP,wBAAAA,CAAeQ,QAAQ,EAAA;QAACD,OAAOL;OAA0BI,MAAMG,QAAQ;AAG9E,EAAE;AAEFJ,aAAaK,WAAW,GAAG;AAKpB,MAAMC,gBAAgB,CAACL,QAAAA,WAAAA,GAC5B,OAAA,aAAA,CAACN,wBAAAA,CAAeQ,QAAQ,EAAA;QAACD,OAAOK;OAC7BN,MAAMG,QAAQ,EAEjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-tree",
3
- "version": "9.12.2",
3
+ "version": "9.12.4",
4
4
  "description": "Tree component for Fluent UI React",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -21,20 +21,20 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@fluentui/keyboard-keys": "^9.0.8",
24
- "@fluentui/react-aria": "^9.16.1",
25
- "@fluentui/react-avatar": "^9.9.2",
26
- "@fluentui/react-button": "^9.6.2",
27
- "@fluentui/react-checkbox": "^9.5.2",
28
- "@fluentui/react-context-selector": "^9.2.4",
24
+ "@fluentui/react-aria": "^9.16.3",
25
+ "@fluentui/react-avatar": "^9.9.4",
26
+ "@fluentui/react-button": "^9.6.4",
27
+ "@fluentui/react-checkbox": "^9.5.3",
28
+ "@fluentui/react-context-selector": "^9.2.5",
29
29
  "@fluentui/react-icons": "^2.0.245",
30
- "@fluentui/react-motion-components-preview": "^0.8.1",
31
- "@fluentui/react-motion": "^9.10.1",
32
- "@fluentui/react-radio": "^9.5.2",
30
+ "@fluentui/react-motion-components-preview": "^0.8.2",
31
+ "@fluentui/react-motion": "^9.10.2",
32
+ "@fluentui/react-radio": "^9.5.3",
33
33
  "@fluentui/react-shared-contexts": "^9.24.1",
34
- "@fluentui/react-tabster": "^9.26.2",
34
+ "@fluentui/react-tabster": "^9.26.3",
35
35
  "@fluentui/react-theme": "^9.2.0",
36
- "@fluentui/react-utilities": "^9.23.1",
37
- "@fluentui/react-jsx-runtime": "^9.1.4",
36
+ "@fluentui/react-utilities": "^9.23.2",
37
+ "@fluentui/react-jsx-runtime": "^9.1.5",
38
38
  "@griffel/react": "^1.5.22",
39
39
  "@swc/helpers": "^0.5.1"
40
40
  },