diff --git a/Composer/packages/client/src/components/ProjectTree/ExpandableNode.tsx b/Composer/packages/client/src/components/ProjectTree/ExpandableNode.tsx index ec293483c8..62b306202b 100644 --- a/Composer/packages/client/src/components/ProjectTree/ExpandableNode.tsx +++ b/Composer/packages/client/src/components/ProjectTree/ExpandableNode.tsx @@ -18,35 +18,22 @@ type Props = { isActive?: boolean; }; -const summaryStyle = (depth: number, isActive: boolean) => css` +const summaryStyle = (depth: number, isActive: boolean, isOpen: boolean) => css` label: summary; - display: flex; padding-left: ${depth * INDENT_PER_LEVEL + 12}px; padding-top: 6px; + display: list-item; :hover { background: ${isActive ? NeutralColors.gray40 : NeutralColors.gray20}; } background: ${isActive ? NeutralColors.gray30 : NeutralColors.white}; + ${isOpen ? 'list-style-type: "⏷";' : 'list-style-type: "⏵";'} `; const nodeStyle = css` margin-top: 2px; `; -const TRIANGLE_SCALE = 0.6; - -const detailsStyle = css` - &:not([open]) > summary::-webkit-details-marker { - transform: scaleX(${TRIANGLE_SCALE}); - min-width: 10px; - } - - &[open] > summary::-webkit-details-marker { - transform: scaleY(${TRIANGLE_SCALE}); - min-width: 10px; - } -`; - export const ExpandableNode = ({ children, summary, @@ -75,21 +62,19 @@ export const ExpandableNode = ({ } return ( -
-
- {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */} - - {summary} - - {children} -
-
+
+ {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */} + + {summary} + + {children} +
); }; diff --git a/Composer/packages/client/src/components/ProjectTree/treeItem.tsx b/Composer/packages/client/src/components/ProjectTree/treeItem.tsx index 0d7816172d..aeeedc8e17 100644 --- a/Composer/packages/client/src/components/ProjectTree/treeItem.tsx +++ b/Composer/packages/client/src/components/ProjectTree/treeItem.tsx @@ -88,41 +88,53 @@ export const moreButton = (isActive: boolean): IButtonStyles => { }; }; -const navContainer = (isAnyMenuOpen: boolean, isActive: boolean, menuOpenHere: boolean, textWidth: number) => css` +const navContainer = ( + isAnyMenuOpen: boolean, + isActive: boolean, + menuOpenHere: boolean, + textWidth: number, + isBroken: boolean, + padLeft: number, + marginLeft: number +) => css` ${isAnyMenuOpen ? '' - : `&:hover { - background: ${isActive ? NeutralColors.gray40 : NeutralColors.gray20}; + : ` + &:hover { + background: ${isActive ? NeutralColors.gray40 : NeutralColors.gray20}; + + .dialog-more-btn { + visibility: visible; + } + .action-btn { + visibility: visible; + } + .treeItem-text { + max-width: ${textWidth}px; + } + }`}; - .dialog-more-btn { - visibility: visible; - } - .action-btn { - visibility: visible; - } - .treeItem-text { - max-width: ${textWidth}px; - } - }`}; background: ${isActive ? NeutralColors.gray30 : menuOpenHere ? '#f2f2f2' : 'transparent'}; -`; -const navItem = (isBroken: boolean, padLeft: number, marginLeft: number, isActive: boolean) => css` + display: inline-flex; + flex-direction: row; + label: navItem; - position: relative; + height: 24px; font-size: 12px; padding-left: ${padLeft}px; margin-left: ${marginLeft}px; + min-width: calc(100% - ${padLeft + 24}px); opacity: ${isBroken ? 0.5 : 1}; - display: flex; - flex-direction: row; align-items: center; + position: relative; + top: -4px; + :hover { background: ${isActive ? NeutralColors.gray40 : NeutralColors.gray20}; } - background: ${isActive ? NeutralColors.gray30 : NeutralColors.white}; &:focus { outline: none; @@ -155,7 +167,7 @@ export const overflowSet = (isBroken: boolean) => css` height: 100%; box-sizing: border-box; justify-content: space-between; - display: flex; + display: inline-flex; i { color: ${isBroken ? SharedColors.red20 : 'inherit'}; } @@ -496,57 +508,56 @@ export const TreeItem: React.FC = ({ return (
-
{ + data-testid={a11yLabel} + role="treeitem" + tabIndex={0} + onClick={() => { + onSelect?.(link); + }} + onKeyDown={(e) => { + if (e.key === 'Enter') { onSelect?.(link); - }} - onKeyDown={(e) => { - if (e.key === 'Enter') { - onSelect?.(link); - } - }} - > -
- -
+ } + }} + > +
+
); };