From 1138015285ca39cb3909da18737fdbf94ebccf1e Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 16:14:30 +0900 Subject: [PATCH 01/12] =?UTF-8?q?[=F0=9F=94=A8chore]:=20radix-ui=20checkbo?= =?UTF-8?q?x=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=84=A4=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .pnp.cjs | 87 +++++++++++++----- ...eckbox-npm-1.0.4-59bb27e0bf-a4bd259a7e.zip | Bin 0 -> 57517 bytes package.json | 1 + src/pages/MainPage/GameModeCheckBox.tsx | 0 yarn.lock | 28 ++++++ 5 files changed, 91 insertions(+), 25 deletions(-) create mode 100644 .yarn/cache/@radix-ui-react-checkbox-npm-1.0.4-59bb27e0bf-a4bd259a7e.zip create mode 100644 src/pages/MainPage/GameModeCheckBox.tsx diff --git a/.pnp.cjs b/.pnp.cjs index b337d1d7..3342490e 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -29,6 +29,7 @@ const RAW_RUNTIME_STATE = ["@openapitools/openapi-generator-cli", "npm:2.13.1"],\ ["@radix-ui/react-alert-dialog", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.5"],\ ["@radix-ui/react-avatar", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.4"],\ + ["@radix-ui/react-checkbox", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.4"],\ ["@radix-ui/react-dialog", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.5"],\ ["@radix-ui/react-form", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:0.0.3"],\ ["@radix-ui/react-icons", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.3.0"],\ @@ -3800,6 +3801,41 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@radix-ui/react-checkbox", [\ + ["npm:1.0.4", {\ + "packageLocation": "./.yarn/cache/@radix-ui-react-checkbox-npm-1.0.4-59bb27e0bf-a4bd259a7e.zip/node_modules/@radix-ui/react-checkbox/",\ + "packageDependencies": [\ + ["@radix-ui/react-checkbox", "npm:1.0.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.4", {\ + "packageLocation": "./.yarn/__virtual__/@radix-ui-react-checkbox-virtual-9b9582352d/0/cache/@radix-ui-react-checkbox-npm-1.0.4-59bb27e0bf-a4bd259a7e.zip/node_modules/@radix-ui/react-checkbox/",\ + "packageDependencies": [\ + ["@radix-ui/react-checkbox", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.4"],\ + ["@babel/runtime", "npm:7.24.1"],\ + ["@radix-ui/primitive", "npm:1.0.1"],\ + ["@radix-ui/react-compose-refs", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.1"],\ + ["@radix-ui/react-context", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.1"],\ + ["@radix-ui/react-presence", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ + ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ + ["@radix-ui/react-use-previous", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ + ["@radix-ui/react-use-size", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ + ["@types/react", "npm:18.2.73"],\ + ["@types/react-dom", "npm:18.2.23"],\ + ["react", "npm:18.2.0"],\ + ["react-dom", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:18.2.0"]\ + ],\ + "packagePeers": [\ + "@types/react-dom",\ + "@types/react",\ + "react-dom",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@radix-ui/react-collection", [\ ["npm:1.0.3", {\ "packageLocation": "./.yarn/cache/@radix-ui-react-collection-npm-1.0.3-e63f97f38b-cefa56383d.zip/node_modules/@radix-ui/react-collection/",\ @@ -3898,10 +3934,10 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-focus-scope", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.4"],\ ["@radix-ui/react-id", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ ["@radix-ui/react-portal", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.4"],\ - ["@radix-ui/react-presence", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-presence", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ ["@radix-ui/react-slot", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.2"],\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ ["aria-hidden", "npm:1.2.4"],\ @@ -4155,10 +4191,10 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-id", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ ["@radix-ui/react-popper", "virtual:37ef8b00e64ce15a885d05baf0fb25c6d92ec573ce783cda01ccad0381c0c7268834e8ca0e374a73f46fbe6611480d24adf5a726279815ad92cd677ca28793de#npm:1.1.3"],\ ["@radix-ui/react-portal", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.4"],\ - ["@radix-ui/react-presence", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-presence", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ ["@radix-ui/react-slot", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.2"],\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ ["aria-hidden", "npm:1.2.4"],\ @@ -4196,7 +4232,7 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-use-callback-ref", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ ["@radix-ui/react-use-layout-effect", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ ["@radix-ui/react-use-rect", "virtual:5b83e2aca428af3a3a9a0b628ddf44539ac81f956b06ca9079d9d05c26ae97eabb7970470ca3a35965ae94114dd796b1f121f964f24cc4a16eff4790aa149605#npm:1.0.1"],\ - ["@radix-ui/react-use-size", "virtual:5b83e2aca428af3a3a9a0b628ddf44539ac81f956b06ca9079d9d05c26ae97eabb7970470ca3a35965ae94114dd796b1f121f964f24cc4a16eff4790aa149605#npm:1.0.1"],\ + ["@radix-ui/react-use-size", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/rect", "npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ @@ -4248,10 +4284,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@radix-ui-react-presence-virtual-b3c2662503/0/cache/@radix-ui-react-presence-npm-1.0.1-2057bd46b4-90780618b2.zip/node_modules/@radix-ui/react-presence/",\ + ["virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@radix-ui-react-presence-virtual-a4ebc405e6/0/cache/@radix-ui-react-presence-npm-1.0.1-2057bd46b4-90780618b2.zip/node_modules/@radix-ui/react-presence/",\ "packageDependencies": [\ - ["@radix-ui/react-presence", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-presence", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@babel/runtime", "npm:7.24.1"],\ ["@radix-ui/react-compose-refs", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.1"],\ ["@radix-ui/react-use-layout-effect", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ @@ -4318,7 +4354,7 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-id", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ ["@radix-ui/react-use-callback-ref", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ ["react", "npm:18.2.0"],\ @@ -4353,10 +4389,10 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-context", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.1"],\ ["@radix-ui/react-direction", "virtual:3affce9c11baacd608cc2c2c128122254ffffcc945d410baea812847fe4aaef34a2c0a141170303722127d3399347898f47dec512d376168b75b0712359ee431#npm:1.0.1"],\ ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/react-use-layout-effect", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ - ["@radix-ui/react-use-previous", "virtual:3affce9c11baacd608cc2c2c128122254ffffcc945d410baea812847fe4aaef34a2c0a141170303722127d3399347898f47dec512d376168b75b0712359ee431#npm:1.0.1"],\ - ["@radix-ui/react-use-size", "virtual:5b83e2aca428af3a3a9a0b628ddf44539ac81f956b06ca9079d9d05c26ae97eabb7970470ca3a35965ae94114dd796b1f121f964f24cc4a16eff4790aa149605#npm:1.0.1"],\ + ["@radix-ui/react-use-previous", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ + ["@radix-ui/react-use-size", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ ["react", "npm:18.2.0"],\ @@ -4412,10 +4448,10 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-context", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.1"],\ ["@radix-ui/react-direction", "virtual:3affce9c11baacd608cc2c2c128122254ffffcc945d410baea812847fe4aaef34a2c0a141170303722127d3399347898f47dec512d376168b75b0712359ee431#npm:1.0.1"],\ ["@radix-ui/react-id", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ - ["@radix-ui/react-presence", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-presence", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ ["@radix-ui/react-roving-focus", "virtual:e76e44310523946c1c5b79ff18bc44637c6cfa77b9e0d6f6524ac7f1dc8cbce6a07f2731e90215d45a4756afa23946529b91fa11dc2879a3e9a47c47c45d0253#npm:1.0.4"],\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ ["react", "npm:18.2.0"],\ @@ -4450,10 +4486,10 @@ const RAW_RUNTIME_STATE = ["@radix-ui/react-id", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ ["@radix-ui/react-popper", "virtual:37ef8b00e64ce15a885d05baf0fb25c6d92ec573ce783cda01ccad0381c0c7268834e8ca0e374a73f46fbe6611480d24adf5a726279815ad92cd677ca28793de#npm:1.1.3"],\ ["@radix-ui/react-portal", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.4"],\ - ["@radix-ui/react-presence", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-presence", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/react-primitive", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.3"],\ ["@radix-ui/react-slot", "virtual:366bdbf747c441a01352d374f46b3f7feb58e574b231460825e9ca87c1f39b8904ef1c511e21ed24128ed7bd1416eaaa4f76b8ac0a607cb68fe2ad7353abe459#npm:1.0.2"],\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@radix-ui/react-visually-hidden", "virtual:e863d0bb1cbac1bc3009462f88d73babb45b648245f8e9cc35ad15e03338317b5cc2700bd497f2ac8ed06fd028b21f54afc6c0b769118390d4e2a7d1aa70593c#npm:1.0.3"],\ ["@types/react", "npm:18.2.73"],\ ["@types/react-dom", "npm:18.2.23"],\ @@ -4500,10 +4536,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@radix-ui-react-use-controllable-state-virtual-ac22bd0ed5/0/cache/@radix-ui-react-use-controllable-state-npm-1.0.1-cbe6fcf1d7-29b069dbf0.zip/node_modules/@radix-ui/react-use-controllable-state/",\ + ["virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@radix-ui-react-use-controllable-state-virtual-93127b2098/0/cache/@radix-ui-react-use-controllable-state-npm-1.0.1-cbe6fcf1d7-29b069dbf0.zip/node_modules/@radix-ui/react-use-controllable-state/",\ "packageDependencies": [\ - ["@radix-ui/react-use-controllable-state", "virtual:8b36962c5c6366cfe7f4baa252af70d96dc19b8c0dd2878d5c43e663c7c6d2a415194ea3695ee428d33bd4dc9a6fadd2bbce2ba5c9534f3856734a8a82ac552c#npm:1.0.1"],\ + ["@radix-ui/react-use-controllable-state", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@babel/runtime", "npm:7.24.1"],\ ["@radix-ui/react-use-callback-ref", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ @@ -4571,10 +4607,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:3affce9c11baacd608cc2c2c128122254ffffcc945d410baea812847fe4aaef34a2c0a141170303722127d3399347898f47dec512d376168b75b0712359ee431#npm:1.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@radix-ui-react-use-previous-virtual-0b06ab42f2/0/cache/@radix-ui-react-use-previous-npm-1.0.1-ec2aa9ac62-f5fbc60210.zip/node_modules/@radix-ui/react-use-previous/",\ + ["virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@radix-ui-react-use-previous-virtual-c77bd12851/0/cache/@radix-ui-react-use-previous-npm-1.0.1-ec2aa9ac62-f5fbc60210.zip/node_modules/@radix-ui/react-use-previous/",\ "packageDependencies": [\ - ["@radix-ui/react-use-previous", "virtual:3affce9c11baacd608cc2c2c128122254ffffcc945d410baea812847fe4aaef34a2c0a141170303722127d3399347898f47dec512d376168b75b0712359ee431#npm:1.0.1"],\ + ["@radix-ui/react-use-previous", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@babel/runtime", "npm:7.24.1"],\ ["@types/react", "npm:18.2.73"],\ ["react", "npm:18.2.0"]\ @@ -4618,10 +4654,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:5b83e2aca428af3a3a9a0b628ddf44539ac81f956b06ca9079d9d05c26ae97eabb7970470ca3a35965ae94114dd796b1f121f964f24cc4a16eff4790aa149605#npm:1.0.1", {\ - "packageLocation": "./.yarn/__virtual__/@radix-ui-react-use-size-virtual-061e46b1cd/0/cache/@radix-ui-react-use-size-npm-1.0.1-97c8358b35-b109a4b378.zip/node_modules/@radix-ui/react-use-size/",\ + ["virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@radix-ui-react-use-size-virtual-32e23d57d2/0/cache/@radix-ui-react-use-size-npm-1.0.1-97c8358b35-b109a4b378.zip/node_modules/@radix-ui/react-use-size/",\ "packageDependencies": [\ - ["@radix-ui/react-use-size", "virtual:5b83e2aca428af3a3a9a0b628ddf44539ac81f956b06ca9079d9d05c26ae97eabb7970470ca3a35965ae94114dd796b1f121f964f24cc4a16eff4790aa149605#npm:1.0.1"],\ + ["@radix-ui/react-use-size", "virtual:9b9582352d84af42ab8082f1081ba474dbe9c31d936a06e11369c901c6f768a2775c30ef6dda08fa9010d90134aaca4781b8ad150ae2eff5cea7f8836ab0e9db#npm:1.0.1"],\ ["@babel/runtime", "npm:7.24.1"],\ ["@radix-ui/react-use-layout-effect", "virtual:dce1b6d36b4e1fb48a694bfbcda876d8745e47392cb7722a4b687f59b6609800723c642c678a64dbcf2c1d275791708b55bfb31fe3bc06d2dd65060c4bbdee36#npm:1.0.1"],\ ["@types/react", "npm:18.2.73"],\ @@ -13538,6 +13574,7 @@ const RAW_RUNTIME_STATE = ["@openapitools/openapi-generator-cli", "npm:2.13.1"],\ ["@radix-ui/react-alert-dialog", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.5"],\ ["@radix-ui/react-avatar", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.4"],\ + ["@radix-ui/react-checkbox", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.4"],\ ["@radix-ui/react-dialog", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.0.5"],\ ["@radix-ui/react-form", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:0.0.3"],\ ["@radix-ui/react-icons", "virtual:bc08f557c3848fd9a25d29fb9c539eda3c4057e5669cea847177bc7c1434287280eb689db18230d98ea61ce78cf48a1c75574b2bd256f908e118253be39fcf3a#npm:1.3.0"],\ diff --git a/.yarn/cache/@radix-ui-react-checkbox-npm-1.0.4-59bb27e0bf-a4bd259a7e.zip b/.yarn/cache/@radix-ui-react-checkbox-npm-1.0.4-59bb27e0bf-a4bd259a7e.zip new file mode 100644 index 0000000000000000000000000000000000000000..35f403e024a9d78d39a5829878fea4face690fa7 GIT binary patch literal 57517 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 aT9O*-`t2Y6JHq%e{{I&+(!c(OZ~q@$Uo@-$ literal 0 HcmV?d00001 diff --git a/package.json b/package.json index c88659bd..996a44fa 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@openapitools/openapi-generator-cli": "^2.9.0", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-avatar": "^1.0.4", + "@radix-ui/react-checkbox": "^1.0.4", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-form": "^0.0.3", "@radix-ui/react-icons": "^1.3.0", diff --git a/src/pages/MainPage/GameModeCheckBox.tsx b/src/pages/MainPage/GameModeCheckBox.tsx new file mode 100644 index 00000000..e69de29b diff --git a/yarn.lock b/yarn.lock index 34680a29..593d6146 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2367,6 +2367,33 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-checkbox@npm:^1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-checkbox@npm:1.0.4" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/primitive": "npm:1.0.1" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-context": "npm:1.0.1" + "@radix-ui/react-presence": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-use-controllable-state": "npm:1.0.1" + "@radix-ui/react-use-previous": "npm:1.0.1" + "@radix-ui/react-use-size": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/a4bd259a7e15ad88f72524190ddcc2db0688d439aad954e06d0adf6038b2e17397ed8ae0ea26ab09bf6981f1b9dd883904b2b7e74b307b5c6b1a3765d27fe737 + languageName: node + linkType: hard + "@radix-ui/react-collection@npm:1.0.3": version: 1.0.3 resolution: "@radix-ui/react-collection@npm:1.0.3" @@ -10707,6 +10734,7 @@ __metadata: "@openapitools/openapi-generator-cli": "npm:^2.9.0" "@radix-ui/react-alert-dialog": "npm:^1.0.5" "@radix-ui/react-avatar": "npm:^1.0.4" + "@radix-ui/react-checkbox": "npm:^1.0.4" "@radix-ui/react-dialog": "npm:^1.0.5" "@radix-ui/react-form": "npm:^0.0.3" "@radix-ui/react-icons": "npm:^1.3.0" From de7e1b0adbd3852f491f6a276261cddb02671863 Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 16:56:37 +0900 Subject: [PATCH 02/12] =?UTF-8?q?[=E2=9C=A8feat]:=20=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=ED=95=95=ED=84=B0=EB=A7=81=20?= =?UTF-8?q?=EC=B2=B4=ED=81=AC=EB=B0=95=EC=8A=A4=20=EC=B6=94=EA=B0=80(?= =?UTF-8?q?=ED=83=80=EC=9E=85=EB=8F=84=20=EC=B6=94=EA=B0=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameModeCheckBox.tsx | 49 +++++++++++++++++++++++++ src/pages/MainPage/MainPage.tsx | 21 +++++++++-- 2 files changed, 67 insertions(+), 3 deletions(-) diff --git a/src/pages/MainPage/GameModeCheckBox.tsx b/src/pages/MainPage/GameModeCheckBox.tsx index e69de29b..dc8d80e0 100644 --- a/src/pages/MainPage/GameModeCheckBox.tsx +++ b/src/pages/MainPage/GameModeCheckBox.tsx @@ -0,0 +1,49 @@ +import * as Checkbox from '@radix-ui/react-checkbox'; +import { CheckIcon } from '@radix-ui/react-icons'; +import { Dispatch, SetStateAction } from 'react'; +import { gameModeList, mappedGameModeList, TestType } from './MainPage'; + +interface GameModeCheckBoxProps { + setCheckedGameMode: Dispatch>; + checkedGameMode: TestType; +} + +const GameModeCheckBox = ({ + checkedGameMode, + setCheckedGameMode, +}: GameModeCheckBoxProps) => { + return ( +
+ {gameModeList.map((mode, i) => { + const onCheckedChange = () => { + setCheckedGameMode((prevState) => { + const isNewMode = !prevState[mode]; + return { ...prevState, [mode]: isNewMode }; + }); + }; + return ( +
+ + + + + + +
+ ); + })} +
+ ); +}; + +export default GameModeCheckBox; diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index 81b5ce5c..34b4df75 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -8,6 +8,7 @@ import useRoomInfoStore from '@/store/useRoomInfoStore'; import { GameModeType } from '@/types/gameMode'; import CreateRoomModal from './CreateRoom/CreateRoomModal'; import EnterRoomErrorFallback from './EnterRoomErrorFallback'; +import GameModeCheckBox from './GameModeCheckBox'; import GameRoomList from './GameRoomList'; import SseFallback from './SseFallback'; import SseFetcher from './SseFetcher'; @@ -15,15 +16,17 @@ import UserCard from './UserCard'; import UserList from './UserList'; export type FilteredGameModeType = GameModeType | 'ALL'; - -const gameModeList: FilteredGameModeType[] = [ +export type TestType = { + [key in FilteredGameModeType]: boolean; +}; +export const gameModeList: FilteredGameModeType[] = [ 'ALL', 'SENTENCE', 'CODE', 'WORD', ]; -const mappedGameModeList = { +export const mappedGameModeList = { ALL: '전체', SENTENCE: '문장', CODE: '코드', @@ -37,6 +40,14 @@ const MainPage = () => { const { roomInfo, setRoomInfo } = useRoomInfoStore(); const [selectedGameMode, setSelectedGameMode] = useState('ALL'); + + const [checkedGameMode, setCheckedGameMode] = useState({ + ALL: true, + SENTENCE: false, + CODE: false, + WORD: false, + }); + const { setDidAdminStart } = useGameWaitingRoomStore(); useEffect(() => { setDidAdminStart(false); @@ -76,6 +87,10 @@ const MainPage = () => {
+ {gameModeList.map((el) => ( Date: Wed, 17 Apr 2024 20:44:46 +0900 Subject: [PATCH 03/12] =?UTF-8?q?[=E2=9C=A8feat]:=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EC=B2=B4=ED=81=AC=EB=B0=95=EC=8A=A4=20=EC=8B=A4?= =?UTF-8?q?=EC=A0=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameModeCheckBox.tsx | 11 ++++++++++- src/pages/MainPage/GameRoomList.tsx | 17 +++++++---------- src/pages/MainPage/MainPage.tsx | 24 ++++++++++-------------- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/pages/MainPage/GameModeCheckBox.tsx b/src/pages/MainPage/GameModeCheckBox.tsx index dc8d80e0..86372c93 100644 --- a/src/pages/MainPage/GameModeCheckBox.tsx +++ b/src/pages/MainPage/GameModeCheckBox.tsx @@ -13,11 +13,20 @@ const GameModeCheckBox = ({ setCheckedGameMode, }: GameModeCheckBoxProps) => { return ( -
+ {gameModeList.map((mode, i) => { + //매 렌더링시 생성되므로 map 바깥으로 뺀다? const onCheckedChange = () => { setCheckedGameMode((prevState) => { const isNewMode = !prevState[mode]; + if (mode === 'ALL') { + const newState = { ...prevState }; + let checkGameModeState: keyof TestType; + for (checkGameModeState in prevState) { + newState[checkGameModeState] = isNewMode; + } + return newState; + } return { ...prevState, [mode]: isNewMode }; }); }; diff --git a/src/pages/MainPage/GameRoomList.tsx b/src/pages/MainPage/GameRoomList.tsx index dcea440c..5247b445 100644 --- a/src/pages/MainPage/GameRoomList.tsx +++ b/src/pages/MainPage/GameRoomList.tsx @@ -1,7 +1,7 @@ import { Fragment, useState } from 'react'; import Divider from '@/common/Divider/Divider'; +import { GameModeType } from '@/types/gameMode'; import GameRoomListItem from './GameRoonListItem'; -import { FilteredGameModeType } from './MainPage'; import PrivateRoomModal from './PrivateRoomModal'; import { I_ChangeGameRoomData } from './SseFetcher'; @@ -9,16 +9,15 @@ const GAME_ROOM_LIST_CATEGORY = ['방 번호', '방 제목', '게임 모드', ' interface GameRoomListProps extends React.HTMLAttributes { data: I_ChangeGameRoomData[]; - selectedGameMode: FilteredGameModeType; + checkedGameModeList: (GameModeType | undefined)[]; } -const GameRoomList = ({ data, selectedGameMode }: GameRoomListProps) => { +const GameRoomList = ({ data, checkedGameModeList }: GameRoomListProps) => { const [isOpen, setIsOpen] = useState(false); - const filteredRoomList = - selectedGameMode !== 'ALL' - ? data.filter(({ gameMode }) => gameMode === selectedGameMode) - : data; + const filteredRoomList = checkedGameModeList + .map((mode) => data.filter(({ gameMode }) => gameMode === mode)) + .flat(1); return (
@@ -61,9 +60,7 @@ const GameRoomList = ({ data, selectedGameMode }: GameRoomListProps) => { {!filteredRoomList.length && ( - {selectedGameMode === 'ALL' - ? '현재 생성된 게임이 없습니다!' - : '선택하신 모드의 방 목록이 없습니다!'} + 방 목록이 존재하지 않아요 😫 )} diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index 34b4df75..7830849d 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -38,16 +38,18 @@ const MainPage = () => { const { data: userList } = useOnlineUsers(); const { data: userData, isPending, error } = useAuthCheck(); const { roomInfo, setRoomInfo } = useRoomInfoStore(); - const [selectedGameMode, setSelectedGameMode] = - useState('ALL'); const [checkedGameMode, setCheckedGameMode] = useState({ ALL: true, - SENTENCE: false, - CODE: false, - WORD: false, + SENTENCE: true, + CODE: true, + WORD: true, }); + const checkedGameModeList = Object.entries(checkedGameMode) + .filter(([mode, state]) => mode !== 'ALL' && state) + .map(([mode]) => mode); + const { setDidAdminStart } = useGameWaitingRoomStore(); useEffect(() => { setDidAdminStart(false); @@ -91,14 +93,6 @@ const MainPage = () => { checkedGameMode={checkedGameMode} setCheckedGameMode={setCheckedGameMode} /> - {gameModeList.map((el) => ( - setSelectedGameMode(el)}> - {mappedGameModeList[el]} - - ))}
@@ -110,7 +104,9 @@ const MainPage = () => { From 42f6c62b6b8f30472c8f83f17117dcaa1dc86530 Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 21:23:35 +0900 Subject: [PATCH 04/12] =?UTF-8?q?[=E2=99=BB=EF=B8=8Frefactor]:=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EB=8B=A8=EC=96=B8=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EC=B2=B4=ED=81=AC=EB=90=9C=20=EA=B2=8C=EC=9E=84?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20filter=ED=9B=84=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EC=95=8C=EB=A7=9E=EA=B2=8C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameRoomList.tsx | 8 ++++---- src/pages/MainPage/MainPage.tsx | 16 +++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/pages/MainPage/GameRoomList.tsx b/src/pages/MainPage/GameRoomList.tsx index 5247b445..100baf64 100644 --- a/src/pages/MainPage/GameRoomList.tsx +++ b/src/pages/MainPage/GameRoomList.tsx @@ -9,15 +9,15 @@ const GAME_ROOM_LIST_CATEGORY = ['방 번호', '방 제목', '게임 모드', ' interface GameRoomListProps extends React.HTMLAttributes { data: I_ChangeGameRoomData[]; - checkedGameModeList: (GameModeType | undefined)[]; + checkedGameModeList: GameModeType[]; } const GameRoomList = ({ data, checkedGameModeList }: GameRoomListProps) => { const [isOpen, setIsOpen] = useState(false); - const filteredRoomList = checkedGameModeList - .map((mode) => data.filter(({ gameMode }) => gameMode === mode)) - .flat(1); + const filteredRoomList = checkedGameModeList.flatMap((mode) => + data.filter(({ gameMode }) => gameMode === mode) + ); return (
diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index 7830849d..ed92e5f2 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -16,9 +16,11 @@ import UserCard from './UserCard'; import UserList from './UserList'; export type FilteredGameModeType = GameModeType | 'ALL'; + export type TestType = { [key in FilteredGameModeType]: boolean; }; + export const gameModeList: FilteredGameModeType[] = [ 'ALL', 'SENTENCE', @@ -33,6 +35,10 @@ export const mappedGameModeList = { WORD: '단어', }; +export type EntriesType = { + [K in keyof T]: [K, T[K]]; +}[keyof T][]; + const MainPage = () => { const navigate = useNavigate(); const { data: userList } = useOnlineUsers(); @@ -46,9 +52,11 @@ const MainPage = () => { WORD: true, }); - const checkedGameModeList = Object.entries(checkedGameMode) + const checkedGameModeList = ( + Object.entries(checkedGameMode) as EntriesType + ) .filter(([mode, state]) => mode !== 'ALL' && state) - .map(([mode]) => mode); + .map(([mode]) => mode) as Exclude[]; const { setDidAdminStart } = useGameWaitingRoomStore(); useEffect(() => { @@ -104,9 +112,7 @@ const MainPage = () => { From fba8d8d806ac89b90bee22209e5f47b671150a2f Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 21:30:46 +0900 Subject: [PATCH 05/12] =?UTF-8?q?[=F0=9F=8E=A8style]:=20=EC=B2=B4=ED=81=AC?= =?UTF-8?q?=EB=B0=95=EC=8A=A4=20=ED=81=AC=EA=B8=B0=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameModeCheckBox.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/MainPage/GameModeCheckBox.tsx b/src/pages/MainPage/GameModeCheckBox.tsx index 86372c93..4b23c626 100644 --- a/src/pages/MainPage/GameModeCheckBox.tsx +++ b/src/pages/MainPage/GameModeCheckBox.tsx @@ -13,7 +13,7 @@ const GameModeCheckBox = ({ setCheckedGameMode, }: GameModeCheckBoxProps) => { return ( - + {gameModeList.map((mode, i) => { //매 렌더링시 생성되므로 map 바깥으로 뺀다? const onCheckedChange = () => { @@ -32,19 +32,19 @@ const GameModeCheckBox = ({ }; return (
- - + + From f22fbd23f1639489505f03cf0bbd9021af8eacad Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 21:42:04 +0900 Subject: [PATCH 06/12] =?UTF-8?q?[=E2=99=BB=EF=B8=8Frefactor]:=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=82=B4=EB=B6=80=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=A4=91=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EB=A6=AC=ED=84=B4=EB=AC=B8=20=EC=B5=9C=EC=83=81?= =?UTF-8?q?=EB=8B=A8=20article=EC=9D=84=20=EB=A9=94=EC=9D=B8=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameRoomList.tsx | 82 ++++++++++++++--------------- src/pages/MainPage/MainPage.tsx | 61 ++++++++++----------- src/pages/MainPage/UserCard.tsx | 4 +- src/pages/MainPage/UserList.tsx | 4 +- 4 files changed, 72 insertions(+), 79 deletions(-) diff --git a/src/pages/MainPage/GameRoomList.tsx b/src/pages/MainPage/GameRoomList.tsx index 100baf64..9e8d76d2 100644 --- a/src/pages/MainPage/GameRoomList.tsx +++ b/src/pages/MainPage/GameRoomList.tsx @@ -20,52 +20,50 @@ const GameRoomList = ({ data, checkedGameModeList }: GameRoomListProps) => { ); return ( -
-
    -
  • - {GAME_ROOM_LIST_CATEGORY.map((category, i) => ( - - - {category} - - {i !== category.length && ( - +
  • + {GAME_ROOM_LIST_CATEGORY.map((category, i) => ( + + + {category} + + {i !== category.length && ( + + )} + + ))} +
  • + +
  • +
      + {filteredRoomList.map((roomData) => ( + + + {roomData.isPrivate && ( + )} ))} - - -
    • -
        - {filteredRoomList.map((roomData) => ( - - - {roomData.isPrivate && ( - - )} - - ))} -
      - {!filteredRoomList.length && ( - - 방 목록이 존재하지 않아요 😫 - - )} -
    • -
    -
+ + {!filteredRoomList.length && ( + + 방 목록이 존재하지 않아요 😫 + + )} + + ); }; diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index ed92e5f2..7398f490 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -21,20 +21,6 @@ export type TestType = { [key in FilteredGameModeType]: boolean; }; -export const gameModeList: FilteredGameModeType[] = [ - 'ALL', - 'SENTENCE', - 'CODE', - 'WORD', -]; - -export const mappedGameModeList = { - ALL: '전체', - SENTENCE: '문장', - CODE: '코드', - WORD: '단어', -}; - export type EntriesType = { [K in keyof T]: [K, T[K]]; }[keyof T][]; @@ -77,44 +63,53 @@ const MainPage = () => { return (
- +
+ +
navigate('/rank')}>
- +
+ +
-
+
+
+ +
- 방 만들기 +
}> {(data) => ( - +
+ +
)}
diff --git a/src/pages/MainPage/UserCard.tsx b/src/pages/MainPage/UserCard.tsx index 878772ef..f369b8e4 100644 --- a/src/pages/MainPage/UserCard.tsx +++ b/src/pages/MainPage/UserCard.tsx @@ -26,7 +26,7 @@ const UserCard = ({ averageAccuracy = 0, }: UserCardProps) => { return ( -
+ <> {isGuest && (
@@ -68,7 +68,7 @@ const UserCard = ({ {`완벽함 ${formatNumber(averageAccuracy)}%`}
-
+ ); }; diff --git a/src/pages/MainPage/UserList.tsx b/src/pages/MainPage/UserList.tsx index 1a26229c..1095b479 100644 --- a/src/pages/MainPage/UserList.tsx +++ b/src/pages/MainPage/UserList.tsx @@ -8,7 +8,7 @@ interface UserListProps { const UserList = ({ userList, myId }: UserListProps) => { return ( -
+ <>

현재 접속자

    {userList ? ( @@ -23,7 +23,7 @@ const UserList = ({ userList, myId }: UserListProps) => { 접속중인 유저가 없습니다. )}
-
+ ); }; From fa55ae992280629ce75df822d48292e76fa50344 Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 21:43:39 +0900 Subject: [PATCH 07/12] =?UTF-8?q?[=F0=9F=9A=9Achange]:=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=82=B4=20=EC=83=81?= =?UTF-8?q?=EC=88=98=20=ED=8F=B4=EB=8D=94=EC=83=9D=EC=84=B1=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EC=9D=B4=EB=8F=99,=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=AA=85=EC=8B=9C=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameModeCheckBox.tsx | 13 +++++++------ src/pages/MainPage/MainPage.tsx | 8 ++++---- src/pages/MainPage/constants/gameMode.tsx | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 src/pages/MainPage/constants/gameMode.tsx diff --git a/src/pages/MainPage/GameModeCheckBox.tsx b/src/pages/MainPage/GameModeCheckBox.tsx index 4b23c626..1551cb88 100644 --- a/src/pages/MainPage/GameModeCheckBox.tsx +++ b/src/pages/MainPage/GameModeCheckBox.tsx @@ -1,11 +1,12 @@ import * as Checkbox from '@radix-ui/react-checkbox'; import { CheckIcon } from '@radix-ui/react-icons'; import { Dispatch, SetStateAction } from 'react'; -import { gameModeList, mappedGameModeList, TestType } from './MainPage'; +import { GAME_MODE_LIST, MAPPED_GAME_MODE_LIST } from './constants/gameMode'; +import { CheckedGameModeType } from './MainPage'; interface GameModeCheckBoxProps { - setCheckedGameMode: Dispatch>; - checkedGameMode: TestType; + setCheckedGameMode: Dispatch>; + checkedGameMode: CheckedGameModeType; } const GameModeCheckBox = ({ @@ -14,14 +15,14 @@ const GameModeCheckBox = ({ }: GameModeCheckBoxProps) => { return ( - {gameModeList.map((mode, i) => { + {GAME_MODE_LIST.map((mode, i) => { //매 렌더링시 생성되므로 map 바깥으로 뺀다? const onCheckedChange = () => { setCheckedGameMode((prevState) => { const isNewMode = !prevState[mode]; if (mode === 'ALL') { const newState = { ...prevState }; - let checkGameModeState: keyof TestType; + let checkGameModeState: keyof CheckedGameModeType; for (checkGameModeState in prevState) { newState[checkGameModeState] = isNewMode; } @@ -46,7 +47,7 @@ const GameModeCheckBox = ({ ); diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index 7398f490..f7f2daa0 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -17,7 +17,7 @@ import UserList from './UserList'; export type FilteredGameModeType = GameModeType | 'ALL'; -export type TestType = { +export type CheckedGameModeType = { [key in FilteredGameModeType]: boolean; }; @@ -31,7 +31,7 @@ const MainPage = () => { const { data: userData, isPending, error } = useAuthCheck(); const { roomInfo, setRoomInfo } = useRoomInfoStore(); - const [checkedGameMode, setCheckedGameMode] = useState({ + const [checkedGameMode, setCheckedGameMode] = useState({ ALL: true, SENTENCE: true, CODE: true, @@ -39,10 +39,10 @@ const MainPage = () => { }); const checkedGameModeList = ( - Object.entries(checkedGameMode) as EntriesType + Object.entries(checkedGameMode) as EntriesType ) .filter(([mode, state]) => mode !== 'ALL' && state) - .map(([mode]) => mode) as Exclude[]; + .map(([mode]) => mode) as Exclude[]; const { setDidAdminStart } = useGameWaitingRoomStore(); useEffect(() => { diff --git a/src/pages/MainPage/constants/gameMode.tsx b/src/pages/MainPage/constants/gameMode.tsx new file mode 100644 index 00000000..6e673525 --- /dev/null +++ b/src/pages/MainPage/constants/gameMode.tsx @@ -0,0 +1,15 @@ +import { FilteredGameModeType } from '../MainPage'; + +export const GAME_MODE_LIST: FilteredGameModeType[] = [ + 'ALL', + 'SENTENCE', + 'CODE', + 'WORD', +]; + +export const MAPPED_GAME_MODE_LIST = { + ALL: '전체', + SENTENCE: '문장', + CODE: '코드', + WORD: '단어', +}; From 2972c8f22a54ae39f6b949684ebe4e985028893a Mon Sep 17 00:00:00 2001 From: loevray Date: Wed, 17 Apr 2024 21:45:17 +0900 Subject: [PATCH 08/12] =?UTF-8?q?[=E2=9C=A8feat]:=20=EC=97=B0=EC=8A=B5?= =?UTF-8?q?=EB=AA=A8=EB=93=9C=20=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD?= =?UTF-8?q?=EC=8B=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=9A=A9=20alert=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/MainPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/MainPage/MainPage.tsx b/src/pages/MainPage/MainPage.tsx index f7f2daa0..7c10185d 100644 --- a/src/pages/MainPage/MainPage.tsx +++ b/src/pages/MainPage/MainPage.tsx @@ -93,7 +93,7 @@ const MainPage = () => { />
- +
From a74c24921b591c01246a0e4b0c920ab283659a33 Mon Sep 17 00:00:00 2001 From: loevray Date: Thu, 18 Apr 2024 19:47:56 +0900 Subject: [PATCH 09/12] =?UTF-8?q?[=E2=99=BB=EF=B8=8Frefactor]:=20=EA=B2=B9?= =?UTF-8?q?=EC=B9=98=EB=8A=94=20=EC=83=81=EC=88=98=EB=AA=85=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/CreateRoom/CreateRoomForm.tsx | 4 ++-- src/pages/MainPage/CreateRoom/constants/createRoom.ts | 5 +++-- src/pages/MainPage/constants/gameMode.tsx | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/pages/MainPage/CreateRoom/CreateRoomForm.tsx b/src/pages/MainPage/CreateRoom/CreateRoomForm.tsx index 6f20b12c..2a55eafd 100644 --- a/src/pages/MainPage/CreateRoom/CreateRoomForm.tsx +++ b/src/pages/MainPage/CreateRoom/CreateRoomForm.tsx @@ -13,9 +13,9 @@ import { GameModeType } from '@/types/gameMode'; import getRandomItem from '@/utils/getRandomItem'; import { Toast } from '@/utils/toast'; import { + CREATE_ROOM_GAME_MODE_LIST, CREATE_ROOM_INPUT_LIST, CREATE_ROOM_SELECT_LIST, - GAME_MODE_LIST, } from './constants/createRoom'; import { DEFAULT_TITLES } from './constants/defaultTitles'; import { SettingModeType } from './CreateRoomModal'; @@ -185,7 +185,7 @@ const CreateRoomForm = ({ {/* 모드 설정 버튼 */}
- {GAME_MODE_LIST.map(({ value, mode }) => ( + {CREATE_ROOM_GAME_MODE_LIST.map(({ value, mode }) => (
- + 방 만들기
}> From cb1f73e122d41a3d4e1f2b8dbb11c28474a05e2c Mon Sep 17 00:00:00 2001 From: loevray Date: Thu, 18 Apr 2024 19:56:33 +0900 Subject: [PATCH 12/12] =?UTF-8?q?[=E2=99=BB=EF=B8=8Frefactor]:=20=EC=B2=B4?= =?UTF-8?q?=ED=81=AC=EB=B0=95=EC=8A=A4=20=ED=81=B4=EB=A6=AD=20=EC=BD=9C?= =?UTF-8?q?=EB=B0=B1=20map=EC=88=9C=ED=9A=8C=EB=AC=B8=20=EB=B0=96=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MainPage/GameModeCheckBox.tsx | 32 ++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/pages/MainPage/GameModeCheckBox.tsx b/src/pages/MainPage/GameModeCheckBox.tsx index 1551cb88..acc2ebb7 100644 --- a/src/pages/MainPage/GameModeCheckBox.tsx +++ b/src/pages/MainPage/GameModeCheckBox.tsx @@ -2,7 +2,7 @@ import * as Checkbox from '@radix-ui/react-checkbox'; import { CheckIcon } from '@radix-ui/react-icons'; import { Dispatch, SetStateAction } from 'react'; import { GAME_MODE_LIST, MAPPED_GAME_MODE_LIST } from './constants/gameMode'; -import { CheckedGameModeType } from './MainPage'; +import { CheckedGameModeType, FilteredGameModeType } from './MainPage'; interface GameModeCheckBoxProps { setCheckedGameMode: Dispatch>; @@ -13,31 +13,31 @@ const GameModeCheckBox = ({ checkedGameMode, setCheckedGameMode, }: GameModeCheckBoxProps) => { + const onCheckedChange = (mode: FilteredGameModeType) => { + setCheckedGameMode((prevState) => { + const isNewMode = !prevState[mode]; + if (mode === 'ALL') { + const newState = { ...prevState }; + let checkGameModeState: keyof CheckedGameModeType; + for (checkGameModeState in prevState) { + newState[checkGameModeState] = isNewMode; + } + return newState; + } + return { ...prevState, [mode]: isNewMode }; + }); + }; return ( {GAME_MODE_LIST.map((mode, i) => { //매 렌더링시 생성되므로 map 바깥으로 뺀다? - const onCheckedChange = () => { - setCheckedGameMode((prevState) => { - const isNewMode = !prevState[mode]; - if (mode === 'ALL') { - const newState = { ...prevState }; - let checkGameModeState: keyof CheckedGameModeType; - for (checkGameModeState in prevState) { - newState[checkGameModeState] = isNewMode; - } - return newState; - } - return { ...prevState, [mode]: isNewMode }; - }); - }; return (
onCheckedChange(mode)} className='bg-white w-[3rem] h-[3rem] rounded-md flex items-center justify-center shadow-md hover:bg-gray-100/50' id={`c${i}`}>