From 42d5a8f88f75648f8f9cdb91e8f2016fbf4e6d93 Mon Sep 17 00:00:00 2001 From: Michael McDermott Date: Wed, 16 Sep 2015 12:10:05 -0400 Subject: [PATCH 1/2] Added gulp to solve to prefix css and solve #69 --- .gitignore | 1 + dist/angular.rangeSlider.min.css | 1 + dist/angular.rangeSlider.min.js | 1 + gulpfile.js | 40 ++++++++++++++++++++++++++++++++ package.json | 26 +++++++++++++++++++++ 5 files changed, 69 insertions(+) create mode 100644 dist/angular.rangeSlider.min.css create mode 100644 dist/angular.rangeSlider.min.js create mode 100644 gulpfile.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore index f579125..7fdcf45 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .sass-cache/* bower_components .DS_Store +node_modules/ diff --git a/dist/angular.rangeSlider.min.css b/dist/angular.rangeSlider.min.css new file mode 100644 index 0000000..77c06b6 --- /dev/null +++ b/dist/angular.rangeSlider.min.css @@ -0,0 +1 @@ +.ngrs-range-slider{position:relative;margin:10px 0 30px;padding:4px;border:1px solid #ccc;background:#fff;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border .2s linear,box-shadow .2s linear;transition:border .2s linear,box-shadow .2s linear;-webkit-tap-highlight-color:transparent}.ngrs-range-slider,.ngrs-range-slider *{display:block;cursor:default;box-sizing:border-box;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.ngrs-range-slider .ngrs-runner{position:relative;margin:0 9px;height:18px}.ngrs-range-slider .ngrs-join{position:absolute;z-index:1;top:50%;left:0;right:100%;height:8px;margin:-4px 0 0;border-radius:4px;background-color:#2f96b4;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzViYzBkZSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzJmOTZiNCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==);background-size:100%;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#5bc0de),color-stop(100%,#2f96b4));background-image:-webkit-linear-gradient(#5bc0de,#2f96b4);background-image:linear-gradient(#5bc0de,#2f96b4)}.ngrs-range-slider .ngrs-handle{position:absolute;z-index:2;height:100%;width:18px;margin:0 0 0 -9px;background:#efefef;border:1px solid #ccc;border-radius:3px}.ngrs-range-slider .ngrs-handle i{display:block;width:100%;height:100%;background:-9999px -9999px no-repeat;cursor:pointer}.ngrs-range-slider .ngrs-handle.ngrs-over i{background-position:50% 50%}.ngrs-range-slider .ngrs-handle.ngrs-down{box-shadow:0 0 4px rgba(0,0,0,.2)}.ngrs-range-slider .ngrs-handle-min i{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFNJREFUeNpiYMAEXEDsA+OwoEnKALETEHOgK2AEYhMgNkQ3DqSAB6pLAot1DExIJmAFzED8C4hvQdnIppyFKYCBp0D8CohloVafxWUqN7I3AQIMAKw6B24pOi8lAAAAAElFTkSuQmCC)}.ngrs-range-slider .ngrs-handle-max i{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFdJREFUeNpiYEAAHyDmYkADzEhsByBWA+K3QPwJmwJjIGYBYlUgZgLi59gUwIAkEEsD8VMmBtyAkQFqJDZwAYjPAPE/dAU/gHg/ED/GpgvkTW50QYAAAwADfwrM5sqplgAAAABJRU5ErkJggg==)}.ngrs-range-slider .ngrs-value{position:absolute;top:100%;left:0;padding:5px 0 0;font-size:12px;color:#999}.ngrs-range-slider .ngrs-value.ngrs-value-max{left:auto;right:0;text-align:right}.ngrs-range-slider.ngrs-handle-max-down .ngrs-value-max,.ngrs-range-slider.ngrs-handle-min-down .ngrs-value-min{color:#333}.ngrs-range-slider .ngrs-attached-handles{margin:0 9px;position:relative}.ngrs-range-slider .ngrs-attached-handles .ngrs-value{text-align:left}.ngrs-range-slider .ngrs-attached-handles .ngrs-value>div{margin:0 0 0 -50%}.ngrs-range-slider.ngrs-vertical{width:28px;margin:10px auto}.ngrs-range-slider.ngrs-vertical .ngrs-runner{margin:9px 0;height:300px;width:18px}.ngrs-range-slider.ngrs-vertical .ngrs-value-runner.ngrs-attached-handles{position:absolute;top:0;left:100%;bottom:0;margin:9px 0}.ngrs-range-slider.ngrs-vertical .ngrs-join{width:8px;height:auto;top:0;bottom:100%;left:50%;right:auto;margin:0 0 0 -4px}.ngrs-range-slider.ngrs-vertical .ngrs-handle{width:100%;height:18px;margin:-9px 0 0}.ngrs-range-slider.ngrs-vertical .ngrs-handle-min i{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFFJREFUeNpiYEAFPFAMB0xIbEYgdoJiRpggM5ICUyBWhZoA0vgMWYEsENsg6ZQE4ldA/AmkkguIHZGNhQKQGBfIBHcgFmTABCxALMJAMQAIMAAcNgVQJ7t7JQAAAABJRU5ErkJggg==)}.ngrs-range-slider.ngrs-vertical .ngrs-handle-max i{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeNpiYKAUMAKxDxBL4ZB/xgQk9gHxDyySILF9zEDiNxC/A2JVNAW7gfgtM5TzCYhZgFgCyr8IxNdADGZk+4BYGoi/APEBIP6PzVE8UAwHAAEGAArIDvzRFIA6AAAAAElFTkSuQmCC)}.ngrs-range-slider.ngrs-vertical .ngrs-value{top:0;left:100%;padding:0 0 0 5px}.ngrs-range-slider.ngrs-vertical .ngrs-value.ngrs-value-max{top:auto;bottom:0;right:auto;text-align:left}.ngrs-range-slider.ngrs-vertical .ngrs-attached-handles .ngrs-value>div{margin:-50% 0 0}.ngrs-range-slider.ngrs-vertical.ngrs-left{margin:10px 0}.ngrs-range-slider.ngrs-vertical.ngrs-right{margin:10px 0 10px auto}.ngrs-range-slider.ngrs-vertical.ngrs-right .ngrs-value{left:auto;right:100%;padding:0 5px 0 0;text-align:right}.ngrs-range-slider.ngrs-vertical.ngrs-right .ngrs-value.ngrs-value-max{text-align:right}.ngrs-range-slider.ngrs-vertical.ngrs-right .ngrs-value-runner.ngrs-attached-handles{left:0}.ngrs-range-slider.ngrs-focus{border-color:rgba(82,168,236,.8);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}.ngrs-range-slider.ngrs-disabled,.ngrs-range-slider.ngrs-disabled.ngrs-focus{border-color:#ddd;box-shadow:none}.ngrs-range-slider.ngrs-disabled .ngrs-handle{background:#fff;border-color:#ddd}.ngrs-range-slider.ngrs-disabled .ngrs-handle i{background:0 0!important;cursor:default}.ngrs-range-slider.ngrs-disabled .ngrs-join{background:#ddd}.ngrs-range-slider.ngrs-disabled .ngrs-value{color:#ddd}body.ngrs-touching{-ms-touch-action:none} \ No newline at end of file diff --git a/dist/angular.rangeSlider.min.js b/dist/angular.rangeSlider.min.js new file mode 100644 index 0000000..64c3a54 --- /dev/null +++ b/dist/angular.rangeSlider.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=1===angular.version.major&&0===angular.version.minor;angular.module("ui-rangeSlider",[]).directive("rangeSlider",["$document","$filter","$log",function(n,a,i){var t=".rangeSlider",l={disabled:!1,orientation:"horizontal",step:0,decimalPlaces:0,showValues:!0,preventEqualMinMax:!1,attachHandleValues:!1},s=window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup",over:"pointerdown",out:"mouseout"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp",over:"MSPointerDown",out:"mouseout"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend",over:"mouseover touchstart",out:"mouseout"},r=s.start+t,o=s.move+t,d=s.end+t,u=s.over+t,m=s.out+t,c=function(e){try{return[e.clientX||e.originalEvent.clientX||e.originalEvent.touches[0].clientX,e.clientY||e.originalEvent.clientY||e.originalEvent.touches[0].clientY]}catch(n){return["x","y"]}},g=function(e){return 0>e?0:e>100?100:e},f=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},v={disabled:"=?",min:"=",max:"=",modelMin:"=?",modelMax:"=?",onHandleDown:"&",onHandleUp:"&",orientation:"@",step:"@",decimalPlaces:"@",filter:"@",filterOptions:"@",showValues:"@",pinHandle:"@",preventEqualMinMax:"@",attachHandleValues:"@",getterSetter:"@"};return e&&(v.disabled="=",v.modelMin="=",v.modelMax="="),{restrict:"A",replace:!0,template:['
','
','
','
','
',"
",'
','
{{filteredModelMin}}
','
{{filteredModelMax}}
',"
","
"].join(""),scope:v,link:function(e,s,v,h){function p(n){return e.getterSetter?arguments.length?e.modelMin(n):e.modelMin():arguments.length?e.modelMin=n:e.modelMin}function M(n){return e.getterSetter?arguments.length?e.modelMax(n):e.modelMax():arguments.length?e.modelMax=n:e.modelMax}function x(e){"min"===e?(angular.element(E[0]).css("display","none"),angular.element(E[1]).css("display","block")):"max"===e?(angular.element(E[0]).css("display","block"),angular.element(E[1]).css("display","none")):(angular.element(E[0]).css("display","block"),angular.element(E[1]).css("display","block"))}function b(e){e?y.addClass("ngrs-disabled"):y.removeClass("ngrs-disabled")}function w(){e.min>e.max&&V("min must be less than or equal to max"),angular.isDefined(e.min)&&angular.isDefined(e.max)&&(f(e.min)||V("min must be a number"),f(e.max)||V("max must be a number"),j=e.max-e.min,k=[e.min,e.max],H())}function H(){if(p()>M()&&(D("modelMin must be less than or equal to modelMax"),p(M())),(angular.isDefined(p())||"min"===e.pinHandle)&&(angular.isDefined(M())||"max"===e.pinHandle)){f(p())||("min"!==e.pinHandle&&D("modelMin must be a number"),p(e.min)),f(M())||("max"!==e.pinHandle&&D("modelMax must be a number"),M(e.max));var n,i,t=g((p()-e.min)/j*100),l=g((M()-e.min)/j*100);if(e.attachHandleValues&&(n=t,i=l),p(Math.max(e.min,p())),M(Math.min(e.max,M())),e.filter&&e.filterOptions)e.filteredModelMin=a(e.filter)(p(),e.filterOptions),e.filteredModelMax=a(e.filter)(M(),e.filterOptions);else if(e.filter){var s,r,o=e.filter.split(":"),d=e.filter.split(":")[0],u=o.slice().slice(1);u=u.map(function(e){return f(e)?+e:'"'==e[0]&&'"'==e[e.length-1]||"'"==e[0]&&"'"==e[e.length-1]?e.slice(1,-1):void 0}),s=u.slice(),r=u.slice(),s.unshift(p()),r.unshift(M()),e.filteredModelMin=a(d).apply(null,s),e.filteredModelMax=a(d).apply(null,r)}else e.filteredModelMin=p(),e.filteredModelMax=M();e.min===e.max&&p()==M()?(angular.element(E[0]).css(C,"0%"),angular.element(E[1]).css(C,"100%"),e.attachHandleValues&&(angular.element(q[0]).css(C,"0%"),angular.element(q[1]).css(C,"100%")),angular.element(F).css(C,"0%").css(P,"0%")):(angular.element(E[0]).css(C,t+"%"),angular.element(E[1]).css(C,l+"%"),e.attachHandleValues&&(angular.element(q[0]).css(C,n+"%"),angular.element(q[1]).css(C,i+"%"),angular.element(q[1]).css(P,"auto")),angular.element(F).css(C,t+"%").css(P,100-l+"%"),t>95&&angular.element(E[0]).css("z-index",3))}}function $(a){var i=E[a];i.bind(r+"X",function(l){var s=(0===a?"ngrs-handle-min":"ngrs-handle-max")+"-down",r=(0===a?p():M())-e.min,u=r/j*100,m=c(l),f=m,v=!1;angular.isFunction(e.onHandleDown)&&e.onHandleDown(),angular.element("body").bind("selectstart"+t,function(){return!1}),e.disabled||(z=!0,i.addClass("ngrs-down"),y.addClass("ngrs-focus "+s),angular.element("body").addClass("ngrs-touching"),n.bind(o,function(n){n.preventDefault();var t,l,s=c(n),r=e.step/j*100,o=((0===a?M():p())-e.min)/j*100;"x"!==s[0]&&(s[0]-=m[0],s[1]-=m[1],t=[f[0]!==s[0],f[1]!==s[1]],l=u+100*s[S]/(S?y.height():y.width()),l=g(l),e.preventEqualMinMax&&(0===r&&(r=1/j*100),0===a?o-=r:1===a&&(o+=r)),0===a?l=l>o?o:l:1===a&&(l=o>l?o:l),e.step>0&&100>l&&l>0&&(l=Math.round(l/r)*r),l>95&&0===a?i.css("z-index",3):i.css("z-index",""),t[S]&&l!=v&&(0===a?p(parseFloat(parseFloat(l*j/100+e.min).toFixed(e.decimalPlaces))):1===a&&M(parseFloat(parseFloat(l*j/100+e.min).toFixed(e.decimalPlaces))),e.$apply(),v=l),f=s)}).bind(d,function(){angular.isFunction(e.onHandleUp)&&e.onHandleUp(),n.off(o),n.off(d),angular.element("body").removeClass("ngrs-touching"),z=!1,i.removeClass("ngrs-down"),i.removeClass("ngrs-over"),y.removeClass("ngrs-focus "+s)}))}).on(u,function(){i.addClass("ngrs-over")}).on(m,function(){z||i.removeClass("ngrs-over")})}function V(n){throw e.disabled=!0,new Error("RangeSlider: "+n)}function D(e){i.warn(e)}var y=angular.element(s),E=[s.find(".ngrs-handle-min"),s.find(".ngrs-handle-max")],q=[s.find(".ngrs-value-min"),s.find(".ngrs-value-max")],F=s.find(".ngrs-join"),C="left",P="right",S=0,k=[0,0],j=0,z=!1;e.filteredModelMin=p(),e.filteredModelMax=M(),v.$observe("disabled",function(n){angular.isDefined(n)||(e.disabled=l.disabled),e.$watch("disabled",b)}),v.$observe("orientation",function(n){angular.isDefined(n)||(e.orientation=l.orientation);for(var a,i=e.orientation.split(" "),t=0,s=i.length;s>t;t++)i[t]="ngrs-"+i[t];a=i.join(" "),y.addClass(a),("vertical"===e.orientation||"vertical left"===e.orientation||"vertical right"===e.orientation)&&(C="top",P="bottom",S=1)}),v.$observe("step",function(n){angular.isDefined(n)||(e.step=l.step)}),v.$observe("decimalPlaces",function(n){angular.isDefined(n)||(e.decimalPlaces=l.decimalPlaces)}),v.$observe("showValues",function(n){angular.isDefined(n)?"false"===n?e.showValues=!1:e.showValues=!0:e.showValues=l.showValues}),v.$observe("pinHandle",function(n){angular.isDefined(n)&&("min"===n||"max"===n)?e.pinHandle=n:e.pinHandle=null,e.$watch("pinHandle",x)}),v.$observe("preventEqualMinMax",function(n){angular.isDefined(n)?"false"===n?e.preventEqualMinMax=!1:e.preventEqualMinMax=!0:e.preventEqualMinMax=l.preventEqualMinMax}),v.$observe("attachHandleValues",function(n){angular.isDefined(n)?"true"===n||""===n?(e.attachHandleValues=!0,s.find(".ngrs-value-runner").addClass("ngrs-attached-handles")):e.attachHandleValues=!1:e.attachHandleValues=l.attachHandleValues}),e.$watch("min",w),e.$watch("max",w),e.$watch(function(){return p()},H),e.$watch(function(){return M()},H),e.$on("$destroy",function(){y.off(t),angular.element("body").off(t),n.off(t);for(var e=0,a=E.length;a>e;e++)E[e].off(t),E[e].off(t+"X")}),y.bind("selectstart"+t,function(e){return!1}).bind("click",function(e){e.stopPropagation()}),$(0),$(1)}}}]),window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}()}(); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..85b1699 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,40 @@ +var del = require('del'); +var gulp = require('gulp'); +var rename = require('gulp-rename'); +var uglify = require('gulp-uglify'); +var compass = require('gulp-compass'); +var minifyCss = require('gulp-minify-css'); +var autoprefixer = require('gulp-autoprefixer'); + +var SRC_DIRECTORY = './'; +var BUILD_DIRECTORY = 'dist/'; + +// Clean output directory +gulp.task('clean', del.bind( + null, [BUILD_DIRECTORY + '*'], { + dot: true + } +)); + +gulp.task('scss', function() { + return gulp.src(SRC_DIRECTORY + 'scss/angular.rangeSlider.scss') + .pipe(compass({ + config_file: './config.rb', + css: './', + sass: 'scss' + })) + .pipe(autoprefixer()) + .pipe(minifyCss()) + .pipe(rename('angular.rangeSlider.min.css')) + .pipe(gulp.dest(BUILD_DIRECTORY)); +}); + + +gulp.task('js', function() { + return gulp.src(SRC_DIRECTORY + 'angular.rangeSlider.js') + .pipe(uglify({ mangle: true })) + .pipe(rename('angular.rangeSlider.min.js')) + .pipe(gulp.dest(BUILD_DIRECTORY)); +}); + +gulp.task('default', ['clean', 'scss', 'js']); diff --git a/package.json b/package.json new file mode 100644 index 0000000..d45d2a8 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "angular-rangeslider", + "version": "0.0.14", + "description": "Simple directive that creates a range slider for Angular, styled to match Bootstrap-styled form elements.", + "main": "angular.rangeSlider.min.js", + "scripts": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/danielcrisp/angular-rangeslider.git" + }, + "author": "danielcrisp", + "license": "MIT", + "bugs": { + "url": "https://github.com/danielcrisp/angular-rangeslider/issues" + }, + "homepage": "https://github.com/danielcrisp/angular-rangeslider#readme", + "devDependencies": { + "del": "^2.0.2", + "gulp": "^3.9.0", + "gulp-autoprefixer": "^3.0.1", + "gulp-compass": "^2.1.0", + "gulp-minify-css": "^1.2.1", + "gulp-rename": "^1.2.2", + "gulp-uglify": "^1.4.1" + } +} From c7975d943c3888570bd48957182413e743520c8b Mon Sep 17 00:00:00 2001 From: Michael McDermott Date: Wed, 16 Sep 2015 12:13:17 -0400 Subject: [PATCH 2/2] Fixed author name from danielcrisp to Daniel Crisp --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d45d2a8..23f3623 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "type": "git", "url": "git+https://github.com/danielcrisp/angular-rangeslider.git" }, - "author": "danielcrisp", + "author": "Daniel Crisp", "license": "MIT", "bugs": { "url": "https://github.com/danielcrisp/angular-rangeslider/issues"