From 3c91b0cb17d3e4fde51acc811c80bdd2228756bb Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Sun, 27 Nov 2022 22:53:30 +0530 Subject: [PATCH] refactor: menu items (#2057) --- .../AccountMenu/GeneralAccountMenu.tsx | 11 +- .../WorkspaceSwitcher/WorkspaceMenuItem.tsx | 8 +- .../WorkspaceSwitcherMenu.tsx | 5 +- .../WorkspaceSwitcherOption.tsx | 9 +- .../ChangeEditor/ChangeEditorMenu.tsx | 10 +- .../Header/DisplayOptionsMenu.tsx | 68 +++---- .../FileContextMenu/FileMenuOptions.tsx | 7 +- .../LinkedItems/LinkedItemsSectionItem.tsx | 2 - .../javascripts/Components/Menu/MenuItem.tsx | 72 +------ .../Components/Menu/MenuListItem.tsx | 11 ++ .../Components/Menu/MenuRadioButtonItem.tsx | 46 +++++ .../Components/Menu/MenuSwitchButtonItem.tsx | 53 ++++++ .../NotesContextMenu/NotesContextMenu.tsx | 9 +- .../Components/NotesOptions/AddTagOption.tsx | 20 +- .../NotesOptions/ChangeEditorOption.tsx | 15 +- .../Components/NotesOptions/ClassNames.ts | 10 - .../NotesOptions/DeletePermanentlyButton.tsx | 12 +- .../Listed/ListedActionsOption.tsx | 10 +- .../Components/NotesOptions/NotesOptions.tsx | 177 ++++++------------ .../NotesOptions/NotesOptionsPanel.tsx | 23 ++- .../NotesOptions/SpellcheckOptions.tsx | 20 +- .../NotesOptions/SuperNoteOptions.tsx | 23 +-- .../PanelSettingsSection.tsx | 13 +- .../Components/Tags/TagContextMenu.tsx | 9 +- 24 files changed, 291 insertions(+), 352 deletions(-) create mode 100644 packages/web/src/javascripts/Components/Menu/MenuListItem.tsx create mode 100644 packages/web/src/javascripts/Components/Menu/MenuRadioButtonItem.tsx create mode 100644 packages/web/src/javascripts/Components/Menu/MenuSwitchButtonItem.tsx diff --git a/packages/web/src/javascripts/Components/AccountMenu/GeneralAccountMenu.tsx b/packages/web/src/javascripts/Components/AccountMenu/GeneralAccountMenu.tsx index 810128a85..9d20c935e 100644 --- a/packages/web/src/javascripts/Components/AccountMenu/GeneralAccountMenu.tsx +++ b/packages/web/src/javascripts/Components/AccountMenu/GeneralAccountMenu.tsx @@ -9,7 +9,6 @@ import { AccountMenuPane } from './AccountMenuPane' import Menu from '@/Components/Menu/Menu' import MenuItem from '@/Components/Menu/MenuItem' import MenuItemSeparator from '@/Components/Menu/MenuItemSeparator' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import WorkspaceSwitcherOption from './WorkspaceSwitcher/WorkspaceSwitcherOption' import { ApplicationGroup } from '@/Application/ApplicationGroup' import { formatLastSyncDate } from '@/Utils/DateUtils' @@ -150,23 +149,23 @@ const GeneralAccountMenu: FunctionComponent = ({ /> {user ? ( - + Account settings ) : ( <> - + Create free account - + Sign in )} - +
Help & feedback @@ -176,7 +175,7 @@ const GeneralAccountMenu: FunctionComponent = ({ {user ? ( <> - + Sign out workspace diff --git a/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceMenuItem.tsx b/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceMenuItem.tsx index 99c950674..e1fbc2333 100644 --- a/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceMenuItem.tsx +++ b/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceMenuItem.tsx @@ -1,6 +1,4 @@ import Icon from '@/Components/Icon/Icon' -import MenuItem from '@/Components/Menu/MenuItem' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import { KeyboardKey } from '@standardnotes/ui-services' import { ApplicationDescriptor } from '@standardnotes/snjs' import { @@ -13,6 +11,7 @@ import { useRef, useState, } from 'react' +import MenuRadioButtonItem from '@/Components/Menu/MenuRadioButtonItem' type Props = { descriptor: ApplicationDescriptor @@ -56,8 +55,7 @@ const WorkspaceMenuItem: FunctionComponent = ({ }, [inputValue, renameDescriptor]) return ( - = ({
)} -
+ ) } diff --git a/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherMenu.tsx b/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherMenu.tsx index c58b40962..e6f3e791d 100644 --- a/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherMenu.tsx +++ b/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherMenu.tsx @@ -7,7 +7,6 @@ import Icon from '@/Components/Icon/Icon' import Menu from '@/Components/Menu/Menu' import MenuItem from '@/Components/Menu/MenuItem' import MenuItemSeparator from '@/Components/Menu/MenuItemSeparator' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import WorkspaceMenuItem from './WorkspaceMenuItem' type Props = { @@ -85,13 +84,13 @@ const WorkspaceSwitcherMenu: FunctionComponent = ({ ))} - + Add another workspace {!hideWorkspaceOptions && ( - + Sign out all workspaces diff --git a/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherOption.tsx b/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherOption.tsx index b6ed59ad1..f2cccb304 100644 --- a/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherOption.tsx +++ b/packages/web/src/javascripts/Components/AccountMenu/WorkspaceSwitcher/WorkspaceSwitcherOption.tsx @@ -6,7 +6,6 @@ import { FunctionComponent, useCallback, useRef, useState } from 'react' import Icon from '@/Components/Icon/Icon' import WorkspaceSwitcherMenu from './WorkspaceSwitcherMenu' import MenuItem from '@/Components/Menu/MenuItem' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import Popover from '@/Components/Popover/Popover' import { MenuItemIconSize } from '@/Constants/TailwindClassNames' @@ -25,13 +24,7 @@ const WorkspaceSwitcherOption: FunctionComponent = ({ mainApplicationGrou return ( <> - +
Switch workspace diff --git a/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorMenu.tsx b/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorMenu.tsx index 9b1480194..7689fa08e 100644 --- a/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorMenu.tsx +++ b/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorMenu.tsx @@ -1,7 +1,5 @@ import Icon from '@/Components/Icon/Icon' import Menu from '@/Components/Menu/Menu' -import MenuItem from '@/Components/Menu/MenuItem' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import { usePremiumModal } from '@/Hooks/usePremiumModal' import { STRING_EDIT_LOCKED_ATTEMPT } from '@/Constants/Strings' import { WebApplication } from '@/Application/Application' @@ -13,6 +11,7 @@ import { createEditorMenuGroups } from '../../Utils/createEditorMenuGroups' import { reloadFont } from '../NoteView/FontFunctions' import { PremiumFeatureIconClass, PremiumFeatureIconName } from '../Icon/PremiumFeatureIcon' import { SuperNoteImporter } from '../NoteView/SuperEditor/SuperNoteImporter' +import MenuRadioButtonItem from '../Menu/MenuRadioButtonItem' type ChangeEditorMenuProps = { application: WebApplication @@ -190,12 +189,11 @@ const ChangeEditorMenu: FunctionComponent = ({ selectItem(item).catch(console.error) } return ( -
@@ -206,7 +204,7 @@ const ChangeEditorMenu: FunctionComponent = ({ )}
- + ) })}
diff --git a/packages/web/src/javascripts/Components/ContentListView/Header/DisplayOptionsMenu.tsx b/packages/web/src/javascripts/Components/ContentListView/Header/DisplayOptionsMenu.tsx index 66e3d8f99..b64429b9e 100644 --- a/packages/web/src/javascripts/Components/ContentListView/Header/DisplayOptionsMenu.tsx +++ b/packages/web/src/javascripts/Components/ContentListView/Header/DisplayOptionsMenu.tsx @@ -13,15 +13,15 @@ import { observer } from 'mobx-react-lite' import { FunctionComponent, useCallback, useEffect, useState } from 'react' import Icon from '@/Components/Icon/Icon' import Menu from '@/Components/Menu/Menu' -import MenuItem from '@/Components/Menu/MenuItem' import MenuItemSeparator from '@/Components/Menu/MenuItemSeparator' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import { DisplayOptionsMenuProps } from './DisplayOptionsMenuProps' import { PrefDefaults } from '@/Constants/PrefDefaults' import NewNotePreferences from './NewNotePreferences' import { PreferenceMode } from './PreferenceMode' import { classNames } from '@standardnotes/utils' import NoSubscriptionBanner from '@/Components/NoSubscriptionBanner/NoSubscriptionBanner' +import MenuRadioButtonItem from '@/Components/Menu/MenuRadioButtonItem' +import MenuSwitchButtonItem from '@/Components/Menu/MenuSwitchButtonItem' const DailyEntryModeEnabled = true @@ -230,10 +230,9 @@ const DisplayOptionsMenu: FunctionComponent = ({
Sort by
- @@ -247,11 +246,10 @@ const DisplayOptionsMenu: FunctionComponent = ({ ) ) : null}
-
- + @@ -265,11 +263,10 @@ const DisplayOptionsMenu: FunctionComponent = ({ ) ) : null} - - + @@ -283,92 +280,83 @@ const DisplayOptionsMenu: FunctionComponent = ({ ) ) : null} - +
View
{!isFilesSmartView && ( -
Show note preview
-
+ )} - Show date - - + Show tags - - + Show icon - +
Other
- Show pinned - - + Show protected - - + Show archived - - + Show trashed - + {currentMode === 'tag' && DailyEntryModeEnabled && ( <> - = ({
Capture new notes daily with a calendar-based layout
-
+ )} diff --git a/packages/web/src/javascripts/Components/FileContextMenu/FileMenuOptions.tsx b/packages/web/src/javascripts/Components/FileContextMenu/FileMenuOptions.tsx index 0d3ee1526..c91c2e40a 100644 --- a/packages/web/src/javascripts/Components/FileContextMenu/FileMenuOptions.tsx +++ b/packages/web/src/javascripts/Components/FileContextMenu/FileMenuOptions.tsx @@ -9,8 +9,8 @@ import { formatSizeToReadableString } from '@standardnotes/filepicker' import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider' import { AppPaneId } from '../ResponsivePane/AppPaneMetadata' import MenuItem from '../Menu/MenuItem' -import { MenuItemType } from '../Menu/MenuItemType' import { FileContextMenuBackupOption } from './FileContextMenuBackupOption' +import MenuSwitchButtonItem from '../Menu/MenuSwitchButtonItem' type Props = { closeMenu: () => void @@ -83,8 +83,7 @@ const FileMenuOptions: FunctionComponent = ({ ) : null} )} - { void filesController.setProtectionForFiles(hasProtectedFiles, selectionController.selectedFiles) @@ -92,7 +91,7 @@ const FileMenuOptions: FunctionComponent = ({ > Password protect - + { diff --git a/packages/web/src/javascripts/Components/LinkedItems/LinkedItemsSectionItem.tsx b/packages/web/src/javascripts/Components/LinkedItems/LinkedItemsSectionItem.tsx index b294451ee..e44521dbe 100644 --- a/packages/web/src/javascripts/Components/LinkedItems/LinkedItemsSectionItem.tsx +++ b/packages/web/src/javascripts/Components/LinkedItems/LinkedItemsSectionItem.tsx @@ -12,7 +12,6 @@ import { useApplication } from '../ApplicationView/ApplicationProvider' import { PopoverFileItemActionType } from '../AttachedFilesPopover/PopoverFileItemAction' import Icon from '../Icon/Icon' import MenuItem from '../Menu/MenuItem' -import { MenuItemType } from '../Menu/MenuItemType' import Popover from '../Popover/Popover' import HorizontalSeparator from '../Shared/HorizontalSeparator' import LinkedFileMenuOptions from './LinkedFileMenuOptions' @@ -107,7 +106,6 @@ export const LinkedItemsSectionItem = ({ className="py-2" > { unlinkItem() toggleMenu() diff --git a/packages/web/src/javascripts/Components/Menu/MenuItem.tsx b/packages/web/src/javascripts/Components/Menu/MenuItem.tsx index 78f4880ac..ce2b31bbf 100644 --- a/packages/web/src/javascripts/Components/Menu/MenuItem.tsx +++ b/packages/web/src/javascripts/Components/Menu/MenuItem.tsx @@ -1,79 +1,34 @@ -import { forwardRef, MouseEventHandler, ReactNode, Ref } from 'react' +import { ComponentPropsWithoutRef, forwardRef, MouseEventHandler, ReactNode, Ref } from 'react' import Icon from '@/Components/Icon/Icon' -import Switch from '@/Components/Switch/Switch' -import { SwitchProps } from '@/Components/Switch/SwitchProps' import { IconType } from '@standardnotes/snjs' import { FOCUSABLE_BUT_NOT_TABBABLE } from '@/Constants/Constants' -import { MenuItemType } from './MenuItemType' -import RadioIndicator from '../Radio/RadioIndicator' import { classNames } from '@standardnotes/utils' import { PlatformedKeyboardShortcut } from '@standardnotes/ui-services' import { KeyboardShortcutIndicator } from '../KeyboardShortcutIndicator/KeyboardShortcutIndicator' +import MenuListItem from './MenuListItem' type MenuItemProps = { children: ReactNode - type?: MenuItemType onClick?: MouseEventHandler - onChange?: SwitchProps['onChange'] onBlur?: (event: { relatedTarget: EventTarget | null }) => void className?: string - checked?: boolean icon?: IconType iconClassName?: string tabIndex?: number disabled?: boolean shortcut?: PlatformedKeyboardShortcut -} +} & ComponentPropsWithoutRef<'button'> const MenuItem = forwardRef( ( - { - children, - onClick, - onChange, - onBlur, - className = '', - type = MenuItemType.IconButton, - checked, - icon, - iconClassName, - tabIndex, - disabled, - shortcut, - }: MenuItemProps, + { children, className = '', icon, iconClassName, tabIndex, shortcut, ...props }: MenuItemProps, ref: Ref, ) => { - return type === MenuItemType.SwitchButton && typeof onChange === 'function' ? ( -
  • + return ( + -
  • - ) : ( -
  • - -
  • + ) }, ) diff --git a/packages/web/src/javascripts/Components/Menu/MenuListItem.tsx b/packages/web/src/javascripts/Components/Menu/MenuListItem.tsx new file mode 100644 index 000000000..834dbbd59 --- /dev/null +++ b/packages/web/src/javascripts/Components/Menu/MenuListItem.tsx @@ -0,0 +1,11 @@ +import { ReactNode } from 'react' + +const MenuListItem = ({ children }: { children: ReactNode }) => { + return ( +
  • + {children} +
  • + ) +} + +export default MenuListItem diff --git a/packages/web/src/javascripts/Components/Menu/MenuRadioButtonItem.tsx b/packages/web/src/javascripts/Components/Menu/MenuRadioButtonItem.tsx new file mode 100644 index 000000000..c1a4e2a21 --- /dev/null +++ b/packages/web/src/javascripts/Components/Menu/MenuRadioButtonItem.tsx @@ -0,0 +1,46 @@ +import { FOCUSABLE_BUT_NOT_TABBABLE } from '@/Constants/Constants' +import { classNames } from '@standardnotes/snjs' +import { PlatformedKeyboardShortcut } from '@standardnotes/ui-services' +import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, ReactNode } from 'react' +import { KeyboardShortcutIndicator } from '../KeyboardShortcutIndicator/KeyboardShortcutIndicator' +import RadioIndicator from '../Radio/RadioIndicator' +import MenuListItem from './MenuListItem' + +type Props = { + checked: boolean + children: ReactNode + shortcut?: PlatformedKeyboardShortcut +} & ComponentPropsWithoutRef<'button'> + +const MenuRadioButtonItem = forwardRef( + ( + { checked, disabled, tabIndex, children, shortcut, className, ...props }: Props, + ref: ForwardedRef, + ) => { + return ( + + + + ) + }, +) + +export default MenuRadioButtonItem diff --git a/packages/web/src/javascripts/Components/Menu/MenuSwitchButtonItem.tsx b/packages/web/src/javascripts/Components/Menu/MenuSwitchButtonItem.tsx new file mode 100644 index 000000000..aac578f40 --- /dev/null +++ b/packages/web/src/javascripts/Components/Menu/MenuSwitchButtonItem.tsx @@ -0,0 +1,53 @@ +import { FOCUSABLE_BUT_NOT_TABBABLE } from '@/Constants/Constants' +import { classNames } from '@standardnotes/snjs' +import { PlatformedKeyboardShortcut } from '@standardnotes/ui-services' +import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, ReactNode } from 'react' +import { KeyboardShortcutIndicator } from '../KeyboardShortcutIndicator/KeyboardShortcutIndicator' +import Switch from '../Switch/Switch' +import { SwitchProps } from '../Switch/SwitchProps' +import MenuListItem from './MenuListItem' + +type Props = { + checked: boolean + children: ReactNode + onChange: NonNullable + shortcut?: PlatformedKeyboardShortcut +} & Omit, 'onChange'> + +const MenuSwitchButtonItem = forwardRef( + ( + { checked, onChange, disabled, onBlur, tabIndex, children, shortcut, className, ...props }: Props, + ref: ForwardedRef, + ) => { + return ( + + + + ) + }, +) + +export default MenuSwitchButtonItem diff --git a/packages/web/src/javascripts/Components/NotesContextMenu/NotesContextMenu.tsx b/packages/web/src/javascripts/Components/NotesContextMenu/NotesContextMenu.tsx index d95a307e4..fa759a3b6 100644 --- a/packages/web/src/javascripts/Components/NotesContextMenu/NotesContextMenu.tsx +++ b/packages/web/src/javascripts/Components/NotesContextMenu/NotesContextMenu.tsx @@ -1,12 +1,13 @@ import { observer } from 'mobx-react-lite' import NotesOptions from '@/Components/NotesOptions/NotesOptions' -import { useCallback, useRef, useState } from 'react' +import { useCallback, useState } from 'react' import { WebApplication } from '@/Application/Application' import { NotesController } from '@/Controllers/NotesController/NotesController' import { NavigationController } from '@/Controllers/Navigation/NavigationController' import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalController' import Popover from '../Popover/Popover' import { LinkingController } from '@/Controllers/LinkingController' +import Menu from '../Menu/Menu' type Props = { application: WebApplication @@ -25,8 +26,6 @@ const NotesContextMenu = ({ }: Props) => { const { contextMenuOpen, contextMenuClickLocation, setContextMenuOpen } = notesController - const contextMenuRef = useRef(null) - const closeMenu = () => setContextMenuOpen(!contextMenuOpen) const [disableClickOutside, setDisableClickOutside] = useState(false) @@ -46,7 +45,7 @@ const NotesContextMenu = ({ open={contextMenuOpen} togglePopover={closeMenu} > -
    + -
    + ) } diff --git a/packages/web/src/javascripts/Components/NotesOptions/AddTagOption.tsx b/packages/web/src/javascripts/Components/NotesOptions/AddTagOption.tsx index c47038a0e..7840c55ed 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/AddTagOption.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/AddTagOption.tsx @@ -8,20 +8,15 @@ import Popover from '../Popover/Popover' import { IconType } from '@standardnotes/snjs' import { getTitleForLinkedTag } from '@/Utils/Items/Display/getTitleForLinkedTag' import { useApplication } from '../ApplicationView/ApplicationProvider' +import MenuItem from '../Menu/MenuItem' type Props = { navigationController: NavigationController notesController: NotesController - className: string iconClassName: string } -const AddTagOption: FunctionComponent = ({ - navigationController, - notesController, - className, - iconClassName, -}) => { +const AddTagOption: FunctionComponent = ({ navigationController, notesController, iconClassName }) => { const application = useApplication() const menuContainerRef = useRef(null) const buttonRef = useRef(null) @@ -34,7 +29,8 @@ const AddTagOption: FunctionComponent = ({ return (
    - + = ({ className="py-2" > {navigationController.tags.map((tag) => ( - + ))}
    diff --git a/packages/web/src/javascripts/Components/NotesOptions/ChangeEditorOption.tsx b/packages/web/src/javascripts/Components/NotesOptions/ChangeEditorOption.tsx index 7f8134385..b8c78203b 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/ChangeEditorOption.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/ChangeEditorOption.tsx @@ -6,20 +6,15 @@ import Icon from '@/Components/Icon/Icon' import ChangeEditorMenu from '@/Components/ChangeEditor/ChangeEditorMenu' import Popover from '../Popover/Popover' import { KeyboardShortcutIndicator } from '../KeyboardShortcutIndicator/KeyboardShortcutIndicator' +import MenuItem from '../Menu/MenuItem' type ChangeEditorOptionProps = { application: WebApplication note: SNNote - className: string iconClassName: string } -const ChangeEditorOption: FunctionComponent = ({ - application, - note, - className, - iconClassName, -}) => { +const ChangeEditorOption: FunctionComponent = ({ application, note, iconClassName }) => { const [isOpen, setIsOpen] = useState(false) const menuContainerRef = useRef(null) const buttonRef = useRef(null) @@ -35,7 +30,8 @@ const ChangeEditorOption: FunctionComponent = ({ return (
    - + void } export const DeletePermanentlyButton = ({ onClick }: DeletePermanentlyButtonProps) => ( - + ) diff --git a/packages/web/src/javascripts/Components/NotesOptions/Listed/ListedActionsOption.tsx b/packages/web/src/javascripts/Components/NotesOptions/Listed/ListedActionsOption.tsx index be630d4a5..0a641d7bc 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/Listed/ListedActionsOption.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/Listed/ListedActionsOption.tsx @@ -5,15 +5,15 @@ import Icon from '@/Components/Icon/Icon' import ListedActionsMenu from './ListedActionsMenu' import { KeyboardKey } from '@standardnotes/ui-services' import Popover from '../../Popover/Popover' +import MenuItem from '@/Components/Menu/MenuItem' type Props = { application: WebApplication note: SNNote - className: string iconClassName: string } -const ListedActionsOption: FunctionComponent = ({ application, note, className, iconClassName }) => { +const ListedActionsOption: FunctionComponent = ({ application, note, iconClassName }) => { const menuContainerRef = useRef(null) const buttonRef = useRef(null) @@ -31,7 +31,8 @@ const ListedActionsOption: FunctionComponent = ({ application, note, clas return (
    - + } - const firstItemClass = 'pt-4' - return ( <> {notes.length === 1 && ( <> - + + + Note history + {historyShortcut && } + )} - - - + + Password protect + {notes.length === 1 && ( <> - + )} {navigationController.tagsCount > 0 && ( )} - - + + {starred ? 'Unstar' : 'Star'} + {starShortcut && } + {unpinned && ( - + + Pin to top + {pinShortcut && } + )} {pinned && ( - + + Unpin + {pinShortcut && } + )} {notes[0].noteType !== NoteType.Super && ( <> - + {application.platform === Platform.Android && ( - + )} )} - + {unarchived && ( - + )} {archived && ( - + )} {notTrashed && (altKeyDown ? ( @@ -340,8 +300,7 @@ const NotesOptions = ({ }} /> ) : ( - + ))} {trashed && ( <> - + { await notesController.deleteNotesPermanently() closeMenuAndToggleNotesList() }} /> -
    - +
    )} @@ -398,21 +355,11 @@ const NotesOptions = ({ )} - + - + diff --git a/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx b/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx index 86e067952..89305bb67 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx @@ -8,6 +8,7 @@ import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalCo import Popover from '../Popover/Popover' import { LinkingController } from '@/Controllers/LinkingController' import RoundIconButton from '../Button/RoundIconButton' +import Menu from '../Menu/Menu' type Props = { application: WebApplication @@ -50,17 +51,19 @@ const NotesOptionsPanel = ({ togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} - className="select-none" + className="select-none md:pt-2" > - + + + ) diff --git a/packages/web/src/javascripts/Components/NotesOptions/SpellcheckOptions.tsx b/packages/web/src/javascripts/Components/NotesOptions/SpellcheckOptions.tsx index d3f915477..cbd918871 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/SpellcheckOptions.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/SpellcheckOptions.tsx @@ -1,16 +1,15 @@ import Icon from '@/Components/Icon/Icon' -import Switch from '@/Components/Switch/Switch' import { FunctionComponent } from 'react' import { SNComponent, SNNote } from '@standardnotes/snjs' import { NotesController } from '@/Controllers/NotesController/NotesController' import { iconClass } from './ClassNames' +import MenuSwitchButtonItem from '../Menu/MenuSwitchButtonItem' export const SpellcheckOptions: FunctionComponent<{ editorForNote: SNComponent | undefined notesController: NotesController note: SNNote - className: string -}> = ({ editorForNote, notesController, note, className }) => { +}> = ({ editorForNote, notesController, note }) => { const spellcheckControllable = Boolean(!editorForNote || editorForNote.package_info.spellcheckControl) const noteSpellcheck = !spellcheckControllable ? true @@ -20,19 +19,16 @@ export const SpellcheckOptions: FunctionComponent<{ return (
    - + + Spellcheck + {!spellcheckControllable && (

    Spellcheck cannot be controlled for this editor.

    )} diff --git a/packages/web/src/javascripts/Components/NotesOptions/SuperNoteOptions.tsx b/packages/web/src/javascripts/Components/NotesOptions/SuperNoteOptions.tsx index 3d10d1b10..e9b24421d 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/SuperNoteOptions.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/SuperNoteOptions.tsx @@ -13,7 +13,7 @@ import Menu from '../Menu/Menu' import MenuItem from '../Menu/MenuItem' import Popover from '../Popover/Popover' import HorizontalSeparator from '../Shared/HorizontalSeparator' -import { iconClass, menuItemClassNames, menuItemSwitchClassNames } from './ClassNames' +import { iconClass } from './ClassNames' type Props = { note: SNNote @@ -33,19 +33,14 @@ const SuperNoteOptions = ({ note, markdownShortcut, enableSuperMarkdownPreview }
    Super
    - + + + Show Markdown + {markdownShortcut && } + -
    - - + +
    { const { isListPaneCollapsed, isNavigationPaneCollapsed, toggleListPane, toggleNavigationPane } = @@ -24,24 +23,22 @@ const PanelSettingsSection = () => { return (
    - Show Tags Panel - - + Show Notes Panel - +
    ) } diff --git a/packages/web/src/javascripts/Components/Tags/TagContextMenu.tsx b/packages/web/src/javascripts/Components/Tags/TagContextMenu.tsx index ef7f884f1..5f36e24f0 100644 --- a/packages/web/src/javascripts/Components/Tags/TagContextMenu.tsx +++ b/packages/web/src/javascripts/Components/Tags/TagContextMenu.tsx @@ -3,7 +3,6 @@ import { useCallback, useRef, useMemo } from 'react' import Icon from '@/Components/Icon/Icon' import Menu from '@/Components/Menu/Menu' import MenuItem from '@/Components/Menu/MenuItem' -import { MenuItemType } from '@/Components/Menu/MenuItemType' import { usePremiumModal } from '@/Hooks/usePremiumModal' import { SNTag, VectorIconNameOrEmoji, DefaultTagIconName } from '@standardnotes/snjs' import { useCloseOnClickOutside } from '@/Hooks/useCloseOnClickOutside' @@ -82,24 +81,24 @@ const TagContextMenu = ({ navigationController, isEntitledToFolders, selectedTag iconGridClassName="max-h-30" /> - +
    {selectedTag.starred ? 'Unfavorite' : 'Favorite'}
    - +
    Add subtag
    {!isEntitledToFolders && }
    - + Rename - + Delete