@beppla/tapas-ui 1.2.20 → 1.2.22

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.
@@ -10,6 +10,11 @@
10
10
  - ✅ 圆角设计,适合搜索场景
11
11
  - ✅ 支持双回调接口(`onSearch` 和 `attachSearch`)
12
12
  - ✅ 向后兼容客户端项目的接口
13
+ - ✅ 支持搜索结果列表显示
14
+ - ✅ 支持搜索历史记录
15
+ - ✅ 支持加载状态显示
16
+ - ✅ 支持自定义占位符(激活/未激活状态)
17
+ - ✅ 支持自定义结果项渲染
13
18
 
14
19
  ## 安装使用
15
20
 
@@ -27,12 +32,19 @@ import { TapasSearchInput } from '@beppla/tapas-ui';
27
32
 
28
33
  | 属性 | 类型 | 默认值 | 说明 |
29
34
  |------|------|--------|------|
30
- | `placeholder` | `string` | - | 占位符文本 |
35
+ | `placeholder` | `string` | - | 占位符文本(当未设置 activePlaceholder/inactivePlaceholder 时使用) |
36
+ | `activePlaceholder` | `string` | - | 搜索激活时的占位符 |
37
+ | `inactivePlaceholder` | `string` | - | 搜索未激活时的占位符 |
31
38
  | `value` | `string` | - | 输入框的值 |
32
39
  | `width` | `number` | `168` | 组件宽度 |
33
40
  | `height` | `number` | `40` | 组件高度 |
34
- | `onSearch` | `(text?: string) => void` | - | 搜索回调函数 |
35
- | `attachSearch` | `(text?: string) => void` | - | 搜索回调函数(兼容客户端接口) |
41
+ | `onSearch` | `(keyword: string) => void` | - | 搜索回调函数(关键词变化时触发) |
42
+ | `attachSearch` | `(val?: string) => void` | - | 搜索回调函数(兼容客户端接口) |
43
+ | `onSelectResult` | `(item: any) => void` | - | 选择搜索结果时的回调 |
44
+ | `onSelectHistory` | `(historyEntry: SearchHistoryEntry) => void` | - | 选择搜索历史时的回调 |
45
+ | `renderResultItem` | `(item: any, index: number, isHistory: boolean) => React.ReactNode` | - | 自定义搜索结果项渲染函数 |
46
+ | `searchResults` | `any[]` | `[]` | 搜索结果数据数组 |
47
+ | `isLoading` | `boolean` | `false` | 搜索加载状态 |
36
48
  | `style` | `ViewStyle` | - | 自定义样式 |
37
49
 
38
50
  ## 使用示例
@@ -115,6 +127,110 @@ const CustomSizeSearch = () => {
115
127
  };
