vex-dialog
Advanced tools
Comparing version 1.0.0 to 1.0.1
@@ -381,3 +381,4 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.vexDialog = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
var buildDialogForm = function (options) { | ||
// Build DOM elements for the structure of the dialog | ||
var buildDialogForm = function buildDialogForm (options) { | ||
var form = document.createElement('form') | ||
@@ -400,3 +401,4 @@ form.classList.add('vex-dialog-form') | ||
var buttonsToDOM = function (buttons) { | ||
// Take an array of buttons (see the default buttons below) and turn them into DOM elements | ||
var buttonsToDOM = function buttonsToDOM (buttons) { | ||
var domButtons = document.createElement('div') | ||
@@ -432,3 +434,4 @@ domButtons.classList.add('vex-dialog-buttons') | ||
var escapeHtml = function (str) { | ||
// Use the DOM's HTML parsing to escape any dangerous strings | ||
var escapeHtml = function escapeHtml (str) { | ||
if (typeof str !== 'undefined') { | ||
@@ -443,3 +446,3 @@ var div = document.createElement('div') | ||
var plugin = function (vex) { | ||
var plugin = function plugin (vex) { | ||
// Define the API first | ||
@@ -451,3 +454,3 @@ var dialog = { | ||
// Open | ||
open: function (opts) { | ||
open: function open (opts) { | ||
var options = Object.assign({}, this.defaultOptions, opts) | ||
@@ -469,9 +472,20 @@ | ||
// Quick comment - these options and appending buttons and everything | ||
// would preferably be done _before_ opening the dialog. However, since | ||
// they rely on the context of the vex instance, we have to do them | ||
// after. A potential future fix would be to differentiate between | ||
// a "created" vex instance and an "opened" vex instance, so any actions | ||
// that rely on the specific context of the instance can do their stuff | ||
// before opening the dialog on the page. | ||
// Override the before close callback to also pass the value of the form | ||
var beforeClose = options.beforeClose | ||
dialogInstance.options.beforeClose = function () { | ||
options.callback(this.value || false) | ||
if (beforeClose) { | ||
beforeClose.call(this) | ||
dialogInstance.options.beforeClose = function dialogBeforeClose () { | ||
// Only call the callback once - when the validation in beforeClose, if present, is true | ||
var shouldClose = beforeClose ? beforeClose() : true | ||
if (shouldClose) { | ||
options.callback(this.value || false) | ||
} | ||
// Return the result of beforeClose() to vex | ||
return shouldClose | ||
}.bind(dialogInstance) | ||
@@ -502,2 +516,3 @@ | ||
alert: function (options) { | ||
// Allow string as message | ||
if (typeof options === 'string') { | ||
@@ -532,4 +547,6 @@ options = { | ||
options = Object.assign(defaults, dynamicDefaults, options) | ||
// Pluck the value of the "vex" input field as the return value for prompt's callback | ||
// More closely mimics "window.prompt" in that a single string is returned | ||
var callback = options.callback | ||
options.callback = function (value) { | ||
options.callback = function promptCallback (value) { | ||
value = value[Object.keys(value)[0]] | ||
@@ -548,3 +565,3 @@ callback(value) | ||
className: 'vex-dialog-button-primary', | ||
click: function () { | ||
click: function yesClick () { | ||
this.value = true | ||
@@ -558,3 +575,3 @@ } | ||
className: 'vex-dialog-button-secondary', | ||
click: function () { | ||
click: function noClick () { | ||
this.value = false | ||
@@ -576,3 +593,3 @@ this.close() | ||
showCloseButton: false, | ||
onSubmit: function (e) { | ||
onSubmit: function onDialogSubmit (e) { | ||
e.preventDefault() | ||
@@ -579,0 +596,0 @@ if (this.options.input) { |
@@ -1,2 +0,2 @@ | ||
/*! vex.dialog.min.js 3.0.0 */ | ||
!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.vexDialog=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){function d(a,b){if("string"!=typeof a)throw new TypeError("String expected");b||(b=document);var c=/<([\w:]+)/.exec(a);if(!c)return b.createTextNode(a);a=a.replace(/^\s+|\s+$/g,"");var d=c[1];if("body"==d){var e=b.createElement("html");return e.innerHTML=a,e.removeChild(e.lastChild)}var f=g[d]||g._default,h=f[0],i=f[1],j=f[2],e=b.createElement("div");for(e.innerHTML=i+a+j;h--;)e=e.lastChild;if(e.firstChild==e.lastChild)return e.removeChild(e.firstChild);for(var k=b.createDocumentFragment();e.firstChild;)k.appendChild(e.removeChild(e.firstChild));return k}b.exports=d;var e,f=!1;"undefined"!=typeof document&&(e=document.createElement("div"),e.innerHTML=' <link/><table></table><a href="/a">a</a><input type="checkbox"/>',f=!e.getElementsByTagName("link").length,e=void 0);var g={legend:[1,"<fieldset>","</fieldset>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],_default:f?[1,"X<div>","</div>"]:[0,"",""]};g.td=g.th=[3,"<table><tbody><tr>","</tr></tbody></table>"],g.option=g.optgroup=[1,'<select multiple="multiple">',"</select>"],g.thead=g.tbody=g.colgroup=g.caption=g.tfoot=[1,"<table>","</table>"],g.polyline=g.ellipse=g.polygon=g.circle=g.text=g.line=g.path=g.rect=g.g=[1,'<svg xmlns="http://www.w3.org/2000/svg" version="1.1">',"</svg>"]},{}],2:[function(a,b,c){function d(a,b){"object"!=typeof b?b={hash:!!b}:void 0===b.hash&&(b.hash=!0);for(var c=b.hash?{}:"",d=b.serializer||(b.hash?g:h),e=a&&a.elements?a.elements:[],f=Object.create(null),k=0;k<e.length;++k){var l=e[k];if((b.disabled||!l.disabled)&&l.name&&j.test(l.nodeName)&&!i.test(l.type)){var m=l.name,n=l.value;if("checkbox"!==l.type&&"radio"!==l.type||l.checked||(n=void 0),b.empty){if("checkbox"!==l.type||l.checked||(n=""),"radio"===l.type&&(f[l.name]||l.checked?l.checked&&(f[l.name]=!0):f[l.name]=!1),!n&&"radio"==l.type)continue}else if(!n)continue;if("select-multiple"!==l.type)c=d(c,m,n);else{n=[];for(var o=l.options,p=!1,q=0;q<o.length;++q){var r=o[q],s=b.empty&&!r.value,t=r.value||s;r.selected&&t&&(p=!0,c=b.hash&&"[]"!==m.slice(m.length-2)?d(c,m+"[]",r.value):d(c,m,r.value))}!p&&b.empty&&(c=d(c,m,""))}}}if(b.empty)for(var m in f)f[m]||(c=d(c,m,""));return c}function e(a){var b=[],c=/^([^\[\]]*)/,d=new RegExp(k),e=c.exec(a);for(e[1]&&b.push(e[1]);null!==(e=d.exec(a));)b.push(e[1]);return b}function f(a,b,c){if(0===b.length)return a=c;var d=b.shift(),e=d.match(/^\[(.+?)\]$/);if("[]"===d)return a=a||[],Array.isArray(a)?a.push(f(null,b,c)):(a._values=a._values||[],a._values.push(f(null,b,c))),a;if(e){var g=e[1],h=+g;isNaN(h)?(a=a||{},a[g]=f(a[g],b,c)):(a=a||[],a[h]=f(a[h],b,c))}else a[d]=f(a[d],b,c);return a}function g(a,b,c){var d=b.match(k);if(d){var g=e(b);f(a,g,c)}else{var h=a[b];h?(Array.isArray(h)||(a[b]=[h]),a[b].push(c)):a[b]=c}return a}function h(a,b,c){return c=c.replace(/(\r)?\n/g,"\r\n"),c=encodeURIComponent(c),c=c.replace(/%20/g,"+"),a+(a?"&":"")+encodeURIComponent(b)+"="+c}var i=/^(?:submit|button|image|reset|file)$/i,j=/^(?:input|select|textarea|keygen)/i,k=/(\[[^\[\]]*\])/g;b.exports=d},{}],3:[function(a,b,c){var d=a("domify"),e=a("form-serialize"),f=function(a){var b=document.createElement("form");b.classList.add("vex-dialog-form");var c=document.createElement("div");c.classList.add("vex-dialog-message"),c.appendChild(a.message instanceof window.Node?a.message:d(a.message));var e=document.createElement("div");return e.classList.add("vex-dialog-input"),e.appendChild(a.input instanceof window.Node?a.input:d(a.input)),b.appendChild(c),b.appendChild(e),b},g=function(a){var b=document.createElement("div");b.classList.add("vex-dialog-buttons");for(var c=0;c<a.length;c++){var d=a[c],e=document.createElement("button");e.type=d.type,e.textContent=d.text,e.classList.add(d.className),e.classList.add("vex-dialog-button"),0===c?e.classList.add("vex-first"):c===a.length-1&&e.classList.add("vex-last"),function(a){e.addEventListener("click",function(b){a.click&&a.click.call(this,b)}.bind(this))}.bind(this)(d),b.appendChild(e)}return b},h=function(a){if("undefined"!=typeof a){var b=document.createElement("div");return b.appendChild(document.createTextNode(a)),b.innerHTML}return""},i=function(a){var b={name:"dialog",open:function(b){var c=Object.assign({},this.defaultOptions,b);c.unsafeMessage&&!c.message?c.message=c.unsafeMessage:c.message&&(c.message=h(c.message));var d=c.content=f(c),e=a.open(c),i=c.beforeClose;if(e.options.beforeClose=function(){c.callback(this.value||!1),i&&i.call(this)}.bind(e),d.appendChild(g.call(e,c.buttons)),e.form=d,d.addEventListener("submit",c.onSubmit.bind(e)),c.focusFirstInput){var j=e.contentEl.querySelector("button, input, textarea");j&&j.focus()}return e},alert:function(a){return"string"==typeof a&&(a={message:a}),a=Object.assign({},this.defaultOptions,this.defaultAlertOptions,a),this.open(a)},confirm:function(a){if("string"==typeof a)throw new Error("dialog.confirm(options) requires options.callback.");return a=Object.assign({},this.defaultOptions,this.defaultConfirmOptions,a),this.open(a)},prompt:function(a){if("string"==typeof a)throw new Error("dialog.prompt(options) requires options.callback.");var b=Object.assign({},this.defaultOptions,this.defaultPromptOptions),c={unsafeMessage:'<label for="vex">'+(h(a.label)||b.label)+"</label>",input:'<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="'+(a.placeholder||b.placeholder)+'" value="'+(a.value||b.value)+'" />'};a=Object.assign(b,c,a);var d=a.callback;return a.callback=function(a){a=a[Object.keys(a)[0]],d(a)},this.open(a)}};return b.buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary",click:function(){this.value=!0}},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function(){this.value=!1,this.close()}}},b.defaultOptions={callback:function(){},afterOpen:function(){},message:"",input:"",buttons:[b.buttons.YES,b.buttons.NO],showCloseButton:!1,onSubmit:function(a){return a.preventDefault(),this.options.input&&(this.value=e(this.form,{hash:!0})),this.close()},focusFirstInput:!0},b.defaultAlertOptions={message:"Alert",buttons:[b.buttons.YES]},b.defaultPromptOptions={label:"Prompt:",placeholder:"",value:""},b.defaultConfirmOptions={message:"Confirm"},b};b.exports=i},{domify:1,"form-serialize":2}]},{},[3])(3)}); | ||
/*! vex.dialog.min.js 1.0.0 */ | ||
!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.vexDialog=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){function d(a,b){if("string"!=typeof a)throw new TypeError("String expected");b||(b=document);var c=/<([\w:]+)/.exec(a);if(!c)return b.createTextNode(a);a=a.replace(/^\s+|\s+$/g,"");var d=c[1];if("body"==d){var e=b.createElement("html");return e.innerHTML=a,e.removeChild(e.lastChild)}var f=g[d]||g._default,h=f[0],i=f[1],j=f[2],e=b.createElement("div");for(e.innerHTML=i+a+j;h--;)e=e.lastChild;if(e.firstChild==e.lastChild)return e.removeChild(e.firstChild);for(var k=b.createDocumentFragment();e.firstChild;)k.appendChild(e.removeChild(e.firstChild));return k}b.exports=d;var e,f=!1;"undefined"!=typeof document&&(e=document.createElement("div"),e.innerHTML=' <link/><table></table><a href="/a">a</a><input type="checkbox"/>',f=!e.getElementsByTagName("link").length,e=void 0);var g={legend:[1,"<fieldset>","</fieldset>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],_default:f?[1,"X<div>","</div>"]:[0,"",""]};g.td=g.th=[3,"<table><tbody><tr>","</tr></tbody></table>"],g.option=g.optgroup=[1,'<select multiple="multiple">',"</select>"],g.thead=g.tbody=g.colgroup=g.caption=g.tfoot=[1,"<table>","</table>"],g.polyline=g.ellipse=g.polygon=g.circle=g.text=g.line=g.path=g.rect=g.g=[1,'<svg xmlns="http://www.w3.org/2000/svg" version="1.1">',"</svg>"]},{}],2:[function(a,b,c){function d(a,b){"object"!=typeof b?b={hash:!!b}:void 0===b.hash&&(b.hash=!0);for(var c=b.hash?{}:"",d=b.serializer||(b.hash?g:h),e=a&&a.elements?a.elements:[],f=Object.create(null),k=0;k<e.length;++k){var l=e[k];if((b.disabled||!l.disabled)&&l.name&&j.test(l.nodeName)&&!i.test(l.type)){var m=l.name,n=l.value;if("checkbox"!==l.type&&"radio"!==l.type||l.checked||(n=void 0),b.empty){if("checkbox"!==l.type||l.checked||(n=""),"radio"===l.type&&(f[l.name]||l.checked?l.checked&&(f[l.name]=!0):f[l.name]=!1),!n&&"radio"==l.type)continue}else if(!n)continue;if("select-multiple"!==l.type)c=d(c,m,n);else{n=[];for(var o=l.options,p=!1,q=0;q<o.length;++q){var r=o[q],s=b.empty&&!r.value,t=r.value||s;r.selected&&t&&(p=!0,c=b.hash&&"[]"!==m.slice(m.length-2)?d(c,m+"[]",r.value):d(c,m,r.value))}!p&&b.empty&&(c=d(c,m,""))}}}if(b.empty)for(var m in f)f[m]||(c=d(c,m,""));return c}function e(a){var b=[],c=/^([^\[\]]*)/,d=new RegExp(k),e=c.exec(a);for(e[1]&&b.push(e[1]);null!==(e=d.exec(a));)b.push(e[1]);return b}function f(a,b,c){if(0===b.length)return a=c;var d=b.shift(),e=d.match(/^\[(.+?)\]$/);if("[]"===d)return a=a||[],Array.isArray(a)?a.push(f(null,b,c)):(a._values=a._values||[],a._values.push(f(null,b,c))),a;if(e){var g=e[1],h=+g;isNaN(h)?(a=a||{},a[g]=f(a[g],b,c)):(a=a||[],a[h]=f(a[h],b,c))}else a[d]=f(a[d],b,c);return a}function g(a,b,c){var d=b.match(k);if(d){var g=e(b);f(a,g,c)}else{var h=a[b];h?(Array.isArray(h)||(a[b]=[h]),a[b].push(c)):a[b]=c}return a}function h(a,b,c){return c=c.replace(/(\r)?\n/g,"\r\n"),c=encodeURIComponent(c),c=c.replace(/%20/g,"+"),a+(a?"&":"")+encodeURIComponent(b)+"="+c}var i=/^(?:submit|button|image|reset|file)$/i,j=/^(?:input|select|textarea|keygen)/i,k=/(\[[^\[\]]*\])/g;b.exports=d},{}],3:[function(a,b,c){var d=a("domify"),e=a("form-serialize"),f=function(a){var b=document.createElement("form");b.classList.add("vex-dialog-form");var c=document.createElement("div");c.classList.add("vex-dialog-message"),c.appendChild(a.message instanceof window.Node?a.message:d(a.message));var e=document.createElement("div");return e.classList.add("vex-dialog-input"),e.appendChild(a.input instanceof window.Node?a.input:d(a.input)),b.appendChild(c),b.appendChild(e),b},g=function(a){var b=document.createElement("div");b.classList.add("vex-dialog-buttons");for(var c=0;c<a.length;c++){var d=a[c],e=document.createElement("button");e.type=d.type,e.textContent=d.text,e.classList.add(d.className),e.classList.add("vex-dialog-button"),0===c?e.classList.add("vex-first"):c===a.length-1&&e.classList.add("vex-last"),function(a){e.addEventListener("click",function(b){a.click&&a.click.call(this,b)}.bind(this))}.bind(this)(d),b.appendChild(e)}return b},h=function(a){if("undefined"!=typeof a){var b=document.createElement("div");return b.appendChild(document.createTextNode(a)),b.innerHTML}return""},i=function(a){var b={name:"dialog",open:function(b){var c=Object.assign({},this.defaultOptions,b);c.unsafeMessage&&!c.message?c.message=c.unsafeMessage:c.message&&(c.message=h(c.message));var d=c.content=f(c),e=a.open(c),i=c.beforeClose;if(e.options.beforeClose=function(){var a=!i||i();return a&&c.callback(this.value||!1),a}.bind(e),d.appendChild(g.call(e,c.buttons)),e.form=d,d.addEventListener("submit",c.onSubmit.bind(e)),c.focusFirstInput){var j=e.contentEl.querySelector("button, input, textarea");j&&j.focus()}return e},alert:function(a){return"string"==typeof a&&(a={message:a}),a=Object.assign({},this.defaultOptions,this.defaultAlertOptions,a),this.open(a)},confirm:function(a){if("string"==typeof a)throw new Error("dialog.confirm(options) requires options.callback.");return a=Object.assign({},this.defaultOptions,this.defaultConfirmOptions,a),this.open(a)},prompt:function(a){if("string"==typeof a)throw new Error("dialog.prompt(options) requires options.callback.");var b=Object.assign({},this.defaultOptions,this.defaultPromptOptions),c={unsafeMessage:'<label for="vex">'+(h(a.label)||b.label)+"</label>",input:'<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="'+(a.placeholder||b.placeholder)+'" value="'+(a.value||b.value)+'" />'};a=Object.assign(b,c,a);var d=a.callback;return a.callback=function(a){a=a[Object.keys(a)[0]],d(a)},this.open(a)}};return b.buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary",click:function(){this.value=!0}},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function(){this.value=!1,this.close()}}},b.defaultOptions={callback:function(){},afterOpen:function(){},message:"",input:"",buttons:[b.buttons.YES,b.buttons.NO],showCloseButton:!1,onSubmit:function(a){return a.preventDefault(),this.options.input&&(this.value=e(this.form,{hash:!0})),this.close()},focusFirstInput:!0},b.defaultAlertOptions={message:"Alert",buttons:[b.buttons.YES]},b.defaultPromptOptions={label:"Prompt:",placeholder:"",value:""},b.defaultConfirmOptions={message:"Confirm"},b};b.exports=i},{domify:1,"form-serialize":2}]},{},[3])(3)}); |
{ | ||
"name": "vex-dialog", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "A vex plugin for drop-in alert, confirm, and prompt dialogs", | ||
"author": "Brendan Batliner <brendan@omnipointment.com>", | ||
"license": "MIT", | ||
"main": "dist/vex.dialog.min.js", | ||
"main": "dist/vex.dialog.js", | ||
"repository": { | ||
@@ -13,10 +13,10 @@ "type": "git", | ||
"dependencies": { | ||
"domify": "^1.4.0", | ||
"form-serialize": "latest" | ||
"domify": "1.4.0", | ||
"form-serialize": "0.7.1" | ||
}, | ||
"devDependencies": { | ||
"grunt": "latest", | ||
"grunt-browserify": "latest", | ||
"grunt-contrib-uglify": "latest", | ||
"standard": "latest" | ||
"grunt": "1.0.1", | ||
"grunt-browserify": "5.0.0", | ||
"grunt-contrib-uglify": "1.0.1", | ||
"standard": "7.1.2" | ||
}, | ||
@@ -23,0 +23,0 @@ "scripts": { |
var domify = require('domify') | ||
var serialize = require('form-serialize') | ||
var buildDialogForm = function (options) { | ||
// Build DOM elements for the structure of the dialog | ||
var buildDialogForm = function buildDialogForm (options) { | ||
var form = document.createElement('form') | ||
@@ -22,3 +23,4 @@ form.classList.add('vex-dialog-form') | ||
var buttonsToDOM = function (buttons) { | ||
// Take an array of buttons (see the default buttons below) and turn them into DOM elements | ||
var buttonsToDOM = function buttonsToDOM (buttons) { | ||
var domButtons = document.createElement('div') | ||
@@ -54,3 +56,4 @@ domButtons.classList.add('vex-dialog-buttons') | ||
var escapeHtml = function (str) { | ||
// Use the DOM's HTML parsing to escape any dangerous strings | ||
var escapeHtml = function escapeHtml (str) { | ||
if (typeof str !== 'undefined') { | ||
@@ -65,3 +68,3 @@ var div = document.createElement('div') | ||
var plugin = function (vex) { | ||
var plugin = function plugin (vex) { | ||
// Define the API first | ||
@@ -73,3 +76,3 @@ var dialog = { | ||
// Open | ||
open: function (opts) { | ||
open: function open (opts) { | ||
var options = Object.assign({}, this.defaultOptions, opts) | ||
@@ -91,9 +94,20 @@ | ||
// Quick comment - these options and appending buttons and everything | ||
// would preferably be done _before_ opening the dialog. However, since | ||
// they rely on the context of the vex instance, we have to do them | ||
// after. A potential future fix would be to differentiate between | ||
// a "created" vex instance and an "opened" vex instance, so any actions | ||
// that rely on the specific context of the instance can do their stuff | ||
// before opening the dialog on the page. | ||
// Override the before close callback to also pass the value of the form | ||
var beforeClose = options.beforeClose | ||
dialogInstance.options.beforeClose = function () { | ||
options.callback(this.value || false) | ||
if (beforeClose) { | ||
beforeClose.call(this) | ||
dialogInstance.options.beforeClose = function dialogBeforeClose () { | ||
// Only call the callback once - when the validation in beforeClose, if present, is true | ||
var shouldClose = beforeClose ? beforeClose() : true | ||
if (shouldClose) { | ||
options.callback(this.value || false) | ||
} | ||
// Return the result of beforeClose() to vex | ||
return shouldClose | ||
}.bind(dialogInstance) | ||
@@ -124,2 +138,3 @@ | ||
alert: function (options) { | ||
// Allow string as message | ||
if (typeof options === 'string') { | ||
@@ -154,4 +169,6 @@ options = { | ||
options = Object.assign(defaults, dynamicDefaults, options) | ||
// Pluck the value of the "vex" input field as the return value for prompt's callback | ||
// More closely mimics "window.prompt" in that a single string is returned | ||
var callback = options.callback | ||
options.callback = function (value) { | ||
options.callback = function promptCallback (value) { | ||
value = value[Object.keys(value)[0]] | ||
@@ -170,3 +187,3 @@ callback(value) | ||
className: 'vex-dialog-button-primary', | ||
click: function () { | ||
click: function yesClick () { | ||
this.value = true | ||
@@ -180,3 +197,3 @@ } | ||
className: 'vex-dialog-button-secondary', | ||
click: function () { | ||
click: function noClick () { | ||
this.value = false | ||
@@ -198,3 +215,3 @@ this.close() | ||
showCloseButton: false, | ||
onSubmit: function (e) { | ||
onSubmit: function onDialogSubmit (e) { | ||
e.preventDefault() | ||
@@ -201,0 +218,0 @@ if (this.options.input) { |
37627
752
+ Addeddomify@1.4.0(transitive)
+ Addedform-serialize@0.7.1(transitive)
- Removeddomify@1.4.2(transitive)
- Removedform-serialize@0.7.2(transitive)
Updateddomify@1.4.0
Updatedform-serialize@0.7.1