@seakoi/native-ui 1.1.3 → 1.2.0

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 (224) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/commonjs/components/base/carousel/carousel-indicator.js +56 -0
  3. package/dist/commonjs/components/base/carousel/carousel-slides.js +140 -0
  4. package/dist/commonjs/components/base/carousel/carousel.js +114 -122
  5. package/dist/commonjs/components/base/carousel/hooks/index.js +0 -14
  6. package/dist/commonjs/components/base/carousel/hooks/use-carousel-index.js +16 -13
  7. package/dist/commonjs/components/base/carousel/hooks/use-carousel-lifecycle.js +6 -2
  8. package/dist/commonjs/components/base/carousel/hooks/use-carousel-pan-responder.js +40 -12
  9. package/dist/commonjs/components/base/carousel/hooks/use-carousel-position.js +6 -2
  10. package/dist/commonjs/components/base/carousel/index.js +1 -15
  11. package/dist/commonjs/components/base/carousel/style/index.js +12 -0
  12. package/dist/commonjs/components/base/date-picker/date-picker.js +56 -44
  13. package/dist/commonjs/components/base/date-picker/date-range-picker.js +142 -50
  14. package/dist/commonjs/components/base/date-picker/style/index.js +15 -0
  15. package/dist/commonjs/components/base/date-picker-view/date-picker-view.js +19 -53
  16. package/dist/commonjs/components/base/date-picker-view/index.js +0 -22
  17. package/dist/commonjs/components/base/index.js +30 -8
  18. package/dist/commonjs/components/base/picker/index.js +26 -4
  19. package/dist/commonjs/components/base/picker/picker-content.js +60 -0
  20. package/dist/commonjs/components/base/picker/picker-context.js +9 -0
  21. package/dist/commonjs/components/base/picker/picker-field.js +37 -0
  22. package/dist/commonjs/components/base/picker/picker.js +22 -96
  23. package/dist/commonjs/components/base/picker/style/index.js +1 -3
  24. package/dist/commonjs/components/base/picker-backup/base-picker-container.js +50 -0
  25. package/dist/commonjs/components/base/picker-backup/index.js +27 -0
  26. package/dist/commonjs/components/base/picker-backup/picker-backup.js +75 -0
  27. package/dist/commonjs/components/base/picker-backup/picker-copy.js +106 -0
  28. package/dist/commonjs/components/base/{picker → picker-backup}/picker-trigger.js +5 -5
  29. package/dist/commonjs/components/base/picker-backup/style/index.js +19 -0
  30. package/dist/commonjs/components/base/picker-backup/utils.js +53 -0
  31. package/dist/commonjs/components/base/picker-view/picker-view-column.js +15 -0
  32. package/dist/commonjs/components/base/picker-view/picker-view.js +4 -4
  33. package/dist/commonjs/components/base/tag/index.js +20 -0
  34. package/dist/commonjs/components/base/tag/style/index.js +89 -0
  35. package/dist/commonjs/components/base/tag/tag-context.js +12 -0
  36. package/dist/commonjs/components/base/tag/tag-group.js +35 -0
  37. package/dist/commonjs/components/base/tag/tag.js +47 -0
  38. package/dist/commonjs/components/base/tag/types.js +5 -0
  39. package/dist/module/components/base/carousel/carousel-indicator.js +51 -0
  40. package/dist/module/components/base/carousel/carousel-slides.js +135 -0
  41. package/dist/module/components/base/carousel/carousel.js +116 -124
  42. package/dist/module/components/base/carousel/hooks/index.js +0 -2
  43. package/dist/module/components/base/carousel/hooks/use-carousel-index.js +15 -11
  44. package/dist/module/components/base/carousel/hooks/use-carousel-lifecycle.js +6 -2
  45. package/dist/module/components/base/carousel/hooks/use-carousel-pan-responder.js +40 -11
  46. package/dist/module/components/base/carousel/hooks/use-carousel-position.js +5 -1
  47. package/dist/module/components/base/carousel/index.js +1 -5
  48. package/dist/module/components/base/carousel/style/index.js +12 -0
  49. package/dist/module/components/base/date-picker/date-picker.js +60 -48
  50. package/dist/module/components/base/date-picker/date-range-picker.js +146 -54
  51. package/dist/module/components/base/date-picker/style/index.js +11 -0
  52. package/dist/module/components/base/date-picker-view/date-picker-view.js +23 -57
  53. package/dist/module/components/base/date-picker-view/index.js +1 -3
  54. package/dist/module/components/base/index.js +2 -0
  55. package/dist/module/components/base/picker/index.js +9 -1
  56. package/dist/module/components/base/picker/picker-content.js +54 -0
  57. package/dist/module/components/base/picker/picker-context.js +4 -0
  58. package/dist/module/components/base/picker/picker-field.js +32 -0
  59. package/dist/module/components/base/picker/picker.js +25 -99
  60. package/dist/module/components/base/picker/style/index.js +1 -3
  61. package/dist/module/components/base/picker-backup/base-picker-container.js +44 -0
  62. package/dist/module/components/base/picker-backup/index.js +4 -0
  63. package/dist/module/components/base/picker-backup/picker-backup.js +69 -0
  64. package/dist/module/components/base/picker-backup/picker-copy.js +101 -0
  65. package/dist/module/components/base/{picker → picker-backup}/picker-trigger.js +2 -2
  66. package/dist/module/components/base/picker-backup/style/index.js +15 -0
  67. package/dist/module/components/base/picker-backup/utils.js +48 -0
  68. package/dist/module/components/base/picker-view/picker-view-column.js +15 -0
  69. package/dist/module/components/base/picker-view/picker-view.js +4 -4
  70. package/dist/module/components/base/tag/index.js +5 -0
  71. package/dist/module/components/base/tag/style/index.js +85 -0
  72. package/dist/module/components/base/tag/tag-context.js +8 -0
  73. package/dist/module/components/base/tag/tag-group.js +29 -0
  74. package/dist/module/components/base/tag/tag.js +41 -0
  75. package/dist/module/components/base/tag/types.js +3 -0
  76. package/dist/typescript/components/base/carousel/carousel-indicator.d.ts +42 -0
  77. package/dist/typescript/components/base/carousel/carousel-indicator.d.ts.map +1 -0
  78. package/dist/typescript/components/base/carousel/carousel-slides.d.ts +49 -0
  79. package/dist/typescript/components/base/carousel/carousel-slides.d.ts.map +1 -0
  80. package/dist/typescript/components/base/carousel/carousel.d.ts +16 -11
  81. package/dist/typescript/components/base/carousel/carousel.d.ts.map +1 -1
  82. package/dist/typescript/components/base/carousel/hooks/index.d.ts +0 -2
  83. package/dist/typescript/components/base/carousel/hooks/index.d.ts.map +1 -1
  84. package/dist/typescript/components/base/carousel/hooks/use-carousel-index.d.ts.map +1 -1
  85. package/dist/typescript/components/base/carousel/hooks/use-carousel-lifecycle.d.ts.map +1 -1
  86. package/dist/typescript/components/base/carousel/hooks/use-carousel-pan-responder.d.ts.map +1 -1
  87. package/dist/typescript/components/base/carousel/hooks/use-carousel-position.d.ts.map +1 -1
  88. package/dist/typescript/components/base/carousel/index.d.ts +1 -4
  89. package/dist/typescript/components/base/carousel/index.d.ts.map +1 -1
  90. package/dist/typescript/components/base/carousel/style/index.d.ts +12 -0
  91. package/dist/typescript/components/base/carousel/style/index.d.ts.map +1 -1
  92. package/dist/typescript/components/base/carousel/types.d.ts +8 -17
  93. package/dist/typescript/components/base/carousel/types.d.ts.map +1 -1
  94. package/dist/typescript/components/base/date-picker/date-picker.d.ts +4 -2
  95. package/dist/typescript/components/base/date-picker/date-picker.d.ts.map +1 -1
  96. package/dist/typescript/components/base/date-picker/date-range-picker.d.ts +12 -3
  97. package/dist/typescript/components/base/date-picker/date-range-picker.d.ts.map +1 -1
  98. package/dist/typescript/components/base/date-picker/style/index.d.ts +9 -0
  99. package/dist/typescript/components/base/date-picker/style/index.d.ts.map +1 -0
  100. package/dist/typescript/components/base/date-picker-view/date-picker-view.d.ts +1 -6
  101. package/dist/typescript/components/base/date-picker-view/date-picker-view.d.ts.map +1 -1
  102. package/dist/typescript/components/base/date-picker-view/index.d.ts +0 -2
  103. package/dist/typescript/components/base/date-picker-view/index.d.ts.map +1 -1
  104. package/dist/typescript/components/base/date-picker-view/types.d.ts +1 -1
  105. package/dist/typescript/components/base/index.d.ts +2 -0
  106. package/dist/typescript/components/base/index.d.ts.map +1 -1
  107. package/dist/typescript/components/base/picker/index.d.ts +7 -1
  108. package/dist/typescript/components/base/picker/index.d.ts.map +1 -1
  109. package/dist/typescript/components/base/picker/picker-content.d.ts +15 -0
  110. package/dist/typescript/components/base/picker/picker-content.d.ts.map +1 -0
  111. package/dist/typescript/components/base/picker/picker-context.d.ts +18 -0
  112. package/dist/typescript/components/base/picker/picker-context.d.ts.map +1 -0
  113. package/dist/typescript/components/base/picker/picker-field.d.ts +10 -0
  114. package/dist/typescript/components/base/picker/picker-field.d.ts.map +1 -0
  115. package/dist/typescript/components/base/picker/picker.d.ts +13 -11
  116. package/dist/typescript/components/base/picker/picker.d.ts.map +1 -1
  117. package/dist/typescript/components/base/picker/style/index.d.ts +0 -2
  118. package/dist/typescript/components/base/picker/style/index.d.ts.map +1 -1
  119. package/dist/typescript/components/base/picker-backup/base-picker-container.d.ts +15 -0
  120. package/dist/typescript/components/base/picker-backup/base-picker-container.d.ts.map +1 -0
  121. package/dist/typescript/components/base/picker-backup/index.d.ts +3 -0
  122. package/dist/typescript/components/base/picker-backup/index.d.ts.map +1 -0
  123. package/dist/typescript/components/base/picker-backup/picker-backup.d.ts +26 -0
  124. package/dist/typescript/components/base/picker-backup/picker-backup.d.ts.map +1 -0
  125. package/dist/typescript/components/base/picker-backup/picker-copy.d.ts +13 -0
  126. package/dist/typescript/components/base/picker-backup/picker-copy.d.ts.map +1 -0
  127. package/dist/typescript/components/base/picker-backup/picker-trigger.d.ts.map +1 -0
  128. package/dist/typescript/components/base/picker-backup/style/index.d.ts +13 -0
  129. package/dist/typescript/components/base/picker-backup/style/index.d.ts.map +1 -0
  130. package/dist/typescript/components/base/picker-backup/utils.d.ts +8 -0
  131. package/dist/typescript/components/base/picker-backup/utils.d.ts.map +1 -0
  132. package/dist/typescript/components/base/picker-view/picker-view-column.d.ts.map +1 -1
  133. package/dist/typescript/components/base/picker-view/utils/picker.d.ts +3 -3
  134. package/dist/typescript/components/base/picker-view/utils/picker.d.ts.map +1 -1
  135. package/dist/typescript/components/base/tag/index.d.ts +5 -0
  136. package/dist/typescript/components/base/tag/index.d.ts.map +1 -0
  137. package/dist/typescript/components/base/tag/style/index.d.ts +61 -0
  138. package/dist/typescript/components/base/tag/style/index.d.ts.map +1 -0
  139. package/dist/typescript/components/base/tag/tag-context.d.ts +3 -0
  140. package/dist/typescript/components/base/tag/tag-context.d.ts.map +1 -0
  141. package/dist/typescript/components/base/tag/tag-group.d.ts +4 -0
  142. package/dist/typescript/components/base/tag/tag-group.d.ts.map +1 -0
  143. package/dist/typescript/components/base/tag/tag.d.ts +4 -0
  144. package/dist/typescript/components/base/tag/tag.d.ts.map +1 -0
  145. package/dist/typescript/components/base/tag/types.d.ts +48 -0
  146. package/dist/typescript/components/base/tag/types.d.ts.map +1 -0
  147. package/package.json +1 -1
  148. package/src/components/base/carousel/carousel-indicator.tsx +80 -0
  149. package/src/components/base/carousel/carousel-slides.tsx +177 -0
  150. package/src/components/base/carousel/carousel.tsx +108 -118
  151. package/src/components/base/carousel/hooks/index.ts +0 -2
  152. package/src/components/base/carousel/hooks/use-carousel-index.ts +13 -9
  153. package/src/components/base/carousel/hooks/use-carousel-lifecycle.ts +4 -3
  154. package/src/components/base/carousel/hooks/use-carousel-pan-responder.ts +40 -16
  155. package/src/components/base/carousel/hooks/use-carousel-position.ts +4 -1
  156. package/src/components/base/carousel/index.ts +1 -3
  157. package/src/components/base/carousel/style/index.ts +12 -0
  158. package/src/components/base/carousel/types.ts +8 -21
  159. package/src/components/base/date-picker/date-picker.tsx +64 -61
  160. package/src/components/base/date-picker/date-range-picker.tsx +178 -70
  161. package/src/components/base/date-picker/style/index.ts +10 -0
  162. package/src/components/base/date-picker-view/date-picker-view.tsx +21 -68
  163. package/src/components/base/date-picker-view/index.ts +0 -2
  164. package/src/components/base/date-picker-view/types.ts +1 -1
  165. package/src/components/base/index.ts +2 -0
  166. package/src/components/base/picker/index.ts +11 -1
  167. package/src/components/base/picker/picker-content.tsx +75 -0
  168. package/src/components/base/picker/picker-context.ts +19 -0
  169. package/src/components/base/picker/picker-field.tsx +50 -0
  170. package/src/components/base/picker/picker.tsx +38 -114
  171. package/src/components/base/picker/style/index.ts +0 -2
  172. package/src/components/base/picker-backup/base-picker-container.tsx +55 -0
  173. package/src/components/base/picker-backup/index.ts +2 -0
  174. package/src/components/base/picker-backup/picker-backup.tsx +110 -0
  175. package/src/components/base/picker-backup/picker-copy.tsx +125 -0
  176. package/src/components/base/{picker → picker-backup}/picker-trigger.tsx +2 -2
  177. package/src/components/base/picker-backup/style/index.ts +14 -0
  178. package/src/components/base/picker-backup/utils.ts +62 -0
  179. package/src/components/base/picker-view/picker-view-column.tsx +20 -0
  180. package/src/components/base/picker-view/picker-view.tsx +4 -4
  181. package/src/components/base/picker-view/utils/picker.ts +3 -5
  182. package/src/components/base/tag/index.ts +5 -0
  183. package/src/components/base/tag/style/index.tsx +84 -0
  184. package/src/components/base/tag/tag-context.ts +9 -0
  185. package/src/components/base/tag/tag-group.tsx +31 -0
  186. package/src/components/base/tag/tag.tsx +50 -0
  187. package/src/components/base/tag/types.ts +71 -0
  188. package/dist/commonjs/components/base/carousel/carousel-item.js +0 -45
  189. package/dist/commonjs/components/base/carousel/constants.js +0 -25
  190. package/dist/commonjs/components/base/carousel/hooks/use-carousel-indicator.js +0 -63
  191. package/dist/commonjs/components/base/carousel/hooks/use-carousel-slides.js +0 -95
  192. package/dist/commonjs/components/base/carousel/utils.js +0 -63
  193. package/dist/commonjs/components/base/date-picker-view/date-range-picker-view.js +0 -145
  194. package/dist/commonjs/components/base/date-picker-view/date-time-picker.js +0 -39
  195. package/dist/module/components/base/carousel/carousel-item.js +0 -40
  196. package/dist/module/components/base/carousel/constants.js +0 -21
  197. package/dist/module/components/base/carousel/hooks/use-carousel-indicator.js +0 -58
  198. package/dist/module/components/base/carousel/hooks/use-carousel-slides.js +0 -90
  199. package/dist/module/components/base/carousel/utils.js +0 -55
  200. package/dist/module/components/base/date-picker-view/date-range-picker-view.js +0 -138
  201. package/dist/module/components/base/date-picker-view/date-time-picker.js +0 -34
  202. package/dist/typescript/components/base/carousel/carousel-item.d.ts +0 -26
  203. package/dist/typescript/components/base/carousel/carousel-item.d.ts.map +0 -1
  204. package/dist/typescript/components/base/carousel/constants.d.ts +0 -17
  205. package/dist/typescript/components/base/carousel/constants.d.ts.map +0 -1
  206. package/dist/typescript/components/base/carousel/hooks/use-carousel-indicator.d.ts +0 -37
  207. package/dist/typescript/components/base/carousel/hooks/use-carousel-indicator.d.ts.map +0 -1
  208. package/dist/typescript/components/base/carousel/hooks/use-carousel-slides.d.ts +0 -51
  209. package/dist/typescript/components/base/carousel/hooks/use-carousel-slides.d.ts.map +0 -1
  210. package/dist/typescript/components/base/carousel/utils.d.ts +0 -25
  211. package/dist/typescript/components/base/carousel/utils.d.ts.map +0 -1
  212. package/dist/typescript/components/base/date-picker-view/date-range-picker-view.d.ts +0 -26
  213. package/dist/typescript/components/base/date-picker-view/date-range-picker-view.d.ts.map +0 -1
  214. package/dist/typescript/components/base/date-picker-view/date-time-picker.d.ts +0 -3
  215. package/dist/typescript/components/base/date-picker-view/date-time-picker.d.ts.map +0 -1
  216. package/dist/typescript/components/base/picker/picker-trigger.d.ts.map +0 -1
  217. package/src/components/base/carousel/carousel-item.tsx +0 -35
  218. package/src/components/base/carousel/constants.ts +0 -19
  219. package/src/components/base/carousel/hooks/use-carousel-indicator.tsx +0 -84
  220. package/src/components/base/carousel/hooks/use-carousel-slides.tsx +0 -131
  221. package/src/components/base/carousel/utils.ts +0 -55
  222. package/src/components/base/date-picker-view/date-range-picker-view.tsx +0 -191
  223. package/src/components/base/date-picker-view/date-time-picker.tsx +0 -34
  224. /package/dist/typescript/components/base/{picker → picker-backup}/picker-trigger.d.ts +0 -0
