this repo has no description

Allow custom labels for Select/MultiSelect

Changed files
+15 -3
packages
core-extensions
src
moonbase
ui
extensions
types
src
+7 -2
packages/core-extensions/src/moonbase/ui/extensions/settings.tsx
···
ExtensionSettingsManifest,
MultiSelectSettingType,
NumberSettingType,
+
SelectOption,
SelectSettingType
} from "@moonlight-mod/types/config";
import WebpackRequire from "@moonlight-mod/types/discord/require";
···
autofocus={false}
clearable={false}
value={value ?? ""}
-
options={options.map((o) => ({ value: o, label: o }))}
+
options={options.map((o: SelectOption) =>
+
typeof o === "string" ? { value: o, label: o } : o
+
)}
onChange={(value: string) => {
MoonbaseSettingsStore.setExtensionConfig(ext.id, name, value);
}}
···
autofocus={false}
clearable={false}
closeOnSelect={false}
-
options={options.map((o) => ({ value: o, label: o }))}
+
options={options.map((o: SelectOption) =>
+
typeof o === "string" ? { value: o, label: o } : o
+
)}
{...useVariableSelect({
onSelectInteraction: multiSelect,
value: new Set(Array.isArray(value) ? value : [value]),
+8 -1
packages/types/src/config.ts
···
Custom = "custom"
}
+
export type SelectOption =
+
| string
+
| {
+
value: string;
+
label: string;
+
};
+
export type BooleanSettingType = {
type: ExtensionSettingType.Boolean;
default?: boolean;
···
export type SelectSettingType = {
type: ExtensionSettingType.Select;
-
options: string[];
+
options: SelectOption[];
default?: string;
};