Files
homebox/frontend/composables/use-preferences.ts
Tonya f66624774e Change Item Card to use object contain by default for images (#1020)
* feat: add legacy image fit preference and adjustable image display in card component

* feat: add blurred bg image when object contain

* fix: add alt text for image and improve objectContain
2025-09-24 16:09:15 +01:00

72 lines
1.9 KiB
TypeScript

import type { Ref } from "vue";
import type { ItemSummary } from "~/lib/api/types/data-contracts";
import type { DaisyTheme } from "~~/lib/data/themes";
export type ViewType = "table" | "card";
export type DuplicateSettings = {
copyMaintenance: boolean;
copyAttachments: boolean;
copyCustomFields: boolean;
copyPrefixOverride: string | null;
};
export type LocationViewPreferences = {
showDetails: boolean;
showEmpty: boolean;
editorAdvancedView: boolean;
itemDisplayView: ViewType;
theme: DaisyTheme;
itemsPerTablePage: number;
tableHeaders?: {
value: keyof ItemSummary;
enabled: boolean;
}[];
displayLegacyHeader: boolean;
legacyImageFit: boolean;
language?: string;
overrideFormatLocale?: string;
duplicateSettings: DuplicateSettings;
shownMultiTabWarning: boolean;
quickActions: {
enabled: boolean;
};
};
/**
* 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,
legacyImageFit: false,
language: null,
overrideFormatLocale: null,
duplicateSettings: {
copyMaintenance: false,
copyAttachments: true,
copyCustomFields: true,
copyPrefixOverride: null,
},
shownMultiTabWarning: false,
quickActions: {
enabled: true,
},
},
{ 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>;
}