@aokiapp/rjsf-mantine-theme
Version:
Mantine theme, fields and widgets for react-jsonschema-form
89 lines (84 loc) • 2.81 kB
JavaScript
'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