@dckj-npm/dc-material 0.1.126 → 0.1.128

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.
Files changed (116) hide show
  1. package/build/index.js +1 -1
  2. package/build/lowcode/assets-daily.json +13 -13
  3. package/build/lowcode/assets-dev.json +2 -2
  4. package/build/lowcode/assets-prod.json +13 -13
  5. package/build/lowcode/index.js +1 -1
  6. package/build/lowcode/meta.design.js +1 -1
  7. package/build/lowcode/meta.js +1 -1
  8. package/build/lowcode/preview.js +7 -7
  9. package/build/lowcode/render/default/view.css +1 -1
  10. package/build/lowcode/render/default/view.js +6 -6
  11. package/build/lowcode/view.css +1 -1
  12. package/build/lowcode/view.js +6 -6
  13. package/dist/BizComps.css +1 -1
  14. package/dist/BizComps.js +2 -2
  15. package/dist/BizComps.js.map +1 -1
  16. package/es/components/message-list/message-list-item.scss +1 -1
  17. package/es/components/notice-bar/index.scss +6 -6
  18. package/es/components/stream-list/index.d.ts +6 -0
  19. package/es/components/stream-list/index.js +6 -0
  20. package/es/components/stream-list/index.scss +26 -0
  21. package/es/components/stream-list/stream-list.d.ts +54 -0
  22. package/es/components/stream-list/stream-list.js +159 -0
  23. package/es/index.d.ts +2 -0
  24. package/es/index.js +4 -0
  25. package/lib/components/message-list/message-list-item.scss +1 -1
  26. package/lib/components/notice-bar/index.scss +6 -6
  27. package/lib/components/stream-list/index.d.ts +6 -0
  28. package/lib/components/stream-list/index.js +6 -0
  29. package/lib/components/stream-list/index.scss +26 -0
  30. package/lib/components/stream-list/stream-list.d.ts +54 -0
  31. package/lib/components/stream-list/stream-list.js +166 -0
  32. package/lib/index.d.ts +2 -0
  33. package/lib/index.js +5 -1
  34. package/lowcode/button2/meta.ts +59 -58
  35. package/lowcode/custom-radio-group/meta.ts +3 -1
  36. package/lowcode/custom-radio-group-item/meta.ts +185 -184
  37. package/lowcode/d-c-slider/meta.design.ts +3 -2
  38. package/lowcode/d-c-slider/meta.ts +16 -15
  39. package/lowcode/goods-card-list/meta.ts +3 -1
  40. package/lowcode/goods-card-list-common/meta.ts +3 -1
  41. package/lowcode/grid-nav/meta.ts +144 -129
  42. package/lowcode/integral-task/meta.ts +141 -140
  43. package/lowcode/menu-list/meta.ts +114 -107
  44. package/lowcode/message-list/meta.ts +105 -98
  45. package/lowcode/navigation/meta.ts +139 -127
  46. package/lowcode/notice-bar/meta.ts +6 -4
  47. package/lowcode/position/meta.ts +111 -110
  48. package/lowcode/rich-text/meta.ts +49 -50
  49. package/lowcode/search-bar/meta.ts +38 -35
  50. package/lowcode/stream-list/meta.ts +209 -0
  51. package/lowcode/swiper/meta.ts +102 -1
  52. package/lowcode/tab-container/meta.ts +45 -44
  53. package/lowcode/tab-message/meta.ts +84 -80
  54. package/lowcode/tag-c/meta.ts +59 -58
  55. package/lowcode/teletext-list/meta.ts +11 -17
  56. package/lowcode/title1/meta.ts +47 -46
  57. package/lowcode/title2/meta.ts +73 -72
  58. package/lowcode_es/button2/meta.js +48 -46
  59. package/lowcode_es/custom-radio-group/meta.js +3 -1
  60. package/lowcode_es/custom-radio-group-item/meta.js +152 -150
  61. package/lowcode_es/d-c-slider/meta.d.ts +3 -1
  62. package/lowcode_es/d-c-slider/meta.design.d.ts +1 -0
  63. package/lowcode_es/d-c-slider/meta.design.js +2 -1
  64. package/lowcode_es/d-c-slider/meta.js +8 -7
  65. package/lowcode_es/goods-card-list/meta.js +3 -1
  66. package/lowcode_es/goods-card-list-common/meta.js +3 -1
  67. package/lowcode_es/grid-nav/meta.js +109 -108
  68. package/lowcode_es/integral-task/meta.js +101 -99
  69. package/lowcode_es/menu-list/meta.js +79 -77
  70. package/lowcode_es/message-list/meta.js +65 -63
  71. package/lowcode_es/meta.js +3 -2
  72. package/lowcode_es/navigation/meta.js +98 -96
  73. package/lowcode_es/notice-bar/meta.js +3 -1
  74. package/lowcode_es/position/meta.js +77 -75
  75. package/lowcode_es/rich-text/meta.js +34 -32
  76. package/lowcode_es/search-bar/meta.js +23 -21
  77. package/lowcode_es/stream-list/meta.d.ts +22 -0
  78. package/lowcode_es/stream-list/meta.js +196 -0
  79. package/lowcode_es/swiper/meta.js +91 -1
  80. package/lowcode_es/tab-container/meta.d.ts +1 -1
  81. package/lowcode_es/tab-container/meta.js +27 -26
  82. package/lowcode_es/tab-message/meta.js +66 -64
  83. package/lowcode_es/tag-c/meta.js +48 -46
  84. package/lowcode_es/teletext-list/meta.js +4 -9
  85. package/lowcode_es/title1/meta.js +37 -35
  86. package/lowcode_es/title2/meta.js +61 -59
  87. package/lowcode_lib/button2/meta.js +48 -46
  88. package/lowcode_lib/custom-radio-group/meta.js +3 -1
  89. package/lowcode_lib/custom-radio-group-item/meta.js +152 -150
  90. package/lowcode_lib/d-c-slider/meta.d.ts +3 -1
  91. package/lowcode_lib/d-c-slider/meta.design.d.ts +1 -0
  92. package/lowcode_lib/d-c-slider/meta.design.js +2 -1
  93. package/lowcode_lib/d-c-slider/meta.js +8 -7
  94. package/lowcode_lib/goods-card-list/meta.js +3 -1
  95. package/lowcode_lib/goods-card-list-common/meta.js +3 -1
  96. package/lowcode_lib/grid-nav/meta.js +109 -108
  97. package/lowcode_lib/integral-task/meta.js +101 -99
  98. package/lowcode_lib/menu-list/meta.js +79 -77
  99. package/lowcode_lib/message-list/meta.js +65 -63
  100. package/lowcode_lib/meta.js +11 -10
  101. package/lowcode_lib/navigation/meta.js +98 -96
  102. package/lowcode_lib/notice-bar/meta.js +3 -1
  103. package/lowcode_lib/position/meta.js +77 -75
  104. package/lowcode_lib/rich-text/meta.js +34 -32
  105. package/lowcode_lib/search-bar/meta.js +23 -21
  106. package/lowcode_lib/stream-list/meta.d.ts +22 -0
  107. package/lowcode_lib/stream-list/meta.js +201 -0
  108. package/lowcode_lib/swiper/meta.js +91 -1
  109. package/lowcode_lib/tab-container/meta.d.ts +1 -1
  110. package/lowcode_lib/tab-container/meta.js +27 -26
  111. package/lowcode_lib/tab-message/meta.js +66 -64
  112. package/lowcode_lib/tag-c/meta.js +48 -46
  113. package/lowcode_lib/teletext-list/meta.js +4 -9
  114. package/lowcode_lib/title1/meta.js +37 -35
  115. package/lowcode_lib/title2/meta.js +61 -59
  116. package/package.json +3 -3
