UNPKG

@aokiapp/rjsf-mantine-theme

Version:

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

85 lines (82 loc) 2.7 kB
import { jsx } from 'react/jsx-runtime'; import { enumOptionsIndexForValue, enumOptionsValueForIndex, labelValue, optionId, ariaDescribedByIds } from '@rjsf/utils'; import { Checkbox, Box } from '@mantine/core'; import { useCallback } from 'react'; import { createErrors } from '../utils/createErrors.mjs'; import { useFieldContext } from '../templates/FieldTemplate.mjs'; function CheckboxesWidget(props) { const { id, disabled, options: { inline = false, enumOptions, enumDisabled, emptyValue }, value, autofocus, readonly, label, hideLabel, onChange, onBlur, onFocus, required, rawErrors, hideError } = props; const checkboxesValues = Array.isArray(value) ? value : [value]; const selectedIndices = enumOptionsIndexForValue(checkboxesValues, enumOptions, true); const handleBlur = useCallback( ({ target: { value: value2 } }) => onBlur(id, enumOptionsValueForIndex(value2, enumOptions, emptyValue)), [onBlur, id, enumOptions, emptyValue] ); const handleFocus = useCallback( ({ target: { value: value2 } }) => onFocus(id, enumOptionsValueForIndex(value2, enumOptions, emptyValue)), [onFocus, id, enumOptions, emptyValue] ); const { description } = useFieldContext(); const _onChange = (nextIndices) => { const nextValues = enumOptionsValueForIndex(nextIndices, enumOptions, []); onChange(nextValues); }; return /* @__PURE__ */ jsx( Checkbox.Group, { label: labelValue(label, hideLabel, false), description, error: createErrors(rawErrors, hideError), onChange: _onChange, onBlur: handleBlur, onFocus: handleFocus, value: selectedIndices, id, required, autoFocus: autofocus, className: "armt-widget-checkboxes", children: /* @__PURE__ */ jsx( Box, { style: { display: "flex", flexDirection: inline ? "row" : "column", gap: "0.5rem" }, children: enumOptions?.map((option, index) => { return /* @__PURE__ */ jsx( Checkbox, { id: optionId(id, index), label: option.label, value: enumOptionsIndexForValue(option.value, enumOptions, false), disabled: disabled || readonly || (enumDisabled ?? []).includes(index), name: id, "aria-describedby": ariaDescribedByIds(id), description: option.schema?.description }, index ); }) } ) } ); } export { CheckboxesWidget as default }; //# sourceMappingURL=CheckboxesWidget.mjs.map