{"version":3,"file":"SelectWidget.cjs","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, Select } 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    return (\n      <Select\n        allowDeselect\n        // checkIconPosition='right'\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 | null}\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-single'\n      />\n    );\n  }\n}\n\nexport default SelectWidget;\n"],"names":["enumOptionsIndexForValue","useCallback","enumOptionsValueForIndex","useFieldContext","jsx","MultiSelect","createErrors","labelValue","ariaDescribedByIds","Select"],"mappings":"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"}