@@ -30,14 +30,14 @@
30
30
  overflow: hidden; // 确保超出部分不显示
31
31
  height: 20px; // 设置合适的高度
32
32
  }
33
-
33
+
34
34
  .notice-bar__panel__item-loop > div {
35
35
  position: absolute; // 绝对定位
36
36
  width: 100%;
37
37
  height: 20px;
38
38
  animation: scrollUp 4s linear infinite; // 动画持续时间和类型
39
39
  }
40
-
40
+
41
41
  @keyframes scrollUp {
42
42
  0% {
43
43
  transform: translateY(100%); // 从底部开始
@@ -46,11 +46,11 @@
46
46
  transform: translateY(-200%); // 滚动到顶部
47
47
  }
48
48
  }
49
-
50
-
49
+
50
+
51
51
  }
52
-
53
-
52
+
53
+
54
54
  }
55
55
  //动画
56
56
  .anim {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 菜单列表
3
+ */
4
+ import StreamList from './stream-list';
5
+ export type { StreamListProps } from './stream-list';
6
+ export { StreamList };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 菜单列表
3
+ */
4
+
5
+ import StreamList from "./stream-list";
6
+ export { StreamList };
@@ -0,0 +1,26 @@
1
+ @import '../../variables.scss';
2
+
3
+ .stream-list-container {
4
+
5
+ .refresh-indicator {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ height: 40px;
10
+ font-size: 14px;
11
+ color: #333;
12
+ pointer-events: none;
13
+ }
14
+
15
+ // 加载更多提示的样式
16
+ .spin, .loading-text {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ height: 40px; // 提示高度
21
+ font-size: 14px;
22
+ color: #666;
23
+ }
24
+
25
+ }
26
+
@@ -0,0 +1,54 @@
1
+ import type { ReactNode } from 'react';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ export interface PageHelperType<T = any> {
5
+ page: number;
6
+ rows: number;
7
+ isLastPage: boolean;
8
+ total: number;
9
+ list: T[];
10
+ }
11
+ export interface StreamListProps {
12
+ /**
13
+ * 子组件内容
14
+ */
15
+ children: ReactNode;
16
+ /**
17
+ * 请求下一页数据的函数
18
+ * @param page
19
+ * @param rows
20
+ */
21
+ onNextPage?: (options: {
22
+ page: number;
23
+ rows?: number;
24
+ }) => Promise<PageHelperType>;
25
+ /**
26
+ * 请求刷新数据的函数
27
+ */
28
+ onRefreshPage?: () => Promise<PageHelperType>;
29
+ /**
30
+ * 是否是最后一页
31
+ */
32
+ isLastPage?: boolean;
33
+ /**
34
+ * 当前页
35
+ */
36
+ nowPage?: number;
37
+ /**
38
+ * 刷新中的文字提示
39
+ */
40
+ refreshingText?: string;
41
+ /**
42
+ * 加载中的文字提示
43
+ */
44
+ loadingText?: string;
45
+ /**
46
+ * 加载更多的文字提示
47
+ */
48
+ loadMoreText?: string;
49
+ }
50
+ /**
51
+ * StreamList 组件
52
+ */
53
+ declare const StreamList: React.FC<StreamListProps>;
54
+ export default StreamList;
@@ -0,0 +1,159 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ import React, { useEffect, useRef, useState } from 'react';
4
+ import "./index.scss";
5
+ /**
6
+ * StreamList 组件
7
+ */
8
+ var StreamList = function StreamList(_ref) {
9
+ var children = _ref.children,
10
+ onNextPage = _ref.onNextPage,
11
+ onRefreshPage = _ref.onRefreshPage,
12
+ _ref$refreshingText = _ref.refreshingText,
13
+ refreshingText = _ref$refreshingText === void 0 ? '正在刷新中...' : _ref$refreshingText,
14
+ _ref$loadingText = _ref.loadingText,
15
+ loadingText = _ref$loadingText === void 0 ? '加载中...' : _ref$loadingText,
16
+ _ref$loadMoreText = _ref.loadMoreText,
17
+ loadMoreText = _ref$loadMoreText === void 0 ? '加载更多' : _ref$loadMoreText,
18
+ _ref$isLastPage = _ref.isLastPage,
19
+ isLastPage = _ref$isLastPage === void 0 ? false : _ref$isLastPage,
20
+ _ref$nowPage = _ref.nowPage,
21
+ nowPage = _ref$nowPage === void 0 ? 1 : _ref$nowPage;
22
+ var _useState = useState(false),
23
+ isLoading = _useState[0],
24
+ setIsLoading = _useState[1];
25
+ var _useState2 = useState(false),
26
+ isRefreshing = _useState2[0],
27
+ setIsRefreshing = _useState2[1];
28
+ // 下拉刷新的阈值
29
+ var threshold = 50;
30
+ // 最大下拉距离
31
+ var maxPullDistance = 100;
32
+ var _useState3 = useState(0),
33
+ pullDistance = _useState3[0],
34
+ setPullDistance = _useState3[1];
35
+ var startYRef = useRef(0);
36
+ var _useState4 = useState(false),
37
+ isDragging = _useState4[0],
38
+ setIsDragging = _useState4[1];
39
+ var observerRef = useRef(null);
40
+ // 防止初始加载直接请求下一页
41
+ var hasInitialLoad = useRef(false);
42
+
43
+ // 监听加载下一页数据
44
+ useEffect(function () {
45
+ if (isRefreshing || isLastPage) {
46
+ // @ts-ignore
47
+ return;
48
+ }
49
+ var spinElement = document.querySelector('.spin');
50
+ if (spinElement && !observerRef.current) {
51
+ // 创建 IntersectionObserver 观察器
52
+ observerRef.current = new IntersectionObserver(function (entries) {
53
+ var entry = entries[0];
54
+ if (entry.isIntersecting && !isLoading) {
55
+ setIsLoading(true);
56
+ var nextPage = nowPage + 1;
57
+ onNextPage({
58
+ page: nextPage
59
+ }).then(function (res) {})["catch"](function (err) {
60
+ console.error('加载下一页失败:', err);
61
+ })["finally"](function () {
62
+ return setIsLoading(false);
63
+ });
64
+ }
65
+ }, {
66
+ threshold: 0.4
67
+ });
68
+ // 观察加载更多元素
69
+ observerRef.current.observe(spinElement);
70
+ }
71
+ return function () {
72
+ if (observerRef.current) {
73
+ // 清除观察者
74
+ observerRef.current.disconnect();
75
+ observerRef.current = null;
76
+ }
77
+ };
78
+ }, [nowPage, isLoading, isRefreshing, isLastPage]);
79
+
80
+ // 初始化加载标记
81
+ useEffect(function () {
82
+ hasInitialLoad.current = true;
83
+ }, []);
84
+
85
+ // 处理触摸和鼠标事件
86
+ var handleTouchStart = function handleTouchStart(e) {
87
+ startYRef.current = 'touches' in e ? e.touches[0].clientY : e.clientY;
88
+ setIsDragging(true);
89
+ };
90
+ var handleTouchMove = function handleTouchMove(e) {
91
+ if (isRefreshing || !isDragging && !('touches' in e)) return;
92
+ var clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
93
+ var distance = clientY - startYRef.current;
94
+
95
+ // 更新下拉距离
96
+ if (distance > 0 && distance <= maxPullDistance) {
97
+ setPullDistance(distance);
98
+ } else if (distance > maxPullDistance) {
99
+ setPullDistance(maxPullDistance);
100
+ }
101
+ };
102
+ var handleTouchEnd = /*#__PURE__*/function () {
103
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
104
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
105
+ while (1) switch (_context.prev = _context.next) {
106
+ case 0:
107
+ setIsDragging(false);
108
+ if (pullDistance > threshold) {
109
+ setIsRefreshing(true);
110
+ setPullDistance(0);
111
+ onRefreshPage().then(function (res) {})["catch"](function (err) {
112
+ console.error('刷新失败:', err);
113
+ })["finally"](function () {
114
+ setIsRefreshing(false);
115
+ });
116
+ } else {
117
+ setPullDistance(0); // 重置下拉距离
118
+ }
119
+ case 2:
120
+ case "end":
121
+ return _context.stop();
122
+ }
123
+ }, _callee);
124
+ }));
125
+ return function handleTouchEnd() {
126
+ return _ref2.apply(this, arguments);
127
+ };
128
+ }();
129
+ return /*#__PURE__*/React.createElement("div", {
130
+ onTouchStart: handleTouchStart,
131
+ onTouchMove: handleTouchMove,
132
+ onTouchEnd: handleTouchEnd,
133
+ onMouseDown: handleTouchStart,
134
+ onMouseMove: handleTouchMove,
135
+ onMouseUp: handleTouchEnd,
136
+ className: "stream-list-container"
137
+ }, /*#__PURE__*/React.createElement("div", {
138
+ className: "refresh-indicator",
139
+ style: {
140
+ position: 'fixed',
141
+ top: 0,
142
+ left: 0,
143
+ right: 0,
144
+ transform: "translateY(" + (isRefreshing ? threshold : pullDistance) + "px)",
145
+ transition: isRefreshing || pullDistance === 0 ? 'transform 0.3s ease' : 'none'
146
+ }
147
+ }, isRefreshing && /*#__PURE__*/React.createElement("span", null, refreshingText)), /*#__PURE__*/React.createElement("div", {
148
+ style: {
149
+ transform: "translateY(" + (isRefreshing ? threshold : pullDistance) + "px)",
150
+ transition: 'transform 0.3s ease'
151
+ }
152
+ }, children), !isRefreshing && !isLastPage && (isLoading ? /*#__PURE__*/React.createElement("div", {
153
+ className: "loading-text"
154
+ }, loadingText) : /*#__PURE__*/React.createElement("div", {
155
+ className: "spin"
156
+ }, loadMoreText)));
157
+ };
158
+ StreamList.displayName = 'StreamList';
159
+ export default StreamList;
package/es/index.d.ts CHANGED
@@ -38,5 +38,7 @@ export type { GoodsCardListProps } from './components/goods-card-list';
38
38
  export { GoodsCardList, GoodsCardListCommon } from './components/goods-card-list';
