overlay.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. exports.removeOverlay = removeOverlay;
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _overlay = _interopRequireDefault(require("../../overlay"));
  10. var _context = require("./context");
  11. var _functional = require("../../utils/functional");
  12. var _node = require("../../utils/dom/node");
  13. var defaultConfig = {
  14. className: '',
  15. customStyle: {}
  16. };
  17. function mountOverlay(vm) {
  18. return (0, _functional.mount)(_overlay.default, {
  19. on: {
  20. // close popup when overlay clicked & closeOnClickOverlay is true
  21. click: function click() {
  22. vm.$emit('click-overlay');
  23. if (vm.closeOnClickOverlay) {
  24. if (vm.onClickOverlay) {
  25. vm.onClickOverlay();
  26. } else {
  27. vm.close();
  28. }
  29. }
  30. }
  31. }
  32. });
  33. }
  34. function updateOverlay(vm) {
  35. var item = _context.context.find(vm);
  36. if (item) {
  37. var el = vm.$el;
  38. var config = item.config,
  39. overlay = item.overlay;
  40. if (el && el.parentNode) {
  41. el.parentNode.insertBefore(overlay.$el, el);
  42. }
  43. (0, _extends2.default)(overlay, defaultConfig, config, {
  44. show: true
  45. });
  46. }
  47. }
  48. function openOverlay(vm, config) {
  49. var item = _context.context.find(vm);
  50. if (item) {
  51. item.config = config;
  52. } else {
  53. var overlay = mountOverlay(vm);
  54. _context.context.stack.push({
  55. vm: vm,
  56. config: config,
  57. overlay: overlay
  58. });
  59. }
  60. updateOverlay(vm);
  61. }
  62. function closeOverlay(vm) {
  63. var item = _context.context.find(vm);
  64. if (item) {
  65. item.overlay.show = false;
  66. }
  67. }
  68. function removeOverlay(vm) {
  69. var item = _context.context.find(vm);
  70. if (item) {
  71. (0, _node.removeNode)(item.overlay.$el);
  72. _context.context.remove(vm);
  73. }
  74. }