feat: add app widget (#206)

* refactor: move server api to api package

* feat: add app widget

* refactor: add element size for widget components on board

* feat: add resize listener for widget width

* feat: add widget app input

* refactor: add better responsibe layout, add missing translations

* fix: ci issues

* fix: deepsource issues

* chore: address pull request feedback
This commit is contained in:
Meier Lukas
2024-03-12 21:23:25 +01:00
committed by GitHub
parent 7d5b999ab8
commit c4ff968cbc
31 changed files with 561 additions and 78 deletions

View File

@@ -3,7 +3,7 @@ import { Suspense } from "react";
import type { RouterOutputs } from "@homarr/api";
import { widgetImports } from "..";
import { reduceWidgetOptionsWithDefaultValues, widgetImports } from "..";
import { ClientServerDataInitalizer } from "./client";
import { GlobalItemServerDataProvider } from "./provider";
@@ -32,13 +32,19 @@ interface ItemDataLoaderProps {
item: Board["sections"][number]["items"][number];
}
const ItemDataLoader = /*async*/ ({ item }: ItemDataLoaderProps) => {
const ItemDataLoader = async ({ item }: ItemDataLoaderProps) => {
const widgetImport = widgetImports[item.kind];
if (!("serverDataLoader" in widgetImport)) {
return <ClientServerDataInitalizer id={item.id} serverData={undefined} />;
}
//const loader = await widgetImport.serverDataLoader();
//const data = await loader.default(item as never);
//return <ClientServerDataInitalizer id={item.id} serverData={data} />;
return null;
const loader = await widgetImport.serverDataLoader();
const optionsWithDefault = reduceWidgetOptionsWithDefaultValues(
item.kind,
item.options,
);
const data = await loader.default({
...item,
options: optionsWithDefault as never,
});
return <ClientServerDataInitalizer id={item.id} serverData={data} />;
};