Skip to content
Snippets Groups Projects
Verified Commit bae83223 authored by João Magalhães's avatar João Magalhães :rocket:
Browse files

feat: support for selected keys

parent f045ea6f
No related branches found
No related tags found
No related merge requests found
Pipeline #1506 passed
...@@ -7,6 +7,7 @@ declare const require: any; ...@@ -7,6 +7,7 @@ declare const require: any;
type KeyboardGBProps = { type KeyboardGBProps = {
focusable?: boolean; focusable?: boolean;
fullscreen?: boolean; fullscreen?: boolean;
selectedKeys?: string[];
style?: string[]; style?: string[];
onKeyDown?: (key: string) => void; onKeyDown?: (key: string) => void;
onKeyUp?: (key: string) => void; onKeyUp?: (key: string) => void;
...@@ -15,6 +16,7 @@ type KeyboardGBProps = { ...@@ -15,6 +16,7 @@ type KeyboardGBProps = {
export const KeyboardGB: FC<KeyboardGBProps> = ({ export const KeyboardGB: FC<KeyboardGBProps> = ({
focusable = true, focusable = true,
fullscreen = false, fullscreen = false,
selectedKeys = [],
style = [], style = [],
onKeyDown, onKeyDown,
onKeyUp onKeyUp
...@@ -31,9 +33,10 @@ export const KeyboardGB: FC<KeyboardGBProps> = ({ ...@@ -31,9 +33,10 @@ export const KeyboardGB: FC<KeyboardGBProps> = ({
const renderKey = ( const renderKey = (
key: string, key: string,
keyName?: string, keyName?: string,
selected = false,
styles: string[] = [] styles: string[] = []
) => { ) => {
const [pressed, setPressed] = useState(false); const [pressed, setPressed] = useState(selected);
const classes = ["key", pressed ? "pressed" : "", ...styles].join(" "); const classes = ["key", pressed ? "pressed" : "", ...styles].join(" ");
return ( return (
<span <span
...@@ -103,24 +106,54 @@ export const KeyboardGB: FC<KeyboardGBProps> = ({ ...@@ -103,24 +106,54 @@ export const KeyboardGB: FC<KeyboardGBProps> = ({
> >
<div className="dpad"> <div className="dpad">
<div className="dpad-top"> <div className="dpad-top">
{renderKey("", "ArrowUp", ["up"])} {renderKey(
"",
"ArrowUp",
selectedKeys.includes("ArrowUp"),
["up"]
)}
</div> </div>
<div> <div>
{renderKey("", "ArrowLeft", ["left"])} {renderKey(
{renderKey("", "ArrowRight", ["right"])} "",
"ArrowLeft",
selectedKeys.includes("ArrowLeft"),
["left"]
)}
{renderKey(
"",
"ArrowRight",
selectedKeys.includes("ArrowRight"),
["right"]
)}
</div> </div>
<div className="dpad-bottom"> <div className="dpad-bottom">
{renderKey("", "ArrowDown", ["down"])} {renderKey(
"",
"ArrowDown",
selectedKeys.includes("ArrowDown"),
["down"]
)}
</div> </div>
</div> </div>
<div className="action"> <div className="action">
{renderKey("B", "B", ["b"])} {renderKey("B", "B", selectedKeys.includes("B"), ["b"])}
{renderKey("A", "A", ["a"])} {renderKey("A", "A", selectedKeys.includes("A"), ["a"])}
</div> </div>
<div className="break"></div> <div className="break"></div>
<div className="options"> <div className="options">
{renderKey("START", "Start", ["start"])} {renderKey(
{renderKey("SELECT", "Select", ["select"])} "START",
"Start",
selectedKeys.includes("Start"),
["start"]
)}
{renderKey(
"SELECT",
"Select",
selectedKeys.includes("Select"),
["select"]
)}
</div> </div>
</div> </div>
</div> </div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment