{"version":3,"file":"CheckboxesWidget.mjs","sources":["../../src/widgets/CheckboxesWidget.tsx"],"sourcesContent":["import {\n  ariaDescribedByIds,\n  optionId,\n  FormContextType,\n  RJSFSchema,\n  StrictRJSFSchema,\n  WidgetProps,\n  labelValue,\n  enumOptionsValueForIndex,\n  enumOptionsIndexForValue,\n} from '@rjsf/utils';\nimport { Box, Checkbox } from '@mantine/core';\nimport { FocusEvent, useCallback } from 'react';\nimport { createErrors } from '../utils/createErrors';\nimport { useFieldContext } from '../templates/FieldTemplate';\n\n/** The `CheckboxesWidget` is a widget for rendering checkbox groups.\n *  It is typically used to represent an array of enums.\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function CheckboxesWidget<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n  const {\n    id,\n    disabled,\n    options: { inline = false, enumOptions, enumDisabled, emptyValue },\n    value,\n    autofocus,\n    readonly,\n    label,\n    hideLabel,\n    onChange,\n    onBlur,\n    onFocus,\n    required,\n    rawErrors,\n    hideError,\n  } = props;\n\n  const checkboxesValues = Array.isArray(value) ? value : [value];\n\n  const selectedIndices = enumOptionsIndexForValue<S>(checkboxesValues, enumOptions, true) as string[];\n\n  const handleBlur = useCallback(\n    ({ target: { value } }: FocusEvent<HTMLInputElement>) =>\n      onBlur(id, enumOptionsValueForIndex<S>(value, enumOptions, emptyValue)),\n    [onBlur, id, enumOptions, emptyValue],\n  );\n\n  const handleFocus = useCallback(\n    ({ target: { value } }: FocusEvent<HTMLInputElement>) =>\n      onFocus(id, enumOptionsValueForIndex<S>(value, enumOptions, emptyValue)),\n    [onFocus, id, enumOptions, emptyValue],\n  );\n\n  const { description } = useFieldContext();\n\n  const _onChange = (nextIndices: string[]) => {\n    const nextValues = enumOptionsValueForIndex<S>(nextIndices, enumOptions, []) as T[];\n    onChange(nextValues);\n  };\n  return (\n    <Checkbox.Group\n      label={labelValue(label, hideLabel, false)}\n      description={description}\n      error={createErrors<T>(rawErrors, hideError)}\n      onChange={_onChange}\n      onBlur={handleBlur}\n      onFocus={handleFocus}\n      value={selectedIndices}\n      id={id}\n      required={required}\n      autoFocus={autofocus}\n      className='armt-widget-checkboxes'\n    >\n      <Box\n        style={{\n          display: 'flex',\n          flexDirection: inline ? 'row' : 'column',\n          gap: '0.5rem',\n        }}\n      >\n        {enumOptions?.map((option, index) => {\n          return (\n            <Checkbox\n              id={optionId(id, index)}\n              key={index}\n              label={option.label}\n              value={enumOptionsIndexForValue<S>(option.value, enumOptions, false) as string}\n              disabled={disabled || readonly || (enumDisabled ?? []).includes(index)}\n              name={id}\n              aria-describedby={ariaDescribedByIds<T>(id)}\n              description={option.schema?.description}\n            />\n          );\n        })}\n      </Box>\n    </Checkbox.Group>\n  );\n}\n"],"names":[],"mappings":"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"}