@beppla/tapas-ui 1.0.67 → 1.0.68

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 (255) hide show
  1. package/commonjs/AnimatedNavItem/index.js +15 -9
  2. package/commonjs/BarChart/BarChart.js +90 -112
  3. package/commonjs/BarChart/BarChart.js.map +1 -1
  4. package/commonjs/Button/Button.js +78 -96
  5. package/commonjs/Calendar/Calendar.base.js +190 -162
  6. package/commonjs/Calendar/Calendar.base.js.map +2 -1
  7. package/commonjs/Calendar/Calendar.js +102 -86
  8. package/commonjs/Calendar/Calendar.js.map +1 -2
  9. package/commonjs/Calendar/ConcreteTimeSelector.js +271 -220
  10. package/commonjs/Calendar/CustomRange.js +324 -271
  11. package/commonjs/Calendar/CustomRange.js.map +2 -1
  12. package/commonjs/Calendar/MonthSelector.js.map +2 -1
  13. package/commonjs/Calendar/TimeSelector.js +274 -223
  14. package/commonjs/Calendar/TimeSelector.js.map +2 -1
  15. package/commonjs/Calendar/WeekDaySelector.js.map +2 -1
  16. package/commonjs/Calendar/helper.js +68 -68
  17. package/commonjs/Calendar/local.js +2 -2
  18. package/commonjs/Calendar/local.js.map +1 -2
  19. package/commonjs/Calendar/types.js +11 -11
  20. package/commonjs/Card/Card.js +150 -159
  21. package/commonjs/Card/Card.js.map +1 -2
  22. package/commonjs/CheckBox/GroupCheckBox.js +80 -67
  23. package/commonjs/CheckBox/GroupCheckBox.js.map +1 -2
  24. package/commonjs/CircularProgress/CircularProgress.js +0 -11
  25. package/commonjs/Collapsible/Collapsible.js +102 -55
  26. package/commonjs/Collapsible/Collapsible.js.map +1 -2
  27. package/commonjs/DashboardCard/DashboardCard.js +94 -74
  28. package/commonjs/DashboardCard/DashboardCard.js.map +1 -2
  29. package/commonjs/DataCell/DataCell.js +205 -259
  30. package/commonjs/DataCell/DataCell.js.map +1 -1
  31. package/commonjs/DataCell/index.js.map +1 -2
  32. package/commonjs/DataTable/DataTable.js +136 -141
  33. package/commonjs/DataTable/DataTable.js.map +2 -1
  34. package/commonjs/DeviceSelectionModal/DeviceSelectionModal.js +244 -242
  35. package/commonjs/DeviceSelectionModal/DeviceSelectionModal.js.map +2 -1
  36. package/commonjs/DraggableFlatList/DraggableFlatList.js +10 -12
  37. package/commonjs/DraggableFlatList/DraggableFlatList.js.map +1 -1
  38. package/commonjs/Drawer/Drawer.js +140 -159
  39. package/commonjs/Drawer/Drawer.js.map +1 -2
  40. package/commonjs/Dropdown/InputDropdown.js +123 -114
  41. package/commonjs/Dropdown/InputDropdown.js.map +1 -2
  42. package/commonjs/ExternalLink/ExternalLink.js +50 -58
  43. package/commonjs/ExternalLink/ExternalLink.js.map +2 -1
  44. package/commonjs/Gantt/Accessories.js +168 -135
  45. package/commonjs/Gantt/Accessories.js.map +2 -1
  46. package/commonjs/Gantt/GanttInnerElementType.js +102 -93
  47. package/commonjs/Gantt/GanttInnerElementType.js.map +1 -2
  48. package/commonjs/Gantt/types.js.map +2 -1
  49. package/commonjs/Grid/FixedSizeGrid.js +76 -82
  50. package/commonjs/Grid/Grid.base.js +374 -357
  51. package/commonjs/Grid/Grid.base.js.map +1 -1
  52. package/commonjs/Grid/StaticFixedSizeGrid.js.map +1 -2
  53. package/commonjs/Grid/VariableSizeGrid.js +113 -120
  54. package/commonjs/Grid/VariableSizeGrid.js.map +1 -2
  55. package/commonjs/Grid/helper.js.map +1 -2
  56. package/commonjs/Grid/timer.js +5 -9
  57. package/commonjs/Grid/timer.js.map +2 -1
  58. package/commonjs/Icons/TapasIconExpo.js +94 -101
  59. package/commonjs/Icons/TapasIconExpo.js.map +2 -1
  60. package/commonjs/Icons/fontLoader.js.map +1 -2
  61. package/commonjs/Icons/smartFontLoader.js +222 -266
  62. package/commonjs/Image/Image.js +96 -106
  63. package/commonjs/Image/Image.js.map +2 -1
  64. package/commonjs/Image/PreviewImg.js +63 -85
  65. package/commonjs/Layout/DrawerContext.js +35 -0
  66. package/commonjs/Layout/DrawerContext.js.map +1 -0
  67. package/commonjs/Layout/index.js +34 -38
  68. package/commonjs/Layout/index.js.map +2 -1
  69. package/commonjs/LineChart/LineChart.js +144 -126
  70. package/commonjs/Loading/Loading.js.map +0 -1
  71. package/commonjs/MessageBox/MessageBox.js +126 -127
  72. package/commonjs/MessageBox/MessageBox.js.map +1 -2
  73. package/commonjs/MultiSelector/MultiSelector.js.map +2 -1
  74. package/commonjs/MultiSelector/index.js +8 -3
  75. package/commonjs/MultiSelector/index.js.map +1 -1
  76. package/commonjs/Navigation/Navigation.js.map +0 -1
  77. package/commonjs/Notification/Notification.js.map +1 -2
  78. package/commonjs/Notification/index.js +8 -6
  79. package/commonjs/Notification/index.js.map +1 -2
  80. package/commonjs/NumericInput/NumericInput.js +0 -23
  81. package/commonjs/NumericInput/NumericInput.js.map +0 -1
  82. package/commonjs/Overlay/Overlay.js +30 -29
  83. package/commonjs/Overlay/Overlay.js.map +1 -2
  84. package/commonjs/Pagination/Pagination.js +139 -120
  85. package/commonjs/Pagination/Pagination.js.map +1 -2
  86. package/commonjs/PieChart/PieChart.js +97 -74
  87. package/commonjs/PieChart/PieChart.js.map +1 -2
  88. package/commonjs/PieChart/index.js +4 -3
  89. package/commonjs/PieChart/index.js.map +1 -2
  90. package/commonjs/Popover/Popover.js +137 -112
  91. package/commonjs/Popover/Popover.js.map +2 -1
  92. package/commonjs/Progress/Progress.js.map +1 -0
  93. package/commonjs/Quantity/Quantity.js +122 -117
  94. package/commonjs/Quantity/index.js +3 -0
  95. package/commonjs/Quantity/index.js.map +1 -0
  96. package/commonjs/RadioButton/RadioButton.js +46 -94
  97. package/commonjs/RadioButton/RadioButton.js.map +1 -1
  98. package/commonjs/ReasonModal/ReasonModal.js +122 -125
  99. package/commonjs/ReasonModal/ReasonModal.js.map +1 -2
  100. package/commonjs/ReasonModal/index.js +15 -9
  101. package/commonjs/ReasonModal/index.js.map +2 -1
  102. package/commonjs/ScanButton/ScanButton.js +64 -50
  103. package/commonjs/ScanButton/ScanButton.js.map +2 -1
  104. package/commonjs/SearchInput/index.js +8 -6
  105. package/commonjs/SearchInput/index.js.map +1 -2
  106. package/commonjs/Shell/Shell.js +92 -84
  107. package/commonjs/Shell/Shell.js.map +1 -2
  108. package/commonjs/StatisticCard/StatisticCard.js +47 -41
  109. package/commonjs/StatisticCard/StatisticCard.js.map +2 -1
  110. package/commonjs/Steps/Steps.js +43 -39
  111. package/commonjs/Steps/Steps.js.map +1 -1
  112. package/commonjs/TabTitle/TabTitle.js.map +2 -1
  113. package/commonjs/TableColumnHeader/TableColumnHeader.js +140 -134
  114. package/commonjs/TableColumnHeader/index.js +15 -9
  115. package/commonjs/TableColumnHeader/index.js.map +2 -1
  116. package/commonjs/Task/type.js.map +1 -2
  117. package/commonjs/TextArea/TextArea.js +82 -0
  118. package/commonjs/TextArea/TextArea.js.map +1 -0
  119. package/commonjs/Theme/ThemeProvider.js.map +2 -1
  120. package/commonjs/Theme/defaultTheme.js +18 -10
  121. package/commonjs/Theme/defaultTheme.js.map +1 -1
  122. package/commonjs/Toast/Toast.js +41 -94
  123. package/commonjs/Toast/Toast.js.map +1 -1
  124. package/commonjs/UserSwitcher/index.js +14 -8
  125. package/commonjs/UserSwitcher/index.js.map +2 -1
  126. package/commonjs/common.js +4 -5
  127. package/commonjs/common.js.map +1 -2
  128. package/commonjs/index.js +426 -336
  129. package/commonjs/index.js.map +2 -1
  130. package/module/Alert/Alert.js +51 -71
  131. package/module/Alert/Alert.js.map +1 -2
  132. package/module/AnimatedNavItem/index.js +3 -7
  133. package/module/AnimatedNavItem/index.js.map +2 -1
  134. package/module/BarChart/index.js.map +2 -1
  135. package/module/Button/Button.js +80 -71
  136. package/module/Button/Button.js.map +1 -2
  137. package/module/Button/ButtonGroup.js +129 -120
  138. package/module/Button/ButtonGroup.js.map +2 -1
  139. package/module/Calendar/Calendar.js +80 -76
  140. package/module/Calendar/ConcreteTimeSelector.js.map +1 -2
  141. package/module/Calendar/CustomRange.js +258 -357
  142. package/module/Calendar/DaySelector.js +95 -118
  143. package/module/Calendar/DaySelector.js.map +1 -2
  144. package/module/Calendar/TimeSelector.js +215 -307
  145. package/module/Calendar/WeekDaySelector.js +98 -122
  146. package/module/Calendar/helper.js +74 -74
  147. package/module/Calendar/helper.js.map +1 -2
  148. package/module/Calendar/types.js.map +2 -1
  149. package/module/Card/Card.js +0 -133
  150. package/module/Card/Card.js.map +0 -1
  151. package/module/CheckBox/CheckBox.js +93 -89
  152. package/module/CheckBox/CheckBox.js.map +1 -2
  153. package/module/CheckBox/CheckBoxItem.js +69 -84
  154. package/module/CheckBox/CheckBoxItem.js.map +1 -2
  155. package/module/Collapsible/Collapsible.js +66 -0
  156. package/module/Collapsible/Collapsible.js.map +1 -0
  157. package/module/DashboardCard/DashboardCard.js +80 -88
  158. package/module/DashboardCard/DashboardCard.js.map +2 -1
  159. package/module/DataCell/DataCell.js +311 -224
  160. package/module/DataTable/DataTable.js +0 -100
  161. package/module/DataTable/index.js +4 -2
  162. package/module/DeviceSelectionModal/DeviceSelectionModal.js +0 -124
  163. package/module/DeviceSelectionModal/DeviceSelectionModal.js.map +0 -1
  164. package/module/Dropdown/CustomDropdown.js +212 -160
  165. package/module/Dropdown/CustomDropdown.js.map +1 -1
  166. package/module/Dropdown/Dropdown.js +484 -408
  167. package/module/Dropdown/Dropdown.js.map +2 -1
  168. package/module/Dropdown/InputDropdown.js +116 -134
  169. package/module/Dropdown/InputDropdown.js.map +1 -2
  170. package/module/Gantt/Accessories.js +176 -149
  171. package/module/Gantt/Accessories.js.map +1 -1
  172. package/module/Gantt/Gantt.js.map +1 -2
  173. package/module/Gantt/types.js.map +2 -1
  174. package/module/Grid/FixedSizeGrid.js +80 -86
  175. package/module/Grid/FixedSizeGrid.js.map +1 -2
  176. package/module/Grid/Grid.base.js +339 -401
  177. package/module/Grid/Grid.base.js.map +1 -2
  178. package/module/Grid/VariableSizeGrid.js +121 -118
  179. package/module/Grid/VariableSizeGrid.js.map +2 -1
  180. package/module/Grid/helper.js.map +1 -2
  181. package/module/Grid/timer.js.map +2 -1
  182. package/module/HelloWave/HelloWave.js +43 -53
  183. package/module/HelloWave/HelloWave.js.map +1 -2
  184. package/module/Icons/TapasIcon.js +120 -96
  185. package/module/Icons/TapasIconExpo.js.map +1 -2
  186. package/module/Icons/index.js +9 -10
  187. package/module/Icons/index.js.map +2 -1
  188. package/module/Icons/smartFontLoader.js.map +1 -2
  189. package/module/Image/PreviewImg.js +76 -79
  190. package/module/Input/Input.js +34 -112
  191. package/module/Input/Input.js.map +1 -1
  192. package/module/Layout/DrawerContext.js +18 -29
  193. package/module/Layout/DrawerContext.js.map +1 -2
  194. package/module/Layout/Layout.js.map +1 -2
  195. package/module/Layout/ToastContext.js.map +1 -2
  196. package/module/Layout/index.js +14 -15
  197. package/module/LineChart/LineChart.js.map +1 -2
  198. package/module/ListItem/ListItem.js +98 -105
  199. package/module/ListItem/ListItem.js.map +2 -1
  200. package/module/Loading/Loading.js +67 -65
  201. package/module/Loading/Loading.js.map +1 -1
  202. package/module/MessageBox/MessageBox.js +137 -98
  203. package/module/MessageBox/MessageBox.js.map +2 -1
  204. package/module/MultiSelector/MultiSelector.js +229 -320
  205. package/module/MultiSelector/MultiSelector.js.map +1 -2
  206. package/module/MultiSelector/index.js +3 -2
  207. package/module/MultiSelector/index.js.map +1 -2
  208. package/module/Navigation/Navigation.js.map +1 -0
  209. package/module/Notification/index.js +0 -16
  210. package/module/Notification/index.js.map +0 -1
  211. package/module/NumericInput/NumericInput.js.map +0 -1
  212. package/module/Overlay/Overlay.js +0 -29
  213. package/module/Pagination/Pagination.js +139 -134
  214. package/module/Pagination/Pagination.js.map +2 -1
  215. package/module/PieChart/PieChart.js.map +2 -1
  216. package/module/Popover/Popover.js +117 -147
  217. package/module/Popover/Popover.js.map +1 -2
  218. package/module/Quantity/Quantity.js +112 -129
  219. package/module/Quantity/index.js +16 -0
  220. package/module/Quantity/index.js.map +1 -0
  221. package/module/ReasonModal/index.js +0 -27
  222. package/module/ScanButton/ScanButton.js +0 -45
  223. package/module/SearchInput/index.js +3 -2
  224. package/module/SearchInput/index.js.map +1 -2
  225. package/module/SheetTitle/SheetTitle.js +35 -40
  226. package/module/SheetTitle/SheetTitle.js.map +1 -2
  227. package/module/Shell/Shell.js +79 -92
  228. package/module/Shell/Shell.js.map +1 -2
  229. package/module/Shell/styles.js +8 -8
  230. package/module/Shell/styles.js.map +1 -2
  231. package/module/StatisticCard/StatisticCard.js +79 -48
  232. package/module/StatisticCard/StatisticCard.js.map +2 -1
  233. package/module/TabTitle/TabTitle.js.map +1 -2
  234. package/module/TableColumnHeader/TableColumnHeader.js.map +2 -1
  235. package/module/TableColumnHeader/index.js +3 -8
  236. package/module/Tag/Tag.js +87 -72
  237. package/module/Tag/Tag.js.map +2 -1
  238. package/module/Task/Task.js +108 -0
  239. package/module/Task/type.js.map +2 -1
  240. package/module/Text/Text.js +70 -80
  241. package/module/Text/Text.js.map +2 -1
  242. package/module/TextArea/TextArea.js +0 -119
  243. package/module/TextArea/TextArea.js.map +0 -1
  244. package/module/Theme/ThemeProvider.js.map +2 -1
  245. package/module/Theme/defaultTheme.js +0 -20
  246. package/module/Theme/defaultTheme.js.map +0 -1
  247. package/module/Timeline/Timeline.js +0 -54
  248. package/module/Timeline/Timeline.js.map +0 -1
  249. package/module/UserSwitcher/UserSwitcher.js +171 -130
  250. package/module/UserSwitcher/index.js +3 -5
  251. package/module/UserSwitcher/index.js.map +2 -1
  252. package/module/common.js +8 -7
  253. package/module/common.js.map +1 -2
  254. package/module/index.js +131 -120
  255. package/package.json +2 -2
