Skip to content

Commit 10edf2d

Browse files
authored
fix: RTL support (#267)
* add RTL example * add quickfix makes the carousel functional, but just via overriding the direction * internal rtl support relying on a global attribute selector feels a bit hacky * fix import * simplify style * include dot group in rtl example for demonstration purposes * lint
1 parent c1ba944 commit 10edf2d

File tree

6 files changed

+88
-0
lines changed

6 files changed

+88
-0
lines changed

src/App/App.jsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
Example11,
1414
Example12,
1515
Example13,
16+
Example14,
1617
} from './examples';
1718
import s from './style.scss';
1819

@@ -247,6 +248,13 @@ class DevelopmentApp extends React.Component {
247248
</section>
248249
)}
249250

251+
{(value === '0' || value === '14') && (
252+
<section id="example--14">
253+
<hr />
254+
<Example14 />
255+
</section>
256+
)}
257+
250258
</div>
251259
</div>
252260
</div>
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import React from 'react';
2+
import
3+
{
4+
ButtonBack,
5+
ButtonFirst,
6+
ButtonLast,
7+
ButtonNext,
8+
CarouselProvider,
9+
Slide,
10+
Slider,
11+
ImageWithZoom,
12+
DotGroup,
13+
} from '../../..';
14+
15+
import s from '../../style.scss';
16+
17+
export default () => (
18+
<CarouselProvider
19+
visibleSlides={2}
20+
totalSlides={8}
21+
step={1}
22+
naturalSlideWidth={400}
23+
naturalSlideHeight={500}
24+
>
25+
<h2 className={s.headline}>RTL</h2>
26+
<p>
27+
A carousel wrapped in an element with
28+
{' '}
29+
<code>dir=&quot;rtl&quot;</code>
30+
, demonstrating support for use with right-to-left languages.
31+
</p>
32+
<div dir="rtl">
33+
<Slider className={s.slider}>
34+
<Slide index={0}>
35+
<ImageWithZoom src="./media/img01.jpeg" />
36+
</Slide>
37+
<Slide index={1}>
38+
<ImageWithZoom src="./media/img02.jpeg" />
39+
</Slide>
40+
<Slide index={2}>
41+
<ImageWithZoom src="./media/img03.jpeg" />
42+
</Slide>
43+
<Slide index={3}>
44+
<ImageWithZoom src="./media/img04.jpeg" />
45+
</Slide>
46+
<Slide index={4}>
47+
<ImageWithZoom src="./media/img05.jpeg" />
48+
</Slide>
49+
<Slide index={5}>
50+
<ImageWithZoom src="./media/img06.jpeg" />
51+
</Slide>
52+
<Slide index={6}>
53+
<ImageWithZoom src="./media/img07.jpeg" />
54+
</Slide>
55+
<Slide index={7}>
56+
<ImageWithZoom src="./media/img08.jpeg" />
57+
</Slide>
58+
</Slider>
59+
<ButtonFirst>First</ButtonFirst>
60+
<ButtonBack>Back</ButtonBack>
61+
<ButtonNext>Next</ButtonNext>
62+
<ButtonLast>Last</ButtonLast>
63+
<DotGroup dotNumbers />
64+
</div>
65+
</CarouselProvider>
66+
);

src/App/examples/Example14/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import Example14 from './Example14';
2+
3+
export default Example14;

src/App/examples/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ export { default as Example10 } from './Example10';
1111
export { default as Example11 } from './Example11';
1212
export { default as Example12 } from './Example12';
1313
export { default as Example13 } from './Example13';
14+
export { default as Example14 } from './Example14';

src/Slide/Slide.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212

1313
&Horizontal {
1414
float: left;
15+
16+
[dir='rtl'] & {
17+
direction: rtl;
18+
transform: scaleX(-1);
19+
}
1520
}
1621

1722
&Inner {

src/Slider/Slider.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
position: relative;
33
overflow: hidden;
44

5+
[dir='rtl'] & {
6+
direction: ltr;
7+
transform: scaleX(-1);
8+
}
9+
510
&Tray {
611
overflow: hidden;
712
width: 100%;

0 commit comments

Comments
 (0)