feat(boards): add responsive layout system (#2271)
This commit is contained in:
@@ -1,34 +1,6 @@
|
||||
import { objectEntries } from "@homarr/common";
|
||||
import type { BoardSize } from "@homarr/old-schema";
|
||||
|
||||
import type { ValidAnalyseConfig } from "../analyse/types";
|
||||
import type { BoardSelectionMap } from "../components/initial/board-selection-card";
|
||||
|
||||
const boardSizeSuffix: Record<BoardSize, string> = {
|
||||
lg: "large",
|
||||
md: "medium",
|
||||
sm: "small",
|
||||
};
|
||||
|
||||
export const createBoardName = (fileName: string, boardSize: BoardSize) => {
|
||||
return `${fileName.replace(".json", "")}-${boardSizeSuffix[boardSize]}`;
|
||||
};
|
||||
|
||||
export const prepareBoards = (analyseConfigs: ValidAnalyseConfig[], selections: BoardSelectionMap) => {
|
||||
return analyseConfigs.flatMap(({ name, config }) => {
|
||||
const selectedSizes = selections.get(name);
|
||||
if (!selectedSizes) return [];
|
||||
|
||||
return objectEntries(selectedSizes)
|
||||
.map(([size, selected]) => {
|
||||
if (!selected) return null;
|
||||
|
||||
return {
|
||||
name: createBoardName(name, size),
|
||||
size,
|
||||
config,
|
||||
};
|
||||
})
|
||||
.filter((board) => board !== null);
|
||||
});
|
||||
return analyseConfigs.filter(({ name }) => selections.get(name));
|
||||
};
|
||||
|
||||
@@ -4,11 +4,12 @@ import { mapApp, mapWidget } from "../mappers/map-item";
|
||||
|
||||
export const prepareItems = (
|
||||
{ apps, widgets }: Pick<OldmarrConfig, "apps" | "widgets">,
|
||||
boardSize: BoardSize,
|
||||
appsMap: Map<string, { id: string }>,
|
||||
sectionMap: Map<string, { id: string }>,
|
||||
layoutMap: Record<BoardSize, string>,
|
||||
boardId: string,
|
||||
) =>
|
||||
widgets
|
||||
.map((widget) => mapWidget(widget, boardSize, appsMap, sectionMap))
|
||||
.concat(apps.map((app) => mapApp(app, boardSize, appsMap, sectionMap)))
|
||||
.map((widget) => mapWidget(widget, appsMap, sectionMap, layoutMap, boardId))
|
||||
.concat(apps.map((app) => mapApp(app, appsMap, sectionMap, layoutMap, boardId)))
|
||||
.filter((widget) => widget !== null);
|
||||
|
||||
@@ -8,14 +8,6 @@ export const prepareSingleImport = (config: OldmarrConfig, settings: OldmarrImpo
|
||||
|
||||
return {
|
||||
preparedApps: prepareApps(validAnalyseConfigs),
|
||||
preparedBoards: settings.onlyImportApps
|
||||
? []
|
||||
: [
|
||||
{
|
||||
name: settings.name,
|
||||
size: settings.screenSize,
|
||||
config,
|
||||
},
|
||||
],
|
||||
preparedBoards: settings.onlyImportApps ? [] : validAnalyseConfigs,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user