From 306b55450a286cd9d850b18f3e3b80b3bc9faea7 Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Thu, 28 Mar 2024 15:01:52 +0800 Subject: [PATCH 01/13] feat(toolbar): add `placement` to settings --- .../astro/src/runtime/client/dev-toolbar/apps/settings.ts | 2 +- packages/astro/src/runtime/client/dev-toolbar/settings.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts b/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts index d403fc191bdc..df90da828bb8 100644 --- a/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts +++ b/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts @@ -161,7 +161,7 @@ export default { case 'checkbox': { const astroToggle = document.createElement('astro-dev-toolbar-toggle'); astroToggle.input.addEventListener('change', setting.changeEvent); - astroToggle.input.checked = settings.config[setting.settingKey]; + astroToggle.input.checked = settings.config[setting.settingKey] as boolean; label.append(astroToggle); break; } diff --git a/packages/astro/src/runtime/client/dev-toolbar/settings.ts b/packages/astro/src/runtime/client/dev-toolbar/settings.ts index d031b636da1d..f41a4f8897b6 100644 --- a/packages/astro/src/runtime/client/dev-toolbar/settings.ts +++ b/packages/astro/src/runtime/client/dev-toolbar/settings.ts @@ -1,11 +1,16 @@ +export const placements = ['bottom-left', 'bottom-center', 'bottom-right'] as const; +export type Placement = (typeof placements)[number]; + export interface Settings { disableAppNotification: boolean; verbose: boolean; + placement: Placement; } export const defaultSettings = { disableAppNotification: false, verbose: false, + placement: 'bottom-center', } satisfies Settings; export const settings = getSettings(); @@ -25,7 +30,7 @@ function getSettings() { _settings = { ..._settings, ...JSON.parse(toolbarSettings) }; } - function updateSetting(key: keyof Settings, value: Settings[typeof key]) { + function updateSetting(key: Key, value: Settings[Key]) { _settings[key] = value; localStorage.setItem('astro:dev-toolbar:settings', JSON.stringify(_settings)); } From eca10516434929c19a1eb043558c1cc1990c4219 Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Thu, 28 Mar 2024 15:15:09 +0800 Subject: [PATCH 02/13] feat(toolbar): update `settings.placement` with ` because it only accepts