UNPKG

@aokiapp/rjsf-mantine-theme

Version:

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

99 lines (94 loc) 3.39 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var react = require('react'); var utils = require('@rjsf/utils'); var core = require('@mantine/core'); var createErrors = require('../utils/createErrors.cjs'); var FieldTemplate = require('../templates/FieldTemplate.cjs'); function SelectWidget({ id, options, value, required, disabled, readonly, label, hideLabel, rawErrors, multiple = false, autofocus = false, onChange, onBlur, onFocus, hideError, placeholder }) { const { enumOptions, enumDisabled, emptyValue: optEmptyVal } = options; const selectedIndices = utils.enumOptionsIndexForValue(value, enumOptions, multiple); const handleFocus = react.useCallback(() => { return onFocus(id, utils.enumOptionsValueForIndex(selectedIndices, enumOptions, optEmptyVal)); }, [onFocus, id, selectedIndices, enumOptions, optEmptyVal]); const handleBlur = react.useCallback(() => { return onBlur(id, utils.enumOptionsValueForIndex(selectedIndices, enumOptions, optEmptyVal)); }, [onBlur, id, selectedIndices, enumOptions, optEmptyVal]); const handleChange = react.useCallback( (value2) => { return onChange(utils.enumOptionsValueForIndex(value2, enumOptions, optEmptyVal)); }, [onChange, enumOptions, optEmptyVal] ); const { description } = FieldTemplate.useFieldContext(); if (multiple) { return /* @__PURE__ */ jsxRuntime.jsx( core.MultiSelect, { clearable: !required, data: (enumOptions || []).map(({ value: value2, label: label2 }, i) => { const disabled2 = enumDisabled && enumDisabled.indexOf(value2) !== -1; return { value: String(i), label: label2, disabled: disabled2 }; }), description, disabled: disabled || readonly, error: createErrors.createErrors(rawErrors, hideError), label: utils.labelValue(label, hideLabel, false), autoFocus: autofocus, required, searchable: true, value: selectedIndices, onChange: handleChange, onDropdownClose: handleBlur, onDropdownOpen: handleFocus, "aria-describedby": utils.ariaDescribedByIds(id), placeholder, className: "armt-widget-select armt-widget-select-multiple" } ); } else { const valuedData = (enumOptions || []).map(({ value: value2, label: label2 }, i) => { const disabled2 = enumDisabled && enumDisabled.indexOf(value2) !== -1; return { value: String(i), label: label2, disabled: disabled2 }; }); const data = [{ value: "-1", label: placeholder || "" }, ...valuedData]; return /* @__PURE__ */ jsxRuntime.jsx( core.NativeSelect, { data, description, disabled: disabled || readonly, error: createErrors.createErrors(rawErrors, hideError), label: utils.labelValue(label, hideLabel, false), autoFocus: autofocus, required, value: selectedIndices ?? "-1", onChange: (event) => handleChange(event.currentTarget.value), onFocus: handleFocus, onBlur: handleBlur, "aria-describedby": utils.ariaDescribedByIds(id), className: "armt-widget-select armt-widget-select-single" } ); } } exports.default = SelectWidget; //# sourceMappingURL=SelectWidget.cjs.map