Skip to content

Commit 9428c16

Browse files
committed
Use size-limit and imporve defaultProps
1 parent 626a3e3 commit 9428c16

File tree

2 files changed

+60
-50
lines changed

2 files changed

+60
-50
lines changed

package.json

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"lint:sass": "sui-lint sass",
2727
"prelib": "npm run clean:lib -s",
2828
"release": "np",
29-
"prepublish": "npm run lib"
29+
"prepublish": "npm run lib",
30+
"test": "size-limit"
3031
},
3132
"license": "MIT",
3233
"repository": {
@@ -40,22 +41,21 @@
4041
},
4142
"devDependencies": {
4243
"@babel/cli": "7",
43-
"@mdx-js/loader": "1.5.3",
44-
"@next/mdx": "9.1.7",
44+
"@next/mdx": "9.3.4",
4545
"@s-ui/lint": "3",
46+
"@size-limit/preset-small-lib": "4.4.5",
4647
"@zeit/next-sass": "1.0.1",
4748
"babel-preset-sui": "3",
4849
"copyfiles": "2.1.1",
49-
"next": "9.1.7",
50-
"node-sass": "4.13.0",
50+
"next": "9.3.4",
51+
"node-sass": "4.13.1",
5152
"np": "5.2.1",
5253
"prism-react-renderer": "1.0.2",
5354
"prop-types": "15",
5455
"react": ">= 16.8.0 < 17",
5556
"react-dom": ">= 16.8.0 < 17",
5657
"rimraf": "3.0.0",
57-
"sass-loader": "8.0.2",
58-
"webpack": "4.41.5"
58+
"size-limit": "4.4.5"
5959
},
6060
"dependencies": {
6161
"intersection-observer": "0.7.0"
@@ -71,5 +71,11 @@
7171
"prettier": "./node_modules/@s-ui/lint/.prettierrc.js",
7272
"stylelint": {
7373
"extends": "./node_modules/@s-ui/lint/stylelint.config.js"
74-
}
74+
},
75+
"size-limit": [
76+
{
77+
"limit": "2.65 KB",
78+
"path": "lib/*.js"
79+
}
80+
]
7581
}

src/index.js

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,41 @@ const CLASSNAMES = {
1111
fullWidth: 'react-Slidy--fullWidth'
1212
}
1313

14-
const ReactSlidy = props => {
15-
const [showSlider, setShowSlider] = useState(!props.lazyLoadSlider)
14+
const ReactSlidy = ({
15+
children,
16+
classNameBase = 'react-Slidy',
17+
doAfterDestroy = noop,
18+
doAfterInit = noop,
19+
doAfterSlide = noop,
20+
doBeforeSlide = noop,
21+
imageObjectFit,
22+
itemsToPreload = 1,
23+
initialSlide = 0,
24+
ease = 'ease',
25+
lazyLoadSlider = true,
26+
lazyLoadConfig = {
27+
offset: 150
28+
},
29+
keyboardNavigation = false,
30+
numOfSlides = 1,
31+
sanitize = true,
32+
slide = 0,
33+
slideSpeed = 500,
34+
showArrows = true,
35+
useFullHeight = false,
36+
useFullWidth = true
37+
}) => {
38+
const [showSlider, setShowSlider] = useState(!lazyLoadSlider)
1639
const nodeEl = useRef(null)
1740

1841
useEffect(
1942
function() {
2043
let observer
2144

22-
if (props.lazyLoadSlider) {
45+
if (lazyLoadSlider) {
2346
const initLazyLoadSlider = () => {
2447
// if we support IntersectionObserver, let's use it
25-
const {offset = 0} = props.lazyLoadConfig
48+
const {offset = 0} = lazyLoadConfig
2649
observer = new window.IntersectionObserver(handleIntersection, {
2750
rootMargin: `${offset}px 0px 0px`
2851
})
@@ -48,16 +71,6 @@ const ReactSlidy = props => {
4871
}
4972
}
5073

51-
const {
52-
children,
53-
classNameBase,
54-
imageObjectFit,
55-
numOfSlides,
56-
sanitize,
57-
useFullHeight,
58-
useFullWidth
59-
} = props
60-
6174
const numOfSlidesSanitzed = Math.min(
6275
numOfSlides,
6376
React.Children.count(children)
@@ -72,15 +85,31 @@ const ReactSlidy = props => {
7285
.filter(Boolean)
7386
.join(' ')
7487

88+
const reactSlidySliderProps = {
89+
children,
90+
classNameBase,
91+
doAfterDestroy,
92+
doAfterInit,
93+
doAfterSlide,
94+
doBeforeSlide,
95+
ease,
96+
initialSlide,
97+
itemsToPreload,
98+
keyboardNavigation,
99+
numOfSlides,
100+
slide,
101+
showArrows,
102+
slideSpeed
103+
}
104+
75105
return (
76106
<div className={rootClassName} ref={nodeEl}>
77107
{showSlider && (
78108
<ReactSlidySlider
79-
parentRef={nodeEl}
80-
{...props}
109+
{...reactSlidySliderProps}
81110
numOfSlides={sanitize ? numOfSlidesSanitzed : numOfSlides}
82111
>
83-
{props.children}
112+
{children}
84113
</ReactSlidySlider>
85114
)}
86115
</div>
@@ -117,8 +146,6 @@ ReactSlidy.propTypes = {
117146
/** Distance which the slider will be loaded */
118147
offset: PropTypes.number
119148
}),
120-
/** Activate navigation by keyboard */
121-
navigateByKeyboard: PropTypes.bool,
122149
/** Number of slides to show at once */
123150
numOfSlides: PropTypes.number,
124151
/** Determine if we want to sanitize the slides or take numberOfSlider directly */
@@ -135,27 +162,4 @@ ReactSlidy.propTypes = {
135162
useFullHeight: PropTypes.bool
136163
}
137164

138-
ReactSlidy.defaultProps = {
139-
classNameBase: 'react-Slidy',
140-
doAfterDestroy: noop,
141-
doAfterInit: noop,
142-
doAfterSlide: noop,
143-
doBeforeSlide: noop,
144-
itemsToPreload: 1,
145-
initialSlide: 0,
146-
ease: 'ease',
147-
lazyLoadSlider: true,
148-
lazyLoadConfig: {
149-
offset: 150
150-
},
151-
navigateByKeyboard: false,
152-
numOfSlides: 1,
153-
sanitize: true,
154-
slide: 0,
155-
slideSpeed: 500,
156-
showArrows: true,
157-
useFullHeight: false,
158-
useFullWidth: true
159-
}
160-
161165
export default ReactSlidy

0 commit comments

Comments
 (0)