transition.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. Object.defineProperty(exports, "Transition", {
  7. enumerable: true,
  8. get: function () {
  9. return _vue.Transition;
  10. }
  11. });
  12. Object.defineProperty(exports, "TransitionGroup", {
  13. enumerable: true,
  14. get: function () {
  15. return _vue.TransitionGroup;
  16. }
  17. });
  18. exports.getTransitionProps = exports.getTransitionName = exports.getTransitionGroupProps = exports.getTransitionDirection = exports.default = exports.collapseMotion = void 0;
  19. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  20. var _vue = require("vue");
  21. var _type = require("./type");
  22. const SelectPlacements = (0, _type.tuple)('bottomLeft', 'bottomRight', 'topLeft', 'topRight');
  23. const getTransitionDirection = placement => {
  24. if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {
  25. return `slide-down`;
  26. }
  27. return `slide-up`;
  28. };
  29. exports.getTransitionDirection = getTransitionDirection;
  30. const getTransitionProps = function (transitionName) {
  31. let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  32. const transitionProps = transitionName ? (0, _extends2.default)({
  33. name: transitionName,
  34. appear: true,
  35. // type: 'animation',
  36. // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`,
  37. // appearActiveClass: `antdv-base-transtion`,
  38. // appearToClass: `${transitionName}-appear ${transitionName}-appear-active`,
  39. enterFromClass: `${transitionName}-enter ${transitionName}-enter-prepare ${transitionName}-enter-start`,
  40. enterActiveClass: `${transitionName}-enter ${transitionName}-enter-prepare`,
  41. enterToClass: `${transitionName}-enter ${transitionName}-enter-active`,
  42. leaveFromClass: ` ${transitionName}-leave`,
  43. leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`,
  44. leaveToClass: `${transitionName}-leave ${transitionName}-leave-active`
  45. }, opt) : (0, _extends2.default)({
  46. css: false
  47. }, opt);
  48. return transitionProps;
  49. };
  50. exports.getTransitionProps = getTransitionProps;
  51. const getTransitionGroupProps = function (transitionName) {
  52. let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  53. const transitionProps = transitionName ? (0, _extends2.default)({
  54. name: transitionName,
  55. appear: true,
  56. // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`,
  57. appearActiveClass: `${transitionName}`,
  58. appearToClass: `${transitionName}-appear ${transitionName}-appear-active`,
  59. enterFromClass: `${transitionName}-appear ${transitionName}-enter ${transitionName}-appear-prepare ${transitionName}-enter-prepare`,
  60. enterActiveClass: `${transitionName}`,
  61. enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,
  62. leaveActiveClass: `${transitionName} ${transitionName}-leave`,
  63. leaveToClass: `${transitionName}-leave-active`
  64. }, opt) : (0, _extends2.default)({
  65. css: false
  66. }, opt);
  67. return transitionProps;
  68. };
  69. // ================== Collapse Motion ==================
  70. exports.getTransitionGroupProps = getTransitionGroupProps;
  71. const getCollapsedHeight = () => ({
  72. height: 0,
  73. opacity: 0
  74. });
  75. const getRealHeight = node => ({
  76. height: `${node.scrollHeight}px`,
  77. opacity: 1
  78. });
  79. const getCurrentHeight = node => ({
  80. height: `${node.offsetHeight}px`
  81. });
  82. const collapseMotion = function () {
  83. let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'ant-motion-collapse';
  84. let style = arguments.length > 1 ? arguments[1] : undefined;
  85. let className = arguments.length > 2 ? arguments[2] : undefined;
  86. return {
  87. name,
  88. appear: true,
  89. css: true,
  90. onBeforeEnter: node => {
  91. className.value = name;
  92. style.value = getCollapsedHeight(node);
  93. },
  94. onEnter: node => {
  95. (0, _vue.nextTick)(() => {
  96. style.value = getRealHeight(node);
  97. });
  98. },
  99. onAfterEnter: () => {
  100. className.value = '';
  101. style.value = {};
  102. },
  103. onBeforeLeave: node => {
  104. className.value = name;
  105. style.value = getCurrentHeight(node);
  106. },
  107. onLeave: node => {
  108. setTimeout(() => {
  109. style.value = getCollapsedHeight(node);
  110. });
  111. },
  112. onAfterLeave: () => {
  113. className.value = '';
  114. style.value = {};
  115. }
  116. };
  117. };
  118. exports.collapseMotion = collapseMotion;
  119. const getTransitionName = (rootPrefixCls, motion, transitionName) => {
  120. if (transitionName !== undefined) {
  121. return transitionName;
  122. }
  123. return `${rootPrefixCls}-${motion}`;
  124. };
  125. exports.getTransitionName = getTransitionName;
  126. var _default = exports.default = _vue.Transition;