{"version":3,"sources":["Modal.js"],"names":["$","w","Modal","this","modalSelector","modalOverlay","triggerSelector","btnCloseSelector","forceCentred","setEvents","self","width","THF","Utility","StateManager","addOnEnter","each","removeClass","addClass","addOnLeave","addOnFirstRun","window","innerWidth","prototype","getSettings","element","event","data","settings","id","modalId","position","modalPosition","triggerElement","target","unbind","bind","preventDefault","stopPropagation","eventTrigger","apply","setCloseEvents","modal","close","open","hide","content","triggerProps","show","css","left","top","masterContentProps","offset","triggerElem","triggerWidth","height","Interface","jQuery","document"],"mappings":"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","file":"modal.min.js","sourcesContent":["(function ($, w, d, undefined) {\r\n 'use strict';\r\n\r\n function Modal() {\r\n this.modalSelector = '.modal';\r\n this.modalOverlay = '.modal-overlay';\r\n this.triggerSelector = '*[data-modal-id]';\r\n this.btnCloseSelector = '.modal-btn-close';\r\n this.forceCentred = false;\r\n\r\n this.setEvents();\r\n\r\n var self = this;\r\n THF.Utility.StateManager.addOnEnter('sm', function() {\r\n self.forceCentred = true;\r\n $(self.modalSelector).each(function() {\r\n $(this).removeClass('centred');\r\n $(this).removeClass('right');\r\n $(this).addClass('centred');\r\n });\r\n });\r\n\r\n THF.Utility.StateManager.addOnLeave('sm', function() {\r\n self.forceCentred = false;\r\n $(self.modalSelector).each(function() {\r\n $(this).removeClass('right');\r\n $(this).removeClass('centred');\r\n $(this).addClass('right');\r\n });\r\n });\r\n\r\n THF.Utility.StateManager.addOnFirstRun('xs', function() {\r\n self.forceCentred = true;\r\n });\r\n\r\n THF.Utility.StateManager.addOnFirstRun('sm', function() {\r\n self.forceCentred = false;\r\n });\r\n\r\n let width = window.innerWidth;\r\n if(width <= 767){\r\n this.forceCentred = true;\r\n }\r\n }\r\n\r\n Modal.prototype.getSettings = function (element, event) {\r\n var data = $(element).data();\r\n\r\n var settings = {\r\n id: data.modalId || null,\r\n position: data.modalPosition || 'center',\r\n triggerElement: null\r\n };\r\n\r\n if (event !== null) {\r\n settings.triggerElement = event.target;\r\n }\r\n return settings;\r\n };\r\n\r\n Modal.prototype.setEvents = function () {\r\n var self = this;\r\n $(this.triggerSelector).unbind('click').bind('click', function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n self.eventTrigger.apply(self, [event, this]);\r\n });\r\n };\r\n Modal.prototype.setCloseEvents = function (modal) {\r\n var self = this;\r\n $(this.modalOverlay, modal).unbind('click').bind('click', function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n self.close(modal);\r\n });\r\n $(this.btnCloseSelector, modal).unbind('click').bind('click', function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n self.close(modal);\r\n });\r\n };\r\n\r\n Modal.prototype.eventTrigger = function (event, element) {\r\n var settings = this.getSettings(element, event);\r\n if (settings.id !== null) {\r\n var modal = $('#' + settings.id);\r\n this.open(modal, settings);\r\n this.setCloseEvents(modal);\r\n }\r\n };\r\n\r\n Modal.prototype.close = function (modal) {\r\n $('html').removeClass('modal-active');\r\n modal.removeClass('centred');\r\n modal.removeClass('right');\r\n modal.hide();\r\n };\r\n\r\n Modal.prototype.open = function (modal, settings) {\r\n $('html').addClass('modal-active');\r\n\r\n if (settings.position === 'right' && !this.forceCentred) {\r\n modal.addClass('right');\r\n var content = $('.modal-content', modal);\r\n content.css({\r\n 'position': 'absolute',\r\n 'left': -10000,\r\n 'top': -10000\r\n });\r\n modal.show();\r\n var masterContent = $('#master-content');\r\n var masterContentProps = masterContent.offset();\r\n var triggerElem = $(settings.triggerElement);\r\n var triggerProps = triggerElem.offset();\r\n var triggerWidth = triggerElem.width();\r\n content.css({\r\n 'left': (triggerProps.left + triggerWidth) + 'px',\r\n 'top': ((triggerProps.top - (content.height() / 2)) - masterContentProps.top) + 'px'\r\n });\r\n }\r\n else {\r\n modal.addClass('centred');\r\n modal.show();\r\n }\r\n\r\n\r\n };\r\n\r\n\r\n w.THF = w.THF || {};\r\n w.THF.Interface = w.THF.Interface || {};\r\n w.THF.Interface.Modal = Modal;\r\n})(jQuery, window, document);"]}