Skip to content

Commit 76f7d27

Browse files
committed
refactor top toolbar, add space and border radius
- rename cursor tools - add left and right border
1 parent 7ef2ecf commit 76f7d27

File tree

2 files changed

+90
-48
lines changed

2 files changed

+90
-48
lines changed

ts/image-occlusion/TopToolbar.svelte

Lines changed: 81 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
66
import IconButton from "../components/IconButton.svelte";
77
import { mdiEye, mdiFormatAlignCenter } from "./icons";
88
import { makeMaskTransparent } from "./tools/lib";
9-
import { alignTools, cursorTools, zoomTools } from "./tools/more-tools";
9+
import {
10+
alignTools,
11+
deleteDuplicateTools,
12+
groupUngroupTools,
13+
zoomTools,
14+
} from "./tools/more-tools";
1015
import { undoRedoTools } from "./tools/tool-undo-redo";
1116
1217
export let canvas;
@@ -27,69 +32,94 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
2732
<div class="top-tool-bar-container">
2833
<!-- undo & redo tools -->
2934
<div class="undo-redo-button">
30-
{#each undoRedoTools as undoRedoTool}
35+
{#each undoRedoTools as tool}
3136
<IconButton
32-
class="top-tool-icon-button"
37+
class="top-tool-icon-button {tool.name === 'undo'
38+
? 'left-border-radius'
39+
: 'right-border-radius'}"
3340
{iconSize}
3441
on:click={() => {
35-
undoRedoTool.action(canvas);
42+
tool.action(canvas);
3643
}}
3744
>
38-
{@html undoRedoTool.icon}
45+
{@html tool.icon}
3946
</IconButton>
4047
{/each}
4148
</div>
4249

4350
<!-- zoom tools -->
44-
{#each zoomTools as zoomBottomTool}
51+
<div class="tool-button-container">
52+
{#each zoomTools as tool}
53+
<IconButton
54+
class="top-tool-icon-button {tool.name === 'zoomOut'
55+
? 'left-border-radius'
56+
: ''} {tool.name === 'zoomReset' ? 'right-border-radius' : ''}"
57+
{iconSize}
58+
on:click={() => {
59+
tool.action(instance);
60+
}}
61+
>
62+
{@html tool.icon}
63+
</IconButton>
64+
{/each}
65+
</div>
66+
67+
<div class="tool-button-container">
68+
<!-- opacity tools -->
4569
<IconButton
46-
class="top-tool-icon-button"
70+
class="top-tool-icon-button left-border-radius"
4771
{iconSize}
4872
on:click={() => {
49-
zoomBottomTool.action(instance);
73+
maksOpacity = !maksOpacity;
74+
makeMaskTransparent(canvas, maksOpacity);
5075
}}
5176
>
52-
{@html zoomBottomTool.icon}
77+
{@html mdiEye}
5378
</IconButton>
54-
{/each}
5579

56-
<!-- opacity tools -->
57-
<IconButton
58-
class="top-tool-icon-button"
59-
{iconSize}
60-
on:click={() => {
61-
maksOpacity = !maksOpacity;
62-
makeMaskTransparent(canvas, maksOpacity);
63-
}}
64-
>
65-
{@html mdiEye}
66-
</IconButton>
67-
68-
<!-- cursor tools -->
69-
{#each cursorTools as cursorBottomTool}
70-
{#if cursorBottomTool.name === "align"}
80+
<!-- cursor tools -->
81+
{#each deleteDuplicateTools as tool}
7182
<IconButton
72-
class="top-tool-icon-button dropdown-tool"
83+
class="top-tool-icon-button {tool.name === 'duplicate'
84+
? 'right-border-radius'
85+
: ''}"
7386
{iconSize}
74-
on:click={(e) => {
75-
showAlignTools = !showAlignTools;
76-
leftPos = e.pageX - 100;
87+
on:click={() => {
88+
tool.action(canvas);
7789
}}
7890
>
79-
{@html mdiFormatAlignCenter}
91+
{@html tool.icon}
8092
</IconButton>
81-
{:else}
93+
{/each}
94+
</div>
95+
96+
<div class="tool-button-container">
97+
<!-- group & ungroup tools -->
98+
{#each groupUngroupTools as tool}
8299
<IconButton
83-
class="top-tool-icon-button"
100+
class="top-tool-icon-button {tool.name === 'group'
101+
? 'left-border-radius'
102+
: ''}"
84103
{iconSize}
85104
on:click={() => {
86-
cursorBottomTool.action(canvas);
105+
tool.action(canvas);
87106
}}
88107
>
89-
{@html cursorBottomTool.icon}
108+
{@html tool.icon}
90109
</IconButton>
91-
{/if}
92-
{/each}
110+
{/each}
111+
112+
<IconButton
113+
class="top-tool-icon-button dropdown-tool right-border-radius"
114+
{iconSize}
115+
on:click={(e) => {
116+
showAlignTools = !showAlignTools;
117+
leftPos = e.pageX - 100;
118+
}}
119+
>
120+
{@html mdiFormatAlignCenter}
121+
</IconButton>
122+
</div>
93123
</div>
94124

95125
<div class:show={showAlignTools} class="dropdown-content" style="left:{leftPos}px;">
@@ -118,9 +148,24 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
118148
119149
.undo-redo-button {
120150
margin-left: 28px;
151+
margin-right: 2px;
121152
display: flex;
122153
}
123154
155+
.tool-button-container {
156+
margin-left: 2px;
157+
margin-right: 2px;
158+
display: flex;
159+
}
160+
161+
:global(.left-border-radius) {
162+
border-radius: 5px 0 0 5px !important;
163+
}
164+
165+
:global(.right-border-radius) {
166+
border-radius: 0 5px 5px 0 !important;
167+
}
168+
124169
:global(.top-tool-icon-button) {
125170
border: unset;
126171
display: inline;
@@ -133,7 +178,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
133178
.dropdown-content {
134179
display: none;
135180
position: absolute;
136-
background-color: var(--canvas);
137181
z-index: 100;
138182
top: 82px;
139183
margin-top: 1px;

ts/image-occlusion/tools/more-tools.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
mdiAlignVerticalTop,
1111
mdiCopy,
1212
mdiDeleteOutline,
13-
mdiFormatAlignCenter,
1413
mdiGroup,
1514
mdiUngroup,
1615
mdiZoomIn,
@@ -27,12 +26,7 @@ import {
2726
alignVerticalCenter,
2827
} from "./tool-aligns";
2928

30-
export const cursorTools = [
31-
{
32-
name: "delete",
33-
icon: mdiDeleteOutline,
34-
action: deleteItem,
35-
},
29+
export const groupUngroupTools = [
3630
{
3731
name: "group",
3832
icon: mdiGroup,
@@ -43,15 +37,19 @@ export const cursorTools = [
4337
icon: mdiUngroup,
4438
action: unGroupShapes,
4539
},
40+
];
41+
42+
export const deleteDuplicateTools = [
43+
{
44+
name: "delete",
45+
icon: mdiDeleteOutline,
46+
action: deleteItem,
47+
},
4648
{
4749
name: "duplicate",
4850
icon: mdiCopy,
4951
action: duplicateItem,
5052
},
51-
{
52-
name: "align",
53-
icon: mdiFormatAlignCenter,
54-
},
5553
];
5654

5755
export const zoomTools = [

0 commit comments

Comments
 (0)