Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小浣熊撸代码
uni-app
提交
ffafdf3b
U
uni-app
项目概览
小浣熊撸代码
/
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,体验更适合开发者的 AI 搜索 >>
提交
ffafdf3b
编写于
1月 17, 2022
作者:
fxy060608
浏览文件
操作
浏览文件
下载
差异文件
chore: merge
上级
5423bb72
aa2c563b
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
117 addition
and
10 deletion
+117
-10
packages/uni-app-plus/dist/uni-app-view.umd.js
packages/uni-app-plus/dist/uni-app-view.umd.js
+1
-1
packages/uni-components/src/helpers/useField.ts
packages/uni-components/src/helpers/useField.ts
+14
-3
packages/uni-h5/dist/uni-h5.cjs.js
packages/uni-h5/dist/uni-h5.cjs.js
+12
-3
packages/uni-h5/dist/uni-h5.es.js
packages/uni-h5/dist/uni-h5.es.js
+12
-3
packages/uni-mp-compiler/__tests__/vHtml.spec.ts
packages/uni-mp-compiler/__tests__/vHtml.spec.ts
+29
-0
packages/uni-mp-compiler/src/compile.ts
packages/uni-mp-compiler/src/compile.ts
+2
-0
packages/uni-mp-compiler/src/transforms/vHtml.ts
packages/uni-mp-compiler/src/transforms/vHtml.ts
+47
-0
未找到文件。
packages/uni-app-plus/dist/uni-app-view.umd.js
浏览文件 @
ffafdf3b
此差异已折叠。
点击以展开。
packages/uni-components/src/helpers/useField.ts
浏览文件 @
ffafdf3b
...
...
@@ -314,7 +314,8 @@ function useEvent(
field
&&
state
.
focus
&&
state
.
selectionStart
>
-
1
&&
state
.
selectionEnd
>
-
1
state
.
selectionEnd
>
-
1
&&
field
.
type
!==
'
number
'
)
{
field
.
selectionStart
=
state
.
selectionStart
field
.
selectionEnd
=
state
.
selectionEnd
...
...
@@ -327,7 +328,8 @@ function useEvent(
state
.
focus
&&
state
.
selectionStart
<
0
&&
state
.
selectionEnd
<
0
&&
state
.
cursor
>
-
1
state
.
cursor
>
-
1
&&
field
.
type
!==
'
number
'
)
{
field
.
selectionEnd
=
field
.
selectionStart
=
state
.
cursor
}
...
...
@@ -370,9 +372,18 @@ function useEvent(
onInput
(
event
,
true
)
}
state
.
focus
=
false
const
field
=
event
.
target
!
as
HTMLInputElement
let
cursor
if
(
field
.
type
===
'
number
'
)
{
field
.
type
=
'
text
'
cursor
=
field
.
selectionEnd
field
.
type
=
'
number
'
}
else
{
cursor
=
field
.
selectionEnd
}
trigger
(
'
blur
'
,
event
,
{
value
:
state
.
value
,
cursor
:
(
event
.
target
as
HTMLFieldElement
).
selectionEnd
,
cursor
,
})
}
// 避免触发父组件 change 事件
...
...
packages/uni-h5/dist/uni-h5.cjs.js
浏览文件 @
ffafdf3b
...
...
@@ -3040,14 +3040,14 @@ function useAutoFocus(props2, fieldRef) {
function
useEvent
(
fieldRef
,
state
,
trigger
,
triggerInput
,
beforeInput
)
{
function
checkSelection
()
{
const
field
=
fieldRef
.
value
;
if
(
field
&&
state
.
focus
&&
state
.
selectionStart
>
-
1
&&
state
.
selectionEnd
>
-
1
)
{
if
(
field
&&
state
.
focus
&&
state
.
selectionStart
>
-
1
&&
state
.
selectionEnd
>
-
1
&&
field
.
type
!==
"
number
"
)
{
field
.
selectionStart
=
state
.
selectionStart
;
field
.
selectionEnd
=
state
.
selectionEnd
;
}
}
function
checkCursor
()
{
const
field
=
fieldRef
.
value
;
if
(
field
&&
state
.
focus
&&
state
.
selectionStart
<
0
&&
state
.
selectionEnd
<
0
&&
state
.
cursor
>
-
1
)
{
if
(
field
&&
state
.
focus
&&
state
.
selectionStart
<
0
&&
state
.
selectionEnd
<
0
&&
state
.
cursor
>
-
1
&&
field
.
type
!==
"
number
"
)
{
field
.
selectionEnd
=
field
.
selectionStart
=
state
.
cursor
;
}
}
...
...
@@ -3080,9 +3080,18 @@ function useEvent(fieldRef, state, trigger, triggerInput, beforeInput) {
onInput
(
event
,
true
);
}
state
.
focus
=
false
;
const
field2
=
event
.
target
;
let
cursor
;
if
(
field2
.
type
===
"
number
"
)
{
field2
.
type
=
"
text
"
;
cursor
=
field2
.
selectionEnd
;
field2
.
type
=
"
number
"
;
}
else
{
cursor
=
field2
.
selectionEnd
;
}
trigger
(
"
blur
"
,
event
,
{
value
:
state
.
value
,
cursor
:
event
.
target
.
selectionEnd
cursor
});
};
field
.
addEventListener
(
"
change
"
,
(
event
)
=>
event
.
stopPropagation
());
...
...
packages/uni-h5/dist/uni-h5.es.js
浏览文件 @
ffafdf3b
...
...
@@ -8446,14 +8446,14 @@ function useAutoFocus(props2, fieldRef) {
function useEvent(fieldRef, state2, trigger, triggerInput, beforeInput) {
function checkSelection() {
const field = fieldRef.value;
if (field && state2.focus && state2.selectionStart > -1 && state2.selectionEnd > -1) {
if (field && state2.focus && state2.selectionStart > -1 && state2.selectionEnd > -1
&& field.type !== "number"
) {
field.selectionStart = state2.selectionStart;
field.selectionEnd = state2.selectionEnd;
}
}
function checkCursor() {
const field = fieldRef.value;
if (field && state2.focus && state2.selectionStart < 0 && state2.selectionEnd < 0 && state2.cursor > -1) {
if (field && state2.focus && state2.selectionStart < 0 && state2.selectionEnd < 0 && state2.cursor > -1
&& field.type !== "number"
) {
field.selectionEnd = field.selectionStart = state2.cursor;
}
}
...
...
@@ -8486,9 +8486,18 @@ function useEvent(fieldRef, state2, trigger, triggerInput, beforeInput) {
onInput(event, true);
}
state2.focus = false;
const field2 = event.target;
let cursor;
if (field2.type === "number") {
field2.type = "text";
cursor = field2.selectionEnd;
field2.type = "number";
} else {
cursor = field2.selectionEnd;
}
trigger("blur", event, {
value: state2.value,
cursor
: event.target.selectionEnd
cursor
});
};
field.addEventListener("change", (event) => event.stopPropagation());
...
...
packages/uni-mp-compiler/__tests__/vHtml.spec.ts
0 → 100644
浏览文件 @
ffafdf3b
import
{
assert
}
from
'
./testUtils
'
describe
(
'
compiler: transform v-html
'
,
()
=>
{
test
(
'
basic
'
,
()
=>
{
assert
(
`<view v-html="html"></view>`
,
`<view><rich-text nodes="{{a}}"/></view>`
,
`(_ctx, _cache) => {
return { a: _ctx.html }
}`
)
assert
(
`<view v-html="'<div/>'"></view>`
,
`<view><rich-text nodes="{{'<div/>'}}"/></view>`
,
`(_ctx, _cache) => {
return {}
}`
)
})
test
(
'
self closing
'
,
()
=>
{
assert
(
`<view v-html="html"/>`
,
`<view><rich-text nodes="{{a}}"/></view>`
,
`(_ctx, _cache) => {
return { a: _ctx.html }
}`
)
})
})
packages/uni-mp-compiler/src/compile.ts
浏览文件 @
ffafdf3b
...
...
@@ -17,6 +17,7 @@ import { transformComponent } from './transforms/transformComponent'
import
{
transformSlot
}
from
'
./transforms/vSlot
'
import
{
transformRoot
}
from
'
./transforms/transformRoot
'
import
{
transformTag
}
from
'
./transforms/transformTag
'
import
{
transformHtml
}
from
'
./transforms/vHtml
'
export
type
TransformPreset
=
[
NodeTransform
[],
...
...
@@ -34,6 +35,7 @@ export function getBaseTransformPreset({
const
nodeTransforms
=
[
transformRoot
,
transformTag
,
transformHtml
,
transformIf
,
transformFor
,
transformSlot
,
...
...
packages/uni-mp-compiler/src/transforms/vHtml.ts
0 → 100644
浏览文件 @
ffafdf3b
import
{
createBindDirectiveNode
,
isElementNode
,
}
from
'
@dcloudio/uni-cli-shared
'
import
{
DirectiveNode
,
ElementNode
,
ElementTypes
,
findDir
,
NodeTypes
,
PlainElementNode
,
}
from
'
@vue/compiler-core
'
import
{
NodeTransform
}
from
'
../transform
'
export
const
transformHtml
:
NodeTransform
=
(
node
,
_
)
=>
{
if
(
!
isElementNode
(
node
))
{
return
}
const
dir
=
findDir
(
node
,
'
html
'
)
if
(
!
dir
)
{
return
}
// remove v-html
node
.
props
.
splice
(
node
.
props
.
indexOf
(
dir
),
1
)
if
(
node
.
tagType
!==
ElementTypes
.
ELEMENT
)
{
return
}
node
.
isSelfClosing
=
false
node
.
children
=
[
createRichText
(
node
,
dir
)]
}
function
createRichText
(
node
:
PlainElementNode
,
dir
:
DirectiveNode
):
ElementNode
{
return
{
tag
:
'
rich-text
'
,
type
:
NodeTypes
.
ELEMENT
,
tagType
:
ElementTypes
.
ELEMENT
,
props
:
[
createBindDirectiveNode
(
'
nodes
'
,
dir
.
exp
||
''
)],
isSelfClosing
:
true
,
children
:
[],
codegenNode
:
undefined
,
ns
:
node
.
ns
,
loc
:
node
.
loc
,
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录