Skip to content

Commit fa28514

Browse files
committed
feat: add Swiper slider
1 parent bae5491 commit fa28514

File tree

10 files changed

+128
-3
lines changed

10 files changed

+128
-3
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
"next": "9.5.5",
2020
"react": "16.13.1",
2121
"react-dom": "16.13.1",
22-
"styled-components": "^5.2.0"
22+
"sass": "^1.27.0",
23+
"styled-components": "^5.2.0",
24+
"swiper": "^6.3.3"
2325
},
2426
"devDependencies": {
2527
"@babel/core": "^7.11.6",

src/components/AppBar/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ const AppBar = ({ testID, secondaryAppBar }: IAppBar) => {
2626
</S.SecondaryAppBarContainer>
2727
</S.SecondaryAppBar>
2828
)}
29-
<S.AppBar color="secondary" data-secondary-app-bar={secondaryAppBar}>
29+
<S.AppBar
30+
color="secondary"
31+
position="static"
32+
data-secondary-app-bar={secondaryAppBar}
33+
>
3034
<S.Toolbar>
3135
<Container>
3236
<S.IconButton edge="start" color="inherit" aria-label="menu">

src/components/AppBar/test.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ const appBarProps: IAppBar = {
1616
text: 'SiteFácil',
1717
link: {
1818
aria: 'Link to SiteFácil',
19-
url: 'http://sitefacil.co'
19+
url: 'http://sitefacil.co',
20+
icon: false
2021
}
2122
}
2223
]

src/components/Site/index.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { ISite } from './types'
44
import FacebookIcon from '@material-ui/icons/Facebook'
55
import InstagramIcon from '@material-ui/icons/Instagram'
66
import TwitterIcon from '@material-ui/icons/Twitter'
7+
import Slider from 'components/Slider'
8+
import { ISlider } from 'components/Slider/types'
79

