Skip to content

Commit 442039f

Browse files
committed
board: implement bring to front and send to back
1 parent f5f9aee commit 442039f

File tree

4 files changed

+61
-12
lines changed

4 files changed

+61
-12
lines changed

src/packages/frontend/frame-editors/whiteboard-editor/actions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class Actions extends BaseActions<State> {
6565
}
6666
if (obj.z == null) {
6767
// most calls to createElement should NOT resort to having to do this.
68-
let { zMax } = getPageSpan(
68+
const { zMax } = getPageSpan(
6969
this.store.get("elements").toJS() as Element[],
7070
0
7171
);

src/packages/frontend/frame-editors/whiteboard-editor/canvas.tsx

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -385,16 +385,15 @@ export default function Canvas({
385385
selectedTool == "note" ||
386386
selectedTool == "code"
387387
) {
388-
const { id } = actions.createElement(
389-
{
390-
z: transforms.zMax + 1,
391-
...data,
392-
type: selectedTool,
393-
str: "",
394-
...params,
395-
},
396-
true
397-
);
388+
const element = {
389+
...data,
390+
type: selectedTool,
391+
str: "",
392+
...params,
393+
z: transforms.zMax + 1,
394+
};
395+
396+
const { id } = actions.createElement(element, true);
398397
actions.setSelectedTool(frame.id, "select");
399398
actions.setFocusedElement(frame.id, id);
400399
}

src/packages/frontend/frame-editors/whiteboard-editor/tools/edit-bar.tsx

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Editing bar for editing one (or more) selected elements.
33
*/
44

55
import { CSSProperties, ReactNode, useState } from "react";
6-
import { Button, InputNumber, Select, Tooltip } from "antd";
6+
import { Button, InputNumber, Menu, Dropdown, Select, Tooltip } from "antd";
77
const { Option } = Select;
88
import { Element } from "../types";
99
import { PANEL_STYLE } from "./panel";
@@ -13,6 +13,7 @@ import { Actions } from "../actions";
1313
import { BrushPreview, maxRadius } from "./pen";
1414
import ColorPicker from "@cocalc/frontend/components/color-picker";
1515
import { FONT_FACES as FONT_FAMILIES } from "@cocalc/frontend/editors/editor-button-bar";
16+
import { getPageSpan } from "../math";
1617

1718
import {
1819
DEFAULT_FONT_SIZE,
@@ -44,6 +45,7 @@ export default function EditBar({ elements }: Props) {
4445
<FontSize actions={actions} elements={elements} />
4546
<ColorButton actions={actions} elements={elements} />
4647
<DeleteButton actions={actions} elements={elements} />
48+
<OtherOperations actions={actions} elements={elements} />
4749
</div>
4850
</div>
4951
);
@@ -224,6 +226,53 @@ function getFontFamily(elements: Element[]): string | undefined {
224226
return DEFAULT_FONT_FAMILY;
225227
}
226228

229+
function OtherOperations({ actions, elements }: ButtonProps) {
230+
const frame = useFrameContext();
231+
const menu = (
232+
<Menu
233+
onClick={({ key }) => {
234+
if (key == "bring-to-front") {
235+
const { zMax } = getPageSpan(elements);
236+
let z = zMax + 1;
237+
for (const element of elements) {
238+
actions.setElement({ ...element, z }, false);
239+
z += 1;
240+
}
241+
actions.syncstring_commit();
242+
actions.setFocusedElement(frame.id, "");
243+
} else if (key == "send-to-back") {
244+
const { zMin } = getPageSpan(elements);
245+
let z = zMin - 1;
246+
console.log("zMin = ", zMin, " z = ", z);
247+
for (const element of elements) {
248+
actions.setElement({ ...element, z }, false);
249+
z -= 1;
250+
}
251+
actions.syncstring_commit();
252+
actions.setFocusedElement(frame.id, "");
253+
return;
254+
}
255+
}}
256+
>
257+
<Menu.Item key="bring-to-front">Bring to front</Menu.Item>
258+
<Menu.Item key="send-to-back">Send to back</Menu.Item>
259+
</Menu>
260+
);
261+
262+
return (
263+
<Dropdown overlay={menu} trigger={["click"]}>
264+
<Icon
265+
name="ellipsis"
266+
style={{
267+
padding: "12px 10px 0",
268+
borderLeft: "1px solid #ccc",
269+
cursor: "pointer",
270+
}}
271+
/>
272+
</Dropdown>
273+
);
274+
}
275+
227276
function setDataField(
228277
{
229278
elements,

src/packages/frontend/frame-editors/whiteboard-editor/tools/note.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ function NotePreview({
147147
}) {
148148
return (
149149
<Tooltip
150+
placement="right"
150151
title={
151152
`Font size: ${fontSize}px` +
152153
(fontFamily ? `, Font family: ${fontFamily}` : "")

0 commit comments

Comments
 (0)