diff --git a/src/@/components/BookmarkForm.tsx b/src/@/components/BookmarkForm.tsx index 52057e0..21d72a1 100644 --- a/src/@/components/BookmarkForm.tsx +++ b/src/@/components/BookmarkForm.tsx @@ -42,8 +42,13 @@ import { Label } from './ui/Label.tsx'; let configured = false; let duplicated = false; + +let keepOptionsDetailsOpen = false; + const BookmarkForm = () => { - const [openOptions, setOpenOptions] = useState(false); + const [openOptions, setOpenOptions] = useState( + keepOptionsDetailsOpen + ); const [openCollections, setOpenCollections] = useState(false); const [uploadImage, setUploadImage] = useState(false); const [state, setState] = useState<'capturing' | 'uploading' | null>(null); @@ -124,6 +129,10 @@ const BookmarkForm = () => { form.setValue('collection', { name: config.defaultCollection, }); + if (openOptions !== config.keepOptionsDetailsOpen) { + keepOptionsDetailsOpen = config.keepOptionsDetailsOpen; + setOpenOptions(config.keepOptionsDetailsOpen); + } }); }); const getConfigUse = async () => { diff --git a/src/@/components/OptionsForm.tsx b/src/@/components/OptionsForm.tsx index b93a33e..2a853fb 100644 --- a/src/@/components/OptionsForm.tsx +++ b/src/@/components/OptionsForm.tsx @@ -37,6 +37,8 @@ import { SelectTrigger, SelectValue, } from './ui/Select.tsx'; // Import the Select component +import { Checkbox } from './ui/CheckBox.tsx'; +import { Label } from './ui/Label.tsx'; const OptionsForm = () => { const form = useForm({ @@ -47,6 +49,7 @@ const OptionsForm = () => { username: '', password: '', apiKey: '', + keepOptionsDetailsOpen: false, syncBookmarks: false, defaultCollection: 'Unorganized', }, @@ -79,6 +82,7 @@ const OptionsForm = () => { username: '', password: '', apiKey: '', + keepOptionsDetailsOpen: false, syncBookmarks: false, defaultCollection: 'Unorganized', }); @@ -157,6 +161,7 @@ const OptionsForm = () => { baseUrl: values.baseUrl, defaultCollection: values.defaultCollection, syncBookmarks: values.syncBookmarks, + keepOptionsDetailsOpen: values.keepOptionsDetailsOpen, apiKey: values.method === 'apiKey' && values.apiKey ? values.apiKey @@ -303,6 +308,21 @@ const OptionsForm = () => { )} + ( + + + + )} + /> {/* Commented out fields */} {/* -)) -Checkbox.displayName = CheckboxPrimitive.Root.displayName +)); +Checkbox.displayName = CheckboxPrimitive.Root.displayName; -export { Checkbox } +export { Checkbox }; diff --git a/src/@/lib/config.ts b/src/@/lib/config.ts index 7f6f4d6..dadd72f 100644 --- a/src/@/lib/config.ts +++ b/src/@/lib/config.ts @@ -5,6 +5,7 @@ const DEFAULTS: configType = { baseUrl: '', apiKey: '', defaultCollection: 'Unorganized', + keepOptionsDetailsOpen: false, syncBookmarks: false, }; @@ -36,6 +37,7 @@ export async function clearConfig() { baseUrl: '', apiKey: '', defaultCollection: 'Unorganized', + keepOptionsDetailsOpen: false, syncBookmarks: false, }) ); diff --git a/src/@/lib/validators/config.ts b/src/@/lib/validators/config.ts index 2c3d6c5..c9b2597 100644 --- a/src/@/lib/validators/config.ts +++ b/src/@/lib/validators/config.ts @@ -5,6 +5,7 @@ export const configSchema = z.object({ defaultCollection: z.string().optional().default('Unorganized'), apiKey: z.string(), syncBookmarks: z.boolean().optional().default(false), + keepOptionsDetailsOpen: z.boolean().optional().default(false), }); export type configType = z.infer; diff --git a/src/@/lib/validators/optionsForm.ts b/src/@/lib/validators/optionsForm.ts index 2caccbe..5588e70 100644 --- a/src/@/lib/validators/optionsForm.ts +++ b/src/@/lib/validators/optionsForm.ts @@ -5,6 +5,7 @@ export const optionsFormSchema = z.object({ username: z.string(), password: z.string(), syncBookmarks: z.boolean().default(false), + keepOptionsDetailsOpen: z.boolean().default(false), defaultCollection: z.string().optional().default('Unorganized'), useApiKey: z.boolean().default(false), apiKey: z.string().optional(),