From da1af0af99be933b5940ccd98ba0d9fbd0d4cfbb Mon Sep 17 00:00:00 2001 From: ernstmul Date: Thu, 23 Jan 2025 11:15:09 +0100 Subject: [PATCH] Move menu bottomsheet to console --- package.json | 4 +- pnpm-lock.yaml | 28 +++++----- .../bottom-sheet/SheetMenuBlock.svelte | 54 +++++++++++++++++++ .../bottom-sheet/bottomSheetMenu.svelte | 50 +++++++++++++++++ src/lib/components/bottom-sheet/index.ts | 27 ++++++++++ src/lib/components/breadcrumbs.svelte | 3 +- src/lib/components/index.ts | 1 + src/lib/components/navbar.svelte | 5 +- 8 files changed, 152 insertions(+), 20 deletions(-) create mode 100644 src/lib/components/bottom-sheet/SheetMenuBlock.svelte create mode 100644 src/lib/components/bottom-sheet/bottomSheetMenu.svelte create mode 100644 src/lib/components/bottom-sheet/index.ts diff --git a/package.json b/package.json index b7076fd06..1cdcfbac4 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "@appwrite.io/console": "https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@9193", "@appwrite.io/pink": "0.25.0", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@72b1958", - "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1fe7674", + "@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5824678", + "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5824678", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad9f34fc3..8662c3c61 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@72b1958 - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@72b1958(svelte@4.2.19) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5824678 + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5824678(svelte@4.2.19) '@appwrite.io/pink-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1fe7674 - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1fe7674(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5824678 + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5824678(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -218,14 +218,14 @@ packages: resolution: {tarball: https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@9193} version: 1.2.1 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1fe7674343bab0dc86d4cbc98c74055c9e87be0b': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1fe7674343bab0dc86d4cbc98c74055c9e87be0b} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5824678': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5824678} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@72b1958': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@72b1958} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@58246784b25c0184134dd08be1bd13639d8c6863': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@58246784b25c0184134dd08be1bd13639d8c6863} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 @@ -233,8 +233,8 @@ packages: '@appwrite.io/pink-icons@0.25.0': resolution: {integrity: sha512-0O3i2oEuh5mWvjO80i+X6rbzrWLJ1m5wmv2/M3a1p2PyBJsFxN8xQMTEmTn3Wl/D26SsM7SpzbdW6gmfgoVU9Q==} - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1fe7674': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1fe7674} + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5824678': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5824678} version: 1.0.0-next.85 peerDependencies: react-dom: ^18.0.0 @@ -4041,19 +4041,19 @@ snapshots: '@appwrite.io/console@https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@9193': {} - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1fe7674343bab0dc86d4cbc98c74055c9e87be0b(svelte@4.2.19)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5824678(svelte@4.2.19)': dependencies: svelte: 4.2.19 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@72b1958(svelte@4.2.19)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@58246784b25c0184134dd08be1bd13639d8c6863(svelte@4.2.19)': dependencies: svelte: 4.2.19 '@appwrite.io/pink-icons@0.25.0': {} - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1fe7674(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19)': + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5824678(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19)': dependencies: - '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1fe7674343bab0dc86d4cbc98c74055c9e87be0b(svelte@4.2.19) + '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@58246784b25c0184134dd08be1bd13639d8c6863(svelte@4.2.19) '@floating-ui/dom': 1.6.12 '@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.2(svelte@4.2.19))(svelte@4.2.19) '@melt-ui/svelte': 0.86.2(svelte@4.2.19) diff --git a/src/lib/components/bottom-sheet/SheetMenuBlock.svelte b/src/lib/components/bottom-sheet/SheetMenuBlock.svelte new file mode 100644 index 000000000..51d5e1c7a --- /dev/null +++ b/src/lib/components/bottom-sheet/SheetMenuBlock.svelte @@ -0,0 +1,54 @@ + + +{#if menu.title} + {menu.title} +{/if} + + {#each menu.items as menuItem} + {#if menuItem.href} + { + isOpen = false; + }}> + {menuItem.name} + + {:else} + { + if (menuItem.subMenu) { + navigateSubMenu(menuItem.subMenu); + } else if (menuItem.onClick !== undefined) { + menuItem.onClick(); + isOpen = false; + } + }}> + {menuItem.name} + + {/if} + {/each} + + + diff --git a/src/lib/components/bottom-sheet/bottomSheetMenu.svelte b/src/lib/components/bottom-sheet/bottomSheetMenu.svelte new file mode 100644 index 000000000..8934de273 --- /dev/null +++ b/src/lib/components/bottom-sheet/bottomSheetMenu.svelte @@ -0,0 +1,50 @@ + + + +
+
+ {#if activeMenu.bottom}{/if} +
+
diff --git a/src/lib/components/bottom-sheet/index.ts b/src/lib/components/bottom-sheet/index.ts new file mode 100644 index 000000000..80cb607e4 --- /dev/null +++ b/src/lib/components/bottom-sheet/index.ts @@ -0,0 +1,27 @@ +import Menu from './bottomSheetMenu.svelte'; +import type { ComponentType } from 'svelte'; + +export type $$Props = { + isOpen: boolean; + useSlots?: boolean; + sheetContainerRef?: HTMLDialogElement; + showDivider?: boolean; + menu: SheetMenu; +}; +export type SubMenu = { + title?: string; + items: MenuItem[]; +}; + +type MenuItem = { + name: string; + leadingIcon?: ComponentType; + trailingIcon?: ComponentType; + onClick?: () => void; + href?: string; + subMenu?: { top: SubMenu; bottom: SubMenu }; +}; + +export type SheetMenu = { top: SubMenu; bottom: SubMenu }; + +export default { Menu }; diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index f5bf1cd89..57cc3e7cc 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -1,7 +1,8 @@