39
39
  export type { RichTextProps } from './components/rich-text';
40
40
  export { RichText } from './components/rich-text';
41
+ export type { StreamListProps } from './components/stream-list';
42
+ export { StreamList } from './components/stream-list';
41
43
  declare const bizCssPrefix = "bizpack";
42
44
  export { bizCssPrefix };
package/es/index.js CHANGED
@@ -74,5 +74,9 @@ export { GoodsCardList, GoodsCardListCommon } from "./components/goods-card-list
74
74
  // 富文本
75
75
 
76
76
  export { RichText } from "./components/rich-text";
77
+
78
+ // 富文本
79
+
80
+ export { StreamList } from "./components/stream-list";
77
81
  var bizCssPrefix = 'bizpack';
78
82
  export { bizCssPrefix };
@@ -30,14 +30,14 @@
30
30
  overflow: hidden; // 确保超出部分不显示
31
31
  height: 20px; // 设置合适的高度
32
32
  }
33
-
33
+
34
34
  .notice-bar__panel__item-loop > div {
35
35
  position: absolute; // 绝对定位
36
36
  width: 100%;
37
37
  height: 20px;
38
38
  animation: scrollUp 4s linear infinite; // 动画持续时间和类型
39
39
  }
40
-
40
+
41
41
  @keyframes scrollUp {
42
42
  0% {
43
43
  transform: translateY(100%); // 从底部开始
@@ -46,11 +46,11 @@
46
46
  transform: translateY(-200%); // 滚动到顶部
47
47
  }
48
48
  }
