Add a dismiss button to the command bar (#2647)
* Remove tab hotkey from selection input
* Add dismiss button to the command bar
* update Cargo.lock
* tweak close button styles
* Switch from padding to margin for positioning without messing up focus outline
* Revert "update Cargo.lock"
This reverts commit 862a6897ba
.
* Restore Cargo.lock I hate VSCode sometimes
* Update Cargo.lock in src-tauri, fix clippy
---------
Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev>
This commit is contained in:
@ -6,6 +6,8 @@ import CommandComboBox from '../CommandComboBox'
|
|||||||
import CommandBarReview from './CommandBarReview'
|
import CommandBarReview from './CommandBarReview'
|
||||||
import { useLocation } from 'react-router-dom'
|
import { useLocation } from 'react-router-dom'
|
||||||
import useHotkeyWrapper from 'lib/hotkeyWrapper'
|
import useHotkeyWrapper from 'lib/hotkeyWrapper'
|
||||||
|
import { CustomIcon } from 'components/CustomIcon'
|
||||||
|
import Tooltip from 'components/Tooltip'
|
||||||
|
|
||||||
export const CommandBar = () => {
|
export const CommandBar = () => {
|
||||||
const { pathname } = useLocation()
|
const { pathname } = useLocation()
|
||||||
@ -103,7 +105,7 @@ export const CommandBar = () => {
|
|||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<WrapperComponent.Panel
|
<WrapperComponent.Panel
|
||||||
className="relative z-50 pointer-events-auto w-full max-w-xl py-2 mx-auto border rounded shadow-lg bg-chalkboard-10 dark:bg-chalkboard-100 dark:border-chalkboard-70"
|
className="relative z-50 pointer-events-auto w-full max-w-xl py-2 mx-auto border rounded rounded-tl-none shadow-lg bg-chalkboard-10 dark:bg-chalkboard-100 dark:border-chalkboard-70"
|
||||||
as="div"
|
as="div"
|
||||||
data-testid="command-bar"
|
data-testid="command-bar"
|
||||||
>
|
>
|
||||||
@ -116,6 +118,19 @@ export const CommandBar = () => {
|
|||||||
<CommandBarReview stepBack={stepBack} />
|
<CommandBarReview stepBack={stepBack} />
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
|
<button
|
||||||
|
onClick={() => commandBarSend({ type: 'Close' })}
|
||||||
|
className="group block !absolute left-auto right-full top-[-3px] m-2.5 p-0 border-none bg-transparent hover:bg-transparent"
|
||||||
|
>
|
||||||
|
<CustomIcon
|
||||||
|
name="close"
|
||||||
|
className="w-5 h-5 rounded-sm bg-destroy-10 text-destroy-80 dark:bg-destroy-80 dark:text-destroy-10 group-hover:brightness-110"
|
||||||
|
/>
|
||||||
|
<Tooltip position="bottom" delay={500}>
|
||||||
|
Cancel{' '}
|
||||||
|
<kbd className="hotkey ml-4 dark:!bg-chalkboard-80">esc</kbd>
|
||||||
|
</Tooltip>
|
||||||
|
</button>
|
||||||
</WrapperComponent.Panel>
|
</WrapperComponent.Panel>
|
||||||
</Transition.Child>
|
</Transition.Child>
|
||||||
</WrapperComponent>
|
</WrapperComponent>
|
||||||
|
@ -7,10 +7,8 @@ import {
|
|||||||
getSelectionType,
|
getSelectionType,
|
||||||
getSelectionTypeDisplayText,
|
getSelectionTypeDisplayText,
|
||||||
} from 'lib/selections'
|
} from 'lib/selections'
|
||||||
import { kclManager } from 'lib/singletons'
|
|
||||||
import { modelingMachine } from 'machines/modelingMachine'
|
import { modelingMachine } from 'machines/modelingMachine'
|
||||||
import { useCallback, useEffect, useRef, useState } from 'react'
|
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||||
import { useHotkeys } from 'react-hotkeys-hook'
|
|
||||||
import { StateFrom } from 'xstate'
|
import { StateFrom } from 'xstate'
|
||||||
|
|
||||||
const selectionSelector = (snapshot: StateFrom<typeof modelingMachine>) =>
|
const selectionSelector = (snapshot: StateFrom<typeof modelingMachine>) =>
|
||||||
@ -41,12 +39,6 @@ function CommandBarSelectionInput({
|
|||||||
canSubmitSelectionArg(selectionsByType, arg)
|
canSubmitSelectionArg(selectionsByType, arg)
|
||||||
)
|
)
|
||||||
|
|
||||||
useHotkeys('tab', () => onSubmit(selection), {
|
|
||||||
enableOnFormTags: true,
|
|
||||||
enableOnContentEditable: true,
|
|
||||||
keyup: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
inputRef.current?.focus()
|
inputRef.current?.focus()
|
||||||
}, [selection, inputRef])
|
}, [selection, inputRef])
|
||||||
|
@ -249,3 +249,10 @@ code {
|
|||||||
.cm-ghostText * {
|
.cm-ghostText * {
|
||||||
color: rgb(120, 120, 120, 0.8) !important;
|
color: rgb(120, 120, 120, 0.8) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@layer components {
|
||||||
|
kbd.hotkey {
|
||||||
|
@apply font-mono text-xs inline-block px-1 py-0.5 rounded-sm;
|
||||||
|
@apply bg-chalkboard-20 dark:bg-chalkboard-90;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user