116
128
  ```
117
129
 
130
+ ### 搜索结果列表
131
+
132
+ ```tsx
133
+ import React, { useState } from 'react';
134
+ import { TapasSearchInput } from '@beppla/tapas-ui';
135
+
136
+ const SearchWithResults = () => {
137
+ const [results, setResults] = useState([]);
138
+ const [loading, setLoading] = useState(false);
139
+
140
+ const handleSearch = (keyword) => {
141
+ setLoading(true);
142
+ // 模拟搜索
143
+ setTimeout(() => {
144
+ setResults([
145
+ { id: 1, name: `结果 1: ${keyword}` },
146
+ { id: 2, name: `结果 2: ${keyword}` },
147
+ ]);
148
+ setLoading(false);
149
+ }, 500);
150
+ };
151
+
152
+ return (
153
+ <TapasSearchInput
154
+ placeholder="搜索..."
155
+ onSearch={handleSearch}
156
+ searchResults={results}
157
+ isLoading={loading}
158
+ onSelectResult={(item) => {
159
+ console.log('选择了结果:', item);
160
+ }}
161
+ />
162
+ );
163
+ };
164
+ ```
165
+
166
+ ### 搜索历史记录
167
+
168
+ ```tsx
169
+ import React, { useState } from 'react';
170
+ import { TapasSearchInput, SearchHistoryEntry } from '@beppla/tapas-ui';
171
+
172
+ const SearchWithHistory = () => {
173
+ const [history, setHistory] = useState<SearchHistoryEntry[]>([
174
+ { id: 1, keyword: 'React Native', timestamp: Date.now() },
175
+ { id: 2, keyword: 'TypeScript', timestamp: Date.now() },
176
+ ]);
177
+
178
+ return (
179
+ <TapasSearchInput
180
+ placeholder="搜索..."
181
+ searchResults={history}
182
+ onSelectHistory={(entry) => {
183
+ console.log('选择了历史:', entry.keyword);
184
+ }}
185
+ />
186
+ );
187
+ };
188
+ ```
189
+
190
+ ### 自定义占位符
191
+
192
+ ```tsx
193
+ import React from 'react';
194
+ import { TapasSearchInput } from '@beppla/tapas-ui';
195
+
196
+ const CustomPlaceholder = () => {
197
+ return (
198
+ <TapasSearchInput
199
+ activePlaceholder="正在搜索..."
200
+ inactivePlaceholder="请输入关键词"
201
+ onSearch={(keyword) => console.log('搜索:', keyword)}
202
+ />
203
+ );
204
+ };
205
+ ```
206
+
207
+ ### 自定义结果项渲染
208
+
209
+ ```tsx
210
+ import React from 'react';
211
+ import { TapasSearchInput, View, Text } from '@beppla/tapas-ui';
212
+
213
+ const CustomRender = () => {
214
+ const results = [
215
+ { id: 1, title: '结果 1', description: '这是结果 1 的描述' },
216
+ { id: 2, title: '结果 2', description: '这是结果 2 的描述' },
217
+ ];
218
+
219
+ return (
220
+ <TapasSearchInput
221
+ placeholder="搜索..."
222
+ searchResults={results}
223
+ renderResultItem={(item, index, isHistory) => (
224
+ <View style={{ padding: 16, borderBottomWidth: 1 }}>
225
+ <Text style={{ fontWeight: 'bold' }}>{item.title}</Text>
226
+ <Text style={{ color: '#666', marginTop: 4 }}>{item.description}</Text>
227
+ </View>
228
+ )}
229
+ />
230
+ );
231
+ };
232
+ ```
233
+
118
234
  ## 向后兼容
119
235
 
120
236
  为了确保向后兼容,组件同时导出了以下别名:
@@ -142,13 +258,30 @@ import { SearchInput } from '@beppla/tapas-ui';
142
258
  ## 类型定义
143
259
 
144
260
  ```tsx
