Skip to content

Commit 0e90a9b

Browse files
Evyraadwojteg1337
authored andcommitted
Inverted slider (#93)
1 parent 29ee56d commit 0e90a9b

File tree

7 files changed

+38
-0
lines changed

7 files changed

+38
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Check out the [example project](example) for more examples.
7878
- [`minimumTrackImage`](#minimumtrackimage)
7979
- [`thumbImage`](#thumbimage)
8080
- [`trackImage`](#trackimage)
81+
- [`inverted`](#inverted)
8182

8283
---
8384

@@ -251,6 +252,15 @@ Assigns a single image for the track. Only static images are supported. The cent
251252
| ---------------------- | -------- | -------- |
252253
| Image.propTypes.source | No | iOS |
253254

255+
---
256+
257+
### `inverted`
258+
Reverses the direction of the slider. Default value is false.
259+
260+
| Type | Required | Platform |
261+
| ---- | -------- | -------- |
262+
| bool | No | iOS |
263+
254264
## Maintainers
255265

256266
- [Michał Chudziak](https://github.com/michalchudziak) - [Callstack](https://callstack.com/)

example/SliderExample.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,11 @@ exports.examples = [
191191
);
192192
},
193193
},
194+
{
195+
title: 'Inverted slider direction',
196+
platform: 'ios',
197+
render(): React.Element<any> {
198+
return <SliderExample value={0.6} inverted />;
199+
},
200+
},
194201
];

ios/RNCSlider.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,13 @@ - (UIImage *)thumbImage
8484
return [self thumbImageForState:UIControlStateNormal];
8585
}
8686

87+
- (void)setInverted:(BOOL)inverted
88+
{
89+
if (inverted) {
90+
self.transform = CGAffineTransformMakeScale(-1, 1);
91+
} else {
92+
self.transform = CGAffineTransformMakeScale(1, 1);
93+
}
94+
}
95+
8796
@end

ios/RNCSliderManager.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ - (void)sliderTouchEnd:(RNCSlider *)sender
9898
RCT_EXPORT_VIEW_PROPERTY(onRNCSliderSlidingComplete, RCTBubblingEventBlock);
9999
RCT_EXPORT_VIEW_PROPERTY(thumbTintColor, UIColor);
100100
RCT_EXPORT_VIEW_PROPERTY(thumbImage, UIImage);
101+
RCT_EXPORT_VIEW_PROPERTY(inverted, BOOL);
101102
RCT_CUSTOM_VIEW_PROPERTY(disabled, BOOL, RNCSlider)
102103
{
103104
if (json) {

js/RNCSliderNativeComponent.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type NativeProps = $ReadOnly<{|
2929
...ViewProps,
3030
disabled?: ?boolean,
3131
enabled?: ?boolean,
32+
inverted?: ?boolean,
3233
maximumTrackImage?: ?ImageSource,
3334
maximumTrackTintColor?: ?ColorValue,
3435
maximumValue?: ?number,

js/Slider.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ type IOSProps = $ReadOnly<{|
5454
* Sets an image for the thumb. Only static images are supported.
5555
*/
5656
thumbImage?: ?ImageSource,
57+
58+
/**
59+
* If true the slider will be inverted.
60+
* Default value is false.
61+
*/
62+
inverted?: ?boolean,
5763
|}>;
5864

5965
type Props = $ReadOnly<{|
@@ -270,6 +276,7 @@ SliderWithRef.defaultProps = {
270276
minimumValue: 0,
271277
maximumValue: 1,
272278
step: 0,
279+
inverted: false,
273280
};
274281

275282
let styles;

js/__tests__/__snapshots__/Slider.test.js.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ exports[`<Slider /> renders a slider with custom props 1`] = `
44
<RNCSlider
55
disabled={false}
66
enabled={true}
7+
inverted={false}
78
maximumTrackTintColor="red"
89
maximumValue={2}
910
minimumTrackTintColor="blue"
@@ -29,6 +30,7 @@ exports[`<Slider /> renders disabled slider 1`] = `
2930
<RNCSlider
3031
disabled={true}
3132
enabled={false}
33+
inverted={false}
3234
maximumValue={1}
3335
minimumValue={0}
3436
onChange={null}
@@ -51,6 +53,7 @@ exports[`<Slider /> renders enabled slider 1`] = `
5153
<RNCSlider
5254
disabled={false}
5355
enabled={true}
56+
inverted={false}
5457
maximumValue={1}
5558
minimumValue={0}
5659
onChange={null}

0 commit comments

Comments
 (0)