arrows.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _extends from "@babel/runtime/helpers/esm/extends";
  3. import { createVNode as _createVNode, createTextVNode as _createTextVNode } from "vue";
  4. import classnames from '../_util/classNames';
  5. import { cloneElement } from '../_util/vnode';
  6. import { canGoNext } from './utils/innerSliderUtils';
  7. function noop() {}
  8. function handler(options, handle, e) {
  9. if (e) {
  10. e.preventDefault();
  11. }
  12. handle(options, e);
  13. }
  14. const PrevArrow = (_, _ref) => {
  15. let {
  16. attrs
  17. } = _ref;
  18. const {
  19. clickHandler,
  20. infinite,
  21. currentSlide,
  22. slideCount,
  23. slidesToShow
  24. } = attrs;
  25. const prevClasses = {
  26. 'slick-arrow': true,
  27. 'slick-prev': true
  28. };
  29. let prevHandler = function (e) {
  30. handler({
  31. message: 'previous'
  32. }, clickHandler, e);
  33. };
  34. if (!infinite && (currentSlide === 0 || slideCount <= slidesToShow)) {
  35. prevClasses['slick-disabled'] = true;
  36. prevHandler = noop;
  37. }
  38. const prevArrowProps = {
  39. key: '0',
  40. 'data-role': 'none',
  41. class: prevClasses,
  42. style: {
  43. display: 'block'
  44. },
  45. onClick: prevHandler
  46. };
  47. const customProps = {
  48. currentSlide,
  49. slideCount
  50. };
  51. let prevArrow;
  52. if (attrs.prevArrow) {
  53. prevArrow = cloneElement(attrs.prevArrow(_extends(_extends({}, prevArrowProps), customProps)), {
  54. key: '0',
  55. class: prevClasses,
  56. style: {
  57. display: 'block'
  58. },
  59. onClick: prevHandler
  60. }, false);
  61. } else {
  62. prevArrow = _createVNode("button", _objectSpread({
  63. "key": "0",
  64. "type": "button"
  65. }, prevArrowProps), [' ', _createTextVNode("Previous")]);
  66. }
  67. return prevArrow;
  68. };
  69. PrevArrow.inheritAttrs = false;
  70. const NextArrow = (_, _ref2) => {
  71. let {
  72. attrs
  73. } = _ref2;
  74. const {
  75. clickHandler,
  76. currentSlide,
  77. slideCount
  78. } = attrs;
  79. const nextClasses = {
  80. 'slick-arrow': true,
  81. 'slick-next': true
  82. };
  83. let nextHandler = function (e) {
  84. handler({
  85. message: 'next'
  86. }, clickHandler, e);
  87. };
  88. if (!canGoNext(attrs)) {
  89. nextClasses['slick-disabled'] = true;
  90. nextHandler = noop;
  91. }
  92. const nextArrowProps = {
  93. key: '1',
  94. 'data-role': 'none',
  95. class: classnames(nextClasses),
  96. style: {
  97. display: 'block'
  98. },
  99. onClick: nextHandler
  100. };
  101. const customProps = {
  102. currentSlide,
  103. slideCount
  104. };
  105. let nextArrow;
  106. if (attrs.nextArrow) {
  107. nextArrow = cloneElement(attrs.nextArrow(_extends(_extends({}, nextArrowProps), customProps)), {
  108. key: '1',
  109. class: classnames(nextClasses),
  110. style: {
  111. display: 'block'
  112. },
  113. onClick: nextHandler
  114. }, false);
  115. } else {
  116. nextArrow = _createVNode("button", _objectSpread({
  117. "key": "1",
  118. "type": "button"
  119. }, nextArrowProps), [' ', _createTextVNode("Next")]);
  120. }
  121. return nextArrow;
  122. };
  123. NextArrow.inheritAttrs = false;
  124. export { PrevArrow, NextArrow };