import { WebApplication } from '@/ui_models/application'; import { CollectionSort, PrefKey } from '@standardnotes/snjs'; import { observer } from 'mobx-react-lite'; import { FunctionComponent } from 'preact'; import { useRef, useState } from 'preact/hooks'; import { Icon } from './Icon'; import { Menu } from './menu/Menu'; import { MenuItem, MenuItemSeparator, MenuItemType } from './menu/MenuItem'; import { useCloseOnClickOutside } from './utils'; type Props = { application: WebApplication; closeDisplayOptionsMenu: () => void; }; export const NotesListOptionsMenu: FunctionComponent = observer( ({ closeDisplayOptionsMenu, application }) => { const menuClassName = 'sn-dropdown sn-dropdown--animated min-w-70 overflow-y-auto \ border-1 border-solid border-main text-sm z-index-dropdown-menu \ flex flex-col py-2 bottom-0 left-2 absolute'; const [sortBy, setSortBy] = useState(() => application.getPreference(PrefKey.SortNotesBy, CollectionSort.CreatedAt) ); const [sortReverse, setSortReverse] = useState(() => application.getPreference(PrefKey.SortNotesReverse, false) ); const [hidePreview, setHidePreview] = useState(() => application.getPreference(PrefKey.NotesHideNotePreview, false) ); const [hideDate, setHideDate] = useState(() => application.getPreference(PrefKey.NotesHideDate, false) ); const [hideTags, setHideTags] = useState(() => application.getPreference(PrefKey.NotesHideTags, true) ); const [hidePinned, setHidePinned] = useState(() => application.getPreference(PrefKey.NotesHidePinned, false) ); const [showArchived, setShowArchived] = useState(() => application.getPreference(PrefKey.NotesShowArchived, false) ); const [showTrashed, setShowTrashed] = useState(() => application.getPreference(PrefKey.NotesShowTrashed, false) ); const [hideProtected, setHideProtected] = useState(() => application.getPreference(PrefKey.NotesHideProtected, false) ); const [hideEditorIcon, setHideEditorIcon] = useState(() => application.getPreference(PrefKey.NotesHideEditorIcon, false) ); const toggleSortReverse = () => { application.setPreference(PrefKey.SortNotesReverse, !sortReverse); setSortReverse(!sortReverse); }; const toggleSortBy = (sort: CollectionSort) => { if (sortBy === sort) { toggleSortReverse(); } else { setSortBy(sort); application.setPreference(PrefKey.SortNotesBy, sort); } }; const toggleSortByDateModified = () => { toggleSortBy(CollectionSort.UpdatedAt); }; const toggleSortByCreationDate = () => { toggleSortBy(CollectionSort.CreatedAt); }; const toggleSortByTitle = () => { toggleSortBy(CollectionSort.Title); }; const toggleHidePreview = () => { setHidePreview(!hidePreview); application.setPreference(PrefKey.NotesHideNotePreview, !hidePreview); }; const toggleHideDate = () => { setHideDate(!hideDate); application.setPreference(PrefKey.NotesHideDate, !hideDate); }; const toggleHideTags = () => { setHideTags(!hideTags); application.setPreference(PrefKey.NotesHideTags, !hideTags); }; const toggleHidePinned = () => { setHidePinned(!hidePinned); application.setPreference(PrefKey.NotesHidePinned, !hidePinned); }; const toggleShowArchived = () => { setShowArchived(!showArchived); application.setPreference(PrefKey.NotesShowArchived, !showArchived); }; const toggleShowTrashed = () => { setShowTrashed(!showTrashed); application.setPreference(PrefKey.NotesShowTrashed, !showTrashed); }; const toggleHideProtected = () => { setHideProtected(!hideProtected); application.setPreference(PrefKey.NotesHideProtected, !hideProtected); }; const toggleEditorIcon = () => { setHideEditorIcon(!hideEditorIcon); application.setPreference(PrefKey.NotesHideEditorIcon, !hideEditorIcon); }; const menuRef = useRef(null); useCloseOnClickOutside(menuRef, () => { closeDisplayOptionsMenu(); }); return (
Sort by
Date modified {sortBy === CollectionSort.UpdatedAt ? ( sortReverse ? ( ) : ( ) ) : null}
Creation date {sortBy === CollectionSort.CreatedAt ? ( sortReverse ? ( ) : ( ) ) : null}
Title {sortBy === CollectionSort.Title ? ( sortReverse ? ( ) : ( ) ) : null}
View
Show note preview
Show date Show tags Show editor icon
Other
Show pinned notes Show protected notes Show archived notes Show trashed notes
); } );