fix: Fixed workspace menu item rename issue

This commit is contained in:
Aman Harwara
2022-12-07 17:46:49 +05:30
parent 46245b5569
commit 45cdab6f6c
2 changed files with 48 additions and 45 deletions

View File

@@ -9,4 +9,5 @@ export enum KeyboardKey {
Escape = 'Escape', Escape = 'Escape',
Home = 'Home', Home = 'Home',
End = 'End', End = 'End',
Space = ' ',
} }

View File

@@ -51,33 +51,22 @@ const WorkspaceMenuItem: FunctionComponent<Props> = ({
const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(() => { const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(() => {
renameDescriptor(inputValue) renameDescriptor(inputValue)
setIsRenaming(false) setIsRenaming(false)
setInputValue('')
}, [inputValue, renameDescriptor]) }, [inputValue, renameDescriptor])
return ( return (
<div className="relative">
<MenuRadioButtonItem <MenuRadioButtonItem
className="flex w-full cursor-pointer items-center border-0 bg-transparent px-3 py-2 text-left text-sm text-text hover:bg-contrast hover:text-foreground focus:bg-info-backdrop focus:shadow-none" className="flex w-full cursor-pointer items-center border-0 bg-transparent px-3 py-2 text-left text-sm text-text hover:bg-contrast hover:text-foreground focus:bg-info-backdrop focus:shadow-none"
onClick={onClick} onClick={onClick}
checked={descriptor.primary} checked={descriptor.primary}
> >
<div className="ml-2 flex w-full items-center justify-between"> <div className="ml-2 flex w-full items-center justify-between">
{isRenaming ? ( {!isRenaming && <div>{descriptor.label}</div>}
<input
ref={inputRef}
type="text"
value={inputValue}
onChange={handleChange}
onKeyDown={handleInputKeyDown}
onBlur={handleInputBlur}
/>
) : (
<div>{descriptor.label}</div>
)}
{descriptor.primary && !hideOptions && ( {descriptor.primary && !hideOptions && (
<div className="flex items-center"> <div className="flex items-center">
<a <a
role="button" role="button"
className="mr-3 h-5 w-5 cursor-pointer border-0 bg-transparent p-0 hover:bg-contrast" className="mr-3 flex h-5 w-5 cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:bg-contrast"
onClick={(e) => { onClick={(e) => {
e.stopPropagation() e.stopPropagation()
setIsRenaming((isRenaming) => !isRenaming) setIsRenaming((isRenaming) => !isRenaming)
@@ -87,7 +76,7 @@ const WorkspaceMenuItem: FunctionComponent<Props> = ({
</a> </a>
<a <a
role="button" role="button"
className="h-5 w-5 cursor-pointer border-0 bg-transparent p-0 hover:bg-contrast" className="flex h-5 w-5 cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:bg-contrast"
onClick={(e) => { onClick={(e) => {
e.stopPropagation() e.stopPropagation()
onDelete() onDelete()
@@ -99,6 +88,19 @@ const WorkspaceMenuItem: FunctionComponent<Props> = ({
)} )}
</div> </div>
</MenuRadioButtonItem> </MenuRadioButtonItem>
{isRenaming && (
<input
ref={inputRef}
type="text"
value={inputValue}
onChange={handleChange}
onKeyDown={handleInputKeyDown}
onBlur={handleInputBlur}
onClick={(e) => e.stopPropagation()}
className="absolute top-1/2 left-11 -translate-y-1/2 bg-default"
/>
)}
</div>
) )
} }