index.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _internal = require("../../theme/internal");
  9. var _style = require("../../style");
  10. const genCarouselStyle = token => {
  11. const {
  12. componentCls,
  13. antCls,
  14. carouselArrowSize,
  15. carouselDotOffset,
  16. marginXXS
  17. } = token;
  18. const arrowOffset = -carouselArrowSize * 1.25;
  19. const carouselDotMargin = marginXXS;
  20. return {
  21. [componentCls]: (0, _extends2.default)((0, _extends2.default)({}, (0, _style.resetComponent)(token)), {
  22. '.slick-slider': {
  23. position: 'relative',
  24. display: 'block',
  25. boxSizing: 'border-box',
  26. touchAction: 'pan-y',
  27. WebkitTouchCallout: 'none',
  28. WebkitTapHighlightColor: 'transparent',
  29. '.slick-track, .slick-list': {
  30. transform: 'translate3d(0, 0, 0)',
  31. touchAction: 'pan-y'
  32. }
  33. },
  34. '.slick-list': {
  35. position: 'relative',
  36. display: 'block',
  37. margin: 0,
  38. padding: 0,
  39. overflow: 'hidden',
  40. '&:focus': {
  41. outline: 'none'
  42. },
  43. '&.dragging': {
  44. cursor: 'pointer'
  45. },
  46. '.slick-slide': {
  47. pointerEvents: 'none',
  48. // https://github.com/ant-design/ant-design/issues/23294
  49. [`input${antCls}-radio-input, input${antCls}-checkbox-input`]: {
  50. visibility: 'hidden'
  51. },
  52. '&.slick-active': {
  53. pointerEvents: 'auto',
  54. [`input${antCls}-radio-input, input${antCls}-checkbox-input`]: {
  55. visibility: 'visible'
  56. }
  57. },
  58. // fix Carousel content height not match parent node
  59. // when children is empty node
  60. // https://github.com/ant-design/ant-design/issues/25878
  61. '> div > div': {
  62. verticalAlign: 'bottom'
  63. }
  64. }
  65. },
  66. '.slick-track': {
  67. position: 'relative',
  68. top: 0,
  69. insetInlineStart: 0,
  70. display: 'block',
  71. '&::before, &::after': {
  72. display: 'table',
  73. content: '""'
  74. },
  75. '&::after': {
  76. clear: 'both'
  77. }
  78. },
  79. '.slick-slide': {
  80. display: 'none',
  81. float: 'left',
  82. height: '100%',
  83. minHeight: 1,
  84. img: {
  85. display: 'block'
  86. },
  87. '&.dragging img': {
  88. pointerEvents: 'none'
  89. }
  90. },
  91. '.slick-initialized .slick-slide': {
  92. display: 'block'
  93. },
  94. '.slick-vertical .slick-slide': {
  95. display: 'block',
  96. height: 'auto'
  97. },
  98. '.slick-arrow.slick-hidden': {
  99. display: 'none'
  100. },
  101. // Arrows
  102. '.slick-prev, .slick-next': {
  103. position: 'absolute',
  104. top: '50%',
  105. display: 'block',
  106. width: carouselArrowSize,
  107. height: carouselArrowSize,
  108. marginTop: -carouselArrowSize / 2,
  109. padding: 0,
  110. color: 'transparent',
  111. fontSize: 0,
  112. lineHeight: 0,
  113. background: 'transparent',
  114. border: 0,
  115. outline: 'none',
  116. cursor: 'pointer',
  117. '&:hover, &:focus': {
  118. color: 'transparent',
  119. background: 'transparent',
  120. outline: 'none',
  121. '&::before': {
  122. opacity: 1
  123. }
  124. },
  125. '&.slick-disabled::before': {
  126. opacity: 0.25
  127. }
  128. },
  129. '.slick-prev': {
  130. insetInlineStart: arrowOffset,
  131. '&::before': {
  132. content: '"←"'
  133. }
  134. },
  135. '.slick-next': {
  136. insetInlineEnd: arrowOffset,
  137. '&::before': {
  138. content: '"→"'
  139. }
  140. },
  141. // Dots
  142. '.slick-dots': {
  143. position: 'absolute',
  144. insetInlineEnd: 0,
  145. bottom: 0,
  146. insetInlineStart: 0,
  147. zIndex: 15,
  148. display: 'flex !important',
  149. justifyContent: 'center',
  150. paddingInlineStart: 0,
  151. listStyle: 'none',
  152. '&-bottom': {
  153. bottom: carouselDotOffset
  154. },
  155. '&-top': {
  156. top: carouselDotOffset,
  157. bottom: 'auto'
  158. },
  159. li: {
  160. position: 'relative',
  161. display: 'inline-block',
  162. flex: '0 1 auto',
  163. boxSizing: 'content-box',
  164. width: token.dotWidth,
  165. height: token.dotHeight,
  166. marginInline: carouselDotMargin,
  167. padding: 0,
  168. textAlign: 'center',
  169. textIndent: -999,
  170. verticalAlign: 'top',
  171. transition: `all ${token.motionDurationSlow}`,
  172. button: {
  173. position: 'relative',
  174. display: 'block',
  175. width: '100%',
  176. height: token.dotHeight,
  177. padding: 0,
  178. color: 'transparent',
  179. fontSize: 0,
  180. background: token.colorBgContainer,
  181. border: 0,
  182. borderRadius: 1,
  183. outline: 'none',
  184. cursor: 'pointer',
  185. opacity: 0.3,
  186. transition: `all ${token.motionDurationSlow}`,
  187. '&: hover, &:focus': {
  188. opacity: 0.75
  189. },
  190. '&::after': {
  191. position: 'absolute',
  192. inset: -carouselDotMargin,
  193. content: '""'
  194. }
  195. },
  196. '&.slick-active': {
  197. width: token.dotWidthActive,
  198. '& button': {
  199. background: token.colorBgContainer,
  200. opacity: 1
  201. },
  202. '&: hover, &:focus': {
  203. opacity: 1
  204. }
  205. }
  206. }
  207. }
  208. })
  209. };
  210. };
  211. const genCarouselVerticalStyle = token => {
  212. const {
  213. componentCls,
  214. carouselDotOffset,
  215. marginXXS
  216. } = token;
  217. const reverseSizeOfDot = {
  218. width: token.dotHeight,
  219. height: token.dotWidth
  220. };
  221. return {
  222. [`${componentCls}-vertical`]: {
  223. '.slick-dots': {
  224. top: '50%',
  225. bottom: 'auto',
  226. flexDirection: 'column',
  227. width: token.dotHeight,
  228. height: 'auto',
  229. margin: 0,
  230. transform: 'translateY(-50%)',
  231. '&-left': {
  232. insetInlineEnd: 'auto',
  233. insetInlineStart: carouselDotOffset
  234. },
  235. '&-right': {
  236. insetInlineEnd: carouselDotOffset,
  237. insetInlineStart: 'auto'
  238. },
  239. li: (0, _extends2.default)((0, _extends2.default)({}, reverseSizeOfDot), {
  240. margin: `${marginXXS}px 0`,
  241. verticalAlign: 'baseline',
  242. button: reverseSizeOfDot,
  243. '&.slick-active': (0, _extends2.default)((0, _extends2.default)({}, reverseSizeOfDot), {
  244. button: reverseSizeOfDot
  245. })
  246. })
  247. }
  248. }
  249. };
  250. };
  251. const genCarouselRtlStyle = token => {
  252. const {
  253. componentCls
  254. } = token;
  255. return [{
  256. [`${componentCls}-rtl`]: {
  257. direction: 'rtl',
  258. // Dots
  259. '.slick-dots': {
  260. [`${componentCls}-rtl&`]: {
  261. flexDirection: 'row-reverse'
  262. }
  263. }
  264. }
  265. }, {
  266. [`${componentCls}-vertical`]: {
  267. '.slick-dots': {
  268. [`${componentCls}-rtl&`]: {
  269. flexDirection: 'column'
  270. }
  271. }
  272. }
  273. }];
  274. };
  275. // ============================== Export ==============================
  276. var _default = exports.default = (0, _internal.genComponentStyleHook)('Carousel', token => {
  277. const {
  278. controlHeightLG,
  279. controlHeightSM
  280. } = token;
  281. const carouselToken = (0, _internal.mergeToken)(token, {
  282. carouselArrowSize: controlHeightLG / 2,
  283. carouselDotOffset: controlHeightSM / 2
  284. });
  285. return [genCarouselStyle(carouselToken), genCarouselVerticalStyle(carouselToken), genCarouselRtlStyle(carouselToken)];
  286. }, {
  287. dotWidth: 16,
  288. dotHeight: 3,
  289. dotWidthActive: 24
  290. });