810
const appBarProps: IAppBar = {
911
secondaryAppBar: {
@@ -46,10 +48,18 @@ const appBarProps: IAppBar = {
4648
}
4749
}
4850

51+
const sliderProps: ISlider = {
52+
images: [
53+
'https://images.unsplash.com/photo-1553551427-d4bbcd986ff5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1489&q=80',
54+
'https://images.unsplash.com/photo-1551125337-ca452e9e0339?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80'
55+
]
56+
}
57+
4958
const Site = ({ testID }: ISite) => {
5059
return (
5160
<S.Wrapper data-testid={testID}>
5261
<S.AppBar {...appBarProps} />
62+
<Slider {...sliderProps}></Slider>
5363
</S.Wrapper>
5464
)
5565
}

src/components/Slider/index.tsx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import * as S from './styles'
2+
import { ISlider } from './types'
3+
import SwiperCore, { Autoplay, Navigation } from 'swiper'
4+
import { Swiper, SwiperSlide } from 'swiper/react'
5+
6+
SwiperCore.use([Autoplay, Navigation])
7+
8+
const Slider = ({ testID, images }: ISlider) => {
9+
return (
10+
<S.Wrapper data-testid={testID}>
11+
<Swiper
12+
centeredSlides={true}
13+
navigation
14+
autoplay
15+
autoHeight={true}
16+
loop={true}
17+
>
18+
{images &&
19+
images.map((image, index) => (
20+
<SwiperSlide key={index}>
21+
<img src={image} />
22+
</SwiperSlide>
23+
))}
24+
</Swiper>
25+
</S.Wrapper>
26+
)
27+
}
28+
29+
export default Slider

src/components/Slider/styles.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import styled from 'styled-components'
2+
3+
export const Wrapper = styled.div`
4+
img {
5+
width: 100%;
6+
}
7+
`

src/components/Slider/test.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { render, screen } from '@testing-library/react'
2+
import Slider from '.'
3+
import { ISlider } from './types'
4+
5+
const sliderProps: ISlider = {
6+
testID: 'slider'
7+
}
8+
9+
beforeEach(() => {
10+
render(<Slider {...sliderProps} />)
11+
})
12+
13+
describe('<Slider />', () => {
14+
it('should render a <Slider /> component', () => {
15+
expect(screen.getByTestId('slider')).toBeVisible()
16+
})
17+
})

src/components/Slider/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface ISlider {
2+
testID?: string
3+
images: string[]
4+
}

src/pages/_app.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { ThemeProvider } from '@material-ui/core/styles'
77
import theme from 'styles/theme'
88
import { CssBaseline } from '@material-ui/core'
99

10+
import '../../node_modules/swiper/swiper-bundle.min.css'
11+
1012
function App({ Component, pageProps }: AppProps) {
1113
React.useEffect(() => {
1214
const jssStyles = document.querySelector('#jss-server-side')

yarn.lock

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4748,6 +4748,21 @@ chokidar@2.1.8, chokidar@^2.1.8:
47484748
optionalDependencies:
47494749
fsevents "^1.2.7"
47504750

4751+
"chokidar@>=2.0.0 <4.0.0":
4752+
version "3.4.3"
4753+
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
4754+
integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==
4755+
dependencies:
4756+
anymatch "~3.1.1"
4757+
braces "~3.0.2"
4758+
glob-parent "~5.1.0"
4759+
is-binary-path "~2.1.0"
4760+
is-glob "~4.0.1"
4761+
normalize-path "~3.0.0"
4762+
readdirp "~3.5.0"
4763+
optionalDependencies:
4764+
fsevents "~2.1.2"
4765+
47514766
chokidar@^3.3.0, chokidar@^3.4.1:
47524767
version "3.4.2"
47534768
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
@@ -6093,6 +6108,13 @@ dom-walk@^0.1.0:
60936108
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
60946109
integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
60956110

6111+
dom7@^3.0.0-alpha.7:
6112+
version "3.0.0-alpha.9"
6113+
resolved "https://registry.yarnpkg.com/dom7/-/dom7-3.0.0-alpha.9.tgz#0110c21181b8bad3a1ee72443e04d3c2e3f1d38f"
6114+
integrity sha512-wTxPe1vJqLAy2PzAROh/n1PsRF/ZklAJyRIn9shm2dAQjP4JhjsgDKQ1YTbuzf1KVlqOlqYPmwupQExcB9jOUg==
6115+
dependencies:
6116+
ssr-window "^3.0.0-alpha.1"
6117+
60966118
domain-browser@^1.1.1:
60976119
version "1.2.0"
60986120
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
@@ -12802,6 +12824,13 @@ readdirp@~3.4.0:
1280212824
dependencies:
1280312825
picomatch "^2.2.1"
1280412826

12827+
readdirp@~3.5.0:
12828+
version "3.5.0"
12829+
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
12830+
integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
12831+
dependencies:
12832+
picomatch "^2.2.1"
12833+
1280512834
recast@^0.14.7:
1280612835
version "0.14.7"
1280712836
resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d"
@@ -13337,6 +13366,13 @@ sass-loader@10.0.2:
1333713366
schema-utils "^2.7.1"
1333813367
semver "^7.3.2"
1333913368

13369+
sass@^1.27.0:
13370+
version "1.27.0"
13371+
resolved "https://registry.yarnpkg.com/sass/-/sass-1.27.0.tgz#0657ff674206b95ec20dc638a93e179c78f6ada2"
13372+
integrity sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig==
13373+
dependencies:
13374+
chokidar ">=2.0.0 <4.0.0"
13375+
1334013376
sax@~1.2.4:
1334113377
version "1.2.4"
1334213378
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -13894,6 +13930,11 @@ sshpk@^1.7.0:
1389413930
safer-buffer "^2.0.2"
1389513931
tweetnacl "~0.14.0"
1389613932

13933+
ssr-window@^3.0.0-alpha.1, ssr-window@^3.0.0-alpha.4:
13934+
version "3.0.0-alpha.4"
13935+
resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-3.0.0-alpha.4.tgz#0c69a18c4305ecccdd8e11596155ca07b635f345"
13936+
integrity sha512-+dBRP/pZ+VyITxTzD0lMDzDwN/BmfUl8xi2e6t5Nz4+FqUphfcBLB1OOUSYCRNFB25rD3c8AJRYpY5rHTbL+kg==
13937+
1389713938
ssri@^6.0.0, ssri@^6.0.1:
1389813939
version "6.0.1"
1389913940
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
@@ -14337,6 +14378,14 @@ svgo@^1.2.2:
1433714378
unquote "~1.1.1"
1433814379
util.promisify "~1.0.0"
1433914380

14381+
swiper@^6.3.3:
14382+
version "6.3.3"
14383+
resolved "https://registry.yarnpkg.com/swiper/-/swiper-6.3.3.tgz#e0b2e27621c07e789bfa91569b5676e896d18001"
14384+
integrity sha512-SnG1weu2GhqKxuG4NTIA1A6OE9x3P/+d2DW6APLUgYNHm0ZgkAOxL/tEDubiHvgwqtaVaz6QWqkSbCaDYffSNg==
14385+
dependencies:
14386+
dom7 "^3.0.0-alpha.7"
14387+
ssr-window "^3.0.0-alpha.4"
14388+
1434014389
symbol-tree@^3.2.4:
1434114390
version "3.2.4"
1434214391
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"

0 commit comments

Comments
 (0)