From 48fce295a60e32acf04dd155d4f774fe3343ea7a Mon Sep 17 00:00:00 2001 From: dexter-cuijian <1109883925@qq.com> Date: Fri, 6 Jun 2025 11:45:11 +0800 Subject: [PATCH 1/4] feat add prefixNoFocus --- components/sender/demo/_semantic.tsx | 1 + components/sender/index.tsx | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/components/sender/demo/_semantic.tsx b/components/sender/demo/_semantic.tsx index 45a5f1b18..6a4116d7b 100644 --- a/components/sender/demo/_semantic.tsx +++ b/components/sender/demo/_semantic.tsx @@ -49,6 +49,7 @@ const App: React.FC = () => { > } />} + prefixNoFocus footer={() => ( Deep thinking can understand the intent behind. diff --git a/components/sender/index.tsx b/components/sender/index.tsx index 816c10a42..775049650 100644 --- a/components/sender/index.tsx +++ b/components/sender/index.tsx @@ -76,6 +76,7 @@ export interface SenderProps actions?: React.ReactNode | ActionsRender; allowSpeech?: AllowSpeech; prefix?: React.ReactNode; + prefixNoFocus?: boolean; footer?: React.ReactNode | FooterRender; header?: React.ReactNode; autoSize?: boolean | { minRows?: number; maxRows?: number }; @@ -124,6 +125,7 @@ const ForwardSender = React.forwardRef((props, ref) => { disabled, allowSpeech, prefix, + prefixNoFocus, footer, header, onPaste, @@ -266,6 +268,11 @@ const ForwardSender = React.forwardRef((props, ref) => { e.preventDefault(); } + if (prefixNoFocus && (e.target as HTMLElement)?.closest(`.${prefixCls}-prefix`)) { + e.preventDefault(); + return; + } + inputRef.current?.focus(); }; From 0c352b88532d4018fdc42f929bda9e4135175ccb Mon Sep 17 00:00:00 2001 From: dexter-cuijian <1109883925@qq.com> Date: Fri, 6 Jun 2025 11:48:54 +0800 Subject: [PATCH 2/4] feat: add prefixNoFocus docs --- components/sender/index.zh-CN.md | 1 + 1 file changed, 1 insertion(+) diff --git a/components/sender/index.zh-CN.md b/components/sender/index.zh-CN.md index a4b154412..daff6fde5 100644 --- a/components/sender/index.zh-CN.md +++ b/components/sender/index.zh-CN.md @@ -46,6 +46,7 @@ coverDark: https://mdn.alipayobjects.com/huamei_iwk9zp/afts/img/A*cOfrS4fVkOMAAA | loading | 是否加载中 | boolean | false | - | | header | 头部面板 | ReactNode | - | - | | prefix | 前缀内容 | ReactNode | - | - | +| prefixNoFocus | 是否前缀mousedown触发输入框聚焦 | boolean | false | - | | footer | 底部内容 | ReactNode \| (info: { components: ActionsComponents }) => ReactNode | - | - | | readOnly | 是否让输入框只读 | boolean | false | - | | rootClassName | 根元素样式类 | string | - | - | From 8dcdeddca6f9537283420aef92680286db375337 Mon Sep 17 00:00:00 2001 From: dexter-cuijian <1109883925@qq.com> Date: Fri, 6 Jun 2025 11:57:43 +0800 Subject: [PATCH 3/4] docs(prefixNoFocus): update explanation --- components/sender/index.zh-CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sender/index.zh-CN.md b/components/sender/index.zh-CN.md index daff6fde5..1561765a5 100644 --- a/components/sender/index.zh-CN.md +++ b/components/sender/index.zh-CN.md @@ -46,7 +46,7 @@ coverDark: https://mdn.alipayobjects.com/huamei_iwk9zp/afts/img/A*cOfrS4fVkOMAAA | loading | 是否加载中 | boolean | false | - | | header | 头部面板 | ReactNode | - | - | | prefix | 前缀内容 | ReactNode | - | - | -| prefixNoFocus | 是否前缀mousedown触发输入框聚焦 | boolean | false | - | +| prefixNoFocus | 点击前缀区域时是否阻止输入框获得焦点 | boolean | false | - | | footer | 底部内容 | ReactNode \| (info: { components: ActionsComponents }) => ReactNode | - | - | | readOnly | 是否让输入框只读 | boolean | false | - | | rootClassName | 根元素样式类 | string | - | - | From 2dd8d1c18c85a16cf6f7ff897cee08e9adbe64b6 Mon Sep 17 00:00:00 2001 From: dexter-cuijian <1109883925@qq.com> Date: Tue, 10 Jun 2025 14:32:16 +0800 Subject: [PATCH 4/4] feat: add onlyInputFocus --- components/sender/demo/_semantic.tsx | 1 - components/sender/index.tsx | 6 +++--- components/sender/index.zh-CN.md | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/components/sender/demo/_semantic.tsx b/components/sender/demo/_semantic.tsx index 6a4116d7b..45a5f1b18 100644 --- a/components/sender/demo/_semantic.tsx +++ b/components/sender/demo/_semantic.tsx @@ -49,7 +49,6 @@ const App: React.FC = () => { > } />} - prefixNoFocus footer={() => ( Deep thinking can understand the intent behind. diff --git a/components/sender/index.tsx b/components/sender/index.tsx index 775049650..d2b9c0649 100644 --- a/components/sender/index.tsx +++ b/components/sender/index.tsx @@ -76,7 +76,7 @@ export interface SenderProps actions?: React.ReactNode | ActionsRender; allowSpeech?: AllowSpeech; prefix?: React.ReactNode; - prefixNoFocus?: boolean; + onlyInputFocus?: boolean; footer?: React.ReactNode | FooterRender; header?: React.ReactNode; autoSize?: boolean | { minRows?: number; maxRows?: number }; @@ -125,7 +125,7 @@ const ForwardSender = React.forwardRef((props, ref) => { disabled, allowSpeech, prefix, - prefixNoFocus, + onlyInputFocus, footer, header, onPaste, @@ -268,7 +268,7 @@ const ForwardSender = React.forwardRef((props, ref) => { e.preventDefault(); } - if (prefixNoFocus && (e.target as HTMLElement)?.closest(`.${prefixCls}-prefix`)) { + if (onlyInputFocus && !(e.target as HTMLElement)?.closest(`.${inputCls}`)) { e.preventDefault(); return; } diff --git a/components/sender/index.zh-CN.md b/components/sender/index.zh-CN.md index 1561765a5..133d6a972 100644 --- a/components/sender/index.zh-CN.md +++ b/components/sender/index.zh-CN.md @@ -46,7 +46,7 @@ coverDark: https://mdn.alipayobjects.com/huamei_iwk9zp/afts/img/A*cOfrS4fVkOMAAA | loading | 是否加载中 | boolean | false | - | | header | 头部面板 | ReactNode | - | - | | prefix | 前缀内容 | ReactNode | - | - | -| prefixNoFocus | 点击前缀区域时是否阻止输入框获得焦点 | boolean | false | - | +| onlyInputFocus | 是否只有点击input的时候会获得聚焦 | boolean | false | - | | footer | 底部内容 | ReactNode \| (info: { components: ActionsComponents }) => ReactNode | - | - | | readOnly | 是否让输入框只读 | boolean | false | - | | rootClassName | 根元素样式类 | string | - | - |