@@ -1,413 +1,318 @@
1
- "use strict";
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React, { useEffect, useState, useRef } from 'react';
3
+ import { Pressable, ScrollView, Modal, TouchableOpacity, Text, View, Dimensions, Animated } from 'react-native';
4
+ import CustomDropdown from "./CustomDropdown";
5
+ import CustomListItem from "../ListItem/ListItem";
6
+ import { makeStyles, SearchBar, withTheme, useTheme } from '@rneui/themed';
7
+ import TapasIcon from '../Icons/TapasIcon';
8
+ export * from "./CustomDropdown";
2
9
 
3
- var __assign = this && this.__assign || function () {
4
- __assign = Object.assign || function (t) {
5
- for (var s, i = 1, n = arguments.length; i < n; i++) {
6
- s = arguments[i];
7
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = {
18
- enumerable: true,
19
- get: function () {
20
- return m[k];
21
- }
22
- };
23
- }
24
- Object.defineProperty(o, k2, desc);
25
- } : function (o, m, k, k2) {
26
- if (k2 === undefined) k2 = k;
27
- o[k2] = m[k];
28
- });
29
- var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
30
- Object.defineProperty(o, "default", {
31
- enumerable: true,
32
- value: v
33
- });
34
- } : function (o, v) {
35
- o["default"] = v;
36
- });
37
- var __importStar = this && this.__importStar || function () {
38
- var ownKeys = function (o) {
39
- ownKeys = Object.getOwnPropertyNames || function (o) {
40
- var ar = [];
41
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
- return ar;
43
- };
44
- return ownKeys(o);
45
- };
46
- return function (mod) {
47
- if (mod && mod.__esModule) return mod;
48
- var result = {};
49
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
- __setModuleDefault(result, mod);
51
- return result;
52
- };
53
- }();
54
- var __exportStar = this && this.__exportStar || function (m, exports) {
55
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
56
- };
57
- var __rest = this && this.__rest || function (s, e) {
58
- var t = {};
59
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
60
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
61
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
62
- }
63
- return t;
64
- };
65
- var __importDefault = this && this.__importDefault || function (mod) {
66
- return mod && mod.__esModule ? mod : {
67
- "default": mod
68
- };
69
- };
70
- Object.defineProperty(exports, "__esModule", {
71
- value: true
72
- });
73
- exports.TapasDropdownModal = void 0;
74
- var react_1 = __importStar(require("react"));
75
- var react_native_1 = require("react-native");
76
- var CustomDropdown_1 = __importDefault(require("./CustomDropdown"));
77
- var ListItem_1 = __importDefault(require("../ListItem/ListItem"));
78
- var themed_1 = require("@rneui/themed");
79
- var TapasIcon_1 = __importDefault(require("../Icons/TapasIcon"));
80
- __exportStar(require("./CustomDropdown"), exports);
81
- var useStyles = (0, themed_1.makeStyles)(function (theme) {
82
- return {
83
- searchBarContainer: {
84
- backgroundColor: theme.colors.white,
85
- height: 50,
86
- padding: 0
87
- },
88
- inputContainer: {
89
- backgroundColor: theme.colors.white,
90
- height: 48,
91
- borderTopWidth: 0,
92
- padding: 0
93
- },
94
- inputStyle: {
95
- height: 24,
96
- fontFamily: theme.fonts.fontFamily,
97
- fontSize: theme.fonts.sizeM,
98
- fontWeight: theme.fonts.weightR,
99
- color: theme.colors.colorTextPrimary,
100
- marginLeft: 0
101
- },
102
- leftIconContainer: {
103
- height: 24,
104
- marginLeft: 16
105
- },
106
- iconStyle: {
107
- color: theme.colors.secondary
108
- },
109
- // Modal 模式样式
110
- modalContainer: {
111
- display: "flex",
112
- flexGrow: 0,
113
- flexShrink: 0,
114
- flexBasis: "auto",
115
- flexDirection: "column",
116
- justifyContent: "flex-start",
117
- // 改为顶部对齐,与 CustomDropdown 保持一致
118
- alignItems: "stretch",
119
- // 改为拉伸对齐,与 CustomDropdown 保持一致
120
- width: "100%"
121
- },
122
- modalIcon: {
123
- color: theme.colors.primary
124
- },
125
- modalOptionsCon: {
126
- position: "absolute",
127
- display: "flex",
128
- flexDirection: "column",
129
- overflow: "hidden",
130
- backgroundColor: theme.colors.white,
131
- paddingTop: 12,
132
- paddingBottom: 12,
133
- borderRadius: 12,
134
- maxHeight: 224,
135
- shadowColor: "#000",
136
- shadowOffset: {
137
- width: 0,
138
- height: 4
139
- },
140
- shadowOpacity: 0.15,
141
- shadowRadius: 12,
142
- elevation: 8
143
- },
144
- modalOptionsScrollView: {
145
- flex: 1,
146
- display: "flex"
147
- },
148
- modalOptionsInner: {
149
- display: "flex",
150
- flexDirection: "column",
151
- justifyContent: "flex-start",
152
- gap: 8
153
- },
154
- modalOption: {
155
- display: "flex",
156
- flexDirection: "row",
157
- width: "100%",
158
- overflow: "hidden",
159
- justifyContent: "space-between",
160
- minHeight: 40,
161
- alignItems: "center"
162
- },
163
- modalOptionText: {
164
- marginLeft: 16,
165
- marginRight: 16,
166
- fontSize: 14,
167
- fontWeight: "400",
168
- color: theme.colors.primary,
169
- alignSelf: "center",
170
- overflow: "hidden",
171
- flex: 1
172
- },
173
- modalNoOptions: {
174
- width: "100%",
175
- textAlign: "center",
176
- color: theme.colors.grey2,
177
- marginLeft: 16,
178
- marginRight: 16
179
- },
180
- modalBtn: {
181
- display: "flex",
182
- flexDirection: "row",
183
- justifyContent: "space-between",
184
- alignItems: "center",
185
- // 确保垂直居中对齐
186
- minHeight: 40,
187
- width: "100%",
188
- overflow: "hidden",
189
- position: "relative"
190
- },
191
- modalSolidBtn: {
192
- borderWidth: 1,
193
- borderRadius: 12,
194
- borderStyle: "solid",
195
- borderColor: theme.colors.grey2,
196
- paddingLeft: 16,
197
- paddingRight: 12,
198
- paddingTop: 9,
199
- paddingBottom: 9,
200
- alignItems: "center" // 确保垂直居中对齐
201
- },
202
- alignCenter: {
203
- alignSelf: "center"
204
- },
205
- labelCon: {
206
- position: "absolute",
207
- left: 16,
208
- paddingLeft: 1,
209
- paddingRight: 1,
210
- display: "flex",
211
- flexDirection: "row",
212
- zIndex: 30
213
- },
214
- labelInner: {
215
- display: "flex",
216
- flexDirection: "row"
217
- },
218
- labelText: {
219
- fontSize: 12,
220
- color: theme.colors.primary
221
- },
222
- required: {
223
- fontSize: 12,
224
- fontWeight: "400",
225
- color: theme.colors.error || "#FF4444",
226
- marginLeft: 1
227
- },
228
- msg: {
229
- display: "flex",
230
- flexDirection: "row",
231
- paddingLeft: 16,
232
- paddingRight: 8,
233
- marginTop: 1,
234
- width: "100%",
235
- height: 15
236
- },
237
- msgText: {
238
- fontSize: 12,
239
- fontWeight: "400",
240
- color: theme.colors.secondary
10
+ // 新增接口定义
11
+
12
+ //@ts-ignore
13
+
14
+ const useStyles = makeStyles(theme => ({
15
+ searchBarContainer: {
16
+ backgroundColor: theme.colors.white,
17
+ height: 50,
18
+ padding: 0
19
+ },
20
+ inputContainer: {
21
+ backgroundColor: theme.colors.white,
22
+ height: 48,
23
+ borderTopWidth: 0,
24
+ padding: 0
25
+ },
26
+ inputStyle: {
27
+ height: 24,
28
+ fontFamily: theme.fonts.fontFamily,
29
+ fontSize: theme.fonts.sizeM,
30
+ fontWeight: theme.fonts.weightR,
31
+ color: theme.colors.colorTextPrimary,
32
+ marginLeft: 0
33
+ },
34
+ leftIconContainer: {
35
+ height: 24,
36
+ marginLeft: 16
37
+ },
38
+ iconStyle: {
39
+ color: theme.colors.secondary
40
+ },
41
+ // Modal 模式样式
42
+ modalContainer: {
43
+ display: "flex",
44
+ flexGrow: 0,
45
+ flexShrink: 0,
46
+ flexBasis: "auto",
47
+ flexDirection: "column",
48
+ justifyContent: "flex-start",
49
+ // 改为顶部对齐,与 CustomDropdown 保持一致
50
+ alignItems: "stretch",
51
+ // 改为拉伸对齐,与 CustomDropdown 保持一致
52
+ width: "100%"
53
+ },
54
+ modalIcon: {
55
+ color: theme.colors.primary
56
+ },
57
+ modalOptionsCon: {
58
+ position: "absolute",
59
+ display: "flex",
60
+ flexDirection: "column",
61
+ overflow: "hidden",
62
+ backgroundColor: theme.colors.white,
63
+ paddingTop: 12,
64
+ paddingBottom: 12,
65
+ borderRadius: 12,
66
+ maxHeight: 224,
67
+ shadowColor: "#000",
68
+ shadowOffset: {
69
+ width: 0,
70
+ height: 4
241
71
  },
242
- extendBtnCon: {
243
- display: "flex",
244
- flexDirection: "row",
245
- justifyContent: "center",
246
- height: 40,
247
- overflow: "hidden",
248
- backgroundColor: theme.colors.white,
249
- borderRadius: 20,
250
- gap: 8,
251
- alignItems: "center",
252
- shadowColor: "#000",
253
- shadowOffset: {
254
- width: 0,
255
- height: 4
256
- },
257
- shadowOpacity: 0.15,
258
- shadowRadius: 12,
259
- elevation: 8
72
+ shadowOpacity: 0.15,
73
+ shadowRadius: 12,
74
+ elevation: 8
75
+ },
76
+ modalOptionsScrollView: {
77
+ flex: 1,
78
+ display: "flex"
79
+ },
80
+ modalOptionsInner: {
81
+ display: "flex",
82
+ flexDirection: "column",
83
+ justifyContent: "flex-start",
84
+ gap: 8
85
+ },
86
+ modalOption: {
87
+ display: "flex",
88
+ flexDirection: "row",
89
+ width: "100%",
90
+ overflow: "hidden",
91
+ justifyContent: "space-between",
92
+ minHeight: 40,
93
+ alignItems: "center"
94
+ },
95
+ modalOptionText: {
96
+ marginLeft: 16,
97
+ marginRight: 16,
98
+ fontSize: 14,
99
+ fontWeight: "400",
100
+ color: theme.colors.primary,
101
+ alignSelf: "center",
102
+ overflow: "hidden",
103
+ flex: 1
104
+ },
105
+ modalNoOptions: {
106
+ width: "100%",
107
+ textAlign: "center",
108
+ color: theme.colors.grey2,
109
+ marginLeft: 16,
110
+ marginRight: 16
111
+ },
112
+ modalBtn: {
113
+ display: "flex",
114
+ flexDirection: "row",
115
+ justifyContent: "space-between",
116
+ alignItems: "center",
117
+ // 确保垂直居中对齐
118
+ minHeight: 40,
119
+ width: "100%",
120
+ overflow: "hidden",
121
+ position: "relative"
122
+ },
123
+ modalSolidBtn: {
124
+ borderWidth: 1,
125
+ borderRadius: 12,
126
+ borderStyle: "solid",
127
+ borderColor: theme.colors.grey2,
128
+ paddingLeft: 16,
129
+ paddingRight: 12,
130
+ paddingTop: 9,
131
+ paddingBottom: 9,
132
+ alignItems: "center" // 确保垂直居中对齐
133
+ },
134
+ alignCenter: {
135
+ alignSelf: "center"
136
+ },
137
+ labelCon: {
138
+ position: "absolute",
139
+ left: 16,
140
+ paddingLeft: 1,
141
+ paddingRight: 1,
142
+ display: "flex",
143
+ flexDirection: "row",
144
+ zIndex: 30
145
+ },
146
+ labelInner: {
147
+ display: "flex",
148
+ flexDirection: "row"
149
+ },
150
+ labelText: {
151
+ fontSize: 12,
152
+ color: theme.colors.primary
153
+ },
154
+ required: {
155
+ fontSize: 12,
156
+ fontWeight: "400",
157
+ color: theme.colors.error || "#FF4444",
158
+ marginLeft: 1
159
+ },
160
+ msg: {
161
+ display: "flex",
162
+ flexDirection: "row",
163
+ paddingLeft: 16,
164
+ paddingRight: 8,
165
+ marginTop: 1,
166
+ width: "100%",
167
+ height: 15
168
+ },
169
+ msgText: {
170
+ fontSize: 12,
171
+ fontWeight: "400",
172
+ color: theme.colors.secondary
173
+ },
174
+ extendBtnCon: {
175
+ display: "flex",
176
+ flexDirection: "row",
177
+ justifyContent: "center",
178
+ height: 40,
179
+ overflow: "hidden",
180
+ backgroundColor: theme.colors.white,
181
+ borderRadius: 20,
182
+ gap: 8,
183
+ alignItems: "center",
184
+ shadowColor: "#000",
185
+ shadowOffset: {
186
+ width: 0,
187
+ height: 4
260
188
  },
261
- extendBtnText: {
262
- fontSize: 14,
263
- fontWeight: "400",
264
- color: theme.colors.primary
265
- }
266
- };
267
- });
268
- var Dropdown = function (_a) {
269
- var _b;
270
- var value = _a.value,
271
- _c = _a.prefix,
272
- prefix = _c === void 0 ? '' : _c,
273
- options = _a.options,
274
- onChange = _a.onChange,
275
- width = _a.width,
276
- subWidth = _a.subWidth,
277
- _d = _a.subHeight,
278
- subHeight = _d === void 0 ? 150 : _d,
279
- isVisible = _a.isVisible,
280
- onSearchChange = _a.onSearchChange,
281
- _e = _a.type,
282
- type = _e === void 0 ? 'option' : _e,
283
- // 新增 Modal 模式相关属性
284
- _f = _a.useModal,
285
- // 新增 Modal 模式相关属性
286
- useModal = _f === void 0 ? false : _f,
287
- _g = _a.dropdownItems,
288
- dropdownItems = _g === void 0 ? [] : _g,
289
- selected = _a.selected,
290
- _h = _a.showSelectedValue,
291
- showSelectedValue = _h === void 0 ? false : _h,
292
- _j = _a.dropdownType,
293
- dropdownType = _j === void 0 ? "clear" : _j,
294
- _k = _a.arrowIcon,
295
- _arrowIcon = _k === void 0 ? false : _k,
296
- onSelect = _a.onSelect,
297
- backgroundColor = _a.backgroundColor,
298
- labelColor = _a.labelColor,
299
- _l = _a.state,
300
- state = _l === void 0 ? "normal" : _l,
301
- stateMsg = _a.stateMsg,
302
- _m = _a.showCheckedStatusInList,
303
- showCheckedStatusInList = _m === void 0 ? false : _m,
304
- _o = _a.showStateMsg,
305
- showStateMsg = _o === void 0 ? false : _o,
306
- _p = _a.offsetWidth,
307
- offsetWidth = _p === void 0 ? 0 : _p,
308
- extendBtn = _a.extendBtn,
309
- extendBtnIcon = _a.extendBtnIcon,
310
- emptyText = _a.emptyText,
311
- onExtendBtnPress = _a.onExtendBtnPress,
312
- _q = _a.noLabelAnim,
313
- noLabelAnim = _q === void 0 ? false : _q,
314
- _r = _a.radius,
315
- radius = _r === void 0 ? 12 : _r,
316
- modalVisible = _a.modalVisible,
317
- customPopoverContent = _a.customPopoverContent,
318
- setModalVisible = _a.setModalVisible,
319
- iconStyle = _a.iconStyle,
320
- label = _a.label,
321
- required = _a.required,
322
- testID = _a.testID,
323
- props = __rest(_a, ["value", "prefix", "options", "onChange", "width", "subWidth", "subHeight", "isVisible", "onSearchChange", "type", "useModal", "dropdownItems", "selected", "showSelectedValue", "dropdownType", "arrowIcon", "onSelect", "backgroundColor", "labelColor", "state", "stateMsg", "showCheckedStatusInList", "showStateMsg", "offsetWidth", "extendBtn", "extendBtnIcon", "emptyText", "onExtendBtnPress", "noLabelAnim", "radius", "modalVisible", "customPopoverContent", "setModalVisible", "iconStyle", "label", "required", "testID"]);
324
- var styles = useStyles(props);
325
- var theme = (0, themed_1.useTheme)();
326
- var _s = react_1.default.useState(value),
327
- selected_old = _s[0],
328
- selectedItem = _s[1];
329
- var searchRef = react_1.default.useRef(null);
330
- var _t = (0, react_1.useState)(''),
331
- search = _t[0],
332
- setSearch = _t[1];
189
+ shadowOpacity: 0.15,
190
+ shadowRadius: 12,
191
+ elevation: 8
192
+ },
193
+ extendBtnText: {
194
+ fontSize: 14,
195
+ fontWeight: "400",
196
+ color: theme.colors.primary
197
+ }
198
+ }));
199
+ const Dropdown = ({
200
+ value,
201
+ prefix = '',
202
+ options,
203
+ onChange,
204
+ width,
205
+ subWidth,
206
+ subHeight = 150,
207
+ isVisible,
208
+ onSearchChange,
209
+ type = 'option',
210
+ // 新增 Modal 模式相关属性
211
+ useModal = false,
212
+ dropdownItems = [],
213
+ selected,
214
+ showSelectedValue = false,
215
+ dropdownType = "clear",
216
+ arrowIcon: _arrowIcon = false,
217
+ onSelect,
218
+ backgroundColor,
219
+ labelColor,
220
+ state = "normal",
221
+ stateMsg,
222
+ showCheckedStatusInList = false,
223
+ showStateMsg = false,
224
+ offsetWidth = 0,
225
+ extendBtn,
226
+ extendBtnIcon,
227
+ emptyText,
228
+ onExtendBtnPress,
229
+ noLabelAnim = false,
230
+ radius = 12,
231
+ modalVisible,
232
+ customPopoverContent,
233
+ setModalVisible,
234
+ iconStyle,
235
+ label,
236
+ required,
237
+ testID,
238
+ ...props
239
+ }) => {
240
+ const styles = useStyles(props);
241
+ const theme = useTheme();
242
+ const [selected_old, selectedItem] = React.useState(value);
243
+ const searchRef = React.useRef(null);
244
+ const [search, setSearch] = useState('');
245
+
333
246
  // Modal 模式相关状态
334
- var _u = (0, react_1.useState)(false),
335
- internalModalVisible = _u[0],
336
- setInternalModalVisible = _u[1];
337
- var _v = (0, react_1.useState)({
338
- top: 0,
339
- left: 0
340
- }),
341
- dropdownPosition = _v[0],
342
- setDropdownPosition = _v[1];
343
- var _w = (0, react_1.useState)(subWidth !== null && subWidth !== void 0 ? subWidth : 151),
344
- dropdownWidthCalc = _w[0],
345
- setDropdownWidthCalc = _w[1];
346
- var _x = (0, react_1.useState)(selected !== null && selected !== void 0 ? selected : ""),
347
- selectedItemKey = _x[0],
348
- setSelectedItemKey = _x[1];
349
- var _y = (0, react_1.useState)(18),
350
- top = _y[0],
351
- setTop = _y[1];
352
- var _z = (0, react_1.useState)(0),
353
- optionListHeight = _z[0],
354
- setOptionListHeight = _z[1];
355
- var buttonRef = (0, react_1.useRef)(null);
356
- var topAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(18)).current;
357
- var offsetSpace = 8;
358
- var offsetHeight = 10;
359
- (0, react_1.useEffect)(function () {
247
+ const [internalModalVisible, setInternalModalVisible] = useState(false);
248
+ const [dropdownPosition, setDropdownPosition] = useState({
249
+ top: 0,
250
+ left: 0
251
+ });
252
+ const [dropdownWidthCalc, setDropdownWidthCalc] = useState(subWidth ?? 151);
253
+ const [selectedItemKey, setSelectedItemKey] = useState(selected ?? "");
254
+ const [top, setTop] = useState(18);
255
+ const [optionListHeight, setOptionListHeight] = useState(0);
256
+ const buttonRef = useRef(null);
257
+ const topAnim = useRef(new Animated.Value(18)).current;
258
+ const offsetSpace = 8;
259
+ const offsetHeight = 10;
260
+ useEffect(() => {
360
261
  selectedItem(value);
361
262
  }, [value]);
263
+
362
264
  // Modal 模式相关 useEffect
363
- (0, react_1.useEffect)(function () {
364
- setSelectedItemKey(selected !== null && selected !== void 0 ? selected : "");
265
+ useEffect(() => {
266
+ setSelectedItemKey(selected ?? "");
365
267
  }, [selected]);
366
- (0, react_1.useEffect)(function () {
268
+ useEffect(() => {
367
269
  if (typeof modalVisible === "boolean" && modalVisible !== undefined) {
368
270
  setInternalModalVisible(modalVisible);
369
271
  }
370
272
  }, [modalVisible]);
273
+
371
274
  // 标签动画效果
372
- (0, react_1.useEffect)(function () {
275
+ useEffect(() => {
373
276
  if (!useModal || noLabelAnim) return;
374
- var start = !selectedItemKey ? 0 : 18;
375
- var target = !selectedItemKey ? 18 : 0;
277
+ const start = !selectedItemKey ? 0 : 18;
278
+ const target = !selectedItemKey ? 18 : 0;
376
279
  if (top === target) return;
377
280
  setTop(target);
378
281
  topAnim.setValue(start);
379
- react_native_1.Animated.timing(topAnim, {
282
+ Animated.timing(topAnim, {
380
283
  toValue: target,
381
284
  duration: 300,
382
285
  useNativeDriver: true
383
286
  }).start();
384
287
  }, [selectedItemKey, useModal, noLabelAnim]);
385
- var handleStopEvent = function (event) {
288
+ const handleStopEvent = event => {
386
289
  event.stopPropagation();
387
290
  };
388
- var updateSearch = function (search) {
291
+ const updateSearch = search => {
389
292
  setSearch(search);
390
293
  onSearchChange && onSearchChange(search);
391
294
  };
295
+
392
296
  // Modal 模式下的弹出逻辑
393
- var openDropdown = function () {
297
+ const openDropdown = () => {
394
298
  if (props.disabled) return;
395
299
  if (buttonRef.current) {
396
- buttonRef.current.measure(function (_fx, _fy, width, height, px, py) {
397
- var window = react_native_1.Dimensions.get("window");
398
- var dropdownHeight = subHeight !== null && subHeight !== void 0 ? subHeight : Math.min(40 * dropdownItems.length + 24, 224);
399
- var dropdownWidth = Math.max(width, subWidth !== null && subWidth !== void 0 ? subWidth : 151);
300
+ buttonRef.current.measure((_fx, _fy, width, height, px, py) => {
301
+ const window = Dimensions.get("window");
302
+ const dropdownHeight = subHeight ?? Math.min(40 * dropdownItems.length + 24, 224);
303
+ const dropdownWidth = Math.max(width, subWidth ?? 151);
400
304
  setDropdownWidthCalc(dropdownWidth);
305
+
401
306
  // 计算显示位置
402
- var enoughSpaceBelow = py + height + dropdownHeight + offsetHeight <= window.height;
403
- var enoughSpaceAbove = py - dropdownHeight >= 0;
404
- var enoughSpaceRight = px + dropdownWidth <= window.width;
405
- var adjustedPx = px % window.width + (px > window.width ? 56 : 0) + offsetWidth;
406
- var top = enoughSpaceBelow ? py + height + offsetSpace : enoughSpaceAbove ? py - dropdownHeight - offsetHeight - 16 : py + height + offsetSpace;
407
- var left = enoughSpaceRight ? adjustedPx : adjustedPx + width - dropdownWidth;
307
+ const enoughSpaceBelow = py + height + dropdownHeight + offsetHeight <= window.height;
308
+ const enoughSpaceAbove = py - dropdownHeight >= 0;
309
+ const enoughSpaceRight = px + dropdownWidth <= window.width;
310
+ const adjustedPx = px % window.width + (px > window.width ? 56 : 0) + offsetWidth;
311
+ const top = enoughSpaceBelow ? py + height + offsetSpace : enoughSpaceAbove ? py - dropdownHeight - offsetHeight - 16 : py + height + offsetSpace;
312
+ const left = enoughSpaceRight ? adjustedPx : adjustedPx + width - dropdownWidth;
408
313
  setDropdownPosition({
409
- top: top,
410
- left: left
314
+ top,
315
+ left
411
316
  });
412
317
  if (setModalVisible) {
413
318
  setModalVisible(true);
@@ -417,35 +322,38 @@ var Dropdown = function (_a) {
417
322
  });
418
323
  }
419
324
  };
420
- var closeModal = function () {
325
+ const closeModal = () => {
421
326
  if (setModalVisible) {
422
327
  setModalVisible(false);
423
328
  } else {
424
329
  setInternalModalVisible(false);
425
330
  }
426
331
  };
427
- var handleConLayout = function (event) {
428
- var height = event.nativeEvent.layout.height;
332
+ const handleConLayout = event => {
333
+ const {
334
+ height
335
+ } = event.nativeEvent.layout;
429
336
  setOptionListHeight(height);
430
337
  };
338
+
431
339
  // 如果使用 Modal 模式,渲染新的 Modal 界面
432
340
  if (useModal) {
433
- return react_1.default.createElement(react_native_1.View, {
341
+ return /*#__PURE__*/React.createElement(View, {
434
342
  style: [styles.modalContainer, width ? {
435
343
  width: width
436
344
  } : null, {
437
345
  minHeight: 40 + (label ? 7 : 0) + (showStateMsg ? 15 : 0)
438
346
  }]
439
- }, label && !noLabelAnim && react_1.default.createElement(react_native_1.Animated.View, {
347
+ }, label && !noLabelAnim && /*#__PURE__*/React.createElement(Animated.View, {
440
348
  style: [styles.labelCon, {
441
349
  top: topAnim
442
350
  }, {
443
351
  backgroundColor: backgroundColor || theme.theme.colors.white
444
352
  }]
445
- }, react_1.default.createElement(react_native_1.Pressable, {
353
+ }, /*#__PURE__*/React.createElement(Pressable, {
446
354
  style: styles.labelInner,
447
355
  onPress: openDropdown
448
- }, react_1.default.createElement(react_native_1.Text, {
356
+ }, /*#__PURE__*/React.createElement(Text, {
449
357
  style: [styles.labelText, state === "error" && {
450
358
  color: theme.theme.colors.error
451
359
  }, !selectedItemKey && {
@@ -455,9 +363,9 @@ var Dropdown = function (_a) {
455
363
  }],
456
364
  numberOfLines: 1,
457
365
  ellipsizeMode: "tail"
458
- }, !selectedItemKey ? props.placeholder || label : label), required && react_1.default.createElement(react_native_1.Text, {
366
+ }, !selectedItemKey ? props.placeholder || label : label), required && /*#__PURE__*/React.createElement(Text, {
459
367
  style: styles.required
460
- }, "*"))), react_1.default.createElement(react_native_1.TouchableOpacity, {
368
+ }, "*"))), /*#__PURE__*/React.createElement(TouchableOpacity, {
461
369
  ref: buttonRef,
462
370
  style: [showSelectedValue || noLabelAnim && label ? styles.modalBtn : null, dropdownType === "solid" ? styles.modalSolidBtn : null, dropdownType === "solid" && radius ? {
463
371
  borderRadius: radius
@@ -466,7 +374,7 @@ var Dropdown = function (_a) {
466
374
  label && !noLabelAnim ? {
467
375
  marginTop: 7
468
376
  } : null, noLabelAnim && label && backgroundColor ? {
469
- backgroundColor: backgroundColor
377
+ backgroundColor
470
378
  } : null, state === "error" ? {
471
379
  borderColor: theme.theme.colors.error
472
380
  } : null, props.disabled ? {
@@ -478,7 +386,7 @@ var Dropdown = function (_a) {
478
386
  }],
479
387
  disabled: props.disabled,
480
388
  onPress: openDropdown
481
- }, showSelectedValue ? react_1.default.createElement(react_native_1.Text, {
389
+ }, showSelectedValue ? /*#__PURE__*/React.createElement(Text, {
482
390
  style: [styles.alignCenter, {
483
391
  flexGrow: 1,
484
392
  marginRight: 12
@@ -487,9 +395,7 @@ var Dropdown = function (_a) {
487
395
  }],
488
396
  numberOfLines: 1,
489
397
  ellipsizeMode: "tail"
490
- }, (_b = dropdownItems.find(function (item) {
491
- return item.key === selectedItemKey;
492
- })) === null || _b === void 0 ? void 0 : _b.value) : noLabelAnim && label ? react_1.default.createElement(react_native_1.Text, {
398
+ }, dropdownItems.find(item => item.key === selectedItemKey)?.value) : noLabelAnim && label ? /*#__PURE__*/React.createElement(Text, {
493
399
  style: [styles.alignCenter, {
494
400
  flexGrow: 1,
495
401
  marginRight: 2
@@ -500,31 +406,31 @@ var Dropdown = function (_a) {
500
406
  } : null],
501
407
  numberOfLines: 1,
502
408
  ellipsizeMode: "tail"
503
- }, label) : null, react_1.default.createElement(TapasIcon_1.default, {
409
+ }, label) : null, /*#__PURE__*/React.createElement(TapasIcon, {
504
410
  size: 20,
505
411
  style: [styles.alignCenter, styles.modalIcon, iconStyle, props.disabled && {
506
412
  color: theme.theme.colors.grey3
507
413
  }],
508
414
  name: internalModalVisible && props.icon === "arrow_drop_down" ? "arrow_drop_up" : props.icon === "arrow_drop_up" ? "arrow_drop_down" : props.icon || "arrow_drop_down"
509
- })), showStateMsg && react_1.default.createElement(react_native_1.View, {
415
+ })), showStateMsg && /*#__PURE__*/React.createElement(View, {
510
416
  style: styles.msg
511
- }, react_1.default.createElement(react_native_1.Text, {
417
+ }, /*#__PURE__*/React.createElement(Text, {
512
418
  style: [styles.msgText, state === "error" && {
513
419
  color: theme.theme.colors.error
514
420
  }],
515
421
  numberOfLines: 1,
516
422
  ellipsizeMode: "tail"
517
- }, stateMsg)), react_1.default.createElement(react_native_1.Modal, {
423
+ }, stateMsg)), /*#__PURE__*/React.createElement(Modal, {
518
424
  transparent: true,
519
425
  visible: internalModalVisible,
520
426
  onRequestClose: closeModal,
521
427
  animationType: "fade"
522
- }, react_1.default.createElement(react_native_1.TouchableOpacity, {
428
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
523
429
  style: {
524
430
  flex: 1
525
431
  },
526
432
  onPress: closeModal
527
- }, react_1.default.createElement(react_native_1.View, {
433
+ }, /*#__PURE__*/React.createElement(View, {
528
434
  style: [styles.modalOptionsCon, {
529
435
  top: dropdownPosition.top,
530
436
  left: dropdownPosition.left,
@@ -533,21 +439,191 @@ var Dropdown = function (_a) {
533
439
  maxHeight: subHeight
534
440
  } : null],
535
441
  onLayout: handleConLayout
536
- }, customPopoverContent ? customPopoverContent : react_1.default.createElement(react_native_1.ScrollView, {
442
+ }, customPopoverContent ? customPopoverContent : /*#__PURE__*/React.createElement(ScrollView, {
537
443
  style: styles.modalOptionsScrollView,
538
444
  showsHorizontalScrollIndicator: false,
539
445
  showsVerticalScrollIndicator: false
540
- }, react_1.default.createElement(react_native_1.View, {
446
+ }, /*#__PURE__*/React.createElement(View, {
541
447
  style: styles.modalOptionsInner
542
- }, dropdownItems.length > 0 ? dropdownItems.map(function (item, index) {
543
- return react_1.default.createElement(react_native_1.Pressable, {
544
- style: function (_a) {
545
- var pressed = _a.pressed;
546
- return [styles.modalOption, item.secondaryValue ? {
547
- flexWrap: "wrap"
548
- } : null, {
549
- padding: 10,
550
- backgroundColor: pressed ? theme.theme.colors.grey4 || "#f0f0f0" : "transparent"
448
+ }, dropdownItems.length > 0 ? dropdownItems.map((item, index) => /*#__PURE__*/React.createElement(Pressable, {
449
+ style: ({
450
+ pressed
451
+ }) => [styles.modalOption, item.secondaryValue ? {
452
+ flexWrap: "wrap"
453
+ } : null, {
454
+ padding: 10,
455
+ backgroundColor: pressed ? theme.theme.colors.grey4 || "#f0f0f0" : "transparent"
456
+ },
457
+ // 第一个 item 添加左上和右上圆角
458
+ index === 0 && {
459
+ borderTopLeftRadius: 12,
460
+ borderTopRightRadius: 12
461
+ },
462
+ // 最后一个 item 添加左下和右下圆角
463
+ index === dropdownItems.length - 1 && {
464
+ borderBottomLeftRadius: 12,
465
+ borderBottomRightRadius: 12
466
+ }, showCheckedStatusInList && selectedItemKey === item.key ? {
467
+ backgroundColor: theme.theme.colors.grey4 || "#f0f0f0"
468
+ } : null],
469
+ key: `dropdown-option-${item.key}-${index}`,
470
+ onPress: () => {
471
+ closeModal();
472
+ if (onSelect) {
473
+ onSelect(item);
474
+ } else {
475
+ setSelectedItemKey(item.key);
476
+ }
477
+ }
478
+ }, /*#__PURE__*/React.createElement(View, {
479
+ style: {
480
+ display: "flex",
481
+ flexDirection: "row",
482
+ justifyContent: "space-between",
483
+ overflow: "hidden",
484
+ width: "100%"
485
+ }
486
+ }, /*#__PURE__*/React.createElement(Text, {
487
+ style: [styles.modalOptionText],
488
+ numberOfLines: 1,
489
+ ellipsizeMode: "tail"
490
+ }, item.value), selectedItemKey === item.key && /*#__PURE__*/React.createElement(TapasIcon, {
491
+ name: "check",
492
+ size: 20,
493
+ color: theme.theme.colors.primary
494
+ })), item.secondaryValue && /*#__PURE__*/React.createElement(View, {
495
+ style: {
496
+ display: "flex",
497
+ flexDirection: "row",
498
+ flex: 1,
499
+ height: 14,
500
+ overflow: "hidden",
501
+ minWidth: dropdownWidthCalc - 32
502
+ }
503
+ }, /*#__PURE__*/React.createElement(Text, {
504
+ style: [styles.modalOptionText, {
505
+ fontSize: 12,
506
+ color: theme.theme.colors.secondary
507
+ }],
508
+ numberOfLines: 1,
509
+ ellipsizeMode: "tail"
510
+ }, item.secondaryValue)))) : /*#__PURE__*/React.createElement(Text, {
511
+ numberOfLines: 1,
512
+ ellipsizeMode: "tail",
513
+ style: [styles.modalOptionText, styles.modalNoOptions]
514
+ }, emptyText || "No options")))), extendBtn && /*#__PURE__*/React.createElement(Pressable, {
515
+ onPress: () => {
516
+ closeModal();
517
+ setTimeout(() => {
518
+ onExtendBtnPress?.();
519
+ }, 300);
520
+ },
521
+ style: [styles.extendBtnCon, {
522
+ left: dropdownPosition.left,
523
+ top: dropdownPosition.top + optionListHeight + 8,
524
+ width: dropdownWidthCalc
525
+ }]
526
+ }, extendBtnIcon && /*#__PURE__*/React.createElement(TapasIcon, {
527
+ size: 20,
528
+ name: extendBtnIcon
529
+ }), /*#__PURE__*/React.createElement(Text, {
530
+ style: styles.extendBtnText,
531
+ numberOfLines: 1,
532
+ ellipsizeMode: "tail"
533
+ }, extendBtn)))));
534
+ }
535
+
536
+ // 原有的 CustomDropdown 模式
537
+ return /*#__PURE__*/React.createElement(CustomDropdown, _extends({
538
+ title: props?.title,
539
+ value: `${prefix}${selected_old?.name}`,
540
+ isVisible: isVisible,
541
+ width: width,
542
+ subWidth: subWidth,
543
+ subHeight: subHeight,
544
+ testID: testID
545
+ }, props, {
546
+ onClose: () => {
547
+ props.onClose && props.onClose();
548
+ },
549
+ onPress: () => {
550
+ props.onPress && props.onPress();
551
+ },
552
+ sheetTitlePros: {
553
+ ...props.sheetTitlePros,
554
+ onClose: () => {
555
+ props.onClose && props.onClose();
556
+ }
557
+ }
558
+ }), /*#__PURE__*/React.createElement(Pressable, {
559
+ onPress: handleStopEvent
560
+ }, props.showSearchBar && /*#__PURE__*/React.createElement(SearchBar, {
561
+ ref: search => searchRef.current = search,
562
+ containerStyle: {
563
+ ...styles.searchBarContainer,
564
+ borderEndWidth: 1,
565
+ borderTopWidth: 0,
566
+ borderRightWidth: 0,
567
+ width: subWidth
568
+ },
569
+ inputContainerStyle: styles.inputContainer,
570
+ placeholder: props.placeholder,
571
+ onChangeText: updateSearch,
572
+ inputStyle: {
573
+ ...styles.inputStyle
574
+ },
575
+ leftIconContainerStyle: styles.leftIconContainer,
576
+ value: search,
577
+ lightTheme: true,
578
+ searchIcon: /*#__PURE__*/React.createElement(TapasIcon, {
579
+ name: "search",
580
+ style: styles.iconStyle,
581
+ size: 20
582
+ }),
583
+ clearIcon: /*#__PURE__*/React.createElement(TapasIcon, {
584
+ name: "close",
585
+ onPress: () => {
586
+ const search = searchRef.current;
587
+ if (search) {
588
+ search.clear();
589
+ search.blur();
590
+ }
591
+ },
592
+ size: 20
593
+ })
594
+ })), /*#__PURE__*/React.createElement(ScrollView, {
595
+ style: {
596
+ width: subWidth,
597
+ height: subHeight
598
+ }
599
+ }, options?.map((item, index) => {
600
+ const visibleItems = options.filter(item => !item.hide);
601
+ const currentVisibleIndex = visibleItems.findIndex(visibleItem => visibleItem === item);
602
+ const isFirst = currentVisibleIndex === 0;
603
+ const isLast = currentVisibleIndex === visibleItems.length - 1;
604
+ return !item.hide && /*#__PURE__*/React.createElement(CustomListItem, {
605
+ onItemPress: value => {
606
+ if (type === 'button') {
607
+ props.onItemPress && props.onItemPress(item.value);
608
+ } else {
609
+ selectedItem(value);
610
+ onChange && onChange(value);
611
+ }
612
+ props.onClose && props.onClose();
613
+ },
614
+ key: index,
615
+ item: item,
616
+ selected: selected_old,
617
+ isFirst: isFirst,
618
+ isLast: isLast
619
+ });
620
+ })));
621
+ };
622
+ export default withTheme(Dropdown);
623
+
624
+ // 向后兼容的别名导出
625
+ export const TapasDropdownModal = withTheme(Dropdown);
626
+ //# sourceMappingURL=Dropdown.js.mapeme.theme.colors.grey4 || "#f0f0f0" : "transparent"
551
627
  },
552
628
  // 第一个 item 添加左上和右上圆角
553
629
  index === 0 && {