Button group csa added

This commit is contained in:
Shaurya Sharma 2025-03-04 16:32:19 +05:30
parent 064953b750
commit 3c4f9a1c7a
3 changed files with 44 additions and 0 deletions

View file

@ -127,6 +127,13 @@ export const buttonGroupConfig = {
exposedVariables: {
selected: [1],
},
actions: [
{
handle: 'setSelected',
displayName: 'Select option',
params: [{ handle: 'selected', displayName: 'Value' }],
},
],
definition: {
others: {
showOnDesktop: { value: '{{true}}' },

View file

@ -66,6 +66,35 @@ export const ButtonGroup = function Button({
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [multiSelection]);
const setSelected = (selected) => {
if (multiSelection) {
if (Array.isArray(selected)) {
const filteredItems = selected.filter((item) => values.includes(item));
setDefaultActive(filteredItems);
setExposedVariable('selected', filteredItems.join(','));
} else if ((typeof selected === 'string' || typeof selected === 'number') && values.includes(selected)) {
setDefaultActive([selected]);
setExposedVariable('selected', String(selected));
}
} else {
if (Array.isArray(selected)) {
const filteredItems = selected.filter((item) => values.includes(item));
console.log('filterdItems', filteredItems);
if (filteredItems?.length >= 1) {
setDefaultActive([filteredItems[0]]);
setExposedVariable('selected', String(filteredItems[0]));
}
} else if ((typeof selected === 'string' || typeof selected === 'number') && values.includes(selected)) {
setDefaultActive([selected]);
setExposedVariable('selected', String(selected));
}
}
};
useEffect(() => {
setExposedVariable('setSelected', setSelected);
}, [multiSelection]);
const buttonClick = (index) => {
if (defaultActive?.includes(values[index]) && multiSelection) {
const copyDefaultActive = [...defaultActive];

View file

@ -127,6 +127,14 @@ export const buttonGroupConfig = {
exposedVariables: {
selected: [1],
},
actions: [
{
handle: 'setSelected',
displayName: 'Select option',
params: [{ handle: 'selected', displayName: 'Value' }],
},
],
definition: {
others: {
showOnDesktop: { value: '{{true}}' },