import * as React from "react"; import styled from "styled-components"; import { ComponentProps } from "components/designSystems/appsmith/BaseComponent"; import { generateReactKey } from "utils/generators"; import { StyledCheckbox } from "components/designSystems/blueprint/CheckboxComponent"; import { ThemeProp } from "components/ads/common"; export interface CheckboxGroupContainerProps { inline?: boolean; valid?: boolean; } const CheckboxGroupContainer = styled.div< ThemeProp & CheckboxGroupContainerProps >` display: flex; ${({ inline }) => ` flex-direction: ${inline ? "row" : "column"}; align-items: ${inline ? "center" : "flex-start"}; ${inline && "flex-wrap: wrap"}; `} justify-content: space-between; width: 100%; height: 100%; overflow: auto; border: 1px solid transparent; ${({ theme, valid }) => !valid && ` border: 1px solid ${theme.colors.error}; `} padding: 2px 4px; `; export interface OptionProps { /** Label text for this option. If omitted, `value` is used as the label. */ label?: string; /** Value of this option. */ value: string; } export interface CheckboxGroupComponentProps extends ComponentProps { isDisabled?: boolean; isInline?: boolean; isRequired?: boolean; isValid?: boolean; onChange: (value: string) => React.FormEventHandler; options: OptionProps[]; rowSpace: number; selectedValues: string[]; } function CheckboxGroupComponent(props: CheckboxGroupComponentProps) { const { isDisabled, isInline, isValid, onChange, options, rowSpace, selectedValues, } = props; return ( {options && options.length > 0 && [...options].map((option: OptionProps) => ( ))} ); } export default CheckboxGroupComponent;