49
-
50
-
49
+
50
+
51
51
  }
52
-
53
-
52
+
53
+
54
54
  }
55
55
  //动画
56
56
  .anim {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 菜单列表
3
+ */
4
+ import StreamList from './stream-list';
5
+ export type { StreamListProps } from './stream-list';
6
+ export { StreamList };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ var _streamList = _interopRequireDefault(require("./stream-list"));
6
+ exports.StreamList = _streamList["default"];
@@ -0,0 +1,26 @@
1
+ @import '../../variables.scss';
2
+
3
+ .stream-list-container {
4
+
5
+ .refresh-indicator {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ height: 40px;
10
+ font-size: 14px;
11
+ color: #333;
12
+ pointer-events: none;
13
+ }
14
+
15
+ // 加载更多提示的样式
16
+ .spin, .loading-text {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ height: 40px; // 提示高度
21
+ font-size: 14px;
22
+ color: #666;
23
+ }
24
+
25
+ }
26
+
@@ -0,0 +1,54 @@
1
+ import type { ReactNode } from 'react';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ export interface PageHelperType<T = any> {
5
+ page: number;
6
+ rows: number;
7
+ isLastPage: boolean;
8
+ total: number;
9
+ list: T[];
10
+ }
11
+ export interface StreamListProps {
12
+ /**
13
+ * 子组件内容
14
+ */
15
+ children: ReactNode;
16
+ /**
17
+ * 请求下一页数据的函数
18
+ * @param page
19
+ * @param rows
20
+ */
21
+ onNextPage?: (options: {
22
+ page: number;
23
+ rows?: number;
24
+ }) => Promise<PageHelperType>;
25
+ /**
26
+ * 请求刷新数据的函数
27
+ */
28
+ onRefreshPage?: () => Promise<PageHelperType>;
29
+ /**
30
+ * 是否是最后一页
31
+ */
32
+ isLastPage?: boolean;
33
+ /**
34
+ * 当前页
35
+ */
36
+ nowPage?: number;
37
+ /**
38
+ * 刷新中的文字提示
39
+ */
40
+ refreshingText?: string;
41
+ /**
42
+ * 加载中的文字提示
43
+ */
44
+ loadingText?: string;
45
+ /**
46
+ * 加载更多的文字提示
47
+ */
48
+ loadMoreText?: string;
49
+ }
50
+ /**
51
+ * StreamList 组件
52
+ */
53
+ declare const StreamList: React.FC<StreamListProps>;
54
+ export default StreamList;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports["default"] = void 0;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ require("./index.scss");
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
12
+ /**
13
+ * StreamList 组件
14
+ */
15
+ var StreamList = function StreamList(_ref) {
16
+ var children = _ref.children,
17
+ onNextPage = _ref.onNextPage,
18
+ onRefreshPage = _ref.onRefreshPage,
19
+ _ref$refreshingText = _ref.refreshingText,
20
+ refreshingText = _ref$refreshingText === void 0 ? '正在刷新中...' : _ref$refreshingText,
21
+ _ref$loadingText = _ref.loadingText,
22
+ loadingText = _ref$loadingText === void 0 ? '加载中...' : _ref$loadingText,
23
+ _ref$loadMoreText = _ref.loadMoreText,
24
+ loadMoreText = _ref$loadMoreText === void 0 ? '加载更多' : _ref$loadMoreText,
25
+ _ref$isLastPage = _ref.isLastPage,
26
+ isLastPage = _ref$isLastPage === void 0 ? false : _ref$isLastPage,
27
+ _ref$nowPage = _ref.nowPage,
28
+ nowPage = _ref$nowPage === void 0 ? 1 : _ref$nowPage;
29
+ var _useState = (0, _react.useState)(false),
30
+ isLoading = _useState[0],
31
+ setIsLoading = _useState[1];
32
+ var _useState2 = (0, _react.useState)(false),
33
+ isRefreshing = _useState2[0],
34
+ setIsRefreshing = _useState2[1];
35
+ // 下拉刷新的阈值
36
+ var threshold = 50;
37
+ // 最大下拉距离
38
+ var maxPullDistance = 100;
39
+ var _useState3 = (0, _react.useState)(0),
40
+ pullDistance = _useState3[0],
41
+ setPullDistance = _useState3[1];
42
+ var startYRef = (0, _react.useRef)(0);
43
+ var _useState4 = (0, _react.useState)(false),
44
+ isDragging = _useState4[0],
45
+ setIsDragging = _useState4[1];
46
+ var observerRef = (0, _react.useRef)(null);
47
+ // 防止初始加载直接请求下一页
48
+ var hasInitialLoad = (0, _react.useRef)(false);
49
+
50
+ // 监听加载下一页数据
51
+ (0, _react.useEffect)(function () {
52
+ if (isRefreshing || isLastPage) {
53
+ // @ts-ignore
54
+ return;
55
+ }
56
+ var spinElement = document.querySelector('.spin');
57
+ if (spinElement && !observerRef.current) {
58
+ // 创建 IntersectionObserver 观察器
59
+ observerRef.current = new IntersectionObserver(function (entries) {
60
+ var entry = entries[0];
61
+ if (entry.isIntersecting && !isLoading) {
62
+ setIsLoading(true);
63
+ var nextPage = nowPage + 1;
64
+ onNextPage({
65
+ page: nextPage
66
+ }).then(function (res) {})["catch"](function (err) {
67
+ console.error('加载下一页失败:', err);
68
+ })["finally"](function () {
69
+ return setIsLoading(false);
70
+ });
71
+ }
72
+ }, {
73
+ threshold: 0.4
74
+ });
75
+ // 观察加载更多元素
76
+ observerRef.current.observe(spinElement);
77
+ }
78
+ return function () {
79
+ if (observerRef.current) {
80
+ // 清除观察者
81
+ observerRef.current.disconnect();
82
+ observerRef.current = null;
83
+ }
84
+ };
85
+ }, [nowPage, isLoading, isRefreshing, isLastPage]);
86
+
87
+ // 初始化加载标记
88
+ (0, _react.useEffect)(function () {
89
+ hasInitialLoad.current = true;
90
+ }, []);
91
+
92
+ // 处理触摸和鼠标事件
93
+ var handleTouchStart = function handleTouchStart(e) {
94
+ startYRef.current = 'touches' in e ? e.touches[0].clientY : e.clientY;
95
+ setIsDragging(true);
96
+ };
97
+ var handleTouchMove = function handleTouchMove(e) {
98
+ if (isRefreshing || !isDragging && !('touches' in e)) return;
99
+ var clientY = 'touches' in e ? e.touches[0].clientY : e.clientY;
100
+ var distance = clientY - startYRef.current;
101
+
102
+ // 更新下拉距离
103
+ if (distance > 0 && distance <= maxPullDistance) {
104
+ setPullDistance(distance);
105
+ } else if (distance > maxPullDistance) {
106
+ setPullDistance(maxPullDistance);
107
+ }
108
+ };
109
+ var handleTouchEnd = /*#__PURE__*/function () {
110
+ var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
111
+ return _regenerator["default"].wrap(function _callee$(_context) {
112
+ while (1) switch (_context.prev = _context.next) {
113
+ case 0:
114
+ setIsDragging(false);
115
+ if (pullDistance > threshold) {
116
+ setIsRefreshing(true);
117
+ setPullDistance(0);
118
+ onRefreshPage().then(function (res) {})["catch"](function (err) {
119
+ console.error('刷新失败:', err);
120
+ })["finally"](function () {
121
+ setIsRefreshing(false);
122
+ });
123
+ } else {
124
+ setPullDistance(0); // 重置下拉距离
125
+ }
126
+ case 2:
127
+ case "end":
128
+ return _context.stop();
129
+ }
130
+ }, _callee);
131
+ }));
132
+ return function handleTouchEnd() {
133
+ return _ref2.apply(this, arguments);
134
+ };
135
+ }();
136
+ return /*#__PURE__*/_react["default"].createElement("div", {
137
+ onTouchStart: handleTouchStart,
138
+ onTouchMove: handleTouchMove,
139
+ onTouchEnd: handleTouchEnd,
140
+ onMouseDown: handleTouchStart,
141
+ onMouseMove: handleTouchMove,
142
+ onMouseUp: handleTouchEnd,
143
+ className: "stream-list-container"
144
+ }, /*#__PURE__*/_react["default"].createElement("div", {
145
+ className: "refresh-indicator",
146
+ style: {
147
+ position: 'fixed',
148
+ top: 0,
149
+ left: 0,
150
+ right: 0,
151
+ transform: "translateY(" + (isRefreshing ? threshold : pullDistance) + "px)",
152
+ transition: isRefreshing || pullDistance === 0 ? 'transform 0.3s ease' : 'none'
153
+ }
154
+ }, isRefreshing && /*#__PURE__*/_react["default"].createElement("span", null, refreshingText)), /*#__PURE__*/_react["default"].createElement("div", {
155
+ style: {
156
+ transform: "translateY(" + (isRefreshing ? threshold : pullDistance) + "px)",
157
+ transition: 'transform 0.3s ease'
158
+ }
159
+ }, children), !isRefreshing && !isLastPage && (isLoading ? /*#__PURE__*/_react["default"].createElement("div", {
160
+ className: "loading-text"
161
+ }, loadingText) : /*#__PURE__*/_react["default"].createElement("div", {
162
+ className: "spin"
163
+ }, loadMoreText)));
164
+ };
165
+ StreamList.displayName = 'StreamList';
166
+ var _default = exports["default"] = StreamList;
package/lib/index.d.ts CHANGED
@@ -38,5 +38,7 @@ export type { GoodsCardListProps } from './components/goods-card-list';
38
38
  export { GoodsCardList, GoodsCardListCommon } from './components/goods-card-list';