@@ -8,8 +8,8 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _index = require("../../../native-provider/index.js");
10
10
  var _index2 = require("../flex/index.js");
11
- var _index3 = require("../text/index.js");
12
- var _index4 = require("./style/index.js");
11
+ var _index3 = require("../picker/style/index.js");
12
+ var _index4 = require("../text/index.js");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
15
  /** Picker 基础触发器 Props */
@@ -23,7 +23,7 @@ const PickerTrigger = ({
23
23
  onPress
24
24
  }) => {
25
25
  const theme = (0, _index.useTheme)();
26
- const styles = (0, _index4.usePickerFieldStyles)();
26
+ const styles = (0, _index3.usePickerFieldStyles)();
27
27
 
28
28
  /** 渲染触发器 */
29
29
  const renderTrigger = () => {
@@ -43,8 +43,8 @@ const PickerTrigger = ({
43
43
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.Flex, {
44
44
  align: "center",
45
45
  gap: theme.spacing.sm,
46
- style: [styles.content, disabled && styles.disabled, style],
47
- children: /*#__PURE__*/_react.default.isValidElement(displayText) ? displayText : /*#__PURE__*/(0, _jsxRuntime.jsx)(_index3.Text, {
46
+ style: [disabled && styles.disabled, style],
47
+ children: /*#__PURE__*/_react.default.isValidElement(displayText) ? displayText : /*#__PURE__*/(0, _jsxRuntime.jsx)(_index4.Text, {
48
48
  size: 14,
49
49
  color: displayText ? theme.palette.fontGray1 : theme.palette.fontGray3,
50
50
  children: displayText || placeholder
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.usePickerFieldStyles = void 0;
7
+ var _index = require("../../../../native-provider/index.js");
8
+ const usePickerFieldStyles = exports.usePickerFieldStyles = (0, _index.createThemedStyles)(theme => ({
9
+ container: {
10
+ flex: 1,
11
+ alignSelf: 'stretch',
12
+ backgroundColor: theme.palette.white,
13
+ paddingVertical: 12,
14
+ paddingHorizontal: 12
15
+ },
16
+ disabled: {
17
+ backgroundColor: theme.palette.blueGray2
18
+ }
19
+ }));
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.normalizeColumns = void 0;
7
+ /** 默认字段名 */
8
+ const DEFAULT_FIELD_NAMES = {
9
+ label: 'label',
10
+ value: 'value',
11
+ children: 'children'
12
+ };
13
+
14
+ /**
15
+ * 将自定义字段名的数据标准化为内部使用的 { label, value, children } 格式
16
+ * 如果 fieldNames 与默认值相同,则直接返回原始数据(零开销)
17
+ */
18
+ const normalizeColumns = (columns, fieldNames) => {
19
+ if (!fieldNames) return columns;
20
+ const merged = {
21
+ ...DEFAULT_FIELD_NAMES,
22
+ ...fieldNames
23
+ };
24
+
25
+ // 如果所有字段名都和默认值一样,无需转换
26
+ if (merged.label === 'label' && merged.value === 'value' && merged.children === 'children') {
27
+ return columns;
28
+ }
29
+ const normalizeOption = item => {
30
+ const normalized = {
31
+ ...item
32
+ };
33
+ if (merged.label !== 'label') {
34
+ normalized.label = item[merged.label];
35
+ }
36
+ if (merged.value !== 'value') {
37
+ normalized.value = item[merged.value];
38
+ }
39
+ if (merged.children !== 'children' && item[merged.children]) {
40
+ normalized.children = item[merged.children].map(normalizeOption);
41
+ } else if (item.children) {
42
+ normalized.children = item.children.map(normalizeOption);
43
+ }
44
+ return normalized;
45
+ };
46
+ return columns.map(column => {
47
+ if (Array.isArray(column)) {
48
+ return column.map(normalizeOption);
49
+ }
50
+ return normalizeOption(column);
51
+ });
52
+ };
53
+ exports.normalizeColumns = normalizeColumns;
@@ -52,6 +52,21 @@ const PickerViewColumn = exports.PickerViewColumn = /*#__PURE__*/(0, _react.memo
52
52
  }
53
53
  });
54
54
  const selectedIndex = (0, _column.getSelectedIndex)(options.findIndex(item => item.value === value));
55
+
56
+ /**
57
+ * 自初始化:当 value 为空或不在 options 中时,主动上报第一个可用选项
58
+ * 这从根本上解决了「不滚动就拿不到值」的问题
59
+ */
60
+ (0, _react.useEffect)(() => {
61
+ if (options.length === 0) return;
62
+ const hasValidValue = value !== undefined && value !== null && options.some(item => item.value === value);
63
+ if (!hasValidValue) {
64
+ const defaultIndex = (0, _column.findUsableOptionIndex)(options, true, 0, false);
65
+ if (defaultIndex >= 0) {
66
+ onChange?.(options[defaultIndex]);
67
+ }
68
+ }
69
+ }, [options, value, onChange]);
55
70
  (0, _react.useEffect)(() => {
56
71
  if (selectedIndex >= 0 && selectedIndex < options.length) {
57
72
  flatListRef.current?.scrollToIndex({
@@ -53,8 +53,8 @@ const PickerView = ({
53
53
  }, [dataType, columns, value]);
54
54
 
55
55
  // 保存 columnDefaultValues 到 ref,供 handleChange 使用
56
- const columnDefaultValuesRef = (0, _react.useRef)(columnDefaultValues);
57
- columnDefaultValuesRef.current = columnDefaultValues;
56
+ // const columnDefaultValuesRef = useRef<PickerValue[]>(columnDefaultValues);
57
+ // columnDefaultValuesRef.current = columnDefaultValues;
58
58
 
59
59
  /** 获取容器实际高度 */
60
60
  const handleLayout = (0, _react.useCallback)(event => {
@@ -78,7 +78,7 @@ const PickerView = ({
78
78
  case 'multiple':
79
79
  {
80
80
  const newValues = [...value];
81
- columnDefaultValuesRef.current.forEach((item, i) => {
81
+ columnDefaultValues.forEach((item, i) => {
82
82
  if ((0, _lodashEs.isNil)(newValues[i])) {
83
83
  newValues[i] = item;
84
84
  }
@@ -144,7 +144,7 @@ const PickerView = ({
144
144
  }
145
145
  if (!isControlled && !isNoDefaultValue) {
146
146
  if (dataType === 'multiple') {
147
- return columnDefaultValuesRef.current[index];
147
+ return columnDefaultValues[index];
148
148
  }
149
149
 
150
150
  // 真的没有就默认第一个选项
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {};
7
+ exports.default = void 0;
8
+ var _tag = require("./tag.js");
9
+ Object.keys(_tag).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
12
+ if (key in exports && exports[key] === _tag[key]) return;
13
+ Object.defineProperty(exports, key, {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _tag[key];
17
+ }
18
+ });
19
+ });
20
+ var _default = exports.default = _tag.Tag;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTagStyles = exports.useTagGroupStyles = void 0;
7
+ var _index = require("../../../../native-provider/index.js");
8
+ const useTagStyles = exports.useTagStyles = (0, _index.createThemedStyles)((theme, props) => {
9
+ const {
10
+ themeColor = 'primary'
11
+ } = props;
12
+ const BASE_COLOR_MAP = {
13
+ primary: {
14
+ baseColor: theme.palette.brand7,
15
+ lightColor: theme.palette.brand1
16
+ },
17
+ danger: {
18
+ baseColor: theme.palette.error6,
19
+ lightColor: theme.palette.error1
20
+ },
21
+ default: {
22
+ baseColor: theme.palette.gray6,
23
+ lightColor: theme.palette.gray2
24
+ }
25
+ };
26
+ const Color = BASE_COLOR_MAP[themeColor];
27
+ return {
28
+ tag: {},
29
+ large: {
30
+ paddingHorizontal: 8,
31
+ paddingVertical: 4,
32
+ borderRadius: 4
33
+ },
34
+ medium: {
35
+ paddingHorizontal: 6,
36
+ paddingVertical: 2,
37
+ borderRadius: 2
38
+ },
39
+ small: {
40
+ paddingHorizontal: 4,
41
+ paddingVertical: 1.5,
42
+ borderRadius: 1.5
43
+ },
44
+ disabled: {
45
+ opacity: 0.5
46
+ },
47
+ 'font-small': {
48
+ fontSize: 10
49
+ },
50
+ 'font-medium': {
51
+ fontSize: 12
52
+ },
53
+ 'font-large': {
54
+ fontSize: 14
55
+ },
56
+ filled: {
57
+ backgroundColor: Color.lightColor
58
+ },
59
+ 'text-filled': {
60
+ color: Color.baseColor
61
+ },
62
+ outlined: {
63
+ borderColor: Color.baseColor,
64
+ borderWidth: 0.5
65
+ },
66
+ 'text-outlined': {
67
+ color: Color.baseColor
68
+ },
69
+ solid: {
70
+ backgroundColor: Color.baseColor
71
+ },
72
+ 'text-solid': {
73
+ color: '#fff'
74
+ }
75
+ };
76
+ });
77
+ const useTagGroupStyles = exports.useTagGroupStyles = (0, _index.createThemedStyles)(() => {
78
+ return {
79
+ container: {
80
+ flexDirection: 'row',
81
+ alignItems: 'center',
82
+ flexWrap: 'wrap'
83
+ },
84
+ vertical: {
85
+ flexDirection: 'column',
86
+ alignItems: 'stretch'
87
+ }
88
+ };
89
+ });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TagContext = void 0;
7
+ var _react = require("react");
8
+ const TagContext = exports.TagContext = /*#__PURE__*/(0, _react.createContext)({
9
+ size: 'medium',
10
+ disabled: false
11
+ });
12
+ TagContext.displayName = 'TagContext';
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TagGroup = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _index = require("./style/index.js");
10
+ var _tagContext = require("./tag-context.js");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const TagGroup = ({
14
+ children,
15
+ direction = 'horizontal',
16
+ gap = 16,
17
+ style,
18
+ size,
19
+ disabled
20
+ }) => {
21
+ const groupStyles = (0, _index.useTagGroupStyles)();
22
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_tagContext.TagContext.Provider, {
23
+ value: {
24
+ size,
25
+ disabled
26
+ },
27
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
28
+ style: [groupStyles.container, direction === 'vertical' && groupStyles.vertical, gap > 0 && {
29
+ gap
30
+ }, style],
31
+ children: children
32
+ })
33
+ });
34
+ };
35
+ exports.TagGroup = TagGroup;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Tag = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _index = require("./../index.js");
10
+ var _index2 = require("./style/index.js");
11
+ var _tagContext = require("./tag-context.js");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ const Tag = ({
15
+ text,
16
+ variant = 'solid',
17
+ style,
18
+ theme = 'primary',
19
+ disabled: customDisabled,
20
+ size,
21
+ child,
22
+ textStyle,
23
+ onPress
24
+ }) => {
25
+ const context = (0, _react.use)(_tagContext.TagContext);
26
+ const mergedDisabled = customDisabled ?? context.disabled ?? false;
27
+ const mergedSize = size ?? context.size ?? 'medium';
28
+ const styles = (0, _index2.useTagStyles)({
29
+ variant,
30
+ themeColor: theme,
31
+ mergedSize
32
+ });
33
+ const tagStyle = (0, _react.useMemo)(() => {
34
+ return [styles.tag, styles[variant], styles[mergedSize], style];
35
+ }, [mergedSize, style, variant, styles]);
36
+ const tagNode = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
37
+ style: tagStyle,
38
+ onPress: mergedDisabled ? undefined : onPress,
39
+ disabled: mergedDisabled,
40
+ children: child ? child : /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Text, {
41
+ style: [styles[`text-${variant}`], styles[`font-${mergedSize}`], textStyle],
42
+ children: text
43
+ })
44
+ });
45
+ return tagNode;
46
+ };
47
+ exports.Tag = Tag;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ import { View } from 'react-native';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ /**
6
+ * 轮播图指示器渲染组件
7
+ *
8
+ * 负责渲染轮播图底部的指示器(小圆点),支持自定义指示器或使用默认样式。
9
+ * 当轮播项总数小于等于 1 时,不显示指示器。
10
+ *
11
+ * @param props - 组件属性配置
12
+ * @param props.indicator - 指示器配置(false 表示不显示,函数表示自定义渲染)
13
+ * @param props.indicatorProps - 指示器属性配置(颜色、样式)
14
+ * @param props.total - 轮播项总数
15
+ * @param props.current - 当前激活的索引
16
+ * @param props.activeColor - 激活状态的指示器颜色
17
+ * @param props.inactiveColor - 非激活状态的指示器颜色
18
+ * @param props.styles - 指示器样式对象
19
+ *
20
+ * @returns 渲染的指示器内容或 null
21
+ */
22
+ export const CarouselIndicator = props => {
23
+ const {
24
+ indicator,
25
+ indicatorProps,
26
+ total,
27
+ current,
28
+ activeColor,
29
+ inactiveColor,
30
+ styles
31
+ } = props;
32
+ if (indicator === false) return null;
33
+ if (total <= 1) return null;
34
+ if (typeof indicator === 'function') {
35
+ return indicator(total, current);
36
+ }
37
+ const dotActiveColor = indicatorProps?.color ?? activeColor;
38
+ return /*#__PURE__*/_jsx(View, {
39
+ style: [styles.indicatorContainer, indicatorProps?.style],
40
+ children: Array.from({
41
+ length: total
42
+ }, (_, i) => {
43
+ const isActive = i === current;
44
+ return /*#__PURE__*/_jsx(View, {
45
+ style: [styles.indicatorDot, {
46
+ backgroundColor: isActive ? dotActiveColor : inactiveColor
47
+ }, isActive && styles.indicatorDotActive]
48
+ }, i);
49
+ })
50
+ });
51
+ };
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ import { useMemoizedFn } from 'ahooks';
4
+ import { clamp } from 'lodash-es';
5
+ import { useMemo } from 'react';
6
+ import { View } from 'react-native';
7
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
8
+ /**
9
+ * 轮播图滑块渲染组件
10
+ *
11
+ * 负责渲染轮播图的滑块内容,使用 data + renderItem 模式。
12
+ * 实现虚拟渲染优化,仅渲染可见范围内的滑块,并处理循环播放时的克隆逻辑。
13
+ * 为虚拟渲染添加前后占位空间,确保滚动位置正确。
14
+ *
15
+ * @template Data - 数据项类型
16
+ * @param props - 组件属性配置
17
+ * @param props.data - 数据源数组
18
+ * @param props.renderItem - 渲染每一项的函数
19
+ * @param props.total - 轮播项总数
20
+ * @param props.virtualRange - 虚拟渲染范围(start、end、isVirtual)
21
+ * @param props.loopEnabled - 是否启用循环播放
22
+ * @param props.clonesBefore - 循环播放时前置克隆节点数量
23
+ * @param props.direction - 滑动方向
24
+ * @param props.slidePixels - 单个滑块的像素大小
25
+ * @param props.extTotal - 扩展后的总数(包含克隆节点)
26
+ *
27
+ * @returns 渲染的滑块内容或 null
28
+ */
29
+ export const CarouselSlides = props => {
30
+ const {
31
+ data,
32
+ renderItem,
33
+ total,
34
+ virtualRange,
35
+ loopEnabled,
36
+ clonesBefore,
37
+ direction,
38
+ slidePixels,
39
+ extTotal
40
+ } = props;
41
+
42
+ // 计算滑块包装器样式
43
+ const slideWrapperStyle = useMemo(() => {
44
+ return direction === 'horizontal' ? {
45
+ width: slidePixels,
46
+ height: '100%'
47
+ } : {
48
+ height: slidePixels,
49
+ width: '100%'
50
+ };
51
+ }, [direction, slidePixels]);
52
+
53
+ // 计算虚拟渲染的占位空间样式
54
+ const spacerStyles = useMemo(() => {
55
+ if (!virtualRange) return null;
56
+ const {
57
+ start,
58
+ end
59
+ } = virtualRange;
60
+ const leadingSize = start * slidePixels;
61
+ const trailingSize = (extTotal - end - 1) * slidePixels;
62
+ return {
63
+ leading: direction === 'horizontal' ? {
64
+ width: leadingSize
65
+ } : {
66
+ height: leadingSize
67
+ },
68
+ trailing: direction === 'horizontal' ? {
69
+ width: trailingSize
70
+ } : {
71
+ height: trailingSize
72
+ },
73
+ leadingSize,
74
+ trailingSize
75
+ };
76
+ }, [virtualRange, slidePixels, extTotal, direction]);
77
+ const getIndexFromExtIndex = useMemoizedFn(extIndex => {
78
+ if (!loopEnabled) return clamp(extIndex, 0, total - 1);
79
+ if (extIndex < clonesBefore) {
80
+ return ((extIndex - clonesBefore) % total + total) % total;
81
+ }
82
+ if (extIndex >= clonesBefore + total) {
83
+ return (extIndex - clonesBefore - total) % total;
84
+ }
85
+ return extIndex - clonesBefore;
86
+ });
87
+
88
+ // 渲染滑块元素
89
+ const slideElements = useMemo(() => {
90
+ if (!virtualRange) return null;
91
+ const {
92
+ start,
93
+ end
94
+ } = virtualRange;
95
+ const elements = [];
96
+ const getElementForExtIndex = extIndex => {
97
+ const logicalIndex = loopEnabled ? getIndexFromExtIndex(extIndex) : clamp(extIndex, 0, total - 1);
98
+ const item = data[logicalIndex];
99
+ return renderItem(item, logicalIndex);
100
+ };
101
+ for (let extIndex = start; extIndex <= end; extIndex += 1) {
102
+ const element = getElementForExtIndex(extIndex);
103
+ if (!element) continue;
104
+ elements.push(/*#__PURE__*/_jsx(View, {
105
+ style: slideWrapperStyle,
106
+ children: element
107
+ }, extIndex));
108
+ }
109
+ return elements;
110
+ }, [virtualRange, loopEnabled, total, data, renderItem, slideWrapperStyle, getIndexFromExtIndex]);
111
+
112
+ // 前置占位空间
113
+ const leadSpacer = useMemo(() => {
114
+ if (!virtualRange?.isVirtual || !spacerStyles || spacerStyles.leadingSize <= 0) {
115
+ return null;
116
+ }
117
+ return /*#__PURE__*/_jsx(View, {
118
+ style: spacerStyles.leading
119
+ });
120
+ }, [virtualRange?.isVirtual, spacerStyles]);
121
+
122
+ // 后置占位空间
123
+ const trailSpacer = useMemo(() => {
124
+ if (!virtualRange?.isVirtual || !spacerStyles || spacerStyles.trailingSize <= 0) {
125
+ return null;
126
+ }
127
+ return /*#__PURE__*/_jsx(View, {
128
+ style: spacerStyles.trailing
129
+ });
130
+ }, [virtualRange?.isVirtual, spacerStyles]);
131
+ if (!virtualRange) return null;
132
+ return /*#__PURE__*/_jsxs(_Fragment, {
133
+ children: [leadSpacer, slideElements, trailSpacer]
134
+ });
135
+ };