@tarojs/components-react 4.1.7-beta.3 → 4.1.7-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/image/index.js +1 -1
- package/dist/components/image/index.js.map +1 -1
- package/dist/components/image/style/{index.css.js → index.scss.js} +1 -1
- package/dist/components/image/style/index.scss.js.map +1 -0
- package/dist/components/pull-down-refresh/index.js +1 -1
- package/dist/components/pull-down-refresh/index.js.map +1 -1
- package/dist/components/{scroll-view/style/index.css.js → pull-down-refresh/style/index.scss.js} +1 -1
- package/dist/components/pull-down-refresh/style/index.scss.js.map +1 -0
- package/dist/components/scroll-view/index.js +1 -1
- package/dist/components/scroll-view/index.js.map +1 -1
- package/dist/components/{pull-down-refresh/style/index.css.js → scroll-view/style/index.scss.js} +1 -1
- package/dist/components/scroll-view/style/index.scss.js.map +1 -0
- package/dist/components/swiper/index.js +1 -1
- package/dist/components/swiper/index.js.map +1 -1
- package/dist/components/swiper/style/{index.css.js → index.scss.js} +1 -1
- package/dist/components/swiper/style/index.scss.js.map +1 -0
- package/dist/components/text/index.js +1 -1
- package/dist/components/text/index.js.map +1 -1
- package/dist/components/text/style/index.scss.js +4 -0
- package/dist/components/text/style/index.scss.js.map +1 -0
- package/dist/original/components/button/index.js +1 -1
- package/dist/original/components/button/style/index.scss +353 -0
- package/dist/original/components/icon/index.js +1 -1
- package/dist/original/components/icon/style/index.scss +304 -0
- package/dist/original/components/image/index.js +1 -1
- package/dist/original/components/image/index.js.map +1 -1
- package/dist/original/components/image/style/index.scss +90 -0
- package/dist/original/components/input/index.js +1 -1
- package/dist/original/components/input/style/index.scss +71 -0
- package/dist/original/components/picker/index.js +1 -1
- package/dist/original/components/picker/style/index.scss +297 -0
- package/dist/original/components/pull-down-refresh/index.js +1 -1
- package/dist/original/components/pull-down-refresh/index.js.map +1 -1
- package/dist/original/components/pull-down-refresh/style/index.scss +53 -0
- package/dist/original/components/scroll-view/index.js +1 -1
- package/dist/original/components/scroll-view/index.js.map +1 -1
- package/dist/original/components/scroll-view/style/index.scss +22 -0
- package/dist/original/components/swiper/index.js +1 -1
- package/dist/original/components/swiper/index.js.map +1 -1
- package/dist/original/components/swiper/style/index.scss +9 -0
- package/dist/original/components/text/index.js +1 -1
- package/dist/original/components/text/index.js.map +1 -1
- package/dist/original/components/text/style/index.scss +13 -0
- package/dist/solid/components/image/index.js +1 -1
- package/dist/solid/components/image/index.js.map +1 -1
- package/dist/solid/components/image/style/index.scss.js +4 -0
- package/dist/solid/components/image/style/index.scss.js.map +1 -0
- package/dist/solid/components/scroll-view/index.js +1 -1
- package/dist/solid/components/scroll-view/index.js.map +1 -1
- package/dist/solid/components/scroll-view/style/index.scss.js +4 -0
- package/dist/solid/components/scroll-view/style/index.scss.js.map +1 -0
- package/dist/solid/components/text/index.js +1 -1
- package/dist/solid/components/text/index.js.map +1 -1
- package/dist/solid/components/text/style/index.scss.js +4 -0
- package/dist/solid/components/text/style/index.scss.js.map +1 -0
- package/package.json +6 -8
- package/types/global.d.ts +1 -1
- package/types/index.d.ts +3 -1
- package/dist/components/image/style/index.css.js.map +0 -1
- package/dist/components/pull-down-refresh/style/index.css.js.map +0 -1
- package/dist/components/scroll-view/style/index.css.js.map +0 -1
- package/dist/components/swiper/style/index.css.js.map +0 -1
- package/dist/components/text/style/index.css.js +0 -4
- package/dist/components/text/style/index.css.js.map +0 -1
- package/dist/original/components/button/style/index.css +0 -3
- package/dist/original/components/button/style/index.css.map +0 -1
- package/dist/original/components/icon/style/index.css +0 -3
- package/dist/original/components/icon/style/index.css.map +0 -1
- package/dist/original/components/image/style/index.css +0 -3
- package/dist/original/components/image/style/index.css.map +0 -1
- package/dist/original/components/input/style/index.css +0 -3
- package/dist/original/components/input/style/index.css.map +0 -1
- package/dist/original/components/picker/style/index.css +0 -3
- package/dist/original/components/picker/style/index.css.map +0 -1
- package/dist/original/components/pull-down-refresh/style/index.css +0 -3
- package/dist/original/components/pull-down-refresh/style/index.css.map +0 -1
- package/dist/original/components/scroll-view/style/index.css +0 -3
- package/dist/original/components/scroll-view/style/index.css.map +0 -1
- package/dist/original/components/swiper/style/index.css +0 -3
- package/dist/original/components/swiper/style/index.css.map +0 -1
- package/dist/original/components/text/style/index.css +0 -3
- package/dist/original/components/text/style/index.css.map +0 -1
- package/dist/original/index.css +0 -2
- package/dist/original/index.css.map +0 -1
- package/dist/solid/components/image/style/index.css.js +0 -4
- package/dist/solid/components/image/style/index.css.js.map +0 -1
- package/dist/solid/components/scroll-view/style/index.css.js +0 -4
- package/dist/solid/components/scroll-view/style/index.css.js.map +0 -1
- package/dist/solid/components/text/style/index.css.js +0 -4
- package/dist/solid/components/text/style/index.css.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/image/index.tsx"],"sourcesContent":["import './style/index.
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/image/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport classNames from 'classnames'\n\nimport { createForwardRefComponent } from '../../utils'\nimport { useCallback, useEffect, useRef, useState } from '../../utils/hooks'\n\nimport type React from 'react'\n\ninterface IProps extends React.HTMLAttributes<HTMLDivElement> {\n src: string\n mode: string\n onError: () => void\n onLoad: (e) => void\n lazyLoad?: boolean\n imgProps?: Record<string, any>\n forwardedRef?: React.MutableRefObject<HTMLDivElement>\n lang?: string\n}\n\n// CDN脚本URL\nconst LEGO_CDN_URL = 'http://ossin.jd.com/swm-plus/h5Tag/tag.js'\n\n// 检查CDN脚本是否已加载\nconst isLegoScriptLoaded = (): boolean => {\n return document.querySelector(`script[src=\"${LEGO_CDN_URL}\"]`) !== null\n}\n\n// 插入CDN脚本\nconst insertLegoScript = (): void => {\n if (isLegoScriptLoaded()) return\n\n const script = document.createElement('script')\n script.type = 'module'\n script.src = LEGO_CDN_URL\n document.head.appendChild(script)\n}\n\n// 解析lego协议URL\nconst parseLegoUrl = (src: string): { tagId: string, text: string } | null => {\n if (!src.startsWith('lego://')) return null\n\n try {\n // 移除 'lego://' 前缀\n const urlWithoutProtocol = src.substring(7)\n\n // 分割tagId和参数\n const [tagId, params] = urlWithoutProtocol.split('?')\n\n // 解析参数\n const text = params ? new URLSearchParams(params).get('text') || '' : ''\n\n return { tagId, text }\n } catch (error) {\n console.warn('Failed to parse lego URL:', src, error)\n return null\n }\n}\n\nfunction Image (props: IProps) {\n const imgRef = useRef<HTMLImageElement | null>(null)\n const observer = useRef<Partial<IntersectionObserver>>({})\n const [, setIsLoaded] = useState(false)\n const {\n className,\n style = {},\n src,\n mode,\n onError,\n lazyLoad,\n imgProps,\n forwardedRef,\n lang,\n ...reset\n } = props\n\n // 检查是否为lego模式\n const legoData = parseLegoUrl(src)\n const isLegoMode = legoData !== null\n\n // 如果是lego模式,确保CDN脚本已加载\n useEffect(() => {\n if (isLegoMode) {\n insertLegoScript()\n }\n }, [isLegoMode])\n\n const cls = classNames(\n 'taro-img',\n {\n 'taro-img__widthfix': mode === 'widthFix'\n },\n className\n )\n const imgCls = classNames(\n 'taro-img__mode-' +\n (mode || 'scaleToFill').toLowerCase().replace(/\\s/g, '')\n )\n\n const imageOnLoad = useCallback((e) => {\n const { onLoad } = props\n Object.defineProperty(e, 'detail', {\n enumerable: true,\n writable: true,\n value: {\n width: e.target.width,\n height: e.target.height\n }\n })\n\n onLoad && onLoad(e)\n }, [props])\n\n useEffect(() => {\n if (lazyLoad) {\n observer.current = new IntersectionObserver(\n entries => {\n // 异步 api 关系\n if (entries[entries.length - 1].isIntersecting) {\n setIsLoaded(true)\n // findDOMNode(this).children[0].src = src\n imgRef.current!.src = src\n }\n },\n {\n rootMargin: '300px 0px'\n }\n )\n observer.current.observe?.(imgRef.current!)\n }\n\n return () => {\n observer.current?.disconnect?.()\n }\n }, [lazyLoad, src])\n\n // 如果是lego模式,渲染canvas-tag\n if (isLegoMode && legoData) {\n return (\n <div className={cls} style={style} ref={forwardedRef} {...reset}>\n <canvas-tag\n tagId={legoData.tagId}\n text={legoData.text}\n lang={lang}\n {...imgProps}\n />\n </div>\n )\n }\n\n // 普通图片模式\n return (\n <div className={cls} style={style} ref={forwardedRef} {...reset}>\n {lazyLoad ? (\n <img\n ref={img => (imgRef.current = img)}\n className={imgCls}\n data-src={src}\n onLoad={imageOnLoad}\n onError={onError}\n {...imgProps}\n />\n ) : (\n <img\n ref={img => (imgRef.current = img)}\n className={imgCls}\n src={src}\n onLoad={imageOnLoad}\n onError={onError}\n {...imgProps}\n />\n )}\n </div>\n )\n}\n\nexport default createForwardRefComponent(Image)\n"],"names":["LEGO_CDN_URL","isLegoScriptLoaded","document","querySelector","insertLegoScript","script","createElement","type","src","head","appendChild","parseLegoUrl","startsWith","urlWithoutProtocol","substring","tagId","params","split","text","URLSearchParams","get","error","console","warn","Image","props","imgRef","useRef","observer","setIsLoaded","useState","className","style","mode","onError","lazyLoad","imgProps","forwardedRef","lang","reset","__rest","legoData","isLegoMode","useEffect","cls","classNames","imgCls","toLowerCase","replace","imageOnLoad","useCallback","e","onLoad","Object","defineProperty","enumerable","writable","value","width","target","height","current","IntersectionObserver","entries","length","isIntersecting","rootMargin","_b","_a","observe","call","disconnect","_jsx","ref","children","img","createForwardRefComponent"],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
img[src=''] {
|
|
2
|
+
opacity: 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.taro-img {
|
|
6
|
+
display: inline-block;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
position: relative;
|
|
9
|
+
width: 320px;
|
|
10
|
+
height: 240px;
|
|
11
|
+
font-size: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.taro-img.taro-img__widthfix {
|
|
15
|
+
height: 100%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.taro-img__mode-heightfix {
|
|
19
|
+
height: 100%;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.taro-img__mode-scaletofill {
|
|
23
|
+
width: 100%;
|
|
24
|
+
height: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.taro-img__mode-aspectfit {
|
|
28
|
+
width: 100%;
|
|
29
|
+
height: 100%;
|
|
30
|
+
object-fit: contain;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.taro-img__mode-aspectfill {
|
|
34
|
+
width: 100%;
|
|
35
|
+
height: 100%;
|
|
36
|
+
object-fit: cover;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.taro-img__mode-widthfix {
|
|
40
|
+
width: 100%;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.taro-img__mode-top {
|
|
44
|
+
position: absolute;
|
|
45
|
+
left: 50%;
|
|
46
|
+
transform: translate(-50%, 0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.taro-img__mode-bottom {
|
|
50
|
+
position: absolute;
|
|
51
|
+
left: 50%;
|
|
52
|
+
bottom: 0;
|
|
53
|
+
transform: translate(-50%, 0);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.taro-img__mode-center {
|
|
57
|
+
position: absolute;
|
|
58
|
+
left: 50%;
|
|
59
|
+
top: 50%;
|
|
60
|
+
transform: translate(-50%, -50%);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.taro-img__mode-left {
|
|
64
|
+
position: absolute;
|
|
65
|
+
top: 50%;
|
|
66
|
+
transform: translate(0, -50%);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.taro-img__mode-right {
|
|
70
|
+
position: absolute;
|
|
71
|
+
right: 0;
|
|
72
|
+
top: 50%;
|
|
73
|
+
transform: translate(0, -50%);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.taro-img__mode-topright {
|
|
77
|
+
position: absolute;
|
|
78
|
+
right: 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.taro-img__mode-bottomleft {
|
|
82
|
+
position: absolute;
|
|
83
|
+
bottom: 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.taro-img__mode-bottomright {
|
|
87
|
+
position: absolute;
|
|
88
|
+
right: 0;
|
|
89
|
+
bottom: 0;
|
|
90
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* Imported from ./variable.scss */
|
|
2
|
+
@use 'sass:math';
|
|
3
|
+
|
|
4
|
+
$browser-context: 16;
|
|
5
|
+
@function em($pixels, $context: $browser-context) {
|
|
6
|
+
// @if math.unit($pixels) == px {
|
|
7
|
+
// $pixels: math.div($pixels, $context);
|
|
8
|
+
// }
|
|
9
|
+
@if math.unit($pixels) != '' {
|
|
10
|
+
$pixels: math.div($pixels, $pixels * 0 + 1);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@return #{$pixels}em;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
$weuiCellBg:#FFFFFF; // var(--weui-BG-2);
|
|
18
|
+
$weuiCellBorderColor:#e5e5e5; // $weuiLineColorLight;
|
|
19
|
+
$weuiCellGapV:10px; // 16px;
|
|
20
|
+
$weuiCellGapH:15px; // 16px;
|
|
21
|
+
$weuiCellInnerGapH:.35em; // 16px;
|
|
22
|
+
$weuiCellHeight: 45px; // 56px;
|
|
23
|
+
$weuiCellFontSize: 17px;
|
|
24
|
+
$weuiCellTipsFontSize: 14px;
|
|
25
|
+
$weuiCellLabelWidth: 105px;
|
|
26
|
+
// $weuiCellActiveBg: $weuiBgColorActive;
|
|
27
|
+
|
|
28
|
+
$weuiCellLineHeight: calc(($weuiCellHeight - 2 * $weuiCellGapV) / $weuiCellFontSize); // 高度减去上下padding的行高
|
|
29
|
+
$weuiCellsMarginTop: em(math.div(20, $weuiCellFontSize)); // 8px;
|
|
30
|
+
|
|
31
|
+
// weui switch
|
|
32
|
+
$weuiSwitchHeight: 32px;
|
|
33
|
+
|
|
34
|
+
// weui uploader
|
|
35
|
+
$weuiUploaderBorderColor:#D9D9D9;
|
|
36
|
+
$weuiUploaderActiveBorderColor:#999999;
|
|
37
|
+
$weuiUploaderFileSpacing: 9px;
|
|
38
|
+
$weuiUploaderSize: 79px;
|
|
39
|
+
$weuiUploaderBorderWidth: 1px;
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
.taro-input-core {
|
|
43
|
+
display: block;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.weui-input {
|
|
47
|
+
width: 100%;
|
|
48
|
+
border: 0;
|
|
49
|
+
outline: 0;
|
|
50
|
+
-webkit-appearance: none;
|
|
51
|
+
background-color: transparent;
|
|
52
|
+
// font-family: inherit;
|
|
53
|
+
font-size: inherit;
|
|
54
|
+
color: inherit;
|
|
55
|
+
height: em($weuiCellLineHeight);
|
|
56
|
+
line-height: $weuiCellLineHeight;
|
|
57
|
+
|
|
58
|
+
// hides the spin-button
|
|
59
|
+
&::-webkit-outer-spin-button,
|
|
60
|
+
&::-webkit-inner-spin-button {
|
|
61
|
+
-webkit-appearance: none;
|
|
62
|
+
margin: 0;
|
|
63
|
+
}
|
|
64
|
+
// &:focus {
|
|
65
|
+
// &:not(:placeholder-shown) {
|
|
66
|
+
// & + .weui-btn_input-clear {
|
|
67
|
+
// display: inline;
|
|
68
|
+
// }
|
|
69
|
+
// }
|
|
70
|
+
// }
|
|
71
|
+
}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/* Imported from ./variable */
|
|
2
|
+
$weuiLineColorLight: #e5e5e5;
|
|
3
|
+
$weuiColorPrimary: #FF0F23;
|
|
4
|
+
$weuiTextColorGray: #999;
|
|
5
|
+
$weuiTextColorDesc: #888;
|
|
6
|
+
$weuiTextColorBlack: #000;
|
|
7
|
+
|
|
8
|
+
// Picker 相关变量
|
|
9
|
+
$weuiPickerZIndexContainer: 1000; // picker容器层级
|
|
10
|
+
$weuiPickerZIndexMask: 1001; // 遮罩层级
|
|
11
|
+
$weuiPickerZIndexIndicator: 1002; // 选中指示器层级
|
|
12
|
+
|
|
13
|
+
// Picker 尺寸
|
|
14
|
+
$weuiPickerHeaderHeight: 44px; // 头部高度
|
|
15
|
+
$weuiPickerItemHeight: 34px; // 选项高度
|
|
16
|
+
$weuiPickerContentHeight: 238px; // 内容区高度
|
|
17
|
+
$weuiPickerColumnGap: 8px; // 列间距
|
|
18
|
+
|
|
19
|
+
// 动画
|
|
20
|
+
$weuiPickerTransitionDuration: 0.3s; // 过渡动画时长
|
|
21
|
+
|
|
22
|
+
// 覆盖层遮罩(用于全屏遮罩)
|
|
23
|
+
.taro-picker__overlay {
|
|
24
|
+
position: fixed;
|
|
25
|
+
top: 0;
|
|
26
|
+
right: 0;
|
|
27
|
+
bottom: 0;
|
|
28
|
+
left: 0;
|
|
29
|
+
width: 100%;
|
|
30
|
+
height: 100%;
|
|
31
|
+
z-index: $weuiPickerZIndexContainer;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// 点击取消遮罩(用于事件处理)
|
|
35
|
+
.taro-picker__mask-overlay {
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 0;
|
|
38
|
+
right: 0;
|
|
39
|
+
bottom: 0;
|
|
40
|
+
left: 0;
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 100%;
|
|
43
|
+
z-index: $weuiPickerZIndexMask;
|
|
44
|
+
background-color: rgba(0, 0, 0, 0.6);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.taro-picker {
|
|
48
|
+
position: absolute;
|
|
49
|
+
bottom: 0;
|
|
50
|
+
left: 0;
|
|
51
|
+
z-index: $weuiPickerZIndexIndicator;
|
|
52
|
+
background-color: $weuiLineColorLight;
|
|
53
|
+
width: 100%;
|
|
54
|
+
font-size: 14px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.taro-picker__hd {
|
|
58
|
+
display: flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: space-between;
|
|
61
|
+
height: $weuiPickerHeaderHeight;
|
|
62
|
+
padding: 0;
|
|
63
|
+
background-color: #fff;
|
|
64
|
+
font-size: 17px;
|
|
65
|
+
position: relative;
|
|
66
|
+
|
|
67
|
+
&::after {
|
|
68
|
+
content: '';
|
|
69
|
+
position: absolute;
|
|
70
|
+
left: 0;
|
|
71
|
+
bottom: 0;
|
|
72
|
+
width: 100%;
|
|
73
|
+
height: 1px;
|
|
74
|
+
background-color: $weuiLineColorLight;
|
|
75
|
+
transform: scaleY(0.5);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.taro-picker__action {
|
|
80
|
+
flex: 0 0 auto; /* 不伸缩,保持内容宽度 */
|
|
81
|
+
padding: 0 10px;
|
|
82
|
+
height: $weuiPickerHeaderHeight;
|
|
83
|
+
line-height: $weuiPickerHeaderHeight;
|
|
84
|
+
color: $weuiColorPrimary;
|
|
85
|
+
font-size: 14px;
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
// 左侧取消按钮
|
|
89
|
+
&:first-child {
|
|
90
|
+
color: $weuiTextColorDesc;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.taro-picker__title {
|
|
95
|
+
position: absolute;
|
|
96
|
+
left: 50%;
|
|
97
|
+
top: 50%;
|
|
98
|
+
transform: translate(-50%, -50%);
|
|
99
|
+
max-width: 40%; /* 限制最大宽度,防止挤压按钮 */
|
|
100
|
+
overflow: hidden;
|
|
101
|
+
white-space: nowrap;
|
|
102
|
+
text-overflow: ellipsis;
|
|
103
|
+
font-weight: 500;
|
|
104
|
+
font-size: 16px;
|
|
105
|
+
color: $weuiTextColorBlack;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.taro-picker__bd {
|
|
109
|
+
display: flex;
|
|
110
|
+
flex: 1;
|
|
111
|
+
width: 100%;
|
|
112
|
+
height: $weuiPickerContentHeight;
|
|
113
|
+
box-sizing: border-box;
|
|
114
|
+
overflow: hidden;
|
|
115
|
+
background-color: #fff;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// 选择器组
|
|
119
|
+
.taro-picker__group {
|
|
120
|
+
display: flex;
|
|
121
|
+
position: relative;
|
|
122
|
+
height: 100%;
|
|
123
|
+
box-sizing: border-box;
|
|
124
|
+
justify-content: center; /* 水平居中 */
|
|
125
|
+
align-items: center;
|
|
126
|
+
flex: 1; /* 确保在多列情况下平均分配空间 */
|
|
127
|
+
min-width: 0;
|
|
128
|
+
|
|
129
|
+
// 多列布局
|
|
130
|
+
&--date {
|
|
131
|
+
.taro-picker__columns {
|
|
132
|
+
display: flex;
|
|
133
|
+
width: 100%;
|
|
134
|
+
height: 100%;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// 遮罩层 - 上下渐变效果
|
|
140
|
+
.taro-picker__mask {
|
|
141
|
+
position: absolute;
|
|
142
|
+
left: 0;
|
|
143
|
+
top: 0;
|
|
144
|
+
z-index: 1;
|
|
145
|
+
width: 100%;
|
|
146
|
+
height: 100%;
|
|
147
|
+
background:
|
|
148
|
+
linear-gradient(
|
|
149
|
+
180deg,
|
|
150
|
+
rgba(255, 255, 255, 0.95) 0%,
|
|
151
|
+
rgba(255, 255, 255, 0.6) 40%,
|
|
152
|
+
rgba(255, 255, 255, 0) 45%,
|
|
153
|
+
rgba(255, 255, 255, 0) 55%,
|
|
154
|
+
rgba(255, 255, 255, 0.6) 60%,
|
|
155
|
+
rgba(255, 255, 255, 0.95) 100%
|
|
156
|
+
);
|
|
157
|
+
pointer-events: none;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// 选中行指示器
|
|
161
|
+
.taro-picker__indicator {
|
|
162
|
+
position: absolute;
|
|
163
|
+
left: 0;
|
|
164
|
+
top: 50%;
|
|
165
|
+
z-index: $weuiPickerZIndexIndicator;
|
|
166
|
+
width: 100%;
|
|
167
|
+
height: $weuiPickerItemHeight;
|
|
168
|
+
box-sizing: border-box;
|
|
169
|
+
transform: translateY(-50%);
|
|
170
|
+
|
|
171
|
+
// 上下边框
|
|
172
|
+
&::before, &::after {
|
|
173
|
+
content: '';
|
|
174
|
+
position: absolute;
|
|
175
|
+
left: 0;
|
|
176
|
+
right: 0;
|
|
177
|
+
height: 1px;
|
|
178
|
+
background-color: $weuiLineColorLight;
|
|
179
|
+
transform: scaleY(0.5);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
&::before { top: 0; }
|
|
183
|
+
&::after { bottom: 0; }
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// 滚动内容区域
|
|
187
|
+
.taro-picker__content {
|
|
188
|
+
width: 100%;
|
|
189
|
+
height: 100%;
|
|
190
|
+
box-sizing: border-box;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// 选项样式
|
|
194
|
+
.taro-picker__item {
|
|
195
|
+
width: 100%;
|
|
196
|
+
height: $weuiPickerItemHeight;
|
|
197
|
+
padding: 0 8px; /* 增加内边距使文本不贴边 */
|
|
198
|
+
box-sizing: border-box;
|
|
199
|
+
overflow: hidden; /* 隐藏溢出内容 */
|
|
200
|
+
line-height: $weuiPickerItemHeight;
|
|
201
|
+
text-align: center;
|
|
202
|
+
display: flex;
|
|
203
|
+
align-items: center;
|
|
204
|
+
justify-content: center;
|
|
205
|
+
white-space: nowrap;
|
|
206
|
+
text-overflow: ellipsis;
|
|
207
|
+
font-size: 16px; /* 稍微减小字体大小 */
|
|
208
|
+
color: $weuiTextColorBlack;
|
|
209
|
+
|
|
210
|
+
// 选中状态
|
|
211
|
+
&--selected {
|
|
212
|
+
font-weight: 500; /* 使用适中的字体粗细 */
|
|
213
|
+
color: $weuiColorPrimary;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// 禁用状态
|
|
217
|
+
&--disabled {
|
|
218
|
+
color: $weuiTextColorGray;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// 列间距调整
|
|
223
|
+
.taro-picker__column {
|
|
224
|
+
flex: 1;
|
|
225
|
+
margin: 0 $weuiPickerColumnGap;
|
|
226
|
+
|
|
227
|
+
// 第一列和最后一列的间距调整
|
|
228
|
+
&:first-child { margin-left: 0; }
|
|
229
|
+
&:last-child { margin-right: 0; }
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// 新增:自定义项样式
|
|
233
|
+
.taro-picker__item--custom {
|
|
234
|
+
text-align: center; /* 确保自定义项也居中 */
|
|
235
|
+
display: flex;
|
|
236
|
+
justify-content: center;
|
|
237
|
+
align-items: center;
|
|
238
|
+
font-weight: normal;
|
|
239
|
+
color: #888;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// 动画相关
|
|
243
|
+
@keyframes taro-picker__slide-up {
|
|
244
|
+
from {
|
|
245
|
+
transform: translate3d(0, 100%, 0);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
to {
|
|
249
|
+
transform: translate3d(0, 0, 0);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//目前动画支持度不够 暂时屏蔽
|
|
253
|
+
.taro-picker__animate-slide-up {
|
|
254
|
+
// animation: taro-picker__slide-up ease #{$weuiPickerTransitionDuration} forwards;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
@keyframes taro-picker__slide-down {
|
|
258
|
+
from {
|
|
259
|
+
transform: translate3d(0, 0, 0);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
to {
|
|
263
|
+
transform: translate3d(0, 100%, 0);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.taro-picker__animate-slide-down {
|
|
268
|
+
// animation: taro-picker__slide-down ease #{$weuiPickerTransitionDuration} forwards;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
@keyframes taro-picker__fade-in {
|
|
272
|
+
from {
|
|
273
|
+
opacity: 0;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
to {
|
|
277
|
+
opacity: 1;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.taro-picker__animate-fade-in {
|
|
282
|
+
// animation: taro-picker__fade-in ease #{$weuiPickerTransitionDuration} forwards;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@keyframes taro-picker__fade-out {
|
|
286
|
+
from {
|
|
287
|
+
opacity: 1;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
to {
|
|
291
|
+
opacity: 0;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.taro-picker__animate-fade-out {
|
|
296
|
+
// animation: taro-picker__fade-out ease #{$weuiPickerTransitionDuration} forwards;
|
|
297
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/pull-down-refresh/index.tsx"],"sourcesContent":["import './style/index.css'\r\n\r\nimport Taro from '@tarojs/taro'\r\nimport classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { createForwardRefComponent } from '../../utils/index'\r\n\r\nfunction setTransform (nodeStyle, value) {\r\n nodeStyle.transform = value\r\n nodeStyle.webkitTransform = value\r\n nodeStyle.MozTransform = value\r\n}\r\n\r\nconst isWebView =\r\n typeof navigator !== 'undefined' && /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent)\r\n\r\nenum PullDownState {\r\n activate = 'activate',\r\n deactivate = 'deactivate',\r\n release = 'release',\r\n finish = 'finish'\r\n}\r\n\r\nenum INDICATOR {\r\n activate = 'release',\r\n deactivate = 'pull',\r\n release = 'loading',\r\n finish = 'finish'\r\n}\r\n\r\nlet supportsPassive = false\r\ntry {\r\n const opts = Object.defineProperty({}, 'passive', {\r\n get () {\r\n supportsPassive = true\r\n }\r\n })\r\n window.addEventListener('cancel', () => ({}), opts)\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\nconst willPreventDefault = supportsPassive ? { passive: false } : false\r\n\r\ninterface IProps extends React.HTMLAttributes<HTMLBaseElement> {\r\n prefixCls: string\r\n distanceToRefresh: number\r\n damping: number\r\n indicator: INDICATOR\r\n forwardedRef?: React.MutableRefObject<HTMLBaseElement>\r\n onRefresh?: () => void\r\n}\r\n\r\ninterface IState {\r\n currSt: PullDownState\r\n dragOnEdge: boolean\r\n}\r\n\r\nclass PullDownRefresh extends React.Component<IProps, IState> {\r\n static defaultProps = {\r\n prefixCls: 'rmc-pull-to-refresh',\r\n distanceToRefresh: 50,\r\n damping: 100,\r\n indicator: INDICATOR\r\n }\r\n\r\n // https://github.com/yiminghe/zscroller/blob/2d97973287135745818a0537712235a39a6a62a1/src/Scroller.js#L355\r\n // currSt: `activate` / `deactivate` / `release` / `finish`\r\n state = {\r\n currSt: PullDownState.deactivate,\r\n dragOnEdge: false\r\n }\r\n\r\n containerRef: HTMLElement | null\r\n contentRef: HTMLDivElement | null\r\n _to: Record<string, EventListener>\r\n _ScreenY = 0\r\n _startScreenY = 0\r\n _lastScreenY = 0\r\n _isMounted = false\r\n listeners: [string, (...args: any[]) => void][] = []\r\n\r\n get scrollContainer () {\r\n return (\r\n this.contentRef?.parentElement ||\r\n this.contentRef?.closest('.taro_page_stationed') ||\r\n document.querySelector('.taro_page_stationed') ||\r\n document.querySelector('.taro_page') ||\r\n document.querySelector('.taro_router') ||\r\n document.querySelector('.taro-tabbar__panel') ||\r\n document.body\r\n )\r\n }\r\n\r\n componentDidMount () {\r\n this.init()\r\n this._isMounted = true\r\n this.listeners = [\r\n [\r\n '__taroStartPullDownRefresh',\r\n ({ successHandler, errorHandler }) => {\r\n try {\r\n this.triggerPullDownRefresh(true)\r\n successHandler({\r\n errMsg: 'startPullDownRefresh: ok'\r\n })\r\n } catch (e) {\r\n errorHandler({\r\n errMsg: 'startPullDownRefresh: fail'\r\n })\r\n }\r\n }\r\n ],\r\n [\r\n '__taroStopPullDownRefresh',\r\n ({ successHandler, errorHandler }) => {\r\n try {\r\n this.triggerPullDownRefresh(false)\r\n successHandler({\r\n errMsg: 'stopPullDownRefresh: ok'\r\n })\r\n } catch (e) {\r\n errorHandler({\r\n errMsg: 'stopPullDownRefresh: fail'\r\n })\r\n }\r\n }\r\n ]\r\n ]\r\n this.listeners.forEach(([evtName, callback]) => {\r\n Taro.eventCenter.on(evtName, callback)\r\n })\r\n }\r\n\r\n componentWillUnmount () {\r\n this.destroy()\r\n this.listeners.forEach(([evtName, callback]) => {\r\n Taro.eventCenter.off(evtName, callback)\r\n })\r\n }\r\n\r\n componentDidUpdate (_, prevState: IState) {\r\n if (prevState.currSt !== this.state.currSt) {\r\n const pageEl: any = this.scrollContainer\r\n switch (this.state.currSt) {\r\n case PullDownState.release:\r\n pageEl?.__page?.onPullDownRefresh?.()\r\n break\r\n case PullDownState.deactivate:\r\n pageEl?.__page?.onPullIntercept?.()\r\n }\r\n }\r\n }\r\n\r\n triggerPullDownRefresh = (flag: boolean) => {\r\n // 在初始化时、用代码 自动 触发 pullDownRefresh\r\n // 添加this._isMounted的判断,否则组建一实例化,currSt就会是finish\r\n if (!this.state.dragOnEdge && this._isMounted) {\r\n if (flag) {\r\n this._lastScreenY = this.props.distanceToRefresh + 1\r\n // change dom need after setState\r\n this.setState({ currSt: PullDownState.release }, () => this.setContentStyle(this._lastScreenY))\r\n } else {\r\n this.setState({ currSt: PullDownState.finish }, () => this.reset())\r\n }\r\n }\r\n }\r\n\r\n init = () => {\r\n const ele = this.scrollContainer\r\n this._to = {\r\n touchstart: this.onTouchStart.bind(this, ele),\r\n touchmove: this.onTouchMove.bind(this, ele),\r\n touchend: this.onTouchEnd.bind(this, ele),\r\n touchcancel: this.onTouchEnd.bind(this, ele)\r\n }\r\n Object.keys(this._to).forEach(key => {\r\n ele.addEventListener(key, this._to[key], willPreventDefault)\r\n })\r\n }\r\n\r\n destroy = () => {\r\n if (!this._to) return\r\n\r\n const ele = this.scrollContainer\r\n Object.keys(this._to).forEach(key => {\r\n ele.removeEventListener(key, this._to[key])\r\n })\r\n }\r\n\r\n onTouchStart = (_, e: TouchEvent) => {\r\n this._ScreenY = this._startScreenY = e.touches[0].screenY\r\n // 一开始 refreshing 为 true 时 this._lastScreenY 有值\r\n this._lastScreenY = this._lastScreenY || 0\r\n }\r\n\r\n isEdge = (ele: HTMLElement) => {\r\n const container = this.scrollContainer\r\n if (container && container === document.body) {\r\n // In chrome61 `document.body.scrollTop` is invalid\r\n const scrollNode = document.scrollingElement ? document.scrollingElement : document.body\r\n return scrollNode.scrollTop <= 0\r\n }\r\n return ele.scrollTop <= 0\r\n }\r\n\r\n damping = (dy: number) => {\r\n if (Math.abs(this._lastScreenY) > this.props.damping) {\r\n return 0\r\n }\r\n\r\n const ratio = Math.abs(this._ScreenY - this._startScreenY) / window.screen.height\r\n dy *= (1 - ratio) * 0.6\r\n\r\n return dy\r\n }\r\n\r\n onTouchMove = (ele: HTMLElement, e: TouchEvent) => {\r\n // 使用 pageY 对比有问题\r\n const _screenY = e.touches[0].screenY\r\n\r\n // 拖动方向不符合的不处理\r\n if (this._startScreenY > _screenY) {\r\n return\r\n }\r\n\r\n if (this.isEdge(ele)) {\r\n if (!this.state.dragOnEdge) {\r\n // 当用户开始往上滑的时候isEdge还是false的话,会导致this._ScreenY不是想要的,只有当isEdge为true时,再上滑,才有意义\r\n // 下面这行代码解决了上面这个问题\r\n this._ScreenY = this._startScreenY = e.touches[0].screenY\r\n this.setState({ dragOnEdge: true })\r\n }\r\n if (e.cancelable) {\r\n e.preventDefault()\r\n }\r\n // add stopPropagation with fastclick will trigger content onClick event. why?\r\n // ref https://github.com/ant-design/ant-design-mobile/issues/2141\r\n // e.stopPropagation();\r\n\r\n const _diff = Math.round(_screenY - this._ScreenY)\r\n this._ScreenY = _screenY\r\n this._lastScreenY += this.damping(_diff)\r\n\r\n this.setContentStyle(this._lastScreenY)\r\n\r\n if (Math.abs(this._lastScreenY) < this.props.distanceToRefresh) {\r\n if (this.state.currSt !== PullDownState.deactivate) {\r\n // console.log('back to the distance');\r\n this.setState({ currSt: PullDownState.deactivate })\r\n }\r\n } else {\r\n if (this.state.currSt === PullDownState.deactivate) {\r\n // console.log('reach to the distance');\r\n this.setState({ currSt: PullDownState.activate })\r\n }\r\n }\r\n\r\n // https://github.com/ant-design/ant-design-mobile/issues/573#issuecomment-339560829\r\n // iOS UIWebView issue, It seems no problem in WKWebView\r\n if (isWebView && e.changedTouches[0].clientY < 0) {\r\n this.onTouchEnd()\r\n }\r\n }\r\n }\r\n\r\n onTouchEnd = () => {\r\n if (this.state.dragOnEdge) {\r\n this.setState({ dragOnEdge: false })\r\n }\r\n if (this.state.currSt === PullDownState.activate) {\r\n this.setState({ currSt: PullDownState.release })\r\n this.props.onRefresh?.()\r\n this._lastScreenY = this.props.distanceToRefresh + 1\r\n this.setContentStyle(this._lastScreenY)\r\n } else if (this.state.currSt === 'release') {\r\n this._lastScreenY = this.props.distanceToRefresh + 1\r\n this.setContentStyle(this._lastScreenY)\r\n } else {\r\n this.reset()\r\n }\r\n }\r\n\r\n reset = () => {\r\n this._lastScreenY = 0\r\n this.setContentStyle(0)\r\n }\r\n\r\n setContentStyle = ty => {\r\n // TODO: Why sometimes do not have `this.contentRef` ?\r\n if (this.contentRef) {\r\n // translate3d 不清理 会影响内部元素定位\r\n if (ty) {\r\n setTransform(this.contentRef.style, `translate3d(0px,${ty}px,0)`)\r\n } else {\r\n setTransform(this.contentRef.style, '')\r\n }\r\n }\r\n }\r\n\r\n render () {\r\n const props: Partial<IProps> & {\r\n children?: React.ReactNode\r\n } = { ...this.props }\r\n delete props.damping\r\n delete props.indicator\r\n delete props.distanceToRefresh\r\n delete props.onRefresh\r\n\r\n const { className, prefixCls, children, forwardedRef, ...restProps } = props\r\n\r\n const renderRefresh = (cls: string) => {\r\n const { currSt, dragOnEdge } = this.state\r\n const cla = classNames(cls, !dragOnEdge && `${prefixCls}-transition`)\r\n const showIndicator = currSt === 'activate' || currSt === 'release'\r\n return (\r\n <div className={`${prefixCls}-content-wrapper`}>\r\n <div\r\n className={cla}\r\n ref={el => {\r\n this.contentRef = el\r\n }}\r\n >\r\n {showIndicator && (\r\n <div className={`${prefixCls}-indicator`}>\r\n <div />\r\n <div />\r\n <div />\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n if (this.scrollContainer) {\r\n return renderRefresh(`${prefixCls}-content ${prefixCls}-down`)\r\n }\r\n return (\r\n <pull-down-refresh\r\n ref={el => {\r\n if (forwardedRef) {\r\n forwardedRef.current = el\r\n }\r\n this.containerRef = el\r\n }}\r\n className={classNames(className, prefixCls, `${prefixCls}-down`)}\r\n {...restProps}\r\n >\r\n {renderRefresh(`${prefixCls}-content`)}\r\n </pull-down-refresh>\r\n )\r\n }\r\n}\r\n\r\nexport default createForwardRefComponent(PullDownRefresh)\r\n"],"names":["setTransform","nodeStyle","value","transform","webkitTransform","MozTransform","isWebView","navigator","test","userAgent","PullDownState","INDICATOR","supportsPassive","opts","Object","defineProperty","get","window","addEventListener","e","willPreventDefault","passive","PullDownRefresh","React","Component","constructor","state","currSt","deactivate","dragOnEdge","_ScreenY","_startScreenY","_lastScreenY","_isMounted","listeners","triggerPullDownRefresh","flag","props","distanceToRefresh","setState","release","setContentStyle","finish","reset","init","ele","scrollContainer","_to","touchstart","onTouchStart","bind","touchmove","onTouchMove","touchend","onTouchEnd","touchcancel","keys","forEach","key","destroy","removeEventListener","_","touches","screenY","isEdge","container","document","body","scrollNode","scrollingElement","scrollTop","damping","dy","Math","abs","ratio","screen","height","_screenY","cancelable","preventDefault","_diff","round","activate","changedTouches","clientY","_b","onRefresh","ty","contentRef","style","_a","parentElement","closest","querySelector","componentDidMount","_ref","successHandler","errorHandler","errMsg","_ref2","_ref3","evtName","callback","Taro","eventCenter","on","componentWillUnmount","_ref4","off","componentDidUpdate","prevState","pageEl","__page","onPullDownRefresh","call","_d","_c","onPullIntercept","render","assign","indicator","className","prefixCls","children","forwardedRef","restProps","__rest","renderRefresh","cls","cla","classNames","showIndicator","_jsx","_jsxs","ref","el","current","containerRef","defaultProps","createForwardRefComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/pull-down-refresh/index.tsx"],"sourcesContent":["import './style/index.scss'\r\n\r\nimport Taro from '@tarojs/taro'\r\nimport classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { createForwardRefComponent } from '../../utils/index'\r\n\r\nfunction setTransform (nodeStyle, value) {\r\n nodeStyle.transform = value\r\n nodeStyle.webkitTransform = value\r\n nodeStyle.MozTransform = value\r\n}\r\n\r\nconst isWebView =\r\n typeof navigator !== 'undefined' && /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent)\r\n\r\nenum PullDownState {\r\n activate = 'activate',\r\n deactivate = 'deactivate',\r\n release = 'release',\r\n finish = 'finish'\r\n}\r\n\r\nenum INDICATOR {\r\n activate = 'release',\r\n deactivate = 'pull',\r\n release = 'loading',\r\n finish = 'finish'\r\n}\r\n\r\nlet supportsPassive = false\r\ntry {\r\n const opts = Object.defineProperty({}, 'passive', {\r\n get () {\r\n supportsPassive = true\r\n }\r\n })\r\n window.addEventListener('cancel', () => ({}), opts)\r\n} catch (e) {} // eslint-disable-line no-empty\r\n\r\nconst willPreventDefault = supportsPassive ? { passive: false } : false\r\n\r\ninterface IProps extends React.HTMLAttributes<HTMLBaseElement> {\r\n prefixCls: string\r\n distanceToRefresh: number\r\n damping: number\r\n indicator: INDICATOR\r\n forwardedRef?: React.MutableRefObject<HTMLBaseElement>\r\n onRefresh?: () => void\r\n}\r\n\r\ninterface IState {\r\n currSt: PullDownState\r\n dragOnEdge: boolean\r\n}\r\n\r\nclass PullDownRefresh extends React.Component<IProps, IState> {\r\n static defaultProps = {\r\n prefixCls: 'rmc-pull-to-refresh',\r\n distanceToRefresh: 50,\r\n damping: 100,\r\n indicator: INDICATOR\r\n }\r\n\r\n // https://github.com/yiminghe/zscroller/blob/2d97973287135745818a0537712235a39a6a62a1/src/Scroller.js#L355\r\n // currSt: `activate` / `deactivate` / `release` / `finish`\r\n state = {\r\n currSt: PullDownState.deactivate,\r\n dragOnEdge: false\r\n }\r\n\r\n containerRef: HTMLElement | null\r\n contentRef: HTMLDivElement | null\r\n _to: Record<string, EventListener>\r\n _ScreenY = 0\r\n _startScreenY = 0\r\n _lastScreenY = 0\r\n _isMounted = false\r\n listeners: [string, (...args: any[]) => void][] = []\r\n\r\n get scrollContainer () {\r\n return (\r\n this.contentRef?.parentElement ||\r\n this.contentRef?.closest('.taro_page_stationed') ||\r\n document.querySelector('.taro_page_stationed') ||\r\n document.querySelector('.taro_page') ||\r\n document.querySelector('.taro_router') ||\r\n document.querySelector('.taro-tabbar__panel') ||\r\n document.body\r\n )\r\n }\r\n\r\n componentDidMount () {\r\n this.init()\r\n this._isMounted = true\r\n this.listeners = [\r\n [\r\n '__taroStartPullDownRefresh',\r\n ({ successHandler, errorHandler }) => {\r\n try {\r\n this.triggerPullDownRefresh(true)\r\n successHandler({\r\n errMsg: 'startPullDownRefresh: ok'\r\n })\r\n } catch (e) {\r\n errorHandler({\r\n errMsg: 'startPullDownRefresh: fail'\r\n })\r\n }\r\n }\r\n ],\r\n [\r\n '__taroStopPullDownRefresh',\r\n ({ successHandler, errorHandler }) => {\r\n try {\r\n this.triggerPullDownRefresh(false)\r\n successHandler({\r\n errMsg: 'stopPullDownRefresh: ok'\r\n })\r\n } catch (e) {\r\n errorHandler({\r\n errMsg: 'stopPullDownRefresh: fail'\r\n })\r\n }\r\n }\r\n ]\r\n ]\r\n this.listeners.forEach(([evtName, callback]) => {\r\n Taro.eventCenter.on(evtName, callback)\r\n })\r\n }\r\n\r\n componentWillUnmount () {\r\n this.destroy()\r\n this.listeners.forEach(([evtName, callback]) => {\r\n Taro.eventCenter.off(evtName, callback)\r\n })\r\n }\r\n\r\n componentDidUpdate (_, prevState: IState) {\r\n if (prevState.currSt !== this.state.currSt) {\r\n const pageEl: any = this.scrollContainer\r\n switch (this.state.currSt) {\r\n case PullDownState.release:\r\n pageEl?.__page?.onPullDownRefresh?.()\r\n break\r\n case PullDownState.deactivate:\r\n pageEl?.__page?.onPullIntercept?.()\r\n }\r\n }\r\n }\r\n\r\n triggerPullDownRefresh = (flag: boolean) => {\r\n // 在初始化时、用代码 自动 触发 pullDownRefresh\r\n // 添加this._isMounted的判断,否则组建一实例化,currSt就会是finish\r\n if (!this.state.dragOnEdge && this._isMounted) {\r\n if (flag) {\r\n this._lastScreenY = this.props.distanceToRefresh + 1\r\n // change dom need after setState\r\n this.setState({ currSt: PullDownState.release }, () => this.setContentStyle(this._lastScreenY))\r\n } else {\r\n this.setState({ currSt: PullDownState.finish }, () => this.reset())\r\n }\r\n }\r\n }\r\n\r\n init = () => {\r\n const ele = this.scrollContainer\r\n this._to = {\r\n touchstart: this.onTouchStart.bind(this, ele),\r\n touchmove: this.onTouchMove.bind(this, ele),\r\n touchend: this.onTouchEnd.bind(this, ele),\r\n touchcancel: this.onTouchEnd.bind(this, ele)\r\n }\r\n Object.keys(this._to).forEach(key => {\r\n ele.addEventListener(key, this._to[key], willPreventDefault)\r\n })\r\n }\r\n\r\n destroy = () => {\r\n if (!this._to) return\r\n\r\n const ele = this.scrollContainer\r\n Object.keys(this._to).forEach(key => {\r\n ele.removeEventListener(key, this._to[key])\r\n })\r\n }\r\n\r\n onTouchStart = (_, e: TouchEvent) => {\r\n this._ScreenY = this._startScreenY = e.touches[0].screenY\r\n // 一开始 refreshing 为 true 时 this._lastScreenY 有值\r\n this._lastScreenY = this._lastScreenY || 0\r\n }\r\n\r\n isEdge = (ele: HTMLElement) => {\r\n const container = this.scrollContainer\r\n if (container && container === document.body) {\r\n // In chrome61 `document.body.scrollTop` is invalid\r\n const scrollNode = document.scrollingElement ? document.scrollingElement : document.body\r\n return scrollNode.scrollTop <= 0\r\n }\r\n return ele.scrollTop <= 0\r\n }\r\n\r\n damping = (dy: number) => {\r\n if (Math.abs(this._lastScreenY) > this.props.damping) {\r\n return 0\r\n }\r\n\r\n const ratio = Math.abs(this._ScreenY - this._startScreenY) / window.screen.height\r\n dy *= (1 - ratio) * 0.6\r\n\r\n return dy\r\n }\r\n\r\n onTouchMove = (ele: HTMLElement, e: TouchEvent) => {\r\n // 使用 pageY 对比有问题\r\n const _screenY = e.touches[0].screenY\r\n\r\n // 拖动方向不符合的不处理\r\n if (this._startScreenY > _screenY) {\r\n return\r\n }\r\n\r\n if (this.isEdge(ele)) {\r\n if (!this.state.dragOnEdge) {\r\n // 当用户开始往上滑的时候isEdge还是false的话,会导致this._ScreenY不是想要的,只有当isEdge为true时,再上滑,才有意义\r\n // 下面这行代码解决了上面这个问题\r\n this._ScreenY = this._startScreenY = e.touches[0].screenY\r\n this.setState({ dragOnEdge: true })\r\n }\r\n if (e.cancelable) {\r\n e.preventDefault()\r\n }\r\n // add stopPropagation with fastclick will trigger content onClick event. why?\r\n // ref https://github.com/ant-design/ant-design-mobile/issues/2141\r\n // e.stopPropagation();\r\n\r\n const _diff = Math.round(_screenY - this._ScreenY)\r\n this._ScreenY = _screenY\r\n this._lastScreenY += this.damping(_diff)\r\n\r\n this.setContentStyle(this._lastScreenY)\r\n\r\n if (Math.abs(this._lastScreenY) < this.props.distanceToRefresh) {\r\n if (this.state.currSt !== PullDownState.deactivate) {\r\n // console.log('back to the distance');\r\n this.setState({ currSt: PullDownState.deactivate })\r\n }\r\n } else {\r\n if (this.state.currSt === PullDownState.deactivate) {\r\n // console.log('reach to the distance');\r\n this.setState({ currSt: PullDownState.activate })\r\n }\r\n }\r\n\r\n // https://github.com/ant-design/ant-design-mobile/issues/573#issuecomment-339560829\r\n // iOS UIWebView issue, It seems no problem in WKWebView\r\n if (isWebView && e.changedTouches[0].clientY < 0) {\r\n this.onTouchEnd()\r\n }\r\n }\r\n }\r\n\r\n onTouchEnd = () => {\r\n if (this.state.dragOnEdge) {\r\n this.setState({ dragOnEdge: false })\r\n }\r\n if (this.state.currSt === PullDownState.activate) {\r\n this.setState({ currSt: PullDownState.release })\r\n this.props.onRefresh?.()\r\n this._lastScreenY = this.props.distanceToRefresh + 1\r\n this.setContentStyle(this._lastScreenY)\r\n } else if (this.state.currSt === 'release') {\r\n this._lastScreenY = this.props.distanceToRefresh + 1\r\n this.setContentStyle(this._lastScreenY)\r\n } else {\r\n this.reset()\r\n }\r\n }\r\n\r\n reset = () => {\r\n this._lastScreenY = 0\r\n this.setContentStyle(0)\r\n }\r\n\r\n setContentStyle = ty => {\r\n // TODO: Why sometimes do not have `this.contentRef` ?\r\n if (this.contentRef) {\r\n // translate3d 不清理 会影响内部元素定位\r\n if (ty) {\r\n setTransform(this.contentRef.style, `translate3d(0px,${ty}px,0)`)\r\n } else {\r\n setTransform(this.contentRef.style, '')\r\n }\r\n }\r\n }\r\n\r\n render () {\r\n const props: Partial<IProps> & {\r\n children?: React.ReactNode\r\n } = { ...this.props }\r\n delete props.damping\r\n delete props.indicator\r\n delete props.distanceToRefresh\r\n delete props.onRefresh\r\n\r\n const { className, prefixCls, children, forwardedRef, ...restProps } = props\r\n\r\n const renderRefresh = (cls: string) => {\r\n const { currSt, dragOnEdge } = this.state\r\n const cla = classNames(cls, !dragOnEdge && `${prefixCls}-transition`)\r\n const showIndicator = currSt === 'activate' || currSt === 'release'\r\n return (\r\n <div className={`${prefixCls}-content-wrapper`}>\r\n <div\r\n className={cla}\r\n ref={el => {\r\n this.contentRef = el\r\n }}\r\n >\r\n {showIndicator && (\r\n <div className={`${prefixCls}-indicator`}>\r\n <div />\r\n <div />\r\n <div />\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n if (this.scrollContainer) {\r\n return renderRefresh(`${prefixCls}-content ${prefixCls}-down`)\r\n }\r\n return (\r\n <pull-down-refresh\r\n ref={el => {\r\n if (forwardedRef) {\r\n forwardedRef.current = el\r\n }\r\n this.containerRef = el\r\n }}\r\n className={classNames(className, prefixCls, `${prefixCls}-down`)}\r\n {...restProps}\r\n >\r\n {renderRefresh(`${prefixCls}-content`)}\r\n </pull-down-refresh>\r\n )\r\n }\r\n}\r\n\r\nexport default createForwardRefComponent(PullDownRefresh)\r\n"],"names":["setTransform","nodeStyle","value","transform","webkitTransform","MozTransform","isWebView","navigator","test","userAgent","PullDownState","INDICATOR","supportsPassive","opts","Object","defineProperty","get","window","addEventListener","e","willPreventDefault","passive","PullDownRefresh","React","Component","constructor","state","currSt","deactivate","dragOnEdge","_ScreenY","_startScreenY","_lastScreenY","_isMounted","listeners","triggerPullDownRefresh","flag","props","distanceToRefresh","setState","release","setContentStyle","finish","reset","init","ele","scrollContainer","_to","touchstart","onTouchStart","bind","touchmove","onTouchMove","touchend","onTouchEnd","touchcancel","keys","forEach","key","destroy","removeEventListener","_","touches","screenY","isEdge","container","document","body","scrollNode","scrollingElement","scrollTop","damping","dy","Math","abs","ratio","screen","height","_screenY","cancelable","preventDefault","_diff","round","activate","changedTouches","clientY","_b","onRefresh","ty","contentRef","style","_a","parentElement","closest","querySelector","componentDidMount","_ref","successHandler","errorHandler","errMsg","_ref2","_ref3","evtName","callback","Taro","eventCenter","on","componentWillUnmount","_ref4","off","componentDidUpdate","prevState","pageEl","__page","onPullDownRefresh","call","_d","_c","onPullIntercept","render","assign","indicator","className","prefixCls","children","forwardedRef","restProps","__rest","renderRefresh","cls","cla","classNames","showIndicator","_jsx","_jsxs","ref","el","current","containerRef","defaultProps","createForwardRefComponent"],"mappings":"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"}
|