Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wzj-java
uni-app
提交
2cefea24
U
uni-app
项目概览
wzj-java
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2cefea24
编写于
3月 30, 2022
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: input ignoreCompositionEvent
上级
a6e4fbbe
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
3 deletion
+21
-3
packages/uni-components/src/helpers/useField.ts
packages/uni-components/src/helpers/useField.ts
+20
-2
packages/uni-components/src/vue/textarea/index.tsx
packages/uni-components/src/vue/textarea/index.tsx
+1
-1
未找到文件。
packages/uni-components/src/helpers/useField.ts
浏览文件 @
2cefea24
...
@@ -139,6 +139,10 @@ export const props = /*#__PURE__*/ extend(
...
@@ -139,6 +139,10 @@ export const props = /*#__PURE__*/ extend(
type
:
Boolean
,
type
:
Boolean
,
default
:
false
,
default
:
false
,
},
},
ignoreCompositionEvent
:
{
type
:
Boolean
,
default
:
true
,
},
},
},
keyboardProps
keyboardProps
)
)
...
@@ -150,6 +154,9 @@ export const emit = [
...
@@ -150,6 +154,9 @@ export const emit = [
'
update:value
'
,
'
update:value
'
,
'
update:modelValue
'
,
'
update:modelValue
'
,
'
update:focus
'
,
'
update:focus
'
,
'
compositionstart
'
,
'
compositionupdate
'
,
'
compositionend
'
,
...
keyboardEmit
,
...
keyboardEmit
,
]
]
...
@@ -309,6 +316,7 @@ function useAutoFocus(props: Props, fieldRef: Ref<HTMLFieldElement | null>) {
...
@@ -309,6 +316,7 @@ function useAutoFocus(props: Props, fieldRef: Ref<HTMLFieldElement | null>) {
function
useEvent
(
function
useEvent
(
fieldRef
:
Ref
<
HTMLFieldElement
|
null
>
,
fieldRef
:
Ref
<
HTMLFieldElement
|
null
>
,
state
:
State
,
state
:
State
,
props
:
Props
,
trigger
:
CustomEventTrigger
,
trigger
:
CustomEventTrigger
,
triggerInput
:
Function
,
triggerInput
:
Function
,
beforeInput
?:
(
event
:
Event
,
state
:
State
)
=>
any
beforeInput
?:
(
event
:
Event
,
state
:
State
)
=>
any
...
@@ -366,7 +374,7 @@ function useEvent(
...
@@ -366,7 +374,7 @@ function useEvent(
return
return
}
}
state
.
value
=
field
.
value
state
.
value
=
field
.
value
if
(
!
state
.
composing
)
{
if
(
!
state
.
composing
||
!
props
.
ignoreCompositionEvent
)
{
triggerInput
(
triggerInput
(
event
,
event
,
{
{
...
@@ -397,6 +405,7 @@ function useEvent(
...
@@ -397,6 +405,7 @@ function useEvent(
field
.
addEventListener
(
'
compositionstart
'
,
(
event
)
=>
{
field
.
addEventListener
(
'
compositionstart
'
,
(
event
)
=>
{
event
.
stopPropagation
()
event
.
stopPropagation
()
state
.
composing
=
true
state
.
composing
=
true
_onComposition
(
event
)
})
})
field
.
addEventListener
(
'
compositionend
'
,
(
event
)
=>
{
field
.
addEventListener
(
'
compositionend
'
,
(
event
)
=>
{
event
.
stopPropagation
()
event
.
stopPropagation
()
...
@@ -405,7 +414,16 @@ function useEvent(
...
@@ -405,7 +414,16 @@ function useEvent(
// 部分输入法 compositionend 事件可能晚于 input
// 部分输入法 compositionend 事件可能晚于 input
onInput
(
event
)
onInput
(
event
)
}
}
_onComposition
(
event
)
})
})
field
.
addEventListener
(
'
compositionupdate
'
,
_onComposition
)
function
_onComposition
(
event
:
Event
)
{
if
(
!
props
.
ignoreCompositionEvent
)
{
trigger
((
event
as
InputEvent
).
type
,
event
,
{
value
:
(
event
as
InputEvent
).
data
,
})
}
}
}
}
watch
([()
=>
state
.
selectionStart
,
()
=>
state
.
selectionEnd
],
checkSelection
)
watch
([()
=>
state
.
selectionStart
,
()
=>
state
.
selectionEnd
],
checkSelection
)
watch
(()
=>
state
.
cursor
,
checkCursor
)
watch
(()
=>
state
.
cursor
,
checkCursor
)
...
@@ -425,7 +443,7 @@ export function useField(
...
@@ -425,7 +443,7 @@ export function useField(
useKeyboard
(
props
,
fieldRef
,
trigger
)
useKeyboard
(
props
,
fieldRef
,
trigger
)
const
{
state
:
scopedAttrsState
}
=
useScopedAttrs
()
const
{
state
:
scopedAttrsState
}
=
useScopedAttrs
()
useFormField
(
'
name
'
,
state
)
useFormField
(
'
name
'
,
state
)
useEvent
(
fieldRef
,
state
,
trigger
,
triggerInput
,
beforeInput
)
useEvent
(
fieldRef
,
state
,
props
,
trigger
,
triggerInput
,
beforeInput
)
// Safari 14 以上修正禁用状态颜色
// Safari 14 以上修正禁用状态颜色
// TODO fixDisabledColor 可以调整到beforeMount或mounted做修正,确保不影响SSR
// TODO fixDisabledColor 可以调整到beforeMount或mounted做修正,确保不影响SSR
...
...
packages/uni-components/src/vue/textarea/index.tsx
浏览文件 @
2cefea24
...
@@ -39,7 +39,7 @@ function setFixMargin() {
...
@@ -39,7 +39,7 @@ function setFixMargin() {
export
default
/*#__PURE__*/
defineBuiltInComponent
({
export
default
/*#__PURE__*/
defineBuiltInComponent
({
name
:
'
Textarea
'
,
name
:
'
Textarea
'
,
props
,
props
,
emit
:
[
'
confirm
'
,
'
linechange
'
,
...
fieldEmit
],
emit
s
:
[
'
confirm
'
,
'
linechange
'
,
...
fieldEmit
],
setup
(
props
,
{
emit
})
{
setup
(
props
,
{
emit
})
{
const
rootRef
:
Ref
<
HTMLElement
|
null
>
=
ref
(
null
)
const
rootRef
:
Ref
<
HTMLElement
|
null
>
=
ref
(
null
)
const
{
fieldRef
,
state
,
scopedAttrsState
,
fixDisabledColor
,
trigger
}
=
const
{
fieldRef
,
state
,
scopedAttrsState
,
fixDisabledColor
,
trigger
}
=
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录