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); 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 // src/View/ChatPages/calendarPage.tsx
function CalendarPage(coreViewModel2, calendarPageViewModel) { function CalendarPage(coreViewModel2, calendarPageViewModel) {
calendarPageViewModel.loadData(); calendarPageViewModel.loadData();
@@ -3279,7 +3284,9 @@
[listState], [listState],
() => { () => {
if (listState.value.size == 0) { 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 { } else {
return /* @__PURE__ */ createElement( return /* @__PURE__ */ createElement(
"div", "div",
@@ -4377,7 +4384,9 @@
() => { () => {
const selectedBoardId = taskPageViewModel.selectedBoardId.value; const selectedBoardId = taskPageViewModel.selectedBoardId.value;
if (selectedBoardId == void 0) { 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); const selectedBoard = taskPageViewModel.boardViewModels.value.get(selectedBoardId);
if (selectedBoard == void 0) { if (selectedBoard == void 0) {
@@ -6420,7 +6429,16 @@
// src/View/Components/splitModal.tsx // src/View/Components/splitModal.tsx
function SplitModal(leftView, rightView, extendedStyle = false, navigationState) { 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() { function scrollToDetails() {
view.scrollLeft = view.scrollWidth; view.scrollLeft = view.scrollWidth;
} }
@@ -6871,9 +6889,7 @@
function SettingsRegionalPane(coreViewModel2, settingsViewModel2) { 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( 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( new ListState(
Object.values(Languages).map( Object.values(Languages).map((x) => [languageNames[x], x])
(x) => [languageNames[x], x]
)
), ),
settingsViewModel2.language settingsViewModel2.language
), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("h3", null, coreViewModel2.translations.settings.firstDayOfWeekLabel), OptionButtonList( ), /* @__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 { TaskViewModelToEntry } from "../Components/taskEntry";
import { setFocusWithDelay } from "../utility"; import { setFocusWithDelay } from "../utility";
import CoreViewModel from "../../ViewModel/Global/coreViewModel"; import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import { PlaceholderView } from "../Components/placeholderView";
export function CalendarPage( export function CalendarPage(
coreViewModel: CoreViewModel, coreViewModel: CoreViewModel,
@@ -58,15 +59,9 @@ export function CalendarPage(
[listState], [listState],
() => { () => {
if (listState.value.size == 0) { if (listState.value.size == 0) {
return ( return PlaceholderView(
<div class="width-100 height-100 flex-column justify-center align-center"> coreViewModel.translations.chatPage.calendar
<span class="secondary slide-up"> .noEvents,
{
coreViewModel.translations.chatPage
.calendar.noEvents
}
</span>
</div>
); );
} else { } else {
return ( return (
+3 -9
View File
@@ -6,6 +6,7 @@ import { BoardPage } from "./boardPage";
import { BoardViewModelToEntry } from "../Components/boardEntry"; import { BoardViewModelToEntry } from "../Components/boardEntry";
import TaskPageViewModel from "../../ViewModel/Pages/taskPageViewModel"; import TaskPageViewModel from "../../ViewModel/Pages/taskPageViewModel";
import CoreViewModel from "../../ViewModel/Global/coreViewModel"; import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import { PlaceholderView } from "../Components/placeholderView";
export function TaskPage( export function TaskPage(
coreViewModel: CoreViewModel, coreViewModel: CoreViewModel,
@@ -23,15 +24,8 @@ export function TaskPage(
() => { () => {
const selectedBoardId = taskPageViewModel.selectedBoardId.value; const selectedBoardId = taskPageViewModel.selectedBoardId.value;
if (selectedBoardId == undefined) { if (selectedBoardId == undefined) {
return ( return PlaceholderView(
<div class="pane align-center justify-center"> coreViewModel.translations.chatPage.task.noBoardSelected,
<span class="secondary">
{
coreViewModel.translations.chatPage.task
.noBoardSelected
}
</span>
</div>
); );
} }
const selectedBoard = 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>, navigationState?: React.State<any>,
) { ) {
const view = ( 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>
<div class="scroll-area" children:set={leftView}></div> <div class="scroll-area" children:set={leftView}></div>
</div> </div>
+1 -3
View File
@@ -137,9 +137,7 @@ function SettingsRegionalPane(
<h3>{coreViewModel.translations.settings.language}</h3> <h3>{coreViewModel.translations.settings.language}</h3>
{OptionButtonList( {OptionButtonList(
new React.ListState<[string, string]>( new React.ListState<[string, string]>(
Object.values(Languages).map( Object.values(Languages).map((x) => [languageNames[x], x]),
(x) => [languageNames[x], x],
),
), ),
settingsViewModel.language, settingsViewModel.language,
)} )}