Repository: zhangxd1989/springboot-dubbox-web Branch: master Commit: a72b62d70bea Files: 107 Total size: 603.1 KB Directory structure: gitextract_vwne9o_j/ ├── .gitignore ├── GruntFile.js ├── README.md ├── bower.json ├── grunt/ │ ├── clean.js │ ├── concat.js │ ├── copy.js │ ├── cssmin.js │ ├── htmlmin.js │ ├── index.js │ ├── recess.js │ └── uglify.js ├── package.json └── src/ ├── css/ │ ├── animate.css │ ├── app.css │ ├── bootstrap.css │ ├── font.css │ ├── less/ │ │ ├── app.arrow.less │ │ ├── app.butterbar.less │ │ ├── app.buttons.less │ │ ├── app.colors.less │ │ ├── app.components.less │ │ ├── app.item.less │ │ ├── app.layout.boxed.less │ │ ├── app.layout.less │ │ ├── app.less │ │ ├── app.mixins.less │ │ ├── app.nav.dock.less │ │ ├── app.nav.less │ │ ├── app.nav.offscreen.less │ │ ├── app.ng.less │ │ ├── app.plugin.less │ │ ├── app.reset.less │ │ ├── app.utilities.less │ │ ├── app.variables.less │ │ └── app.widgets.less │ └── simple-line-icons.css ├── fonts/ │ └── FontAwesome.otf ├── index.html ├── index.min.html ├── js/ │ ├── app.js │ ├── config.js │ ├── config.lazyload.js │ ├── config.module.js │ ├── config.router.js │ ├── constants.js │ ├── custom/ │ │ ├── framework/ │ │ │ ├── dashboard-service.js │ │ │ ├── dashboard.js │ │ │ ├── login.js │ │ │ └── reset-password.js │ │ ├── sys/ │ │ │ ├── menu/ │ │ │ │ ├── menu-form.js │ │ │ │ ├── menu-list.js │ │ │ │ └── menu-service.js │ │ │ ├── role/ │ │ │ │ ├── role-form.js │ │ │ │ ├── role-list.js │ │ │ │ └── role-service.js │ │ │ └── user/ │ │ │ ├── user-form.js │ │ │ ├── user-info.js │ │ │ ├── user-list.js │ │ │ └── user-service.js │ │ └── trip/ │ │ └── user/ │ │ ├── user-form.js │ │ ├── user-list.js │ │ └── user-service.js │ ├── directives/ │ │ ├── setnganimate.js │ │ ├── ui-butterbar.js │ │ ├── ui-focus.js │ │ ├── ui-fullscreen.js │ │ ├── ui-jq.js │ │ ├── ui-module.js │ │ ├── ui-nav.js │ │ ├── ui-ordercolumn.js │ │ ├── ui-scroll.js │ │ ├── ui-shift.js │ │ └── ui-toggleclass.js │ ├── filters/ │ │ ├── dict.js │ │ └── props-filter.js │ ├── main.js │ └── services/ │ ├── auth-service.js │ └── ui-load.js ├── tpl/ │ ├── 404.html │ ├── app.html │ ├── blocks/ │ │ ├── aside.html │ │ ├── header.html │ │ ├── nav.html │ │ ├── pagination.html │ │ └── settings.html │ └── custom/ │ ├── framework/ │ │ ├── dashboard.html │ │ ├── login.html │ │ └── reset-password.html │ ├── sys/ │ │ ├── menu/ │ │ │ ├── menu-form.html │ │ │ └── menu-list.html │ │ ├── role/ │ │ │ ├── role-form.html │ │ │ └── role-list.html │ │ └── user/ │ │ ├── user-form.html │ │ ├── user-info.html │ │ └── user-list.html │ └── trip/ │ └── user/ │ ├── user-form.html │ └── user-list.html └── vendor/ ├── jquery/ │ ├── bootstrap.js │ └── charts/ │ ├── easypiechart/ │ │ └── jquery.easy-pie-chart.js │ └── flot/ │ ├── jquery.flot.orderBars.js │ ├── jquery.flot.resize.js │ └── jquery.flot.spline.js └── modules/ ├── angular-file-upload/ │ └── ngThumb.js ├── angular-ivh-treeview/ │ └── ivh-treeview-theme-basic.css └── angularjs-toaster/ ├── toaster.css └── toaster.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Created by .ignore support plugin (hsz.mobi) ### JetBrains template # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 ## File-based project format: *.iws ## Plugin-specific files: # IntelliJ .idea /out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties ### OSX template .DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk #Project /bower_components/ /node_modules/ /angular/ ================================================ FILE: GruntFile.js ================================================ module.exports = function(grunt) { var gtx = require('gruntfile-gtx').wrap(grunt); gtx.loadAuto(); var gruntConfig = require('./grunt'); gruntConfig.package = require('./package.json'); gtx.config(gruntConfig); // We need our bower components in order to develop gtx.alias('build:dev', ['recess:app', 'copy:dev']); gtx.alias('build:angular', ['clean:angular', 'copy:angular', 'clean:angulars', 'cssmin:min', 'concat:vendor', 'concat:app', 'uglify:angular']); gtx.finalise(); }; ================================================ FILE: README.md ================================================ # springboot-dubbox-web https://github.com/zhangxd1989/springboot-dubbox 前端管理 ![预览](https://github.com/zhangxd1989/springboot-dubbox-web/blob/master/image.jpg) - install node.js - go to the app root ``` >npm install -g grunt-cli >npm install -g bower >npm install >bower install >grunt build:dev >grunt build:angular >npm start ``` ================================================ FILE: bower.json ================================================ { "name": "springboot-dubbox-web", "private": true, "dependencies": { "font-awesome": "^4.6.3", "bootstrap": "3.3.7", "angular": "1.3.20", "angular-animate": "1.3.20", "angular-cookies": "1.3.20", "angular-resource": "1.3.20", "angular-touch": "1.3.20", "angular-sanitize": "1.3.20", "angular-ui-router": "^0.3.2", "ngstorage": "^0.3.11", "oclazyload": "^1.0.9", "angular-bootstrap": "0.14.3", "angular-ui-utils": "~0.1.1", "screenfull": "^3.0.2", "angularjs-toaster": "~0.4.8", "angular-tree-dnd": "^3.0.4", "angular-dialog-service": "5.2.11", "angular-file-upload": "^2.3.4", "angular-ui-select": "^0.19.5" } } ================================================ FILE: grunt/clean.js ================================================ module.exports = { angular: ['angular/*'], angulars: [ 'angular/css/**', 'angular/js/*.js', 'angular/vendor/angular/', 'angular/js/directives', 'angular/js/services', 'angular/js/filters', 'angular/index.min.html' ] }; ================================================ FILE: grunt/concat.js ================================================ module.exports = { vendor: { options :{ stripBanners: true }, src: [ 'src/vendor/jquery/jquery.min.js', 'src/vendor/jquery/jquery-ui.min.js', 'src/vendor/jquery/ladda/spin.min.js', 'src/vendor/jquery/ladda/ladda.min.js', 'src/vendor/angular/angular.min.js', 'src/vendor/angular/**/*.js' ], dest: 'angular/vendor/vendor.min.js' }, app: { options :{ stripBanners: true }, src: [ 'src/js/*.js', 'src/js/directives/*.js', 'src/js/filters/*.js', 'src/js/services/*.js' ], dest: 'angular/js/dist.js' } }; ================================================ FILE: grunt/copy.js ================================================ module.exports = { dev: { nonull: true, files: [ // Include our bower JS dependencies // angular {src: "bower_components/angular/angular.min.js", dest: "src/vendor/angular/angular.min.js"}, {src: "bower_components/angular/angular.min.js.map", dest: "src/vendor/angular/angular.min.js.map"}, {src: "bower_components/angular-animate/angular-animate.min.js", dest: "src/vendor/angular/angular-animate/angular-animate.min.js"}, {src: "bower_components/angular-animate/angular-animate.min.js.map", dest: "src/vendor/angular/angular-animate/angular-animate.min.js.map"}, {src: "bower_components/angular-cookies/angular-cookies.min.js", dest: "src/vendor/angular/angular-cookies/angular-cookies.min.js"}, {src: "bower_components/angular-cookies/angular-cookies.min.js.map", dest: "src/vendor/angular/angular-cookies/angular-cookies.min.js.map"}, {src: "bower_components/angular-resource/angular-resource.min.js", dest: "src/vendor/angular/angular-resource/angular-resource.min.js"}, {src: "bower_components/angular-resource/angular-resource.min.js.map", dest: "src/vendor/angular/angular-resource/angular-resource.min.js.map"}, {src: "bower_components/angular-sanitize/angular-sanitize.min.js", dest: "src/vendor/angular/angular-sanitize/angular-sanitize.min.js"}, {src: "bower_components/angular-sanitize/angular-sanitize.min.js.map", dest: "src/vendor/angular/angular-sanitize/angular-sanitize.min.js.map"}, {src: "bower_components/angular-touch/angular-touch.min.js", dest: "src/vendor/angular/angular-touch/angular-touch.min.js"}, {src: "bower_components/angular-touch/angular-touch.min.js.map", dest: "src/vendor/angular/angular-touch/angular-touch.min.js.map"}, // angular-dialogs {src: "bower_components/angular-dialog-service/dist/dialogs.min.js", dest: "src/vendor/angular/angular-dialog/dialogs.min.js"}, {src: "bower_components/angular-dialog-service/dist/dialogs.min.css", dest: "src/css/dialogs.min.css"}, // bootstrap {src: "bower_components/bootstrap/dist/css/bootstrap.css", dest: "src/css/bootstrap.css"}, {src: "bower_components/bootstrap/dist/css/bootstrap.css.map", dest: "src/css/bootstrap.css.map"}, {src: "bower_components/bootstrap/dist/js/bootstrap.js", dest: "src/vendor/jquery/bootstrap.js"}, {src: "**", dest: "src/fonts", cwd: 'bower_components/bootstrap/fonts', expand : true}, // fontawesome {src: "bower_components/font-awesome/css/font-awesome.min.css", dest: "src/css/font-awesome.min.css"}, {src: "**", dest: "src/fonts", cwd: 'bower_components/font-awesome/fonts', expand : true}, // libs {src: "bower_components/screenfull/dist/screenfull.min.js", dest: "src/vendor/libs/screenfull.min.js"}, // core {src: "bower_components/angular-ui-router/release/angular-ui-router.min.js", dest: "src/vendor/angular/angular-ui-router/angular-ui-router.min.js"}, {src: "bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js", dest: "src/vendor/angular/angular-bootstrap/ui-bootstrap-tpls.min.js"}, {src: "bower_components/angular-ui-utils/ui-utils.min.js", dest: "src/vendor/angular/angular-ui-utils/ui-utils.min.js"}, {src: "bower_components/ngstorage/ngStorage.min.js", dest: "src/vendor/angular/ngstorage/ngStorage.min.js"}, {src: "bower_components/oclazyload/dist/ocLazyLoad.min.js", dest: "src/vendor/angular/oclazyload/ocLazyLoad.min.js"}, // modules for lazy load {src: "bower_components/angular-ui-select/dist/select.min.js", dest: "src/vendor/modules/angular-ui-select/select.min.js"}, {src: "bower_components/angular-ui-select/dist/select.min.js.map", dest: "src/vendor/modules/angular-ui-select/select.min.js.map"}, {src: "bower_components/angular-ui-select/dist/select.min.css", dest: "src/vendor/modules/angular-ui-select/select.min.css"}, {src: "bower_components/angular-ui-select/dist/select.min.css.map", dest: "src/vendor/modules/angular-ui-select/select.min.css.map"}, {src: "bower_components/angular-file-upload/dist/angular-file-upload.min.js", dest: "src/vendor/modules/angular-file-upload/angular-file-upload.min.js"}, {src: "bower_components/angular-file-upload/dist/angular-file-upload.min.js.map", dest: "src/vendor/modules/angular-file-upload/angular-file-upload.min.js.map"}, {src: "bower_components/angular-tree-dnd/dist/ng-tree-dnd.min.js", dest: "src/vendor/modules/angular-tree-dnd/ng-tree-dnd.min.js"}, {src: "bower_components/angular-tree-dnd/dist/ng-tree-dnd.min.css", dest: "src/vendor/modules/angular-tree-dnd/ng-tree-dnd.min.css"}, // toaster {src: "bower_components/angularjs-toaster/toaster.js", dest: "src/vendor/modules/angularjs-toaster/toaster.js"}, {src: "bower_components/angularjs-toaster/toaster.css", dest: "src/vendor/modules/angularjs-toaster/toaster.css"} ] }, angular: { files: [ {expand: true, dest: 'angular/', src:'**', cwd:'src/'}, {dest: 'angular/index.html', src:'src/index.min.html'} ] } }; ================================================ FILE: grunt/cssmin.js ================================================ module.exports = { min: { files: { 'angular/css/app.min.css': [ 'src/css/ladda.min.css', 'src/css/bootstrap.css', 'src/css/*.css' ] } } }; ================================================ FILE: grunt/htmlmin.js ================================================ module.exports = { min: { files: [{ expand: true, cwd: 'src/tpl/', src: ['*.html', '**/*.html'], dest: 'angular/tpl/', ext: '.html', extDot: 'first' }] } }; ================================================ FILE: grunt/index.js ================================================ var requireDirectory = require('require-directory'); module.exports = requireDirectory(module); ================================================ FILE: grunt/recess.js ================================================ module.exports = { app: { files: { 'src/css/app.css': [ 'src/css/less/app.less' ] }, options: { compile: true } } }; ================================================ FILE: grunt/uglify.js ================================================ module.exports = { angular: { src: [ 'angular/js/dist.js' ], dest: 'angular/js/app.min.js' } }; ================================================ FILE: package.json ================================================ { "name": "springboot-dubbox-web", "version": "1.0.0", "description": "Administrator web application.", "private": true, "scripts": { "start": "node node_modules/http-server/bin/http-server -p 8091 -o -P http://127.0.0.1:8080/" }, "devDependencies": { "grunt": "^0.4.5", "grunt-bower-install-simple": "^1.2.3", "grunt-contrib-clean": "^1.0.0", "grunt-contrib-concat": "^1.0.1", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-cssmin": "^1.0.2", "grunt-contrib-htmlmin": "^2.0.0", "grunt-contrib-uglify": "^2.0.0", "grunt-recess": "^1.0.1", "gruntfile-gtx": "^0.3.0", "http-server": "^0.9.0", "require-directory": "^2.1.1" } } ================================================ FILE: src/css/animate.css ================================================ .animated{ -webkit-animation-fill-mode:both; -moz-animation-fill-mode:both; -ms-animation-fill-mode:both; -o-animation-fill-mode:both; animation-fill-mode:both; -webkit-animation-duration:0.5s; -moz-animation-duration:0.5s; -ms-animation-duration:0.5s; -o-animation-duration:0.5s; animation-duration:0.5s; } @-webkit-keyframes fadeIn { 0% {opacity: 0;} 100% {opacity: 1;} } @-moz-keyframes fadeIn { 0% {opacity: 0;} 100% {opacity: 1;} } @-o-keyframes fadeIn { 0% {opacity: 0;} 100% {opacity: 1;} } @keyframes fadeIn { 0% {opacity: 0;} 100% {opacity: 1;} } .fadeIn { -webkit-animation-name: fadeIn; -moz-animation-name: fadeIn; -o-animation-name: fadeIn; animation-name: fadeIn; } @-webkit-keyframes fadeInUp { 0% { opacity: 0; -webkit-transform: translateY(20px); } 100% { opacity: 1; -webkit-transform: translateY(0); } } @-moz-keyframes fadeInUp { 0% { opacity: 0; -moz-transform: translateY(20px); } 100% { opacity: 1; -moz-transform: translateY(0); } } @-o-keyframes fadeInUp { 0% { opacity: 0; -o-transform: translateY(20px); } 100% { opacity: 1; -o-transform: translateY(0); } } @keyframes fadeInUp { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } .fadeInUp { -webkit-animation-name: fadeInUp; -moz-animation-name: fadeInUp; -o-animation-name: fadeInUp; animation-name: fadeInUp; } @-webkit-keyframes fadeInDown { 0% { opacity: 0; -webkit-transform: translateY(-20px); } 100% { opacity: 1; -webkit-transform: translateY(0); } } @-moz-keyframes fadeInDown { 0% { opacity: 0; -moz-transform: translateY(-20px); } 100% { opacity: 1; -moz-transform: translateY(0); } } @-o-keyframes fadeInDown { 0% { opacity: 0; -o-transform: translateY(-20px); } 100% { opacity: 1; -o-transform: translateY(0); } } @keyframes fadeInDown { 0% { opacity: 0; transform: translateY(-20px); } 100% { opacity: 1; transform: translateY(0); } } .fadeInDown { -webkit-animation-name: fadeInDown; -moz-animation-name: fadeInDown; -o-animation-name: fadeInDown; animation-name: fadeInDown; } @-webkit-keyframes fadeInLeft { 0% { opacity: 0; -webkit-transform: translateX(-20px); } 100% { opacity: 1; -webkit-transform: translateX(0); } } @-moz-keyframes fadeInLeft { 0% { opacity: 0; -moz-transform: translateX(-20px); } 100% { opacity: 1; -moz-transform: translateX(0); } } @-o-keyframes fadeInLeft { 0% { opacity: 0; -o-transform: translateX(-20px); } 100% { opacity: 1; -o-transform: translateX(0); } } @keyframes fadeInLeft { 0% { opacity: 0; transform: translateX(-20px); } 100% { opacity: 1; transform: translateX(0); } } .fadeInLeft { -webkit-animation-name: fadeInLeft; -moz-animation-name: fadeInLeft; -o-animation-name: fadeInLeft; animation-name: fadeInLeft; } @-webkit-keyframes fadeInRight { 0% { opacity: 0; -webkit-transform: translateX(20px); } 100% { opacity: 1; -webkit-transform: translateX(0); } } @-moz-keyframes fadeInRight { 0% { opacity: 0; -moz-transform: translateX(20px); } 100% { opacity: 1; -moz-transform: translateX(0); } } @-o-keyframes fadeInRight { 0% { opacity: 0; -o-transform: translateX(20px); } 100% { opacity: 1; -o-transform: translateX(0); } } @keyframes fadeInRight { 0% { opacity: 0; transform: translateX(20px); } 100% { opacity: 1; transform: translateX(0); } } .fadeInRight { -webkit-animation-name: fadeInRight; -moz-animation-name: fadeInRight; -o-animation-name: fadeInRight; animation-name: fadeInRight; } @-webkit-keyframes fadeInUpBig { 0% { opacity: 0; -webkit-transform: translateY(2000px); } 100% { opacity: 1; -webkit-transform: translateY(0); } } @-moz-keyframes fadeInUpBig { 0% { opacity: 0; -moz-transform: translateY(2000px); } 100% { opacity: 1; -moz-transform: translateY(0); } } @-o-keyframes fadeInUpBig { 0% { opacity: 0; -o-transform: translateY(2000px); } 100% { opacity: 1; -o-transform: translateY(0); } } @keyframes fadeInUpBig { 0% { opacity: 0; transform: translateY(2000px); } 100% { opacity: 1; transform: translateY(0); } } .fadeInUpBig { -webkit-animation-name: fadeInUpBig; -moz-animation-name: fadeInUpBig; -o-animation-name: fadeInUpBig; animation-name: fadeInUpBig; } @-webkit-keyframes fadeInDownBig { 0% { opacity: 0; -webkit-transform: translateY(-2000px); } 100% { opacity: 1; -webkit-transform: translateY(0); } } @-moz-keyframes fadeInDownBig { 0% { opacity: 0; -moz-transform: translateY(-2000px); } 100% { opacity: 1; -moz-transform: translateY(0); } } @-o-keyframes fadeInDownBig { 0% { opacity: 0; -o-transform: translateY(-2000px); } 100% { opacity: 1; -o-transform: translateY(0); } } @keyframes fadeInDownBig { 0% { opacity: 0; transform: translateY(-2000px); } 100% { opacity: 1; transform: translateY(0); } } .fadeInDownBig { -webkit-animation-name: fadeInDownBig; -moz-animation-name: fadeInDownBig; -o-animation-name: fadeInDownBig; animation-name: fadeInDownBig; } @-webkit-keyframes fadeInLeftBig { 0% { opacity: 0; -webkit-transform: translateX(-2000px); } 100% { opacity: 1; -webkit-transform: translateX(0); } } @-moz-keyframes fadeInLeftBig { 0% { opacity: 0; -moz-transform: translateX(-2000px); } 100% { opacity: 1; -moz-transform: translateX(0); } } @-o-keyframes fadeInLeftBig { 0% { opacity: 0; -o-transform: translateX(-2000px); } 100% { opacity: 1; -o-transform: translateX(0); } } @keyframes fadeInLeftBig { 0% { opacity: 0; transform: translateX(-2000px); } 100% { opacity: 1; transform: translateX(0); } } .fadeInLeftBig { -webkit-animation-name: fadeInLeftBig; -moz-animation-name: fadeInLeftBig; -o-animation-name: fadeInLeftBig; animation-name: fadeInLeftBig; } @-webkit-keyframes fadeInRightBig { 0% { opacity: 0; -webkit-transform: translateX(2000px); } 100% { opacity: 1; -webkit-transform: translateX(0); } } @-moz-keyframes fadeInRightBig { 0% { opacity: 0; -moz-transform: translateX(2000px); } 100% { opacity: 1; -moz-transform: translateX(0); } } @-o-keyframes fadeInRightBig { 0% { opacity: 0; -o-transform: translateX(2000px); } 100% { opacity: 1; -o-transform: translateX(0); } } @keyframes fadeInRightBig { 0% { opacity: 0; transform: translateX(2000px); } 100% { opacity: 1; transform: translateX(0); } } .fadeInRightBig { -webkit-animation-name: fadeInRightBig; -moz-animation-name: fadeInRightBig; -o-animation-name: fadeInRightBig; animation-name: fadeInRightBig; } @-webkit-keyframes fadeOut { 0% {opacity: 1;} 100% {opacity: 0;} } @-moz-keyframes fadeOut { 0% {opacity: 1;} 100% {opacity: 0;} } @-o-keyframes fadeOut { 0% {opacity: 1;} 100% {opacity: 0;} } @keyframes fadeOut { 0% {opacity: 1;} 100% {opacity: 0;} } .fadeOut { -webkit-animation-name: fadeOut; -moz-animation-name: fadeOut; -o-animation-name: fadeOut; animation-name: fadeOut; } @-webkit-keyframes fadeOutUp { 0% { opacity: 1; -webkit-transform: translateY(0); } 100% { opacity: 0; -webkit-transform: translateY(-20px); } } @-moz-keyframes fadeOutUp { 0% { opacity: 1; -moz-transform: translateY(0); } 100% { opacity: 0; -moz-transform: translateY(-20px); } } @-o-keyframes fadeOutUp { 0% { opacity: 1; -o-transform: translateY(0); } 100% { opacity: 0; -o-transform: translateY(-20px); } } @keyframes fadeOutUp { 0% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(-20px); } } .fadeOutUp { -webkit-animation-name: fadeOutUp; -moz-animation-name: fadeOutUp; -o-animation-name: fadeOutUp; animation-name: fadeOutUp; } @-webkit-keyframes fadeOutDown { 0% { opacity: 1; -webkit-transform: translateY(0); } 100% { opacity: 0; -webkit-transform: translateY(20px); } } @-moz-keyframes fadeOutDown { 0% { opacity: 1; -moz-transform: translateY(0); } 100% { opacity: 0; -moz-transform: translateY(20px); } } @-o-keyframes fadeOutDown { 0% { opacity: 1; -o-transform: translateY(0); } 100% { opacity: 0; -o-transform: translateY(20px); } } @keyframes fadeOutDown { 0% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(20px); } } .fadeOutDown { -webkit-animation-name: fadeOutDown; -moz-animation-name: fadeOutDown; -o-animation-name: fadeOutDown; animation-name: fadeOutDown; } @-webkit-keyframes fadeOutLeft { 0% { opacity: 1; -webkit-transform: translateX(0); } 100% { opacity: 0; -webkit-transform: translateX(-20px); } } @-moz-keyframes fadeOutLeft { 0% { opacity: 1; -moz-transform: translateX(0); } 100% { opacity: 0; -moz-transform: translateX(-20px); } } @-o-keyframes fadeOutLeft { 0% { opacity: 1; -o-transform: translateX(0); } 100% { opacity: 0; -o-transform: translateX(-20px); } } @keyframes fadeOutLeft { 0% { opacity: 1; transform: translateX(0); } 100% { opacity: 0; transform: translateX(-20px); } } .fadeOutLeft { -webkit-animation-name: fadeOutLeft; -moz-animation-name: fadeOutLeft; -o-animation-name: fadeOutLeft; animation-name: fadeOutLeft; } @-webkit-keyframes fadeOutRight { 0% { opacity: 1; -webkit-transform: translateX(0); } 100% { opacity: 0; -webkit-transform: translateX(20px); } } @-moz-keyframes fadeOutRight { 0% { opacity: 1; -moz-transform: translateX(0); } 100% { opacity: 0; -moz-transform: translateX(20px); } } @-o-keyframes fadeOutRight { 0% { opacity: 1; -o-transform: translateX(0); } 100% { opacity: 0; -o-transform: translateX(20px); } } @keyframes fadeOutRight { 0% { opacity: 1; transform: translateX(0); } 100% { opacity: 0; transform: translateX(20px); } } .fadeOutRight { -webkit-animation-name: fadeOutRight; -moz-animation-name: fadeOutRight; -o-animation-name: fadeOutRight; animation-name: fadeOutRight; } @-webkit-keyframes fadeOutUpBig { 0% { opacity: 1; -webkit-transform: translateY(0); } 100% { opacity: 0; -webkit-transform: translateY(-2000px); } } @-moz-keyframes fadeOutUpBig { 0% { opacity: 1; -moz-transform: translateY(0); } 100% { opacity: 0; -moz-transform: translateY(-2000px); } } @-o-keyframes fadeOutUpBig { 0% { opacity: 1; -o-transform: translateY(0); } 100% { opacity: 0; -o-transform: translateY(-2000px); } } @keyframes fadeOutUpBig { 0% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(-2000px); } } .fadeOutUpBig { -webkit-animation-name: fadeOutUpBig; -moz-animation-name: fadeOutUpBig; -o-animation-name: fadeOutUpBig; animation-name: fadeOutUpBig; } @-webkit-keyframes fadeOutDownBig { 0% { opacity: 1; -webkit-transform: translateY(0); } 100% { opacity: 0; -webkit-transform: translateY(2000px); } } @-moz-keyframes fadeOutDownBig { 0% { opacity: 1; -moz-transform: translateY(0); } 100% { opacity: 0; -moz-transform: translateY(2000px); } } @-o-keyframes fadeOutDownBig { 0% { opacity: 1; -o-transform: translateY(0); } 100% { opacity: 0; -o-transform: translateY(2000px); } } @keyframes fadeOutDownBig { 0% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(2000px); } } .fadeOutDownBig { -webkit-animation-name: fadeOutDownBig; -moz-animation-name: fadeOutDownBig; -o-animation-name: fadeOutDownBig; animation-name: fadeOutDownBig; } @-webkit-keyframes fadeOutLeftBig { 0% { opacity: 1; -webkit-transform: translateX(0); } 100% { opacity: 0; -webkit-transform: translateX(-2000px); } } @-moz-keyframes fadeOutLeftBig { 0% { opacity: 1; -moz-transform: translateX(0); } 100% { opacity: 0; -moz-transform: translateX(-2000px); } } @-o-keyframes fadeOutLeftBig { 0% { opacity: 1; -o-transform: translateX(0); } 100% { opacity: 0; -o-transform: translateX(-2000px); } } @keyframes fadeOutLeftBig { 0% { opacity: 1; transform: translateX(0); } 100% { opacity: 0; transform: translateX(-2000px); } } .fadeOutLeftBig { -webkit-animation-name: fadeOutLeftBig; -moz-animation-name: fadeOutLeftBig; -o-animation-name: fadeOutLeftBig; animation-name: fadeOutLeftBig; } @-webkit-keyframes fadeOutRightBig { 0% { opacity: 1; -webkit-transform: translateX(0); } 100% { opacity: 0; -webkit-transform: translateX(2000px); } } @-moz-keyframes fadeOutRightBig { 0% { opacity: 1; -moz-transform: translateX(0); } 100% { opacity: 0; -moz-transform: translateX(2000px); } } @-o-keyframes fadeOutRightBig { 0% { opacity: 1; -o-transform: translateX(0); } 100% { opacity: 0; -o-transform: translateX(2000px); } } @keyframes fadeOutRightBig { 0% { opacity: 1; transform: translateX(0); } 100% { opacity: 0; transform: translateX(2000px); } } .fadeOutRightBig { -webkit-animation-name: fadeOutRightBig; -moz-animation-name: fadeOutRightBig; -o-animation-name: fadeOutRightBig; animation-name: fadeOutRightBig; } @-webkit-keyframes flipInX { 0% { -webkit-transform: perspective(400px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(400px) rotateX(-10deg); } 70% { -webkit-transform: perspective(400px) rotateX(10deg); } 100% { -webkit-transform: perspective(400px) rotateX(0deg); opacity: 1; } } @-moz-keyframes flipInX { 0% { -moz-transform: perspective(400px) rotateX(90deg); opacity: 0; } 40% { -moz-transform: perspective(400px) rotateX(-10deg); } 70% { -moz-transform: perspective(400px) rotateX(10deg); } 100% { -moz-transform: perspective(400px) rotateX(0deg); opacity: 1; } } @-o-keyframes flipInX { 0% { -o-transform: perspective(400px) rotateX(90deg); opacity: 0; } 40% { -o-transform: perspective(400px) rotateX(-10deg); } 70% { -o-transform: perspective(400px) rotateX(10deg); } 100% { -o-transform: perspective(400px) rotateX(0deg); opacity: 1; } } @keyframes flipInX { 0% { transform: perspective(400px) rotateX(90deg); opacity: 0; } 40% { transform: perspective(400px) rotateX(-10deg); } 70% { transform: perspective(400px) rotateX(10deg); } 100% { transform: perspective(400px) rotateX(0deg); opacity: 1; } } .animated.flipInX { -webkit-backface-visibility: visible !important; -webkit-animation-name: flipInX; -moz-backface-visibility: visible !important; -moz-animation-name: flipInX; -o-backface-visibility: visible !important; -o-animation-name: flipInX; backface-visibility: visible !important; animation-name: flipInX; } @-webkit-keyframes flipInY { 0% { -webkit-transform: perspective(400px) rotateY(90deg); opacity: 0; } 40% { -webkit-transform: perspective(400px) rotateY(-10deg); } 70% { -webkit-transform: perspective(400px) rotateY(10deg); } 100% { -webkit-transform: perspective(400px) rotateY(0deg); opacity: 1; } } @-moz-keyframes flipInY { 0% { -moz-transform: perspective(400px) rotateY(90deg); opacity: 0; } 40% { -moz-transform: perspective(400px) rotateY(-10deg); } 70% { -moz-transform: perspective(400px) rotateY(10deg); } 100% { -moz-transform: perspective(400px) rotateY(0deg); opacity: 1; } } @-o-keyframes flipInY { 0% { -o-transform: perspective(400px) rotateY(90deg); opacity: 0; } 40% { -o-transform: perspective(400px) rotateY(-10deg); } 70% { -o-transform: perspective(400px) rotateY(10deg); } 100% { -o-transform: perspective(400px) rotateY(0deg); opacity: 1; } } @keyframes flipInY { 0% { transform: perspective(400px) rotateY(90deg); opacity: 0; } 40% { transform: perspective(400px) rotateY(-10deg); } 70% { transform: perspective(400px) rotateY(10deg); } 100% { transform: perspective(400px) rotateY(0deg); opacity: 1; } } .animated.flipInY { -webkit-backface-visibility: visible !important; -webkit-animation-name: flipInY; -moz-backface-visibility: visible !important; -moz-animation-name: flipInY; -o-backface-visibility: visible !important; -o-animation-name: flipInY; backface-visibility: visible !important; animation-name: flipInY; } ================================================ FILE: src/css/app.css ================================================ /* */ html { background-color: #f0f3f4; } body { font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; -webkit-font-smoothing: antialiased; line-height: 1.42857143; color: #58666e; background-color: transparent; } *:focus { outline: 0 !important; } .h1, .h2, .h3, .h4, .h5, .h6 { margin: 0; } a { color: #363f44; text-decoration: none; cursor: pointer; } a:hover, a:focus { color: #141719; text-decoration: none; } label { font-weight: normal; } small, .small { font-size: 13px; } .badge, .label { font-weight: bold; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); } .badge.bg-light, .label.bg-light { text-shadow: none; } .badge { background-color: #cfdadd; } .badge.up { position: relative; top: -10px; padding: 3px 6px; margin-left: -10px; } .badge-sm { padding: 2px 5px !important; font-size: 85%; } .label-sm { padding-top: 0; padding-bottom: 1px; } .badge-white { padding: 2px 6px; background-color: transparent; border: 1px solid rgba(255, 255, 255, 0.35); } .badge-empty { color: inherit; background-color: transparent; border: 1px solid rgba(0, 0, 0, 0.15); } blockquote { border-color: #dee5e7; } .caret-white { border-top-color: #fff; border-top-color: rgba(255, 255, 255, 0.65); } a:hover .caret-white { border-top-color: #fff; } .thumbnail { border-color: #dee5e7; } .progress { background-color: #edf1f2; } .progress-xxs { height: 2px; } .progress-xs { height: 6px; } .progress-sm { height: 12px; } .progress-sm .progress-bar { font-size: 10px; line-height: 1em; } .progress, .progress-bar { -webkit-box-shadow: none; box-shadow: none; } .progress-bar-primary { background-color: #7266ba; } .progress-bar-info { background-color: #23b7e5; } .progress-bar-success { background-color: #27c24c; } .progress-bar-warning { background-color: #fad733; } .progress-bar-danger { background-color: #f05050; } .progress-bar-black { background-color: #1c2b36; } .progress-bar-white { background-color: #fff; } .accordion-group, .accordion-inner { border-color: #dee5e7; border-radius: 2px; } .alert { font-size: 13px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2); } .alert .close i { display: block; font-size: 12px; font-weight: normal; } .form-control { border-color: #cfdadd; border-radius: 2px; } .form-control, .form-control:focus { -webkit-box-shadow: none; box-shadow: none; } .form-control:focus { border-color: #23b7e5; } .form-horizontal .control-label.text-left { text-align: left; } .form-control-spin { position: absolute; top: 50%; right: 10px; z-index: 2; margin-top: -7px; } .input-lg { height: 45px; } .input-group-addon { background-color: #edf1f2; border-color: #cfdadd; } .list-group { border-radius: 2px; } .list-group.no-radius .list-group-item { border-radius: 0 !important; } .list-group.no-borders .list-group-item { border: none; } .list-group.no-border .list-group-item { border-width: 1px 0; } .list-group.no-bg .list-group-item { background-color: transparent; } .list-group-item { padding-right: 15px; border-color: #e7ecee; } a.list-group-item:hover, a.list-group-item:focus, a.list-group-item.hover { background-color: #f6f8f8; } .list-group-item.media { margin-top: 0; } .list-group-item.active { color: #fff; background-color: #23b7e5 !important; border-color: #23b7e5 !important; } .list-group-item.active .text-muted { color: #ace4f5 !important; } .list-group-item.active a { color: #fff; } .list-group-item.focus { background-color: #e4eaec !important; } .list-group-item.select { position: relative; z-index: 1; background-color: #dbeef9 !important; border-color: #c5e4f5; } .list-group-alt .list-group-item:nth-child(2n+2) { background-color: rgba(0, 0, 0, 0.02) !important; } .list-group-lg .list-group-item { padding-top: 15px; padding-bottom: 15px; } .list-group-sm .list-group-item { padding: 6px 10px; } .list-group-sp .list-group-item { margin-bottom: 5px; border-radius: 3px; } .list-group-item > .badge { margin-right: 0; } .list-group-item > .fa-chevron-right { float: right; margin-top: 4px; margin-right: -5px; } .list-group-item > .fa-chevron-right + .badge { margin-right: 5px; } .nav-pills.no-radius > li > a { border-radius: 0; } .nav-pills > li.active > a { color: #fff !important; background-color: #23b7e5; } .nav-pills > li.active > a:hover, .nav-pills > li.active > a:active { background-color: #19a9d5; } .nav > li > a:hover, .nav > li > a:focus { background-color: #f6f8f8; } .nav.nav-lg > li > a { padding: 20px 20px; } .nav.nav-md > li > a { padding: 15px 15px; } .nav.nav-sm > li > a { padding: 6px 12px; } .nav.nav-xs > li > a { padding: 4px 10px; } .nav.nav-xxs > li > a { padding: 1px 10px; } .nav.nav-rounded > li > a { border-radius: 20px; } .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #f6f8f8; } .nav-tabs { border-color: #dee5e7; } .nav-tabs > li > a { border-bottom-color: #dee5e7; border-radius: 2px 2px 0 0; } .nav-tabs > li:hover > a, .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover { border-color: #dee5e7; } .nav-tabs > li.active > a { border-bottom-color: #fff !important; } .nav-tabs-alt .nav-tabs.nav-justified > li { display: table-cell; width: 1%; } .nav-tabs-alt .nav-tabs > li > a { background: transparent !important; border-color: transparent !important; border-bottom-color: #dee5e7 !important; border-radius: 0; } .nav-tabs-alt .nav-tabs > li.active > a { border-bottom-color: #23b7e5 !important; } .tab-container { margin-bottom: 15px; } .tab-container .tab-content { padding: 15px; background-color: #fff; border: 1px solid #dee5e7; border-top-width: 0; border-radius: 0 0 2px 2px; } .pagination > li > a { border-color: #dee5e7; } .pagination > li > a:hover, .pagination > li > a:focus { background-color: #edf1f2; border-color: #dee5e7; } .panel { border-radius: 2px; } .panel .accordion-toggle { display: block; font-size: 14px; cursor: pointer; } .panel .list-group-item { border-color: #edf1f2; } .panel.no-borders { border-width: 0; } .panel.no-borders .panel-heading, .panel.no-borders .panel-footer { border-width: 0; } .panel-heading { border-radius: 2px 2px 0 0; } .panel-default .panel-heading { background-color: #f6f8f8; } .panel-heading.no-border { margin: -1px -1px 0 -1px; border: none; } .panel-heading .nav { margin: -10px -15px; } .panel-heading .list-group { background: transparent; } .panel-footer { background-color: #ffffff; border-color: #edf1f2; border-radius: 0 0 2px 2px; } .panel-default { border-color: #dee5e7; } .panel-default > .panel-heading, .panel-default > .panel-footer { border-color: #edf1f2; } .panel-group .panel-heading + .panel-collapse .panel-body { border-top: 1px solid #eaedef; } .table > tbody > tr > td, .table > tfoot > tr > td { padding: 8px 15px; border-top: 1px solid #eaeff0; } .table > thead > tr > th { padding: 8px 15px; border-bottom: 1px solid #eaeff0; } .table-bordered { border-color: #eaeff0; } .table-bordered > tbody > tr > td { border-color: #eaeff0; } .table-bordered > thead > tr > th { border-color: #eaeff0; } .table-striped > tbody > tr:nth-child(odd) > td, .table-striped > tbody > tr:nth-child(odd) > th { background-color: #fafbfc; } .table-striped > thead > th { background-color: #fafbfc; border-right: 1px solid #eaeff0; } .table-striped > thead > th:last-child { border-right: none; } .well, pre { background-color: #edf1f2; border-color: #dee5e7; } .dropdown-menu { border: 1px solid #dee5e7; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } .dropdown-menu.pull-left { left: 100%; } .dropdown-menu > .panel { margin: -5px 0; border: none; } .dropdown-menu > li > a { padding: 5px 15px; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #141719; background-color: #edf1f2 !important; background-image: none; filter: none; } .dropdown-header { padding: 5px 15px; } .dropdown-submenu { position: relative; } .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { color: #58666e; background-color: #edf1f2 !important; } .dropdown-submenu:hover > .dropdown-menu, .dropdown-submenu:focus > .dropdown-menu { display: block; } .dropdown-submenu.pull-left { float: none !important; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; } .dropdown-submenu .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; } .btn-group > .btn { margin-left: -1px; } /*cols*/ .col-lg-2-4 { position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-0 { clear: left; } .row.no-gutter { margin-right: 0; margin-left: 0; } .no-gutter [class*="col"] { padding: 0; } .row-sm { margin-right: -10px; margin-left: -10px; } .row-sm > div { padding-right: 10px; padding-left: 10px; } .modal-backdrop { background-color: #3a3f51; } .modal-backdrop.in { opacity: 0.8; filter: alpha(opacity=80); } .modal-over { position: fixed; top: 0; right: 0; bottom: 0; left: 0; } .modal-center { position: absolute; top: 50%; left: 50%; } /*layout*/ html, body { width: 100%; height: 100%; } body { overflow-x: hidden; } .app { position: relative; width: 100%; height: auto; min-height: 100%; } .app:before { position: absolute; top: 0; bottom: 0; z-index: -1; display: block; width: inherit; background-color: #f0f3f4; border: inherit; content: ""; } .app-header-fixed { padding-top: 50px; } .app-header-fixed .app-header { position: fixed; top: 0; width: 100%; } .app-header { z-index: 1025; border-radius: 0; } .app-aside { float: left; } .app-aside:before { position: absolute; top: 0; bottom: 0; z-index: -1; width: inherit; background-color: inherit; border: inherit; content: ""; } .app-aside-footer { position: absolute; bottom: 0; z-index: 1000; width: 100%; max-width: 200px; } .app-aside-folded .app-aside-footer { max-width: 60px; } .app-aside-footer ~ div { padding-bottom: 50px; } .app-aside-right { padding-bottom: 50px; } .app-content { height: 100%; } .app-content:before, .app-content:after { display: table; content: " "; } .app-content:after { clear: both; } .app-content-full { position: absolute; top: 50px; bottom: 50px; width: auto !important; height: auto; padding: 0 !important; overflow-y: auto; -webkit-overflow-scrolling: touch; } .app-content-full.h-full { bottom: 0; height: auto; } .app-content-body { float: left; width: 100%; padding-bottom: 50px; } .app-footer { position: absolute; right: 0; bottom: 0; left: 0; z-index: 1005; } .app-footer.app-footer-fixed { position: fixed; } .hbox { display: table; width: 100%; height: 100%; border-spacing: 0; table-layout: fixed; } .hbox .col { display: table-cell; float: none; height: 100%; vertical-align: top; } .v-middle { vertical-align: middle !important; } .v-top { vertical-align: top !important; } .v-bottom { vertical-align: bottom !important; } .vbox { position: relative; display: table; width: 100%; height: 100%; min-height: 240px; border-spacing: 0; } .vbox .row-row { display: table-row; height: 100%; } .vbox .row-row .cell { position: relative; width: 100%; height: 100%; overflow: auto; -webkit-overflow-scrolling: touch; } .ie .vbox .row-row .cell { display: table-cell; } .vbox .row-row .cell .cell-inner { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .navbar { margin: 0; border-width: 0; border-radius: 0; } .navbar .navbar-form-sm { margin-top: 10px; margin-bottom: 10px; } .navbar-md { min-height: 60px; } .navbar-md .navbar-btn { margin-top: 13px; } .navbar-md .navbar-form { margin-top: 15px; } .navbar-md .navbar-nav > li > a { padding-top: 20px; padding-bottom: 20px; } .navbar-md .navbar-brand { line-height: 60px; } .navbar-header > button { padding: 10px 17px; font-size: 16px; line-height: 30px; text-decoration: none; background-color: transparent; border: none; } .navbar-brand { display: inline-block; float: none; height: auto; padding: 0 20px; font-size: 20px; font-weight: 700; line-height: 50px; text-align: center; } .navbar-brand:hover { text-decoration: none; } .navbar-brand img { display: inline; max-height: 20px; margin-top: -4px; vertical-align: middle; } @media (min-width: 768px) { .app-aside, .navbar-header { width: 200px; } .navbar-collapse, .app-content, .app-footer { margin-left: 200px; } .app-aside-right { position: absolute; top: 50px; right: 0; bottom: 0; z-index: 1000; } .app-aside-right.pos-fix { z-index: 1010; } .visible-folded { display: none; } .app-aside-folded .hidden-folded { display: none !important; } .app-aside-folded .visible-folded { display: inherit; } .app-aside-folded .text-center-folded { text-align: center; } .app-aside-folded .pull-none-folded { float: none !important; } .app-aside-folded .w-auto-folded { width: auto; } .app-aside-folded .app-aside, .app-aside-folded .navbar-header { width: 60px; } .app-aside-folded .navbar-collapse, .app-aside-folded .app-content, .app-aside-folded .app-footer { margin-left: 60px; } .app-aside-folded .app-header .navbar-brand { display: block; padding: 0; } .app-aside-fixed .app-header .navbar-header { position: fixed; } .app-aside-fixed .aside-wrap { position: fixed; top: 50px; bottom: 0; left: 0; z-index: 1000; width: 199px; overflow: hidden; } .app-aside-fixed .aside-wrap .navi-wrap { position: relative; width: 217px; height: 100%; overflow-x: hidden; overflow-y: scroll; -webkit-overflow-scrolling: touch; } .app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar { -webkit-appearance: none; } .app-aside-fixed .aside-wrap .navi-wrap::-webkit-scrollbar:vertical { width: 17px; } .smart .app-aside-fixed .aside-wrap .navi-wrap { width: 200px; } .app-aside-fixed.app-aside-folded .app-aside { position: fixed; top: 0; bottom: 0; z-index: 1010; } .app-aside-fixed.app-aside-folded .aside-wrap { width: 59px; } .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { width: 77px; } .smart .app-aside-fixed.app-aside-folded .aside-wrap .navi-wrap { width: 60px; } .bg-auto:before { position: absolute; top: 0; bottom: 0; z-index: -1; width: inherit; background-color: inherit; border: inherit; content: ""; } .bg-auto.b-l:before { margin-left: -1px; } .bg-auto.b-r:before { margin-right: -1px; } .col.show { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .hbox-auto-sm { display: block; } .hbox-auto-sm > .col { display: block; width: auto; height: auto; } .hbox-auto-sm > .col.show { display: block !important; } } @media (max-width: 767px) { .app-aside { float: none; } .app-content-full { width: 100% !important; } .hbox-auto-xs { display: block; } .hbox-auto-xs > .col { display: block; width: auto; height: auto; } .navbar-nav { margin-top: 0; margin-bottom: 0; } .navbar-nav > li > a { box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); } .navbar-nav > li > a .up { top: 0; } .navbar-nav > li > a .avatar { width: 30px; margin-top: -5px; } .navbar-nav .open .dropdown-menu { background-color: #fff; } .navbar-form { margin-top: 0 !important; margin-bottom: 0 !important; box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); } .navbar-form .form-group { margin-bottom: 0; } } html { background: url('../img/bg.jpg'); background-attachment: fixed; background-size: cover; } .app.container { padding-right: 0; padding-left: 0; } @media (min-width: 768px) { .app.container { width: 750px; -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); } .app.container .app-aside { overflow-x: hidden; } .app.container.app-aside-folded .app-aside { overflow-x: visible; } .app.container.app-aside-fixed .aside-wrap { left: inherit; } .app.container.app-aside-fixed.app-aside-folded .app-aside > ul.nav { position: absolute; } .app.container .app-header, .app.container .app-aside { max-width: 750px; } .app.container .app-footer-fixed { right: auto; left: auto; width: 100%; max-width: 550px; } .app.container.app-aside-folded .app-footer-fixed { max-width: 690px; } .app.container.app-aside-dock .app-footer-fixed { max-width: 750px; } } @media (min-width: 992px) { .app.container { width: 970px; } .app.container .app-header, .app.container .app-aside { max-width: 970px; } .app.container .app-footer-fixed { max-width: 770px; } .app.container.app-aside-folded .app-footer-fixed { max-width: 910px; } .app.container.app-aside-dock .app-footer-fixed { max-width: 970px; } } @media (min-width: 1200px) { .app.container { width: 1170px; } .app.container .app-header, .app.container .app-aside { max-width: 1170px; } .app.container .app-footer-fixed { max-width: 970px; } .app.container.app-aside-folded .app-footer-fixed { max-width: 1110px; } .app.container.app-aside-dock .app-footer-fixed { max-width: 1170px; } } .nav-sub { height: 0; margin-left: -20px; overflow: hidden; opacity: 0; -webkit-transition: all 0.2s ease-in-out 0s; transition: all 0.2s ease-in-out 0s; } .active > .nav-sub, .app-aside-folded li:hover > .nav-sub, .app-aside-folded li:focus > .nav-sub, .app-aside-folded li:active > .nav-sub { height: auto !important; margin-left: 0; overflow: auto; opacity: 1; } .nav-sub-header { display: none !important; } .nav-sub-header a { padding: 15px 20px; } .navi ul.nav li { position: relative; display: block; } .navi ul.nav li li a { padding-left: 55px; } .navi ul.nav li li ul { display: none; } .navi ul.nav li li.active > ul { display: block; } .navi ul.nav li a { position: relative; display: block; padding: 10px 20px; font-weight: normal; text-transform: none; -webkit-transition: background-color 0.2s ease-in-out 0s; transition: background-color 0.2s ease-in-out 0s; } .navi ul.nav li a .badge, .navi ul.nav li a .label { padding: 2px 5px; margin-top: 2px; font-size: 11px; } .navi ul.nav li a > i { position: relative; top: 0; float: left; width: 40px; margin: -10px -10px; margin-right: 5px; overflow: hidden; line-height: 40px; text-align: center; } .navi ul.nav li a > i:before { position: relative; z-index: 2; } @media (min-width: 768px) { .app-aside-folded .nav-sub-header { display: block !important; } .app-aside-folded .nav-sub-header a { padding: 15px 20px !important; } .app-aside-folded .navi > ul > li > a { position: relative; height: 50px; padding: 0; text-align: center; border: none; } .app-aside-folded .navi > ul > li > a span { display: none; } .app-aside-folded .navi > ul > li > a span.pull-right { display: none !important; } .app-aside-folded .navi > ul > li > a i { display: block; float: none; width: auto; margin: 0; font-size: 16px; line-height: 50px; border: none !important; } .app-aside-folded .navi > ul > li > a i b { left: 0 !important; } .app-aside-folded .navi > ul > li > a .badge, .app-aside-folded .navi > ul > li > a .label { position: absolute; top: 8px; right: 12px; z-index: 3; } .app-aside-folded .navi > ul > li > ul { position: absolute; top: 0 !important; left: 100%; z-index: 1050; width: 200px; height: 0 !important; -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } .app-aside-folded .navi li li a { padding-left: 20px !important; } .app-aside-folded.app-aside-fixed .app-aside > ul.nav { position: fixed; left: 80px; z-index: 1010; display: block; width: 260px; height: auto; overflow: visible; overflow-y: auto; opacity: 1; -webkit-overflow-scrolling: touch; } .app-aside-folded.app-aside-fixed .app-aside > ul.nav:before { position: absolute; top: 0; left: -60px; width: 60px; height: 50px; content: ""; } .app-aside-folded.app-aside-fixed .app-aside > ul.nav a { padding-right: 20px !important; padding-left: 20px !important; } } @media (max-width: 767px) { .app { overflow-x: hidden; } .app-content { -webkit-transition: -webkit-transform 0.2s ease; -moz-transition: -moz-transform 0.2s ease; -o-transition: -o-transform 0.2s ease; transition: transform 0.2s ease; } .off-screen { position: absolute; top: 50px; bottom: 0; z-index: 1010; display: block !important; width: 75%; overflow-x: hidden; overflow-y: auto; visibility: visible; -webkit-overflow-scrolling: touch; } .off-screen + * { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1015; width: 100%; padding-top: 50px; overflow: hidden; background-color: #f0f3f4; -webkit-transform: translate3d(75%, 0, 0px); transform: translate3d(75%, 0, 0px); -webkit-transition: -webkit-transform 0.2s ease; -moz-transition: -moz-transform 0.2s ease; -o-transition: -o-transform 0.2s ease; transition: transform 0.2s ease; -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; backface-visibility: hidden; } .off-screen + * .off-screen-toggle { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1020; display: block !important; } .off-screen.pull-right { right: 0; } .off-screen.pull-right + * { -webkit-transform: translate3d(-75%, 0, 0px); transform: translate3d(-75%, 0, 0px); } } @media (min-width: 992px) { .app-aside-dock .app-content, .app-aside-dock .app-footer { margin-left: 0; } .app-aside-dock .app-aside-footer ~ div { padding-bottom: 0; } .app-aside-dock.app-aside-fixed.app-header-fixed { padding-top: 115px; } .app-aside-dock.app-aside-fixed .app-aside { position: fixed; top: 50px; z-index: 1000; width: 100%; } .app-aside-dock .app-aside, .app-aside-dock .aside-wrap, .app-aside-dock .navi-wrap { position: relative; top: 0; float: none; width: 100% !important; overflow: visible !important; } .app-aside-dock .app-aside { bottom: auto !important; } .app-aside-dock .app-aside.b-r { border-bottom: 1px solid #dee5e7; border-right-width: 0; } .app-aside-dock .app-aside:before { display: none; } .app-aside-dock .app-aside nav > .nav { float: left; } .app-aside-dock .app-aside .hidden-folded, .app-aside-dock .app-aside .line, .app-aside-dock .app-aside .navi-wrap > div { display: none !important; } .app-aside-dock .app-aside .navi > ul > li { position: relative; display: inline-block; float: left; } .app-aside-dock .app-aside .navi > ul > li > a { height: auto; padding: 10px 15px 12px 15px; text-align: center; } .app-aside-dock .app-aside .navi > ul > li > a > .badge, .app-aside-dock .app-aside .navi > ul > li > a > .label { position: absolute; top: 5px; right: 8px; padding: 1px 4px; } .app-aside-dock .app-aside .navi > ul > li > a > i { display: block; float: none; width: 40px; margin-top: -10px; margin-right: auto; margin-bottom: -7px; margin-left: auto; font-size: 14px; line-height: 40px; } .app-aside-dock .app-aside .navi > ul > li > a > span.pull-right { position: absolute; bottom: 2px; left: 50%; display: block !important; margin-left: -6px; line-height: 1; } .app-aside-dock .app-aside .navi > ul > li > a > span.pull-right i { width: 12px; font-size: 12px; line-height: 12px; } .app-aside-dock .app-aside .navi > ul > li > a > span.pull-right i.text { line-height: 14px; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .app-aside-dock .app-aside .navi > ul > li > a > span { display: block; font-weight: normal; } .app-aside-dock .app-aside .navi > ul > li .nav-sub { position: absolute; top: auto !important; left: 0; z-index: 1050; display: none; width: 200px; height: auto !important; -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } .app-aside-dock .app-aside .navi > ul > li .nav-sub-header { display: none !important; } .app-aside-dock .app-aside .navi li li a { padding-left: 15px; } .app-aside-dock .app-aside .navi li:hover > .nav-sub, .app-aside-dock .app-aside .navi li:focus > .nav-sub, .app-aside-dock .app-aside .navi li:active > .nav-sub { display: block; height: auto !important; margin-left: 0; overflow: auto; opacity: 1; } } .arrow { z-index: 10; border-width: 9px; } .arrow, .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .arrow:after { border-width: 8px; content: ""; } .arrow.top { top: -9px; left: 50%; margin-left: -9px; border-bottom-color: rgba(0, 0, 0, 0.1); border-top-width: 0; } .arrow.top:after { top: 1px; margin-left: -8px; border-bottom-color: #ffffff; border-top-width: 0; } .arrow.top.arrow-primary:after { border-bottom-color: #7266ba; } .arrow.top.arrow-info:after { border-bottom-color: #23b7e5; } .arrow.top.arrow-success:after { border-bottom-color: #27c24c; } .arrow.top.arrow-danger:after { border-bottom-color: #f05050; } .arrow.top.arrow-warning:after { border-bottom-color: #fad733; } .arrow.top.arrow-light:after { border-bottom-color: #edf1f2; } .arrow.top.arrow-dark:after { border-bottom-color: #3a3f51; } .arrow.top.arrow-black:after { border-bottom-color: #1c2b36; } .arrow.right { top: 50%; right: -9px; margin-top: -9px; border-left-color: rgba(0, 0, 0, 0.1); border-right-width: 0; } .arrow.right:after { right: 1px; bottom: -8px; border-left-color: #ffffff; border-right-width: 0; } .arrow.right.arrow-primary:after { border-left-color: #7266ba; } .arrow.right.arrow-info:after { border-left-color: #23b7e5; } .arrow.right.arrow-success:after { border-left-color: #27c24c; } .arrow.right.arrow-danger:after { border-left-color: #f05050; } .arrow.right.arrow-warning:after { border-left-color: #fad733; } .arrow.right.arrow-light:after { border-left-color: #edf1f2; } .arrow.right.arrow-dark:after { border-left-color: #3a3f51; } .arrow.right.arrow-black:after { border-left-color: #1c2b36; } .arrow.bottom { bottom: -9px; left: 50%; margin-left: -9px; border-top-color: rgba(0, 0, 0, 0.1); border-bottom-width: 0; } .arrow.bottom:after { bottom: 1px; margin-left: -8px; border-top-color: #ffffff; border-bottom-width: 0; } .arrow.bottom.arrow-primary:after { border-top-color: #7266ba; } .arrow.bottom.arrow-info:after { border-top-color: #23b7e5; } .arrow.bottom.arrow-success:after { border-top-color: #27c24c; } .arrow.bottom.arrow-danger:after { border-top-color: #f05050; } .arrow.bottom.arrow-warning:after { border-top-color: #fad733; } .arrow.bottom.arrow-light:after { border-top-color: #edf1f2; } .arrow.bottom.arrow-dark:after { border-top-color: #3a3f51; } .arrow.bottom.arrow-black:after { border-top-color: #1c2b36; } .arrow.left { top: 50%; left: -9px; margin-top: -9px; border-right-color: rgba(0, 0, 0, 0.1); border-left-width: 0; } .arrow.left:after { bottom: -8px; left: 1px; border-right-color: #ffffff; border-left-width: 0; } .arrow.left.arrow-primary:after { border-right-color: #7266ba; } .arrow.left.arrow-info:after { border-right-color: #23b7e5; } .arrow.left.arrow-success:after { border-right-color: #27c24c; } .arrow.left.arrow-danger:after { border-right-color: #f05050; } .arrow.left.arrow-warning:after { border-right-color: #fad733; } .arrow.left.arrow-light:after { border-right-color: #edf1f2; } .arrow.left.arrow-dark:after { border-right-color: #3a3f51; } .arrow.left.arrow-black:after { border-right-color: #1c2b36; } .arrow.pull-left { left: 19px; } .arrow.pull-right { right: 19px; left: auto; } .arrow.pull-up { top: 19px; } .arrow.pull-down { top: auto; bottom: 19px; } .btn { font-weight: 500; border-radius: 2px; outline: 0!important; } .btn-link { color: #58666e; } .btn-link.active { box-shadow: none; webkit-box-shadow: none; } .btn-default { color: #58666e !important; background-color: #fcfdfd; background-color: #fff; border-color: #dee5e7; border-bottom-color: #d8e1e3; -webkit-box-shadow: 0 1px 1px rgba(90, 90, 90, 0.1); box-shadow: 0 1px 1px rgba(90, 90, 90, 0.1); } .btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { color: #58666e !important; background-color: #edf1f2; border-color: #c7d3d6; } .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active { background-color: #fcfdfd; border-color: #dee5e7; } .btn-default.btn-bg { border-color: rgba(0, 0, 0, 0.1); background-clip: padding-box; } .btn-primary { color: #ffffff !important; background-color: #7266ba; border-color: #7266ba; } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { color: #ffffff !important; background-color: #6254b2; border-color: #5a4daa; } .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #7266ba; border-color: #7266ba; } .btn-success { color: #ffffff !important; background-color: #27c24c; border-color: #27c24c; } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { color: #ffffff !important; background-color: #23ad44; border-color: #20a03f; } .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active { background-color: #27c24c; border-color: #27c24c; } .btn-info { color: #ffffff !important; background-color: #23b7e5; border-color: #23b7e5; } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { color: #ffffff !important; background-color: #19a9d5; border-color: #189ec8; } .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active { background-color: #23b7e5; border-color: #23b7e5; } .btn-warning { color: #ffffff !important; background-color: #fad733; border-color: #fad733; } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { color: #ffffff !important; background-color: #f9d21a; border-color: #f9cf0b; } .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active { background-color: #fad733; border-color: #fad733; } .btn-danger { color: #ffffff !important; background-color: #f05050; border-color: #f05050; } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { color: #ffffff !important; background-color: #ee3939; border-color: #ed2a2a; } .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active { background-color: #f05050; border-color: #f05050; } .btn-dark { color: #ffffff !important; background-color: #3a3f51; border-color: #3a3f51; } .btn-dark:hover, .btn-dark:focus, .btn-dark:active, .btn-dark.active, .open .dropdown-toggle.btn-dark { color: #ffffff !important; background-color: #2f3342; border-color: #292d39; } .btn-dark:active, .btn-dark.active, .open .dropdown-toggle.btn-dark { background-image: none; } .btn-dark.disabled, .btn-dark[disabled], fieldset[disabled] .btn-dark, .btn-dark.disabled:hover, .btn-dark[disabled]:hover, fieldset[disabled] .btn-dark:hover, .btn-dark.disabled:focus, .btn-dark[disabled]:focus, fieldset[disabled] .btn-dark:focus, .btn-dark.disabled:active, .btn-dark[disabled]:active, fieldset[disabled] .btn-dark:active, .btn-dark.disabled.active, .btn-dark[disabled].active, fieldset[disabled] .btn-dark.active { background-color: #3a3f51; border-color: #3a3f51; } .btn-black { color: #ffffff !important; background-color: #1c2b36; border-color: #1c2b36; } .btn-black:hover, .btn-black:focus, .btn-black:active, .btn-black.active, .open .dropdown-toggle.btn-black { color: #ffffff !important; background-color: #131e25; border-color: #0e161b; } .btn-black:active, .btn-black.active, .open .dropdown-toggle.btn-black { background-image: none; } .btn-black.disabled, .btn-black[disabled], fieldset[disabled] .btn-black, .btn-black.disabled:hover, .btn-black[disabled]:hover, fieldset[disabled] .btn-black:hover, .btn-black.disabled:focus, .btn-black[disabled]:focus, fieldset[disabled] .btn-black:focus, .btn-black.disabled:active, .btn-black[disabled]:active, fieldset[disabled] .btn-black:active, .btn-black.disabled.active, .btn-black[disabled].active, fieldset[disabled] .btn-black.active { background-color: #1c2b36; border-color: #1c2b36; } .btn-icon { width: 34px; height: 34px; padding: 0 !important; text-align: center; } .btn-icon i { position: relative; top: -1px; line-height: 34px; } .btn-icon.btn-sm { width: 30px; height: 30px; } .btn-icon.btn-sm i { line-height: 30px; } .btn-icon.btn-lg { width: 45px; height: 45px; } .btn-icon.btn-lg i { line-height: 45px; } .btn-rounded { padding-right: 15px; padding-left: 15px; border-radius: 50px; } .btn-rounded.btn-lg { padding-right: 25px; padding-left: 25px; } .btn > i.pull-left, .btn > i.pull-right { line-height: 1.42857143; } .btn-block { padding-right: 12px; padding-left: 12px; } .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-right-radius: 2px; } .btn-group-vertical > .btn:last-child:not(:first-child) { border-bottom-left-radius: 2px; } .btn-addon i { position: relative; float: left; width: 34px; height: 34px; margin: -7px -12px; margin-right: 12px; line-height: 34px; text-align: center; background-color: rgba(0, 0, 0, 0.1); border-radius: 2px 0 0 2px; } .btn-addon i.pull-right { margin-right: -12px; margin-left: 12px; border-radius: 0 2px 2px 0; } .btn-addon.btn-sm i { width: 30px; height: 30px; margin: -6px -10px; margin-right: 10px; line-height: 30px; } .btn-addon.btn-sm i.pull-right { margin-right: -10px; margin-left: 10px; } .btn-addon.btn-lg i { width: 45px; height: 45px; margin: -11px -16px; margin-right: 16px; line-height: 45px; } .btn-addon.btn-lg i.pull-right { margin-right: -16px; margin-left: 16px; } .btn-addon.btn-default i { background-color: transparent; border-right: 1px solid #dee5e7; } .btn-groups .btn { margin-bottom: 5px; } .list-icon i { display: inline-block; width: 40px; margin: 0; font-size: 14px; text-align: center; vertical-align: middle; -webkit-transition: font-size 0.2s; transition: font-size 0.2s; } .list-icon div { line-height: 40px; white-space: nowrap; } .list-icon div:hover i { font-size: 26px; } .settings { position: fixed; top: 120px; right: -240px; z-index: 1050; width: 240px; -webkit-transition: right 0.2s; transition: right 0.2s; } .settings.active { right: -1px; } .settings > .btn { position: absolute; top: -1px; left: -42px; padding: 10px 15px; background: #f6f8f8 !important; border-color: #dee5e7 !important; border-right-width: 0; } .settings .i-checks span b { display: inline-block; float: left; width: 50%; height: 20px; } .settings .i-checks span b.header { height: 10px; } .streamline { position: relative; border-color: #dee5e7; } .streamline .sl-item:after, .streamline:after { position: absolute; bottom: 0; left: 0; width: 9px; height: 9px; margin-left: -5px; background-color: #fff; border-color: inherit; border-style: solid; border-width: 1px; border-radius: 10px; content: ''; } .sl-item { position: relative; padding-bottom: 1px; border-color: #dee5e7; } .sl-item:before, .sl-item:after { display: table; content: " "; } .sl-item:after { clear: both; } .sl-item:after { top: 6px; bottom: auto; } .sl-item.b-l { margin-left: -1px; } .timeline { padding: 0; margin: 0; } .tl-item { display: block; } .tl-item:before, .tl-item:after { display: table; content: " "; } .tl-item:after { clear: both; } .visible-left { display: none; } .tl-wrap { display: block; padding: 15px 0 15px 20px; margin-left: 6em; border-color: #dee5e7; border-style: solid; border-width: 0 0 0 4px; } .tl-wrap:before, .tl-wrap:after { display: table; content: " "; } .tl-wrap:after { clear: both; } .tl-wrap:before { position: relative; top: 15px; float: left; width: 10px; height: 10px; margin-left: -27px; background: #edf1f2; border-color: inherit; border-style: solid; border-width: 3px; border-radius: 50%; content: ""; box-shadow: 0 0 0 4px #f0f3f4; } .tl-wrap:hover:before { background: transparent; border-color: #fff; } .tl-date { position: relative; top: 10px; display: block; float: left; width: 4.5em; margin-left: -7.5em; text-align: right; } .tl-content { position: relative; display: inline-block; padding-top: 10px; padding-bottom: 10px; } .tl-content.block { display: block; width: 100%; } .tl-content.panel { margin-bottom: 0; } .tl-header { display: block; width: 12em; margin-left: 2px; text-align: center; } .timeline-center .tl-item { margin-left: 50%; } .timeline-center .tl-item .tl-wrap { margin-left: -2px; } .timeline-center .tl-header { width: auto; margin: 0; } .timeline-center .tl-left { margin-right: 50%; margin-left: 0; } .timeline-center .tl-left .hidden-left { display: none !important; } .timeline-center .tl-left .visible-left { display: inherit; } .timeline-center .tl-left .tl-wrap { float: right; padding-right: 20px; padding-left: 0; margin-right: -2px; border-right-width: 4px; border-left-width: 0; } .timeline-center .tl-left .tl-wrap:before { float: right; margin-right: -27px; margin-left: 0; } .timeline-center .tl-left .tl-date { float: right; margin-right: -8.5em; margin-left: 0; text-align: left; } .i-switch { position: relative; display: inline-block; width: 35px; height: 20px; margin: 0; cursor: pointer; background-color: #27c24c; border-radius: 30px; } .i-switch input { position: absolute; opacity: 0; filter: alpha(opacity=0); } .i-switch input:checked + i:before { top: 50%; right: 5px; bottom: 50%; left: 50%; border-width: 0; border-radius: 5px; } .i-switch input:checked + i:after { margin-left: 16px; } .i-switch i:before { position: absolute; top: -1px; right: -1px; bottom: -1px; left: -1px; background-color: #fff; border: 1px solid #f0f0f0; border-radius: 30px; content: ""; -webkit-transition: all 0.2s; transition: all 0.2s; } .i-switch i:after { position: absolute; top: 1px; bottom: 1px; width: 18px; background-color: #fff; border-radius: 50%; content: ""; -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25); -webkit-transition: margin-left 0.3s; transition: margin-left 0.3s; } .i-switch-md { width: 40px; height: 24px; } .i-switch-md input:checked + i:after { margin-left: 17px; } .i-switch-md i:after { width: 22px; } .i-switch-lg { width: 50px; height: 30px; } .i-switch-lg input:checked + i:after { margin-left: 21px; } .i-switch-lg i:after { width: 28px; } .i-checks { padding-left: 20px; cursor: pointer; } .i-checks input { position: absolute; margin-left: -20px; opacity: 0; } .i-checks input:checked + i { border-color: #23b7e5; } .i-checks input:checked + i:before { top: 4px; left: 4px; width: 10px; height: 10px; background-color: #23b7e5; } .i-checks input:checked + span .active { display: inherit; } .i-checks input[type="radio"] + i, .i-checks input[type="radio"] + i:before { border-radius: 50%; } .i-checks input[disabled] + i, fieldset[disabled] .i-checks input + i { border-color: #dee5e7; } .i-checks input[disabled] + i:before, fieldset[disabled] .i-checks input + i:before { background-color: #dee5e7; } .i-checks > i { position: relative; display: inline-block; width: 20px; height: 20px; margin-top: -2px; margin-right: 4px; margin-left: -20px; line-height: 1; vertical-align: middle; background-color: #fff; border: 1px solid #cfdadd; } .i-checks > i:before { position: absolute; top: 50%; left: 50%; width: 0; height: 0; background-color: transparent; content: ""; -webkit-transition: all 0.2s; transition: all 0.2s; } .i-checks > span { margin-left: -20px; } .i-checks > span .active { display: none; } .i-checks-sm input:checked + i:before { top: 3px; left: 3px; width: 8px; height: 8px; } .i-checks-sm > i { width: 16px; height: 16px; margin-right: 6px; margin-left: -18px; } .i-checks-lg input:checked + i:before { top: 8px; left: 8px; width: 12px; height: 12px; } .i-checks-lg > i { width: 30px; height: 30px; } .hide-file input[type="file"] { position: absolute; top: 0; left: 0; opacity: 0; } .datepicker { margin: 0 5px; } .datepicker .btn-default { border-width: 0; box-shadow: none; } .datepicker .btn[disabled] { opacity: 0.4; } .datepicker .btn-info .text-info { color: #fff !important; } /*Charts*/ .jqstooltip { padding: 5px 10px !important; background-color: rgba(0, 0, 0, 0.8) !important; border: solid 1px #000 !important; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } .easyPieChart { position: relative; text-align: center; } .easyPieChart > div { position: relative; z-index: 1; } .easyPieChart > div .text { position: absolute; top: 60%; width: 100%; line-height: 1; } .easyPieChart > div img { margin-top: -4px; } .easyPieChart canvas { position: absolute; top: 0; left: 0; z-index: 0; } #flotTip { z-index: 100; padding: 4px 10px; font-size: 12px; color: #fff; background-color: rgba(0, 0, 0, 0.8); border: solid 1px #000 !important; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .legendColorBox > div { margin: 5px; border: none !important; } .legendColorBox > div > div { border-radius: 10px; } .sortable-placeholder { min-height: 50px; margin-bottom: 5px; list-style: none; border: 1px dashed #CCC; } .table > thead .sorting, .table > thead .sorting_asc, .table > thead .sorting_desc { white-space: normal; cursor: pointer; } .table > thead .sorting:after, .table > thead .sorting_asc:after, .table > thead .sorting_desc:after { position: relative; float: right; font-family: FontAwesome; font-weight: normal; color: #ccc; } .table > thead .sorting:after { content: "\f0dc"; } .table > thead .sorting_asc:after { content: "\f0de"; } .table > thead .sorting_desc:after { content: "\f0dd"; } .ibox { padding: 0; margin-top: 0; margin-bottom: 25px; clear: both; } .ibox.collapsed .ibox-content { display: none; } .ibox.collapsed .fa.fa-chevron-up:before { content: "\f078"; } .ibox.collapsed .fa.fa-chevron-down:before { content: "\f077"; } .ibox:after, .ibox:before { display: table; } .ibox-title { min-height: 48px; padding: 14px 15px 7px; margin-bottom: 0; color: inherit; background-color: #f0f3f4; border-color: #dee5e7; border-image: none; border-style: solid solid none; border-width: 3px 0 0; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; } .ibox-content { padding: 15px 20px 20px 20px; color: inherit; background-color: #f0f3f4; border-color: #dee5e7; border-image: none; border-style: solid solid none; border-width: 1px 0; } .ibox-footer { padding: 10px 15px; font-size: 90%; color: inherit; background: #ffffff; border-top: 1px solid #dee5e7; } .item { position: relative; } .item .top { position: absolute; top: 0; left: 0; } .item .bottom { position: absolute; bottom: 0; left: 0; } .item .center { position: absolute; top: 50%; } .item-overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: none; } .item-overlay.active, .item:hover .item-overlay { display: block; } .loading { position: fixed; top: 0; left: 0; z-index: 999999; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.5); } .loading .load { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 9999; width: 160px; height: 56px; padding-left: 60px; margin: auto; font-size: 15px; line-height: 56px; color: #fff; background: #000000 url('../img/loading.gif') no-repeat 10px 50%; -webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px; opacity: 0.7; filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70); } .form-validation .form-control.ng-dirty.ng-invalid { border-color: #f05050; } .form-validation .form-control.ng-dirty.ng-valid, .form-validation .form-control.ng-dirty.ng-valid:focus { border-color: #27c24c; } .form-validation .i-checks .ng-invalid.ng-dirty + i { border-color: #f05050; } .ng-animate .bg-auto:before { display: none; } [ui-view].ng-leave { display: none; } [ui-view].ng-leave.smooth { display: block; } .smooth.ng-animate { position: absolute; width: 100%; height: 100%; overflow: hidden; } .fade-in-right-big.ng-enter { -webkit-animation: fadeInRightBig 0.5s; animation: fadeInRightBig 0.5s; } .fade-in-right-big.ng-leave { -webkit-animation: fadeOutLeftBig 0.5s; animation: fadeOutLeftBig 0.5s; } .fade-in-left-big.ng-enter { -webkit-animation: fadeInLeftBig 0.5s; animation: fadeInLeftBig 0.5s; } .fade-in-left-big.ng-leave { -webkit-animation: fadeOutRightBig 0.5s; animation: fadeOutRightBig 0.5s; } .fade-in-up-big.ng-enter { -webkit-animation: fadeInUpBig 0.5s; animation: fadeInUpBig 0.5s; } .fade-in-up-big.ng-leave { -webkit-animation: fadeOutUpBig 0.5s; animation: fadeOutUpBig 0.5s; } .fade-in-down-big.ng-enter { -webkit-animation: fadeInDownBig 0.5s; animation: fadeInDownBig 0.5s; } .fade-in-down-big.ng-leave { -webkit-animation: fadeOutDownBig 0.5s; animation: fadeOutDownBig 0.5s; } .fade-in.ng-enter { -webkit-animation: fadeIn 0.5s; animation: fadeIn 0.5s; } .fade-in.ng-leave { -webkit-animation: fadeOut 0.5s; animation: fadeOut 0.5s; } .fade-in-right.ng-enter { -webkit-animation: fadeInRight 0.5s; animation: fadeInRight 0.5s; } .fade-in-right.ng-leave { -webkit-animation: fadeOutLeft 0.5s; animation: fadeOutLeft 0.5s; } .fade-in-left.ng-enter { -webkit-animation: fadeInLeft 0.5s; animation: fadeInLeft 0.5s; } .fade-in-left.ng-leave { -webkit-animation: fadeOutRight 0.5s; animation: fadeOutRight 0.5s; } .fade-in-up.ng-enter { -webkit-animation: fadeInUp 0.5s; animation: fadeInUp 0.5s; } .fade-in-up.ng-leave { -webkit-animation: fadeOutUp 0.5s; animation: fadeOutUp 0.5s; } .fade-in-down.ng-enter { -webkit-animation: fadeInDown 0.5s; animation: fadeInDown 0.5s; } .fade-in-down.ng-leave { -webkit-animation: fadeOutDown 0.5s; animation: fadeOutDown 0.5s; } .bg-gd { background-image: -webkit-gradient(linear, left 0, left 100%, from(rgba(40, 50, 60, 0)), to(rgba(40, 50, 60, 0.075))); background-image: -webkit-linear-gradient(top, rgba(40, 50, 60, 0), 0, rgba(40, 50, 60, 0.075), 100%); background-image: -moz-linear-gradient(top, rgba(40, 50, 60, 0) 0, rgba(40, 50, 60, 0.075) 100%); background-image: linear-gradient(to bottom, rgba(40, 50, 60, 0) 0, rgba(40, 50, 60, 0.075) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0028323c', endColorstr='#1328323c', GradientType=0); filter: none; } .bg-gd-dk { background-image: -webkit-gradient(linear, left 10%, left 100%, from(rgba(40, 50, 60, 0)), to(rgba(40, 50, 60, 0.5))); background-image: -webkit-linear-gradient(top, rgba(40, 50, 60, 0), 10%, rgba(40, 50, 60, 0.5), 100%); background-image: -moz-linear-gradient(top, rgba(40, 50, 60, 0) 10%, rgba(40, 50, 60, 0.5) 100%); background-image: linear-gradient(to bottom, rgba(40, 50, 60, 0) 10%, rgba(40, 50, 60, 0.5) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0028323c', endColorstr='#8028323c', GradientType=0); filter: none; } .bg-light { color: #58666e; background-color: #edf1f2; } .bg-light.lt, .bg-light .lt { background-color: #f3f5f6; } .bg-light.lter, .bg-light .lter { background-color: #f6f8f8; } .bg-light.dk, .bg-light .dk { background-color: #e4eaec; } .bg-light.dker, .bg-light .dker { background-color: #dde6e9; } .bg-light.bg, .bg-light .bg { background-color: #edf1f2; } .bg-dark { color: #a6a8b1; background-color: #3a3f51; } .bg-dark.lt, .bg-dark .lt { background-color: #474c5e; } .bg-dark.lter, .bg-dark .lter { background-color: #54596a; } .bg-dark.dk, .bg-dark .dk { background-color: #2e3344; } .bg-dark.dker, .bg-dark .dker { background-color: #232735; } .bg-dark.bg, .bg-dark .bg { background-color: #3a3f51; } .bg-dark a { color: #c1c3c9; } .bg-dark a:hover { color: #ffffff; } .bg-dark a.list-group-item:hover, .bg-dark a.list-group-item:focus { background-color: inherit; } .bg-dark .nav > li:hover > a, .bg-dark .nav > li:focus > a, .bg-dark .nav > li.active > a { color: #ffffff; background-color: #2e3344; } .bg-dark .nav > li > a { color: #b4b6bd; } .bg-dark .nav > li > a:hover, .bg-dark .nav > li > a:focus { background-color: #32374a; } .bg-dark .nav .open > a { background-color: #2e3344; } .bg-dark .caret { border-top-color: #a6a8b1; border-bottom-color: #a6a8b1; } .bg-dark.navbar .nav > li.active > a { color: #ffffff; background-color: #2e3344; } .bg-dark .open > a, .bg-dark .open > a:hover, .bg-dark .open > a:focus { color: #ffffff; } .bg-dark .text-muted { color: #8b8e99 !important; } .bg-dark .text-lt { color: #eaebed !important; } .bg-dark.auto .list-group-item, .bg-dark .auto .list-group-item { background-color: transparent; border-color: #2f3342 !important; } .bg-dark.auto .list-group-item:hover, .bg-dark .auto .list-group-item:hover, .bg-dark.auto .list-group-item:focus, .bg-dark .auto .list-group-item:focus, .bg-dark.auto .list-group-item:active, .bg-dark .auto .list-group-item:active, .bg-dark.auto .list-group-item.active, .bg-dark .auto .list-group-item.active { background-color: #2e3344 !important; } .bg-black { color: #7793a7; background-color: #1c2b36; } .bg-black.lt, .bg-black .lt { background-color: #263845; } .bg-black.lter, .bg-black .lter { background-color: #314554; } .bg-black.dk, .bg-black .dk { background-color: #131e26; } .bg-black.dker, .bg-black .dker { background-color: #0a1015; } .bg-black.bg, .bg-black .bg { background-color: #1c2b36; } .bg-black a { color: #96abbb; } .bg-black a:hover { color: #ffffff; } .bg-black a.list-group-item:hover, .bg-black a.list-group-item:focus { background-color: inherit; } .bg-black .nav > li:hover > a, .bg-black .nav > li:focus > a, .bg-black .nav > li.active > a { color: #ffffff; background-color: #131e26; } .bg-black .nav > li > a { color: #869fb1; } .bg-black .nav > li > a:hover, .bg-black .nav > li > a:focus { background-color: #16232d; } .bg-black .nav .open > a { background-color: #131e26; } .bg-black .caret { border-top-color: #7793a7; border-bottom-color: #7793a7; } .bg-black.navbar .nav > li.active > a { color: #ffffff; background-color: #131e26; } .bg-black .open > a, .bg-black .open > a:hover, .bg-black .open > a:focus { color: #ffffff; } .bg-black .text-muted { color: #5c798f !important; } .bg-black .text-lt { color: #c4d0d9 !important; } .bg-black.auto .list-group-item, .bg-black .auto .list-group-item { background-color: transparent; border-color: #131e25 !important; } .bg-black.auto .list-group-item:hover, .bg-black .auto .list-group-item:hover, .bg-black.auto .list-group-item:focus, .bg-black .auto .list-group-item:focus, .bg-black.auto .list-group-item:active, .bg-black .auto .list-group-item:active, .bg-black.auto .list-group-item.active, .bg-black .auto .list-group-item.active { background-color: #131e26 !important; } .bg-primary { color: #f4f3f9; background-color: #7266ba; } .bg-primary.lt, .bg-primary .lt { background-color: #847abf; } .bg-primary.lter, .bg-primary .lter { background-color: #958dc6; } .bg-primary.dk, .bg-primary .dk { background-color: #6051b5; } .bg-primary.dker, .bg-primary .dker { background-color: #5244a9; } .bg-primary.bg, .bg-primary .bg { background-color: #7266ba; } .bg-primary a { color: #ffffff; } .bg-primary a:hover { color: #ffffff; } .bg-primary a.list-group-item:hover, .bg-primary a.list-group-item:focus { background-color: inherit; } .bg-primary .nav > li:hover > a, .bg-primary .nav > li:focus > a, .bg-primary .nav > li.active > a { color: #ffffff; background-color: #6051b5; } .bg-primary .nav > li > a { color: #f2f2f2; } .bg-primary .nav > li > a:hover, .bg-primary .nav > li > a:focus { background-color: #6658b8; } .bg-primary .nav .open > a { background-color: #6051b5; } .bg-primary .caret { border-top-color: #f4f3f9; border-bottom-color: #f4f3f9; } .bg-primary.navbar .nav > li.active > a { color: #ffffff; background-color: #6051b5; } .bg-primary .open > a, .bg-primary .open > a:hover, .bg-primary .open > a:focus { color: #ffffff; } .bg-primary .text-muted { color: #d6d3e6 !important; } .bg-primary .text-lt { color: #ffffff !important; } .bg-primary.auto .list-group-item, .bg-primary .auto .list-group-item { background-color: transparent; border-color: #6254b2 !important; } .bg-primary.auto .list-group-item:hover, .bg-primary .auto .list-group-item:hover, .bg-primary.auto .list-group-item:focus, .bg-primary .auto .list-group-item:focus, .bg-primary.auto .list-group-item:active, .bg-primary .auto .list-group-item:active, .bg-primary.auto .list-group-item.active, .bg-primary .auto .list-group-item.active { background-color: #6051b5 !important; } .bg-success { color: #c6efd0; background-color: #27c24c; } .bg-success.lt, .bg-success .lt { background-color: #31d257; } .bg-success.lter, .bg-success .lter { background-color: #48d46a; } .bg-success.dk, .bg-success .dk { background-color: #20af42; } .bg-success.dker, .bg-success .dker { background-color: #1a9c39; } .bg-success.bg, .bg-success .bg { background-color: #27c24c; } .bg-success a { color: #eefaf1; } .bg-success a:hover { color: #ffffff; } .bg-success a.list-group-item:hover, .bg-success a.list-group-item:focus { background-color: inherit; } .bg-success .nav > li:hover > a, .bg-success .nav > li:focus > a, .bg-success .nav > li.active > a { color: #ffffff; background-color: #20af42; } .bg-success .nav > li > a { color: #daf5e0; } .bg-success .nav > li > a:hover, .bg-success .nav > li > a:focus { background-color: #22b846; } .bg-success .nav .open > a { background-color: #20af42; } .bg-success .caret { border-top-color: #c6efd0; border-bottom-color: #c6efd0; } .bg-success.navbar .nav > li.active > a { color: #ffffff; background-color: #20af42; } .bg-success .open > a, .bg-success .open > a:hover, .bg-success .open > a:focus { color: #ffffff; } .bg-success .text-muted { color: #9ee4af !important; } .bg-success .text-lt { color: #ffffff !important; } .bg-success.auto .list-group-item, .bg-success .auto .list-group-item { background-color: transparent; border-color: #23ad44 !important; } .bg-success.auto .list-group-item:hover, .bg-success .auto .list-group-item:hover, .bg-success.auto .list-group-item:focus, .bg-success .auto .list-group-item:focus, .bg-success.auto .list-group-item:active, .bg-success .auto .list-group-item:active, .bg-success.auto .list-group-item.active, .bg-success .auto .list-group-item.active { background-color: #20af42 !important; } .bg-info { color: #dcf2f8; background-color: #23b7e5; } .bg-info.lt, .bg-info .lt { background-color: #3dbde5; } .bg-info.lter, .bg-info .lter { background-color: #55c3e6; } .bg-info.dk, .bg-info .dk { background-color: #16aad8; } .bg-info.dker, .bg-info .dker { background-color: #1199c4; } .bg-info.bg, .bg-info .bg { background-color: #23b7e5; } .bg-info a { color: #ffffff; } .bg-info a:hover { color: #ffffff; } .bg-info a.list-group-item:hover, .bg-info a.list-group-item:focus { background-color: inherit; } .bg-info .nav > li:hover > a, .bg-info .nav > li:focus > a, .bg-info .nav > li.active > a { color: #ffffff; background-color: #16aad8; } .bg-info .nav > li > a { color: #f2f2f2; } .bg-info .nav > li > a:hover, .bg-info .nav > li > a:focus { background-color: #17b2e2; } .bg-info .nav .open > a { background-color: #16aad8; } .bg-info .caret { border-top-color: #dcf2f8; border-bottom-color: #dcf2f8; } .bg-info.navbar .nav > li.active > a { color: #ffffff; background-color: #16aad8; } .bg-info .open > a, .bg-info .open > a:hover, .bg-info .open > a:focus { color: #ffffff; } .bg-info .text-muted { color: #b0e1f1 !important; } .bg-info .text-lt { color: #ffffff !important; } .bg-info.auto .list-group-item, .bg-info .auto .list-group-item { background-color: transparent; border-color: #19a9d5 !important; } .bg-info.auto .list-group-item:hover, .bg-info .auto .list-group-item:hover, .bg-info.auto .list-group-item:focus, .bg-info .auto .list-group-item:focus, .bg-info.auto .list-group-item:active, .bg-info .auto .list-group-item:active, .bg-info.auto .list-group-item.active, .bg-info .auto .list-group-item.active { background-color: #16aad8 !important; } .bg-warning { color: #fffefa; background-color: #fad733; } .bg-warning.lt, .bg-warning .lt { background-color: #f8da4e; } .bg-warning.lter, .bg-warning .lter { background-color: #f7de69; } .bg-warning.dk, .bg-warning .dk { background-color: #fcd417; } .bg-warning.dker, .bg-warning .dker { background-color: #face00; } .bg-warning.bg, .bg-warning .bg { background-color: #fad733; } .bg-warning a { color: #ffffff; } .bg-warning a:hover { color: #ffffff; } .bg-warning a.list-group-item:hover, .bg-warning a.list-group-item:focus { background-color: inherit; } .bg-warning .nav > li:hover > a, .bg-warning .nav > li:focus > a, .bg-warning .nav > li.active > a { color: #ffffff; background-color: #fcd417; } .bg-warning .nav > li > a { color: #f2f2f2; } .bg-warning .nav > li > a:hover, .bg-warning .nav > li > a:focus { background-color: #fcd621; } .bg-warning .nav .open > a { background-color: #fcd417; } .bg-warning .caret { border-top-color: #fffefa; border-bottom-color: #fffefa; } .bg-warning.navbar .nav > li.active > a { color: #ffffff; background-color: #fcd417; } .bg-warning .open > a, .bg-warning .open > a:hover, .bg-warning .open > a:focus { color: #ffffff; } .bg-warning .text-muted { color: #fbf2cb !important; } .bg-warning .text-lt { color: #ffffff !important; } .bg-warning.auto .list-group-item, .bg-warning .auto .list-group-item { background-color: transparent; border-color: #f9d21a !important; } .bg-warning.auto .list-group-item:hover, .bg-warning .auto .list-group-item:hover, .bg-warning.auto .list-group-item:focus, .bg-warning .auto .list-group-item:focus, .bg-warning.auto .list-group-item:active, .bg-warning .auto .list-group-item:active, .bg-warning.auto .list-group-item.active, .bg-warning .auto .list-group-item.active { background-color: #fcd417 !important; } .bg-danger { color: #ffffff; background-color: #f05050; } .bg-danger.lt, .bg-danger .lt { background-color: #f06a6a; } .bg-danger.lter, .bg-danger .lter { background-color: #f18282; } .bg-danger.dk, .bg-danger .dk { background-color: #f13636; } .bg-danger.dker, .bg-danger .dker { background-color: #f21b1b; } .bg-danger.bg, .bg-danger .bg { background-color: #f05050; } .bg-danger a { color: #ffffff; } .bg-danger a:hover { color: #ffffff; } .bg-danger a.list-group-item:hover, .bg-danger a.list-group-item:focus { background-color: inherit; } .bg-danger .nav > li:hover > a, .bg-danger .nav > li:focus > a, .bg-danger .nav > li.active > a { color: #ffffff; background-color: #f13636; } .bg-danger .nav > li > a { color: #f2f2f2; } .bg-danger .nav > li > a:hover, .bg-danger .nav > li > a:focus { background-color: #f13f3f; } .bg-danger .nav .open > a { background-color: #f13636; } .bg-danger .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .bg-danger.navbar .nav > li.active > a { color: #ffffff; background-color: #f13636; } .bg-danger .open > a, .bg-danger .open > a:hover, .bg-danger .open > a:focus { color: #ffffff; } .bg-danger .text-muted { color: #e6e6e6 !important; } .bg-danger .text-lt { color: #ffffff !important; } .bg-danger.auto .list-group-item, .bg-danger .auto .list-group-item { background-color: transparent; border-color: #ee3939 !important; } .bg-danger.auto .list-group-item:hover, .bg-danger .auto .list-group-item:hover, .bg-danger.auto .list-group-item:focus, .bg-danger .auto .list-group-item:focus, .bg-danger.auto .list-group-item:active, .bg-danger .auto .list-group-item:active, .bg-danger.auto .list-group-item.active, .bg-danger .auto .list-group-item.active { background-color: #f13636 !important; } .bg-white { color: #58666e; background-color: #fff; } .bg-white a { color: #363f44; } .bg-white a:hover { color: #1f2427; } .bg-white .text-muted { color: #98a6ad !important; } .bg-white .lt, .bg-white .lter, .bg-white .dk, .bg-white .dker { background-color: #fff; } .bg-white-only { background-color: #fff; } .bg-white-opacity { background-color: rgba(255, 255, 255, 0.5); } .bg-black-opacity { background-color: rgba(32, 43, 54, 0.5); } a.bg-light:hover { color: #363f44; } a.bg-primary:hover { background-color: #6254b2; } a.text-primary:hover { color: #6254b2; } .text-primary { color: #7266ba; } .text-primary-lt { color: #8278c2; } .text-primary-lter { color: #9289ca; } .text-primary-dk { color: #6254b2; } .text-primary-dker { color: #564aa3; } a.bg-info:hover { background-color: #19a9d5; } a.text-info:hover { color: #19a9d5; } .text-info { color: #23b7e5; } .text-info-lt { color: #3abee8; } .text-info-lter { color: #51c6ea; } .text-info-dk { color: #19a9d5; } .text-info-dker { color: #1797be; } a.bg-success:hover { background-color: #23ad44; } a.text-success:hover { color: #23ad44; } .text-success { color: #27c24c; } .text-success-lt { color: #2ed556; } .text-success-lter { color: #43d967; } .text-success-dk { color: #23ad44; } .text-success-dker { color: #1e983b; } a.bg-warning:hover { background-color: #f9d21a; } a.text-warning:hover { color: #f9d21a; } .text-warning { color: #fad733; } .text-warning-lt { color: #fbdc4c; } .text-warning-lter { color: #fbe165; } .text-warning-dk { color: #f9d21a; } .text-warning-dker { color: #f4ca06; } a.bg-danger:hover { background-color: #ee3939; } a.text-danger:hover { color: #ee3939; } .text-danger { color: #f05050; } .text-danger-lt { color: #f26767; } .text-danger-lter { color: #f47f7f; } .text-danger-dk { color: #ee3939; } .text-danger-dker { color: #ec2121; } a.bg-dark:hover { background-color: #2f3342; } a.text-dark:hover { color: #2f3342; } .text-dark { color: #3a3f51; } .text-dark-lt { color: #454b60; } .text-dark-lter { color: #4f566f; } .text-dark-dk { color: #2f3342; } .text-dark-dker { color: #252833; } a.bg-#000000:hover { background-color: #131e25; } a.text-#000000:hover { color: #131e25; } .text-#000000 { color: #1c2b36; } .text-#000000-lt { color: #253847; } .text-#000000-lter { color: #2d4658; } .text-#000000-dk { color: #131e25; } .text-#000000-dker { color: #0b1014; } .text-white { color: #fff; } .text-black { color: #000; } .text-muted { color: #98a6ad; } .pos-rlt { position: relative; } .pos-stc { position: static !important; } .pos-abt { position: absolute; } .pos-fix { position: fixed; } .show { visibility: visible; } .line { width: 100%; height: 2px; margin: 10px 0; overflow: hidden; font-size: 0; } .line-xs { margin: 0; } .line-lg { margin-top: 15px; margin-bottom: 15px; } .line-dashed { background-color: transparent; border-style: dashed !important; border-width: 0; } .no-line { border-width: 0; } .no-border, .no-borders { border-color: transparent; border-width: 0; } .no-radius { border-radius: 0; } .block { display: block; } .block.hide { display: none; } .inline { display: inline-block !important; } .none { display: none; } .pull-none { float: none; } .rounded { border-radius: 500px; } .clear { display: block; overflow: hidden; } .no-bg { color: inherit; background-color: transparent; } .no-select { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; } .l-h { line-height: 1.42857143; } .l-h-0x { line-height: 0; } .l-h-1x { line-height: 1.2; } .l-h-2x { line-height: 2em; } .l-s-1x { letter-spacing: 1; } .l-s-2x { letter-spacing: 2; } .l-s-3x { letter-spacing: 3; } .font-normal { font-weight: normal; } .font-thin { font-weight: 300; } .font-bold { font-weight: 700; } .text-3x { font-size: 3em; } .text-2x { font-size: 2em; } .text-lg { font-size: 18px; } .text-md { font-size: 16px; } .text-base { font-size: 14px; } .text-sm { font-size: 13px; } .text-xs { font-size: 12px; } .text-xxs { text-indent: -9999px; } .text-ellipsis { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .text-u-c { text-transform: uppercase; } .text-l-t { text-decoration: line-through; } .text-u-l { text-decoration: underline; } .text-active, .active > .text, .active > .auto .text { display: none !important; } .active > .text-active, .active > .auto .text-active { display: inline-block !important; } .box-shadow { box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05); } .box-shadow-lg { box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.05); } .text-shadow { font-size: 170px; text-shadow: 0 1px 0 #dee5e7, 0 2px 0 #fcfdfd, 0 5px 10px rgba(0, 0, 0, 0.125), 0 10px 20px rgba(0, 0, 0, 0.2); } .no-shadow { -webkit-box-shadow: none !important; box-shadow: none !important; } .wrapper-xs { padding: 5px; } .wrapper-sm { padding: 10px; } .wrapper { padding: 15px; } .wrapper-md { padding: 20px; } .wrapper-lg { padding: 30px; } .wrapper-xl { padding: 50px; } .padder-lg { padding-right: 30px; padding-left: 30px; } .padder-md { padding-right: 20px; padding-left: 20px; } .padder { padding-right: 15px; padding-left: 15px; } .padder-v { padding-top: 15px; padding-bottom: 15px; } .no-padder { padding: 0 !important; } .pull-in { margin-right: -15px; margin-left: -15px; } .pull-out { margin: -10px -15px; } .b { border: 1px solid rgba(0, 0, 0, 0.05); } .b-a { border: 1px solid #dee5e7; } .b-t { border-top: 1px solid #dee5e7; } .b-r { border-right: 1px solid #dee5e7; } .b-b { border-bottom: 1px solid #dee5e7; } .b-l { border-left: 1px solid #dee5e7; } .b-light { border-color: #edf1f2; } .b-dark { border-color: #3a3f51; } .b-black { border-color: #3a3f51; } .b-primary { border-color: #7266ba; } .b-success { border-color: #27c24c; } .b-info { border-color: #23b7e5; } .b-warning { border-color: #fad733; } .b-danger { border-color: #f05050; } .b-white { border-color: #ffffff; } .b-dashed { border-style: dashed !important; } .b-l-light { border-left-color: #edf1f2; } .b-l-dark { border-left-color: #3a3f51; } .b-l-black { border-left-color: #3a3f51; } .b-l-primary { border-left-color: #7266ba; } .b-l-success { border-left-color: #27c24c; } .b-l-info { border-left-color: #23b7e5; } .b-l-warning { border-left-color: #fad733; } .b-l-danger { border-left-color: #f05050; } .b-l-white { border-left-color: #ffffff; } .b-l-2x { border-left-width: 2px; } .b-l-3x { border-left-width: 3px; } .b-l-4x { border-left-width: 4px; } .b-l-5x { border-left-width: 5px; } .b-2x { border-width: 2px; } .b-3x { border-width: 3px; } .b-4x { border-width: 4px; } .b-5x { border-width: 5px; } .r { border-radius: 2px 2px 2px 2px; } .r-2x { border-radius: 4px; } .r-3x { border-radius: 6px; } .r-l { border-radius: 2px 0 0 2px; } .r-r { border-radius: 0 2px 2px 0; } .r-t { border-radius: 2px 2px 0 0; } .r-b { border-radius: 0 0 2px 2px; } .m-xxs { margin: 2px 4px; } .m-xs { margin: 5px; } .m-sm { margin: 10px; } .m { margin: 15px; } .m-md { margin: 20px; } .m-lg { margin: 30px; } .m-xl { margin: 50px; } .m-n { margin: 0 !important; } .m-l-none { margin-left: 0 !important; } .m-l-xs { margin-left: 5px; } .m-l-sm { margin-left: 10px; } .m-l { margin-left: 15px; } .m-l-md { margin-left: 20px; } .m-l-lg { margin-left: 30px; } .m-l-xl { margin-left: 40px; } .m-l-xxl { margin-left: 50px; } .m-l-n-xxs { margin-left: -1px; } .m-l-n-xs { margin-left: -5px; } .m-l-n-sm { margin-left: -10px; } .m-l-n { margin-left: -15px; } .m-l-n-md { margin-left: -20px; } .m-l-n-lg { margin-left: -30px; } .m-l-n-xl { margin-left: -40px; } .m-l-n-xxl { margin-left: -50px; } .m-t-none { margin-top: 0 !important; } .m-t-xxs { margin-top: 1px; } .m-t-xs { margin-top: 5px; } .m-t-sm { margin-top: 10px; } .m-t { margin-top: 15px; } .m-t-md { margin-top: 20px; } .m-t-lg { margin-top: 30px; } .m-t-xl { margin-top: 40px; } .m-t-xxl { margin-top: 50px; } .m-t-n-xxs { margin-top: -1px; } .m-t-n-xs { margin-top: -5px; } .m-t-n-sm { margin-top: -10px; } .m-t-n { margin-top: -15px; } .m-t-n-md { margin-top: -20px; } .m-t-n-lg { margin-top: -30px; } .m-t-n-xl { margin-top: -40px; } .m-t-n-xxl { margin-top: -50px; } .m-r-none { margin-right: 0 !important; } .m-r-xxs { margin-right: 1px; } .m-r-xs { margin-right: 5px; } .m-r-sm { margin-right: 10px; } .m-r { margin-right: 15px; } .m-r-md { margin-right: 20px; } .m-r-lg { margin-right: 30px; } .m-r-xl { margin-right: 40px; } .m-r-xxl { margin-right: 50px; } .m-r-n-xxs { margin-right: -1px; } .m-r-n-xs { margin-right: -5px; } .m-r-n-sm { margin-right: -10px; } .m-r-n { margin-right: -15px; } .m-r-n-md { margin-right: -20px; } .m-r-n-lg { margin-right: -30px; } .m-r-n-xl { margin-right: -40px; } .m-r-n-xxl { margin-right: -50px; } .m-b-none { margin-bottom: 0 !important; } .m-b-xxs { margin-bottom: 1px; } .m-b-xs { margin-bottom: 5px; } .m-b-sm { margin-bottom: 10px; } .m-b { margin-bottom: 15px; } .m-b-md { margin-bottom: 20px; } .m-b-lg { margin-bottom: 30px; } .m-b-xl { margin-bottom: 40px; } .m-b-xxl { margin-bottom: 50px; } .m-b-n-xxs { margin-bottom: -1px; } .m-b-n-xs { margin-bottom: -5px; } .m-b-n-sm { margin-bottom: -10px; } .m-b-n { margin-bottom: -15px; } .m-b-n-md { margin-bottom: -20px; } .m-b-n-lg { margin-bottom: -30px; } .m-b-n-xl { margin-bottom: -40px; } .m-b-n-xxl { margin-bottom: -50px; } .avatar { position: relative; display: block; white-space: nowrap; border-radius: 500px; } .avatar img { width: 100%; border-radius: 500px; } .avatar i { position: absolute; top: 0; left: 0; width: 10px; height: 10px; margin: 2px; border-style: solid; border-width: 2px; border-radius: 100%; } .avatar i.right { right: 0; left: auto; } .avatar i.bottom { top: auto; right: 0; bottom: 0; left: auto; } .avatar i.left { top: auto; bottom: 0; } .avatar i.on { background-color: #27c24c; } .avatar i.off { background-color: #98a6ad; } .avatar i.busy { background-color: #f05050; } .avatar i.away { background-color: #fad733; } .avatar.thumb-md i { width: 12px; height: 12px; margin: 3px; } .avatar.thumb-sm i { margin: 1px; } .avatar.thumb-xs i { margin: 0; } .w-1x { width: 1em; } .w-2x { width: 2em; } .w-3x { width: 3em; } .w-xxs { width: 60px; } .w-xs { width: 90px; } .w-sm { width: 150px; } .w { width: 200px; } .w-md { width: 240px; } .w-lg { width: 280px; } .w-xl { width: 320px; } .w-xxl { width: 360px; } .w-full { width: 100%; } .w-auto { width: auto; } .h-auto { height: auto; } .h-full { height: 100%; } .thumb-xl { display: inline-block; width: 128px; } .thumb-lg { display: inline-block; width: 96px; } .thumb-md { display: inline-block; width: 64px; } .thumb { display: inline-block; width: 50px; } .thumb-sm { display: inline-block; width: 40px; } .thumb-xs { display: inline-block; width: 34px; } .thumb-xxs { display: inline-block; width: 30px; } .thumb-wrapper { padding: 2px; border: 1px solid #dee5e7; } .thumb img, .thumb-xs img, .thumb-sm img, .thumb-md img, .thumb-lg img, .thumb-btn img { height: auto; max-width: 100%; vertical-align: middle; } .img-full { width: 100%; } .img-full img { width: 100%; } .scrollable { overflow-x: hidden; overflow-y: auto; -webkit-overflow-scrolling: touch; } .scrollable.hover { overflow-y: hidden !important; } .scrollable.hover:hover { overflow: visible !important; overflow-y: auto !important; } .smart .scrollable { overflow-y: auto !important; } .scroll-x, .scroll-y { overflow: hidden; -webkit-overflow-scrolling: touch; } .scroll-y { overflow-y: auto; } .scroll-x { overflow-x: auto; } .hover-action { display: none; } .hover-rotate { -webkit-transition: all 0.2s ease-in-out 0.1s; transition: all 0.2s ease-in-out 0.1s; } .hover-anchor:hover > .hover-action, .hover-anchor:focus > .hover-action, .hover-anchor:active > .hover-action { display: inherit; } .hover-anchor:hover > .hover-rotate, .hover-anchor:focus > .hover-rotate, .hover-anchor:active > .hover-rotate { -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .backdrop { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1050; } .backdrop.fade { opacity: 0; filter: alpha(opacity=0); } .backdrop.in { opacity: 0.8; filter: alpha(opacity=80); } /*desktop*/ @media screen and (min-width: 992px) { .col-lg-2-4 { float: left; width: 20.000%; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-sm.show { display: inherit !important; } .no-m-sm { margin: 0 !important; } } /*phone*/ @media (max-width: 767px) { .w-auto-xs { width: auto; } .shift { display: none !important; } .shift.in { display: block !important; } .row-2 [class*="col"] { float: left; width: 50%; } .row-2 .col-0 { clear: none; } .row-2 li:nth-child(odd) { margin-left: 0; clear: left; } .text-center-xs { text-align: center; } .text-left-xs { text-align: left; } .text-right-xs { text-align: right; } .no-border-xs { border-width: 0; } .pull-none-xs { float: none !important; } .pull-right-xs { float: right !important; } .pull-left-xs { float: left !important; } .dropdown-menu.pull-none-xs { left: 0; } .hidden-xs.show { display: inherit !important; } .wrapper-lg, .wrapper-md { padding: 15px; } .padder-lg, .padder-md { padding-right: 15px; padding-left: 15px; } .no-m-xs { margin: 0 !important; } } .butterbar { position: relative; height: 3px; margin-bottom: -3px; } .butterbar .bar { position: absolute; width: 100%; height: 0; text-indent: -9999px; background-color: #23b7e5; } .butterbar .bar:before { position: absolute; right: 50%; left: 50%; height: 3px; background-color: inherit; content: ""; } .butterbar.active { -webkit-animation: changebar 2.25s infinite 0.75s; -moz-animation: changebar 2.25s infinite 0.75s; animation: changebar 2.25s infinite 0.75s; } .butterbar.active .bar { -webkit-animation: changebar 2.25s infinite; -moz-animation: changebar 2.25s infinite; animation: changebar 2.25s infinite; } .butterbar.active .bar:before { -webkit-animation: movingbar 0.75s infinite; -moz-animation: movingbar 0.75s infinite; animation: movingbar 0.75s infinite; } /* Moving bar */ @-webkit-keyframes movingbar { 0% { right: 50%; left: 50%; } 99.9% { right: 0; left: 0; } 100% { right: 50%; left: 50%; } } @-moz-keyframes movingbar { 0% { right: 50%; left: 50%; } 99.9% { right: 0; left: 0; } 100% { right: 50%; left: 50%; } } @keyframes movingbar { 0% { right: 50%; left: 50%; } 99.9% { right: 0; left: 0; } 100% { right: 50%; left: 50%; } } /* change bar */ @-webkit-keyframes changebar { 0% { background-color: #23b7e5; } 33.3% { background-color: #23b7e5; } 33.33% { background-color: #fad733; } 66.6% { background-color: #fad733; } 66.66% { background-color: #7266ba; } 99.9% { background-color: #7266ba; } } @-moz-keyframes changebar { 0% { background-color: #23b7e5; } 33.3% { background-color: #23b7e5; } 33.33% { background-color: #fad733; } 66.6% { background-color: #fad733; } 66.66% { background-color: #7266ba; } 99.9% { background-color: #7266ba; } } @keyframes changebar { 0% { background-color: #23b7e5; } 33.3% { background-color: #23b7e5; } 33.33% { background-color: #fad733; } 66.6% { background-color: #fad733; } 66.66% { background-color: #7266ba; } 99.9% { background-color: #7266ba; } } ================================================ FILE: src/css/bootstrap.css ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } body { margin: 0; } article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } audio, canvas, progress, video { display: inline-block; vertical-align: baseline; } audio:not([controls]) { display: none; height: 0; } [hidden], template { display: none; } a { background-color: transparent; } a:active, a:hover { outline: 0; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } h1 { margin: .67em 0; font-size: 2em; } mark { color: #000; background: #ff0; } small { font-size: 80%; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -.5em; } sub { bottom: -.25em; } img { border: 0; } svg:not(:root) { overflow: hidden; } figure { margin: 1em 40px; } hr { height: 0; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } pre { overflow: auto; } code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } button, input, optgroup, select, textarea { margin: 0; font: inherit; color: inherit; } button { overflow: visible; } button, select { text-transform: none; } button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; cursor: pointer; } button[disabled], html input[disabled] { cursor: default; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } input { line-height: normal; } input[type="checkbox"], input[type="radio"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 0; } input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } fieldset { padding: .35em .625em .75em; margin: 0 2px; border: 1px solid #c0c0c0; } legend { padding: 0; border: 0; } textarea { overflow: auto; } optgroup { font-weight: bold; } table { border-spacing: 0; border-collapse: collapse; } td, th { padding: 0; } /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ @media print { *, *:before, *:after { color: #000 !important; text-shadow: none !important; background: transparent !important; -webkit-box-shadow: none !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } .navbar { display: none; } .btn > .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered th, .table-bordered td { border: 1px solid #ddd !important; } } @font-face { font-family: 'Glyphicons Halflings'; src: url('../fonts/glyphicons-halflings-regular.eot'); src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); } .glyphicon { position: relative; top: 1px; display: inline-block; font-family: 'Glyphicons Halflings'; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .glyphicon-asterisk:before { content: "\002a"; } .glyphicon-plus:before { content: "\002b"; } .glyphicon-euro:before, .glyphicon-eur:before { content: "\20ac"; } .glyphicon-minus:before { content: "\2212"; } .glyphicon-cloud:before { content: "\2601"; } .glyphicon-envelope:before { content: "\2709"; } .glyphicon-pencil:before { content: "\270f"; } .glyphicon-glass:before { content: "\e001"; } .glyphicon-music:before { content: "\e002"; } .glyphicon-search:before { content: "\e003"; } .glyphicon-heart:before { content: "\e005"; } .glyphicon-star:before { content: "\e006"; } .glyphicon-star-empty:before { content: "\e007"; } .glyphicon-user:before { content: "\e008"; } .glyphicon-film:before { content: "\e009"; } .glyphicon-th-large:before { content: "\e010"; } .glyphicon-th:before { content: "\e011"; } .glyphicon-th-list:before { content: "\e012"; } .glyphicon-ok:before { content: "\e013"; } .glyphicon-remove:before { content: "\e014"; } .glyphicon-zoom-in:before { content: "\e015"; } .glyphicon-zoom-out:before { content: "\e016"; } .glyphicon-off:before { content: "\e017"; } .glyphicon-signal:before { content: "\e018"; } .glyphicon-cog:before { content: "\e019"; } .glyphicon-trash:before { content: "\e020"; } .glyphicon-home:before { content: "\e021"; } .glyphicon-file:before { content: "\e022"; } .glyphicon-time:before { content: "\e023"; } .glyphicon-road:before { content: "\e024"; } .glyphicon-download-alt:before { content: "\e025"; } .glyphicon-download:before { content: "\e026"; } .glyphicon-upload:before { content: "\e027"; } .glyphicon-inbox:before { content: "\e028"; } .glyphicon-play-circle:before { content: "\e029"; } .glyphicon-repeat:before { content: "\e030"; } .glyphicon-refresh:before { content: "\e031"; } .glyphicon-list-alt:before { content: "\e032"; } .glyphicon-lock:before { content: "\e033"; } .glyphicon-flag:before { content: "\e034"; } .glyphicon-headphones:before { content: "\e035"; } .glyphicon-volume-off:before { content: "\e036"; } .glyphicon-volume-down:before { content: "\e037"; } .glyphicon-volume-up:before { content: "\e038"; } .glyphicon-qrcode:before { content: "\e039"; } .glyphicon-barcode:before { content: "\e040"; } .glyphicon-tag:before { content: "\e041"; } .glyphicon-tags:before { content: "\e042"; } .glyphicon-book:before { content: "\e043"; } .glyphicon-bookmark:before { content: "\e044"; } .glyphicon-print:before { content: "\e045"; } .glyphicon-camera:before { content: "\e046"; } .glyphicon-font:before { content: "\e047"; } .glyphicon-bold:before { content: "\e048"; } .glyphicon-italic:before { content: "\e049"; } .glyphicon-text-height:before { content: "\e050"; } .glyphicon-text-width:before { content: "\e051"; } .glyphicon-align-left:before { content: "\e052"; } .glyphicon-align-center:before { content: "\e053"; } .glyphicon-align-right:before { content: "\e054"; } .glyphicon-align-justify:before { content: "\e055"; } .glyphicon-list:before { content: "\e056"; } .glyphicon-indent-left:before { content: "\e057"; } .glyphicon-indent-right:before { content: "\e058"; } .glyphicon-facetime-video:before { content: "\e059"; } .glyphicon-picture:before { content: "\e060"; } .glyphicon-map-marker:before { content: "\e062"; } .glyphicon-adjust:before { content: "\e063"; } .glyphicon-tint:before { content: "\e064"; } .glyphicon-edit:before { content: "\e065"; } .glyphicon-share:before { content: "\e066"; } .glyphicon-check:before { content: "\e067"; } .glyphicon-move:before { content: "\e068"; } .glyphicon-step-backward:before { content: "\e069"; } .glyphicon-fast-backward:before { content: "\e070"; } .glyphicon-backward:before { content: "\e071"; } .glyphicon-play:before { content: "\e072"; } .glyphicon-pause:before { content: "\e073"; } .glyphicon-stop:before { content: "\e074"; } .glyphicon-forward:before { content: "\e075"; } .glyphicon-fast-forward:before { content: "\e076"; } .glyphicon-step-forward:before { content: "\e077"; } .glyphicon-eject:before { content: "\e078"; } .glyphicon-chevron-left:before { content: "\e079"; } .glyphicon-chevron-right:before { content: "\e080"; } .glyphicon-plus-sign:before { content: "\e081"; } .glyphicon-minus-sign:before { content: "\e082"; } .glyphicon-remove-sign:before { content: "\e083"; } .glyphicon-ok-sign:before { content: "\e084"; } .glyphicon-question-sign:before { content: "\e085"; } .glyphicon-info-sign:before { content: "\e086"; } .glyphicon-screenshot:before { content: "\e087"; } .glyphicon-remove-circle:before { content: "\e088"; } .glyphicon-ok-circle:before { content: "\e089"; } .glyphicon-ban-circle:before { content: "\e090"; } .glyphicon-arrow-left:before { content: "\e091"; } .glyphicon-arrow-right:before { content: "\e092"; } .glyphicon-arrow-up:before { content: "\e093"; } .glyphicon-arrow-down:before { content: "\e094"; } .glyphicon-share-alt:before { content: "\e095"; } .glyphicon-resize-full:before { content: "\e096"; } .glyphicon-resize-small:before { content: "\e097"; } .glyphicon-exclamation-sign:before { content: "\e101"; } .glyphicon-gift:before { content: "\e102"; } .glyphicon-leaf:before { content: "\e103"; } .glyphicon-fire:before { content: "\e104"; } .glyphicon-eye-open:before { content: "\e105"; } .glyphicon-eye-close:before { content: "\e106"; } .glyphicon-warning-sign:before { content: "\e107"; } .glyphicon-plane:before { content: "\e108"; } .glyphicon-calendar:before { content: "\e109"; } .glyphicon-random:before { content: "\e110"; } .glyphicon-comment:before { content: "\e111"; } .glyphicon-magnet:before { content: "\e112"; } .glyphicon-chevron-up:before { content: "\e113"; } .glyphicon-chevron-down:before { content: "\e114"; } .glyphicon-retweet:before { content: "\e115"; } .glyphicon-shopping-cart:before { content: "\e116"; } .glyphicon-folder-close:before { content: "\e117"; } .glyphicon-folder-open:before { content: "\e118"; } .glyphicon-resize-vertical:before { content: "\e119"; } .glyphicon-resize-horizontal:before { content: "\e120"; } .glyphicon-hdd:before { content: "\e121"; } .glyphicon-bullhorn:before { content: "\e122"; } .glyphicon-bell:before { content: "\e123"; } .glyphicon-certificate:before { content: "\e124"; } .glyphicon-thumbs-up:before { content: "\e125"; } .glyphicon-thumbs-down:before { content: "\e126"; } .glyphicon-hand-right:before { content: "\e127"; } .glyphicon-hand-left:before { content: "\e128"; } .glyphicon-hand-up:before { content: "\e129"; } .glyphicon-hand-down:before { content: "\e130"; } .glyphicon-circle-arrow-right:before { content: "\e131"; } .glyphicon-circle-arrow-left:before { content: "\e132"; } .glyphicon-circle-arrow-up:before { content: "\e133"; } .glyphicon-circle-arrow-down:before { content: "\e134"; } .glyphicon-globe:before { content: "\e135"; } .glyphicon-wrench:before { content: "\e136"; } .glyphicon-tasks:before { content: "\e137"; } .glyphicon-filter:before { content: "\e138"; } .glyphicon-briefcase:before { content: "\e139"; } .glyphicon-fullscreen:before { content: "\e140"; } .glyphicon-dashboard:before { content: "\e141"; } .glyphicon-paperclip:before { content: "\e142"; } .glyphicon-heart-empty:before { content: "\e143"; } .glyphicon-link:before { content: "\e144"; } .glyphicon-phone:before { content: "\e145"; } .glyphicon-pushpin:before { content: "\e146"; } .glyphicon-usd:before { content: "\e148"; } .glyphicon-gbp:before { content: "\e149"; } .glyphicon-sort:before { content: "\e150"; } .glyphicon-sort-by-alphabet:before { content: "\e151"; } .glyphicon-sort-by-alphabet-alt:before { content: "\e152"; } .glyphicon-sort-by-order:before { content: "\e153"; } .glyphicon-sort-by-order-alt:before { content: "\e154"; } .glyphicon-sort-by-attributes:before { content: "\e155"; } .glyphicon-sort-by-attributes-alt:before { content: "\e156"; } .glyphicon-unchecked:before { content: "\e157"; } .glyphicon-expand:before { content: "\e158"; } .glyphicon-collapse-down:before { content: "\e159"; } .glyphicon-collapse-up:before { content: "\e160"; } .glyphicon-log-in:before { content: "\e161"; } .glyphicon-flash:before { content: "\e162"; } .glyphicon-log-out:before { content: "\e163"; } .glyphicon-new-window:before { content: "\e164"; } .glyphicon-record:before { content: "\e165"; } .glyphicon-save:before { content: "\e166"; } .glyphicon-open:before { content: "\e167"; } .glyphicon-saved:before { content: "\e168"; } .glyphicon-import:before { content: "\e169"; } .glyphicon-export:before { content: "\e170"; } .glyphicon-send:before { content: "\e171"; } .glyphicon-floppy-disk:before { content: "\e172"; } .glyphicon-floppy-saved:before { content: "\e173"; } .glyphicon-floppy-remove:before { content: "\e174"; } .glyphicon-floppy-save:before { content: "\e175"; } .glyphicon-floppy-open:before { content: "\e176"; } .glyphicon-credit-card:before { content: "\e177"; } .glyphicon-transfer:before { content: "\e178"; } .glyphicon-cutlery:before { content: "\e179"; } .glyphicon-header:before { content: "\e180"; } .glyphicon-compressed:before { content: "\e181"; } .glyphicon-earphone:before { content: "\e182"; } .glyphicon-phone-alt:before { content: "\e183"; } .glyphicon-tower:before { content: "\e184"; } .glyphicon-stats:before { content: "\e185"; } .glyphicon-sd-video:before { content: "\e186"; } .glyphicon-hd-video:before { content: "\e187"; } .glyphicon-subtitles:before { content: "\e188"; } .glyphicon-sound-stereo:before { content: "\e189"; } .glyphicon-sound-dolby:before { content: "\e190"; } .glyphicon-sound-5-1:before { content: "\e191"; } .glyphicon-sound-6-1:before { content: "\e192"; } .glyphicon-sound-7-1:before { content: "\e193"; } .glyphicon-copyright-mark:before { content: "\e194"; } .glyphicon-registration-mark:before { content: "\e195"; } .glyphicon-cloud-download:before { content: "\e197"; } .glyphicon-cloud-upload:before { content: "\e198"; } .glyphicon-tree-conifer:before { content: "\e199"; } .glyphicon-tree-deciduous:before { content: "\e200"; } .glyphicon-cd:before { content: "\e201"; } .glyphicon-save-file:before { content: "\e202"; } .glyphicon-open-file:before { content: "\e203"; } .glyphicon-level-up:before { content: "\e204"; } .glyphicon-copy:before { content: "\e205"; } .glyphicon-paste:before { content: "\e206"; } .glyphicon-alert:before { content: "\e209"; } .glyphicon-equalizer:before { content: "\e210"; } .glyphicon-king:before { content: "\e211"; } .glyphicon-queen:before { content: "\e212"; } .glyphicon-pawn:before { content: "\e213"; } .glyphicon-bishop:before { content: "\e214"; } .glyphicon-knight:before { content: "\e215"; } .glyphicon-baby-formula:before { content: "\e216"; } .glyphicon-tent:before { content: "\26fa"; } .glyphicon-blackboard:before { content: "\e218"; } .glyphicon-bed:before { content: "\e219"; } .glyphicon-apple:before { content: "\f8ff"; } .glyphicon-erase:before { content: "\e221"; } .glyphicon-hourglass:before { content: "\231b"; } .glyphicon-lamp:before { content: "\e223"; } .glyphicon-duplicate:before { content: "\e224"; } .glyphicon-piggy-bank:before { content: "\e225"; } .glyphicon-scissors:before { content: "\e226"; } .glyphicon-bitcoin:before { content: "\e227"; } .glyphicon-btc:before { content: "\e227"; } .glyphicon-xbt:before { content: "\e227"; } .glyphicon-yen:before { content: "\00a5"; } .glyphicon-jpy:before { content: "\00a5"; } .glyphicon-ruble:before { content: "\20bd"; } .glyphicon-rub:before { content: "\20bd"; } .glyphicon-scale:before { content: "\e230"; } .glyphicon-ice-lolly:before { content: "\e231"; } .glyphicon-ice-lolly-tasted:before { content: "\e232"; } .glyphicon-education:before { content: "\e233"; } .glyphicon-option-horizontal:before { content: "\e234"; } .glyphicon-option-vertical:before { content: "\e235"; } .glyphicon-menu-hamburger:before { content: "\e236"; } .glyphicon-modal-window:before { content: "\e237"; } .glyphicon-oil:before { content: "\e238"; } .glyphicon-grain:before { content: "\e239"; } .glyphicon-sunglasses:before { content: "\e240"; } .glyphicon-text-size:before { content: "\e241"; } .glyphicon-text-color:before { content: "\e242"; } .glyphicon-text-background:before { content: "\e243"; } .glyphicon-object-align-top:before { content: "\e244"; } .glyphicon-object-align-bottom:before { content: "\e245"; } .glyphicon-object-align-horizontal:before { content: "\e246"; } .glyphicon-object-align-left:before { content: "\e247"; } .glyphicon-object-align-vertical:before { content: "\e248"; } .glyphicon-object-align-right:before { content: "\e249"; } .glyphicon-triangle-right:before { content: "\e250"; } .glyphicon-triangle-left:before { content: "\e251"; } .glyphicon-triangle-bottom:before { content: "\e252"; } .glyphicon-triangle-top:before { content: "\e253"; } .glyphicon-console:before { content: "\e254"; } .glyphicon-superscript:before { content: "\e255"; } .glyphicon-subscript:before { content: "\e256"; } .glyphicon-menu-left:before { content: "\e257"; } .glyphicon-menu-right:before { content: "\e258"; } .glyphicon-menu-down:before { content: "\e259"; } .glyphicon-menu-up:before { content: "\e260"; } * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { font-size: 10px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.42857143; color: #333; background-color: #fff; } input, button, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } a { color: #337ab7; text-decoration: none; } a:hover, a:focus { color: #23527c; text-decoration: underline; } a:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } figure { margin: 0; } img { vertical-align: middle; } .img-responsive, .thumbnail > img, .thumbnail a > img, .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; max-width: 100%; height: auto; } .img-rounded { border-radius: 6px; } .img-thumbnail { display: inline-block; max-width: 100%; height: auto; padding: 4px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .img-circle { border-radius: 50%; } hr { margin-top: 20px; margin-bottom: 20px; border: 0; border-top: 1px solid #eee; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; } .sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; } [role="button"] { cursor: pointer; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { font-weight: normal; line-height: 1; color: #777; } h1, .h1, h2, .h2, h3, .h3 { margin-top: 20px; margin-bottom: 10px; } h1 small, .h1 small, h2 small, .h2 small, h3 small, .h3 small, h1 .small, .h1 .small, h2 .small, .h2 .small, h3 .small, .h3 .small { font-size: 65%; } h4, .h4, h5, .h5, h6, .h6 { margin-top: 10px; margin-bottom: 10px; } h4 small, .h4 small, h5 small, .h5 small, h6 small, .h6 small, h4 .small, .h4 .small, h5 .small, .h5 .small, h6 .small, .h6 .small { font-size: 75%; } h1, .h1 { font-size: 36px; } h2, .h2 { font-size: 30px; } h3, .h3 { font-size: 24px; } h4, .h4 { font-size: 18px; } h5, .h5 { font-size: 14px; } h6, .h6 { font-size: 12px; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 16px; font-weight: 300; line-height: 1.4; } @media (min-width: 768px) { .lead { font-size: 21px; } } small, .small { font-size: 85%; } mark, .mark { padding: .2em; background-color: #fcf8e3; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .text-justify { text-align: justify; } .text-nowrap { white-space: nowrap; } .text-lowercase { text-transform: lowercase; } .text-uppercase { text-transform: uppercase; } .text-capitalize { text-transform: capitalize; } .text-muted { color: #777; } .text-primary { color: #337ab7; } a.text-primary:hover, a.text-primary:focus { color: #286090; } .text-success { color: #3c763d; } a.text-success:hover, a.text-success:focus { color: #2b542c; } .text-info { color: #31708f; } a.text-info:hover, a.text-info:focus { color: #245269; } .text-warning { color: #8a6d3b; } a.text-warning:hover, a.text-warning:focus { color: #66512c; } .text-danger { color: #a94442; } a.text-danger:hover, a.text-danger:focus { color: #843534; } .bg-primary { color: #fff; background-color: #337ab7; } a.bg-primary:hover, a.bg-primary:focus { background-color: #286090; } .bg-success { background-color: #dff0d8; } a.bg-success:hover, a.bg-success:focus { background-color: #c1e2b3; } .bg-info { background-color: #d9edf7; } a.bg-info:hover, a.bg-info:focus { background-color: #afd9ee; } .bg-warning { background-color: #fcf8e3; } a.bg-warning:hover, a.bg-warning:focus { background-color: #f7ecb5; } .bg-danger { background-color: #f2dede; } a.bg-danger:hover, a.bg-danger:focus { background-color: #e4b9b9; } .page-header { padding-bottom: 9px; margin: 40px 0 20px; border-bottom: 1px solid #eee; } ul, ol { margin-top: 0; margin-bottom: 10px; } ul ul, ol ul, ul ol, ol ol { margin-bottom: 0; } .list-unstyled { padding-left: 0; list-style: none; } .list-inline { padding-left: 0; margin-left: -5px; list-style: none; } .list-inline > li { display: inline-block; padding-right: 5px; padding-left: 5px; } dl { margin-top: 0; margin-bottom: 20px; } dt, dd { line-height: 1.42857143; } dt { font-weight: bold; } dd { margin-left: 0; } @media (min-width: 768px) { .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #777; } .initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 10px 20px; margin: 0 0 20px; font-size: 17.5px; border-left: 5px solid #eee; } blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child { margin-bottom: 0; } blockquote footer, blockquote small, blockquote .small { display: block; font-size: 80%; line-height: 1.42857143; color: #777; } blockquote footer:before, blockquote small:before, blockquote .small:before { content: '\2014 \00A0'; } .blockquote-reverse, blockquote.pull-right { padding-right: 15px; padding-left: 0; text-align: right; border-right: 5px solid #eee; border-left: 0; } .blockquote-reverse footer:before, blockquote.pull-right footer:before, .blockquote-reverse small:before, blockquote.pull-right small:before, .blockquote-reverse .small:before, blockquote.pull-right .small:before { content: ''; } .blockquote-reverse footer:after, blockquote.pull-right footer:after, .blockquote-reverse small:after, blockquote.pull-right small:after, .blockquote-reverse .small:after, blockquote.pull-right .small:after { content: '\00A0 \2014'; } address { margin-bottom: 20px; font-style: normal; line-height: 1.42857143; } code, kbd, pre, samp { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } code { padding: 2px 4px; font-size: 90%; color: #c7254e; background-color: #f9f2f4; border-radius: 4px; } kbd { padding: 2px 4px; font-size: 90%; color: #fff; background-color: #333; border-radius: 3px; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); } kbd kbd { padding: 0; font-size: 100%; font-weight: bold; -webkit-box-shadow: none; box-shadow: none; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 1.42857143; color: #333; word-break: break-all; word-wrap: break-word; background-color: #f5f5f5; border: 1px solid #ccc; border-radius: 4px; } pre code { padding: 0; font-size: inherit; color: inherit; white-space: pre-wrap; background-color: transparent; border-radius: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } .container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } @media (min-width: 768px) { .container { width: 750px; } } @media (min-width: 992px) { .container { width: 970px; } } @media (min-width: 1200px) { .container { width: 1170px; } } .container-fluid { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } .row { margin-right: -15px; margin-left: -15px; } .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { float: left; } .col-xs-12 { width: 100%; } .col-xs-11 { width: 91.66666667%; } .col-xs-10 { width: 83.33333333%; } .col-xs-9 { width: 75%; } .col-xs-8 { width: 66.66666667%; } .col-xs-7 { width: 58.33333333%; } .col-xs-6 { width: 50%; } .col-xs-5 { width: 41.66666667%; } .col-xs-4 { width: 33.33333333%; } .col-xs-3 { width: 25%; } .col-xs-2 { width: 16.66666667%; } .col-xs-1 { width: 8.33333333%; } .col-xs-pull-12 { right: 100%; } .col-xs-pull-11 { right: 91.66666667%; } .col-xs-pull-10 { right: 83.33333333%; } .col-xs-pull-9 { right: 75%; } .col-xs-pull-8 { right: 66.66666667%; } .col-xs-pull-7 { right: 58.33333333%; } .col-xs-pull-6 { right: 50%; } .col-xs-pull-5 { right: 41.66666667%; } .col-xs-pull-4 { right: 33.33333333%; } .col-xs-pull-3 { right: 25%; } .col-xs-pull-2 { right: 16.66666667%; } .col-xs-pull-1 { right: 8.33333333%; } .col-xs-pull-0 { right: auto; } .col-xs-push-12 { left: 100%; } .col-xs-push-11 { left: 91.66666667%; } .col-xs-push-10 { left: 83.33333333%; } .col-xs-push-9 { left: 75%; } .col-xs-push-8 { left: 66.66666667%; } .col-xs-push-7 { left: 58.33333333%; } .col-xs-push-6 { left: 50%; } .col-xs-push-5 { left: 41.66666667%; } .col-xs-push-4 { left: 33.33333333%; } .col-xs-push-3 { left: 25%; } .col-xs-push-2 { left: 16.66666667%; } .col-xs-push-1 { left: 8.33333333%; } .col-xs-push-0 { left: auto; } .col-xs-offset-12 { margin-left: 100%; } .col-xs-offset-11 { margin-left: 91.66666667%; } .col-xs-offset-10 { margin-left: 83.33333333%; } .col-xs-offset-9 { margin-left: 75%; } .col-xs-offset-8 { margin-left: 66.66666667%; } .col-xs-offset-7 { margin-left: 58.33333333%; } .col-xs-offset-6 { margin-left: 50%; } .col-xs-offset-5 { margin-left: 41.66666667%; } .col-xs-offset-4 { margin-left: 33.33333333%; } .col-xs-offset-3 { margin-left: 25%; } .col-xs-offset-2 { margin-left: 16.66666667%; } .col-xs-offset-1 { margin-left: 8.33333333%; } .col-xs-offset-0 { margin-left: 0; } @media (min-width: 768px) { .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { float: left; } .col-sm-12 { width: 100%; } .col-sm-11 { width: 91.66666667%; } .col-sm-10 { width: 83.33333333%; } .col-sm-9 { width: 75%; } .col-sm-8 { width: 66.66666667%; } .col-sm-7 { width: 58.33333333%; } .col-sm-6 { width: 50%; } .col-sm-5 { width: 41.66666667%; } .col-sm-4 { width: 33.33333333%; } .col-sm-3 { width: 25%; } .col-sm-2 { width: 16.66666667%; } .col-sm-1 { width: 8.33333333%; } .col-sm-pull-12 { right: 100%; } .col-sm-pull-11 { right: 91.66666667%; } .col-sm-pull-10 { right: 83.33333333%; } .col-sm-pull-9 { right: 75%; } .col-sm-pull-8 { right: 66.66666667%; } .col-sm-pull-7 { right: 58.33333333%; } .col-sm-pull-6 { right: 50%; } .col-sm-pull-5 { right: 41.66666667%; } .col-sm-pull-4 { right: 33.33333333%; } .col-sm-pull-3 { right: 25%; } .col-sm-pull-2 { right: 16.66666667%; } .col-sm-pull-1 { right: 8.33333333%; } .col-sm-pull-0 { right: auto; } .col-sm-push-12 { left: 100%; } .col-sm-push-11 { left: 91.66666667%; } .col-sm-push-10 { left: 83.33333333%; } .col-sm-push-9 { left: 75%; } .col-sm-push-8 { left: 66.66666667%; } .col-sm-push-7 { left: 58.33333333%; } .col-sm-push-6 { left: 50%; } .col-sm-push-5 { left: 41.66666667%; } .col-sm-push-4 { left: 33.33333333%; } .col-sm-push-3 { left: 25%; } .col-sm-push-2 { left: 16.66666667%; } .col-sm-push-1 { left: 8.33333333%; } .col-sm-push-0 { left: auto; } .col-sm-offset-12 { margin-left: 100%; } .col-sm-offset-11 { margin-left: 91.66666667%; } .col-sm-offset-10 { margin-left: 83.33333333%; } .col-sm-offset-9 { margin-left: 75%; } .col-sm-offset-8 { margin-left: 66.66666667%; } .col-sm-offset-7 { margin-left: 58.33333333%; } .col-sm-offset-6 { margin-left: 50%; } .col-sm-offset-5 { margin-left: 41.66666667%; } .col-sm-offset-4 { margin-left: 33.33333333%; } .col-sm-offset-3 { margin-left: 25%; } .col-sm-offset-2 { margin-left: 16.66666667%; } .col-sm-offset-1 { margin-left: 8.33333333%; } .col-sm-offset-0 { margin-left: 0; } } @media (min-width: 992px) { .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { float: left; } .col-md-12 { width: 100%; } .col-md-11 { width: 91.66666667%; } .col-md-10 { width: 83.33333333%; } .col-md-9 { width: 75%; } .col-md-8 { width: 66.66666667%; } .col-md-7 { width: 58.33333333%; } .col-md-6 { width: 50%; } .col-md-5 { width: 41.66666667%; } .col-md-4 { width: 33.33333333%; } .col-md-3 { width: 25%; } .col-md-2 { width: 16.66666667%; } .col-md-1 { width: 8.33333333%; } .col-md-pull-12 { right: 100%; } .col-md-pull-11 { right: 91.66666667%; } .col-md-pull-10 { right: 83.33333333%; } .col-md-pull-9 { right: 75%; } .col-md-pull-8 { right: 66.66666667%; } .col-md-pull-7 { right: 58.33333333%; } .col-md-pull-6 { right: 50%; } .col-md-pull-5 { right: 41.66666667%; } .col-md-pull-4 { right: 33.33333333%; } .col-md-pull-3 { right: 25%; } .col-md-pull-2 { right: 16.66666667%; } .col-md-pull-1 { right: 8.33333333%; } .col-md-pull-0 { right: auto; } .col-md-push-12 { left: 100%; } .col-md-push-11 { left: 91.66666667%; } .col-md-push-10 { left: 83.33333333%; } .col-md-push-9 { left: 75%; } .col-md-push-8 { left: 66.66666667%; } .col-md-push-7 { left: 58.33333333%; } .col-md-push-6 { left: 50%; } .col-md-push-5 { left: 41.66666667%; } .col-md-push-4 { left: 33.33333333%; } .col-md-push-3 { left: 25%; } .col-md-push-2 { left: 16.66666667%; } .col-md-push-1 { left: 8.33333333%; } .col-md-push-0 { left: auto; } .col-md-offset-12 { margin-left: 100%; } .col-md-offset-11 { margin-left: 91.66666667%; } .col-md-offset-10 { margin-left: 83.33333333%; } .col-md-offset-9 { margin-left: 75%; } .col-md-offset-8 { margin-left: 66.66666667%; } .col-md-offset-7 { margin-left: 58.33333333%; } .col-md-offset-6 { margin-left: 50%; } .col-md-offset-5 { margin-left: 41.66666667%; } .col-md-offset-4 { margin-left: 33.33333333%; } .col-md-offset-3 { margin-left: 25%; } .col-md-offset-2 { margin-left: 16.66666667%; } .col-md-offset-1 { margin-left: 8.33333333%; } .col-md-offset-0 { margin-left: 0; } } @media (min-width: 1200px) { .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { float: left; } .col-lg-12 { width: 100%; } .col-lg-11 { width: 91.66666667%; } .col-lg-10 { width: 83.33333333%; } .col-lg-9 { width: 75%; } .col-lg-8 { width: 66.66666667%; } .col-lg-7 { width: 58.33333333%; } .col-lg-6 { width: 50%; } .col-lg-5 { width: 41.66666667%; } .col-lg-4 { width: 33.33333333%; } .col-lg-3 { width: 25%; } .col-lg-2 { width: 16.66666667%; } .col-lg-1 { width: 8.33333333%; } .col-lg-pull-12 { right: 100%; } .col-lg-pull-11 { right: 91.66666667%; } .col-lg-pull-10 { right: 83.33333333%; } .col-lg-pull-9 { right: 75%; } .col-lg-pull-8 { right: 66.66666667%; } .col-lg-pull-7 { right: 58.33333333%; } .col-lg-pull-6 { right: 50%; } .col-lg-pull-5 { right: 41.66666667%; } .col-lg-pull-4 { right: 33.33333333%; } .col-lg-pull-3 { right: 25%; } .col-lg-pull-2 { right: 16.66666667%; } .col-lg-pull-1 { right: 8.33333333%; } .col-lg-pull-0 { right: auto; } .col-lg-push-12 { left: 100%; } .col-lg-push-11 { left: 91.66666667%; } .col-lg-push-10 { left: 83.33333333%; } .col-lg-push-9 { left: 75%; } .col-lg-push-8 { left: 66.66666667%; } .col-lg-push-7 { left: 58.33333333%; } .col-lg-push-6 { left: 50%; } .col-lg-push-5 { left: 41.66666667%; } .col-lg-push-4 { left: 33.33333333%; } .col-lg-push-3 { left: 25%; } .col-lg-push-2 { left: 16.66666667%; } .col-lg-push-1 { left: 8.33333333%; } .col-lg-push-0 { left: auto; } .col-lg-offset-12 { margin-left: 100%; } .col-lg-offset-11 { margin-left: 91.66666667%; } .col-lg-offset-10 { margin-left: 83.33333333%; } .col-lg-offset-9 { margin-left: 75%; } .col-lg-offset-8 { margin-left: 66.66666667%; } .col-lg-offset-7 { margin-left: 58.33333333%; } .col-lg-offset-6 { margin-left: 50%; } .col-lg-offset-5 { margin-left: 41.66666667%; } .col-lg-offset-4 { margin-left: 33.33333333%; } .col-lg-offset-3 { margin-left: 25%; } .col-lg-offset-2 { margin-left: 16.66666667%; } .col-lg-offset-1 { margin-left: 8.33333333%; } .col-lg-offset-0 { margin-left: 0; } } table { background-color: transparent; } caption { padding-top: 8px; padding-bottom: 8px; color: #777; text-align: left; } th { text-align: left; } .table { width: 100%; max-width: 100%; margin-bottom: 20px; } .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd; } .table > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #ddd; } .table > caption + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td { border-top: 0; } .table > tbody + tbody { border-top: 2px solid #ddd; } .table .table { background-color: #fff; } .table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td, .table-condensed > tfoot > tr > td { padding: 5px; } .table-bordered { border: 1px solid #ddd; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #ddd; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table-striped > tbody > tr:nth-of-type(odd) { background-color: #f9f9f9; } .table-hover > tbody > tr:hover { background-color: #f5f5f5; } table col[class*="col-"] { position: static; display: table-column; float: none; } table td[class*="col-"], table th[class*="col-"] { position: static; display: table-cell; float: none; } .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th { background-color: #f5f5f5; } .table-hover > tbody > tr > td.active:hover, .table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { background-color: #e8e8e8; } .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th { background-color: #dff0d8; } .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { background-color: #d0e9c6; } .table > thead > tr > td.info, .table > tbody > tr > td.info, .table > tfoot > tr > td.info, .table > thead > tr > th.info, .table > tbody > tr > th.info, .table > tfoot > tr > th.info, .table > thead > tr.info > td, .table > tbody > tr.info > td, .table > tfoot > tr.info > td, .table > thead > tr.info > th, .table > tbody > tr.info > th, .table > tfoot > tr.info > th { background-color: #d9edf7; } .table-hover > tbody > tr > td.info:hover, .table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { background-color: #c4e3f3; } .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th { background-color: #fcf8e3; } .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { background-color: #faf2cc; } .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { background-color: #f2dede; } .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { background-color: #ebcccc; } .table-responsive { min-height: .01%; overflow-x: auto; } @media screen and (max-width: 767px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-y: hidden; -ms-overflow-style: -ms-autohiding-scrollbar; border: 1px solid #ddd; } .table-responsive > .table { margin-bottom: 0; } .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td { white-space: nowrap; } .table-responsive > .table-bordered { border: 0; } .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td { border-bottom: 0; } } fieldset { min-width: 0; padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: inherit; color: #333; border: 0; border-bottom: 1px solid #e5e5e5; } label { display: inline-block; max-width: 100%; margin-bottom: 5px; font-weight: bold; } input[type="search"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; line-height: normal; } input[type="file"] { display: block; } input[type="range"] { display: block; width: 100%; } select[multiple], select[size] { height: auto; } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } output { display: block; padding-top: 7px; font-size: 14px; line-height: 1.42857143; color: #555; } .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } .form-control:focus { border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); } .form-control::-moz-placeholder { color: #999; opacity: 1; } .form-control:-ms-input-placeholder { color: #999; } .form-control::-webkit-input-placeholder { color: #999; } .form-control::-ms-expand { background-color: transparent; border: 0; } .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { background-color: #eee; opacity: 1; } .form-control[disabled], fieldset[disabled] .form-control { cursor: not-allowed; } textarea.form-control { height: auto; } input[type="search"] { -webkit-appearance: none; } @media screen and (-webkit-min-device-pixel-ratio: 0) { input[type="date"].form-control, input[type="time"].form-control, input[type="datetime-local"].form-control, input[type="month"].form-control { line-height: 34px; } input[type="date"].input-sm, input[type="time"].input-sm, input[type="datetime-local"].input-sm, input[type="month"].input-sm, .input-group-sm input[type="date"], .input-group-sm input[type="time"], .input-group-sm input[type="datetime-local"], .input-group-sm input[type="month"] { line-height: 30px; } input[type="date"].input-lg, input[type="time"].input-lg, input[type="datetime-local"].input-lg, input[type="month"].input-lg, .input-group-lg input[type="date"], .input-group-lg input[type="time"], .input-group-lg input[type="datetime-local"], .input-group-lg input[type="month"] { line-height: 46px; } } .form-group { margin-bottom: 15px; } .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; } .radio label, .checkbox label { min-height: 20px; padding-left: 20px; margin-bottom: 0; font-weight: normal; cursor: pointer; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-top: 4px \9; margin-left: -20px; } .radio + .radio, .checkbox + .checkbox { margin-top: -5px; } .radio-inline, .checkbox-inline { position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; font-weight: normal; vertical-align: middle; cursor: pointer; } .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"].disabled, input[type="checkbox"].disabled, fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"] { cursor: not-allowed; } .radio-inline.disabled, .checkbox-inline.disabled, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox-inline { cursor: not-allowed; } .radio.disabled label, .checkbox.disabled label, fieldset[disabled] .radio label, fieldset[disabled] .checkbox label { cursor: not-allowed; } .form-control-static { min-height: 34px; padding-top: 7px; padding-bottom: 7px; margin-bottom: 0; } .form-control-static.input-lg, .form-control-static.input-sm { padding-right: 0; padding-left: 0; } .input-sm { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-sm { height: 30px; line-height: 30px; } textarea.input-sm, select[multiple].input-sm { height: auto; } .form-group-sm .form-control { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .form-group-sm select.form-control { height: 30px; line-height: 30px; } .form-group-sm textarea.form-control, .form-group-sm select[multiple].form-control { height: auto; } .form-group-sm .form-control-static { height: 30px; min-height: 32px; padding: 6px 10px; font-size: 12px; line-height: 1.5; } .input-lg { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } select.input-lg { height: 46px; line-height: 46px; } textarea.input-lg, select[multiple].input-lg { height: auto; } .form-group-lg .form-control { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } .form-group-lg select.form-control { height: 46px; line-height: 46px; } .form-group-lg textarea.form-control, .form-group-lg select[multiple].form-control { height: auto; } .form-group-lg .form-control-static { height: 46px; min-height: 38px; padding: 11px 16px; font-size: 18px; line-height: 1.3333333; } .has-feedback { position: relative; } .has-feedback .form-control { padding-right: 42.5px; } .form-control-feedback { position: absolute; top: 0; right: 0; z-index: 2; display: block; width: 34px; height: 34px; line-height: 34px; text-align: center; pointer-events: none; } .input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback, .form-group-lg .form-control + .form-control-feedback { width: 46px; height: 46px; line-height: 46px; } .input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback, .form-group-sm .form-control + .form-control-feedback { width: 30px; height: 30px; line-height: 30px; } .has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { color: #3c763d; } .has-success .form-control { border-color: #3c763d; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-success .form-control:focus { border-color: #2b542c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; } .has-success .input-group-addon { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } .has-success .form-control-feedback { color: #3c763d; } .has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { color: #8a6d3b; } .has-warning .form-control { border-color: #8a6d3b; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-warning .form-control:focus { border-color: #66512c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; } .has-warning .input-group-addon { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } .has-warning .form-control-feedback { color: #8a6d3b; } .has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { color: #a94442; } .has-error .form-control { border-color: #a94442; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-error .form-control:focus { border-color: #843534; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; } .has-error .input-group-addon { color: #a94442; background-color: #f2dede; border-color: #a94442; } .has-error .form-control-feedback { color: #a94442; } .has-feedback label ~ .form-control-feedback { top: 25px; } .has-feedback label.sr-only ~ .form-control-feedback { top: 0; } .help-block { display: block; margin-top: 5px; margin-bottom: 10px; color: #737373; } @media (min-width: 768px) { .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .form-inline .form-control { display: inline-block; width: auto; vertical-align: middle; } .form-inline .form-control-static { display: inline-block; } .form-inline .input-group { display: inline-table; vertical-align: middle; } .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control { width: auto; } .form-inline .input-group > .form-control { width: 100%; } .form-inline .control-label { margin-bottom: 0; vertical-align: middle; } .form-inline .radio, .form-inline .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .form-inline .radio label, .form-inline .checkbox label { padding-left: 0; } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .form-inline .has-feedback .form-control-feedback { top: 0; } } .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline { padding-top: 7px; margin-top: 0; margin-bottom: 0; } .form-horizontal .radio, .form-horizontal .checkbox { min-height: 27px; } .form-horizontal .form-group { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .form-horizontal .control-label { padding-top: 7px; margin-bottom: 0; text-align: right; } } .form-horizontal .has-feedback .form-control-feedback { right: 15px; } @media (min-width: 768px) { .form-horizontal .form-group-lg .control-label { padding-top: 11px; font-size: 18px; } } @media (min-width: 768px) { .form-horizontal .form-group-sm .control-label { padding-top: 6px; font-size: 12px; } } .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: normal; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px; } .btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, .btn:focus, .btn.focus { color: #333; text-decoration: none; } .btn:active, .btn.active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn.disabled, .btn[disabled], fieldset[disabled] .btn { cursor: not-allowed; filter: alpha(opacity=65); -webkit-box-shadow: none; box-shadow: none; opacity: .65; } a.btn.disabled, fieldset[disabled] a.btn { pointer-events: none; } .btn-default { color: #333; background-color: #fff; border-color: #ccc; } .btn-default:focus, .btn-default.focus { color: #333; background-color: #e6e6e6; border-color: #8c8c8c; } .btn-default:hover { color: #333; background-color: #e6e6e6; border-color: #adadad; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { color: #333; background-color: #e6e6e6; border-color: #adadad; } .btn-default:active:hover, .btn-default.active:hover, .open > .dropdown-toggle.btn-default:hover, .btn-default:active:focus, .btn-default.active:focus, .open > .dropdown-toggle.btn-default:focus, .btn-default:active.focus, .btn-default.active.focus, .open > .dropdown-toggle.btn-default.focus { color: #333; background-color: #d4d4d4; border-color: #8c8c8c; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default.focus { background-color: #fff; border-color: #ccc; } .btn-default .badge { color: #fff; background-color: #333; } .btn-primary { color: #fff; background-color: #337ab7; border-color: #2e6da4; } .btn-primary:focus, .btn-primary.focus { color: #fff; background-color: #286090; border-color: #122b40; } .btn-primary:hover { color: #fff; background-color: #286090; border-color: #204d74; } .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { color: #fff; background-color: #286090; border-color: #204d74; } .btn-primary:active:hover, .btn-primary.active:hover, .open > .dropdown-toggle.btn-primary:hover, .btn-primary:active:focus, .btn-primary.active:focus, .open > .dropdown-toggle.btn-primary:focus, .btn-primary:active.focus, .btn-primary.active.focus, .open > .dropdown-toggle.btn-primary.focus { color: #fff; background-color: #204d74; border-color: #122b40; } .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary.focus { background-color: #337ab7; border-color: #2e6da4; } .btn-primary .badge { color: #337ab7; background-color: #fff; } .btn-success { color: #fff; background-color: #5cb85c; border-color: #4cae4c; } .btn-success:focus, .btn-success.focus { color: #fff; background-color: #449d44; border-color: #255625; } .btn-success:hover { color: #fff; background-color: #449d44; border-color: #398439; } .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { color: #fff; background-color: #449d44; border-color: #398439; } .btn-success:active:hover, .btn-success.active:hover, .open > .dropdown-toggle.btn-success:hover, .btn-success:active:focus, .btn-success.active:focus, .open > .dropdown-toggle.btn-success:focus, .btn-success:active.focus, .btn-success.active.focus, .open > .dropdown-toggle.btn-success.focus { color: #fff; background-color: #398439; border-color: #255625; } .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success.focus { background-color: #5cb85c; border-color: #4cae4c; } .btn-success .badge { color: #5cb85c; background-color: #fff; } .btn-info { color: #fff; background-color: #5bc0de; border-color: #46b8da; } .btn-info:focus, .btn-info.focus { color: #fff; background-color: #31b0d5; border-color: #1b6d85; } .btn-info:hover { color: #fff; background-color: #31b0d5; border-color: #269abc; } .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { color: #fff; background-color: #31b0d5; border-color: #269abc; } .btn-info:active:hover, .btn-info.active:hover, .open > .dropdown-toggle.btn-info:hover, .btn-info:active:focus, .btn-info.active:focus, .open > .dropdown-toggle.btn-info:focus, .btn-info:active.focus, .btn-info.active.focus, .open > .dropdown-toggle.btn-info.focus { color: #fff; background-color: #269abc; border-color: #1b6d85; } .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info.focus { background-color: #5bc0de; border-color: #46b8da; } .btn-info .badge { color: #5bc0de; background-color: #fff; } .btn-warning { color: #fff; background-color: #f0ad4e; border-color: #eea236; } .btn-warning:focus, .btn-warning.focus { color: #fff; background-color: #ec971f; border-color: #985f0d; } .btn-warning:hover { color: #fff; background-color: #ec971f; border-color: #d58512; } .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { color: #fff; background-color: #ec971f; border-color: #d58512; } .btn-warning:active:hover, .btn-warning.active:hover, .open > .dropdown-toggle.btn-warning:hover, .btn-warning:active:focus, .btn-warning.active:focus, .open > .dropdown-toggle.btn-warning:focus, .btn-warning:active.focus, .btn-warning.active.focus, .open > .dropdown-toggle.btn-warning.focus { color: #fff; background-color: #d58512; border-color: #985f0d; } .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning.focus { background-color: #f0ad4e; border-color: #eea236; } .btn-warning .badge { color: #f0ad4e; background-color: #fff; } .btn-danger { color: #fff; background-color: #d9534f; border-color: #d43f3a; } .btn-danger:focus, .btn-danger.focus { color: #fff; background-color: #c9302c; border-color: #761c19; } .btn-danger:hover { color: #fff; background-color: #c9302c; border-color: #ac2925; } .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { color: #fff; background-color: #c9302c; border-color: #ac2925; } .btn-danger:active:hover, .btn-danger.active:hover, .open > .dropdown-toggle.btn-danger:hover, .btn-danger:active:focus, .btn-danger.active:focus, .open > .dropdown-toggle.btn-danger:focus, .btn-danger:active.focus, .btn-danger.active.focus, .open > .dropdown-toggle.btn-danger.focus { color: #fff; background-color: #ac2925; border-color: #761c19; } .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, fieldset[disabled] .btn-danger.focus { background-color: #d9534f; border-color: #d43f3a; } .btn-danger .badge { color: #d9534f; background-color: #fff; } .btn-link { font-weight: normal; color: #337ab7; border-radius: 0; } .btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { background-color: transparent; -webkit-box-shadow: none; box-shadow: none; } .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { border-color: transparent; } .btn-link:hover, .btn-link:focus { color: #23527c; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus { color: #777; text-decoration: none; } .btn-lg, .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } .btn-sm, .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-xs, .btn-group-xs > .btn { padding: 1px 5px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-block { display: block; width: 100%; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .fade { opacity: 0; -webkit-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } .fade.in { opacity: 1; } .collapse { display: none; } .collapse.in { display: block; } tr.collapse.in { display: table-row; } tbody.collapse.in { display: table-row-group; } .collapsing { position: relative; height: 0; overflow: hidden; -webkit-transition-timing-function: ease; -o-transition-timing-function: ease; transition-timing-function: ease; -webkit-transition-duration: .35s; -o-transition-duration: .35s; transition-duration: .35s; -webkit-transition-property: height, visibility; -o-transition-property: height, visibility; transition-property: height, visibility; } .caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: 4px dashed; border-top: 4px solid \9; border-right: 4px solid transparent; border-left: 4px solid transparent; } .dropup, .dropdown { position: relative; } .dropdown-toggle:focus { outline: 0; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; font-size: 14px; text-align: left; list-style: none; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, .15); border-radius: 4px; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); box-shadow: 0 6px 12px rgba(0, 0, 0, .175); } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.42857143; color: #333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { color: #262626; text-decoration: none; background-color: #f5f5f5; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #fff; text-decoration: none; background-color: #337ab7; outline: 0; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #777; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: not-allowed; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .open > .dropdown-menu { display: block; } .open > a { outline: 0; } .dropdown-menu-right { right: 0; left: auto; } .dropdown-menu-left { right: auto; left: 0; } .dropdown-header { display: block; padding: 3px 20px; font-size: 12px; line-height: 1.42857143; color: #777; white-space: nowrap; } .dropdown-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { content: ""; border-top: 0; border-bottom: 4px dashed; border-bottom: 4px solid \9; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 2px; } @media (min-width: 768px) { .navbar-right .dropdown-menu { right: 0; left: auto; } .navbar-right .dropdown-menu-left { right: auto; left: 0; } } .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } .btn-group > .btn, .btn-group-vertical > .btn { position: relative; float: left; } .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active { z-index: 2; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar { margin-left: -5px; } .btn-toolbar .btn, .btn-toolbar .btn-group, .btn-toolbar .input-group { float: left; } .btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group { margin-left: 5px; } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } .btn-group > .btn:first-child { margin-left: 0; } .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { padding-right: 8px; padding-left: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-right: 12px; padding-left: 12px; } .btn-group.open .dropdown-toggle { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn-group.open .dropdown-toggle.btn-link { -webkit-box-shadow: none; box-shadow: none; } .btn .caret { margin-left: 0; } .btn-lg .caret { border-width: 5px 5px 0; border-bottom-width: 0; } .dropup .btn-lg .caret { border-width: 0 5px 5px; } .btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } .btn-group-vertical > .btn-group > .btn { float: none; } .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-left-radius: 0; border-top-right-radius: 0; } .btn-group-justified { display: table; width: 100%; table-layout: fixed; border-collapse: separate; } .btn-group-justified > .btn, .btn-group-justified > .btn-group { display: table-cell; float: none; width: 1%; } .btn-group-justified > .btn-group .btn { width: 100%; } .btn-group-justified > .btn-group .dropdown-menu { left: auto; } [data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; } .input-group { position: relative; display: table; border-collapse: separate; } .input-group[class*="col-"] { float: none; padding-right: 0; padding-left: 0; } .input-group .form-control { position: relative; z-index: 2; float: left; width: 100%; margin-bottom: 0; } .input-group .form-control:focus { z-index: 3; } .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn { height: 46px; line-height: 46px; } textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn, select[multiple].input-group-lg > .form-control, select[multiple].input-group-lg > .input-group-addon, select[multiple].input-group-lg > .input-group-btn > .btn { height: auto; } .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn { height: 30px; line-height: 30px; } textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn, select[multiple].input-group-sm > .form-control, select[multiple].input-group-sm > .input-group-addon, select[multiple].input-group-sm > .input-group-btn > .btn { height: auto; } .input-group-addon, .input-group-btn, .input-group .form-control { display: table-cell; } .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } .input-group-addon, .input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; } .input-group-addon { padding: 6px 12px; font-size: 14px; font-weight: normal; line-height: 1; color: #555; text-align: center; background-color: #eee; border: 1px solid #ccc; border-radius: 4px; } .input-group-addon.input-sm { padding: 5px 10px; font-size: 12px; border-radius: 3px; } .input-group-addon.input-lg { padding: 10px 16px; font-size: 18px; border-radius: 6px; } .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { margin-top: 0; } .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group-addon:first-child { border-right: 0; } .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } .input-group-addon:last-child { border-left: 0; } .input-group-btn { position: relative; font-size: 0; white-space: nowrap; } .input-group-btn > .btn { position: relative; } .input-group-btn > .btn + .btn { margin-left: -1px; } .input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { z-index: 2; } .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group { margin-right: -1px; } .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { z-index: 2; margin-left: -1px; } .nav { padding-left: 0; margin-bottom: 0; list-style: none; } .nav > li { position: relative; display: block; } .nav > li > a { position: relative; display: block; padding: 10px 15px; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eee; } .nav > li.disabled > a { color: #777; } .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { color: #777; text-decoration: none; cursor: not-allowed; background-color: transparent; } .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #eee; border-color: #337ab7; } .nav .nav-divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .nav > li > a > img { max-width: none; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { float: left; margin-bottom: -1px; } .nav-tabs > li > a { margin-right: 2px; line-height: 1.42857143; border: 1px solid transparent; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover { border-color: #eee #eee #ddd; } .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { color: #555; cursor: default; background-color: #fff; border: 1px solid #ddd; border-bottom-color: transparent; } .nav-tabs.nav-justified { width: 100%; border-bottom: 0; } .nav-tabs.nav-justified > li { float: none; } .nav-tabs.nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-tabs.nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-tabs.nav-justified > li { display: table-cell; width: 1%; } .nav-tabs.nav-justified > li > a { margin-bottom: 0; } } .nav-tabs.nav-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border: 1px solid #ddd; } @media (min-width: 768px) { .nav-tabs.nav-justified > li > a { border-bottom: 1px solid #ddd; border-radius: 4px 4px 0 0; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border-bottom-color: #fff; } } .nav-pills > li { float: left; } .nav-pills > li > a { border-radius: 4px; } .nav-pills > li + li { margin-left: 2px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #fff; background-color: #337ab7; } .nav-stacked > li { float: none; } .nav-stacked > li + li { margin-top: 2px; margin-left: 0; } .nav-justified { width: 100%; } .nav-justified > li { float: none; } .nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-justified > li { display: table-cell; width: 1%; } .nav-justified > li > a { margin-bottom: 0; } } .nav-tabs-justified { border-bottom: 0; } .nav-tabs-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border: 1px solid #ddd; } @media (min-width: 768px) { .nav-tabs-justified > li > a { border-bottom: 1px solid #ddd; border-radius: 4px 4px 0 0; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border-bottom-color: #fff; } } .tab-content > .tab-pane { display: none; } .tab-content > .active { display: block; } .nav-tabs .dropdown-menu { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar { position: relative; min-height: 50px; margin-bottom: 20px; border: 1px solid transparent; } @media (min-width: 768px) { .navbar { border-radius: 4px; } } @media (min-width: 768px) { .navbar-header { float: left; } } .navbar-collapse { padding-right: 15px; padding-left: 15px; overflow-x: visible; -webkit-overflow-scrolling: touch; border-top: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); } .navbar-collapse.in { overflow-y: auto; } @media (min-width: 768px) { .navbar-collapse { width: auto; border-top: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-collapse.collapse { display: block !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } .navbar-collapse.in { overflow-y: visible; } .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { padding-right: 0; padding-left: 0; } } .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { max-height: 340px; } @media (max-device-width: 480px) and (orientation: landscape) { .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { max-height: 200px; } } .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { margin-right: 0; margin-left: 0; } } .navbar-static-top { z-index: 1000; border-width: 0 0 1px; } @media (min-width: 768px) { .navbar-static-top { border-radius: 0; } } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; } @media (min-width: 768px) { .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } } .navbar-fixed-top { top: 0; border-width: 0 0 1px; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; border-width: 1px 0 0; } .navbar-brand { float: left; height: 50px; padding: 15px 15px; font-size: 18px; line-height: 20px; } .navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } .navbar-brand > img { display: block; } @media (min-width: 768px) { .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { margin-left: -15px; } } .navbar-toggle { position: relative; float: right; padding: 9px 10px; margin-top: 8px; margin-right: 15px; margin-bottom: 8px; background-color: transparent; background-image: none; border: 1px solid transparent; border-radius: 4px; } .navbar-toggle:focus { outline: 0; } .navbar-toggle .icon-bar { display: block; width: 22px; height: 2px; border-radius: 1px; } .navbar-toggle .icon-bar + .icon-bar { margin-top: 4px; } @media (min-width: 768px) { .navbar-toggle { display: none; } } .navbar-nav { margin: 7.5px -15px; } .navbar-nav > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } @media (max-width: 767px) { .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { background-image: none; } } @media (min-width: 768px) { .navbar-nav { float: left; margin: 0; } .navbar-nav > li { float: left; } .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; } } .navbar-form { padding: 10px 15px; margin-top: 8px; margin-right: -15px; margin-bottom: 8px; margin-left: -15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); } @media (min-width: 768px) { .navbar-form .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-form .form-control { display: inline-block; width: auto; vertical-align: middle; } .navbar-form .form-control-static { display: inline-block; } .navbar-form .input-group { display: inline-table; vertical-align: middle; } .navbar-form .input-group .input-group-addon, .navbar-form .input-group .input-group-btn, .navbar-form .input-group .form-control { width: auto; } .navbar-form .input-group > .form-control { width: 100%; } .navbar-form .control-label { margin-bottom: 0; vertical-align: middle; } .navbar-form .radio, .navbar-form .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .navbar-form .radio label, .navbar-form .checkbox label { padding-left: 0; } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .navbar-form .has-feedback .form-control-feedback { top: 0; } } @media (max-width: 767px) { .navbar-form .form-group { margin-bottom: 5px; } .navbar-form .form-group:last-child { margin-bottom: 0; } } @media (min-width: 768px) { .navbar-form { width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } } .navbar-nav > li > .dropdown-menu { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { margin-bottom: 0; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .navbar-btn { margin-top: 8px; margin-bottom: 8px; } .navbar-btn.btn-sm { margin-top: 10px; margin-bottom: 10px; } .navbar-btn.btn-xs { margin-top: 14px; margin-bottom: 14px; } .navbar-text { margin-top: 15px; margin-bottom: 15px; } @media (min-width: 768px) { .navbar-text { float: left; margin-right: 15px; margin-left: 15px; } } @media (min-width: 768px) { .navbar-left { float: left !important; } .navbar-right { float: right !important; margin-right: -15px; } .navbar-right ~ .navbar-right { margin-right: 0; } } .navbar-default { background-color: #f8f8f8; border-color: #e7e7e7; } .navbar-default .navbar-brand { color: #777; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { color: #5e5e5e; background-color: transparent; } .navbar-default .navbar-text { color: #777; } .navbar-default .navbar-nav > li > a { color: #777; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { color: #ccc; background-color: transparent; } .navbar-default .navbar-toggle { border-color: #ddd; } .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { background-color: #ddd; } .navbar-default .navbar-toggle .icon-bar { background-color: #888; } .navbar-default .navbar-collapse, .navbar-default .navbar-form { border-color: #e7e7e7; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { color: #555; background-color: #e7e7e7; } @media (max-width: 767px) { .navbar-default .navbar-nav .open .dropdown-menu > li > a { color: #777; } .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #ccc; background-color: transparent; } } .navbar-default .navbar-link { color: #777; } .navbar-default .navbar-link:hover { color: #333; } .navbar-default .btn-link { color: #777; } .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { color: #333; } .navbar-default .btn-link[disabled]:hover, fieldset[disabled] .navbar-default .btn-link:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:focus { color: #ccc; } .navbar-inverse { background-color: #222; border-color: #080808; } .navbar-inverse .navbar-brand { color: #9d9d9d; } .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-text { color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { color: #444; background-color: transparent; } .navbar-inverse .navbar-toggle { border-color: #333; } .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { background-color: #333; } .navbar-inverse .navbar-toggle .icon-bar { background-color: #fff; } .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { border-color: #101010; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { color: #fff; background-color: #080808; } @media (max-width: 767px) { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { border-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu .divider { background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #444; background-color: transparent; } } .navbar-inverse .navbar-link { color: #9d9d9d; } .navbar-inverse .navbar-link:hover { color: #fff; } .navbar-inverse .btn-link { color: #9d9d9d; } .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { color: #fff; } .navbar-inverse .btn-link[disabled]:hover, fieldset[disabled] .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:focus { color: #444; } .breadcrumb { padding: 8px 15px; margin-bottom: 20px; list-style: none; background-color: #f5f5f5; border-radius: 4px; } .breadcrumb > li { display: inline-block; } .breadcrumb > li + li:before { padding: 0 5px; color: #ccc; content: "/\00a0"; } .breadcrumb > .active { color: #777; } .pagination { display: inline-block; padding-left: 0; margin: 20px 0; border-radius: 4px; } .pagination > li { display: inline; } .pagination > li > a, .pagination > li > span { position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #337ab7; text-decoration: none; background-color: #fff; border: 1px solid #ddd; } .pagination > li:first-child > a, .pagination > li:first-child > span { margin-left: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { z-index: 2; color: #23527c; background-color: #eee; border-color: #ddd; } .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { z-index: 3; color: #fff; cursor: default; background-color: #337ab7; border-color: #337ab7; } .pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus { color: #777; cursor: not-allowed; background-color: #fff; border-color: #ddd; } .pagination-lg > li > a, .pagination-lg > li > span { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; } .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { border-top-left-radius: 6px; border-bottom-left-radius: 6px; } .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .pagination-sm > li > a, .pagination-sm > li > span { padding: 5px 10px; font-size: 12px; line-height: 1.5; } .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .pager { padding-left: 0; margin: 20px 0; text-align: center; list-style: none; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #eee; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #777; cursor: not-allowed; background-color: #fff; } .label { display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: bold; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; } a.label:hover, a.label:focus { color: #fff; text-decoration: none; cursor: pointer; } .label:empty { display: none; } .btn .label { position: relative; top: -1px; } .label-default { background-color: #777; } .label-default[href]:hover, .label-default[href]:focus { background-color: #5e5e5e; } .label-primary { background-color: #337ab7; } .label-primary[href]:hover, .label-primary[href]:focus { background-color: #286090; } .label-success { background-color: #5cb85c; } .label-success[href]:hover, .label-success[href]:focus { background-color: #449d44; } .label-info { background-color: #5bc0de; } .label-info[href]:hover, .label-info[href]:focus { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } .label-warning[href]:hover, .label-warning[href]:focus { background-color: #ec971f; } .label-danger { background-color: #d9534f; } .label-danger[href]:hover, .label-danger[href]:focus { background-color: #c9302c; } .badge { display: inline-block; min-width: 10px; padding: 3px 7px; font-size: 12px; font-weight: bold; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: middle; background-color: #777; border-radius: 10px; } .badge:empty { display: none; } .btn .badge { position: relative; top: -1px; } .btn-xs .badge, .btn-group-xs > .btn .badge { top: 0; padding: 1px 5px; } a.badge:hover, a.badge:focus { color: #fff; text-decoration: none; cursor: pointer; } .list-group-item.active > .badge, .nav-pills > .active > a > .badge { color: #337ab7; background-color: #fff; } .list-group-item > .badge { float: right; } .list-group-item > .badge + .badge { margin-right: 5px; } .nav-pills > li > a > .badge { margin-left: 3px; } .jumbotron { padding-top: 30px; padding-bottom: 30px; margin-bottom: 30px; color: inherit; background-color: #eee; } .jumbotron h1, .jumbotron .h1 { color: inherit; } .jumbotron p { margin-bottom: 15px; font-size: 21px; font-weight: 200; } .jumbotron > hr { border-top-color: #d5d5d5; } .container .jumbotron, .container-fluid .jumbotron { padding-right: 15px; padding-left: 15px; border-radius: 6px; } .jumbotron .container { max-width: 100%; } @media screen and (min-width: 768px) { .jumbotron { padding-top: 48px; padding-bottom: 48px; } .container .jumbotron, .container-fluid .jumbotron { padding-right: 60px; padding-left: 60px; } .jumbotron h1, .jumbotron .h1 { font-size: 63px; } } .thumbnail { display: block; padding: 4px; margin-bottom: 20px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; -webkit-transition: border .2s ease-in-out; -o-transition: border .2s ease-in-out; transition: border .2s ease-in-out; } .thumbnail > img, .thumbnail a > img { margin-right: auto; margin-left: auto; } a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { border-color: #337ab7; } .thumbnail .caption { padding: 9px; color: #333; } .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert h4 { margin-top: 0; color: inherit; } .alert .alert-link { font-weight: bold; } .alert > p, .alert > ul { margin-bottom: 0; } .alert > p + p { margin-top: 5px; } .alert-dismissable, .alert-dismissible { padding-right: 35px; } .alert-dismissable .close, .alert-dismissible .close { position: relative; top: -2px; right: -21px; color: inherit; } .alert-success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success hr { border-top-color: #c9e2b3; } .alert-success .alert-link { color: #2b542c; } .alert-info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .alert-info hr { border-top-color: #a6e1ec; } .alert-info .alert-link { color: #245269; } .alert-warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .alert-warning hr { border-top-color: #f7e1b5; } .alert-warning .alert-link { color: #66512c; } .alert-danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .alert-danger hr { border-top-color: #e4b9c0; } .alert-danger .alert-link { color: #843534; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f5f5f5; border-radius: 4px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); } .progress-bar { float: left; width: 0; height: 100%; font-size: 12px; line-height: 20px; color: #fff; text-align: center; background-color: #337ab7; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); -webkit-transition: width .6s ease; -o-transition: width .6s ease; transition: width .6s ease; } .progress-striped .progress-bar, .progress-bar-striped { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .progress-bar, .progress-bar.active { -webkit-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { background-color: #5cb85c; } .progress-striped .progress-bar-success { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .progress-bar-info { background-color: #5bc0de; } .progress-striped .progress-bar-info { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .progress-bar-warning { background-color: #f0ad4e; } .progress-striped .progress-bar-warning { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .progress-bar-danger { background-color: #d9534f; } .progress-striped .progress-bar-danger { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); } .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media, .media-body { overflow: hidden; zoom: 1; } .media-body { width: 10000px; } .media-object { display: block; } .media-object.img-thumbnail { max-width: none; } .media-right, .media > .pull-right { padding-left: 10px; } .media-left, .media > .pull-left { padding-right: 10px; } .media-left, .media-right, .media-body { display: table-cell; vertical-align: top; } .media-middle { vertical-align: middle; } .media-bottom { vertical-align: bottom; } .media-heading { margin-top: 0; margin-bottom: 5px; } .media-list { padding-left: 0; list-style: none; } .list-group { padding-left: 0; margin-bottom: 20px; } .list-group-item { position: relative; display: block; padding: 10px 15px; margin-bottom: -1px; background-color: #fff; border: 1px solid #ddd; } .list-group-item:first-child { border-top-left-radius: 4px; border-top-right-radius: 4px; } .list-group-item:last-child { margin-bottom: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } a.list-group-item, button.list-group-item { color: #555; } a.list-group-item .list-group-item-heading, button.list-group-item .list-group-item-heading { color: #333; } a.list-group-item:hover, button.list-group-item:hover, a.list-group-item:focus, button.list-group-item:focus { color: #555; text-decoration: none; background-color: #f5f5f5; } button.list-group-item { width: 100%; text-align: left; } .list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { color: #777; cursor: not-allowed; background-color: #eee; } .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { color: inherit; } .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { color: #777; } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { z-index: 2; color: #fff; background-color: #337ab7; border-color: #337ab7; } .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading > .small { color: inherit; } .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { color: #c7ddef; } .list-group-item-success { color: #3c763d; background-color: #dff0d8; } a.list-group-item-success, button.list-group-item-success { color: #3c763d; } a.list-group-item-success .list-group-item-heading, button.list-group-item-success .list-group-item-heading { color: inherit; } a.list-group-item-success:hover, button.list-group-item-success:hover, a.list-group-item-success:focus, button.list-group-item-success:focus { color: #3c763d; background-color: #d0e9c6; } a.list-group-item-success.active, button.list-group-item-success.active, a.list-group-item-success.active:hover, button.list-group-item-success.active:hover, a.list-group-item-success.active:focus, button.list-group-item-success.active:focus { color: #fff; background-color: #3c763d; border-color: #3c763d; } .list-group-item-info { color: #31708f; background-color: #d9edf7; } a.list-group-item-info, button.list-group-item-info { color: #31708f; } a.list-group-item-info .list-group-item-heading, button.list-group-item-info .list-group-item-heading { color: inherit; } a.list-group-item-info:hover, button.list-group-item-info:hover, a.list-group-item-info:focus, button.list-group-item-info:focus { color: #31708f; background-color: #c4e3f3; } a.list-group-item-info.active, button.list-group-item-info.active, a.list-group-item-info.active:hover, button.list-group-item-info.active:hover, a.list-group-item-info.active:focus, button.list-group-item-info.active:focus { color: #fff; background-color: #31708f; border-color: #31708f; } .list-group-item-warning { color: #8a6d3b; background-color: #fcf8e3; } a.list-group-item-warning, button.list-group-item-warning { color: #8a6d3b; } a.list-group-item-warning .list-group-item-heading, button.list-group-item-warning .list-group-item-heading { color: inherit; } a.list-group-item-warning:hover, button.list-group-item-warning:hover, a.list-group-item-warning:focus, button.list-group-item-warning:focus { color: #8a6d3b; background-color: #faf2cc; } a.list-group-item-warning.active, button.list-group-item-warning.active, a.list-group-item-warning.active:hover, button.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, button.list-group-item-warning.active:focus { color: #fff; background-color: #8a6d3b; border-color: #8a6d3b; } .list-group-item-danger { color: #a94442; background-color: #f2dede; } a.list-group-item-danger, button.list-group-item-danger { color: #a94442; } a.list-group-item-danger .list-group-item-heading, button.list-group-item-danger .list-group-item-heading { color: inherit; } a.list-group-item-danger:hover, button.list-group-item-danger:hover, a.list-group-item-danger:focus, button.list-group-item-danger:focus { color: #a94442; background-color: #ebcccc; } a.list-group-item-danger.active, button.list-group-item-danger.active, a.list-group-item-danger.active:hover, button.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, button.list-group-item-danger.active:focus { color: #fff; background-color: #a94442; border-color: #a94442; } .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } .panel { margin-bottom: 20px; background-color: #fff; border: 1px solid transparent; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); box-shadow: 0 1px 1px rgba(0, 0, 0, .05); } .panel-body { padding: 15px; } .panel-heading { padding: 10px 15px; border-bottom: 1px solid transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel-heading > .dropdown .dropdown-toggle { color: inherit; } .panel-title { margin-top: 0; margin-bottom: 0; font-size: 16px; color: inherit; } .panel-title > a, .panel-title > small, .panel-title > .small, .panel-title > small > a, .panel-title > .small > a { color: inherit; } .panel-footer { padding: 10px 15px; background-color: #f5f5f5; border-top: 1px solid #ddd; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .list-group, .panel > .panel-collapse > .list-group { margin-bottom: 0; } .panel > .list-group .list-group-item, .panel > .panel-collapse > .list-group .list-group-item { border-width: 1px 0; border-radius: 0; } .panel > .list-group:first-child .list-group-item:first-child, .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { border-top: 0; border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .list-group:last-child .list-group-item:last-child, .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { border-bottom: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { border-top-left-radius: 0; border-top-right-radius: 0; } .panel-heading + .list-group .list-group-item:first-child { border-top-width: 0; } .list-group + .panel-footer { border-top-width: 0; } .panel > .table, .panel > .table-responsive > .table, .panel > .panel-collapse > .table { margin-bottom: 0; } .panel > .table caption, .panel > .table-responsive > .table caption, .panel > .panel-collapse > .table caption { padding-right: 15px; padding-left: 15px; } .panel > .table:first-child, .panel > .table-responsive:first-child > .table:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { border-top-left-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { border-top-right-radius: 3px; } .panel > .table:last-child, .panel > .table-responsive:last-child > .table:last-child { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { border-bottom-right-radius: 3px; } .panel > .panel-body + .table, .panel > .panel-body + .table-responsive, .panel > .table + .panel-body, .panel > .table-responsive + .panel-body { border-top: 1px solid #ddd; } .panel > .table > tbody:first-child > tr:first-child th, .panel > .table > tbody:first-child > tr:first-child td { border-top: 0; } .panel > .table-bordered, .panel > .table-responsive > .table-bordered { border: 0; } .panel > .table-bordered > thead > tr > th:first-child, .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, .panel > .table-bordered > tbody > tr > th:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, .panel > .table-bordered > tfoot > tr > th:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, .panel > .table-bordered > thead > tr > td:first-child, .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, .panel > .table-bordered > tbody > tr > td:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, .panel > .table-bordered > tfoot > tr > td:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .panel > .table-bordered > thead > tr > th:last-child, .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, .panel > .table-bordered > tbody > tr > th:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, .panel > .table-bordered > tfoot > tr > th:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, .panel > .table-bordered > thead > tr > td:last-child, .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, .panel > .table-bordered > tbody > tr > td:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, .panel > .table-bordered > tfoot > tr > td:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .panel > .table-bordered > thead > tr:first-child > td, .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, .panel > .table-bordered > tbody > tr:first-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, .panel > .table-bordered > thead > tr:first-child > th, .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, .panel > .table-bordered > tbody > tr:first-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { border-bottom: 0; } .panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > td, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, .panel > .table-bordered > tfoot > tr:last-child > th, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { border-bottom: 0; } .panel > .table-responsive { margin-bottom: 0; border: 0; } .panel-group { margin-bottom: 20px; } .panel-group .panel { margin-bottom: 0; border-radius: 4px; } .panel-group .panel + .panel { margin-top: 5px; } .panel-group .panel-heading { border-bottom: 0; } .panel-group .panel-heading + .panel-collapse > .panel-body, .panel-group .panel-heading + .panel-collapse > .list-group { border-top: 1px solid #ddd; } .panel-group .panel-footer { border-top: 0; } .panel-group .panel-footer + .panel-collapse .panel-body { border-bottom: 1px solid #ddd; } .panel-default { border-color: #ddd; } .panel-default > .panel-heading { color: #333; background-color: #f5f5f5; border-color: #ddd; } .panel-default > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ddd; } .panel-default > .panel-heading .badge { color: #f5f5f5; background-color: #333; } .panel-default > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ddd; } .panel-primary { border-color: #337ab7; } .panel-primary > .panel-heading { color: #fff; background-color: #337ab7; border-color: #337ab7; } .panel-primary > .panel-heading + .panel-collapse > .panel-body { border-top-color: #337ab7; } .panel-primary > .panel-heading .badge { color: #337ab7; background-color: #fff; } .panel-primary > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #337ab7; } .panel-success { border-color: #d6e9c6; } .panel-success > .panel-heading { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .panel-success > .panel-heading + .panel-collapse > .panel-body { border-top-color: #d6e9c6; } .panel-success > .panel-heading .badge { color: #dff0d8; background-color: #3c763d; } .panel-success > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #d6e9c6; } .panel-info { border-color: #bce8f1; } .panel-info > .panel-heading { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .panel-info > .panel-heading + .panel-collapse > .panel-body { border-top-color: #bce8f1; } .panel-info > .panel-heading .badge { color: #d9edf7; background-color: #31708f; } .panel-info > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #bce8f1; } .panel-warning { border-color: #faebcc; } .panel-warning > .panel-heading { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .panel-warning > .panel-heading + .panel-collapse > .panel-body { border-top-color: #faebcc; } .panel-warning > .panel-heading .badge { color: #fcf8e3; background-color: #8a6d3b; } .panel-warning > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #faebcc; } .panel-danger { border-color: #ebccd1; } .panel-danger > .panel-heading { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .panel-danger > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ebccd1; } .panel-danger > .panel-heading .badge { color: #f2dede; background-color: #a94442; } .panel-danger > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ebccd1; } .embed-responsive { position: relative; display: block; height: 0; padding: 0; overflow: hidden; } .embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { position: absolute; top: 0; bottom: 0; left: 0; width: 100%; height: 100%; border: 0; } .embed-responsive-16by9 { padding-bottom: 56.25%; } .embed-responsive-4by3 { padding-bottom: 75%; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, .15); } .well-lg { padding: 24px; border-radius: 6px; } .well-sm { padding: 9px; border-radius: 3px; } .close { float: right; font-size: 21px; font-weight: bold; line-height: 1; color: #000; text-shadow: 0 1px 0 #fff; filter: alpha(opacity=20); opacity: .2; } .close:hover, .close:focus { color: #000; text-decoration: none; cursor: pointer; filter: alpha(opacity=50); opacity: .5; } button.close { -webkit-appearance: none; padding: 0; cursor: pointer; background: transparent; border: 0; } .modal-open { overflow: hidden; } .modal { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1050; display: none; overflow: hidden; -webkit-overflow-scrolling: touch; outline: 0; } .modal.fade .modal-dialog { -webkit-transition: -webkit-transform .3s ease-out; -o-transition: -o-transform .3s ease-out; transition: transform .3s ease-out; -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); -o-transform: translate(0, -25%); transform: translate(0, -25%); } .modal.in .modal-dialog { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .modal-open .modal { overflow-x: hidden; overflow-y: auto; } .modal-dialog { position: relative; width: auto; margin: 10px; } .modal-content { position: relative; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, .2); border-radius: 6px; outline: 0; -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); box-shadow: 0 3px 9px rgba(0, 0, 0, .5); } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000; } .modal-backdrop.fade { filter: alpha(opacity=0); opacity: 0; } .modal-backdrop.in { filter: alpha(opacity=50); opacity: .5; } .modal-header { padding: 15px; border-bottom: 1px solid #e5e5e5; } .modal-header .close { margin-top: -2px; } .modal-title { margin: 0; line-height: 1.42857143; } .modal-body { position: relative; padding: 15px; } .modal-footer { padding: 15px; text-align: right; border-top: 1px solid #e5e5e5; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .modal-scrollbar-measure { position: absolute; top: -9999px; width: 50px; height: 50px; overflow: scroll; } @media (min-width: 768px) { .modal-dialog { width: 600px; margin: 30px auto; } .modal-content { -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); box-shadow: 0 5px 15px rgba(0, 0, 0, .5); } .modal-sm { width: 300px; } } @media (min-width: 992px) { .modal-lg { width: 900px; } } .tooltip { position: absolute; z-index: 1070; display: block; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: normal; line-height: 1.42857143; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; word-wrap: normal; white-space: normal; filter: alpha(opacity=0); opacity: 0; line-break: auto; } .tooltip.in { filter: alpha(opacity=90); opacity: .9; } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 3px 8px; color: #fff; text-align: center; background-color: #000; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.top-left .tooltip-arrow { right: 5px; bottom: 0; margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.top-right .tooltip-arrow { bottom: 0; left: 5px; margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .tooltip.bottom-left .tooltip-arrow { top: 0; right: 5px; margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .tooltip.bottom-right .tooltip-arrow { top: 0; left: 5px; margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .popover { position: absolute; top: 0; left: 0; z-index: 1060; display: none; max-width: 276px; padding: 1px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-weight: normal; line-height: 1.42857143; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; word-wrap: normal; white-space: normal; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, .2); border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); box-shadow: 0 5px 10px rgba(0, 0, 0, .2); line-break: auto; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; } .popover-content { padding: 9px 14px; } .popover > .arrow, .popover > .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover > .arrow { border-width: 11px; } .popover > .arrow:after { content: ""; border-width: 10px; } .popover.top > .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999; border-top-color: rgba(0, 0, 0, .25); border-bottom-width: 0; } .popover.top > .arrow:after { bottom: 1px; margin-left: -10px; content: " "; border-top-color: #fff; border-bottom-width: 0; } .popover.right > .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999; border-right-color: rgba(0, 0, 0, .25); border-left-width: 0; } .popover.right > .arrow:after { bottom: -10px; left: 1px; content: " "; border-right-color: #fff; border-left-width: 0; } .popover.bottom > .arrow { top: -11px; left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, .25); } .popover.bottom > .arrow:after { top: 1px; margin-left: -10px; content: " "; border-top-width: 0; border-bottom-color: #fff; } .popover.left > .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999; border-left-color: rgba(0, 0, 0, .25); } .popover.left > .arrow:after { right: 1px; bottom: -10px; content: " "; border-right-width: 0; border-left-color: #fff; } .carousel { position: relative; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: .6s ease-in-out left; -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { line-height: 1; } @media all and (transform-3d), (-webkit-transform-3d) { .carousel-inner > .item { -webkit-transition: -webkit-transform .6s ease-in-out; -o-transition: -o-transform .6s ease-in-out; transition: transform .6s ease-in-out; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-perspective: 1000px; perspective: 1000px; } .carousel-inner > .item.next, .carousel-inner > .item.active.right { left: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } .carousel-inner > .item.prev, .carousel-inner > .item.active.left { left: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { left: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 0; bottom: 0; left: 0; width: 15%; font-size: 20px; color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); background-color: rgba(0, 0, 0, 0); filter: alpha(opacity=50); opacity: .5; } .carousel-control.left { background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); background-repeat: repeat-x; } .carousel-control.right { right: 0; left: auto; background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); background-repeat: repeat-x; } .carousel-control:hover, .carousel-control:focus { color: #fff; text-decoration: none; filter: alpha(opacity=90); outline: 0; opacity: .9; } .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right { position: absolute; top: 50%; z-index: 5; display: inline-block; margin-top: -10px; } .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left { left: 50%; margin-left: -10px; } .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right { right: 50%; margin-right: -10px; } .carousel-control .icon-prev, .carousel-control .icon-next { width: 20px; height: 20px; font-family: serif; line-height: 1; } .carousel-control .icon-prev:before { content: '\2039'; } .carousel-control .icon-next:before { content: '\203a'; } .carousel-indicators { position: absolute; bottom: 10px; left: 50%; z-index: 15; width: 60%; padding-left: 0; margin-left: -30%; text-align: center; list-style: none; } .carousel-indicators li { display: inline-block; width: 10px; height: 10px; margin: 1px; text-indent: -999px; cursor: pointer; background-color: #000 \9; background-color: rgba(0, 0, 0, 0); border: 1px solid #fff; border-radius: 10px; } .carousel-indicators .active { width: 12px; height: 12px; margin: 0; background-color: #fff; } .carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); } .carousel-caption .btn { text-shadow: none; } @media screen and (min-width: 768px) { .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev, .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -10px; font-size: 30px; } .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev { margin-left: -10px; } .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next { margin-right: -10px; } .carousel-caption { right: 20%; left: 20%; padding-bottom: 30px; } .carousel-indicators { bottom: 20px; } } .clearfix:before, .clearfix:after, .dl-horizontal dd:before, .dl-horizontal dd:after, .container:before, .container:after, .container-fluid:before, .container-fluid:after, .row:before, .row:after, .form-horizontal .form-group:before, .form-horizontal .form-group:after, .btn-toolbar:before, .btn-toolbar:after, .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after, .nav:before, .nav:after, .navbar:before, .navbar:after, .navbar-header:before, .navbar-header:after, .navbar-collapse:before, .navbar-collapse:after, .pager:before, .pager:after, .panel-body:before, .panel-body:after, .modal-header:before, .modal-header:after, .modal-footer:before, .modal-footer:after { display: table; content: " "; } .clearfix:after, .dl-horizontal dd:after, .container:after, .container-fluid:after, .row:after, .form-horizontal .form-group:after, .btn-toolbar:after, .btn-group-vertical > .btn-group:after, .nav:after, .navbar:after, .navbar-header:after, .navbar-collapse:after, .pager:after, .panel-body:after, .modal-header:after, .modal-footer:after { clear: both; } .center-block { display: block; margin-right: auto; margin-left: auto; } .pull-right { float: right !important; } .pull-left { float: left !important; } .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .hidden { display: none !important; } .affix { position: fixed; } @-ms-viewport { width: device-width; } .visible-xs, .visible-sm, .visible-md, .visible-lg { display: none !important; } .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block { display: none !important; } @media (max-width: 767px) { .visible-xs { display: block !important; } table.visible-xs { display: table !important; } tr.visible-xs { display: table-row !important; } th.visible-xs, td.visible-xs { display: table-cell !important; } } @media (max-width: 767px) { .visible-xs-block { display: block !important; } } @media (max-width: 767px) { .visible-xs-inline { display: inline !important; } } @media (max-width: 767px) { .visible-xs-inline-block { display: inline-block !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm { display: block !important; } table.visible-sm { display: table !important; } tr.visible-sm { display: table-row !important; } th.visible-sm, td.visible-sm { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-block { display: block !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-inline { display: inline !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-inline-block { display: inline-block !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md { display: block !important; } table.visible-md { display: table !important; } tr.visible-md { display: table-row !important; } th.visible-md, td.visible-md { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-block { display: block !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-inline { display: inline !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-inline-block { display: inline-block !important; } } @media (min-width: 1200px) { .visible-lg { display: block !important; } table.visible-lg { display: table !important; } tr.visible-lg { display: table-row !important; } th.visible-lg, td.visible-lg { display: table-cell !important; } } @media (min-width: 1200px) { .visible-lg-block { display: block !important; } } @media (min-width: 1200px) { .visible-lg-inline { display: inline !important; } } @media (min-width: 1200px) { .visible-lg-inline-block { display: inline-block !important; } } @media (max-width: 767px) { .hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-lg { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: block !important; } table.visible-print { display: table !important; } tr.visible-print { display: table-row !important; } th.visible-print, td.visible-print { display: table-cell !important; } } .visible-print-block { display: none !important; } @media print { .visible-print-block { display: block !important; } } .visible-print-inline { display: none !important; } @media print { .visible-print-inline { display: inline !important; } } .visible-print-inline-block { display: none !important; } @media print { .visible-print-inline-block { display: inline-block !important; } } @media print { .hidden-print { display: none !important; } } /*# sourceMappingURL=bootstrap.css.map */ ================================================ FILE: src/css/font.css ================================================ @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 300; src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../fonts/sourcesanspro/sourcesanspro-light.woff') format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 400; src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url('../fonts/sourcesanspro/sourcesanspro.woff') format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 700; src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../fonts/sourcesanspro/sourcesanspro-bold.woff') format('woff'); } ================================================ FILE: src/css/less/app.arrow.less ================================================ .arrow { border-width: @arrow-outer-width; z-index: 10; &, &:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } &:after{ border-width: @arrow-width; content: ""; } &.top { left: 50%; margin-left: -@arrow-outer-width; border-top-width: 0; border-bottom-color: @arrow-outer-color; top: -@arrow-outer-width; &:after { top: 1px; margin-left: -@arrow-width; border-top-width: 0; border-bottom-color: @arrow-color; } &.arrow-primary{ &:after{ border-bottom-color: @brand-primary; } } &.arrow-info{ &:after{ border-bottom-color: @brand-info; } } &.arrow-success{ &:after{ border-bottom-color: @brand-success; } } &.arrow-danger{ &:after{ border-bottom-color: @brand-danger; } } &.arrow-warning{ &:after{ border-bottom-color: @brand-warning; } } &.arrow-light{ &:after{ border-bottom-color: @brand-light; } } &.arrow-dark{ &:after{ border-bottom-color: @brand-dark; } } &.arrow-black{ &:after{ border-bottom-color: @brand-black; } } } &.right { top: 50%; right: -@arrow-outer-width; margin-top: -@arrow-outer-width; border-right-width: 0; border-left-color: @arrow-outer-color; &:after { right: 1px; bottom: -@arrow-width; border-right-width: 0; border-left-color: @arrow-color; } &.arrow-primary{ &:after{ border-left-color: @brand-primary; } } &.arrow-info{ &:after{ border-left-color: @brand-info; } } &.arrow-success{ &:after{ border-left-color: @brand-success; } } &.arrow-danger{ &:after{ border-left-color: @brand-danger; } } &.arrow-warning{ &:after{ border-left-color: @brand-warning; } } &.arrow-light{ &:after{ border-left-color: @brand-light; } } &.arrow-dark{ &:after{ border-left-color: @brand-dark; } } &.arrow-black{ &:after{ border-left-color: @brand-black; } } } &.bottom { left: 50%; bottom: -@arrow-outer-width; margin-left: -@arrow-outer-width; border-bottom-width: 0; border-top-color: @arrow-outer-color; &:after { bottom: 1px; margin-left: -@arrow-width; border-bottom-width: 0; border-top-color: @arrow-color; } &.arrow-primary{ &:after{ border-top-color: @brand-primary; } } &.arrow-info{ &:after{ border-top-color: @brand-info; } } &.arrow-success{ &:after{ border-top-color: @brand-success; } } &.arrow-danger{ &:after{ border-top-color: @brand-danger; } } &.arrow-warning{ &:after{ border-top-color: @brand-warning; } } &.arrow-light{ &:after{ border-top-color: @brand-light; } } &.arrow-dark{ &:after{ border-top-color: @brand-dark; } } &.arrow-black{ &:after{ border-top-color: @brand-black; } } } &.left { top: 50%; left: -@arrow-outer-width; margin-top: -@arrow-outer-width; border-left-width: 0; border-right-color: @arrow-outer-color; &:after { left: 1px; bottom: -@arrow-width; border-left-width: 0; border-right-color: @arrow-color; } &.arrow-primary{ &:after{ border-right-color: @brand-primary; } } &.arrow-info{ &:after{ border-right-color: @brand-info; } } &.arrow-success{ &:after{ border-right-color: @brand-success; } } &.arrow-danger{ &:after{ border-right-color: @brand-danger; } } &.arrow-warning{ &:after{ border-right-color: @brand-warning; } } &.arrow-light{ &:after{ border-right-color: @brand-light; } } &.arrow-dark{ &:after{ border-right-color: @brand-dark; } } &.arrow-black{ &:after{ border-right-color: @brand-black; } } } &.pull-left{ left: @arrow-outer-width + 10; } &.pull-right{ left: auto; right: @arrow-outer-width + 10; } &.pull-up{ top: @arrow-outer-width + 10; } &.pull-down{ top: auto; bottom: @arrow-outer-width + 10; } } ================================================ FILE: src/css/less/app.butterbar.less ================================================ .butterbar{ position: relative; margin-bottom: -@butterbar-height; height: @butterbar-height; .bar{ position: absolute; height: 0; width: 100%; text-indent: -9999px; background-color: @brand-info; &:before{ content: ""; height: @butterbar-height; position: absolute; left: 50%; right: 50%; background-color: inherit; } } } .butterbar.active{ -webkit-animation: changebar @butterbar-time*3 infinite @butterbar-time; -moz-animation: changebar @butterbar-time*3 infinite @butterbar-time; animation: changebar @butterbar-time*3 infinite @butterbar-time; .bar{ -webkit-animation: changebar @butterbar-time*3 infinite; -moz-animation: changebar @butterbar-time*3 infinite; animation: changebar @butterbar-time*3 infinite; &:before{ -webkit-animation: movingbar @butterbar-time infinite; -moz-animation: movingbar @butterbar-time infinite; animation: movingbar @butterbar-time infinite; } } } /* Moving bar */ @-webkit-keyframes movingbar{ 0% { left:50%; right:50% } 99.9% { left:0%; right:0% } 100% { left:50%; right:50%} } @-moz-keyframes movingbar{ 0% { left:50%; right:50% } 99.9% { left:0%; right:0% } 100% { left:50%; right:50%} } @keyframes movingbar{ 0% { left:50%; right:50% } 99.9% { left:0%; right:0% } 100% { left:50%; right:50%} } /* change bar */ @-webkit-keyframes changebar{ 0% { background-color: @brand-info } 33.3% { background-color: @brand-info } 33.33% { background-color: @brand-warning } 66.6% { background-color: @brand-warning } 66.66% { background-color: @brand-primary } 99.9% { background-color: @brand-primary } } @-moz-keyframes changebar{ 0% { background-color: @brand-info } 33.3% { background-color: @brand-info } 33.33% { background-color: @brand-warning } 66.6% { background-color: @brand-warning } 66.66% { background-color: @brand-primary } 99.9% { background-color: @brand-primary } } @keyframes changebar{ 0% { background-color: @brand-info } 33.3% { background-color: @brand-info } 33.33% { background-color: @brand-warning } 66.6% { background-color: @brand-warning } 66.66% { background-color: @brand-primary } 99.9% { background-color: @brand-primary } } ================================================ FILE: src/css/less/app.buttons.less ================================================ .btn{ font-weight: 500; border-radius: @btn-border-radius; outline: 0!important; } .btn-link{ color: @text-color; &.active{ webkit-box-shadow:none; box-shadow:none; } } .btn-default{ .button-variant(@text-color, @btn-default-bg, @btn-default-border); background-color: #fff; border-bottom-color: darken(@btn-default-border, 2%); .box-shadow(0 1px 1px rgba(90,90,90,0.1)); &.btn-bg{ border-color:rgba(0,0,0,0.1); background-clip: padding-box; } } .btn-primary{ .button-variant(#fff, @brand-primary, @brand-primary); } .btn-success{ .button-variant(#fff, @brand-success, @brand-success); } .btn-info{ .button-variant(#fff, @brand-info, @brand-info); } .btn-warning{ .button-variant(#fff, @brand-warning, @brand-warning); } .btn-danger{ .button-variant(#fff, @brand-danger, @brand-danger); } .btn-dark{ .button-variant(#fff, @brand-dark, @brand-dark); } .btn-black{ .button-variant(#fff, @brand-black, @brand-black); } .btn-icon{ padding: 0 !important; text-align: center; width:34px; height: 34px; i{ top: -1px; position: relative; line-height: 34px; } &.btn-sm{ width: 30px; height: 30px; i{ line-height: 30px; } } &.btn-lg{ width: 45px; height: 45px; i{ line-height: 45px; } } } .btn-rounded{ border-radius: 50px; padding-left: 15px; padding-right: 15px; &.btn-lg{ padding-left: 25px; padding-right: 25px; } } .btn{ > i{ &.pull-left, &.pull-right{ line-height: @line-height-base; } } } .btn-block { padding-left: 12px; padding-right: 12px; } .btn-group-vertical > .btn:first-child:not(:last-child){ border-top-right-radius: @border-radius-base; } .btn-group-vertical > .btn:last-child:not(:first-child){ border-bottom-left-radius: @border-radius-base; } .btn-addon { i{ margin: -7px -12px; margin-right: 12px; background-color: rgba(0, 0, 0, 0.1); width: 34px; height: 34px; line-height: 34px; text-align: center; float: left; position: relative; border-radius: @btn-border-radius 0 0 @btn-border-radius; &.pull-right{ margin-right: -12px; margin-left: 12px; border-radius: 0 @btn-border-radius @btn-border-radius 0; } } &.btn-sm{ i{ margin: -6px -10px; margin-right: 10px; width: 30px; height: 30px; line-height: 30px; &.pull-right{ margin-right: -10px; margin-left: 10px; } } } &.btn-lg{ i{ margin: -11px -16px; margin-right: 16px; width: 45px; height: 45px; line-height: 45px; &.pull-right{ margin-right: -16px; margin-left: 16px; } } } &.btn-default{ i{ background-color: transparent; border-right: 1px solid @border-color; } } } .btn-groups .btn{ margin-bottom: 5px; } ================================================ FILE: src/css/less/app.colors.less ================================================ .bg-gd{ #gradient > .vertical(rgba(40,50,60,0), rgba(40,50,60,0.075), 0, 100%); filter:none; } .bg-gd-dk{ #gradient > .vertical(rgba(40,50,60,0), rgba(40,50,60,0.5), 10%, 100%); filter:none; } .bg-light { .color-variant(@brand-light, 2%, 3%, 3%, 5%); color: @text-color; } .bg-dark { .color-variant(@brand-dark, 5%, 10%, 5%, 10%); .font-variant(@brand-dark); } .bg-black { .color-variant(@brand-black, 5%, 10%, 5%, 10%); .font-variant(@brand-black); } .bg-primary { .color-variant(@brand-primary, 5%, 10%, 5%, 10%); .font-variant(@brand-primary); } .bg-success { .color-variant(@brand-success, 5%, 10%, 5%, 10%); .font-variant(@brand-success); } .bg-info { .color-variant(@brand-info, 5%, 10%, 5%, 10%); .font-variant(@brand-info); } .bg-warning { .color-variant(@brand-warning, 5%, 10%, 5%, 10%); .font-variant(@brand-warning); } .bg-danger { .color-variant(@brand-danger, 5%, 10%, 5%, 10%); .font-variant(@brand-danger); } .bg-white { background-color: #fff; color: @text-color; a { color: @link-color; &:hover{ color: darken(@link-color, 10%); } } .text-muted{color: @text-muted !important;} .lt, .lter, .dk, .dker{ background-color: #fff; } } .bg-white-only{background-color:#fff;} .bg-white-opacity{ background-color: rgba(255, 255, 255, 0.5); } .bg-black-opacity{ background-color: rgba(32, 43, 54, 0.5); } a.bg-light{ &:hover{ color: @link-color; } } .text-wariant(@brand-primary, primary); .text-wariant(@brand-info, info); .text-wariant(@brand-success, success); .text-wariant(@brand-warning, warning); .text-wariant(@brand-danger, danger); .text-wariant(@brand-dark, dark); .text-wariant(@brand-black, black); .text-white { color: #fff; } .text-black { color: #000; } .text-muted { color: @text-muted; } ================================================ FILE: src/css/less/app.components.less ================================================ .i-switch { cursor: pointer; position: relative; display: inline-block; width: @switch-width; height: @switch-height; border-radius: 30px; background-color: @brand-success; margin: 0; input { position: absolute; .opacity(0); &:checked { + i { &:before { top: 50%; bottom: 50%; left: 50%; right: 5px; border-width: 0; border-radius: 5px; } &:after { margin-left: @switch-width - @switch-height + 1; } } } } i { &:before { content: ""; position: absolute; top: -1px; bottom: -1px; left: -1px; right: -1px; background-color: #fff; border: 1px solid #f0f0f0; border-radius: 30px; .transition(all 0.2s); } &:after { content: ""; position: absolute; background-color: #fff; width: @switch-height - 2; top: 1px; bottom: 1px; border-radius: 50%; .box-shadow(1px 1px 3px rgba(0, 0, 0, 0.25)); .transition(margin-left 0.3s); } } } .i-switch-md { width: @switch-md-width; height: @switch-md-height; input { &:checked { + i { &:after { margin-left: @switch-md-width - @switch-md-height + 1; } } } } i { &:after { width: @switch-md-height - 2; } } } .i-switch-lg { width: @switch-lg-width; height: @switch-lg-height; input { &:checked { + i { &:after { margin-left: @switch-lg-width - @switch-lg-height + 1; } } } } i { &:after { width: @switch-lg-height - 2; } } } .i-checks { padding-left: 20px; cursor: pointer; input { opacity: 0; position: absolute; margin-left: -20px; &:checked + i { border-color: @brand-info; &:before { left: 4px; top: 4px; width: 10px; height: 10px; background-color: @brand-info; } } &:checked + span .active { display: inherit; } &[type="radio"] + i { &, &:before { border-radius: 50%; } } &[type="checkbox"]:checked + i:before { } &[type="radio"]:checked + i:before { } &[disabled], fieldset[disabled] & { & + i { border-color: lighten(@input-border, 5%); &:before { background-color: lighten(@input-border, 5%); } } } } > i { width: 20px; height: 20px; line-height: 1; border: 1px solid @input-border; background-color: #fff; margin-left: -20px; margin-top: -2px; display: inline-block; vertical-align: middle; margin-right: 4px; position: relative; &:before { content: ""; position: absolute; left: 50%; top: 50%; width: 0px; height: 0px; background-color: transparent; .transition(all 0.2s); } } > span { margin-left: -20px; .active { display: none; } } } .i-checks-sm { input { &:checked + i { &:before { left: 3px; top: 3px; width: 8px; height: 8px; } } } > i { width: 16px; height: 16px; margin-left: -18px; margin-right: 6px; } } .i-checks-lg { input { &:checked + i { &:before { left: 8px; top: 8px; width: 12px; height: 12px; } } } > i { width: 30px; height: 30px; } } .hide-file { input[type="file"] { position: absolute; left: 0; top: 0; opacity: 0; } } // ui.bootstrap datepicker .datepicker { margin: 0 5px } .datepicker .btn-default { border-width: 0; box-shadow: none; } .datepicker .btn[disabled] { opacity: 0.4 } .datepicker .btn-info .text-info { color: #fff !important; } ================================================ FILE: src/css/less/app.item.less ================================================ .item { position: relative; .top { position: absolute; top: 0; left: 0; } .bottom { position: absolute; bottom: 0; left: 0; } .center { position: absolute; top: 50%; } } .item-overlay { display: none; position: absolute; top: 0; right: 0; bottom: 0; left: 0; &.active, .item:hover & { display: block; } } .loading { position: fixed; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.5); z-index: 999999; top: 0; left: 0; .load { width: 160px; height: 56px; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; line-height: 56px; color: #fff; padding-left: 60px; font-size: 15px; background: #000 url('../img/loading.gif') no-repeat 10px 50%; opacity: 0.7; z-index: 9999; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70); } } ================================================ FILE: src/css/less/app.layout.boxed.less ================================================ html{ background: url('../img/bg.jpg'); background-attachment: fixed; background-size: cover; } .app.container{ padding-left: 0; padding-right: 0; } @media (min-width: 768px) { .app.container{ width: 750px; .box-shadow(0 0 30px rgba(0,0,0,0.3)); .app-aside{ overflow-x: hidden; } &.app-aside-folded{ .app-aside{ overflow-x: visible; } } &.app-aside-fixed{ .aside-wrap{ left: inherit; } &.app-aside-folded{ .app-aside{ > ul.nav{ position: absolute; } } } } .app-header, .app-aside{ max-width: 750px; } .app-footer-fixed{ left: auto; right: auto; width: 100%; max-width: 750 - @app-aside-width; } &.app-aside-folded{ .app-footer-fixed{ max-width: 750 - @app-aside-folded-width; } } &.app-aside-dock{ .app-footer-fixed{ max-width: 750px; } } } } @media (min-width: 992px) { .app.container{ width: 970px; .app-header, .app-aside{ max-width: 970px; } .app-footer-fixed{ max-width: 970 - @app-aside-width; } &.app-aside-folded{ .app-footer-fixed{ max-width: 970 - @app-aside-folded-width; } } &.app-aside-dock{ .app-footer-fixed{ max-width: 970px; } } } } @media (min-width: 1200px) { .app.container{ width: 1170px; .app-header, .app-aside{ max-width: 1170px; } .app-footer-fixed{ max-width: 1170 - @app-aside-width; } &.app-aside-folded{ .app-footer-fixed{ max-width: 1170 - @app-aside-folded-width; } } &.app-aside-dock{ .app-footer-fixed{ max-width: 1170px; } } } } ================================================ FILE: src/css/less/app.layout.less ================================================ /*layout*/ html, body{ width: 100%; height: 100%; } body{ overflow-x: hidden; } .app{ height: auto; min-height: 100%; width: 100%; position: relative; &:before{ content: ""; position: absolute; width: inherit; top: 0; bottom: 0; z-index: -1; background-color: @body-bg; border: inherit; display: block; } } .app-header-fixed{ padding-top: @app-header-height; .app-header{ position: fixed; top: 0; width: 100%; } } .app-header{ z-index: 1025; border-radius: 0; } // menu .app-aside{ float: left; &:before{ content: ""; position: absolute; width: inherit; top: 0; bottom: 0; z-index: -1; background-color: inherit; border: inherit; } } .app-aside-footer{ position: absolute; bottom: 0; width: 100%; z-index: 1000; max-width: @app-aside-width; .app-aside-folded & { max-width: @app-aside-folded-width; } ~ div{ padding-bottom: 50px; } } .app-aside-right{ padding-bottom: @app-header-height; } // content .app-content{ height: 100%; .clearfix(); } .app-content-full{ position: absolute; top: @app-header-height; bottom: @app-header-height; height: auto; width: auto !important; padding: 0 !important; overflow-y: auto; -webkit-overflow-scrolling: touch; &.h-full{ bottom: 0; height: auto; } } .app-content-body{ padding-bottom: @app-header-height; float: left; width: 100%; } // footer .app-footer{ position: absolute; bottom: 0; left: 0; right: 0; z-index: 1005; &.app-footer-fixed{ position: fixed; } } .hbox{ display: table; table-layout: fixed; border-spacing: 0; width: 100%; height: 100%; .col{ display: table-cell; vertical-align: top; height: 100%; float: none; } } .v-middle{vertical-align: middle !important;} .v-top{vertical-align: top !important;} .v-bottom{vertical-align: bottom !important;} .vbox{ display: table; border-spacing:0; position: relative; width: 100%; height: 100%; min-height: 240px; .row-row { display: table-row; height: 100%; .cell { position: relative; height: 100%; width: 100%; -webkit-overflow-scrolling:touch; overflow: auto; .ie & { display: table-cell; } .cell-inner { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } } } } // navbar .navbar{ .navbar-form-sm{ margin-top: 10px; margin-bottom: 10px; } border-width: 0; border-radius: 0; margin: 0; } .navbar-md{ min-height: @app-header-md-height; .navbar-btn{ margin-top: 13px; } .navbar-form{ margin-top: 15px; } .navbar-nav > li > a{ padding-top: 20px; padding-bottom: 20px; } .navbar-brand{ line-height: 60px; } } .navbar-header{ > button{ text-decoration: none; line-height: 30px; font-size: 16px; padding: 10px 17px; border: none; background-color: transparent; } } .navbar-brand{ float: none; text-align: center; font-size: 20px; font-weight: 700; height: auto; line-height: @app-header-height; display: inline-block; padding: 0 20px; &:hover{ text-decoration: none; } img{ max-height: 20px; margin-top: -4px; vertical-align: middle; display: inline; } } @media (min-width: 768px) { .app-aside, .navbar-header { width: @app-aside-width; } .navbar-collapse, .app-content, .app-footer{ margin-left: @app-aside-width; } .app-aside-right{ position: absolute; top: @app-header-height; bottom: 0; right: 0; z-index: 1000; &.pos-fix{ z-index: 1010; } } .visible-folded{display: none;} .app-aside-folded{ .hidden-folded{ display: none !important; } .visible-folded{ display: inherit; } .text-center-folded{ text-align: center; } .pull-none-folded{ float: none !important; } .w-auto-folded{ width: auto; } .app-aside, .navbar-header { width: @app-aside-folded-width; } .navbar-collapse, .app-content, .app-footer{ margin-left: @app-aside-folded-width; } .app-header{ .navbar-brand{ display: block; padding: 0; } } } .app-aside-fixed{ .app-header{ .navbar-header{ position: fixed; } } .aside-wrap{ position: fixed; overflow: hidden; top: @app-header-height; bottom: 0; left: 0; width: @app-aside-width - 1; z-index: 1000; .navi-wrap{ width: @app-aside-width + @scroll-bar-width; position: relative; height: 100%; overflow-x:hidden; overflow-y: scroll; -webkit-overflow-scrolling: touch; &::-webkit-scrollbar { -webkit-appearance: none; } &::-webkit-scrollbar:vertical { width: @scroll-bar-width; } } .smart & .navi-wrap{ width: @app-aside-width; } } &.app-aside-folded{ .app-aside{ position: fixed; top: 0; bottom: 0; z-index: 1010; } .aside-wrap{ width: @app-aside-folded-width - 1; .navi-wrap{ width: @app-aside-folded-width + @scroll-bar-width; } .smart & .navi-wrap{ width: @app-aside-folded-width; } } } } .bg-auto{ &:before{ content: ""; position: absolute; width: inherit; top: 0; bottom: 0; z-index: -1; background-color: inherit; border: inherit; } &.b-l:before{ margin-left: -1px; } &.b-r:before{ margin-right: -1px; } } .col.show{ display: table-cell !important; } } // sm @media (min-width: 768px) and (max-width: 991px) { .hbox-auto-sm{ display: block; > .col{ width: auto; height: auto; display: block; &.show{ display: block !important; } } } } // xs @media (max-width: 767px) { .app-aside{ float: none; } .app-content-full{ width: 100% !important; } .hbox-auto-xs{ display: block; > .col{ width: auto; height: auto; display: block; } } .navbar-nav{ margin-top: 0; margin-bottom: 0; > li > a{ box-shadow:0 -1px 0 rgba(0,0,0,0.1); .up{ top: 0; } .avatar{ width: 30px; margin-top: -5px; } } .open .dropdown-menu{ background-color: #fff; } } .navbar-form{ box-shadow:0 -1px 0 rgba(0,0,0,0.1); margin-top: 0 !important; margin-bottom: 0 !important; .form-group{ margin-bottom: 0; } } } ================================================ FILE: src/css/less/app.less ================================================ // Core variables and mixins @import "app.variables.less"; @import "app.mixins.less"; @import "app.reset.less"; @import "app.layout.less"; @import "app.layout.boxed.less"; @import "app.nav.less"; @import "app.nav.offscreen.less"; @import "app.nav.dock.less"; @import "app.arrow.less"; @import "app.buttons.less"; @import "app.widgets.less"; @import "app.components.less"; @import "app.plugin.less"; @import "app.item.less"; @import "app.ng.less"; @import "app.colors.less"; @import "app.utilities.less"; @import "app.butterbar.less"; ================================================ FILE: src/css/less/app.mixins.less ================================================ .color-variant(@bg-color: #555, @lt-percent: 10%, @lter-percent: 15%, @dk-percent: 10%, @dker-percent: 15%) { background-color: @bg-color; &.lt, .lt { .color-schema(@bg-color, -@lt-percent, -2.5%); } &.lter, .lter { .color-schema(@bg-color, -@lter-percent, -5%); } &.dk, .dk { .color-schema(@bg-color, @dk-percent, 2.5%); } &.dker, .dker { .color-schema(@bg-color, @dker-percent, 5%); } &.bg, .bg{ background-color: @bg-color; } } .color-schema(@bg-color: #555, @percent: 15%, @sat-percent){ background-color: saturate(darken(@bg-color, @percent), @sat-percent); } .font-variant(@bg-color){ @font-color: desaturate(lighten(@bg-color,40%), 10%); @link-color: desaturate(lighten(@bg-color,50%), 10%); @hover-color: #fff; color: @font-color; a { color: @link-color; &:hover{ color: @hover-color; } &.list-group-item{ &:hover, &:focus{ background-color: inherit; } } } .nav { > li { &:hover, &:focus, &.active{ > a{ color: @hover-color; .color-schema(@bg-color, 5%, 2.5%); } } > a{ color: darken(@link-color, 5%); &:hover, &:focus{ .color-schema(@bg-color, 3%, 2.5%); } } } .open > a{ .color-schema(@bg-color, 5%, 2.5%); } } .caret{ border-top-color: @font-color; border-bottom-color: @font-color; } &.navbar .nav{ > li.active > a{ color: @hover-color; .color-schema(@bg-color, 5%, 2.5%); } } .open > a { &, &:hover, &:focus{ color: @hover-color; } } .text-muted { color: darken(@font-color, 10%) !important; } .text-lt { color: lighten(@font-color, 25%) !important; } &.auto, .auto{ .list-group-item{ border-color: darken(@bg-color, 5%) !important; background-color: transparent; &:hover, &:focus, &:active, &.active{ .color-schema(@bg-color, 5%, 2.5%) !important; } } } } .text-wariant(@bg-color, @name){ a.bg-@{name}:hover{ background-color: darken(@bg-color, 5%); } a.text-@{name}:hover{ color: darken(@bg-color, 5%); } .text-@{name}{ color: @bg-color; } .text-@{name}-lt{ color: lighten(@bg-color, 5%); } .text-@{name}-lter{ color: lighten(@bg-color, 10%); } .text-@{name}-dk{ color: darken(@bg-color, 5%); } .text-@{name}-dker{ color: darken(@bg-color, 10%); } } .clearfix() { &:before, &:after { content: " "; display: table; } &:after { clear: both; } } // Button variants // ------------------------- // Easily pump out default styles, as well as :hover, :focus, :active, // and disabled options for all buttons .button-variant(@color; @background; @border) { color: @color !important; background-color: @background; border-color: @border; &:hover, &:focus, &:active, &.active, .open .dropdown-toggle& { color: @color !important; background-color: darken(@background, 5%); border-color: darken(@border, 8%); } &:active, &.active, .open .dropdown-toggle& { background-image: none; } &.disabled, &[disabled], fieldset[disabled] & { &, &:hover, &:focus, &:active, &.active { background-color: @background; border-color: @border } } } .translateZ(@z) { -webkit-transform: translateZ(@z); -ms-transform: translateZ(@z); -o-transform: translateZ(@z); transform: translateZ(@z); } // CSS3 PROPERTIES // -------------------------------------------------- // Single side border-radius .border-top-radius(@radius) { border-top-right-radius: @radius; border-top-left-radius: @radius; } .border-right-radius(@radius) { border-bottom-right-radius: @radius; border-top-right-radius: @radius; } .border-bottom-radius(@radius) { border-bottom-right-radius: @radius; border-bottom-left-radius: @radius; } .border-left-radius(@radius) { border-bottom-left-radius: @radius; border-top-left-radius: @radius; } // Drop shadows .box-shadow(@shadow) { -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 box-shadow: @shadow; } // Transitions .transition(@transition) { -webkit-transition: @transition; transition: @transition; } .transition-delay(@transition-delay) { -webkit-transition-delay: @transition-delay; transition-delay: @transition-delay; } .transition-duration(@transition-duration) { -webkit-transition-duration: @transition-duration; transition-duration: @transition-duration; } .transition-transform(@transition) { -webkit-transition: -webkit-transform @transition; -moz-transition: -moz-transform @transition; -o-transition: -o-transform @transition; transition: transform @transition; } // Transformations .rotate(@degrees) { -webkit-transform: rotate(@degrees); -ms-transform: rotate(@degrees); // IE9+ transform: rotate(@degrees); } .scale(@ratio) { -webkit-transform: scale(@ratio); -ms-transform: scale(@ratio); // IE9+ transform: scale(@ratio); } .translate(@x, @y) { -webkit-transform: translate(@x, @y); -ms-transform: translate(@x, @y); // IE9+ transform: translate(@x, @y); } .skew(@x, @y) { -webkit-transform: skew(@x, @y); -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ transform: skew(@x, @y); } .translate3d(@x, @y, @z) { -webkit-transform: translate3d(@x, @y, @z); transform: translate3d(@x, @y, @z); } // Backface visibility // Prevent browsers from flickering when using CSS 3D transforms. // Default value is `visible`, but can be changed to `hidden` // See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples .backface-visibility(@visibility){ -webkit-backface-visibility: @visibility; -moz-backface-visibility: @visibility; backface-visibility: @visibility; } // Box sizing .box-sizing(@boxmodel) { -webkit-box-sizing: @boxmodel; -moz-box-sizing: @boxmodel; box-sizing: @boxmodel; } // User select // For selecting text on the page .user-select(@select) { -webkit-user-select: @select; -moz-user-select: @select; -ms-user-select: @select; // IE10+ -o-user-select: @select; user-select: @select; } // Resize anything .resizable(@direction) { resize: @direction; // Options: horizontal, vertical, both overflow: auto; // Safari fix } // CSS3 Content Columns .content-columns(@column-count, @column-gap: @grid-gutter-width) { -webkit-column-count: @column-count; -moz-column-count: @column-count; column-count: @column-count; -webkit-column-gap: @column-gap; -moz-column-gap: @column-gap; column-gap: @column-gap; } // Optional hyphenation .hyphens(@mode: auto) { word-wrap: break-word; -webkit-hyphens: @mode; -moz-hyphens: @mode; -ms-hyphens: @mode; // IE10+ -o-hyphens: @mode; hyphens: @mode; } // Opacity .opacity(@opacity) { opacity: @opacity; // IE8 filter @opacity-ie: (@opacity * 100); filter: ~"alpha(opacity=@{opacity-ie})"; } // GRADIENTS // -------------------------------------------------- #gradient { // Horizontal gradient, from left to right // // Creates two color stops, start and end, by specifying a color and position for each color stop. // Color stops are not available in IE9 and below. .horizontal(@start-color: #555, @end-color: #333, @start-percent: 0%, @end-percent: 100%) { background-image: -webkit-gradient(linear, @start-percent top, @end-percent top, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+ background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1+, Chrome 10+ background-image: -moz-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // FF 3.6+ background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10 background-repeat: repeat-x; filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down } // Vertical gradient, from top to bottom // // Creates two color stops, start and end, by specifying a color and position for each color stop. // Color stops are not available in IE9 and below. .vertical(@start-color: #555, @end-color: #333, @start-percent: 0%, @end-percent: 100%) { background-image: -webkit-gradient(linear, left @start-percent, left @end-percent, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+ background-image: -webkit-linear-gradient(top, @start-color, @start-percent, @end-color, @end-percent); // Safari 5.1+, Chrome 10+ background-image: -moz-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // FF 3.6+ background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10 background-repeat: repeat-x; filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down } .directional(@start-color: #555, @end-color: #333, @deg: 45deg) { background-repeat: repeat-x; background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1+, Chrome 10+ background-image: -moz-linear-gradient(@deg, @start-color, @end-color); // FF 3.6+ background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10 } .horizontal-three-colors(@start-color: #00b3ee, @mid-color: #7a43b6, @color-stop: 50%, @end-color: #c3325f) { background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color)); background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); background-image: -moz-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); background-repeat: no-repeat; filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback } .vertical-three-colors(@start-color: #00b3ee, @mid-color: #7a43b6, @color-stop: 50%, @end-color: #c3325f) { background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color)); background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); background-image: -moz-linear-gradient(top, @start-color, @mid-color @color-stop, @end-color); background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); background-repeat: no-repeat; filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback } .radial(@inner-color: #555, @outer-color: #333) { background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@inner-color), to(@outer-color)); background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); background-image: -moz-radial-gradient(circle, @inner-color, @outer-color); background-image: radial-gradient(circle, @inner-color, @outer-color); background-repeat: no-repeat; } .striped(@color: #555, @angle: 45deg) { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); } } // Reset filters for IE // // When you need to remove a gradient background, don't forget to use this to reset // the IE filter for IE9 and below. .reset-filter() { filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); } ================================================ FILE: src/css/less/app.nav.dock.less ================================================ @media (min-width: @app-aside-dock-media) { .app-aside-dock{ .app-content, .app-footer{ margin-left: 0; } .app-aside-footer ~ div{ padding-bottom: 0; } &.app-aside-fixed{ &.app-header-fixed{ padding-top: 115px; } .app-aside{ position: fixed; top: 50px; width: 100%; z-index: 1000; } } .app-aside, .aside-wrap, .navi-wrap{ float: none; width: 100% !important; position: relative; top: 0; overflow: visible !important; } .app-aside{ bottom: auto !important; &.b-r{ border-right-width: 0; border-bottom:1px solid @border-color; } &:before { display: none; } nav > .nav{ float: left; } .hidden-folded, .line, .navi-wrap > div{ display: none !important; } .navi > ul > li{ position: relative; float: left; display: inline-block; > a{ padding: 10px 15px 12px 15px; text-align: center; height: auto; > .badge, > .label{ position: absolute; top: 5px; right: 8px; padding: 1px 4px; } > i{ margin-left: auto; margin-right: auto; margin-bottom: -7px; margin-top: -10px; display: block; float: none; font-size: 14px; line-height: 40px; width: 40px; } > span.pull-right{ position: absolute; bottom: 2px; left: 50%; margin-left: -6px; display: block !important; line-height: 1; i { &.text{ .rotate(90deg); line-height: 14px; } line-height: 12px; width: 12px; font-size: 12px; } } > span{ font-weight: normal; display: block; } } .nav-sub{ height: auto !important; display: none; position: absolute; left: 0; top: auto !important; z-index: 1050; width: @app-aside-width; .box-shadow(0 2px 6px rgba(0,0,0,0.1)); } .nav-sub-header{ display: none !important; } } .navi li li a{ padding-left: 15px; } .navi li:hover, .navi li:focus, .navi li:active{ > .nav-sub{ display: block; opacity: 1; margin-left: 0; height: auto !important; overflow: auto; } } } } } ================================================ FILE: src/css/less/app.nav.less ================================================ .nav-sub{ opacity: 0; height: 0; overflow: hidden; margin-left: -20px; .transition(all .2s ease-in-out 0s); .active > &, .app-aside-folded li:hover > &, .app-aside-folded li:focus > &, .app-aside-folded li:active > &{ opacity: 1; margin-left: 0; height: auto !important; overflow: auto; } } .nav-sub-header { display: none !important; a{ padding: floor((@app-aside-folded-nav-height - @line-height-computed)/2) 20px; } } .navi { ul.nav { li { display: block; position: relative; li { a { padding-left: @app-aside-nav-height + 15px; } ul{ display:none; } &.active > ul{ display:block; } } a { font-weight: normal; text-transform: none; display: block; padding: floor((@app-aside-nav-height - @line-height-computed)/2) 20px; position: relative; .transition(background-color .2s ease-in-out 0s); .badge, .label { font-size: 11px; padding: 2px 5px; margin-top: 2px; } > i { margin: floor(-(@app-aside-nav-height - @line-height-computed)/2) -10px; line-height: @app-aside-nav-height; width: @app-aside-nav-height; float: left; margin-right: 5px; text-align: center; position: relative; top: 0; overflow: hidden; &:before { position: relative; z-index: 2; } } } } } } @media (min-width: 768px) { .app-aside-folded{ .nav-sub-header{ display: block !important; a{ padding: floor((@app-aside-folded-nav-height - @line-height-computed)/2) 20px !important; } } .navi{ > ul { > li { > a { position: relative; padding: 0; text-align: center; height: @app-aside-folded-nav-height; border: none; span { display: none; &.pull-right{ display: none !important; } } i{ width: auto; float: none; display: block; font-size: 16px; margin: 0; line-height: @app-aside-folded-nav-height; border: none !important; b{ left: 0 !important; } } .badge, .label{ position: absolute; right: 12px; top: 8px; z-index: 3; } } } > li > ul{ height: 0 !important; position: absolute; left: 100%; top: 0 !important; z-index: 1050; width: @app-aside-width; .box-shadow(0 2px 6px rgba(0,0,0,0.1)); } } li { li{ a{ padding-left: 20px !important; } } } } } .app-aside-folded.app-aside-fixed .app-aside{ > ul.nav { &:before{ content:""; width: @app-aside-folded-width; height: @app-aside-folded-nav-height; position: absolute; left: -@app-aside-folded-width; top: 0; } z-index: 1010; opacity: 1; height: auto; overflow: visible; overflow-y: auto; display: block; width: @app-aside-width + @app-aside-folded-width; left: @app-aside-folded-width + 20; position: fixed; -webkit-overflow-scrolling: touch; a{ padding-left: 20px !important; padding-right: 20px !important; } } } } ================================================ FILE: src/css/less/app.nav.offscreen.less ================================================ @media (max-width: 767px) { .app{ overflow-x: hidden; } .app-content{ .transition-transform(0.2s ease); } .off-screen{ position: absolute; top: 50px; bottom: 0; width: @off-screen-width; display: block !important; visibility: visible; overflow-x: hidden; overflow-y: auto; -webkit-overflow-scrolling: touch; z-index: 1010; + *{ background-color: @body-bg; .transition-transform(0.2s ease); .backface-visibility(hidden); .translate3d(@off-screen-width, 0px, 0px); overflow: hidden; position: absolute; width: 100%; top: 0; bottom: 0; left: 0; right: 0; z-index: 1015; padding-top: 50px; .off-screen-toggle { display:block !important; position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 1020; } } &.pull-right{ right: 0; + *{ .translate3d(-@off-screen-width, 0px, 0px); } } } } ================================================ FILE: src/css/less/app.ng.less ================================================ .form-validation{ .form-control{ &.ng-dirty.ng-invalid{ border-color: @brand-danger; } &.ng-dirty.ng-valid{ &, &:focus{ border-color: @brand-success; } } } .i-checks{ .ng-invalid.ng-dirty + i{ border-color: @brand-danger; } } } .ng-animate .bg-auto:before{ display: none; } [ui-view].ng-leave { display: none; } [ui-view].ng-leave.smooth { display: block; } .smooth.ng-animate{ position: absolute; width: 100%; height: 100%; overflow: hidden; } // big animation .fade-in-right-big.ng-enter { -webkit-animation: fadeInRightBig 0.5s; animation: fadeInRightBig 0.5s; } .fade-in-right-big.ng-leave { -webkit-animation: fadeOutLeftBig 0.5s; animation: fadeOutLeftBig 0.5s; } .fade-in-left-big.ng-enter { -webkit-animation: fadeInLeftBig 0.5s; animation: fadeInLeftBig 0.5s; } .fade-in-left-big.ng-leave { -webkit-animation: fadeOutRightBig 0.5s; animation: fadeOutRightBig 0.5s; } .fade-in-up-big.ng-enter { -webkit-animation: fadeInUpBig 0.5s; animation: fadeInUpBig 0.5s; } .fade-in-up-big.ng-leave { -webkit-animation: fadeOutUpBig 0.5s; animation: fadeOutUpBig 0.5s; } .fade-in-down-big.ng-enter { -webkit-animation: fadeInDownBig 0.5s; animation: fadeInDownBig 0.5s; } .fade-in-down-big.ng-leave { -webkit-animation: fadeOutDownBig 0.5s; animation: fadeOutDownBig 0.5s; } // small .fade-in.ng-enter { -webkit-animation: fadeIn 0.5s; animation: fadeIn 0.5s; } .fade-in.ng-leave { -webkit-animation: fadeOut 0.5s; animation: fadeOut 0.5s; } .fade-in-right.ng-enter { -webkit-animation: fadeInRight 0.5s; animation: fadeInRight 0.5s; } .fade-in-right.ng-leave { -webkit-animation: fadeOutLeft 0.5s; animation: fadeOutLeft 0.5s; } .fade-in-left.ng-enter { -webkit-animation: fadeInLeft 0.5s; animation: fadeInLeft 0.5s; } .fade-in-left.ng-leave { -webkit-animation: fadeOutRight 0.5s; animation: fadeOutRight 0.5s; } .fade-in-up.ng-enter { -webkit-animation: fadeInUp 0.5s; animation: fadeInUp 0.5s; } .fade-in-up.ng-leave { -webkit-animation: fadeOutUp 0.5s; animation: fadeOutUp 0.5s; } .fade-in-down.ng-enter { -webkit-animation: fadeInDown 0.5s; animation: fadeInDown 0.5s; } .fade-in-down.ng-leave { -webkit-animation: fadeOutDown 0.5s; animation: fadeOutDown 0.5s; } ================================================ FILE: src/css/less/app.plugin.less ================================================ /*Charts*/ .jqstooltip { background-color: rgba(0, 0, 0, 0.8) !important; border: solid 1px #000 !important; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; padding: 5px 10px !important; .box-sizing(content-box); } // easypie .easyPieChart { position: relative; text-align: center; > div { position: relative; z-index: 1; .text { position: absolute; width: 100%; top: 60%; line-height: 1; } img { margin-top: -4px; } } canvas { position: absolute; top: 0; left: 0; z-index: 0 } } // flot tip #flotTip { padding: 4px 10px; background-color: rgba(0, 0, 0, 0.8); border: solid 1px #000 !important; z-index: 100; font-size: 12px; color: #fff; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } // flot lengend .legendColorBox { > div { border: none !important; margin: 5px; > div { border-radius: 10px; } } } // sortable .sortable-placeholder { list-style: none; border: 1px dashed #CCC; min-height: 50px; margin-bottom: 5px } .table { > thead { .sorting, .sorting_asc, .sorting_desc { cursor: pointer; white-space: normal; } .sorting:after, .sorting_asc:after, .sorting_desc:after { font-family: FontAwesome; color: #ccc; position: relative; font-weight: normal; float: right; } .sorting:after { content: "\f0dc"; } .sorting_asc:after { content: "\f0de"; } .sorting_desc:after { content: "\f0dd"; } } } .ibox { clear: both; margin-bottom: 25px; margin-top: 0; padding: 0; } .ibox.collapsed .ibox-content { display: none; } .ibox.collapsed .fa.fa-chevron-up:before { content: "\f078"; } .ibox.collapsed .fa.fa-chevron-down:before { content: "\f077"; } .ibox:after, .ibox:before { display: table; } .ibox-title { -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; background-color: @ibox-title-bg; border-color: @border-color; border-image: none; border-style: solid solid none; border-width: 3px 0 0; color: inherit; margin-bottom: 0; padding: 14px 15px 7px; min-height: 48px; } .ibox-content { background-color: @ibox-content-bg; color: inherit; padding: 15px 20px 20px 20px; border-color: @border-color; border-image: none; border-style: solid solid none; border-width: 1px 0; } .ibox-footer { color: inherit; border-top: 1px solid @border-color; font-size: 90%; background: #ffffff; padding: 10px 15px; } ================================================ FILE: src/css/less/app.reset.less ================================================ // reset html { background-color: @body-bg; } body { font-family: @font-family-base; font-size: @font-size-base; color: @text-color; background-color: transparent; -webkit-font-smoothing: antialiased; line-height: @line-height-base; } *:focus { outline: 0 !important; } .h1, .h2, .h3, .h4, .h5, .h6{ margin: 0; } // Links // ------------------------- a { color: @link-color; text-decoration: none; cursor: pointer; } a:hover, a:focus { color: @link-hover-color; text-decoration: none; } label{font-weight: normal;} small, .small{font-size: @font-size-sm;} .badge, .label{font-weight: bold; text-shadow: 0 1px 0 rgba(0, 0, 0, .2)} .badge.bg-light, .label.bg-light{text-shadow:none;} .badge{ background-color: @badge-bg; &.up{ position: relative; top: -10px; padding:3px 6px; margin-left: -10px; } } .badge-sm{ font-size: 85%; padding: 2px 5px !important; } .label-sm{ padding-top: 0; padding-bottom: 1px; } .badge-white { background-color: transparent; border: 1px solid rgba(255,255,255,0.35); padding: 2px 6px; } .badge-empty { background-color: transparent; border: 1px solid rgba(0,0,0,0.15); color: inherit; } blockquote{ border-color: @border-color; } .caret-white{ border-top-color: #fff; border-top-color: rgba(255,255,255,.65); a:hover & { border-top-color: #fff; } } .thumbnail{ border-color: @border-color; } .progress{ background-color: @brand-light; } .progress-xxs{ height: 2px } .progress-xs{ height: 6px } .progress-sm{ height: 12px; .progress-bar{ font-size: 10px; line-height: 1em; } } .progress, .progress-bar{ .box-shadow(none); } .progress-bar-primary{ background-color: @brand-primary; } .progress-bar-info{ background-color: @brand-info; } .progress-bar-success{ background-color: @brand-success; } .progress-bar-warning{ background-color: @brand-warning; } .progress-bar-danger{ background-color: @brand-danger; } .progress-bar-black{ background-color: @brand-black; } .progress-bar-white{ background-color: #fff; } .accordion-group, .accordion-inner{ border-color: @border-color; border-radius: @border-radius-base; } .alert{ font-size: @font-size-sm; box-shadow: inset 0 1px 0 rgba(255,255,255,0.2); .close i{ font-size: 12px; font-weight: normal; display: block; } } .form-control{ border-color: @input-border; border-radius: @input-border-radius; &, &:focus { .box-shadow(none); } &:focus{ border-color: @input-border-focus; } } .form-horizontal{ .control-label.text-left{ text-align: left; } } .form-control-spin{ position: absolute; z-index: 2; right: 10px; top: 50%; margin-top: -7px; } .input-lg{ height: 45px; } .input-group-addon{ border-color: @input-border; background-color: @brand-light; } .list-group{ border-radius: @border-radius-base; &.no-radius { .list-group-item{ border-radius: 0 !important; } } &.no-borders { .list-group-item{ border: none; } } &.no-border{ .list-group-item{ border-width: 1px 0; } } &.no-bg{ .list-group-item{ background-color: transparent; } } } .list-group-item{ border-color: @list-group-item-border; padding-right: 15px; a&{ &:hover, &:focus, &.hover{ background-color: @list-group-item-hover; } } &.media { margin-top: 0; } &.active { color: #fff; border-color: @list-group-active-color !important; background-color: @list-group-active-color !important; .text-muted{ color: lighten(@list-group-active-color, 30%) !important; } a{ color: #fff; } } &.focus{ background-color: @list-group-item-focus !important; } &.select{ position: relative; z-index: 1; background-color: @list-group-select-color !important; border-color: darken( @list-group-select-color , 5%); } .list-group-alt & { &:nth-child(2n+2){ background-color: rgba(0,0,0,0.02) !important; } } .list-group-lg & { padding-top: 15px; padding-bottom: 15px; } .list-group-sm & { padding: 6px 10px; } .list-group-sp & { margin-bottom: 5px; border-radius: 3px; } > .badge{ margin-right: 0; } > .fa-chevron-right { float: right; margin-top: 4px; margin-right: -5px; & + .badge{ margin-right: 5px; } } } .nav-pills{ &.no-radius { > li{ > a { border-radius: 0; } } } > li{ &.active { > a{ color: #fff !important; background-color: @brand-info; &:hover, &:active{ background-color: darken(@brand-info, 5%); } } } } } .nav{ > li{ > a{ &:hover, &:focus{ background-color: @nav-bg; } } } &.nav-lg{ > li > a{ padding: 20px 20px; } } &.nav-md{ > li > a{ padding: 15px 15px; } } &.nav-sm{ > li > a{ padding: 6px 12px; } } &.nav-xs{ > li > a{ padding: 4px 10px; } } &.nav-xxs{ > li > a{ padding: 1px 10px; } } &.nav-rounded{ > li > a{ border-radius: 20px; } } .open{ > a{ &, &:hover, &:focus{ background-color: @nav-bg; } } } } .nav-tabs{ border-color: @border-color; > li{ > a{ border-radius: @panel-border-radius @panel-border-radius 0 0; border-bottom-color: @border-color; } &:hover > a, &.active > a, &.active > a:hover{ border-color: @border-color; } &.active > a{ border-bottom-color: #fff !important; } } .nav-tabs-alt & { &.nav-justified{ > li{ display: table-cell; width: 1%; } } > li{ > a { border-radius: 0; border-color: transparent !important; background: transparent !important; border-bottom-color: @border-color !important; } &.active{ > a { border-bottom-color: @brand-info !important; } } } } } .tab-container{ margin-bottom: 15px; .tab-content{ padding:15px; background-color: #fff; border: 1px solid @border-color; border-top-width: 0; border-radius: 0 0 @panel-border-radius @panel-border-radius; } } .pagination{ > li{ > a{ border-color: @border-color; &:hover, &:focus{ border-color: @border-color; background-color: @brand-light; } } } } .panel{ border-radius: @panel-border-radius; .accordion-toggle{ font-size: 14px; display: block; cursor: pointer; } .list-group-item{ border-color: @panel-list-group-border; } &.no-borders{ border-width: 0; .panel-heading, .panel-footer{ border-width: 0; } } } .panel-heading{ .panel-default &{ background-color: @panel-heading-bg; } border-radius: @panel-border-radius @panel-border-radius 0 0; &.no-border{ margin:-1px -1px 0 -1px; border: none; } .nav{ margin: -10px -15px; } .list-group{ background: transparent; } } .panel-footer{ border-color: @panel-heading-border; border-radius: 0 0 @panel-border-radius @panel-border-radius; background-color: @panel-footer-bg; } .panel-default{ border-color: @panel-border; > .panel-heading, > .panel-footer { border-color: @panel-heading-border; } } .panel-group .panel-heading + .panel-collapse .panel-body{ border-top: 1px solid #eaedef; } .table{ > tbody, > tfoot { > tr { > td { padding:8px 15px; border-top: 1px solid @table-border-color; } } } > thead > tr > th{ padding:8px 15px; border-bottom: 1px solid @table-border-color; } } .table-bordered{ border-color: @table-border-color; > tbody{ > tr{ > td{ border-color: @table-border-color; } } } > thead > tr > th{ border-color: @table-border-color; } } .table-striped{ > tbody { > tr{ &:nth-child(odd){ > td, > th{ background-color: @table-striped-color; } } } } > thead { > th{ background-color: @table-striped-color; border-right: 1px solid @table-border-color; &:last-child{ border-right: none } } } } .well, pre { background-color: @brand-light; border-color: @border-color; } .dropdown-menu{ border-radius: @border-radius-base; .box-shadow(0 2px 6px rgba(0, 0, 0, 0.1)); border: 1px solid @border-color; border: 1px solid rgba(0, 0, 0, 0.1); &.pull-left{ left:100%; } > .panel{ border: none; margin: -5px 0; } > li > a{ padding: 5px 15px; } > li > a:hover, > li > a:focus, > .active > a, > .active > a:hover, > .active > a:focus{ background-image: none; filter:none; background-color: @brand-light !important; color: @link-hover-color; } } .dropdown-header{ padding: 5px 15px; } .dropdown-submenu{ position: relative; &:hover, &:focus{ > a{ background-color: @brand-light !important; color: @text-color; } > .dropdown-menu { display: block; } } &.pull-left{ float: none !important; > .dropdown-menu{ left: -100%; margin-left: 10px; } } .dropdown-menu{ left:100%; top:0; margin-top: -6px; margin-left: -1px } .dropup & { > .dropdown-menu{ top: auto; bottom: 0; } } } .btn-group > .btn{ margin-left: -1px; } /*cols*/ .col-lg-2-4 { position: relative; min-height: 1px; padding-left: 15px; padding-right: 15px; } .col-0{clear:left;} .row.no-gutter{ margin-left: 0; margin-right: 0; } .no-gutter [class*="col"]{ padding: 0; } .row-sm{ margin-left: -10px; margin-right: -10px; > div{ padding-left: 10px; padding-right: 10px; } } .modal-backdrop{ background-color: @brand-dark; &.in{ opacity: 0.8; filter: alpha(opacity=80); } } .modal-over{ left: 0; right: 0; top: 0; bottom: 0; position: fixed; } .modal-center{ position: absolute; left:50%; top:50%; } ================================================ FILE: src/css/less/app.utilities.less ================================================ .pos-rlt{position: relative;} .pos-stc{position: static !important;} .pos-abt{position: absolute;} .pos-fix{position: fixed;} .show{visibility: visible;} .line {width: 100%;height: 2px;margin: 10px 0;font-size:0;overflow: hidden;} .line-xs{margin: 0} .line-lg{margin-top:15px;margin-bottom: 15px} .line-dashed{border-style: dashed !important;background-color: transparent;border-width:0;} .no-line{border-width: 0} .no-border, .no-borders{border-color:transparent;border-width:0} .no-radius{border-radius: 0} .block{display:block;} .block.hide{display: none;} .inline{display:inline-block !important;} .none{display: none;} .pull-none{float: none;} .rounded{border-radius: 500px;} .clear{display:block;overflow: hidden;} .no-bg{background-color: transparent; color: inherit;} .no-select{ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .l-h{line-height: @line-height-base;} .l-h-0x{line-height: 0;} .l-h-1x{line-height: 1.2;} .l-h-2x{line-height: 2em;} .l-s-1x{letter-spacing: 1} .l-s-2x{letter-spacing: 2} .l-s-3x{letter-spacing: 3} .font-normal{font-weight: normal;} .font-thin{font-weight: 300;} .font-bold{font-weight: 700;} .text-3x{font-size: 3em;} .text-2x{font-size: 2em;} .text-lg{font-size: @font-size-lg;} .text-md{font-size: @font-size-md;} .text-base{font-size: @font-size-base;} .text-sm{font-size: @font-size-sm;} .text-xs{font-size: @font-size-xs;} .text-xxs{text-indent: -9999px} .text-ellipsis{ display: block; white-space: nowrap; overflow: hidden; text-overflow:ellipsis; } .text-u-c{text-transform: uppercase;} .text-l-t{text-decoration: line-through;} .text-u-l{text-decoration: underline;} .text-active, .active > .text, .active > .auto .text{display: none !important;} .active > .text-active, .active > .auto .text-active{display: inline-block !important;} .box-shadow{ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05); } .box-shadow-lg{ box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.05); } .text-shadow{ font-size: 170px; text-shadow: 0 1px 0 @border-color,0 2px 0 lighten(@border-color, 10%),0 5px 10px rgba(0,0,0,.125),0 10px 20px rgba(0,0,0,.2); } .no-shadow{ -webkit-box-shadow: none !important; box-shadow: none !important; } .wrapper-xs{padding: 5px;} .wrapper-sm{padding: 10px;} .wrapper{padding: 15px;} .wrapper-md{padding: 20px;} .wrapper-lg{padding: 30px;} .wrapper-xl{padding: 50px;} .padder-lg{padding-left:30px;padding-right: 30px} .padder-md{padding-left:20px;padding-right: 20px} .padder{padding-left:15px;padding-right: 15px} .padder-v{padding-top:15px;padding-bottom: 15px} .no-padder{padding: 0 !important;} .pull-in{margin-left: -15px;margin-right: -15px;} .pull-out{margin:-10px -15px;} .b{border: 1px solid rgba(0, 0, 0, 0.05)} .b-a{border: 1px solid @border-color} .b-t{border-top: 1px solid @border-color} .b-r{border-right: 1px solid @border-color} .b-b{border-bottom: 1px solid @border-color} .b-l{border-left: 1px solid @border-color} .b-light{border-color: @brand-light} .b-dark{border-color: @brand-dark} .b-black{border-color: @brand-dark} .b-primary{border-color: @brand-primary} .b-success{border-color: @brand-success} .b-info{border-color: @brand-info} .b-warning{border-color: @brand-warning} .b-danger{border-color: @brand-danger} .b-white{border-color: #fff} .b-dashed{border-style: dashed !important;} .b-l-light{border-left-color: @brand-light} .b-l-dark{border-left-color: @brand-dark} .b-l-black{border-left-color: @brand-dark} .b-l-primary{border-left-color: @brand-primary} .b-l-success{border-left-color: @brand-success} .b-l-info{border-left-color: @brand-info} .b-l-warning{border-left-color: @brand-warning} .b-l-danger{border-left-color: @brand-danger} .b-l-white{border-left-color: #fff} .b-l-2x{border-left-width: 2px} .b-l-3x{border-left-width: 3px} .b-l-4x{border-left-width: 4px} .b-l-5x{border-left-width: 5px} .b-2x{border-width: 2px} .b-3x{border-width: 3px} .b-4x{border-width: 4px} .b-5x{border-width: 5px} .r{ border-radius: @border-radius-base @border-radius-base @border-radius-base @border-radius-base; } .r-2x{ border-radius: @border-radius-base * 2; } .r-3x{ border-radius: @border-radius-base * 3; } .r-l{ border-radius: @border-radius-base 0 0 @border-radius-base; } .r-r{ border-radius: 0 @border-radius-base @border-radius-base 0; } .r-t{ border-radius: @border-radius-base @border-radius-base 0 0; } .r-b{ border-radius: 0 0 @border-radius-base @border-radius-base; } .m-xxs{margin: 2px 4px} .m-xs{margin: 5px;} .m-sm{margin: 10px;} .m{margin: 15px;} .m-md{margin: 20px;} .m-lg{margin: 30px;} .m-xl{margin: 50px;} .m-n{margin: 0 !important} .m-l-none{margin-left: 0 !important} .m-l-xs{margin-left: 5px;} .m-l-sm{margin-left: 10px;} .m-l{margin-left: 15px} .m-l-md{margin-left: 20px;} .m-l-lg{margin-left: 30px;} .m-l-xl{margin-left: 40px;} .m-l-xxl{margin-left: 50px;} .m-l-n-xxs{margin-left: -1px} .m-l-n-xs{margin-left: -5px} .m-l-n-sm{margin-left: -10px} .m-l-n{margin-left: -15px} .m-l-n-md{margin-left: -20px} .m-l-n-lg{margin-left: -30px} .m-l-n-xl{margin-left: -40px} .m-l-n-xxl{margin-left: -50px} .m-t-none{margin-top:0 !important} .m-t-xxs{margin-top: 1px;} .m-t-xs{margin-top: 5px;} .m-t-sm{margin-top: 10px;} .m-t{margin-top: 15px} .m-t-md{margin-top: 20px;} .m-t-lg{margin-top: 30px;} .m-t-xl{margin-top: 40px;} .m-t-xxl{margin-top: 50px;} .m-t-n-xxs{margin-top: -1px} .m-t-n-xs{margin-top: -5px} .m-t-n-sm{margin-top: -10px} .m-t-n{margin-top: -15px} .m-t-n-md{margin-top: -20px} .m-t-n-lg{margin-top: -30px} .m-t-n-xl{margin-top: -40px} .m-t-n-xxl{margin-top: -50px} .m-r-none{margin-right: 0 !important} .m-r-xxs{margin-right: 1px} .m-r-xs{margin-right: 5px} .m-r-sm{margin-right: 10px} .m-r{margin-right: 15px} .m-r-md{margin-right: 20px} .m-r-lg{margin-right: 30px} .m-r-xl{margin-right: 40px} .m-r-xxl{margin-right: 50px} .m-r-n-xxs{margin-right: -1px} .m-r-n-xs{margin-right: -5px} .m-r-n-sm{margin-right: -10px} .m-r-n{margin-right: -15px} .m-r-n-md{margin-right: -20px} .m-r-n-lg{margin-right: -30px} .m-r-n-xl{margin-right: -40px} .m-r-n-xxl{margin-right: -50px} .m-b-none{margin-bottom: 0 !important} .m-b-xxs{margin-bottom: 1px;} .m-b-xs{margin-bottom: 5px;} .m-b-sm{margin-bottom: 10px;} .m-b{margin-bottom: 15px;} .m-b-md{margin-bottom: 20px;} .m-b-lg{margin-bottom: 30px;} .m-b-xl{margin-bottom: 40px;} .m-b-xxl{margin-bottom: 50px;} .m-b-n-xxs{margin-bottom: -1px} .m-b-n-xs{margin-bottom: -5px} .m-b-n-sm{margin-bottom: -10px} .m-b-n{margin-bottom: -15px} .m-b-n-md{margin-bottom: -20px} .m-b-n-lg{margin-bottom: -30px} .m-b-n-xl{margin-bottom: -40px} .m-b-n-xxl{margin-bottom: -50px} .avatar{ position: relative; display: block; border-radius: 500px; white-space: nowrap; img{ border-radius: 500px; width: 100%; } i{ position: absolute; left: 0; top: 0; width: 10px; height: 10px; margin: 2px; border-width: 2px; border-style: solid; border-radius: 100%; &.right{ left: auto; right: 0; } &.bottom{ left: auto; top: auto; bottom: 0; right: 0; } &.left{ top: auto; bottom: 0; } &.on{ background-color: @brand-success; } &.off{ background-color: @text-muted; } &.busy{ background-color: @brand-danger; } &.away{ background-color: @brand-warning; } } &.thumb-md i { width: 12px; height: 12px; margin: 3px; } &.thumb-sm i { margin: 1px; } &.thumb-xs i { margin: 0; } } .w-1x{ width: 1em; } .w-2x{ width: 2em; } .w-3x{ width: 3em; } .w-xxs{ width: 60px; } .w-xs{ width: 90px; } .w-sm{ width: 150px; } .w{ width: 200px; } .w-md{ width: 240px; } .w-lg{ width: 280px; } .w-xl{ width: 320px; } .w-xxl{ width: 360px; } .w-full{ width: 100%; } .w-auto{ width: auto; } .h-auto{ height: auto; } .h-full{ height: 100%; } .thumb-xl{width: 128px;display: inline-block} .thumb-lg{width: 96px;display: inline-block} .thumb-md{width: 64px;display: inline-block} .thumb{width: 50px;display: inline-block} .thumb-sm{width: 40px;display: inline-block} .thumb-xs{width: 34px;display: inline-block} .thumb-xxs{width: 30px;display: inline-block} .thumb-wrapper{padding: 2px; border: 1px solid @border-color} .thumb, .thumb-xs, .thumb-sm, .thumb-md, .thumb-lg, .thumb-btn{ img{ height: auto; max-width: 100%; vertical-align: middle; } } .img-full{ width: 100%; img{ width: 100%; } } .scrollable{ overflow-x: hidden; overflow-y: auto; -webkit-overflow-scrolling: touch; &.hover { overflow-y: hidden !important; &:hover { overflow: visible !important; overflow-y: auto !important; } } .smart & { overflow-y: auto !important; } } .scroll-x, .scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch;} .scroll-y{overflow-y:auto;} .scroll-x{overflow-x:auto;} .hover-action{ display: none; } .hover-rotate{ .transition(all .2s ease-in-out .1s) } .hover-anchor:hover, .hover-anchor:focus, .hover-anchor:active{ > .hover-action{ display: inherit; } > .hover-rotate{ .rotate(90deg) } } .backdrop { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1050; &.fade{ opacity: 0; filter: alpha(opacity=0); } &.in{ opacity: 0.8; filter: alpha(opacity=80); } } /*desktop*/ @media screen and (min-width: 992px) { .col-lg-2-4{width: 20.000%;float: left;} } // sm @media (min-width: 768px) and (max-width: 991px) { .hidden-sm.show{display: inherit !important;} .no-m-sm{margin:0 !important;} } /*phone*/ @media (max-width: 767px) { .w-auto-xs{width: auto;} .shift{display: none !important;} .shift.in{display: block !important;} .row-2 [class*="col"]{width: 50%;float: left} .row-2 .col-0{clear: none} .row-2 li:nth-child(odd) { clear: left;margin-left: 0} .text-center-xs{text-align: center;} .text-left-xs{text-align: left;} .text-right-xs{text-align: right;} .no-border-xs{border-width: 0;} .pull-none-xs{float: none !important;} .pull-right-xs{float: right !important;} .pull-left-xs{float: left !important;} .dropdown-menu.pull-none-xs{left: 0;} .hidden-xs.show{display: inherit !important;} .wrapper-lg, .wrapper-md{padding: 15px;} .padder-lg, .padder-md{padding-left: 15px;padding-right: 15px;} .no-m-xs{margin:0 !important;} } ================================================ FILE: src/css/less/app.variables.less ================================================ /* */ @brand-primary: #7266ba; @brand-info: #23b7e5; @brand-success: #27c24c; @brand-warning: #fad733; @brand-danger: #f05050; @brand-light: #edf1f2; @brand-dark: #3a3f51; @brand-black: #1c2b36; @body-bg: lighten(@brand-light, 1%); @text-color: #58666e; @text-muted: lighten(@text-color, 25%); @font-family-sans-serif: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; @font-family-serif: Georgia, "Times New Roman", Times, serif; @font-family-base: @font-family-sans-serif; @font-size-base: 14px; @font-size-lg: ceil(@font-size-base * 1.23); // ~20px @font-size-md: ceil(@font-size-base * 1.14); // ~16px @font-size-sm: ceil(@font-size-base * 0.92); // ~13px @font-size-xs: ceil(@font-size-base * 0.85); // ~12px @link-color: darken(@text-color, 15%); @link-hover-color: darken(@text-color, 30%); @border-radius-base: 2px; @border-color: darken(@brand-light, 5%); @line-height-base: 1.42857143; // 20/14 @line-height-computed: floor(@font-size-base * @line-height-base); // ~20px @icon-css-prefix: i; // Buttons // ------------------------- @btn-default-color: @text-color; @btn-default-bg: lighten(@brand-light, 5%); @btn-default-border: @border-color; @btn-border-radius: @border-radius-base; @input-border: darken(@border-color, 5%); @input-border-focus: @brand-info; @input-border-radius: @border-radius-base; @panel-bg: #fff; @panel-border: @border-color; @panel-heading-border: lighten(@border-color, 5%); @panel-list-group-border: lighten(@border-color, 5%); @panel-border-radius: @border-radius-base; @panel-heading-bg: lighten(@brand-light, 3%); @panel-footer-bg: #fff; @nav-bg: lighten(@brand-light, 3%); @badge-bg: darken(@brand-light, 10%); @list-group-item-border: lighten(@border-color, 3%); @list-group-item-hover: lighten(@brand-light, 3%); @list-group-item-focus: darken(@brand-light, 3%); @list-group-select-color: #dbeef9; @list-group-active-color: @brand-info; @table-border-color: lighten(@border-color, 4%); @table-striped-color: lighten(@brand-light, 4.5%);; @arrow-width: 8px; @arrow-color: #fff; @arrow-outer-width: (@arrow-width + 1); @arrow-outer-color: rgba(0,0,0,.1); @switch-width: 35px; @switch-height: 20px; @switch-md-width: 40px; @switch-md-height: 24px; @switch-lg-width: 50px; @switch-lg-height: 30px; @app-aside-width: 200px; @app-aside-nav-height: 40px; @app-aside-folded-width: 60px; @app-aside-folded-nav-height: 50px; @app-aside-dock-media: 992px; @app-header-height: 50px; @app-header-md-height: 60px; @scroll-bar-width: 17px; @butterbar-height: 3px; @butterbar-time: 0.75s; @off-screen-width: 75%; @ibox-title-bg: lighten(@brand-light, 1%); @ibox-content-bg: lighten(@brand-light, 1%); ================================================ FILE: src/css/less/app.widgets.less ================================================ // icon list .list-icon i{font-size: 14px;width:40px;vertical-align:middle;margin:0;display: inline-block;text-align: center;.transition(font-size .2s);} .list-icon div{line-height: 40px;white-space: nowrap;} .list-icon div:hover i{font-size:26px;} // settings .settings{ z-index: 1050; position: fixed; top: 120px; right: -240px; width: 240px; .transition(right 0.2s); } .settings.active{ right: -1px; } .settings > .btn{ background: @panel-heading-bg !important; border-right-width: 0; border-color: @border-color !important; position: absolute; left: -42px; top: -1px; padding: 10px 15px; } .settings .i-checks span b{ width: 50%; height: 20px; display: inline-block; float: left; } .settings .i-checks span b.header{ height: 10px; } // streamline .streamline { position: relative; border-color: @border-color; .sl-item:after, &:after{ content: ''; position: absolute; background-color: #fff; border-color: inherit; border-width: 1px; border-style: solid; border-radius: 10px; width: 9px; height: 9px; margin-left: -5px; bottom: 0; left: 0; } } .sl-item{ border-color: @border-color; position: relative; padding-bottom: 1px; .clearfix(); &:after{ top: 6px; bottom: auto; } &.b-l{ margin-left: -1px; } } // timeline .timeline{ margin: 0; padding: 0; } .tl-item{ display: block; .clearfix(); } .visible-left{ display: none; } .tl-wrap{ display: block; margin-left: 6em; padding: 15px 0 15px 20px; border-style: solid; border-color: @border-color; border-width: 0 0 0 4px; .clearfix(); &:before{ position: relative; content: ""; float: left; top: 15px; margin-left: -27px; width: 10px; height: 10px; border-color: inherit; border-width: 3px; border-radius: 50%; border-style: solid; background: @brand-light; box-shadow: 0 0 0 4px @body-bg; } &:hover:before{ background: transparent; border-color: #fff; } } .tl-date{ position: relative; top: 10px; float: left; margin-left: -7.5em; display: block; width: 4.5em; text-align: right; } .tl-content{ display: inline-block; position: relative; padding-top: 10px; padding-bottom: 10px; &.block{ display: block; width: 100%; } &.panel{ margin-bottom: 0; } } .tl-header{ display: block; width: 12em; text-align: center; margin-left: 2px; } .timeline-center{ .tl-item{ margin-left: 50%; .tl-wrap{ margin-left: -2px; } } .tl-header{ width: auto; margin: 0; } .tl-left{ margin-left: 0; margin-right: 50%; .hidden-left{ display: none !important; } .visible-left{ display: inherit; } .tl-wrap{ float: right; margin-right: -2px; border-left-width: 0; border-right-width: 4px; padding-left: 0; padding-right: 20px; &:before{ float: right; margin-left: 0; margin-right: -27px; } } .tl-date{ float: right; margin-left: 0; margin-right: -8.5em; text-align: left; } } } ================================================ FILE: src/css/simple-line-icons.css ================================================ @font-face { font-family: 'Simple-Line-Icons'; src:url('../fonts/Simple-Line-Icons.eot'); src:url('../fonts/Simple-Line-Icons.eot?#iefix') format('embedded-opentype'), url('../fonts/Simple-Line-Icons.woff') format('woff'), url('../fonts/Simple-Line-Icons.ttf') format('truetype'), url('../fonts/Simple-Line-Icons.svg#Simple-Line-Icons') format('svg'); font-weight: normal; font-style: normal; } /* Use the following CSS code if you want to use data attributes for inserting your icons */ [data-icon]:before { font-family: 'Simple-Line-Icons'; content: attr(data-icon); speak: none; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Use the following CSS code if you want to have a class per icon */ /* Instead of a list of all class selectors, you can use the generic selector below, but it's slower: [class*="icon-"] { */ .icon-user-female, .icon-user-follow, .icon-user-following, .icon-user-unfollow, .icon-trophy, .icon-screen-smartphone, .icon-screen-desktop, .icon-plane, .icon-notebook, .icon-moustache, .icon-mouse, .icon-magnet, .icon-energy, .icon-emoticon-smile, .icon-disc, .icon-cursor-move, .icon-crop, .icon-credit-card, .icon-chemistry, .icon-user, .icon-speedometer, .icon-social-youtube, .icon-social-twitter, .icon-social-tumblr, .icon-social-facebook, .icon-social-dropbox, .icon-social-dribbble, .icon-shield, .icon-screen-tablet, .icon-magic-wand, .icon-hourglass, .icon-graduation, .icon-ghost, .icon-game-controller, .icon-fire, .icon-eyeglasses, .icon-envelope-open, .icon-envelope-letter, .icon-bell, .icon-badge, .icon-anchor, .icon-wallet, .icon-vector, .icon-speech, .icon-puzzle, .icon-printer, .icon-present, .icon-playlist, .icon-pin, .icon-picture, .icon-map, .icon-layers, .icon-handbag, .icon-globe-alt, .icon-globe, .icon-frame, .icon-folder-alt, .icon-film, .icon-feed, .icon-earphones-alt, .icon-earphones, .icon-drop, .icon-drawer, .icon-docs, .icon-directions, .icon-direction, .icon-diamond, .icon-cup, .icon-compass, .icon-call-out, .icon-call-in, .icon-call-end, .icon-calculator, .icon-bubbles, .icon-briefcase, .icon-book-open, .icon-basket-loaded, .icon-basket, .icon-bag, .icon-action-undo, .icon-action-redo, .icon-wrench, .icon-umbrella, .icon-trash, .icon-tag, .icon-support, .icon-size-fullscreen, .icon-size-actual, .icon-shuffle, .icon-share-alt, .icon-share, .icon-rocket, .icon-question, .icon-pie-chart, .icon-pencil, .icon-note, .icon-music-tone-alt, .icon-music-tone, .icon-microphone, .icon-loop, .icon-logout, .icon-login, .icon-list, .icon-like, .icon-home, .icon-grid, .icon-graph, .icon-equalizer, .icon-dislike, .icon-cursor, .icon-control-start, .icon-control-rewind, .icon-control-play, .icon-control-pause, .icon-control-forward, .icon-control-end, .icon-calendar, .icon-bulb, .icon-bar-chart, .icon-arrow-up, .icon-arrow-right, .icon-arrow-left, .icon-arrow-down, .icon-ban, .icon-bubble, .icon-camcorder, .icon-camera, .icon-check, .icon-clock, .icon-close, .icon-cloud-download, .icon-cloud-upload, .icon-doc, .icon-envelope, .icon-eye, .icon-flag, .icon-folder, .icon-heart, .icon-info, .icon-key, .icon-link, .icon-lock, .icon-lock-open, .icon-magnifier, .icon-magnifier-add, .icon-magnifier-remove, .icon-paper-clip, .icon-paper-plane, .icon-plus, .icon-pointer, .icon-power, .icon-refresh, .icon-reload, .icon-settings, .icon-star, .icon-symbol-female, .icon-symbol-male, .icon-target, .icon-volume-1, .icon-volume-2, .icon-volume-off, .icon-users { font-family: 'Simple-Line-Icons'; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; } .icon-user-female:before { content: "\e000"; } .icon-user-follow:before { content: "\e002"; } .icon-user-following:before { content: "\e003"; } .icon-user-unfollow:before { content: "\e004"; } .icon-trophy:before { content: "\e006"; } .icon-screen-smartphone:before { content: "\e010"; } .icon-screen-desktop:before { content: "\e011"; } .icon-plane:before { content: "\e012"; } .icon-notebook:before { content: "\e013"; } .icon-moustache:before { content: "\e014"; } .icon-mouse:before { content: "\e015"; } .icon-magnet:before { content: "\e016"; } .icon-energy:before { content: "\e020"; } .icon-emoticon-smile:before { content: "\e021"; } .icon-disc:before { content: "\e022"; } .icon-cursor-move:before { content: "\e023"; } .icon-crop:before { content: "\e024"; } .icon-credit-card:before { content: "\e025"; } .icon-chemistry:before { content: "\e026"; } .icon-user:before { content: "\e005"; } .icon-speedometer:before { content: "\e007"; } .icon-social-youtube:before { content: "\e008"; } .icon-social-twitter:before { content: "\e009"; } .icon-social-tumblr:before { content: "\e00a"; } .icon-social-facebook:before { content: "\e00b"; } .icon-social-dropbox:before { content: "\e00c"; } .icon-social-dribbble:before { content: "\e00d"; } .icon-shield:before { content: "\e00e"; } .icon-screen-tablet:before { content: "\e00f"; } .icon-magic-wand:before { content: "\e017"; } .icon-hourglass:before { content: "\e018"; } .icon-graduation:before { content: "\e019"; } .icon-ghost:before { content: "\e01a"; } .icon-game-controller:before { content: "\e01b"; } .icon-fire:before { content: "\e01c"; } .icon-eyeglasses:before { content: "\e01d"; } .icon-envelope-open:before { content: "\e01e"; } .icon-envelope-letter:before { content: "\e01f"; } .icon-bell:before { content: "\e027"; } .icon-badge:before { content: "\e028"; } .icon-anchor:before { content: "\e029"; } .icon-wallet:before { content: "\e02a"; } .icon-vector:before { content: "\e02b"; } .icon-speech:before { content: "\e02c"; } .icon-puzzle:before { content: "\e02d"; } .icon-printer:before { content: "\e02e"; } .icon-present:before { content: "\e02f"; } .icon-playlist:before { content: "\e030"; } .icon-pin:before { content: "\e031"; } .icon-picture:before { content: "\e032"; } .icon-map:before { content: "\e033"; } .icon-layers:before { content: "\e034"; } .icon-handbag:before { content: "\e035"; } .icon-globe-alt:before { content: "\e036"; } .icon-globe:before { content: "\e037"; } .icon-frame:before { content: "\e038"; } .icon-folder-alt:before { content: "\e039"; } .icon-film:before { content: "\e03a"; } .icon-feed:before { content: "\e03b"; } .icon-earphones-alt:before { content: "\e03c"; } .icon-earphones:before { content: "\e03d"; } .icon-drop:before { content: "\e03e"; } .icon-drawer:before { content: "\e03f"; } .icon-docs:before { content: "\e040"; } .icon-directions:before { content: "\e041"; } .icon-direction:before { content: "\e042"; } .icon-diamond:before { content: "\e043"; } .icon-cup:before { content: "\e044"; } .icon-compass:before { content: "\e045"; } .icon-call-out:before { content: "\e046"; } .icon-call-in:before { content: "\e047"; } .icon-call-end:before { content: "\e048"; } .icon-calculator:before { content: "\e049"; } .icon-bubbles:before { content: "\e04a"; } .icon-briefcase:before { content: "\e04b"; } .icon-book-open:before { content: "\e04c"; } .icon-basket-loaded:before { content: "\e04d"; } .icon-basket:before { content: "\e04e"; } .icon-bag:before { content: "\e04f"; } .icon-action-undo:before { content: "\e050"; } .icon-action-redo:before { content: "\e051"; } .icon-wrench:before { content: "\e052"; } .icon-umbrella:before { content: "\e053"; } .icon-trash:before { content: "\e054"; } .icon-tag:before { content: "\e055"; } .icon-support:before { content: "\e056"; } .icon-size-fullscreen:before { content: "\e057"; } .icon-size-actual:before { content: "\e058"; } .icon-shuffle:before { content: "\e059"; } .icon-share-alt:before { content: "\e05a"; } .icon-share:before { content: "\e05b"; } .icon-rocket:before { content: "\e05c"; } .icon-question:before { content: "\e05d"; } .icon-pie-chart:before { content: "\e05e"; } .icon-pencil:before { content: "\e05f"; } .icon-note:before { content: "\e060"; } .icon-music-tone-alt:before { content: "\e061"; } .icon-music-tone:before { content: "\e062"; } .icon-microphone:before { content: "\e063"; } .icon-loop:before { content: "\e064"; } .icon-logout:before { content: "\e065"; } .icon-login:before { content: "\e066"; } .icon-list:before { content: "\e067"; } .icon-like:before { content: "\e068"; } .icon-home:before { content: "\e069"; } .icon-grid:before { content: "\e06a"; } .icon-graph:before { content: "\e06b"; } .icon-equalizer:before { content: "\e06c"; } .icon-dislike:before { content: "\e06d"; } .icon-cursor:before { content: "\e06e"; } .icon-control-start:before { content: "\e06f"; } .icon-control-rewind:before { content: "\e070"; } .icon-control-play:before { content: "\e071"; } .icon-control-pause:before { content: "\e072"; } .icon-control-forward:before { content: "\e073"; } .icon-control-end:before { content: "\e074"; } .icon-calendar:before { content: "\e075"; } .icon-bulb:before { content: "\e076"; } .icon-bar-chart:before { content: "\e077"; } .icon-arrow-up:before { content: "\e078"; } .icon-arrow-right:before { content: "\e079"; } .icon-arrow-left:before { content: "\e07a"; } .icon-arrow-down:before { content: "\e07b"; } .icon-ban:before { content: "\e07c"; } .icon-bubble:before { content: "\e07d"; } .icon-camcorder:before { content: "\e07e"; } .icon-camera:before { content: "\e07f"; } .icon-check:before { content: "\e080"; } .icon-clock:before { content: "\e081"; } .icon-close:before { content: "\e082"; } .icon-cloud-download:before { content: "\e083"; } .icon-cloud-upload:before { content: "\e084"; } .icon-doc:before { content: "\e085"; } .icon-envelope:before { content: "\e086"; } .icon-eye:before { content: "\e087"; } .icon-flag:before { content: "\e088"; } .icon-folder:before { content: "\e089"; } .icon-heart:before { content: "\e08a"; } .icon-info:before { content: "\e08b"; } .icon-key:before { content: "\e08c"; } .icon-link:before { content: "\e08d"; } .icon-lock:before { content: "\e08e"; } .icon-lock-open:before { content: "\e08f"; } .icon-magnifier:before { content: "\e090"; } .icon-magnifier-add:before { content: "\e091"; } .icon-magnifier-remove:before { content: "\e092"; } .icon-paper-clip:before { content: "\e093"; } .icon-paper-plane:before { content: "\e094"; } .icon-plus:before { content: "\e095"; } .icon-pointer:before { content: "\e096"; } .icon-power:before { content: "\e097"; } .icon-refresh:before { content: "\e098"; } .icon-reload:before { content: "\e099"; } .icon-settings:before { content: "\e09a"; } .icon-star:before { content: "\e09b"; } .icon-symbol-female:before { content: "\e09c"; } .icon-symbol-male:before { content: "\e09d"; } .icon-target:before { content: "\e09e"; } .icon-volume-1:before { content: "\e09f"; } .icon-volume-2:before { content: "\e0a0"; } .icon-volume-off:before { content: "\e0a1"; } .icon-users:before { content: "\e001"; } ================================================ FILE: src/index.html ================================================ 后台管理平台
================================================ FILE: src/index.min.html ================================================ 环球旅行管理平台
================================================ FILE: src/js/app.js ================================================ 'use strict'; angular.module('app', [ 'ngAnimate', 'ngCookies', 'ngResource', 'ngSanitize', 'ngTouch', 'ngStorage', 'ui.router', 'ui.bootstrap', 'ui.utils', 'ui.load', 'ui.jq', 'oc.lazyLoad', 'dialogs.main' ]); ================================================ FILE: src/js/config.js ================================================ (function () { 'use strict'; angular.module('app') .config(appConfig) ; appConfig.$inject = ['$controllerProvider', '$compileProvider', '$filterProvider', '$provide']; function appConfig($controllerProvider, $compileProvider, $filterProvider, $provide) { var app = angular.module('app'); // lazy controller, directive and service app.controller = $controllerProvider.register; app.directive = $compileProvider.directive; app.filter = $filterProvider.register; app.factory = $provide.factory; app.service = $provide.service; app.constant = $provide.constant; app.value = $provide.value; } })(); ================================================ FILE: src/js/config.lazyload.js ================================================ (function () { 'use strict'; // lazyload config angular.module('app') .constant('JQ_CONFIG', { easyPieChart: ['vendor/jquery/charts/easypiechart/jquery.easy-pie-chart.js'], sparkline: ['vendor/jquery/charts/sparkline/jquery.sparkline.min.js'], plot: ['vendor/jquery/charts/flot/jquery.flot.min.js', 'vendor/jquery/charts/flot/jquery.flot.resize.js', 'vendor/jquery/charts/flot/jquery.flot.tooltip.min.js', 'vendor/jquery/charts/flot/jquery.flot.spline.js', 'vendor/jquery/charts/flot/jquery.flot.orderBars.js', 'vendor/jquery/charts/flot/jquery.flot.pie.min.js'] } ) // oclazyload config .config(lazyLoadConfig) ; lazyLoadConfig.$inject = ['$ocLazyLoadProvider']; function lazyLoadConfig($ocLazyLoadProvider) { // We configure ocLazyLoad to use the lib script.js as the async loader $ocLazyLoadProvider.config({ debug: false, events: true, modules: [ { name: 'ntt.TreeDnD', files: [ 'vendor/modules/angular-tree-dnd/ng-tree-dnd.min.js', 'vendor/modules/angular-tree-dnd/ng-tree-dnd.min.css' ] }, { name: 'ivh.treeview', files: [ 'vendor/modules/angular-ivh-treeview/ivh-treeview.min.js', 'vendor/modules/angular-ivh-treeview/ivh-treeview.min.css', 'vendor/modules/angular-ivh-treeview/ivh-treeview-theme-basic.css' ] }, { name: 'ui.select', files: [ 'vendor/modules/angular-ui-select/select.min.js', 'vendor/modules/angular-ui-select/select.min.css' ] }, { name: 'angularFileUpload', files: [ 'vendor/modules/angular-file-upload/angular-file-upload.min.js', 'vendor/modules/angular-file-upload/ngThumb.js' ] }, { name: 'toaster', files: [ 'vendor/modules/angularjs-toaster/toaster.js', 'vendor/modules/angularjs-toaster/toaster.css' ] } ] }); } })(); ================================================ FILE: src/js/config.module.js ================================================ (function () { 'use strict'; angular.module('app') .config(httpConfig) .config(dialogConfig) ; httpConfig.$inject = ['$httpProvider']; function httpConfig($httpProvider) { $httpProvider.interceptors.push(httpInterceptor); } httpInterceptor.$inject = ['$q', '$injector', '$localStorage', '$sessionStorage', 'APP_CONST']; function httpInterceptor($q, $injector, $localStorage, $sessionStorage, APP_CONST) { return { 'request': function (request) { var authToken = $sessionStorage[APP_CONST.STORAGE.AUTH_TOKEN] || $localStorage[APP_CONST.STORAGE.AUTH_TOKEN] || ''; if (authToken) { request.headers['Authorization'] = 'Bearer ' + authToken; } return request; }, 'response': function (response) { return response; }, 'responseError': function (rejection) { var state = $injector.get('$state'); var toaster = $injector.get('toaster'); switch (rejection.status) { case 400: { toaster.pop('error', '参数错误', rejection.data.message); break; } case 403: { toaster.pop('error', '访问未授权', rejection.data.message); break; } case 500: { toaster.pop('error', '服务端错误', rejection.data.message); break; } case 401: { state.go('access.login'); break; } case 404: { state.go('access.404'); break; } default : { break; } } return $q.reject(rejection); } }; } dialogConfig.$inject = ['$translateProvider']; function dialogConfig($translateProvider) { // This will set default modal buttons, header and message text $translateProvider.translations('en-US', { DIALOGS_ERROR: "错误", DIALOGS_ERROR_MSG: "未知错误。", DIALOGS_CLOSE: "关闭", DIALOGS_PLEASE_WAIT: "请等待", DIALOGS_PLEASE_WAIT_ELIPS: "请稍等...", DIALOGS_PLEASE_WAIT_MSG: "等待操作完成", DIALOGS_PERCENT_COMPLETE: "% 完成", DIALOGS_NOTIFICATION: "通知", DIALOGS_NOTIFICATION_MSG: "未知通知。", DIALOGS_CONFIRMATION: "确认", DIALOGS_CONFIRMATION_MSG: "操作需要确认", DIALOGS_OK: "OK", DIALOGS_YES: "是", DIALOGS_NO: "否" }); } })(); ================================================ FILE: src/js/config.router.js ================================================ (function () { 'use strict'; /** * Config for the router */ angular.module('app') .run(appInit) .config(routerConfig); appInit.$inject = ['$rootScope', '$state', '$stateParams', '$localStorage', 'APP_CONST']; function appInit($rootScope, $state, $stateParams, $localStorage, APP_CONST) { $rootScope.$state = $state; $rootScope.$stateParams = $stateParams; $rootScope.sysuser = $localStorage[APP_CONST.STORAGE.USER]; $rootScope.menu = $localStorage[APP_CONST.STORAGE.MENU]; $rootScope.$on('$stateChangeStart', function (event, to) { var isNotLogin = $.inArray(to.name, ['access.login']) === -1; if (isNotLogin && !$rootScope.sysuser) { event.preventDefault(); $state.go("access.login"); } }); } routerConfig.$inject = ['$stateProvider', '$urlRouterProvider']; function routerConfig($stateProvider, $urlRouterProvider) { $urlRouterProvider .otherwise('/app/dashboard'); $stateProvider .state('app', { abstract: true, url: '/app', templateUrl: 'tpl/app.html', resolve: { deps: ['$ocLazyLoad', function ($ocLazyLoad) { return $ocLazyLoad.load('toaster'); }] } }) .state('app.dashboard', { url: '/dashboard', templateUrl: 'tpl/custom/framework/dashboard.html', controller: 'DashboardCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load([ 'vendor/jquery/charts/sparkline/jquery.sparkline.min.js', 'vendor/jquery/charts/flot/jquery.flot.min.js', 'vendor/jquery/charts/flot/jquery.flot.resize.js', 'vendor/jquery/charts/flot/jquery.flot.tooltip.min.js', 'vendor/jquery/charts/flot/jquery.flot.spline.js', 'vendor/jquery/charts/flot/jquery.flot.orderBars.js', 'js/custom/framework/dashboard.js', 'js/custom/framework/dashboard-service.js' ]); }] } }) .state('app.password', { url: '/password', controller: 'ResetPwdCtrl', templateUrl: 'tpl/custom/framework/reset-password.html', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/framework/reset-password.js', 'js/custom/sys/user/user-service.js' ]); }] } }) .state('app.sys', { url: '/sys', template: '
' }) .state('app.sys.menu', { url: '/menu', template: '
' }) .state('app.sys.menu.list', { url: '/list', templateUrl: 'tpl/custom/sys/menu/menu-list.html', controller: 'SysMenuListCtrl', resolve: { deps: ['uiLoad', '$ocLazyLoad', function (uiLoad, $ocLazyLoad) { return uiLoad.load(['js/custom/sys/menu/menu-list.js', 'js/custom/sys/menu/menu-service.js' ]).then( function () { return $ocLazyLoad.load('ntt.TreeDnD'); } ); }] } }) .state('app.sys.menu.form', { url: '/form/{id}?pid={parentId}', templateUrl: 'tpl/custom/sys/menu/menu-form.html', controller: 'SysMenuFormCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/sys/menu/menu-form.js', 'js/custom/sys/menu/menu-service.js' ]); }] } }) .state('app.sys.user', { url: '/user', template: '
' }) .state('app.sys.user.list', { url: '/list', templateUrl: 'tpl/custom/sys/user/user-list.html', controller: 'SysUserListCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/sys/user/user-list.js', 'js/custom/sys/user/user-service.js' ]); }] } }) .state('app.sys.user.form', { url: '/form/{id}', templateUrl: 'tpl/custom/sys/user/user-form.html', controller: 'SysUserFormCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/sys/user/user-form.js', 'js/custom/sys/user/user-service.js', 'js/custom/sys/role/role-service.js' ]); }] } }) .state('app.sys.user.info', { url: '/info', templateUrl: 'tpl/custom/sys/user/user-info.html', controller: 'SysUserInfoCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/sys/user/user-info.js', 'js/custom/sys/user/user-service.js' ]); }] } }) .state('app.sys.role', { url: '/role', template: '
' }) .state('app.sys.role.list', { url: '/list', templateUrl: 'tpl/custom/sys/role/role-list.html', controller: 'SysRoleListCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/sys/role/role-list.js', 'js/custom/sys/role/role-service.js' ]); }] } }) .state('app.sys.role.form', { url: '/form/{id}', templateUrl: 'tpl/custom/sys/role/role-form.html', controller: 'SysRoleFormCtrl', resolve: { deps: ['uiLoad', '$ocLazyLoad', function (uiLoad, $ocLazyLoad) { return uiLoad.load(['js/custom/sys/role/role-form.js', 'js/custom/sys/role/role-service.js', 'js/custom/sys/menu/menu-service.js' ]).then(function () { return $ocLazyLoad.load('ivh.treeview'); }); }] } }) .state('access', { url: '/access', template: '
' }) .state('access.login', { url: '/login', templateUrl: 'tpl/custom/framework/login.html', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/framework/login.js', 'js/custom/sys/user/user-service.js', 'js/custom/sys/menu/menu-service.js' ]); }] } }) .state('access.404', { url: '/404', templateUrl: 'tpl/404.html' }) .state('app.trip', { url: '/trip', template: '
' }) .state('app.trip.user', { url: '/user', template: '
' }) .state('app.trip.user.list', { url: '/list', templateUrl: 'tpl/custom/trip/user/user-list.html', controller: 'TripUserListCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/trip/user/user-list.js', 'js/custom/trip/user/user-service.js' ]); }] } }) .state('app.trip.user.form', { url: '/form/{id}', templateUrl: 'tpl/custom/trip/user/user-form.html', controller: 'TripUserFormCtrl', resolve: { deps: ['uiLoad', function (uiLoad) { return uiLoad.load(['js/custom/trip/user/user-form.js', 'js/custom/trip/user/user-service.js' ]); }] } }) ; } })(); ================================================ FILE: src/js/constants.js ================================================ 'use strict'; angular.module('app') .constant('APP_CONST', { PROPERTY: { API_URL: '' }, STORAGE: { USER: 'user', MENU: 'menu', AUTH_TOKEN: 'authToken' } }) .constant('DICT_CONST', { YES_NO: [{ key: true, value: '是' }, { key: false, value: '否' }], GENDER: [{ key: '0', value: '未知' }, { key: '1', value: '男' }, { key: '2', value: '女' }] }) ; ================================================ FILE: src/js/custom/framework/dashboard-service.js ================================================ (function () { 'use strict'; angular.module('app') .service('DashboardService', DashboardService); DashboardService.$inject = ['$http', '$q', 'APP_CONST']; function DashboardService($http, $q, APP_CONST) { this.get = function get() { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/dashboard') .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; } })(); ================================================ FILE: src/js/custom/framework/dashboard.js ================================================ (function () { 'use strict'; angular.module('app') .controller('DashboardCtrl', DashboardCtrl); DashboardCtrl.$inject = ['$rootScope', '$scope', '$filter', 'DashboardService']; function DashboardCtrl($rootScope, $scope, $filter, dashboardService) { $rootScope.loading = true; dashboardService.get() .then(function (data) { $scope.data = data; $("#consumePie").sparkline( [30, 70], { type: 'pie', height: 40, sliceColors: ['#fad733', '#fff'], tooltipFormat: ' {{offset:names}} ({{value}}/{{percent.1}}%)', tooltipValueLookups: { names: { 0: '消费1', 1: '消费2' } } } ); var everyDayConsumeArray = []; var everyDayConsume1Array = []; var everyDayConsume2Array = []; var everyDayUserArray = []; var everyDayRevenueArray = []; var myDate = new Date(); //获取今天日期 myDate.setDate(myDate.getDate() - 6); var days = {}; var showDays = []; for (var i = 1; i <= 7; i++) { var date = $filter('date')(myDate, 'yyyy-MM-dd'); var key = i * 5; var showDay = []; var showDate = $filter('date')(myDate, 'MM-dd'); showDay.push(key); showDay.push(showDate); showDays.push(showDay); days[key] = showDate; myDate.setDate(myDate.getDate() + 1); everyDayConsumeArray.push([key, Math.random() * 1234]); everyDayConsume1Array.push([key, Math.random() * 123]); everyDayConsume2Array.push([key, Math.random() * 123]); everyDayUserArray.push([key, Math.random() * 1000]); everyDayRevenueArray.push([key, Math.random() * 4321]); } $.plot($("#lastConsume"), [ {label: '总消费', data: everyDayConsumeArray}, {label: '消费1', data: everyDayConsume1Array}, {label: '消费2', data: everyDayConsume2Array} ], { bars: { show: true, fill: true, lineWidth: 1, order: 1, fillColor: {colors: [{opacity: 0.5}, {opacity: 0.9}]} }, colors: ['#23b7e5', '#27c24c', '#7266ba'], series: {shadowSize: 1}, xaxis: { ticks: showDays, font: {color: '#ccc'} }, yaxis: {font: {color: '#ccc'}}, grid: {hoverable: true, clickable: true, borderWidth: 0, color: '#ccc'}, tooltip: true, tooltipOpts: { content: function (label, xval, yval) { return label + " | 日期: " + days[xval] + " | 金额: " + yval; }, defaultTheme: false, shifts: {x: 10, y: -25} } } ); $.plot($("#lastUser"), [ { data: everyDayUserArray, label: '用户数', points: {show: true}, lines: { show: true, fill: true, fillColor: {colors: [{opacity: 0.1}, {opacity: 0.1}]} } } ], { colors: ['#23b7e5', '#fad733'], series: {shadowSize: 2}, xaxis: { ticks: showDays, font: {color: '#ccc'} }, yaxis: {tickDecimals: 0, font: {color: '#ccc'}}, grid: {hoverable: true, clickable: true, borderWidth: 0, color: '#ccc'}, tooltip: true, tooltipOpts: { content: '%s | 日期: %x | 人数: %y.0', defaultTheme: false, shifts: {x: 10, y: -25} } } ); $.plot($("#lastRevenue"), [ { data: everyDayRevenueArray, label: '充值金额(元)', points: {show: true}, lines: { show: true, fill: true, fillColor: {colors: [{opacity: 0.1}, {opacity: 0.1}]} } } ], { colors: ['#23b7e5', '#fad733'], series: {shadowSize: 2}, xaxis: { ticks: showDays, font: {color: '#ccc'} }, yaxis: {font: {color: '#ccc'}}, grid: {hoverable: true, clickable: true, borderWidth: 0, color: '#ccc'}, tooltip: true, tooltipOpts: { content: '%s | 日期: %x | 金额: %y.4', defaultTheme: false, shifts: {x: 10, y: -25} } } ); }) .finally(function () { $rootScope.loading = false; }); } })(); ================================================ FILE: src/js/custom/framework/login.js ================================================ (function () { 'use strict'; angular.module('app') .controller('LoginCtrl', LoginCtrl); LoginCtrl.$inject = ['$rootScope', '$scope', '$state', '$localStorage', '$sessionStorage', 'AuthService', 'SysUserService', 'SysMenuService', 'APP_CONST']; function LoginCtrl($rootScope, $scope, $state, $localStorage, $sessionStorage, authService, sysUserService, sysMenuService, APP_CONST) { $scope.user = {}; $scope.authError = null; $scope.usernameFocus = true; $scope.login = function () { $scope.authError = null; $rootScope.loading = true; authService.login($scope.user) .then(function (data) { if ($scope.rememberPwd) { $localStorage[APP_CONST.STORAGE.AUTH_TOKEN] = data.access_token; } $sessionStorage[APP_CONST.STORAGE.AUTH_TOKEN] = data.access_token; sysUserService.retrieve() .then(function (data) { $localStorage[APP_CONST.STORAGE.USER] = data; $rootScope.sysuser = data; $state.go('app.dashboard'); }); sysMenuService.nav() .then(function (data) { $localStorage[APP_CONST.STORAGE.MENU] = data; $rootScope.menu = data; }); }) .catch(function () { $scope.authError = '登录失败,请重试'; }) .finally(function () { $rootScope.loading = false; }); }; } })(); ================================================ FILE: src/js/custom/framework/reset-password.js ================================================ (function () { 'use strict'; angular.module('app') .controller('ResetPwdCtrl', ResetPwdCtrl); ResetPwdCtrl.$inject = ['$rootScope', '$scope', '$state', 'SysUserService']; function ResetPwdCtrl($rootScope, $scope, $state, sysUserService) { $scope.title = '重置密码'; $scope.user = {}; $scope.saveData = function () { $rootScope.loading = true; sysUserService.resetPwd($scope.user) .then(function () { $state.go('access.login'); }) .finally(function () { $rootScope.loading = false; }) ; } } })(); ================================================ FILE: src/js/custom/sys/menu/menu-form.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysMenuFormCtrl', SysMenuFormCtrl); SysMenuFormCtrl.$inject = ['$rootScope', '$scope', '$state', 'toaster', 'SysMenuService', 'DICT_CONST']; function SysMenuFormCtrl($rootScope, $scope, $state, toaster, sysMenuService, DICT_CONST) { var id = $state.params.id; var parentId = $state.params.parentId; $scope.yes_no = DICT_CONST.YES_NO; if (!!id) { //编辑 $scope.title = '菜单详情'; $rootScope.loading = true; sysMenuService.getById(id) .then(function (data) { $scope.menu = data; }) .finally(function () { $rootScope.loading = false; }) ; } else if (!id && !parentId) { //新建 $scope.title = '新建菜单'; $scope.menu = { id: '', parentId: '', icon: 'icon-star', sort: 0, show: true }; } else if (!id && !!parentId) { //添加子菜单 $scope.title = '添加子菜单'; $scope.menu = { id: '', parentId: parentId, sort: 0, show: false }; } $scope.saveData = function () { $rootScope.loading = true; sysMenuService.saveData($scope.menu) .then(function (data) { $state.go('app.sys.menu.form', { id: data.id }); toaster.pop('success', '', '保存成功'); }) .finally(function () { $rootScope.loading = false; }) ; } } })(); ================================================ FILE: src/js/custom/sys/menu/menu-list.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysMenuListCtrl', SysMenuListCtrl); SysMenuListCtrl.$inject = ['$rootScope', '$scope', '$state', '$TreeDnDConvert', 'dialogs', 'SysMenuService']; function SysMenuListCtrl($rootScope, $scope, $state, $TreeDnDConvert, dialogs, sysMenuService) { $scope.title = '菜单管理'; var tree; $scope.tree_data = {}; $scope.my_tree = tree = {}; $scope.filter = {}; $scope.my_tree.update = function (node) { $state.go('app.sys.menu.form', { id: node.id, parentId: node.parentId }); }; $scope.my_tree.delete = function (node) { dialogs.confirm('确认', '要删除该菜单及所有子菜单项吗?', { size: 'md' }) .result.then(function () { sysMenuService.deleteById(node.id) .then(function () { $state.reload(); }) ; }); }; $scope.my_tree.addChild = function (node) { $state.go('app.sys.menu.form', { parentId: node.id, level: node.__level__ }); }; $scope.expanding_property = { field: 'name', displayName: '名称' }; $scope.col_defs = [ { field: 'href', displayName: '链接' }, { field: 'sort', displayName: '排序', titleClass: 'text-center', cellClass: 'text-center' }, { field: 'show', titleClass: 'text-center', cellClass: 'text-center', displayName: '可见', cellTemplate: '{{node.show | dict: "YES_NO" }}' }, { field: 'permission', displayName: '权限标识' }, { displayName: '操作', cellTemplate: '' + '' + '' }]; $rootScope.loading = true; sysMenuService.list() .then(function (data) { $scope.tree_data = $TreeDnDConvert.line2tree(data, 'id', 'parentId'); }) .finally(function () { $rootScope.loading = false; }) ; } })(); ================================================ FILE: src/js/custom/sys/menu/menu-service.js ================================================ (function () { 'use strict'; angular.module('app') .service('SysMenuService', SysMenuService); SysMenuService.$inject = ['$http', '$q', 'APP_CONST']; function SysMenuService($http, $q, APP_CONST) { this.nav = function tree() { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/menu/nav') .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.tree = function tree() { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/menu/tree') .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.list = function list() { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/menu/list') .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.deleteById = function deleteById(id) { var d = $q.defer(); $http.delete(APP_CONST.PROPERTY.API_URL + '/sys/menu/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.getById = function getById(id) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/menu/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.saveData = function saveData(data) { var d = $q.defer(); $http.post(APP_CONST.PROPERTY.API_URL + '/sys/menu', data) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; } } })(); ================================================ FILE: src/js/custom/sys/role/role-form.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysRoleFormCtrl', SysRoleFormCtrl); SysRoleFormCtrl.$inject = ['$rootScope', '$scope', '$state', '$filter', 'toaster', 'SysRoleService', 'SysMenuService', 'DICT_CONST']; function SysRoleFormCtrl($rootScope, $scope, $state, $filter, toaster, sysRoleService, sysMenuService, DICT_CONST) { var id = $state.params.id; $scope.treeOpts = { labelAttribute: 'name', expandToDepth: 2, twistieCollapsedTpl: '', twistieExpandedTpl: '', twistieLeafTpl: '' }; $scope.yes_no = DICT_CONST.YES_NO; if (!!id) { //编辑 $scope.title = '角色详情'; } else { //新建 $scope.title = '新建角色'; $scope.role = { enabled: true }; } $rootScope.loading = true; sysMenuService.tree() .then(function (data) { var sortOrder = function (nodes) { nodes = $filter('orderBy')(nodes, ['sort'], false); angular.forEach(nodes, function (node) { if (node.children && node.children.length > 0) { node.children = sortOrder(node.children); } }); return nodes; }; $scope.menus = sortOrder(data); if (!!id) { sysRoleService.getById(id) .then(function (data) { $scope.role = data; var roleMenus = []; angular.forEach(data.menus, function (roleMenu) { roleMenus.push(roleMenu.id); }); $scope.selectNode($scope.menus, roleMenus); }); } }) .finally(function () { $rootScope.loading = false; }) ; $scope.selectNode = function (menus, data) { angular.forEach(menus, function (menu) { menu.selected = $.inArray(menu.id, data) >= 0; if (menu.children && menu.children.length > 0) { $scope.selectNode(menu.children, data); } }); }; $scope.saveData = function () { $rootScope.loading = true; var selected = []; $scope.getSelected(selected, $scope.menus); $scope.role.menus = selected; sysRoleService.saveData($scope.role) .then(function (data) { $state.go('app.sys.role.form', { id: data.id }); toaster.pop('success', '', '保存成功'); }) .finally(function () { $rootScope.loading = false; }) ; }; $scope.getSelected = function (selected, menus) { angular.forEach(menus, function (menu) { if (menu.selected) selected.push({id: menu.id}); if (menu.children && menu.children.length > 0) { $scope.getSelected(selected, menu.children); } }); }; } })(); ================================================ FILE: src/js/custom/sys/role/role-list.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysRoleListCtrl', SysRoleListCtrl); SysRoleListCtrl.$inject = ['$rootScope', '$scope', '$state', 'dialogs', 'SysRoleService']; function SysRoleListCtrl($rootScope, $scope, $state, dialogs, sysRoleService) { $scope.title = '角色管理'; $scope.params = { pageNum: 1, pageSize: 20, orderBy: '' }; $scope.search = function () { $rootScope.loading = true; sysRoleService.list($scope.params) .then(function (data) { $scope.pageInfo = data; }) .finally(function () { $rootScope.loading = false; }) ; }; $scope.search(); $scope.pageChanged = function () { $scope.params.pageNum = $scope.pageInfo.pageNum; $scope.search(); }; $scope.delete = function (id) { dialogs.confirm('确认', '要删除该角色吗?', { size: 'md' }) .result.then(function () { sysRoleService.deleteById(id) .then(function () { $state.reload(); }) ; }); }; } })(); ================================================ FILE: src/js/custom/sys/role/role-service.js ================================================ (function () { 'use strict'; angular.module('app') .service('SysRoleService', SysRoleService); SysRoleService.$inject = ['$http', '$q', 'APP_CONST']; function SysRoleService($http, $q, APP_CONST) { this.list = function list(params) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/role/list', { params: params }) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.listAll = function list() { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/role/all') .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.deleteById = function deleteById(id) { var d = $q.defer(); $http.delete(APP_CONST.PROPERTY.API_URL + '/sys/role/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.getById = function getById(id) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/role/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.saveData = function saveData(data) { var d = $q.defer(); $http.post(APP_CONST.PROPERTY.API_URL + '/sys/role', data) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; } })(); ================================================ FILE: src/js/custom/sys/user/user-form.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysUserFormCtrl', SysUserFormCtrl); SysUserFormCtrl.$inject = ['$rootScope', '$scope', '$state', '$filter', 'toaster', 'SysUserService', 'SysRoleService', 'DICT_CONST']; function SysUserFormCtrl($rootScope, $scope, $state, $filter, toaster, sysUserService, sysRoleService, DICT_CONST) { var id = $state.params.id; $scope.yes_no = DICT_CONST.YES_NO; $rootScope.loading = true; if (!!id) { //编辑 $scope.title = '用户详情'; } else { //新建 $scope.title = '新建用户'; $scope.user = { enabled: true }; } sysRoleService.listAll() .then(function (data) { $scope.roles = data; if (!!id) { sysUserService.getById(id) .then(function (data) { $scope.user = data; var userRoles = []; angular.forEach(data.roles, function (userRole) { userRoles.push(userRole.id); }); angular.forEach($scope.roles, function (role) { role.checked = $.inArray(role.id, userRoles) >= 0; }); $scope.selectedRoles(); }) ; } }) .finally(function () { $rootScope.loading = false; }); $scope.selectedRoles = function () { $scope.selected = $filter('filter')($scope.roles, {checked: true}); }; $scope.saveData = function () { $rootScope.loading = true; var selected = []; angular.forEach($scope.selected, function (role) { selected.push({id: role.id}); }); $scope.user.roles = selected; sysUserService.saveData($scope.user) .then(function (data) { $state.go('app.sys.user.form', { id: data.id }); toaster.pop('success', '', '保存成功'); }) .finally(function () { $rootScope.loading = false; }) ; } } })(); ================================================ FILE: src/js/custom/sys/user/user-info.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysUserInfoCtrl', SysUserInfoCtrl); SysUserInfoCtrl.$inject = ['$rootScope', '$scope', 'toaster', 'SysUserService']; function SysUserInfoCtrl($rootScope, $scope, toaster, sysUserService) { $scope.title = '个人信息'; var id = $rootScope.sysuser.id; $rootScope.loading = true; sysUserService.getById(id) .then(function (data) { $scope.user = data; }) .finally(function () { $rootScope.loading = false; }) ; $scope.saveData = function () { $rootScope.loading = true; sysUserService.saveInfo($scope.user) .then(function () { toaster.pop('success', '', '保存成功'); }) .finally(function () { $rootScope.loading = false; }) ; } } })(); ================================================ FILE: src/js/custom/sys/user/user-list.js ================================================ (function () { 'use strict'; angular.module('app') .controller('SysUserListCtrl', SysUserListCtrl); SysUserListCtrl.$inject = ['$rootScope', '$scope', '$state', 'dialogs', 'SysUserService']; function SysUserListCtrl($rootScope, $scope, $state, dialogs, sysUserService) { $scope.title = '用户管理'; $scope.params = { pageNum: 1, pageSize: 20, orderBy: '' }; $scope.search = function () { $rootScope.loading = true; sysUserService.list($scope.params) .then(function (data) { $scope.pageInfo = data; }) .finally(function () { $rootScope.loading = false; }) ; }; $scope.search(); $scope.pageChanged = function () { $scope.params.pageNum = $scope.pageInfo.pageNum; $scope.search(); }; $scope.delete = function (id) { dialogs.confirm('确认', '要删除该用户吗?', { size: 'md' }) .result.then(function () { sysUserService.deleteById(id) .then(function () { $state.reload(); }) ; }); }; } })(); ================================================ FILE: src/js/custom/sys/user/user-service.js ================================================ (function () { 'use strict'; angular.module('app') .service('SysUserService', SysUserService); SysUserService.$inject = ['$http', '$q', 'APP_CONST']; function SysUserService($http, $q, APP_CONST) { this.retrieve = function retrieve() { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/user/info') .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.list = function list(params) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/user/list', { params: params }) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.deleteById = function deleteById(id) { var d = $q.defer(); $http.delete(APP_CONST.PROPERTY.API_URL + '/sys/user/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.getById = function getById(id) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/sys/user/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.saveData = function saveData(data) { var d = $q.defer(); $http.post(APP_CONST.PROPERTY.API_URL + '/sys/user', data) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.saveInfo = function saveData(data) { var d = $q.defer(); $http.post(APP_CONST.PROPERTY.API_URL + '/sys/user/info', data) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.resetPwd = function saveData(data) { var d = $q.defer(); $http.put(APP_CONST.PROPERTY.API_URL + '/sys/user/password', data) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; } })(); ================================================ FILE: src/js/custom/trip/user/user-form.js ================================================ (function () { 'use strict'; angular.module('app') .controller('TripUserFormCtrl', TripUserFormCtrl); TripUserFormCtrl.$inject = ['$rootScope', '$scope', '$state', 'TripUserService']; function TripUserFormCtrl($rootScope, $scope, $state, tripUserService) { var id = $state.params.id; $scope.title = '用户详情'; $rootScope.loading = true; tripUserService.getById(id) .then(function (data) { $scope.data = data; }) .finally(function () { $rootScope.loading = false; }) ; } })(); ================================================ FILE: src/js/custom/trip/user/user-list.js ================================================ (function () { 'use strict'; angular.module('app') .controller('TripUserListCtrl', TripUserListCtrl); TripUserListCtrl.$inject = ['$rootScope', '$scope', 'TripUserService', 'DICT_CONST']; function TripUserListCtrl($rootScope, $scope, tripUserService, DICT_CONST) { $scope.title = '用户信息'; $scope.gender = DICT_CONST.GENDER; $scope.yes_no = DICT_CONST.YES_NO; $scope.params = { pageNum: 1, pageSize: 20, orderBy: '' }; $scope.search = function () { $rootScope.loading = true; tripUserService.list($scope.params) .then(function (data) { $scope.pageInfo = data; }) .finally(function () { $rootScope.loading = false; }) ; }; $scope.search(); $scope.pageChanged = function () { $scope.params.pageNum = $scope.pageInfo.pageNum; $scope.search(); }; } })(); ================================================ FILE: src/js/custom/trip/user/user-service.js ================================================ (function () { 'use strict'; angular.module('app') .service('TripUserService', TripUserService); TripUserService.$inject = ['$http', '$q', 'APP_CONST']; function TripUserService($http, $q, APP_CONST) { this.list = function list(params) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/trip/user/list', { params: params }) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; this.getById = function getById(id) { var d = $q.defer(); $http.get(APP_CONST.PROPERTY.API_URL + '/trip/user/' + id) .success(function (data) { d.resolve(data); }) .error(function () { d.reject(); }); return d.promise; }; } })(); ================================================ FILE: src/js/directives/setnganimate.js ================================================ (function () { 'use strict'; angular.module('app') .directive('setNgAnimate', setNgAnimate); setNgAnimate.$inject = ['$animate']; function setNgAnimate($animate) { return { link: function ($scope, $element, $attrs) { $scope.$watch(function () { return $scope.$eval($attrs.setNgAnimate, $scope); }, function (valnew) { $animate.enabled(!!valnew, $element); }); } }; } })(); ================================================ FILE: src/js/directives/ui-butterbar.js ================================================ (function () { 'use strict'; angular.module('app') .directive('uiButterbar', uiButterbar); uiButterbar.$inject = ['$anchorScroll']; function uiButterbar($anchorScroll) { return { restrict: 'AC', template: '', link: function (scope, el) { el.addClass('butterbar hide'); scope.$on('$stateChangeStart', function () { $anchorScroll(); el.removeClass('hide').addClass('active'); }); scope.$on('$stateChangeSuccess', function (event) { event.targetScope.$watch('$viewContentLoaded', function () { el.addClass('hide').removeClass('active'); }) }); } }; } })(); ================================================ FILE: src/js/directives/ui-focus.js ================================================ (function () { 'use strict'; angular.module('app') .directive('uiFocus', uiFocus); uiFocus.$inject = ['$timeout', '$parse']; function uiFocus($timeout, $parse) { return { link: function (scope, element, attr) { var model = $parse(attr.uiFocus); scope.$watch(model, function (value) { if (value === true) { $timeout(function () { element[0].focus(); }); } }); element.bind('blur', function () { scope.$apply(model.assign(scope, false)); }); } }; } })(); ================================================ FILE: src/js/directives/ui-fullscreen.js ================================================ (function () { 'use strict'; angular.module('app') .directive('uiFullscreen', uiFullscreen); uiFullscreen.$inject = ['uiLoad', '$document']; function uiFullscreen(uiLoad, $document) { return { restrict: 'AC', template: '', link: function (scope, el, attr) { el.addClass('hide'); uiLoad.load('vendor/libs/screenfull.min.js').then(function () { // disable on ie11 if (screenfull.enabled && !navigator.userAgent.match(/Trident.*rv:11\./)) { el.removeClass('hide'); } el.on('click', function () { var target; attr.target && ( target = $(attr.target)[0] ); screenfull.toggle(target); }); $document.on(screenfull.raw.fullscreenchange, function () { if (screenfull.isFullscreen) { el.addClass('active'); } else { el.removeClass('active'); } }); }); } }; } })(); ================================================ FILE: src/js/directives/ui-jq.js ================================================ (function () { 'use strict'; angular.module('ui.jq', ['ui.load']).value('uiJqConfig', {}) .directive('uiJq', uiJqInjectingFunction); uiJqInjectingFunction.$inject = ['uiJqConfig', 'JQ_CONFIG', 'uiLoad', '$timeout']; function uiJqInjectingFunction(uiJqConfig, JQ_CONFIG, uiLoad, $timeout) { return { restrict: 'A', compile: function uiJqCompilingFunction(tElm, tAttrs) { if (!angular.isFunction(tElm[tAttrs.uiJq]) && !JQ_CONFIG[tAttrs.uiJq]) { throw new Error('ui-jq: The "' + tAttrs.uiJq + '" function does not exist'); } var options = uiJqConfig && uiJqConfig[tAttrs.uiJq]; return function uiJqLinkingFunction(scope, elm, attrs) { function getOptions() { var linkOptions = []; // If ui-options are passed, merge (or override) them onto global defaults and pass to the jQuery method if (attrs.uiOptions) { linkOptions = scope.$eval('[' + attrs.uiOptions + ']'); if (angular.isObject(options) && angular.isObject(linkOptions[0])) { linkOptions[0] = angular.extend({}, options, linkOptions[0]); } } else if (options) { linkOptions = [options]; } return linkOptions; } // If change compatibility is enabled, the form input's "change" event will trigger an "input" event if (attrs.ngModel && elm.is('select,input,textarea')) { elm.bind('change', function () { elm.trigger('input'); }); } // Call jQuery method and pass relevant options function callPlugin() { $timeout(function () { elm[attrs.uiJq].apply(elm, getOptions()); }, 0, false); } function refresh() { // If ui-refresh is used, re-fire the the method upon every change if (attrs.uiRefresh) { scope.$watch(attrs.uiRefresh, function () { callPlugin(); }); } } if (JQ_CONFIG[attrs.uiJq]) { uiLoad.load(JQ_CONFIG[attrs.uiJq]).then(function () { callPlugin(); refresh(); }).catch(function () { }); } else { callPlugin(); refresh(); } }; } }; } })(); ================================================ FILE: src/js/directives/ui-module.js ================================================ (function () { 'use strict'; angular.module('app') .directive('uiModule', uiModule); uiModule.$inject = ['MODULE_CONFIG', 'uiLoad', '$compile']; function uiModule(MODULE_CONFIG, uiLoad, $compile) { return { restrict: 'A', compile: function (el) { var contents = el.contents().clone(); return function (scope, el, attrs) { el.contents().remove(); uiLoad.load(MODULE_CONFIG[attrs.uiModule]) .then(function () { $compile(contents)(scope, function (clonedElement) { el.append(clonedElement); }); }); } } }; } })(); ================================================ FILE: src/js/directives/ui-nav.js ================================================ (function () { 'use strict'; angular.module('app') .directive('uiNav', uiNav); function uiNav() { return { restrict: 'AC', link: function (scope, el) { var _window = $(window), _mb = 768, wrap = $('.app-aside'), next, backdrop = '.dropdown-backdrop'; // unfolded el.on('click', 'a', function (e) { next && next.trigger('mouseleave.nav'); var _this = $(this); _this.parent().siblings(".active").toggleClass('active'); _this.next().is('ul') && _this.parent().toggleClass('active') && e.preventDefault(); // mobile _this.next().is('ul') || ( ( _window.width() < _mb ) && $('.app-aside').removeClass('show off-screen') ); }); // folded & fixed el.on('mouseenter', 'a', function (e) { next && next.trigger('mouseleave.nav'); $('> .nav', wrap).remove(); if (!$('.app-aside-fixed.app-aside-folded').length || ( _window.width() < _mb ) || $('.app-aside-dock').length) return; var _this = $(e.target) , top , w_h = $(window).height() , offset = 50 , min = 150; !_this.is('a') && (_this = _this.closest('a')); if (_this.next().is('ul')) { next = _this.next(); } else { return; } _this.parent().addClass('active'); top = _this.parent().position().top + offset; next.css('top', top); if (top + next.height() > w_h) { next.css('bottom', 0); } if (top + min > w_h) { next.css('bottom', w_h - top - offset).css('top', 'auto'); } next.appendTo(wrap); next.on('mouseleave.nav', function (e) { $(backdrop).remove(); next.appendTo(_this.parent()); next.off('mouseleave.nav').css('top', 'auto').css('bottom', 'auto'); _this.parent().removeClass('active'); }); $('.smart').length && $(' ================================================ FILE: src/tpl/custom/trip/user/user-list.html ================================================
手机号 昵称 性别 年龄 注册时间 可用 操作
{{item.mobile}} {{item.nickname}} {{item.gender | dict : 'GENDER'}} {{item.age}} {{item.createDate | date : 'yyyy-MM-dd H:mm:ss'}} {{item.enabled | dict : 'YES_NO'}}
================================================ FILE: src/vendor/jquery/bootstrap.js ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under the MIT license */ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } +function ($) { 'use strict'; var version = $.fn.jquery.split(' ')[0].split('.') if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') } }(jQuery); /* ======================================================================== * Bootstrap: transition.js v3.3.7 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery); /* ======================================================================== * Bootstrap: alert.js v3.3.7 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="alert"]' var Alert = function (el) { $(el).on('click', dismiss, this.close) } Alert.VERSION = '3.3.7' Alert.TRANSITION_DURATION = 150 Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector === '#' ? [] : selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.closest('.alert') } $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { // detach from parent, fire event then clean up data $parent.detach().trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.alert $.fn.alert = Plugin $.fn.alert.Constructor = Alert // ALERT NO CONFLICT // ================= $.fn.alert.noConflict = function () { $.fn.alert = old return this } // ALERT DATA-API // ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: button.js v3.3.7 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ============================== var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, Button.DEFAULTS, options) this.isLoading = false } Button.VERSION = '3.3.7' Button.DEFAULTS = { loadingText: 'loading...' } Button.prototype.setState = function (state) { var d = 'disabled' var $el = this.$element var val = $el.is('input') ? 'val' : 'html' var data = $el.data() state += 'Text' if (data.resetText == null) $el.data('resetText', $el[val]()) // push to event loop to allow forms to submit setTimeout($.proxy(function () { $el[val](data[state] == null ? this.options[state] : data[state]) if (state == 'loadingText') { this.isLoading = true $el.addClass(d).attr(d, d).prop(d, true) } else if (this.isLoading) { this.isLoading = false $el.removeClass(d).removeAttr(d).prop(d, false) } }, this), 0) } Button.prototype.toggle = function () { var changed = true var $parent = this.$element.closest('[data-toggle="buttons"]') if ($parent.length) { var $input = this.$element.find('input') if ($input.prop('type') == 'radio') { if ($input.prop('checked')) changed = false $parent.find('.active').removeClass('active') this.$element.addClass('active') } else if ($input.prop('type') == 'checkbox') { if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false this.$element.toggleClass('active') } $input.prop('checked', this.$element.hasClass('active')) if (changed) $input.trigger('change') } else { this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.toggleClass('active') } } // BUTTON PLUGIN DEFINITION // ======================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') var options = typeof option == 'object' && option if (!data) $this.data('bs.button', (data = new Button(this, options))) if (option == 'toggle') data.toggle() else if (option) data.setState(option) }) } var old = $.fn.button $.fn.button = Plugin $.fn.button.Constructor = Button // BUTTON NO CONFLICT // ================== $.fn.button.noConflict = function () { $.fn.button = old return this } // BUTTON DATA-API // =============== $(document) .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { var $btn = $(e.target).closest('.btn') Plugin.call($btn, 'toggle') if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { // Prevent double click on radios, and the double selections (so cancellation) on checkboxes e.preventDefault() // The target component still receive the focus if ($btn.is('input,button')) $btn.trigger('focus') else $btn.find('input:visible,button:visible').first().trigger('focus') } }) .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) }) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.3.7 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CAROUSEL CLASS DEFINITION // ========================= var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.paused = null this.sliding = null this.interval = null this.$active = null this.$items = null this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } Carousel.VERSION = '3.3.7' Carousel.TRANSITION_DURATION = 600 Carousel.DEFAULTS = { interval: 5000, pause: 'hover', wrap: true, keyboard: true } Carousel.prototype.keydown = function (e) { if (/input|textarea/i.test(e.target.tagName)) return switch (e.which) { case 37: this.prev(); break case 39: this.next(); break default: return } e.preventDefault() } Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } Carousel.prototype.getItemIndex = function (item) { this.$items = item.parent().children('.item') return this.$items.index(item || this.$active) } Carousel.prototype.getItemForDirection = function (direction, active) { var activeIndex = this.getItemIndex(active) var willWrap = (direction == 'prev' && activeIndex === 0) || (direction == 'next' && activeIndex == (this.$items.length - 1)) if (willWrap && !this.options.wrap) return active var delta = direction == 'prev' ? -1 : 1 var itemIndex = (activeIndex + delta) % this.$items.length return this.$items.eq(itemIndex) } Carousel.prototype.to = function (pos) { var that = this var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) } Carousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } Carousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } Carousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') var $next = next || this.getItemForDirection(type, $active) var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var that = this if ($next.hasClass('active')) return (this.sliding = false) var relatedTarget = $next[0] var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) this.$element.trigger(slideEvent) if (slideEvent.isDefaultPrevented()) return this.sliding = true isCycling && this.pause() if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) $nextIndicator && $nextIndicator.addClass('active') } var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger(slidEvent) }, 0) }) .emulateTransitionEnd(Carousel.TRANSITION_DURATION) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger(slidEvent) } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } var old = $.fn.carousel $.fn.carousel = Plugin $.fn.carousel.Constructor = Carousel // CAROUSEL NO CONFLICT // ==================== $.fn.carousel.noConflict = function () { $.fn.carousel = old return this } // CAROUSEL DATA-API // ================= var clickHandler = function (e) { var href var $this = $(this) var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 if (!$target.hasClass('carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false Plugin.call($target, options) if (slideIndex) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() } $(document) .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.3.7 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ /* jshint latedef: false */ +function ($) { 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION // ================================ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + '[data-toggle="collapse"][data-target="#' + element.id + '"]') this.transitioning = null if (this.options.parent) { this.$parent = this.getParent() } else { this.addAriaAndCollapsedClass(this.$element, this.$trigger) } if (this.options.toggle) this.toggle() } Collapse.VERSION = '3.3.7' Collapse.TRANSITION_DURATION = 350 Collapse.DEFAULTS = { toggle: true } Collapse.prototype.dimension = function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return var activesData var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') if (actives && actives.length) { activesData = actives.data('bs.collapse') if (activesData && activesData.transitioning) return } var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return if (actives && actives.length) { Plugin.call(actives, 'hide') activesData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') .addClass('collapsing')[dimension](0) .attr('aria-expanded', true) this.$trigger .removeClass('collapsed') .attr('aria-expanded', true) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') .addClass('collapse in')[dimension]('') this.transitioning = 0 this.$element .trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { if (this.transitioning || !this.$element.hasClass('in')) return var startEvent = $.Event('hide.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var dimension = this.dimension() this.$element[dimension](this.$element[dimension]())[0].offsetHeight this.$element .addClass('collapsing') .removeClass('collapse in') .attr('aria-expanded', false) this.$trigger .addClass('collapsed') .attr('aria-expanded', false) this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element .removeClass('collapsing') .addClass('collapse') .trigger('hidden.bs.collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } Collapse.prototype.getParent = function () { return $(this.options.parent) .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') .each($.proxy(function (i, element) { var $element = $(element) this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) }, this)) .end() } Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { var isOpen = $element.hasClass('in') $element.attr('aria-expanded', isOpen) $trigger .toggleClass('collapsed', !isOpen) .attr('aria-expanded', isOpen) } function getTargetFromTrigger($trigger) { var href var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 return $(target) } // COLLAPSE PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.collapse $.fn.collapse = Plugin $.fn.collapse.Constructor = Collapse // COLLAPSE NO CONFLICT // ==================== $.fn.collapse.noConflict = function () { $.fn.collapse = old return this } // COLLAPSE DATA-API // ================= $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { var $this = $(this) if (!$this.attr('data-target')) e.preventDefault() var $target = getTargetFromTrigger($this) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() Plugin.call($target, option) }) }(jQuery); /* ======================================================================== * Bootstrap: dropdown.js v3.3.7 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle="dropdown"]' var Dropdown = function (element) { $(element).on('click.bs.dropdown', this.toggle) } Dropdown.VERSION = '3.3.7' function getParent($this) { var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) return $parent && $parent.length ? $parent : $this.parent() } function clearMenus(e) { if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { var $this = $(this) var $parent = getParent($this) var relatedTarget = { relatedTarget: this } if (!$parent.hasClass('open')) return if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) }) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we use a backdrop because click events don't delegate $(document.createElement('div')) .addClass('dropdown-backdrop') .insertAfter($(this)) .on('click', clearMenus) } var relatedTarget = { relatedTarget: this } $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this .trigger('focus') .attr('aria-expanded', 'true') $parent .toggleClass('open') .trigger($.Event('shown.bs.dropdown', relatedTarget)) } return false } Dropdown.prototype.keydown = function (e) { if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) e.preventDefault() e.stopPropagation() if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') if (!isActive && e.which != 27 || isActive && e.which == 27) { if (e.which == 27) $parent.find(toggle).trigger('focus') return $this.trigger('click') } var desc = ' li:not(.disabled):visible a' var $items = $parent.find('.dropdown-menu' + desc) if (!$items.length) return var index = $items.index(e.target) if (e.which == 38 && index > 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.dropdown') if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.dropdown $.fn.dropdown = Plugin $.fn.dropdown.Constructor = Dropdown // DROPDOWN NO CONFLICT // ==================== $.fn.dropdown.noConflict = function () { $.fn.dropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) }(jQuery); /* ======================================================================== * Bootstrap: modal.js v3.3.7 * http://getbootstrap.com/javascript/#modals * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // MODAL CLASS DEFINITION // ====================== var Modal = function (element, options) { this.options = options this.$body = $(document.body) this.$element = $(element) this.$dialog = this.$element.find('.modal-dialog') this.$backdrop = null this.isShown = null this.originalBodyPad = null this.scrollbarWidth = 0 this.ignoreBackdropClick = false if (this.options.remote) { this.$element .find('.modal-content') .load(this.options.remote, $.proxy(function () { this.$element.trigger('loaded.bs.modal') }, this)) } } Modal.VERSION = '3.3.7' Modal.TRANSITION_DURATION = 300 Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.DEFAULTS = { backdrop: true, keyboard: true, show: true } Modal.prototype.toggle = function (_relatedTarget) { return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { var that = this var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) this.$element.trigger(e) if (this.isShown || e.isDefaultPrevented()) return this.isShown = true this.checkScrollbar() this.setScrollbar() this.$body.addClass('modal-open') this.escape() this.resize() this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) this.$dialog.on('mousedown.dismiss.bs.modal', function () { that.$element.one('mouseup.dismiss.bs.modal', function (e) { if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true }) }) this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) that.adjustDialog() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') that.enforceFocus() var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) transition ? that.$dialog // wait for modal to slide in .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e) }) } Modal.prototype.hide = function (e) { if (e) e.preventDefault() e = $.Event('hide.bs.modal') this.$element.trigger(e) if (!this.isShown || e.isDefaultPrevented()) return this.isShown = false this.escape() this.resize() $(document).off('focusin.bs.modal') this.$element .removeClass('in') .off('click.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal') this.$dialog.off('mousedown.dismiss.bs.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } Modal.prototype.enforceFocus = function () { $(document) .off('focusin.bs.modal') // guard against infinite focus loop .on('focusin.bs.modal', $.proxy(function (e) { if (document !== e.target && this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { this.$element.off('keydown.dismiss.bs.modal') } } Modal.prototype.resize = function () { if (this.isShown) { $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) } else { $(window).off('resize.bs.modal') } } Modal.prototype.hideModal = function () { var that = this this.$element.hide() this.backdrop(function () { that.$body.removeClass('modal-open') that.resetAdjustments() that.resetScrollbar() that.$element.trigger('hidden.bs.modal') }) } Modal.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove() this.$backdrop = null } Modal.prototype.backdrop = function (callback) { var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $(document.createElement('div')) .addClass('modal-backdrop ' + animate) .appendTo(this.$body) this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { if (this.ignoreBackdropClick) { this.ignoreBackdropClick = false return } if (e.target !== e.currentTarget) return this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide() }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow this.$backdrop.addClass('in') if (!callback) return doAnimate ? this.$backdrop .one('bsTransitionEnd', callback) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in') var callbackRemove = function () { that.removeBackdrop() callback && callback() } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove() } else if (callback) { callback() } } // these following methods are used to handle overflowing modals Modal.prototype.handleUpdate = function () { this.adjustDialog() } Modal.prototype.adjustDialog = function () { var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight this.$element.css({ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' }) } Modal.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: '', paddingRight: '' }) } Modal.prototype.checkScrollbar = function () { var fullWindowWidth = window.innerWidth if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 var documentElementRect = document.documentElement.getBoundingClientRect() fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) } this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth this.scrollbarWidth = this.measureScrollbar() } Modal.prototype.setScrollbar = function () { var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) this.originalBodyPad = document.body.style.paddingRight || '' if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) } Modal.prototype.resetScrollbar = function () { this.$body.css('padding-right', this.originalBodyPad) } Modal.prototype.measureScrollbar = function () { // thx walsh var scrollDiv = document.createElement('div') scrollDiv.className = 'modal-scrollbar-measure' this.$body.append(scrollDiv) var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth this.$body[0].removeChild(scrollDiv) return scrollbarWidth } // MODAL PLUGIN DEFINITION // ======================= function Plugin(option, _relatedTarget) { return this.each(function () { var $this = $(this) var data = $this.data('bs.modal') var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('bs.modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option](_relatedTarget) else if (options.show) data.show(_relatedTarget) }) } var old = $.fn.modal $.fn.modal = Plugin $.fn.modal.Constructor = Modal // MODAL NO CONFLICT // ================= $.fn.modal.noConflict = function () { $.fn.modal = old return this } // MODAL DATA-API // ============== $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) if ($this.is('a')) e.preventDefault() $target.one('show.bs.modal', function (showEvent) { if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown $target.one('hidden.bs.modal', function () { $this.is(':visible') && $this.trigger('focus') }) }) Plugin.call($target, option, this) }) }(jQuery); /* ======================================================================== * Bootstrap: tooltip.js v3.3.7 * http://getbootstrap.com/javascript/#tooltip * Inspired by the original jQuery.tipsy by Jason Frame * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TOOLTIP PUBLIC CLASS DEFINITION // =============================== var Tooltip = function (element, options) { this.type = null this.options = null this.enabled = null this.timeout = null this.hoverState = null this.$element = null this.inState = null this.init('tooltip', element, options) } Tooltip.VERSION = '3.3.7' Tooltip.TRANSITION_DURATION = 150 Tooltip.DEFAULTS = { animation: true, placement: 'top', selector: false, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, container: false, viewport: { selector: 'body', padding: 0 } } Tooltip.prototype.init = function (type, element, options) { this.enabled = true this.type = type this.$element = $(element) this.options = this.getOptions(options) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) this.inState = { click: false, hover: false, focus: false } if (this.$element[0] instanceof document.constructor && !this.options.selector) { throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') } var triggers = this.options.trigger.split(' ') for (var i = triggers.length; i--;) { var trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) } } this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle() } Tooltip.prototype.getDefaults = function () { return Tooltip.DEFAULTS } Tooltip.prototype.getOptions = function (options) { options = $.extend({}, this.getDefaults(), this.$element.data(), options) if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay } } return options } Tooltip.prototype.getDelegateOptions = function () { var options = {} var defaults = this.getDefaults() this._options && $.each(this._options, function (key, value) { if (defaults[key] != value) options[key] = value }) return options } Tooltip.prototype.enter = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true } if (self.tip().hasClass('in') || self.hoverState == 'in') { self.hoverState = 'in' return } clearTimeout(self.timeout) self.hoverState = 'in' if (!self.options.delay || !self.options.delay.show) return self.show() self.timeout = setTimeout(function () { if (self.hoverState == 'in') self.show() }, self.options.delay.show) } Tooltip.prototype.isInStateTrue = function () { for (var key in this.inState) { if (this.inState[key]) return true } return false } Tooltip.prototype.leave = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false } if (self.isInStateTrue()) return clearTimeout(self.timeout) self.hoverState = 'out' if (!self.options.delay || !self.options.delay.hide) return self.hide() self.timeout = setTimeout(function () { if (self.hoverState == 'out') self.hide() }, self.options.delay.hide) } Tooltip.prototype.show = function () { var e = $.Event('show.bs.' + this.type) if (this.hasContent() && this.enabled) { this.$element.trigger(e) var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) if (e.isDefaultPrevented() || !inDom) return var that = this var $tip = this.tip() var tipId = this.getUID(this.type) this.setContent() $tip.attr('id', tipId) this.$element.attr('aria-describedby', tipId) if (this.options.animation) $tip.addClass('fade') var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement var autoToken = /\s?auto?\s?/i var autoPlace = autoToken.test(placement) if (autoPlace) placement = placement.replace(autoToken, '') || 'top' $tip .detach() .css({ top: 0, left: 0, display: 'block' }) .addClass(placement) .data('bs.' + this.type, this) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.$element.trigger('inserted.bs.' + this.type) var pos = this.getPosition() var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (autoPlace) { var orgPlacement = placement var viewportDim = this.getPosition(this.$viewport) placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : placement $tip .removeClass(orgPlacement) .addClass(placement) } var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) this.applyPlacement(calculatedOffset, placement) var complete = function () { var prevHoverState = that.hoverState that.$element.trigger('shown.bs.' + that.type) that.hoverState = null if (prevHoverState == 'out') that.leave(that) } $.support.transition && this.$tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() } } Tooltip.prototype.applyPlacement = function (offset, placement) { var $tip = this.tip() var width = $tip[0].offsetWidth var height = $tip[0].offsetHeight // manually read margins because getBoundingClientRect includes difference var marginTop = parseInt($tip.css('margin-top'), 10) var marginLeft = parseInt($tip.css('margin-left'), 10) // we must check for NaN for ie 8/9 if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginLeft)) marginLeft = 0 offset.top += marginTop offset.left += marginLeft // $.fn.offset doesn't round pixel values // so we use setOffset directly with our own function B-0 $.offset.setOffset($tip[0], $.extend({ using: function (props) { $tip.css({ top: Math.round(props.top), left: Math.round(props.left) }) } }, offset), 0) $tip.addClass('in') // check to see if placing tip in new offset caused the tip to resize itself var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight } var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) if (delta.left) offset.left += delta.left else offset.top += delta.top var isVertical = /top|bottom/.test(placement) var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' $tip.offset(offset) this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) } Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { this.arrow() .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') .css(isVertical ? 'top' : 'left', '') } Tooltip.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') } Tooltip.prototype.hide = function (callback) { var that = this var $tip = $(this.$tip) var e = $.Event('hide.bs.' + this.type) function complete() { if (that.hoverState != 'in') $tip.detach() if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. that.$element .removeAttr('aria-describedby') .trigger('hidden.bs.' + that.type) } callback && callback() } this.$element.trigger(e) if (e.isDefaultPrevented()) return $tip.removeClass('in') $.support.transition && $tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() this.hoverState = null return this } Tooltip.prototype.fixTitle = function () { var $e = this.$element if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') } } Tooltip.prototype.hasContent = function () { return this.getTitle() } Tooltip.prototype.getPosition = function ($element) { $element = $element || this.$element var el = $element[0] var isBody = el.tagName == 'BODY' var elRect = el.getBoundingClientRect() if (elRect.width == null) { // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) } var isSvg = window.SVGElement && el instanceof window.SVGElement // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. // See https://github.com/twbs/bootstrap/issues/20280 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null return $.extend({}, elRect, scroll, outerDims, elOffset) } Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } } Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { var delta = { top: 0, left: 0 } if (!this.$viewport) return delta var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 var viewportDimensions = this.getPosition(this.$viewport) if (/right|left/.test(placement)) { var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight if (topEdgeOffset < viewportDimensions.top) { // top overflow delta.top = viewportDimensions.top - topEdgeOffset } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset } } else { var leftEdgeOffset = pos.left - viewportPadding var rightEdgeOffset = pos.left + viewportPadding + actualWidth if (leftEdgeOffset < viewportDimensions.left) { // left overflow delta.left = viewportDimensions.left - leftEdgeOffset } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset } } return delta } Tooltip.prototype.getTitle = function () { var title var $e = this.$element var o = this.options title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) return title } Tooltip.prototype.getUID = function (prefix) { do prefix += ~~(Math.random() * 1000000) while (document.getElementById(prefix)) return prefix } Tooltip.prototype.tip = function () { if (!this.$tip) { this.$tip = $(this.options.template) if (this.$tip.length != 1) { throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') } } return this.$tip } Tooltip.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) } Tooltip.prototype.enable = function () { this.enabled = true } Tooltip.prototype.disable = function () { this.enabled = false } Tooltip.prototype.toggleEnabled = function () { this.enabled = !this.enabled } Tooltip.prototype.toggle = function (e) { var self = this if (e) { self = $(e.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(e.currentTarget, this.getDelegateOptions()) $(e.currentTarget).data('bs.' + this.type, self) } } if (e) { self.inState.click = !self.inState.click if (self.isInStateTrue()) self.enter(self) else self.leave(self) } else { self.tip().hasClass('in') ? self.leave(self) : self.enter(self) } } Tooltip.prototype.destroy = function () { var that = this clearTimeout(this.timeout) this.hide(function () { that.$element.off('.' + that.type).removeData('bs.' + that.type) if (that.$tip) { that.$tip.detach() } that.$tip = null that.$arrow = null that.$viewport = null that.$element = null }) } // TOOLTIP PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tooltip') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tooltip $.fn.tooltip = Plugin $.fn.tooltip.Constructor = Tooltip // TOOLTIP NO CONFLICT // =================== $.fn.tooltip.noConflict = function () { $.fn.tooltip = old return this } }(jQuery); /* ======================================================================== * Bootstrap: popover.js v3.3.7 * http://getbootstrap.com/javascript/#popovers * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // POPOVER PUBLIC CLASS DEFINITION // =============================== var Popover = function (element, options) { this.init('popover', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') Popover.VERSION = '3.3.7' Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '' }) // NOTE: POPOVER EXTENDS tooltip.js // ================================ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) Popover.prototype.constructor = Popover Popover.prototype.getDefaults = function () { return Popover.DEFAULTS } Popover.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() var content = this.getContent() $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' ](content) $tip.removeClass('fade top bottom left right in') // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do // this manually by checking the contents. if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() } Popover.prototype.hasContent = function () { return this.getTitle() || this.getContent() } Popover.prototype.getContent = function () { var $e = this.$element var o = this.options return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) } Popover.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.arrow')) } // POPOVER PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.popover') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.popover', (data = new Popover(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.popover $.fn.popover = Plugin $.fn.popover.Constructor = Popover // POPOVER NO CONFLICT // =================== $.fn.popover.noConflict = function () { $.fn.popover = old return this } }(jQuery); /* ======================================================================== * Bootstrap: scrollspy.js v3.3.7 * http://getbootstrap.com/javascript/#scrollspy * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // SCROLLSPY CLASS DEFINITION // ========================== function ScrollSpy(element, options) { this.$body = $(document.body) this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) this.options = $.extend({}, ScrollSpy.DEFAULTS, options) this.selector = (this.options.target || '') + ' .nav li > a' this.offsets = [] this.targets = [] this.activeTarget = null this.scrollHeight = 0 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) this.refresh() this.process() } ScrollSpy.VERSION = '3.3.7' ScrollSpy.DEFAULTS = { offset: 10 } ScrollSpy.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) } ScrollSpy.prototype.refresh = function () { var that = this var offsetMethod = 'offset' var offsetBase = 0 this.offsets = [] this.targets = [] this.scrollHeight = this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod = 'position' offsetBase = this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el = $(this) var href = $el.data('target') || $el.attr('href') var $href = /^#./.test(href) && $(href) return ($href && $href.length && $href.is(':visible') && [[$href[offsetMethod]().top + offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } ScrollSpy.prototype.process = function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset var scrollHeight = this.getScrollHeight() var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() var offsets = this.offsets var targets = this.targets var activeTarget = this.activeTarget var i if (this.scrollHeight != scrollHeight) { this.refresh() } if (scrollTop >= maxScroll) { return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) } if (activeTarget && scrollTop < offsets[0]) { this.activeTarget = null return this.clear() } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) && this.activate(targets[i]) } } ScrollSpy.prototype.activate = function (target) { this.activeTarget = target this.clear() var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]' var active = $(selector) .parents('li') .addClass('active') if (active.parent('.dropdown-menu').length) { active = active .closest('li.dropdown') .addClass('active') } active.trigger('activate.bs.scrollspy') } ScrollSpy.prototype.clear = function () { $(this.selector) .parentsUntil(this.options.target, '.active') .removeClass('active') } // SCROLLSPY PLUGIN DEFINITION // =========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.scrollspy') var options = typeof option == 'object' && option if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.scrollspy $.fn.scrollspy = Plugin $.fn.scrollspy.Constructor = ScrollSpy // SCROLLSPY NO CONFLICT // ===================== $.fn.scrollspy.noConflict = function () { $.fn.scrollspy = old return this } // SCROLLSPY DATA-API // ================== $(window).on('load.bs.scrollspy.data-api', function () { $('[data-spy="scroll"]').each(function () { var $spy = $(this) Plugin.call($spy, $spy.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: tab.js v3.3.7 * http://getbootstrap.com/javascript/#tabs * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TAB CLASS DEFINITION // ==================== var Tab = function (element) { // jscs:disable requireDollarBeforejQueryAssignment this.element = $(element) // jscs:enable requireDollarBeforejQueryAssignment } Tab.VERSION = '3.3.7' Tab.TRANSITION_DURATION = 150 Tab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } if ($this.parent('li').hasClass('active')) return var $previous = $ul.find('.active:last a') var hideEvent = $.Event('hide.bs.tab', { relatedTarget: $this[0] }) var showEvent = $.Event('show.bs.tab', { relatedTarget: $previous[0] }) $previous.trigger(hideEvent) $this.trigger(showEvent) if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return var $target = $(selector) this.activate($this.closest('li'), $ul) this.activate($target, $target.parent(), function () { $previous.trigger({ type: 'hidden.bs.tab', relatedTarget: $this[0] }) $this.trigger({ type: 'shown.bs.tab', relatedTarget: $previous[0] }) }) } Tab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', false) element .addClass('active') .find('[data-toggle="tab"]') .attr('aria-expanded', true) if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') } if (element.parent('.dropdown-menu').length) { element .closest('li.dropdown') .addClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', true) } callback && callback() } $active.length && transition ? $active .one('bsTransitionEnd', next) .emulateTransitionEnd(Tab.TRANSITION_DURATION) : next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tab') if (!data) $this.data('bs.tab', (data = new Tab(this))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tab $.fn.tab = Plugin $.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } // TAB DATA-API // ============ var clickHandler = function (e) { e.preventDefault() Plugin.call($(this), 'show') } $(document) .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) }(jQuery); /* ======================================================================== * Bootstrap: affix.js v3.3.7 * http://getbootstrap.com/javascript/#affix * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // AFFIX CLASS DEFINITION // ====================== var Affix = function (element, options) { this.options = $.extend({}, Affix.DEFAULTS, options) this.$target = $(this.options.target) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) this.$element = $(element) this.affixed = null this.unpin = null this.pinnedOffset = null this.checkPosition() } Affix.VERSION = '3.3.7' Affix.RESET = 'affix affix-top affix-bottom' Affix.DEFAULTS = { offset: 0, target: window } Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { var scrollTop = this.$target.scrollTop() var position = this.$element.offset() var targetHeight = this.$target.height() if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false if (this.affixed == 'bottom') { if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' } var initializing = this.affixed == null var colliderTop = initializing ? scrollTop : position.top var colliderHeight = initializing ? targetHeight : height if (offsetTop != null && scrollTop <= offsetTop) return 'top' if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' return false } Affix.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset this.$element.removeClass(Affix.RESET).addClass('affix') var scrollTop = this.$target.scrollTop() var position = this.$element.offset() return (this.pinnedOffset = position.top - scrollTop) } Affix.prototype.checkPositionWithEventLoop = function () { setTimeout($.proxy(this.checkPosition, this), 1) } Affix.prototype.checkPosition = function () { if (!this.$element.is(':visible')) return var height = this.$element.height() var offset = this.options.offset var offsetTop = offset.top var offsetBottom = offset.bottom var scrollHeight = Math.max($(document).height(), $(document.body).height()) if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) if (this.affixed != affix) { if (this.unpin != null) this.$element.css('top', '') var affixType = 'affix' + (affix ? '-' + affix : '') var e = $.Event(affixType + '.bs.affix') this.$element.trigger(e) if (e.isDefaultPrevented()) return this.affixed = affix this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null this.$element .removeClass(Affix.RESET) .addClass(affixType) .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') } if (affix == 'bottom') { this.$element.offset({ top: scrollHeight - height - offsetBottom }) } } // AFFIX PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.affix') var options = typeof option == 'object' && option if (!data) $this.data('bs.affix', (data = new Affix(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.affix $.fn.affix = Plugin $.fn.affix.Constructor = Affix // AFFIX NO CONFLICT // ================= $.fn.affix.noConflict = function () { $.fn.affix = old return this } // AFFIX DATA-API // ============== $(window).on('load', function () { $('[data-spy="affix"]').each(function () { var $spy = $(this) var data = $spy.data() data.offset = data.offset || {} if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom if (data.offsetTop != null) data.offset.top = data.offsetTop Plugin.call($spy, data) }) }) }(jQuery); ================================================ FILE: src/vendor/jquery/charts/easypiechart/jquery.easy-pie-chart.js ================================================ // Generated by CoffeeScript 1.6.3 /* Easy pie chart is a jquery plugin to display simple animated pie charts for only one value Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. Built on top of the jQuery library (http://jquery.com) @source: http://github.com/rendro/easy-pie-chart/ @autor: Robert Fleischmann @version: 1.2.5 Inspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210 Thanks to Philip Thrasher for the jquery plugin boilerplate for coffee script */ (function($) { $.easyPieChart = function(el, options) { var addScaleLine, animateLine, drawLine, easeInOutQuad, rAF, renderBackground, renderScale, renderTrack, _this = this; this.el = el; this.$el = $(el); this.$el.data("easyPieChart", this); this.init = function() { var percent, scaleBy; _this.options = $.extend({}, $.easyPieChart.defaultOptions, options); percent = _this.options.percent || parseInt(_this.$el.data('percent'), 10); _this.percentage = 0; _this.canvas = $("").get(0); _this.$el.append(_this.canvas); if (typeof G_vmlCanvasManager !== "undefined" && G_vmlCanvasManager !== null) { G_vmlCanvasManager.initElement(_this.canvas); } _this.ctx = _this.canvas.getContext('2d'); if (window.devicePixelRatio > 1) { scaleBy = window.devicePixelRatio; $(_this.canvas).css({ width: _this.options.size, height: _this.options.size }); _this.canvas.width *= scaleBy; _this.canvas.height *= scaleBy; _this.ctx.scale(scaleBy, scaleBy); } _this.ctx.translate(_this.options.size / 2, _this.options.size / 2); _this.ctx.rotate(_this.options.rotate * Math.PI / 180); _this.$el.addClass('easyPieChart'); _this.$el.css({ width: _this.options.size, height: _this.options.size, lineHeight: "" + _this.options.size + "px" }); _this.update(percent); return _this; }; this.update = function(percent) { percent = parseFloat(percent) || 0; if (_this.options.animate === false) { drawLine(percent); } else { if (_this.options.delay) { animateLine(_this.percentage, 0); setTimeout(function() { return animateLine(_this.percentage, percent); }, _this.options.delay); } else { animateLine(_this.percentage, percent); } } return _this; }; renderScale = function() { var i, _i, _results; _this.ctx.fillStyle = _this.options.scaleColor; _this.ctx.lineWidth = 1; _results = []; for (i = _i = 0; _i <= 24; i = ++_i) { _results.push(addScaleLine(i)); } return _results; }; addScaleLine = function(i) { var offset; offset = i % 6 === 0 ? 0 : _this.options.size * 0.017; _this.ctx.save(); _this.ctx.rotate(i * Math.PI / 12); _this.ctx.fillRect(_this.options.size / 2 - offset, 0, -_this.options.size * 0.05 + offset, 1); _this.ctx.restore(); }; renderTrack = function() { var offset; offset = _this.options.size / 2 - _this.options.lineWidth / 2; if (_this.options.scaleColor !== false) { offset -= _this.options.size * 0.08; } _this.ctx.beginPath(); _this.ctx.arc(0, 0, offset, 0, Math.PI * 2, true); _this.ctx.closePath(); _this.ctx.strokeStyle = _this.options.trackColor; if (_this.options.color) { _this.ctx.fillStyle = _this.options.color; _this.ctx.fill(); } _this.ctx.lineWidth = _this.options.lineWidth; _this.ctx.stroke(); }; renderBackground = function() { if (_this.options.scaleColor !== false) { renderScale(); } if (_this.options.trackColor !== false) { renderTrack(); } }; drawLine = function(percent) { var offset; renderBackground(); _this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor; _this.ctx.lineCap = _this.options.lineCap; _this.ctx.lineWidth = _this.options.lineWidth; offset = _this.options.size / 2 - _this.options.lineWidth / 2; if (_this.options.scaleColor !== false) { offset -= _this.options.size * 0.08; } _this.ctx.save(); _this.ctx.rotate(-Math.PI / 2); _this.ctx.beginPath(); _this.ctx.arc(0, 0, offset, 0, Math.PI * 2 * percent / 100, false); _this.ctx.stroke(); _this.ctx.restore(); }; rAF = (function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { return window.setTimeout(callback, 1000 / 60); }; })(); animateLine = function(from, to) { var anim, startTime; _this.options.onStart.call(_this); _this.percentage = to; Date.now || (Date.now = function() { return +(new Date); }); startTime = Date.now(); anim = function() { var currentValue, process; process = Math.min(Date.now() - startTime, _this.options.animate); _this.ctx.clearRect(-_this.options.size / 2, -_this.options.size / 2, _this.options.size, _this.options.size); renderBackground.call(_this); currentValue = [easeInOutQuad(process, from, to - from, _this.options.animate)]; _this.options.onStep.call(_this, currentValue); drawLine.call(_this, currentValue); if (process >= _this.options.animate) { return _this.options.onStop.call(_this, currentValue, to); } else { return rAF(anim); } }; rAF(anim); }; easeInOutQuad = function(t, b, c, d) { var easeIn, easing; easeIn = function(t) { return Math.pow(t, 2); }; easing = function(t) { if (t < 1) { return easeIn(t); } else { return 2 - easeIn((t / 2) * -2 + 2); } }; t /= d / 2; return c / 2 * easing(t) + b; }; return this.init(); }; $.easyPieChart.defaultOptions = { percent: 0, barColor: '#ef1e25', trackColor: '#f2f2f2', scaleColor: '#dfe0e0', lineCap: 'round', rotate: 0, size: 110, lineWidth: 3, animate: false, delay: false, onStart: $.noop, onStop: $.noop, onStep: $.noop }; $.fn.easyPieChart = function(options) { return $.each(this, function(i, el) { var $el, instanceOptions; $el = $(el); if (!$el.data('easyPieChart')) { instanceOptions = $.extend({}, options, $el.data()); return $el.data('easyPieChart', new $.easyPieChart(el, instanceOptions)); } else{ $el.data('easyPieChart').update(options['percent']); } }); }; return void 0; })(jQuery); ================================================ FILE: src/vendor/jquery/charts/flot/jquery.flot.orderBars.js ================================================ /* * Flot plugin to order bars side by side. * * Released under the MIT license by Benjamin BUFFET, 20-Sep-2010. * * This plugin is an alpha version. * * To activate the plugin you must specify the parameter "order" for the specific serie : * * $.plot($("#placeholder"), [{ data: [ ... ], bars :{ order = null or integer }]) * * If 2 series have the same order param, they are ordered by the position in the array; * * The plugin adjust the point by adding a value depanding of the barwidth * Exemple for 3 series (barwidth : 0.1) : * * first bar décalage : -0.15 * second bar décalage : -0.05 * third bar décalage : 0.05 * */ (function($){ function init(plot){ var orderedBarSeries; var nbOfBarsToOrder; var borderWidth; var borderWidthInXabsWidth; var pixelInXWidthEquivalent = 1; var isHorizontal = false; /* * This method add shift to x values */ function reOrderBars(plot, serie, datapoints){ var shiftedPoints = null; if(serieNeedToBeReordered(serie)){ checkIfGraphIsHorizontal(serie); calculPixel2XWidthConvert(plot); retrieveBarSeries(plot); calculBorderAndBarWidth(serie); if(nbOfBarsToOrder >= 2){ var position = findPosition(serie); var decallage = 0; var centerBarShift = calculCenterBarShift(); if (isBarAtLeftOfCenter(position)){ decallage = -1*(sumWidth(orderedBarSeries,position-1,Math.floor(nbOfBarsToOrder / 2)-1)) - centerBarShift; }else{ decallage = sumWidth(orderedBarSeries,Math.ceil(nbOfBarsToOrder / 2),position-2) + centerBarShift + borderWidthInXabsWidth*2; } shiftedPoints = shiftPoints(datapoints,serie,decallage); datapoints.points = shiftedPoints; } } return shiftedPoints; } function serieNeedToBeReordered(serie){ return serie.bars != null && serie.bars.show && serie.bars.order != null; } function calculPixel2XWidthConvert(plot){ var gridDimSize = isHorizontal ? plot.getPlaceholder().innerHeight() : plot.getPlaceholder().innerWidth(); var minMaxValues = isHorizontal ? getAxeMinMaxValues(plot.getData(),1) : getAxeMinMaxValues(plot.getData(),0); var AxeSize = minMaxValues[1] - minMaxValues[0]; pixelInXWidthEquivalent = AxeSize / gridDimSize; } function getAxeMinMaxValues(series,AxeIdx){ var minMaxValues = new Array(); for(var i = 0; i < series.length; i++){ minMaxValues[0] = series[i].data[0][AxeIdx]; minMaxValues[1] = series[i].data[series[i].data.length - 1][AxeIdx]; } return minMaxValues; } function retrieveBarSeries(plot){ orderedBarSeries = findOthersBarsToReOrders(plot.getData()); nbOfBarsToOrder = orderedBarSeries.length; } function findOthersBarsToReOrders(series){ var retSeries = new Array(); for(var i = 0; i < series.length; i++){ if(series[i].bars.order != null && series[i].bars.show){ retSeries.push(series[i]); } } return retSeries.sort(sortByOrder); } function sortByOrder(serie1,serie2){ var x = serie1.bars.order; var y = serie2.bars.order; return ((x < y) ? -1 : ((x > y) ? 1 : 0)); } function calculBorderAndBarWidth(serie){ borderWidth = serie.bars.lineWidth ? serie.bars.lineWidth : 2; borderWidthInXabsWidth = borderWidth * pixelInXWidthEquivalent; } function checkIfGraphIsHorizontal(serie){ if(serie.bars.horizontal){ isHorizontal = true; } } function findPosition(serie){ var pos = 0 for (var i = 0; i < orderedBarSeries.length; ++i) { if (serie == orderedBarSeries[i]){ pos = i; break; } } return pos+1; } function calculCenterBarShift(){ var width = 0; if(nbOfBarsToOrder%2 != 0) width = (orderedBarSeries[Math.ceil(nbOfBarsToOrder / 2)].bars.barWidth)/2; return width; } function isBarAtLeftOfCenter(position){ return position <= Math.ceil(nbOfBarsToOrder / 2); } function sumWidth(series,start,end){ var totalWidth = 0; for(var i = start; i <= end; i++){ totalWidth += series[i].bars.barWidth+borderWidthInXabsWidth*2; } return totalWidth; } function shiftPoints(datapoints,serie,dx){ var ps = datapoints.pointsize; var points = datapoints.points; var j = 0; for(var i = isHorizontal ? 1 : 0;i < points.length; i += ps){ points[i] += dx; //Adding the new x value in the serie to be abble to display the right tooltip value, //using the index 3 to not overide the third index. serie.data[j][3] = points[i]; j++; } return points; } plot.hooks.processDatapoints.push(reOrderBars); } var options = { series : { bars: {order: null} // or number/string } }; $.plot.plugins.push({ init: init, options: options, name: "orderBars", version: "0.2" }); })(jQuery) ================================================ FILE: src/vendor/jquery/charts/flot/jquery.flot.resize.js ================================================ /* Flot plugin for automatically redrawing plots when the placeholder size changes, e.g. on window resizes. It works by listening for changes on the placeholder div (through the jQuery resize event plugin) - if the size changes, it will redraw the plot. There are no options. If you need to disable the plugin for some plots, you can just fix the size of their placeholders. */ /* Inline dependency: * jQuery resize event - v1.1 - 3/14/2010 * http://benalman.com/projects/jquery-resize-plugin/ * * Copyright (c) 2010 "Cowboy" Ben Alman * Dual licensed under the MIT and GPL licenses. * http://benalman.com/about/license/ */ (function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);if(r===undefined){n.apply(this,arguments);return;}r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this); (function ($) { var options = { }; // no options function init(plot) { function onResize() { var placeholder = plot.getPlaceholder(); // somebody might have hidden us and we can't plot // when we don't have the dimensions if (placeholder.width() == 0 || placeholder.height() == 0) return; plot.resize(); plot.setupGrid(); plot.draw(); } function bindEvents(plot, eventHolder) { plot.getPlaceholder().resize(onResize); } function shutdown(plot, eventHolder) { plot.getPlaceholder().unbind("resize", onResize); } plot.hooks.bindEvents.push(bindEvents); plot.hooks.shutdown.push(shutdown); } $.plot.plugins.push({ init: init, options: options, name: 'resize', version: '1.0' }); })(jQuery); ================================================ FILE: src/vendor/jquery/charts/flot/jquery.flot.spline.js ================================================ /** * Flot plugin that provides spline interpolation for line graphs * author: Alex Bardas < alex.bardas@gmail.com > * modified by: Avi Kohn https://github.com/AMKohn * based on the spline interpolation described at: * http://scaledinnovation.com/analytics/splines/aboutSplines.html * * Example usage: (add in plot options series object) * for linespline: * series: { * ... * lines: { * show: false * }, * splines: { * show: true, * tension: x, (float between 0 and 1, defaults to 0.5), * lineWidth: y (number, defaults to 2), * fill: z (float between 0 .. 1 or false, as in flot documentation) * }, * ... * } * areaspline: * series: { * ... * lines: { * show: true, * lineWidth: 0, (line drawing will not execute) * fill: x, (float between 0 .. 1, as in flot documentation) * ... * }, * splines: { * show: true, * tension: 0.5 (float between 0 and 1) * }, * ... * } * */ (function($) { 'use strict' /** * @param {Number} x0, y0, x1, y1: coordinates of the end (knot) points of the segment * @param {Number} x2, y2: the next knot (not connected, but needed to calculate p2) * @param {Number} tension: control how far the control points spread * @return {Array}: p1 -> control point, from x1 back toward x0 * p2 -> the next control point, returned to become the next segment's p1 * * @api private */ function getControlPoints(x0, y0, x1, y1, x2, y2, tension) { var pow = Math.pow, sqrt = Math.sqrt, d01, d12, fa, fb, p1x, p1y, p2x, p2y; // Scaling factors: distances from this knot to the previous and following knots. d01 = sqrt(pow(x1 - x0, 2) + pow(y1 - y0, 2)); d12 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)); fa = tension * d01 / (d01 + d12); fb = tension - fa; p1x = x1 + fa * (x0 - x2); p1y = y1 + fa * (y0 - y2); p2x = x1 - fb * (x0 - x2); p2y = y1 - fb * (y0 - y2); return [p1x, p1y, p2x, p2y]; } var line = []; function drawLine(points, ctx, height, fill, seriesColor) { var c = $.color.parse(seriesColor); c.a = typeof fill == "number" ? fill : .3; c.normalize(); c = c.toString(); ctx.beginPath(); ctx.moveTo(points[0][0], points[0][1]); var plength = points.length; for (var i = 0; i < plength; i++) { ctx[points[i][3]].apply(ctx, points[i][2]); } ctx.stroke(); ctx.lineWidth = 0; ctx.lineTo(points[plength - 1][0], height); ctx.lineTo(points[0][0], height); ctx.closePath(); if (fill !== false) { ctx.fillStyle = c; ctx.fill(); } } /** * @param {Object} ctx: canvas context * @param {String} type: accepted strings: 'bezier' or 'quadratic' (defaults to quadratic) * @param {Array} points: 2 points for which to draw the interpolation * @param {Array} cpoints: control points for those segment points * * @api private */ function queue(ctx, type, points, cpoints) { if (type === void 0 || (type !== 'bezier' && type !== 'quadratic')) { type = 'quadratic'; } type = type + 'CurveTo'; if (line.length == 0) line.push([points[0], points[1], cpoints.concat(points.slice(2)), type]); else if (type == "quadraticCurveTo" && points.length == 2) { cpoints = cpoints.slice(0, 2).concat(points); line.push([points[0], points[1], cpoints, type]); } else line.push([points[2], points[3], cpoints.concat(points.slice(2)), type]); } /** * @param {Object} plot * @param {Object} ctx: canvas context * @param {Object} series * * @api private */ function drawSpline(plot, ctx, series) { // Not interested if spline is not requested if (series.splines.show !== true) { return; } var cp = [], // array of control points tension = series.splines.tension || 0.5, idx, x, y, points = series.datapoints.points, ps = series.datapoints.pointsize, plotOffset = plot.getPlotOffset(), len = points.length, pts = []; line = []; // Cannot display a linespline/areaspline if there are less than 3 points if (len / ps < 4) { $.extend(series.lines, series.splines); return; } for (idx = 0; idx < len; idx += ps) { x = points[idx]; y = points[idx + 1]; if (x == null || x < series.xaxis.min || x > series.xaxis.max || y < series.yaxis.min || y > series.yaxis.max) { continue; } pts.push(series.xaxis.p2c(x) + plotOffset.left, series.yaxis.p2c(y) + plotOffset.top); } len = pts.length; // Draw an open curve, not connected at the ends for (idx = 0; idx < len - 2; idx += 2) { cp = cp.concat(getControlPoints.apply(this, pts.slice(idx, idx + 6).concat([tension]))); } ctx.save(); ctx.strokeStyle = series.color; ctx.lineWidth = series.splines.lineWidth; queue(ctx, 'quadratic', pts.slice(0, 4), cp.slice(0, 2)); for (idx = 2; idx < len - 3; idx += 2) { queue(ctx, 'bezier', pts.slice(idx, idx + 4), cp.slice(2 * idx - 2, 2 * idx + 2)); } queue(ctx, 'quadratic', pts.slice(len - 2, len), [cp[2 * len - 10], cp[2 * len - 9], pts[len - 4], pts[len - 3]]); drawLine(line, ctx, plot.height() + 10, series.splines.fill, series.color); ctx.restore(); } $.plot.plugins.push({ init: function(plot) { plot.hooks.drawSeries.push(drawSpline); }, options: { series: { splines: { show: false, lineWidth: 2, tension: 0.5, fill: false } } }, name: 'spline', version: '0.8.2' }); })(jQuery); ================================================ FILE: src/vendor/modules/angular-file-upload/ngThumb.js ================================================ 'use strict'; angular.module('app') .directive('ngThumb', ['$window', function ($window) { var helper = { support: !!($window.FileReader && $window.CanvasRenderingContext2D), isFile: function (item) { return angular.isObject(item) && item instanceof $window.File; }, isImage: function (file) { var type = '|' + file.type.slice(file.type.lastIndexOf('/') + 1) + '|'; return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1; } }; return { restrict: 'A', template: '', link: function (scope, element, attributes) { if (!helper.support) return; var params = scope.$eval(attributes.ngThumb); if (!helper.isFile(params.file)) return; if (!helper.isImage(params.file)) return; var canvas = element.find('canvas'); var reader = new FileReader(); reader.onload = onLoadFile; reader.readAsDataURL(params.file); function onLoadFile(event) { var img = new Image(); img.onload = onLoadImage; img.src = event.target.result; } function onLoadImage() { var width = params.width || this.width / this.height * params.height; var height = params.height || this.height / this.width * params.width; canvas.attr({width: width, height: height}); canvas[0].getContext('2d').drawImage(this, 0, 0, width, height); } } }; }]); ================================================ FILE: src/vendor/modules/angular-ivh-treeview/ivh-treeview-theme-basic.css ================================================ ul.ivh-treeview { list-style-type: none; padding-left: 0; } ul.ivh-treeview ul.ivh-treeview { padding-left: 15px; } ul.ivh-treeview .ivh-treeview-toggle { cursor: pointer; } ul.ivh-treeview .ivh-treeview-node-leaf .ivh-treeview-toggle { cursor: auto; } ================================================ FILE: src/vendor/modules/angularjs-toaster/toaster.css ================================================ /* * Toastr * Version 2.0.1 * Copyright 2012 John Papa and Hans Fjallemark. * All Rights Reserved. * Use, reproduction, distribution, and modification of this code is subject to the terms and * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php * * Author: John Papa and Hans Fjallemark * Project: https://github.com/CodeSeven/toastr */ .toast-title { font-weight: bold; } .toast-message { -ms-word-wrap: break-word; word-wrap: break-word; } .toast-message a, .toast-message label { color: #ffffff; } .toast-message a:hover { color: #cccccc; text-decoration: none; } .toast-close-button { position: relative; right: -0.3em; top: -0.3em; float: right; font-size: 20px; font-weight: bold; color: #ffffff; -webkit-text-shadow: 0 1px 0 #ffffff; text-shadow: 0 1px 0 #ffffff; opacity: 0.8; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); filter: alpha(opacity=80); } .toast-close-button:hover, .toast-close-button:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.4; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); filter: alpha(opacity=40); } /*Additional properties for button version iOS requires the button element instead of an anchor tag. If you want the anchor version, it requires `href="#"`.*/ button.toast-close-button { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .toast-top-full-width { top: 0; right: 0; width: 100%; } .toast-bottom-full-width { bottom: 0; right: 0; width: 100%; } .toast-top-left { top: 12px; left: 12px; } .toast-top-center { top: 12px; } .toast-top-right { top: 12px; right: 12px; } .toast-bottom-right { right: 12px; bottom: 12px; } .toast-bottom-center { bottom: 12px; } .toast-bottom-left { bottom: 12px; left: 12px; } .toast-center { top: 45%; } #toast-container { position: fixed; z-index: 999999; /*overrides*/ } #toast-container.toast-center, #toast-container.toast-top-center, #toast-container.toast-bottom-center{ width: 100%; pointer-events: none; } #toast-container.toast-center > div, #toast-container.toast-top-center > div, #toast-container.toast-bottom-center > div{ margin: auto; pointer-events: auto; } #toast-container.toast-center > button, #toast-container.toast-top-center > button, #toast-container.toast-bottom-center > button{ pointer-events: auto; } #toast-container * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } #toast-container > div { margin: 0 0 6px; padding: 15px 15px 15px 50px; width: 300px; -moz-border-radius: 3px 3px 3px 3px; -webkit-border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px; background-position: 15px center; background-repeat: no-repeat; -moz-box-shadow: 0 0 12px #999999; -webkit-box-shadow: 0 0 12px #999999; box-shadow: 0 0 12px #999999; color: #ffffff; opacity: 0.8; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); filter: alpha(opacity=80); } #toast-container > :hover { -moz-box-shadow: 0 0 12px #000000; -webkit-box-shadow: 0 0 12px #000000; box-shadow: 0 0 12px #000000; opacity: 1; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); filter: alpha(opacity=100); cursor: pointer; } #toast-container > .toast-info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; } #toast-container > .toast-wait { background-image: url("data:image/gif;base64,R0lGODlhIAAgAIQAAAQCBISGhMzKzERCROTm5CQiJKyurHx+fPz+/ExOTOzu7Dw+PIyOjCwqLFRWVAwKDIyKjMzOzOzq7CQmJLy6vFRSVPTy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQAXACwAAAAAIAAgAAAF3eAljmRpnmh6VRSVqLDpIDTixOdUlFSNUDhSQUAT7ES9GnD0SFQAKWItMqr4bqKHVPDI+WiTkaOFFVlrFe83rDrT0qeIjwrT0iLdU0GOiBxhAA4VeSk6QYeIOAsQEAuJKgw+EI8nA18IA48JBAQvFxCXDI8SNAQikV+iiaQIpheWX5mJmxKeF6g0qpQmA4yOu8C7EwYWCgZswRcTFj4KyMAGlwYxDwcHhCXMXxYxBzQHKNo+3DDeCOAn0V/TddbYJA0K48gAEAFQicMWFsfwNA3JSgAIAAFfwIMIL4QAACH5BAkJABoALAAAAAAgACAAhAQCBIyKjERCRMzOzCQiJPTy9DQyNGRmZMTCxOTm5CwqLHx+fBQWFJyenNTW1Pz6/Dw6PGxubAwKDIyOjNTS1CQmJCwuLPz+/Dw+PHRydAAAAAAAAAAAAAAAAAAAAAAAAAXboCaOZGmeaKoxWcSosMkk15W8cZ7VdZaXkcEgQtrxfD9RhHchima1GwlCGUBSFCaFxMrgRtnLFhWujWHhs2nJc8KoVlWGQnEn7/i8XgOwWAB7JwoONQ4KgSQAZRcOgHgSCwsSIhZMNRZ5CzULIgaWF5h4mhecfIQ8jXmQkiODhYeIiRYGjrG2PxgBARi3IhNMAbcCnwI5BAQpAZ8TIwK6vCQVDwUVKL+WzAANTA210g/VJ8OWxQefByQE4dZMzBoInwh4zrtgn2p725YNthUFTNRuGYB3AYGBHCEAACH5BAkJAB0ALAAAAAAgACAAhAQCBISChFRWVMzKzCQiJOTm5GxqbCwuLJSWlPz6/NTW1AwODJSSlGRmZCwqLOzu7HR2dDQ2NAQGBISGhFxaXNTS1CQmJOzq7GxubDQyNKSmpPz+/Nza3AAAAAAAAAAAAAXfYCeOZGmeaKqurHBdAiuP17Zdc0lMAVHWt9yI8LA9fCPB4xEjARoNSWpis01kBpshFahurqzsZosiGpErScMAUO0maKF8Tq/bTQCIQgFp30cQXhB1BHEcXhx0FgkJFiOHVYlzi42AgoRxeRx8fn+en3UABwedKgsBAwMBCygOCjYKDisLFV4VrCUAtVUKpSZdXl8mB8EbByQWcQPFAyYZxccdB7sV0cvBzbmvvG0LBV4FrFTBYCWuNhyyHRTFFB20trh4BxmdYl4YIqepq0IRxRE+IfDCAFQHARo0NGERAgAh+QQJCQAgACwAAAAAIAAgAIUEAgSEgoRMTkzMyswcHhzk5uR0cnQUFhRcXlwsKiz09vQMCgyMiozU1tQkJiR8fnxkZmT8/vwEBgSEhoRcWlzU0tQkIiT08vR0dnQcGhxkYmQ0MjT8+vwMDgyMjozc2twAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG+UCQcEgsGo/IpHLJXDweC6Z0+IhEHlOjRGIMWLHZoUZx0RQlAajxkFFKFFYFl5m5KNpIySU+X2bIBEoQZBBZGQdMElFhjI2Oj5AgHQEDAw8dQxYeDBaNHRVWVhWYCXsRFwmMXqFWEyAerB6MA6xWA6+xs7URt6VWqIwTu64gDh4eDp6goaORQ5OVAZjO1EgEGhB4RwAYDQ0YAEwIcBEKFEgYrBhLBORxgUYfrB9LELuF8fNDAAaVBuEg7NXCVyRdqHVCGLBiIIQAB1Yc4BXh9uEbwAXuyi2iQI7DuSwHdiFqCEGDtizLRFUDsaGAlQIbVoJYIEDAIiZBAAAh+QQJCQAbACwAAAAAIAAgAIQEAgSMioxcWlz08vQcHhysqqwMDgx8enwsKiykoqRkZmT8+vzEwsQMCgyUlpQkJiS0srQEBgSMjoxcXlz09vQkIiSsrqwUEhQ0MjRsamz8/vwAAAAAAAAAAAAAAAAAAAAF7+AmjmRpnmiqruz2PG0sIssCj4CQJAIgj4/abRNJaI6agu9kCAQaphdJgEQKUIFjgGWsahJYLdf7RTWfLKr3+jsBClVlG5Xb9eb4fImgUBBKDVB4ExRHFGwbGRQLGXMEhUgUfw2QC4IyCmSNDQtHlm2ZXgoiGQsUjW0EnUgLfyKBeYSeiHojfH61uS0GBisVEgEVLRcWRxAXKAgDRwMILMVIECgSVRIrBmS9JtRI1iMVBweuGxerSNolyszOIhjLGs0jEFXSKA8SEkMbcEgWIxfzNBxrw6AKgxIGkM05UOWALhERHJhysOThBgAVWYQAACH5BAkJABkALAAAAAAgACAAhAQGBIyKjERCRMzOzCwuLGRiZPz6/OTm5AwODLSytFRSVNTW1Dw6PHx6fAwKDJSSlERGRNTS1DQyNGxqbPz+/BQSFLy6vFRWVNza3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAXqYCaO5FgFwxBUZeu61ULNFMa+eBvQdJD/owFvFhkBBAwHsBQZUooZyWF2YOQkBNJu6ANMaQeli0AxSEwymi0DcUJeEgPlbEJFAghRe/h+Eeg/Dl9UYks5DF9VhksOAgKFi5GSSwh5kzgVCXIJNxknD5aSCTwJIw8zD5MITpanFKmSCHI8NxUPoJejNKWXLZkznL0vCJ3CxsckDpA/ChYJFzkTBgYTSxc80C4OswbLLhY8Fi/bMwYAJVgl4DTiL9LUJADrFuci1zTZLwD1IwU8BSQuWLCQb1EDHg2QiSDALYvCDAISJLDy8FIIACH5BAkJAB4ALAAAAAAgACAAhAQGBISGhFRSVNTW1CQiJKyqrGRmZOzu7CwuLIyOjGxubPz6/BQSFGRiZOTi5CwqLLy6vDQ2NIyKjFRWVCQmJKyurGxqbPT29DQyNJSSlHRydPz+/BQWFOzq7AAAAAAAAAXhoCeOJElYClGubOs117YtjWuvxCLLi3qbhc6h4FPsdorfiNI5dige43GT9AAkHUcCwCpMNxVP7tgTJY4J1uF7EBl0M8Ooueuo2SOCIkVa11kVX2E2EmgsFH4yBz4uAAkdHVstBAUHQ4xKmZqbnJ2bAhAQAiURGJ4eE0cTIxgzpp0QRxCsrp6xO7MjpaepO6unKxOhv8DFxsfIJBwaChw2DAkZDEocDjIOzi0ZMhlKUjIaLtsb3T8aR+EtDBkJ0yQUBQVQI9XX2ZsDMgMlyxr3mzE2XEgmotCGAARFIHiQ0FMIACH5BAkJABgALAAAAAAgACAAhAQCBISGhDw+POTi5CwuLLS2tPTy9BQSFJyenGRiZDQ2NIyOjLy+vPz6/BweHIyKjFRSVOzq7DQyNLy6vBQWFHRydDw6PPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXICaOZHkcZaquIjVd10SxtFrAcFGrVhBYIwoON9uNAsOA6DCEFTEKBEKxEjQvAtELNxkpGrAGNfW4Plpb2QgxRKjKzfPoVGLj3CnLNUv7hscpSDhKOxJSgDwPP0ZGAACMjAQFDQYFBJA0BAZDBpeYGBQVFUU3TV2YFAMwAzNgTQ2PkBVDFRiuQ7CYszi1pUOnkKmrM5qcnqiiTwQTDQ2Wn9DR0tPUfRKQEBEREDQSFw3XRhEwEd3f4TvjF+XWKgJ8JNnb0QkwCdUlCzAL+CQODAwc9BtIMAQAOw==") !important; } #toast-container > .toast-error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; } #toast-container > .toast-success { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; } #toast-container > .toast-warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; } #toast-container.toast-top-full-width > div, #toast-container.toast-bottom-full-width > div { width: 96%; margin: auto; } .toast { background-color: #030303; } .toast-success { background-color: #51a351; } .toast-error { background-color: #bd362f; } .toast-info { background-color: #2f96b4; } .toast-wait { background-color: #2f96b4; } .toast-warning { background-color: #f89406; } /*Responsive Design*/ @media all and (max-width: 240px) { #toast-container > div { padding: 8px 8px 8px 50px; width: 11em; } #toast-container .toast-close-button { right: -0.2em; top: -0.2em; } } @media all and (min-width: 241px) and (max-width: 480px) { #toast-container > div { padding: 8px 8px 8px 50px; width: 18em; } #toast-container .toast-close-button { right: -0.2em; top: -0.2em; } } @media all and (min-width: 481px) and (max-width: 768px) { #toast-container > div { padding: 15px 15px 15px 50px; width: 25em; } } /* * AngularJS-Toaster * Version 0.3 */ :not(.no-enter)#toast-container > div.ng-enter, :not(.no-leave)#toast-container > div.ng-leave { -webkit-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all; -moz-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all; -ms-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all; -o-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all; transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all; } :not(.no-enter)#toast-container > div.ng-enter.ng-enter-active, :not(.no-leave)#toast-container > div.ng-leave { opacity: 0.8; } :not(.no-leave)#toast-container > div.ng-leave.ng-leave-active, :not(.no-enter)#toast-container > div.ng-enter { opacity: 0; } ================================================ FILE: src/vendor/modules/angularjs-toaster/toaster.js ================================================ /* global angular */ (function (window, document) { 'use strict'; /* * AngularJS Toaster * Version: 0.4.18 * * Copyright 2013-2015 Jiri Kavulak. * All Rights Reserved. * Use, reproduction, distribution, and modification of this code is subject to the terms and * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php * * Author: Jiri Kavulak * Related to project of John Papa, Hans Fjällemark and Nguyễn Thiện Hùng (thienhung1989) */ angular.module('toaster', []).constant( 'toasterConfig', { 'limit': 0, // limits max number of toasts 'tap-to-dismiss': true, /* Options: - Boolean false/true 'close-button': true - object if not a boolean that allows you to override showing the close button for each icon-class value 'close-button': { 'toast-error': true, 'toast-info': false } */ 'close-button': false, 'close-html': '', 'newest-on-top': true, //'fade-in': 1000, // done in css //'on-fade-in': undefined, // not implemented //'fade-out': 1000, // done in css //'on-fade-out': undefined, // not implemented //'extended-time-out': 1000, // not implemented 'time-out': 5000, // Set timeOut and extendedTimeout to 0 to make it sticky 'icon-classes': { error: 'toast-error', info: 'toast-info', wait: 'toast-wait', success: 'toast-success', warning: 'toast-warning' }, 'body-output-type': '', // Options: '', 'trustedHtml', 'template', 'templateWithData', 'directive' 'body-template': 'toasterBodyTmpl.html', 'icon-class': 'toast-info', 'position-class': 'toast-top-right', // Options (see CSS): // 'toast-top-full-width', 'toast-bottom-full-width', 'toast-center', // 'toast-top-left', 'toast-top-center', 'toast-top-right', // 'toast-bottom-left', 'toast-bottom-center', 'toast-bottom-right', 'title-class': 'toast-title', 'message-class': 'toast-message', 'prevent-duplicates': false, 'mouseover-timer-stop': true // stop timeout on mouseover and restart timer on mouseout } ).service( 'toaster', [ '$rootScope', 'toasterConfig', function ($rootScope, toasterConfig) { this.pop = function (type, title, body, timeout, bodyOutputType, clickHandler, toasterId, showCloseButton, toastId, onHideCallback) { if (angular.isObject(type)) { var params = type; // Enable named parameters as pop argument this.toast = { type: params.type, title: params.title, body: params.body, timeout: params.timeout, bodyOutputType: params.bodyOutputType, clickHandler: params.clickHandler, showCloseButton: params.showCloseButton, closeHtml: params.closeHtml, uid: params.toastId, onHideCallback: params.onHideCallback, directiveData: params.directiveData }; toastId = params.toastId; toasterId = params.toasterId; } else { this.toast = { type: type, title: title, body: body, timeout: timeout, bodyOutputType: bodyOutputType, clickHandler: clickHandler, showCloseButton: showCloseButton, uid: toastId, onHideCallback: onHideCallback }; } $rootScope.$emit('toaster-newToast', toasterId, toastId); }; this.clear = function (toasterId, toastId) { $rootScope.$emit('toaster-clearToasts', toasterId, toastId); }; // Create one method per icon class, to allow to call toaster.info() and similar for (var type in toasterConfig['icon-classes']) { this[type] = createTypeMethod(type); } function createTypeMethod(toasterType) { return function (title, body, timeout, bodyOutputType, clickHandler, toasterId, showCloseButton, toastId, onHideCallback) { if (angular.isString(title)) { this.pop( toasterType, title, body, timeout, bodyOutputType, clickHandler, toasterId, showCloseButton, toastId, onHideCallback); } else { // 'title' is actually an object with options this.pop(angular.extend(title, { type: toasterType })); } }; } }] ).factory( 'toasterEventRegistry', [ '$rootScope', function ($rootScope) { var deregisterNewToast = null, deregisterClearToasts = null, newToastEventSubscribers = [], clearToastsEventSubscribers = [], toasterFactory; toasterFactory = { setup: function () { if (!deregisterNewToast) { deregisterNewToast = $rootScope.$on( 'toaster-newToast', function (event, toasterId, toastId) { for (var i = 0, len = newToastEventSubscribers.length; i < len; i++) { newToastEventSubscribers[i](event, toasterId, toastId); } }); } if (!deregisterClearToasts) { deregisterClearToasts = $rootScope.$on( 'toaster-clearToasts', function (event, toasterId, toastId) { for (var i = 0, len = clearToastsEventSubscribers.length; i < len; i++) { clearToastsEventSubscribers[i](event, toasterId, toastId); } }); } }, subscribeToNewToastEvent: function (onNewToast) { newToastEventSubscribers.push(onNewToast); }, subscribeToClearToastsEvent: function (onClearToasts) { clearToastsEventSubscribers.push(onClearToasts); }, unsubscribeToNewToastEvent: function (onNewToast) { var index = newToastEventSubscribers.indexOf(onNewToast); if (index >= 0) { newToastEventSubscribers.splice(index, 1); } if (newToastEventSubscribers.length === 0) { deregisterNewToast(); deregisterNewToast = null; } }, unsubscribeToClearToastsEvent: function (onClearToasts) { var index = clearToastsEventSubscribers.indexOf(onClearToasts); if (index >= 0) { clearToastsEventSubscribers.splice(index, 1); } if (clearToastsEventSubscribers.length === 0) { deregisterClearToasts(); deregisterClearToasts = null; } } }; return { setup: toasterFactory.setup, subscribeToNewToastEvent: toasterFactory.subscribeToNewToastEvent, subscribeToClearToastsEvent: toasterFactory.subscribeToClearToastsEvent, unsubscribeToNewToastEvent: toasterFactory.unsubscribeToNewToastEvent, unsubscribeToClearToastsEvent: toasterFactory.unsubscribeToClearToastsEvent }; }] ) .directive('directiveTemplate', ['$compile', '$injector', function($compile, $injector) { return { restrict: 'A', scope: { directiveName: '@directiveName', directiveData: '@directiveData' }, replace: true, link: function (scope, elm, attrs) { scope.$watch('directiveName', function (directiveName) { if (angular.isUndefined(directiveName) || directiveName.length <= 0) throw new Error('A valid directive name must be provided via the toast body argument when using bodyOutputType: directive'); var directiveExists = $injector.has(attrs.$normalize(directiveName) + 'Directive'); if (!directiveExists) throw new Error(directiveName + ' could not be found.'); if (scope.directiveData) scope.directiveData = angular.fromJson(scope.directiveData); var template = $compile('
')(scope); elm.append(template); }); } } }]) .directive( 'toasterContainer', [ '$parse', '$rootScope', '$interval', '$sce', 'toasterConfig', 'toaster', 'toasterEventRegistry', function ($parse, $rootScope, $interval, $sce, toasterConfig, toaster, toasterEventRegistry) { return { replace: true, restrict: 'EA', scope: true, // creates an internal scope for this directive (one per directive instance) link: function (scope, elm, attrs) { var id = 0, mergedConfig; // Merges configuration set in directive with default one mergedConfig = angular.extend({}, toasterConfig, scope.$eval(attrs.toasterOptions)); scope.config = { toasterId: mergedConfig['toaster-id'], position: mergedConfig['position-class'], title: mergedConfig['title-class'], message: mergedConfig['message-class'], tap: mergedConfig['tap-to-dismiss'], closeButton: mergedConfig['close-button'], closeHtml: mergedConfig['close-html'], animation: mergedConfig['animation-class'], mouseoverTimer: mergedConfig['mouseover-timer-stop'] }; scope.$on( "$destroy", function () { toasterEventRegistry.unsubscribeToNewToastEvent(scope._onNewToast); toasterEventRegistry.unsubscribeToClearToastsEvent(scope._onClearToasts); } ); function setTimeout(toast, time) { toast.timeoutPromise = $interval( function () { scope.removeToast(toast.id); }, time, 1 ); } scope.configureTimer = function (toast) { var timeout = angular.isNumber(toast.timeout) ? toast.timeout : mergedConfig['time-out']; if (typeof timeout === "object") timeout = timeout[toast.type]; if (timeout > 0) { setTimeout(toast, timeout); } }; function addToast(toast, toastId) { toast.type = mergedConfig['icon-classes'][toast.type]; if (!toast.type) { toast.type = mergedConfig['icon-class']; } if (mergedConfig['prevent-duplicates'] === true) { // Prevent adding duplicate toasts if it's set if (isUndefinedOrNull(toastId)) { if (scope.toasters.length > 0 && scope.toasters[scope.toasters.length - 1].body === toast.body) { return; } } else { var i, len; for (i = 0, len = scope.toasters.length; i < len; i++) { if (scope.toasters[i].uid === toastId) { removeToast(i); // update loop i--; len = scope.toasters.length; } } } } toast.id = ++id; // Sure uid defined if (!isUndefinedOrNull(toastId)) { toast.uid = toastId; } // set the showCloseButton property on the toast so that // each template can bind directly to the property to show/hide // the close button var closeButton = mergedConfig['close-button']; // if toast.showCloseButton is a boolean value, // it was specifically overriden in the pop arguments if (typeof toast.showCloseButton === "boolean") { } else if (typeof closeButton === "boolean") { toast.showCloseButton = closeButton; } else if (typeof closeButton === "object") { var closeButtonForType = closeButton[toast.type]; if (typeof closeButtonForType !== "undefined" && closeButtonForType !== null) { toast.showCloseButton = closeButtonForType; } } else { // if an option was not set, default to false. toast.showCloseButton = false; } if (toast.showCloseButton) { toast.closeHtml = $sce.trustAsHtml(toast.closeHtml || scope.config.closeHtml); } // Set the toast.bodyOutputType to the default if it isn't set toast.bodyOutputType = toast.bodyOutputType || mergedConfig['body-output-type']; switch (toast.bodyOutputType) { case 'trustedHtml': toast.html = $sce.trustAsHtml(toast.body); break; case 'template': toast.bodyTemplate = toast.body || mergedConfig['body-template']; break; case 'templateWithData': var fcGet = $parse(toast.body || mergedConfig['body-template']); var templateWithData = fcGet(scope); toast.bodyTemplate = templateWithData.template; toast.data = templateWithData.data; break; case 'directive': toast.html = toast.body; break; } scope.configureTimer(toast); if (mergedConfig['newest-on-top'] === true) { scope.toasters.unshift(toast); if (mergedConfig['limit'] > 0 && scope.toasters.length > mergedConfig['limit']) { scope.toasters.pop(); } } else { scope.toasters.push(toast); if (mergedConfig['limit'] > 0 && scope.toasters.length > mergedConfig['limit']) { scope.toasters.shift(); } } } scope.removeToast = function (id) { var i, len; for (i = 0, len = scope.toasters.length; i < len; i++) { if (scope.toasters[i].id === id) { removeToast(i); break; } } }; function removeToast(toastIndex) { var toast = scope.toasters[toastIndex]; if (toast) { if (toast.timeoutPromise) { $interval.cancel(toast.timeoutPromise); } scope.toasters.splice(toastIndex, 1); if (angular.isFunction(toast.onHideCallback)) { toast.onHideCallback(); } } } function removeAllToasts(toastId) { for (var i = scope.toasters.length - 1; i >= 0; i--) { if (isUndefinedOrNull(toastId)) { removeToast(i); } else { if (scope.toasters[i].uid == toastId) { removeToast(i); } } } } scope.toasters = []; function isUndefinedOrNull(val) { return angular.isUndefined(val) || val === null; } scope._onNewToast = function (event, toasterId, toastId) { // Compatibility: if toaster has no toasterId defined, and if call to display // hasn't either, then the request is for us if ((isUndefinedOrNull(scope.config.toasterId) && isUndefinedOrNull(toasterId)) || (!isUndefinedOrNull(scope.config.toasterId) && !isUndefinedOrNull(toasterId) && scope.config.toasterId == toasterId)) { addToast(toaster.toast, toastId); } }; scope._onClearToasts = function (event, toasterId, toastId) { // Compatibility: if toaster has no toasterId defined, and if call to display // hasn't either, then the request is for us if (toasterId == '*' || (isUndefinedOrNull(scope.config.toasterId) && isUndefinedOrNull(toasterId)) || (!isUndefinedOrNull(scope.config.toasterId) && !isUndefinedOrNull(toasterId) && scope.config.toasterId == toasterId)) { removeAllToasts(toastId); } }; toasterEventRegistry.setup(); toasterEventRegistry.subscribeToNewToastEvent(scope._onNewToast); toasterEventRegistry.subscribeToClearToastsEvent(scope._onClearToasts); }, controller: [ '$scope', '$element', '$attrs', function ($scope, $element, $attrs) { // Called on mouseover $scope.stopTimer = function (toast) { if ($scope.config.mouseoverTimer === true) { if (toast.timeoutPromise) { $interval.cancel(toast.timeoutPromise); toast.timeoutPromise = null; } } }; // Called on mouseout $scope.restartTimer = function (toast) { if ($scope.config.mouseoverTimer === true) { if (!toast.timeoutPromise) { $scope.configureTimer(toast); } } else if (toast.timeoutPromise === null) { $scope.removeToast(toast.id); } }; $scope.click = function (toast, isCloseButton) { if ($scope.config.tap === true || (toast.showCloseButton === true && isCloseButton === true)) { var removeToast = true; if (toast.clickHandler) { if (angular.isFunction(toast.clickHandler)) { removeToast = toast.clickHandler(toast, isCloseButton); } else if (angular.isFunction($scope.$parent.$eval(toast.clickHandler))) { removeToast = $scope.$parent.$eval(toast.clickHandler)(toast, isCloseButton); } else { console.log("TOAST-NOTE: Your click handler is not inside a parent scope of toaster-container."); } } if (removeToast) { $scope.removeToast(toast.id); } } }; }], template: '
' + '
' + '
' + '
{{toaster.title}}
' + '
' + '
' + '
' + '
' + '
' + '
{{toaster.body}}
' + '
' + '
' + '
' }; }] ); })(window, document);