diff --git a/README.md b/README.md index bc1a086..86160b9 100644 --- a/README.md +++ b/README.md @@ -134,13 +134,12 @@ $('input').kladr('option1', 123); Структура папок, файлов -------------------------------------------------------------------------------- -* **jquery.kladr.js** - Плагин * **jquery.kladr.min.js** - Минимифицированный код плагина -* **jquery.kladr.css** - Стили * **jquery.kladr.min.css** - Минимифицированные стили -* **jquery.kladr.images** - Изображения плагина -* **kladr** - Состовляющие плагина (ядро и плагин для автодополнения) по отдельности -* **examples** - Примеры использования +* **examples** - Примеры +* **images** - Изображения плагина +* **kladr** - Исходный код плагина + Примеры -------------------------------------------------------------------------------- diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..d1c79a9 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,19 @@ +var gulp = require('gulp'), + csso = require('gulp-csso'), + imagemin = require('gulp-imagemin'), + uglify = require('gulp-uglify'), + concat = require('gulp-concat'), + rename = require('gulp-rename'); + +gulp.task('default', function() { + gulp.src('./kladr/css/style.css') + .pipe(csso()) + .pipe(rename('jquery.kladr.min.css')) + .pipe(gulp.dest('./')); + + gulp.src(['./kladr/js/core.js', './kladr/js/plugin.js']) + .pipe(concat('jquery.kladr.js')) + .pipe(uglify()) + .pipe(rename({suffix: '.min'})) + .pipe(gulp.dest('./')); +}); \ No newline at end of file diff --git a/jquery.kladr.images/spinner.png b/images/spinner.png similarity index 100% rename from jquery.kladr.images/spinner.png rename to images/spinner.png diff --git a/jquery.kladr.min.css b/jquery.kladr.min.css index 1be3c17..2a37655 100644 --- a/jquery.kladr.min.css +++ b/jquery.kladr.min.css @@ -1 +1 @@ -.kladr-error{color:#cb3e27}#kladr_autocomplete ul{position:absolute;display:block;margin:0;padding:0;border:1px solid #c4c4c4;background-color:white;z-index:9999;overflow-x:hidden;overflow-y:auto;min-width:200px;max-height:420px;color:#313131}#kladr_autocomplete li{display:list-item;list-style-type:none;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#kladr_autocomplete li+li{border-top:1px solid #ededed}#kladr_autocomplete li:hover{background-color:#f2f2f2;cursor:pointer}#kladr_autocomplete li.active{background-color:#e9e9e9}#kladr_autocomplete a{text-decoration:none}#kladr_autocomplete strong{color:#038ebd}#kladr_autocomplete .spinner{position:absolute;display:block;margin:0;padding:0;width:16px;height:16px;background:transparent url("examples/img/spinner.png") center center no-repeat;z-index:9999} \ No newline at end of file +.kladr-error{color:#cb3e27}#kladr_autocomplete ul{position:absolute;display:block;margin:0;padding:0;border:1px solid #c4c4c4;background-color:#fff;z-index:9999;overflow-x:hidden;overflow-y:auto;min-width:200px;max-height:420px;color:#313131}#kladr_autocomplete li{display:list-item;list-style-type:none;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#kladr_autocomplete li+li{border-top:1px solid #ededed}#kladr_autocomplete li:hover{background-color:#f2f2f2;cursor:pointer}#kladr_autocomplete li.active{background-color:#e9e9e9}#kladr_autocomplete a{text-decoration:none}#kladr_autocomplete strong{color:#038ebd}#kladr_autocomplete .spinner{position:absolute;display:block;margin:0;padding:0;width:16px;height:16px;background:url("./images/spinner.png") center center no-repeat;z-index:9999} \ No newline at end of file diff --git a/kladr/README.md b/kladr/README.md deleted file mode 100644 index ac1ed24..0000000 --- a/kladr/README.md +++ /dev/null @@ -1,9 +0,0 @@ -jQuery Kladr -================================================================================ - -Составляющие плагина по отдельности - -* **jquery.kladr.core.min.js** - Реализует $.kladr. Позволяет обращаться к сервису [kladr-api.ru] [1]. -* **jquery.kladr.plugin.min.js** - Реализует плагин $( '' ).kladr. - -[1]: http://kladr-api.ru/ "КЛАДР API" \ No newline at end of file diff --git a/jquery.kladr.css b/kladr/css/style.css similarity index 92% rename from jquery.kladr.css rename to kladr/css/style.css index 4802add..3fd9eaf 100644 --- a/jquery.kladr.css +++ b/kladr/css/style.css @@ -55,6 +55,6 @@ padding: 0; width: 16px; height: 16px; - background: transparent url("examples/img/spinner.png") center center no-repeat; + background: transparent url("./images/spinner.png") center center no-repeat; z-index: 9999; } \ No newline at end of file diff --git a/kladr/jquery.kladr.core.min.js b/kladr/jquery.kladr.core.min.js deleted file mode 100644 index 78d1eda..0000000 --- a/kladr/jquery.kladr.core.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){function t(e){var t={},r={token:"token",key:"key",type:"contentType",name:"query",withParents:"withParent",oneString:"oneString",limit:"limit"};e.parentType&&e.parentId&&(t[e.parentType+"Id"]=e.parentId);for(var n in e)e.hasOwnProperty(n)&&r.hasOwnProperty(n)&&e[n]&&(t[r[n]]=e[n]);return t}function r(e){window.console&&window.console.error&&window.console.error(e)}e.kladr={},e.kladr.url="http://kladr-api.ru/api.php",e.kladr.type={region:"region",district:"district",city:"city",street:"street",building:"building"},e.kladr.validate=function(t){switch(t.type){case e.kladr.type.region:case e.kladr.type.district:case e.kladr.type.city:if(t.parentType&&!t.parentId)return r("parentId undefined"),!1;break;case e.kladr.type.street:if(t.parentType!=e.kladr.type.city)return r('parentType must equal "city"'),!1;if(!t.parentId)return r("parentId undefined"),!1;break;case e.kladr.type.building:if(t.parentType!=e.kladr.type.street)return r('parentType must equal "street"'),!1;if(!t.parentId)return r("parentId undefined"),!1;break;default:if(!t.oneString)return r("type incorrect"),!1}return t.oneString&&t.parentType&&!t.parentId?(r("parentId undefined"),!1):t.limit<1?(r("limit must greater than 0"),!1):!0},e.kladr.api=function(n,i){if(!i)return void r("Callback undefined");if(!e.kladr.validate(n))return void i([]);var a=e.Deferred();a.done(i),a.fail(function(e){r(e),i([])}),e.getJSON(e.kladr.url+"?callback=?",t(n),function(e){a.resolve(e.result||[])}),setTimeout(function(){a.reject("Request error")},3e3)},e.kladr.check=function(t,n){return n?(t.withParents=!1,t.limit=1,void e.kladr.api(t,function(e){n(e&&e.length?e[0]:!1)})):void r("Callback undefined")}}(jQuery); \ No newline at end of file diff --git a/kladr/jquery.kladr.plugin.min.js b/kladr/jquery.kladr.plugin.min.js deleted file mode 100644 index 2d73964..0000000 --- a/kladr/jquery.kladr.plugin.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){function n(n,r){function u(t,n){return t.isGet?s.get(t.str[0]):(s.set(t),n(),e)}var s=function(){var r=n.data("kladr-data");return r||(r=t.extend({},o,i),n.data("kladr-data",r)),{set:function(t){if(t.obj)for(var e in t.obj)t.obj.hasOwnProperty(e)&&o.hasOwnProperty(e)&&(r[e]=t.obj[e]);else t.str&&!t.isGet&&o.hasOwnProperty(t.str[0])&&(r[t.str[0]]=t.str[1]);n.data("kladr-data",r)},get:function(t){return o.hasOwnProperty(t)||i.hasOwnProperty(t)?r[t]:e},_set:function(t,e){r[t]=e,n.data("kladr-data",r)},_get:function(t){return r.hasOwnProperty(t)?r[t]:e}}}();return u(r,function(){function r(e){var r=t(document.getElementById("kladr_autocomplete"));r.length||(r=t('
').appendTo(document.body));var o=O("guid");o?(T=r.find(".autocomplete"+o),j=r.find(".spinner"+o),n.off(".kladr"),T.off(".kladr")):(o=a(),S("guid",o),n.attr("autocomplete","off"),T=t(' ').appendTo(r),j=t('').appendTo(r),i()),e()}function o(e,n){var r,a,o,i;T.empty();for(var l in e)e.hasOwnProperty(l)&&(r=e[l],a=O("valueFormat")(r,n),o=O("labelFormat")(r,n),i=t(''+o+""),i.data("kladr-object",r),t("").append(i).appendTo(T))}function i(){var t=n.offset(),e=n.outerWidth(),r=n.outerHeight();if(i.top!=t.top||i.left!=t.left||i.width!=e||i.height!=r){i.top=t.top,i.left=t.left,i.width=e,i.height=r,T.css({top:t.top+r+"px",left:t.left});var a=T.outerWidth()-T.width();T.width(e-a);var o=j.width(),l=j.height();j.css({top:t.top+(r-l)/2-1,left:t.left+e-o-2})}}function u(e){if(!(e.which>8&&e.which<46)){if(!v("open_before"))return void d();var r=n.val();if(!t.trim(r))return b(null),P(!1),void d();var a=g(r);if(!v("send_before",a))return void d();y(),v("send"),O("source")(a,function(e){return v("received"),n.is(":focus")?t.trim(n.val())&&e.length?(o(e,a),i(),k(),T.slideDown(50),void v("open")):(k(),b(null),void d()):(k(),void d())})}}function d(){v("close_before")&&(T.empty().hide(),v("close"))}function f(t){var n=T.find("li.active");switch(t.which){case l.up:n.length?(n.removeClass("active"),n.prev().length&&(n=n.prev())):n=T.find("li").last(),function(){var t=T.scrollTop(),e=T.offset(),r=n.outerHeight(),a=n.offset();a.top-e.top<0&&T.scrollTop(t-r)}(),n.addClass("active"),p();break;case l.down:n.length?(n.removeClass("active"),n.next().length&&(n=n.next())):n=T.find("li").first(),function(){var t=T.scrollTop(),e=T.height(),r=T.offset(),a=n.outerHeight(),o=n.offset();o.top-r.top+a>e&&T.scrollTop(t+a)}(),n.addClass("active"),p();break;case l.enter:d()}return e}function c(){var e=t(this);return e.is("a")&&(e=e.parents("li")),e.addClass("active"),p(),d(),n.focus(),!1}function p(){if(v("select_before")){var t=T.find(".active a");t.length&&(n.val(t.attr("data-val")),P(!1),b(t.data("kladr-object")),v("select",O("current")))}}function h(){function e(t,e){P(e),b(t)}if(O("verify")&&v("check_before")){var r=t.trim(n.val());if(!r)return void e(null,!1);var a=g(r);if(a.withParents=!1,a.limit=10,!v("send_before",a))return e(null,!1),void v("check",null);y(),v("send"),O("source")(a,function(r){function o(t,n){k(),e(t,n)}if(v("received"),!t.trim(n.val()))return void o(null,!1);var i=a.name.toLowerCase(),l=null,u=null;for(var s in r)if(r.hasOwnProperty(s)&&(l=r[s].name.toLowerCase(),i==l)){u=r[s];break}u&&n.val(O("valueFormat")(u,a)),o(u,!u),v("check",u)})}}function v(e,r){if(!e)return!0;var a=e.replace(/_([a-z])/gi,function(t,e){return e.toUpperCase()});return n.trigger("kladr_"+e,r),"function"===t.type(O(a))?O(a).call(n.get(0),r):!0}function y(){O("spinner")&&O("showSpinner")(j)}function k(){O("spinner")&&O("hideSpinner")(j)}function g(t){var e,n={token:O("token"),key:O("key"),type:O("type"),name:w(t),parentType:O("parentType"),parentId:O("parentId"),oneString:O("oneString"),withParents:O("withParents"),limit:O("limit")},r=O("parentInput");return n.oneString&&(n.withParents=!0),r&&(e=m(r,n.type),e&&(n.parentType=e.type,n.parentId=e.id)),n}function m(e,n){var r,a=t.kladr.getInputs(e),o=t.kladr.getTypes(),i={},l=null;a.each(function(){var e,n=t(this);(e=n.attr("data-kladr-id"))&&(i[n.attr("data-kladr-type")]=e)});for(r in o){if(r==n)return l;o.hasOwnProperty(r)&&i[r]&&(l={type:r,id:i[r]})}return l}function w(t){for(var e,n,r="abcdefghijklmnopqrstuvwxyz",a="Ёё",o="Ее",i=t.toLowerCase(),l="",u=0;u