From ff1f63ccd9b75eb2c4f8f8f9e5123daab2f98bc7 Mon Sep 17 00:00:00 2001 From: bulby97 Date: Tue, 31 Aug 2021 17:41:37 +0200 Subject: [PATCH] Add formattedValues in order to handle create behaviour --- .../Roles/ConditionsModal/ActionRow/index.js | 14 ++++++++++++-- .../src/components/Roles/ConditionsModal/index.js | 8 +++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js b/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js index b10a69223c..a533ee0a9c 100644 --- a/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js +++ b/packages/core/admin/admin/src/components/Roles/ConditionsModal/ActionRow/index.js @@ -34,7 +34,7 @@ const ActionRow = ({ return [...arr, obj]; }, []); - // output: ['value1', 'value2'] + // Output: ['value1', 'value2'] const values = Object.values(value) .map(x => Object.entries(x) @@ -43,6 +43,16 @@ const ActionRow = ({ ) .flat(); + // ! Only expects arrayOfOpt to be [['default', obj]] - might break in future changes + const handleChange = val => { + const [[, values]] = arrayOfOptionsGroupedByCategory; + const formattedValues = values.reduce( + (acc, curr) => ({ [curr.id]: val.includes(curr.id), ...acc }), + {} + ); + onChange(name, formattedValues); + }; + return ( @@ -81,7 +91,7 @@ const ActionRow = ({ id={name} placeholder="Your example" customizeContent={values => `${values.length} currently selected`} - onChange={value => onChange(name, value)} + onChange={handleChange} value={values} options={options} disabled={isFormDisabled} diff --git a/packages/core/admin/admin/src/components/Roles/ConditionsModal/index.js b/packages/core/admin/admin/src/components/Roles/ConditionsModal/index.js index 79dfab5f89..f40dee9531 100644 --- a/packages/core/admin/admin/src/components/Roles/ConditionsModal/index.js +++ b/packages/core/admin/admin/src/components/Roles/ConditionsModal/index.js @@ -53,9 +53,11 @@ const ConditionsModal = ({ const handleChange = (name, values) => { setState( produce(draft => { - Object.entries(draft[name].default).forEach(([key]) => { - draft[name].default[key] = values.includes(key); - }); + if (!draft[name]) draft[name] = {}; + + if (!draft[name].default) draft[name].default = {}; + + draft[name].default = values; }) ); };