add placeholderView component

This commit is contained in:
marlon-erler
2026-04-10 18:17:16 +00:00
parent a487627020
commit 3c7b08ad6f
6 changed files with 44 additions and 28 deletions
+22 -6
View File
@@ -3238,6 +3238,11 @@
return TaskEntry(taskViewModel);
};
// src/View/Components/placeholderView.tsx
function PlaceholderView(text) {
return /* @__PURE__ */ createElement("div", { class: "width-100 height-100 flex-column justify-center align-center" }, /* @__PURE__ */ createElement("span", { class: "secondary slide-up" }, text));
}
// src/View/ChatPages/calendarPage.tsx
function CalendarPage(coreViewModel2, calendarPageViewModel) {
calendarPageViewModel.loadData();
@@ -3279,7 +3284,9 @@
[listState],
() => {
if (listState.value.size == 0) {
return /* @__PURE__ */ createElement("div", { class: "width-100 height-100 flex-column justify-center align-center" }, /* @__PURE__ */ createElement("span", { class: "secondary slide-up" }, coreViewModel2.translations.chatPage.calendar.noEvents));
return PlaceholderView(
coreViewModel2.translations.chatPage.calendar.noEvents
);
} else {
return /* @__PURE__ */ createElement(
"div",
@@ -4377,7 +4384,9 @@
() => {
const selectedBoardId = taskPageViewModel.selectedBoardId.value;
if (selectedBoardId == void 0) {
return /* @__PURE__ */ createElement("div", { class: "pane align-center justify-center" }, /* @__PURE__ */ createElement("span", { class: "secondary" }, coreViewModel2.translations.chatPage.task.noBoardSelected));
return PlaceholderView(
coreViewModel2.translations.chatPage.task.noBoardSelected
);
}
const selectedBoard = taskPageViewModel.boardViewModels.value.get(selectedBoardId);
if (selectedBoard == void 0) {
@@ -6420,7 +6429,16 @@
// src/View/Components/splitModal.tsx
function SplitModal(leftView, rightView, extendedStyle = false, navigationState) {
const view = /* @__PURE__ */ createElement("div", { class: "split-modal", "toggle:extended": extendedStyle, "toggle:primitive": navigationState == void 0 }, /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("div", { class: "scroll-area", "children:set": leftView })), /* @__PURE__ */ createElement("div", { class: "scroll-area", "children:set": rightView }));
const view = /* @__PURE__ */ createElement(
"div",
{
class: "split-modal",
"toggle:extended": extendedStyle,
"toggle:primitive": navigationState == void 0
},
/* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("div", { class: "scroll-area", "children:set": leftView })),
/* @__PURE__ */ createElement("div", { class: "scroll-area", "children:set": rightView })
);
function scrollToDetails() {
view.scrollLeft = view.scrollWidth;
}
@@ -6871,9 +6889,7 @@
function SettingsRegionalPane(coreViewModel2, settingsViewModel2) {
return /* @__PURE__ */ createElement("div", { class: "slide-up" }, /* @__PURE__ */ createElement("h2", null, coreViewModel2.translations.settings.pages.regional), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("h3", null, coreViewModel2.translations.settings.language), OptionButtonList(
new ListState(
Object.values(Languages).map(
(x) => [languageNames[x], x]
)
Object.values(Languages).map((x) => [languageNames[x], x])
),
settingsViewModel2.language
), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("h3", null, coreViewModel2.translations.settings.firstDayOfWeekLabel), OptionButtonList(
+4 -9
View File
@@ -9,6 +9,7 @@ import { TaskSettingsModal } from "../Modals/taskSettingsModal";
import { TaskViewModelToEntry } from "../Components/taskEntry";
import { setFocusWithDelay } from "../utility";
import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import { PlaceholderView } from "../Components/placeholderView";
export function CalendarPage(
coreViewModel: CoreViewModel,
@@ -58,15 +59,9 @@ export function CalendarPage(
[listState],
() => {
if (listState.value.size == 0) {
return (
<div class="width-100 height-100 flex-column justify-center align-center">
<span class="secondary slide-up">
{
coreViewModel.translations.chatPage
.calendar.noEvents
}
</span>
</div>
return PlaceholderView(
coreViewModel.translations.chatPage.calendar
.noEvents,
);
} else {
return (
+3 -9
View File
@@ -6,6 +6,7 @@ import { BoardPage } from "./boardPage";
import { BoardViewModelToEntry } from "../Components/boardEntry";
import TaskPageViewModel from "../../ViewModel/Pages/taskPageViewModel";
import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import { PlaceholderView } from "../Components/placeholderView";
export function TaskPage(
coreViewModel: CoreViewModel,
@@ -23,15 +24,8 @@ export function TaskPage(
() => {
const selectedBoardId = taskPageViewModel.selectedBoardId.value;
if (selectedBoardId == undefined) {
return (
<div class="pane align-center justify-center">
<span class="secondary">
{
coreViewModel.translations.chatPage.task
.noBoardSelected
}
</span>
</div>
return PlaceholderView(
coreViewModel.translations.chatPage.task.noBoardSelected,
);
}
const selectedBoard =
+9
View File
@@ -0,0 +1,9 @@
import * as React from "bloatless-react";
export function PlaceholderView(text: string) {
return (
<div class="width-100 height-100 flex-column justify-center align-center">
<span class="secondary slide-up">{text}</span>
</div>
);
}
+5 -1
View File
@@ -9,7 +9,11 @@ export function SplitModal(
navigationState?: React.State<any>,
) {
const view = (
<div class="split-modal" toggle:extended={extendedStyle} toggle:primitive={navigationState == undefined}>
<div
class="split-modal"
toggle:extended={extendedStyle}
toggle:primitive={navigationState == undefined}
>
<div>
<div class="scroll-area" children:set={leftView}></div>
</div>
+1 -3
View File
@@ -137,9 +137,7 @@ function SettingsRegionalPane(
<h3>{coreViewModel.translations.settings.language}</h3>
{OptionButtonList(
new React.ListState<[string, string]>(
Object.values(Languages).map(
(x) => [languageNames[x], x],
),
Object.values(Languages).map((x) => [languageNames[x], x]),
),
settingsViewModel.language,
)}