UNPKG

@aokiapp/rjsf-mantine-theme

Version:

Mantine theme, fields and widgets for react-jsonschema-form

1 lines 5.61 kB
{"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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"}