Skip to content

Commit

Permalink
Add test and fine tune behaviors
Browse files Browse the repository at this point in the history
  • Loading branch information
flaviendelangle committed Apr 24, 2024
1 parent f816031 commit 59c5454
Show file tree
Hide file tree
Showing 10 changed files with 392 additions and 21 deletions.
2 changes: 1 addition & 1 deletion packages/x-tree-view/src/TreeItem/TreeItemContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const TreeItemContent = React.forwardRef(function TreeItemContent(
className={classes.checkbox}
checked={selected}
onChange={handleCheckboxSelection}
disabled={disableSelection}
disabled={disabled || disableSelection}
ref={checkboxRef}
tabIndex={-1}
/>
Expand Down
10 changes: 7 additions & 3 deletions packages/x-tree-view/src/TreeItem/useTreeItemState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,21 @@ export function useTreeItemState(itemId: string) {
instance.selectItem(event, itemId, true);
}
} else {
instance.selectItem(event, itemId);
instance.selectItem(event, itemId, false);
}
}
};

const handleCheckboxSelection = (event: React.ChangeEvent) => {
const handleCheckboxSelection = (event: React.ChangeEvent<HTMLInputElement>) => {
if (disableSelection || disabled) {
return;
}

const hasShift = (event.nativeEvent as PointerEvent).shiftKey;
if (multiSelect && hasShift) {
instance.expandSelectionRange(event, itemId);
} else {
instance.selectItem(event, itemId, multiSelect);
instance.selectItem(event, itemId, multiSelect, event.target.checked);
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import type { UseTreeItem2Status } from '../../useTreeItem2';
interface UseTreeItem2Interactions {
handleExpansion: (event: React.MouseEvent) => void;
handleSelection: (event: React.MouseEvent) => void;
handleCheckboxSelection: (event: React.ChangeEvent) => void;
handleCheckboxSelection: (event: React.ChangeEvent<HTMLInputElement>) => void;
}

interface UseTreeItem2UtilsReturnValue {
Expand Down Expand Up @@ -69,16 +69,16 @@ export const useTreeItem2Utils = ({
instance.selectItem(event, itemId, true);
}
} else {
instance.selectItem(event, itemId);
instance.selectItem(event, itemId, false);
}
};

const handleCheckboxSelection = (event: React.ChangeEvent) => {
const handleCheckboxSelection = (event: React.ChangeEvent<HTMLInputElement>) => {
const hasShift = (event.nativeEvent as PointerEvent).shiftKey;
if (multiSelect && hasShift) {
instance.expandSelectionRange(event, itemId);
} else {
instance.selectItem(event, itemId, multiSelect);
instance.selectItem(event, itemId, multiSelect, event.target.checked);
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin<
} else if (params.multiSelect) {
instance.selectItem(event, itemId, true);
} else {
instance.selectItem(event, itemId);
instance.selectItem(event, itemId, false);
}
break;
}
Expand All @@ -125,7 +125,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin<
event.preventDefault();
instance.selectItem(event, itemId, true);
} else if (!instance.isItemSelected(itemId)) {
instance.selectItem(event, itemId);
instance.selectItem(event, itemId, false);
event.preventDefault();
}
}
Expand Down

0 comments on commit 59c5454

Please sign in to comment.