@@ -174,6 +174,8 @@ const SessionFolderItemBase = <TSessionNode,>({
|
|||||||
<form
|
<form
|
||||||
className="flex min-w-0 flex-1 items-center gap-1"
|
className="flex min-w-0 flex-1 items-center gap-1"
|
||||||
data-keyboard-avoid="true"
|
data-keyboard-avoid="true"
|
||||||
|
onPointerDown={(event) => event.stopPropagation()}
|
||||||
|
onMouseDown={(event) => event.stopPropagation()}
|
||||||
onSubmit={(event) => {
|
onSubmit={(event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleSaveRename();
|
handleSaveRename();
|
||||||
@@ -187,6 +189,8 @@ const SessionFolderItemBase = <TSessionNode,>({
|
|||||||
autoFocus
|
autoFocus
|
||||||
placeholder="Folder name"
|
placeholder="Folder name"
|
||||||
onClick={(event) => event.stopPropagation()}
|
onClick={(event) => event.stopPropagation()}
|
||||||
|
onPointerDown={(event) => event.stopPropagation()}
|
||||||
|
onMouseDown={(event) => event.stopPropagation()}
|
||||||
onKeyDown={(event) => {
|
onKeyDown={(event) => {
|
||||||
if (event.key === 'Escape') {
|
if (event.key === 'Escape') {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
@@ -202,6 +206,8 @@ const SessionFolderItemBase = <TSessionNode,>({
|
|||||||
type="submit"
|
type="submit"
|
||||||
className="shrink-0 text-muted-foreground hover:text-foreground"
|
className="shrink-0 text-muted-foreground hover:text-foreground"
|
||||||
onClick={(event) => event.stopPropagation()}
|
onClick={(event) => event.stopPropagation()}
|
||||||
|
onPointerDown={(event) => event.stopPropagation()}
|
||||||
|
onMouseDown={(event) => event.stopPropagation()}
|
||||||
>
|
>
|
||||||
<RiCheckLine className="size-4" />
|
<RiCheckLine className="size-4" />
|
||||||
</button>
|
</button>
|
||||||
@@ -211,6 +217,8 @@ const SessionFolderItemBase = <TSessionNode,>({
|
|||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
handleCancelRename();
|
handleCancelRename();
|
||||||
}}
|
}}
|
||||||
|
onPointerDown={(event) => event.stopPropagation()}
|
||||||
|
onMouseDown={(event) => event.stopPropagation()}
|
||||||
className="shrink-0 text-muted-foreground hover:text-foreground"
|
className="shrink-0 text-muted-foreground hover:text-foreground"
|
||||||
>
|
>
|
||||||
<RiCloseLine className="size-4" />
|
<RiCloseLine className="size-4" />
|
||||||
|
|||||||
@@ -972,6 +972,8 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
|
|||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const isInlineEditing = Boolean(renamingFolderId || editingId || editingProjectId);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
ref={sessionSearchContainerRef}
|
ref={sessionSearchContainerRef}
|
||||||
@@ -1053,6 +1055,7 @@ export const SessionSidebar: React.FC<SessionSidebarProps> = ({
|
|||||||
settingsAutoCreateWorktree={settingsAutoCreateWorktree}
|
settingsAutoCreateWorktree={settingsAutoCreateWorktree}
|
||||||
getOrderedGroups={getOrderedGroups}
|
getOrderedGroups={getOrderedGroups}
|
||||||
setGroupOrderByProject={setGroupOrderByProject}
|
setGroupOrderByProject={setGroupOrderByProject}
|
||||||
|
isInlineEditing={isInlineEditing}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<NewWorktreeDialog
|
<NewWorktreeDialog
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ type Props = {
|
|||||||
settingsAutoCreateWorktree: boolean;
|
settingsAutoCreateWorktree: boolean;
|
||||||
getOrderedGroups: (projectId: string, groups: SessionGroup[]) => SessionGroup[];
|
getOrderedGroups: (projectId: string, groups: SessionGroup[]) => SessionGroup[];
|
||||||
setGroupOrderByProject: React.Dispatch<React.SetStateAction<Map<string, string[]>>>;
|
setGroupOrderByProject: React.Dispatch<React.SetStateAction<Map<string, string[]>>>;
|
||||||
|
isInlineEditing: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function SidebarProjectsList(props: Props): React.ReactNode {
|
export function SidebarProjectsList(props: Props): React.ReactNode {
|
||||||
@@ -198,7 +199,7 @@ export function SidebarProjectsList(props: Props): React.ReactNode {
|
|||||||
{orderedGroups.map((group) => {
|
{orderedGroups.map((group) => {
|
||||||
const groupKey = `${projectKey}:${group.id}`;
|
const groupKey = `${projectKey}:${group.id}`;
|
||||||
return (
|
return (
|
||||||
<SortableGroupItem key={group.id} id={group.id}>
|
<SortableGroupItem key={group.id} id={group.id} disabled={props.isInlineEditing}>
|
||||||
{props.renderGroupSessions(group, groupKey, projectKey)}
|
{props.renderGroupSessions(group, groupKey, projectKey)}
|
||||||
</SortableGroupItem>
|
</SortableGroupItem>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -303,8 +303,9 @@ export const SortableProjectItem: React.FC<SortableProjectItemProps> = ({
|
|||||||
|
|
||||||
const SortableGroupItemBase: React.FC<{
|
const SortableGroupItemBase: React.FC<{
|
||||||
id: string;
|
id: string;
|
||||||
|
disabled?: boolean;
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}> = ({ id, children }) => {
|
}> = ({ id, disabled = false, children }) => {
|
||||||
const {
|
const {
|
||||||
attributes,
|
attributes,
|
||||||
listeners,
|
listeners,
|
||||||
@@ -312,7 +313,7 @@ const SortableGroupItemBase: React.FC<{
|
|||||||
transform,
|
transform,
|
||||||
transition,
|
transition,
|
||||||
isDragging,
|
isDragging,
|
||||||
} = useSortable({ id });
|
} = useSortable({ id, disabled });
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
Reference in New Issue
Block a user