ajaxiframemodal.ui.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. $.fn.triggerHandler = $.fn.trigger;
  2. ['registerRender', 'fetchContent', 'loadTable', 'loadPage', 'postAndLoadPage', 'loadCurrentPage', 'parseSelector', 'toggleLoading', 'openUrl', 'openPage', 'goBack', 'registerTimer', 'loadModal', 'loadTarget', 'loadComponent', 'loadPartial', 'reloadPage', 'selectLang', 'selectTheme', 'selectVision', changeAppLang, 'changeAppTheme', 'setImageSize', 'showMoreImage', 'autoLoad', 'loadForm'].forEach(function(name){window[name] = parent.parent[name];});
  3. const zuiHideModal = zui.Modal.hide;
  4. const $frame = parent.$('iframe[name="' + window.frameElement.name + '"]');
  5. zui.Modal.hide = function(selector)
  6. {
  7. if(!selector) return parent.$.closeModal();
  8. zuiHideModal(selector);
  9. };
  10. $(document).off('locate.zt').on('locate.zt', function(e, data)
  11. {
  12. if(data === true) data = 'reload';
  13. parent.parent.$(parent.parent.document).trigger('locate.zt', data);
  14. });
  15. $(document).on('shown', '.modal', function()
  16. {
  17. if($(this).find('.modal-actions>[data-dismiss="modal"]').length) $frame.closest('.modal-dialog').find('.modal-header>.close').hide();
  18. }).on('hidden', '.modal', function()
  19. {
  20. setTimeout(function()
  21. {
  22. if(!$(this).find('.modal-actions>[data-dismiss="modal"]').length) $frame.closest('.modal-dialog').find('.modal-header>.close').show();
  23. }, 500);
  24. });
  25. $('body').on('click', '.modal [data-dismiss="modal"]', function(e){e.stopPropagation();});
  26. $(function()
  27. {
  28. $('.zin-page-css').appendTo('head');
  29. function resizeModal()
  30. {
  31. const $modal = $('body>.modal-dialog>.modal-content,.modal-body').first();
  32. const height = $modal.outerHeight();
  33. $modal.closest('body').height(height || 1);
  34. if(height && !$frame.closest('.modal-body').height()) $frame.closest('.modal-body').height(height);
  35. }
  36. $.ajax(
  37. {
  38. url: modalOpenUrl,
  39. headers: {'X-ZUI-Modal': 'true'},
  40. success: function(data)
  41. {
  42. const $body = $('body');
  43. $body.html(data);
  44. const resizeOb = new ResizeObserver(resizeModal);
  45. resizeOb.observe($('body>.modal-dialog>.modal-content>.modal-body,.modal-body')[0]);
  46. requestAnimationFrame(resizeModal);
  47. $body.zuiInit().removeClass('invisible');
  48. if($frame.closest('.modal-dialog').find('.modal-header>.close').length) $('body>.modal-dialog>.modal-content>.modal-actions>[data-dismiss="modal"]').hide();
  49. }
  50. });
  51. $(document).on('click', '[data-dismiss="modal"]', function()
  52. {
  53. parent.$.closeModal();
  54. });
  55. });