react-native-auto-positioned-popup 1.0.10 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -8
- package/README_zh.md +105 -9
- package/lib/AutoPositionedPopup.d.ts.map +1 -1
- package/lib/AutoPositionedPopup.js +167 -63
- package/lib/AutoPositionedPopup.js.map +1 -1
- package/lib/AutoPositionedPopupProps.d.ts +2 -0
- package/lib/AutoPositionedPopupProps.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/AutoPositionedPopup.tsx +193 -60
- package/src/AutoPositionedPopupProps.ts +2 -0
package/README.md
CHANGED
|
@@ -105,6 +105,100 @@ module.exports = {
|
|
|
105
105
|
};
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
+
#### Dynamic Control via global.$fake (Recommended Approach)
|
|
109
|
+
|
|
110
|
+
A more advanced approach is to dynamically control source code loading through your project's global configuration file. This method allows runtime switching without modifying environment variables:
|
|
111
|
+
|
|
112
|
+
1. Create or modify the `global.ts` file in your project root:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// global.ts
|
|
116
|
+
declare global {
|
|
117
|
+
var $fake: boolean;
|
|
118
|
+
// ... other global variables
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Set to true to load source code (development mode)
|
|
122
|
+
// Set to false to use compiled files (production mode)
|
|
123
|
+
global.$fake = true; // or false
|
|
124
|
+
|
|
125
|
+
export {};
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
2. Read the `global.$fake` value in your `babel.config.js`:
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
const fs = require('fs');
|
|
132
|
+
const path = require('path');
|
|
133
|
+
|
|
134
|
+
// Check global.$fake value
|
|
135
|
+
const checkFakeMode = () => {
|
|
136
|
+
try {
|
|
137
|
+
const globalPath = path.resolve(__dirname, 'global.ts');
|
|
138
|
+
const globalContent = fs.readFileSync(globalPath, 'utf8');
|
|
139
|
+
// Check if global.$fake is true
|
|
140
|
+
const fakeMatch = globalContent.match(/\$fake\s*=\s*(true|false)/);
|
|
141
|
+
return fakeMatch && fakeMatch[1] === 'true';
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.warn('Unable to read global.ts, defaulting to false:', error.message);
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const isFakeMode = checkFakeMode();
|
|
149
|
+
|
|
150
|
+
// Base alias configuration
|
|
151
|
+
const baseAlias = {
|
|
152
|
+
// ... your base aliases
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// If in fake mode, add source code redirects
|
|
156
|
+
const aliasConfig = isFakeMode ? {
|
|
157
|
+
...baseAlias,
|
|
158
|
+
// Redirect react-native-auto-positioned-popup to source files
|
|
159
|
+
'react-native-auto-positioned-popup': './node_modules/react-native-auto-positioned-popup/src',
|
|
160
|
+
'react-native-auto-positioned-popup/lib/index': './node_modules/react-native-auto-positioned-popup/src/index.ts',
|
|
161
|
+
'react-native-auto-positioned-popup/lib/AutoPositionedPopup': './node_modules/react-native-auto-positioned-popup/src/AutoPositionedPopup.tsx',
|
|
162
|
+
'react-native-auto-positioned-popup/lib/AutoPositionedPopupProps': './node_modules/react-native-auto-positioned-popup/src/AutoPositionedPopupProps.ts',
|
|
163
|
+
'react-native-auto-positioned-popup/lib/RootViewContext': './node_modules/react-native-auto-positioned-popup/src/RootViewContext.tsx',
|
|
164
|
+
'react-native-auto-positioned-popup/lib/KeyboardManager': './node_modules/react-native-auto-positioned-popup/src/KeyboardManager.tsx',
|
|
165
|
+
'react-native-auto-positioned-popup/lib/AutoPositionedPopup.style': './node_modules/react-native-auto-positioned-popup/src/AutoPositionedPopup.style.ts',
|
|
166
|
+
// If you also use react-native-advanced-flatlist
|
|
167
|
+
'react-native-advanced-flatlist': './node_modules/react-native-advanced-flatlist/src',
|
|
168
|
+
'react-native-advanced-flatlist/lib/index': './node_modules/react-native-advanced-flatlist/src/index.ts',
|
|
169
|
+
'react-native-advanced-flatlist/lib/AdvancedFlatList': './node_modules/react-native-advanced-flatlist/src/AdvancedFlatList.tsx',
|
|
170
|
+
} : baseAlias;
|
|
171
|
+
|
|
172
|
+
console.log(`Babel Config - Fake Mode: ${isFakeMode ? 'ENABLED' : 'DISABLED'}`);
|
|
173
|
+
if (isFakeMode) {
|
|
174
|
+
console.log('✅ Using react-native-auto-positioned-popup SOURCE files (.tsx)');
|
|
175
|
+
} else {
|
|
176
|
+
console.log('📦 Using react-native-auto-positioned-popup COMPILED files (.js)');
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
module.exports = {
|
|
180
|
+
presets: ['module:@react-native/babel-preset'],
|
|
181
|
+
plugins: [
|
|
182
|
+
[
|
|
183
|
+
require.resolve('babel-plugin-module-resolver'),
|
|
184
|
+
{
|
|
185
|
+
root: ['.', './src'],
|
|
186
|
+
extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
|
|
187
|
+
alias: aliasConfig,
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
// ... other plugins
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Advantages of this approach**:
|
|
196
|
+
- ✅ No need to set environment variables, just modify the `global.ts` file
|
|
197
|
+
- ✅ Can switch dynamically at runtime (restart Metro after modifying the file)
|
|
198
|
+
- ✅ More intuitive configuration with all settings centralized in one file
|
|
199
|
+
- ✅ Suitable for team collaboration, different developers can have different local configs
|
|
200
|
+
- ✅ Avoids environment variable compatibility issues across different operating systems
|
|
201
|
+
|
|
108
202
|
### TypeScript Configuration
|
|
109
203
|
|
|
110
204
|
When loading source files directly, ensure your `tsconfig.json` includes the necessary paths:
|
|
@@ -148,12 +242,13 @@ Then use the `AutoPositionedPopup` component:
|
|
|
148
242
|
```tsx
|
|
149
243
|
import React, { useState } from 'react';
|
|
150
244
|
import { View } from 'react-native';
|
|
151
|
-
import
|
|
245
|
+
import RNAutoPositionedPopup from 'react-native-auto-positioned-popup';
|
|
246
|
+
import type {SelectedItem as RNSelectedItem, Data as AutoPositionedPopupData} from 'react-native-auto-positioned-popup';
|
|
152
247
|
|
|
153
248
|
const MyComponent = () => {
|
|
154
|
-
const [selectedItem, setSelectedItem] = useState<
|
|
249
|
+
const [selectedItem, setSelectedItem] = useState<RNSelectedItem | undefined>();
|
|
155
250
|
|
|
156
|
-
const fetchData = async ({ pageIndex, pageSize, searchQuery }): Promise<
|
|
251
|
+
const fetchData = async ({ pageIndex, pageSize, searchQuery }): Promise<AutoPositionedPopupData | null> => {
|
|
157
252
|
// Your data fetching logic here
|
|
158
253
|
return {
|
|
159
254
|
items: [
|
|
@@ -168,7 +263,7 @@ const MyComponent = () => {
|
|
|
168
263
|
|
|
169
264
|
return (
|
|
170
265
|
<View style={{ padding: 20 }}>
|
|
171
|
-
<
|
|
266
|
+
<RNAutoPositionedPopup
|
|
172
267
|
tag="example-popup"
|
|
173
268
|
placeholder="Select an option"
|
|
174
269
|
selectedItem={selectedItem}
|
|
@@ -245,10 +340,11 @@ This example shows a complete implementation without search input, suitable for
|
|
|
245
340
|
```tsx
|
|
246
341
|
import React, { useState } from 'react';
|
|
247
342
|
import { View, Text, Image, StyleSheet } from 'react-native';
|
|
248
|
-
import
|
|
343
|
+
import RNAutoPositionedPopup, { RootViewProvider } from 'react-native-auto-positioned-popup';
|
|
344
|
+
import type {SelectedItem as RNSelectedItem, Data as AutoPositionedPopupData} from 'react-native-auto-positioned-popup';
|
|
249
345
|
|
|
250
346
|
// Sample data type with color support
|
|
251
|
-
interface ClinicItem extends
|
|
347
|
+
interface ClinicItem extends RNSelectedItem {
|
|
252
348
|
code: string;
|
|
253
349
|
textColor: string;
|
|
254
350
|
address?: string;
|
|
@@ -257,7 +353,7 @@ interface ClinicItem extends SelectedItem {
|
|
|
257
353
|
const ClinicSelector = () => {
|
|
258
354
|
const [selectedClinic, setSelectedClinic] = useState<ClinicItem | null>(null);
|
|
259
355
|
|
|
260
|
-
const fetchClinics = async ({ pageIndex, pageSize }): Promise<
|
|
356
|
+
const fetchClinics = async ({ pageIndex, pageSize }): Promise<AutoPositionedPopupData | null> => {
|
|
261
357
|
// Simulate API call
|
|
262
358
|
const mockClinics = [
|
|
263
359
|
{ id: '1', title: 'Main Clinic', code: 'MC001', textColor: '#4CAF50', address: '123 Main St' },
|
|
@@ -278,7 +374,7 @@ const ClinicSelector = () => {
|
|
|
278
374
|
return (
|
|
279
375
|
<RootViewProvider>
|
|
280
376
|
<View style={styles.container}>
|
|
281
|
-
<
|
|
377
|
+
<RNAutoPositionedPopup
|
|
282
378
|
tag="clinic-selector"
|
|
283
379
|
useTextInput={false}
|
|
284
380
|
localSearch={false}
|
package/README_zh.md
CHANGED
|
@@ -105,6 +105,100 @@ module.exports = {
|
|
|
105
105
|
};
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
+
#### 通过 global.$fake 动态控制(推荐方式)
|
|
109
|
+
|
|
110
|
+
更高级的用法是通过项目的全局配置文件动态控制是否加载源码。这种方式允许在运行时切换而无需修改环境变量:
|
|
111
|
+
|
|
112
|
+
1. 在项目根目录创建或修改 `global.ts` 文件:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// global.ts
|
|
116
|
+
declare global {
|
|
117
|
+
var $fake: boolean;
|
|
118
|
+
// ... 其他全局变量
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// 设置为 true 时加载源码(开发模式)
|
|
122
|
+
// 设置为 false 时使用编译文件(生产模式)
|
|
123
|
+
global.$fake = true; // 或 false
|
|
124
|
+
|
|
125
|
+
export {};
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
2. 在 `babel.config.js` 中读取 `global.$fake` 的值:
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
const fs = require('fs');
|
|
132
|
+
const path = require('path');
|
|
133
|
+
|
|
134
|
+
// 检查 global.$fake 的值
|
|
135
|
+
const checkFakeMode = () => {
|
|
136
|
+
try {
|
|
137
|
+
const globalPath = path.resolve(__dirname, 'global.ts');
|
|
138
|
+
const globalContent = fs.readFileSync(globalPath, 'utf8');
|
|
139
|
+
// 检查 global.$fake 是否为 true
|
|
140
|
+
const fakeMatch = globalContent.match(/\$fake\s*=\s*(true|false)/);
|
|
141
|
+
return fakeMatch && fakeMatch[1] === 'true';
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.warn('Unable to read global.ts, defaulting to false:', error.message);
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const isFakeMode = checkFakeMode();
|
|
149
|
+
|
|
150
|
+
// 基础别名配置
|
|
151
|
+
const baseAlias = {
|
|
152
|
+
// ... 你的基础别名
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// 如果是 fake 模式,添加源码重定向
|
|
156
|
+
const aliasConfig = isFakeMode ? {
|
|
157
|
+
...baseAlias,
|
|
158
|
+
// 重定向 react-native-auto-positioned-popup 到源码文件
|
|
159
|
+
'react-native-auto-positioned-popup': './node_modules/react-native-auto-positioned-popup/src',
|
|
160
|
+
'react-native-auto-positioned-popup/lib/index': './node_modules/react-native-auto-positioned-popup/src/index.ts',
|
|
161
|
+
'react-native-auto-positioned-popup/lib/AutoPositionedPopup': './node_modules/react-native-auto-positioned-popup/src/AutoPositionedPopup.tsx',
|
|
162
|
+
'react-native-auto-positioned-popup/lib/AutoPositionedPopupProps': './node_modules/react-native-auto-positioned-popup/src/AutoPositionedPopupProps.ts',
|
|
163
|
+
'react-native-auto-positioned-popup/lib/RootViewContext': './node_modules/react-native-auto-positioned-popup/src/RootViewContext.tsx',
|
|
164
|
+
'react-native-auto-positioned-popup/lib/KeyboardManager': './node_modules/react-native-auto-positioned-popup/src/KeyboardManager.tsx',
|
|
165
|
+
'react-native-auto-positioned-popup/lib/AutoPositionedPopup.style': './node_modules/react-native-auto-positioned-popup/src/AutoPositionedPopup.style.ts',
|
|
166
|
+
// 如果你也使用 react-native-advanced-flatlist
|
|
167
|
+
'react-native-advanced-flatlist': './node_modules/react-native-advanced-flatlist/src',
|
|
168
|
+
'react-native-advanced-flatlist/lib/index': './node_modules/react-native-advanced-flatlist/src/index.ts',
|
|
169
|
+
'react-native-advanced-flatlist/lib/AdvancedFlatList': './node_modules/react-native-advanced-flatlist/src/AdvancedFlatList.tsx',
|
|
170
|
+
} : baseAlias;
|
|
171
|
+
|
|
172
|
+
console.log(`Babel Config - Fake Mode: ${isFakeMode ? 'ENABLED' : 'DISABLED'}`);
|
|
173
|
+
if (isFakeMode) {
|
|
174
|
+
console.log('✅ Using react-native-auto-positioned-popup SOURCE files (.tsx)');
|
|
175
|
+
} else {
|
|
176
|
+
console.log('📦 Using react-native-auto-positioned-popup COMPILED files (.js)');
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
module.exports = {
|
|
180
|
+
presets: ['module:@react-native/babel-preset'],
|
|
181
|
+
plugins: [
|
|
182
|
+
[
|
|
183
|
+
require.resolve('babel-plugin-module-resolver'),
|
|
184
|
+
{
|
|
185
|
+
root: ['.', './src'],
|
|
186
|
+
extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
|
|
187
|
+
alias: aliasConfig,
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
// ... 其他插件
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**这种方式的优势**:
|
|
196
|
+
- ✅ 无需设置环境变量,只需修改 `global.ts` 文件
|
|
197
|
+
- ✅ 可以在运行时动态切换(修改文件后重启 Metro)
|
|
198
|
+
- ✅ 更直观的配置方式,所有配置集中在一个文件
|
|
199
|
+
- ✅ 适合团队协作,不同开发者可以有不同的本地配置
|
|
200
|
+
- ✅ 避免了环境变量在不同操作系统的兼容性问题
|
|
201
|
+
|
|
108
202
|
### TypeScript 配置
|
|
109
203
|
|
|
110
204
|
当直接加载源文件时,确保你的 `tsconfig.json` 包含必要的路径:
|
|
@@ -148,12 +242,13 @@ const App = () => {
|
|
|
148
242
|
```tsx
|
|
149
243
|
import React, { useState } from 'react';
|
|
150
244
|
import { View } from 'react-native';
|
|
151
|
-
import
|
|
245
|
+
import RNAutoPositionedPopup from 'react-native-auto-positioned-popup';
|
|
246
|
+
import type {SelectedItem as RNSelectedItem, Data as AutoPositionedPopupData} from 'react-native-auto-positioned-popup';
|
|
152
247
|
|
|
153
248
|
const MyComponent = () => {
|
|
154
|
-
const [selectedItem, setSelectedItem] = useState<
|
|
249
|
+
const [selectedItem, setSelectedItem] = useState<RNSelectedItem | undefined>();
|
|
155
250
|
|
|
156
|
-
const fetchData = async ({ pageIndex, pageSize, searchQuery }): Promise<
|
|
251
|
+
const fetchData = async ({ pageIndex, pageSize, searchQuery }): Promise<AutoPositionedPopupData | null> => {
|
|
157
252
|
// 你的数据获取逻辑
|
|
158
253
|
return {
|
|
159
254
|
items: [
|
|
@@ -168,7 +263,7 @@ const MyComponent = () => {
|
|
|
168
263
|
|
|
169
264
|
return (
|
|
170
265
|
<View style={{ padding: 20 }}>
|
|
171
|
-
<
|
|
266
|
+
<RNAutoPositionedPopup
|
|
172
267
|
tag="example-popup"
|
|
173
268
|
placeholder="请选择一个选项"
|
|
174
269
|
selectedItem={selectedItem}
|
|
@@ -245,10 +340,11 @@ export default MyComponent;
|
|
|
245
340
|
```tsx
|
|
246
341
|
import React, { useState } from 'react';
|
|
247
342
|
import { View, Text, Image, StyleSheet } from 'react-native';
|
|
248
|
-
import
|
|
343
|
+
import RNAutoPositionedPopup from 'react-native-auto-positioned-popup';
|
|
344
|
+
import type {SelectedItem as RNSelectedItem, Data as AutoPositionedPopupData} from 'react-native-auto-positioned-popup';
|
|
249
345
|
|
|
250
346
|
// 支持颜色的数据类型示例
|
|
251
|
-
interface ClinicItem extends
|
|
347
|
+
interface ClinicItem extends RNSelectedItem {
|
|
252
348
|
code: string;
|
|
253
349
|
textColor: string;
|
|
254
350
|
address?: string;
|
|
@@ -257,7 +353,7 @@ interface ClinicItem extends SelectedItem {
|
|
|
257
353
|
const ClinicSelector = () => {
|
|
258
354
|
const [selectedClinic, setSelectedClinic] = useState<ClinicItem | null>(null);
|
|
259
355
|
|
|
260
|
-
const fetchClinics = async ({ pageIndex, pageSize }): Promise<
|
|
356
|
+
const fetchClinics = async ({ pageIndex, pageSize }): Promise<AutoPositionedPopupData | null> => {
|
|
261
357
|
// 模拟 API 调用
|
|
262
358
|
const mockClinics = [
|
|
263
359
|
{ id: '1', title: '主诊所', code: 'MC001', textColor: '#4CAF50', address: '主街123号' },
|
|
@@ -278,7 +374,7 @@ const ClinicSelector = () => {
|
|
|
278
374
|
return (
|
|
279
375
|
<RootViewProvider>
|
|
280
376
|
<View style={styles.container}>
|
|
281
|
-
<
|
|
377
|
+
<RNAutoPositionedPopup
|
|
282
378
|
tag="clinic-selector"
|
|
283
379
|
useTextInput={false}
|
|
284
380
|
localSearch={false}
|
|
@@ -523,4 +619,4 @@ MIT © [Stark](https://github.com/your-username)
|
|
|
523
619
|
- 自动定位功能
|
|
524
620
|
- 搜索支持
|
|
525
621
|
- TypeScript 定义
|
|
526
|
-
- 跨平台兼容性
|
|
622
|
+
- 跨平台兼容性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoPositionedPopup.d.ts","sourceRoot":"","sources":["../src/AutoPositionedPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAYN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoPositionedPopup.d.ts","sourceRoot":"","sources":["../src/AutoPositionedPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAYN,MAAM,OAAO,CAAC;AAcf,OAAO,EAAC,wBAAwB,EAAqB,MAAM,4BAA4B,CAAC;AA4RxF,QAAA,MAAM,mBAAmB,qFA+vBxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState, } from 'react';
|
|
2
|
-
import { Dimensions, Keyboard, Text, TextInput as RNTextInput, TouchableOpacity, View, } from 'react-native';
|
|
2
|
+
import { Dimensions, Keyboard, Platform, StatusBar, Text, TextInput as RNTextInput, TouchableOpacity, View, } from 'react-native';
|
|
3
3
|
import { AdvancedFlatList } from 'react-native-advanced-flatlist';
|
|
4
4
|
import styles from './AutoPositionedPopup.style';
|
|
5
5
|
import { useRootView } from './RootViewContext';
|
|
@@ -35,7 +35,8 @@ const ListItem = memo(({ updateState, item, index, selectedItem, }) => {
|
|
|
35
35
|
}, [rootViews]);
|
|
36
36
|
return useMemo(() => {
|
|
37
37
|
// console.log('AutoPositionedPopup.tsx ListItem index=', index);
|
|
38
|
-
|
|
38
|
+
console.log('AutoPositionedPopup.tsx ListItem item=', item);
|
|
39
|
+
console.log('AutoPositionedPopup.tsx ListItem selectedItem=', selectedItem);
|
|
39
40
|
const isSelected = item.id === (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id);
|
|
40
41
|
return (<TouchableOpacity key={item.id} style={[
|
|
41
42
|
styles.commonModalRow,
|
|
@@ -51,7 +52,7 @@ const ListItem = memo(({ updateState, item, index, selectedItem, }) => {
|
|
|
51
52
|
</TouchableOpacity>);
|
|
52
53
|
}, [updateState, item, index, selectedItem, rootViewsRef]);
|
|
53
54
|
});
|
|
54
|
-
const AutoPositionedPopupList = memo(({ tag, updateState, fetchData, keyExtractor = (item) => String(item.id), renderItem, selectedItem, localSearch, pageSize, }) => {
|
|
55
|
+
const AutoPositionedPopupList = memo(({ tag, updateState, fetchData, keyExtractor = (item) => String(item.id), renderItem, selectedItem, localSearch, pageSize, showListEmptyComponent, emptyText }) => {
|
|
55
56
|
const [state, setState] = useState({
|
|
56
57
|
selectedItem: selectedItem,
|
|
57
58
|
localData: [],
|
|
@@ -160,7 +161,7 @@ const AutoPositionedPopupList = memo(({ tag, updateState, fetchData, keyExtracto
|
|
|
160
161
|
// Babel configuration handles the path redirection based on global.$fake
|
|
161
162
|
// No need for conditional import here
|
|
162
163
|
return (<View style={[styles.baseModalView, styles.autoPositionedPopupList]}>
|
|
163
|
-
<AdvancedFlatList style={[{ borderRadius: 0 }]} {...(ref_list && { ref: ref_list })} keyExtractor={(item, index) => keyExtractor ? keyExtractor(item) : item.id} keyboardShouldPersistTaps={'always'} fetchData={_fetchData} renderItem={renderItem ? ({ item, index }) => renderItem({ item: item, index }) : ({ item, index }) => _renderItem({ item: item, index })}/>
|
|
164
|
+
<AdvancedFlatList style={[{ borderRadius: 0 }]} {...(ref_list && { ref: ref_list })} keyExtractor={(item, index) => keyExtractor ? keyExtractor(item) : item.id} keyboardShouldPersistTaps={'always'} fetchData={_fetchData} renderItem={renderItem ? ({ item, index }) => renderItem({ item: item, index }) : ({ item, index }) => _renderItem({ item: item, index })} showListEmptyComponent={showListEmptyComponent} emptyText={emptyText}/>
|
|
164
165
|
</View>);
|
|
165
166
|
}, [tag,
|
|
166
167
|
updateState,
|
|
@@ -172,7 +173,7 @@ const AutoPositionedPopupList = memo(({ tag, updateState, fetchData, keyExtracto
|
|
|
172
173
|
searchQuery,
|
|
173
174
|
localSearch,
|
|
174
175
|
pageSize,
|
|
175
|
-
rootViewsRef,
|
|
176
|
+
rootViewsRef, showListEmptyComponent, emptyText
|
|
176
177
|
]);
|
|
177
178
|
});
|
|
178
179
|
// List layout constants
|
|
@@ -198,7 +199,7 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
198
199
|
console.warn('Error in fetch operation:', e);
|
|
199
200
|
}
|
|
200
201
|
return res;
|
|
201
|
-
}, renderItem, onItemSelected, localSearch = false, pageSize = 20, selectedItem, useTextInput = false, btwChildren, CustomRow = ({ children }) => <View>{children}</View>, keyExtractor = (item) => String((item === null || item === void 0 ? void 0 : item.id) || ''), AutoPositionedPopupBtnDisabled = false, forceRemoveAllRootViewOnItemSelected = false, centerDisplay = false, selectedItemBackgroundColor = 'rgba(116, 116, 128, 0.08)', textAlign = 'right', CustomPopView = undefined, CustomPopViewStyle } = props;
|
|
202
|
+
}, renderItem, onItemSelected, localSearch = false, pageSize = 20, selectedItem, useTextInput = false, btwChildren, CustomRow = ({ children }) => <View>{children}</View>, keyExtractor = (item) => String((item === null || item === void 0 ? void 0 : item.id) || ''), AutoPositionedPopupBtnDisabled = false, forceRemoveAllRootViewOnItemSelected = false, centerDisplay = false, selectedItemBackgroundColor = 'rgba(116, 116, 128, 0.08)', textAlign = 'right', CustomPopView = undefined, CustomPopViewStyle, showListEmptyComponent = true, emptyText = '' } = props;
|
|
202
203
|
// State management similar to project implementation
|
|
203
204
|
const [state, setState] = useState({
|
|
204
205
|
isFocus: false,
|
|
@@ -336,11 +337,26 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
336
337
|
if (state.isFocus) {
|
|
337
338
|
(_b = refAutoPositionedPopup.current) === null || _b === void 0 ? void 0 : _b.measureInWindow((x, y, width, height) => {
|
|
338
339
|
console.log('AutoPositionedPopup measureInWindow x=', x, ' y=', y, ' width=', width, ' height=', height);
|
|
339
|
-
// INTELLIGENT POSITION CALCULATION
|
|
340
|
+
// INTELLIGENT POSITION CALCULATION - MODIFIED VERSION WITH STATUS BAR SAFETY
|
|
340
341
|
const calculateOptimalPosition = (componentY, componentHeight, popupHeight) => {
|
|
342
|
+
console.log('🔥🔥🔥 NEW CALCULATE OPTIMAL POSITION FUNCTION EXECUTING 🔥🔥🔥');
|
|
341
343
|
// Use window height (visible area) instead of screen height (includes status bar)
|
|
342
344
|
const windowHeight = Dimensions.get('window').height;
|
|
343
345
|
const visibleAreaCenter = windowHeight / 2;
|
|
346
|
+
// Cross-platform status bar height handling
|
|
347
|
+
const getStatusBarHeight = () => {
|
|
348
|
+
if (Platform.OS === 'android') {
|
|
349
|
+
return StatusBar.currentHeight || 24; // Android default
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
// iOS status bar heights vary by device
|
|
353
|
+
const { height: screenHeight } = Dimensions.get('screen');
|
|
354
|
+
const { height: windowHeightLocal } = Dimensions.get('window');
|
|
355
|
+
return screenHeight - windowHeightLocal; // Safe area top
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
const statusBarHeight = getStatusBarHeight();
|
|
359
|
+
console.log('🔥 Cross-platform StatusBar height:', statusBarHeight, 'Platform:', Platform.OS);
|
|
344
360
|
// Calculate component center point as requested
|
|
345
361
|
const componentCenterY = componentY + componentHeight / 2;
|
|
346
362
|
console.log('AutoPositionedPopup positioning data:', {
|
|
@@ -349,75 +365,163 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
349
365
|
componentCenterY,
|
|
350
366
|
componentY,
|
|
351
367
|
componentHeight,
|
|
352
|
-
popupHeight
|
|
368
|
+
popupHeight,
|
|
369
|
+
statusBarHeight
|
|
353
370
|
});
|
|
354
371
|
let showAbove = false;
|
|
355
|
-
let finalY = componentY + componentHeight; // Default: show below
|
|
356
|
-
//
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
372
|
+
let finalY = componentY + componentHeight; // Default fallback: show below
|
|
373
|
+
// CORRECTED LOGIC: Calculate actual usable space considering status bar
|
|
374
|
+
const rawSpaceAbove = componentY;
|
|
375
|
+
const spaceBelow = windowHeight - (componentY + componentHeight);
|
|
376
|
+
// Actual usable space above must account for status bar
|
|
377
|
+
const usableSpaceAbove = componentY - statusBarHeight;
|
|
378
|
+
console.log('🔥 AutoPositionedPopup CORRECTED SPACE CALCULATION (pre-spacing):', {
|
|
379
|
+
rawSpaceAbove,
|
|
380
|
+
usableSpaceAbove,
|
|
381
|
+
spaceBelow,
|
|
382
|
+
popupHeight,
|
|
383
|
+
componentY,
|
|
384
|
+
componentHeight,
|
|
385
|
+
windowHeight,
|
|
386
|
+
statusBarHeight
|
|
387
|
+
});
|
|
388
|
+
// ULTRA-TIGHT SPACING: Minimal spacing for tight visual connection
|
|
389
|
+
const getOptimalSpacing = (compY, compHeight, winHeight) => {
|
|
390
|
+
const componentCenter = compY + compHeight / 2;
|
|
391
|
+
const screenCenter = winHeight / 2;
|
|
392
|
+
const distanceFromCenter = Math.abs(componentCenter - screenCenter) / screenCenter;
|
|
393
|
+
// Check if component is in bottom half for ultra-tight spacing
|
|
394
|
+
const isInBottomHalf = componentCenter > screenCenter;
|
|
395
|
+
// Base spacing: extremely small for bottom components
|
|
396
|
+
const baseSpacing = isInBottomHalf ? 0.5 : 3;
|
|
397
|
+
// Aggressive spacing reduction for edge positions - ultra tight for bottom half
|
|
398
|
+
const edgeProximityFactor = isInBottomHalf ?
|
|
399
|
+
Math.max(0.15, 1 - distanceFromCenter * 1.2) :
|
|
400
|
+
Math.max(0.4, 1 - distanceFromCenter * 0.7);
|
|
401
|
+
// Minimal component-relative spacing for bottom components
|
|
402
|
+
const relativeSpacingPercent = isInBottomHalf ? 0.02 : 0.12;
|
|
403
|
+
const relativeSpacing = Math.min(compHeight * relativeSpacingPercent, isInBottomHalf ? 3 : 10);
|
|
404
|
+
// Strong platform adjustment - much smaller for Android bottom components
|
|
405
|
+
const platformMultiplier = Platform.OS === 'ios' ? 1.0 : (isInBottomHalf ? 0.5 : 0.9);
|
|
406
|
+
const finalSpacing = Math.max(baseSpacing, relativeSpacing) * edgeProximityFactor * platformMultiplier;
|
|
407
|
+
console.log('🔥 Advanced spacing calculation:', {
|
|
408
|
+
componentCenter,
|
|
409
|
+
screenCenter,
|
|
410
|
+
distanceFromCenter,
|
|
411
|
+
isInBottomHalf,
|
|
412
|
+
edgeProximityFactor,
|
|
413
|
+
baseSpacing,
|
|
414
|
+
relativeSpacing,
|
|
415
|
+
relativeSpacingPercent,
|
|
416
|
+
platformMultiplier,
|
|
417
|
+
finalSpacing
|
|
418
|
+
});
|
|
419
|
+
return finalSpacing;
|
|
420
|
+
};
|
|
421
|
+
// const POPUP_SPACING = getOptimalSpacing(componentY, componentHeight, windowHeight);
|
|
422
|
+
// console.log('🔥 Optimal popup spacing calculated:', POPUP_SPACING, 'for componentHeight:', componentHeight, 'at Y:', componentY);
|
|
423
|
+
// console.log('🔥 AutoPositionedPopup FINAL SPACE CHECK WITH SPACING:', {
|
|
424
|
+
// POPUP_SPACING,
|
|
425
|
+
// 'usableSpaceAbove >= popupHeight + POPUP_SPACING': usableSpaceAbove >= popupHeight + POPUP_SPACING,
|
|
426
|
+
// 'spaceBelow >= popupHeight + POPUP_SPACING': spaceBelow >= popupHeight + POPUP_SPACING,
|
|
427
|
+
// 'usableSpaceAbove needed': popupHeight + POPUP_SPACING,
|
|
428
|
+
// 'spaceBelow needed': popupHeight + POPUP_SPACING
|
|
429
|
+
// });
|
|
430
|
+
// FORCE ABOVE PRIORITY: If component is in bottom half, always try above first
|
|
431
|
+
const isInBottomHalf = componentCenterY > visibleAreaCenter;
|
|
432
|
+
// console.log('🔥 Position decision factors:', {
|
|
433
|
+
// isInBottomHalf,
|
|
434
|
+
// componentCenterY,
|
|
435
|
+
// visibleAreaCenter,
|
|
436
|
+
// 'spaceBelow >= needed': spaceBelow >= popupHeight + POPUP_SPACING,
|
|
437
|
+
// 'usableSpaceAbove >= needed': usableSpaceAbove >= popupHeight + POPUP_SPACING
|
|
438
|
+
// });
|
|
439
|
+
if (isInBottomHalf && usableSpaceAbove >= popupHeight) {
|
|
440
|
+
// Component in bottom half + enough space above = FORCE ABOVE
|
|
441
|
+
showAbove = true;
|
|
442
|
+
finalY = componentY - popupHeight + componentHeight / 2;
|
|
443
|
+
console.log('🔥 AutoPositionedPopup: FORCE ABOVE - bottom half component with enough space, finalY=', finalY);
|
|
444
|
+
}
|
|
445
|
+
else if (!isInBottomHalf && spaceBelow >= popupHeight) {
|
|
446
|
+
// Component in top half + enough space below = show below
|
|
447
|
+
showAbove = false;
|
|
448
|
+
finalY = componentY + componentHeight * 2;
|
|
449
|
+
console.log('🔥 AutoPositionedPopup: Showing below - top half component with enough space, finalY=', finalY);
|
|
450
|
+
}
|
|
451
|
+
else if (usableSpaceAbove >= popupHeight) {
|
|
452
|
+
// Fallback: enough space above
|
|
453
|
+
showAbove = true;
|
|
454
|
+
finalY = componentY - popupHeight;
|
|
455
|
+
console.log('🔥 AutoPositionedPopup: Showing above - enough space available (fallback), finalY=', finalY);
|
|
456
|
+
}
|
|
457
|
+
else if (spaceBelow >= popupHeight) {
|
|
458
|
+
// Fallback: enough space below
|
|
459
|
+
showAbove = false;
|
|
460
|
+
finalY = componentY + componentHeight;
|
|
461
|
+
console.log('🔥 AutoPositionedPopup: Showing below - enough space available (fallback), finalY=', finalY);
|
|
377
462
|
}
|
|
378
463
|
else {
|
|
379
|
-
//
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
464
|
+
// Emergency fallback: choose larger space
|
|
465
|
+
if (usableSpaceAbove >= spaceBelow) {
|
|
466
|
+
showAbove = true;
|
|
467
|
+
finalY = Math.max(statusBarHeight, componentY - popupHeight);
|
|
468
|
+
console.log('🔥 AutoPositionedPopup: Emergency above - larger space, finalY=', finalY);
|
|
384
469
|
}
|
|
385
470
|
else {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
showAbove = true;
|
|
390
|
-
finalY = componentY - popupHeight;
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
// Force below with clipping
|
|
394
|
-
finalY = Math.min(windowHeight - popupHeight, componentY + componentHeight);
|
|
395
|
-
}
|
|
471
|
+
showAbove = false;
|
|
472
|
+
finalY = componentY + componentHeight;
|
|
473
|
+
console.log('🔥 AutoPositionedPopup: Emergency below - larger space, finalY=', finalY);
|
|
396
474
|
}
|
|
397
475
|
}
|
|
398
|
-
//
|
|
399
|
-
|
|
400
|
-
finalY
|
|
476
|
+
// Enhanced boundary check with detailed logging
|
|
477
|
+
console.log('🔥 Pre-boundary check:', {
|
|
478
|
+
originalFinalY: finalY,
|
|
479
|
+
showAbove,
|
|
480
|
+
statusBarHeight,
|
|
481
|
+
windowHeight,
|
|
482
|
+
popupHeight,
|
|
483
|
+
'finalY < statusBarHeight': finalY < statusBarHeight,
|
|
484
|
+
'finalY + popupHeight > windowHeight': finalY + popupHeight > windowHeight
|
|
485
|
+
});
|
|
486
|
+
if (showAbove && finalY < statusBarHeight) {
|
|
487
|
+
const oldFinalY = finalY;
|
|
488
|
+
finalY = statusBarHeight;
|
|
489
|
+
console.log('🔥 BOUNDARY FIX: Above display adjusted for status bar:', oldFinalY, '->', finalY);
|
|
401
490
|
}
|
|
402
|
-
if (finalY + popupHeight > windowHeight) {
|
|
491
|
+
if (!showAbove && finalY + popupHeight > windowHeight) {
|
|
492
|
+
const oldFinalY = finalY;
|
|
403
493
|
finalY = windowHeight - popupHeight;
|
|
494
|
+
console.log('🔥 BOUNDARY FIX: Below display adjusted to fit window:', oldFinalY, '->', finalY);
|
|
495
|
+
}
|
|
496
|
+
// CRITICAL CHECK: Detect if boundary check is changing display direction
|
|
497
|
+
if (showAbove && finalY + popupHeight > componentY) {
|
|
498
|
+
console.log('🚨 WARNING: Above positioning may overlap with component!');
|
|
404
499
|
}
|
|
500
|
+
if (!showAbove && finalY < componentY + componentHeight) {
|
|
501
|
+
console.log('🚨 WARNING: Below positioning may overlap with component!');
|
|
502
|
+
}
|
|
503
|
+
console.log('🔥 Post-boundary check final result:', {
|
|
504
|
+
finalY,
|
|
505
|
+
showAbove,
|
|
506
|
+
'popupTop': finalY,
|
|
507
|
+
'popupBottom': finalY + popupHeight,
|
|
508
|
+
'componentTop': componentY,
|
|
509
|
+
'componentBottom': componentY + componentHeight
|
|
510
|
+
});
|
|
405
511
|
return { finalY, showAbove };
|
|
406
512
|
};
|
|
407
|
-
|
|
408
|
-
|
|
513
|
+
// Calculate position ONCE based on actual popup height
|
|
514
|
+
const actualPopupHeight = CustomPopView && CustomPopViewStyle && typeof CustomPopViewStyle.height === 'number'
|
|
515
|
+
? CustomPopViewStyle.height
|
|
516
|
+
: listLayout.height;
|
|
517
|
+
console.log('🔥 Using actualPopupHeight for calculation:', actualPopupHeight, 'CustomPopView:', !!CustomPopView);
|
|
518
|
+
const positionResult = calculateOptimalPosition(y, height, actualPopupHeight);
|
|
519
|
+
console.log('AutoPositionedPopup FINAL position result:', positionResult);
|
|
409
520
|
ref_listPos.current = { x: x, y: positionResult.finalY, width: width };
|
|
410
521
|
console.log('AutoPositionedPopup ref_listPos.current=', ref_listPos.current);
|
|
411
522
|
if (CustomPopView && CustomPopViewStyle) {
|
|
412
523
|
console.log('AutoPositionedPopup CustomPopViewStyle=', CustomPopViewStyle);
|
|
413
|
-
//
|
|
414
|
-
const customHeight = typeof CustomPopViewStyle.height === 'number' ? CustomPopViewStyle.height : listLayout.height;
|
|
415
|
-
// Apply same intelligent positioning strategy for CustomPopView
|
|
416
|
-
console.log('AutoPositionedPopup CustomPopView using intelligent positioning, customHeight=', customHeight);
|
|
417
|
-
// Use the same intelligent positioning function for CustomPopView
|
|
418
|
-
const customPositionResult = calculateOptimalPosition(y, height, customHeight);
|
|
419
|
-
console.log('AutoPositionedPopup CustomPopView position result:', customPositionResult, 'tag=', tag);
|
|
420
|
-
ref_listPos.current = { x: x, y: customPositionResult.finalY, width: width };
|
|
524
|
+
// Position already calculated correctly above, no need to recalculate
|
|
421
525
|
const PopViewComponent = CustomPopView();
|
|
422
526
|
console.log('AutoPositionedPopup addRootView PopViewComponent=', PopViewComponent);
|
|
423
527
|
console.log('AutoPositionedPopup addRootView state.selectedItem=', state.selectedItem);
|
|
@@ -452,7 +556,7 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
452
556
|
height: listLayout.height,
|
|
453
557
|
opacity: 1,
|
|
454
558
|
},
|
|
455
|
-
component: (<AutoPositionedPopupList tag={tag} updateState={updateState} fetchData={fetchData} pageSize={pageSize} renderItem={renderItem} selectedItem={state.selectedItem} localSearch={localSearch}/>),
|
|
559
|
+
component: (<AutoPositionedPopupList tag={tag} updateState={updateState} fetchData={fetchData} pageSize={pageSize} renderItem={renderItem} selectedItem={state.selectedItem} localSearch={localSearch} showListEmptyComponent={showListEmptyComponent} emptyText={emptyText}/>),
|
|
456
560
|
useModal: true,
|
|
457
561
|
onModalClose: () => {
|
|
458
562
|
console.log('AutoPositionedPopup onModalClose tag=', tag);
|
|
@@ -485,7 +589,7 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
485
589
|
CustomPopViewStyle,
|
|
486
590
|
forceRemoveAllRootViewOnItemSelected,
|
|
487
591
|
tag,
|
|
488
|
-
state.selectedItem,
|
|
592
|
+
state.selectedItem, showListEmptyComponent
|
|
489
593
|
]);
|
|
490
594
|
// Imperative handle for parent component access
|
|
491
595
|
useImperativeHandle(parentRef, () => ({
|
|
@@ -541,7 +645,7 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
541
645
|
height: listLayout.height,
|
|
542
646
|
opacity: 0,
|
|
543
647
|
},
|
|
544
|
-
component: (<AutoPositionedPopupList tag={tag} updateState={updateState} fetchData={fetchData} pageSize={pageSize} renderItem={renderItem} selectedItem={state.selectedItem} localSearch={localSearch}/>),
|
|
648
|
+
component: (<AutoPositionedPopupList tag={tag} updateState={updateState} fetchData={fetchData} pageSize={pageSize} renderItem={renderItem} selectedItem={state.selectedItem} localSearch={localSearch} showListEmptyComponent={showListEmptyComponent} emptyText={emptyText}/>),
|
|
545
649
|
useModal: false,
|
|
546
650
|
});
|
|
547
651
|
}
|
|
@@ -633,7 +737,7 @@ const AutoPositionedPopup = memo(forwardRef((props, parentRef) => {
|
|
|
633
737
|
forceRemoveAllRootViewOnItemSelected,
|
|
634
738
|
inputStyle,
|
|
635
739
|
TextInputProps,
|
|
636
|
-
state.isFocus,]);
|
|
740
|
+
state.isFocus, showListEmptyComponent, emptyText]);
|
|
637
741
|
}));
|
|
638
742
|
export default AutoPositionedPopup;
|
|
639
743
|
//# sourceMappingURL=AutoPositionedPopup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoPositionedPopup.js","sourceRoot":"","sources":["../src/AutoPositionedPopup.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutoPositionedPopup.js","sourceRoot":"","sources":["../src/AutoPositionedPopup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -54,5 +54,7 @@ export interface AutoPositionedPopupProps {
|
|
|
54
54
|
AutoPositionedPopupBtnDisabled?: boolean;
|
|
55
55
|
centerDisplay?: boolean;
|
|
56
56
|
selectedItemBackgroundColor?: string;
|
|
57
|
+
showListEmptyComponent?: boolean;
|
|
58
|
+
emptyText?: string;
|
|
57
59
|
}
|
|
58
60
|
//# sourceMappingURL=AutoPositionedPopupProps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoPositionedPopupProps.d.ts","sourceRoot":"","sources":["../src/AutoPositionedPopupProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,uDAAuD,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAEnF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,EACX,SAAS,EACT,QAAQ,EACR,WAAW,GACZ,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,YAAY,CAAC;IAC5F,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,+BAA+B,CAAC,KAAK,IAAI,CAAC;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,aAAa,CACvC,SAAS,GAAG;QACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,YAAY,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC;KACnC,CACF,CAAC;IACF,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,2BAA2B,CAAC,EAAE,SAAS,CAAC;IACxC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoPositionedPopupProps.d.ts","sourceRoot":"","sources":["../src/AutoPositionedPopupProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,uDAAuD,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAEnF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,EACX,SAAS,EACT,QAAQ,EACR,WAAW,GACZ,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,YAAY,CAAC;IAC5F,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,+BAA+B,CAAC,KAAK,IAAI,CAAC;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,aAAa,CACvC,SAAS,GAAG;QACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3B,YAAY,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC;KACnC,CACF,CAAC;IACF,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,2BAA2B,CAAC,EAAE,SAAS,CAAC;IACxC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAC,OAAO,CAAC;IAChC,SAAS,CAAC,EAAC,MAAM,CAAC;CACnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-auto-positioned-popup",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "A highly customizable React Native auto-positioned popup component with search functionality and flexible styling options",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -60,23 +60,23 @@
|
|
|
60
60
|
"react-native": ">=0.60.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@types/node": "^24.
|
|
64
|
-
"@types/react": "^19.
|
|
63
|
+
"@types/node": "^24.10.0",
|
|
64
|
+
"@types/react": "^19.2.2",
|
|
65
65
|
"@types/react-native": "^0.73.0",
|
|
66
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
67
|
-
"@typescript-eslint/parser": "^8.
|
|
68
|
-
"eslint": "^9.
|
|
66
|
+
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
67
|
+
"@typescript-eslint/parser": "^8.46.3",
|
|
68
|
+
"eslint": "^9.39.1",
|
|
69
69
|
"eslint-plugin-react": "^7.37.5",
|
|
70
|
-
"eslint-plugin-react-hooks": "^
|
|
70
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
71
71
|
"eslint-plugin-react-native": "^5.0.0",
|
|
72
|
-
"rimraf": "^6.0
|
|
73
|
-
"typescript": "^5.9.
|
|
72
|
+
"rimraf": "^6.1.0",
|
|
73
|
+
"typescript": "^5.9.3"
|
|
74
74
|
},
|
|
75
75
|
"engines": {
|
|
76
76
|
"node": ">=14.0.0"
|
|
77
77
|
},
|
|
78
78
|
"react-native": "lib/index.js",
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"react-native-advanced-flatlist": "^1.1.
|
|
80
|
+
"react-native-advanced-flatlist": "^1.1.2"
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -14,6 +14,8 @@ import React, {
|
|
|
14
14
|
import {
|
|
15
15
|
Dimensions,
|
|
16
16
|
Keyboard,
|
|
17
|
+
Platform,
|
|
18
|
+
StatusBar,
|
|
17
19
|
Text,
|
|
18
20
|
TextInput as RNTextInput,
|
|
19
21
|
TouchableOpacity,
|
|
@@ -87,7 +89,8 @@ const ListItem: React.FC<{
|
|
|
87
89
|
}, [rootViews]);
|
|
88
90
|
return useMemo(() => {
|
|
89
91
|
// console.log('AutoPositionedPopup.tsx ListItem index=', index);
|
|
90
|
-
|
|
92
|
+
console.log('AutoPositionedPopup.tsx ListItem item=', item);
|
|
93
|
+
console.log('AutoPositionedPopup.tsx ListItem selectedItem=', selectedItem);
|
|
91
94
|
const isSelected = item.id === selectedItem?.id;
|
|
92
95
|
return (
|
|
93
96
|
<TouchableOpacity
|
|
@@ -129,6 +132,8 @@ interface AutoPositionedPopupListProps {
|
|
|
129
132
|
selectedItem?: SelectedItem;
|
|
130
133
|
localSearch?: boolean;
|
|
131
134
|
pageSize?: number;
|
|
135
|
+
showListEmptyComponent?:boolean;
|
|
136
|
+
emptyText?: string;
|
|
132
137
|
}
|
|
133
138
|
|
|
134
139
|
const AutoPositionedPopupList: React.FC<AutoPositionedPopupListProps> = memo(
|
|
@@ -140,7 +145,7 @@ const AutoPositionedPopupList: React.FC<AutoPositionedPopupListProps> = memo(
|
|
|
140
145
|
renderItem,
|
|
141
146
|
selectedItem,
|
|
142
147
|
localSearch,
|
|
143
|
-
pageSize,
|
|
148
|
+
pageSize,showListEmptyComponent,emptyText
|
|
144
149
|
}: AutoPositionedPopupListProps): React.JSX.Element => {
|
|
145
150
|
const [state, setState] = useState<{
|
|
146
151
|
selectedItem?: SelectedItem;
|
|
@@ -271,6 +276,8 @@ const AutoPositionedPopupList: React.FC<AutoPositionedPopupListProps> = memo(
|
|
|
271
276
|
keyboardShouldPersistTaps={'always'}
|
|
272
277
|
fetchData={_fetchData}
|
|
273
278
|
renderItem={renderItem ? ({item, index}) => renderItem({item: item as SelectedItem, index}) : ({item, index}) => _renderItem({item: item as SelectedItem, index})}
|
|
279
|
+
showListEmptyComponent={showListEmptyComponent}
|
|
280
|
+
emptyText={emptyText}
|
|
274
281
|
/>
|
|
275
282
|
</View>
|
|
276
283
|
);
|
|
@@ -284,7 +291,7 @@ const AutoPositionedPopupList: React.FC<AutoPositionedPopupListProps> = memo(
|
|
|
284
291
|
searchQuery,
|
|
285
292
|
localSearch,
|
|
286
293
|
pageSize,
|
|
287
|
-
rootViewsRef,
|
|
294
|
+
rootViewsRef,showListEmptyComponent,emptyText
|
|
288
295
|
]);
|
|
289
296
|
}
|
|
290
297
|
);
|
|
@@ -353,7 +360,7 @@ const AutoPositionedPopup = memo(
|
|
|
353
360
|
centerDisplay = false,
|
|
354
361
|
selectedItemBackgroundColor = 'rgba(116, 116, 128, 0.08)',
|
|
355
362
|
textAlign = 'right',
|
|
356
|
-
CustomPopView = undefined, CustomPopViewStyle
|
|
363
|
+
CustomPopView = undefined, CustomPopViewStyle,showListEmptyComponent=true,emptyText=''
|
|
357
364
|
} = props;
|
|
358
365
|
// State management similar to project implementation
|
|
359
366
|
const [state, setState] = useState<StateProps>({
|
|
@@ -509,12 +516,28 @@ const AutoPositionedPopup = memo(
|
|
|
509
516
|
refAutoPositionedPopup.current?.measureInWindow((x: number, y: number, width: number, height: number) => {
|
|
510
517
|
console.log('AutoPositionedPopup measureInWindow x=', x, ' y=', y, ' width=', width, ' height=', height);
|
|
511
518
|
|
|
512
|
-
// INTELLIGENT POSITION CALCULATION
|
|
519
|
+
// INTELLIGENT POSITION CALCULATION - MODIFIED VERSION WITH STATUS BAR SAFETY
|
|
513
520
|
const calculateOptimalPosition = (componentY: number, componentHeight: number, popupHeight: number) => {
|
|
521
|
+
console.log('🔥🔥🔥 NEW CALCULATE OPTIMAL POSITION FUNCTION EXECUTING 🔥🔥🔥');
|
|
522
|
+
|
|
514
523
|
// Use window height (visible area) instead of screen height (includes status bar)
|
|
515
524
|
const windowHeight = Dimensions.get('window').height;
|
|
516
525
|
const visibleAreaCenter = windowHeight / 2;
|
|
517
526
|
|
|
527
|
+
// Cross-platform status bar height handling
|
|
528
|
+
const getStatusBarHeight = () => {
|
|
529
|
+
if (Platform.OS === 'android') {
|
|
530
|
+
return StatusBar.currentHeight || 24; // Android default
|
|
531
|
+
} else {
|
|
532
|
+
// iOS status bar heights vary by device
|
|
533
|
+
const {height: screenHeight} = Dimensions.get('screen');
|
|
534
|
+
const {height: windowHeightLocal} = Dimensions.get('window');
|
|
535
|
+
return screenHeight - windowHeightLocal; // Safe area top
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
const statusBarHeight = getStatusBarHeight();
|
|
539
|
+
console.log('🔥 Cross-platform StatusBar height:', statusBarHeight, 'Platform:', Platform.OS);
|
|
540
|
+
|
|
518
541
|
// Calculate component center point as requested
|
|
519
542
|
const componentCenterY = componentY + componentHeight / 2;
|
|
520
543
|
|
|
@@ -524,80 +547,186 @@ const AutoPositionedPopup = memo(
|
|
|
524
547
|
componentCenterY,
|
|
525
548
|
componentY,
|
|
526
549
|
componentHeight,
|
|
527
|
-
popupHeight
|
|
550
|
+
popupHeight,
|
|
551
|
+
statusBarHeight
|
|
528
552
|
});
|
|
529
553
|
|
|
530
554
|
let showAbove = false;
|
|
531
|
-
let finalY = componentY + componentHeight; // Default: show below
|
|
555
|
+
let finalY = componentY + componentHeight; // Default fallback: show below
|
|
532
556
|
|
|
533
|
-
//
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
557
|
+
// CORRECTED LOGIC: Calculate actual usable space considering status bar
|
|
558
|
+
const rawSpaceAbove = componentY;
|
|
559
|
+
const spaceBelow = windowHeight - (componentY + componentHeight);
|
|
560
|
+
// Actual usable space above must account for status bar
|
|
561
|
+
const usableSpaceAbove = componentY - statusBarHeight;
|
|
562
|
+
|
|
563
|
+
console.log('🔥 AutoPositionedPopup CORRECTED SPACE CALCULATION (pre-spacing):', {
|
|
564
|
+
rawSpaceAbove,
|
|
565
|
+
usableSpaceAbove,
|
|
566
|
+
spaceBelow,
|
|
567
|
+
popupHeight,
|
|
568
|
+
componentY,
|
|
569
|
+
componentHeight,
|
|
570
|
+
windowHeight,
|
|
571
|
+
statusBarHeight
|
|
572
|
+
});
|
|
573
|
+
|
|
574
|
+
// ULTRA-TIGHT SPACING: Minimal spacing for tight visual connection
|
|
575
|
+
const getOptimalSpacing = (compY: number, compHeight: number, winHeight: number) => {
|
|
576
|
+
const componentCenter = compY + compHeight / 2;
|
|
577
|
+
const screenCenter = winHeight / 2;
|
|
578
|
+
const distanceFromCenter = Math.abs(componentCenter - screenCenter) / screenCenter;
|
|
579
|
+
|
|
580
|
+
// Check if component is in bottom half for ultra-tight spacing
|
|
581
|
+
const isInBottomHalf = componentCenter > screenCenter;
|
|
582
|
+
|
|
583
|
+
// Base spacing: extremely small for bottom components
|
|
584
|
+
const baseSpacing = isInBottomHalf ? 0.5 : 3;
|
|
585
|
+
|
|
586
|
+
// Aggressive spacing reduction for edge positions - ultra tight for bottom half
|
|
587
|
+
const edgeProximityFactor = isInBottomHalf ?
|
|
588
|
+
Math.max(0.15, 1 - distanceFromCenter * 1.2) :
|
|
589
|
+
Math.max(0.4, 1 - distanceFromCenter * 0.7);
|
|
590
|
+
|
|
591
|
+
// Minimal component-relative spacing for bottom components
|
|
592
|
+
const relativeSpacingPercent = isInBottomHalf ? 0.02 : 0.12;
|
|
593
|
+
const relativeSpacing = Math.min(compHeight * relativeSpacingPercent, isInBottomHalf ? 3 : 10);
|
|
594
|
+
|
|
595
|
+
// Strong platform adjustment - much smaller for Android bottom components
|
|
596
|
+
const platformMultiplier = Platform.OS === 'ios' ? 1.0 : (isInBottomHalf ? 0.5 : 0.9);
|
|
597
|
+
|
|
598
|
+
const finalSpacing = Math.max(baseSpacing, relativeSpacing) * edgeProximityFactor * platformMultiplier;
|
|
599
|
+
|
|
600
|
+
console.log('🔥 Advanced spacing calculation:', {
|
|
601
|
+
componentCenter,
|
|
602
|
+
screenCenter,
|
|
603
|
+
distanceFromCenter,
|
|
604
|
+
isInBottomHalf,
|
|
605
|
+
edgeProximityFactor,
|
|
606
|
+
baseSpacing,
|
|
607
|
+
relativeSpacing,
|
|
608
|
+
relativeSpacingPercent,
|
|
609
|
+
platformMultiplier,
|
|
610
|
+
finalSpacing
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
return finalSpacing;
|
|
614
|
+
};
|
|
615
|
+
// const POPUP_SPACING = getOptimalSpacing(componentY, componentHeight, windowHeight);
|
|
616
|
+
// console.log('🔥 Optimal popup spacing calculated:', POPUP_SPACING, 'for componentHeight:', componentHeight, 'at Y:', componentY);
|
|
617
|
+
|
|
618
|
+
// console.log('🔥 AutoPositionedPopup FINAL SPACE CHECK WITH SPACING:', {
|
|
619
|
+
// POPUP_SPACING,
|
|
620
|
+
// 'usableSpaceAbove >= popupHeight + POPUP_SPACING': usableSpaceAbove >= popupHeight + POPUP_SPACING,
|
|
621
|
+
// 'spaceBelow >= popupHeight + POPUP_SPACING': spaceBelow >= popupHeight + POPUP_SPACING,
|
|
622
|
+
// 'usableSpaceAbove needed': popupHeight + POPUP_SPACING,
|
|
623
|
+
// 'spaceBelow needed': popupHeight + POPUP_SPACING
|
|
624
|
+
// });
|
|
625
|
+
|
|
626
|
+
// FORCE ABOVE PRIORITY: If component is in bottom half, always try above first
|
|
627
|
+
const isInBottomHalf = componentCenterY > visibleAreaCenter;
|
|
628
|
+
|
|
629
|
+
// console.log('🔥 Position decision factors:', {
|
|
630
|
+
// isInBottomHalf,
|
|
631
|
+
// componentCenterY,
|
|
632
|
+
// visibleAreaCenter,
|
|
633
|
+
// 'spaceBelow >= needed': spaceBelow >= popupHeight + POPUP_SPACING,
|
|
634
|
+
// 'usableSpaceAbove >= needed': usableSpaceAbove >= popupHeight + POPUP_SPACING
|
|
635
|
+
// });
|
|
636
|
+
|
|
637
|
+
if (isInBottomHalf && usableSpaceAbove >= popupHeight ) {
|
|
638
|
+
// Component in bottom half + enough space above = FORCE ABOVE
|
|
639
|
+
showAbove = true;
|
|
640
|
+
finalY = componentY - popupHeight +componentHeight/2;
|
|
641
|
+
console.log('🔥 AutoPositionedPopup: FORCE ABOVE - bottom half component with enough space, finalY=', finalY);
|
|
642
|
+
} else if (!isInBottomHalf && spaceBelow >= popupHeight ) {
|
|
643
|
+
// Component in top half + enough space below = show below
|
|
644
|
+
showAbove = false;
|
|
645
|
+
finalY = componentY + componentHeight*2;
|
|
646
|
+
console.log('🔥 AutoPositionedPopup: Showing below - top half component with enough space, finalY=', finalY);
|
|
647
|
+
} else if (usableSpaceAbove >= popupHeight ) {
|
|
648
|
+
// Fallback: enough space above
|
|
649
|
+
showAbove = true;
|
|
650
|
+
finalY = componentY - popupHeight ;
|
|
651
|
+
console.log('🔥 AutoPositionedPopup: Showing above - enough space available (fallback), finalY=', finalY);
|
|
652
|
+
} else if (spaceBelow >= popupHeight ) {
|
|
653
|
+
// Fallback: enough space below
|
|
654
|
+
showAbove = false;
|
|
655
|
+
finalY = componentY + componentHeight ;
|
|
656
|
+
console.log('🔥 AutoPositionedPopup: Showing below - enough space available (fallback), finalY=', finalY);
|
|
552
657
|
} else {
|
|
553
|
-
//
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
658
|
+
// Emergency fallback: choose larger space
|
|
659
|
+
if (usableSpaceAbove >= spaceBelow) {
|
|
660
|
+
showAbove = true;
|
|
661
|
+
finalY = Math.max(statusBarHeight, componentY - popupHeight );
|
|
662
|
+
console.log('🔥 AutoPositionedPopup: Emergency above - larger space, finalY=', finalY);
|
|
558
663
|
} else {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
showAbove = true;
|
|
563
|
-
finalY = componentY - popupHeight;
|
|
564
|
-
} else {
|
|
565
|
-
// Force below with clipping
|
|
566
|
-
finalY = Math.min(windowHeight - popupHeight, componentY + componentHeight);
|
|
567
|
-
}
|
|
664
|
+
showAbove = false;
|
|
665
|
+
finalY = componentY + componentHeight ;
|
|
666
|
+
console.log('🔥 AutoPositionedPopup: Emergency below - larger space, finalY=', finalY);
|
|
568
667
|
}
|
|
569
668
|
}
|
|
570
669
|
|
|
571
|
-
//
|
|
572
|
-
|
|
573
|
-
finalY
|
|
670
|
+
// Enhanced boundary check with detailed logging
|
|
671
|
+
console.log('🔥 Pre-boundary check:', {
|
|
672
|
+
originalFinalY: finalY,
|
|
673
|
+
showAbove,
|
|
674
|
+
statusBarHeight,
|
|
675
|
+
windowHeight,
|
|
676
|
+
popupHeight,
|
|
677
|
+
'finalY < statusBarHeight': finalY < statusBarHeight,
|
|
678
|
+
'finalY + popupHeight > windowHeight': finalY + popupHeight > windowHeight
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
if (showAbove && finalY < statusBarHeight) {
|
|
682
|
+
const oldFinalY = finalY;
|
|
683
|
+
finalY = statusBarHeight;
|
|
684
|
+
console.log('🔥 BOUNDARY FIX: Above display adjusted for status bar:', oldFinalY, '->', finalY);
|
|
574
685
|
}
|
|
575
|
-
|
|
686
|
+
|
|
687
|
+
if (!showAbove && finalY + popupHeight > windowHeight) {
|
|
688
|
+
const oldFinalY = finalY;
|
|
576
689
|
finalY = windowHeight - popupHeight;
|
|
690
|
+
console.log('🔥 BOUNDARY FIX: Below display adjusted to fit window:', oldFinalY, '->', finalY);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// CRITICAL CHECK: Detect if boundary check is changing display direction
|
|
694
|
+
if (showAbove && finalY + popupHeight > componentY ) {
|
|
695
|
+
console.log('🚨 WARNING: Above positioning may overlap with component!');
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
if (!showAbove && finalY < componentY + componentHeight ) {
|
|
699
|
+
console.log('🚨 WARNING: Below positioning may overlap with component!');
|
|
577
700
|
}
|
|
578
701
|
|
|
702
|
+
console.log('🔥 Post-boundary check final result:', {
|
|
703
|
+
finalY,
|
|
704
|
+
showAbove,
|
|
705
|
+
'popupTop': finalY,
|
|
706
|
+
'popupBottom': finalY + popupHeight,
|
|
707
|
+
'componentTop': componentY,
|
|
708
|
+
'componentBottom': componentY + componentHeight
|
|
709
|
+
});
|
|
710
|
+
|
|
579
711
|
return {finalY, showAbove};
|
|
580
712
|
};
|
|
581
713
|
|
|
582
|
-
|
|
583
|
-
|
|
714
|
+
// Calculate position ONCE based on actual popup height
|
|
715
|
+
const actualPopupHeight = CustomPopView && CustomPopViewStyle && typeof CustomPopViewStyle.height === 'number'
|
|
716
|
+
? CustomPopViewStyle.height
|
|
717
|
+
: listLayout.height;
|
|
718
|
+
|
|
719
|
+
console.log('🔥 Using actualPopupHeight for calculation:', actualPopupHeight, 'CustomPopView:', !!CustomPopView);
|
|
720
|
+
|
|
721
|
+
const positionResult = calculateOptimalPosition(y, height, actualPopupHeight);
|
|
722
|
+
console.log('AutoPositionedPopup FINAL position result:', positionResult);
|
|
584
723
|
|
|
585
724
|
ref_listPos.current = {x: x, y: positionResult.finalY, width: width};
|
|
586
725
|
console.log('AutoPositionedPopup ref_listPos.current=', ref_listPos.current);
|
|
726
|
+
|
|
587
727
|
if (CustomPopView && CustomPopViewStyle) {
|
|
588
728
|
console.log('AutoPositionedPopup CustomPopViewStyle=', CustomPopViewStyle);
|
|
589
|
-
//
|
|
590
|
-
const customHeight =
|
|
591
|
-
typeof CustomPopViewStyle.height === 'number' ? CustomPopViewStyle.height : listLayout.height;
|
|
592
|
-
|
|
593
|
-
// Apply same intelligent positioning strategy for CustomPopView
|
|
594
|
-
console.log('AutoPositionedPopup CustomPopView using intelligent positioning, customHeight=', customHeight);
|
|
595
|
-
|
|
596
|
-
// Use the same intelligent positioning function for CustomPopView
|
|
597
|
-
const customPositionResult = calculateOptimalPosition(y, height, customHeight);
|
|
598
|
-
console.log('AutoPositionedPopup CustomPopView position result:', customPositionResult, 'tag=', tag);
|
|
599
|
-
|
|
600
|
-
ref_listPos.current = {x: x, y: customPositionResult.finalY, width: width};
|
|
729
|
+
// Position already calculated correctly above, no need to recalculate
|
|
601
730
|
const PopViewComponent = CustomPopView();
|
|
602
731
|
console.log('AutoPositionedPopup addRootView PopViewComponent=', PopViewComponent);
|
|
603
732
|
console.log('AutoPositionedPopup addRootView state.selectedItem=', state.selectedItem);
|
|
@@ -651,6 +780,8 @@ const AutoPositionedPopup = memo(
|
|
|
651
780
|
renderItem={renderItem}
|
|
652
781
|
selectedItem={state.selectedItem}
|
|
653
782
|
localSearch={localSearch}
|
|
783
|
+
showListEmptyComponent={showListEmptyComponent}
|
|
784
|
+
emptyText={emptyText}
|
|
654
785
|
/>
|
|
655
786
|
),
|
|
656
787
|
useModal: true,
|
|
@@ -687,7 +818,7 @@ const AutoPositionedPopup = memo(
|
|
|
687
818
|
CustomPopViewStyle,
|
|
688
819
|
forceRemoveAllRootViewOnItemSelected,
|
|
689
820
|
tag,
|
|
690
|
-
state.selectedItem,
|
|
821
|
+
state.selectedItem,showListEmptyComponent
|
|
691
822
|
]);
|
|
692
823
|
// Imperative handle for parent component access
|
|
693
824
|
useImperativeHandle(
|
|
@@ -781,6 +912,8 @@ const AutoPositionedPopup = memo(
|
|
|
781
912
|
renderItem={renderItem}
|
|
782
913
|
selectedItem={state.selectedItem}
|
|
783
914
|
localSearch={localSearch}
|
|
915
|
+
showListEmptyComponent={showListEmptyComponent}
|
|
916
|
+
emptyText={emptyText}
|
|
784
917
|
/>
|
|
785
918
|
),
|
|
786
919
|
useModal: false,
|
|
@@ -939,7 +1072,7 @@ const AutoPositionedPopup = memo(
|
|
|
939
1072
|
forceRemoveAllRootViewOnItemSelected,
|
|
940
1073
|
inputStyle,
|
|
941
1074
|
TextInputProps,
|
|
942
|
-
state.isFocus,]);
|
|
1075
|
+
state.isFocus,showListEmptyComponent,emptyText]);
|
|
943
1076
|
}
|
|
944
1077
|
)
|
|
945
1078
|
);
|