add input to rename kanban boards
This commit is contained in:
Vendored
+27
-1
@@ -427,6 +427,7 @@
|
|||||||
undoChanges: "Undo changes",
|
undoChanges: "Undo changes",
|
||||||
close: "Close",
|
close: "Close",
|
||||||
discard: "Discard",
|
discard: "Discard",
|
||||||
|
rename: "Rename",
|
||||||
zoomOut: "zoom out",
|
zoomOut: "zoom out",
|
||||||
zoomIn: "zoom in",
|
zoomIn: "zoom in",
|
||||||
// overview
|
// overview
|
||||||
@@ -513,6 +514,7 @@
|
|||||||
undoChanges: "Deshacer",
|
undoChanges: "Deshacer",
|
||||||
close: "Cerrar",
|
close: "Cerrar",
|
||||||
discard: "Descartar",
|
discard: "Descartar",
|
||||||
|
rename: "Renombrar",
|
||||||
zoomOut: "alejar",
|
zoomOut: "alejar",
|
||||||
zoomIn: "acercar",
|
zoomIn: "acercar",
|
||||||
// overview
|
// overview
|
||||||
@@ -597,6 +599,7 @@
|
|||||||
undoChanges: "\xC4nderungen verwerfen",
|
undoChanges: "\xC4nderungen verwerfen",
|
||||||
close: "Schlie\xDFen",
|
close: "Schlie\xDFen",
|
||||||
discard: "Verwerfen",
|
discard: "Verwerfen",
|
||||||
|
rename: "Umbenennen",
|
||||||
zoomOut: "verkleinern",
|
zoomOut: "verkleinern",
|
||||||
zoomIn: "vergr\xF6\xDFern",
|
zoomIn: "vergr\xF6\xDFern",
|
||||||
// overview
|
// overview
|
||||||
@@ -1487,6 +1490,19 @@
|
|||||||
return /* @__PURE__ */ createElement("div", { class: "width-100 height-100 scroll-no", "children:set": content });
|
return /* @__PURE__ */ createElement("div", { class: "width-100 height-100 scroll-no", "children:set": content });
|
||||||
}
|
}
|
||||||
function KanbanBoardView(chat, kanbanBoard, selectedObject, isShowingObjectModal) {
|
function KanbanBoardView(chat, kanbanBoard, selectedObject, isShowingObjectModal) {
|
||||||
|
const editingBoardTitle = new State(kanbanBoard.title);
|
||||||
|
const isEditing = new State(false);
|
||||||
|
const cannotRename = createProxyState(
|
||||||
|
[editingBoardTitle],
|
||||||
|
() => editingBoardTitle.value == kanbanBoard.title || editingBoardTitle.value == ""
|
||||||
|
);
|
||||||
|
function renameBoard() {
|
||||||
|
kanbanBoard.items.forEach((messageObject) => {
|
||||||
|
const latest = chat.getMostRecentContent(messageObject);
|
||||||
|
latest.categoryName = editingBoardTitle.value;
|
||||||
|
chat.addObjectAndSend(messageObject);
|
||||||
|
});
|
||||||
|
}
|
||||||
function dragOver(event) {
|
function dragOver(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
@@ -1500,6 +1516,7 @@
|
|||||||
latest.categoryName = kanbanBoard.title;
|
latest.categoryName = kanbanBoard.title;
|
||||||
chat.addObjectAndSend(messageObject);
|
chat.addObjectAndSend(messageObject);
|
||||||
}
|
}
|
||||||
|
const titleInput = /* @__PURE__ */ createElement("input", { "bind:value": editingBoardTitle, "on:enter": renameBoard });
|
||||||
return /* @__PURE__ */ createElement(
|
return /* @__PURE__ */ createElement(
|
||||||
"div",
|
"div",
|
||||||
{
|
{
|
||||||
@@ -1508,7 +1525,16 @@
|
|||||||
"on:dragover": dragOver,
|
"on:dragover": dragOver,
|
||||||
"on:drop": drop
|
"on:drop": drop
|
||||||
},
|
},
|
||||||
/* @__PURE__ */ createElement("b", { class: "flex-row width-100" }, kanbanBoard.title),
|
/* @__PURE__ */ createElement("div", { class: "flex-row align-center justify-apart" }, titleInput, /* @__PURE__ */ createElement(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "primary",
|
||||||
|
"aria-label": translation.rename,
|
||||||
|
"on:click": renameBoard,
|
||||||
|
"toggle:disabled": cannotRename
|
||||||
|
},
|
||||||
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "edit")
|
||||||
|
)),
|
||||||
/* @__PURE__ */ createElement("hr", null),
|
/* @__PURE__ */ createElement("hr", null),
|
||||||
/* @__PURE__ */ createElement("div", { class: "flex-column gap padding-bottom" }, ...kanbanBoard.items.map(
|
/* @__PURE__ */ createElement("div", { class: "flex-column gap padding-bottom" }, ...kanbanBoard.items.map(
|
||||||
(messageObject) => ObjectEntryView(
|
(messageObject) => ObjectEntryView(
|
||||||
|
|||||||
@@ -59,6 +59,23 @@ function KanbanBoardView(
|
|||||||
selectedObject: React.State<MessageObject | undefined>,
|
selectedObject: React.State<MessageObject | undefined>,
|
||||||
isShowingObjectModal: React.State<boolean>
|
isShowingObjectModal: React.State<boolean>
|
||||||
) {
|
) {
|
||||||
|
const editingBoardTitle = new React.State(kanbanBoard.title);
|
||||||
|
const isEditing = new React.State(false);
|
||||||
|
const cannotRename = React.createProxyState(
|
||||||
|
[editingBoardTitle],
|
||||||
|
() =>
|
||||||
|
editingBoardTitle.value == kanbanBoard.title ||
|
||||||
|
editingBoardTitle.value == ""
|
||||||
|
);
|
||||||
|
|
||||||
|
function renameBoard() {
|
||||||
|
kanbanBoard.items.forEach((messageObject) => {
|
||||||
|
const latest = chat.getMostRecentContent(messageObject);
|
||||||
|
latest.categoryName = editingBoardTitle.value;
|
||||||
|
chat.addObjectAndSend(messageObject);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function dragOver(event: DragEvent) {
|
function dragOver(event: DragEvent) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
@@ -73,10 +90,13 @@ function KanbanBoardView(
|
|||||||
|
|
||||||
const latest = chat.getMostRecentContent(messageObject);
|
const latest = chat.getMostRecentContent(messageObject);
|
||||||
latest.categoryName = kanbanBoard.title;
|
latest.categoryName = kanbanBoard.title;
|
||||||
|
|
||||||
chat.addObjectAndSend(messageObject);
|
chat.addObjectAndSend(messageObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const titleInput = (
|
||||||
|
<input bind:value={editingBoardTitle} on:enter={renameBoard}></input>
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
class="flex-column flex-no"
|
class="flex-column flex-no"
|
||||||
@@ -84,7 +104,17 @@ function KanbanBoardView(
|
|||||||
on:dragover={dragOver}
|
on:dragover={dragOver}
|
||||||
on:drop={drop}
|
on:drop={drop}
|
||||||
>
|
>
|
||||||
<b class="flex-row width-100">{kanbanBoard.title}</b>
|
<div class="flex-row align-center justify-apart">
|
||||||
|
{titleInput}
|
||||||
|
<button
|
||||||
|
class="primary"
|
||||||
|
aria-label={translation.rename}
|
||||||
|
on:click={renameBoard}
|
||||||
|
toggle:disabled={cannotRename}
|
||||||
|
>
|
||||||
|
<span class="icon">edit</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<hr></hr>
|
<hr></hr>
|
||||||
<div class="flex-column gap padding-bottom">
|
<div class="flex-column gap padding-bottom">
|
||||||
{...kanbanBoard.items.map((messageObject) =>
|
{...kanbanBoard.items.map((messageObject) =>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const englishTranslations = {
|
|||||||
undoChanges: "Undo changes",
|
undoChanges: "Undo changes",
|
||||||
close: "Close",
|
close: "Close",
|
||||||
discard: "Discard",
|
discard: "Discard",
|
||||||
|
rename: "Rename",
|
||||||
|
|
||||||
zoomOut: "zoom out",
|
zoomOut: "zoom out",
|
||||||
zoomIn: "zoom in",
|
zoomIn: "zoom in",
|
||||||
@@ -119,6 +120,7 @@ const allTranslations: { [key: string]: typeof englishTranslations } = {
|
|||||||
undoChanges: "Deshacer",
|
undoChanges: "Deshacer",
|
||||||
close: "Cerrar",
|
close: "Cerrar",
|
||||||
discard: "Descartar",
|
discard: "Descartar",
|
||||||
|
rename: "Renombrar",
|
||||||
|
|
||||||
zoomOut: "alejar",
|
zoomOut: "alejar",
|
||||||
zoomIn: "acercar",
|
zoomIn: "acercar",
|
||||||
@@ -229,6 +231,7 @@ const allTranslations: { [key: string]: typeof englishTranslations } = {
|
|||||||
undoChanges: "Änderungen verwerfen",
|
undoChanges: "Änderungen verwerfen",
|
||||||
close: "Schließen",
|
close: "Schließen",
|
||||||
discard: "Verwerfen",
|
discard: "Verwerfen",
|
||||||
|
rename: "Umbenennen",
|
||||||
|
|
||||||
zoomOut: "verkleinern",
|
zoomOut: "verkleinern",
|
||||||
zoomIn: "vergrößern",
|
zoomIn: "vergrößern",
|
||||||
|
|||||||
Reference in New Issue
Block a user