mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-24 06:28:34 +01:00
* chore: get front end tests passing * chore: add @vue/runtime-core to fix types for $t * chore: sort lockfile * Discard changes to frontend/pnpm-lock.yaml * chore: sort lockfile * chore: fix some type errors * chore: switch from nuxi typecheck to vue-tsc to force a known good version * chore: linting * chore: update pnpm version in frontend test * feat: add proper pagination type (need to sort why it still doesn't work) * chore: format imports and initialize totalPrice in label page to null when no label is present * chore: update pnpm to v9.12.2, merge ItemSummaryPaginationResult with PaginationResult, and handle error in label generator more gracefully * chore: lint --------- Co-authored-by: Matt Kilgore <matthew@kilgore.dev>
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import type { Ref } from "vue";
|
|
import type { TableHeader } 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?: TableHeader[];
|
|
displayHeaderDecor: boolean;
|
|
language?: 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,
|
|
displayHeaderDecor: true,
|
|
language: 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>;
|
|
}
|