aboutsummaryrefslogtreecommitdiff
path: root/src/components/PluginSettings
diff options
context:
space:
mode:
authormegumin <megumin.bakaretsurie@gmail.com>2022-10-26 22:42:26 +0100
committerGitHub <noreply@github.com>2022-10-26 23:42:26 +0200
commit13882b5732ef14f6535c32f4c6840081d677e0f7 (patch)
tree4e6c5e8fad597c9d35cc6cb06c2c60b1fac648c3 /src/components/PluginSettings
parent49e72bab329bfd589bf921a490ae2379a59bae1c (diff)
downloadVencord-13882b5732ef14f6535c32f4c6840081d677e0f7.tar.gz
Vencord-13882b5732ef14f6535c32f4c6840081d677e0f7.tar.bz2
Vencord-13882b5732ef14f6535c32f4c6840081d677e0f7.zip
feat: custom components in settings (#165)
Diffstat (limited to 'src/components/PluginSettings')
-rw-r--r--src/components/PluginSettings/PluginModal.tsx7
-rw-r--r--src/components/PluginSettings/components/SettingCustomComponent.tsx24
-rw-r--r--src/components/PluginSettings/components/index.ts1
3 files changed, 31 insertions, 1 deletions
diff --git a/src/components/PluginSettings/PluginModal.tsx b/src/components/PluginSettings/PluginModal.tsx
index 970eb52..9a47c32 100644
--- a/src/components/PluginSettings/PluginModal.tsx
+++ b/src/components/PluginSettings/PluginModal.tsx
@@ -30,10 +30,11 @@ import ErrorBoundary from "../ErrorBoundary";
import { Flex } from "../Flex";
import {
SettingBooleanComponent,
+ SettingCustomComponent,
SettingInputComponent,
SettingNumericComponent,
SettingSelectComponent,
- SettingSliderComponent,
+ SettingSliderComponent
} from "./components";
const UserSummaryItem = lazyWebpack(filters.byCode("defaultRenderUser", "showDefaultAvatarsForNullUsers"));
@@ -143,6 +144,10 @@ export default function PluginModal({ plugin, onRestartNeeded, onClose, transiti
options.push(<SettingSliderComponent key={key} option={setting} {...props} />);
break;
}
+ case OptionType.COMPONENT: {
+ options.push(<SettingCustomComponent key={key} option={setting} {...props} />);
+ break;
+ }
}
}
return <Flex flexDirection="column" style={{ gap: 12 }}>{options}</Flex>;
diff --git a/src/components/PluginSettings/components/SettingCustomComponent.tsx b/src/components/PluginSettings/components/SettingCustomComponent.tsx
new file mode 100644
index 0000000..dd704bf
--- /dev/null
+++ b/src/components/PluginSettings/components/SettingCustomComponent.tsx
@@ -0,0 +1,24 @@
+/*
+ * Vencord, a modification for Discord's desktop app
+ * Copyright (c) 2022 Vendicated and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+import { PluginOptionComponent } from "../../../utils/types";
+import { ISettingElementProps } from ".";
+
+export function SettingCustomComponent({ option, onChange, onError }: ISettingElementProps<PluginOptionComponent>) {
+ return option.component({ setValue: onChange, setError: onError, option });
+}
diff --git a/src/components/PluginSettings/components/index.ts b/src/components/PluginSettings/components/index.ts
index 1712987..507b53a 100644
--- a/src/components/PluginSettings/components/index.ts
+++ b/src/components/PluginSettings/components/index.ts
@@ -30,6 +30,7 @@ export interface ISettingElementProps<T extends PluginOptionBase> {
}
export * from "./SettingBooleanComponent";
+export * from "./SettingCustomComponent";
export * from "./SettingNumericComponent";
export * from "./SettingSelectComponent";
export * from "./SettingSliderComponent";