fix(work-orders): restore AAP span grip while keeping keyboard reorder

This commit is contained in:
Arthur Bassi 2026-09-04 13:27:53 -03:00
parent 370b2a68ad
commit 9f9aa5c824
2 changed files with 8 additions and 26 deletions

View file

@ -7,13 +7,6 @@ type WoTableRowReorderHandleProps = {
onArrowReorder: (delta: -1 | 1) => void; onArrowReorder: (delta: -1 | 1) => void;
}; };
function gripCursor(disabled: boolean, isDragging: boolean): string {
if (disabled) {
return "default";
}
return isDragging ? "grabbing" : "grab";
}
export function WoTableRowReorderHandle({ export function WoTableRowReorderHandle({
disabled, disabled,
isDragging, isDragging,
@ -21,27 +14,15 @@ export function WoTableRowReorderHandle({
onArrowReorder, onArrowReorder,
}: WoTableRowReorderHandleProps) { }: WoTableRowReorderHandleProps) {
return ( return (
<button <span
type="button" role="button"
disabled={disabled} aria-disabled={disabled}
tabIndex={disabled ? -1 : 0} tabIndex={disabled ? -1 : 0}
aria-label={woNumber ? `Reorder work order ${woNumber}` : "Reorder work order"} aria-label={woNumber ? `Reorder work order ${woNumber}` : "Reorder work order"}
className="flex items-center justify-center bg-transparent p-0" className="flex items-center justify-center"
style={{ style={{
appearance: "none", cursor: isDragging ? "grabbing" : "grab",
display: "inline-flex",
boxSizing: "border-box",
verticalAlign: "middle",
cursor: gripCursor(disabled, isDragging),
color: "var(--color-text-muted)", color: "var(--color-text-muted)",
border: "none",
background: "transparent",
padding: 0,
margin: 0,
lineHeight: 0,
font: "inherit",
minWidth: 0,
minHeight: 0,
}} }}
onClick={(event) => event.stopPropagation()} onClick={(event) => event.stopPropagation()}
onKeyDown={(event) => { onKeyDown={(event) => {
@ -54,6 +35,6 @@ export function WoTableRowReorderHandle({
}} }}
> >
<GripVertical size={14} aria-hidden /> <GripVertical size={14} aria-hidden />
</button> </span>
); );
} }

View file

@ -126,7 +126,8 @@ describe("WoTableRow keyboard reorder", () => {
renderRow(row, [row], handlers({ onReorder })); renderRow(row, [row], handlers({ onReorder }));
const grip = screen.getByRole("button", { name: "Reorder work order WO-1" }); const grip = screen.getByRole("button", { name: "Reorder work order WO-1" });
expect(grip).toBeDisabled(); expect(grip).toHaveAttribute("aria-disabled", "true");
expect(grip).toHaveAttribute("tabindex", "-1");
fireEvent.keyDown(grip, { key: "ArrowDown" }); fireEvent.keyDown(grip, { key: "ArrowDown" });
expect(onReorder).not.toHaveBeenCalled(); expect(onReorder).not.toHaveBeenCalled();
}); });