39
39
  export type { RichTextProps } from './components/rich-text';
40
40
  export { RichText } from './components/rich-text';
41
+ export type { StreamListProps } from './components/stream-list';
42
+ export { StreamList } from './components/stream-list';
41
43
  declare const bizCssPrefix = "bizpack";
42
44
  export { bizCssPrefix };
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.bizCssPrefix = exports.Title2 = exports.Title1 = exports.TeletextList = exports.TagC = exports.TabMessage = exports.TabContainerItem = exports.TabContainer = exports.Swiper = exports.SearchBar = exports.RichText = exports.Position = exports.NoticeBar = exports.Navigation = exports.MessageList = exports.MenuList = exports.IntegralTask = exports.GridNav = exports.GoodsCardListCommon = exports.GoodsCardList = exports.CustomRadioGroupItem = exports.CustomRadioGroup = exports.Button2 = void 0;
5
+ exports.bizCssPrefix = exports.Title2 = exports.Title1 = exports.TeletextList = exports.TagC = exports.TabMessage = exports.TabContainerItem = exports.TabContainer = exports.Swiper = exports.StreamList = exports.SearchBar = exports.RichText = exports.Position = exports.NoticeBar = exports.Navigation = exports.MessageList = exports.MenuList = exports.IntegralTask = exports.GridNav = exports.GoodsCardListCommon = exports.GoodsCardList = exports.CustomRadioGroupItem = exports.CustomRadioGroup = exports.Button2 = void 0;
6
6
  var _swiper = _interopRequireDefault(require("./components/swiper"));
7
7
  exports.Swiper = _swiper["default"];
8
8
  var _bottomNavigation = _interopRequireDefault(require("./components/bottom-navigation"));
@@ -44,6 +44,8 @@ exports.GoodsCardList = _goodsCardList.GoodsCardList;
44
44
  exports.GoodsCardListCommon = _goodsCardList.GoodsCardListCommon;
45
45
  var _richText = require("./components/rich-text");
46
46
  exports.RichText = _richText.RichText;
47
+ var _streamList = require("./components/stream-list");
48
+ exports.StreamList = _streamList.StreamList;
47
49
  // 轮播图
48
50
 
49
51
  // 底部导航
@@ -84,4 +86,6 @@ exports.RichText = _richText.RichText;
84
86
 
85
87
  // 富文本
86
88
 
89
+ // 富文本
90
+
87
91
  var bizCssPrefix = exports.bizCssPrefix = 'bizpack';