callstack / callstack/react-native-slider
Slider "active area" is offset from where the actual element is
- 主要言語
- TypeScript
- スター
- 1.4k
- フォーク
- 295
- 平均マージ
- 5分
- マージ済み PR(30日)
- 1
説明
## Environment
```
System:
OS: macOS 12.6
CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Memory: 680.34 MB / 32.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 14.17.0 - ~/.nvm/versions/node/v14.17.0/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v14.17.0/bin/yarn
npm: 6.14.13 - ~/.nvm/versions/node/v14.17.0/bin/npm
Watchman: Not Found
Managers:
CocoaPods: Not Found
SDKs:
iOS SDK:
Platforms: DriverKit 22.1, iOS 16.1, macOS 13.0, tvOS 16.1, watchOS 9.1
Android SDK: Not Found
IDEs:
Android Studio: 2021.2 AI-212.5712.43.2112.8512546
Xcode: 14.1/14B47b - /usr/bin/xcodebuild
Languages:
Java: javac 19 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: Not Found
react-native: Not Found
react-native-macos: Not Found
npmGlobalPackages:
*react-native*: Not Found
```
(Possibly) relevant deps from package.json:
```
"@react-native-community/slider": "4.2.4",
"@react-navigation/material-top-tabs": "6.2.1",
"@react-navigation/native": "6.0.10",
"@react-navigation/native-stack": "6.6.2",
"expo": "~44.0.2",
"expo-font": "~10.0.4",
"expo-splash-screen": "~0.14.1",
"expo-status-bar": "~1.2.0",
"jsc-android": "^250230.2.1",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
"react-native-calendars": "1.1289.0",
"react-native-collapsible": "1.6.0",
"react-native-pager-view": "5.4.9",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "~3.10.1",
"react-native-tab-view": "3.1.1",
"react-native-web": "0.17.1"
```
## Description
I have a Slider component that works perfectly fine on browser simulated mobile phone environment (Chrome -> responsive "iPhone 6/7/8 Plus" preset). But when I use the slider on a bigger screen (Chrome -> responsive "iPad Pro" preset), the active range (where the slider starts moving with mouse drag) is far to the left from where the actual slider element is.
Let's say, the slider element is between width 750px and 900px:
1. When I simply click on the slider, it goes automatically to maximumValue
2. If I click & hold the slider, and then pull to the left side of the screen, nothing happens to the slider. It does not move.
3. But when I reach the left edge of the screen (about 100px), then the slider starts to move with the mouse drag.
Here's a video. The first part is the "click makes it max value", and then comes the slider offset:
https://user-images.githubusercontent.com/5442750/209342148-200b56a4-8bda-4a1a-a495-d398c9423b03.mov
## Reproducible Demo
```
const styles = StyleSheet.create({
sliderBox: {
flexDirection: 'row',
},
});
interface Params {
min: number;
max: number;
initialValue: number;
bidToEdit: Bid;
setter: Function; // This just passes the value to the parent, does not affect incoming params
}
export const CustomSlider = ({ min, max, initialValue, bidToEdit, setter }: Params) => {
const [value, setValue] = useState(initialValue);
const sliderUpdated = (newValue: number) => {
console.warn('Slider update to', newValue);
setValue(newValue);
setter(newValue);
};
return (
);
};
```
I've also tried setting a maxWidth for the containing `` but it doesn't change the behaviour.
I have also tried using `onSlidingComplete` and `onSlidingStart`, but the behaviour is still the same.
コントリビューションガイド
調査の方向性
まず、ブラウザの iPhone および iPad Pro のレスポンシブプリセットで、issue にある Slider の例を再現し、次に要素の位置をマウスドラッグのアクティブ領域と比較します。レポートではソースファイルもテストも特定されていません。大きい方のプリセットで、クリックとドラッグが表示されている slider の境界を一貫して使用すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- react-native, typescript
- 領域
- frontend
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100