InlineSubMenuList.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 _vue = require("vue");
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _transition = _interopRequireDefault(require("../../_util/transition"));
  10. var _useMenuContext = require("./hooks/useMenuContext");
  11. var _SubMenuList = _interopRequireDefault(require("./SubMenuList"));
  12. var _default2 = (0, _vue.defineComponent)({
  13. compatConfig: {
  14. MODE: 3
  15. },
  16. name: 'InlineSubMenuList',
  17. inheritAttrs: false,
  18. props: {
  19. id: String,
  20. open: Boolean,
  21. keyPath: Array
  22. },
  23. setup: function setup(props, _ref) {
  24. var slots = _ref.slots;
  25. var fixedMode = (0, _vue.computed)(function () {
  26. return 'inline';
  27. });
  28. var _useInjectMenu = (0, _useMenuContext.useInjectMenu)(),
  29. motion = _useInjectMenu.motion,
  30. mode = _useInjectMenu.mode,
  31. defaultMotions = _useInjectMenu.defaultMotions;
  32. var sameModeRef = (0, _vue.computed)(function () {
  33. return mode.value === fixedMode.value;
  34. });
  35. var destroy = (0, _vue.ref)(!sameModeRef.value);
  36. var mergedOpen = (0, _vue.computed)(function () {
  37. return sameModeRef.value ? props.open : false;
  38. });
  39. // ================================= Effect =================================
  40. // Reset destroy state when mode change back
  41. (0, _vue.watch)(mode, function () {
  42. if (sameModeRef.value) {
  43. destroy.value = false;
  44. }
  45. }, {
  46. flush: 'post'
  47. });
  48. var mergedMotion = (0, _vue.computed)(function () {
  49. var _defaultMotions$value, _defaultMotions$value2;
  50. var m = motion.value || ((_defaultMotions$value = defaultMotions.value) === null || _defaultMotions$value === void 0 ? void 0 : _defaultMotions$value[fixedMode.value]) || ((_defaultMotions$value2 = defaultMotions.value) === null || _defaultMotions$value2 === void 0 ? void 0 : _defaultMotions$value2.other);
  51. var res = typeof m === 'function' ? m() : m;
  52. return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, res), {}, {
  53. appear: props.keyPath.length <= 1
  54. });
  55. });
  56. return function () {
  57. var _slots$default;
  58. if (destroy.value) {
  59. return null;
  60. }
  61. return (0, _vue.createVNode)(_useMenuContext.MenuContextProvider, {
  62. "mode": fixedMode.value
  63. }, {
  64. default: function _default() {
  65. return [(0, _vue.createVNode)(_transition.default, mergedMotion.value, {
  66. default: function _default() {
  67. return [(0, _vue.withDirectives)((0, _vue.createVNode)(_SubMenuList.default, {
  68. "id": props.id
  69. }, {
  70. default: function _default() {
  71. return [(_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)];
  72. }
  73. }), [[_vue.vShow, mergedOpen.value]])];
  74. }
  75. })];
  76. }
  77. });
  78. };
  79. }
  80. });
  81. exports.default = _default2;