{"version":3,"file":"../../components/modals.js","sources":["components/modals.js"],"sourcesContent":["\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* global jQuery, $ */\n\n/* eslint-disable */\nvar modalDialog = function () {\n return {\n constants: {\n btnRoles: {\n accept: 'accept',\n cancel: 'cancel',\n close: 'close',\n none: 'none'\n },\n btnTitles: {\n accept: 'Принять',\n cancel: 'Отмена',\n close: 'Закрыть'\n },\n btnClasses: {\n accept: '-primary',\n cancel: '',\n close: '-close'\n },\n dataKeys: {\n main: 'modalDialogUserData',\n userContainer: 'modalDialogUserConteiner',\n buttonData: 'modalDialogButtonData'\n }\n },\n busyIndicator: function busyIndicator(visible) {\n var indicator = $('.loader.-global');\n\n if (visible === undefined || !!visible && indicator.length === 0 || !visible && indicator.length > 0) {\n if (indicator.length > 0) {\n indicator.remove();\n indicator = null;\n } else {\n indicator = $('
').appendTo('body');\n }\n }\n\n return indicator;\n },\n showBaseWnd: function showBaseWnd(options) {\n var settings = $.extend({\n // пользовательский объект, он пробрасывается во все обработчики событий.\n // Предназначен для хранения пользовательской инфы\n userTag: null,\n buttons: null,\n // массив отображаемых кнопок\n inputs: null,\n // массив отображаемых инпутов\n footer: null,\n // свойства футера\n title: '',\n // заголовок окна\n \"class\": '',\n // дополнительные классы\n isVertical: null,\n // является ли модалка вертикальной\n size: null,\n // размер модалки пока есть big, large\n isCelebrating: null,\n // является ли модалка красивой, поздравительной\n // отображать ли кнопку-крестик в правом верхнем углу\n // (она интерпретируется как this.constants.btnRoles.close)\n showCrossButton: true,\n attrNameFocus: '[data-modalfocus]',\n // строка для поиска элемента, который нужно сфокусировать после отображения окна\n onDrawContent: null,\n // Событие на запрос контента function(sender, userTag)\n onOpen: null,\n // событие окно открывается function(sender, userTag)\n afterOpen: null,\n // событие окно открылось function(sender, userTag)\n onClose: null,\n // событие окно закрывается function(sender, userTag, btnStatus)\n afterClose: null // событие окно закрылось function(sender, userTag, btnStatus)\n\n }, options);\n var wndData = {\n settings: settings,\n buttons: [],\n inputs: [],\n content: null,\n modalResult: null\n };\n var modalWnd = $(\"\"));\n var containerBody = modalWnd.find('.modal-body');\n var containerFooter = modalWnd.find('.modal-footer');\n\n if (settings.inputs && settings.inputs.length > 0) {\n for (var i = 0; i < settings.inputs.length; i += 1) {\n var inputSettings = $.extend({\n // userTag: null,\n id: null,\n placeholder: undefined,\n disabled: false,\n type: 'text',\n title: '' // onChange: null,\n\n }, settings.inputs[i]);\n\n if (inputSettings.placeholder === undefined || inputSettings.placeholder === null) {\n inputSettings.placeholder = '';\n }\n\n var inputMarkup = void 0;\n\n switch (inputSettings.type) {\n case 'text':\n inputMarkup = \"\").format(inputSettings.placeholder);\n break;\n\n case 'checkbox':\n inputMarkup = \"\\n \");\n break;\n\n case 'radio':\n inputMarkup = \"\\n \");\n break;\n\n default:\n break;\n }\n\n var inp = $(inputMarkup).appendTo(containerFooter);\n\n if (inputSettings.type === 'text') {\n containerFooter.addClass('-space-between');\n } // inp.data(this.constants.dataKeys.buttonData, inputSettings);\n\n\n wndData.inputs.push(inp);\n }\n }\n\n if (settings.buttons && settings.buttons.length > 0) {\n for (var _i = 0; _i < settings.buttons.length; _i += 1) {\n var btnSettings = $.extend({\n userTag: null,\n id: null,\n role: this.constants.btnRoles.cancel,\n title: undefined,\n disabled: false,\n primary: false,\n big: false,\n wide: false,\n onClick: null // function(sender, userTag, settings, mainElem)\n\n }, settings.buttons[_i]);\n\n if (btnSettings.title === undefined || btnSettings.title === null) {\n btnSettings.title = this.constants.btnTitles[btnSettings.role];\n }\n\n var btn = $(\"\".format(btnSettings.title, btnSettings.role, this.constants.btnClasses[btnSettings.role])).appendTo(containerFooter);\n\n if (btnSettings.disabled) {\n btn.attr('disabled', true);\n }\n\n if (btnSettings.primary) {\n btn.addClass('-primary');\n } else {\n btn.addClass('-secondary');\n }\n\n if (btnSettings.big) {\n btn.addClass('-big');\n } else {\n btn.addClass('-small');\n }\n\n if (btnSettings.wide) {\n btn.addClass('-wide');\n }\n\n if (btnSettings.id) {\n btn.attr('id', btnSettings.id);\n }\n\n btn.data(this.constants.dataKeys.buttonData, btnSettings);\n wndData.buttons.push(btn);\n }\n }\n\n if ((!settings.buttons || settings.buttons.length === 0) && (!settings.inputs || settings.inputs.length === 0)) {\n containerFooter.hide();\n }\n\n modalWnd.data(this.constants.dataKeys.main, wndData);\n\n if (settings.onDrawContent) {\n wndData.content = settings.onDrawContent(modalWnd, settings.userTag);\n\n if (wndData.content instanceof jQuery) {\n containerBody.append(wndData.content);\n } else {\n containerBody.html(wndData.content);\n }\n }\n\n modalWnd.find('[data-btnrole]').on('click', {\n wnd: modalWnd,\n wndData: wndData\n }, function (event) {\n var elem = $(event.currentTarget);\n var wnd = event.data.wnd;\n var wndData = event.data.wndData;\n var btnSettings = elem.data(modalDialog.constants.dataKeys.buttonData);\n var doNext = true;\n\n if (btnSettings && btnSettings.onClick) {\n doNext = btnSettings.onClick(elem, btnSettings.userTag, btnSettings, wnd);\n }\n\n if (doNext === undefined || doNext === null || doNext) {\n /*\r\n wndData.modalResult = elem.data(\"btnrole\");\r\n if (wndData.settings.onClose)\r\n wndData.settings.onClose(wnd,\r\n wndData.settings.userTag, wndData.modalResult);\r\n event.data.wnd.modal('hide');\r\n */\n modalDialog.tools.internalClose(wnd, wndData, elem.data('btnrole'));\n }\n });\n modalWnd.on('show.bs.modal', {\n wnd: modalWnd,\n wndData: wndData\n }, function (event) {\n var wnd = event.data.wnd;\n var wndData = event.data.wndData;\n\n if (wndData.settings.onOpen) {\n wndData.settings.onOpen(modalWnd, wndData.settings.userTag);\n }\n });\n modalWnd.on('shown.bs.modal', {\n wnd: modalWnd,\n wndData: wndData\n }, function (event) {\n var wnd = event.data.wnd;\n var wndData = event.data.wndData;\n var settings = wndData.settings;\n event.data.wnd.find(settings.attrNameFocus).focus();\n\n if (wndData.settings.afterOpen) {\n wndData.settings.afterOpen(modalWnd, wndData.settings.userTag);\n }\n });\n modalWnd.on('hidden.bs.modal', {\n wnd: modalWnd,\n wndData: wndData\n }, function (event) {\n var wnd = event.data.wnd;\n var wndData = event.data.wndData;\n\n if (!wndData.modalResult) {\n // закрыли эскейпом либо кликом за пределами окна\n if (wndData.settings.onClose) {\n wndData.settings.onClose(modalWnd, wndData.settings.userTag, wndData.modalResult);\n }\n }\n });\n modalWnd.on('hidden.bs.modal', {\n wnd: modalWnd,\n wndData: wndData\n }, function (event) {\n var wnd = event.data.wnd;\n var wndData = event.data.wndData;\n\n try {\n if (wndData.settings.afterClose) {\n wndData.settings.afterClose(modalWnd, wndData.settings.userTag, wndData.modalResult);\n }\n } finally {\n if (wndData.settings.isVertical) {\n wnd.addClass('-animate-fadeOutRight'); // to prevent sparking modal close \n // wait animation execution\n\n setTimeout(function () {\n wnd.remove();\n }, 1000);\n } else {\n wnd.remove();\n }\n }\n });\n modalWnd.modal('show');\n return modalWnd;\n },\n showInfo: function showInfo(title, content, wndClose, isNotDisplayCancelButton) {\n var baseWnd = this.showBaseWnd({\n userTag: {\n onClose: wndClose,\n content: content\n },\n title: title,\n buttons: !isNotDisplayCancelButton ? [{\n role: this.constants.btnRoles.cancel\n }] : null,\n onClose: function onClose(sender, userTag, btnStatus) {\n if (userTag.onClose) {\n userTag.onClose();\n }\n },\n onDrawContent: function onDrawContent(sender, userTag) {\n return userTag.content;\n }\n });\n return baseWnd;\n },\n showError: function showError(title, content, wndClose) {\n if (content === null || content === undefined) content = 'Произошла непредвиденная ошибка.';\n return this.showInfo(title, content, wndClose);\n },\n tools: {\n buttonsDisabling: function buttonsDisabling(wndObj, buttonRole, disabled) {\n var wndData = wndObj.data(modalDialog.constants.dataKeys.main);\n\n if (wndData) {\n for (var i = 0; i < wndData.buttons.length; i += 1) {\n if (wndData.buttons[i].data('btnrole') === buttonRole) {\n if (disabled) {\n wndData.buttons[i].attr('disabled', true);\n } else {\n wndData.buttons[i].attr('disabled', false);\n }\n }\n }\n }\n },\n wndClose: function wndClose(wndObj, buttonRole) {\n var wndData = wndObj.data(modalDialog.constants.dataKeys.main);\n\n if (wndData) {\n modalDialog.tools.internalClose(wndObj, wndData, buttonRole);\n }\n },\n internalClose: function internalClose(wndObj, wndData, buttonRole) {\n wndData.modalResult = buttonRole;\n console.log(!!wndData.settings.isAutoClosing || !wndData.settings.hasOwnProperty('isAutoClosing'));\n console.log(wndData.settings.onClose);\n\n if (!!wndData.settings.isAutoClosing || !wndData.settings.hasOwnProperty('isAutoClosing')) {\n if (wndData.settings.onClose) {\n wndData.settings.onClose(wndObj, wndData.settings.userTag, wndData.modalResult);\n }\n\n wndObj.modal('hide');\n } // if (!!wndData.settings.isAutoClosing || wndData.settings.hasoisAutoClosing === undefined) {\n // if (wndData.settings.onClose) {\n // wndData.settings.onClose(wndObj, wndData.settings.userTag, wndData.modalResult);\n // }\n // wndObj.modal('hide');\n // }\n\n },\n forceCloseModal: function forceCloseModal(wndObj) {\n wndObj.modal('hide');\n }\n }\n };\n}();\n\n$(function () {\n if (!String.prototype.format) {\n String.prototype.format = function () {\n var args = arguments;\n var regrule = /{(\\d+)}/g;\n\n if (args && args.length === 1 && _typeof(args[0]) === 'object') {\n args = args[0];\n regrule = /{([_a-zA-Z0-9]+)}/g;\n }\n\n return this.replace(regrule, function (match, number) {\n var t1 = args[number];\n return typeof args[number] !== 'undefined' ? args[number] : match;\n });\n };\n }\n\n if (!Date.prototype.withoutTime) {\n Date.prototype.withoutTime = function () {\n var d = new Date(this);\n d.setHours(0, 0, 0, 0);\n return d;\n };\n }\n\n if (!Date.prototype.format) {\n Date.prototype.format = function (mask, utc) {\n var date = this;\n var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|[LloSZ]|\"[^\"]*\"|'[^']*'/g;\n var timezone = /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;\n var timezoneClip = /[^-+\\dA-Z]/g;\n\n var pad = function pad(val, len) {\n val = String(val);\n len = len || 2;\n\n while (val.length < len) {\n val = \"0\".concat(val);\n }\n\n return val;\n };\n\n var masks = {\n \"default\": 'ddd mmm dd yyyy HH:MM:ss',\n shortDate: 'm/d/yy',\n mediumDate: 'mmm d, yyyy',\n longDate: 'mmmm d, yyyy',\n fullDate: 'dddd, mmmm d, yyy',\n shortTime: 'h:MM TT',\n mediumTime: 'h:MM:ss TT',\n longTime: 'h:MM:ss TT Z',\n isoDate: 'yyyy-mm-dd',\n isoTime: 'HH:MM:ss',\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n var i18n = {\n dayNames: ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],\n monthNames: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек', 'Январь', 'Февраль', 'Март', 'Фпрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']\n }; // You can't provide utc if you skip other args (use the \"UTC:\" mask prefix)\n\n if (arguments.length === 1 && Object.prototype.toString.call(date) === '[object String]' && !/\\d/.test(date)) {\n mask = date;\n date = undefined;\n } // Passing date through Date applies Date.parse, if necessary\n\n\n date = date ? new Date(date) : new Date();\n if (isNaN(date)) throw SyntaxError('invalid date');\n mask = String(masks[mask] || mask || masks[\"default\"]); // Allow setting the utc argument via the mask\n\n if (mask.slice(0, 4) === 'UTC:') {\n mask = mask.slice(4);\n utc = true;\n }\n\n var _ = utc ? 'getUTC' : 'get';\n\n var d = date[\"\".concat(_, \"Date\")]();\n var D = date[\"\".concat(_, \"Day\")]();\n var m = date[\"\".concat(_, \"Month\")]();\n var y = date[\"\".concat(_, \"FullYear\")]();\n var H = date[\"\".concat(_, \"Hours\")]();\n var M = date[\"\".concat(_, \"Minutes\")]();\n var s = date[\"\".concat(_, \"Seconds\")]();\n var L = date[\"\".concat(_, \"Milliseconds\")]();\n var o = utc ? 0 : date.getTimezoneOffset();\n var flags = {\n d: d,\n dd: pad(d),\n ddd: i18n.dayNames[D],\n dddd: i18n.dayNames[D + 7],\n m: m + 1,\n mm: pad(m + 1),\n mmm: i18n.monthNames[m],\n mmmm: i18n.monthNames[m + 12],\n yy: String(y).slice(2),\n yyyy: y,\n h: H % 12 || 12,\n hh: pad(H % 12 || 12),\n H: H,\n HH: pad(H),\n M: M,\n MM: pad(M),\n s: s,\n ss: pad(s),\n l: pad(L, 3),\n L: pad(L > 99 ? Math.round(L / 10) : L),\n t: H < 12 ? 'a' : 'p',\n tt: H < 12 ? 'am' : 'pm',\n T: H < 12 ? 'A' : 'P',\n TT: H < 12 ? 'AM' : 'PM',\n Z: utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''),\n o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),\n S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 !== 10) * d % 10]\n };\n return mask.replace(token, function ($0) {\n return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);\n });\n };\n }\n});\n\n(function ($) {\n $.fn.showAsModal = function (method) {\n var funcs = {\n init: function init(options) {\n var settings = $.extend({\n // пользовательский объект, он пробрасывается во все обработчики событий.\n // Предназначен для хранения пользовательской инфы\n userTag: null,\n buttons: null,\n // массив отображаемых кнопок\n inputs: null,\n // массив отображаемых инпутов\n footer: null,\n // настройки футера\n title: '',\n // заголовок окна\n \"class\": '',\n // дополнительные классы\n isVertical: null,\n // является ли модалка вертикальной\n size: null,\n // размер модалки, пока доступны big, large\n isCelebrating: null,\n // является ли модалка красивой, поздравительной\n onOpen: null,\n // событие окно открывается function(sender, userTag)\n onClose: null,\n // событие окно закрывается function(sender, userTag, btnStatus)\n afterClose: null,\n // событие окно закрыто function(sender, userTag, btnStatus)\n isAutoClosing: true // автоматичесое закрытие модалки по нажатию на кнопки\n\n }, options);\n return this.each(function () {\n var $this = $(this);\n var wnd = modalDialog.showBaseWnd({\n title: settings.title,\n \"class\": settings[\"class\"],\n userTag: {\n template: $this,\n templateParent: $this.parent(),\n settings: settings,\n needHide: false\n },\n buttons: settings.buttons,\n inputs: settings.inputs,\n isVertical: settings.isVertical,\n size: settings.size,\n footer: settings.footer,\n isCelebrating: settings.isCelebrating,\n isAutoClosing: settings.isAutoClosing,\n onOpen: function onOpen(sender, userTag) {\n var displ = userTag.template.css('display').toLowerCase();\n\n if (displ === 'none') {\n userTag.needHide = true;\n userTag.template.css('display', 'block');\n }\n\n if (userTag.settings.onOpen) {\n userTag.settings.onOpen($this, userTag.settings.userTag);\n }\n },\n afterOpen: function afterOpen(sender, userTag) {\n if (userTag.settings.afterOpen) {\n userTag.settings.afterOpen($this, userTag.settings.userTag);\n }\n },\n onClose: function onClose(sender, userTag, btnStatus) {\n if (userTag.settings.onClose) {\n userTag.settings.onClose($this, userTag.settings.userTag, btnStatus);\n }\n },\n afterClose: function afterClose(sender, userTag, btnStatus) {\n if (userTag.needHide) {\n userTag.template.css('display', 'none');\n }\n\n if (userTag.templateParent && userTag.templateParent.length > 0) {\n userTag.template.appendTo(userTag.templateParent);\n }\n\n if (userTag.settings.afterClose) {\n userTag.settings.afterClose($this, userTag.settings.userTag, btnStatus);\n } // стираем инфу об открытом окне\n\n\n sender.data(modalDialog.constants.dataKeys.userContainer, undefined);\n },\n onDrawContent: function onDrawContent(sender, userTag) {\n // сохраняем инфу об открытом окне\n $this.data(modalDialog.constants.dataKeys.userContainer, {\n wndObj: sender\n });\n return userTag.template;\n }\n });\n });\n }\n };\n var intFuncs = {};\n\n if (funcs[method]) {\n return funcs[method].apply(this, Array.prototype.slice.call(arguments, 1));\n } else if (_typeof(method) === 'object' || !method) {\n return funcs.init.apply(this, arguments);\n } else {\n $.error(\"\\u041C\\u0435\\u0442\\u043E\\u0434 \\u0441 \\u0438\\u043C\\u0435\\u043D\\u0435\\u043C \".concat(method, \" \\u043D\\u0435 \\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u0434\\u043B\\u044F jQuery.showAsModal\"));\n }\n };\n\n $.fn.modalDlgButtonDisabling = function (buttonRole, disabled) {\n var $this = $(this);\n var wndObj = $this.data(modalDialog.constants.dataKeys.userContainer) ? $this.data(modalDialog.constants.dataKeys.userContainer).wndObj : $this;\n modalDialog.tools.buttonsDisabling(wndObj, buttonRole, disabled);\n };\n\n $.fn.modalDlgClose = function (buttonRole) {\n var $this = $(this);\n var wndObj = $this.data(modalDialog.constants.dataKeys.userContainer) ? $this.data(modalDialog.constants.dataKeys.userContainer).wndObj : $this;\n modalDialog.tools.wndClose(wndObj, buttonRole);\n };\n\n $.fn.forceModalDlgClose = function (buttonRole) {\n var $this = $(this);\n var wndObj = $this.data(modalDialog.constants.dataKeys.userContainer) ? $this.data(modalDialog.constants.dataKeys.userContainer).wndObj : $this;\n modalDialog.tools.forceCloseModal(wndObj, buttonRole);\n };\n\n $.fn.setBusy = function (visible) {\n var $this = $(this);\n var indicator = $this.find('.partial-modal-loader');\n\n if (visible === undefined || !!visible && indicator.length === 0 || !visible && indicator.length > 0) {\n if (indicator.length > 0) {\n indicator.remove();\n indicator = null;\n } else {\n indicator = $('
').appendTo($this);\n }\n }\n\n return indicator;\n };\n})(jQuery);\n/* eslint-enable */"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","modalDialog","constants","btnRoles","accept","cancel","close","none","btnTitles","btnClasses","dataKeys","main","userContainer","buttonData","busyIndicator","visible","indicator","$","undefined","length","remove","appendTo","showBaseWnd","options","settings","extend","userTag","buttons","inputs","footer","title","class","isVertical","size","isCelebrating","showCrossButton","attrNameFocus","onDrawContent","onOpen","afterOpen","onClose","afterClose","wndData","content","modalResult","modalWnd","concat","format","this","classNames","containerBody","find","containerFooter","i","inputSettings","id","placeholder","disabled","type","inputMarkup","inp","addClass","push","_i","btnSettings","role","primary","big","wide","onClick","btn","attr","data","hide","jQuery","append","html","on","wnd","event","elem","currentTarget","doNext","tools","internalClose","focus","setTimeout","modal","showInfo","wndClose","isNotDisplayCancelButton","sender","btnStatus","showError","buttonsDisabling","wndObj","buttonRole","console","log","isAutoClosing","hasOwnProperty","forceCloseModal","String","args","arguments","regrule","replace","match","number","Date","withoutTime","d","setHours","mask","utc","pad","val","len","date","masks","default","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","i18n","dayNames","monthNames","Object","toString","call","test","isNaN","SyntaxError","slice","_","D","m","y","H","M","s","L","o","getTimezoneOffset","flags","dd","ddd","dddd","mm","mmm","mmmm","yy","yyyy","h","hh","HH","MM","ss","l","Math","round","t","tt","T","TT","Z","pop","floor","abs","S","$0","fn","showAsModal","method","funcs","init","each","$this","template","templateParent","parent","needHide","css","toLowerCase","apply","Array","error","modalDlgButtonDisabling","modalDlgClose","forceModalDlgClose","setBusy"],"mappings":"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"}