@aokiapp/rjsf-mantine-theme
Version:
Mantine theme, fields and widgets for react-jsonschema-form
87 lines (82 loc) • 2.79 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var react = require('react');
var core = require('@mantine/core');
var utils = require('@rjsf/utils');
var createErrors = require('../utils/createErrors.cjs');
var FieldTemplate = require('./FieldTemplate.cjs');
function BaseInputTemplate(props) {
const {
id,
placeholder,
label,
hideLabel,
value,
required,
readonly,
disabled,
onChange,
onChangeOverride,
onBlur,
onFocus,
autofocus,
options,
schema,
type,
rawErrors,
className,
hideError
} = props;
if (!id) {
console.log("No id for", props);
throw new Error(`no id for props ${JSON.stringify(props)}`);
}
const { description } = FieldTemplate.useFieldContext();
const inputProps = utils.getInputProps(schema, type, options);
let inputValue;
if (inputProps.type === "number" || inputProps.type === "integer") {
inputValue = value || value === 0 ? value : "";
} else {
inputValue = value == null ? "" : value;
}
const _onChange = react.useCallback(
({ target: { value: value2 } }) => onChange(value2 === "" ? options.emptyValue : value2),
[onChange, options]
);
const _onBlur = react.useCallback(({ target: { value: value2 } }) => onBlur(id, value2), [onBlur, id]);
const _onFocus = react.useCallback(
({ target: { value: value2 } }) => onFocus(id, value2),
[onFocus, id]
);
const InputComponent = type === "password" ? core.PasswordInput : core.TextInput;
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
/* @__PURE__ */ jsxRuntime.jsx(
InputComponent,
{
id,
placeholder,
description,
...inputProps,
label: utils.labelValue(label, hideLabel, void 0),
required,
autoFocus: autofocus,
disabled: disabled || readonly,
list: schema.examples ? utils.examplesId(id) : void 0,
value: inputValue,
error: createErrors.createErrors(rawErrors, hideError),
onChange: onChangeOverride || _onChange,
onBlur: _onBlur,
onFocus: _onFocus,
"aria-describedby": utils.ariaDescribedByIds(id, !!schema.examples),
className: `armt-widget-input ${className || ""}`
},
id
),
Array.isArray(schema.examples) && /* @__PURE__ */ jsxRuntime.jsx("datalist", { id: utils.examplesId(id), children: schema.examples.concat(schema.default && !schema.examples.includes(schema.default) ? [schema.default] : []).map((example) => {
return /* @__PURE__ */ jsxRuntime.jsx("option", { value: example }, example);
}) })
] });
}
exports.default = BaseInputTemplate;
//# sourceMappingURL=BaseInputTemplate.cjs.map