@fountain-ui/lab 1.9.2 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/build/commonjs/AnimatedY/AnimatedY.js +2 -2
- package/build/commonjs/Carousel/CarouselWeb.js +52 -56
- package/build/commonjs/Carousel/CarouselWeb.js.map +1 -1
- package/build/commonjs/Carousel/utils.js +3 -1
- package/build/commonjs/Carousel/utils.js.map +1 -1
- package/build/commonjs/StatusBarProvider/StatusBarProvider.js +1 -1
- package/build/commonjs/StatusBarProvider/StatusBarProvider.js.map +1 -1
- package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +4 -0
- package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +1 -1
- package/build/commonjs/ViewPager/ViewPagerWeb.js +4 -4
- package/build/commonjs/ViewPager/ViewPagerWeb.js.map +1 -1
- package/build/commonjs/index.js +2 -2
- package/build/module/Carousel/CarouselWeb.js +52 -57
- package/build/module/Carousel/CarouselWeb.js.map +1 -1
- package/build/module/Carousel/utils.js +1 -0
- package/build/module/Carousel/utils.js.map +1 -1
- package/build/module/StatusBarProvider/StatusBarProvider.js +1 -1
- package/build/module/StatusBarProvider/StatusBarProvider.js.map +1 -1
- package/build/module/ViewPager/ChildrenMemoizedPage.js +4 -0
- package/build/module/ViewPager/ChildrenMemoizedPage.js.map +1 -1
- package/build/module/ViewPager/ViewPagerWeb.js +4 -4
- package/build/module/ViewPager/ViewPagerWeb.js.map +1 -1
- package/build/typescript/AnimatedY/AnimatedY.d.ts +1 -0
- package/build/typescript/BottomSheet/BottomSheetNative.d.ts +1 -0
- package/build/typescript/BottomSheet/BottomSheetWeb.d.ts +1 -0
- package/build/typescript/BottomSheet/TransparentBackdrop.d.ts +1 -0
- package/build/typescript/Carousel/CarouselNative.d.ts +1 -0
- package/build/typescript/Carousel/CarouselProps.d.ts +20 -0
- package/build/typescript/Carousel/CarouselWeb.d.ts +1 -0
- package/build/typescript/Carousel/utils.d.ts +1 -0
- package/build/typescript/DateTimePicker/DateTimePicker.d.ts +1 -0
- package/build/typescript/DateTimePicker/YearPicker.d.ts +1 -0
- package/build/typescript/StatusBarProvider/StatusBarProvider.d.ts +1 -0
- package/build/typescript/ViewPager/ViewPagerNative.d.ts +1 -0
- package/build/typescript/ViewPager/ViewPagerWeb.d.ts +1 -0
- package/package.json +14 -13
- package/src/Carousel/CarouselProps.ts +37 -13
- package/src/Carousel/CarouselWeb.tsx +53 -54
- package/src/Carousel/utils.ts +3 -1
- package/src/StatusBarProvider/StatusBarProvider.tsx +1 -1
- package/src/ViewPager/ChildrenMemoizedPage.tsx +4 -0
- package/src/ViewPager/ViewPagerWeb.tsx +10 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CarouselWeb.tsx"],"names":["React","Slick","styled","mapIndexed","defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","
|
|
1
|
+
{"version":3,"sources":["CarouselWeb.tsx"],"names":["React","View","Slick","styled","ChevronLeft","ChevronRight","mapIndexed","defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultActiveSlideScale","defaultInfinite","baseSettings","dots","draggable","lazyLoad","pauseOnFocus","pauseOnHover","rows","swipe","slidesPerRow","vertical","noop","StyledContainer","div","props","display","opacity","transform","inactiveSlideScale","transition","activeSlideScale","arrowsStyle","ArrowContainer","children","height","justifyContent","alignItems","backgroundColor","borderRadius","Carousel","autoplay","autoplayInterval","centerMode","centerSlidePadding","data","inactiveSlideOpacity","index","infinite","onChange","renderItem","slidesToScroll","slidesToShow","arrows","slickRef","useRef","useEffect","current","slickGoTo","fixOnClickNotWorkingAfterMobileSwipe","innerSlider","clickHandler","handleAfterChange","newIndex","handleBeforeChange","item","child","cloneElement","key"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\nimport Slick, { Settings } from 'react-slick';\nimport styled from '@emotion/styled';\nimport { ChevronLeft, ChevronRight } from '@fountain-ui/icons';\nimport { mapIndexed } from '@fountain-ui/utils';\nimport type CarouselProps from './CarouselProps';\nimport {\n defaultAutoplay,\n defaultAutoplayInterval,\n defaultInactiveSlideOpacity,\n defaultInactiveSlideScale,\n defaultActiveSlideScale,\n defaultInfinite,\n} from './utils';\n\nconst baseSettings: Settings = {\n dots: false,\n draggable: true,\n lazyLoad: 'ondemand',\n pauseOnFocus: true,\n pauseOnHover: true,\n rows: 1,\n swipe: true,\n slidesPerRow: 1,\n vertical: false,\n};\n\nconst noop = () => void 0;\n\nconst StyledContainer: any = styled.div((props: any) => ({\n ['& .slick-track']: {\n display: 'flex',\n },\n ['& .slick-slide > div']: {\n display: 'flex',\n opacity: 0.2,\n transform: `scale(${props.inactiveSlideScale})`,\n transition: 'transform .5s',\n },\n [`& .slick-active.slick-current > div`]: {\n transform: `scale(${props.activeSlideScale})`,\n opacity: 1,\n },\n ...props.arrowsStyle,\n}));\n\ninterface ArrowContainerProps {\n children: React.ReactElement;\n}\n\nconst ArrowContainer = ({ children }: ArrowContainerProps) => (\n <View\n style={{\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n borderRadius: 16,\n }}\n >\n {children}\n </View>\n);\n\nexport default function Carousel<ItemT>(props: CarouselProps<ItemT>) {\n const {\n activeSlideScale = defaultActiveSlideScale,\n autoplay = defaultAutoplay,\n autoplayInterval = defaultAutoplayInterval,\n centerMode = true,\n centerSlidePadding = 0,\n data,\n inactiveSlideOpacity = defaultInactiveSlideOpacity,\n inactiveSlideScale = defaultInactiveSlideScale,\n index,\n infinite = defaultInfinite,\n onChange,\n renderItem,\n slidesToScroll = 1,\n slidesToShow = 1,\n arrows = false,\n arrowsStyle = {},\n } = props;\n\n const slickRef = React.useRef<Slick | null>(null);\n\n React.useEffect(() => {\n if (slickRef.current) {\n slickRef.current.slickGoTo(index, false);\n }\n }, [index]);\n\n const fixOnClickNotWorkingAfterMobileSwipe = () => {\n // @ts-ignore\n if (slickRef.current && slickRef.current.innerSlider) {\n // @ts-ignore\n slickRef.current.innerSlider.clickHandler = noop;\n }\n };\n\n const handleAfterChange = (newIndex: number) => {\n fixOnClickNotWorkingAfterMobileSwipe();\n\n if (onChange) {\n onChange(newIndex);\n }\n };\n\n const handleBeforeChange = () => {\n fixOnClickNotWorkingAfterMobileSwipe();\n };\n\n return (\n <StyledContainer\n activeSlideScale={activeSlideScale}\n inactiveSlideOpacity={inactiveSlideOpacity}\n inactiveSlideScale={inactiveSlideScale}\n arrowsStyle={arrowsStyle}\n >\n <Slick\n {...baseSettings}\n afterChange={handleAfterChange}\n autoplay={autoplay}\n autoplaySpeed={autoplayInterval}\n beforeChange={handleBeforeChange}\n centerMode={centerMode}\n centerPadding={`${centerSlidePadding}px`}\n infinite={infinite}\n initialSlide={index}\n ref={slickRef}\n slidesToScroll={slidesToScroll}\n slidesToShow={slidesToShow}\n arrows={arrows}\n prevArrow={(\n // If root component is not a div, there's no arrow class.\n <div>\n <ArrowContainer children={<ChevronLeft fill={'#767676'}/>}/>\n </div>\n )}\n nextArrow={(\n <div>\n <ArrowContainer children={<ChevronRight fill={'#767676'}/>}/>\n </div>\n )}\n >\n {mapIndexed((item, index) => {\n const child = renderItem({ item, index });\n\n if (child) {\n return React.cloneElement(child, { key: index });\n }\n return child;\n }, data)}\n </Slick>\n </StyledContainer>\n );\n};\n"]}
|
|
@@ -2,5 +2,6 @@ export const defaultAutoplay = false;
|
|
|
2
2
|
export const defaultAutoplayInterval = 3000;
|
|
3
3
|
export const defaultInactiveSlideOpacity = 0.7;
|
|
4
4
|
export const defaultInactiveSlideScale = 0.9;
|
|
5
|
+
export const defaultActiveSlideScale = 0.990;
|
|
5
6
|
export const defaultInfinite = false;
|
|
6
7
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["utils.ts"],"names":["defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultInfinite"],"mappings":"AAAA,OAAO,MAAMA,eAAe,GAAG,KAAxB;AAEP,OAAO,MAAMC,uBAAuB,GAAG,IAAhC;AAEP,OAAO,MAAMC,2BAA2B,GAAG,GAApC;AAEP,OAAO,MAAMC,yBAAyB,GAAG,GAAlC;AAEP,OAAO,MAAMC,eAAe,GAAG,KAAxB","sourcesContent":["export const defaultAutoplay = false;\n\nexport const defaultAutoplayInterval = 3000;\n\nexport const defaultInactiveSlideOpacity = 0.7;\n\nexport const defaultInactiveSlideScale = 0.9;\n\nexport const defaultInfinite = false
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultActiveSlideScale","defaultInfinite"],"mappings":"AAAA,OAAO,MAAMA,eAAe,GAAG,KAAxB;AAEP,OAAO,MAAMC,uBAAuB,GAAG,IAAhC;AAEP,OAAO,MAAMC,2BAA2B,GAAG,GAApC;AAEP,OAAO,MAAMC,yBAAyB,GAAG,GAAlC;AAEP,OAAO,MAAMC,uBAAuB,GAAG,KAAhC;AAEP,OAAO,MAAMC,eAAe,GAAG,KAAxB","sourcesContent":["export const defaultAutoplay = false;\n\nexport const defaultAutoplayInterval = 3000;\n\nexport const defaultInactiveSlideOpacity = 0.7;\n\nexport const defaultInactiveSlideScale = 0.9;\n\nexport const defaultActiveSlideScale = 0.990;\n\nexport const defaultInfinite = false;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["StatusBarProvider.tsx"],"names":["React","Platform","StatusBar","RNStatusBar","View","useSafeAreaInsets","useTheme","css","Provider","initialVisible","select","ios","android","StatusBarProvider","props","children","theme","defaultColor","palette","background","default","visible","setVisible","useState","backgroundViewColor","setBackgroundViewColor","setBackgroundColor","value","OS","setBarStyle","animated","setHidden","setTranslucent","shouldRenderBackgroundView","inset","backgroundViewStyle","backgroundColor","height","top","left","position","right","zIndex"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,QAAT,EAAmBC,SAAS,IAAIC,WAAhC,EAA6CC,IAA7C,QAAyD,cAAzD;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AACA,SAASC,QAAT,QAAyB,mBAAzB;AACA,SAASC,GAAT,QAAoB,qBAApB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAGA,MAAMC,cAAc,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AACnCC,EAAAA,GAAG,EAAE,IAD8B;AAEnCC,EAAAA,OAAO,EAAE;AAF0B,CAAhB,CAAvB;AAKA,eAAe,SAASC,iBAAT,CAA2BC,KAA3B,EAA0D;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAeD,KAArB;AAEA,QAAME,KAAK,GAAGV,QAAQ,EAAtB;AACA,QAAMW,YAAY,GAAGD,KAAK,CAACE,OAAN,CAAcC,UAAd,CAAyBC,OAA9C;AAEA,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBtB,KAAK,CAACuB,QAAN,CAAed,cAAf,CAA9B;AACA,QAAM,CAACe,mBAAD,EAAsBC,sBAAtB,IAAgDzB,KAAK,CAACuB,QAAN,CAAeN,YAAf,CAAtD;;AAEA,QAAMS,kBAAkB,GAAIC,KAAD,IAAmB;AAC1C,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAACuB,kBAAZ,CAA+BC,KAA/B;AACH;;AAED,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBH,MAAAA,sBAAsB,CAACE,KAAD,CAAtB;AACH;AACJ,GARD;;AAUA,QAAME,WAAW,GAAG,CAACF,KAAD,EAAwBG,QAAxB,KAA+C;AAC/D3B,IAAAA,WAAW,CAAC0B,WAAZ,CAAwBF,KAAxB,EAA+BG,QAA/B;AACH,GAFD;;AAIA,QAAMC,SAAS,GAAIJ,KAAD,IAAoB;AAClC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBN,MAAAA,UAAU,CAAC,CAACK,KAAF,CAAV;AACH;;AAEDxB,IAAAA,WAAW,CAAC4B,SAAZ,CAAsBJ,KAAtB;AACH,GAND;;AAQA,QAAMK,cAAc,GAAIL,KAAD,IAAoB;AACvC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAAC6B,cAAZ,CAA2BL,KAA3B;AACH;AACJ,GAJD;;AAMA,QAAMM,0BAA0B,GAAGhC,QAAQ,CAAC2B,EAAT,KAAgB,KAAhB,IAAyBP,OAA5D;AAEA,QAAMa,KAAK,GAAG7B,iBAAiB,EAA/B;AACA,QAAM8B,mBAAmB,GAAG5B,GAAG,CAAC,CAC5B;AACI6B,IAAAA,eAAe,EAAEZ,mBADrB;AAEIa,IAAAA,MAAM,EAAEH,KAAK,CAACI,GAFlB;AAGIC,IAAAA,IAAI,EAAE,CAHV;AAIIC,IAAAA,QAAQ,EAAE,UAJd;AAKIC,IAAAA,KAAK,EAAE,CALX;AAMIH,IAAAA,GAAG,EAAE,CANT;AAOII,IAAAA,MAAM,
|
|
1
|
+
{"version":3,"sources":["StatusBarProvider.tsx"],"names":["React","Platform","StatusBar","RNStatusBar","View","useSafeAreaInsets","useTheme","css","Provider","initialVisible","select","ios","android","StatusBarProvider","props","children","theme","defaultColor","palette","background","default","visible","setVisible","useState","backgroundViewColor","setBackgroundViewColor","setBackgroundColor","value","OS","setBarStyle","animated","setHidden","setTranslucent","shouldRenderBackgroundView","inset","backgroundViewStyle","backgroundColor","height","top","left","position","right","zIndex","statusBar"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,QAAT,EAAmBC,SAAS,IAAIC,WAAhC,EAA6CC,IAA7C,QAAyD,cAAzD;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AACA,SAASC,QAAT,QAAyB,mBAAzB;AACA,SAASC,GAAT,QAAoB,qBAApB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAGA,MAAMC,cAAc,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AACnCC,EAAAA,GAAG,EAAE,IAD8B;AAEnCC,EAAAA,OAAO,EAAE;AAF0B,CAAhB,CAAvB;AAKA,eAAe,SAASC,iBAAT,CAA2BC,KAA3B,EAA0D;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAeD,KAArB;AAEA,QAAME,KAAK,GAAGV,QAAQ,EAAtB;AACA,QAAMW,YAAY,GAAGD,KAAK,CAACE,OAAN,CAAcC,UAAd,CAAyBC,OAA9C;AAEA,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBtB,KAAK,CAACuB,QAAN,CAAed,cAAf,CAA9B;AACA,QAAM,CAACe,mBAAD,EAAsBC,sBAAtB,IAAgDzB,KAAK,CAACuB,QAAN,CAAeN,YAAf,CAAtD;;AAEA,QAAMS,kBAAkB,GAAIC,KAAD,IAAmB;AAC1C,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAACuB,kBAAZ,CAA+BC,KAA/B;AACH;;AAED,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBH,MAAAA,sBAAsB,CAACE,KAAD,CAAtB;AACH;AACJ,GARD;;AAUA,QAAME,WAAW,GAAG,CAACF,KAAD,EAAwBG,QAAxB,KAA+C;AAC/D3B,IAAAA,WAAW,CAAC0B,WAAZ,CAAwBF,KAAxB,EAA+BG,QAA/B;AACH,GAFD;;AAIA,QAAMC,SAAS,GAAIJ,KAAD,IAAoB;AAClC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBN,MAAAA,UAAU,CAAC,CAACK,KAAF,CAAV;AACH;;AAEDxB,IAAAA,WAAW,CAAC4B,SAAZ,CAAsBJ,KAAtB;AACH,GAND;;AAQA,QAAMK,cAAc,GAAIL,KAAD,IAAoB;AACvC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAAC6B,cAAZ,CAA2BL,KAA3B;AACH;AACJ,GAJD;;AAMA,QAAMM,0BAA0B,GAAGhC,QAAQ,CAAC2B,EAAT,KAAgB,KAAhB,IAAyBP,OAA5D;AAEA,QAAMa,KAAK,GAAG7B,iBAAiB,EAA/B;AACA,QAAM8B,mBAAmB,GAAG5B,GAAG,CAAC,CAC5B;AACI6B,IAAAA,eAAe,EAAEZ,mBADrB;AAEIa,IAAAA,MAAM,EAAEH,KAAK,CAACI,GAFlB;AAGIC,IAAAA,IAAI,EAAE,CAHV;AAIIC,IAAAA,QAAQ,EAAE,UAJd;AAKIC,IAAAA,KAAK,EAAE,CALX;AAMIH,IAAAA,GAAG,EAAE,CANT;AAOII,IAAAA,MAAM,EAAE1B,KAAK,CAAC0B,MAAN,CAAaC;AAPzB,GAD4B,CAAD,CAA/B;AAYA,sBACI,oBAAC,QAAD;AAAU,IAAA,KAAK,EAAE;AACbjB,MAAAA,kBADa;AAEbG,MAAAA,WAFa;AAGbE,MAAAA,SAHa;AAIbC,MAAAA;AAJa;AAAjB,KAMKC,0BAA0B,gBACvB,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEE;AAAb,IADuB,GAEvB,IARR,EASKpB,QATL,CADJ;AAaH","sourcesContent":["import React from 'react';\nimport type { StatusBarStyle } from 'react-native';\nimport { Platform, StatusBar as RNStatusBar, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useTheme } from '@fountain-ui/core';\nimport { css } from '@fountain-ui/styles';\nimport Provider from './Provider';\nimport type StatusBarProviderProps from './StatusBarProviderProps';\n\nconst initialVisible = Platform.select({\n ios: true,\n android: false,\n});\n\nexport default function StatusBarProvider(props: StatusBarProviderProps) {\n const { children } = props;\n\n const theme = useTheme();\n const defaultColor = theme.palette.background.default;\n\n const [visible, setVisible] = React.useState(initialVisible);\n const [backgroundViewColor, setBackgroundViewColor] = React.useState(defaultColor);\n\n const setBackgroundColor = (value: string) => {\n if (Platform.OS === 'android') {\n RNStatusBar.setBackgroundColor(value);\n }\n\n if (Platform.OS === 'ios') {\n setBackgroundViewColor(value);\n }\n };\n\n const setBarStyle = (value: StatusBarStyle, animated?: boolean) => {\n RNStatusBar.setBarStyle(value, animated);\n };\n\n const setHidden = (value: boolean) => {\n if (Platform.OS === 'ios') {\n setVisible(!value);\n }\n\n RNStatusBar.setHidden(value);\n };\n\n const setTranslucent = (value: boolean) => {\n if (Platform.OS === 'android') {\n RNStatusBar.setTranslucent(value);\n }\n };\n\n const shouldRenderBackgroundView = Platform.OS === 'ios' && visible;\n\n const inset = useSafeAreaInsets();\n const backgroundViewStyle = css([\n {\n backgroundColor: backgroundViewColor,\n height: inset.top,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: theme.zIndex.statusBar,\n },\n ]);\n\n return (\n <Provider value={{\n setBackgroundColor,\n setBarStyle,\n setHidden,\n setTranslucent,\n }}>\n {shouldRenderBackgroundView ? (\n <View style={backgroundViewStyle}/>\n ) : null}\n {children}\n </Provider>\n );\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChildrenMemoizedPage.tsx"],"names":["React","View","Page","props","isVisible","otherProps","memo","prevProps","nextProps","children","rerenderKey"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;;AAGA,MAAMC,IAAI,GAAG,SAASA,IAAT,CAAcC,KAAd,EAAgC;AACzC,QAAM;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,MAA+BF,KAArC;AAEA,sBACI,oBAAC,IAAD;AACI,IAAA,WAAW,EAAE;AADjB,KAEQE,UAFR,EADJ;AAMH,CATD;;AAWA,4BAAeL,KAAK,CAACM,IAAN,CAAWJ,IAAX,EAAiB,CAACK,SAAD,EAAYC,SAAZ,KAA0B;AACtD,MAAID,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA1D,EAAgE;AAC5D,WAAO,IAAP;AACH;;AAED,MAAIF,SAAS,CAACH,SAAV,KAAwBI,SAAS,CAACJ,SAAtC,EAAiD;AAC7C,WAAO,KAAP;AACH;;AAED,MAAIG,SAAS,CAACG,
|
|
1
|
+
{"version":3,"sources":["ChildrenMemoizedPage.tsx"],"names":["React","View","Page","props","isVisible","otherProps","memo","prevProps","nextProps","children","style","rerenderKey"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;;AAGA,MAAMC,IAAI,GAAG,SAASA,IAAT,CAAcC,KAAd,EAAgC;AACzC,QAAM;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,MAA+BF,KAArC;AAEA,sBACI,oBAAC,IAAD;AACI,IAAA,WAAW,EAAE;AADjB,KAEQE,UAFR,EADJ;AAMH,CATD;;AAWA,4BAAeL,KAAK,CAACM,IAAN,CAAWJ,IAAX,EAAiB,CAACK,SAAD,EAAYC,SAAZ,KAA0B;AACtD,MAAID,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA1D,EAAgE;AAC5D,WAAO,IAAP;AACH;;AAED,MAAIF,SAAS,CAACH,SAAV,KAAwBI,SAAS,CAACJ,SAAtC,EAAiD;AAC7C,WAAO,KAAP;AACH;;AAED,MAAIG,SAAS,CAACG,KAAV,KAAoBF,SAAS,CAACE,KAAlC,EAAyC;AACrC,WAAO,KAAP;AACH;;AAED,MAAIH,SAAS,CAACI,WAAV,KAA0BH,SAAS,CAACG,WAAxC,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,SAAOJ,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA7D;AACH,CAlBc,CAAf","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\nimport type { PageProps } from './ViewPagerProps';\n\nconst Page = function Page(props: PageProps) {\n const { isVisible, ...otherProps } = props;\n\n return (\n <View\n collapsable={false}\n {...otherProps}\n />\n );\n};\n\nexport default React.memo(Page, (prevProps, nextProps) => {\n if (prevProps.children === null && nextProps.children === null) {\n return true;\n }\n\n if (prevProps.isVisible !== nextProps.isVisible) {\n return false;\n }\n\n if (prevProps.style !== nextProps.style) {\n return false;\n }\n\n if (prevProps.rerenderKey !== nextProps.rerenderKey) {\n return false;\n }\n\n return prevProps.children !== null && nextProps.children !== null;\n});\n"]}
|
|
@@ -3,6 +3,8 @@ import { StyleSheet, View } from 'react-native';
|
|
|
3
3
|
import { defaultEnableVisibleHint, defaultLoading, defaultPageComponent, usePageRenderer } from './utils';
|
|
4
4
|
const styles = StyleSheet.create({
|
|
5
5
|
root: {
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
overflow: 'auto',
|
|
6
8
|
position: 'relative'
|
|
7
9
|
},
|
|
8
10
|
none: {
|
|
@@ -28,10 +30,8 @@ export default function ViewPager(props) {
|
|
|
28
30
|
});
|
|
29
31
|
return /*#__PURE__*/React.createElement(View, {
|
|
30
32
|
style: [styles.root, style]
|
|
31
|
-
}, React.Children.map(renderer(children), (child, i) => /*#__PURE__*/React.
|
|
32
|
-
|
|
33
|
-
style: i !== index ? styles.none : StyleSheet.absoluteFill,
|
|
34
|
-
children: child
|
|
33
|
+
}, React.Children.map(renderer(children), (child, i) => /*#__PURE__*/React.cloneElement(child, {
|
|
34
|
+
style: i !== index ? styles.none : StyleSheet.absoluteFill
|
|
35
35
|
})));
|
|
36
36
|
}
|
|
37
37
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ViewPagerWeb.tsx"],"names":["React","StyleSheet","View","defaultEnableVisibleHint","defaultLoading","defaultPageComponent","usePageRenderer","styles","create","root","position","none","display","ViewPager","props","children","enableVisibleHint","index","loading","pageComponent","pageForceRerenderKey","style","renderer","Children","map","child","i","absoluteFill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAASC,wBAAT,EAAmCC,cAAnC,EAAmDC,oBAAnD,EAAyEC,eAAzE,QAAgG,SAAhG;AAEA,MAAMC,MAAM,GAAGN,UAAU,CAACO,MAAX,CAAkB;AAC7BC,EAAAA,IAAI,EAAE;
|
|
1
|
+
{"version":3,"sources":["ViewPagerWeb.tsx"],"names":["React","StyleSheet","View","defaultEnableVisibleHint","defaultLoading","defaultPageComponent","usePageRenderer","styles","create","root","overflow","position","none","display","ViewPager","props","children","enableVisibleHint","index","loading","pageComponent","pageForceRerenderKey","style","renderer","Children","map","child","i","cloneElement","absoluteFill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAASC,wBAAT,EAAmCC,cAAnC,EAAmDC,oBAAnD,EAAyEC,eAAzE,QAAgG,SAAhG;AAEA,MAAMC,MAAM,GAAGN,UAAU,CAACO,MAAX,CAAkB;AAC7BC,EAAAA,IAAI,EAAE;AACF;AACAC,IAAAA,QAAQ,EAAE,MAFR;AAGFC,IAAAA,QAAQ,EAAE;AAHR,GADuB;AAM7BC,EAAAA,IAAI,EAAE;AAAEC,IAAAA,OAAO,EAAE;AAAX;AANuB,CAAlB,CAAf;AASA,eAAe,SAASC,SAAT,CAAmBC,KAAnB,EAA0C;AACrD,QAAM;AACFC,IAAAA,QADE;AAEFC,IAAAA,iBAAiB,GAAGd,wBAFlB;AAGFe,IAAAA,KAHE;AAIFC,IAAAA,OAAO,GAAGf,cAJR;AAKFgB,IAAAA,aAAa,GAAGf,oBALd;AAMFgB,IAAAA,oBANE;AAOFC,IAAAA;AAPE,MAQFP,KARJ;AAUA,QAAMQ,QAAQ,GAAGjB,eAAe,CAAC;AAC7BW,IAAAA,iBAD6B;AAE7BC,IAAAA,KAF6B;AAG7BC,IAAAA,OAH6B;AAI7BC,IAAAA,aAJ6B;AAK7BC,IAAAA;AAL6B,GAAD,CAAhC;AAQA,sBACI,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACd,MAAM,CAACE,IAAR,EAAca,KAAd;AAAb,KACKtB,KAAK,CAACwB,QAAN,CAAeC,GAAf,CAAmBF,QAAQ,CAACP,QAAD,CAA3B,EAAuC,CAACU,KAAD,EAAQC,CAAR,kBACpC3B,KAAK,CAAC4B,YAAN,CAAmBF,KAAnB,EAAgD;AAC5CJ,IAAAA,KAAK,EAAEK,CAAC,KAAKT,KAAN,GAAcX,MAAM,CAACK,IAArB,GAA4BX,UAAU,CAAC4B;AADF,GAAhD,CADH,CADL,CADJ;AASH;AAAA","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport type ViewPagerProps from './ViewPagerProps';\nimport { defaultEnableVisibleHint, defaultLoading, defaultPageComponent, usePageRenderer } from './utils';\n\nconst styles = StyleSheet.create({\n root: {\n // @ts-ignore\n overflow: 'auto',\n position: 'relative',\n },\n none: { display: 'none' },\n});\n\nexport default function ViewPager(props: ViewPagerProps) {\n const {\n children,\n enableVisibleHint = defaultEnableVisibleHint,\n index,\n loading = defaultLoading,\n pageComponent = defaultPageComponent,\n pageForceRerenderKey,\n style,\n } = props;\n\n const renderer = usePageRenderer({\n enableVisibleHint,\n index,\n loading,\n pageComponent,\n pageForceRerenderKey,\n });\n\n return (\n <View style={[styles.root, style]}>\n {React.Children.map(renderer(children), (child, i) =>\n React.cloneElement(child as React.ReactElement, {\n style: i !== index ? styles.none : StyleSheet.absoluteFill,\n }),\n )}\n </View>\n );\n};\n"]}
|
|
@@ -30,6 +30,11 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
|
|
|
30
30
|
* @default 0.9
|
|
31
31
|
*/
|
|
32
32
|
inactiveSlideScale?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Web only. Value of the 'scale' transform applied to a active slide.
|
|
35
|
+
* @default 0.990
|
|
36
|
+
*/
|
|
37
|
+
activeSlideScale?: number;
|
|
33
38
|
/**
|
|
34
39
|
* A number representing the index of the active slide.
|
|
35
40
|
*/
|
|
@@ -57,5 +62,20 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
|
|
|
57
62
|
* @default 1
|
|
58
63
|
*/
|
|
59
64
|
slidesToShow?: number;
|
|
65
|
+
/**
|
|
66
|
+
* Web only. Enable items to display at the center.
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
centerMode?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Web only. Enable arrows to display.
|
|
72
|
+
* @default true
|
|
73
|
+
*/
|
|
74
|
+
arrows?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Web only. Style of arrows
|
|
77
|
+
* @default true
|
|
78
|
+
*/
|
|
79
|
+
arrowsStyle?: object;
|
|
60
80
|
}> {
|
|
61
81
|
}
|
|
@@ -2,4 +2,5 @@ export declare const defaultAutoplay = false;
|
|
|
2
2
|
export declare const defaultAutoplayInterval = 3000;
|
|
3
3
|
export declare const defaultInactiveSlideOpacity = 0.7;
|
|
4
4
|
export declare const defaultInactiveSlideScale = 0.9;
|
|
5
|
+
export declare const defaultActiveSlideScale = 0.99;
|
|
5
6
|
export declare const defaultInfinite = false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fountain-ui/lab",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Fountain-UI Team",
|
|
6
6
|
"description": "Incubator for Fountain-UI React components.",
|
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
"prepare": "bob build"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@emotion/react": "^11.
|
|
18
|
+
"@emotion/react": "^11.4.1",
|
|
19
19
|
"@emotion/styled": "^11.0.0",
|
|
20
|
-
"@fountain-ui/
|
|
21
|
-
"
|
|
20
|
+
"@fountain-ui/icons": "^1.11.0",
|
|
21
|
+
"@fountain-ui/utils": "^1.1.0",
|
|
22
|
+
"react-native-calendars": "1.1249.0"
|
|
22
23
|
},
|
|
23
24
|
"peerDependencies": {
|
|
24
25
|
"@fountain-ui/core": "^1.0.0-alpha.4",
|
|
25
|
-
"@gorhom/bottom-sheet": "^3.
|
|
26
|
+
"@gorhom/bottom-sheet": "^3.6.6",
|
|
26
27
|
"@react-native-community/viewpager": "> 4.2.x",
|
|
27
28
|
"date-fns": "^2.0.0",
|
|
28
29
|
"react": "^16.8.0 || ^17.0.0",
|
|
@@ -52,15 +53,15 @@
|
|
|
52
53
|
}
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
|
-
"@fountain-ui/core": "^1.
|
|
56
|
-
"@gorhom/bottom-sheet": "
|
|
56
|
+
"@fountain-ui/core": "^1.10.0",
|
|
57
|
+
"@gorhom/bottom-sheet": "3.6.6",
|
|
57
58
|
"@react-native-community/viewpager": "^4.2.2",
|
|
58
|
-
"@types/react-native-snap-carousel": "^3.8.
|
|
59
|
-
"@types/react-slick": "^0.23.
|
|
60
|
-
"date-fns": "^2.
|
|
61
|
-
"react-native-safe-area-context": "^3.
|
|
59
|
+
"@types/react-native-snap-carousel": "^3.8.4",
|
|
60
|
+
"@types/react-slick": "^0.23.5",
|
|
61
|
+
"date-fns": "^2.23.0",
|
|
62
|
+
"react-native-safe-area-context": "^3.3.2",
|
|
62
63
|
"react-native-snap-carousel": "^3.9.1",
|
|
63
|
-
"react-slick": "^0.
|
|
64
|
+
"react-slick": "^0.28.1"
|
|
64
65
|
},
|
|
65
66
|
"react-native-builder-bob": {
|
|
66
67
|
"source": "./src",
|
|
@@ -84,5 +85,5 @@
|
|
|
84
85
|
"publishConfig": {
|
|
85
86
|
"access": "public"
|
|
86
87
|
},
|
|
87
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "38c89201acebdf0642b1547b66af8e7f970f55e2"
|
|
88
89
|
}
|
|
@@ -7,66 +7,90 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
|
|
|
7
7
|
* If `true`, enable autoplay.
|
|
8
8
|
* @default false
|
|
9
9
|
*/
|
|
10
|
-
autoplay?: boolean
|
|
10
|
+
autoplay?: boolean;
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Delay in ms until navigating to the next item.
|
|
14
14
|
* @default 3000
|
|
15
15
|
*/
|
|
16
|
-
autoplayInterval?: number
|
|
16
|
+
autoplayInterval?: number;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Padding for center slide. If specified, `slidesToScroll` and `slidesToShow` set to 1.
|
|
20
20
|
*/
|
|
21
|
-
centerSlidePadding?: number
|
|
21
|
+
centerSlidePadding?: number;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Delay in ms until navigating to the next item.
|
|
25
25
|
*/
|
|
26
|
-
data: ReadonlyArray<ItemT
|
|
26
|
+
data: ReadonlyArray<ItemT>;
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* Value of the opacity effect applied to inactive slides.
|
|
30
30
|
* @default 0.7
|
|
31
31
|
*/
|
|
32
|
-
inactiveSlideOpacity?: number
|
|
32
|
+
inactiveSlideOpacity?: number;
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Value of the 'scale' transform applied to inactive slides.
|
|
36
36
|
* @default 0.9
|
|
37
37
|
*/
|
|
38
|
-
inactiveSlideScale?: number
|
|
38
|
+
inactiveSlideScale?: number;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Web only. Value of the 'scale' transform applied to a active slide.
|
|
42
|
+
* @default 0.990
|
|
43
|
+
*/
|
|
44
|
+
activeSlideScale?: number;
|
|
39
45
|
|
|
40
46
|
/**
|
|
41
47
|
* A number representing the index of the active slide.
|
|
42
48
|
*/
|
|
43
|
-
index: number
|
|
49
|
+
index: number;
|
|
44
50
|
|
|
45
51
|
/**
|
|
46
52
|
* Enable infinite loop mode.
|
|
47
53
|
* @default false
|
|
48
54
|
*/
|
|
49
|
-
infinite?: boolean
|
|
55
|
+
infinite?: boolean;
|
|
50
56
|
|
|
51
57
|
/**
|
|
52
58
|
* Callback fired when an index is changed.
|
|
53
59
|
*/
|
|
54
|
-
onChange?: (newIndex: number) => void
|
|
60
|
+
onChange?: (newIndex: number) => void;
|
|
55
61
|
|
|
56
62
|
/**
|
|
57
63
|
* Takes an item from data and renders it into the list.
|
|
58
64
|
*/
|
|
59
|
-
renderItem: (info: Omit<ListRenderItemInfo<ItemT>, 'separators'>) => React.ReactElement | null
|
|
65
|
+
renderItem: (info: Omit<ListRenderItemInfo<ItemT>, 'separators'>) => React.ReactElement | null;
|
|
60
66
|
|
|
61
67
|
/**
|
|
62
68
|
* Web only. Number of slides to scroll at once.
|
|
63
69
|
* @default 1
|
|
64
70
|
*/
|
|
65
|
-
slidesToScroll?: number
|
|
71
|
+
slidesToScroll?: number;
|
|
66
72
|
|
|
67
73
|
/**
|
|
68
74
|
* Web only. Number of slides to display.
|
|
69
75
|
* @default 1
|
|
70
76
|
*/
|
|
71
|
-
slidesToShow?: number
|
|
72
|
-
|
|
77
|
+
slidesToShow?: number;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Web only. Enable items to display at the center.
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
83
|
+
centerMode?: boolean;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Web only. Enable arrows to display.
|
|
87
|
+
* @default true
|
|
88
|
+
*/
|
|
89
|
+
arrows?: boolean;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Web only. Style of arrows
|
|
93
|
+
* @default true
|
|
94
|
+
*/
|
|
95
|
+
arrowsStyle?: object;
|
|
96
|
+
}> {}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
2
3
|
import Slick, { Settings } from 'react-slick';
|
|
3
4
|
import styled from '@emotion/styled';
|
|
5
|
+
import { ChevronLeft, ChevronRight } from '@fountain-ui/icons';
|
|
4
6
|
import { mapIndexed } from '@fountain-ui/utils';
|
|
5
7
|
import type CarouselProps from './CarouselProps';
|
|
6
8
|
import {
|
|
@@ -8,11 +10,11 @@ import {
|
|
|
8
10
|
defaultAutoplayInterval,
|
|
9
11
|
defaultInactiveSlideOpacity,
|
|
10
12
|
defaultInactiveSlideScale,
|
|
13
|
+
defaultActiveSlideScale,
|
|
11
14
|
defaultInfinite,
|
|
12
15
|
} from './utils';
|
|
13
16
|
|
|
14
17
|
const baseSettings: Settings = {
|
|
15
|
-
arrows: false,
|
|
16
18
|
dots: false,
|
|
17
19
|
draggable: true,
|
|
18
20
|
lazyLoad: 'ondemand',
|
|
@@ -27,66 +29,47 @@ const baseSettings: Settings = {
|
|
|
27
29
|
const noop = () => void 0;
|
|
28
30
|
|
|
29
31
|
const StyledContainer: any = styled.div((props: any) => ({
|
|
30
|
-
['& .slick-slider']: {
|
|
31
|
-
display: 'block',
|
|
32
|
-
position: 'relative',
|
|
33
|
-
userSelect: 'none',
|
|
34
|
-
},
|
|
35
|
-
['& .slick-list']: {
|
|
36
|
-
display: 'block',
|
|
37
|
-
position: 'relative',
|
|
38
|
-
overflow: 'hidden',
|
|
39
|
-
margin: 0,
|
|
40
|
-
padding: 0,
|
|
41
|
-
['&:focus']: {
|
|
42
|
-
outline: 'none',
|
|
43
|
-
},
|
|
44
|
-
['&.dragging']: {
|
|
45
|
-
cursor: 'pointer',
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
['& .slick-slider .slick-track, &.slick-slider .slick-list']: {
|
|
49
|
-
transform: 'translate3d(0, 0, 0)',
|
|
50
|
-
},
|
|
51
32
|
['& .slick-track']: {
|
|
52
|
-
display: '
|
|
53
|
-
position: 'relative',
|
|
54
|
-
top: 0,
|
|
55
|
-
left: 0,
|
|
56
|
-
['&:before, &:after']: {
|
|
57
|
-
display: 'table',
|
|
58
|
-
content: '\'\'',
|
|
59
|
-
},
|
|
60
|
-
['&:after']: {
|
|
61
|
-
clear: 'both',
|
|
62
|
-
},
|
|
33
|
+
display: 'flex',
|
|
63
34
|
},
|
|
64
|
-
['& .slick-slide']: {
|
|
65
|
-
display: '
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
['& > div']: {
|
|
70
|
-
display: 'flex',
|
|
71
|
-
transform: `scale(${props.inactiveSlideScale})`,
|
|
72
|
-
transition: 'transform .5s',
|
|
73
|
-
opacity: props.inactiveSlideOpacity,
|
|
74
|
-
},
|
|
35
|
+
['& .slick-slide > div']: {
|
|
36
|
+
display: 'flex',
|
|
37
|
+
opacity: 0.2,
|
|
38
|
+
transform: `scale(${props.inactiveSlideScale})`,
|
|
39
|
+
transition: 'transform .5s',
|
|
75
40
|
},
|
|
76
|
-
[
|
|
77
|
-
transform:
|
|
41
|
+
[`& .slick-active.slick-current > div`]: {
|
|
42
|
+
transform: `scale(${props.activeSlideScale})`,
|
|
78
43
|
opacity: 1,
|
|
79
44
|
},
|
|
80
|
-
|
|
81
|
-
display: 'block',
|
|
82
|
-
},
|
|
45
|
+
...props.arrowsStyle,
|
|
83
46
|
}));
|
|
84
47
|
|
|
48
|
+
interface ArrowContainerProps {
|
|
49
|
+
children: React.ReactElement;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const ArrowContainer = ({ children }: ArrowContainerProps) => (
|
|
53
|
+
<View
|
|
54
|
+
style={{
|
|
55
|
+
height: '100%',
|
|
56
|
+
justifyContent: 'center',
|
|
57
|
+
alignItems: 'center',
|
|
58
|
+
backgroundColor: 'white',
|
|
59
|
+
borderRadius: 16,
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
{children}
|
|
63
|
+
</View>
|
|
64
|
+
);
|
|
65
|
+
|
|
85
66
|
export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
|
|
86
67
|
const {
|
|
68
|
+
activeSlideScale = defaultActiveSlideScale,
|
|
87
69
|
autoplay = defaultAutoplay,
|
|
88
70
|
autoplayInterval = defaultAutoplayInterval,
|
|
89
|
-
|
|
71
|
+
centerMode = true,
|
|
72
|
+
centerSlidePadding = 0,
|
|
90
73
|
data,
|
|
91
74
|
inactiveSlideOpacity = defaultInactiveSlideOpacity,
|
|
92
75
|
inactiveSlideScale = defaultInactiveSlideScale,
|
|
@@ -96,6 +79,8 @@ export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
|
|
|
96
79
|
renderItem,
|
|
97
80
|
slidesToScroll = 1,
|
|
98
81
|
slidesToShow = 1,
|
|
82
|
+
arrows = false,
|
|
83
|
+
arrowsStyle = {},
|
|
99
84
|
} = props;
|
|
100
85
|
|
|
101
86
|
const slickRef = React.useRef<Slick | null>(null);
|
|
@@ -128,8 +113,10 @@ export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
|
|
|
128
113
|
|
|
129
114
|
return (
|
|
130
115
|
<StyledContainer
|
|
116
|
+
activeSlideScale={activeSlideScale}
|
|
131
117
|
inactiveSlideOpacity={inactiveSlideOpacity}
|
|
132
118
|
inactiveSlideScale={inactiveSlideScale}
|
|
119
|
+
arrowsStyle={arrowsStyle}
|
|
133
120
|
>
|
|
134
121
|
<Slick
|
|
135
122
|
{...baseSettings}
|
|
@@ -137,13 +124,25 @@ export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
|
|
|
137
124
|
autoplay={autoplay}
|
|
138
125
|
autoplaySpeed={autoplayInterval}
|
|
139
126
|
beforeChange={handleBeforeChange}
|
|
140
|
-
centerMode={
|
|
141
|
-
centerPadding={
|
|
127
|
+
centerMode={centerMode}
|
|
128
|
+
centerPadding={`${centerSlidePadding}px`}
|
|
142
129
|
infinite={infinite}
|
|
143
130
|
initialSlide={index}
|
|
144
131
|
ref={slickRef}
|
|
145
|
-
slidesToScroll={
|
|
146
|
-
slidesToShow={
|
|
132
|
+
slidesToScroll={slidesToScroll}
|
|
133
|
+
slidesToShow={slidesToShow}
|
|
134
|
+
arrows={arrows}
|
|
135
|
+
prevArrow={(
|
|
136
|
+
// If root component is not a div, there's no arrow class.
|
|
137
|
+
<div>
|
|
138
|
+
<ArrowContainer children={<ChevronLeft fill={'#767676'}/>}/>
|
|
139
|
+
</div>
|
|
140
|
+
)}
|
|
141
|
+
nextArrow={(
|
|
142
|
+
<div>
|
|
143
|
+
<ArrowContainer children={<ChevronRight fill={'#767676'}/>}/>
|
|
144
|
+
</div>
|
|
145
|
+
)}
|
|
147
146
|
>
|
|
148
147
|
{mapIndexed((item, index) => {
|
|
149
148
|
const child = renderItem({ item, index });
|
package/src/Carousel/utils.ts
CHANGED