u-transition.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. "use strict";
  2. const uni_modules_uviewPlus_components_uTransition_props = require("./props.js");
  3. const uni_modules_uviewPlus_libs_mixin_mpMixin = require("../../libs/mixin/mpMixin.js");
  4. const uni_modules_uviewPlus_libs_mixin_mixin = require("../../libs/mixin/mixin.js");
  5. const uni_modules_uviewPlus_libs_function_index = require("../../libs/function/index.js");
  6. const uni_modules_uviewPlus_components_uTransition_transition = require("./transition.js");
  7. const common_vendor = require("../../../../common/vendor.js");
  8. const _sfc_main = {
  9. name: "u-transition",
  10. data() {
  11. return {
  12. inited: false,
  13. // 是否显示/隐藏组件
  14. viewStyle: {},
  15. // 组件内部的样式
  16. status: "",
  17. // 记录组件动画的状态
  18. transitionEnded: false,
  19. // 组件是否结束的标记
  20. display: false,
  21. // 组件是否展示
  22. classes: ""
  23. // 应用的类名
  24. };
  25. },
  26. emits: ["click", "beforeEnter", "enter", "afterEnter", "beforeLeave", "leave", "afterLeave"],
  27. computed: {
  28. mergeStyle() {
  29. const { viewStyle, customStyle } = this;
  30. return {
  31. transitionDuration: `${this.duration}ms`,
  32. // display: `${this.display ? '' : 'none'}`,
  33. transitionTimingFunction: this.timingFunction,
  34. // 避免自定义样式影响到动画属性,所以写在viewStyle前面
  35. ...uni_modules_uviewPlus_libs_function_index.addStyle(customStyle),
  36. ...viewStyle
  37. };
  38. }
  39. },
  40. // 将mixin挂在到组件中,实际上为一个vue格式对象。
  41. mixins: [uni_modules_uviewPlus_libs_mixin_mpMixin.mpMixin, uni_modules_uviewPlus_libs_mixin_mixin.mixin, uni_modules_uviewPlus_components_uTransition_transition.transition, uni_modules_uviewPlus_components_uTransition_props.props],
  42. watch: {
  43. show: {
  44. handler(newVal) {
  45. newVal ? this.vueEnter() : this.vueLeave();
  46. },
  47. // 表示同时监听初始化时的props的show的意思
  48. immediate: true
  49. }
  50. }
  51. };
  52. function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
  53. return common_vendor.e({
  54. a: $data.inited
  55. }, $data.inited ? {
  56. b: common_vendor.o((...args) => _ctx.clickHandler && _ctx.clickHandler(...args)),
  57. c: common_vendor.n($data.classes),
  58. d: common_vendor.s($options.mergeStyle),
  59. e: common_vendor.o((...args) => _ctx.noop && _ctx.noop(...args))
  60. } : {});
  61. }
  62. const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-5cec8177"]]);
  63. wx.createComponent(Component);