UNPKG

@aokiapp/rjsf-mantine-theme

Version:

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

89 lines (84 loc) 2.81 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var utils = require('@rjsf/utils'); var core = require('@mantine/core'); var react = require('react'); var createErrors = require('../utils/createErrors.cjs'); var FieldTemplate = require('../templates/FieldTemplate.cjs'); 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 = utils.enumOptionsIndexForValue(checkboxesValues, enumOptions, true); const handleBlur = react.useCallback( ({ target: { value: value2 } }) => onBlur(id, utils.enumOptionsValueForIndex(value2, enumOptions, emptyValue)), [onBlur, id, enumOptions, emptyValue] ); const handleFocus = react.useCallback( ({ target: { value: value2 } }) => onFocus(id, utils.enumOptionsValueForIndex(value2, enumOptions, emptyValue)), [onFocus, id, enumOptions, emptyValue] ); const { description } = FieldTemplate.useFieldContext(); const _onChange = (nextIndices) => { const nextValues = utils.enumOptionsValueForIndex(nextIndices, enumOptions, []); onChange(nextValues); }; return /* @__PURE__ */ jsxRuntime.jsx( core.Checkbox.Group, { label: utils.labelValue(label, hideLabel, false), description, error: createErrors.createErrors(rawErrors, hideError), onChange: _onChange, onBlur: handleBlur, onFocus: handleFocus, value: selectedIndices, id, required, autoFocus: autofocus, className: "armt-widget-checkboxes", children: /* @__PURE__ */ jsxRuntime.jsx( core.Box, { style: { display: "flex", flexDirection: inline ? "row" : "column", gap: "0.5rem" }, children: enumOptions?.map((option, index) => { return /* @__PURE__ */ jsxRuntime.jsx( core.Checkbox, { id: utils.optionId(id, index), label: option.label, value: utils.enumOptionsIndexForValue(option.value, enumOptions, false), disabled: disabled || readonly || (enumDisabled ?? []).includes(index), name: id, "aria-describedby": utils.ariaDescribedByIds(id), description: option.schema?.description }, index ); }) } ) } ); } exports.default = CheckboxesWidget; //# sourceMappingURL=CheckboxesWidget.cjs.map