diff --git a/.yarn/cache/@types-hoist-non-react-statics-npm-3.3.6-62547ea2dd-149a4c217d.zip b/.yarn/cache/@types-hoist-non-react-statics-npm-3.3.6-62547ea2dd-149a4c217d.zip new file mode 100644 index 00000000..0fc86d7b Binary files /dev/null and b/.yarn/cache/@types-hoist-non-react-statics-npm-3.3.6-62547ea2dd-149a4c217d.zip differ diff --git a/.yarn/cache/@types-react-beautiful-dnd-npm-13.1.8-a498956230-ccdd4b2aa9.zip b/.yarn/cache/@types-react-beautiful-dnd-npm-13.1.8-a498956230-ccdd4b2aa9.zip new file mode 100644 index 00000000..6435bcfc Binary files /dev/null and b/.yarn/cache/@types-react-beautiful-dnd-npm-13.1.8-a498956230-ccdd4b2aa9.zip differ diff --git a/.yarn/cache/@types-react-redux-npm-7.1.34-e7a6bee789-6750964ec6.zip b/.yarn/cache/@types-react-redux-npm-7.1.34-e7a6bee789-6750964ec6.zip new file mode 100644 index 00000000..0fa41dac Binary files /dev/null and b/.yarn/cache/@types-react-redux-npm-7.1.34-e7a6bee789-6750964ec6.zip differ diff --git a/.yarn/cache/css-box-model-npm-1.2.1-d4e0001730-611e56d76b.zip b/.yarn/cache/css-box-model-npm-1.2.1-d4e0001730-611e56d76b.zip new file mode 100644 index 00000000..6e18a638 Binary files /dev/null and b/.yarn/cache/css-box-model-npm-1.2.1-d4e0001730-611e56d76b.zip differ diff --git a/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip b/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip new file mode 100644 index 00000000..5f7b8a83 Binary files /dev/null and b/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-fe0889169e.zip differ diff --git a/.yarn/cache/memoize-one-npm-5.2.1-ee0f8be979-fd22dbe9a9.zip b/.yarn/cache/memoize-one-npm-5.2.1-ee0f8be979-fd22dbe9a9.zip new file mode 100644 index 00000000..b6d3f0e8 Binary files /dev/null and b/.yarn/cache/memoize-one-npm-5.2.1-ee0f8be979-fd22dbe9a9.zip differ diff --git a/.yarn/cache/prosemirror-view-npm-1.40.0-78f6364aa0-9fde9b415b.zip b/.yarn/cache/prosemirror-view-npm-1.40.1-c34c6f0349-b63335343e.zip similarity index 99% rename from .yarn/cache/prosemirror-view-npm-1.40.0-78f6364aa0-9fde9b415b.zip rename to .yarn/cache/prosemirror-view-npm-1.40.1-c34c6f0349-b63335343e.zip index 44b791d6..8a0973e2 100644 Binary files a/.yarn/cache/prosemirror-view-npm-1.40.0-78f6364aa0-9fde9b415b.zip and b/.yarn/cache/prosemirror-view-npm-1.40.1-c34c6f0349-b63335343e.zip differ diff --git a/.yarn/cache/raf-schd-npm-4.0.3-18f72af738-ecabf0957c.zip b/.yarn/cache/raf-schd-npm-4.0.3-18f72af738-ecabf0957c.zip new file mode 100644 index 00000000..205f3b1f Binary files /dev/null and b/.yarn/cache/raf-schd-npm-4.0.3-18f72af738-ecabf0957c.zip differ diff --git a/.yarn/cache/react-beautiful-dnd-npm-13.1.1-ddc8adf565-5bc04f6dcf.zip b/.yarn/cache/react-beautiful-dnd-npm-13.1.1-ddc8adf565-5bc04f6dcf.zip new file mode 100644 index 00000000..9b7266a7 Binary files /dev/null and b/.yarn/cache/react-beautiful-dnd-npm-13.1.1-ddc8adf565-5bc04f6dcf.zip differ diff --git a/.yarn/cache/react-is-npm-17.0.2-091bbb8db6-2bdb6b93fb.zip b/.yarn/cache/react-is-npm-17.0.2-091bbb8db6-2bdb6b93fb.zip new file mode 100644 index 00000000..1aa2aa60 Binary files /dev/null and b/.yarn/cache/react-is-npm-17.0.2-091bbb8db6-2bdb6b93fb.zip differ diff --git a/.yarn/cache/react-redux-npm-7.2.9-612aa35519-904fac7f49.zip b/.yarn/cache/react-redux-npm-7.2.9-612aa35519-904fac7f49.zip new file mode 100644 index 00000000..8ea07af0 Binary files /dev/null and b/.yarn/cache/react-redux-npm-7.2.9-612aa35519-904fac7f49.zip differ diff --git a/.yarn/cache/redux-npm-4.2.1-e7e2cf2e37-136d98b3d5.zip b/.yarn/cache/redux-npm-4.2.1-e7e2cf2e37-136d98b3d5.zip new file mode 100644 index 00000000..6e591d08 Binary files /dev/null and b/.yarn/cache/redux-npm-4.2.1-e7e2cf2e37-136d98b3d5.zip differ diff --git a/.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-65af4a0732.zip b/.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-65af4a0732.zip new file mode 100644 index 00000000..7dd09dcd Binary files /dev/null and b/.yarn/cache/tiny-invariant-npm-1.3.3-e622f1447c-65af4a0732.zip differ diff --git a/.yarn/cache/use-memo-one-npm-1.1.3-b9dc77468a-3d596e65a6.zip b/.yarn/cache/use-memo-one-npm-1.1.3-b9dc77468a-3d596e65a6.zip new file mode 100644 index 00000000..b720f343 Binary files /dev/null and b/.yarn/cache/use-memo-one-npm-1.1.3-b9dc77468a-3d596e65a6.zip differ diff --git a/apps/nowait-admin/src/main.tsx b/apps/nowait-admin/src/main.tsx index 2ee693d2..cbe34960 100644 --- a/apps/nowait-admin/src/main.tsx +++ b/apps/nowait-admin/src/main.tsx @@ -8,11 +8,11 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; const queryClient = new QueryClient(); createRoot(document.getElementById("root")!).render( - - - - - - - + // + + + + + + // ); diff --git a/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx b/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx index 0b1355b9..cb5e7c74 100644 --- a/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx +++ b/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx @@ -7,6 +7,7 @@ import OperatingTimeSelector from "./components/OperatingTimeSelector"; import NoticeEditor from "./components/NoticeEditor"; import editOrderIcon from "../../assets/edit_order_icon.svg"; import ToggleSwitch from "../AdminHome/components/ToggleSwitch"; +import { DragDropContext, Droppable, Draggable } from "react-beautiful-dnd"; const BoothSection = ({ boothName, @@ -167,6 +168,16 @@ const MenuSection = () => { updatedMenus[index].soldOut = !updatedMenus[index].soldOut; setMenus(updatedMenus); }; + + const handleDragEnd = (result: any) => { + if (!result.destination) return; + + const reordered = Array.from(menus); + const [removed] = reordered.splice(result.source.index, 1); + reordered.splice(result.destination.index, 0, removed); + setMenus(reordered); + }; + return (
@@ -186,36 +197,76 @@ const MenuSection = () => {

{menus.length}개의 메뉴

-

품절 표시

+ {!editMode &&

품절 표시

}
+
- {menus.map((menu, idx) => ( -
-
-
- placeholder -
-
- {menu.name} - {menu.price} + + + {(provided) => ( +
+ {menus.map((menu, idx) => ( + + {(provided) => ( +
+
+
+ placeholder +
+
+ + {menu.name} + + + {menu.price} + +
+
+ +
+ {editMode ? ( + 순서 변경 + ) : ( + toggleSoldOut(idx)} + /> + )} +
+
+ )} +
+ ))} + {provided.placeholder}
-
-
- {editMode ? ( - 순서 변경 - ) : ( - toggleSoldOut(idx)} - /> - )} -
-
- ))} + )} + +
); diff --git a/package.json b/package.json index 791d4208..4fac4960 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "prosemirror-model": "^1.25.2", "prosemirror-state": "^1.4.3", "prosemirror-transform": "^1.10.4", + "react-beautiful-dnd": "^13.1.1", "react-quill": "^2.0.0", "react-toastify": "^11.0.5", "zustand": "^5.0.6" diff --git a/yarn.lock b/yarn.lock index ea2f822d..9d31af2f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -192,7 +192,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": +"@babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.27.6 resolution: "@babel/runtime@npm:7.27.6" checksum: 10c0/89726be83f356f511dcdb74d3ea4d873a5f0cf0017d4530cb53aa27380c01ca102d573eff8b8b77815e624b1f8c24e7f0311834ad4fb632c90a770fda00bd4c8 @@ -1944,6 +1944,16 @@ __metadata: languageName: node linkType: hard +"@types/hoist-non-react-statics@npm:^3.3.0": + version: 3.3.6 + resolution: "@types/hoist-non-react-statics@npm:3.3.6" + dependencies: + "@types/react": "npm:*" + hoist-non-react-statics: "npm:^3.3.0" + checksum: 10c0/149a4c217d81f21f8a1e152160a59d5b99b6a9aa6d354385d5f5bc02760cbf1e170a8442ba92eb653befff44b0c5bc2234bb77ce33e0d11a65f779e8bab5c321 + languageName: node + linkType: hard + "@types/http-cache-semantics@npm:*": version: 4.0.4 resolution: "@types/http-cache-semantics@npm:4.0.4" @@ -2009,6 +2019,15 @@ __metadata: languageName: node linkType: hard +"@types/react-beautiful-dnd@npm:^13": + version: 13.1.8 + resolution: "@types/react-beautiful-dnd@npm:13.1.8" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/ccdd4b2aa9e35cba4e51f3c673c2caa5bb67b6dee562d4b07ac3d3547cd68fd1ee9f21b95d55972087bdd4bdb340e256cccedb20f7129c273f24214f334708aa + languageName: node + linkType: hard + "@types/react-dom@npm:^19.1.2": version: 19.1.6 resolution: "@types/react-dom@npm:19.1.6" @@ -2018,6 +2037,18 @@ __metadata: languageName: node linkType: hard +"@types/react-redux@npm:^7.1.20": + version: 7.1.34 + resolution: "@types/react-redux@npm:7.1.34" + dependencies: + "@types/hoist-non-react-statics": "npm:^3.3.0" + "@types/react": "npm:*" + hoist-non-react-statics: "npm:^3.3.0" + redux: "npm:^4.0.0" + checksum: 10c0/6750964ec656eb6973b0e4fda787549aee5dbc266a0f0e78fc9efb417b4965c0b060d10b99a7b7fa0c8812b8a0a07d97a1ef46d094bf64fee07144e8bbad781a + languageName: node + linkType: hard + "@types/react-transition-group@npm:^4": version: 4.4.12 resolution: "@types/react-transition-group@npm:4.4.12" @@ -2027,7 +2058,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^19.1.0, @types/react@npm:^19.1.2": +"@types/react@npm:*, @types/react@npm:^19.1.0, @types/react@npm:^19.1.2": version: 19.1.8 resolution: "@types/react@npm:19.1.8" dependencies: @@ -2848,6 +2879,15 @@ __metadata: languageName: node linkType: hard +"css-box-model@npm:^1.2.0": + version: 1.2.1 + resolution: "css-box-model@npm:1.2.1" + dependencies: + tiny-invariant: "npm:^1.0.6" + checksum: 10c0/611e56d76b16e4e21956ed9fa53f1936fbbfaccd378659587e9c929f342037fc6c062f8af9447226e11fe7c95e31e6c007a37e592f9bff4c2d40e6915553104a + languageName: node + linkType: hard + "csstype@npm:^3.0.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -3928,6 +3968,15 @@ __metadata: languageName: node linkType: hard +"hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + languageName: node + linkType: hard + "hpagent@npm:^1.2.0": version: 1.2.0 resolution: "hpagent@npm:1.2.0" @@ -4574,6 +4623,14 @@ __metadata: languageName: node linkType: hard + +"memoize-one@npm:^5.1.1": + version: 5.2.1 + resolution: "memoize-one@npm:5.2.1" + checksum: 10c0/fd22dbe9a978a2b4f30d6a491fc02fb90792432ad0dab840dc96c1734d2bd7c9cdeb6a26130ec60507eb43230559523615873168bcbe8fafab221c30b11d54c1 + languageName: node + linkType: hard + "merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -4764,6 +4821,7 @@ __metadata: prosemirror-model: "npm:^1.25.2" prosemirror-state: "npm:^1.4.3" prosemirror-transform: "npm:^1.10.4" + react-beautiful-dnd: "npm:^13.1.1" react-quill: "npm:^2.0.0" react-toastify: "npm:^11.0.5" turbo: "npm:^2.5.5" @@ -4942,6 +5000,7 @@ __metadata: "@toast-ui/react-editor": "npm:^3.2.3" "@types/node": "npm:^24.0.3" "@types/react": "npm:^19.1.2" + "@types/react-beautiful-dnd": "npm:^13" "@types/react-dom": "npm:^19.1.2" "@vitejs/plugin-react": "npm:^4.4.1" autoprefixer: "npm:^10.4.20" @@ -4957,6 +5016,7 @@ __metadata: prosemirror-state: "npm:^1.4.3" prosemirror-transform: "npm:^1.10.4" react: "npm:^19.1.0" + react-beautiful-dnd: "npm:^13.1.1" react-dom: "npm:^19.1.0" react-quill: "npm:^2.0.0" react-router: "npm:^7.6.2" @@ -5300,7 +5360,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.2": +"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -5598,6 +5658,31 @@ __metadata: languageName: node linkType: hard +"raf-schd@npm:^4.0.2": + version: 4.0.3 + resolution: "raf-schd@npm:4.0.3" + checksum: 10c0/ecabf0957c05fad059779bddcd992f1a9d3a35dfea439a6f0935c382fcf4f7f7fa60489e467b4c2db357a3665167d2a379782586b59712bb36c766e02824709b + languageName: node + linkType: hard + +"react-beautiful-dnd@npm:^13.1.1": + version: 13.1.1 + resolution: "react-beautiful-dnd@npm:13.1.1" + dependencies: + "@babel/runtime": "npm:^7.9.2" + css-box-model: "npm:^1.2.0" + memoize-one: "npm:^5.1.1" + raf-schd: "npm:^4.0.2" + react-redux: "npm:^7.2.0" + redux: "npm:^4.0.4" + use-memo-one: "npm:^1.1.1" + peerDependencies: + react: ^16.8.5 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.5 || ^17.0.0 || ^18.0.0 + checksum: 10c0/5bc04f6dcfededc6e5c90e696cda07816a018eada52f7438ded839f03786e3f319aa8a0bc7b14b86fb26a12c0e5ba53e8c5a4bf3832a8f827dd70f1410675525 + languageName: node + linkType: hard + "react-countup@npm:^6.5.3": version: 6.5.3 resolution: "react-countup@npm:6.5.3" @@ -5633,13 +5718,20 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.8.1": +"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 languageName: node linkType: hard +"react-is@npm:^17.0.2": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + "react-quill@npm:^2.0.0": version: 2.0.0 resolution: "react-quill@npm:2.0.0" @@ -5654,6 +5746,27 @@ __metadata: languageName: node linkType: hard +"react-redux@npm:^7.2.0": + version: 7.2.9 + resolution: "react-redux@npm:7.2.9" + dependencies: + "@babel/runtime": "npm:^7.15.4" + "@types/react-redux": "npm:^7.1.20" + hoist-non-react-statics: "npm:^3.3.2" + loose-envify: "npm:^1.4.0" + prop-types: "npm:^15.7.2" + react-is: "npm:^17.0.2" + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/904fac7f493942585ed7ebbd693b4f6b5c09c292366b4550e887ba1a2e83a92c55f0ddc35161d4ba87e3fadb6c681a59003f58df6335e5d2ddd72b06a557851d + languageName: node + linkType: hard + "react-refresh@npm:^0.17.0": version: 0.17.0 resolution: "react-refresh@npm:0.17.0" @@ -5732,6 +5845,15 @@ __metadata: languageName: node linkType: hard +"redux@npm:^4.0.0, redux@npm:^4.0.4": + version: 4.2.1 + resolution: "redux@npm:4.2.1" + dependencies: + "@babel/runtime": "npm:^7.9.2" + checksum: 10c0/136d98b3d5dbed1cd6279c8c18a6a74c416db98b8a432a46836bdd668475de6279a2d4fd9d1363f63904e00f0678a8a3e7fa532c897163340baf1e71bb42c742 + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.5.1": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" @@ -6205,6 +6327,13 @@ __metadata: languageName: node linkType: hard +"tiny-invariant@npm:^1.0.6": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 10c0/65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a + languageName: node + linkType: hard + "tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13": version: 0.2.14 resolution: "tinyglobby@npm:0.2.14" @@ -6499,6 +6628,15 @@ __metadata: languageName: node linkType: hard +"use-memo-one@npm:^1.1.1": + version: 1.1.3 + resolution: "use-memo-one@npm:1.1.3" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/3d596e65a6b47b2f1818061599738e00daad1f9a9bb4e5ce1f014b20a35b297e50fe4bf1d8c1699ab43ea97f01f84649a736c15ceff96de83bfa696925f6cc6b + languageName: node + linkType: hard + "use-sync-external-store@npm:^1.4.0": version: 1.5.0 resolution: "use-sync-external-store@npm:1.5.0"