+
{services.map((group) => (
-
+ layout={settings.layout?.[group.name]}
+ fiveColumns={settings.fiveColumns}
+ disableCollapse={settings.disableCollapse}
+ />
))}
)}
{bookmarks?.length > 0 && (
-
+
{bookmarks.map((group) => (
+ bookmarks={group}
+ layout={settings.layout?.[group.name]}
+ disableCollapse={settings.disableCollapse}
+ />
))}
)}
- {!initialSettings?.color && }
+ {!settings?.color && }
- {!initialSettings?.theme && }
+ {!settings.theme && }
- {!initialSettings?.hideVersion && }
+ {!settings.hideVersion && }
diff --git a/src/utils/config/api-response.js b/src/utils/config/api-response.js
index e00846db..d3c8bb9e 100644
--- a/src/utils/config/api-response.js
+++ b/src/utils/config/api-response.js
@@ -34,6 +34,16 @@ export async function bookmarksResponse() {
if (!bookmarks) return [];
+ let initialSettings;
+
+ try {
+ initialSettings = await getSettings();
+ } catch (e) {
+ console.error("Failed to load settings.yaml, please check for errors");
+ if (e) console.error(e.toString());
+ initialSettings = {};
+ }
+
// map easy to write YAML objects into easy to consume JS arrays
const bookmarksArray = bookmarks.map((group) => ({
name: Object.keys(group)[0],
@@ -43,7 +53,21 @@ export async function bookmarksResponse() {
})),
}));
- return bookmarksArray;
+ const sortedGroups = [];
+ const unsortedGroups = [];
+ const definedLayouts = initialSettings.layout ? Object.keys(initialSettings.layout) : null;
+
+ bookmarksArray.forEach((group) => {
+ if (definedLayouts) {
+ const layoutIndex = definedLayouts.findIndex(layout => layout === group.name);
+ if (layoutIndex > -1) sortedGroups[layoutIndex] = group;
+ else unsortedGroups.push(group);
+ } else {
+ unsortedGroups.push(group);
+ }
+ });
+
+ return [...sortedGroups.filter(g => g), ...unsortedGroups];
}
export async function widgetsResponse() {
diff --git a/src/utils/layout/columns.js b/src/utils/layout/columns.js
new file mode 100644
index 00000000..4a55b850
--- /dev/null
+++ b/src/utils/layout/columns.js
@@ -0,0 +1,12 @@
+// eslint-disable-next-line import/prefer-default-export
+export const columnMap = [
+ "grid-cols-1 md:grid-cols-1 lg:grid-cols-1",
+ "grid-cols-1 md:grid-cols-1 lg:grid-cols-1",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-2",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-5",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-6",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-7",
+ "grid-cols-1 md:grid-cols-2 lg:grid-cols-8",
+ ];
diff --git a/tailwind.config.js b/tailwind.config.js
index a075f6e9..b2561700 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -59,5 +59,16 @@ module.exports = {
'backdrop-brightness-125',
'backdrop-brightness-150',
'backdrop-brightness-200',
+ 'grid-cols-1',
+ 'md:grid-cols-1',
+ 'md:grid-cols-2',
+ 'lg:grid-cols-1',
+ 'lg:grid-cols-2',
+ 'lg:grid-cols-3',
+ 'lg:grid-cols-4',
+ 'lg:grid-cols-5',
+ 'lg:grid-cols-6',
+ 'lg:grid-cols-7',
+ 'lg:grid-cols-8',
],
}