callstack / callstack/react-native-slider

Slider "active area" is offset from where the actual element is

オープン
#470 コメント 15 件 リアクション 2 件 担当者 0 名 GitHub で見る
bug report
主要言語
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。