145
- interface SearchInputProps extends ViewProps {
261
+ /**
262
+ * 搜索历史记录项类型
263
+ */
264
+ export interface SearchHistoryEntry {
265
+ id?: string | number;
266
+ keyword: string;
267
+ timestamp?: number;
268
+ [key: string]: any;
269
+ }
270
+
271
+ export interface SearchInputProps extends ViewProps {
146
272
  placeholder?: string;
273
+ activePlaceholder?: string; // 搜索激活时的占位符
274
+ inactivePlaceholder?: string; // 搜索未激活时的占位符
147
275
  value?: string;
148
276
  height?: number;
149
277
  width?: number;
150
- onSearch?: (val?: string) => void;
151
- attachSearch?: (val?: string) => void;
278
+ onSearch?: (keyword: string) => void; // 搜索回调(必需 keyword 参数)
279
+ attachSearch?: (val?: string) => void; // 兼容旧接口
280
+ onSelectResult?: (item: any) => void; // 选择结果回调
281
+ onSelectHistory?: (historyEntry: SearchHistoryEntry) => void; // 选择历史回调
282
+ renderResultItem?: (item: any, index: number, isHistory: boolean) => React.ReactNode; // 自定义渲染
283
+ searchResults?: any[]; // 搜索结果数据
284
+ isLoading?: boolean; // 加载状态
152
285
  }
153
286
  ```
154
287
 
@@ -165,3 +298,7 @@ interface SearchInputProps extends ViewProps {
165
298
  2. 组件会自动处理搜索图标的点击事件
166
299
  3. 输入框的实际宽度会比设置的 `width` 小 56px(为搜索图标留空间)
167
300
  4. 组件支持 React Native 和 React Native Web 环境
301
+ 5. `onSearch` 回调的参数类型已更新为 `(keyword: string)`,不再支持可选参数(向后兼容通过 `attachSearch` 保持)
302
+ 6. 搜索结果列表会在输入框获得焦点且有搜索结果时自动显示
303
+ 7. 移动端使用 Modal 显示结果列表,桌面端使用绝对定位
304
+ 8. 历史记录项需要包含 `keyword` 字段才会被识别为历史记录
@@ -9,6 +9,7 @@ var _reactNative = require("react-native");
9
9
  var _themed = require("@rneui/themed");
10
10
  var _Input = _interopRequireDefault(require("../Input/Input"));
11
11
  var _TapasIcon = _interopRequireDefault(require("../Icons/TapasIcon"));
12
+ var _common = require("../common");
12
13
  var _jsxRuntime = require("react/jsx-runtime");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  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); }
@@ -22,26 +23,89 @@ const inputStyle = _reactNative.Platform.select({
22
23
  width: 112
23
24
  }
24
25
  });
26
+
27
+ /**
28
+ * 搜索历史记录项类型
29
+ */
30
+
25
31
  const TapasSearchInput = ({
26
32
  style,
27
33
  height = 40,
28
34
  width = 168,
29
35
  placeholder,
36
+ activePlaceholder,
37
+ inactivePlaceholder,
30
38
  value,
31
39
  onSearch,
32
40
  attachSearch,
41
+ onSelectResult,
42
+ onSelectHistory,
43
+ renderResultItem,
44
+ searchResults = [],
45
+ isLoading = false,
33
46
  ...otherProps
34
47
  }) => {
35
48
  const theme = (0, _themed.useTheme)();
36
49
  const styles = useStyles();
37
- const [searchValue, setSearchValue] = (0, _react.useState)(value);
50
+ const [searchValue, setSearchValue] = (0, _react.useState)(value || '');
51
+ const [isFocused, setIsFocused] = (0, _react.useState)(false);
52
+ const [showResults, setShowResults] = (0, _react.useState)(false);
53
+ const inputRef = (0, _react.useRef)(null);
38
54
  (0, _react.useEffect)(() => {
39
- setSearchValue(value);
55
+ setSearchValue(value || '');
40
56
  }, [value]);
57
+
58
+ // 根据焦点状态和是否有值来决定显示哪个占位符
59
+ const currentPlaceholder = (0, _react.useMemo)(() => {
60
+ if (activePlaceholder && inactivePlaceholder) {
61
+ return isFocused || searchValue ? activePlaceholder : inactivePlaceholder;
62
+ }
63
+ return placeholder || '搜索...';
64
+ }, [placeholder, activePlaceholder, inactivePlaceholder, isFocused, searchValue]);
65
+
66
+ // 当有搜索结果或正在加载时显示结果列表
67
+ (0, _react.useEffect)(() => {
68
+ const shouldShow = searchResults && searchResults.length > 0 || isLoading;
69
+ setShowResults(shouldShow && (isFocused || searchValue.length > 0));
70
+ }, [searchResults, isLoading, isFocused, searchValue]);
41
71
  const handleSearch = (0, _react.useCallback)(text => {
42
- onSearch?.(text);
43
- attachSearch?.(text);
72
+ const keyword = text || '';
73
+ setSearchValue(keyword);
74
+
75
+ // 调用新的 onSearch(必需 keyword 参数)
76
+ if (onSearch) {
77
+ onSearch(keyword);
78
+ }
79
+
80
+ // 兼容旧的 attachSearch 接口
81
+ if (attachSearch) {
82
+ attachSearch(keyword);
83
+ }
44
84
  }, [onSearch, attachSearch]);
85
+ const handleFocus = (0, _react.useCallback)(() => {
86
+ setIsFocused(true);
87
+ }, []);
88
+ const handleBlur = (0, _react.useCallback)(() => {
89
+ // 延迟隐藏,允许点击结果项
90
+ setTimeout(() => {
91
+ setIsFocused(false);
92
+ }, 200);
93
+ }, []);
94
+ const handleSelectResult = (0, _react.useCallback)(item => {
95
+ if (onSelectResult) {
96
+ onSelectResult(item);
97
+ }
98
+ setShowResults(false);
99
+ setIsFocused(false);
100
+ }, [onSelectResult]);
101
+ const handleSelectHistory = (0, _react.useCallback)(historyEntry => {
102
+ if (onSelectHistory) {
103
+ onSelectHistory(historyEntry);
104
+ }
105
+ setSearchValue(historyEntry.keyword);
106
+ setShowResults(false);
107
+ setIsFocused(false);
108
+ }, [onSelectHistory]);
45
109
  const containerStyle = (0, _react.useMemo)(() => [styles.search, style, {
46
110
  width
47
111
  }], [styles.search, style, width]);
@@ -61,15 +125,103 @@ const TapasSearchInput = ({
61
125
  width: width - 56,
62
126
  height
63
127
  }], [width, height]);
64
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
128
+
129
+ // 渲染默认结果项
130
+ const renderDefaultResultItem = (0, _react.useCallback)((item, index, isHistory) => {
131
+ const displayText = typeof item === 'string' ? item : item.name || item.title || item.keyword || JSON.stringify(item);
132
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
133
+ style: styles.resultItem,
134
+ onPress: () => {
135
+ if (isHistory) {
136
+ handleSelectHistory(item);
137
+ } else {
138
+ handleSelectResult(item);
139
+ }
140
+ },
141
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
142
+ style: styles.resultItemText,
143
+ children: displayText
144
+ })
145
+ }, index);
146
+ }, [styles.resultItem, styles.resultItemText, handleSelectResult, handleSelectHistory]);
147
+
148
+ // 渲染结果列表
149
+ const renderResultsList = (0, _react.useCallback)(() => {
150
+ if (!showResults) {
151
+ return null;
152
+ }
153
+ const resultsContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
154
+ style: [styles.resultsContainer, {
155
+ width
156
+ }],
157
+ children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
158
+ style: styles.loadingContainer,
159
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
160
+ size: "small",
161
+ color: theme.theme.colors.primary
162
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
163
+ style: styles.loadingText,
164
+ children: "\u641C\u7D22\u4E2D..."
165
+ })]
166
+ }) : searchResults && searchResults.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
167
+ style: styles.resultsScrollView,
168
+ keyboardShouldPersistTaps: "handled",
169
+ keyboardDismissMode: "none",
170
+ showsVerticalScrollIndicator: false,
171
+ children: searchResults.map((item, index) => {
172
+ const isHistory = item.keyword !== undefined; // 简单判断是否为历史记录
173
+
174
+ if (renderResultItem) {
175
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
176
+ children: renderResultItem(item, index, isHistory)
177
+ }, index);
178
+ }
179
+ return renderDefaultResultItem(item, index, isHistory);
180
+ })
181
+ }) : null
182
+ });
183
+
184
+ // 移动端使用 Modal,桌面端使用绝对定位
185
+ if (_common.isMobile) {
186
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
187
+ transparent: true,
188
+ visible: showResults,
189
+ animationType: "fade",
190
+ onRequestClose: () => {
191
+ setShowResults(false);
192
+ setIsFocused(false);
193
+ },
194
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback, {
195
+ onPress: () => {
196
+ setShowResults(false);
197
+ setIsFocused(false);
198
+ },
199
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
200
+ style: styles.modalBackdrop,
201
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
202
+ style: styles.modalContent,
203
+ children: resultsContent
204
+ })
205
+ })
206
+ })
207
+ });
208
+ }
209
+
210
+ // 桌面端使用绝对定位
211
+ return resultsContent;
212
+ }, [showResults, isLoading, searchResults, width, styles, theme, renderResultItem, renderDefaultResultItem]);
213
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
65
214
  ...otherProps,
66
215
  style: containerStyle,
67
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {
216
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.default, {
217
+ ref: inputRef,
68
218
  inputStyle: inputStyleMemo,
69
219
  labelBg: "transparent",
70
220
  inputContainerStyle: inputInnerContainerStyle,
71
221
  value: searchValue,
72
222
  onChangeText: handleSearch,
223
+ onFocus: handleFocus,
224
+ onBlur: handleBlur,
73
225
  containerStyle: inputContainerStyle,
74
226
  leftIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TapasIcon.default, {
75
227
  onPress: () => handleSearch(searchValue),
@@ -77,8 +229,8 @@ const TapasSearchInput = ({
77
229
  size: 24,
78
230
  color: theme.theme.colors.grey1
79
231
  }),
80
- placeholder: placeholder
81
- })
232
+ placeholder: currentPlaceholder
233
+ }), renderResultsList()]
82
234
  });
83
235
  };
84
236
  exports.TapasSearchInput = TapasSearchInput;
@@ -102,7 +254,66 @@ const useStyles = (0, _themed.makeStyles)(theme => ({
102
254
  search: {
103
255
  width: 168,
104
256
  display: "flex",
257
+ overflow: "visible",
258
+ // 改为 visible 以显示下拉结果
259
+ position: "relative"
260
+ },
261
+ resultsContainer: {
262
+ position: "absolute",
263
+ top: "100%",
264
+ left: 0,
265
+ marginTop: 4,
266
+ backgroundColor: theme?.colors?.white,
267
+ borderRadius: 8,
268
+ shadowColor: theme?.colors?.black,
269
+ shadowOffset: {
270
+ width: 0,
271
+ height: 2
272
+ },
273
+ shadowOpacity: 0.1,
274
+ shadowRadius: 4,
275
+ elevation: 3,
276
+ maxHeight: 300,
277
+ zIndex: 1000,
105
278
  overflow: "hidden"
279
+ },
280
+ modalBackdrop: {
281
+ flex: 1,
282
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
283
+ justifyContent: "flex-start",
284
+ alignItems: "center",
285
+ paddingTop: 100
286
+ },
287
+ modalContent: {
288
+ width: "90%",
289
+ maxWidth: 400
290
+ },
291
+ resultsScrollView: {
292
+ maxHeight: 300
293
+ },
294
+ resultItem: {
295
+ paddingHorizontal: 16,
296
+ paddingVertical: 12,
297
+ borderBottomWidth: 1,
298
+ borderBottomColor: theme?.colors?.grey4,
299
+ backgroundColor: theme?.colors?.white
300
+ },
301
+ resultItemText: {
302
+ fontSize: theme?.fonts?.sizeM || 14,
303
+ color: theme?.colors?.colorTextPrimary,
304
+ fontFamily: theme?.fonts?.fontFamily
305
+ },
306
+ loadingContainer: {
307
+ flexDirection: "row",
308
+ alignItems: "center",
309
+ justifyContent: "center",
310
+ padding: 16
311
+ },
312
+ loadingText: {
313
+ marginLeft: 8,
314
+ fontSize: theme?.fonts?.sizeM || 14,
315
+ color: theme?.colors?.colorTextSecondary || theme?.colors?.grey1,
316
+ fontFamily: theme?.fonts?.fontFamily
106
317
  }
107
318
  }));
108
319
  var _default = exports.default = (0, _themed.withTheme)(TapasSearchInput); // Export aliases for compatibility
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_themed","_Input","_interopRequireDefault","_TapasIcon","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","inputStyle","Platform","select","web","outlineStyle","borderWidth","height","width","TapasSearchInput","style","placeholder","value","onSearch","attachSearch","otherProps","theme","useTheme","styles","useStyles","searchValue","setSearchValue","useState","useEffect","handleSearch","useCallback","text","containerStyle","useMemo","search","inputContainerStyle","inputContainer","maxHeight","minHeight","inputInnerContainerStyle","inputInnerContainer","inputStyleMemo","jsx","View","children","labelBg","onChangeText","leftIcon","onPress","name","size","color","colors","grey1","exports","makeStyles","backgroundColor","grey4","borderRadius","borderBottomWidth","display","overflow","_default","withTheme","SearchInput"],"sourceRoot":"../../../components","sources":["SearchInput/SearchInput.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_themed","_Input","_interopRequireDefault","_TapasIcon","_common","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","inputStyle","Platform","select","web","outlineStyle","borderWidth","height","width","TapasSearchInput","style","placeholder","activePlaceholder","inactivePlaceholder","value","onSearch","attachSearch","onSelectResult","onSelectHistory","renderResultItem","searchResults","isLoading","otherProps","theme","useTheme","styles","useStyles","searchValue","setSearchValue","useState","isFocused","setIsFocused","showResults","setShowResults","inputRef","useRef","useEffect","currentPlaceholder","useMemo","shouldShow","length","handleSearch","useCallback","text","keyword","handleFocus","handleBlur","setTimeout","handleSelectResult","item","handleSelectHistory","historyEntry","containerStyle","search","inputContainerStyle","inputContainer","maxHeight","minHeight","inputInnerContainerStyle","inputInnerContainer","inputStyleMemo","renderDefaultResultItem","index","isHistory","displayText","name","title","JSON","stringify","jsx","TouchableOpacity","resultItem","onPress","children","Text","resultItemText","renderResultsList","resultsContent","View","resultsContainer","jsxs","loadingContainer","ActivityIndicator","size","color","colors","primary","loadingText","ScrollView","resultsScrollView","keyboardShouldPersistTaps","keyboardDismissMode","showsVerticalScrollIndicator","map","undefined","isMobile","Modal","transparent","visible","animationType","onRequestClose","TouchableWithoutFeedback","modalBackdrop","modalContent","ref","labelBg","onChangeText","onFocus","onBlur","leftIcon","grey1","exports","makeStyles","backgroundColor","grey4","borderRadius","borderBottomWidth","display","overflow","position","top","left","marginTop","white","shadowColor","black","shadowOffset","shadowOpacity","shadowRadius","elevation","zIndex","flex","justifyContent","alignItems","paddingTop","maxWidth","paddingHorizontal","paddingVertical","borderBottomColor","fontSize","fonts","sizeM","colorTextPrimary","fontFamily","flexDirection","padding","marginLeft","colorTextSecondary","_default","withTheme","SearchInput"],"sourceRoot":"../../../components","sources":["SearchInput/SearchInput.tsx"],"mappings":"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","ignoreList":[]}
@@ -365,6 +365,13 @@ const WebViewBridge = exports.WebViewBridge = /*#__PURE__*/(0, _react.forwardRef
365
365
  const normalizeMessage = (0, _react.useCallback)(rawMessage => {
366
366
  let data = null;
367
367
 
368
+ // 🔧 修复:优先检查是否是 tapas-sys 格式({ operate, action, data })
369
+ // 这对于 webviewmessage 事件特别重要,因为 event.detail 直接是 tapas-sys 格式
370
+ if (rawMessage && typeof rawMessage === 'object' && rawMessage.operate !== undefined) {
371
+ loggerRef.current.debug('检测到 tapas-sys 格式消息,直接转换:', rawMessage);
372
+ return convertFromTapasSysFormat(rawMessage);
373
+ }
374
+
368
375
  // WebView 环境:消息通常在 data 字段中
369
376
  if (environmentRef.current === 'webview') {
370
377
  if (typeof rawMessage === 'string') {
@@ -374,10 +381,7 @@ const WebViewBridge = exports.WebViewBridge = /*#__PURE__*/(0, _react.forwardRef
374
381
  } else if (rawMessage?.data) {
375
382
  data = rawMessage.data;
376
383
  } else {
377
- // 直接是对象:检查是 tapas-sys 格式还是 WebViewMessage 格式
378
- if (rawMessage?.operate !== undefined) {
379
- return convertFromTapasSysFormat(rawMessage);
380
- }
384
+ // 直接是对象:检查是 WebViewMessage 格式
381
385
  return {
382
386
  type: rawMessage?.type || 'unknown',
383
387
  payload: rawMessage?.payload || rawMessage,
@@ -398,10 +402,7 @@ const WebViewBridge = exports.WebViewBridge = /*#__PURE__*/(0, _react.forwardRef
398
402
  // 降级:直接使用 event.data
399
403
  data = rawMessage.data;
400
404
  } else {
401
- // 直接是对象:检查是 tapas-sys 格式还是 WebViewMessage 格式
402
- if (rawMessage?.operate !== undefined) {
403
- return convertFromTapasSysFormat(rawMessage);
404
- }
405
+ // 直接是对象:检查是 WebViewMessage 格式
405
406
  return {
406
407
  type: rawMessage?.type || 'unknown',
407
408
  payload: rawMessage?.payload || rawMessage,
@@ -412,9 +413,6 @@ const WebViewBridge = exports.WebViewBridge = /*#__PURE__*/(0, _react.forwardRef
412
413
  }
413
414
  } else {
414
415
  // 未知环境:尝试通用解析
415
- if (rawMessage?.operate !== undefined) {
416
- return convertFromTapasSysFormat(rawMessage);
417
- }
418
416
  return {
419
417
  type: rawMessage?.type || 'unknown',
420
418
  payload: rawMessage?.payload || rawMessage,