mirror of https://github.com/logseq/logseq
feat: add icons to context menu
parent
a00d6c077c
commit
5a996526ac
|
@ -40,70 +40,75 @@ export const ContextMenu = observer(function ContextMenu({
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
{app.selectedShapes?.size > 1 && (
|
{app.selectedShapes?.size > 1 && (
|
||||||
<ReactContextMenu.Item>
|
<>
|
||||||
<div className="tl-menu-button-row pb-0">
|
<ReactContextMenu.Item>
|
||||||
<Button
|
<div className="tl-menu-button-row pb-0">
|
||||||
title="Align left"
|
<Button
|
||||||
onClick={() => runAndTransition(() => app.align(AlignType.Left))}
|
title="Align left"
|
||||||
>
|
onClick={() => runAndTransition(() => app.align(AlignType.Left))}
|
||||||
<TablerIcon name="layout-align-left" />
|
>
|
||||||
</Button>
|
<TablerIcon name="layout-align-left" />
|
||||||
<Button
|
</Button>
|
||||||
title="Align center horizontally"
|
<Button
|
||||||
onClick={() => runAndTransition(() => app.align(AlignType.CenterHorizontal))}
|
title="Align center horizontally"
|
||||||
>
|
onClick={() => runAndTransition(() => app.align(AlignType.CenterHorizontal))}
|
||||||
<TablerIcon name="layout-align-center" />
|
>
|
||||||
</Button>
|
<TablerIcon name="layout-align-center" />
|
||||||
<Button
|
</Button>
|
||||||
title="Align right"
|
<Button
|
||||||
onClick={() => runAndTransition(() => app.align(AlignType.Right))}
|
title="Align right"
|
||||||
>
|
onClick={() => runAndTransition(() => app.align(AlignType.Right))}
|
||||||
<TablerIcon name="layout-align-right" />
|
>
|
||||||
</Button>
|
<TablerIcon name="layout-align-right" />
|
||||||
<Separator.Root className="tl-toolbar-separator" orientation="vertical" />
|
</Button>
|
||||||
<Button
|
<Separator.Root className="tl-toolbar-separator" orientation="vertical" />
|
||||||
title="Distribute horizontally"
|
<Button
|
||||||
onClick={() => runAndTransition(() => app.distribute(DistributeType.Horizontal))}
|
title="Distribute horizontally"
|
||||||
>
|
onClick={() =>
|
||||||
<TablerIcon name="layout-distribute-vertical" />
|
runAndTransition(() => app.distribute(DistributeType.Horizontal))
|
||||||
</Button>
|
}
|
||||||
</div>
|
>
|
||||||
<div className="tl-menu-button-row pt-0">
|
<TablerIcon name="layout-distribute-vertical" />
|
||||||
<Button
|
</Button>
|
||||||
title="Align top"
|
</div>
|
||||||
onClick={() => runAndTransition(() => app.align(AlignType.Top))}
|
<div className="tl-menu-button-row pt-0">
|
||||||
>
|
<Button
|
||||||
<TablerIcon name="layout-align-top" />
|
title="Align top"
|
||||||
</Button>
|
onClick={() => runAndTransition(() => app.align(AlignType.Top))}
|
||||||
<Button
|
>
|
||||||
title="Align center vertically"
|
<TablerIcon name="layout-align-top" />
|
||||||
onClick={() => runAndTransition(() => app.align(AlignType.CenterVertical))}
|
</Button>
|
||||||
>
|
<Button
|
||||||
<TablerIcon name="layout-align-middle" />
|
title="Align center vertically"
|
||||||
</Button>
|
onClick={() => runAndTransition(() => app.align(AlignType.CenterVertical))}
|
||||||
<Button
|
>
|
||||||
title="Align bottom"
|
<TablerIcon name="layout-align-middle" />
|
||||||
onClick={() => runAndTransition(() => app.align(AlignType.Bottom))}
|
</Button>
|
||||||
>
|
<Button
|
||||||
<TablerIcon name="layout-align-bottom" />
|
title="Align bottom"
|
||||||
</Button>
|
onClick={() => runAndTransition(() => app.align(AlignType.Bottom))}
|
||||||
<Separator.Root className="tl-toolbar-separator" orientation="vertical" />
|
>
|
||||||
<Button
|
<TablerIcon name="layout-align-bottom" />
|
||||||
title="Distribute vertically"
|
</Button>
|
||||||
onClick={() => runAndTransition(() => app.distribute(DistributeType.Vertical))}
|
<Separator.Root className="tl-toolbar-separator" orientation="vertical" />
|
||||||
>
|
<Button
|
||||||
<TablerIcon name="layout-distribute-horizontal" />
|
title="Distribute vertically"
|
||||||
</Button>
|
onClick={() => runAndTransition(() => app.distribute(DistributeType.Vertical))}
|
||||||
</div>
|
>
|
||||||
|
<TablerIcon name="layout-distribute-horizontal" />
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</ReactContextMenu.Item>
|
||||||
<ReactContextMenu.Separator className="menu-separator" />
|
<ReactContextMenu.Separator className="menu-separator" />
|
||||||
<ReactContextMenu.Item
|
<ReactContextMenu.Item
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.packIntoRectangle)}
|
onClick={() => runAndTransition(app.packIntoRectangle)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="layout-grid" />
|
||||||
Pack into rectangle
|
Pack into rectangle
|
||||||
</ReactContextMenu.Item>
|
</ReactContextMenu.Item>
|
||||||
<ReactContextMenu.Separator className="menu-separator" />
|
<ReactContextMenu.Separator className="menu-separator" />
|
||||||
</ReactContextMenu.Item>
|
</>
|
||||||
)}
|
)}
|
||||||
{app.selectedShapes?.size > 0 && (
|
{app.selectedShapes?.size > 0 && (
|
||||||
<>
|
<>
|
||||||
|
@ -111,6 +116,7 @@ export const ContextMenu = observer(function ContextMenu({
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.cut)}
|
onClick={() => runAndTransition(app.cut)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="cut" />
|
||||||
Cut
|
Cut
|
||||||
<div className="tl-menu-right-slot">
|
<div className="tl-menu-right-slot">
|
||||||
<span className="keyboard-shortcut">
|
<span className="keyboard-shortcut">
|
||||||
|
@ -122,6 +128,7 @@ export const ContextMenu = observer(function ContextMenu({
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.copy)}
|
onClick={() => runAndTransition(app.copy)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="copy" />
|
||||||
Copy
|
Copy
|
||||||
<div className="tl-menu-right-slot">
|
<div className="tl-menu-right-slot">
|
||||||
<span className="keyboard-shortcut">
|
<span className="keyboard-shortcut">
|
||||||
|
@ -135,6 +142,7 @@ export const ContextMenu = observer(function ContextMenu({
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.paste)}
|
onClick={() => runAndTransition(app.paste)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="clipboard" />
|
||||||
Paste
|
Paste
|
||||||
<div className="tl-menu-right-slot">
|
<div className="tl-menu-right-slot">
|
||||||
<span className="keyboard-shortcut">
|
<span className="keyboard-shortcut">
|
||||||
|
@ -168,6 +176,7 @@ export const ContextMenu = observer(function ContextMenu({
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.api.deleteShapes)}
|
onClick={() => runAndTransition(app.api.deleteShapes)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="backspace" />
|
||||||
Delete
|
Delete
|
||||||
<div className="tl-menu-right-slot">
|
<div className="tl-menu-right-slot">
|
||||||
<span className="keyboard-shortcut">
|
<span className="keyboard-shortcut">
|
||||||
|
@ -182,12 +191,14 @@ export const ContextMenu = observer(function ContextMenu({
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.flipHorizontal)}
|
onClick={() => runAndTransition(app.flipHorizontal)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="flip-horizontal" />
|
||||||
Flip horizontally
|
Flip horizontally
|
||||||
</ReactContextMenu.Item>
|
</ReactContextMenu.Item>
|
||||||
<ReactContextMenu.Item
|
<ReactContextMenu.Item
|
||||||
className="tl-menu-item"
|
className="tl-menu-item"
|
||||||
onClick={() => runAndTransition(app.flipVertical)}
|
onClick={() => runAndTransition(app.flipVertical)}
|
||||||
>
|
>
|
||||||
|
<TablerIcon className="tl-menu-icon" name="flip-vertical" />
|
||||||
Flip vertically
|
Flip vertically
|
||||||
</ReactContextMenu.Item>
|
</ReactContextMenu.Item>
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.tl-menu-item {
|
.tl-menu-item {
|
||||||
@apply flex items-center px-4 py-1 text-sm !important;
|
@apply flex items-center pl-10 pr-4 py-1 text-sm relative !important;
|
||||||
|
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
all: unset;
|
all: unset;
|
||||||
|
@ -39,6 +39,10 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background-color: var(--ls-primary-background-color) !important;
|
background-color: var(--ls-primary-background-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tl-menu-icon {
|
||||||
|
@apply absolute left-4 text-base opacity-50;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tl-menu-button-row {
|
.tl-menu-button-row {
|
||||||
|
|
Loading…
Reference in New Issue