diff --git a/client/src/HouseRules.js b/client/src/HouseRules.js
index 6efc3d2..46a1d86 100644
--- a/client/src/HouseRules.js
+++ b/client/src/HouseRules.js
@@ -55,6 +55,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
const [houseRules, setHouseRules] = useState(undefined);
const [state, setState] = useState(undefined);
const [rules, setRules] = useState([]);
+ const [ruleElements, setRuleElements] = useState([]);
const fields = useMemo(() => [
'state', 'rules'
], []);
@@ -120,13 +121,14 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
}, [ws, houseRules]);
useEffect(() => {
- setRules([ {
+ const _rules = [ {
title: `More victory points`,
key: `victory-points`,
description: `Customize how many Victory Points are required to win. ` +
`The minimum number of Victory Points is 10.`,
element: ,
+ implemented: true
}, {
title: `Tiles start facing down`,
key: `tiles-start-facing-down`,
@@ -187,7 +189,8 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
title: `Robin Hood robber`,
key: `robin-hood-robber`,
description: `Robbers can't steal from players with two or less victory points.`,
- element: <>>
+ element: <>>,
+ implemented: true
}, {
title: `Crime and Punishment`,
key: `crime-and-punishment`,
@@ -205,8 +208,24 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
field: `credit`
}} />,
} ]
+ .sort((A, B) => {
+ if (A.implemented && B.implemented) {
+ return A.title.localeCompare();
+ }
+ if (A.implemented) {
+ return -1;
+ }
+ if (B.implemented) {
+ return +1;
+ }
+ return A.title.localeCompare();
+ });
+
+ setRules(_rules);
+
+ setRuleElements(_rules
.map(item => {
- const disabled = (state !== 'lobby'),
+ const disabled = (state !== 'lobby' || !item.implemented),
defaultChecked = houseRules
&& (item.key in houseRules)
? houseRules[item.key].enabled
@@ -218,12 +237,16 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
houseRules
&& item.key in houseRules
&& houseRules[item.key].enabled}
- data-disabled={disabled} key={item.key}>
+ data-disabled={disabled}
+ key={item.key}
+ data-key={item.key}>
{item.title}: {item.description}
setRule(e, item.key)}
{...{ disabled }} />
@@ -241,7 +264,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
House Rules
- { rules }
+ { ruleElements }