mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-21 21:33:02 +01:00
* feat: begin work on topbar refresh * feat: implement search input functionality * feat: add ScannerModal component based on scanner page * feat: add toggle to enable legacy topbar, remove scanner page * feat: update scanner menu item to use SidebarMenuButton for legacy header support * chore: lint * style: make margin and padding more consistent * feat: fun hack * fix: remove uneeded log and class=""
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import type { Ref } from "vue";
|
|
import type { TableHeaderType } from "~/components/Item/View/Table.types";
|
|
import type { DaisyTheme } from "~~/lib/data/themes";
|
|
|
|
export type ViewType = "table" | "card" | "tree";
|
|
|
|
export type LocationViewPreferences = {
|
|
showDetails: boolean;
|
|
showEmpty: boolean;
|
|
editorAdvancedView: boolean;
|
|
itemDisplayView: ViewType;
|
|
theme: DaisyTheme;
|
|
itemsPerTablePage: number;
|
|
tableHeaders?: TableHeaderType[];
|
|
displayLegacyHeader: boolean;
|
|
language?: string;
|
|
overrideFormatLocale?: string;
|
|
};
|
|
|
|
/**
|
|
* useViewPreferences loads the view preferences from local storage and hydrates
|
|
* them. These are reactive and will update the local storage when changed.
|
|
*/
|
|
export function useViewPreferences(): Ref<LocationViewPreferences> {
|
|
const results = useLocalStorage(
|
|
"homebox/preferences/location",
|
|
{
|
|
showDetails: true,
|
|
showEmpty: true,
|
|
editorAdvancedView: false,
|
|
itemDisplayView: "card",
|
|
theme: "homebox",
|
|
itemsPerTablePage: 10,
|
|
displayLegacyHeader: false,
|
|
language: null,
|
|
overrideFormatLocale: null,
|
|
},
|
|
{ mergeDefaults: true }
|
|
);
|
|
|
|
// casting is required because the type returned is removable, however since we
|
|
// use `mergeDefaults` the result _should_ always be present.
|
|
return results as unknown as Ref<LocationViewPreferences>;
|
|
}
|