From d7eb45bc151ffff6fb80f6381ac274a2d6288daf Mon Sep 17 00:00:00 2001 From: Brian Detering Date: Sun, 9 Aug 2015 15:34:05 -0700 Subject: [PATCH 1/2] defaults to text input interface for unkown input types --- jquery.input.js | 5 +++-- jquery.input.min.js | 4 ++-- package.json | 9 +++++---- src/buildFormInputs.js | 3 ++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/jquery.input.js b/jquery.input.js index 819d9e6..ad8d6ad 100644 --- a/jquery.input.js +++ b/jquery.input.js @@ -1,6 +1,6 @@ // jquery.input version 0.0.1 // https://github.com/DubFriend/jquery.input -// (MIT) 09-11-2014 +// (MIT) 09-08-2015 // Brian Detering (http://www.briandetering.net/) (function ($) { 'use strict'; @@ -893,7 +893,8 @@ var buildFormInputs = function (fig) { addInputsGroup('checkbox', $self); } else { - throw 'invalid input type'; + //in all other cases default to a "text" input interface. + addInputsBasic('text', $self); } } else { diff --git a/jquery.input.min.js b/jquery.input.min.js index 41149e2..76b1907 100644 --- a/jquery.input.min.js +++ b/jquery.input.min.js @@ -1,5 +1,5 @@ // jquery.input version 0.0.1 // https://github.com/DubFriend/jquery.input -// (MIT) 09-11-2014 +// (MIT) 09-08-2015 // Brian Detering (http://www.briandetering.net/) -!function(a){"use strict";var b=function(b){return a.isArray(b)},c=function(a){return!b(a)&&a instanceof Object},d=function(a){return a instanceof Function},e=function(a){var b=Array.prototype.slice.call(arguments,1);return d(a)?function(){var c=Array.prototype.slice.call(arguments);return a.apply(null,b.concat(c))}:void 0},f=function(b,c){return a.inArray(c,b)},g=function(a,b){return-1!==f(a,b)},h=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c,a)},i=function(a){return a[a.length-1]},j=function(a,b){var c=[];return h(a,function(a,d,e){c.push(b(a,d,e))}),c},k=function(a,b,c){var d={};return h(a,function(a,e,f){e=c?c(e,a):e,d[e]=b(a,e,f)}),d},l=function(a,c,d){return b(a)?j(a,c):k(a,c,d)},m=function(a,b,c){return l(a,function(a){return a[b].apply(a,c||[])})},n=function(){var a,b={};for(a=0;a").closest("form").get(0).reset(),a(this).unwrap()})},d.$().change(function(a){c.publishChange(a,this)}),d},x=function(a){var b={},c=r(a,b);return c.getType=function(){return"hidden"},c.$().change(function(a){b.publishChange(a,this)}),c},y=function(b){var c={},d=q(b,c);return d.getType=function(){return"file[multiple]"},d.get=function(){var a,b=d.$().get(0).files||[],c=[];for(a=0;a<(b.length||0);a+=1)c.push(b[a].name);return c},d.clear=function(){this.$().each(function(){a(this).wrap("
").closest("form").get(0).reset(),a(this).unwrap()})},d.$().change(function(a){c.publishChange(a,this)}),d},z=function(a){var c={},d=r(a,c);return d.getType=function(){return"select[multiple]"},d.get=function(){return d.$().val()||[]},d.set=function(a){d.$().val(""===a?[]:b(a)?a:[a])},c.equalTo=s,d.$().change(function(a){c.publishChange(a,this)}),d},A=function(a){var b={},c=E(a,b);return c.getType=function(){return"password"},c},B=function(b){var c={},d=r(b,c);return d.getType=function(){return"radio"},d.get=function(){return d.$().filter(":checked").val()||null},d.set=function(b){b?d.$().filter('[value="'+b+'"]').prop("checked",!0):d.$().each(function(){a(this).prop("checked",!1)})},d.$().change(function(a){c.publishChange(a,this)}),d},C=function(a){var b={},c=r(a,b);return c.getType=function(){return"range"},c.$().change(function(a){b.publishChange(a,this)}),c},D=function(a){var b={},c=r(a,b);return c.getType=function(){return"select"},c.$().change(function(a){b.publishChange(a,this)}),c},E=function(a){var b={},c=r(a,b);return c.getType=function(){return"text"},c.$().on("change keyup keydown",function(a){b.publishChange(a,this)}),c},F=function(a){var b={},c=r(a,b);return c.getType=function(){return"textarea"},c.$().on("change keyup keydown",function(a){b.publishChange(a,this)}),c},G=function(a){var b={},c=E(a,b);return c.getType=function(){return"url"},c},H=function(b){var d={},e=b.$,g=b.constructorOverride||{button:t,text:E,url:G,email:v,password:A,range:C,textarea:F,select:D,"select[multiple]":z,radio:B,checkbox:u,file:w,"file[multiple]":y,hidden:x},i=function(b,f){var h=c(f)?f:e.find(f);h.each(function(){var c=a(this).attr("name");d[c]=g[b]({$:a(this)})})},j=function(b,i){var j=[],k=c(i)?i:e.find(i);c(i)?d[k.attr("name")]=g[b]({$:k}):(k.each(function(){a(this).attr("name");-1===f(j,a(this).attr("name"))&&j.push(a(this).attr("name"))}),h(j,function(a){d[a]=g[b]({$:e.find('input[name="'+a+'"]')})}))};if(e.is("input, select, textarea"))if(e.is('input[type="button"], button, input[type="submit"]'))i("button",e);else if(e.is("textarea"))i("textarea",e);else if(e.is('input[type="text"]')||e.is("input")&&!e.attr("type"))i("text",e);else if(e.is('input[type="password"]'))i("password",e);else if(e.is('input[type="email"]'))i("email",e);else if(e.is('input[type="url"]'))i("url",e);else if(e.is('input[type="range"]'))i("range",e);else if(e.is("select"))e.is("[multiple]")?i("select[multiple]",e):i("select",e);else if(e.is('input[type="file"]'))e.is("[multiple]")?i("file[multiple]",e):i("file",e);else if(e.is('input[type="hidden"]'))i("hidden",e);else if(e.is('input[type="radio"]'))j("radio",e);else{if(!e.is('input[type="checkbox"]'))throw"invalid input type";j("checkbox",e)}else i("button",'input[type="button"], button, input[type="submit"]'),i("text",'input[type="text"]'),i("password",'input[type="password"]'),i("email",'input[type="email"]'),i("url",'input[type="url"]'),i("range",'input[type="range"]'),i("textarea","textarea"),i("select","select:not([multiple])"),i("select[multiple]","select[multiple]"),i("file",'input[type="file"]:not([multiple])'),i("file[multiple]",'input[type="file"][multiple]'),i("hidden",'input[type="hidden"]'),j("radio",'input[type="radio"]'),j("checkbox",'input[type="checkbox"]');return d};a.fn.inputVal=function(b){var c=a(this),d=H({$:c});return c.is("input, textarea, select")?"undefined"==typeof b?d[c.attr("name")].get():(d[c.attr("name")].set(b),c):"undefined"==typeof b?m(d,"get"):(h(b,function(a,b){d[b].set(a)}),c)},a.fn.inputOnChange=function(b){var c=a(this),d=H({$:c});return h(d,function(a){a.subscribe("change",function(a){b.call(a.domElement,a.e)})}),c},a.fn.inputDisable=function(){var b=a(this);return m(H({$:b}),"disable"),b},a.fn.inputEnable=function(){var b=a(this);return m(H({$:b}),"enable"),b},a.fn.inputClear=function(){var b=a(this);return m(H({$:b}),"clear"),b}}(jQuery); \ No newline at end of file +!function(a){"use strict";var b=function(b){return a.isArray(b)},c=function(a){return!b(a)&&a instanceof Object},d=function(a){return a instanceof Function},e=function(a){var b=Array.prototype.slice.call(arguments,1);return d(a)?function(){var c=Array.prototype.slice.call(arguments);return a.apply(null,b.concat(c))}:void 0},f=function(b,c){return a.inArray(c,b)},g=function(a,b){return-1!==f(a,b)},h=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c,a)},i=function(a){return a[a.length-1]},j=function(a,b){var c=[];return h(a,function(a,d,e){c.push(b(a,d,e))}),c},k=function(a,b,c){var d={};return h(a,function(a,e,f){e=c?c(e,a):e,d[e]=b(a,e,f)}),d},l=function(a,c,d){return b(a)?j(a,c):k(a,c,d)},m=function(a,b,c){return l(a,function(a,d){return a[b].apply(a,c||[])})},n=function(){var a,b={};for(a=0;a").closest("form").get(0).reset(),a(this).unwrap()})},d.$().change(function(a){c.publishChange(a,this)}),d},x=function(a){var b={},c=r(a,b);return c.getType=function(){return"hidden"},c.$().change(function(a){b.publishChange(a,this)}),c},y=function(b){var c={},d=q(b,c);return d.getType=function(){return"file[multiple]"},d.get=function(){var a,b=d.$().get(0).files||[],c=[];for(a=0;a<(b.length||0);a+=1)c.push(b[a].name);return c},d.clear=function(){this.$().each(function(){a(this).wrap("").closest("form").get(0).reset(),a(this).unwrap()})},d.$().change(function(a){c.publishChange(a,this)}),d},z=function(a){var c={},d=r(a,c);return d.getType=function(){return"select[multiple]"},d.get=function(){return d.$().val()||[]},d.set=function(a){d.$().val(""===a?[]:b(a)?a:[a])},c.equalTo=s,d.$().change(function(a){c.publishChange(a,this)}),d},A=function(a){var b={},c=E(a,b);return c.getType=function(){return"password"},c},B=function(b){var c={},d=r(b,c);return d.getType=function(){return"radio"},d.get=function(){return d.$().filter(":checked").val()||null},d.set=function(b){b?d.$().filter('[value="'+b+'"]').prop("checked",!0):d.$().each(function(){a(this).prop("checked",!1)})},d.$().change(function(a){c.publishChange(a,this)}),d},C=function(a){var b={},c=r(a,b);return c.getType=function(){return"range"},c.$().change(function(a){b.publishChange(a,this)}),c},D=function(a){var b={},c=r(a,b);return c.getType=function(){return"select"},c.$().change(function(a){b.publishChange(a,this)}),c},E=function(a){var b={},c=r(a,b);return c.getType=function(){return"text"},c.$().on("change keyup keydown",function(a){b.publishChange(a,this)}),c},F=function(a){var b={},c=r(a,b);return c.getType=function(){return"textarea"},c.$().on("change keyup keydown",function(a){b.publishChange(a,this)}),c},G=function(a){var b={},c=E(a,b);return c.getType=function(){return"url"},c},H=function(b){var d={},e=b.$,g=b.constructorOverride||{button:t,text:E,url:G,email:v,password:A,range:C,textarea:F,select:D,"select[multiple]":z,radio:B,checkbox:u,file:w,"file[multiple]":y,hidden:x},i=function(b,f){var h=c(f)?f:e.find(f);h.each(function(){var c=a(this).attr("name");d[c]=g[b]({$:a(this)})})},j=function(b,i){var j=[],k=c(i)?i:e.find(i);c(i)?d[k.attr("name")]=g[b]({$:k}):(k.each(function(){a(this).attr("name");-1===f(j,a(this).attr("name"))&&j.push(a(this).attr("name"))}),h(j,function(a){d[a]=g[b]({$:e.find('input[name="'+a+'"]')})}))};return e.is("input, select, textarea")?e.is('input[type="button"], button, input[type="submit"]')?i("button",e):e.is("textarea")?i("textarea",e):e.is('input[type="text"]')||e.is("input")&&!e.attr("type")?i("text",e):e.is('input[type="password"]')?i("password",e):e.is('input[type="email"]')?i("email",e):e.is('input[type="url"]')?i("url",e):e.is('input[type="range"]')?i("range",e):e.is("select")?e.is("[multiple]")?i("select[multiple]",e):i("select",e):e.is('input[type="file"]')?e.is("[multiple]")?i("file[multiple]",e):i("file",e):e.is('input[type="hidden"]')?i("hidden",e):e.is('input[type="radio"]')?j("radio",e):e.is('input[type="checkbox"]')?j("checkbox",e):i("text",e):(i("button",'input[type="button"], button, input[type="submit"]'),i("text",'input[type="text"]'),i("password",'input[type="password"]'),i("email",'input[type="email"]'),i("url",'input[type="url"]'),i("range",'input[type="range"]'),i("textarea","textarea"),i("select","select:not([multiple])"),i("select[multiple]","select[multiple]"),i("file",'input[type="file"]:not([multiple])'),i("file[multiple]",'input[type="file"][multiple]'),i("hidden",'input[type="hidden"]'),j("radio",'input[type="radio"]'),j("checkbox",'input[type="checkbox"]')),d};a.fn.inputVal=function(b){var c=a(this),d=H({$:c});return c.is("input, textarea, select")?"undefined"==typeof b?d[c.attr("name")].get():(d[c.attr("name")].set(b),c):"undefined"==typeof b?m(d,"get"):(h(b,function(a,b){d[b].set(a)}),c)},a.fn.inputOnChange=function(b){var c=a(this),d=H({$:c});return h(d,function(a){a.subscribe("change",function(a){b.call(a.domElement,a.e)})}),c},a.fn.inputDisable=function(){var b=a(this);return m(H({$:b}),"disable"),b},a.fn.inputEnable=function(){var b=a(this);return m(H({$:b}),"enable"),b},a.fn.inputClear=function(){var b=a(this);return m(H({$:b}),"clear"),b}}(jQuery); \ No newline at end of file diff --git a/package.json b/package.json index 077b427..95800ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jquery.input", - "version": "0.0.1", + "version": "0.1.0", "description": "A Common interface for html input elements.", "main": "jquery.input.js", "scripts": { @@ -30,9 +30,10 @@ }, "devDependencies": { "grunt": "~0.4.4", - "grunt-contrib-watch": "~0.6.1", - "grunt-preprocess": "~4.0.0", "grunt-contrib-concat": "~0.3.0", - "grunt-contrib-uglify": "~0.4.0" + "grunt-contrib-qunit": "^0.7.0", + "grunt-contrib-uglify": "~0.4.0", + "grunt-contrib-watch": "~0.6.1", + "grunt-preprocess": "~4.0.0" } } diff --git a/src/buildFormInputs.js b/src/buildFormInputs.js index 9c02ec3..7d476ce 100755 --- a/src/buildFormInputs.js +++ b/src/buildFormInputs.js @@ -109,7 +109,8 @@ var buildFormInputs = function (fig) { addInputsGroup('checkbox', $self); } else { - throw 'invalid input type'; + // in all other cases default to a "text" input interface. + addInputsBasic('text', $self); } } else { From 316a56073ae667086361c168c6188884991124de Mon Sep 17 00:00:00 2001 From: Brian Detering Date: Sun, 3 Jul 2016 20:00:39 -0700 Subject: [PATCH 2/2] added bower config --- bower.json | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 bower.json diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..f0b2fbb --- /dev/null +++ b/bower.json @@ -0,0 +1,23 @@ +{ + "name": "jquery.input", + "main": "jquery.input.js", + "version": "0.1.0", + "homepage": "https://github.com/DubFriend/jquery.input", + "description": "\"A Common interface for html input elements.\"", + "keywords": [ + "input", + "form", + "interface" + ], + "authors": [ + "Brian Detering" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +}