Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lzb_79
uni-app
提交
2a227a9a
U
uni-app
项目概览
lzb_79
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2a227a9a
编写于
6月 10, 2021
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: textarea picker ssr
上级
a9b9b9a5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
65 addition
and
19 deletion
+65
-19
packages/uni-components/src/components/textarea/index.tsx
packages/uni-components/src/components/textarea/index.tsx
+20
-7
packages/uni-h5/src/view/components/picker/index.tsx
packages/uni-h5/src/view/components/picker/index.tsx
+45
-12
未找到文件。
packages/uni-components/src/components/textarea/index.tsx
浏览文件 @
2a227a9a
import
{
Ref
,
ref
,
computed
,
watch
}
from
'
vue
'
import
{
Ref
,
ref
,
computed
,
watch
,
onMounted
}
from
'
vue
'
import
{
extend
}
from
'
@vue/shared
'
import
{
defineBuiltInComponent
}
from
'
../../helpers/component
'
import
{
...
...
@@ -23,6 +23,18 @@ const props = /*#__PURE__*/ extend({}, fieldProps, {
},
})
let
fixMargin
:
Boolean
=
false
function
setFixMargin
()
{
// iOS 13 以下版本需要修正边距
const
DARK_TEST_STRING
=
'
(prefers-color-scheme: dark)
'
fixMargin
=
__NODE_JS__
?
false
:
String
(
navigator
.
platform
).
indexOf
(
'
iP
'
)
===
0
&&
String
(
navigator
.
vendor
).
indexOf
(
'
Apple
'
)
===
0
&&
window
.
matchMedia
(
DARK_TEST_STRING
).
media
!==
DARK_TEST_STRING
}
export
default
/*#__PURE__*/
defineBuiltInComponent
({
name
:
'
Textarea
'
,
props
,
...
...
@@ -88,12 +100,11 @@ export default /*#__PURE__*/ defineBuiltInComponent({
}
}
// iOS 13 以下版本需要修正边距
const
DARK_TEST_STRING
=
'
(prefers-color-scheme: dark)
'
const
fixMargin
=
String
(
navigator
.
platform
).
indexOf
(
'
iP
'
)
===
0
&&
String
(
navigator
.
vendor
).
indexOf
(
'
Apple
'
)
===
0
&&
window
.
matchMedia
(
DARK_TEST_STRING
).
media
!==
DARK_TEST_STRING
if
(
__NODE_JS__
)
{
onMounted
(
setFixMargin
)
}
else
{
setFixMargin
()
}
return
()
=>
{
let
textareaNode
=
...
...
@@ -120,6 +131,7 @@ export default /*#__PURE__*/ defineBuiltInComponent({
value
=
{
state
.
value
}
disabled
=
{
!!
props
.
disabled
}
maxlength
=
{
state
.
maxlength
}
// @ts-ignore
enterkeyhint
=
{
props
.
confirmType
}
class
=
{
{
'
uni-textarea-textarea
'
:
true
,
...
...
@@ -148,6 +160,7 @@ export default /*#__PURE__*/ defineBuiltInComponent({
{
valueCompute
.
value
.
map
((
item
)
=>
(
<
div
>
{
item
.
trim
()
?
item
:
'
.
'
}
</
div
>
))
}
{
/* @ts-ignore */
}
<
ResizeSensor
initial
onResize
=
{
onResize
}
/>
</
div
>
{
props
.
confirmType
===
'
search
'
?
(
...
...
packages/uni-h5/src/view/components/picker/index.tsx
浏览文件 @
2a227a9a
...
...
@@ -11,6 +11,7 @@ import {
Transition
,
Ref
,
ExtractPropTypes
,
onMounted
,
}
from
'
vue
'
import
{
useBooleanAttr
,
...
...
@@ -440,6 +441,43 @@ function usePickerState(props: Props) {
}
}
const
getiPadFlag
=
()
=>
String
(
navigator
.
vendor
).
indexOf
(
'
Apple
'
)
===
0
&&
navigator
.
maxTouchPoints
>
0
function
useIsiPad
()
{
const
isiPad
=
ref
(
false
)
if
(
__NODE_JS__
)
{
onMounted
(()
=>
(
isiPad
.
value
=
getiPadFlag
()))
}
else
{
isiPad
.
value
=
getiPadFlag
()
}
return
isiPad
}
const
getSystem
=
()
=>
{
if
(
/win|mac/i
.
test
(
navigator
.
platform
))
{
if
(
navigator
.
vendor
===
'
Google Inc.
'
)
{
return
'
chrome
'
}
else
if
(
/Firefox/
.
test
(
navigator
.
userAgent
))
{
return
'
firefox
'
}
}
return
''
}
function
useSystem
()
{
const
_system
=
ref
(
''
)
if
(
__NODE_JS__
)
{
onMounted
(()
=>
(
_system
.
value
=
getSystem
()))
}
else
{
_system
.
value
=
getSystem
()
}
return
_system
}
let
__contentVisibleDelay
:
number
function
usePickerMethods
(
props
:
Props
,
...
...
@@ -450,29 +488,24 @@ function usePickerMethods(
selectRef
:
HTMLRef
,
inputRef
:
HTMLRef
)
{
const
isiPad
=
useIsiPad
()
const
_system
=
useSystem
()
const
selectorTypeComputed
=
computed
(()
=>
{
const
type
=
props
.
selectorType
if
(
Object
.
values
(
selectorType
).
includes
(
type
))
{
return
type
}
return
String
(
navigator
.
vendor
).
indexOf
(
'
Apple
'
)
===
0
&&
navigator
.
maxTouchPoints
>
0
?
selectorType
.
PICKER
:
selectorType
.
SELECT
return
isiPad
.
value
?
selectorType
.
PICKER
:
selectorType
.
SELECT
})
const
system
=
computed
(()
=>
{
if
(
__NODE_JS__
)
return
''
if
(
props
.
mode
===
mode
.
DATE
&&
!
Object
.
values
(
fields
).
includes
(
props
.
fields
)
&&
state
.
isDesktop
&&
/win|mac/i
.
test
(
navigator
.
platform
)
state
.
isDesktop
)
{
if
(
navigator
.
vendor
===
'
Google Inc.
'
)
{
return
'
chrome
'
}
else
if
(
/Firefox/
.
test
(
navigator
.
userAgent
))
{
return
'
firefox
'
}
return
_system
.
value
}
return
''
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录