diff --git a/change/@fluentui-react-tree-d63bed0b-49b4-4783-8de0-da7822310165.json b/change/@fluentui-react-tree-d63bed0b-49b4-4783-8de0-da7822310165.json new file mode 100644 index 00000000000000..a9584d25a5647c --- /dev/null +++ b/change/@fluentui-react-tree-d63bed0b-49b4-4783-8de0-da7822310165.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "chore: restructure stories, add separate category for flat tree", + "packageName": "@fluentui/react-tree", + "email": "bernardo.sunderhus@gmail.com", + "dependentChangeType": "patch" +} diff --git a/packages/react-components/react-tree/etc/react-tree.api.md b/packages/react-components/react-tree/etc/react-tree.api.md index b680ce0c98c1f0..1635f372aff3f6 100644 --- a/packages/react-components/react-tree/etc/react-tree.api.md +++ b/packages/react-components/react-tree/etc/react-tree.api.md @@ -132,7 +132,7 @@ export type TreeItemLayoutProps = ComponentProps>; // @public (undocumented) export type TreeItemLayoutSlots = { - root: Slot<'div'>; + root: Slot<'span'>; iconBefore?: Slot<'span'>; iconAfter?: Slot<'span'>; aside?: Slot<'span'>; diff --git a/packages/react-components/react-tree/src/components/TreeItemLayout/TreeItemLayout.types.ts b/packages/react-components/react-tree/src/components/TreeItemLayout/TreeItemLayout.types.ts index eb204f80a8d671..cdd1b3f9d17031 100644 --- a/packages/react-components/react-tree/src/components/TreeItemLayout/TreeItemLayout.types.ts +++ b/packages/react-components/react-tree/src/components/TreeItemLayout/TreeItemLayout.types.ts @@ -2,7 +2,7 @@ import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utili import { TreeItemContextValue } from '../../contexts/treeItemContext'; export type TreeItemLayoutSlots = { - root: Slot<'div'>; + root: Slot<'span'>; /** * Icon slot that renders right before main content */ @@ -11,6 +11,9 @@ export type TreeItemLayoutSlots = { * Icon slot that renders right after main content */ iconAfter?: Slot<'span'>; + /** + * slot that render right after main content and iconAfter + */ aside?: Slot<'span'>; }; diff --git a/packages/react-components/react-tree/src/components/TreeItemLayout/__snapshots__/TreeItemLayout.test.tsx.snap b/packages/react-components/react-tree/src/components/TreeItemLayout/__snapshots__/TreeItemLayout.test.tsx.snap index f07aa64b74c752..277c480f29e21a 100644 --- a/packages/react-components/react-tree/src/components/TreeItemLayout/__snapshots__/TreeItemLayout.test.tsx.snap +++ b/packages/react-components/react-tree/src/components/TreeItemLayout/__snapshots__/TreeItemLayout.test.tsx.snap @@ -2,10 +2,10 @@ exports[`TreeItemLayout renders a default state 1`] = `
-
Default TreeItemLayout -
+
`; diff --git a/packages/react-components/react-tree/src/components/TreeItemLayout/useTreeItemLayout.ts b/packages/react-components/react-tree/src/components/TreeItemLayout/useTreeItemLayout.ts index 5042722a75ea0b..bf0f7a0cb3a644 100644 --- a/packages/react-components/react-tree/src/components/TreeItemLayout/useTreeItemLayout.ts +++ b/packages/react-components/react-tree/src/components/TreeItemLayout/useTreeItemLayout.ts @@ -16,13 +16,13 @@ export const useTreeItemLayout_unstable = ( props: TreeItemLayoutProps, ref: React.Ref, ): TreeItemLayoutState => { - const { iconAfter, iconBefore, aside, as = 'div' } = props; + const { iconAfter, iconBefore, aside, as = 'span' } = props; const treeItemContext = useTreeItemContext_unstable(); return { ...treeItemContext, components: { - root: 'div', + root: 'span', iconBefore: 'span', iconAfter: 'span', aside: 'span', diff --git a/packages/react-components/react-tree/src/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.ts b/packages/react-components/react-tree/src/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.ts index 11c058a7e65963..6aee99522a2d86 100644 --- a/packages/react-components/react-tree/src/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.ts +++ b/packages/react-components/react-tree/src/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.ts @@ -20,6 +20,7 @@ const useRootStyles = makeStyles({ width: '100%', display: 'flex', alignItems: 'center', + ...typographyStyles.body1, }, }); @@ -50,16 +51,13 @@ const useContentStyles = makeStyles({ ...shorthands.gap(tokens.spacingVerticalNone, tokens.spacingHorizontalNone), }, }); -const useMainStyles = makeStyles({ - base: { - ...typographyStyles.body1, - }, -}); + const useDescriptionStyles = makeStyles({ base: { ...typographyStyles.caption1, }, }); + const useAsideStyles = makeStyles({ base: { display: 'flex', @@ -79,7 +77,6 @@ export const useTreeItemPersonaLayoutStyles_unstable = ( const rootStyles = useRootStyles(); const mediaStyles = useMediaStyles(); const contentStyles = useContentStyles(); - const mainStyles = useMainStyles(); const descriptionStyles = useDescriptionStyles(); const asideStyles = useAsideStyles(); @@ -95,7 +92,7 @@ export const useTreeItemPersonaLayoutStyles_unstable = ( ); } if (state.main) { - state.main.className = mergeClasses(treeItemPersonaLayoutClassNames.main, mainStyles.base, state.main.className); + state.main.className = mergeClasses(treeItemPersonaLayoutClassNames.main, state.main.className); } if (state.description) { state.description.className = mergeClasses( diff --git a/packages/react-components/react-tree/stories/Tree/TreeAppearance.md b/packages/react-components/react-tree/stories/A_Tree/TreeAppearance.md similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeAppearance.md rename to packages/react-components/react-tree/stories/A_Tree/TreeAppearance.md diff --git a/packages/react-components/react-tree/stories/Tree/TreeAppearance.stories.tsx b/packages/react-components/react-tree/stories/A_Tree/TreeAppearance.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeAppearance.stories.tsx rename to packages/react-components/react-tree/stories/A_Tree/TreeAppearance.stories.tsx diff --git a/packages/react-components/react-tree/stories/Tree/TreeBestPractices.md b/packages/react-components/react-tree/stories/A_Tree/TreeBestPractices.md similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeBestPractices.md rename to packages/react-components/react-tree/stories/A_Tree/TreeBestPractices.md diff --git a/packages/react-components/react-tree/stories/Tree/TreeControllingOpenAndClose.md b/packages/react-components/react-tree/stories/A_Tree/TreeControllingOpenAndClose.md similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeControllingOpenAndClose.md rename to packages/react-components/react-tree/stories/A_Tree/TreeControllingOpenAndClose.md diff --git a/packages/react-components/react-tree/stories/Tree/TreeControllingOpenAndClose.stories.tsx b/packages/react-components/react-tree/stories/A_Tree/TreeControllingOpenAndClose.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeControllingOpenAndClose.stories.tsx rename to packages/react-components/react-tree/stories/A_Tree/TreeControllingOpenAndClose.stories.tsx diff --git a/packages/react-components/react-tree/stories/Tree/TreeDefault.stories.tsx b/packages/react-components/react-tree/stories/A_Tree/TreeDefault.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeDefault.stories.tsx rename to packages/react-components/react-tree/stories/A_Tree/TreeDefault.stories.tsx diff --git a/packages/react-components/react-tree/stories/Tree/TreeDefaultOpenTrees.md b/packages/react-components/react-tree/stories/A_Tree/TreeDefaultOpenTrees.md similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeDefaultOpenTrees.md rename to packages/react-components/react-tree/stories/A_Tree/TreeDefaultOpenTrees.md diff --git a/packages/react-components/react-tree/stories/Tree/TreeDefaultOpenTrees.stories.tsx b/packages/react-components/react-tree/stories/A_Tree/TreeDefaultOpenTrees.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeDefaultOpenTrees.stories.tsx rename to packages/react-components/react-tree/stories/A_Tree/TreeDefaultOpenTrees.stories.tsx diff --git a/packages/react-components/react-tree/stories/Tree/TreeDescription.md b/packages/react-components/react-tree/stories/A_Tree/TreeDescription.md similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeDescription.md rename to packages/react-components/react-tree/stories/A_Tree/TreeDescription.md diff --git a/packages/react-components/react-tree/stories/Tree/TreeSize.md b/packages/react-components/react-tree/stories/A_Tree/TreeSize.md similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeSize.md rename to packages/react-components/react-tree/stories/A_Tree/TreeSize.md diff --git a/packages/react-components/react-tree/stories/Tree/TreeSize.stories.tsx b/packages/react-components/react-tree/stories/A_Tree/TreeSize.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/Tree/TreeSize.stories.tsx rename to packages/react-components/react-tree/stories/A_Tree/TreeSize.stories.tsx diff --git a/packages/react-components/react-tree/stories/Tree/index.stories.tsx b/packages/react-components/react-tree/stories/A_Tree/index.stories.tsx similarity index 79% rename from packages/react-components/react-tree/stories/Tree/index.stories.tsx rename to packages/react-components/react-tree/stories/A_Tree/index.stories.tsx index 37f3efc4801942..23315dbb92ded1 100644 --- a/packages/react-components/react-tree/stories/Tree/index.stories.tsx +++ b/packages/react-components/react-tree/stories/A_Tree/index.stories.tsx @@ -8,9 +8,6 @@ export { DefaultOpenTrees } from './TreeDefaultOpenTrees.stories'; export { Appearance } from './TreeAppearance.stories'; export { Size } from './TreeSize.stories'; export { OpenItemsControlled } from './TreeControllingOpenAndClose.stories'; -export { UseFlatTree as useFlatTree } from './useFlatTree.stories'; -export { FlattenTree as flattenTree } from './flattenTree.stories'; -export { Virtualization } from './Virtualization.stories'; export default { title: 'Preview Components/Tree/Tree', diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemActions.md b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemActions.md similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemActions.md rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemActions.md diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemActions.stories.tsx b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemActions.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemActions.stories.tsx rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemActions.stories.tsx diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemDefault.stories.tsx b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemDefault.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemDefault.stories.tsx rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemDefault.stories.tsx diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemDescription.md b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemDescription.md similarity index 55% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemDescription.md rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemDescription.md index 0dc57ec18b0f55..73143049232401 100644 --- a/packages/react-components/react-tree/stories/TreeItem/TreeItemDescription.md +++ b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemDescription.md @@ -1,3 +1,16 @@ The `TreeItem` component represents a single item in a tree. It can contain child items in the form of another `Tree` component or standalone `TreeItem`. The content and layout of a `TreeItem` can be defined using the `TreeItemLayout` or `TreeItemPersonaLayout` component, which should be used as a direct child of `TreeItem`. When a `TreeItem` has child items, an expand/collapse control is displayed, allowing the user to show or hide the children. + + + +> **⚠️ Preview components are considered unstable:** +> +> ```jsx +> +> import { Tree, TreeItem } from '@fluentui/react-components/unstable'; +> +> ``` +> +> - Features and APIs may change before final release +> - Please contact us if you intend to use this in your product diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemExpandCollapseIconOnly.md b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandCollapseIconOnly.md similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemExpandCollapseIconOnly.md rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandCollapseIconOnly.md diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemExpandCollapseIconOnly.stories.tsx b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandCollapseIconOnly.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemExpandCollapseIconOnly.stories.tsx rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandCollapseIconOnly.stories.tsx diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemExpandIcon.md b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandIcon.md similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemExpandIcon.md rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandIcon.md diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemExpandIcon.stories.tsx b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandIcon.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemExpandIcon.stories.tsx rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemExpandIcon.stories.tsx diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemWithInlineStyle.md b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemWithInlineStyle.md similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemWithInlineStyle.md rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemWithInlineStyle.md diff --git a/packages/react-components/react-tree/stories/TreeItem/TreeItemWithInlineStyle.stories.tsx b/packages/react-components/react-tree/stories/B_TreeItem/TreeItemWithInlineStyle.stories.tsx similarity index 100% rename from packages/react-components/react-tree/stories/TreeItem/TreeItemWithInlineStyle.stories.tsx rename to packages/react-components/react-tree/stories/B_TreeItem/TreeItemWithInlineStyle.stories.tsx diff --git a/packages/react-components/react-tree/stories/TreeItem/index.stories.tsx b/packages/react-components/react-tree/stories/B_TreeItem/index.stories.tsx similarity index 80% rename from packages/react-components/react-tree/stories/TreeItem/index.stories.tsx rename to packages/react-components/react-tree/stories/B_TreeItem/index.stories.tsx index 315138827be72d..5173f20fb7e330 100644 --- a/packages/react-components/react-tree/stories/TreeItem/index.stories.tsx +++ b/packages/react-components/react-tree/stories/B_TreeItem/index.stories.tsx @@ -4,11 +4,8 @@ import descriptionMd from './TreeItemDescription.md'; export { Default } from './TreeItemDefault.stories'; export { ExpandCollapseIconOnly } from './TreeItemExpandCollapseIconOnly.stories'; export { ExpandIcon } from './TreeItemExpandIcon.stories'; -export { IconBefore } from './TreeItemIconBefore.stories'; -export { IconAfter } from './TreeItemIconAfter.stories'; export { Actions } from './TreeItemActions.stories'; export { WithInlineStyle } from './TreeItemWithInlineStyle.stories'; -export { AddRemoveTreeItem } from './TreeItemAddRemove.stories'; export default { title: 'Preview Components/Tree/TreeItem', diff --git a/packages/react-components/react-tree/stories/C_Layouts/LayoutsDefault.stories.tsx b/packages/react-components/react-tree/stories/C_Layouts/LayoutsDefault.stories.tsx new file mode 100644 index 00000000000000..ee983511110be4 --- /dev/null +++ b/packages/react-components/react-tree/stories/C_Layouts/LayoutsDefault.stories.tsx @@ -0,0 +1,154 @@ +import * as React from 'react'; +import { Tree, TreeItem, TreeItemLayout, TreeItemPersonaLayout } from '@fluentui/react-tree'; +import { + CalendarMonthRegular, + LockClosedRegular, + LinkSquareRegular, + Important16Regular, + MoreHorizontal20Regular, + FlagRegular, +} from '@fluentui/react-icons'; +import { + Avatar, + Button, + CounterBadge, + Menu, + MenuItem, + MenuList, + MenuPopover, + MenuTrigger, + Text, + tokens, +} from '@fluentui/react-components'; + +export const Default = () => { + return ( + + + } + iconAfter={ + <> + + + + } + aside={ + <> + + + + } + > + Content + + + + level 2, item 1 + + + level 2, item 2 + + + level 2, item 3 + + + + +