diff --git a/Gruntfile.js b/Gruntfile.js index 6d31392..c81ee0d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -42,7 +42,7 @@ module.exports = function(grunt) { } }); - grunt.loadNpmTasks('grunt-sass'); + grunt.loadNpmTasks('grunt-contrib-sass'); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-contrib-cssmin'); diff --git a/dist/angular-progress-button-styles.css b/dist/angular-progress-button-styles.css index a84d716..cfb751d 100644 --- a/dist/angular-progress-button-styles.css +++ b/dist/angular-progress-button-styles.css @@ -1,387 +1,390 @@ -/* Checkmark for success */ -/* Checkmark for error */ -/* General styles for all types of buttons */ -.progress-button { - position: relative; - display: inline-block; - padding: 0 60px; - outline: none; - border: none; - background: #1d9650; - color: #FFF; - text-transform: uppercase; - letter-spacing: 1px; - font-size: 1em; - line-height: 4; - cursor: pointer; - /* Necessary 3d styles for buttons with perspective */ } - .progress-button *, .progress-button *:after, .progress-button *::before { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - .progress-button .notransition { - -webkit-transition: none !important; - transition: none !important; } - .progress-button[disabled], .progress-button.disabled { - cursor: default; } - .progress-button .content { - position: relative; - display: block; } - .progress-button .content:before, .progress-button .content:after { - position: absolute; - right: 20px; - color: #0e7138; - font-family: "FontAwesome"; - opacity: 0; - -webkit-transition: opacity 0.3s 0.3s; - transition: opacity 0.3s 0.3s; } - .progress-button .content:before { - content: "\f00c"; } - .progress-button .content:after { - content: "\f05e"; } - .progress-button.state-success .content:before, .progress-button.state-error .content:after { - opacity: 1; } - .progress-button .progress { - background: #148544; } - .progress-button .progress-inner { - position: absolute; - left: 0; - background: #0e7138; } - .progress-button-dir-horizontal .progress-inner { - top: 0; - width: 0; - height: 100%; - -webkit-transition: width 0.3s, opacity 0.3s; - transition: width 0.3s, opacity 0.3s; } - .progress-button-dir-vertical .progress-inner { - bottom: 0; - width: 100%; - height: 0; - -webkit-transition: height 0.3s, opacity 0.3s; - transition: height 0.3s, opacity 0.3s; } - .progress-button-perspective { - position: relative; - display: inline-block; - padding: 0; - background: transparent; - -webkit-perspective: 900px; - perspective: 900px; } - .progress-button-perspective .content, .progress-button-perspective .progress { - outline: 1px solid rgba(0, 0, 0, 0); - /* Smoothen jagged edges in FF */ } - .progress-button-perspective .progress-wrap { - display: block; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; - -webkit-transform-style: preserve-3d; - transform-style: preserve-3d; } - .progress-button-perspective .content { - padding: 0 60px; - background: #1d9650; } - -.progress-button-style-fill.progress-button-dir-horizontal { - overflow: hidden; } - .progress-button-style-fill.progress-button-dir-horizontal .content { - z-index: 10; - -webkit-transition: -webkit-transform 0.3s; - transition: transform 0.3s; } - .progress-button-style-fill.progress-button-dir-horizontal .content:before, .progress-button-style-fill.progress-button-dir-horizontal .content:after { - top: 100%; - right: auto; - left: 50%; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); } - .progress-button-style-fill.progress-button-dir-horizontal.state-success .content, .progress-button-style-fill.progress-button-dir-horizontal.state-error .content { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); } - -.progress-button-style-fill.progress-button-dir-vertical { - overflow: hidden; } - .progress-button-style-fill.progress-button-dir-vertical .content { - z-index: 10; - -webkit-transition: -webkit-transform 0.3s; - transition: transform 0.3s; } - .progress-button-style-fill.progress-button-dir-vertical .content:before, .progress-button-style-fill.progress-button-dir-vertical .content:after { - top: 100%; - right: auto; - left: 50%; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); } - .progress-button-style-fill.progress-button-dir-vertical.state-success .content, .progress-button-style-fill.progress-button-dir-vertical.state-error .content { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); } - -.progress-button-style-shrink { - overflow: hidden; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; } -.progress-button-style-shrink.progress-button-dir-horizontal .content { - -webkit-transition: opacity 0.3s, -webkit-transform 0.3s; - transition: opacity 0.3s, transform 0.3s; } - .progress-button-style-shrink.progress-button-dir-horizontal .content:before, .progress-button-style-shrink.progress-button-dir-horizontal .content:after { - top: 100%; - right: auto; - left: 50%; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); } -.progress-button-style-shrink.progress-button-dir-horizontal.state-loading { - -webkit-transform: scaleY(0.3); - transform: scaleY(0.3); } - .progress-button-style-shrink.progress-button-dir-horizontal.state-loading .content { - opacity: 0; } -.progress-button-style-shrink.progress-button-dir-horizontal.state-error .content, .progress-button-style-shrink.progress-button-dir-horizontal.state-success .content { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); } - -.progress-button-style-shrink { - overflow: hidden; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; } -.progress-button-style-shrink.progress-button-dir-vertical .content { - -webkit-transition: opacity 0.3s, -webkit-transform 0.3s; - transition: opacity 0.3s, transform 0.3s; } - .progress-button-style-shrink.progress-button-dir-vertical .content:before, .progress-button-style-shrink.progress-button-dir-vertical .content:after { - top: 100%; - right: auto; - left: 50%; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); } -.progress-button-style-shrink.progress-button-dir-vertical.state-loading { - -webkit-transform: scaleX(0.1); - transform: scaleX(0.1); } - .progress-button-style-shrink.progress-button-dir-vertical.state-loading .content { - opacity: 0; } -.progress-button-style-shrink.progress-button-dir-vertical.state-error .content, .progress-button-style-shrink.progress-button-dir-vertical.state-success .content { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); } - -.progress-button-style-rotate-angle-bottom .progress { - position: absolute; - top: 100%; - left: 0; - width: 100%; - height: 20px; - box-shadow: 0 -1px 0 #148544; - /* fix the blurriness that causes a gap */ - -webkit-transform: rotateX(-90deg); - transform: rotateX(-90deg); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; } -.progress-button-style-rotate-angle-bottom.state-loading .progress-wrap { - -webkit-transform: rotateX(45deg); - transform: rotateX(45deg); } -.progress-button-style-rotate-angle-top .progress { - position: absolute; - bottom: 100%; - left: 0; - width: 100%; - height: 20px; - box-shadow: 0 1px 0 #148544; - /* fix the blurriness that causes a gap */ - -webkit-transform: rotateX(90deg); - transform: rotateX(90deg); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; } -.progress-button-style-rotate-angle-top.state-loading .progress-wrap { - -webkit-transform: rotateX(-45deg); - transform: rotateX(-45deg); } -.progress-button-style-rotate-angle-left .progress { - position: absolute; - top: 0; - right: 100%; - width: 20px; - height: 100%; - box-shadow: 1px 0 0 #148544; - /* fix the blurriness that causes a gap */ - -webkit-transform: rotateY(-90deg); - transform: rotateY(-90deg); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; } -.progress-button-style-rotate-angle-left.state-loading .progress-wrap { - -webkit-transform: rotateY(45deg); - transform: rotateY(45deg); } -.progress-button-style-rotate-angle-right .progress { - position: absolute; - top: 0; - left: 100%; - width: 20px; - height: 100%; - box-shadow: -1px 0 0 #148544; - /* fix the blurriness that causes a gap */ - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; } -.progress-button-style-rotate-angle-right.state-loading .progress-wrap { - -webkit-transform: rotateY(-45deg); - transform: rotateY(-45deg); } - -.progress-button-style-rotate-side-down .progress { - position: absolute; - top: 100%; - left: 0; - width: 100%; - height: 20px; - -webkit-transform: rotateX(-90deg); - transform: rotateX(-90deg); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } -.progress-button-style-rotate-side-down.state-loading .progress-wrap { - -webkit-transform: rotateX(90deg) translateZ(10px); - transform: rotateX(90deg) translateZ(10px); } -.progress-button-style-rotate-side-up .progress { - position: absolute; - bottom: 100%; - left: 0; - width: 100%; - height: 20px; - -webkit-transform: rotateX(90deg); - transform: rotateX(90deg); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } -.progress-button-style-rotate-side-up.state-loading .progress-wrap { - -webkit-transform: rotateX(-90deg) translateZ(10px); - transform: rotateX(-90deg) translateZ(10px); } -.progress-button-style-rotate-side-left .progress-wrap { - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; } -.progress-button-style-rotate-side-left .progress { - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 100%; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; } -.progress-button-style-rotate-side-left.state-loading .progress-wrap { - -webkit-transform: translateX(50%) rotateY(90deg) translateZ(10px); - transform: translateX(50%) rotateY(90deg) translateZ(10px); } -.progress-button-style-rotate-side-right .progress-wrap { - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; } -.progress-button-style-rotate-side-right .progress { - position: absolute; - top: 0; - left: 100%; - width: 20px; - height: 100%; - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; } -.progress-button-style-rotate-side-right.state-loading .progress-wrap { - -webkit-transform: translateX(-50%) rotateY(-90deg) translateZ(10px); - transform: translateX(-50%) rotateY(-90deg) translateZ(10px); } - -.progress-button-style-rotate-back .progress-wrap { - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; } -.progress-button-style-rotate-back .content { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } -.progress-button-style-rotate-back .progress { - position: absolute; - top: 100%; - left: 0; - width: 100%; - height: 100%; - -webkit-transform: rotateX(-180deg); - transform: rotateX(-180deg); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } -.progress-button-style-rotate-back.state-loading .progress-wrap { - -webkit-transform: rotateX(180deg) scaleX(0.6) scaleY(0.3); - transform: rotateX(180deg) scaleX(0.6) scaleY(0.3); } - -/* flip open 3d */ -/* ====================== */ -.progress-button-style-flip-open .content { - z-index: 10; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; } -.progress-button-style-flip-open .progress { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } -.progress-button-style-flip-open.state-loading .content { - -webkit-transform: rotateX(45deg); - transform: rotateX(45deg); } - -.progress-button-style-slide-down { - padding: 0; - overflow: visible; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - .progress-button-style-slide-down .content { - z-index: 10; - padding: 0 60px; - background: #1d9650; } - .progress-button-style-slide-down .progress { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; } - .progress-button-style-slide-down.state-loading .progress { - -webkit-transform: translateY(10px); - transform: translateY(10px); } - -.progress-button-style-move-up { - padding: 0; - overflow: visible; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; } - .progress-button-style-move-up .content { - z-index: 10; - padding: 0 60px; - background: #1d9650; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; } - .progress-button-style-move-up .progress { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - .progress-button-style-move-up.state-loading .content { - -webkit-transform: translateY(-10px); - transform: translateY(-10px); } - -.progress-button-style-top-line .progress-inner { - height: 3px; } -.progress-button-style-top-line .content:before, .progress-button-style-top-line .content:after { - right: auto; - left: 100%; - margin-left: 25px; } - -.progress-button-style-lateral-lines .progress-inner { - width: 100%; - border-right: 3px solid #0e7138; - border-left: 3px solid #0e7138; - background: transparent; } -.progress-button-style-lateral-lines .content:before, .progress-button-style-lateral-lines .content:after { - right: auto; - left: 100%; - margin-left: 25px; } +@charset "UTF-8"; +/* Checkmark for success */ +/* Checkmark for error */ +/* General styles for all types of buttons */ +.progress-button { + position: relative; + display: inline-block; + padding: 0 60px; + outline: none; + border: none; + background: #1d9650; + color: #FFF; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 1em; + line-height: 4; + cursor: pointer; + /* Necessary 3d styles for buttons with perspective */ } + .progress-button *, .progress-button *:after, .progress-button *::before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + .progress-button .notransition { + -webkit-transition: none !important; + transition: none !important; } + .progress-button[disabled], .progress-button.disabled { + cursor: default; } + .progress-button .content { + position: relative; + display: block; } + .progress-button .content:before, .progress-button .content:after { + position: absolute; + right: 20px; + color: #0e7138; + font-family: "FontAwesome"; + opacity: 0; + -webkit-transition: opacity 0.3s 0.3s; + transition: opacity 0.3s 0.3s; } + .progress-button .content:before { + content: ""; } + .progress-button .content:after { + content: ""; } + .progress-button.state-success .content:before, .progress-button.state-error .content:after { + opacity: 1; } + .progress-button .progress { + background: #148544; } + .progress-button .progress-inner { + position: absolute; + left: 0; + background: #0e7138; } + .progress-button-dir-horizontal .progress-inner { + top: 0; + width: 0; + height: 100%; + -webkit-transition: width 0.3s, opacity 0.3s; + transition: width 0.3s, opacity 0.3s; } + .progress-button-dir-vertical .progress-inner { + bottom: 0; + width: 100%; + height: 0; + -webkit-transition: height 0.3s, opacity 0.3s; + transition: height 0.3s, opacity 0.3s; } + .progress-button-perspective { + position: relative; + display: inline-block; + padding: 0; + background: transparent; + -webkit-perspective: 900px; + perspective: 900px; } + .progress-button-perspective .content, .progress-button-perspective .progress { + outline: 1px solid transparent; + /* Smoothen jagged edges in FF */ } + .progress-button-perspective .progress-wrap { + display: block; + -webkit-transition: -webkit-transform 0.2s; + transition: transform 0.2s; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + .progress-button-perspective .content { + padding: 0 60px; + background: #1d9650; } + +.progress-button-style-fill.progress-button-dir-horizontal { + overflow: hidden; } + .progress-button-style-fill.progress-button-dir-horizontal .content { + z-index: 10; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; } + .progress-button-style-fill.progress-button-dir-horizontal .content:before, .progress-button-style-fill.progress-button-dir-horizontal .content:after { + top: 100%; + right: auto; + left: 50%; + -webkit-transition: opacity 0.3s; + transition: opacity 0.3s; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); } + .progress-button-style-fill.progress-button-dir-horizontal.state-success .content, .progress-button-style-fill.progress-button-dir-horizontal.state-error .content { + -webkit-transform: translateY(-100%); + transform: translateY(-100%); } + +.progress-button-style-fill.progress-button-dir-vertical { + overflow: hidden; } + .progress-button-style-fill.progress-button-dir-vertical .content { + z-index: 10; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; } + .progress-button-style-fill.progress-button-dir-vertical .content:before, .progress-button-style-fill.progress-button-dir-vertical .content:after { + top: 100%; + right: auto; + left: 50%; + -webkit-transition: opacity 0.3s; + transition: opacity 0.3s; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); } + .progress-button-style-fill.progress-button-dir-vertical.state-success .content, .progress-button-style-fill.progress-button-dir-vertical.state-error .content { + -webkit-transform: translateY(-100%); + transform: translateY(-100%); } + +.progress-button-style-shrink { + overflow: hidden; + -webkit-transition: -webkit-transform 0.2s; + transition: transform 0.2s; } +.progress-button-style-shrink.progress-button-dir-horizontal .content { + -webkit-transition: opacity 0.3s, -webkit-transform 0.3s; + transition: opacity 0.3s, transform 0.3s; } + .progress-button-style-shrink.progress-button-dir-horizontal .content:before, .progress-button-style-shrink.progress-button-dir-horizontal .content:after { + top: 100%; + right: auto; + left: 50%; + -webkit-transition: opacity 0.3s; + transition: opacity 0.3s; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); } +.progress-button-style-shrink.progress-button-dir-horizontal.state-loading { + -webkit-transform: scaleY(0.3); + transform: scaleY(0.3); } + .progress-button-style-shrink.progress-button-dir-horizontal.state-loading .content { + opacity: 0; } +.progress-button-style-shrink.progress-button-dir-horizontal.state-error .content, .progress-button-style-shrink.progress-button-dir-horizontal.state-success .content { + -webkit-transform: translateY(-100%); + transform: translateY(-100%); } + +.progress-button-style-shrink { + overflow: hidden; + -webkit-transition: -webkit-transform 0.2s; + transition: transform 0.2s; } +.progress-button-style-shrink.progress-button-dir-vertical .content { + -webkit-transition: opacity 0.3s, -webkit-transform 0.3s; + transition: opacity 0.3s, transform 0.3s; } + .progress-button-style-shrink.progress-button-dir-vertical .content:before, .progress-button-style-shrink.progress-button-dir-vertical .content:after { + top: 100%; + right: auto; + left: 50%; + -webkit-transition: opacity 0.3s; + transition: opacity 0.3s; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); } +.progress-button-style-shrink.progress-button-dir-vertical.state-loading { + -webkit-transform: scaleX(0.1); + transform: scaleX(0.1); } + .progress-button-style-shrink.progress-button-dir-vertical.state-loading .content { + opacity: 0; } +.progress-button-style-shrink.progress-button-dir-vertical.state-error .content, .progress-button-style-shrink.progress-button-dir-vertical.state-success .content { + -webkit-transform: translateY(-100%); + transform: translateY(-100%); } + +.progress-button-style-rotate-angle-bottom .progress { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 20px; + box-shadow: 0 -1px 0 #148544; + /* fix the blurriness that causes a gap */ + -webkit-transform: rotateX(-90deg); + transform: rotateX(-90deg); + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; } +.progress-button-style-rotate-angle-bottom.state-loading .progress-wrap { + -webkit-transform: rotateX(45deg); + transform: rotateX(45deg); } +.progress-button-style-rotate-angle-top .progress { + position: absolute; + bottom: 100%; + left: 0; + width: 100%; + height: 20px; + box-shadow: 0 1px 0 #148544; + /* fix the blurriness that causes a gap */ + -webkit-transform: rotateX(90deg); + transform: rotateX(90deg); + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; } +.progress-button-style-rotate-angle-top.state-loading .progress-wrap { + -webkit-transform: rotateX(-45deg); + transform: rotateX(-45deg); } +.progress-button-style-rotate-angle-left .progress { + position: absolute; + top: 0; + right: 100%; + width: 20px; + height: 100%; + box-shadow: 1px 0 0 #148544; + /* fix the blurriness that causes a gap */ + -webkit-transform: rotateY(-90deg); + transform: rotateY(-90deg); + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; } +.progress-button-style-rotate-angle-left.state-loading .progress-wrap { + -webkit-transform: rotateY(45deg); + transform: rotateY(45deg); } +.progress-button-style-rotate-angle-right .progress { + position: absolute; + top: 0; + left: 100%; + width: 20px; + height: 100%; + box-shadow: -1px 0 0 #148544; + /* fix the blurriness that causes a gap */ + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-transform-origin: 0% 50%; + transform-origin: 0% 50%; } +.progress-button-style-rotate-angle-right.state-loading .progress-wrap { + -webkit-transform: rotateY(-45deg); + transform: rotateY(-45deg); } + +.progress-button-style-rotate-side-down .progress { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 20px; + -webkit-transform: rotateX(-90deg); + transform: rotateX(-90deg); + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } +.progress-button-style-rotate-side-down.state-loading .progress-wrap { + -webkit-transform: rotateX(90deg) translateZ(10px); + transform: rotateX(90deg) translateZ(10px); } +.progress-button-style-rotate-side-up .progress { + position: absolute; + bottom: 100%; + left: 0; + width: 100%; + height: 20px; + -webkit-transform: rotateX(90deg); + transform: rotateX(90deg); + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } +.progress-button-style-rotate-side-up.state-loading .progress-wrap { + -webkit-transform: rotateX(-90deg) translateZ(10px); + transform: rotateX(-90deg) translateZ(10px); } +.progress-button-style-rotate-side-left .progress-wrap { + -webkit-transform-origin: 0 50%; + transform-origin: 0 50%; } +.progress-button-style-rotate-side-left .progress { + position: absolute; + top: 0; + left: 0; + width: 20px; + height: 100%; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-transform-origin: 0 50%; + transform-origin: 0 50%; } +.progress-button-style-rotate-side-left.state-loading .progress-wrap { + -webkit-transform: translateX(50%) rotateY(90deg) translateZ(10px); + transform: translateX(50%) rotateY(90deg) translateZ(10px); } +.progress-button-style-rotate-side-right .progress-wrap { + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; } +.progress-button-style-rotate-side-right .progress { + position: absolute; + top: 0; + left: 100%; + width: 20px; + height: 100%; + -webkit-transform: rotateY(90deg); + transform: rotateY(90deg); + -webkit-transform-origin: 0 50%; + transform-origin: 0 50%; } +.progress-button-style-rotate-side-right.state-loading .progress-wrap { + -webkit-transform: translateX(-50%) rotateY(-90deg) translateZ(10px); + transform: translateX(-50%) rotateY(-90deg) translateZ(10px); } + +.progress-button-style-rotate-back .progress-wrap { + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out; } +.progress-button-style-rotate-back .content { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } +.progress-button-style-rotate-back .progress { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 100%; + -webkit-transform: rotateX(-180deg); + transform: rotateX(-180deg); + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } +.progress-button-style-rotate-back.state-loading .progress-wrap { + -webkit-transform: rotateX(180deg) scaleX(0.6) scaleY(0.3); + transform: rotateX(180deg) scaleX(0.6) scaleY(0.3); } + +/* flip open 3d */ +/* ====================== */ +.progress-button-style-flip-open .content { + z-index: 10; + -webkit-transition: -webkit-transform 0.2s; + transition: transform 0.2s; + -webkit-transform-origin: 50% 0; + transform-origin: 50% 0; } +.progress-button-style-flip-open .progress { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } +.progress-button-style-flip-open.state-loading .content { + -webkit-transform: rotateX(45deg); + transform: rotateX(45deg); } + +.progress-button-style-slide-down { + padding: 0; + overflow: visible; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + .progress-button-style-slide-down .content { + z-index: 10; + padding: 0 60px; + background: #1d9650; } + .progress-button-style-slide-down .progress { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + -webkit-transition: -webkit-transform 0.2s; + transition: transform 0.2s; } + .progress-button-style-slide-down.state-loading .progress { + -webkit-transform: translateY(10px); + transform: translateY(10px); } + +.progress-button-style-move-up { + padding: 0; + overflow: visible; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + .progress-button-style-move-up .content { + z-index: 10; + padding: 0 60px; + background: #1d9650; + -webkit-transition: -webkit-transform 0.2s; + transition: transform 0.2s; } + .progress-button-style-move-up .progress { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + .progress-button-style-move-up.state-loading .content { + -webkit-transform: translateY(-10px); + transform: translateY(-10px); } + +.progress-button-style-top-line .progress-inner { + height: 3px; } +.progress-button-style-top-line .content:before, .progress-button-style-top-line .content:after { + right: auto; + left: 100%; + margin-left: 25px; } + +.progress-button-style-lateral-lines .progress-inner { + width: 100%; + border-right: 3px solid #0e7138; + border-left: 3px solid #0e7138; + background: transparent; } +.progress-button-style-lateral-lines .content:before, .progress-button-style-lateral-lines .content:after { + right: auto; + left: 100%; + margin-left: 25px; } + +/*# sourceMappingURL=angular-progress-button-styles.css.map */ diff --git a/dist/angular-progress-button-styles.css.map b/dist/angular-progress-button-styles.css.map new file mode 100644 index 0000000..85e2061 --- /dev/null +++ b/dist/angular-progress-button-styles.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";;;;AACA,gBAAiB;EACb,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,MAAM;EACf,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,UAAU,ECHa,OAAO;EDI9B,KAAK,ECHa,IAAI;EDItB,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,GAAG;EACnB,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,MAAM,EAAE,OAAO;;EAEf,wEAAsB;IAClB,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,UAAU;EAG1B,8BAAc;IACV,kBAAkB,EAAE,eAAe;IACnC,UAAU,EAAE,eAAe;EAG/B,qDAAwB;IACpB,MAAM,EAAE,OAAO;EAGnB,yBAAS;IACL,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,KAAK;IACd,iEAAkB;MACd,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI;MACX,KAAK,ECnCU,OAAO;MDoCtB,WAAW,ECrCQ,aAAa;MDsChC,OAAO,EAAE,CAAC;MACV,kBAAkB,EAAE,iBAAiB;MACrC,UAAU,EAAE,iBAAiB;IAGjC,gCAAS;MACL,OAAO,EC1CS,GAAO;ID6C3B,+BAAQ;MACJ,OAAO,EC7CO,GAAO;EDiD7B,2FAA8D;IAC1D,OAAO,EAAE,CAAC;EAGd,0BAAU;IACN,UAAU,ECnDY,OAAO;EDsDjC,gCAAgB;IACZ,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC;IACP,UAAU,ECxDiB,OAAO;ED4DlC,+CAAgB;IACZ,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,wBAAwB;IAC5C,UAAU,EAAE,wBAAwB;EAKxC,6CAAgB;IACZ,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,CAAC;IACT,kBAAkB,EAAE,yBAAyB;IAC7C,UAAU,EAAE,yBAAyB;EAK7C,4BAAc;IACV,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,WAAW;IACvB,mBAAmB,EAAE,KAAK;IAC1B,WAAW,EAAE,KAAK;IAElB,6EAAoB;MAChB,OAAO,EAAE,qBAAuB;;IAGpC,2CAAe;MACX,OAAO,EAAE,KAAK;MACd,kBAAkB,EAAE,sBAAsB;MAC1C,UAAU,EAAE,cAAc;MAC1B,uBAAuB,EAAE,WAAW;MACpC,eAAe,EAAE,WAAW;IAGhC,qCAAS;MACL,OAAO,EAAE,MAAM;MACf,UAAU,ECzGK,OAAO;;ACH9B,0DAA4C;EACxC,QAAQ,EAAE,MAAM;EAEhB,mEAAS;IACL,OAAO,EAAE,EAAE;IACX,kBAAkB,EAAE,sBAAsB;IAC1C,UAAU,EAAE,cAAc;IAE1B,qJAAkB;MACd,GAAG,EAAE,IAAI;MACT,KAAK,EAAE,IAAI;MACX,IAAI,EAAE,GAAG;MACT,kBAAkB,EAAE,YAAY;MAChC,UAAU,EAAE,YAAY;MACxB,iBAAiB,EAAE,gBAAgB;MACnC,SAAS,EAAE,gBAAgB;EAK/B,kKAAS;IACL,iBAAiB,EAAE,iBAAiB;IACpC,SAAS,EAAE,iBAAiB;;ACtBxC,wDAA0C;EACtC,QAAQ,EAAE,MAAM;EAChB,iEAAS;IACL,OAAO,EAAE,EAAE;IACX,kBAAkB,EAAE,sBAAsB;IAC1C,UAAU,EAAE,cAAc;IAE1B,iJAAkB;MACd,GAAG,EAAE,IAAI;MACT,KAAK,EAAE,IAAI;MACX,IAAI,EAAE,GAAG;MACT,kBAAkB,EAAE,YAAY;MAChC,UAAU,EAAE,YAAY;MACxB,iBAAiB,EAAE,gBAAgB;MACnC,SAAS,EAAE,gBAAgB;EAK/B,8JAAS;IACL,iBAAiB,EAAE,iBAAiB;IACpC,SAAS,EAAE,iBAAiB;;ACrBxC,6BAAe;EACX,QAAQ,EAAE,MAAM;EAChB,kBAAkB,EAAE,sBAAsB;EAC1C,UAAU,EAAE,cAAc;AAI1B,qEAAS;EACL,kBAAkB,EAAE,oCAAoC;EACxD,UAAU,EAAE,4BAA4B;EAExC,yJAAkB;IACd,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,GAAG;IACT,kBAAkB,EAAE,YAAY;IAChC,UAAU,EAAE,YAAY;IACxB,iBAAiB,EAAE,gBAAgB;IACnC,SAAS,EAAE,gBAAgB;AAInC,0EAAgB;EACZ,iBAAiB,EAAE,WAAW;EAC9B,SAAS,EAAE,WAAW;EACtB,mFAAS;IACL,OAAO,EAAE,CAAC;AAKd,sKAAS;EACL,iBAAiB,EAAE,iBAAiB;EACpC,SAAS,EAAE,iBAAiB;;ACjCxC,6BAAe;EACX,QAAQ,EAAE,MAAM;EAChB,kBAAkB,EAAE,sBAAsB;EAC1C,UAAU,EAAE,cAAc;AAI1B,mEAAS;EACL,kBAAkB,EAAE,oCAAoC;EACxD,UAAU,EAAE,4BAA4B;EAExC,qJAAkB;IACd,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,GAAG;IACT,kBAAkB,EAAE,YAAY;IAChC,UAAU,EAAE,YAAY;IACxB,iBAAiB,EAAE,gBAAgB;IACnC,SAAS,EAAE,gBAAgB;AAInC,wEAAgB;EACZ,iBAAiB,EAAE,WAAW;EAC9B,SAAS,EAAE,WAAW;EACtB,iFAAS;IACL,OAAO,EAAE,CAAC;AAKd,kKAAS;EACL,iBAAiB,EAAE,iBAAiB;EACpC,SAAS,EAAE,iBAAiB;;AChCpC,oDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,gBAAgB;;EAC5B,iBAAiB,EAAE,eAAe;EAClC,SAAS,EAAE,eAAe;EAC1B,wBAAwB,EAAE,MAAM;EAChC,gBAAgB,EAAE,MAAM;AAG5B,uEAA+B;EAC3B,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;AAK7B,iDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,eAAe;;EAC3B,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;EACzB,wBAAwB,EAAE,QAAQ;EAClC,gBAAgB,EAAE,QAAQ;AAG9B,oEAA+B;EAC3B,iBAAiB,EAAE,eAAe;EAClC,SAAS,EAAE,eAAe;AAK9B,kDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,eAAe;;EAC3B,iBAAiB,EAAE,eAAe;EAClC,SAAS,EAAE,eAAe;EAC1B,wBAAwB,EAAE,QAAQ;EAClC,gBAAgB,EAAE,QAAQ;AAG9B,qEAA+B;EAC3B,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;AAK7B,mDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,gBAAgB;;EAC5B,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;EACzB,wBAAwB,EAAE,MAAM;EAChC,gBAAgB,EAAE,MAAM;AAG5B,sEAA+B;EAC3B,iBAAiB,EAAE,eAAe;EAClC,SAAS,EAAE,eAAe;;AC3E9B,iDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,iBAAiB,EAAE,eAAe;EAClC,SAAS,EAAE,eAAe;EAC1B,wBAAwB,EAAE,MAAM;EAChC,gBAAgB,EAAE,MAAM;EACxB,2BAA2B,EAAE,MAAM;EACnC,mBAAmB,EAAE,MAAM;AAE/B,oEAA+B;EAC3B,iBAAiB,EAAE,+BAA+B;EAClD,SAAS,EAAE,+BAA+B;AAK9C,+CAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;EACzB,wBAAwB,EAAE,QAAQ;EAClC,gBAAgB,EAAE,QAAQ;EAC1B,2BAA2B,EAAE,MAAM;EACnC,mBAAmB,EAAE,MAAM;AAG/B,kEAA+B;EAC3B,iBAAiB,EAAE,gCAAgC;EACnD,SAAS,EAAE,gCAAgC;AAK/C,sDAAe;EACX,wBAAwB,EAAE,KAAK;EAC/B,gBAAgB,EAAE,KAAK;AAG3B,iDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;EACzB,wBAAwB,EAAE,KAAK;EAC/B,gBAAgB,EAAE,KAAK;AAG3B,oEAA+B;EAC3B,iBAAiB,EAAE,+CAA+C;EAClE,SAAS,EAAE,+CAA+C;AAK9D,uDAAe;EACX,wBAAwB,EAAE,QAAQ;EAClC,gBAAgB,EAAE,QAAQ;AAG9B,kDAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;EACzB,wBAAwB,EAAE,KAAK;EAC/B,gBAAgB,EAAE,KAAK;AAG3B,qEAA+B;EAC3B,iBAAiB,EAAE,iDAAiD;EACpE,SAAS,EAAE,iDAAiD;;ACpFhE,iDAAe;EACX,kCAAkC,EAAE,QAAQ;EAC5C,0BAA0B,EAAE,QAAQ;AAGxC,2CAAS;EACL,2BAA2B,EAAE,MAAM;EACnC,mBAAmB,EAAE,MAAM;AAG/B,4CAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,iBAAiB,EAAE,gBAAgB;EACnC,SAAS,EAAE,gBAAgB;EAC3B,wBAAwB,EAAE,MAAM;EAChC,gBAAgB,EAAE,MAAM;EACxB,2BAA2B,EAAE,MAAM;EACnC,mBAAmB,EAAE,MAAM;AAG/B,+DAA+B;EAC3B,iBAAiB,EAAE,uCAAuC;EAC1D,SAAS,EAAE,uCAAuC;;;;ACvB1D,yCAAS;EACL,OAAO,EAAE,EAAE;EACX,kBAAkB,EAAE,sBAAsB;EAC1C,UAAU,EAAE,cAAc;EAC1B,wBAAwB,EAAE,KAAK;EAC/B,gBAAgB,EAAE,KAAK;AAG3B,0CAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;AAGhB,uDAAyB;EACrB,iBAAiB,EAAE,cAAc;EACjC,SAAS,EAAE,cAAc;;ACvBjC,iCAAkC;EAC9B,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,OAAO;EACjB,2BAA2B,EAAE,MAAM;EACnC,mBAAmB,EAAE,MAAM;EAE3B,0CAAS;IACL,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;EAGvB,2CAAU;IACN,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,sBAAsB;IAC1C,UAAU,EAAE,cAAc;EAG9B,yDAA0B;IACtB,iBAAiB,EAAE,gBAAgB;IACnC,SAAS,EAAE,gBAAgB;;ACxBnC,8BAA+B;EAC3B,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,OAAO;EACjB,2BAA2B,EAAE,MAAM;EACnC,mBAAmB,EAAE,MAAM;EAE3B,uCAAS;IACL,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;IACnB,kBAAkB,EAAE,sBAAsB;IAC1C,UAAU,EAAE,cAAc;EAG9B,wCAAU;IACN,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,qDAAyB;IACrB,iBAAiB,EAAE,iBAAiB;IACpC,SAAS,EAAE,iBAAiB;;ACvBhC,+CAAgB;EACZ,MAAM,EAAE,GAAG;AAIX,+FAAkB;EACd,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,IAAI;EACV,WAAW,EAAE,IAAI;;ACRzB,oDAAgB;EACZ,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,iBAAiB;EAC9B,UAAU,EAAE,WAAW;AAIvB,yGAAkB;EACd,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,IAAI;EACV,WAAW,EAAE,IAAI", +"sources": ["../sass/_progress-button.scss","../sass/_variables.scss","../sass/_fill-horizontal.scss","../sass/_fill-vertical.scss","../sass/_shrink-horizontal.scss","../sass/_shrink-vertical.scss","../sass/_rotate-angle.scss","../sass/_rotate-side.scss","../sass/_rotate-back.scss","../sass/_flip-open.scss","../sass/_slide-down.scss","../sass/_move-up.scss","../sass/_top-line.scss","../sass/_lateral-lines.scss"], +"names": [], +"file": "angular-progress-button-styles.css" +} diff --git a/dist/angular-progress-button-styles.js b/dist/angular-progress-button-styles.js index d9cf22c..f1f4df7 100644 --- a/dist/angular-progress-button-styles.js +++ b/dist/angular-progress-button-styles.js @@ -73,7 +73,8 @@ 'progressButton': '&', 'pbStyle': '@', 'pbDirection': '@', - 'pbProfile': '@' + 'pbProfile': '@', + 'pbValue': '@' }, template: '' + '' + @@ -105,32 +106,47 @@ }); $element.on('click', function() { - $scope.$apply(function() { - if ($scope.disabled) return; - $scope.disabled = true; - $element.addClass('state-loading'); - $scope.allowProgressTransition = true; - var interval = null; - $q.when($scope.progressButton()).then( - function success() { - setProgress(1); - interval && $interval.cancel(interval); - doStop(1); - }, - function error() { - interval && $interval.cancel(interval); - doStop(-1); - }, - function notify(arg) { - !$scope.pbRandomProgress && setProgress(arg); - } - ); - if ($scope.pbRandomProgress) { - interval = runProgressInterval(); - } - }); + $scope.$apply(_start); }); + $scope.$watch('pbValue', valueChangedExternally); + + function valueChangedExternally (newValue, oldValue) { + if ($scope.allowProgressTransition) + setProgress(newValue); + else if (newValue > 0 && newValue != 1) + _start(newValue); + } + function _start(startingValue) { + if ($scope.disabled) return; + $scope.disabled = true; + $element.addClass('state-loading'); + $scope.allowProgressTransition = true; + var interval = null; + + if (startingValue) { + setProgress(startingValue); + } + + $q.when($scope.progressButton()).then( + function success() { + setProgress(1); + interval && $interval.cancel(interval); + doStop(1); + }, + function error() { + interval && $interval.cancel(interval); + doStop(-1); + }, + function notify(arg) { + !$scope.pbRandomProgress && setProgress(arg); + } + ); + if ($scope.pbRandomProgress) { + interval = runProgressInterval(); + } + } + function _configure() { var profile = progressButtonConfig.getProfile($scope.pbProfile); diff --git a/dist/angular-progress-button-styles.min.css b/dist/angular-progress-button-styles.min.css index ab02f0f..99adda5 100644 --- a/dist/angular-progress-button-styles.min.css +++ b/dist/angular-progress-button-styles.min.css @@ -1 +1 @@ -.progress-button-style-fill.progress-button-dir-horizontal,.progress-button-style-fill.progress-button-dir-vertical{overflow:hidden}.progress-button{position:relative;display:inline-block;padding:0 60px;outline:0;border:none;background:#1d9650;color:#FFF;text-transform:uppercase;letter-spacing:1px;font-size:1em;line-height:4;cursor:pointer}.progress-button *,.progress-button ::before,.progress-button :after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.progress-button .notransition{-webkit-transition:none!important;transition:none!important}.progress-button.disabled,.progress-button[disabled]{cursor:default}.progress-button .content{position:relative;display:block}.progress-button .content:after,.progress-button .content:before{position:absolute;right:20px;color:#0e7138;font-family:FontAwesome;opacity:0;-webkit-transition:opacity .3s .3s;transition:opacity .3s .3s}.progress-button .content:before{content:"\f00c"}.progress-button .content:after{content:"\f05e"}.progress-button.state-error .content:after,.progress-button.state-success .content:before{opacity:1}.progress-button-style-shrink.progress-button-dir-horizontal.state-loading .content,.progress-button-style-shrink.progress-button-dir-vertical.state-loading .content{opacity:0}.progress-button .progress{background:#148544}.progress-button .progress-inner{position:absolute;left:0;background:#0e7138}.progress-button-dir-horizontal .progress-inner{top:0;width:0;height:100%;-webkit-transition:width .3s,opacity .3s;transition:width .3s,opacity .3s}.progress-button-dir-vertical .progress-inner{bottom:0;width:100%;height:0;-webkit-transition:height .3s,opacity .3s;transition:height .3s,opacity .3s}.progress-button-perspective{position:relative;display:inline-block;padding:0;background:0 0;-webkit-perspective:900px;perspective:900px}.progress-button-perspective .content,.progress-button-perspective .progress{outline:transparent solid 1px}.progress-button-perspective .progress-wrap{display:block;-webkit-transition:-webkit-transform .2s;transition:transform .2s;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.progress-button-perspective .content{padding:0 60px;background:#1d9650}.progress-button-style-fill.progress-button-dir-horizontal .content{z-index:10;-webkit-transition:-webkit-transform .3s;transition:transform .3s}.progress-button-style-fill.progress-button-dir-horizontal .content:after,.progress-button-style-fill.progress-button-dir-horizontal .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-fill.progress-button-dir-horizontal.state-error .content,.progress-button-style-fill.progress-button-dir-horizontal.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-fill.progress-button-dir-vertical .content{z-index:10;-webkit-transition:-webkit-transform .3s;transition:transform .3s}.progress-button-style-fill.progress-button-dir-vertical .content:after,.progress-button-style-fill.progress-button-dir-vertical .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-fill.progress-button-dir-vertical.state-error .content,.progress-button-style-fill.progress-button-dir-vertical.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-shrink.progress-button-dir-horizontal .content{-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s}.progress-button-style-shrink.progress-button-dir-horizontal .content:after,.progress-button-style-shrink.progress-button-dir-horizontal .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-shrink.progress-button-dir-horizontal.state-loading{-webkit-transform:scaleY(.3);transform:scaleY(.3)}.progress-button-style-shrink.progress-button-dir-horizontal.state-error .content,.progress-button-style-shrink.progress-button-dir-horizontal.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-shrink{overflow:hidden;-webkit-transition:-webkit-transform .2s;transition:transform .2s}.progress-button-style-shrink.progress-button-dir-vertical .content{-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s}.progress-button-style-shrink.progress-button-dir-vertical .content:after,.progress-button-style-shrink.progress-button-dir-vertical .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-shrink.progress-button-dir-vertical.state-loading{-webkit-transform:scaleX(.1);transform:scaleX(.1)}.progress-button-style-shrink.progress-button-dir-vertical.state-error .content,.progress-button-style-shrink.progress-button-dir-vertical.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-rotate-angle-bottom .progress{position:absolute;top:100%;left:0;width:100%;height:20px;box-shadow:0 -1px 0 #148544;-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:50% 0;transform-origin:50% 0}.progress-button-style-rotate-angle-bottom.state-loading .progress-wrap{-webkit-transform:rotateX(45deg);transform:rotateX(45deg)}.progress-button-style-rotate-angle-top .progress{position:absolute;bottom:100%;left:0;width:100%;height:20px;box-shadow:0 1px 0 #148544;-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.progress-button-style-rotate-angle-top.state-loading .progress-wrap{-webkit-transform:rotateX(-45deg);transform:rotateX(-45deg)}.progress-button-style-rotate-angle-left .progress{position:absolute;top:0;right:100%;width:20px;height:100%;box-shadow:1px 0 0 #148544;-webkit-transform:rotateY(-90deg);transform:rotateY(-90deg);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.progress-button-style-rotate-angle-left.state-loading .progress-wrap{-webkit-transform:rotateY(45deg);transform:rotateY(45deg)}.progress-button-style-rotate-angle-right .progress{position:absolute;top:0;left:100%;width:20px;height:100%;box-shadow:-1px 0 0 #148544;-webkit-transform:rotateY(90deg);transform:rotateY(90deg);-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-angle-right.state-loading .progress-wrap{-webkit-transform:rotateY(-45deg);transform:rotateY(-45deg)}.progress-button-style-rotate-side-down .progress{position:absolute;top:100%;left:0;width:100%;height:20px;-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-rotate-side-down.state-loading .progress-wrap{-webkit-transform:rotateX(90deg) translateZ(10px);transform:rotateX(90deg) translateZ(10px)}.progress-button-style-rotate-side-up .progress{position:absolute;bottom:100%;left:0;width:100%;height:20px;-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-rotate-side-up.state-loading .progress-wrap{-webkit-transform:rotateX(-90deg) translateZ(10px);transform:rotateX(-90deg) translateZ(10px)}.progress-button-style-rotate-side-left .progress-wrap{-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-side-left .progress{position:absolute;top:0;left:0;width:20px;height:100%;-webkit-transform:rotateY(90deg);transform:rotateY(90deg);-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-side-left.state-loading .progress-wrap{-webkit-transform:translateX(50%) rotateY(90deg) translateZ(10px);transform:translateX(50%) rotateY(90deg) translateZ(10px)}.progress-button-style-rotate-side-right .progress-wrap{-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.progress-button-style-rotate-side-right .progress{position:absolute;top:0;left:100%;width:20px;height:100%;-webkit-transform:rotateY(90deg);transform:rotateY(90deg);-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-side-right.state-loading .progress-wrap{-webkit-transform:translateX(-50%) rotateY(-90deg) translateZ(10px);transform:translateX(-50%) rotateY(-90deg) translateZ(10px)}.progress-button-style-rotate-back .progress-wrap{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.progress-button-style-rotate-back .content{-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-rotate-back .progress{position:absolute;top:100%;left:0;width:100%;height:100%;-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-flip-open .progress,.progress-button-style-move-up .progress,.progress-button-style-slide-down .progress{width:100%;position:absolute;top:0;left:0;height:100%}.progress-button-style-rotate-back.state-loading .progress-wrap{-webkit-transform:rotateX(180deg) scaleX(.6) scaleY(.3);transform:rotateX(180deg) scaleX(.6) scaleY(.3)}.progress-button-style-flip-open .content{z-index:10;-webkit-transition:-webkit-transform .2s;transition:transform .2s;-webkit-transform-origin:50% 0;transform-origin:50% 0}.progress-button-style-flip-open.state-loading .content{-webkit-transform:rotateX(45deg);transform:rotateX(45deg)}.progress-button-style-slide-down{padding:0;overflow:visible;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-slide-down .content{z-index:10;padding:0 60px;background:#1d9650}.progress-button-style-slide-down .progress{-webkit-transition:-webkit-transform .2s;transition:transform .2s}.progress-button-style-slide-down.state-loading .progress{-webkit-transform:translateY(10px);transform:translateY(10px)}.progress-button-style-move-up{padding:0;overflow:visible;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-move-up .content{z-index:10;padding:0 60px;background:#1d9650;-webkit-transition:-webkit-transform .2s;transition:transform .2s}.progress-button-style-lateral-lines .content:after,.progress-button-style-lateral-lines .content:before,.progress-button-style-top-line .content:after,.progress-button-style-top-line .content:before{right:auto;left:100%;margin-left:25px}.progress-button-style-move-up.state-loading .content{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.progress-button-style-top-line .progress-inner{height:3px}.progress-button-style-lateral-lines .progress-inner{width:100%;border-right:3px solid #0e7138;border-left:3px solid #0e7138;background:0 0} \ No newline at end of file +@charset "UTF-8";.progress-button-style-fill.progress-button-dir-horizontal,.progress-button-style-fill.progress-button-dir-vertical{overflow:hidden}.progress-button{position:relative;display:inline-block;padding:0 60px;outline:0;border:none;background:#1d9650;color:#FFF;text-transform:uppercase;letter-spacing:1px;font-size:1em;line-height:4;cursor:pointer}.progress-button *,.progress-button ::before,.progress-button :after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.progress-button .notransition{-webkit-transition:none!important;transition:none!important}.progress-button.disabled,.progress-button[disabled]{cursor:default}.progress-button .content{position:relative;display:block}.progress-button .content:after,.progress-button .content:before{position:absolute;right:20px;color:#0e7138;font-family:FontAwesome;opacity:0;-webkit-transition:opacity .3s .3s;transition:opacity .3s .3s}.progress-button .content:before{content:""}.progress-button .content:after{content:""}.progress-button.state-error .content:after,.progress-button.state-success .content:before{opacity:1}.progress-button-style-shrink.progress-button-dir-horizontal.state-loading .content,.progress-button-style-shrink.progress-button-dir-vertical.state-loading .content{opacity:0}.progress-button .progress{background:#148544}.progress-button .progress-inner{position:absolute;left:0;background:#0e7138}.progress-button-dir-horizontal .progress-inner{top:0;width:0;height:100%;-webkit-transition:width .3s,opacity .3s;transition:width .3s,opacity .3s}.progress-button-dir-vertical .progress-inner{bottom:0;width:100%;height:0;-webkit-transition:height .3s,opacity .3s;transition:height .3s,opacity .3s}.progress-button-perspective{position:relative;display:inline-block;padding:0;background:0 0;-webkit-perspective:900px;perspective:900px}.progress-button-perspective .content,.progress-button-perspective .progress{outline:transparent solid 1px}.progress-button-perspective .progress-wrap{display:block;-webkit-transition:-webkit-transform .2s;transition:transform .2s;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.progress-button-perspective .content{padding:0 60px;background:#1d9650}.progress-button-style-fill.progress-button-dir-horizontal .content{z-index:10;-webkit-transition:-webkit-transform .3s;transition:transform .3s}.progress-button-style-fill.progress-button-dir-horizontal .content:after,.progress-button-style-fill.progress-button-dir-horizontal .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-fill.progress-button-dir-horizontal.state-error .content,.progress-button-style-fill.progress-button-dir-horizontal.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-fill.progress-button-dir-vertical .content{z-index:10;-webkit-transition:-webkit-transform .3s;transition:transform .3s}.progress-button-style-fill.progress-button-dir-vertical .content:after,.progress-button-style-fill.progress-button-dir-vertical .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-fill.progress-button-dir-vertical.state-error .content,.progress-button-style-fill.progress-button-dir-vertical.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-shrink.progress-button-dir-horizontal .content{-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s}.progress-button-style-shrink.progress-button-dir-horizontal .content:after,.progress-button-style-shrink.progress-button-dir-horizontal .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-shrink.progress-button-dir-horizontal.state-loading{-webkit-transform:scaleY(.3);transform:scaleY(.3)}.progress-button-style-shrink.progress-button-dir-horizontal.state-error .content,.progress-button-style-shrink.progress-button-dir-horizontal.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-shrink{overflow:hidden;-webkit-transition:-webkit-transform .2s;transition:transform .2s}.progress-button-style-shrink.progress-button-dir-vertical .content{-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s}.progress-button-style-shrink.progress-button-dir-vertical .content:after,.progress-button-style-shrink.progress-button-dir-vertical .content:before{top:100%;right:auto;left:50%;-webkit-transition:opacity .3s;transition:opacity .3s;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.progress-button-style-shrink.progress-button-dir-vertical.state-loading{-webkit-transform:scaleX(.1);transform:scaleX(.1)}.progress-button-style-shrink.progress-button-dir-vertical.state-error .content,.progress-button-style-shrink.progress-button-dir-vertical.state-success .content{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.progress-button-style-rotate-angle-bottom .progress{position:absolute;top:100%;left:0;width:100%;height:20px;box-shadow:0 -1px 0 #148544;-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:50% 0;transform-origin:50% 0}.progress-button-style-rotate-angle-bottom.state-loading .progress-wrap{-webkit-transform:rotateX(45deg);transform:rotateX(45deg)}.progress-button-style-rotate-angle-top .progress{position:absolute;bottom:100%;left:0;width:100%;height:20px;box-shadow:0 1px 0 #148544;-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.progress-button-style-rotate-angle-top.state-loading .progress-wrap{-webkit-transform:rotateX(-45deg);transform:rotateX(-45deg)}.progress-button-style-rotate-angle-left .progress{position:absolute;top:0;right:100%;width:20px;height:100%;box-shadow:1px 0 0 #148544;-webkit-transform:rotateY(-90deg);transform:rotateY(-90deg);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.progress-button-style-rotate-angle-left.state-loading .progress-wrap{-webkit-transform:rotateY(45deg);transform:rotateY(45deg)}.progress-button-style-rotate-angle-right .progress{position:absolute;top:0;left:100%;width:20px;height:100%;box-shadow:-1px 0 0 #148544;-webkit-transform:rotateY(90deg);transform:rotateY(90deg);-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-angle-right.state-loading .progress-wrap{-webkit-transform:rotateY(-45deg);transform:rotateY(-45deg)}.progress-button-style-rotate-side-down .progress{position:absolute;top:100%;left:0;width:100%;height:20px;-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-rotate-side-down.state-loading .progress-wrap{-webkit-transform:rotateX(90deg) translateZ(10px);transform:rotateX(90deg) translateZ(10px)}.progress-button-style-rotate-side-up .progress{position:absolute;bottom:100%;left:0;width:100%;height:20px;-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-rotate-side-up.state-loading .progress-wrap{-webkit-transform:rotateX(-90deg) translateZ(10px);transform:rotateX(-90deg) translateZ(10px)}.progress-button-style-rotate-side-left .progress-wrap{-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-side-left .progress{position:absolute;top:0;left:0;width:20px;height:100%;-webkit-transform:rotateY(90deg);transform:rotateY(90deg);-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-side-left.state-loading .progress-wrap{-webkit-transform:translateX(50%) rotateY(90deg) translateZ(10px);transform:translateX(50%) rotateY(90deg) translateZ(10px)}.progress-button-style-rotate-side-right .progress-wrap{-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.progress-button-style-rotate-side-right .progress{position:absolute;top:0;left:100%;width:20px;height:100%;-webkit-transform:rotateY(90deg);transform:rotateY(90deg);-webkit-transform-origin:0 50%;transform-origin:0 50%}.progress-button-style-rotate-side-right.state-loading .progress-wrap{-webkit-transform:translateX(-50%) rotateY(-90deg) translateZ(10px);transform:translateX(-50%) rotateY(-90deg) translateZ(10px)}.progress-button-style-rotate-back .progress-wrap{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.progress-button-style-rotate-back .content{-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-rotate-back .progress{position:absolute;top:100%;left:0;width:100%;height:100%;-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-flip-open .progress,.progress-button-style-move-up .progress,.progress-button-style-slide-down .progress{position:absolute;top:0;left:0;height:100%;width:100%}.progress-button-style-rotate-back.state-loading .progress-wrap{-webkit-transform:rotateX(180deg) scaleX(.6) scaleY(.3);transform:rotateX(180deg) scaleX(.6) scaleY(.3)}.progress-button-style-flip-open .content{z-index:10;-webkit-transition:-webkit-transform .2s;transition:transform .2s;-webkit-transform-origin:50% 0;transform-origin:50% 0}.progress-button-style-flip-open.state-loading .content{-webkit-transform:rotateX(45deg);transform:rotateX(45deg)}.progress-button-style-slide-down{padding:0;overflow:visible;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-slide-down .content{z-index:10;padding:0 60px;background:#1d9650}.progress-button-style-slide-down .progress{-webkit-transition:-webkit-transform .2s;transition:transform .2s}.progress-button-style-slide-down.state-loading .progress{-webkit-transform:translateY(10px);transform:translateY(10px)}.progress-button-style-move-up{padding:0;overflow:visible;-webkit-backface-visibility:hidden;backface-visibility:hidden}.progress-button-style-move-up .content{z-index:10;padding:0 60px;background:#1d9650;-webkit-transition:-webkit-transform .2s;transition:transform .2s}.progress-button-style-lateral-lines .content:after,.progress-button-style-lateral-lines .content:before,.progress-button-style-top-line .content:after,.progress-button-style-top-line .content:before{right:auto;left:100%;margin-left:25px}.progress-button-style-move-up.state-loading .content{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.progress-button-style-top-line .progress-inner{height:3px}.progress-button-style-lateral-lines .progress-inner{width:100%;border-right:3px solid #0e7138;border-left:3px solid #0e7138;background:0 0} \ No newline at end of file diff --git a/dist/angular-progress-button-styles.min.js b/dist/angular-progress-button-styles.min.js index 0e201f6..a89217b 100644 --- a/dist/angular-progress-button-styles.min.js +++ b/dist/angular-progress-button-styles.min.js @@ -1 +1 @@ -"use strict";!function(a){function b(a){var b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return b[c]}function c(){var a={},b=null,c={style:"fill",direction:"horizontal",randomProgress:!0};this.profile=function(c,d){if(1==arguments.length){if(b)throw Error("Default profile already set.");b=c}else{if(a[c])throw Error("Profile ["+c+"] aready set.");a[c]=d}},this.$get=function(){return{getProfile:function(d){return d&&a[d]?a[d]:b||c}}}}function d(c,d,e){return{restrict:"A",transclude:!0,scope:{progressButton:"&",pbStyle:"@",pbDirection:"@",pbProfile:"@"},template:'',controller:function(){},link:function(f,g,h){function i(){var a=d.getProfile(f.pbProfile);f.pbStyle=f.pbStyle||a.style||"fill","lateral-lines"!=f.pbStyle?f.pbDirection=f.pbDirection||a.direction||"horizontal":f.pbDirection="vertical",f.pbPerspective=0==f.pbStyle.indexOf("rotate")||0==f.pbStyle.indexOf("flip-open"),f.pbRandomProgress=h.pbRandomProgress?"false"!==h.pbRandomProgress:a.randomProgress||!0}function j(a){f.progressStyles[o]=100*a+"%"}function k(){var a=0;return e(function(){a+=(1-a)*Math.random()*.5,j(a)},200)}function l(){f.$apply(function(){f.disabled=!1})}function m(a){function b(a){("opacity"===a.propertyName||a.originalEvent&&"opacity"===a.originalEvent.propertyName)&&(g.off(n,b),f.$apply(function(){f.allowProgressTransition=!1,j(0),f.progressStyles.opacity=1}))}if(n&&(f.progressStyles.opacity=0,g.on(n,b)),"number"==typeof a){var c=a>=0?"state-success":"state-error";g.addClass(c),setTimeout(function(){g.removeClass(c),l()},1500)}else l();g.removeClass("state-loading")}i();var n=b(g[0]),o="vertical"==f.pbDirection?"height":"width";if(f.pbPerspective){var p=a.element('');p.append(g.children()),g.append(p),g.addClass("progress-button-perspective")}f.progressStyles={},f.disabled=!1,f.allowProgressTransition=!1,g.addClass("progress-button"),g.addClass("progress-button-dir-"+f.pbDirection),g.addClass("progress-button-style-"+f.pbStyle),f.$watch("disabled",function(a){g.toggleClass("disabled",a)}),g.on("click",function(){f.$apply(function(){if(!f.disabled){f.disabled=!0,g.addClass("state-loading"),f.allowProgressTransition=!0;var a=null;c.when(f.progressButton()).then(function(){j(1),a&&e.cancel(a),m(1)},function(){a&&e.cancel(a),m(-1)},function(a){!f.pbRandomProgress&&j(a)}),f.pbRandomProgress&&(a=k())}})})}}}var e=a.module("angular-progress-button-styles",[]);e.provider("progressButtonConfig",c),e.directive("progressButton",d),d.$inject=["$q","progressButtonConfig","$interval"]}(angular); \ No newline at end of file +"use strict";!function(a){function b(a){var b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return b[c]}function c(){var a={},b=null,c={style:"fill",direction:"horizontal",randomProgress:!0};this.profile=function(c,d){if(1==arguments.length){if(b)throw Error("Default profile already set.");b=c}else{if(a[c])throw Error("Profile ["+c+"] aready set.");a[c]=d}},this.$get=function(){return{getProfile:function(d){return d&&a[d]?a[d]:b||c}}}}function d(c,d,e){return{restrict:"A",transclude:!0,scope:{progressButton:"&",pbStyle:"@",pbDirection:"@",pbProfile:"@",pbValue:"@"},template:'',controller:function(){},link:function(f,g,h){function i(a,b){f.allowProgressTransition?l(a):a>0&&1!=a&&j(a)}function j(a){if(!f.disabled){f.disabled=!0,g.addClass("state-loading"),f.allowProgressTransition=!0;var b=null;a&&l(a),c.when(f.progressButton()).then(function(){l(1),b&&e.cancel(b),o(1)},function(){b&&e.cancel(b),o(-1)},function(a){!f.pbRandomProgress&&l(a)}),f.pbRandomProgress&&(b=m())}}function k(){var a=d.getProfile(f.pbProfile);f.pbStyle=f.pbStyle||a.style||"fill","lateral-lines"!=f.pbStyle?f.pbDirection=f.pbDirection||a.direction||"horizontal":f.pbDirection="vertical",f.pbPerspective=0==f.pbStyle.indexOf("rotate")||0==f.pbStyle.indexOf("flip-open"),f.pbRandomProgress=h.pbRandomProgress?"false"!==h.pbRandomProgress:a.randomProgress||!0}function l(a){f.progressStyles[q]=100*a+"%"}function m(){var a=0;return e(function(){a+=(1-a)*Math.random()*.5,l(a)},200)}function n(){f.$apply(function(){f.disabled=!1})}function o(a){function b(a){("opacity"===a.propertyName||a.originalEvent&&"opacity"===a.originalEvent.propertyName)&&(g.off(p,b),f.$apply(function(){f.allowProgressTransition=!1,l(0),f.progressStyles.opacity=1}))}if(p&&(f.progressStyles.opacity=0,g.on(p,b)),"number"==typeof a){var c=a>=0?"state-success":"state-error";g.addClass(c),setTimeout(function(){g.removeClass(c),n()},1500)}else n();g.removeClass("state-loading")}k();var p=b(g[0]),q="vertical"==f.pbDirection?"height":"width";if(f.pbPerspective){var r=a.element('');r.append(g.children()),g.append(r),g.addClass("progress-button-perspective")}f.progressStyles={},f.disabled=!1,f.allowProgressTransition=!1,g.addClass("progress-button"),g.addClass("progress-button-dir-"+f.pbDirection),g.addClass("progress-button-style-"+f.pbStyle),f.$watch("disabled",function(a){g.toggleClass("disabled",a)}),g.on("click",function(){f.$apply(j)}),f.$watch("pbValue",i)}}}var e=a.module("angular-progress-button-styles",[]);e.provider("progressButtonConfig",c),e.directive("progressButton",d),d.$inject=["$q","progressButtonConfig","$interval"]}(angular); \ No newline at end of file diff --git a/js/angular-progress-button-styles.js b/js/angular-progress-button-styles.js index d9cf22c..f1f4df7 100644 --- a/js/angular-progress-button-styles.js +++ b/js/angular-progress-button-styles.js @@ -73,7 +73,8 @@ 'progressButton': '&', 'pbStyle': '@', 'pbDirection': '@', - 'pbProfile': '@' + 'pbProfile': '@', + 'pbValue': '@' }, template: '' + '' + @@ -105,32 +106,47 @@ }); $element.on('click', function() { - $scope.$apply(function() { - if ($scope.disabled) return; - $scope.disabled = true; - $element.addClass('state-loading'); - $scope.allowProgressTransition = true; - var interval = null; - $q.when($scope.progressButton()).then( - function success() { - setProgress(1); - interval && $interval.cancel(interval); - doStop(1); - }, - function error() { - interval && $interval.cancel(interval); - doStop(-1); - }, - function notify(arg) { - !$scope.pbRandomProgress && setProgress(arg); - } - ); - if ($scope.pbRandomProgress) { - interval = runProgressInterval(); - } - }); + $scope.$apply(_start); }); + $scope.$watch('pbValue', valueChangedExternally); + + function valueChangedExternally (newValue, oldValue) { + if ($scope.allowProgressTransition) + setProgress(newValue); + else if (newValue > 0 && newValue != 1) + _start(newValue); + } + function _start(startingValue) { + if ($scope.disabled) return; + $scope.disabled = true; + $element.addClass('state-loading'); + $scope.allowProgressTransition = true; + var interval = null; + + if (startingValue) { + setProgress(startingValue); + } + + $q.when($scope.progressButton()).then( + function success() { + setProgress(1); + interval && $interval.cancel(interval); + doStop(1); + }, + function error() { + interval && $interval.cancel(interval); + doStop(-1); + }, + function notify(arg) { + !$scope.pbRandomProgress && setProgress(arg); + } + ); + if ($scope.pbRandomProgress) { + interval = runProgressInterval(); + } + } + function _configure() { var profile = progressButtonConfig.getProfile($scope.pbProfile); diff --git a/package.json b/package.json index fcef06b..b2fda79 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "grunt-contrib-cssmin": "^0.12.1", "grunt-contrib-less": "^1.0.0", "grunt-contrib-uglify": "^0.7.0", - "grunt-sass": "^0.17.0" + "grunt-contrib-sass": "^0.9.2" }, "dependencies": { "angular": "~1.x"