From a2402f37a07764c36fb44a5a4131faeaab60ecc3 Mon Sep 17 00:00:00 2001 From: static Date: Wed, 22 Jan 2025 13:22:16 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=EC=97=90?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8A=94=20BottomSheet=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20(WiP)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- pnpm-lock.yaml | 82 +++++++++---------- src/lib/components/BottomSheet.svelte | 2 +- .../molecules/Categories/Categories.svelte | 19 +++++ .../Categories/Category.svelte} | 4 +- src/lib/molecules/Categories/index.ts | 2 + src/lib/molecules/Categories/service.ts | 6 ++ src/lib/molecules/SubCategories.svelte | 57 +++++++++++++ src/lib/organisms/Category/Category.svelte | 24 ++---- src/lib/organisms/Category/service.ts | 7 -- .../(fullscreen)/file/[id]/+page.svelte | 15 +++- .../file/[id]/AddToCategoryBottomSheet.svelte | 42 ++++++++++ src/routes/(fullscreen)/file/[id]/service.ts | 9 ++ 13 files changed, 199 insertions(+), 72 deletions(-) create mode 100644 src/lib/molecules/Categories/Categories.svelte rename src/lib/{organisms/Category/SubCategory.svelte => molecules/Categories/Category.svelte} (93%) create mode 100644 src/lib/molecules/Categories/index.ts create mode 100644 src/lib/molecules/Categories/service.ts create mode 100644 src/lib/molecules/SubCategories.svelte create mode 100644 src/routes/(fullscreen)/file/[id]/AddToCategoryBottomSheet.svelte diff --git a/package.json b/package.json index 1830e27..9e31c9d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.2", "prettier-plugin-tailwindcss": "^0.6.9", - "svelte": "^5.17.1", + "svelte": "^5.19.1", "svelte-check": "^4.1.3", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8fafd8..9ed4442 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,13 +41,13 @@ importers: version: 1.2.12 '@sveltejs/adapter-node': specifier: ^5.2.11 - version: 5.2.11(@sveltejs/kit@2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5))) + version: 5.2.11(@sveltejs/kit@2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5))) '@sveltejs/kit': specifier: ^2.15.2 - version: 2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)) + version: 2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)) '@sveltejs/vite-plugin-svelte': specifier: ^4.0.4 - version: 4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)) + version: 4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)) '@types/file-saver': specifier: ^2.0.7 version: 2.0.7 @@ -77,7 +77,7 @@ importers: version: 9.1.0(eslint@9.17.0(jiti@2.4.2)) eslint-plugin-svelte: specifier: ^2.46.1 - version: 2.46.1(eslint@9.17.0(jiti@2.4.2))(svelte@5.17.1) + version: 2.46.1(eslint@9.17.0(jiti@2.4.2))(svelte@5.19.1) eslint-plugin-tailwindcss: specifier: ^3.17.5 version: 3.17.5(tailwindcss@3.4.17) @@ -107,16 +107,16 @@ importers: version: 3.4.2 prettier-plugin-svelte: specifier: ^3.3.2 - version: 3.3.2(prettier@3.4.2)(svelte@5.17.1) + version: 3.3.2(prettier@3.4.2)(svelte@5.19.1) prettier-plugin-tailwindcss: specifier: ^0.6.9 - version: 0.6.9(prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.17.1))(prettier@3.4.2) + version: 0.6.9(prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.19.1))(prettier@3.4.2) svelte: - specifier: ^5.17.1 - version: 5.17.1 + specifier: ^5.19.1 + version: 5.19.1 svelte-check: specifier: ^4.1.3 - version: 4.1.3(picomatch@4.0.2)(svelte@5.17.1)(typescript@5.7.3) + version: 4.1.3(picomatch@4.0.2)(svelte@5.19.1)(typescript@5.7.3) tailwindcss: specifier: ^3.4.17 version: 3.4.17 @@ -128,7 +128,7 @@ importers: version: 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.7.3) unplugin-icons: specifier: ^0.22.0 - version: 0.22.0(svelte@5.17.1) + version: 0.22.0(svelte@5.19.1) vite: specifier: ^5.4.11 version: 5.4.11(@types/node@22.10.5) @@ -1114,8 +1114,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@1.3.2: - resolution: {integrity: sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==} + esrap@1.4.3: + resolution: {integrity: sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -1992,8 +1992,8 @@ packages: svelte: optional: true - svelte@5.17.1: - resolution: {integrity: sha512-HitqD0XhU9OEytPuux/XYzxle4+7D8+fIb1tHbwMzOtBzDZZO+ESEuwMbahJ/3JoklfmRPB/Gzp74L87Qrxfpw==} + svelte@5.19.1: + resolution: {integrity: sha512-H/Vs2O51bwILZbaNUSdr4P1NbLpOGsxl4jJAjd88ELjzRgeRi1BHqexcVGannDr7D1pmTYWWajzHOM7bMbtB9Q==} engines: {node: '>=18'} tailwindcss@3.4.17: @@ -2573,17 +2573,17 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.30.1': optional: true - '@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))': + '@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))': dependencies: '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.1) '@rollup/plugin-json': 6.1.0(rollup@4.30.1) '@rollup/plugin-node-resolve': 16.0.0(rollup@4.30.1) - '@sveltejs/kit': 2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)) + '@sveltejs/kit': 2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)) rollup: 4.30.1 - '@sveltejs/kit@2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5))': + '@sveltejs/kit@2.15.2(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -2595,27 +2595,27 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.0 - svelte: 5.17.1 + svelte: 5.19.1 tiny-glob: 0.2.9 vite: 5.4.11(@types/node@22.10.5) - '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5))': + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)) debug: 4.4.0 - svelte: 5.17.1 + svelte: 5.19.1 vite: 5.4.11(@types/node@22.10.5) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5))': + '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.17.1)(vite@5.4.11(@types/node@22.10.5)) + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)))(svelte@5.19.1)(vite@5.4.11(@types/node@22.10.5)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 - svelte: 5.17.1 + svelte: 5.19.1 vite: 5.4.11(@types/node@22.10.5) vitefu: 1.0.5(vite@5.4.11(@types/node@22.10.5)) transitivePeerDependencies: @@ -3001,7 +3001,7 @@ snapshots: dependencies: eslint: 9.17.0(jiti@2.4.2) - eslint-plugin-svelte@2.46.1(eslint@9.17.0(jiti@2.4.2))(svelte@5.17.1): + eslint-plugin-svelte@2.46.1(eslint@9.17.0(jiti@2.4.2))(svelte@5.19.1): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.0 @@ -3014,9 +3014,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 semver: 7.6.3 - svelte-eslint-parser: 0.43.0(svelte@5.17.1) + svelte-eslint-parser: 0.43.0(svelte@5.19.1) optionalDependencies: - svelte: 5.17.1 + svelte: 5.19.1 transitivePeerDependencies: - ts-node @@ -3099,7 +3099,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@1.3.2: + esrap@1.4.3: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -3683,16 +3683,16 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.17.1): + prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.19.1): dependencies: prettier: 3.4.2 - svelte: 5.17.1 + svelte: 5.19.1 - prettier-plugin-tailwindcss@0.6.9(prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.17.1))(prettier@3.4.2): + prettier-plugin-tailwindcss@0.6.9(prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.19.1))(prettier@3.4.2): dependencies: prettier: 3.4.2 optionalDependencies: - prettier-plugin-svelte: 3.3.2(prettier@3.4.2)(svelte@5.17.1) + prettier-plugin-svelte: 3.3.2(prettier@3.4.2)(svelte@5.19.1) prettier@3.4.2: {} @@ -3828,19 +3828,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.1.3(picomatch@4.0.2)(svelte@5.17.1)(typescript@5.7.3): + svelte-check@4.1.3(picomatch@4.0.2)(svelte@5.19.1)(typescript@5.7.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 fdir: 6.4.2(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.17.1 + svelte: 5.19.1 typescript: 5.7.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.43.0(svelte@5.17.1): + svelte-eslint-parser@0.43.0(svelte@5.19.1): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -3848,9 +3848,9 @@ snapshots: postcss: 8.4.49 postcss-scss: 4.0.9(postcss@8.4.49) optionalDependencies: - svelte: 5.17.1 + svelte: 5.19.1 - svelte@5.17.1: + svelte@5.19.1: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -3861,7 +3861,7 @@ snapshots: axobject-query: 4.1.0 clsx: 2.1.1 esm-env: 1.2.2 - esrap: 1.3.2 + esrap: 1.4.3 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.17 @@ -3957,7 +3957,7 @@ snapshots: undici-types@6.20.0: {} - unplugin-icons@0.22.0(svelte@5.17.1): + unplugin-icons@0.22.0(svelte@5.19.1): dependencies: '@antfu/install-pkg': 0.5.0 '@antfu/utils': 0.7.10 @@ -3967,7 +3967,7 @@ snapshots: local-pkg: 0.5.1 unplugin: 2.1.2 optionalDependencies: - svelte: 5.17.1 + svelte: 5.19.1 transitivePeerDependencies: - supports-color diff --git a/src/lib/components/BottomSheet.svelte b/src/lib/components/BottomSheet.svelte index 3d3fbd6..a283957 100644 --- a/src/lib/components/BottomSheet.svelte +++ b/src/lib/components/BottomSheet.svelte @@ -28,7 +28,7 @@
e.stopPropagation()} - class="flex max-h-[70vh] min-h-[30vh] rounded-t-2xl bg-white px-4" + class="flex max-h-[70vh] min-h-[30vh] overflow-y-auto rounded-t-2xl bg-white px-4" transition:fly={{ y: 100, duration: 200 }} > {@render children?.()} diff --git a/src/lib/molecules/Categories/Categories.svelte b/src/lib/molecules/Categories/Categories.svelte new file mode 100644 index 0000000..2fdbfad --- /dev/null +++ b/src/lib/molecules/Categories/Categories.svelte @@ -0,0 +1,19 @@ + + +
+ {#each categories as category} + + {/each} +
diff --git a/src/lib/organisms/Category/SubCategory.svelte b/src/lib/molecules/Categories/Category.svelte similarity index 93% rename from src/lib/organisms/Category/SubCategory.svelte rename to src/lib/molecules/Categories/Category.svelte index 212b591..18d6a83 100644 --- a/src/lib/organisms/Category/SubCategory.svelte +++ b/src/lib/molecules/Categories/Category.svelte @@ -1,14 +1,14 @@ + +
+ {#snippet subCategoryCreate()} + +
+ +

카테고리 추가하기

+
+
+ {/snippet} + + {#if subCategoryCreatePosition === "top"} + {@render subCategoryCreate()} + {/if} + {#key info} + + {/key} + {#if subCategoryCreatePosition === "bottom"} + {@render subCategoryCreate()} + {/if} +
diff --git a/src/lib/organisms/Category/Category.svelte b/src/lib/organisms/Category/Category.svelte index cfe1809..b3cbd59 100644 --- a/src/lib/organisms/Category/Category.svelte +++ b/src/lib/organisms/Category/Category.svelte @@ -1,23 +1,21 @@ + + +
+ {#if $category} + + (category = getCategoryInfo(id, $masterKeyStore?.get(1)?.key!))} + subCategoryCreatePosition="top" + /> + {#if $category.id !== "root"} + + + + {/if} + {/if} +
+
diff --git a/src/routes/(fullscreen)/file/[id]/service.ts b/src/routes/(fullscreen)/file/[id]/service.ts index fcc5ce7..f48c16e 100644 --- a/src/routes/(fullscreen)/file/[id]/service.ts +++ b/src/routes/(fullscreen)/file/[id]/service.ts @@ -1,4 +1,6 @@ +import { callPostApi } from "$lib/hooks"; import { getFileCache, storeFileCache, downloadFile } from "$lib/modules/file"; +import type { CategoryFileAddRequest } from "$lib/server/schemas"; export const requestFileDownload = async ( fileId: number, @@ -12,3 +14,10 @@ export const requestFileDownload = async ( storeFileCache(fileId, fileBuffer); // Intended return fileBuffer; }; + +export const requestFileAdditionToCategory = async (fileId: number, categoryId: number) => { + const res = await callPostApi(`/api/category/${categoryId}/file/add`, { + file: fileId, + }); + return res.ok; +};