xwt
2025-06-27 0d3eadb50310ca60b8871e967e64da01aa25a9ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"use strict";
 
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
 
exports.__esModule = true;
exports.updateOverlay = updateOverlay;
exports.openOverlay = openOverlay;
exports.closeOverlay = closeOverlay;
exports.removeOverlay = removeOverlay;
 
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
 
var _overlay = _interopRequireDefault(require("../../overlay"));
 
var _context = require("./context");
 
var _functional = require("../../utils/functional");
 
var _node = require("../../utils/dom/node");
 
var defaultConfig = {
  className: '',
  customStyle: {}
};
 
function mountOverlay(vm) {
  return (0, _functional.mount)(_overlay.default, {
    on: {
      // close popup when overlay clicked & closeOnClickOverlay is true
      click: function click() {
        vm.$emit('click-overlay');
 
        if (vm.closeOnClickOverlay) {
          if (vm.onClickOverlay) {
            vm.onClickOverlay();
          } else {
            vm.close();
          }
        }
      }
    }
  });
}
 
function updateOverlay(vm) {
  var item = _context.context.find(vm);
 
  if (item) {
    var el = vm.$el;
    var config = item.config,
        overlay = item.overlay;
 
    if (el && el.parentNode) {
      el.parentNode.insertBefore(overlay.$el, el);
    }
 
    (0, _extends2.default)(overlay, defaultConfig, config, {
      show: true
    });
  }
}
 
function openOverlay(vm, config) {
  var item = _context.context.find(vm);
 
  if (item) {
    item.config = config;
  } else {
    var overlay = mountOverlay(vm);
 
    _context.context.stack.push({
      vm: vm,
      config: config,
      overlay: overlay
    });
  }
 
  updateOverlay(vm);
}
 
function closeOverlay(vm) {
  var item = _context.context.find(vm);
 
  if (item) {
    item.overlay.show = false;
  }
}
 
function removeOverlay(vm) {
  var item = _context.context.find(vm);
 
  if (item) {
    (0, _node.removeNode)(item.overlay.$el);
 
    _context.context.remove(vm);
  }
}