Expose the reduced-motion preference beside colorScheme
Les mainteneurs répondent en général sous 3 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- react-native, typescript
Piste de recherche
Read the reduced-motion implementation proposed in #388 and compare it with the existing colorScheme API and devicePreference() behavior. Check the React Native and web paths, including matchMedia and the jest helper, then determine whether the public setter or a jest-only setter is desired. Done means the API shape and override behavior are agreed before implementation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
#388 makes native evaluate prefers-reduced-motion, reading the device's setting from AccessibilityInfo. A consumer then needs two things:
- An app with its own "Reduce motion" setting has to override the device's preference, and keep its choice when the device's setting changes.
- A test suite has to put a test in reduce mode:
react-native-css/jestresets the preference before each test, and nothing public sets it.
#388 adds reducedMotion to the API, beside colorScheme:
import { reducedMotion } from "react-native-css";
reducedMotion.get(); // "reduce", "no-preference", or undefined until the device answers
reducedMotion.set("reduce"); // overrides the device, through any change of its setting
reducedMotion.set(null); // follows the device again
The override holds until it is cleared, as Appearance.setColorScheme(), iOS's overrideUserInterfaceStyle and Android's setDefaultNightMode() hold theirs, and as Media Queries 5 §13 shapes the web's navigator.preferences.reducedMotion.requestOverride() and clearOverride(). Internally it is one devicePreference() that keeps the device's answer apart from the app's override, which a later preference the platform reports but does not let an app set, such as contrast or reduced transparency, can share. On main, colorScheme.set() writes a value the next change of the device's scheme replaces; #415 keeps the scheme's override in Appearance, which holds it on the platform itself.
On web the browser evaluates @media in the stylesheet itself, so get() reads matchMedia and set() changes only what get() returns, not the CSS or matchMedia(). navigator.preferences would carry the override into the CSS, but no browser ships it yet (csswg-drafts#14493); once one does, the web set() can call it.
Is this the shape you would want, or would you rather keep the setter in the jest helper only?
- Langage dominant
- TypeScript
- Étoiles
- 166
- Forks
- 45
- Merge moyen
- 13 j 14 h
- PR mergées (30 j)
- 1
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de nativewind/react-native-css
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#545 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#544 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#543 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
nativewind/react-native-css#540 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nativewind/react-native-css#538 ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de nativewind/react-native-css
Issues similaires
-
area:cli bug P4
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
bug from-studio
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
esengine/DeepSeek-Reasonix#14868 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
linxiv-dev/linXiv#384 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
scope:core type:security
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
follow-redirects updateOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
mailgun/mailgun.js#544 ·