overlay.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import Overlay from '../../overlay';
  3. import { context } from './context';
  4. import { mount } from '../../utils/functional';
  5. import { removeNode } from '../../utils/dom/node';
  6. var defaultConfig = {
  7. className: '',
  8. customStyle: {}
  9. };
  10. function mountOverlay(vm) {
  11. return mount(Overlay, {
  12. on: {
  13. // close popup when overlay clicked & closeOnClickOverlay is true
  14. click: function click() {
  15. vm.$emit('click-overlay');
  16. if (vm.closeOnClickOverlay) {
  17. if (vm.onClickOverlay) {
  18. vm.onClickOverlay();
  19. } else {
  20. vm.close();
  21. }
  22. }
  23. }
  24. }
  25. });
  26. }
  27. export function updateOverlay(vm) {
  28. var item = context.find(vm);
  29. if (item) {
  30. var el = vm.$el;
  31. var config = item.config,
  32. overlay = item.overlay;
  33. if (el && el.parentNode) {
  34. el.parentNode.insertBefore(overlay.$el, el);
  35. }
  36. _extends(overlay, defaultConfig, config, {
  37. show: true
  38. });
  39. }
  40. }
  41. export function openOverlay(vm, config) {
  42. var item = context.find(vm);
  43. if (item) {
  44. item.config = config;
  45. } else {
  46. var overlay = mountOverlay(vm);
  47. context.stack.push({
  48. vm: vm,
  49. config: config,
  50. overlay: overlay
  51. });
  52. }
  53. updateOverlay(vm);
  54. }
  55. export function closeOverlay(vm) {
  56. var item = context.find(vm);
  57. if (item) {
  58. item.overlay.show = false;
  59. }
  60. }
  61. export function removeOverlay(vm) {
  62. var item = context.find(vm);
  63. if (item) {
  64. removeNode(item.overlay.$el);
  65. context.remove(vm);
  66. }
  67. }