Browse Source

Set calculated context menu position

master
jeffvli 3 years ago
parent
commit
867d79b7c3
  1. 31
      src/components/viewtypes/ListViewTable.tsx

31
src/components/viewtypes/ListViewTable.tsx

@ -250,6 +250,25 @@ const ListViewTable = ({
onSortColumn={handleSortColumn}
onRowContextMenu={(rowData: any, e: any) => {
e.preventDefault();
let pageX;
let pageY;
// Use ContextMenu width from the component
if (e.pageX + 190 >= window.innerWidth) {
pageX = e.pageX - 190;
} else {
pageX = e.pageX;
}
// Use the calculated ContextMenu height
// numOfButtons * 30 + props.numOfDividers * 1.5
const contextMenuHeight = 8 * 30 + 4 * 1.5;
if (e.pageY + contextMenuHeight >= window.innerHeight) {
pageY = e.pageY - contextMenuHeight;
} else {
pageY = e.pageY;
}
if (
(misc.contextMenu.show === false || misc.contextMenu.rowId !== rowData.uniqueId) &&
multiSelect.selected.filter((entry: any) => entry.uniqueId === rowData.uniqueId)
@ -258,17 +277,23 @@ const ListViewTable = ({
dispatch(
setContextMenu({
show: true,
xPos: e.pageX,
yPos: e.pageY,
xPos: pageX,
yPos: pageY,
rowId: rowData.uniqueId,
type: nowPlaying ? 'nowPlaying' : multiSelect.selected[0].type,
disabledOptions: disabledContextMenuOptions || [],
})
);
} else {
dispatch(setSelectedSingle(rowData));
dispatch(
setContextMenu({
show: false,
show: true,
xPos: pageX,
yPos: pageY,
rowId: rowData.uniqueId,
type: nowPlaying ? 'nowPlaying' : multiSelect.selected[0].type,
disabledOptions: disabledContextMenuOptions || [],
})
);
}

Loading…
Cancel
Save