diff --git a/src/components/forms.rs b/src/components/forms.rs index 60a7a68..9b6853e 100644 --- a/src/components/forms.rs +++ b/src/components/forms.rs @@ -314,7 +314,7 @@ pub fn FormSelect( /// - `r#type`:input 类型(如 `"text"`、`"email"`、`"password"`) /// - `placeholder`:占位提示文本 /// - `value`:当前值 -/// - `disabled`:是否禁用 +/// - `disabled`:是否禁用(可选,缺省 `false`) /// - `oninput`:输入事件回调,返回新的字符串值 /// - `onkeydown`:可选的键盘事件回调 #[component] @@ -323,8 +323,10 @@ pub fn FormInput( r#type: &'static str, placeholder: &'static str, value: String, + #[props(default)] disabled: bool, oninput: EventHandler, + #[props(default)] onkeydown: Option>, ) -> Element { let disabled_class = if disabled { diff --git a/src/pages/admin/mcp.rs b/src/pages/admin/mcp.rs index 044ee5c..4a071cf 100644 --- a/src/pages/admin/mcp.rs +++ b/src/pages/admin/mcp.rs @@ -21,7 +21,7 @@ use crate::api::mcp_tokens::{ McpClientConfigs, McpConfigSnippet, TokenLifetime, }; #[cfg(target_arch = "wasm32")] -use crate::components::forms::{FormSelect, INPUT_CLASS}; +use crate::components::forms::{FormInput, FormSelect}; #[cfg(target_arch = "wasm32")] use crate::components::skeletons::atoms::SkeletonBox; #[cfg(target_arch = "wasm32")] @@ -427,12 +427,11 @@ fn CreateTokenCard() -> Element { // 名称 div { class: "flex flex-col gap-2", label { class: "text-sm font-medium text-[var(--color-paper-secondary)]", "名称" } - input { - class: "{INPUT_CLASS}", + FormInput { r#type: "text", placeholder: "如 claude-code-macbook", - value: "{name()}", - oninput: move |e| name.set(e.value()), + value: name(), + oninput: move |v: String| name.set(v), } } // 作用域 @@ -542,12 +541,11 @@ fn ConfigCard() -> Element { div { class: "flex flex-col gap-2", label { class: "text-sm font-medium text-[var(--color-paper-secondary)]", "令牌明文" } - input { - class: "{INPUT_CLASS}", + FormInput { r#type: "text", placeholder: "ygg_...", - value: "{manual_token()}", - oninput: move |e| on_manual_input(e.value()), + value: manual_token(), + oninput: move |v: String| on_manual_input(v), } }