@codecademy/gamut
71.0.071.0.1-alpha.69ab4c.0
dist/Form/SelectDropdown/elements/containers.js~
dist/Form/SelectDropdown/elements/containers.jsModified+17−1
Index: package/dist/Form/SelectDropdown/elements/containers.js
===================================================================
--- package/dist/Form/SelectDropdown/elements/containers.js
+++ package/dist/Form/SelectDropdown/elements/containers.js
@@ -1,6 +1,7 @@
import { createContext, useLayoutEffect } from 'react';
import ReactSelect, { components as SelectDropdownElements } from 'react-select';
+import CreatableSelect from 'react-select/creatable';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
/**
* React context for sharing state between SelectDropdown components.
* Provides access to focus state and refs for keyboard navigation.
@@ -115,14 +116,29 @@
};
/**
* Typed wrapper around react-select component.
- * Provides type safety for the underlying react-select implementation.
+ * Renders CreatableSelect when isCreatable is true, ReactSelect otherwise.
+ * Creatable-only props (formatCreateLabel, isValidNewOption) are stripped from
+ * the non-creatable path so they don't reach ReactSelect. `onCreateOption` is
+ * handled in SelectDropdown's changeHandler — do not pass it to CreatableSelect
+ * or react-select will skip onChange on create.
*/
export function TypedReactSelect({
selectRef,
+ isCreatable,
+ formatCreateLabel,
+ isValidNewOption,
...props
}) {
+ if (isCreatable) {
+ return /*#__PURE__*/_jsx(CreatableSelect, {
+ ...props,
+ formatCreateLabel: formatCreateLabel,
+ isValidNewOption: isValidNewOption,
+ ref: selectRef
+ });
+ }
return /*#__PURE__*/_jsx(ReactSelect, {
...props,
ref: selectRef
});