"use strict"; //requires SubmitOnChange and Linker $(function () { if (!ModernJs.isDefined(ModernJs.SubmitPrompt)) { ModernJs.SubmitPrompt = {}; ModernJs.LinkPrompt = ModernJs.SubmitPrompt; ModernJs.SubmitPrompt.confirm = function (node, dialog, form) { form.submit(); }; ModernJs.SubmitPrompt.cancel = function (node, dialog, form) {}; ModernJs.SubmitPrompt.buttons = { confirm: "Tak", cancel: "Nie" }; ModernJs.SubmitPrompt.actions = { confirm: function confirm(node, dialog, form) { var input = dialog.find("input").first(); node.val(input.val()); node.attr("prompt-value", input.val()); var confirm = node.data('SubmitPromptConfirm') || ModernJs.SubmitPrompt.confirm; confirm.call(node[0], node, dialog, form); dialog.dialog("close"); }, cancel: function cancel(node, dialog, form) { var cancel = node.data('SubmitPromptCancel') || ModernJs.SubmitPrompt.cancel; cancel.call(node[0], node, dialog, form); dialog.dialog("close"); } }; ModernJs.SubmitPrompt.defConfig = { resizable: false, height: "auto", width: 600, modal: true }; ModernJs.SubmitPrompt.prepareData = function (node, dialog) { var input = dialog.find("input").first(); var name = input.attr("name") || "prompt"; var value = input.val(); var data = node.attr("prompt-data") || node.attr("data"); node.attr("prompt-data", data); data = ModernJs.isDefined(data) ? "".concat(data, "&") : ""; data += "".concat(name, "=").concat(value); node.attr("data", data); node.attr("prompt-value", value); }; ModernJs.SubmitPrompt.dialog = function (linkerAction) { var _this = this; var target = $(this); var form = null; var dialogQuery = target.attr("submit-prompt") || target.attr("link-prompt"); var dialog = target.data('SubmitPromptDialog') || $(dialogQuery); if (dialog.is("[save-html]")) { var _html = dialog.attr("save-html"); if (!_html) _html = dialog.html(); dialog.html(_html); dialog.attr("save-html", _html); } var html = dialog.html(); var regExp = /!(\w+?)!/g; dialog.html(html.replace(regExp, function (match, templateBody) { var attrName = "token-".concat(templateBody); if (target.is("[".concat(attrName, "]"))) { return target.attr(attrName); } return "!".concat(templateBody, "!"); })); var input = dialog.find("input").first(); input.val(target.attr("prompt-value")); if (target.is("[link-prompt]")) { form = { submit: function submit() { ModernJs.SubmitPrompt.prepareData(target, dialog); linkerAction.call(_this); } }; } else { form = target.closest("form"); } var config = ModernJs.copy(ModernJs.SubmitPrompt.defConfig); var buttons = ModernJs.copy(ModernJs.SubmitPrompt.buttons); var configOwn = target.data('SubmitPromptConfig') || {}; var buttonsOwn = target.data('SubmitPromptButtons') || {}; for (var option in configOwn) { config[option] = configOwn[option]; } for (var button in buttonsOwn) { buttons[button] = buttonsOwn[button]; } config.buttons = {}; config.autoOpen = true; for (var _button in buttons) { var text = buttons[_button]; config.buttons[text] = ModernJs.SubmitPrompt.actions[_button].bind(target[0], target, dialog, form); } dialog.dialog(config); }; ModernJs.SubmitPrompt.loadMain = function () { $('body').on('click', '[submit-prompt]:not([submit-change])', ModernJs.SubmitPrompt.dialog); }; ModernJs.SubmitPrompt.config = function (node) { var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (arguments.length < 2) { config = node; for (var arg in config) { if (arg == 'confirm') { ModernJs.SubmitPrompt.confirm = config[arg]; } else if (arg == 'cancel') { ModernJs.SubmitPrompt.cancel = config[arg]; } else if (arg == 'buttons') { if (ModernJs.isDefined(config[arg].confirm)) { ModernJs.SubmitPrompt.buttons.confirm = config[arg].confirm; } if (ModernJs.isDefined(config[arg].cancel)) { ModernJs.SubmitPrompt.buttons.cancel = config[arg].cancel; } } else { ModernJs.SubmitPrompt.config[arg] = config[arg]; } } } else { for (var arg in config) { if (arg == 'confirm') { node.data('SubmitPromptConfirm', config[arg]); } else if (arg == 'cancel') { node.data('SubmitPromptCancel', config[arg]); } else if (arg == 'buttons') { if (ModernJs.isDefined(config[arg].confirm)) { var buttons = node.data('SubmitPromptButtons') || {}; buttons.confirm = config[arg].confirm; node.data('SubmitPromptButtons', buttons); } if (ModernJs.isDefined(config[arg].cancel)) { var _buttons = node.data('SubmitPromptButtons') || {}; _buttons.cancel = config[arg].cancel; node.data('SubmitPromptButtons', _buttons); } } else if (arg == 'dialog') { node.data('SubmitPromptDialog', config[arg]); } else { var _config = node.data('SubmitPromptConfig') || {}; _config[arg] = _config[arg]; node.data('SubmitPromptConfig', _config[arg]); } } } }; $(ModernJs.SubmitPrompt.loadMain); } });