UNPKG

@aokiapp/rjsf-mantine-theme

Version:

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

87 lines (82 loc) 2.79 kB
'use strict'; 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