overlay.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.updateOverlay = updateOverlay;
  5. exports.openOverlay = openOverlay;
  6. exports.closeOverlay = closeOverlay;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _overlay = _interopRequireDefault(require("../../overlay"));
  9. var _context = require("./context");
  10. var _functional = require("../../utils/functional");
  11. var defaultConfig = {
  12. className: '',
  13. customStyle: {}
  14. };
  15. var overlay; // close popup when click overlay && closeOnClickOverlay is true
  16. function onClickOverlay() {
  17. if (_context.context.top) {
  18. var vm = _context.context.top.vm;
  19. vm.$emit('click-overlay');
  20. if (vm.closeOnClickOverlay) {
  21. if (vm.onClickOverlay) {
  22. vm.onClickOverlay();
  23. } else {
  24. vm.close();
  25. }
  26. }
  27. }
  28. }
  29. function updateOverlay() {
  30. if (!overlay) {
  31. overlay = (0, _functional.mount)(_overlay["default"], {
  32. on: {
  33. click: onClickOverlay
  34. }
  35. });
  36. }
  37. if (_context.context.top) {
  38. var _context$top = _context.context.top,
  39. vm = _context$top.vm,
  40. config = _context$top.config;
  41. var el = vm.$el;
  42. var target = el && el.parentNode ? el.parentNode : document.body;
  43. if (target) {
  44. target.appendChild(overlay.$el);
  45. }
  46. (0, _extends2["default"])(overlay, defaultConfig, config, {
  47. visible: true
  48. });
  49. } else {
  50. overlay.visible = false;
  51. }
  52. }
  53. function openOverlay(vm, config) {
  54. if (!_context.context.stack.some(function (item) {
  55. return item.vm === vm;
  56. })) {
  57. _context.context.stack.push({
  58. vm: vm,
  59. config: config
  60. });
  61. updateOverlay();
  62. }
  63. }
  64. function closeOverlay(vm) {
  65. var stack = _context.context.stack;
  66. if (stack.length) {
  67. if (_context.context.top.vm === vm) {
  68. stack.pop();
  69. updateOverlay();
  70. } else {
  71. _context.context.stack = stack.filter(function (item) {
  72. return item.vm !== vm;
  73. });
  74. }
  75. }
  76. }