Files
CT/src/View/Modals/taskSettingsModal.tsx
T

161 lines
4.9 KiB
TypeScript
Raw Normal View History

2024-07-24 03:36:21 +02:00
import * as React from "bloatless-react";
import {
EntryToOption,
StringToOption,
VersionIdToOption,
} from "../Components/option";
2024-07-24 15:57:02 +02:00
2024-07-24 03:36:21 +02:00
import { DangerousActionButton } from "../Components/dangerousActionButton";
import TaskViewModel from "../../ViewModel/Pages/taskViewModel";
import { translations } from "../translations";
import { v4 } from "uuid";
2024-07-24 03:36:21 +02:00
2024-07-24 13:31:28 +02:00
export function TaskSettingsModal(taskViewModel: TaskViewModel) {
const categorySuggestionId = v4();
const statusSuggestionId = v4();
2024-07-24 03:36:21 +02:00
return (
2024-07-24 13:31:28 +02:00
<div class="modal" open>
2024-07-24 03:36:21 +02:00
<div>
<main>
2024-07-24 13:59:42 +02:00
<h2>{translations.chatPage.task.taskSettingsHeadline}</h2>
2024-07-24 03:36:21 +02:00
2024-07-24 15:57:02 +02:00
<label class="tile flex-no">
<span class="icon">history</span>
<div>
<span>{translations.general.fileVersionLabel}</span>
<select
bind:value={taskViewModel.selectedVersionId}
children:append={[taskViewModel.versionIds, VersionIdToOption]}
></select>
<span class="icon">arrow_drop_down</span>
</div>
</label>
<hr></hr>
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">label</span>
<div>
<span>{translations.chatPage.task.taskNameLabel}</span>
2024-07-24 13:31:28 +02:00
<input bind:value={taskViewModel.name}></input>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
2024-07-24 03:36:21 +02:00
<label class="tile flex-no">
<span class="icon">category</span>
<div>
<span>{translations.chatPage.task.taskBoardLabel}</span>
<select
bind:value={taskViewModel.boardId}
children:append={[
taskViewModel.chatViewModel.taskBoardSuggestions,
EntryToOption,
]}
></select>
<span class="icon">arrow_drop_down</span>
</div>
</label>
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">description</span>
<div>
<span>{translations.chatPage.task.taskDescriptionLabel}</span>
2024-07-24 13:59:42 +02:00
<textarea
rows="10"
bind:value={taskViewModel.description}
></textarea>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
2024-07-24 03:36:21 +02:00
<hr></hr>
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">category</span>
<div>
<span>{translations.chatPage.task.taskCategoryLabel}</span>
<input
bind:value={taskViewModel.category}
list={categorySuggestionId}
></input>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
<datalist
hidden
id={categorySuggestionId}
children:append={[
taskViewModel.coreViewModel.taskCategorySuggestions,
StringToOption,
]}
></datalist>
2024-07-24 03:36:21 +02:00
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">clock_loader_40</span>
<div>
<span>{translations.chatPage.task.taskStatusLabel}</span>
<input
bind:value={taskViewModel.status}
list={statusSuggestionId}
></input>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
<datalist
hidden
id={statusSuggestionId}
children:append={[
taskViewModel.coreViewModel.taskStatusSuggestions,
StringToOption,
]}
></datalist>
2024-07-24 03:36:21 +02:00
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">priority_high</span>
<div>
<span>{translations.chatPage.task.taskPriorityLabel}</span>
2024-07-24 13:31:28 +02:00
<input type="number" bind:value={taskViewModel.priority}></input>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
2024-07-24 03:36:21 +02:00
<hr></hr>
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">calendar_month</span>
<div>
<span>{translations.chatPage.task.taskDateLabel}</span>
2024-07-24 13:31:28 +02:00
<input type="date" bind:value={taskViewModel.date}></input>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
2024-07-24 03:36:21 +02:00
2024-07-24 13:31:28 +02:00
<label class="tile flex-no">
2024-07-24 03:36:21 +02:00
<span class="icon">schedule</span>
<div>
<span>{translations.chatPage.task.taskTimeLabel}</span>
2024-07-24 13:31:28 +02:00
<input type="time" bind:value={taskViewModel.time}></input>
2024-07-24 03:36:21 +02:00
</div>
2024-07-24 13:31:28 +02:00
</label>
2024-07-24 14:10:09 +02:00
<hr></hr>
<div class="width-input">
{DangerousActionButton(
translations.chatPage.task.deleteTaskButton,
"delete_forever",
taskViewModel.deleteTask
)}
</div>
2024-07-24 03:36:21 +02:00
</main>
2024-07-24 13:31:28 +02:00
<div class="flex-row width-100">
2024-07-24 13:34:33 +02:00
<button class="flex" on:click={taskViewModel.close}>
2024-07-24 03:36:21 +02:00
{translations.general.closeButton}
</button>
2024-07-24 13:34:33 +02:00
<button class="flex primary" on:click={taskViewModel.closeAndSave}>
2024-07-24 03:36:21 +02:00
{translations.general.saveButton}
<span class="icon">save</span>
</button>
</div>
</div>
</div>
);
}