@aokiapp/rjsf-mantine-theme
Version:
Mantine theme, fields and widgets for react-jsonschema-form
1 lines • 6.94 kB
Source Map (JSON)
{"version":3,"file":"SelectWidget.mjs","sources":["../../src/widgets/SelectWidget.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport {\n ariaDescribedByIds,\n enumOptionsIndexForValue,\n enumOptionsValueForIndex,\n FormContextType,\n labelValue,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\nimport { MultiSelect, NativeSelect } from '@mantine/core';\nimport { createErrors } from '../utils/createErrors';\nimport { useFieldContext } from '../templates/FieldTemplate';\n\n/** The `SelectWidget` is a widget for rendering dropdowns.\n * It is typically used with string properties constrained with enum options.\n *\n * @param props - The `WidgetProps` for this component\n */\nfunction SelectWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n options,\n value,\n required,\n disabled,\n readonly,\n label,\n hideLabel,\n rawErrors,\n multiple = false,\n autofocus = false,\n onChange,\n onBlur,\n onFocus,\n hideError,\n placeholder,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, enumDisabled, emptyValue: optEmptyVal } = options;\n\n const selectedIndices = enumOptionsIndexForValue<S>(value, enumOptions, multiple);\n\n // Bypassing null check here because enumOptionsValueForIndex will falls into emptyValue if matching fails\n const handleFocus = useCallback(() => {\n return onFocus(id, enumOptionsValueForIndex<S>(selectedIndices!, enumOptions, optEmptyVal));\n }, [onFocus, id, selectedIndices, enumOptions, optEmptyVal]);\n\n const handleBlur = useCallback(() => {\n return onBlur(id, enumOptionsValueForIndex<S>(selectedIndices!, enumOptions, optEmptyVal));\n }, [onBlur, id, selectedIndices, enumOptions, optEmptyVal]);\n\n const handleChange = useCallback(\n (value: string | null | string[]) => {\n return onChange(enumOptionsValueForIndex<S>(value!, enumOptions, optEmptyVal));\n },\n [onChange, enumOptions, optEmptyVal],\n );\n\n const { description } = useFieldContext();\n\n if (multiple) {\n return (\n <MultiSelect\n clearable={!required}\n data={(enumOptions || []).map(({ value, label }, i) => {\n const disabled = enumDisabled && enumDisabled.indexOf(value) !== -1;\n return { value: String(i), label, disabled };\n })}\n description={description}\n disabled={disabled || readonly}\n error={createErrors<T>(rawErrors, hideError)}\n label={labelValue(label, hideLabel, false)}\n autoFocus={autofocus}\n required={required}\n searchable\n value={selectedIndices as string[]}\n onChange={handleChange}\n onDropdownClose={handleBlur}\n onDropdownOpen={handleFocus}\n aria-describedby={ariaDescribedByIds<T>(id)}\n placeholder={placeholder}\n className='armt-widget-select armt-widget-select-multiple'\n />\n );\n } else {\n const valuedData = (enumOptions || []).map(({ value, label }, i) => {\n const disabled = enumDisabled && enumDisabled.indexOf(value) !== -1;\n return { value: String(i), label, disabled };\n });\n const data = [{ value: '-1', label: placeholder || '' }, ...valuedData];\n return (\n <NativeSelect\n data={data}\n description={description}\n disabled={disabled || readonly}\n error={createErrors<T>(rawErrors, hideError)}\n label={labelValue(label, hideLabel, false)}\n autoFocus={autofocus}\n required={required}\n value={selectedIndices ?? '-1'}\n onChange={(event) => handleChange(event.currentTarget.value)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-describedby={ariaDescribedByIds<T>(id)}\n className='armt-widget-select armt-widget-select-single'\n />\n );\n }\n}\n\nexport default SelectWidget;\n"],"names":[],"mappings":"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"}