Skip to content

Commit

Permalink
fix: open menu to the top when at the bottom of the screen
Browse files Browse the repository at this point in the history
  • Loading branch information
Antonella Sgarlatta committed May 7, 2021
1 parent 437aa40 commit 24eb348
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
4 changes: 3 additions & 1 deletion app/assets/javascripts/components/NotesOptions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ type Props = {
onSubmenuChange?: (submenuOpen: boolean) => void;
};

const MAX_TAGS_MENU_HEIGHT = 265;

export const NotesOptions = observer(
({ appState, closeOnBlur, setLockCloseOnBlur, onSubmenuChange }: Props) => {
const [tagsMenuOpen, setTagsMenuOpen] = useState(false);
Expand Down Expand Up @@ -84,7 +86,7 @@ export const NotesOptions = observer(
setTagsMenuPosition({
top: offsetTop,
right:
buttonRect.right + 265 > document.body.clientWidth
buttonRect.right + MAX_TAGS_MENU_HEIGHT > document.body.clientWidth
? offsetWidth
: -offsetWidth,
});
Expand Down
5 changes: 2 additions & 3 deletions app/assets/javascripts/ui_models/app_state/notes_state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
SNNote,
NoteMutator,
ContentType,
SNTag,
} from '@standardnotes/snjs';
import {
makeObservable,
Expand All @@ -23,7 +22,7 @@ export class NotesState {
lastSelectedNote: SNNote | undefined;
selectedNotes: Record<UuidString, SNNote> = {};
contextMenuOpen = false;
contextMenuPosition: { top: number; left: number } = { top: 0, left: 0 };
contextMenuPosition: { top?: number; left: number, bottom?: number } = { top: 0, left: 0 };

constructor(
private application: WebApplication,
Expand Down Expand Up @@ -162,7 +161,7 @@ export class NotesState {
this.contextMenuOpen = open;
}

setContextMenuPosition(position: { top: number; left: number }): void {
setContextMenuPosition(position: { top?: number; left: number, bottom?: number }): void {
this.contextMenuPosition = position;
}

Expand Down
17 changes: 13 additions & 4 deletions app/assets/javascripts/views/notes/notes_view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ type NoteFlag = {
*/
const MIN_NOTE_CELL_HEIGHT = 51.0;
const DEFAULT_LIST_NUM_NOTES = 20;
const MAX_CONTEXT_MENU_HEIGHT = 245;
const ELEMENT_ID_SEARCH_BAR = 'search-bar';
const ELEMENT_ID_SCROLL_CONTAINER = 'notes-scrollable';

Expand Down Expand Up @@ -304,10 +305,18 @@ class NotesViewCtrl extends PureViewCtrl<unknown, NotesCtrlState> {
await this.selectNote(note);
}
if (this.state.selectedNotes[note.uuid]) {
this.application.getAppState().notes.setContextMenuPosition({
top: e.clientY,
left: e.clientX,
});
const clientHeight = document.documentElement.clientHeight;
if (e.clientY > clientHeight - MAX_CONTEXT_MENU_HEIGHT) {
this.application.getAppState().notes.setContextMenuPosition({
bottom: clientHeight - e.clientY,
left: e.clientX,
});
} else {
this.application.getAppState().notes.setContextMenuPosition({
top: e.clientY,
left: e.clientX,
});
}
this.application.getAppState().notes.setContextMenuOpen(true);
}
}
Expand Down

0 comments on commit 24eb348

Please sign in to comment.