@tarojs/components-advanced 4.1.12-beta.2 → 4.1.12-beta.21
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/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/list/NoMore.d.ts +30 -0
- package/dist/components/list/NoMore.js +10 -0
- package/dist/components/list/NoMore.js.map +1 -0
- package/dist/components/list/hooks/useItemSizeCache.d.ts +13 -0
- package/dist/components/list/hooks/useItemSizeCache.js +40 -0
- package/dist/components/list/hooks/useItemSizeCache.js.map +1 -0
- package/dist/components/list/hooks/useListNestedScroll.d.ts +18 -0
- package/dist/components/list/hooks/useListNestedScroll.js +61 -0
- package/dist/components/list/hooks/useListNestedScroll.js.map +1 -0
- package/dist/components/list/hooks/useListScrollElementAttach.d.ts +25 -0
- package/dist/components/list/hooks/useListScrollElementAttach.js +88 -0
- package/dist/components/list/hooks/useListScrollElementAttach.js.map +1 -0
- package/dist/components/list/hooks/useListScrollElementAttachWeapp.d.ts +27 -0
- package/dist/components/list/hooks/useListScrollElementAttachWeapp.js +153 -0
- package/dist/components/list/hooks/useListScrollElementAttachWeapp.js.map +1 -0
- package/dist/components/list/hooks/useMeasureStartOffset.d.ts +12 -0
- package/dist/components/list/hooks/useMeasureStartOffset.js +84 -0
- package/dist/components/list/hooks/useMeasureStartOffset.js.map +1 -0
- package/dist/components/list/hooks/useMeasureStartOffsetWeapp.d.ts +13 -0
- package/dist/components/list/hooks/useMeasureStartOffsetWeapp.js +85 -0
- package/dist/components/list/hooks/useMeasureStartOffsetWeapp.js.map +1 -0
- package/dist/components/list/hooks/useRefresher.d.ts +74 -0
- package/dist/components/list/hooks/useRefresher.js +503 -0
- package/dist/components/list/hooks/useRefresher.js.map +1 -0
- package/dist/components/list/hooks/useResizeObserver.d.ts +26 -0
- package/dist/components/list/hooks/useResizeObserver.js +152 -0
- package/dist/components/list/hooks/useResizeObserver.js.map +1 -0
- package/dist/components/list/hooks/useScrollCorrection.d.ts +19 -0
- package/dist/components/list/hooks/useScrollCorrection.js +73 -0
- package/dist/components/list/hooks/useScrollCorrection.js.map +1 -0
- package/dist/components/list/hooks/useScrollParentAutoFind.d.ts +20 -0
- package/dist/components/list/hooks/useScrollParentAutoFind.js +81 -0
- package/dist/components/list/hooks/useScrollParentAutoFind.js.map +1 -0
- package/dist/components/list/index.d.ts +64 -7
- package/dist/components/list/index.js +1041 -162
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/list/utils.d.ts +16 -0
- package/dist/components/list/utils.js +19 -0
- package/dist/components/list/utils.js.map +1 -0
- package/dist/components/virtual-list/vue/list.d.ts +12 -12
- package/dist/components/virtual-waterfall/vue/waterfall.d.ts +11 -11
- package/dist/components/water-flow/flow-item.js +6 -4
- package/dist/components/water-flow/flow-item.js.map +1 -1
- package/dist/components/water-flow/flow-section.js +1 -1
- package/dist/components/water-flow/flow-section.js.map +1 -1
- package/dist/components/water-flow/index.d.ts +1 -1
- package/dist/components/water-flow/interface.d.ts +18 -2
- package/dist/components/water-flow/root.d.ts +35 -4
- package/dist/components/water-flow/root.js +114 -42
- package/dist/components/water-flow/root.js.map +1 -1
- package/dist/components/water-flow/section.d.ts +7 -1
- package/dist/components/water-flow/section.js +54 -9
- package/dist/components/water-flow/section.js.map +1 -1
- package/dist/components/water-flow/utils.d.ts +4 -0
- package/dist/components/water-flow/utils.js +5 -1
- package/dist/components/water-flow/utils.js.map +1 -1
- package/dist/components/water-flow/water-flow-node-cache.d.ts +24 -0
- package/dist/components/water-flow/water-flow-node-cache.js +161 -0
- package/dist/components/water-flow/water-flow-node-cache.js.map +1 -0
- package/dist/components/water-flow/water-flow.d.ts +2 -3
- package/dist/components/water-flow/water-flow.js +286 -31
- package/dist/components/water-flow/water-flow.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/scrollElementContext.d.ts +15 -0
- package/dist/utils/scrollElementContext.js +14 -0
- package/dist/utils/scrollElementContext.js.map +1 -0
- package/dist/utils/scrollParent.d.ts +33 -0
- package/dist/utils/scrollParent.js +88 -0
- package/dist/utils/scrollParent.js.map +1 -0
- package/package.json +9 -8
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { document as document$1 } from '@tarojs/runtime';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 查找元素的真实滚动父节点。
|
|
5
|
+
* 用于 nestedScroll 模式下无 props/Context 时自动获取 scrollElement。
|
|
6
|
+
*
|
|
7
|
+
* 策略:
|
|
8
|
+
* 1. 优先命中 Taro ScrollView 类名 .taro-scroll
|
|
9
|
+
* 2. 回退:向上遍历找通用可滚动祖先
|
|
10
|
+
*
|
|
11
|
+
* 严格条件(均需满足):
|
|
12
|
+
* - overflow 为 auto | scroll | overlay
|
|
13
|
+
* - scrollHeight > clientHeight(纵向)或 scrollWidth > clientWidth(横向)
|
|
14
|
+
* - 在 document.body 前停止
|
|
15
|
+
*/
|
|
16
|
+
const SCROLLABLE_OVERFLOW = ['auto', 'scroll', 'overlay'];
|
|
17
|
+
/** 小程序端 scroll-view 的 nodeName(Taro 虚拟 DOM) */
|
|
18
|
+
const SCROLL_VIEW_NODE_NAME = 'scroll-view';
|
|
19
|
+
/**
|
|
20
|
+
* 判断元素是否可滚动(严格:overflow 可滚动 + 实际有溢出)
|
|
21
|
+
*/
|
|
22
|
+
function isScrollableElement(el, vertical = true) {
|
|
23
|
+
if (!el || el === document.body)
|
|
24
|
+
return false;
|
|
25
|
+
const style = getComputedStyle(el);
|
|
26
|
+
const overflow = vertical ? style.overflowY : style.overflowX;
|
|
27
|
+
if (!SCROLLABLE_OVERFLOW.includes(overflow))
|
|
28
|
+
return false;
|
|
29
|
+
const hasOverflow = vertical
|
|
30
|
+
? el.scrollHeight > el.clientHeight
|
|
31
|
+
: el.scrollWidth > el.clientWidth;
|
|
32
|
+
return hasOverflow;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 从给定元素向上查找最近的滚动父节点。
|
|
36
|
+
* 优先匹配 .taro-scroll,未命中则按通用可滚动条件查找。
|
|
37
|
+
*/
|
|
38
|
+
function findScrollParent(el, vertical = true) {
|
|
39
|
+
var _a;
|
|
40
|
+
if (!el)
|
|
41
|
+
return null;
|
|
42
|
+
// 1. 优先:Taro ScrollView 的 div(.taro-scroll)
|
|
43
|
+
const taroScroll = (_a = el.closest) === null || _a === void 0 ? void 0 : _a.call(el, '.taro-scroll');
|
|
44
|
+
if (taroScroll && taroScroll !== document.body && isScrollableElement(taroScroll, vertical)) {
|
|
45
|
+
return taroScroll;
|
|
46
|
+
}
|
|
47
|
+
// 2. 回退:通用可滚动祖先
|
|
48
|
+
let parent = el.parentElement;
|
|
49
|
+
while (parent !== null && parent !== document.body) {
|
|
50
|
+
if (isScrollableElement(parent, vertical))
|
|
51
|
+
return parent;
|
|
52
|
+
parent = parent.parentElement;
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 小程序端:基于 Taro 虚拟 DOM 查找父级 scroll-view。
|
|
58
|
+
* 从 contentId 对应节点沿 parentNode 向上遍历,找到 nodeName === 'scroll-view' 的节点。
|
|
59
|
+
*
|
|
60
|
+
* 仅用于小程序环境,H5 请使用 findScrollParent。
|
|
61
|
+
*
|
|
62
|
+
* @param contentId - content 节点的 id(需在 eventSource 中已注册)
|
|
63
|
+
* @returns 找到的 TaroElement(scroll-view)或 null
|
|
64
|
+
*/
|
|
65
|
+
function findScrollParentTaro(contentId) {
|
|
66
|
+
var _a;
|
|
67
|
+
if (!contentId)
|
|
68
|
+
return null;
|
|
69
|
+
const doc = document$1;
|
|
70
|
+
const el = (_a = doc.getElementById) === null || _a === void 0 ? void 0 : _a.call(doc, contentId);
|
|
71
|
+
if (!el || !el.parentNode)
|
|
72
|
+
return null;
|
|
73
|
+
let node = el;
|
|
74
|
+
while (node) {
|
|
75
|
+
const parent = node.parentNode;
|
|
76
|
+
if (!parent)
|
|
77
|
+
break;
|
|
78
|
+
// NodeType.ELEMENT_NODE === 1
|
|
79
|
+
if (parent.nodeType === 1 && parent.nodeName === SCROLL_VIEW_NODE_NAME) {
|
|
80
|
+
return parent;
|
|
81
|
+
}
|
|
82
|
+
node = parent;
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { findScrollParent, findScrollParentTaro, isScrollableElement };
|
|
88
|
+
//# sourceMappingURL=scrollParent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollParent.js","sources":["../../src/utils/scrollParent.ts"],"sourcesContent":["/**\n * 查找元素的真实滚动父节点。\n * 用于 nestedScroll 模式下无 props/Context 时自动获取 scrollElement。\n *\n * 策略:\n * 1. 优先命中 Taro ScrollView 类名 .taro-scroll\n * 2. 回退:向上遍历找通用可滚动祖先\n *\n * 严格条件(均需满足):\n * - overflow 为 auto | scroll | overlay\n * - scrollHeight > clientHeight(纵向)或 scrollWidth > clientWidth(横向)\n * - 在 document.body 前停止\n */\n\nimport { document as taroDocument } from '@tarojs/runtime'\n\nimport type { TaroElement, TaroNode } from '@tarojs/runtime'\n\nconst SCROLLABLE_OVERFLOW = ['auto', 'scroll', 'overlay'] as const\n\n/** 小程序端 scroll-view 的 nodeName(Taro 虚拟 DOM) */\nconst SCROLL_VIEW_NODE_NAME = 'scroll-view'\n\n/**\n * 判断元素是否可滚动(严格:overflow 可滚动 + 实际有溢出)\n */\nexport function isScrollableElement(\n el: HTMLElement | null,\n vertical = true\n): el is HTMLElement {\n if (!el || el === document.body) return false\n const style = getComputedStyle(el)\n const overflow = vertical ? style.overflowY : style.overflowX\n if (!SCROLLABLE_OVERFLOW.includes(overflow as any)) return false\n const hasOverflow = vertical\n ? el.scrollHeight > el.clientHeight\n : el.scrollWidth > el.clientWidth\n return hasOverflow\n}\n\n/**\n * 从给定元素向上查找最近的滚动父节点。\n * 优先匹配 .taro-scroll,未命中则按通用可滚动条件查找。\n */\nexport function findScrollParent(\n el: HTMLElement | null,\n vertical = true\n): HTMLElement | null {\n if (!el) return null\n\n // 1. 优先:Taro ScrollView 的 div(.taro-scroll)\n const taroScroll = el.closest?.('.taro-scroll')\n if (taroScroll && taroScroll !== document.body && isScrollableElement(taroScroll as HTMLElement, vertical)) {\n return taroScroll as HTMLElement\n }\n\n // 2. 回退:通用可滚动祖先\n let parent: HTMLElement | null = el.parentElement\n while (parent !== null && parent !== document.body) {\n if (isScrollableElement(parent, vertical)) return parent\n parent = (parent as HTMLElement).parentElement\n }\n return null\n}\n\n/**\n * 小程序端:基于 Taro 虚拟 DOM 查找父级 scroll-view。\n * 从 contentId 对应节点沿 parentNode 向上遍历,找到 nodeName === 'scroll-view' 的节点。\n *\n * 仅用于小程序环境,H5 请使用 findScrollParent。\n *\n * @param contentId - content 节点的 id(需在 eventSource 中已注册)\n * @returns 找到的 TaroElement(scroll-view)或 null\n */\nexport function findScrollParentTaro (contentId: string): TaroElement | null {\n if (!contentId) return null\n const doc = taroDocument as { getElementById: (id: string) => TaroElement | null }\n const el = doc.getElementById?.(contentId)\n if (!el || !el.parentNode) return null\n\n let node: TaroNode | null = el\n while (node) {\n const parent = node.parentNode\n if (!parent) break\n // NodeType.ELEMENT_NODE === 1\n if (parent.nodeType === 1 && (parent as TaroElement).nodeName === SCROLL_VIEW_NODE_NAME) {\n return parent as TaroElement\n }\n node = parent\n }\n return null\n}\n\n"],"names":["taroDocument"],"mappings":";;AAAA;;;;;;;;;;;;AAYG;AAMH,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU;AAElE;AACA,MAAM,qBAAqB,GAAG,aAAa;AAE3C;;AAEG;SACa,mBAAmB,CACjC,EAAsB,EACtB,QAAQ,GAAG,IAAI,EAAA;AAEf,IAAA,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK;AAC7C,IAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC;AAClC,IAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AAC7D,IAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAe,CAAC;AAAE,QAAA,OAAO,KAAK;IAChE,MAAM,WAAW,GAAG;AAClB,UAAE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC;UACrB,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW;AACnC,IAAA,OAAO,WAAW;AACpB;AAEA;;;AAGG;SACa,gBAAgB,CAC9B,EAAsB,EACtB,QAAQ,GAAG,IAAI,EAAA;;AAEf,IAAA,IAAI,CAAC,EAAE;AAAE,QAAA,OAAO,IAAI;;IAGpB,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,EAAE,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,cAAc,CAAC;AAC/C,IAAA,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,CAAC,IAAI,IAAI,mBAAmB,CAAC,UAAyB,EAAE,QAAQ,CAAC,EAAE;AAC1G,QAAA,OAAO,UAAyB;;;AAIlC,IAAA,IAAI,MAAM,GAAuB,EAAE,CAAC,aAAa;IACjD,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE;AAClD,QAAA,IAAI,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;AAAE,YAAA,OAAO,MAAM;AACxD,QAAA,MAAM,GAAI,MAAsB,CAAC,aAAa;;AAEhD,IAAA,OAAO,IAAI;AACb;AAEA;;;;;;;;AAQG;AACG,SAAU,oBAAoB,CAAE,SAAiB,EAAA;;AACrD,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI;IAC3B,MAAM,GAAG,GAAGA,UAAsE;IAClF,MAAM,EAAE,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,GAAA,EAAG,SAAS,CAAC;AAC1C,IAAA,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;AAAE,QAAA,OAAO,IAAI;IAEtC,IAAI,IAAI,GAAoB,EAAE;IAC9B,OAAO,IAAI,EAAE;AACX,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU;AAC9B,QAAA,IAAI,CAAC,MAAM;YAAE;;AAEb,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAK,MAAsB,CAAC,QAAQ,KAAK,qBAAqB,EAAE;AACvF,YAAA,OAAO,MAAqB;;QAE9B,IAAI,GAAG,MAAM;;AAEf,IAAA,OAAO,IAAI;AACb;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/components-advanced",
|
|
3
|
-
"version": "4.1.12-beta.
|
|
3
|
+
"version": "4.1.12-beta.21",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "O2Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,19 +20,20 @@
|
|
|
20
20
|
"csstype": "^3.1.1",
|
|
21
21
|
"memoize-one": "^6.0.0",
|
|
22
22
|
"tslib": "^2.6.2",
|
|
23
|
-
"@tarojs/components": "4.1.12-beta.
|
|
23
|
+
"@tarojs/components": "4.1.12-beta.21",
|
|
24
|
+
"@tarojs/components-react": "4.1.12-beta.21"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"vue": "3.2.47",
|
|
27
|
-
"@tarojs/
|
|
28
|
-
"@tarojs/
|
|
29
|
-
"@tarojs/taro": "4.1.12-beta.
|
|
28
|
+
"@tarojs/shared": "4.1.12-beta.21",
|
|
29
|
+
"@tarojs/runtime": "4.1.12-beta.21",
|
|
30
|
+
"@tarojs/taro": "4.1.12-beta.21"
|
|
30
31
|
},
|
|
31
32
|
"peerDependencies": {
|
|
32
33
|
"react": ">=18",
|
|
33
|
-
"@tarojs/runtime": "~4.1.12-beta.
|
|
34
|
-
"@tarojs/
|
|
35
|
-
"@tarojs/
|
|
34
|
+
"@tarojs/runtime": "~4.1.12-beta.21",
|
|
35
|
+
"@tarojs/shared": "~4.1.12-beta.21",
|
|
36
|
+
"@tarojs/taro": "~4.1.12-beta.21"
|
|
36
37
|
},
|
|
37
38
|
"peerDependenciesMeta": {
|
|
38
39
|
"react": {
|