feat: "create new note" floating button on mobile (#1857)
This commit is contained in:
@@ -1,32 +1,37 @@
|
|||||||
import { FunctionComponent, MouseEventHandler } from 'react'
|
import { ForwardedRef, forwardRef, MouseEventHandler } from 'react'
|
||||||
import Icon from '@/Components/Icon/Icon'
|
import Icon from '@/Components/Icon/Icon'
|
||||||
import { IconType } from '@standardnotes/snjs'
|
import { IconType } from '@standardnotes/snjs'
|
||||||
|
import { classNames } from '@/Utils/ConcatenateClassNames'
|
||||||
type ButtonType = 'normal' | 'primary'
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
onClick: () => void
|
onClick: () => void
|
||||||
type: ButtonType
|
|
||||||
className?: string
|
className?: string
|
||||||
icon: IconType
|
icon: IconType
|
||||||
|
iconClassName?: string
|
||||||
|
label: string
|
||||||
|
id?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const RoundIconButton: FunctionComponent<Props> = ({ onClick, type, className, icon: iconType }) => {
|
const RoundIconButton = forwardRef(
|
||||||
const click: MouseEventHandler = (e) => {
|
({ onClick, className, icon: iconType, iconClassName, id }: Props, ref: ForwardedRef<HTMLButtonElement>) => {
|
||||||
e.preventDefault()
|
const click: MouseEventHandler = (e) => {
|
||||||
onClick()
|
e.preventDefault()
|
||||||
}
|
onClick()
|
||||||
const classes = type === 'primary' ? 'info ' : ''
|
}
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
className={`m-0 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-transparent bg-clip-padding text-neutral hover:bg-contrast hover:text-text focus:bg-contrast focus:text-text focus:outline-none focus:ring-info ${classes} ${
|
className={classNames(
|
||||||
className ?? ''
|
'bg-text-padding min-w-8.5 m-0 flex h-8.5 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-clip-padding text-neutral hover:bg-contrast hover:text-text focus:bg-contrast focus:text-text focus:outline-none focus:ring-info md:h-8 md:min-w-8',
|
||||||
}`}
|
className,
|
||||||
onClick={click}
|
)}
|
||||||
>
|
onClick={click}
|
||||||
<Icon type={iconType} />
|
ref={ref}
|
||||||
</button>
|
id={id}
|
||||||
)
|
>
|
||||||
}
|
<Icon type={iconType} className={iconClassName} />
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
export default RoundIconButton
|
export default RoundIconButton
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { WebApplication } from '@/Application/Application'
|
|||||||
import { ViewControllerManager } from '@/Controllers/ViewControllerManager'
|
import { ViewControllerManager } from '@/Controllers/ViewControllerManager'
|
||||||
import { observer } from 'mobx-react-lite'
|
import { observer } from 'mobx-react-lite'
|
||||||
import { FunctionComponent, useCallback, useRef, useState } from 'react'
|
import { FunctionComponent, useCallback, useRef, useState } from 'react'
|
||||||
import Icon from '@/Components/Icon/Icon'
|
|
||||||
import ChangeEditorMenu from './ChangeEditorMenu'
|
import ChangeEditorMenu from './ChangeEditorMenu'
|
||||||
import Popover from '../Popover/Popover'
|
import Popover from '../Popover/Popover'
|
||||||
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
application: WebApplication
|
application: WebApplication
|
||||||
@@ -38,15 +38,13 @@ const ChangeEditorButton: FunctionComponent<Props> = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div ref={containerRef}>
|
<div ref={containerRef}>
|
||||||
<button
|
<RoundIconButton
|
||||||
className="bg-text-padding flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-border text-neutral hover:bg-contrast focus:bg-contrast"
|
label="Change note type"
|
||||||
title="Change note type"
|
|
||||||
aria-label="Change note type"
|
|
||||||
onClick={toggleMenu}
|
onClick={toggleMenu}
|
||||||
ref={buttonRef}
|
ref={buttonRef}
|
||||||
>
|
icon={selectedEditorIcon}
|
||||||
<Icon type={selectedEditorIcon} className={`text-accessory-tint-${selectedEditorIconTint}`} />
|
iconClassName={`text-accessory-tint-${selectedEditorIconTint}`}
|
||||||
</button>
|
/>
|
||||||
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} className="pt-2 md:pt-0">
|
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} className="pt-2 md:pt-0">
|
||||||
<ChangeEditorMenu
|
<ChangeEditorMenu
|
||||||
application={application}
|
application={application}
|
||||||
|
|||||||
@@ -5,11 +5,13 @@ import { classNames } from '@/Utils/ConcatenateClassNames'
|
|||||||
import Popover from '@/Components/Popover/Popover'
|
import Popover from '@/Components/Popover/Popover'
|
||||||
import DisplayOptionsMenu from './DisplayOptionsMenu'
|
import DisplayOptionsMenu from './DisplayOptionsMenu'
|
||||||
import { NavigationMenuButton } from '@/Components/NavigationMenu/NavigationMenu'
|
import { NavigationMenuButton } from '@/Components/NavigationMenu/NavigationMenu'
|
||||||
|
import RoundIconButton from '@/Components/Button/RoundIconButton'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
application: {
|
application: {
|
||||||
getPreference: WebApplication['getPreference']
|
getPreference: WebApplication['getPreference']
|
||||||
setPreference: WebApplication['setPreference']
|
setPreference: WebApplication['setPreference']
|
||||||
|
isNativeMobileWeb: WebApplication['isNativeMobileWeb']
|
||||||
}
|
}
|
||||||
panelTitle: string
|
panelTitle: string
|
||||||
addButtonLabel: string
|
addButtonLabel: string
|
||||||
@@ -44,16 +46,13 @@ const ContentListHeader = ({
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<div className="relative" ref={displayOptionsContainerRef}>
|
<div className="relative" ref={displayOptionsContainerRef}>
|
||||||
<button
|
<RoundIconButton
|
||||||
className={classNames(
|
className={classNames(showDisplayOptionsMenu && 'bg-contrast')}
|
||||||
'bg-text-padding flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast',
|
|
||||||
showDisplayOptionsMenu && 'bg-contrast',
|
|
||||||
)}
|
|
||||||
onClick={toggleDisplayOptionsMenu}
|
onClick={toggleDisplayOptionsMenu}
|
||||||
ref={displayOptionsButtonRef}
|
ref={displayOptionsButtonRef}
|
||||||
>
|
icon="sort-descending"
|
||||||
<Icon type="sort-descending" />
|
label="Display options menu"
|
||||||
</button>
|
/>
|
||||||
<Popover
|
<Popover
|
||||||
open={showDisplayOptionsMenu}
|
open={showDisplayOptionsMenu}
|
||||||
anchorElement={displayOptionsButtonRef.current}
|
anchorElement={displayOptionsButtonRef.current}
|
||||||
@@ -70,12 +69,12 @@ const ContentListHeader = ({
|
|||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
className="ml-3 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-transparent bg-info text-info-contrast hover:brightness-125"
|
className="absolute bottom-6 right-6 ml-3 flex h-13 w-13 cursor-pointer items-center justify-center rounded-full border border-solid border-transparent bg-info text-info-contrast hover:brightness-125 md:static md:h-8 md:w-8"
|
||||||
title={addButtonLabel}
|
title={addButtonLabel}
|
||||||
aria-label={addButtonLabel}
|
aria-label={addButtonLabel}
|
||||||
onClick={addNewItem}
|
onClick={addNewItem}
|
||||||
>
|
>
|
||||||
<Icon type="add" />
|
<Icon type="add" size="custom" className="h-6 w-6 md:h-5 md:w-5" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
import { DisclosureButton } from '@reach/disclosure'
|
|
||||||
import styled from 'styled-components'
|
|
||||||
|
|
||||||
const StyledDisplayOptionsButton = styled(DisclosureButton).attrs(() => ({
|
|
||||||
className:
|
|
||||||
'flex justify-center items-center min-w-8 h-8 bg-text-padding hover:bg-contrast focus:bg-contrast text-neutral border border-solid border-border rounded-full cursor-pointer',
|
|
||||||
}))<{
|
|
||||||
$pressed: boolean
|
|
||||||
}>`
|
|
||||||
background-color: ${(props) => (props.$pressed ? 'var(--sn-stylekit-contrast-background-color)' : 'transparent')};
|
|
||||||
`
|
|
||||||
|
|
||||||
export default StyledDisplayOptionsButton
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import Icon from '@/Components/Icon/Icon'
|
|
||||||
import { useCallback, useRef, useState } from 'react'
|
import { useCallback, useRef, useState } from 'react'
|
||||||
import { observer } from 'mobx-react-lite'
|
import { observer } from 'mobx-react-lite'
|
||||||
import FileMenuOptions from './FileMenuOptions'
|
import FileMenuOptions from './FileMenuOptions'
|
||||||
import { FilesController } from '@/Controllers/FilesController'
|
import { FilesController } from '@/Controllers/FilesController'
|
||||||
import { SelectedItemsController } from '@/Controllers/SelectedItemsController'
|
import { SelectedItemsController } from '@/Controllers/SelectedItemsController'
|
||||||
import Popover from '../Popover/Popover'
|
import Popover from '../Popover/Popover'
|
||||||
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
filesController: FilesController
|
filesController: FilesController
|
||||||
@@ -19,15 +19,7 @@ const FilesOptionsPanel = ({ filesController, selectionController }: Props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<button
|
<RoundIconButton label="File options menu" onClick={toggleMenu} ref={buttonRef} icon="more" />
|
||||||
className="bg-text-padding flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast"
|
|
||||||
title="File options menu"
|
|
||||||
aria-label="File options menu"
|
|
||||||
onClick={toggleMenu}
|
|
||||||
ref={buttonRef}
|
|
||||||
>
|
|
||||||
<Icon type="more" />
|
|
||||||
</button>
|
|
||||||
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} className="py-2">
|
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} className="py-2">
|
||||||
<FileMenuOptions
|
<FileMenuOptions
|
||||||
filesController={filesController}
|
filesController={filesController}
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import { FileViewProps } from './FileViewProps'
|
|||||||
import MobileItemsListButton from '../NoteGroupView/MobileItemsListButton'
|
import MobileItemsListButton from '../NoteGroupView/MobileItemsListButton'
|
||||||
import LinkedItemsButton from '../LinkedItems/LinkedItemsButton'
|
import LinkedItemsButton from '../LinkedItems/LinkedItemsButton'
|
||||||
import LinkedItemBubblesContainer from '../LinkedItems/LinkedItemBubblesContainer'
|
import LinkedItemBubblesContainer from '../LinkedItems/LinkedItemBubblesContainer'
|
||||||
import Icon from '../Icon/Icon'
|
|
||||||
import Popover from '../Popover/Popover'
|
import Popover from '../Popover/Popover'
|
||||||
import FilePreviewInfoPanel from '../FilePreview/FilePreviewInfoPanel'
|
import FilePreviewInfoPanel from '../FilePreview/FilePreviewInfoPanel'
|
||||||
import { useFileDragNDrop } from '../FileDragNDropProvider/FileDragNDropProvider'
|
import { useFileDragNDrop } from '../FileDragNDropProvider/FileDragNDropProvider'
|
||||||
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
|
|
||||||
const SyncTimeoutNoDebounceMs = 100
|
const SyncTimeoutNoDebounceMs = 100
|
||||||
const SyncTimeoutDebounceMs = 350
|
const SyncTimeoutDebounceMs = 350
|
||||||
@@ -95,15 +95,12 @@ const FileViewWithoutProtection = ({ application, viewControllerManager, file }:
|
|||||||
filesController={viewControllerManager.filesController}
|
filesController={viewControllerManager.filesController}
|
||||||
linkingController={viewControllerManager.linkingController}
|
linkingController={viewControllerManager.linkingController}
|
||||||
/>
|
/>
|
||||||
<button
|
<RoundIconButton
|
||||||
className="bg-text-padding flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast"
|
label="File information panel"
|
||||||
title="File information panel"
|
|
||||||
aria-label="File information panel"
|
|
||||||
onClick={toggleFileInfoPanel}
|
onClick={toggleFileInfoPanel}
|
||||||
ref={fileInfoButtonRef}
|
ref={fileInfoButtonRef}
|
||||||
>
|
icon="info"
|
||||||
<Icon type="info" />
|
/>
|
||||||
</button>
|
|
||||||
<Popover
|
<Popover
|
||||||
open={isFileInfoPanelOpen}
|
open={isFileInfoPanelOpen}
|
||||||
togglePopover={toggleFileInfoPanel}
|
togglePopover={toggleFileInfoPanel}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { FilesController } from '@/Controllers/FilesController'
|
|||||||
import { LinkingController } from '@/Controllers/LinkingController'
|
import { LinkingController } from '@/Controllers/LinkingController'
|
||||||
import { observer } from 'mobx-react-lite'
|
import { observer } from 'mobx-react-lite'
|
||||||
import { useRef, useCallback } from 'react'
|
import { useRef, useCallback } from 'react'
|
||||||
import Icon from '../Icon/Icon'
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
import Popover from '../Popover/Popover'
|
import Popover from '../Popover/Popover'
|
||||||
import StyledTooltip from '../StyledTooltip/StyledTooltip'
|
import StyledTooltip from '../StyledTooltip/StyledTooltip'
|
||||||
import LinkedItemsPanel from './LinkedItemsPanel'
|
import LinkedItemsPanel from './LinkedItemsPanel'
|
||||||
@@ -28,14 +28,7 @@ const LinkedItemsButton = ({ linkingController, filesController, onClickPreproce
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<StyledTooltip label="Linked items panel">
|
<StyledTooltip label="Linked items panel">
|
||||||
<button
|
<RoundIconButton label="Linked items panel" onClick={toggleMenu} ref={buttonRef} icon="link" />
|
||||||
className="bg-text-padding flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast"
|
|
||||||
aria-label="Linked items panel"
|
|
||||||
onClick={toggleMenu}
|
|
||||||
ref={buttonRef}
|
|
||||||
>
|
|
||||||
<Icon type="link" />
|
|
||||||
</button>
|
|
||||||
</StyledTooltip>
|
</StyledTooltip>
|
||||||
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isLinkingPanelOpen} className="pb-2">
|
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isLinkingPanelOpen} className="pb-2">
|
||||||
<LinkedItemsPanel
|
<LinkedItemsPanel
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import PanelResizer, { PanelSide, ResizeFinishCallback, PanelResizeType } from '
|
|||||||
import ResponsivePaneContent from '@/Components/ResponsivePane/ResponsivePaneContent'
|
import ResponsivePaneContent from '@/Components/ResponsivePane/ResponsivePaneContent'
|
||||||
import { AppPaneId } from '@/Components/ResponsivePane/AppPaneMetadata'
|
import { AppPaneId } from '@/Components/ResponsivePane/AppPaneMetadata'
|
||||||
import { classNames } from '@/Utils/ConcatenateClassNames'
|
import { classNames } from '@/Utils/ConcatenateClassNames'
|
||||||
import Icon from '../Icon/Icon'
|
|
||||||
import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider'
|
import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider'
|
||||||
import { isIOS } from '@/Utils'
|
import { isIOS } from '@/Utils'
|
||||||
import UpgradeNow from '../Footer/UpgradeNow'
|
import UpgradeNow from '../Footer/UpgradeNow'
|
||||||
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
application: WebApplication
|
application: WebApplication
|
||||||
@@ -89,58 +89,48 @@ const Navigation: FunctionComponent<Props> = ({ application }) => {
|
|||||||
<TagsSection viewControllerManager={viewControllerManager} />
|
<TagsSection viewControllerManager={viewControllerManager} />
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center border-t border-border px-3.5 pt-2.5 md:hidden">
|
<div className="flex items-center border-t border-border px-3.5 pt-2.5 md:hidden">
|
||||||
<button
|
<RoundIconButton
|
||||||
className="mr-auto flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-default text-neutral hover:bg-contrast focus:bg-contrast"
|
className="mr-auto bg-default"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
toggleAppPane(AppPaneId.Items)
|
toggleAppPane(AppPaneId.Items)
|
||||||
}}
|
}}
|
||||||
title="Go to items list"
|
label="Go to items list"
|
||||||
aria-label="Go to items list"
|
icon="chevron-left"
|
||||||
>
|
/>
|
||||||
<Icon type="chevron-left" />
|
|
||||||
</button>
|
|
||||||
<UpgradeNow application={application} featuresController={viewControllerManager.featuresController} />
|
<UpgradeNow application={application} featuresController={viewControllerManager.featuresController} />
|
||||||
<button
|
<RoundIconButton
|
||||||
className="ml-2.5 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-default text-neutral hover:bg-contrast focus:bg-contrast"
|
className="ml-2.5 bg-default"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
viewControllerManager.accountMenuController.toggleShow()
|
viewControllerManager.accountMenuController.toggleShow()
|
||||||
}}
|
}}
|
||||||
title="Go to account menu"
|
label="Go to account menu"
|
||||||
aria-label="Go to account menu"
|
icon="account-circle"
|
||||||
>
|
/>
|
||||||
<Icon type="account-circle" />
|
|
||||||
</button>
|
|
||||||
{hasPasscode && (
|
{hasPasscode && (
|
||||||
<button
|
<RoundIconButton
|
||||||
id="lock-item"
|
id="lock-item"
|
||||||
onClick={() => application.lock()}
|
onClick={() => application.lock()}
|
||||||
title="Locks application and wipes unencrypted data from memory."
|
label="Locks application and wipes unencrypted data from memory."
|
||||||
aria-label="Locks application and wipes unencrypted data from memory."
|
className="ml-2.5 bg-default"
|
||||||
className="ml-2.5 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-default text-neutral hover:bg-contrast focus:bg-contrast"
|
icon="lock-filled"
|
||||||
>
|
/>
|
||||||
<Icon type="lock-filled" size="custom" className="h-4.5 w-4.5" />
|
|
||||||
</button>
|
|
||||||
)}
|
)}
|
||||||
<button
|
<RoundIconButton
|
||||||
className="ml-2.5 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-default text-neutral hover:bg-contrast focus:bg-contrast"
|
className="ml-2.5 bg-default"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
viewControllerManager.preferencesController.openPreferences()
|
viewControllerManager.preferencesController.openPreferences()
|
||||||
}}
|
}}
|
||||||
title="Go to preferences"
|
label="Go to preferences"
|
||||||
aria-label="Go to preferences"
|
icon="tune"
|
||||||
>
|
/>
|
||||||
<Icon type="tune" />
|
<RoundIconButton
|
||||||
</button>
|
className="ml-2.5 bg-default"
|
||||||
<button
|
|
||||||
className="ml-2.5 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border bg-default text-neutral hover:bg-contrast focus:bg-contrast"
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
viewControllerManager.quickSettingsMenuController.toggle()
|
viewControllerManager.quickSettingsMenuController.toggle()
|
||||||
}}
|
}}
|
||||||
title="Go to quick settings menu"
|
label="Go to quick settings menu"
|
||||||
aria-label="Go to quick settings menu"
|
icon="themes"
|
||||||
>
|
/>
|
||||||
<Icon type="themes" />
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</ResponsivePaneContent>
|
</ResponsivePaneContent>
|
||||||
{panelElement && (
|
{panelElement && (
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import Icon from '../Icon/Icon'
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
import { AppPaneId } from '../ResponsivePane/AppPaneMetadata'
|
import { AppPaneId } from '../ResponsivePane/AppPaneMetadata'
|
||||||
import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider'
|
import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider'
|
||||||
|
|
||||||
@@ -6,8 +6,8 @@ export const NavigationMenuButton = () => {
|
|||||||
const { selectedPane, toggleAppPane } = useResponsiveAppPane()
|
const { selectedPane, toggleAppPane } = useResponsiveAppPane()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<RoundIconButton
|
||||||
className="bg-text-padding mr-3 inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border align-middle text-neutral hover:bg-contrast focus:bg-contrast md:hidden pointer-coarse:md-only:inline-flex pointer-coarse:lg-only:inline-flex"
|
className="mr-3 md:hidden"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (selectedPane === AppPaneId.Items || selectedPane === AppPaneId.Editor) {
|
if (selectedPane === AppPaneId.Items || selectedPane === AppPaneId.Editor) {
|
||||||
toggleAppPane(AppPaneId.Navigation)
|
toggleAppPane(AppPaneId.Navigation)
|
||||||
@@ -15,10 +15,8 @@ export const NavigationMenuButton = () => {
|
|||||||
toggleAppPane(AppPaneId.Items)
|
toggleAppPane(AppPaneId.Items)
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
title="Navigation menu"
|
label="Open navigation menu"
|
||||||
aria-label="Navigation menu"
|
icon="menu-variant"
|
||||||
>
|
/>
|
||||||
<Icon type="menu-variant" />
|
|
||||||
</button>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { AppPaneId } from '../ResponsivePane/AppPaneMetadata'
|
import { AppPaneId } from '../ResponsivePane/AppPaneMetadata'
|
||||||
import Icon from '../Icon/Icon'
|
|
||||||
import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider'
|
import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider'
|
||||||
import { useMediaQuery, MediaQueryBreakpoints } from '@/Hooks/useMediaQuery'
|
import { useMediaQuery, MediaQueryBreakpoints } from '@/Hooks/useMediaQuery'
|
||||||
import { IconType } from '@standardnotes/snjs'
|
import { IconType } from '@standardnotes/snjs'
|
||||||
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
|
|
||||||
const MobileItemsListButton = () => {
|
const MobileItemsListButton = () => {
|
||||||
const { toggleAppPane, isNotesListVisibleOnTablets, toggleNotesListOnTablets } = useResponsiveAppPane()
|
const { toggleAppPane, isNotesListVisibleOnTablets, toggleNotesListOnTablets } = useResponsiveAppPane()
|
||||||
@@ -18,8 +18,8 @@ const MobileItemsListButton = () => {
|
|||||||
: 'Go to items list'
|
: 'Go to items list'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<RoundIconButton
|
||||||
className="bg-text-padding mr-3 flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast md:hidden pointer-coarse:md-only:flex pointer-coarse:lg-only:flex"
|
className="mr-3"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isTabletScreenSize) {
|
if (isTabletScreenSize) {
|
||||||
toggleNotesListOnTablets()
|
toggleNotesListOnTablets()
|
||||||
@@ -27,11 +27,9 @@ const MobileItemsListButton = () => {
|
|||||||
toggleAppPane(AppPaneId.Items)
|
toggleAppPane(AppPaneId.Items)
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
title={label}
|
label={label}
|
||||||
aria-label={label}
|
icon={iconType}
|
||||||
>
|
/>
|
||||||
<Icon type={iconType} />
|
|
||||||
</button>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import Icon from '@/Components/Icon/Icon'
|
|
||||||
import { useCallback, useRef, useState } from 'react'
|
import { useCallback, useRef, useState } from 'react'
|
||||||
import { observer } from 'mobx-react-lite'
|
import { observer } from 'mobx-react-lite'
|
||||||
import NotesOptions from './NotesOptions'
|
import NotesOptions from './NotesOptions'
|
||||||
@@ -8,6 +7,7 @@ import { NavigationController } from '@/Controllers/Navigation/NavigationControl
|
|||||||
import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalController'
|
import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalController'
|
||||||
import Popover from '../Popover/Popover'
|
import Popover from '../Popover/Popover'
|
||||||
import { LinkingController } from '@/Controllers/LinkingController'
|
import { LinkingController } from '@/Controllers/LinkingController'
|
||||||
|
import RoundIconButton from '../Button/RoundIconButton'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
application: WebApplication
|
application: WebApplication
|
||||||
@@ -39,15 +39,7 @@ const NotesOptionsPanel = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<button
|
<RoundIconButton label="Note options menu" onClick={toggleMenu} ref={buttonRef} icon="more" />
|
||||||
className="bg-text-padding flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast"
|
|
||||||
title="Note options menu"
|
|
||||||
aria-label="Note options menu"
|
|
||||||
onClick={toggleMenu}
|
|
||||||
ref={buttonRef}
|
|
||||||
>
|
|
||||||
<Icon type="more" />
|
|
||||||
</button>
|
|
||||||
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} className="select-none py-2">
|
<Popover togglePopover={toggleMenu} anchorElement={buttonRef.current} open={isOpen} className="select-none py-2">
|
||||||
<NotesOptions
|
<NotesOptions
|
||||||
application={application}
|
application={application}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ const PinNoteButton: FunctionComponent<Props> = ({ className = '', notesControll
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
className={`sn-icon-button flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast ${
|
className={`sn-icon-button flex h-9 w-9 cursor-pointer items-center justify-center rounded-full border border-solid border-border text-neutral hover:bg-contrast focus:bg-contrast md:h-8 md:w-8 ${
|
||||||
pinned ? 'toggled' : ''
|
pinned ? 'toggled' : ''
|
||||||
} ${className}`}
|
} ${className}`}
|
||||||
onClick={togglePinned}
|
onClick={togglePinned}
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ const PreferencesView: FunctionComponent<PreferencesProps> = ({
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
closePreferences()
|
closePreferences()
|
||||||
}}
|
}}
|
||||||
type="normal"
|
|
||||||
icon="close"
|
icon="close"
|
||||||
|
label="Close preferences"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<PreferencesCanvas
|
<PreferencesCanvas
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ module.exports = {
|
|||||||
extend: {
|
extend: {
|
||||||
spacing: {
|
spacing: {
|
||||||
4.5: '1.125rem',
|
4.5: '1.125rem',
|
||||||
|
8.5: '2.125rem',
|
||||||
|
13: '3.25rem',
|
||||||
18: '4.5rem',
|
18: '4.5rem',
|
||||||
26: '6.5rem',
|
26: '6.5rem',
|
||||||
30: '7.5rem',
|
30: '7.5rem',
|
||||||
@@ -27,6 +29,8 @@ module.exports = {
|
|||||||
4: '1rem',
|
4: '1rem',
|
||||||
5: '1.25rem',
|
5: '1.25rem',
|
||||||
8: '2rem',
|
8: '2rem',
|
||||||
|
8.5: '2.125rem',
|
||||||
|
9: '2.25rem',
|
||||||
15: '3.75rem',
|
15: '3.75rem',
|
||||||
20: '5rem',
|
20: '5rem',
|
||||||
24: '6rem',
|
24: '6rem',
|
||||||
|
|||||||
Reference in New Issue
Block a user