diff --git a/package.json b/package.json index 6217e4e2..2b9eac85 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@netdata/netdata-ui", - "version": "5.2.3", + "version": "5.2.4", "description": "netdata UI kit", "main": "dist/index.js", "module": "dist/es6/index.js", diff --git a/src/components/button/buttonGroup.js b/src/components/button/buttonGroup.js index bf60450c..7cbae2fa 100644 --- a/src/components/button/buttonGroup.js +++ b/src/components/button/buttonGroup.js @@ -1,7 +1,9 @@ -import React, { Children, isValidElement, cloneElement, useCallback } from "react" +import React, { Children, isValidElement, cloneElement } from "react" import Flex from "@/components/templates/flex" import { Button } from "./button" +const noop = () => {} + const getButtonGroupProps = (itemIndex, itemsLength) => { const groupFirst = itemIndex == 0 const groupLast = itemIndex == itemsLength - 1 @@ -30,20 +32,34 @@ const Content = ({ children }) => { ) } -const RadioButtons = ({ items, checked, buttonProps = {}, onChange }) => { +const RadioButtons = ({ items, value, isMulti, buttonProps = {}, onChange }) => { return ( <> - {items.map(({ label, value, title }, index) => { + {items.map((item, index) => { const buttonGroupProps = getButtonGroupProps(index, items.length) - const isChecked = checked === value || (Array.isArray(checked) && checked.includes(value)) + const isSelected = + value === item.value || (Array.isArray(value) && value.includes(item.value)) + + const onClick = () => { + if (isMulti) { + const newValue = Array.isArray(value) + ? value.includes(item.value) + ? value.filter(v => v !== item.value) + : [...value, item.value] + : [item.value] + onChange(newValue) + } else { + onChange(item.value) + } + } return (