@@ -4,6 +4,7 @@ import { useId } from "react";
44import clsx from "clsx" ;
55
66import Container from "@cloudscape-design/components/container" ;
7+ import { InternalDragHandleProps } from "@cloudscape-design/components/internal/do-not-use/drag-handle" ;
78
89import { getDataAttributes } from "../internal/base-component/get-data-attributes" ;
910import { InternalBaseComponentProps } from "../internal/base-component/use-base-component" ;
@@ -16,6 +17,16 @@ import type { BoardItemProps } from "./interfaces";
1617
1718import styles from "./styles.css.js" ;
1819
20+ const mapHandleDirectionToKeyboardDirection = ( direction : InternalDragHandleProps . Direction ) => {
21+ const directionMap = {
22+ "inline-start" : "left" ,
23+ "inline-end" : "right" ,
24+ "block-start" : "up" ,
25+ "block-end" : "down" ,
26+ } ;
27+ return directionMap [ direction ] as any ;
28+ } ;
29+
1930export function InternalBoardItem ( {
2031 children,
2132 header,
@@ -26,7 +37,7 @@ export function InternalBoardItem({
2637 __internalRootRef,
2738 ...rest
2839} : BoardItemProps & InternalBaseComponentProps ) {
29- const { dragHandle, resizeHandle, isActive } = useItemContext ( ) ;
40+ const { dragHandle, resizeHandle, isActive, isHidden } = useItemContext ( ) ;
3041
3142 const dragHandleAriaLabelledBy = useId ( ) ;
3243 const dragHandleAriaDescribedBy = useId ( ) ;
@@ -42,14 +53,24 @@ export function InternalBoardItem({
4253 header = {
4354 < WidgetContainerHeader
4455 handle = {
45- < DragHandle
46- ref = { dragHandle . ref }
47- ariaLabelledBy = { dragHandleAriaLabelledBy }
48- ariaDescribedBy = { dragHandleAriaDescribedBy }
49- onPointerDown = { dragHandle . onPointerDown }
50- onKeyDown = { dragHandle . onKeyDown }
51- isActive = { dragHandle . isActive }
52- />
56+ < >
57+ { ! isHidden && (
58+ < DragHandle
59+ ref = { dragHandle . ref }
60+ ariaLabelledBy = { dragHandleAriaLabelledBy }
61+ ariaDescribedBy = { dragHandleAriaDescribedBy }
62+ onPointerDown = { dragHandle . onPointerDown }
63+ onKeyDown = { dragHandle . onKeyDown }
64+ isActivePointer = { dragHandle . isActivePointer }
65+ isActiveUap = { dragHandle . isActiveUap }
66+ initialShowButtons = { dragHandle . initialShowButtons }
67+ onDirectionClick = { ( direction ) =>
68+ dragHandle . onDirectionClick ( mapHandleDirectionToKeyboardDirection ( direction ) , "drag" )
69+ }
70+ dragHandleTooltipText = { i18nStrings . dragHandleTooltipText }
71+ />
72+ ) }
73+ </ >
5374 }
5475 settings = { settings }
5576 >
@@ -62,14 +83,19 @@ export function InternalBoardItem({
6283 >
6384 { children }
6485 </ Container >
65- { resizeHandle && (
86+ { resizeHandle && ! isHidden && (
6687 < div className = { styles . resizer } >
6788 < ResizeHandle
6889 ariaLabelledBy = { resizeHandleAriaLabelledBy }
6990 ariaDescribedBy = { resizeHandleAriaDescribedBy }
7091 onPointerDown = { resizeHandle . onPointerDown }
7192 onKeyDown = { resizeHandle . onKeyDown }
72- isActive = { resizeHandle . isActive }
93+ isActivePointer = { resizeHandle . isActivePointer }
94+ isActiveUap = { resizeHandle . isActiveUap }
95+ onDirectionClick = { ( direction ) => {
96+ resizeHandle . onDirectionClick ( mapHandleDirectionToKeyboardDirection ( direction ) , "resize" ) ;
97+ } }
98+ resizeHandleTooltipText = { i18nStrings . resizeHandleTooltipText }
7399 />
74100 </ div >
75101 ) }
0 commit comments